@workglow/ai 0.2.7 → 0.2.9
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.
- package/dist/browser.js +887 -929
- package/dist/browser.js.map +15 -16
- package/dist/bun.js +887 -929
- package/dist/bun.js.map +15 -16
- package/dist/execution/QueuedExecutionStrategy.d.ts +14 -5
- package/dist/execution/QueuedExecutionStrategy.d.ts.map +1 -1
- package/dist/job/AiJob.d.ts +2 -0
- package/dist/job/AiJob.d.ts.map +1 -1
- package/dist/node.js +887 -929
- package/dist/node.js.map +15 -16
- package/dist/provider/AiProvider.d.ts +15 -0
- package/dist/provider/AiProvider.d.ts.map +1 -1
- package/dist/provider/AiProviderRegistry.d.ts +16 -2
- package/dist/provider/AiProviderRegistry.d.ts.map +1 -1
- package/dist/task/AiChatTask.d.ts +666 -0
- package/dist/task/AiChatTask.d.ts.map +1 -0
- package/dist/task/ChatMessage.d.ts +356 -0
- package/dist/task/ChatMessage.d.ts.map +1 -0
- package/dist/task/MessageConversion.d.ts +1 -9
- package/dist/task/MessageConversion.d.ts.map +1 -1
- package/dist/task/StructuredGenerationTask.d.ts +50 -3
- package/dist/task/StructuredGenerationTask.d.ts.map +1 -1
- package/dist/task/ToolCallingTask.d.ts +177 -10
- package/dist/task/ToolCallingTask.d.ts.map +1 -1
- package/dist/task/base/AiTask.d.ts.map +1 -1
- package/dist/task/index.d.ts +6 -7
- package/dist/task/index.d.ts.map +1 -1
- package/dist/worker.js +65 -97
- package/dist/worker.js.map +6 -6
- package/package.json +11 -11
- package/dist/task/AgentTask.d.ts +0 -541
- package/dist/task/AgentTask.d.ts.map +0 -1
- package/dist/task/AgentTypes.d.ts +0 -183
- package/dist/task/AgentTypes.d.ts.map +0 -1
- package/dist/task/AgentUtils.d.ts +0 -55
- package/dist/task/AgentUtils.d.ts.map +0 -1
|
@@ -4,9 +4,11 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { CreateWorkflow } from "@workglow/task-graph";
|
|
7
|
-
import type { TaskConfig } from "@workglow/task-graph";
|
|
8
|
-
import {
|
|
7
|
+
import type { IExecuteContext, StreamEvent, TaskConfig } from "@workglow/task-graph";
|
|
8
|
+
import type { ChatMessage } from "./ChatMessage";
|
|
9
9
|
import { ServiceRegistry } from "@workglow/util";
|
|
10
|
+
import { DataPortSchema, FromSchema } from "@workglow/util/schema";
|
|
11
|
+
import type { AiJobInput } from "../job/AiJob";
|
|
10
12
|
import { StreamingAiTask } from "./base/StreamingAiTask";
|
|
11
13
|
import type { ToolDefinition } from "./ToolCallingUtils";
|
|
12
14
|
export interface ToolDefinitionWithTaskType extends ToolDefinition {
|
|
@@ -178,12 +180,168 @@ export declare const ToolCallingInputSchema: {
|
|
|
178
180
|
readonly properties: {
|
|
179
181
|
readonly role: {
|
|
180
182
|
readonly type: "string";
|
|
181
|
-
readonly enum: readonly ["user", "assistant", "tool"];
|
|
183
|
+
readonly enum: readonly ["user", "assistant", "tool", "system"];
|
|
184
|
+
};
|
|
185
|
+
readonly content: {
|
|
186
|
+
readonly type: "array";
|
|
187
|
+
readonly items: {
|
|
188
|
+
readonly oneOf: readonly [{
|
|
189
|
+
readonly type: "object";
|
|
190
|
+
readonly properties: {
|
|
191
|
+
readonly type: {
|
|
192
|
+
readonly type: "string";
|
|
193
|
+
readonly enum: readonly ["text"];
|
|
194
|
+
};
|
|
195
|
+
readonly text: {
|
|
196
|
+
readonly type: "string";
|
|
197
|
+
};
|
|
198
|
+
};
|
|
199
|
+
readonly required: readonly ["type", "text"];
|
|
200
|
+
readonly additionalProperties: false;
|
|
201
|
+
}, {
|
|
202
|
+
readonly type: "object";
|
|
203
|
+
readonly properties: {
|
|
204
|
+
readonly type: {
|
|
205
|
+
readonly type: "string";
|
|
206
|
+
readonly enum: readonly ["image"];
|
|
207
|
+
};
|
|
208
|
+
readonly mimeType: {
|
|
209
|
+
readonly type: "string";
|
|
210
|
+
};
|
|
211
|
+
readonly data: {
|
|
212
|
+
readonly type: "string";
|
|
213
|
+
};
|
|
214
|
+
};
|
|
215
|
+
readonly required: readonly ["type", "mimeType", "data"];
|
|
216
|
+
readonly additionalProperties: false;
|
|
217
|
+
}, {
|
|
218
|
+
readonly type: "object";
|
|
219
|
+
readonly properties: {
|
|
220
|
+
readonly type: {
|
|
221
|
+
readonly type: "string";
|
|
222
|
+
readonly enum: readonly ["tool_use"];
|
|
223
|
+
};
|
|
224
|
+
readonly id: {
|
|
225
|
+
readonly type: "string";
|
|
226
|
+
};
|
|
227
|
+
readonly name: {
|
|
228
|
+
readonly type: "string";
|
|
229
|
+
};
|
|
230
|
+
readonly input: {
|
|
231
|
+
readonly type: "object";
|
|
232
|
+
readonly additionalProperties: true;
|
|
233
|
+
};
|
|
234
|
+
};
|
|
235
|
+
readonly required: readonly ["type", "id", "name", "input"];
|
|
236
|
+
readonly additionalProperties: false;
|
|
237
|
+
}, {
|
|
238
|
+
readonly type: "object";
|
|
239
|
+
readonly properties: {
|
|
240
|
+
readonly type: {
|
|
241
|
+
readonly type: "string";
|
|
242
|
+
readonly enum: readonly ["tool_result"];
|
|
243
|
+
};
|
|
244
|
+
readonly tool_use_id: {
|
|
245
|
+
readonly type: "string";
|
|
246
|
+
};
|
|
247
|
+
readonly content: {
|
|
248
|
+
readonly type: "array";
|
|
249
|
+
readonly items: {
|
|
250
|
+
readonly $ref: "#/definitions/ContentBlock";
|
|
251
|
+
};
|
|
252
|
+
};
|
|
253
|
+
readonly is_error: {
|
|
254
|
+
readonly type: "boolean";
|
|
255
|
+
};
|
|
256
|
+
};
|
|
257
|
+
readonly required: readonly ["type", "tool_use_id", "content"];
|
|
258
|
+
readonly additionalProperties: false;
|
|
259
|
+
}];
|
|
260
|
+
readonly definitions: {
|
|
261
|
+
readonly ContentBlock: {
|
|
262
|
+
readonly oneOf: readonly [{
|
|
263
|
+
readonly type: "object";
|
|
264
|
+
readonly properties: {
|
|
265
|
+
readonly type: {
|
|
266
|
+
readonly type: "string";
|
|
267
|
+
readonly enum: readonly ["text"];
|
|
268
|
+
};
|
|
269
|
+
readonly text: {
|
|
270
|
+
readonly type: "string";
|
|
271
|
+
};
|
|
272
|
+
};
|
|
273
|
+
readonly required: readonly ["type", "text"];
|
|
274
|
+
readonly additionalProperties: false;
|
|
275
|
+
}, {
|
|
276
|
+
readonly type: "object";
|
|
277
|
+
readonly properties: {
|
|
278
|
+
readonly type: {
|
|
279
|
+
readonly type: "string";
|
|
280
|
+
readonly enum: readonly ["image"];
|
|
281
|
+
};
|
|
282
|
+
readonly mimeType: {
|
|
283
|
+
readonly type: "string";
|
|
284
|
+
};
|
|
285
|
+
readonly data: {
|
|
286
|
+
readonly type: "string";
|
|
287
|
+
};
|
|
288
|
+
};
|
|
289
|
+
readonly required: readonly ["type", "mimeType", "data"];
|
|
290
|
+
readonly additionalProperties: false;
|
|
291
|
+
}, {
|
|
292
|
+
readonly type: "object";
|
|
293
|
+
readonly properties: {
|
|
294
|
+
readonly type: {
|
|
295
|
+
readonly type: "string";
|
|
296
|
+
readonly enum: readonly ["tool_use"];
|
|
297
|
+
};
|
|
298
|
+
readonly id: {
|
|
299
|
+
readonly type: "string";
|
|
300
|
+
};
|
|
301
|
+
readonly name: {
|
|
302
|
+
readonly type: "string";
|
|
303
|
+
};
|
|
304
|
+
readonly input: {
|
|
305
|
+
readonly type: "object";
|
|
306
|
+
readonly additionalProperties: true;
|
|
307
|
+
};
|
|
308
|
+
};
|
|
309
|
+
readonly required: readonly ["type", "id", "name", "input"];
|
|
310
|
+
readonly additionalProperties: false;
|
|
311
|
+
}, {
|
|
312
|
+
readonly type: "object";
|
|
313
|
+
readonly properties: {
|
|
314
|
+
readonly type: {
|
|
315
|
+
readonly type: "string";
|
|
316
|
+
readonly enum: readonly ["tool_result"];
|
|
317
|
+
};
|
|
318
|
+
readonly tool_use_id: {
|
|
319
|
+
readonly type: "string";
|
|
320
|
+
};
|
|
321
|
+
readonly content: {
|
|
322
|
+
readonly type: "array";
|
|
323
|
+
readonly items: {
|
|
324
|
+
readonly $ref: "#/definitions/ContentBlock";
|
|
325
|
+
};
|
|
326
|
+
};
|
|
327
|
+
readonly is_error: {
|
|
328
|
+
readonly type: "boolean";
|
|
329
|
+
};
|
|
330
|
+
};
|
|
331
|
+
readonly required: readonly ["type", "tool_use_id", "content"];
|
|
332
|
+
readonly additionalProperties: false;
|
|
333
|
+
}];
|
|
334
|
+
};
|
|
335
|
+
};
|
|
336
|
+
readonly title: "ContentBlock";
|
|
337
|
+
readonly description: "A single content block within a chat message";
|
|
338
|
+
};
|
|
182
339
|
};
|
|
183
|
-
readonly content: {};
|
|
184
340
|
};
|
|
185
341
|
readonly required: readonly ["role", "content"];
|
|
186
|
-
readonly additionalProperties:
|
|
342
|
+
readonly additionalProperties: false;
|
|
343
|
+
readonly title: "ChatMessage";
|
|
344
|
+
readonly description: "A single chat message with role and structured content blocks";
|
|
187
345
|
};
|
|
188
346
|
};
|
|
189
347
|
readonly tools: {
|
|
@@ -318,12 +476,10 @@ export declare const ToolCallingOutputSchema: {
|
|
|
318
476
|
* `messages` field typed explicitly (the loose `content: {}` in the
|
|
319
477
|
* schema prevents `FromSchema` from producing a useful type).
|
|
320
478
|
*/
|
|
321
|
-
export type ToolCallingTaskInput = Omit<FromSchema<typeof ToolCallingInputSchema>, "tools"> & {
|
|
479
|
+
export type ToolCallingTaskInput = Omit<FromSchema<typeof ToolCallingInputSchema>, "tools" | "messages"> & {
|
|
322
480
|
readonly tools: ToolDefinition[];
|
|
323
|
-
readonly messages?: ReadonlyArray<
|
|
324
|
-
|
|
325
|
-
readonly content: unknown;
|
|
326
|
-
}>;
|
|
481
|
+
readonly messages?: ReadonlyArray<ChatMessage>;
|
|
482
|
+
readonly sessionId?: string;
|
|
327
483
|
};
|
|
328
484
|
export type ToolCallingTaskOutput = FromSchema<typeof ToolCallingOutputSchema>;
|
|
329
485
|
export type ToolCallingTaskConfig = TaskConfig<ToolCallingTaskInput>;
|
|
@@ -334,6 +490,17 @@ export declare class ToolCallingTask extends StreamingAiTask<ToolCallingTaskInpu
|
|
|
334
490
|
static description: string;
|
|
335
491
|
static inputSchema(): DataPortSchema;
|
|
336
492
|
static outputSchema(): DataPortSchema;
|
|
493
|
+
/** Session ID computed during getJobInput, used to register cleanup. */
|
|
494
|
+
private _computedSessionId;
|
|
495
|
+
/**
|
|
496
|
+
* Override to auto-compute a prefix-rewind session ID from tools + systemPrompt
|
|
497
|
+
* + runnerId when no explicit sessionId is provided. The runnerId scopes the
|
|
498
|
+
* cache to the current graph run so it's cleaned up via ResourceScope.
|
|
499
|
+
*/
|
|
500
|
+
protected getJobInput(input: ToolCallingTaskInput): Promise<AiJobInput<ToolCallingTaskInput>>;
|
|
501
|
+
private registerSessionDispose;
|
|
502
|
+
execute(input: ToolCallingTaskInput, executeContext: IExecuteContext): Promise<ToolCallingTaskOutput | undefined>;
|
|
503
|
+
executeStream(input: ToolCallingTaskInput, context: IExecuteContext): AsyncIterable<StreamEvent<ToolCallingTaskOutput>>;
|
|
337
504
|
}
|
|
338
505
|
/**
|
|
339
506
|
* Convenience function to run a tool calling task.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolCallingTask.d.ts","sourceRoot":"","sources":["../../src/task/ToolCallingTask.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAiC,MAAM,sBAAsB,CAAC;AAErF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"ToolCallingTask.d.ts","sourceRoot":"","sources":["../../src/task/ToolCallingTask.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAiC,MAAM,sBAAsB,CAAC;AAErF,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAErF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAmB,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI/C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAMzD,MAAM,WAAW,0BAA2B,SAAQ,cAAc;IAChE,6DAA6D;IAC7D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,EAChC,QAAQ,CAAC,EAAE,eAAe,GACzB,0BAA0B,EAAE,CAsB9B;AAMD,eAAO,MAAM,oBAAoB;aAC/B,IAAI,EAAE,QAAQ;aACd,UAAU;iBACR,IAAI;qBACF,IAAI,EAAE,QAAQ;qBACd,KAAK,EAAE,MAAM;qBACb,WAAW,EAAE,eAAe;;iBAE9B,WAAW;qBACT,IAAI,EAAE,QAAQ;qBACd,KAAK,EAAE,aAAa;qBACpB,WAAW,EAAE,qCAAqC;;iBAEpD,WAAW;qBACT,IAAI,EAAE,QAAQ;qBACd,KAAK,EAAE,cAAc;qBACrB,WAAW,EAAE,oDAAoD;qBACjE,oBAAoB;;iBAEtB,YAAY;qBACV,IAAI,EAAE,QAAQ;qBACd,KAAK,EAAE,eAAe;qBACtB,WAAW,EAAE,8CAA8C;qBAC3D,oBAAoB;;iBAEtB,YAAY;qBACV,IAAI,EAAE,QAAQ;qBACd,KAAK,EAAE,eAAe;qBACtB,WAAW,EAAE,+EAA+E;qBAC5F,oBAAoB;;iBAEtB,MAAM;qBACJ,IAAI,EAAE,QAAQ;qBACd,KAAK,EAAE,QAAQ;qBACf,WAAW,EAAE,0EAA0E;qBACvF,oBAAoB;;;aAGxB,QAAQ,YAAG,MAAM,EAAE,aAAa,EAAE,aAAa;aAC/C,oBAAoB;CACZ,CAAC;AA4BX,eAAO,MAAM,sBAAsB;mBAC3B,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+BAKA,QAAQ;gCAAS,QAAQ;sCAAe,iCAAiC;;+BAEzE,OAAO;gCACN,QAAQ;sCACF,qDAAqD;;;uCAGtD,QAAQ;;uCAER,QAAQ;;qCAEZ,IAAI;yCAAI,IAAI,EAAE,QAAQ;yCAAE,IAAI;;;;;;;;4BASjC,QAAQ;kCACF,iCAAiC;;;qBAG9C,IAAI,EAAE,QAAQ;qBACd,KAAK,EAAE,eAAe;qBACtB,WAAW,EAAE,4CAA4C;;;qBAGzD,IAAI,EAAE,OAAO;qBACb,KAAK,EAAE,UAAU;qBACjB,WAAW,EACT,oJAAoJ;qBACtJ,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAGC,OAAO;6BACL,OAAO;4BACR,OAAO;kCACD,kDAAkD;;;mCAGnD,QAAQ;qCAAU,OAAO;0CAAe,gBAAgB;;mCAnHlE,QAAQ;;iCAEZ,IAAI;qCACF,IAAI,EAAE,QAAQ;qCACd,KAAK,EAAE,MAAM;qCACb,WAAW,EAAE,eAAe;;iCAE9B,WAAW;qCACT,IAAI,EAAE,QAAQ;qCACd,KAAK,EAAE,aAAa;qCACpB,WAAW,EAAE,qCAAqC;;iCAEpD,WAAW;qCACT,IAAI,EAAE,QAAQ;qCACd,KAAK,EAAE,cAAc;qCACrB,WAAW,EAAE,oDAAoD;qCACjE,oBAAoB;;iCAEtB,YAAY;qCACV,IAAI,EAAE,QAAQ;qCACd,KAAK,EAAE,eAAe;qCACtB,WAAW,EAAE,8CAA8C;qCAC3D,oBAAoB;;iCAEtB,YAAY;qCACV,IAAI,EAAE,QAAQ;qCACd,KAAK,EAAE,eAAe;qCACtB,WAAW,EAAE,+EAA+E;qCAC5F,oBAAoB;;iCAEtB,MAAM;qCACJ,IAAI,EAAE,QAAQ;qCACd,KAAK,EAAE,QAAQ;qCACf,WAAW,EAAE,0EAA0E;qCACvF,oBAAoB;;;iDAGb,MAAM,EAAE,aAAa,EAAE,aAAa;;;;;;qBAoF3C,IAAI,EAAE,QAAQ;qBACd,KAAK,EAAE,aAAa;qBACpB,WAAW,EACT,4HAA4H;qBAC9H,YAAY,EAAE,eAAe;;;qBAG7B,IAAI,EAAE,QAAQ;qBACd,KAAK,EAAE,YAAY;qBACnB,WAAW,EAAE,0CAA0C;qBACvD,OAAO,EAAE,CAAC;qBACV,YAAY,EAAE,eAAe;;;qBAG7B,IAAI,EAAE,QAAQ;qBACd,KAAK,EAAE,aAAa;qBACpB,WAAW,EAAE,qCAAqC;qBAClD,OAAO,EAAE,CAAC;qBACV,OAAO,EAAE,CAAC;qBACV,YAAY,EAAE,eAAe;;;;;CAKA,CAAC;AAEpC,eAAO,MAAM,uBAAuB;mBAC5B,QAAQ;;iBAEZ,IAAI;qBACF,IAAI,EAAE,QAAQ;qBACd,KAAK,EAAE,MAAM;qBACb,WAAW,EAAE,yCAAyC;qBACtD,UAAU,EAAE,QAAQ;;iBAEtB,SAAS;qBACP,IAAI,EAAE,OAAO;qBACb,KAAK;+BApHH,QAAQ;;6BAEZ,EAAE;iCACA,IAAI,EAAE,QAAQ;iCACd,KAAK,EAAE,IAAI;iCACX,WAAW,EAAE,sCAAsC;;6BAErD,IAAI;iCACF,IAAI,EAAE,QAAQ;iCACd,KAAK,EAAE,MAAM;iCACb,WAAW,EAAE,gCAAgC;;6BAE/C,KAAK;iCACH,IAAI,EAAE,QAAQ;iCACd,KAAK,EAAE,OAAO;iCACd,WAAW,EAAE,uCAAuC;iCACpD,oBAAoB;;;6CAGb,IAAI,EAAE,MAAM,EAAE,OAAO;;;qBAkG5B,KAAK,EAAE,YAAY;qBACnB,WAAW,EAAE,mCAAmC;qBAChD,UAAU,EAAE,QAAQ;;;;;CAKS,CAAC;AAEpC;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,oBAAoB,GAAG,IAAI,CACrC,UAAU,CAAC,OAAO,sBAAsB,CAAC,EACzC,OAAO,GAAG,UAAU,CACrB,GAAG;IACF,QAAQ,CAAC,KAAK,EAAE,cAAc,EAAE,CAAC;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IAC/C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAC/E,MAAM,MAAM,qBAAqB,GAAG,UAAU,CAAC,oBAAoB,CAAC,CAAC;AAMrE,qBAAa,eAAgB,SAAQ,eAAe,CAClD,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,CACtB;IACC,OAAuB,IAAI,SAAqB;IAChD,OAAuB,QAAQ,SAAmB;IAClD,OAAuB,KAAK,SAAkB;IAC9C,OAAuB,WAAW,SACyF;IAC3H,OAAuB,WAAW,IAAI,cAAc,CAEnD;IACD,OAAuB,YAAY,IAAI,cAAc,CAEpD;IAED,wEAAwE;IACxE,OAAO,CAAC,kBAAkB,CAAqB;IAE/C;;;;OAIG;IACH,UAAyB,WAAW,CAClC,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAa3C;IAED,OAAO,CAAC,sBAAsB;IAaf,OAAO,CACpB,KAAK,EAAE,oBAAoB,EAC3B,cAAc,EAAE,eAAe,GAC9B,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAI5C;IAEe,aAAa,CAC3B,KAAK,EAAE,oBAAoB,EAC3B,OAAO,EAAE,eAAe,GACvB,aAAa,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC,CAGnD;CACF;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,UAAW,oBAAoB,WAAW,qBAAqB;;;;;;;;;EAEtF,CAAC;AAEF,OAAO,QAAQ,sBAAsB,CAAC,CAAC;IACrC,UAAU,QAAQ;QAChB,WAAW,EAAE,cAAc,CAAC,oBAAoB,EAAE,qBAAqB,EAAE,qBAAqB,CAAC,CAAC;KACjG;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AiTask.d.ts","sourceRoot":"","sources":["../../../src/task/base/AiTask.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;GAGG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,KAAK,EACV,eAAe,EACf,uBAAuB,EACvB,UAAU,EAEV,gBAAgB,EAChB,UAAU,EACX,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,IAAI,EAGJ,SAAS,EAEV,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,uBAAuB,CAAC;AAExE,OAAO,EAAS,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAiB3D,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC;CAC7B;AAED;;;;;;GAMG;AACH,qBAAa,MAAM,CACjB,KAAK,SAAS,WAAW,GAAG,WAAW,EACvC,MAAM,SAAS,UAAU,GAAG,UAAU,EACtC,MAAM,SAAS,UAAU,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CACpD,SAAQ,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC;IACnC,OAAuB,IAAI,EAAE,MAAM,CAAY;IAC/C,OAAuB,sBAAsB,EAAE,OAAO,CAAQ;IAE9D,OAAuB,YAAY,IAAI,gBAAgB,CAItD;IAEe,YAAY,IAAI,gBAAgB,CAoB/C;IAED,OAAuB,YAAY,IAAI,cAAc,CAEpD;IAMc,OAAO,CACpB,KAAK,EAAE,KAAK,EACZ,cAAc,EAAE,eAAe,GAC9B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA4B7B;IAMD;;;OAGG;IACH,UAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"AiTask.d.ts","sourceRoot":"","sources":["../../../src/task/base/AiTask.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;GAGG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,KAAK,EACV,eAAe,EACf,uBAAuB,EACvB,UAAU,EAEV,gBAAgB,EAChB,UAAU,EACX,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,IAAI,EAGJ,SAAS,EAEV,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,uBAAuB,CAAC;AAExE,OAAO,EAAS,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAiB3D,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC;CAC7B;AAED;;;;;;GAMG;AACH,qBAAa,MAAM,CACjB,KAAK,SAAS,WAAW,GAAG,WAAW,EACvC,MAAM,SAAS,UAAU,GAAG,UAAU,EACtC,MAAM,SAAS,UAAU,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CACpD,SAAQ,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC;IACnC,OAAuB,IAAI,EAAE,MAAM,CAAY;IAC/C,OAAuB,sBAAsB,EAAE,OAAO,CAAQ;IAE9D,OAAuB,YAAY,IAAI,gBAAgB,CAItD;IAEe,YAAY,IAAI,gBAAgB,CAoB/C;IAED,OAAuB,YAAY,IAAI,cAAc,CAEpD;IAMc,OAAO,CACpB,KAAK,EAAE,KAAK,EACZ,cAAc,EAAE,eAAe,GAC9B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA4B7B;IAMD;;;OAGG;IACH,UAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAsCpE;IAED;;OAEG;IACG,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC,CAYzF;IAED;;OAEG;IACH,UAAgB,mBAAmB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAG7E;IAMD;;;OAGG;IACY,eAAe,CAC5B,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAa7B;IAMD;;OAEG;IACmB,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CA+ClE;IAEqB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,CAqCzF;CACF"}
|
package/dist/task/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Copyright 2025 Steven Roussey <sroussey@gmail.com>
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import {
|
|
6
|
+
import { AiChatTask } from "./AiChatTask";
|
|
7
7
|
import { BackgroundRemovalTask } from "./BackgroundRemovalTask";
|
|
8
8
|
import { ChunkRetrievalTask } from "./ChunkRetrievalTask";
|
|
9
9
|
import { ChunkToVectorTask } from "./ChunkToVectorTask";
|
|
@@ -45,12 +45,9 @@ import { TopicSegmenterTask } from "./TopicSegmenterTask";
|
|
|
45
45
|
import { UnloadModelTask } from "./UnloadModelTask";
|
|
46
46
|
import { VectorQuantizeTask } from "./VectorQuantizeTask";
|
|
47
47
|
import { VectorSimilarityTask } from "./VectorSimilarityTask";
|
|
48
|
-
export declare const registerAiTasks: () => (typeof ToolCallingTask | typeof
|
|
49
|
-
export * from "./
|
|
50
|
-
export * from "./
|
|
51
|
-
export * from "./AgentUtils";
|
|
52
|
-
export * from "./MessageConversion";
|
|
53
|
-
export * from "./ToolCallingUtils";
|
|
48
|
+
export declare const registerAiTasks: () => (typeof ToolCallingTask | typeof AiChatTask | typeof BackgroundRemovalTask | typeof TextEmbeddingTask | typeof ChunkRetrievalTask | typeof ChunkToVectorTask | typeof ChunkVectorHybridSearchTask | typeof ChunkVectorSearchTask | typeof ChunkVectorUpsertTask | typeof CountTokensTask | typeof ContextBuilderTask | typeof TextNamedEntityRecognitionTask | typeof TextSummaryTask | typeof DocumentEnricherTask | typeof DocumentUpsertTask | typeof FaceDetectorTask | typeof FaceLandmarkerTask | typeof HandLandmarkerTask | typeof HierarchicalChunkerTask | typeof HierarchyJoinTask | typeof KbToDocumentsTask | typeof ImageClassificationTask | typeof ImageEmbeddingTask | typeof ImageSegmentationTask | typeof ImageToTextTask | typeof ModelSearchTask | typeof ObjectDetectionTask | typeof PoseLandmarkerTask | typeof QueryExpanderTask | typeof TextClassificationTask | typeof RerankerTask | typeof StructuralParserTask | typeof StructuredGenerationTask | typeof TextChunkerTask | typeof TextFillMaskTask | typeof TextGenerationTask | typeof TextLanguageDetectionTask | typeof TextQuestionAnswerTask | typeof TopicSegmenterTask | typeof UnloadModelTask | typeof VectorQuantizeTask | typeof VectorSimilarityTask)[];
|
|
49
|
+
export * from "./AiChatTask";
|
|
50
|
+
export * from "./ChatMessage";
|
|
54
51
|
export * from "./BackgroundRemovalTask";
|
|
55
52
|
export * from "./base/AiTask";
|
|
56
53
|
export * from "./base/AiTaskSchemas";
|
|
@@ -76,6 +73,7 @@ export * from "./ImageClassificationTask";
|
|
|
76
73
|
export * from "./ImageEmbeddingTask";
|
|
77
74
|
export * from "./ImageSegmentationTask";
|
|
78
75
|
export * from "./ImageToTextTask";
|
|
76
|
+
export * from "./MessageConversion";
|
|
79
77
|
export * from "./ModelInfoTask";
|
|
80
78
|
export * from "./ModelSearchTask";
|
|
81
79
|
export * from "./ObjectDetectionTask";
|
|
@@ -96,6 +94,7 @@ export * from "./TextRewriterTask";
|
|
|
96
94
|
export * from "./TextSummaryTask";
|
|
97
95
|
export * from "./TextTranslationTask";
|
|
98
96
|
export * from "./ToolCallingTask";
|
|
97
|
+
export * from "./ToolCallingUtils";
|
|
99
98
|
export * from "./TopicSegmenterTask";
|
|
100
99
|
export * from "./UnloadModelTask";
|
|
101
100
|
export * from "./VectorQuantizeTask";
|
package/dist/task/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/task/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/task/index.ts"],"names":[],"mappings":"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"}
|
package/dist/worker.js
CHANGED
|
@@ -92,7 +92,7 @@ class AiJob extends Job {
|
|
|
92
92
|
const timeoutMs = resolveAiJobTimeoutMs(input.aiProvider, input.timeoutMs);
|
|
93
93
|
const timeoutSignal = AbortSignal.timeout(timeoutMs);
|
|
94
94
|
const combinedSignal = AbortSignal.any([context.signal, timeoutSignal]);
|
|
95
|
-
return await fn(input.taskInput, model, context.updateProgress, combinedSignal, input.outputSchema);
|
|
95
|
+
return await fn(input.taskInput, model, context.updateProgress, combinedSignal, input.outputSchema, input.sessionId);
|
|
96
96
|
};
|
|
97
97
|
const runFnPromise = runFn();
|
|
98
98
|
return await Promise.race([runFnPromise, abortPromise]);
|
|
@@ -120,7 +120,7 @@ class AiJob extends Job {
|
|
|
120
120
|
const timeoutSignal = AbortSignal.timeout(timeoutMs);
|
|
121
121
|
const combinedSignal = AbortSignal.any([context.signal, timeoutSignal]);
|
|
122
122
|
try {
|
|
123
|
-
for await (const event of streamFn(input.taskInput, model, combinedSignal, input.outputSchema)) {
|
|
123
|
+
for await (const event of streamFn(input.taskInput, model, combinedSignal, input.outputSchema, input.sessionId)) {
|
|
124
124
|
if (event.type === "finish") {
|
|
125
125
|
lastFinishData = event.data;
|
|
126
126
|
}
|
|
@@ -216,6 +216,19 @@ class AiProviderRegistry {
|
|
|
216
216
|
}
|
|
217
217
|
return this.defaultStrategy;
|
|
218
218
|
}
|
|
219
|
+
createSession(providerName, model) {
|
|
220
|
+
const provider = this.providers.get(providerName);
|
|
221
|
+
if (!provider) {
|
|
222
|
+
throw new Error(`No provider found for "${providerName}". Register the provider before creating sessions.`);
|
|
223
|
+
}
|
|
224
|
+
return provider.createSession(model);
|
|
225
|
+
}
|
|
226
|
+
async disposeSession(providerName, sessionId) {
|
|
227
|
+
const provider = this.providers.get(providerName);
|
|
228
|
+
if (provider) {
|
|
229
|
+
await provider.disposeSession(sessionId);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
219
232
|
getProviderIdsForTask(taskType) {
|
|
220
233
|
const taskMap = this.runFnRegistry.get(taskType);
|
|
221
234
|
if (!taskMap)
|
|
@@ -229,9 +242,9 @@ class AiProviderRegistry {
|
|
|
229
242
|
this.runFnRegistry.get(taskType).set(modelProvider, runFn);
|
|
230
243
|
}
|
|
231
244
|
registerAsWorkerRunFn(modelProvider, taskType) {
|
|
232
|
-
const workerFn = async (input, model, update_progress, signal, outputSchema) => {
|
|
245
|
+
const workerFn = async (input, model, update_progress, signal, outputSchema, sessionId) => {
|
|
233
246
|
const workerManager = globalServiceRegistry.get(WORKER_MANAGER);
|
|
234
|
-
const result = await workerManager.callWorkerFunction(modelProvider, taskType, [input, model, outputSchema], {
|
|
247
|
+
const result = await workerManager.callWorkerFunction(modelProvider, taskType, [input, model, outputSchema, sessionId], {
|
|
235
248
|
signal,
|
|
236
249
|
onProgress: update_progress
|
|
237
250
|
});
|
|
@@ -246,9 +259,9 @@ class AiProviderRegistry {
|
|
|
246
259
|
this.streamFnRegistry.get(taskType).set(modelProvider, streamFn);
|
|
247
260
|
}
|
|
248
261
|
registerAsWorkerStreamFn(modelProvider, taskType) {
|
|
249
|
-
const streamFn = async function* (input, model, signal, outputSchema) {
|
|
262
|
+
const streamFn = async function* (input, model, signal, outputSchema, sessionId) {
|
|
250
263
|
const workerManager = globalServiceRegistry.get(WORKER_MANAGER);
|
|
251
|
-
yield* workerManager.callWorkerStreamFunction(modelProvider, taskType, [input, model, outputSchema], { signal });
|
|
264
|
+
yield* workerManager.callWorkerStreamFunction(modelProvider, taskType, [input, model, outputSchema, sessionId], { signal });
|
|
252
265
|
};
|
|
253
266
|
this.registerStreamFn(modelProvider, taskType, streamFn);
|
|
254
267
|
}
|
|
@@ -401,6 +414,10 @@ class AiProvider {
|
|
|
401
414
|
}
|
|
402
415
|
async onInitialize(_options) {}
|
|
403
416
|
async dispose() {}
|
|
417
|
+
createSession(_model) {
|
|
418
|
+
return crypto.randomUUID();
|
|
419
|
+
}
|
|
420
|
+
async disposeSession(_sessionId) {}
|
|
404
421
|
async afterRegister(_options) {}
|
|
405
422
|
}
|
|
406
423
|
// src/task/ToolCallingUtils.ts
|
|
@@ -477,66 +494,46 @@ function toOpenAIMessages(input) {
|
|
|
477
494
|
}
|
|
478
495
|
for (const msg of inputMessages) {
|
|
479
496
|
if (msg.role === "user") {
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
}
|
|
489
|
-
parts.push({
|
|
490
|
-
type: "image_url",
|
|
491
|
-
image_url: { url: `data:${b.mimeType};base64,${b.data}` }
|
|
492
|
-
});
|
|
493
|
-
} else if (b.type === "audio") {
|
|
494
|
-
const format = b.mimeType.replace(/^audio\//, "");
|
|
495
|
-
parts.push({
|
|
496
|
-
type: "input_audio",
|
|
497
|
-
input_audio: { data: b.data, format }
|
|
498
|
-
});
|
|
499
|
-
}
|
|
500
|
-
}
|
|
501
|
-
messages.push({ role: "user", content: parts });
|
|
502
|
-
} else {
|
|
503
|
-
try {
|
|
504
|
-
messages.push({ role: "user", content: JSON.stringify(msg.content) });
|
|
505
|
-
} catch {
|
|
506
|
-
messages.push({ role: "user", content: String(msg.content) });
|
|
497
|
+
const parts = [];
|
|
498
|
+
for (const block of msg.content) {
|
|
499
|
+
if (block.type === "text") {
|
|
500
|
+
parts.push({ type: "text", text: block.text });
|
|
501
|
+
} else if (block.type === "image") {
|
|
502
|
+
parts.push({
|
|
503
|
+
type: "image_url",
|
|
504
|
+
image_url: { url: `data:${block.mimeType};base64,${block.data}` }
|
|
505
|
+
});
|
|
507
506
|
}
|
|
508
507
|
}
|
|
508
|
+
messages.push({ role: "user", content: parts });
|
|
509
509
|
} else if (msg.role === "assistant") {
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
function: {
|
|
518
|
-
name: b.name,
|
|
519
|
-
arguments: JSON.stringify(b.input)
|
|
520
|
-
}
|
|
521
|
-
}));
|
|
522
|
-
const entry = {
|
|
523
|
-
role: "assistant",
|
|
524
|
-
content: textParts.length > 0 ? textParts : null
|
|
525
|
-
};
|
|
526
|
-
if (toolCalls.length > 0) {
|
|
527
|
-
entry.tool_calls = toolCalls;
|
|
510
|
+
const textParts = msg.content.filter((b) => b.type === "text").map((b) => b.text).join("");
|
|
511
|
+
const toolCalls = msg.content.filter((b) => b.type === "tool_use").map((b) => ({
|
|
512
|
+
id: b.id,
|
|
513
|
+
type: "function",
|
|
514
|
+
function: {
|
|
515
|
+
name: b.name,
|
|
516
|
+
arguments: JSON.stringify(b.input)
|
|
528
517
|
}
|
|
529
|
-
|
|
518
|
+
}));
|
|
519
|
+
const entry = {
|
|
520
|
+
role: "assistant",
|
|
521
|
+
content: textParts.length > 0 ? textParts : null
|
|
522
|
+
};
|
|
523
|
+
if (toolCalls.length > 0) {
|
|
524
|
+
entry.tool_calls = toolCalls;
|
|
530
525
|
}
|
|
531
|
-
|
|
526
|
+
messages.push(entry);
|
|
527
|
+
} else if (msg.role === "tool") {
|
|
532
528
|
for (const block of msg.content) {
|
|
533
|
-
|
|
529
|
+
if (block.type !== "tool_result")
|
|
530
|
+
continue;
|
|
534
531
|
let content;
|
|
535
|
-
if (
|
|
536
|
-
content =
|
|
537
|
-
} else
|
|
532
|
+
if (block.content.length === 1 && block.content[0].type === "text") {
|
|
533
|
+
content = block.content[0].text;
|
|
534
|
+
} else {
|
|
538
535
|
const parts = [];
|
|
539
|
-
for (const inner of
|
|
536
|
+
for (const inner of block.content) {
|
|
540
537
|
if (inner.type === "text") {
|
|
541
538
|
parts.push({ type: "text", text: inner.text });
|
|
542
539
|
} else if (inner.type === "image") {
|
|
@@ -547,14 +544,8 @@ function toOpenAIMessages(input) {
|
|
|
547
544
|
}
|
|
548
545
|
}
|
|
549
546
|
content = parts;
|
|
550
|
-
} else {
|
|
551
|
-
content = "";
|
|
552
547
|
}
|
|
553
|
-
messages.push({
|
|
554
|
-
role: "tool",
|
|
555
|
-
content,
|
|
556
|
-
tool_call_id: b.tool_use_id
|
|
557
|
-
});
|
|
548
|
+
messages.push({ role: "tool", content, tool_call_id: block.tool_use_id });
|
|
558
549
|
}
|
|
559
550
|
}
|
|
560
551
|
}
|
|
@@ -584,41 +575,18 @@ function toTextFlatMessages(input) {
|
|
|
584
575
|
}
|
|
585
576
|
for (const msg of inputMessages) {
|
|
586
577
|
if (msg.role === "user") {
|
|
587
|
-
|
|
588
|
-
if (typeof msg.content === "string") {
|
|
589
|
-
content = msg.content;
|
|
590
|
-
} else if (Array.isArray(msg.content) && msg.content.length > 0 && typeof msg.content[0]?.type === "string") {
|
|
591
|
-
content = msg.content.filter((b) => b.type === "text").map((b) => b.text).join("");
|
|
592
|
-
} else if (msg.content != null) {
|
|
593
|
-
try {
|
|
594
|
-
content = JSON.stringify(msg.content);
|
|
595
|
-
} catch {
|
|
596
|
-
content = String(msg.content);
|
|
597
|
-
}
|
|
598
|
-
}
|
|
578
|
+
const content = msg.content.filter((b) => b.type === "text").map((b) => b.text).join("");
|
|
599
579
|
messages.push({ role: "user", content });
|
|
600
580
|
} else if (msg.role === "assistant") {
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
}
|
|
605
|
-
} else if (Array.isArray(msg.content)) {
|
|
606
|
-
const text = msg.content.filter((b) => b.type === "text").map((b) => b.text).join("");
|
|
607
|
-
if (text) {
|
|
608
|
-
messages.push({ role: "assistant", content: text });
|
|
609
|
-
}
|
|
581
|
+
const text = msg.content.filter((b) => b.type === "text").map((b) => b.text).join("");
|
|
582
|
+
if (text) {
|
|
583
|
+
messages.push({ role: "assistant", content: text });
|
|
610
584
|
}
|
|
611
|
-
} else if (msg.role === "tool"
|
|
585
|
+
} else if (msg.role === "tool") {
|
|
612
586
|
for (const block of msg.content) {
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
content = b.content;
|
|
617
|
-
} else if (Array.isArray(b.content)) {
|
|
618
|
-
content = b.content.filter((inner) => inner.type === "text").map((inner) => inner.text).join("");
|
|
619
|
-
} else {
|
|
620
|
-
content = "";
|
|
621
|
-
}
|
|
587
|
+
if (block.type !== "tool_result")
|
|
588
|
+
continue;
|
|
589
|
+
const content = block.content.filter((inner) => inner.type === "text").map((inner) => inner.text).join("");
|
|
622
590
|
messages.push({ role: "tool", content });
|
|
623
591
|
}
|
|
624
592
|
}
|
|
@@ -691,4 +659,4 @@ export {
|
|
|
691
659
|
AiProvider
|
|
692
660
|
};
|
|
693
661
|
|
|
694
|
-
//# debugId=
|
|
662
|
+
//# debugId=447D7588D545BC8C64756E2164756E21
|