-
Notifications
You must be signed in to change notification settings - Fork 3.3k
refactor(tool-input): subblock-first rendering, component extraction, bug fixes #3207
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: staging
Are you sure you want to change the base?
Conversation
…d dependsOn gating Replace 17+ individual SyncWrapper components with a single centralized ToolSubBlockRenderer that bridges the subblock store with StoredTool.params via synthetic store keys. This reduces ~1000 lines of duplicated wrapper code and ensures tool-input renders subblock components identically to the standalone SubBlock path. - Add ToolSubBlockRenderer with bidirectional store sync - Add basic/advanced mode toggle (ArrowLeftRight) using collaborative functions - Add dependsOn gating via useDependsOnGate (fields disable instead of hiding) - Add paramVisibility field to SubBlockConfig for tool-input visibility control - Pass canonicalModeOverrides through getSubBlocksForToolInput - Show (optional) label for non-user-only fields (LLM can inject at runtime) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…canonical toggle, extract components - Attach resolved paramVisibility to subblocks from getSubBlocksForToolInput - Add labelSuffix prop to SubBlock for "(optional)" badge on user-or-llm params - Fix folder selector missing for tools with canonicalParamId (e.g. Google Drive) - Fix canonical toggle not clickable by letting SubBlock handle dependsOn internally - Extract ParameterWithLabel, ToolSubBlockRenderer, ToolCredentialSelector to components/tools/ - Extract StoredTool interface to types.ts, selection helpers to utils.ts - Remove dead code (mcpError, refreshTools, oldParamIds, initialParams) - Strengthen typing: replace any with proper types on icon components and evaluateParameterCondition
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
Greptile OverviewGreptile SummaryEliminated ~440 lines of SyncWrapper boilerplate by introducing Key Improvements
TestingAll 42 tool-input tests and 31 params tests pass with zero TypeScript errors. Confidence Score: 4/5
Important Files Changed
Sequence DiagramsequenceDiagram
participant TI as ToolInput
participant TSR as ToolSubBlockRenderer
participant SB as SubBlock
participant Store as SubBlockStore
participant Tool as StoredTool.params
Note over TI,Tool: New Architecture (After Refactor)
TI->>TI: getSubBlocksForToolInput(toolId)
TI->>TI: Filter & resolve SubBlockConfigs
loop For each tool parameter
TI->>TSR: Render with SubBlockConfig
TSR->>TSR: Create synthetic ID<br/>(subBlockId-tool-N-paramId)
TSR->>Store: useSubBlockValue(syntheticId)
Note over TSR,Tool: Bidirectional Sync
Tool->>TSR: toolParams[paramId] changes
TSR->>Store: Push to store (effect 1)
Store->>TSR: storeValue changes
TSR->>Tool: onParamChange(toolIndex, paramId)
TSR->>SB: Delegate full rendering
SB->>SB: Render with labelSuffix,<br/>dependencyContext, canonicalToggle
end
Note over TI: Legacy path for params<br/>without SubBlockConfig
TI->>TI: Render with ParameterWithLabel
Last reviewed commit: 6ee73fa |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
11 files reviewed, 1 comment
.../components/editor/components/sub-block/components/tool-input/components/tools/parameter.tsx
Outdated
Show resolved
Hide resolved
...ts/editor/components/sub-block/components/tool-input/components/tools/sub-block-renderer.tsx
Show resolved
Hide resolved
…evant in tool input, and removed unused param
|
@cursor review |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
12 files reviewed, no comments
The SubBlock-first rendering path was hard-returning after rendering subblocks, so tool params without matching subblocks (like inputMapping for workflow tools) were never rendered. Now renders subblocks first, then any remaining displayParams not covered by subblocks via the legacy ParameterWithLabel fallback. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
After redeploying a child workflow via the stale badge, the workflow state cache was not invalidated, so WorkflowInputMapperInput kept showing stale input fields until page refresh. Now invalidates workflowKeys.state on deploy success. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…tional) spacing - Set workflowId param to user-only in workflow_executor tool config so "Select Workflow" no longer shows "(optional)" indicator - Tighten (optional) label spacing with -ml-[3px] to counteract parent Label's gap-[6px], making it feel inline with the label text Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Use items-baseline instead of items-center on Label flex containers so the smaller (optional) text aligns with the label text baseline rather than sitting slightly below it. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Bump the expanded tool body container's top padding from 8px to 12px for more breathing room between the header bar and the first parameter. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Revert container padding to py-[8px] (MCP tools were correct). Wrap SubBlock-first output in a div with pt-[4px] so only registry tools get extra breathing room from the container top. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
SubBlock's internal gap (10px between label and input) matched the between-parameter gap (10px), making them indistinguishable. Increase the between-parameter gap to 14px so consecutive parameters are visually distinct, matching the separation seen in ParameterWithLabel. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
@cursor review |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
17 files reviewed, no comments
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.
Summary
ToolSubBlockRendererthat delegates to<SubBlock>for full rendering paritylabelSuffixprop on SubBlockcanonicalParamId(e.g. Google Drive list files)ParameterWithLabel,ToolSubBlockRenderer,ToolCredentialSelectortocomponents/tools/StoredTooltotypes.ts, selection helpers toutils.tsany)Type of Change
Testing
tsc --noEmit— zero errorsChecklist