Skip to content

Version Packages#2844

Merged
miles-kt-inkeep merged 1 commit intomainfrom
changeset-release/main
Mar 27, 2026
Merged

Version Packages#2844
miles-kt-inkeep merged 1 commit intomainfrom
changeset-release/main

Conversation

@inkeep-internal-ci
Copy link
Copy Markdown
Contributor

@inkeep-internal-ci inkeep-internal-ci bot commented Mar 26, 2026

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

@inkeep/agents-cli@0.61.0

Minor Changes

  • 12722d9: Add interactive merge conflict resolution UI for inkeep pull command

Patch Changes

  • 1e4f05d: Refactor agent graph editor to use deterministic graph keys and single source of truth for form state

    Graph identity system

    • Add deterministic graph key derivation for all node types (getSubAgentGraphKey, getMcpGraphKey, getFunctionToolGraphKey, getExternalAgentGraphKey, getTeamAgentGraphKey) via new graph-keys.ts, graph-identity.ts, sub-agent-identity.ts, and function-tool-identity.ts modules
    • Replace unstable generateId() UUIDs with stable, domain-meaningful identifiers derived from persisted IDs (relation IDs, tool IDs, agent IDs)
    • URL-based sidepane selection now uses graph keys instead of raw React Flow IDs, so deep-links survive re-renders and saves

    RHF as single source of truth

    • Strip node.data down to a thin identity envelope (nodeKey + minimal refs like toolId) — all business fields (name, description, prompt, models, code, etc.) are read exclusively from React Hook Form state
    • Remove hydrateNodesWithFormData() entirely; editorToPayload() now reads all business data directly from a SerializeAgentFormState bundle with requireFormValue() fail-fast guards
    • Rename FullAgentUpdateSchemaFullAgentFormSchema, remove .transform() from schema (resolution now happens at serialize-time), split types into FullAgentFormValues / FullAgentFormInputValues

    Connection state consolidation

    • Collapse scattered tempSelectedTools/tempHeaders/tempToolPolicies on node data into mcpRelations and functionToolRelations RHF record maps with factory helpers (createMcpRelationFormInput, createFunctionToolRelationFormInput)
    • Edge removal triggers synchronous form.unregister() instead of deferred requestAnimationFrame — only relationshipId is unregistered for MCP relations to avoid a race condition where headers would be set to empty string on removal
    • Remove subAgentId manipulation from Zustand store's onEdgesChange

    Save-cycle reconciliation

    • Expand syncSavedAgentGraph to reconcile three categories of server-assigned IDs: tool canUse relations, external agent delegate relations, and team agent delegate relations
    • Rename MCP node IDs to deterministic graph keys post-save; preserve URL selection state via findNodeByGraphKey/findEdgeByGraphKey
    • Collapse redundant double isNodeType patterns into single guards

    Bug fixes

    • Fix function tool "requires approval" flag not persisting across save/reload by hydrating needsApproval tool policies from canUse relations back into form state during apiToFormValues()
    • Fix model inheritance display: use getModelInheritanceStatus() instead of bare !subAgent.models check to correctly show "(inherited)" label
    • Fix MCP node editor crash on deep-link/reload: consolidate null guards for toolData, tool, and mcpRelation with proper JSX fallback UI
    • Fix function tool node editor crash after node removal: add early return when functionId is undefined
    • Fix race condition when MCP relation is removed but component is still mounted

    Performance

    • Replace useWatch({ name: 'functionTools' }) with targeted useWatch({ name: 'functionTools.${id}.functionId' }) to eliminate O(N²) re-renders across function tool nodes
    • Remove getFunctionIdForTool helper that iterated the entire functionTools map

    Schema changes

    • Rename form field defaultSubAgentIddefaultSubAgentNodeId to clarify it holds a node key; translation to persisted ID happens at serialization time
    • Add FunctionToolRelationSchema and functionToolRelations record field to form schema
    • OpenAPI: defaultSubAgentId uses $ref to ResourceId, maxTransferCount type corrected to integer, function tool dependencies simplified to StringRecord

    Test coverage

    • Add 7 new test files covering graph identity, function tool identity, form-state defaults, and sync-saved-agent-graph scenarios
    • Expand serialize and deserialize test suites with new architecture patterns
    • Add roundtrip test for approval policy hydration
  • Updated dependencies [12722d9]

  • Updated dependencies [15c3f9d]

  • Updated dependencies [ec1b2f7]

  • Updated dependencies [1e4f05d]

  • Updated dependencies [cad67b9]

  • Updated dependencies [f4a9c69]

    • @inkeep/agents-core@0.61.0
    • @inkeep/agents-manage-ui@0.61.0
    • @inkeep/agents-sdk@0.61.0

@inkeep/agents-api@0.61.0

Patch Changes

  • 1e4f05d: Refactor agent graph editor to use deterministic graph keys and single source of truth for form state

    Graph identity system

    • Add deterministic graph key derivation for all node types (getSubAgentGraphKey, getMcpGraphKey, getFunctionToolGraphKey, getExternalAgentGraphKey, getTeamAgentGraphKey) via new graph-keys.ts, graph-identity.ts, sub-agent-identity.ts, and function-tool-identity.ts modules
    • Replace unstable generateId() UUIDs with stable, domain-meaningful identifiers derived from persisted IDs (relation IDs, tool IDs, agent IDs)
    • URL-based sidepane selection now uses graph keys instead of raw React Flow IDs, so deep-links survive re-renders and saves

    RHF as single source of truth

    • Strip node.data down to a thin identity envelope (nodeKey + minimal refs like toolId) — all business fields (name, description, prompt, models, code, etc.) are read exclusively from React Hook Form state
    • Remove hydrateNodesWithFormData() entirely; editorToPayload() now reads all business data directly from a SerializeAgentFormState bundle with requireFormValue() fail-fast guards
    • Rename FullAgentUpdateSchemaFullAgentFormSchema, remove .transform() from schema (resolution now happens at serialize-time), split types into FullAgentFormValues / FullAgentFormInputValues

    Connection state consolidation

    • Collapse scattered tempSelectedTools/tempHeaders/tempToolPolicies on node data into mcpRelations and functionToolRelations RHF record maps with factory helpers (createMcpRelationFormInput, createFunctionToolRelationFormInput)
    • Edge removal triggers synchronous form.unregister() instead of deferred requestAnimationFrame — only relationshipId is unregistered for MCP relations to avoid a race condition where headers would be set to empty string on removal
    • Remove subAgentId manipulation from Zustand store's onEdgesChange

    Save-cycle reconciliation

    • Expand syncSavedAgentGraph to reconcile three categories of server-assigned IDs: tool canUse relations, external agent delegate relations, and team agent delegate relations
    • Rename MCP node IDs to deterministic graph keys post-save; preserve URL selection state via findNodeByGraphKey/findEdgeByGraphKey
    • Collapse redundant double isNodeType patterns into single guards

    Bug fixes

    • Fix function tool "requires approval" flag not persisting across save/reload by hydrating needsApproval tool policies from canUse relations back into form state during apiToFormValues()
    • Fix model inheritance display: use getModelInheritanceStatus() instead of bare !subAgent.models check to correctly show "(inherited)" label
    • Fix MCP node editor crash on deep-link/reload: consolidate null guards for toolData, tool, and mcpRelation with proper JSX fallback UI
    • Fix function tool node editor crash after node removal: add early return when functionId is undefined
    • Fix race condition when MCP relation is removed but component is still mounted

    Performance

    • Replace useWatch({ name: 'functionTools' }) with targeted useWatch({ name: 'functionTools.${id}.functionId' }) to eliminate O(N²) re-renders across function tool nodes
    • Remove getFunctionIdForTool helper that iterated the entire functionTools map

    Schema changes

    • Rename form field defaultSubAgentIddefaultSubAgentNodeId to clarify it holds a node key; translation to persisted ID happens at serialization time
    • Add FunctionToolRelationSchema and functionToolRelations record field to form schema
    • OpenAPI: defaultSubAgentId uses $ref to ResourceId, maxTransferCount type corrected to integer, function tool dependencies simplified to StringRecord

    Test coverage

    • Add 7 new test files covering graph identity, function tool identity, form-state defaults, and sync-saved-agent-graph scenarios
    • Expand serialize and deserialize test suites with new architecture patterns
    • Add roundtrip test for approval policy hydration
  • ad874d0: Add durable execution mode for agent runs with tool approvals and crash recovery

  • f4a9c69: Fix key_findings persistence in compressor by using proper update instead of insert-only upsert

  • Updated dependencies [12722d9]

  • Updated dependencies [f4a9c69]

    • @inkeep/agents-core@0.61.0
    • @inkeep/agents-work-apps@0.61.0
    • @inkeep/agents-email@0.61.0
    • @inkeep/agents-mcp@0.61.0

@inkeep/agents-manage-ui@0.61.0

Patch Changes

  • 15c3f9d: Improve agent page sidepane performance using Activity component

  • ec1b2f7: Extract selection-sync logic into useAgentSelectionSync hook and remove useDefaultSubAgentNodeIdRef

  • 1e4f05d: Refactor agent graph editor to use deterministic graph keys and single source of truth for form state

    Graph identity system

    • Add deterministic graph key derivation for all node types (getSubAgentGraphKey, getMcpGraphKey, getFunctionToolGraphKey, getExternalAgentGraphKey, getTeamAgentGraphKey) via new graph-keys.ts, graph-identity.ts, sub-agent-identity.ts, and function-tool-identity.ts modules
    • Replace unstable generateId() UUIDs with stable, domain-meaningful identifiers derived from persisted IDs (relation IDs, tool IDs, agent IDs)
    • URL-based sidepane selection now uses graph keys instead of raw React Flow IDs, so deep-links survive re-renders and saves

    RHF as single source of truth

    • Strip node.data down to a thin identity envelope (nodeKey + minimal refs like toolId) — all business fields (name, description, prompt, models, code, etc.) are read exclusively from React Hook Form state
    • Remove hydrateNodesWithFormData() entirely; editorToPayload() now reads all business data directly from a SerializeAgentFormState bundle with requireFormValue() fail-fast guards
    • Rename FullAgentUpdateSchemaFullAgentFormSchema, remove .transform() from schema (resolution now happens at serialize-time), split types into FullAgentFormValues / FullAgentFormInputValues

    Connection state consolidation

    • Collapse scattered tempSelectedTools/tempHeaders/tempToolPolicies on node data into mcpRelations and functionToolRelations RHF record maps with factory helpers (createMcpRelationFormInput, createFunctionToolRelationFormInput)
    • Edge removal triggers synchronous form.unregister() instead of deferred requestAnimationFrame — only relationshipId is unregistered for MCP relations to avoid a race condition where headers would be set to empty string on removal
    • Remove subAgentId manipulation from Zustand store's onEdgesChange

    Save-cycle reconciliation

    • Expand syncSavedAgentGraph to reconcile three categories of server-assigned IDs: tool canUse relations, external agent delegate relations, and team agent delegate relations
    • Rename MCP node IDs to deterministic graph keys post-save; preserve URL selection state via findNodeByGraphKey/findEdgeByGraphKey
    • Collapse redundant double isNodeType patterns into single guards

    Bug fixes

    • Fix function tool "requires approval" flag not persisting across save/reload by hydrating needsApproval tool policies from canUse relations back into form state during apiToFormValues()
    • Fix model inheritance display: use getModelInheritanceStatus() instead of bare !subAgent.models check to correctly show "(inherited)" label
    • Fix MCP node editor crash on deep-link/reload: consolidate null guards for toolData, tool, and mcpRelation with proper JSX fallback UI
    • Fix function tool node editor crash after node removal: add early return when functionId is undefined
    • Fix race condition when MCP relation is removed but component is still mounted

    Performance

    • Replace useWatch({ name: 'functionTools' }) with targeted useWatch({ name: 'functionTools.${id}.functionId' }) to eliminate O(N²) re-renders across function tool nodes
    • Remove getFunctionIdForTool helper that iterated the entire functionTools map

    Schema changes

    • Rename form field defaultSubAgentIddefaultSubAgentNodeId to clarify it holds a node key; translation to persisted ID happens at serialization time
    • Add FunctionToolRelationSchema and functionToolRelations record field to form schema
    • OpenAPI: defaultSubAgentId uses $ref to ResourceId, maxTransferCount type corrected to integer, function tool dependencies simplified to StringRecord

    Test coverage

    • Add 7 new test files covering graph identity, function tool identity, form-state defaults, and sync-saved-agent-graph scenarios
    • Expand serialize and deserialize test suites with new architecture patterns
    • Add roundtrip test for approval policy hydration
  • cad67b9: Move refreshAgentGraph and handleNavigateToNode to their consuming components for better co-location

  • Updated dependencies [12722d9]

  • Updated dependencies [f4a9c69]

    • @inkeep/agents-core@0.61.0

@inkeep/agents-core@0.61.0

Patch Changes

  • 12722d9: Add interactive merge conflict resolution UI for inkeep pull command
  • f4a9c69: Fix key_findings persistence in compressor by using proper update instead of insert-only upsert

@inkeep/agents-sdk@0.61.0

Patch Changes

  • Updated dependencies [12722d9]
  • Updated dependencies [f4a9c69]
    • @inkeep/agents-core@0.61.0

@inkeep/agents-work-apps@0.61.0

Patch Changes

  • Updated dependencies [12722d9]
  • Updated dependencies [f4a9c69]
    • @inkeep/agents-core@0.61.0

@inkeep/ai-sdk-provider@0.61.0

Patch Changes

  • Updated dependencies [12722d9]
  • Updated dependencies [f4a9c69]
    • @inkeep/agents-core@0.61.0

@inkeep/create-agents@0.61.0

Patch Changes

  • Updated dependencies [12722d9]
  • Updated dependencies [f4a9c69]
    • @inkeep/agents-core@0.61.0

@inkeep/agents-email@0.61.0

@inkeep/agents-mcp@0.61.0

@vercel
Copy link
Copy Markdown

vercel bot commented Mar 26, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

3 Skipped Deployments
Project Deployment Actions Updated (UTC)
agents-api Ignored Ignored Preview Mar 27, 2026 7:08am
agents-docs Ignored Ignored Preview Mar 27, 2026 7:08am
agents-manage-ui Ignored Ignored Preview Mar 27, 2026 7:08am

Request Review

@github-actions github-actions bot force-pushed the changeset-release/main branch 6 times, most recently from 8bd6a07 to 3c103be Compare March 27, 2026 00:25
@github-actions github-actions bot force-pushed the changeset-release/main branch from 3c103be to 166c14d Compare March 27, 2026 07:07
@miles-kt-inkeep miles-kt-inkeep added this pull request to the merge queue Mar 27, 2026
Merged via the queue into main with commit a6766a9 Mar 27, 2026
27 of 32 checks passed
@miles-kt-inkeep miles-kt-inkeep deleted the changeset-release/main branch March 27, 2026 16:25
@github-actions
Copy link
Copy Markdown
Contributor

🔎💬 Inkeep AI search and chat service is syncing content for source 'Inkeep Agent Framework Docs'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant