modelfusion 0.49.0 → 0.50.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 (79) hide show
  1. package/README.md +172 -154
  2. package/core/FunctionEvent.d.ts +9 -1
  3. package/core/FunctionOptions.d.ts +4 -0
  4. package/core/executeFunctionCall.cjs +85 -0
  5. package/core/executeFunctionCall.d.ts +10 -0
  6. package/core/executeFunctionCall.js +81 -0
  7. package/guard/GuardEvent.cjs +2 -0
  8. package/guard/GuardEvent.d.ts +7 -0
  9. package/guard/GuardEvent.js +1 -0
  10. package/guard/guard.cjs +60 -54
  11. package/guard/guard.d.ts +2 -1
  12. package/guard/guard.js +60 -54
  13. package/guard/index.cjs +1 -0
  14. package/guard/index.d.ts +1 -0
  15. package/guard/index.js +1 -0
  16. package/model-function/embed/EmbeddingEvent.d.ts +2 -2
  17. package/model-function/embed/embed.cjs +2 -2
  18. package/model-function/embed/embed.js +2 -2
  19. package/model-function/executeStandardCall.cjs +2 -0
  20. package/model-function/executeStandardCall.js +2 -0
  21. package/model-function/executeStreamCall.cjs +2 -0
  22. package/model-function/executeStreamCall.js +2 -0
  23. package/model-function/generate-image/ImageGenerationEvent.d.ts +2 -2
  24. package/model-function/generate-image/generateImage.cjs +1 -1
  25. package/model-function/generate-image/generateImage.js +1 -1
  26. package/model-function/generate-speech/SpeechGenerationEvent.d.ts +4 -4
  27. package/model-function/generate-speech/generateSpeech.cjs +1 -1
  28. package/model-function/generate-speech/generateSpeech.js +1 -1
  29. package/model-function/generate-speech/streamSpeech.cjs +1 -1
  30. package/model-function/generate-speech/streamSpeech.js +1 -1
  31. package/model-function/generate-structure/StructureGenerationEvent.d.ts +2 -2
  32. package/model-function/generate-structure/StructureStreamingEvent.d.ts +2 -2
  33. package/model-function/generate-structure/generateStructure.cjs +1 -1
  34. package/model-function/generate-structure/generateStructure.js +1 -1
  35. package/model-function/generate-structure/generateStructureOrText.cjs +1 -1
  36. package/model-function/generate-structure/generateStructureOrText.js +1 -1
  37. package/model-function/generate-structure/streamStructure.cjs +1 -1
  38. package/model-function/generate-structure/streamStructure.js +1 -1
  39. package/model-function/generate-text/TextGenerationEvent.d.ts +4 -4
  40. package/model-function/generate-text/generateText.cjs +1 -1
  41. package/model-function/generate-text/generateText.js +1 -1
  42. package/model-function/generate-text/streamText.cjs +1 -1
  43. package/model-function/generate-text/streamText.js +1 -1
  44. package/model-function/generate-transcription/TranscriptionEvent.d.ts +2 -2
  45. package/model-function/generate-transcription/generateTranscription.cjs +1 -1
  46. package/model-function/generate-transcription/generateTranscription.js +1 -1
  47. package/model-provider/openai/OpenAICompletionModel.d.ts +4 -4
  48. package/model-provider/openai/OpenAICostCalculator.cjs +5 -5
  49. package/model-provider/openai/OpenAICostCalculator.js +5 -5
  50. package/model-provider/openai/OpenAITextEmbeddingModel.d.ts +3 -3
  51. package/model-provider/openai/chat/OpenAIChatModel.d.ts +7 -7
  52. package/package.json +1 -1
  53. package/retriever/retrieve.cjs +7 -75
  54. package/retriever/retrieve.js +7 -75
  55. package/tool/UseToolEvent.cjs +2 -0
  56. package/tool/UseToolEvent.d.ts +7 -0
  57. package/tool/UseToolEvent.js +1 -0
  58. package/tool/UseToolOrGenerateTextEvent.cjs +2 -0
  59. package/tool/UseToolOrGenerateTextEvent.d.ts +7 -0
  60. package/tool/UseToolOrGenerateTextEvent.js +1 -0
  61. package/tool/executeTool.cjs +2 -0
  62. package/tool/executeTool.js +2 -0
  63. package/tool/index.cjs +2 -0
  64. package/tool/index.d.ts +2 -0
  65. package/tool/index.js +2 -0
  66. package/tool/useTool.cjs +18 -10
  67. package/tool/useTool.js +18 -10
  68. package/tool/useToolOrGenerateText.cjs +34 -26
  69. package/tool/useToolOrGenerateText.js +34 -26
  70. package/vector-index/UpsertIntoVectorIndexEvent.cjs +2 -0
  71. package/vector-index/UpsertIntoVectorIndexEvent.d.ts +9 -0
  72. package/vector-index/UpsertIntoVectorIndexEvent.js +1 -0
  73. package/vector-index/VectorIndexRetriever.cjs +1 -4
  74. package/vector-index/VectorIndexRetriever.js +1 -4
  75. package/vector-index/index.cjs +1 -0
  76. package/vector-index/index.d.ts +1 -0
  77. package/vector-index/index.js +1 -0
  78. package/vector-index/upsertIntoVectorIndex.cjs +16 -7
  79. package/vector-index/upsertIntoVectorIndex.js +16 -7
@@ -7,7 +7,7 @@ function streamText(model, prompt, options) {
7
7
  let accumulatedText = "";
8
8
  let lastFullDelta;
9
9
  return new AsyncIterableResultPromise_js_1.AsyncIterableResultPromise((0, executeStreamCall_js_1.executeStreamCall)({
10
- functionType: "text-streaming",
10
+ functionType: "stream-text",
11
11
  input: prompt,
12
12
  model,
13
13
  options,
@@ -4,7 +4,7 @@ export function streamText(model, prompt, options) {
4
4
  let accumulatedText = "";
5
5
  let lastFullDelta;
6
6
  return new AsyncIterableResultPromise(executeStreamCall({
7
- functionType: "text-streaming",
7
+ functionType: "stream-text",
8
8
  input: prompt,
9
9
  model,
10
10
  options,
@@ -1,6 +1,6 @@
1
1
  import { BaseModelCallFinishedEvent, BaseModelCallStartedEvent } from "../ModelCallEvent.js";
2
2
  export interface TranscriptionStartedEvent extends BaseModelCallStartedEvent {
3
- functionType: "transcription";
3
+ functionType: "generate-transcription";
4
4
  }
5
5
  export type TranscriptionFinishedEventResult = {
6
6
  status: "success";
@@ -13,6 +13,6 @@ export type TranscriptionFinishedEventResult = {
13
13
  status: "abort";
14
14
  };
15
15
  export interface TranscriptionFinishedEvent extends BaseModelCallFinishedEvent {
16
- functionType: "transcription";
16
+ functionType: "generate-transcription";
17
17
  result: TranscriptionFinishedEventResult;
18
18
  }
@@ -19,7 +19,7 @@ const ModelFunctionPromise_js_1 = require("../ModelFunctionPromise.cjs");
19
19
  */
20
20
  function generateTranscription(model, data, options) {
21
21
  return new ModelFunctionPromise_js_1.ModelFunctionPromise((0, executeStandardCall_js_1.executeStandardCall)({
22
- functionType: "transcription",
22
+ functionType: "generate-transcription",
23
23
  input: data,
24
24
  model,
25
25
  options,
@@ -16,7 +16,7 @@ import { ModelFunctionPromise } from "../ModelFunctionPromise.js";
16
16
  */
17
17
  export function generateTranscription(model, data, options) {
18
18
  return new ModelFunctionPromise(executeStandardCall({
19
- functionType: "transcription",
19
+ functionType: "generate-transcription",
20
20
  input: data,
21
21
  model,
22
22
  options,
@@ -148,12 +148,12 @@ export declare class OpenAICompletionModel extends AbstractModel<OpenAICompletio
148
148
  doGenerateText(prompt: string, options?: FunctionOptions): Promise<{
149
149
  response: {
150
150
  object: "text_completion";
151
- model: string;
152
151
  usage: {
153
152
  prompt_tokens: number;
154
153
  completion_tokens: number;
155
154
  total_tokens: number;
156
155
  };
156
+ model: string;
157
157
  id: string;
158
158
  created: number;
159
159
  choices: {
@@ -221,12 +221,12 @@ declare const OpenAICompletionResponseSchema: z.ZodObject<{
221
221
  }>;
222
222
  }, "strip", z.ZodTypeAny, {
223
223
  object: "text_completion";
224
- model: string;
225
224
  usage: {
226
225
  prompt_tokens: number;
227
226
  completion_tokens: number;
228
227
  total_tokens: number;
229
228
  };
229
+ model: string;
230
230
  id: string;
231
231
  created: number;
232
232
  choices: {
@@ -237,12 +237,12 @@ declare const OpenAICompletionResponseSchema: z.ZodObject<{
237
237
  }[];
238
238
  }, {
239
239
  object: "text_completion";
240
- model: string;
241
240
  usage: {
242
241
  prompt_tokens: number;
243
242
  completion_tokens: number;
244
243
  total_tokens: number;
245
244
  };
245
+ model: string;
246
246
  id: string;
247
247
  created: number;
248
248
  choices: {
@@ -265,12 +265,12 @@ export declare const OpenAITextResponseFormat: {
265
265
  stream: false;
266
266
  handler: ResponseHandler<{
267
267
  object: "text_completion";
268
- model: string;
269
268
  usage: {
270
269
  prompt_tokens: number;
271
270
  completion_tokens: number;
272
271
  total_tokens: number;
273
272
  };
273
+ model: string;
274
274
  id: string;
275
275
  created: number;
276
276
  choices: {
@@ -19,12 +19,12 @@ class OpenAICostCalculator {
19
19
  const type = call.functionType;
20
20
  const model = call.model.modelName;
21
21
  switch (type) {
22
- case "image-generation": {
22
+ case "generate-image": {
23
23
  return (0, OpenAIImageGenerationModel_js_1.calculateOpenAIImageGenerationCostInMillicents)({
24
24
  settings: call.settings,
25
25
  });
26
26
  }
27
- case "embedding": {
27
+ case "embed": {
28
28
  if (model == null) {
29
29
  return null;
30
30
  }
@@ -39,8 +39,8 @@ class OpenAICostCalculator {
39
39
  }
40
40
  break;
41
41
  }
42
- case "structure-generation":
43
- case "text-generation": {
42
+ case "generate-structure":
43
+ case "generate-text": {
44
44
  if (model == null) {
45
45
  return null;
46
46
  }
@@ -58,7 +58,7 @@ class OpenAICostCalculator {
58
58
  }
59
59
  break;
60
60
  }
61
- case "transcription": {
61
+ case "generate-transcription": {
62
62
  if (model == null) {
63
63
  return null;
64
64
  }
@@ -16,12 +16,12 @@ export class OpenAICostCalculator {
16
16
  const type = call.functionType;
17
17
  const model = call.model.modelName;
18
18
  switch (type) {
19
- case "image-generation": {
19
+ case "generate-image": {
20
20
  return calculateOpenAIImageGenerationCostInMillicents({
21
21
  settings: call.settings,
22
22
  });
23
23
  }
24
- case "embedding": {
24
+ case "embed": {
25
25
  if (model == null) {
26
26
  return null;
27
27
  }
@@ -36,8 +36,8 @@ export class OpenAICostCalculator {
36
36
  }
37
37
  break;
38
38
  }
39
- case "structure-generation":
40
- case "text-generation": {
39
+ case "generate-structure":
40
+ case "generate-text": {
41
41
  if (model == null) {
42
42
  return null;
43
43
  }
@@ -55,7 +55,7 @@ export class OpenAICostCalculator {
55
55
  }
56
56
  break;
57
57
  }
58
- case "transcription": {
58
+ case "generate-transcription": {
59
59
  if (model == null) {
60
60
  return null;
61
61
  }
@@ -50,11 +50,11 @@ export declare class OpenAITextEmbeddingModel extends AbstractModel<OpenAITextEm
50
50
  doEmbedValues(texts: string[], options?: FunctionOptions): Promise<{
51
51
  response: {
52
52
  object: "list";
53
- model: string;
54
53
  usage: {
55
54
  prompt_tokens: number;
56
55
  total_tokens: number;
57
56
  };
57
+ model: string;
58
58
  data: {
59
59
  object: "embedding";
60
60
  embedding: number[];
@@ -93,11 +93,11 @@ declare const openAITextEmbeddingResponseSchema: z.ZodObject<{
93
93
  }>;
94
94
  }, "strip", z.ZodTypeAny, {
95
95
  object: "list";
96
- model: string;
97
96
  usage: {
98
97
  prompt_tokens: number;
99
98
  total_tokens: number;
100
99
  };
100
+ model: string;
101
101
  data: {
102
102
  object: "embedding";
103
103
  embedding: number[];
@@ -105,11 +105,11 @@ declare const openAITextEmbeddingResponseSchema: z.ZodObject<{
105
105
  }[];
106
106
  }, {
107
107
  object: "list";
108
- model: string;
109
108
  usage: {
110
109
  prompt_tokens: number;
111
110
  total_tokens: number;
112
111
  };
112
+ model: string;
113
113
  data: {
114
114
  object: "embedding";
115
115
  embedding: number[];
@@ -158,12 +158,12 @@ export declare class OpenAIChatModel extends AbstractModel<OpenAIChatSettings> i
158
158
  doGenerateText(prompt: OpenAIChatMessage[], options?: FunctionOptions): Promise<{
159
159
  response: {
160
160
  object: "chat.completion";
161
- model: string;
162
161
  usage: {
163
162
  prompt_tokens: number;
164
163
  completion_tokens: number;
165
164
  total_tokens: number;
166
165
  };
166
+ model: string;
167
167
  id: string;
168
168
  created: number;
169
169
  choices: {
@@ -198,12 +198,12 @@ export declare class OpenAIChatModel extends AbstractModel<OpenAIChatSettings> i
198
198
  doGenerateStructure(structureDefinition: StructureDefinition<string, unknown>, prompt: OpenAIChatMessage[], options?: FunctionOptions): Promise<{
199
199
  response: {
200
200
  object: "chat.completion";
201
- model: string;
202
201
  usage: {
203
202
  prompt_tokens: number;
204
203
  completion_tokens: number;
205
204
  total_tokens: number;
206
205
  };
206
+ model: string;
207
207
  id: string;
208
208
  created: number;
209
209
  choices: {
@@ -232,12 +232,12 @@ export declare class OpenAIChatModel extends AbstractModel<OpenAIChatSettings> i
232
232
  doGenerateStructureOrText(structureDefinitions: Array<StructureDefinition<string, unknown>>, prompt: OpenAIChatMessage[], options?: FunctionOptions): Promise<{
233
233
  response: {
234
234
  object: "chat.completion";
235
- model: string;
236
235
  usage: {
237
236
  prompt_tokens: number;
238
237
  completion_tokens: number;
239
238
  total_tokens: number;
240
239
  };
240
+ model: string;
241
241
  id: string;
242
242
  created: number;
243
243
  choices: {
@@ -268,12 +268,12 @@ export declare class OpenAIChatModel extends AbstractModel<OpenAIChatSettings> i
268
268
  } | {
269
269
  response: {
270
270
  object: "chat.completion";
271
- model: string;
272
271
  usage: {
273
272
  prompt_tokens: number;
274
273
  completion_tokens: number;
275
274
  total_tokens: number;
276
275
  };
276
+ model: string;
277
277
  id: string;
278
278
  created: number;
279
279
  choices: {
@@ -395,12 +395,12 @@ declare const openAIChatResponseSchema: z.ZodObject<{
395
395
  }>;
396
396
  }, "strip", z.ZodTypeAny, {
397
397
  object: "chat.completion";
398
- model: string;
399
398
  usage: {
400
399
  prompt_tokens: number;
401
400
  completion_tokens: number;
402
401
  total_tokens: number;
403
402
  };
403
+ model: string;
404
404
  id: string;
405
405
  created: number;
406
406
  choices: {
@@ -418,12 +418,12 @@ declare const openAIChatResponseSchema: z.ZodObject<{
418
418
  }[];
419
419
  }, {
420
420
  object: "chat.completion";
421
- model: string;
422
421
  usage: {
423
422
  prompt_tokens: number;
424
423
  completion_tokens: number;
425
424
  total_tokens: number;
426
425
  };
426
+ model: string;
427
427
  id: string;
428
428
  created: number;
429
429
  choices: {
@@ -453,12 +453,12 @@ export declare const OpenAIChatResponseFormat: {
453
453
  stream: false;
454
454
  handler: ResponseHandler<{
455
455
  object: "chat.completion";
456
- model: string;
457
456
  usage: {
458
457
  prompt_tokens: number;
459
458
  completion_tokens: number;
460
459
  total_tokens: number;
461
460
  };
461
+ model: string;
462
462
  id: string;
463
463
  created: number;
464
464
  choices: {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "modelfusion",
3
3
  "description": "Build multimodal applications, chatbots, and agents with JavaScript and TypeScript.",
4
- "version": "0.49.0",
4
+ "version": "0.50.0",
5
5
  "author": "Lars Grammel",
6
6
  "license": "MIT",
7
7
  "keywords": [
@@ -1,83 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.retrieve = void 0;
4
- const nanoid_1 = require("nanoid");
5
- const FunctionEventSource_js_1 = require("../core/FunctionEventSource.cjs");
6
- const GlobalFunctionLogging_js_1 = require("../core/GlobalFunctionLogging.cjs");
7
- const GlobalFunctionObservers_js_1 = require("../core/GlobalFunctionObservers.cjs");
8
- const AbortError_js_1 = require("../core/api/AbortError.cjs");
9
- const getFunctionCallLogger_js_1 = require("../core/getFunctionCallLogger.cjs");
10
- const getRun_js_1 = require("../core/getRun.cjs");
11
- const DurationMeasurement_js_1 = require("../util/DurationMeasurement.cjs");
12
- const runSafe_js_1 = require("../util/runSafe.cjs");
4
+ const executeFunctionCall_js_1 = require("../core/executeFunctionCall.cjs");
13
5
  async function retrieve(retriever, query, options) {
14
- const run = await (0, getRun_js_1.getRun)(options?.run);
15
- const eventSource = new FunctionEventSource_js_1.FunctionEventSource({
16
- observers: [
17
- ...(0, getFunctionCallLogger_js_1.getFunctionCallLogger)(options?.logging ?? (0, GlobalFunctionLogging_js_1.getGlobalFunctionLogging)()),
18
- ...(0, GlobalFunctionObservers_js_1.getGlobalFunctionObservers)(),
19
- ...(run?.functionObserver != null ? [run.functionObserver] : []),
20
- ...(options?.observers ?? []),
21
- ],
22
- errorHandler: run?.errorHandler,
23
- });
24
- const durationMeasurement = (0, DurationMeasurement_js_1.startDurationMeasurement)();
25
- const startMetadata = {
6
+ return (0, executeFunctionCall_js_1.executeFunctionCall)({
7
+ options,
8
+ input: query,
26
9
  functionType: "retrieve",
27
- callId: `call-${(0, nanoid_1.nanoid)()}`,
28
- runId: run?.runId,
29
- sessionId: run?.sessionId,
30
- userId: run?.userId,
31
- functionId: options?.functionId,
32
- query,
33
- timestamp: durationMeasurement.startDate,
34
- startTimestamp: durationMeasurement.startDate,
35
- };
36
- eventSource.notify({
37
- eventType: "started",
38
- ...startMetadata,
39
- });
40
- const result = await (0, runSafe_js_1.runSafe)(() => retriever.retrieve(query, {
41
- functionId: options?.functionId,
42
- logging: options?.logging,
43
- observers: options?.observers,
44
- run,
45
- }));
46
- const finishMetadata = {
47
- eventType: "finished",
48
- ...startMetadata,
49
- finishTimestamp: new Date(),
50
- durationInMs: durationMeasurement.durationInMs,
51
- };
52
- if (!result.ok) {
53
- if (result.isAborted) {
54
- eventSource.notify({
55
- ...finishMetadata,
56
- eventType: "finished",
57
- result: {
58
- status: "abort",
59
- },
60
- });
61
- throw new AbortError_js_1.AbortError();
62
- }
63
- eventSource.notify({
64
- ...finishMetadata,
65
- eventType: "finished",
66
- result: {
67
- status: "error",
68
- error: result.error,
69
- },
70
- });
71
- throw result.error;
72
- }
73
- eventSource.notify({
74
- ...finishMetadata,
75
- eventType: "finished",
76
- result: {
77
- status: "success",
78
- value: result.value,
79
- },
10
+ execute: (options) => retriever.retrieve(query, options),
11
+ inputPropertyName: "query",
12
+ outputPropertyName: "results",
80
13
  });
81
- return result.value;
82
14
  }
83
15
  exports.retrieve = retrieve;
@@ -1,79 +1,11 @@
1
- import { nanoid as createId } from "nanoid";
2
- import { FunctionEventSource } from "../core/FunctionEventSource.js";
3
- import { getGlobalFunctionLogging } from "../core/GlobalFunctionLogging.js";
4
- import { getGlobalFunctionObservers } from "../core/GlobalFunctionObservers.js";
5
- import { AbortError } from "../core/api/AbortError.js";
6
- import { getFunctionCallLogger } from "../core/getFunctionCallLogger.js";
7
- import { getRun } from "../core/getRun.js";
8
- import { startDurationMeasurement } from "../util/DurationMeasurement.js";
9
- import { runSafe } from "../util/runSafe.js";
1
+ import { executeFunctionCall } from "../core/executeFunctionCall.js";
10
2
  export async function retrieve(retriever, query, options) {
11
- const run = await getRun(options?.run);
12
- const eventSource = new FunctionEventSource({
13
- observers: [
14
- ...getFunctionCallLogger(options?.logging ?? getGlobalFunctionLogging()),
15
- ...getGlobalFunctionObservers(),
16
- ...(run?.functionObserver != null ? [run.functionObserver] : []),
17
- ...(options?.observers ?? []),
18
- ],
19
- errorHandler: run?.errorHandler,
20
- });
21
- const durationMeasurement = startDurationMeasurement();
22
- const startMetadata = {
3
+ return executeFunctionCall({
4
+ options,
5
+ input: query,
23
6
  functionType: "retrieve",
24
- callId: `call-${createId()}`,
25
- runId: run?.runId,
26
- sessionId: run?.sessionId,
27
- userId: run?.userId,
28
- functionId: options?.functionId,
29
- query,
30
- timestamp: durationMeasurement.startDate,
31
- startTimestamp: durationMeasurement.startDate,
32
- };
33
- eventSource.notify({
34
- eventType: "started",
35
- ...startMetadata,
36
- });
37
- const result = await runSafe(() => retriever.retrieve(query, {
38
- functionId: options?.functionId,
39
- logging: options?.logging,
40
- observers: options?.observers,
41
- run,
42
- }));
43
- const finishMetadata = {
44
- eventType: "finished",
45
- ...startMetadata,
46
- finishTimestamp: new Date(),
47
- durationInMs: durationMeasurement.durationInMs,
48
- };
49
- if (!result.ok) {
50
- if (result.isAborted) {
51
- eventSource.notify({
52
- ...finishMetadata,
53
- eventType: "finished",
54
- result: {
55
- status: "abort",
56
- },
57
- });
58
- throw new AbortError();
59
- }
60
- eventSource.notify({
61
- ...finishMetadata,
62
- eventType: "finished",
63
- result: {
64
- status: "error",
65
- error: result.error,
66
- },
67
- });
68
- throw result.error;
69
- }
70
- eventSource.notify({
71
- ...finishMetadata,
72
- eventType: "finished",
73
- result: {
74
- status: "success",
75
- value: result.value,
76
- },
7
+ execute: (options) => retriever.retrieve(query, options),
8
+ inputPropertyName: "query",
9
+ outputPropertyName: "results",
77
10
  });
78
- return result.value;
79
11
  }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,7 @@
1
+ import { BaseFunctionFinishedEvent, BaseFunctionStartedEvent } from "../core/FunctionEvent.js";
2
+ export interface UseToolStartedEvent extends BaseFunctionStartedEvent {
3
+ functionType: "use-tool";
4
+ }
5
+ export interface UseToolFinishedEvent extends BaseFunctionFinishedEvent {
6
+ functionType: "use-tool";
7
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,7 @@
1
+ import { BaseFunctionFinishedEvent, BaseFunctionStartedEvent } from "../core/FunctionEvent.js";
2
+ export interface UseToolOrGenerateTextStartedEvent extends BaseFunctionStartedEvent {
3
+ functionType: "use-tool-or-generate-text";
4
+ }
5
+ export interface UseToolOrGenerateTextFinishedEvent extends BaseFunctionFinishedEvent {
6
+ functionType: "use-tool-or-generate-text";
7
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -69,6 +69,7 @@ async function doExecuteTool(tool, input, options) {
69
69
  const metadata = {
70
70
  functionType: "execute-tool",
71
71
  callId: `call-${(0, nanoid_1.nanoid)()}`,
72
+ parentCallId: options?.parentCallId,
72
73
  runId: run?.runId,
73
74
  sessionId: run?.sessionId,
74
75
  userId: run?.userId,
@@ -87,6 +88,7 @@ async function doExecuteTool(tool, input, options) {
87
88
  logging: options?.logging,
88
89
  observers: options?.observers,
89
90
  run,
91
+ parentCallId: metadata.callId,
90
92
  }));
91
93
  const finishMetadata = {
92
94
  ...metadata,
@@ -64,6 +64,7 @@ async function doExecuteTool(tool, input, options) {
64
64
  const metadata = {
65
65
  functionType: "execute-tool",
66
66
  callId: `call-${createId()}`,
67
+ parentCallId: options?.parentCallId,
67
68
  runId: run?.runId,
68
69
  sessionId: run?.sessionId,
69
70
  userId: run?.userId,
@@ -82,6 +83,7 @@ async function doExecuteTool(tool, input, options) {
82
83
  logging: options?.logging,
83
84
  observers: options?.observers,
84
85
  run,
86
+ parentCallId: metadata.callId,
85
87
  }));
86
88
  const finishMetadata = {
87
89
  ...metadata,
package/tool/index.cjs CHANGED
@@ -19,6 +19,8 @@ __exportStar(require("./InvalidToolNameError.cjs"), exports);
19
19
  __exportStar(require("./NoSuchToolError.cjs"), exports);
20
20
  __exportStar(require("./Tool.cjs"), exports);
21
21
  __exportStar(require("./ToolExecutionError.cjs"), exports);
22
+ __exportStar(require("./UseToolEvent.cjs"), exports);
23
+ __exportStar(require("./UseToolOrGenerateTextEvent.cjs"), exports);
22
24
  __exportStar(require("./WebSearchTool.cjs"), exports);
23
25
  __exportStar(require("./executeTool.cjs"), exports);
24
26
  __exportStar(require("./useTool.cjs"), exports);
package/tool/index.d.ts CHANGED
@@ -3,6 +3,8 @@ export * from "./InvalidToolNameError.js";
3
3
  export * from "./NoSuchToolError.js";
4
4
  export * from "./Tool.js";
5
5
  export * from "./ToolExecutionError.js";
6
+ export * from "./UseToolEvent.js";
7
+ export * from "./UseToolOrGenerateTextEvent.js";
6
8
  export * from "./WebSearchTool.js";
7
9
  export * from "./executeTool.js";
8
10
  export * from "./useTool.js";
package/tool/index.js CHANGED
@@ -3,6 +3,8 @@ export * from "./InvalidToolNameError.js";
3
3
  export * from "./NoSuchToolError.js";
4
4
  export * from "./Tool.js";
5
5
  export * from "./ToolExecutionError.js";
6
+ export * from "./UseToolEvent.js";
7
+ export * from "./UseToolOrGenerateTextEvent.js";
6
8
  export * from "./WebSearchTool.js";
7
9
  export * from "./executeTool.js";
8
10
  export * from "./useTool.js";
package/tool/useTool.cjs CHANGED
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useTool = void 0;
4
+ const executeFunctionCall_js_1 = require("../core/executeFunctionCall.cjs");
4
5
  const generateStructure_js_1 = require("../model-function/generate-structure/generateStructure.cjs");
5
6
  const executeTool_js_1 = require("./executeTool.cjs");
6
7
  /**
@@ -15,15 +16,22 @@ async function useTool(model, tool, prompt, options) {
15
16
  const expandedPrompt = typeof prompt === "function"
16
17
  ? prompt(tool)
17
18
  : prompt;
18
- const { value } = await (0, generateStructure_js_1.generateStructure)(model, {
19
- name: tool.name,
20
- description: tool.description,
21
- schema: tool.inputSchema,
22
- }, expandedPrompt, options).asFullResponse();
23
- return {
24
- tool: tool.name,
25
- parameters: value,
26
- result: await (0, executeTool_js_1.executeTool)(tool, value, options),
27
- };
19
+ return (0, executeFunctionCall_js_1.executeFunctionCall)({
20
+ options,
21
+ input: expandedPrompt,
22
+ functionType: "use-tool",
23
+ execute: async (options) => {
24
+ const { value } = await (0, generateStructure_js_1.generateStructure)(model, {
25
+ name: tool.name,
26
+ description: tool.description,
27
+ schema: tool.inputSchema,
28
+ }, expandedPrompt, options).asFullResponse();
29
+ return {
30
+ tool: tool.name,
31
+ parameters: value,
32
+ result: await (0, executeTool_js_1.executeTool)(tool, value, options),
33
+ };
34
+ },
35
+ });
28
36
  }
29
37
  exports.useTool = useTool;