@synergenius/flow-weaver-pack-weaver 0.9.124 → 0.9.126

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.
@@ -9,15 +9,45 @@ export declare function callCli(provider: string, prompt: string, model?: string
9
9
  export declare function extractCliJsonResult(raw: string): string;
10
10
  export declare function callCliAsync(provider: string, prompt: string, model?: string, systemPrompt?: string): Promise<string>;
11
11
  export declare function callApi(apiKey: string, model: string, maxTokens: number, systemPrompt: string, userPrompt: string): Promise<string>;
12
+ export interface AiTool {
13
+ name: string;
14
+ description: string;
15
+ parameters: {
16
+ type: 'object';
17
+ properties: Record<string, unknown>;
18
+ required?: string[];
19
+ };
20
+ }
21
+ export interface AiToolCall {
22
+ id: string;
23
+ name: string;
24
+ arguments: Record<string, unknown>;
25
+ }
26
+ export interface AiCallResult {
27
+ content: string;
28
+ toolCalls: AiToolCall[];
29
+ }
12
30
  /**
13
31
  * Call the platform-injected AI proxy (routes through IPC to the host process).
14
32
  * Available when running inside the Studio sandbox.
15
33
  */
16
34
  export declare function callPlatform(systemPrompt: string, userPrompt: string, model?: string, maxTokens?: number): Promise<string>;
35
+ /**
36
+ * Call the platform AI proxy with tool definitions.
37
+ * The AI can return text AND/OR structured tool calls.
38
+ * Works across providers (Anthropic tool_use, OpenAI function calling).
39
+ */
40
+ export declare function callPlatformWithTools(systemPrompt: string, userPrompt: string, tools: AiTool[], model?: string, maxTokens?: number): Promise<AiCallResult>;
17
41
  /**
18
42
  * Unified AI call that dispatches to the right backend based on provider type.
19
43
  */
20
44
  export declare function callAI(pInfo: Pick<ProviderInfo, 'type' | 'apiKey' | 'model' | 'maxTokens'>, systemPrompt: string, userPrompt: string, defaultMaxTokens?: number): Promise<string>;
45
+ /**
46
+ * Unified AI call with tool definitions. Returns text + structured tool calls.
47
+ * For providers that don't support native tool_use (CLI), falls back to text-only
48
+ * and the caller should parse JSON from the text content.
49
+ */
50
+ export declare function callAIWithTools(pInfo: Pick<ProviderInfo, 'type' | 'apiKey' | 'model' | 'maxTokens'>, systemPrompt: string, userPrompt: string, tools: AiTool[], defaultMaxTokens?: number): Promise<AiCallResult>;
21
51
  export declare function parseJsonResponse(text: string): Record<string, unknown>;
22
52
  export interface NormalizedPlan {
23
53
  steps: Array<{
@@ -1 +1 @@
1
- {"version":3,"file":"ai-client.d.ts","sourceRoot":"","sources":["../../src/bot/ai-client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAiB,MAAM,oBAAoB,CAAC;AA6BtE,wBAAgB,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAOvG;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAoBxD;AAED,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAqH3H;AAED,wBAAsB,OAAO,CAC3B,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAChD,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GACvC,OAAO,CAAC,MAAM,CAAC,CAgBjB;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CA8BjB;AAED;;GAEG;AACH,wBAAsB,MAAM,CAC1B,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,WAAW,CAAC,EACpE,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,gBAAgB,SAAO,GACtB,OAAO,CAAC,MAAM,CAAC,CAiBjB;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiCvE;AAMD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,CAAC;IACpG,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,cAAc,CAuC7D;AAqBD;;;;GAIG;AACH,wBAAsB,UAAU,CAC9B,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,QAAQ,CAAC,EAC5C,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAoB9B"}
1
+ {"version":3,"file":"ai-client.d.ts","sourceRoot":"","sources":["../../src/bot/ai-client.ts"],"names":[],"mappings":"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"}
@@ -193,6 +193,25 @@ export async function callApi(apiKey, model, maxTokens, systemPrompt, userPrompt
193
193
  const json = await response.json();
194
194
  return json.content[0]?.text ?? '';
195
195
  }
196
+ // ---------------------------------------------------------------------------
197
+ // Platform provider helpers
198
+ // ---------------------------------------------------------------------------
199
+ const AI_CALL_TIMEOUT_MS = 120_000; // 2 minutes per AI call
200
+ /** Report usage to runner's CostTracker via global callback. */
201
+ function reportUsage(response, model) {
202
+ const usage = response.usage;
203
+ if (!usage)
204
+ return;
205
+ const cb = globalThis.__fw_ai_usage_callback__;
206
+ if (cb) {
207
+ cb(model ?? 'platform', {
208
+ inputTokens: usage.promptTokens ?? 0,
209
+ outputTokens: usage.completionTokens ?? 0,
210
+ cacheCreationInputTokens: usage.cacheCreationInputTokens,
211
+ cacheReadInputTokens: usage.cacheReadInputTokens,
212
+ });
213
+ }
214
+ }
196
215
  /**
197
216
  * Call the platform-injected AI proxy (routes through IPC to the host process).
198
217
  * Available when running inside the Studio sandbox.
@@ -205,24 +224,35 @@ export async function callPlatform(systemPrompt, userPrompt, model, maxTokens) {
205
224
  { role: 'system', content: systemPrompt },
206
225
  { role: 'user', content: userPrompt },
207
226
  ];
208
- const AI_CALL_TIMEOUT_MS = 120_000; // 2 minutes per AI call
209
227
  const timeoutPromise = new Promise((_, reject) => setTimeout(() => reject(new Error('AI call timeout (120s)')), AI_CALL_TIMEOUT_MS));
210
228
  const response = await Promise.race([provider.chat(messages, { model, maxTokens }), timeoutPromise]);
211
- // Report usage via global callback so the runner's CostTracker can pick it up.
212
- // The callback is set by runner.ts before workflow execution.
213
- if (response.usage) {
214
- const cb = globalThis.__fw_ai_usage_callback__;
215
- if (cb) {
216
- cb(model ?? 'platform', {
217
- inputTokens: response.usage.promptTokens ?? 0,
218
- outputTokens: response.usage.completionTokens ?? 0,
219
- cacheCreationInputTokens: response.usage.cacheCreationInputTokens,
220
- cacheReadInputTokens: response.usage.cacheReadInputTokens,
221
- });
222
- }
223
- }
229
+ reportUsage(response, model);
224
230
  return response.content ?? '';
225
231
  }
232
+ /**
233
+ * Call the platform AI proxy with tool definitions.
234
+ * The AI can return text AND/OR structured tool calls.
235
+ * Works across providers (Anthropic tool_use, OpenAI function calling).
236
+ */
237
+ export async function callPlatformWithTools(systemPrompt, userPrompt, tools, model, maxTokens) {
238
+ const provider = globalThis.__fw_llm_provider__;
239
+ if (!provider)
240
+ throw new Error('Platform AI provider not available');
241
+ const messages = [
242
+ { role: 'system', content: systemPrompt },
243
+ { role: 'user', content: userPrompt },
244
+ ];
245
+ const timeoutPromise = new Promise((_, reject) => setTimeout(() => reject(new Error('AI call timeout (120s)')), AI_CALL_TIMEOUT_MS));
246
+ const response = await Promise.race([
247
+ provider.chat(messages, { model, maxTokens, tools }),
248
+ timeoutPromise,
249
+ ]);
250
+ reportUsage(response, model);
251
+ return {
252
+ content: response.content ?? '',
253
+ toolCalls: (response.toolCalls ?? []),
254
+ };
255
+ }
226
256
  /**
227
257
  * Unified AI call that dispatches to the right backend based on provider type.
228
258
  */
@@ -238,6 +268,19 @@ export async function callAI(pInfo, systemPrompt, userPrompt, defaultMaxTokens =
238
268
  // (eliminates hallucination entirely — no retry needed).
239
269
  return callCliAsync(pInfo.type, userPrompt, pInfo.model, systemPrompt);
240
270
  }
271
+ /**
272
+ * Unified AI call with tool definitions. Returns text + structured tool calls.
273
+ * For providers that don't support native tool_use (CLI), falls back to text-only
274
+ * and the caller should parse JSON from the text content.
275
+ */
276
+ export async function callAIWithTools(pInfo, systemPrompt, userPrompt, tools, defaultMaxTokens = 4096) {
277
+ if (pInfo.type === 'platform') {
278
+ return callPlatformWithTools(systemPrompt, userPrompt, tools, pInfo.model, pInfo.maxTokens ?? defaultMaxTokens);
279
+ }
280
+ // Fallback for providers without native tool_use: call as text, return empty toolCalls
281
+ const text = await callAI(pInfo, systemPrompt, userPrompt, defaultMaxTokens);
282
+ return { content: text, toolCalls: [] };
283
+ }
241
284
  export function parseJsonResponse(text) {
242
285
  let cleaned = text.trim();
243
286
  if (cleaned.startsWith('```')) {
@@ -1 +1 @@
1
- {"version":3,"file":"ai-client.js","sourceRoot":"","sources":["../../src/bot/ai-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai-client.js","sourceRoot":"","sources":["../../src/bot/ai-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAGxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,yEAAyE;AACzE,MAAM,QAAQ,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;AACpC,OAAO,QAAQ,CAAC,UAAU,CAAC;AAE3B,0EAA0E;AAC1E,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC;IACtC,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,KAAK,EAAE;YACL,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACtB,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC7B,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC/B,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBACzB;gBACD,QAAQ,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,CAAC;aACrD;SACF;QACD,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;KAC5B;IACD,QAAQ,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;CAC/B,CAAC,CAAC;AAEH,MAAM,UAAU,OAAO,CAAC,QAAgB,EAAE,MAAc,EAAE,KAAc,EAAE,YAAqB;IAC7F,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;QAC/B,OAAO,QAAQ,CAAC,uCAAuC,EAAE;YACvD,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ;SACnG,CAAC,CAAC,IAAI,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;AACzF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACpC,mDAAmD;QACnD,IAAI,OAAO,EAAE,iBAAiB,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACnD,CAAC;QACD,uCAAuC;QACvC,IAAI,OAAO,OAAO,EAAE,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YACjE,OAAO,OAAO,CAAC,MAAM,CAAC;QACxB,CAAC;QACD,yEAAyE;QACzE,IAAI,OAAO,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC/B,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,6CAA6C;IAC/C,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,QAAgB,EAAE,MAAc,EAAE,KAAc,EAAE,YAAqB;IACxG,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;QAC/B,OAAO,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IACD,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,wDAAwD;IACxD,iGAAiG;IACjG,uDAAuD;IACvD,oEAAoE;IACpE,MAAM,IAAI,GAAG;QACX,IAAI,EAAE,WAAW;QACjB,iBAAiB,EAAE,aAAa;QAChC,4BAA4B;QAC5B,eAAe,EAAE,gBAAgB;QACjC,gCAAgC;KACjC,CAAC;IACF,IAAI,KAAK;QAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACvC,IAAI,YAAY;QAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;IAE7D,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE;QAClC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;QAC/B,GAAG,EAAE,QAAQ;KACd,CAAC,CAAC;IACH,UAAU,CAAC,KAAK,CAAC,CAAC;IAElB,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1B,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;IAElB,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;IAEjE,oFAAoF;IACpF,6DAA6D;IAC7D,uEAAuE;IACvE,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,IAAI,eAAe,GAAG,KAAK,CAAC;IAE5B,IAAI,CAAC;QACH,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACtC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACjC,MAAM,GAAG,KAAK,CAAC,GAAG,EAAG,CAAC;YAEtB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;oBAAE,SAAS;gBAC3B,IAAI,CAAC;oBACH,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAE7B,4EAA4E;oBAC5E,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;wBACjD,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;oBACtB,CAAC;oBAED,8CAA8C;oBAC9C,IAAI,KAAK,CAAC,IAAI,KAAK,qBAAqB,IAAI,KAAK,CAAC,aAAa,EAAE,IAAI,KAAK,UAAU,EAAE,CAAC;wBACrF,eAAe,GAAG,IAAI,CAAC;wBACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;oBACvD,CAAC;oBACD,sDAAsD;yBACjD,IAAI,KAAK,CAAC,IAAI,KAAK,qBAAqB,IAAI,KAAK,CAAC,KAAK,EAAE,IAAI,KAAK,gBAAgB,IAAI,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;wBACjH,+DAA+D;oBACjE,CAAC;oBACD,mBAAmB;yBACd,IAAI,KAAK,CAAC,IAAI,KAAK,qBAAqB,IAAI,KAAK,CAAC,aAAa,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;wBACtF,IAAI,eAAe,EAAE,CAAC;4BACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;4BAC3B,eAAe,GAAG,KAAK,CAAC;wBAC1B,CAAC;oBACH,CAAC;oBACD,4DAA4D;yBACvD,IAAI,KAAK,CAAC,IAAI,KAAK,qBAAqB,IAAI,KAAK,CAAC,KAAK,EAAE,IAAI,KAAK,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;wBACzG,eAAe,GAAG,IAAI,CAAC;wBACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,KAAK,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,CAAC;oBAC7D,CAAC;oBACD,2BAA2B;yBACtB,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;wBAC7C,IAAI,eAAe,EAAE,CAAC;4BACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;4BAC3B,eAAe,GAAG,KAAK,CAAC;wBAC1B,CAAC;oBACH,CAAC;oBACD,+DAA+D;yBAC1D,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;wBACjC,UAAU,GAAG,IAAI,CAAC;wBAClB,8BAA8B;wBAC9B,IAAI,eAAe;4BAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAClD,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,yBAAyB;gBAC3B,CAAC;YACH,CAAC;QACH,CAAC;QAED,2BAA2B;QAC3B,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YAClB,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACjC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;oBAAE,UAAU,GAAG,MAAM,CAAC;YACnD,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;IAED,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC;gBAAE,MAAM,CAAC,IAAI,KAAK,CAAC,+BAA+B,IAAI,EAAE,CAAC,CAAC,CAAC;;gBAC5E,OAAO,EAAE,CAAC;QACjB,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,OAAO,oBAAoB,CAAC,UAAU,IAAI,MAAM,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,MAAc,EAAE,KAAa,EAAE,SAAiB,EAChD,YAAoB,EAAE,UAAkB;IAExC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1B,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY;QAClD,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;KAClD,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,uCAAuC,EAAE;QACpE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,mBAAmB,EAAE,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE;QACvG,IAAI;KACL,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACnF,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAwD,CAAC;IACzF,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;AACrC,CAAC;AAuBD,8EAA8E;AAC9E,4BAA4B;AAC5B,8EAA8E;AAE9E,MAAM,kBAAkB,GAAG,OAAO,CAAC,CAAC,wBAAwB;AAE5D,gEAAgE;AAChE,SAAS,WAAW,CAAC,QAAiC,EAAE,KAAc;IACpE,MAAM,KAAK,GAAG,QAAQ,CAAC,KAA2I,CAAC;IACnK,IAAI,CAAC,KAAK;QAAE,OAAO;IACnB,MAAM,EAAE,GAAI,UAAsC,CAAC,wBAEtC,CAAC;IACd,IAAI,EAAE,EAAE,CAAC;QACP,EAAE,CAAC,KAAK,IAAI,UAAU,EAAE;YACtB,WAAW,EAAE,KAAK,CAAC,YAAY,IAAI,CAAC;YACpC,YAAY,EAAE,KAAK,CAAC,gBAAgB,IAAI,CAAC;YACzC,wBAAwB,EAAE,KAAK,CAAC,wBAAwB;YACxD,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;SACjD,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,YAAoB,EACpB,UAAkB,EAClB,KAAc,EACd,SAAkB;IAElB,MAAM,QAAQ,GAAI,UAAkB,CAAC,mBAAmB,CAAC;IACzD,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACrE,MAAM,QAAQ,GAAG;QACf,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE;QACzC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE;KACtC,CAAC;IACF,MAAM,cAAc,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CACtD,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAClF,CAAC;IACF,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC;IACrG,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC7B,OAAO,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC;AAChC,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,YAAoB,EACpB,UAAkB,EAClB,KAAe,EACf,KAAc,EACd,SAAkB;IAElB,MAAM,QAAQ,GAAI,UAAkB,CAAC,mBAAmB,CAAC;IACzD,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACrE,MAAM,QAAQ,GAAG;QACf,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE;QACzC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE;KACtC,CAAC;IACF,MAAM,cAAc,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CACtD,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAClF,CAAC;IACF,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;QAClC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QACpD,cAAc;KACf,CAAC,CAAC;IACH,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC7B,OAAO;QACL,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,EAAE;QAC/B,SAAS,EAAE,CAAC,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAiB;KACtD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,KAAoE,EACpE,YAAoB,EACpB,UAAkB,EAClB,gBAAgB,GAAG,IAAI;IAEvB,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC9B,OAAO,YAAY,CAAC,YAAY,EAAE,UAAU,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,IAAI,gBAAgB,CAAC,CAAC;IAClG,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC/B,OAAO,OAAO,CACZ,KAAK,CAAC,MAAO,EACb,KAAK,CAAC,KAAK,IAAI,mBAAmB,EAClC,KAAK,CAAC,SAAS,IAAI,gBAAgB,EACnC,YAAY,EACZ,UAAU,CACX,CAAC;IACJ,CAAC;IACD,oEAAoE;IACpE,wEAAwE;IACxE,yDAAyD;IACzD,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;AACzE,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAAoE,EACpE,YAAoB,EACpB,UAAkB,EAClB,KAAe,EACf,gBAAgB,GAAG,IAAI;IAEvB,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC9B,OAAO,qBAAqB,CAAC,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,IAAI,gBAAgB,CAAC,CAAC;IAClH,CAAC;IACD,uFAAuF;IACvF,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC;IAC7E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC1B,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IACjF,CAAC;IACD,IAAI,CAAC;QAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;IAE/D,+EAA+E;IAC/E,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACtC,yBAAyB;QACzB,IAAI,CAAC;YAAC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;QAC3D,gDAAgD;QAChD,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YAClB,IAAI,MAAM,EAAE,CAAC;gBAAC,MAAM,GAAG,KAAK,CAAC;gBAAC,SAAS;YAAC,CAAC;YACzC,IAAI,EAAE,KAAK,IAAI,IAAI,QAAQ,EAAE,CAAC;gBAAC,MAAM,GAAG,IAAI,CAAC;gBAAC,SAAS;YAAC,CAAC;YACzD,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;gBAAC,QAAQ,GAAG,CAAC,QAAQ,CAAC;gBAAC,SAAS;YAAC,CAAC;YACnD,IAAI,QAAQ;gBAAE,SAAS;YACvB,IAAI,EAAE,KAAK,GAAG;gBAAE,KAAK,EAAE,CAAC;iBACnB,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;gBACpB,KAAK,EAAE,CAAC;gBACR,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;oBAChB,IAAI,CAAC;wBAAC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBAAC,CAAC;oBAAC,MAAM,CAAC,CAAC,wBAAwB,CAAC,CAAC;gBACpF,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,wCAAwC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AAChF,CAAC;AAWD;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,MAAe;IAC3C,MAAM,GAAG,GAAG,MAAiC,CAAC;IAE9C,kCAAkC;IAClC,IAAI,KAA4B,CAAC;IACjC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;QAC9B,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACpB,CAAC;IACD,gCAAgC;SAC3B,IAAI,GAAG,EAAE,IAAI,IAAI,KAAK,CAAC,OAAO,CAAE,GAAG,CAAC,IAAgC,CAAC,KAAK,CAAC,EAAE,CAAC;QACjF,KAAK,GAAI,GAAG,CAAC,IAAgC,CAAC,KAAkB,CAAC;IACnE,CAAC;IACD,oCAAoC;SAC/B,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/B,KAAK,GAAG,MAAM,CAAC;IACjB,CAAC;IAED,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAG,GAAG,EAAE,OAAkB,IAAI,+BAA+B,EAAE,CAAC;IAC7F,CAAC;IAED,sBAAsB;IACtB,MAAM,UAAU,GAAG,KAAK;SACrB,MAAM,CAAC,CAAC,CAAC,EAAgC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;SACpG,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QACjB,MAAM,SAAS,GAAI,IAAI,CAAC,SAAoB,IAAK,IAAI,CAAC,IAAe,IAAK,IAAI,CAAC,IAAe,IAAK,IAAI,CAAC,MAAiB,IAAK,IAAI,CAAC,IAAe,IAAI,EAAE,CAAC;QACzJ,OAAO;YACL,EAAE,EAAG,IAAI,CAAC,EAAa,IAAI,QAAQ,GAAG,GAAG,CAAC,EAAE;YAC5C,SAAS;YACT,WAAW,EAAG,IAAI,CAAC,WAAsB,IAAI,SAAS,IAAI,QAAQ,GAAG,GAAG,CAAC,EAAE;YAC3E,IAAI,EAAG,IAAI,CAAC,IAAgC,IAAK,IAAI,CAAC,SAAqC,IAAI,EAAE;SAClG,CAAC;IACJ,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,4CAA4C;IAEhF,OAAO;QACL,KAAK,EAAE,UAAU;QACjB,OAAO,EAAG,GAAG,EAAE,OAAkB,IAAI,GAAG,UAAU,CAAC,MAAM,QAAQ;KAClE,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,iEAAiE;AACjE,8EAA8E;AAE9E,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;0GAa6E,CAAC;AAE3G;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,KAA4C,EAC5C,WAAmB;IAEnB,IAAI,CAAC;QACH,oFAAoF;QACpF,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAC1D,MAAM,WAAW,GAAG,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;QAErE,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,WAAW,EAAE,oBAAoB,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;QAC/E,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAA+C,CAAC;QAErF,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAEnE,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;QAC5B,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -139,7 +139,7 @@ When stabilize mode is active, only fix-up operations are allowed.`);
139
139
  USE TOOLS to complete tasks. Do NOT describe what you would do — actually do it by calling tools.
140
140
 
141
141
  ### File tools
142
- - read_file, write_file, patch_file, list_files, run_shell, validate, tsc_check, run_tests
142
+ - read-file, write-file, patch-file, list-files, run-shell, validate, tsc-check, run-tests
143
143
 
144
144
  ### Task management tools
145
145
  - task_create, task_list, task_get, task_update
@@ -1 +1 @@
1
- {"version":3,"file":"plan-task.d.ts","sourceRoot":"","sources":["../../src/node-types/plan-task.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;GAaG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,MAAM,EACX,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC;IACT,SAAS,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IACvC,GAAG,EAAE,MAAM,CAAC;CACb,CAAC,CA0FD"}
1
+ {"version":3,"file":"plan-task.d.ts","sourceRoot":"","sources":["../../src/node-types/plan-task.ts"],"names":[],"mappings":"AA0CA;;;;;;;;;;;;;GAaG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,MAAM,EACX,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC;IACT,SAAS,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IACvC,GAAG,EAAE,MAAM,CAAC;CACb,CAAC,CA8FD"}
@@ -1,5 +1,39 @@
1
- import { callAI, callTriage, parseJsonResponse, normalizePlan } from '../bot/ai-client.js';
1
+ import { callAIWithTools, callTriage, parseJsonResponse, normalizePlan } from '../bot/ai-client.js';
2
2
  import { auditEmit } from '../bot/audit-logger.js';
3
+ // ---------------------------------------------------------------------------
4
+ // Plan tool definition — passed via native tool_use so the AI returns
5
+ // structured JSON arguments instead of prose. Works across Anthropic and OpenAI.
6
+ // ---------------------------------------------------------------------------
7
+ const PLAN_TOOL = {
8
+ name: 'create_plan',
9
+ description: 'Create a structured execution plan for this task. Call this tool with the plan steps and summary.',
10
+ parameters: {
11
+ type: 'object',
12
+ properties: {
13
+ summary: { type: 'string', description: 'One-line summary of what the plan does' },
14
+ steps: {
15
+ type: 'array',
16
+ description: 'Ordered list of operations to execute',
17
+ items: {
18
+ type: 'object',
19
+ properties: {
20
+ operation: {
21
+ type: 'string',
22
+ description: 'Tool to invoke: write-file, read-file, patch-file, list-files, run-shell, validate, respond',
23
+ },
24
+ description: { type: 'string', description: 'What this step does' },
25
+ args: {
26
+ type: 'object',
27
+ description: 'Arguments for the operation (e.g. {file, content} for write_file, {file, find, replace} for patch_file)',
28
+ },
29
+ },
30
+ required: ['operation', 'description', 'args'],
31
+ },
32
+ },
33
+ },
34
+ required: ['summary', 'steps'],
35
+ },
36
+ };
3
37
  /**
4
38
  * Sends task + context to the AI provider and gets back a structured
5
39
  * execution plan. The core AI planning node.
@@ -61,34 +95,38 @@ export async function weaverPlanTask(execute, ctx, modelOverride) {
61
95
  }
62
96
  const userPrompt = `Task: ${task.instruction}\nMode: ${task.mode ?? 'create'}\n${task.targets ? 'Targets: ' + task.targets.join(', ') : ''}
63
97
 
64
- Return a JSON plan. Response format:
65
- \`\`\`json
66
- { "steps": [{ "operation": "<tool_name>", "description": "<what>", "args": { ... } }], "summary": "<one-line summary>" }
67
- \`\`\`
68
-
69
- Available operations: write_file (args: file, content), read_file (args: file), patch_file (args: file, find, replace), list_files (args: directory), run_shell (args: command), validate (args: file), respond (args: response).
70
-
71
- IMPORTANT rules:
98
+ Plan this task by calling the create_plan tool with concrete steps.
99
+ Rules:
72
100
  1. Every step MUST have complete, concrete args — no empty patches, no placeholders.
73
- 2. For file creation tasks, use write_file with the full file content.
74
- 3. If you need to discover file contents first, plan ONLY discovery steps (read_file, list_files).
75
- 4. Do NOT plan patch_file unless you know the exact find/replace strings.`;
101
+ 2. For file creation tasks, use write-file with full file content in args.
102
+ 3. If you need to discover file contents first, plan ONLY discovery steps (read-file, list-files).
103
+ 4. Do NOT plan patch-file unless you know the exact find/replace strings.`;
76
104
  try {
77
- const text = await callAI(pInfo, systemPrompt, userPrompt, 8192);
105
+ // Use native tool_use when available (Anthropic, OpenAI).
106
+ // The AI calls create_plan with structured args instead of returning prose.
107
+ const result = await callAIWithTools(pInfo, systemPrompt, userPrompt, [PLAN_TOOL], 8192);
78
108
  let plan;
79
- try {
80
- const raw = parseJsonResponse(text);
81
- plan = normalizePlan(raw);
109
+ // Check if AI used the create_plan tool (structured response)
110
+ const planCall = result.toolCalls.find(tc => tc.name === 'create_plan');
111
+ if (planCall) {
112
+ plan = normalizePlan(planCall.arguments);
82
113
  }
83
- catch {
84
- // LLM returned plain text (not JSON) wrap as a text-response plan.
85
- // This happens for simple tasks where the LLM answers directly.
86
- const trimmed = text.trim();
87
- const firstLine = trimmed.split('\n')[0].slice(0, 120);
88
- plan = {
89
- steps: [{ id: 'step-1', operation: 'respond', description: firstLine, args: { response: trimmed } }],
90
- summary: firstLine,
91
- };
114
+ else {
115
+ // Fallback: parse JSON from text content (CLI providers, or AI chose not to use tool)
116
+ const text = result.content;
117
+ try {
118
+ const raw = parseJsonResponse(text);
119
+ plan = normalizePlan(raw);
120
+ }
121
+ catch {
122
+ // LLM returned plain text — wrap as a text-response plan.
123
+ const trimmed = text.trim();
124
+ const firstLine = trimmed.split('\n')[0].slice(0, 120);
125
+ plan = {
126
+ steps: [{ id: 'step-1', operation: 'respond', description: firstLine, args: { response: trimmed } }],
127
+ summary: firstLine,
128
+ };
129
+ }
92
130
  }
93
131
  console.log(`\x1b[36m→ Plan: ${plan.summary ?? 'generated'}\x1b[0m`);
94
132
  auditEmit('plan-created', { summary: plan.summary, stepCount: plan.steps?.length ?? 0 });
@@ -1 +1 @@
1
- {"version":3,"file":"plan-task.js","sourceRoot":"","sources":["../../src/node-types/plan-task.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan-task.js","sourceRoot":"","sources":["../../src/node-types/plan-task.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "manifestVersion": 2,
3
3
  "name": "@synergenius/flow-weaver-pack-weaver",
4
- "version": "0.9.124",
4
+ "version": "0.9.126",
5
5
  "description": "AI bot for Flow Weaver. Execute tasks, run workflows, evolve autonomously.",
6
6
  "engineVersion": ">=0.22.10",
7
7
  "categories": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@synergenius/flow-weaver-pack-weaver",
3
- "version": "0.9.124",
3
+ "version": "0.9.126",
4
4
  "description": "AI bot for Flow Weaver. Execute tasks, run workflows, evolve autonomously.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -206,6 +206,50 @@ export async function callApi(
206
206
  return json.content[0]?.text ?? '';
207
207
  }
208
208
 
209
+ // ---------------------------------------------------------------------------
210
+ // Tool type (mirrors platform LLMTool, kept local to avoid cross-package dep)
211
+ // ---------------------------------------------------------------------------
212
+
213
+ export interface AiTool {
214
+ name: string;
215
+ description: string;
216
+ parameters: { type: 'object'; properties: Record<string, unknown>; required?: string[] };
217
+ }
218
+
219
+ export interface AiToolCall {
220
+ id: string;
221
+ name: string;
222
+ arguments: Record<string, unknown>;
223
+ }
224
+
225
+ export interface AiCallResult {
226
+ content: string;
227
+ toolCalls: AiToolCall[];
228
+ }
229
+
230
+ // ---------------------------------------------------------------------------
231
+ // Platform provider helpers
232
+ // ---------------------------------------------------------------------------
233
+
234
+ const AI_CALL_TIMEOUT_MS = 120_000; // 2 minutes per AI call
235
+
236
+ /** Report usage to runner's CostTracker via global callback. */
237
+ function reportUsage(response: Record<string, unknown>, model?: string): void {
238
+ const usage = response.usage as { promptTokens?: number; completionTokens?: number; cacheCreationInputTokens?: number; cacheReadInputTokens?: number } | undefined;
239
+ if (!usage) return;
240
+ const cb = (globalThis as Record<string, unknown>).__fw_ai_usage_callback__ as
241
+ | ((model: string, usage: { inputTokens: number; outputTokens: number; cacheCreationInputTokens?: number; cacheReadInputTokens?: number }) => void)
242
+ | undefined;
243
+ if (cb) {
244
+ cb(model ?? 'platform', {
245
+ inputTokens: usage.promptTokens ?? 0,
246
+ outputTokens: usage.completionTokens ?? 0,
247
+ cacheCreationInputTokens: usage.cacheCreationInputTokens,
248
+ cacheReadInputTokens: usage.cacheReadInputTokens,
249
+ });
250
+ }
251
+ }
252
+
209
253
  /**
210
254
  * Call the platform-injected AI proxy (routes through IPC to the host process).
211
255
  * Available when running inside the Studio sandbox.
@@ -222,31 +266,46 @@ export async function callPlatform(
222
266
  { role: 'system', content: systemPrompt },
223
267
  { role: 'user', content: userPrompt },
224
268
  ];
225
- const AI_CALL_TIMEOUT_MS = 120_000; // 2 minutes per AI call
226
269
  const timeoutPromise = new Promise<never>((_, reject) =>
227
270
  setTimeout(() => reject(new Error('AI call timeout (120s)')), AI_CALL_TIMEOUT_MS),
228
271
  );
229
272
  const response = await Promise.race([provider.chat(messages, { model, maxTokens }), timeoutPromise]);
230
-
231
- // Report usage via global callback so the runner's CostTracker can pick it up.
232
- // The callback is set by runner.ts before workflow execution.
233
- if (response.usage) {
234
- const cb = (globalThis as Record<string, unknown>).__fw_ai_usage_callback__ as
235
- | ((model: string, usage: { inputTokens: number; outputTokens: number; cacheCreationInputTokens?: number; cacheReadInputTokens?: number }) => void)
236
- | undefined;
237
- if (cb) {
238
- cb(model ?? 'platform', {
239
- inputTokens: response.usage.promptTokens ?? 0,
240
- outputTokens: response.usage.completionTokens ?? 0,
241
- cacheCreationInputTokens: response.usage.cacheCreationInputTokens,
242
- cacheReadInputTokens: response.usage.cacheReadInputTokens,
243
- });
244
- }
245
- }
246
-
273
+ reportUsage(response, model);
247
274
  return response.content ?? '';
248
275
  }
249
276
 
277
+ /**
278
+ * Call the platform AI proxy with tool definitions.
279
+ * The AI can return text AND/OR structured tool calls.
280
+ * Works across providers (Anthropic tool_use, OpenAI function calling).
281
+ */
282
+ export async function callPlatformWithTools(
283
+ systemPrompt: string,
284
+ userPrompt: string,
285
+ tools: AiTool[],
286
+ model?: string,
287
+ maxTokens?: number,
288
+ ): Promise<AiCallResult> {
289
+ const provider = (globalThis as any).__fw_llm_provider__;
290
+ if (!provider) throw new Error('Platform AI provider not available');
291
+ const messages = [
292
+ { role: 'system', content: systemPrompt },
293
+ { role: 'user', content: userPrompt },
294
+ ];
295
+ const timeoutPromise = new Promise<never>((_, reject) =>
296
+ setTimeout(() => reject(new Error('AI call timeout (120s)')), AI_CALL_TIMEOUT_MS),
297
+ );
298
+ const response = await Promise.race([
299
+ provider.chat(messages, { model, maxTokens, tools }),
300
+ timeoutPromise,
301
+ ]);
302
+ reportUsage(response, model);
303
+ return {
304
+ content: response.content ?? '',
305
+ toolCalls: (response.toolCalls ?? []) as AiToolCall[],
306
+ };
307
+ }
308
+
250
309
  /**
251
310
  * Unified AI call that dispatches to the right backend based on provider type.
252
311
  */
@@ -274,6 +333,26 @@ export async function callAI(
274
333
  return callCliAsync(pInfo.type, userPrompt, pInfo.model, systemPrompt);
275
334
  }
276
335
 
336
+ /**
337
+ * Unified AI call with tool definitions. Returns text + structured tool calls.
338
+ * For providers that don't support native tool_use (CLI), falls back to text-only
339
+ * and the caller should parse JSON from the text content.
340
+ */
341
+ export async function callAIWithTools(
342
+ pInfo: Pick<ProviderInfo, 'type' | 'apiKey' | 'model' | 'maxTokens'>,
343
+ systemPrompt: string,
344
+ userPrompt: string,
345
+ tools: AiTool[],
346
+ defaultMaxTokens = 4096,
347
+ ): Promise<AiCallResult> {
348
+ if (pInfo.type === 'platform') {
349
+ return callPlatformWithTools(systemPrompt, userPrompt, tools, pInfo.model, pInfo.maxTokens ?? defaultMaxTokens);
350
+ }
351
+ // Fallback for providers without native tool_use: call as text, return empty toolCalls
352
+ const text = await callAI(pInfo, systemPrompt, userPrompt, defaultMaxTokens);
353
+ return { content: text, toolCalls: [] };
354
+ }
355
+
277
356
  export function parseJsonResponse(text: string): Record<string, unknown> {
278
357
  let cleaned = text.trim();
279
358
  if (cleaned.startsWith('```')) {
@@ -197,7 +197,7 @@ When stabilize mode is active, only fix-up operations are allowed.`);
197
197
  USE TOOLS to complete tasks. Do NOT describe what you would do — actually do it by calling tools.
198
198
 
199
199
  ### File tools
200
- - read_file, write_file, patch_file, list_files, run_shell, validate, tsc_check, run_tests
200
+ - read-file, write-file, patch-file, list-files, run-shell, validate, tsc-check, run-tests
201
201
 
202
202
  ### Task management tools
203
203
  - task_create, task_list, task_get, task_update
@@ -1,8 +1,45 @@
1
1
  import type { WeaverContext } from '../bot/types.js';
2
- import { callAI, callTriage, parseJsonResponse, normalizePlan } from '../bot/ai-client.js';
2
+ import { callAI, callAIWithTools, callTriage, parseJsonResponse, normalizePlan } from '../bot/ai-client.js';
3
+ import type { AiTool } from '../bot/ai-client.js';
3
4
  import { auditEmit } from '../bot/audit-logger.js';
4
5
  import type { PromptSection } from '../bot/system-prompt.js';
5
6
 
7
+ // ---------------------------------------------------------------------------
8
+ // Plan tool definition — passed via native tool_use so the AI returns
9
+ // structured JSON arguments instead of prose. Works across Anthropic and OpenAI.
10
+ // ---------------------------------------------------------------------------
11
+
12
+ const PLAN_TOOL: AiTool = {
13
+ name: 'create_plan',
14
+ description: 'Create a structured execution plan for this task. Call this tool with the plan steps and summary.',
15
+ parameters: {
16
+ type: 'object',
17
+ properties: {
18
+ summary: { type: 'string', description: 'One-line summary of what the plan does' },
19
+ steps: {
20
+ type: 'array',
21
+ description: 'Ordered list of operations to execute',
22
+ items: {
23
+ type: 'object',
24
+ properties: {
25
+ operation: {
26
+ type: 'string',
27
+ description: 'Tool to invoke: write-file, read-file, patch-file, list-files, run-shell, validate, respond',
28
+ },
29
+ description: { type: 'string', description: 'What this step does' },
30
+ args: {
31
+ type: 'object',
32
+ description: 'Arguments for the operation (e.g. {file, content} for write_file, {file, find, replace} for patch_file)',
33
+ },
34
+ },
35
+ required: ['operation', 'description', 'args'],
36
+ },
37
+ },
38
+ },
39
+ required: ['summary', 'steps'],
40
+ },
41
+ };
42
+
6
43
  /**
7
44
  * Sends task + context to the AI provider and gets back a structured
8
45
  * execution plan. The core AI planning node.
@@ -73,35 +110,39 @@ export async function weaverPlanTask(
73
110
 
74
111
  const userPrompt = `Task: ${task.instruction}\nMode: ${task.mode ?? 'create'}\n${task.targets ? 'Targets: ' + task.targets.join(', ') : ''}
75
112
 
76
- Return a JSON plan. Response format:
77
- \`\`\`json
78
- { "steps": [{ "operation": "<tool_name>", "description": "<what>", "args": { ... } }], "summary": "<one-line summary>" }
79
- \`\`\`
80
-
81
- Available operations: write_file (args: file, content), read_file (args: file), patch_file (args: file, find, replace), list_files (args: directory), run_shell (args: command), validate (args: file), respond (args: response).
82
-
83
- IMPORTANT rules:
113
+ Plan this task by calling the create_plan tool with concrete steps.
114
+ Rules:
84
115
  1. Every step MUST have complete, concrete args — no empty patches, no placeholders.
85
- 2. For file creation tasks, use write_file with the full file content.
86
- 3. If you need to discover file contents first, plan ONLY discovery steps (read_file, list_files).
87
- 4. Do NOT plan patch_file unless you know the exact find/replace strings.`;
116
+ 2. For file creation tasks, use write-file with full file content in args.
117
+ 3. If you need to discover file contents first, plan ONLY discovery steps (read-file, list-files).
118
+ 4. Do NOT plan patch-file unless you know the exact find/replace strings.`;
88
119
 
89
120
  try {
90
- const text = await callAI(pInfo, systemPrompt, userPrompt, 8192);
121
+ // Use native tool_use when available (Anthropic, OpenAI).
122
+ // The AI calls create_plan with structured args instead of returning prose.
123
+ const result = await callAIWithTools(pInfo, systemPrompt, userPrompt, [PLAN_TOOL], 8192);
91
124
 
92
125
  let plan: { steps: Array<{ id: string; operation: string; description: string; args: Record<string, unknown> }>; summary: string };
93
- try {
94
- const raw = parseJsonResponse(text);
95
- plan = normalizePlan(raw);
96
- } catch {
97
- // LLM returned plain text (not JSON) — wrap as a text-response plan.
98
- // This happens for simple tasks where the LLM answers directly.
99
- const trimmed = text.trim();
100
- const firstLine = trimmed.split('\n')[0].slice(0, 120);
101
- plan = {
102
- steps: [{ id: 'step-1', operation: 'respond', description: firstLine, args: { response: trimmed } }],
103
- summary: firstLine,
104
- };
126
+
127
+ // Check if AI used the create_plan tool (structured response)
128
+ const planCall = result.toolCalls.find(tc => tc.name === 'create_plan');
129
+ if (planCall) {
130
+ plan = normalizePlan(planCall.arguments);
131
+ } else {
132
+ // Fallback: parse JSON from text content (CLI providers, or AI chose not to use tool)
133
+ const text = result.content;
134
+ try {
135
+ const raw = parseJsonResponse(text);
136
+ plan = normalizePlan(raw);
137
+ } catch {
138
+ // LLM returned plain text — wrap as a text-response plan.
139
+ const trimmed = text.trim();
140
+ const firstLine = trimmed.split('\n')[0].slice(0, 120);
141
+ plan = {
142
+ steps: [{ id: 'step-1', operation: 'respond', description: firstLine, args: { response: trimmed } }],
143
+ summary: firstLine,
144
+ };
145
+ }
105
146
  }
106
147
  console.log(`\x1b[36m→ Plan: ${plan.summary ?? 'generated'}\x1b[0m`);
107
148
  auditEmit('plan-created', { summary: plan.summary, stepCount: plan.steps?.length ?? 0 });