Repository navigation
Declare caller-owned parameter types in eight more Toad modules - #1153
Merged
Merged
Conversation
trissim
marked this pull request as ready for review
October 23, 2026 16:51
There was a problem hiding this comment.
Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota.
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.
Author
|
Post-merge review: clean (commander review fork; this PR was merged by its author with no review, which is a process strike, not a code defect).
|
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.
Declare 249 previously bare parameters from the existing caller-owned types in the next eight heaviest modules. Nullable inputs and missing family capabilities remain explicit stops below. Base
58f0f8f0b47ead92ca1b94e152cf43739278d027; headaade2453ab79204b793ddf385a44383c332b4c34.The initial draft recorded this same ranking at main
58f0f8f0b, excluding #1148's original eight. No parameters, functions or tests were deleted to lower the count. No ratchet, baseline, dependency lock or guard changes.wire_history.pyagent_binding.pyconversation_kind.pyconversation_submission.pywidgets/context_explorer.pyagent_surface.pyframe_presentation.pyacp/agent_controller.pyExplicit Any: 10 → 10. All 287 production Python modules parsed; zero omissions. Parameter deletions: 0. The new abstract method declarations are fully typed and do not remove existing parameters.
Source relationships checked by AST across Toad/Core/Textual: 1,003 modules; zero parse omissions. The retained annotations use ConversationSessionBinding for shared lifecycle calls, Conversation/CommsChatView for concrete views, Comms/RegistrySnapshot/SidebarModel for conversations, RenderTask[Result]/Renderer for work, ClientSessionRequest/QueueScope for ACP, and frame/effect/node classes for their actual callers. Annotation-only imports keep the runtime graph unchanged; no quoted annotations, Any/object escape, casts, Protocol, ignores, invented nullable inputs or Callable ellipses were added.
Defects fixed in separate commits:
cf147a292:acp/prompt.pyadvertised list[object] although its final SDK validation returns ContentBlock models. The declaration now uses the SDK's existing content type.25b387487:Conversation.new_terminalconstructs ShellTerminal but declared Terminal. Its owner now declares the actual result.542f851d0: AgentConnection's concrete members already supplied configuration, presentation, begin_submission and accepts_failed_input, while the family omitted those capabilities. Added declarations on that existing family; both concrete branches remain concrete.5de3715ee:acp/prompt.pystill called deleted ImageInput.to_rpc. It now uses FieldCodec.encode_record(image), deriving mimeType/type from Core's declared fields. Existing image tests cover this path; no new encoder or mapping roster.Defects stopped: the event publisher/event correlation, native/wire loader/cursor/page/fragment correlations, ContextTree node payload presence, ShellOperationalSource sizing/directory capability, and frame running-driver lifetime are named individually below. These are source owner targets, not invented annotations.
Checks:
python -I, explicitly loading this checkout's src and the locked Core wheel. Compileall succeeds; NoAgentConnection and ACP Agent are concrete after the family declarations.wire_history.py:188WireFragment._unhandled_message.messagewire_history.py:188WireFragment._unhandled_message.fieldswire_history.py:193WireFragment.__init_subclass__.roleswire_history.py:193WireFragment.__init_subclass__.kwargswire_history.py:199WireFragment.of.fieldswire_history.py:203WireFragment.from_message.messagewire_history.py:203WireFragment.from_message.readerwire_history.py:203WireFragment.from_message.fieldswire_history.py:231WireFragment.blocks.shownwire_history.py:256MessageFragment.from_message.messagewire_history.py:256MessageFragment.from_message.readerwire_history.py:256MessageFragment.from_message.fieldswire_history.py:346RestyledViewportRequest.source.ownerwire_history.py:356ObservedViewportRequest.source.ownerwire_history.py:374GrowingWireObservation.apply.historywire_history.py:374GrowingWireObservation.apply.sourcewire_history.py:393WirePageWork.execute.runtimewire_history.py:393WirePageWork.execute.keywire_history.py:407WirePageBuffer.__init__.argswire_history.py:407WirePageBuffer.__init__.kwargswire_history.py:411WirePageBuffer.replacement.throughwire_history.py:422WirePageBuffer.status_thread.accesswire_history.py:425WirePageBuffer.command_context.viewwire_history.py:467WirePageBuffer.observe_changes.revisionwire_history.py:470WirePageBuffer.accept_page.historywire_history.py:470WirePageBuffer.accept_page.edgewire_history.py:470WirePageBuffer.accept_page.preparedwire_history.py:480WirePageBuffer.seen_page.historywire_history.py:480WirePageBuffer.seen_page.seenwire_history.py:497WirePageBuffer.status_text.read_onlywire_history.py:500WirePageBuffer.accepts.throughagent_binding.py:81AgentConnection.matches_agent.agentagent_binding.py:137NoAgentConnection.matches_agent.agentagent_binding.py:152NoAgentConnection.compact_context.instructionsagent_binding.py:191NoAgentConnection.request_compaction.instructionsconversation_kind.py:136ConversationKind.seen_page.seenconversation_kind.py:289DmConversation.compose_activity.viewconversation_submission.py:92ShellInputSubmission.execute.ownerconversation_submission.py:255SubmissionExecution.complete.reasonconversation_submission.py:263ConversationSubmissions.__init__.viewconversation_submission.py:346ConversationSubmissions._send_now.sessionwidgets/context_explorer.py:59ContextTreeIntent.search_current.selectedwidgets/context_explorer.py:66ContextTreeIntent.restore_detail.resolvewidgets/context_explorer.py:131ContextTree._reconcile.parentwidgets/context_explorer.py:155ContextTree._retire.nodewidgets/context_explorer.py:181ContextTree._add.beforewidgets/context_explorer.py:194ContextTree.owns_node.nodewidgets/context_explorer.py:201ContextTree._expand.nodewidgets/context_explorer.py:218ContextTree.node_expanded.eventwidgets/context_explorer.py:224ContextTree.node_collapsed.eventwidgets/context_explorer.py:228ContextTree.selected.modelwidgets/context_explorer.py:308ContextExplorer._observed._valuewidgets/context_explorer.py:518ContextExplorer._searching.selectedwidgets/context_explorer.py:577ContextExplorer._selected.modelagent_surface.py:45AttachedSurfaceBinding.owns_publication.messageagent_surface.py:67AttachedSurfaceBinding.present_tool.messageagent_surface.py:117AttachedSurfaceBinding.prepare_shell.sourceframe_presentation.py:95FrameState.displayed.frameframe_presentation.py:297AnimationEffects.__init__.argsframe_presentation.py:297AnimationEffects.__init__.kwargsacp/agent_controller.py:105AgentController.bind_session.session_idacp/agent_controller.py:128AgentController.detach.targetacp/agent_controller.py:278AgentController._prompt.contentacp/agent_controller.py:278AgentController._prompt.commandacp/agent_controller.py:310AgentController._prompt_failed.commandacp/agent_controller.py:352AgentController.compact_context.instructionsacp/agent_controller.py:358AgentController._compact_context.instructionsAssumed: