Repository navigation
Use shared Core tool declaration for saved call presentation - #677
Merged
Merged
Conversation
There was a problem hiding this comment.
Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.
An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.
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.
Current delivery and installed observation
Merged as #677 and installed in Toad 24751e9 / Core 493878cde (native 6468a1979d983e9d). Core 493878cde includes both #932 and #925. The isolated Core 64e6bdcb topic is not a compatible pair by itself: it lacks ToolText. No module copy, source overlay or additional build was used.
On isolated display :77, the installed application opened this participant's original native history and Codex history. Saved native Read/Run/Edit/Write groups rendered; 129 actual admitted native tool groups retained the original start input object. A physical Codex Edit disclosure rendered its real saved diff, with the original foreign file_path input admitted without Pi argument validation. Evidence: /home/ts/.cache/agent-scratch/toad-outgoing-live/tool-contract-installed-20261016/01-open.png, 08-foreign-disclosed.png, native-return-frame.json and foreign-frame.json.
The actual Claude-code view also admitted unknown Monitor with its raw title, kind other and original input object. This is admitted-fragment evidence, not yet Monitor pixels. End-only/start-only coverage is accepted as authored source cases under Claude11664, not saved-session UI evidence. No saved end-only case was identified; Core owner11651 confirmed its examples were authored. The installed consumer ran those exact Read/Run/Edit/Write shapes: ends retain declaration title/kind, completed status and absent input; starts remain in_progress with the identical foreign input object; grouped ends complete without replacing that object; scalar17 remains unchanged. Results:
.artifacts/tool-declaration-consumer/installed-authored-cases.json. No saved record, synthetic application or provider response was created. No provider input, failed-input replay, saved-record fabrication, test-suite run or watcher activation. Direct Send remains outstanding under critical resource headroom; saved native and CLI Run labels were physically observed.Paired Core dependency: do not install against old Core
Drawing retained results through an execution decoder was stupid because an end-only event has no execution input, and foreign Codex arguments are not Pi arguments. Delete the ToolDeclaration/NativeTool presentation call and its invented
{}. Core owns strictcreate_callexecution decoding and metadata-only transcript presentation; this PR consumes the recorded event owners.Consumer
src/toad/acp/status.pyowns recorded status acquisition:title/kind. End-only events receive declaration-owned metadata without fabricating a start or arguments.in_progress; an end alone supplies completed/failed. The production fragment grouper admits start-only fragments, so leaving them completed was a second wrong decision in the same owner.One related off-status-file edit is in
src/toad/tool_output.py: delete its secondraw_input or {}substitution. The existing dict check already handles absent/non-dict ACP input; it does not need invented arguments. Existing external ACP path spellings are unchanged.Current Toad main, including the merged #681 nominal status consumers, was merged normally into #677 at 7a354b3. This avoids pairing the old row.working/row.attention consumers with current Core main. The authored diff remains two files, +6/-6. No manual scroll-path changes. Original failed inputs remain frozen; no provider input or replay.
Source evidence
The existing refactor-audit Package/Repository parser inventoried declarations, inheritance, imports, writes, calls and decisions across Toad and the Core owner's working tree before this change: 282 Toad and 322 Core modules, zero parse omissions. Evidence in
.artifacts/tool-declaration-consumer/recorded-before.txtandcurrent-before.txtin the owned persistent checkout. Core was explicitly an in-progress working source, not a reviewed combined head. Generic attribute retrieval does not prove dynamic receiver binding.ToolCallStatus.from_transcripthas one production caller in the existing transcript fragment producer. Both saved fragment consumers borrow its resulting status. Metadata now comes from Core's ToolTranscript/ToolStartTranscript title/kind owners; no Toad ToolDeclaration.start or NativeTool reference remains.Verification and remaining dependency
toad.acp.statussource import and whitespace checks passed against the current Core working source. After inventory parses 282 Toad modules with zero omissions; no ToolDeclaration/NativeTool reference or empty-dict raw-input substitution remains in Toad.agent_comms.sent_message, absent from that Core checkout. It failed before transcript acquisition. Raw failure is retained at.artifacts/tool-declaration-consumer/source-check-failure.txt; no workaround or shadow import was added.The earlier dependency failures above are retained history, superseded by the installed observation at the top. Merged and installed. Grouped/foreign history accepted from the actual saved-session UI; end-only/start-only accepted from explicitly authorized authored source cases against the installed consumer. Direct Send remains unverified. Core decoder/adapters: core-goal-retry. Toad consumer and original-history UI follow-up: toad-close-lifecycle. Integration/install: Codex.