* refactor(tool-input): eliminate SyncWrappers, add canonical toggle and 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>
* fix(tool-input): restore optional indicator, fix folder selector and 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
* add sibling values to subblock context since subblock store isn't relevant in tool input, and removed unused param
* cleanup
* fix(tool-input): render uncovered tool params alongside subblocks
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>
* fix(tool-input): auto-refresh workflow inputs after redeploy
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>
* fix(tool-input): correct workflow selector visibility and tighten (optional) 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>
* fix(tool-input): align (optional) text to baseline instead of center
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>
* fix(tool-input): increase top padding of expanded tool body
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>
* fix(tool-input): apply extra top padding only to SubBlock-first path
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>
* fix(tool-input): increase gap between SubBlock params for visual clarity
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>
* fix spacing and optional tag
* update styling + move predeploy checks earlier for first time deploys
* update change detection to account for synthetic tool ids
* fix remaining blocks who had files visibility set to hidden
* cleanup
* add catch
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* fix(agent): always fetch latest custom tool from DB when customToolId is present
* test(agent): use generic test data for customToolId resolution tests
* fix(agent): mock buildAuthHeaders in tests for CI compatibility
* remove inline mocks in favor of sim/testing ones
* fix(terminal): reconnect to running executions after page refresh
* fix(terminal): use ExecutionEvent type instead of any in reconnection stream
* fix(execution): type event buffer with ExecutionEvent instead of Record<string, unknown>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(execution): validate fromEventId query param in reconnection endpoint
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix some bugs
* fix(variables): fix tag dropdown and cursor alignment in variables block (#3199)
* feat(confluence): added list space labels, delete label, delete page prop (#3201)
* updated route
* ack comments
* fix(execution): reset execution state in reconnection cleanup to unblock re-entry
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(execution): restore running entries when reconnection is interrupted by navigation
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* done
* remove cast in ioredis types
* ack PR comments
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Siddharth Ganesan <siddharthganesan@gmail.com>
* feat(providers): add Gemini Deep Research via Interactions API
* fix(providers): hide memory UI for deep research models
* feat(providers): add multi-turn support and token logging for deep research
* fix(providers): only collect user messages as deep research input
* fix(providers): forward previousInteractionId to provider request
* fix(blocks): hide memory child fields for deep research models
* remove memory params from models that don't support it in provider requests
* update blog
* fix(execution): scope execution state per workflow to prevent cross-workflow bleed
* fix(execution): use validated workflowId param instead of non-null assertion in handleRunUntilBlock
* improvement(execution): use individual selectors to avoid unnecessary re-renders from unselectored store hook
* improvement(execution): use useShallow selector in workflow.tsx to avoid re-renders from lastRunPath/lastRunEdges changes
Adds the AgentSkillsIcon to trace spans in logs when displaying the
load_skill tool. Previously, skills appeared with a default gray color.
Now they display with the proper skill icon and a purple (#8B5CF6)
background color, consistent with the skills icon used in the settings
modal and skill input components.
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Emir Karabeg <emir-karabeg@users.noreply.github.com>
* improvement(preview): added trigger mode context for deploy preview
* use existing helper
* enhance disabled mode for subblocks
* update
* update all subblocks to allow scrolling in read only mode
* updated short and long input to match others, reverted triggerutils change
* fix(mcp): harden notification system against race conditions
- Guard concurrent connect() calls in connection manager with connectingServers Set
- Suppress post-disconnect notification handler firing in MCP client
- Clean up Redis event listeners in pub/sub dispose()
- Add tests for all three hardening fixes (11 new tests)
* updated tests
* plugged in new mcp event based system and create sse route to publish notifs
* ack commetns
* fix reconnect timer
* cleanup when running onClose
* fixed spacing on mcp settings tab
* keep error listeners before quiet in redis
* feat(models): updated model configs, updated anthropic provider to propagate errors back to user if any
* moved max tokens to advanced
* updated model configs and testesd
* removed default in max config for output tokens
* moved more stuff to advanced mode in the agent block
* stronger typing
* move api key under model, update mistral and groq
* update openrouter, fixed serializer to allow ollama/vllm models without api key
* removed ollama handling
* improvement(preview): nested workflow snapshots/preview when not executed
* improvements to resolve nested subblock values
* few more things
* add try catch
* fix fallback case
* deps
* fix(logs): execution files should always use our internal route
* correct degree of access control
* fix tests
* fix tag defs flag
* fix type check
* fix mcp tools
* make webhooks consistent
* fix ollama and vllm visibility
* remove dup test