@superblocksteam/vite-plugin-file-sync 2.0.51-next.1 → 2.0.52-next.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 (214) hide show
  1. package/dist/ai-service/agent/prompts/build-base-system-prompt.d.ts.map +1 -1
  2. package/dist/ai-service/agent/prompts/build-base-system-prompt.js +36 -7
  3. package/dist/ai-service/agent/prompts/build-base-system-prompt.js.map +1 -1
  4. package/dist/ai-service/agent/subagents/apis/generate-api-source.d.ts +28 -3
  5. package/dist/ai-service/agent/subagents/apis/generate-api-source.d.ts.map +1 -1
  6. package/dist/ai-service/agent/subagents/apis/generate-api-source.js +102 -8
  7. package/dist/ai-service/agent/subagents/apis/generate-api-source.js.map +1 -1
  8. package/dist/ai-service/agent/subagents/apis/prompt-builder.d.ts +1 -1
  9. package/dist/ai-service/agent/subagents/apis/prompt-builder.js +2 -2
  10. package/dist/ai-service/agent/subagents/apis/state.d.ts +10 -0
  11. package/dist/ai-service/agent/subagents/apis/state.d.ts.map +1 -1
  12. package/dist/ai-service/agent/subagents/apis/system-prompt.d.ts +1 -1
  13. package/dist/ai-service/agent/subagents/apis/system-prompt.d.ts.map +1 -1
  14. package/dist/ai-service/agent/subagents/apis/system-prompt.js +294 -5
  15. package/dist/ai-service/agent/subagents/apis/system-prompt.js.map +1 -1
  16. package/dist/ai-service/agent/tools/apis/build-api.d.ts +2 -0
  17. package/dist/ai-service/agent/tools/apis/build-api.d.ts.map +1 -1
  18. package/dist/ai-service/agent/tools/apis/build-api.js +96 -13
  19. package/dist/ai-service/agent/tools/apis/build-api.js.map +1 -1
  20. package/dist/ai-service/agent/tools/apis/finalize-api.d.ts.map +1 -1
  21. package/dist/ai-service/agent/tools/apis/finalize-api.js +13 -4
  22. package/dist/ai-service/agent/tools/apis/finalize-api.js.map +1 -1
  23. package/dist/ai-service/agent/tools/build-debug.d.ts.map +1 -1
  24. package/dist/ai-service/agent/tools/build-debug.js +64 -2
  25. package/dist/ai-service/agent/tools/build-debug.js.map +1 -1
  26. package/dist/ai-service/agent/tools/build-edit-file.d.ts.map +1 -1
  27. package/dist/ai-service/agent/tools/build-edit-file.js +12 -0
  28. package/dist/ai-service/agent/tools/build-edit-file.js.map +1 -1
  29. package/dist/ai-service/agent/tools/build-finalize.d.ts.map +1 -1
  30. package/dist/ai-service/agent/tools/build-finalize.js +43 -0
  31. package/dist/ai-service/agent/tools/build-finalize.js.map +1 -1
  32. package/dist/ai-service/agent/tools/build-multi-edit-file.d.ts.map +1 -1
  33. package/dist/ai-service/agent/tools/build-multi-edit-file.js +6 -0
  34. package/dist/ai-service/agent/tools/build-multi-edit-file.js.map +1 -1
  35. package/dist/ai-service/agent/tools/build-write-file.d.ts.map +1 -1
  36. package/dist/ai-service/agent/tools/build-write-file.js +6 -0
  37. package/dist/ai-service/agent/tools/build-write-file.js.map +1 -1
  38. package/dist/ai-service/agent/tools/debug-cache.d.ts +42 -0
  39. package/dist/ai-service/agent/tools/debug-cache.d.ts.map +1 -1
  40. package/dist/ai-service/agent/tools/debug-cache.js +121 -14
  41. package/dist/ai-service/agent/tools/debug-cache.js.map +1 -1
  42. package/dist/ai-service/agent/tools/index.d.ts +1 -0
  43. package/dist/ai-service/agent/tools/index.d.ts.map +1 -1
  44. package/dist/ai-service/agent/tools/index.js +1 -0
  45. package/dist/ai-service/agent/tools/index.js.map +1 -1
  46. package/dist/ai-service/agent/tools/integrations/execute-request.d.ts +9 -5
  47. package/dist/ai-service/agent/tools/integrations/execute-request.d.ts.map +1 -1
  48. package/dist/ai-service/agent/tools/integrations/execute-request.js +105 -7
  49. package/dist/ai-service/agent/tools/integrations/execute-request.js.map +1 -1
  50. package/dist/ai-service/agent/tools/integrations/index.d.ts +1 -1
  51. package/dist/ai-service/agent/tools/integrations/index.d.ts.map +1 -1
  52. package/dist/ai-service/agent/tools/integrations/index.js +1 -1
  53. package/dist/ai-service/agent/tools/integrations/index.js.map +1 -1
  54. package/dist/ai-service/agent/tools/integrations/metadata.d.ts +0 -4
  55. package/dist/ai-service/agent/tools/integrations/metadata.d.ts.map +1 -1
  56. package/dist/ai-service/agent/tools/integrations/metadata.js +0 -44
  57. package/dist/ai-service/agent/tools/integrations/metadata.js.map +1 -1
  58. package/dist/ai-service/agent/tools.d.ts.map +1 -1
  59. package/dist/ai-service/agent/tools.js +45 -10
  60. package/dist/ai-service/agent/tools.js.map +1 -1
  61. package/dist/ai-service/agent/tools2/access-control.d.ts +1 -1
  62. package/dist/ai-service/agent/tools2/access-control.d.ts.map +1 -1
  63. package/dist/ai-service/agent/tools2/access-control.js +13 -5
  64. package/dist/ai-service/agent/tools2/access-control.js.map +1 -1
  65. package/dist/ai-service/agent/tools2/entity-permissions.d.ts +180 -0
  66. package/dist/ai-service/agent/tools2/entity-permissions.d.ts.map +1 -0
  67. package/dist/ai-service/agent/tools2/entity-permissions.js +154 -0
  68. package/dist/ai-service/agent/tools2/entity-permissions.js.map +1 -0
  69. package/dist/ai-service/agent/tools2/example.d.ts.map +1 -1
  70. package/dist/ai-service/agent/tools2/example.js +25 -6
  71. package/dist/ai-service/agent/tools2/example.js.map +1 -1
  72. package/dist/ai-service/agent/tools2/index.d.ts +4 -2
  73. package/dist/ai-service/agent/tools2/index.d.ts.map +1 -1
  74. package/dist/ai-service/agent/tools2/index.js +2 -1
  75. package/dist/ai-service/agent/tools2/index.js.map +1 -1
  76. package/dist/ai-service/agent/tools2/registry.d.ts +47 -0
  77. package/dist/ai-service/agent/tools2/registry.d.ts.map +1 -1
  78. package/dist/ai-service/agent/tools2/registry.js +122 -19
  79. package/dist/ai-service/agent/tools2/registry.js.map +1 -1
  80. package/dist/ai-service/agent/tools2/test-utils.d.ts +7 -0
  81. package/dist/ai-service/agent/tools2/test-utils.d.ts.map +1 -0
  82. package/dist/ai-service/agent/tools2/test-utils.js +10 -0
  83. package/dist/ai-service/agent/tools2/test-utils.js.map +1 -0
  84. package/dist/ai-service/agent/tools2/tools/ask-multi-choice.d.ts.map +1 -1
  85. package/dist/ai-service/agent/tools2/tools/ask-multi-choice.js +17 -9
  86. package/dist/ai-service/agent/tools2/tools/ask-multi-choice.js.map +1 -1
  87. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.d.ts +2 -1
  88. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.d.ts.map +1 -1
  89. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js +192 -27
  90. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js.map +1 -1
  91. package/dist/ai-service/agent/tools2/tools/grep-metadata-ripgrep.d.ts +18 -0
  92. package/dist/ai-service/agent/tools2/tools/grep-metadata-ripgrep.d.ts.map +1 -0
  93. package/dist/ai-service/agent/tools2/tools/grep-metadata-ripgrep.js +837 -0
  94. package/dist/ai-service/agent/tools2/tools/grep-metadata-ripgrep.js.map +1 -0
  95. package/dist/ai-service/agent/tools2/tools/grep-metadata.d.ts +96 -0
  96. package/dist/ai-service/agent/tools2/tools/grep-metadata.d.ts.map +1 -0
  97. package/dist/ai-service/agent/tools2/tools/grep-metadata.js +437 -0
  98. package/dist/ai-service/agent/tools2/tools/grep-metadata.js.map +1 -0
  99. package/dist/ai-service/agent/tools2/types.d.ts +113 -6
  100. package/dist/ai-service/agent/tools2/types.d.ts.map +1 -1
  101. package/dist/ai-service/agent/tools2/types.js +15 -0
  102. package/dist/ai-service/agent/tools2/types.js.map +1 -1
  103. package/dist/ai-service/agent/tools2/utils.d.ts +9 -0
  104. package/dist/ai-service/agent/tools2/utils.d.ts.map +1 -0
  105. package/dist/ai-service/agent/tools2/utils.js +11 -0
  106. package/dist/ai-service/agent/tools2/utils.js.map +1 -0
  107. package/dist/ai-service/chat/chat-session-store.d.ts.map +1 -1
  108. package/dist/ai-service/chat/chat-session-store.js +12 -0
  109. package/dist/ai-service/chat/chat-session-store.js.map +1 -1
  110. package/dist/ai-service/const.d.ts +0 -1
  111. package/dist/ai-service/const.d.ts.map +1 -1
  112. package/dist/ai-service/const.js +0 -1
  113. package/dist/ai-service/const.js.map +1 -1
  114. package/dist/ai-service/index.d.ts +11 -0
  115. package/dist/ai-service/index.d.ts.map +1 -1
  116. package/dist/ai-service/index.js +50 -3
  117. package/dist/ai-service/index.js.map +1 -1
  118. package/dist/ai-service/integrations/metadata-storage/index.d.ts +25 -0
  119. package/dist/ai-service/integrations/metadata-storage/index.d.ts.map +1 -0
  120. package/dist/ai-service/integrations/metadata-storage/index.js +2 -0
  121. package/dist/ai-service/integrations/metadata-storage/index.js.map +1 -0
  122. package/dist/ai-service/integrations/metadata-storage/local.d.ts +53 -0
  123. package/dist/ai-service/integrations/metadata-storage/local.d.ts.map +1 -0
  124. package/dist/ai-service/integrations/metadata-storage/local.js +315 -0
  125. package/dist/ai-service/integrations/metadata-storage/local.js.map +1 -0
  126. package/dist/ai-service/integrations/store.d.ts +17 -14
  127. package/dist/ai-service/integrations/store.d.ts.map +1 -1
  128. package/dist/ai-service/integrations/store.js +124 -131
  129. package/dist/ai-service/integrations/store.js.map +1 -1
  130. package/dist/ai-service/llm/utils.js +1 -1
  131. package/dist/ai-service/llm/utils.js.map +1 -1
  132. package/dist/ai-service/llmobs/helpers.d.ts.map +1 -1
  133. package/dist/ai-service/llmobs/helpers.js +17 -23
  134. package/dist/ai-service/llmobs/helpers.js.map +1 -1
  135. package/dist/ai-service/llmobs/middleware/stream-text.d.ts.map +1 -1
  136. package/dist/ai-service/llmobs/middleware/stream-text.js +1 -0
  137. package/dist/ai-service/llmobs/middleware/stream-text.js.map +1 -1
  138. package/dist/ai-service/state-machine/clark-fsm.d.ts +5 -2
  139. package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
  140. package/dist/ai-service/state-machine/clark-fsm.js +2 -2
  141. package/dist/ai-service/state-machine/clark-fsm.js.map +1 -1
  142. package/dist/ai-service/state-machine/handlers/agent-planning.d.ts.map +1 -1
  143. package/dist/ai-service/state-machine/handlers/agent-planning.js +5 -2
  144. package/dist/ai-service/state-machine/handlers/agent-planning.js.map +1 -1
  145. package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -1
  146. package/dist/ai-service/state-machine/handlers/llm-generating.js +16 -7
  147. package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
  148. package/dist/ai-service/state-machine/handlers/post-processing.d.ts.map +1 -1
  149. package/dist/ai-service/state-machine/handlers/post-processing.js +11 -2
  150. package/dist/ai-service/state-machine/handlers/post-processing.js.map +1 -1
  151. package/dist/ai-service/transform/api-builder/to-sdk-transformer.d.ts.map +1 -1
  152. package/dist/ai-service/transform/api-builder/to-sdk-transformer.js +0 -1
  153. package/dist/ai-service/transform/api-builder/to-sdk-transformer.js.map +1 -1
  154. package/dist/ai-service/types.d.ts +1 -0
  155. package/dist/ai-service/types.d.ts.map +1 -1
  156. package/dist/ai-service/types.js.map +1 -1
  157. package/dist/file-sync-vite-plugin.d.ts.map +1 -1
  158. package/dist/file-sync-vite-plugin.js +12 -0
  159. package/dist/file-sync-vite-plugin.js.map +1 -1
  160. package/dist/file-system-helpers.d.ts.map +1 -1
  161. package/dist/file-system-helpers.js +1 -0
  162. package/dist/file-system-helpers.js.map +1 -1
  163. package/dist/socket-manager.d.ts.map +1 -1
  164. package/dist/socket-manager.js +6 -0
  165. package/dist/socket-manager.js.map +1 -1
  166. package/dist/sync-service/index.d.ts +8 -0
  167. package/dist/sync-service/index.d.ts.map +1 -1
  168. package/dist/sync-service/index.js +15 -0
  169. package/dist/sync-service/index.js.map +1 -1
  170. package/dist/util/open-api.d.ts +2 -46
  171. package/dist/util/open-api.d.ts.map +1 -1
  172. package/dist/util/open-api.js +1 -114
  173. package/dist/util/open-api.js.map +1 -1
  174. package/package.json +7 -7
  175. package/dist/ai-service/integrations/metadata/database.d.ts +0 -15
  176. package/dist/ai-service/integrations/metadata/database.d.ts.map +0 -1
  177. package/dist/ai-service/integrations/metadata/database.js +0 -121
  178. package/dist/ai-service/integrations/metadata/database.js.map +0 -1
  179. package/dist/ai-service/integrations/metadata/databricks.d.ts +0 -25
  180. package/dist/ai-service/integrations/metadata/databricks.d.ts.map +0 -1
  181. package/dist/ai-service/integrations/metadata/databricks.js +0 -174
  182. package/dist/ai-service/integrations/metadata/databricks.js.map +0 -1
  183. package/dist/ai-service/integrations/metadata/graphql-based.d.ts +0 -16
  184. package/dist/ai-service/integrations/metadata/graphql-based.d.ts.map +0 -1
  185. package/dist/ai-service/integrations/metadata/graphql-based.js +0 -383
  186. package/dist/ai-service/integrations/metadata/graphql-based.js.map +0 -1
  187. package/dist/ai-service/integrations/metadata/index.d.ts +0 -9
  188. package/dist/ai-service/integrations/metadata/index.d.ts.map +0 -1
  189. package/dist/ai-service/integrations/metadata/index.js +0 -7
  190. package/dist/ai-service/integrations/metadata/index.js.map +0 -1
  191. package/dist/ai-service/integrations/metadata/llm-utils.d.ts +0 -24
  192. package/dist/ai-service/integrations/metadata/llm-utils.d.ts.map +0 -1
  193. package/dist/ai-service/integrations/metadata/llm-utils.js +0 -45
  194. package/dist/ai-service/integrations/metadata/llm-utils.js.map +0 -1
  195. package/dist/ai-service/integrations/metadata/open-api.d.ts +0 -17
  196. package/dist/ai-service/integrations/metadata/open-api.d.ts.map +0 -1
  197. package/dist/ai-service/integrations/metadata/open-api.js +0 -62
  198. package/dist/ai-service/integrations/metadata/open-api.js.map +0 -1
  199. package/dist/ai-service/integrations/metadata/table-based.d.ts +0 -10
  200. package/dist/ai-service/integrations/metadata/table-based.d.ts.map +0 -1
  201. package/dist/ai-service/integrations/metadata/table-based.js +0 -27
  202. package/dist/ai-service/integrations/metadata/table-based.js.map +0 -1
  203. package/dist/ai-service/prompt-builder-service/builders/dbschema-intent.d.ts +0 -19
  204. package/dist/ai-service/prompt-builder-service/builders/dbschema-intent.d.ts.map +0 -1
  205. package/dist/ai-service/prompt-builder-service/builders/dbschema-intent.js +0 -145
  206. package/dist/ai-service/prompt-builder-service/builders/dbschema-intent.js.map +0 -1
  207. package/dist/ai-service/prompt-builder-service/builders/openapi-intent.d.ts +0 -19
  208. package/dist/ai-service/prompt-builder-service/builders/openapi-intent.d.ts.map +0 -1
  209. package/dist/ai-service/prompt-builder-service/builders/openapi-intent.js +0 -41
  210. package/dist/ai-service/prompt-builder-service/builders/openapi-intent.js.map +0 -1
  211. package/dist/ai-service/prompt-builder-service/index.d.ts +0 -3
  212. package/dist/ai-service/prompt-builder-service/index.d.ts.map +0 -1
  213. package/dist/ai-service/prompt-builder-service/index.js +0 -3
  214. package/dist/ai-service/prompt-builder-service/index.js.map +0 -1
@@ -1,4 +1,6 @@
1
- import { PermissionLevel, ToolExecutionError, } from "./types.js";
1
+ import { OperationQueue } from "../../../util/operation-queue.js";
2
+ import { ToolNamePermissionKeyStrategy, EntityType, } from "./entity-permissions.js";
3
+ import { PermissionLevel, ToolPermissionResponse, ToolExecutionError, } from "./types.js";
2
4
  /**
3
5
  * Central registry for tools with access control.
4
6
  *
@@ -14,6 +16,9 @@ export class ToolRegistry {
14
16
  accessRules = [];
15
17
  middleware = [];
16
18
  promptHandler;
19
+ promptQueue = new OperationQueue();
20
+ entityPermissionStore;
21
+ scopeStrategy = new ToolNamePermissionKeyStrategy();
17
22
  /**
18
23
  * Register a tool factory and optionally instantiate it immediately.
19
24
  *
@@ -183,7 +188,32 @@ export class ToolRegistry {
183
188
  * @param handler - Prompt handler function
184
189
  */
185
190
  setPromptHandler(handler) {
186
- this.promptHandler = handler;
191
+ this.promptHandler = (tool, input, context) => this.promptQueue.enqueue(() => handler(tool, input, context));
192
+ }
193
+ /**
194
+ * Set entity permission store for tracking per-entity approvals.
195
+ *
196
+ * When set, tools with `extractEntities` defined will automatically
197
+ * check if extracted entities have been approved before execution.
198
+ * If any entity is not approved, the user will be prompted.
199
+ *
200
+ * @param store - Entity permission store instance
201
+ */
202
+ setEntityPermissionStore(store) {
203
+ this.entityPermissionStore = store;
204
+ }
205
+ /**
206
+ * Get permission scope for a tool.
207
+ *
208
+ * Computes the scope string using the configured strategy.
209
+ * This scope is used to isolate permissions between different tools/categories.
210
+ *
211
+ * @param tool - Tool to get scope for
212
+ * @returns Permission scope string
213
+ */
214
+ getToolPermissionScope(tool) {
215
+ const key = this.scopeStrategy.getToolPermissionKey(tool);
216
+ return this.scopeStrategy.formatScope(key);
187
217
  }
188
218
  /**
189
219
  * Check permission level for tool execution.
@@ -250,28 +280,41 @@ export class ToolRegistry {
250
280
  }
251
281
  // Handle PROMPT
252
282
  if (permission === PermissionLevel.PROMPT) {
253
- if (!this.promptHandler) {
254
- return {
255
- type: "error",
256
- error: new ToolExecutionError(`Tool "${toolName}" requires user confirmation but no prompt handler registered`, { toolName, input, context }),
257
- };
258
- }
259
- const approved = await this.promptHandler(toolName, input, context);
260
- if (!approved) {
261
- return {
262
- type: "error",
263
- error: new ToolExecutionError(`Tool "${toolName}" execution rejected by user`, {
264
- toolName,
265
- input,
266
- context,
267
- }),
268
- };
283
+ // Check if we need to prompt (or if entities are already approved)
284
+ const needsPrompt = this.shouldPromptForEntities(tool, input, context);
285
+ if (needsPrompt) {
286
+ // Ensure prompt handler exists
287
+ if (!this.promptHandler) {
288
+ return {
289
+ type: "error",
290
+ error: new ToolExecutionError(`Tool "${toolName}" requires user confirmation but no prompt handler registered`, { toolName, input, context }),
291
+ };
292
+ }
293
+ // Prompt user for approval
294
+ const response = await this.promptHandler(tool, input, context);
295
+ // Handle DENY
296
+ if (response === ToolPermissionResponse.DENY) {
297
+ return {
298
+ type: "error",
299
+ error: new ToolExecutionError(`Tool "${toolName}" execution rejected by user`, { toolName, input, context }),
300
+ };
301
+ }
302
+ // Handle ALWAYS_ALLOW - store entity approvals for future use
303
+ if (response === ToolPermissionResponse.ALWAYS_ALLOW) {
304
+ this.approveEntitiesAfterPrompt(tool, input);
305
+ }
306
+ // Handle ALLOW - proceed to execution without storing permission
307
+ // (no special action needed, just continue to execution)
269
308
  }
309
+ // If !needsPrompt, all entities already approved - proceed to execution
270
310
  }
271
311
  // Validate input and execute
272
312
  try {
273
313
  const validated = tool.inputSchema.parse(input);
274
- const output = await tool.execute(validated, options);
314
+ const output = await tool.execute(validated, options ?? {
315
+ toolCallId: "",
316
+ messages: [],
317
+ });
275
318
  return {
276
319
  type: "success",
277
320
  data: output,
@@ -289,6 +332,64 @@ export class ToolRegistry {
289
332
  };
290
333
  }
291
334
  }
335
+ /**
336
+ * Check if we need to prompt the user for a tool with PROMPT permission.
337
+ *
338
+ * For tools with entity extraction, returns false if all entities are already
339
+ * approved for this tool's scope (skipping the prompt). For tools without
340
+ * entity extraction, always returns true (standard prompting).
341
+ *
342
+ * @param tool - Tool to check
343
+ * @param input - Tool input to extract entities from
344
+ * @returns True if we should prompt user, false if we can skip
345
+ */
346
+ shouldPromptForEntities(tool, input, context) {
347
+ // No entity system configured, use standard prompting
348
+ if (!tool.extractEntities || !this.entityPermissionStore) {
349
+ return true;
350
+ }
351
+ const entities = tool.extractEntities(input);
352
+ // No entities extracted, use standard prompting
353
+ if (entities.length === 0) {
354
+ return true;
355
+ }
356
+ // Compute scope for this tool
357
+ const scope = this.getToolPermissionScope(tool);
358
+ const autoApprovedIntegrationIds = context?.planContext?.approved && context.planContext.integrations
359
+ ? new Set(context.planContext.integrations.map((integration) => integration.id))
360
+ : undefined;
361
+ // Check if any entities are not approved for this scope
362
+ return entities.some((entity) => {
363
+ if (autoApprovedIntegrationIds &&
364
+ entity.type === EntityType.INTEGRATION &&
365
+ autoApprovedIntegrationIds.has(entity.id)) {
366
+ return false;
367
+ }
368
+ return !this.entityPermissionStore.isApproved(entity.type, entity.id, scope);
369
+ });
370
+ }
371
+ /**
372
+ * Store entity approvals after successful user prompt.
373
+ *
374
+ * Extracts entities from tool input and marks them as approved for this
375
+ * tool's scope in the entity permission store. No-op if entity system
376
+ * is not configured.
377
+ *
378
+ * @param tool - Tool that was approved
379
+ * @param input - Tool input to extract entities from
380
+ */
381
+ approveEntitiesAfterPrompt(tool, input) {
382
+ // No entity system configured
383
+ if (!tool.extractEntities || !this.entityPermissionStore) {
384
+ return;
385
+ }
386
+ // Compute scope for this tool
387
+ const scope = this.getToolPermissionScope(tool);
388
+ const entities = tool.extractEntities(input);
389
+ for (const entity of entities) {
390
+ this.entityPermissionStore.approve(entity.type, entity.id, scope);
391
+ }
392
+ }
292
393
  /**
293
394
  * Wrap a tool to enforce access control on execute().
294
395
  *
@@ -343,7 +444,9 @@ export class ToolRegistry {
343
444
  this.factories.clear();
344
445
  this.instances.clear();
345
446
  this.accessRules = [];
447
+ this.middleware = [];
346
448
  this.promptHandler = undefined;
449
+ this.entityPermissionStore = undefined;
347
450
  }
348
451
  }
349
452
  //# sourceMappingURL=registry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../../src/ai-service/agent/tools2/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../../src/ai-service/agent/tools2/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EACL,6BAA6B,EAG7B,UAAU,GACX,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAOL,eAAe,EACf,sBAAsB,EACtB,kBAAkB,GAEnB,MAAM,YAAY,CAAC;AAIpB;;;;;;;;GAQG;AAEH,MAAM,OAAO,YAAY;IACf,SAAS,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC3C,SAAS,GAAG,IAAI,GAAG,EAAgB,CAAC;IACpC,WAAW,GAAwB,EAAE,CAAC;IACtC,UAAU,GAAqB,EAAE,CAAC;IAClC,aAAa,CAAiB;IAC9B,WAAW,GAAG,IAAI,cAAc,EAAE,CAAC;IACnC,qBAAqB,CAAyB;IAC9C,aAAa,GACnB,IAAI,6BAA6B,EAAE,CAAC;IAEtC;;;;;;OAMG;IACH,QAAQ,CAAC,OAAoB,EAAE,GAAG,IAAW;QAC3C,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACzE,MAAM,IAAI,KAAK,CAAC,SAAS,OAAO,CAAC,IAAI,sBAAsB,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAE1C,wDAAwD;QACxD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;YACzC,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;gBACnC,MAAM,IAAI,KAAK,CACb,qCAAqC,OAAO,CAAC,IAAI,oBAAoB,QAAQ,CAAC,IAAI,GAAG,CACtF,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,IAAS;QACpB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,IAAI,sBAAsB,CAAC,CAAC;QAC5D,CAAC;QACD,kEAAkE;QAClE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAY,CAAC,CAAC;IAC9C,CAAC;IAED;;;;OAIG;IACH,SAAS;QACP,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED;;;;OAIG;IACH,WAAW,CAAC,SAAwB;QAClC,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;YAChC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,WAAW,CAAC,GAAG,IAAW;QACxB,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;YACvD,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;YAEzC,0CAA0C;YAC1C,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;gBACnC,MAAM,IAAI,KAAK,CACb,qCAAqC,OAAO,CAAC,IAAI,oBAAoB,QAAQ,CAAC,IAAI,GAAG,CACtF,CAAC;YACJ,CAAC;YAED,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,OAAO,CAAC,IAAY,EAAE,OAA8B;QAClD,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/D,CAAC;IAED;;;;;;;OAOG;IACH,WAAW,CAAC,OAA8B;QACxC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACxD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACzC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,eAAe,CAAC,OAA8B;QAM5C,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC9C,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;SAC1C,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,cAAc,CAClB,OAA8B;QAE9B,MAAM,GAAG,GAAG,OAAO,IAAI,EAAE,CAAC;QAC1B,2BAA2B;QAC3B,MAAM,YAAY,GAAqB,EAAE,CAAC;QAC1C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC9D,IAAI,UAAU,KAAK,eAAe,CAAC,KAAK,EAAE,CAAC;gBACzC,SAAS;YACX,CAAC;YACD,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QACvC,CAAC;QAED,OAAO,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IAC1C,CAAC;IAED;;;;;;;OAOG;IACH,aAAa,CAAC,GAAG,KAA0B;QACzC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;IAClC,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,aAAa,CAAC,GAAG,UAA4B;QAC3C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;IACtC,CAAC;IAED;;;;OAIG;IACH,gBAAgB,CAAC,OAAsB;QACrC,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAC5C,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IAClE,CAAC;IAED;;;;;;;;OAQG;IACH,wBAAwB,CAAC,KAA4B;QACnD,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;IACrC,CAAC;IAED;;;;;;;;OAQG;IACK,sBAAsB,CAAC,IAAU;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,eAAe,CACnB,QAAgB,EAChB,OAA6B;QAE7B,uCAAuC;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,eAAe,CAAC,KAAK,CAAC;QAC/B,CAAC;QACD,IAAI,UAAU,GAAG,IAAI,EAAE,iBAAiB,IAAI,eAAe,CAAC,KAAK,CAAC;QAElE,yCAAyC;QACzC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAEzC,4BAA4B;YAC5B,IAAI,MAAM,KAAK,eAAe,CAAC,KAAK,EAAE,CAAC;gBACrC,OAAO,eAAe,CAAC,KAAK,CAAC;YAC/B,CAAC;YAED,wCAAwC;YACxC,IAAI,MAAM,KAAK,eAAe,CAAC,MAAM,EAAE,CAAC;gBACtC,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC;YACtC,CAAC;QACH,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,OAAO,CACX,QAAgB,EAChB,KAAY,EACZ,UAAgC,EAAE,EAClC,OAAyB;QAEzB,kEAAkE;QAClE,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO;gBACL,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,IAAI,kBAAkB,CAAC,SAAS,QAAQ,aAAa,EAAE;oBAC5D,QAAQ;oBACR,KAAK;oBACL,OAAO;iBACR,CAAC;aACH,CAAC;QACJ,CAAC;QAED,mBAAmB;QACnB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAEjE,eAAe;QACf,IAAI,UAAU,KAAK,eAAe,CAAC,KAAK,EAAE,CAAC;YACzC,OAAO;gBACL,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,IAAI,kBAAkB,CAC3B,SAAS,QAAQ,uCAAuC,EACxD,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAC7B;aACF,CAAC;QACJ,CAAC;QAED,gBAAgB;QAChB,IAAI,UAAU,KAAK,eAAe,CAAC,MAAM,EAAE,CAAC;YAC1C,mEAAmE;YACnE,MAAM,WAAW,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;YAEvE,IAAI,WAAW,EAAE,CAAC;gBAChB,+BAA+B;gBAC/B,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;oBACxB,OAAO;wBACL,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE,IAAI,kBAAkB,CAC3B,SAAS,QAAQ,+DAA+D,EAChF,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAC7B;qBACF,CAAC;gBACJ,CAAC;gBAED,2BAA2B;gBAC3B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;gBAEhE,cAAc;gBACd,IAAI,QAAQ,KAAK,sBAAsB,CAAC,IAAI,EAAE,CAAC;oBAC7C,OAAO;wBACL,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE,IAAI,kBAAkB,CAC3B,SAAS,QAAQ,8BAA8B,EAC/C,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAC7B;qBACF,CAAC;gBACJ,CAAC;gBAED,8DAA8D;gBAC9D,IAAI,QAAQ,KAAK,sBAAsB,CAAC,YAAY,EAAE,CAAC;oBACrD,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC/C,CAAC;gBAED,iEAAiE;gBACjE,yDAAyD;YAC3D,CAAC;YACD,wEAAwE;QAC1E,CAAC;QAED,6BAA6B;QAC7B,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAChD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAC/B,SAAS,EACT,OAAO,IAAI;gBACT,UAAU,EAAE,EAAE;gBACd,QAAQ,EAAE,EAAE;aACb,CACF,CAAC;YAEF,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,MAAgB;aACvB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,IAAI,kBAAkB,CAAC;oBAC5B,QAAQ;oBACR,KAAK;oBACL,OAAO;oBACP,KAAK,EAAE,KAAK;iBACb,CAAC;aACH,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;;;;;;OAUG;IACK,uBAAuB,CAC7B,IAAU,EACV,KAAU,EACV,OAA8B;QAE9B,sDAAsD;QACtD,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACzD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAE7C,gDAAgD;QAChD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,8BAA8B;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAEhD,MAAM,0BAA0B,GAC9B,OAAO,EAAE,WAAW,EAAE,QAAQ,IAAI,OAAO,CAAC,WAAW,CAAC,YAAY;YAChE,CAAC,CAAC,IAAI,GAAG,CACL,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,CAClC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,CAChC,CACF;YACH,CAAC,CAAC,SAAS,CAAC;QAEhB,wDAAwD;QACxD,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YAC9B,IACE,0BAA0B;gBAC1B,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,WAAW;gBACtC,0BAA0B,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EACzC,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,qBAAsB,CAAC,UAAU,CAC5C,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,EAAE,EACT,KAAK,CACN,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;OASG;IACK,0BAA0B,CAAC,IAAU,EAAE,KAAU;QACvD,8BAA8B;QAC9B,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACzD,OAAO;QACT,CAAC;QAED,8BAA8B;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAEhD,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC7C,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC9B,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED;;;;;;;;;;OAUG;IACK,QAAQ,CAAiB,IAAO,EAAE,OAA6B;QACrE,OAAO;YACL,GAAG,IAAI;YACP,OAAO,EAAE,KAAK,EAAE,KAAU,EAAE,OAAyB,EAAE,EAAE;gBACvD,yEAAyE;gBACzE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;gBACtE,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBAC5B,MAAM,MAAM,CAAC,KAAK,CAAC;gBACrB,CAAC;gBACD,OAAO,MAAM,CAAC,IAAI,CAAC;YACrB,CAAC;SACF,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACK,eAAe,CAAC,IAAY;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAEO,eAAe,CAAC,IAAoB;QAC1C,IAAI,aAAa,GAAG,IAAI,CAAC;QACzB,qEAAqE;QACrE,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACrD,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,aAAa,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,aAAa,CAAC;IACvB,CAAC;IAED;;;;OAIG;IACH,KAAK;QACH,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QAC/B,IAAI,CAAC,qBAAqB,GAAG,SAAS,CAAC;IACzC,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ import type { ToolCallOptions } from "ai";
2
+ /**
3
+ * Helper to create dummy options for tests.
4
+ * Provides the required ToolCallOptions structure for tool execute calls.
5
+ */
6
+ export declare const createDummyOptions: () => ToolCallOptions;
7
+ //# sourceMappingURL=test-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/agent/tools2/test-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;AAE1C;;;GAGG;AACH,eAAO,MAAM,kBAAkB,QAAO,eAIpC,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Helper to create dummy options for tests.
3
+ * Provides the required ToolCallOptions structure for tool execute calls.
4
+ */
5
+ export const createDummyOptions = () => ({
6
+ toolCallId: "test-call-id",
7
+ messages: [],
8
+ abortSignal: new AbortController().signal,
9
+ });
10
+ //# sourceMappingURL=test-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-utils.js","sourceRoot":"","sources":["../../../../src/ai-service/agent/tools2/test-utils.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAoB,EAAE,CAAC,CAAC;IACxD,UAAU,EAAE,cAAc;IAC1B,QAAQ,EAAE,EAAE;IACZ,WAAW,EAAE,IAAI,eAAe,EAAE,CAAC,MAAM;CAC1C,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ask-multi-choice.d.ts","sourceRoot":"","sources":["../../../../../src/ai-service/agent/tools2/tools/ask-multi-choice.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,eAAO,MAAM,yBAAyB;;;;;;;GAsErC,CAAC"}
1
+ {"version":3,"file":"ask-multi-choice.d.ts","sourceRoot":"","sources":["../../../../../src/ai-service/agent/tools2/tools/ask-multi-choice.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,eAAO,MAAM,yBAAyB;;;;;;;GA8ErC,CAAC"}
@@ -8,22 +8,30 @@ export const askMultiChoiceToolFactory = createToolFactory("askMultiChoice", (cl
8
8
  const { chatSessionStore } = services;
9
9
  return {
10
10
  description: `
11
- ALWAYS USE THIS TOOL when you need to ask the user ANY question.
12
-
13
11
  This tool presents the user with a question and multiple choice options.
14
- Even for seemingly open-ended questions, you should come up with 3-6 suggested choices to make it easier for the user.
12
+ Even for seemingly open-ended questions, you should come up with 2-3 suggested choices to make it easier for the user.
15
13
 
16
14
  For open-ended questions:
17
- - Come up with 3-6 reasonable suggestions based on common patterns
18
- - Add a "Something else" or "Other" option as the last choice
19
- - The user will select from your suggestions, making the interaction faster
15
+ - Come up with 2-3 reasonable suggestions based on common patterns
16
+ - If there are many possible options, present the most common/relevant ones
17
+ - If you need to present more choices, add "More choices" as the last option, which allows you to ask the same question again with a different set of choices
18
+ - The user can also type their own response directly instead of selecting from the choices
19
+
20
+ When NOT to use this tool:
21
+ - If the user points out a mistake or bug, don't ask them how to fix it; instead, if in BUILD mode, fix it directly. If in PLAN mode, call exitPlanMode with a (very) brief plan to address it.
22
+ - Don't ask the user for input on low-level implementation details.
20
23
 
21
24
  IMPORTANT: When asking about datasources/integrations:
22
25
  - FIRST use the searchIntegrations tool to discover what datasources are available
23
26
  - THEN present the available options to the user in your multi-choice question
24
27
  - DON'T ask the user about datasources without first checking what's available
28
+ - DON'T ask the user about metadata/schemas without first checking what's available (use readIntegrationMetadata tool)
29
+ - NEVER put a "custom" or "provide your own" option; this is redundant since the user can always type their own response
30
+
31
+ After the user makes a selection:
32
+ - ALWAYS acknowledge their selection in your next message (e.g., "Got it, I'll use PostgreSQL" or "Understood, I'll create a dashboard layout")
33
+ - Then proceed with the task based on their choice
25
34
 
26
- NEVER ask the user to type out a response when you can provide clear options.
27
35
  The user will select one (or more) of the choices, and their selection will be sent back to you as a message.
28
36
  `,
29
37
  category: ToolCategory.GENERAL,
@@ -36,8 +44,8 @@ The user will select one (or more) of the choices, and their selection will be s
36
44
  choices: z
37
45
  .array(z.string())
38
46
  .min(2)
39
- .max(6)
40
- .describe("List of 2-6 choices for the user to select from. Each choice should be a clear, concise option. For open-ended questions, provide sensible suggestions and include 'Something else' or 'Other' as the last option."),
47
+ .max(3)
48
+ .describe("List of 2-3 choices for the user to select from. Each choice should be a clear, concise option. If there are more options to present, include 'More choices' as the last option to allow presenting additional choices in a follow-up question."),
41
49
  selectionType: z
42
50
  .enum(["single", "multiple"])
43
51
  .default("single")
@@ -1 +1 @@
1
- {"version":3,"file":"ask-multi-choice.js","sourceRoot":"","sources":["../../../../../src/ai-service/agent/tools2/tools/ask-multi-choice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI/E;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,iBAAiB,CACxD,gBAAgB,EAChB,CAAC,KAAY,EAAE,QAAiC,EAAE,EAAE;IAClD,MAAM,EAAE,gBAAgB,EAAE,GAAG,QAAQ,CAAC;IAEtC,OAAO;QACL,WAAW,EAAE;;;;;;;;;;;;;;;;;;CAkBlB;QACK,QAAQ,EAAE,YAAY,CAAC,OAAO;QAC9B,iBAAiB,EAAE,eAAe,CAAC,KAAK;QACxC,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,QAAQ,CACP,6DAA6D,CAC9D;YACH,OAAO,EAAE,CAAC;iBACP,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CACP,oNAAoN,CACrN;YACH,aAAa,EAAE,CAAC;iBACb,IAAI,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;iBAC5B,OAAO,CAAC,QAAQ,CAAC;iBACjB,QAAQ,EAAE;iBACV,QAAQ,CACP,yHAAyH,CAC1H;SACJ,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE;YACtD,2FAA2F;YAC3F,MAAM,OAAO,GAAG;gBACd,IAAI,EAAE,cAAuB;gBAC7B,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,OAAO;gBACd,OAAO;gBACP,aAAa;aACd,CAAC;YAEF,2EAA2E;YAC3E,MAAM,eAAe,GAAG,sBAAsB,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;YACxE,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;YAE/B,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,aAAa,OAAO,CAAC,MAAM,6CAA6C;aAClF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC,CACF,CAAC"}
1
+ {"version":3,"file":"ask-multi-choice.js","sourceRoot":"","sources":["../../../../../src/ai-service/agent/tools2/tools/ask-multi-choice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI/E;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,iBAAiB,CACxD,gBAAgB,EAChB,CAAC,KAAY,EAAE,QAAiC,EAAE,EAAE;IAClD,MAAM,EAAE,gBAAgB,EAAE,GAAG,QAAQ,CAAC;IAEtC,OAAO;QACL,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BlB;QACK,QAAQ,EAAE,YAAY,CAAC,OAAO;QAC9B,iBAAiB,EAAE,eAAe,CAAC,KAAK;QACxC,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,QAAQ,CACP,6DAA6D,CAC9D;YACH,OAAO,EAAE,CAAC;iBACP,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CACP,iPAAiP,CAClP;YACH,aAAa,EAAE,CAAC;iBACb,IAAI,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;iBAC5B,OAAO,CAAC,QAAQ,CAAC;iBACjB,QAAQ,EAAE;iBACV,QAAQ,CACP,yHAAyH,CAC1H;SACJ,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE;YACtD,2FAA2F;YAC3F,MAAM,OAAO,GAAG;gBACd,IAAI,EAAE,cAAuB;gBAC7B,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,OAAO;gBACd,OAAO;gBACP,aAAa;aACd,CAAC;YAEF,2EAA2E;YAC3E,MAAM,eAAe,GAAG,sBAAsB,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;YACxE,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;YAE/B,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,aAAa,OAAO,CAAC,MAAM,6CAA6C;aAClF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC,CACF,CAAC"}
@@ -2,9 +2,10 @@
2
2
  * Exit Plan Mode - prompts the user to exit Plan mode when they have finished planning and are ready to code.
3
3
  */
4
4
  export declare const exitPlanModeToolFactory: import("../types.js").ToolFactory<import("../types.js").Tool<{
5
- plan: string;
5
+ complexity: "Small" | "Medium" | "Large" | "Extra Large";
6
6
  }, {
7
7
  success: boolean;
8
+ plan: string;
8
9
  message: string;
9
10
  }>>;
10
11
  //# sourceMappingURL=exit-plan-mode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"exit-plan-mode.d.ts","sourceRoot":"","sources":["../../../../../src/ai-service/agent/tools2/tools/exit-plan-mode.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,eAAO,MAAM,uBAAuB;;;;;GAyEnC,CAAC"}
1
+ {"version":3,"file":"exit-plan-mode.d.ts","sourceRoot":"","sources":["../../../../../src/ai-service/agent/tools2/tools/exit-plan-mode.ts"],"names":[],"mappings":"AAyFA;;GAEG;AACH,eAAO,MAAM,uBAAuB;;;;;;GA6LnC,CAAC"}
@@ -1,38 +1,89 @@
1
+ import { smoothStream, tool } from "ai";
1
2
  import { z } from "zod";
3
+ import { getErrorMeta, getLogger } from "../../../../util/logger.js";
4
+ import { tracedStreamText } from "../../../llmobs/helpers.js";
2
5
  import { sendUserMessageChannel } from "../../../state-machine/helpers/peer.js";
6
+ import { hasToolSuccess } from "../../../util/stop-condition.js";
3
7
  import { createToolFactory, PermissionLevel, ToolCategory } from "../types.js";
8
+ const PlanComplexityLevels = [
9
+ "Small",
10
+ "Medium",
11
+ "Large",
12
+ "Extra Large",
13
+ ];
14
+ const planComplexityToEstimate = {
15
+ Small: "2 minutes",
16
+ Medium: "4 minutes",
17
+ Large: "7 minutes",
18
+ "Extra Large": "10+ minutes",
19
+ };
20
+ function getTimeEstimateForComplexity(complexity) {
21
+ return planComplexityToEstimate[complexity];
22
+ }
23
+ function formatIntegrationMetadata(metadata) {
24
+ if (!metadata) {
25
+ return "";
26
+ }
27
+ const entries = Object.entries(metadata).filter(([, value]) => value !== undefined && value !== null && value !== "");
28
+ if (entries.length === 0) {
29
+ return "";
30
+ }
31
+ const formattedEntries = entries.slice(0, 5).map(([key, value]) => {
32
+ const serialized = typeof value === "string"
33
+ ? value
34
+ : (() => {
35
+ try {
36
+ return JSON.stringify(value);
37
+ }
38
+ catch {
39
+ return String(value);
40
+ }
41
+ })();
42
+ const condensed = serialized.replace(/\s+/g, " ").trim();
43
+ const truncated = condensed.length > 160
44
+ ? `${condensed.slice(0, 157).trimEnd()}...`
45
+ : condensed;
46
+ return `${key}: ${truncated}`;
47
+ });
48
+ if (entries.length > 5) {
49
+ formattedEntries.push("..."); // indicate additional metadata omitted for brevity
50
+ }
51
+ return formattedEntries.join("; ");
52
+ }
53
+ function formatIntegrationForPlanPrompt(integration) {
54
+ const { name, id, type, metadata } = integration;
55
+ const metadataSummary = formatIntegrationMetadata(metadata);
56
+ let details = `- ${name}\n tag: @${name}[id=${id}]\n type: ${type}`;
57
+ if (metadataSummary) {
58
+ details += `\n metadata: ${metadataSummary}`;
59
+ }
60
+ return details;
61
+ }
4
62
  /**
5
63
  * Exit Plan Mode - prompts the user to exit Plan mode when they have finished planning and are ready to code.
6
64
  */
7
65
  export const exitPlanModeToolFactory = createToolFactory("exitPlanMode", (clark, services) => {
8
- const { chatSessionStore } = services;
9
66
  return {
10
67
  description: `
11
- Use this tool to present a specific, actionable plan to the user in Plan mode.
12
- The plan should be in the style of a PRD (Product Requirements Document), enumerating the functional requirements
13
- for the coding task in clear, concise language, and noting any important implementation details.
14
-
15
- DO NOT give low-level implementation details - the plan should focus on WHAT to build, not HOW to build it.
16
-
17
- This tool presents your plan with a "Build It" button that allows the user to switch to Build mode.
68
+ Use this tool to delegate to a planning expert who will generate a plan and present it to the user.
69
+ This tool presents a plan with a "Build It" button that allows the user to switch to Build mode.
18
70
  NEVER output a plan directly as text - ALWAYS use this tool to present plans properly.
19
71
 
20
72
  IMPORTANT: Only use this tool AFTER you have gathered enough information to create a specific plan.
21
- You must ask at least 3 clarifying questions using askMultiChoice before presenting a plan.
22
73
 
23
74
  Before presenting a plan:
24
75
  - If the user's request is ambiguous or has multiple interpretations, use askMultiChoice to clarify
25
76
  - If there are unknowns about requirements, preferences, or approach, use askMultiChoice first
26
77
  - If design decisions need to be made, ask the user for their preferences first
27
78
  - Gather enough context to create a concrete, specific plan
79
+ - IMPORTANT: Check metadata for relevant integrations to validate feasibility and inform the plan
28
80
 
29
81
  When to use this tool:
30
82
  - You are in Plan mode
31
83
  - You have a clear understanding of the user's requirements
32
84
  - You have resolved any ambiguities through askMultiChoice
33
85
  - You have asked at least 3 clarifying questions
34
- - You have a specific, actionable plan for implementing a coding task
35
- - The plan outlines concrete implementation steps
86
+ - You have checked relevant integration metadata to inform the plan
36
87
 
37
88
  When NOT to use:
38
89
  - When there are still unknowns or ambiguities - use askMultiChoice instead
@@ -40,34 +91,148 @@ When NOT to use:
40
91
  - For research tasks (gathering information, searching files, understanding codebase)
41
92
  - When answering questions without a coding plan
42
93
  - When you're already in Build mode
94
+ - When you haven't checked relevant integration metadata
95
+
96
+ You must provide an estimate of the plan complexity when calling this tool.
97
+ There are four levels of complexity:
98
+ 1. Small: For small tweaks and bug fixes, such as changing a filter or fixing a component bug.
99
+ 2. Medium: For moderate features or enhancements, such as adding a new data-driven component to a page.
100
+ 3. Large: For significant features or multi-part tasks, such as creating or overhauling a page and associated components and APIs.
101
+ 4. Extra Large: For major projects or overhauls, such as building a new application section with multiple pages, components, and backend services.
43
102
 
44
103
  After calling this tool, the user will either:
45
104
  - Click "Build It" to switch to Build mode and execute the plan
46
105
  - Provide feedback to refine the plan further
106
+
107
+ Remember: Always use this tool to present plans - never output plans directly as text.
108
+ IF THE TOOL CALL FAILS, DO NOT ATTEMPT TO GENERATE THE PLAN YOURSELF. Call the tool again.
47
109
  `,
48
110
  category: ToolCategory.PLAN,
49
111
  defaultPermission: PermissionLevel.ALLOW,
50
112
  readOnly: true,
51
113
  inputSchema: z.object({
52
- plan: z
53
- .string()
54
- .describe("The plan to present to the user. Supports markdown formatting."),
114
+ complexity: z
115
+ .enum(PlanComplexityLevels)
116
+ .describe("Your best estimate of the plan complexity"),
55
117
  }),
56
- execute: async ({ plan }) => {
57
- // Send plan message to user with special type for UI to render with "Build It" button
58
- const payload = {
59
- type: "plan",
60
- text: plan,
61
- group: "clark",
62
- };
63
- // Use sendUserMessageChannel to ensure ID is generated and shared properly
118
+ execute: async ({ complexity }, { messages, abortSignal }) => {
119
+ const { chatSessionStore, llmProvider } = services;
64
120
  const sendUserMessage = sendUserMessageChannel(clark, chatSessionStore);
65
- await sendUserMessage(payload);
66
- return {
67
- success: true,
68
- message: "Plan presented to user. Awaiting mode confirmation.",
69
- };
121
+ try {
122
+ // Use plan prompt from context if available, otherwise use default
123
+ const availableIntegrations = clark.context.availableIntegrations ?? [];
124
+ const integrationGuidance = availableIntegrations.length > 0
125
+ ? `
126
+ You can rely on the following integrations. When a plan step requires one, mention the exact tag shown below within that step (e.g. "Use @Integration[id=123] to ..."). Only tag integrations you truly need.
127
+
128
+ ${availableIntegrations
129
+ .map((integration) => formatIntegrationForPlanPrompt(integration))
130
+ .join("\n\n")}`
131
+ : "";
132
+ const baseInstructions = clark.context.planContext?.instructions ?? planPromptText;
133
+ if (!clark.context.planContext?.instructions) {
134
+ getLogger().info("Using default plan prompt for plan generation");
135
+ }
136
+ else {
137
+ getLogger().info("Using custom plan prompt from context; appending integration guidance");
138
+ }
139
+ const planInstructions = `${baseInstructions.trim()}${integrationGuidance}`;
140
+ // Append plan generation prompt
141
+ const planPrompt = {
142
+ role: "user",
143
+ content: planInstructions.trim(),
144
+ };
145
+ const planMessages = [...messages, planPrompt];
146
+ getLogger().info(`Starting plan generation stream. complexity: ${complexity}`);
147
+ // Stream plan generation
148
+ let fullPlanText = "";
149
+ const model = llmProvider.modelForClassification("broad_edit");
150
+ const stream = tracedStreamText({
151
+ model,
152
+ messages: planMessages,
153
+ tools: {
154
+ done: tool({
155
+ description: "Call this tool when you have finished generating the plan.",
156
+ inputSchema: z.object({}),
157
+ execute: async (_params) => {
158
+ if (fullPlanText.trim().length === 0) {
159
+ throw new Error("Cannot stop plan generation before any plan content has been generated.");
160
+ }
161
+ getLogger().info("Stop tool called - ending plan generation");
162
+ return {};
163
+ },
164
+ }),
165
+ },
166
+ stopWhen: hasToolSuccess("done"),
167
+ experimental_transform: smoothStream({ chunking: "line" }),
168
+ abortSignal,
169
+ }, clark.tracer, clark.logger);
170
+ // Stream plan deltas to UI
171
+ for await (const text of stream.textStream) {
172
+ await sendUserMessage({
173
+ type: "plan-delta",
174
+ text,
175
+ group: "clark",
176
+ });
177
+ fullPlanText += text;
178
+ }
179
+ if (!fullPlanText.trim()) {
180
+ throw new Error("Generated plan is empty. Please try again.");
181
+ }
182
+ getLogger().info(`Plan generation stream completed. Length: ${fullPlanText.length}`);
183
+ // Send complete plan message for persistence and UI state
184
+ const timeEstimate = getTimeEstimateForComplexity(complexity);
185
+ const planIntegrations = clark.context.availableIntegrations;
186
+ await sendUserMessage({
187
+ type: "plan",
188
+ text: fullPlanText,
189
+ group: "clark",
190
+ timeEstimate,
191
+ integrations: planIntegrations,
192
+ });
193
+ clark.updateContext((context) => ({
194
+ ...context,
195
+ planContext: {
196
+ instructions: context.planContext?.instructions ?? planInstructions,
197
+ plan: fullPlanText,
198
+ integrations: planIntegrations ?? context.planContext?.integrations,
199
+ approved: false,
200
+ },
201
+ }));
202
+ return {
203
+ success: true,
204
+ plan: fullPlanText,
205
+ message: "Plan presented to user. Awaiting mode confirmation.",
206
+ };
207
+ }
208
+ catch (error) {
209
+ getLogger().error("Failed to generate plan", getErrorMeta(error));
210
+ throw error;
211
+ }
70
212
  },
71
213
  };
72
214
  });
215
+ // This is the prompt used to generate the plan
216
+ const planPromptText = `
217
+ Based on our conversation and the information gathered, create a specific, actionable plan.
218
+
219
+ A good format for bug fixes is:
220
+ - Problem
221
+ - Solution
222
+ - Edge cases
223
+ - Success criteria
224
+
225
+ A good format for features/new functionality is:
226
+ - Overview
227
+ - Requirements
228
+ - Design (if applicable)
229
+ - Data flow (if applicable)
230
+ - Success criteria
231
+
232
+ Focus on WHAT to build, not HOW to build it. Focus mainly on functional requirements and only very high-level implementation details.
233
+ Assume the user is non-technical and avoid technical jargon. They only care about what the final outcome will be in terms of functionality and design.
234
+
235
+ Format your response in markdown with clear sections.
236
+ When you are finished, call the 'done'.
237
+ `;
73
238
  //# sourceMappingURL=exit-plan-mode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"exit-plan-mode.js","sourceRoot":"","sources":["../../../../../src/ai-service/agent/tools2/tools/exit-plan-mode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI/E;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,iBAAiB,CACtD,cAAc,EACd,CAAC,KAAY,EAAE,QAAiC,EAAE,EAAE;IAClD,MAAM,EAAE,gBAAgB,EAAE,GAAG,QAAQ,CAAC;IAEtC,OAAO;QACL,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqClB;QACK,QAAQ,EAAE,YAAY,CAAC,IAAI;QAC3B,iBAAiB,EAAE,eAAe,CAAC,KAAK;QACxC,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,CACP,gEAAgE,CACjE;SACJ,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;YAC1B,sFAAsF;YACtF,MAAM,OAAO,GAAG;gBACd,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,OAAO;aACf,CAAC;YAEF,2EAA2E;YAC3E,MAAM,eAAe,GAAG,sBAAsB,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;YACxE,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;YAE/B,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,qDAAqD;aAC/D,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC,CACF,CAAC"}
1
+ {"version":3,"file":"exit-plan-mode.js","sourceRoot":"","sources":["../../../../../src/ai-service/agent/tools2/tools/exit-plan-mode.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { GrepMetadataResult } from "./grep-metadata.js";
2
+ /**
3
+ * Search a gron file using ripgrep.
4
+ * Returns raw lines from the gron file that match the pattern.
5
+ */
6
+ export declare function searchGronWithRipgrep(gronPath: string, pattern: string): Promise<string[]>;
7
+ /**
8
+ * Build a GrepMetadataResult from gron search results.
9
+ * Uses the path-prefix approach with batching: extracts parent prefixes,
10
+ * fetches parent data in batches of 250, stops when character limit is reached.
11
+ *
12
+ * PAGINATION NOTE: If we want to implement pagination so that Clark can get all
13
+ * results from this grep, we can return the currentIndex and store the prefixArray
14
+ * in memory (or ContextManager) so we can continue from the next index on subsequent calls.
15
+ */
16
+ export declare function buildResultFromGronMatches(gronPath: string, matches: string[], limit: number | undefined, // Optional - defaults to no count limit
17
+ includeDetails: boolean, maxResponseChars?: number, startIndex?: number): Promise<GrepMetadataResult>;
18
+ //# sourceMappingURL=grep-metadata-ripgrep.d.ts.map