Repository navigation
Declare presentation for every tool call (v0.9.0) - #17
Merged
Merged
Conversation
Tools now declare presentCall/presentResult — the harness's documented render-intent vocabulary, which first-party tools already use — so a card can carry the fact that matters in its title: which resource was claimed, whether a claim was refused and by whom, the verdict on a verification, that a status published a deadlock. Presenters are pure and undefined-tolerant by contract, because they run on replayed history as well as live calls: a logged call may carry arguments from an older version of a tool, and a presenter that threw would break the transcript rather than one card. There is a test for exactly that. Verified as NOT yet visible, and worth stating plainly. Against the rc build this was developed on, the Web UI renders its generic row regardless, and a presenter title appears in neither the row nor the detail panel. The declarations are correct against the published types, cost nothing to carry, and will render when a build surfaces them — but this is not a UI improvement today and should not be described as one. Records the real path to custom rendering in the roadmap: an inbound peer message shown as a card rather than a "Context injection" row needs a client bundle — a Conversation Node, a keyed renderer on conversation.chat.node, CSS modules, and the client/host tsconfig split. Substantially larger than anything in the roadmap, and not started. 18 new tests, 326 total. Version 0.9.0.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Tools now declare
presentCall/presentResult— the harness's documented render-intent vocabulary, which first-party tools (dsh-tool-jobs,dsh-tool-workflow,dsh-schedule,dsh-tool-skill) already use.The point is that these calls have a fact worth putting in a title:
peer_claim · api/charges.tspeer_verify_reply · checkoutpeer_status · blockedpeer_send · checkout-clientVerified as not yet visible — stating it plainly
Against the
rcbuild this was developed on, the Web UI renders its generic row regardless. I checked both the collapsed row and the detail panel: the presenter title does not appear in either.The declarations are correct against the published types, they cost nothing to carry, and they will render when a build surfaces them. But this is not a UI improvement today and I'm not describing it as one. No README claim, no screenshot.
The real path to custom rendering
Recorded in the roadmap rather than half-built: an inbound peer message shown as a genuine card instead of a
Context injectionrow needs a client bundle — a Conversation Node folding the events, a keyed renderer onconversation.chat.node, CSS modules, and the client/host tsconfig split. Substantially larger than anything in this roadmap. Not started.Replay safety
Presenters are pure and
undefined-tolerant by contract: they run on replayed history, where a logged call may carry arguments from an older version of a tool. A presenter that threw would break the whole transcript, not one card — so there's a test that every presenter survives empty arguments and empty results, and that titles stay one line whatever the input.18 new tests, 326 total.