@claudebuddy/claudebuddy-agent-sdk 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/README.md +75 -3
  3. package/dist/agent.d.ts +12 -22
  4. package/dist/agent.d.ts.map +1 -1
  5. package/dist/agent.js +209 -224
  6. package/dist/agent.js.map +1 -1
  7. package/dist/engine.d.ts +7 -3
  8. package/dist/engine.d.ts.map +1 -1
  9. package/dist/engine.js +234 -224
  10. package/dist/engine.js.map +1 -1
  11. package/dist/index.d.ts +4 -1
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +1 -0
  14. package/dist/index.js.map +1 -1
  15. package/dist/mcp/client.d.ts +3 -0
  16. package/dist/mcp/client.d.ts.map +1 -1
  17. package/dist/mcp/client.js +13 -4
  18. package/dist/mcp/client.js.map +1 -1
  19. package/dist/providers/anthropic.d.ts +2 -1
  20. package/dist/providers/anthropic.d.ts.map +1 -1
  21. package/dist/providers/anthropic.js +31 -1
  22. package/dist/providers/anthropic.js.map +1 -1
  23. package/dist/providers/openai.d.ts +3 -1
  24. package/dist/providers/openai.d.ts.map +1 -1
  25. package/dist/providers/openai.js +54 -3
  26. package/dist/providers/openai.js.map +1 -1
  27. package/dist/providers/sse.d.ts +3 -0
  28. package/dist/providers/sse.d.ts.map +1 -0
  29. package/dist/providers/sse.js +36 -0
  30. package/dist/providers/sse.js.map +1 -0
  31. package/dist/providers/types.d.ts +16 -0
  32. package/dist/providers/types.d.ts.map +1 -1
  33. package/dist/session.d.ts +10 -0
  34. package/dist/session.d.ts.map +1 -1
  35. package/dist/session.js +98 -4
  36. package/dist/session.js.map +1 -1
  37. package/dist/tools/agent-tool.d.ts.map +1 -1
  38. package/dist/tools/agent-tool.js +32 -9
  39. package/dist/tools/agent-tool.js.map +1 -1
  40. package/dist/tools/ask-user.d.ts +3 -2
  41. package/dist/tools/ask-user.d.ts.map +1 -1
  42. package/dist/tools/ask-user.js +16 -15
  43. package/dist/tools/ask-user.js.map +1 -1
  44. package/dist/tools/bash.d.ts +0 -3
  45. package/dist/tools/bash.d.ts.map +1 -1
  46. package/dist/tools/bash.js +79 -59
  47. package/dist/tools/bash.js.map +1 -1
  48. package/dist/tools/config-tool.d.ts +4 -3
  49. package/dist/tools/config-tool.d.ts.map +1 -1
  50. package/dist/tools/config-tool.js +20 -16
  51. package/dist/tools/config-tool.js.map +1 -1
  52. package/dist/tools/cron-tools.d.ts +3 -2
  53. package/dist/tools/cron-tools.d.ts.map +1 -1
  54. package/dist/tools/cron-tools.js +33 -29
  55. package/dist/tools/cron-tools.js.map +1 -1
  56. package/dist/tools/index.js +55 -53
  57. package/dist/tools/index.js.map +1 -1
  58. package/dist/tools/lsp-tool.js +2 -2
  59. package/dist/tools/lsp-tool.js.map +1 -1
  60. package/dist/tools/mcp-resource-tools.d.ts +2 -1
  61. package/dist/tools/mcp-resource-tools.d.ts.map +1 -1
  62. package/dist/tools/mcp-resource-tools.js +44 -27
  63. package/dist/tools/mcp-resource-tools.js.map +1 -1
  64. package/dist/tools/plan-tools.d.ts +3 -2
  65. package/dist/tools/plan-tools.d.ts.map +1 -1
  66. package/dist/tools/plan-tools.js +24 -21
  67. package/dist/tools/plan-tools.js.map +1 -1
  68. package/dist/tools/send-message.d.ts +5 -4
  69. package/dist/tools/send-message.d.ts.map +1 -1
  70. package/dist/tools/send-message.js +24 -21
  71. package/dist/tools/send-message.js.map +1 -1
  72. package/dist/tools/session-state.d.ts +4 -0
  73. package/dist/tools/session-state.d.ts.map +1 -0
  74. package/dist/tools/session-state.js +9 -0
  75. package/dist/tools/session-state.js.map +1 -0
  76. package/dist/tools/task-tools.d.ts +19 -4
  77. package/dist/tools/task-tools.d.ts.map +1 -1
  78. package/dist/tools/task-tools.js +119 -31
  79. package/dist/tools/task-tools.js.map +1 -1
  80. package/dist/tools/team-tools.d.ts +7 -3
  81. package/dist/tools/team-tools.d.ts.map +1 -1
  82. package/dist/tools/team-tools.js +26 -22
  83. package/dist/tools/team-tools.js.map +1 -1
  84. package/dist/tools/todo-tool.d.ts +3 -2
  85. package/dist/tools/todo-tool.d.ts.map +1 -1
  86. package/dist/tools/todo-tool.js +24 -21
  87. package/dist/tools/todo-tool.js.map +1 -1
  88. package/dist/tools/tool-search.d.ts +2 -1
  89. package/dist/tools/tool-search.d.ts.map +1 -1
  90. package/dist/tools/tool-search.js +14 -13
  91. package/dist/tools/tool-search.js.map +1 -1
  92. package/dist/tools/update-goal.d.ts +9 -7
  93. package/dist/tools/update-goal.d.ts.map +1 -1
  94. package/dist/tools/update-goal.js +20 -21
  95. package/dist/tools/update-goal.js.map +1 -1
  96. package/dist/tools/worktree-tools.d.ts +0 -6
  97. package/dist/tools/worktree-tools.d.ts.map +1 -1
  98. package/dist/tools/worktree-tools.js +14 -6
  99. package/dist/tools/worktree-tools.js.map +1 -1
  100. package/dist/types.d.ts +31 -0
  101. package/dist/types.d.ts.map +1 -1
  102. package/dist/utils/compact.d.ts +5 -1
  103. package/dist/utils/compact.d.ts.map +1 -1
  104. package/dist/utils/compact.js +11 -1
  105. package/dist/utils/compact.js.map +1 -1
  106. package/dist/utils/permissions.d.ts +7 -0
  107. package/dist/utils/permissions.d.ts.map +1 -0
  108. package/dist/utils/permissions.js +39 -0
  109. package/dist/utils/permissions.js.map +1 -0
  110. package/dist/utils/retry.d.ts.map +1 -1
  111. package/dist/utils/retry.js +17 -2
  112. package/dist/utils/retry.js.map +1 -1
  113. package/docs/background-tasks.md +62 -0
  114. package/docs/runtime-progress.md +63 -0
  115. package/package.json +9 -5
@@ -1,3 +1,4 @@
1
+ import { type SessionState } from './session-state.js';
1
2
  /**
2
3
  * Team Management Tools
3
4
  *
@@ -17,18 +18,21 @@ export interface Team {
17
18
  createdAt: string;
18
19
  status: 'active' | 'disbanded';
19
20
  }
21
+ /**
22
+ * Team state is owned by the supplied session.
23
+ */
20
24
  /**
21
25
  * Get all teams.
22
26
  */
23
- export declare function getAllTeams(): Team[];
27
+ export declare function getAllTeams(sessionState?: SessionState): Team[];
24
28
  /**
25
29
  * Get a team by ID.
26
30
  */
27
- export declare function getTeam(id: string): Team | undefined;
31
+ export declare function getTeam(id: string, sessionState?: SessionState): Team | undefined;
28
32
  /**
29
33
  * Clear all teams.
30
34
  */
31
- export declare function clearTeams(): void;
35
+ export declare function clearTeams(sessionState?: SessionState): void;
32
36
  export declare const TeamCreateTool: ToolDefinition;
33
37
  export declare const TeamDeleteTool: ToolDefinition;
34
38
  //# sourceMappingURL=team-tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"team-tools.d.ts","sourceRoot":"","sources":["../../src/tools/team-tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,aAAa,CAAA;AAE7D;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,QAAQ,GAAG,WAAW,CAAA;CAC/B;AAQD;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,EAAE,CAEpC;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAEpD;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,IAAI,CAGjC;AAMD,eAAO,MAAM,cAAc,EAAE,cAsC5B,CAAA;AAMD,eAAO,MAAM,cAAc,EAAE,cA6B5B,CAAA"}
1
+ {"version":3,"file":"team-tools.d.ts","sourceRoot":"","sources":["../../src/tools/team-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACpE;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAA2B,MAAM,aAAa,CAAA;AAE1E;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,QAAQ,GAAG,WAAW,CAAA;CAC/B;AAED;;GAEG;AAEH;;GAEG;AACH,wBAAgB,WAAW,CAAC,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,EAAE,CAG/D;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,CAGjF;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,CAI5D;AAMD,eAAO,MAAM,cAAc,EAAE,cAuC5B,CAAA;AAMD,eAAO,MAAM,cAAc,EAAE,cA8B5B,CAAA"}
@@ -1,32 +1,28 @@
1
+ import { sessionStore } from './session-state.js';
1
2
  /**
2
- * Team Management Tools
3
- *
4
- * TeamCreate, TeamDelete - Multi-agent team coordination.
5
- * Manages team composition, task lists, and inter-agent messaging.
3
+ * Team state is owned by the supplied session.
6
4
  */
7
- /**
8
- * Global team store.
9
- */
10
- const teamStore = new Map();
11
- let teamCounter = 0;
12
5
  /**
13
6
  * Get all teams.
14
7
  */
15
- export function getAllTeams() {
16
- return Array.from(teamStore.values());
8
+ export function getAllTeams(sessionState) {
9
+ const state = getState(sessionState);
10
+ return Array.from(state.teamStore.values());
17
11
  }
18
12
  /**
19
13
  * Get a team by ID.
20
14
  */
21
- export function getTeam(id) {
22
- return teamStore.get(id);
15
+ export function getTeam(id, sessionState) {
16
+ const state = getState(sessionState);
17
+ return state.teamStore.get(id);
23
18
  }
24
19
  /**
25
20
  * Clear all teams.
26
21
  */
27
- export function clearTeams() {
28
- teamStore.clear();
29
- teamCounter = 0;
22
+ export function clearTeams(sessionState) {
23
+ const state = getState(sessionState);
24
+ state.teamStore.clear();
25
+ state.teamCounter = 0;
30
26
  }
31
27
  // ============================================================================
32
28
  // TeamCreateTool
@@ -51,8 +47,9 @@ export const TeamCreateTool = {
51
47
  isConcurrencySafe: () => false,
52
48
  isEnabled: () => true,
53
49
  async prompt() { return 'Create a team for multi-agent coordination.'; },
54
- async call(input) {
55
- const id = `team_${++teamCounter}`;
50
+ async call(input, context) {
51
+ const state = getState(context?.sessionState);
52
+ const id = `team_${++state.teamCounter}`;
56
53
  const team = {
57
54
  id,
58
55
  name: input.name,
@@ -61,7 +58,7 @@ export const TeamCreateTool = {
61
58
  createdAt: new Date().toISOString(),
62
59
  status: 'active',
63
60
  };
64
- teamStore.set(id, team);
61
+ state.teamStore.set(id, team);
65
62
  return {
66
63
  type: 'tool_result',
67
64
  tool_use_id: '',
@@ -86,13 +83,14 @@ export const TeamDeleteTool = {
86
83
  isConcurrencySafe: () => false,
87
84
  isEnabled: () => true,
88
85
  async prompt() { return 'Delete/disband a team.'; },
89
- async call(input) {
90
- const team = teamStore.get(input.id);
86
+ async call(input, context) {
87
+ const state = getState(context?.sessionState);
88
+ const team = state.teamStore.get(input.id);
91
89
  if (!team) {
92
90
  return { type: 'tool_result', tool_use_id: '', content: `Team not found: ${input.id}`, is_error: true };
93
91
  }
94
92
  team.status = 'disbanded';
95
- teamStore.delete(input.id);
93
+ state.teamStore.delete(input.id);
96
94
  return {
97
95
  type: 'tool_result',
98
96
  tool_use_id: '',
@@ -100,4 +98,10 @@ export const TeamDeleteTool = {
100
98
  };
101
99
  },
102
100
  };
101
+ function getState(sessionState) {
102
+ return sessionStore(sessionState, 'team-tools', () => ({
103
+ teamStore: new Map(),
104
+ teamCounter: 0,
105
+ }));
106
+ }
103
107
  //# sourceMappingURL=team-tools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"team-tools.js","sourceRoot":"","sources":["../../src/tools/team-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"team-tools.js","sourceRoot":"","sources":["../../src/tools/team-tools.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { type SessionState } from './session-state.js';
1
2
  /**
2
3
  * TodoWriteTool - Session todo/checklist management
3
4
  *
@@ -13,10 +14,10 @@ export interface TodoItem {
13
14
  /**
14
15
  * Get all todos.
15
16
  */
16
- export declare function getTodos(): TodoItem[];
17
+ export declare function getTodos(sessionState?: SessionState): TodoItem[];
17
18
  /**
18
19
  * Clear all todos.
19
20
  */
20
- export declare function clearTodos(): void;
21
+ export declare function clearTodos(sessionState?: SessionState): void;
21
22
  export declare const TodoWriteTool: ToolDefinition;
22
23
  //# sourceMappingURL=todo-tool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"todo-tool.d.ts","sourceRoot":"","sources":["../../src/tools/todo-tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,aAAa,CAAA;AAE7D,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,OAAO,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAA;CACrC;AAKD;;GAEG;AACH,wBAAgB,QAAQ,IAAI,QAAQ,EAAE,CAErC;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,IAAI,CAGjC;AAED,eAAO,MAAM,aAAa,EAAE,cA8E3B,CAAA"}
1
+ {"version":3,"file":"todo-tool.d.ts","sourceRoot":"","sources":["../../src/tools/todo-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACpE;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAA2B,MAAM,aAAa,CAAA;AAE1E,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,OAAO,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAA;CACrC;AAGD;;GAEG;AACH,wBAAgB,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,GAAG,QAAQ,EAAE,CAGhE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,CAI5D;AAED,eAAO,MAAM,aAAa,EAAE,cA+E3B,CAAA"}
@@ -1,22 +1,18 @@
1
- /**
2
- * TodoWriteTool - Session todo/checklist management
3
- *
4
- * Manages a session-scoped todo list for tracking work items.
5
- */
6
- const todoList = [];
7
- let todoCounter = 0;
1
+ import { sessionStore } from './session-state.js';
8
2
  /**
9
3
  * Get all todos.
10
4
  */
11
- export function getTodos() {
12
- return [...todoList];
5
+ export function getTodos(sessionState) {
6
+ const state = getState(sessionState);
7
+ return [...state.todoList];
13
8
  }
14
9
  /**
15
10
  * Clear all todos.
16
11
  */
17
- export function clearTodos() {
18
- todoList.length = 0;
19
- todoCounter = 0;
12
+ export function clearTodos(sessionState) {
13
+ const state = getState(sessionState);
14
+ state.todoList.length = 0;
15
+ state.todoCounter = 0;
20
16
  }
21
17
  export const TodoWriteTool = {
22
18
  name: 'TodoWrite',
@@ -43,23 +39,24 @@ export const TodoWriteTool = {
43
39
  isConcurrencySafe: () => true,
44
40
  isEnabled: () => true,
45
41
  async prompt() { return 'Manage session todo list.'; },
46
- async call(input) {
42
+ async call(input, context) {
43
+ const state = getState(context?.sessionState);
47
44
  switch (input.action) {
48
45
  case 'add': {
49
46
  if (!input.text) {
50
47
  return { type: 'tool_result', tool_use_id: '', content: 'text required', is_error: true };
51
48
  }
52
49
  const item = {
53
- id: ++todoCounter,
50
+ id: ++state.todoCounter,
54
51
  text: input.text,
55
52
  done: false,
56
53
  priority: input.priority,
57
54
  };
58
- todoList.push(item);
55
+ state.todoList.push(item);
59
56
  return { type: 'tool_result', tool_use_id: '', content: `Todo added: #${item.id} "${item.text}"` };
60
57
  }
61
58
  case 'toggle': {
62
- const item = todoList.find(t => t.id === input.id);
59
+ const item = state.todoList.find(t => t.id === input.id);
63
60
  if (!item) {
64
61
  return { type: 'tool_result', tool_use_id: '', content: `Todo #${input.id} not found`, is_error: true };
65
62
  }
@@ -67,22 +64,22 @@ export const TodoWriteTool = {
67
64
  return { type: 'tool_result', tool_use_id: '', content: `Todo #${item.id} ${item.done ? 'completed' : 'reopened'}` };
68
65
  }
69
66
  case 'remove': {
70
- const idx = todoList.findIndex(t => t.id === input.id);
67
+ const idx = state.todoList.findIndex(t => t.id === input.id);
71
68
  if (idx === -1) {
72
69
  return { type: 'tool_result', tool_use_id: '', content: `Todo #${input.id} not found`, is_error: true };
73
70
  }
74
- todoList.splice(idx, 1);
71
+ state.todoList.splice(idx, 1);
75
72
  return { type: 'tool_result', tool_use_id: '', content: `Todo #${input.id} removed` };
76
73
  }
77
74
  case 'list': {
78
- if (todoList.length === 0) {
75
+ if (state.todoList.length === 0) {
79
76
  return { type: 'tool_result', tool_use_id: '', content: 'No todos.' };
80
77
  }
81
- const lines = todoList.map(t => `${t.done ? '[x]' : '[ ]'} #${t.id} ${t.text}${t.priority ? ` (${t.priority})` : ''}`);
78
+ const lines = state.todoList.map(t => `${t.done ? '[x]' : '[ ]'} #${t.id} ${t.text}${t.priority ? ` (${t.priority})` : ''}`);
82
79
  return { type: 'tool_result', tool_use_id: '', content: lines.join('\n') };
83
80
  }
84
81
  case 'clear': {
85
- todoList.length = 0;
82
+ state.todoList.length = 0;
86
83
  return { type: 'tool_result', tool_use_id: '', content: 'All todos cleared.' };
87
84
  }
88
85
  default:
@@ -90,4 +87,10 @@ export const TodoWriteTool = {
90
87
  }
91
88
  },
92
89
  };
90
+ function getState(sessionState) {
91
+ return sessionStore(sessionState, 'todo-tool', () => ({
92
+ todoList: [],
93
+ todoCounter: 0,
94
+ }));
95
+ }
93
96
  //# sourceMappingURL=todo-tool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"todo-tool.js","sourceRoot":"","sources":["../../src/tools/todo-tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"todo-tool.js","sourceRoot":"","sources":["../../src/tools/todo-tool.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { type SessionState } from './session-state.js';
1
2
  /**
2
3
  * ToolSearchTool - Discover deferred/lazy-loaded tools
3
4
  *
@@ -8,6 +9,6 @@ import type { ToolDefinition } from '../types.js';
8
9
  /**
9
10
  * Set deferred tools available for search.
10
11
  */
11
- export declare function setDeferredTools(tools: ToolDefinition[]): void;
12
+ export declare function setDeferredTools(tools: ToolDefinition[], sessionState?: SessionState): void;
12
13
  export declare const ToolSearchTool: ToolDefinition;
13
14
  //# sourceMappingURL=tool-search.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool-search.d.ts","sourceRoot":"","sources":["../../src/tools/tool-search.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,aAAa,CAAA;AAK7D;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,IAAI,CAE9D;AAED,eAAO,MAAM,cAAc,EAAE,cAmE5B,CAAA"}
1
+ {"version":3,"file":"tool-search.d.ts","sourceRoot":"","sources":["../../src/tools/tool-search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACpE;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAA2B,MAAM,aAAa,CAAA;AAI1E;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,CAG3F;AAED,eAAO,MAAM,cAAc,EAAE,cAoE5B,CAAA"}
@@ -1,16 +1,11 @@
1
- /**
2
- * ToolSearchTool - Discover deferred/lazy-loaded tools
3
- *
4
- * Allows the model to search for tools that haven't been loaded yet.
5
- * Supports keyword search and exact name selection.
6
- */
1
+ import { sessionStore } from './session-state.js';
7
2
  // Registry of deferred tools (set by the agent)
8
- let deferredTools = [];
9
3
  /**
10
4
  * Set deferred tools available for search.
11
5
  */
12
- export function setDeferredTools(tools) {
13
- deferredTools = tools;
6
+ export function setDeferredTools(tools, sessionState) {
7
+ const state = getState(sessionState);
8
+ state.deferredTools = tools;
14
9
  }
15
10
  export const ToolSearchTool = {
16
11
  name: 'ToolSearch',
@@ -33,9 +28,10 @@ export const ToolSearchTool = {
33
28
  isConcurrencySafe: () => true,
34
29
  isEnabled: () => true,
35
30
  async prompt() { return 'Search for available tools.'; },
36
- async call(input) {
31
+ async call(input, context) {
32
+ const state = getState(context?.sessionState);
37
33
  const { query, max_results = 5 } = input;
38
- if (deferredTools.length === 0) {
34
+ if (state.deferredTools.length === 0) {
39
35
  return {
40
36
  type: 'tool_result',
41
37
  tool_use_id: '',
@@ -46,12 +42,12 @@ export const ToolSearchTool = {
46
42
  if (query.startsWith('select:')) {
47
43
  // Exact name selection
48
44
  const names = query.slice(7).split(',').map((n) => n.trim());
49
- matches = deferredTools.filter(t => names.includes(t.name));
45
+ matches = state.deferredTools.filter(t => names.includes(t.name));
50
46
  }
51
47
  else {
52
48
  // Keyword search
53
49
  const keywords = query.toLowerCase().split(/\s+/);
54
- matches = deferredTools
50
+ matches = state.deferredTools
55
51
  .filter(t => {
56
52
  const searchText = `${t.name} ${t.description}`.toLowerCase();
57
53
  return keywords.some((kw) => searchText.includes(kw));
@@ -73,4 +69,9 @@ export const ToolSearchTool = {
73
69
  };
74
70
  },
75
71
  };
72
+ function getState(sessionState) {
73
+ return sessionStore(sessionState, 'tool-search', () => ({
74
+ deferredTools: [],
75
+ }));
76
+ }
76
77
  //# sourceMappingURL=tool-search.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool-search.js","sourceRoot":"","sources":["../../src/tools/tool-search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-search.js","sourceRoot":"","sources":["../../src/tools/tool-search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAqB,MAAM,oBAAoB,CAAA;AAUpE,gDAAgD;AAEhD;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAuB,EAAE,YAA2B;IACnF,MAAM,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAA;IACpC,KAAK,CAAC,aAAa,GAAG,KAAK,CAAA;AAC7B,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAmB;IAC5C,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,mHAAmH;IAChI,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,6EAA6E;aAC3F;YACD,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,wCAAwC;aACtD;SACF;QACD,QAAQ,EAAE,CAAC,OAAO,CAAC;KACpB;IACD,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI;IACtB,iBAAiB,EAAE,GAAG,EAAE,CAAC,IAAI;IAC7B,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI;IACrB,KAAK,CAAC,MAAM,KAAK,OAAO,6BAA6B,CAAA,CAAC,CAAC;IACvD,KAAK,CAAC,IAAI,CAAC,KAAU,EAAE,OAAqB;QAC1C,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;QAC7C,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,CAAC,EAAE,GAAG,KAAK,CAAA;QAExC,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrC,OAAO;gBACL,IAAI,EAAE,aAAa;gBACnB,WAAW,EAAE,EAAE;gBACf,OAAO,EAAE,8BAA8B;aACxC,CAAA;QACH,CAAC;QAED,IAAI,OAAyB,CAAA;QAE7B,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAChC,uBAAuB;YACvB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;YACpE,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QACnE,CAAC;aAAM,CAAC;YACN,iBAAiB;YACjB,MAAM,QAAQ,GAAa,KAAK,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YAC3D,OAAO,GAAG,KAAK,CAAC,aAAa;iBAC1B,MAAM,CAAC,CAAC,CAAC,EAAE;gBACV,MAAM,UAAU,GAAG,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,CAAA;gBAC7D,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAA;YAC/D,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAA;QAC1B,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO;gBACL,IAAI,EAAE,aAAa;gBACnB,WAAW,EAAE,EAAE;gBACf,OAAO,EAAE,4BAA4B,KAAK,GAAG;aAC9C,CAAA;QACH,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAC5B,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAC9C,CAAA;QAED,OAAO;YACL,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,EAAE;YACf,OAAO,EAAE,SAAS,OAAO,CAAC,MAAM,cAAc,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SACjE,CAAA;IACH,CAAC;CACF,CAAA;AAED,SAAS,QAAQ,CAAC,YAA2B;IAC3C,OAAO,YAAY,CAAC,YAAY,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC;QACtD,aAAa,EAAE,EAAsB;KACtC,CAAC,CAAC,CAAA;AACL,CAAC"}
@@ -7,9 +7,9 @@
7
7
  * keep running another round.
8
8
  *
9
9
  * Because the engine faithfully executes tools and feeds the tool_result back
10
- * to the model, calling this tool both (a) gives the model a structured way to
11
- * declare task state, and (b) lets the driver read that state from the shared
12
- * module-level record below.
10
+ * to the model, calling this tool gives the model a structured way to declare task
11
+ * state and lets the driver read the explicit per-run report. Calls omitting
12
+ * a report retain the legacy module-level state.
13
13
  */
14
14
  import type { ToolDefinition } from '../types.js';
15
15
  /** Reported goal status by the latest update_goal call. */
@@ -19,17 +19,19 @@ export interface GoalReport {
19
19
  /** Increments on every report so callers can detect "no new report". */
20
20
  revision: number;
21
21
  }
22
+ /** Create an independent record for a goal run. */
23
+ export declare function createGoalState(): GoalReport;
22
24
  /** Reset the goal record (call at the start of a runGoal). */
23
- export declare function resetGoalState(revision?: number): void;
25
+ export declare function resetGoalState(revision?: number, state?: GoalReport): void;
24
26
  /** Read the latest reported goal state without consuming it. */
25
- export declare function getGoalState(): Readonly<GoalReport>;
27
+ export declare function getGoalState(state?: GoalReport): Readonly<GoalReport>;
26
28
  /** Whether a report with this revision has been recorded (i.e. model spoke). */
27
- export declare function hasGoalReport(revision: number): boolean;
29
+ export declare function hasGoalReport(revision: number, state?: GoalReport): boolean;
28
30
  /**
29
31
  * The internal update_goal tool definition.
30
32
  * Schema: { goal_status, summary?, error? }
31
33
  */
32
- export declare function createUpdateGoalTool(): ToolDefinition;
34
+ export declare function createUpdateGoalTool(state?: GoalReport): ToolDefinition;
33
35
  /**
34
36
  * Build the system-prompt appendix that instructs the model to work toward a
35
37
  * goal and to call update_goal when finished or blocked.
@@ -1 +1 @@
1
- {"version":3,"file":"update-goal.d.ts","sourceRoot":"","sources":["../../src/tools/update-goal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEjD,2DAA2D;AAC3D,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,aAAa,CAAA;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,wEAAwE;IACxE,QAAQ,EAAE,MAAM,CAAA;CACjB;AASD,8DAA8D;AAC9D,wBAAgB,cAAc,CAAC,QAAQ,SAAI,GAAG,IAAI,CAIjD;AAED,gEAAgE;AAChE,wBAAgB,YAAY,IAAI,QAAQ,CAAC,UAAU,CAAC,CAEnD;AAED,gFAAgF;AAChF,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,cAAc,CAmDrD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAgB7E"}
1
+ {"version":3,"file":"update-goal.d.ts","sourceRoot":"","sources":["../../src/tools/update-goal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEjD,2DAA2D;AAC3D,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,aAAa,CAAA;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,wEAAwE;IACxE,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,mDAAmD;AACnD,wBAAgB,eAAe,IAAI,UAAU,CAE5C;AAGD,8DAA8D;AAC9D,wBAAgB,cAAc,CAAC,QAAQ,SAAI,EAAE,KAAK,GAAE,UAAsB,GAAG,IAAI,CAIhF;AAED,gEAAgE;AAChE,wBAAgB,YAAY,CAAC,KAAK,GAAE,UAAsB,GAAG,QAAQ,CAAC,UAAU,CAAC,CAEhF;AAED,gFAAgF;AAChF,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,GAAE,UAAsB,GAAG,OAAO,CAEtF;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,GAAE,UAAsB,GAAG,cAAc,CAmDlF;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAgB7E"}
@@ -7,35 +7,34 @@
7
7
  * keep running another round.
8
8
  *
9
9
  * Because the engine faithfully executes tools and feeds the tool_result back
10
- * to the model, calling this tool both (a) gives the model a structured way to
11
- * declare task state, and (b) lets the driver read that state from the shared
12
- * module-level record below.
10
+ * to the model, calling this tool gives the model a structured way to declare task
11
+ * state and lets the driver read the explicit per-run report. Calls omitting
12
+ * a report retain the legacy module-level state.
13
13
  */
14
- /** Module-level recorded goal state shared with the driver. */
15
- const goalState = {
16
- status: 'in_progress',
17
- summary: undefined,
18
- revision: 0,
19
- };
14
+ /** Create an independent record for a goal run. */
15
+ export function createGoalState() {
16
+ return { status: 'in_progress', summary: undefined, revision: 0 };
17
+ }
18
+ const goalState = createGoalState();
20
19
  /** Reset the goal record (call at the start of a runGoal). */
21
- export function resetGoalState(revision = 0) {
22
- goalState.status = 'in_progress';
23
- goalState.summary = undefined;
24
- goalState.revision = revision;
20
+ export function resetGoalState(revision = 0, state = goalState) {
21
+ state.status = 'in_progress';
22
+ state.summary = undefined;
23
+ state.revision = revision;
25
24
  }
26
25
  /** Read the latest reported goal state without consuming it. */
27
- export function getGoalState() {
28
- return { ...goalState };
26
+ export function getGoalState(state = goalState) {
27
+ return { ...state };
29
28
  }
30
29
  /** Whether a report with this revision has been recorded (i.e. model spoke). */
31
- export function hasGoalReport(revision) {
32
- return goalState.revision > revision;
30
+ export function hasGoalReport(revision, state = goalState) {
31
+ return state.revision > revision;
33
32
  }
34
33
  /**
35
34
  * The internal update_goal tool definition.
36
35
  * Schema: { goal_status, summary?, error? }
37
36
  */
38
- export function createUpdateGoalTool() {
37
+ export function createUpdateGoalTool(state = goalState) {
39
38
  return {
40
39
  name: 'update_goal',
41
40
  description: 'Report the status of the goal you are working toward. Call this when the goal is COMPLETED (goal_status=complete), when you are BLOCKED and cannot make further progress (goal_status=blocked), or to record progress. You should call this at least once before stopping. Provide a concise summary of what was accomplished.',
@@ -69,9 +68,9 @@ export function createUpdateGoalTool() {
69
68
  : input?.goal_status === 'blocked'
70
69
  ? 'blocked'
71
70
  : 'in_progress';
72
- goalState.status = status;
73
- goalState.summary = input?.summary ?? input?.error ?? input?.summary ?? undefined;
74
- goalState.revision++;
71
+ state.status = status;
72
+ state.summary = input?.summary ?? input?.error ?? input?.summary ?? undefined;
73
+ state.revision++;
75
74
  const ack = status === 'complete'
76
75
  ? 'Goal reported complete. Well done.'
77
76
  : status === 'blocked'
@@ -1 +1 @@
1
- {"version":3,"file":"update-goal.js","sourceRoot":"","sources":["../../src/tools/update-goal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAYH,+DAA+D;AAC/D,MAAM,SAAS,GAAe;IAC5B,MAAM,EAAE,aAAa;IACrB,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,CAAC;CACZ,CAAA;AAED,8DAA8D;AAC9D,MAAM,UAAU,cAAc,CAAC,QAAQ,GAAG,CAAC;IACzC,SAAS,CAAC,MAAM,GAAG,aAAa,CAAA;IAChC,SAAS,CAAC,OAAO,GAAG,SAAS,CAAA;IAC7B,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAA;AAC/B,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,YAAY;IAC1B,OAAO,EAAE,GAAG,SAAS,EAAE,CAAA;AACzB,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,OAAO,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAA;AACtC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,WAAW,EACT,gUAAgU;QAClU,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,aAAa,CAAC;oBAC5C,WAAW,EAAE,8DAA8D;iBAC5E;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,0DAA0D;iBACxE;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,0CAA0C;iBACxD;aACF;YACD,QAAQ,EAAE,CAAC,aAAa,CAAC;SAC1B;QACD,UAAU,EAAE,GAAG,EAAE,CAAC,KAAK;QACvB,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI;QACrB,KAAK,CAAC,MAAM;YACV,OAAO,uHAAuH,CAAA;QAChI,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,KAAU;YACnB,MAAM,MAAM,GAAG,KAAK,EAAE,WAAW,KAAK,UAAU;gBAC9C,CAAC,CAAC,UAAU;gBACZ,CAAC,CAAC,KAAK,EAAE,WAAW,KAAK,SAAS;oBAChC,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,aAAa,CAAA;YACnB,SAAS,CAAC,MAAM,GAAG,MAAM,CAAA;YACzB,SAAS,CAAC,OAAO,GAAG,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,KAAK,IAAI,KAAK,EAAE,OAAO,IAAI,SAAS,CAAA;YACjF,SAAS,CAAC,QAAQ,EAAE,CAAA;YACpB,MAAM,GAAG,GACP,MAAM,KAAK,UAAU;gBACnB,CAAC,CAAC,oCAAoC;gBACtC,CAAC,CAAC,MAAM,KAAK,SAAS;oBACpB,CAAC,CAAC,gDAAgD;oBAClD,CAAC,CAAC,sBAAsB,CAAA;YAC9B,OAAO;gBACL,IAAI,EAAE,aAAa;gBACnB,WAAW,EAAE,EAAE;gBACf,OAAO,EAAE,GAAG;aACb,CAAA;QACH,CAAC;KACF,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAY,EAAE,SAAiB;IACnE,OAAO;QACL,EAAE;QACF,oBAAoB;QACpB,4CAA4C;QAC5C,EAAE;QACF,KAAK;QACL,IAAI;QACJ,KAAK;QACL,EAAE;QACF,2EAA2E;QAC3E,qHAAqH;QACrH,6FAA6F;QAC7F,wBAAwB,SAAS,2DAA2D;QAC5F,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC"}
1
+ {"version":3,"file":"update-goal.js","sourceRoot":"","sources":["../../src/tools/update-goal.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,3 @@
1
- /**
2
- * Git Worktree Tools
3
- *
4
- * EnterWorktree / ExitWorktree - Isolated git worktree environments
5
- * for parallel work without affecting the main working tree.
6
- */
7
1
  import type { ToolDefinition } from '../types.js';
8
2
  export declare const EnterWorktreeTool: ToolDefinition;
9
3
  export declare const ExitWorktreeTool: ToolDefinition;
@@ -1 +1 @@
1
- {"version":3,"file":"worktree-tools.d.ts","sourceRoot":"","sources":["../../src/tools/worktree-tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,aAAa,CAAA;AAK7D,eAAO,MAAM,iBAAiB,EAAE,cAwD/B,CAAA;AAED,eAAO,MAAM,gBAAgB,EAAE,cAkE9B,CAAA"}
1
+ {"version":3,"file":"worktree-tools.d.ts","sourceRoot":"","sources":["../../src/tools/worktree-tools.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,cAAc,EAA2B,MAAM,aAAa,CAAA;AAI1E,eAAO,MAAM,iBAAiB,EAAE,cAyD/B,CAAA;AAED,eAAO,MAAM,gBAAgB,EAAE,cAmE9B,CAAA"}
@@ -1,3 +1,4 @@
1
+ import { sessionStore } from './session-state.js';
1
2
  /**
2
3
  * Git Worktree Tools
3
4
  *
@@ -5,9 +6,9 @@
5
6
  * for parallel work without affecting the main working tree.
6
7
  */
7
8
  import { execSync } from 'child_process';
9
+ import { randomUUID } from 'node:crypto';
8
10
  import { join } from 'path';
9
11
  // Track active worktrees
10
- const activeWorktrees = new Map();
11
12
  export const EnterWorktreeTool = {
12
13
  name: 'EnterWorktree',
13
14
  description: 'Create an isolated git worktree for parallel work. The agent will work in the worktree without affecting the main working tree.',
@@ -23,6 +24,7 @@ export const EnterWorktreeTool = {
23
24
  isEnabled: () => true,
24
25
  async prompt() { return 'Create an isolated git worktree for parallel work.'; },
25
26
  async call(input, context) {
27
+ const state = getState(context.sessionState);
26
28
  try {
27
29
  // Check if we're in a git repo
28
30
  execSync('git rev-parse --git-dir', { cwd: context.cwd, encoding: 'utf-8' });
@@ -40,8 +42,8 @@ export const EnterWorktreeTool = {
40
42
  cwd: context.cwd,
41
43
  encoding: 'utf-8',
42
44
  });
43
- const id = crypto.randomUUID();
44
- activeWorktrees.set(id, {
45
+ const id = randomUUID();
46
+ state.activeWorktrees.set(id, {
45
47
  path: worktreePath,
46
48
  branch,
47
49
  originalCwd: context.cwd,
@@ -81,8 +83,9 @@ export const ExitWorktreeTool = {
81
83
  isConcurrencySafe: () => false,
82
84
  isEnabled: () => true,
83
85
  async prompt() { return 'Exit a git worktree.'; },
84
- async call(input) {
85
- const worktree = activeWorktrees.get(input.id);
86
+ async call(input, context) {
87
+ const state = getState(context?.sessionState);
88
+ const worktree = state.activeWorktrees.get(input.id);
86
89
  if (!worktree) {
87
90
  return {
88
91
  type: 'tool_result',
@@ -110,7 +113,7 @@ export const ExitWorktreeTool = {
110
113
  // Branch might have commits
111
114
  }
112
115
  }
113
- activeWorktrees.delete(input.id);
116
+ state.activeWorktrees.delete(input.id);
114
117
  return {
115
118
  type: 'tool_result',
116
119
  tool_use_id: '',
@@ -127,4 +130,9 @@ export const ExitWorktreeTool = {
127
130
  }
128
131
  },
129
132
  };
133
+ function getState(sessionState) {
134
+ return sessionStore(sessionState, 'worktree-tools', () => ({
135
+ activeWorktrees: new Map(),
136
+ }));
137
+ }
130
138
  //# sourceMappingURL=worktree-tools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"worktree-tools.js","sourceRoot":"","sources":["../../src/tools/worktree-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worktree-tools.js","sourceRoot":"","sources":["../../src/tools/worktree-tools.ts"],"names":[],"mappings":"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"}