Skip to content

Commit a6766a9

Browse files
Version Packages (#2844)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
1 parent 706fd16 commit a6766a9

File tree

28 files changed

+271
-90
lines changed

28 files changed

+271
-90
lines changed

.changeset/brave-doors-merge.md

Lines changed: 0 additions & 6 deletions
This file was deleted.

.changeset/cuddly-tigers-happen.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

.changeset/extract-selection-sync.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

.changeset/graph-identity-refactor.md

Lines changed: 0 additions & 48 deletions
This file was deleted.

.changeset/grim-apricot-crow.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

.changeset/move-refresh-agent-graph.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

.changeset/unconscious-brown-deer.md

Lines changed: 0 additions & 6 deletions
This file was deleted.

agents-api/CHANGELOG.md

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,69 @@
11
# @inkeep/agents-api
22

3+
## 0.61.0
4+
5+
### Patch Changes
6+
7+
- 1e4f05d: Refactor agent graph editor to use deterministic graph keys and single source of truth for form state
8+
9+
### Graph identity system
10+
11+
- 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
12+
- Replace unstable `generateId()` UUIDs with stable, domain-meaningful identifiers derived from persisted IDs (relation IDs, tool IDs, agent IDs)
13+
- URL-based sidepane selection now uses graph keys instead of raw React Flow IDs, so deep-links survive re-renders and saves
14+
15+
### RHF as single source of truth
16+
17+
- 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
18+
- Remove `hydrateNodesWithFormData()` entirely; `editorToPayload()` now reads all business data directly from a `SerializeAgentFormState` bundle with `requireFormValue()` fail-fast guards
19+
- Rename `FullAgentUpdateSchema``FullAgentFormSchema`, remove `.transform()` from schema (resolution now happens at serialize-time), split types into `FullAgentFormValues` / `FullAgentFormInputValues`
20+
21+
### Connection state consolidation
22+
23+
- Collapse scattered `tempSelectedTools`/`tempHeaders`/`tempToolPolicies` on node data into `mcpRelations` and `functionToolRelations` RHF record maps with factory helpers (`createMcpRelationFormInput`, `createFunctionToolRelationFormInput`)
24+
- 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
25+
- Remove `subAgentId` manipulation from Zustand store's `onEdgesChange`
26+
27+
### Save-cycle reconciliation
28+
29+
- Expand `syncSavedAgentGraph` to reconcile three categories of server-assigned IDs: tool `canUse` relations, external agent delegate relations, and team agent delegate relations
30+
- Rename MCP node IDs to deterministic graph keys post-save; preserve URL selection state via `findNodeByGraphKey`/`findEdgeByGraphKey`
31+
- Collapse redundant double `isNodeType` patterns into single guards
32+
33+
### Bug fixes
34+
35+
- 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()`
36+
- Fix model inheritance display: use `getModelInheritanceStatus()` instead of bare `!subAgent.models` check to correctly show "(inherited)" label
37+
- Fix MCP node editor crash on deep-link/reload: consolidate null guards for `toolData`, `tool`, and `mcpRelation` with proper JSX fallback UI
38+
- Fix function tool node editor crash after node removal: add early return when `functionId` is undefined
39+
- Fix race condition when MCP relation is removed but component is still mounted
40+
41+
### Performance
42+
43+
- Replace `useWatch({ name: 'functionTools' })` with targeted `useWatch({ name: 'functionTools.${id}.functionId' })` to eliminate O(N²) re-renders across function tool nodes
44+
- Remove `getFunctionIdForTool` helper that iterated the entire `functionTools` map
45+
46+
### Schema changes
47+
48+
- Rename form field `defaultSubAgentId``defaultSubAgentNodeId` to clarify it holds a node key; translation to persisted ID happens at serialization time
49+
- Add `FunctionToolRelationSchema` and `functionToolRelations` record field to form schema
50+
- OpenAPI: `defaultSubAgentId` uses `$ref` to `ResourceId`, `maxTransferCount` type corrected to `integer`, function tool `dependencies` simplified to `StringRecord`
51+
52+
### Test coverage
53+
54+
- Add 7 new test files covering graph identity, function tool identity, form-state defaults, and sync-saved-agent-graph scenarios
55+
- Expand serialize and deserialize test suites with new architecture patterns
56+
- Add roundtrip test for approval policy hydration
57+
58+
- ad874d0: Add durable execution mode for agent runs with tool approvals and crash recovery
59+
- f4a9c69: Fix key_findings persistence in compressor by using proper update instead of insert-only upsert
60+
- Updated dependencies [12722d9]
61+
- Updated dependencies [f4a9c69]
62+
- @inkeep/agents-core@0.61.0
63+
- @inkeep/agents-work-apps@0.61.0
64+
- @inkeep/agents-email@0.61.0
65+
- @inkeep/agents-mcp@0.61.0
66+
367
## 0.60.0
468

569
### Minor Changes

agents-api/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@inkeep/agents-api",
3-
"version": "0.60.0",
3+
"version": "0.61.0",
44
"description": "Unified Inkeep Agents API - combines management, runtime, and evaluation capabilities",
55
"types": "dist/index.d.ts",
66
"exports": {

agents-cli/CHANGELOG.md

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,74 @@
11
# @inkeep/agents-cli
22

3+
## 0.61.0
4+
5+
### Minor Changes
6+
7+
- 12722d9: Add interactive merge conflict resolution UI for inkeep pull command
8+
9+
### Patch Changes
10+
11+
- 1e4f05d: Refactor agent graph editor to use deterministic graph keys and single source of truth for form state
12+
13+
### Graph identity system
14+
15+
- 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
16+
- Replace unstable `generateId()` UUIDs with stable, domain-meaningful identifiers derived from persisted IDs (relation IDs, tool IDs, agent IDs)
17+
- URL-based sidepane selection now uses graph keys instead of raw React Flow IDs, so deep-links survive re-renders and saves
18+
19+
### RHF as single source of truth
20+
21+
- 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
22+
- Remove `hydrateNodesWithFormData()` entirely; `editorToPayload()` now reads all business data directly from a `SerializeAgentFormState` bundle with `requireFormValue()` fail-fast guards
23+
- Rename `FullAgentUpdateSchema``FullAgentFormSchema`, remove `.transform()` from schema (resolution now happens at serialize-time), split types into `FullAgentFormValues` / `FullAgentFormInputValues`
24+
25+
### Connection state consolidation
26+
27+
- Collapse scattered `tempSelectedTools`/`tempHeaders`/`tempToolPolicies` on node data into `mcpRelations` and `functionToolRelations` RHF record maps with factory helpers (`createMcpRelationFormInput`, `createFunctionToolRelationFormInput`)
28+
- 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
29+
- Remove `subAgentId` manipulation from Zustand store's `onEdgesChange`
30+
31+
### Save-cycle reconciliation
32+
33+
- Expand `syncSavedAgentGraph` to reconcile three categories of server-assigned IDs: tool `canUse` relations, external agent delegate relations, and team agent delegate relations
34+
- Rename MCP node IDs to deterministic graph keys post-save; preserve URL selection state via `findNodeByGraphKey`/`findEdgeByGraphKey`
35+
- Collapse redundant double `isNodeType` patterns into single guards
36+
37+
### Bug fixes
38+
39+
- 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()`
40+
- Fix model inheritance display: use `getModelInheritanceStatus()` instead of bare `!subAgent.models` check to correctly show "(inherited)" label
41+
- Fix MCP node editor crash on deep-link/reload: consolidate null guards for `toolData`, `tool`, and `mcpRelation` with proper JSX fallback UI
42+
- Fix function tool node editor crash after node removal: add early return when `functionId` is undefined
43+
- Fix race condition when MCP relation is removed but component is still mounted
44+
45+
### Performance
46+
47+
- Replace `useWatch({ name: 'functionTools' })` with targeted `useWatch({ name: 'functionTools.${id}.functionId' })` to eliminate O(N²) re-renders across function tool nodes
48+
- Remove `getFunctionIdForTool` helper that iterated the entire `functionTools` map
49+
50+
### Schema changes
51+
52+
- Rename form field `defaultSubAgentId``defaultSubAgentNodeId` to clarify it holds a node key; translation to persisted ID happens at serialization time
53+
- Add `FunctionToolRelationSchema` and `functionToolRelations` record field to form schema
54+
- OpenAPI: `defaultSubAgentId` uses `$ref` to `ResourceId`, `maxTransferCount` type corrected to `integer`, function tool `dependencies` simplified to `StringRecord`
55+
56+
### Test coverage
57+
58+
- Add 7 new test files covering graph identity, function tool identity, form-state defaults, and sync-saved-agent-graph scenarios
59+
- Expand serialize and deserialize test suites with new architecture patterns
60+
- Add roundtrip test for approval policy hydration
61+
62+
- Updated dependencies [12722d9]
63+
- Updated dependencies [15c3f9d]
64+
- Updated dependencies [ec1b2f7]
65+
- Updated dependencies [1e4f05d]
66+
- Updated dependencies [cad67b9]
67+
- Updated dependencies [f4a9c69]
68+
- @inkeep/agents-core@0.61.0
69+
- @inkeep/agents-manage-ui@0.61.0
70+
- @inkeep/agents-sdk@0.61.0
71+
372
## 0.60.0
473

574
### Patch Changes

0 commit comments

Comments
 (0)