@anvia/core 1.0.0-rc.1 → 1.0.0-rc.2

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 (136) hide show
  1. package/README.md +283 -84
  2. package/dist/agent/index.d.ts +26 -18
  3. package/dist/agent/index.js +19 -15
  4. package/dist/agent-yBG8e9Jj.d.ts +153 -0
  5. package/dist/chunk-4WI3VGZK.js +127 -0
  6. package/dist/chunk-4WI3VGZK.js.map +1 -0
  7. package/dist/{chunk-R2LJSQUW.js → chunk-77AIYARB.js} +251 -104
  8. package/dist/chunk-77AIYARB.js.map +1 -0
  9. package/dist/chunk-AI5JMUW7.js +45 -0
  10. package/dist/chunk-AI5JMUW7.js.map +1 -0
  11. package/dist/chunk-BEYBU7VJ.js +53 -0
  12. package/dist/chunk-BEYBU7VJ.js.map +1 -0
  13. package/dist/chunk-CWM7B2OO.js +315 -0
  14. package/dist/chunk-CWM7B2OO.js.map +1 -0
  15. package/dist/{chunk-6WGGTJE6.js → chunk-D37WMSP6.js} +52 -60
  16. package/dist/chunk-D37WMSP6.js.map +1 -0
  17. package/dist/{chunk-IL3ZSNJI.js → chunk-DBSCKTUL.js} +845 -800
  18. package/dist/chunk-DBSCKTUL.js.map +1 -0
  19. package/dist/chunk-EINTGEGY.js +629 -0
  20. package/dist/chunk-EINTGEGY.js.map +1 -0
  21. package/dist/chunk-FMHLROPQ.js +351 -0
  22. package/dist/chunk-FMHLROPQ.js.map +1 -0
  23. package/dist/{chunk-A3UBYTJT.js → chunk-FN7HLLAZ.js} +60 -6
  24. package/dist/chunk-FN7HLLAZ.js.map +1 -0
  25. package/dist/chunk-GKDERULJ.js +50 -0
  26. package/dist/chunk-GKDERULJ.js.map +1 -0
  27. package/dist/{chunk-FNQB2JEH.js → chunk-KIDGIJM7.js} +26 -5
  28. package/dist/chunk-KIDGIJM7.js.map +1 -0
  29. package/dist/chunk-KR3RCCHJ.js +500 -0
  30. package/dist/chunk-KR3RCCHJ.js.map +1 -0
  31. package/dist/{chunk-I6G7BC42.js → chunk-MGNTXGTX.js} +2 -6
  32. package/dist/chunk-MGNTXGTX.js.map +1 -0
  33. package/dist/{chunk-5XKDW36Z.js → chunk-OJH6HWHX.js} +64 -75
  34. package/dist/chunk-OJH6HWHX.js.map +1 -0
  35. package/dist/chunk-QOUPWOGW.js +29 -0
  36. package/dist/chunk-QOUPWOGW.js.map +1 -0
  37. package/dist/chunk-TIZYTPJO.js +208 -0
  38. package/dist/chunk-TIZYTPJO.js.map +1 -0
  39. package/dist/{chunk-DMPUP4R3.js → chunk-XKYYBABH.js} +5 -5
  40. package/dist/client-B8DT1vUG.d.ts +83 -0
  41. package/dist/completion/index.d.ts +5 -4
  42. package/dist/completion/index.js +25 -28
  43. package/dist/{dynamic-tools-i9woysFa.d.ts → dynamic-tools-KwEGRbHp.d.ts} +21 -9
  44. package/dist/embeddings/index.d.ts +11 -9
  45. package/dist/embeddings/index.js +2 -3
  46. package/dist/evals/index.d.ts +44 -24
  47. package/dist/evals/index.js +86 -69
  48. package/dist/evals/index.js.map +1 -1
  49. package/dist/extractor/index.d.ts +23 -26
  50. package/dist/extractor/index.js +7 -8
  51. package/dist/guardrails/index.d.ts +2 -1
  52. package/dist/guardrails/index.js +1 -1
  53. package/dist/image-generation/index.d.ts +18 -16
  54. package/dist/image-generation/index.js +2 -2
  55. package/dist/index.d.ts +24 -22
  56. package/dist/index.js +50 -48
  57. package/dist/internal/agent.d.ts +30 -19
  58. package/dist/internal/agent.js +13 -11
  59. package/dist/loaders/index.d.ts +2 -1
  60. package/dist/mcp/index.d.ts +19 -13
  61. package/dist/mcp/index.js +13 -348
  62. package/dist/mcp/index.js.map +1 -1
  63. package/dist/memory/index.d.ts +20 -6
  64. package/dist/memory/index.js +10 -10
  65. package/dist/message-schema-Cn7ezRfJ.d.ts +52 -0
  66. package/dist/{middleware-KynLg_RW.d.ts → middleware-C7PdmKF7.d.ts} +4 -4
  67. package/dist/model-call-options-CZkSw_xN.d.ts +6 -0
  68. package/dist/model-listing/index.d.ts +3 -1
  69. package/dist/observability/index.d.ts +19 -5
  70. package/dist/observability/index.js +8 -5
  71. package/dist/observability/index.js.map +1 -1
  72. package/dist/pipeline/index.d.ts +105 -56
  73. package/dist/pipeline/index.js +422 -230
  74. package/dist/pipeline/index.js.map +1 -1
  75. package/dist/{retry-D3Ruy-ba.d.ts → retry-CjvSlKGW.d.ts} +2 -1
  76. package/dist/skills/index.d.ts +5 -4
  77. package/dist/skills/index.js +7 -7
  78. package/dist/speech-generation/index.d.ts +37 -0
  79. package/dist/speech-generation/index.js +8 -0
  80. package/dist/{think-tool-DZqZj2LV.d.ts → think-tool-6H2QNQzQ.d.ts} +1 -1
  81. package/dist/tool/index.d.ts +9 -7
  82. package/dist/tool/index.js +7 -10
  83. package/dist/{tool-C_8GudXn.d.ts → tool--Mz4v1eL.d.ts} +15 -7
  84. package/dist/transcription/index.d.ts +23 -14
  85. package/dist/transcription/index.js +2 -2
  86. package/dist/{index-DxB74ybJ.d.ts → types-3x3mOLHU.d.ts} +94 -64
  87. package/dist/types-BVzM4RsC.d.ts +155 -0
  88. package/dist/types-CQ_ioXWK.d.ts +319 -0
  89. package/dist/types-Cr4uiYo5.d.ts +99 -0
  90. package/dist/{types-DhQfwiZn.d.ts → types-DiJqJejp.d.ts} +1 -1
  91. package/dist/types-Dld1TpWj.d.ts +130 -0
  92. package/dist/vector-store/index.d.ts +33 -34
  93. package/dist/vector-store/index.js +6 -6
  94. package/package.json +6 -10
  95. package/dist/agent-DGYY_onS.d.ts +0 -145
  96. package/dist/audio-generation/index.d.ts +0 -31
  97. package/dist/audio-generation/index.js +0 -8
  98. package/dist/chunk-5XKDW36Z.js.map +0 -1
  99. package/dist/chunk-6WGGTJE6.js.map +0 -1
  100. package/dist/chunk-A3UBYTJT.js.map +0 -1
  101. package/dist/chunk-ADH7NNCS.js +0 -512
  102. package/dist/chunk-ADH7NNCS.js.map +0 -1
  103. package/dist/chunk-DZ3CKYTH.js +0 -267
  104. package/dist/chunk-DZ3CKYTH.js.map +0 -1
  105. package/dist/chunk-FNQB2JEH.js.map +0 -1
  106. package/dist/chunk-I6G7BC42.js.map +0 -1
  107. package/dist/chunk-IL3ZSNJI.js.map +0 -1
  108. package/dist/chunk-J6GNQART.js +0 -122
  109. package/dist/chunk-J6GNQART.js.map +0 -1
  110. package/dist/chunk-M3IOWB4Y.js +0 -280
  111. package/dist/chunk-M3IOWB4Y.js.map +0 -1
  112. package/dist/chunk-QY5GZ7HR.js +0 -39
  113. package/dist/chunk-QY5GZ7HR.js.map +0 -1
  114. package/dist/chunk-R2LJSQUW.js.map +0 -1
  115. package/dist/chunk-RFDVKCIE.js +0 -12
  116. package/dist/chunk-RFDVKCIE.js.map +0 -1
  117. package/dist/chunk-RMUBRRSK.js +0 -34
  118. package/dist/chunk-RMUBRRSK.js.map +0 -1
  119. package/dist/chunk-RXKHOYEH.js +0 -466
  120. package/dist/chunk-RXKHOYEH.js.map +0 -1
  121. package/dist/chunk-XDRSPSR7.js +0 -38
  122. package/dist/chunk-XDRSPSR7.js.map +0 -1
  123. package/dist/chunk-XWUC7CIT.js +0 -1
  124. package/dist/chunk-XWUC7CIT.js.map +0 -1
  125. package/dist/errors-CYKUcU89.d.ts +0 -17
  126. package/dist/json-Zo7K3xmt.d.ts +0 -40
  127. package/dist/types-B3A4YxaA.d.ts +0 -354
  128. package/dist/types-BBEGKB9m.d.ts +0 -119
  129. package/dist/types-DT3nEemY.d.ts +0 -79
  130. package/dist/types-DulRCYdB.d.ts +0 -70
  131. package/dist/types-p55Jc-sr.d.ts +0 -47
  132. package/dist/ui/index.d.ts +0 -107
  133. package/dist/ui/index.js +0 -10
  134. package/dist/ui/index.js.map +0 -1
  135. /package/dist/{chunk-DMPUP4R3.js.map → chunk-XKYYBABH.js.map} +0 -0
  136. /package/dist/{audio-generation → speech-generation}/index.js.map +0 -0
@@ -0,0 +1,53 @@
1
+ import {
2
+ resolveRetryOptions,
3
+ runWithRetries,
4
+ throwIfAborted
5
+ } from "./chunk-FN7HLLAZ.js";
6
+
7
+ // src/image-generation/generate-image.ts
8
+ async function generateImage(options) {
9
+ assertNonEmptyString(options.prompt, "Image prompt");
10
+ throwIfAborted(options.abortSignal);
11
+ const width = options.width ?? 1024;
12
+ const height = options.height ?? 1024;
13
+ assertPositiveInteger(width, "Image width");
14
+ assertPositiveInteger(height, "Image height");
15
+ const request = { prompt: options.prompt, width, height };
16
+ if (options.providerOptions !== void 0) request.providerOptions = options.providerOptions;
17
+ const result = await runWithRetries(
18
+ () => {
19
+ throwIfAborted(options.abortSignal);
20
+ return options.model.imageGeneration(
21
+ request,
22
+ modelCallOptions(options.abortSignal)
23
+ );
24
+ },
25
+ resolveRetries(options.retries),
26
+ { streaming: false, abortSignal: options.abortSignal }
27
+ );
28
+ if (!Array.isArray(result.images) || result.images.length === 0) {
29
+ throw new Error("The image generation model returned no images.");
30
+ }
31
+ return result;
32
+ }
33
+ function resolveRetries(setting) {
34
+ return setting === void 0 || setting === false ? void 0 : resolveRetryOptions(setting);
35
+ }
36
+ function modelCallOptions(abortSignal) {
37
+ return abortSignal === void 0 ? void 0 : { abortSignal };
38
+ }
39
+ function assertNonEmptyString(value, name) {
40
+ if (typeof value !== "string" || value.trim().length === 0) {
41
+ throw new TypeError(`${name} must be a non-empty string.`);
42
+ }
43
+ }
44
+ function assertPositiveInteger(value, name) {
45
+ if (!Number.isSafeInteger(value) || value < 1) {
46
+ throw new RangeError(`${name} must be a positive integer.`);
47
+ }
48
+ }
49
+
50
+ export {
51
+ generateImage
52
+ };
53
+ //# sourceMappingURL=chunk-BEYBU7VJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/image-generation/generate-image.ts"],"sourcesContent":["import type { JsonObject } from \"../completion/types\";\nimport { throwIfAborted } from \"../internal/abort\";\nimport type { ModelCallOptions } from \"../model-call-options\";\nimport {\n type ResolvedRetryOptions,\n type RetrySetting,\n resolveRetryOptions,\n runWithRetries,\n} from \"../retry\";\nimport type { ImageGenerationModel, ImageGenerationRequest, ImageGenerationResult } from \"./types\";\n\nexport type GenerateImageOptions<Model extends ImageGenerationModel = ImageGenerationModel> = {\n model: Model;\n prompt: string;\n width?: number | undefined;\n height?: number | undefined;\n providerOptions?: JsonObject | undefined;\n retries?: RetrySetting | undefined;\n abortSignal?: AbortSignal | undefined;\n};\n\ntype RawResponseOf<Model> =\n Model extends ImageGenerationModel<infer RawResponse> ? RawResponse : unknown;\n\nexport async function generateImage<Model extends ImageGenerationModel>(\n options: GenerateImageOptions<Model>,\n): Promise<ImageGenerationResult<RawResponseOf<Model>>> {\n assertNonEmptyString(options.prompt, \"Image prompt\");\n throwIfAborted(options.abortSignal);\n const width = options.width ?? 1024;\n const height = options.height ?? 1024;\n assertPositiveInteger(width, \"Image width\");\n assertPositiveInteger(height, \"Image height\");\n\n const request: ImageGenerationRequest = { prompt: options.prompt, width, height };\n if (options.providerOptions !== undefined) request.providerOptions = options.providerOptions;\n const result = await runWithRetries(\n () => {\n throwIfAborted(options.abortSignal);\n return options.model.imageGeneration(\n request,\n modelCallOptions(options.abortSignal),\n ) as Promise<ImageGenerationResult<RawResponseOf<Model>>>;\n },\n resolveRetries(options.retries),\n { streaming: false, abortSignal: options.abortSignal },\n );\n if (!Array.isArray(result.images) || result.images.length === 0) {\n throw new Error(\"The image generation model returned no images.\");\n }\n return result;\n}\n\nfunction resolveRetries(setting: RetrySetting | undefined): ResolvedRetryOptions | undefined {\n return setting === undefined || setting === false ? undefined : resolveRetryOptions(setting);\n}\n\nfunction modelCallOptions(abortSignal: AbortSignal | undefined): ModelCallOptions | undefined {\n return abortSignal === undefined ? undefined : { abortSignal };\n}\n\nfunction assertNonEmptyString(value: string, name: string): void {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw new TypeError(`${name} must be a non-empty string.`);\n }\n}\n\nfunction assertPositiveInteger(value: number, name: string): void {\n if (!Number.isSafeInteger(value) || value < 1) {\n throw new RangeError(`${name} must be a positive integer.`);\n }\n}\n"],"mappings":";;;;;;;AAwBA,eAAsB,cACpB,SACsD;AACtD,uBAAqB,QAAQ,QAAQ,cAAc;AACnD,iBAAe,QAAQ,WAAW;AAClC,QAAM,QAAQ,QAAQ,SAAS;AAC/B,QAAM,SAAS,QAAQ,UAAU;AACjC,wBAAsB,OAAO,aAAa;AAC1C,wBAAsB,QAAQ,cAAc;AAE5C,QAAM,UAAkC,EAAE,QAAQ,QAAQ,QAAQ,OAAO,OAAO;AAChF,MAAI,QAAQ,oBAAoB,OAAW,SAAQ,kBAAkB,QAAQ;AAC7E,QAAM,SAAS,MAAM;AAAA,IACnB,MAAM;AACJ,qBAAe,QAAQ,WAAW;AAClC,aAAO,QAAQ,MAAM;AAAA,QACnB;AAAA,QACA,iBAAiB,QAAQ,WAAW;AAAA,MACtC;AAAA,IACF;AAAA,IACA,eAAe,QAAQ,OAAO;AAAA,IAC9B,EAAE,WAAW,OAAO,aAAa,QAAQ,YAAY;AAAA,EACvD;AACA,MAAI,CAAC,MAAM,QAAQ,OAAO,MAAM,KAAK,OAAO,OAAO,WAAW,GAAG;AAC/D,UAAM,IAAI,MAAM,gDAAgD;AAAA,EAClE;AACA,SAAO;AACT;AAEA,SAAS,eAAe,SAAqE;AAC3F,SAAO,YAAY,UAAa,YAAY,QAAQ,SAAY,oBAAoB,OAAO;AAC7F;AAEA,SAAS,iBAAiB,aAAoE;AAC5F,SAAO,gBAAgB,SAAY,SAAY,EAAE,YAAY;AAC/D;AAEA,SAAS,qBAAqB,OAAe,MAAoB;AAC/D,MAAI,OAAO,UAAU,YAAY,MAAM,KAAK,EAAE,WAAW,GAAG;AAC1D,UAAM,IAAI,UAAU,GAAG,IAAI,8BAA8B;AAAA,EAC3D;AACF;AAEA,SAAS,sBAAsB,OAAe,MAAoB;AAChE,MAAI,CAAC,OAAO,cAAc,KAAK,KAAK,QAAQ,GAAG;AAC7C,UAAM,IAAI,WAAW,GAAG,IAAI,8BAA8B;AAAA,EAC5D;AACF;","names":[]}
@@ -0,0 +1,315 @@
1
+ import {
2
+ Usage
3
+ } from "./chunk-KR3RCCHJ.js";
4
+
5
+ // src/observability/snapshot.ts
6
+ function observerSnapshot(value) {
7
+ if (containsError(value, /* @__PURE__ */ new WeakSet())) {
8
+ return cloneObserverFallback(value, /* @__PURE__ */ new WeakMap());
9
+ }
10
+ try {
11
+ return globalThis.structuredClone(value);
12
+ } catch {
13
+ return cloneObserverFallback(value, /* @__PURE__ */ new WeakMap());
14
+ }
15
+ }
16
+ function cloneObserverFallback(value, seen) {
17
+ if (typeof value !== "object" || value === null) {
18
+ return value;
19
+ }
20
+ const existing = seen.get(value);
21
+ if (existing !== void 0) {
22
+ return existing;
23
+ }
24
+ if (Array.isArray(value)) {
25
+ const clone2 = [];
26
+ seen.set(value, clone2);
27
+ clone2.push(...value.map((item) => cloneObserverFallback(item, seen)));
28
+ return clone2;
29
+ }
30
+ if (value instanceof Date) {
31
+ return new Date(value.getTime());
32
+ }
33
+ if (value instanceof Error) {
34
+ const clone2 = Object.create(Object.getPrototypeOf(value));
35
+ seen.set(value, clone2);
36
+ Object.defineProperties(clone2, {
37
+ name: { configurable: true, writable: true, value: value.name },
38
+ message: { configurable: true, writable: true, value: value.message }
39
+ });
40
+ if (value.stack !== void 0) {
41
+ Object.defineProperty(clone2, "stack", {
42
+ configurable: true,
43
+ writable: true,
44
+ value: value.stack
45
+ });
46
+ }
47
+ if (value.cause !== void 0) {
48
+ Object.defineProperty(clone2, "cause", {
49
+ configurable: true,
50
+ writable: true,
51
+ value: cloneObserverFallback(value.cause, seen)
52
+ });
53
+ }
54
+ for (const key of Object.getOwnPropertyNames(value)) {
55
+ if (key === "name" || key === "message" || key === "stack" || key === "cause") continue;
56
+ const descriptor = Object.getOwnPropertyDescriptor(value, key);
57
+ if (descriptor === void 0) continue;
58
+ if ("value" in descriptor) {
59
+ descriptor.value = cloneObserverFallback(descriptor.value, seen);
60
+ }
61
+ Object.defineProperty(clone2, key, descriptor);
62
+ }
63
+ return clone2;
64
+ }
65
+ if (Object.getPrototypeOf(value) !== Object.prototype) {
66
+ return value;
67
+ }
68
+ const clone = {};
69
+ seen.set(value, clone);
70
+ for (const [key, item] of Object.entries(value)) {
71
+ clone[key] = cloneObserverFallback(item, seen);
72
+ }
73
+ return clone;
74
+ }
75
+ function containsError(value, seen) {
76
+ if (typeof value !== "object" || value === null) return false;
77
+ if (value instanceof Error) return true;
78
+ if (seen.has(value)) return false;
79
+ seen.add(value);
80
+ if (Array.isArray(value)) {
81
+ return value.some((item) => containsError(item, seen));
82
+ }
83
+ if (Object.getPrototypeOf(value) !== Object.prototype) return false;
84
+ return Object.values(value).some((item) => containsError(item, seen));
85
+ }
86
+
87
+ // src/observability/group.ts
88
+ var AgentObserverDispatchError = class extends AggregateError {
89
+ phase;
90
+ failures;
91
+ constructor(phase, failures) {
92
+ super(
93
+ failures.map((failure) => failure.error),
94
+ `Agent observer ${phase} failed for ${failures.map((failure) => failure.observer).join(", ")}.`
95
+ );
96
+ this.name = "AgentObserverDispatchError";
97
+ this.phase = phase;
98
+ this.failures = Object.freeze([...failures]);
99
+ }
100
+ };
101
+ async function startAgentRunObservers(observers, args, options) {
102
+ const runObservers = [];
103
+ const failures = [];
104
+ for (const [name, observer] of Object.entries(observers)) {
105
+ try {
106
+ const runObserver = await observer.startRun(observerSnapshot(args));
107
+ if (runObserver !== void 0) {
108
+ runObservers.push({ name, observer: runObserver, terminal: false });
109
+ }
110
+ } catch (error) {
111
+ failures.push({ observer: name, error });
112
+ }
113
+ }
114
+ if (options.errorPolicy === "throw" && failures.length > 0) {
115
+ const startupError = new AgentObserverDispatchError("startRun", failures);
116
+ const cleanupFailures = await terminateObservers(
117
+ runObservers,
118
+ (observer) => observer.error?.(
119
+ observerSnapshot({
120
+ error: startupError,
121
+ usage: Usage.empty(),
122
+ messages: [...args.history, args.prompt]
123
+ })
124
+ )
125
+ );
126
+ throw new AgentObserverDispatchError("startRun", [...failures, ...cleanupFailures]);
127
+ }
128
+ return new ActiveAgentRunObservers(runObservers, options);
129
+ }
130
+ var ActiveAgentRunObservers = class {
131
+ constructor(runObservers, options) {
132
+ this.runObservers = runObservers;
133
+ this.options = options;
134
+ const primary = options.primaryTrace === void 0 ? void 0 : runObservers.find((entry) => entry.name === options.primaryTrace);
135
+ this.trace = primary?.observer.trace === void 0 ? void 0 : Object.freeze({ observer: primary.name, ...primary.observer.trace });
136
+ }
137
+ runObservers;
138
+ options;
139
+ trace;
140
+ async startGeneration(args) {
141
+ const generationObservers = [];
142
+ const failures = [];
143
+ for (const entry of this.runObservers) {
144
+ if (entry.observer.startGeneration === void 0) continue;
145
+ try {
146
+ const observer = await entry.observer.startGeneration(observerSnapshot(args));
147
+ if (observer !== void 0) {
148
+ generationObservers.push({ name: entry.name, observer, terminal: false });
149
+ }
150
+ } catch (error) {
151
+ failures.push({ observer: entry.name, error });
152
+ }
153
+ }
154
+ if (this.options.errorPolicy === "throw" && failures.length > 0) {
155
+ const startupError = new AgentObserverDispatchError("startGeneration", failures);
156
+ const cleanupFailures = await terminateObservers(
157
+ generationObservers,
158
+ (observer) => observer.error?.(observerSnapshot({ turn: args.turn, error: startupError }))
159
+ );
160
+ throw new AgentObserverDispatchError("startGeneration", [...failures, ...cleanupFailures]);
161
+ }
162
+ return new ActiveGenerationObservers(generationObservers, this.options.errorPolicy);
163
+ }
164
+ async startTool(args) {
165
+ const toolObservers = [];
166
+ const failures = [];
167
+ for (const entry of this.runObservers) {
168
+ if (entry.observer.startTool === void 0) continue;
169
+ try {
170
+ const observer = await entry.observer.startTool(observerSnapshot(args));
171
+ if (observer !== void 0) {
172
+ toolObservers.push({ name: entry.name, observer, terminal: false });
173
+ }
174
+ } catch (error) {
175
+ failures.push({ observer: entry.name, error });
176
+ }
177
+ }
178
+ if (this.options.errorPolicy === "throw" && failures.length > 0) {
179
+ const startupError = new AgentObserverDispatchError("startTool", failures);
180
+ const cleanupFailures = await terminateObservers(
181
+ toolObservers,
182
+ (observer) => observer.error?.(observerSnapshot({ ...args, error: startupError }))
183
+ );
184
+ throw new AgentObserverDispatchError("startTool", [...failures, ...cleanupFailures]);
185
+ }
186
+ return new ActiveToolObservers(toolObservers, this.options.errorPolicy);
187
+ }
188
+ async end(args) {
189
+ await dispatchTerminalObservers(
190
+ this.runObservers,
191
+ "end",
192
+ (observer) => observer.end(observerSnapshot(args)),
193
+ this.options.errorPolicy
194
+ );
195
+ }
196
+ async error(args) {
197
+ await dispatchTerminalObservers(
198
+ this.runObservers,
199
+ "error",
200
+ (observer) => observer.error?.(observerSnapshot(args)),
201
+ "ignore"
202
+ );
203
+ }
204
+ async event(args) {
205
+ await dispatchObservers(
206
+ this.runObservers,
207
+ "event",
208
+ (observer) => observer.event?.(observerSnapshot(args)),
209
+ this.options.errorPolicy
210
+ );
211
+ }
212
+ };
213
+ var ActiveGenerationObservers = class {
214
+ constructor(observers, errorPolicy) {
215
+ this.observers = observers;
216
+ this.errorPolicy = errorPolicy;
217
+ }
218
+ observers;
219
+ errorPolicy;
220
+ async end(args) {
221
+ await dispatchTerminalObservers(
222
+ this.observers,
223
+ "generation.end",
224
+ (observer) => observer.end(observerSnapshot(args)),
225
+ this.errorPolicy
226
+ );
227
+ }
228
+ async error(args) {
229
+ await dispatchTerminalObservers(
230
+ this.observers,
231
+ "generation.error",
232
+ (observer) => observer.error?.(observerSnapshot(args)),
233
+ "ignore"
234
+ );
235
+ }
236
+ async update(args) {
237
+ await dispatchObservers(
238
+ this.observers,
239
+ "generation.update",
240
+ (observer) => observer.update?.(observerSnapshot(args)),
241
+ this.errorPolicy
242
+ );
243
+ }
244
+ };
245
+ var ActiveToolObservers = class {
246
+ constructor(observers, errorPolicy) {
247
+ this.observers = observers;
248
+ this.errorPolicy = errorPolicy;
249
+ }
250
+ observers;
251
+ errorPolicy;
252
+ async streamEvent(args) {
253
+ await dispatchObservers(
254
+ this.observers,
255
+ "tool.streamEvent",
256
+ (observer) => observer.streamEvent?.(observerSnapshot(args)),
257
+ this.errorPolicy
258
+ );
259
+ }
260
+ async end(args) {
261
+ await dispatchTerminalObservers(
262
+ this.observers,
263
+ "tool.end",
264
+ (observer) => observer.end(observerSnapshot(args)),
265
+ this.errorPolicy
266
+ );
267
+ }
268
+ async error(args) {
269
+ await dispatchTerminalObservers(
270
+ this.observers,
271
+ "tool.error",
272
+ (observer) => observer.error?.(observerSnapshot(args)),
273
+ "ignore"
274
+ );
275
+ }
276
+ };
277
+ async function dispatchObservers(observers, phase, dispatch, errorPolicy) {
278
+ const failures = [];
279
+ for (const entry of observers) {
280
+ try {
281
+ await dispatch(entry.observer);
282
+ } catch (error) {
283
+ failures.push({ observer: entry.name, error });
284
+ }
285
+ }
286
+ throwObserverFailures(phase, failures, errorPolicy);
287
+ }
288
+ async function dispatchTerminalObservers(observers, phase, dispatch, errorPolicy) {
289
+ const failures = await terminateObservers(observers, dispatch);
290
+ throwObserverFailures(phase, failures, errorPolicy);
291
+ }
292
+ async function terminateObservers(observers, dispatch) {
293
+ const failures = [];
294
+ for (const entry of observers) {
295
+ if (entry.terminal) continue;
296
+ entry.terminal = true;
297
+ try {
298
+ await dispatch(entry.observer);
299
+ } catch (error) {
300
+ failures.push({ observer: entry.name, error });
301
+ }
302
+ }
303
+ return failures;
304
+ }
305
+ function throwObserverFailures(phase, failures, errorPolicy) {
306
+ if (errorPolicy === "throw" && failures.length > 0) {
307
+ throw new AgentObserverDispatchError(phase, failures);
308
+ }
309
+ }
310
+
311
+ export {
312
+ AgentObserverDispatchError,
313
+ startAgentRunObservers
314
+ };
315
+ //# sourceMappingURL=chunk-CWM7B2OO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/observability/snapshot.ts","../src/observability/group.ts"],"sourcesContent":["export function observerSnapshot<T>(value: T): T {\n if (containsError(value, new WeakSet<object>())) {\n return cloneObserverFallback(value, new WeakMap<object, object>());\n }\n try {\n return globalThis.structuredClone(value);\n } catch {\n return cloneObserverFallback(value, new WeakMap<object, object>());\n }\n}\n\nfunction cloneObserverFallback<T>(value: T, seen: WeakMap<object, object>): T {\n if (typeof value !== \"object\" || value === null) {\n return value;\n }\n const existing = seen.get(value);\n if (existing !== undefined) {\n return existing as T;\n }\n if (Array.isArray(value)) {\n const clone: unknown[] = [];\n seen.set(value, clone);\n clone.push(...value.map((item) => cloneObserverFallback(item, seen)));\n return clone as T;\n }\n if (value instanceof Date) {\n return new Date(value.getTime()) as T;\n }\n if (value instanceof Error) {\n const clone = Object.create(Object.getPrototypeOf(value)) as Error;\n seen.set(value, clone);\n Object.defineProperties(clone, {\n name: { configurable: true, writable: true, value: value.name },\n message: { configurable: true, writable: true, value: value.message },\n });\n if (value.stack !== undefined) {\n Object.defineProperty(clone, \"stack\", {\n configurable: true,\n writable: true,\n value: value.stack,\n });\n }\n if (value.cause !== undefined) {\n Object.defineProperty(clone, \"cause\", {\n configurable: true,\n writable: true,\n value: cloneObserverFallback(value.cause, seen),\n });\n }\n for (const key of Object.getOwnPropertyNames(value)) {\n if (key === \"name\" || key === \"message\" || key === \"stack\" || key === \"cause\") continue;\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (descriptor === undefined) continue;\n if (\"value\" in descriptor) {\n descriptor.value = cloneObserverFallback(descriptor.value, seen);\n }\n Object.defineProperty(clone, key, descriptor);\n }\n return clone as T;\n }\n if (Object.getPrototypeOf(value) !== Object.prototype) {\n return value;\n }\n const clone: Record<string, unknown> = {};\n seen.set(value, clone);\n for (const [key, item] of Object.entries(value)) {\n clone[key] = cloneObserverFallback(item, seen);\n }\n return clone as T;\n}\n\nfunction containsError(value: unknown, seen: WeakSet<object>): boolean {\n if (typeof value !== \"object\" || value === null) return false;\n if (value instanceof Error) return true;\n if (seen.has(value)) return false;\n seen.add(value);\n if (Array.isArray(value)) {\n return value.some((item) => containsError(item, seen));\n }\n if (Object.getPrototypeOf(value) !== Object.prototype) return false;\n return Object.values(value).some((item) => containsError(item, seen));\n}\n","import { Usage } from \"../completion\";\nimport { observerSnapshot } from \"./snapshot\";\nimport type {\n AgentGenerationEndArgs,\n AgentGenerationErrorArgs,\n AgentGenerationObserver,\n AgentGenerationStartArgs,\n AgentGenerationUpdateArgs,\n AgentObserverErrorPolicy,\n AgentObserverMap,\n AgentRunEndArgs,\n AgentRunErrorArgs,\n AgentRunEventArgs,\n AgentRunObserver,\n AgentRunStartArgs,\n AgentToolEndArgs,\n AgentToolErrorArgs,\n AgentToolObserver,\n AgentToolStartArgs,\n AgentToolStreamEventArgs,\n AgentTraceInfo,\n} from \"./types\";\n\nexport type AgentObserverFailure = {\n readonly observer: string;\n readonly error: unknown;\n};\n\nexport class AgentObserverDispatchError extends AggregateError {\n readonly phase: string;\n readonly failures: readonly AgentObserverFailure[];\n\n constructor(phase: string, failures: readonly AgentObserverFailure[]) {\n super(\n failures.map((failure) => failure.error),\n `Agent observer ${phase} failed for ${failures.map((failure) => failure.observer).join(\", \")}.`,\n );\n this.name = \"AgentObserverDispatchError\";\n this.phase = phase;\n this.failures = Object.freeze([...failures]);\n }\n}\n\ntype NamedObserver<T> = {\n readonly name: string;\n readonly observer: T;\n};\n\ntype ActiveNamedObserver<T> = NamedObserver<T> & {\n terminal: boolean;\n};\n\nexport async function startAgentRunObservers(\n observers: AgentObserverMap,\n args: AgentRunStartArgs,\n options: {\n readonly primaryTrace?: string | undefined;\n readonly errorPolicy: AgentObserverErrorPolicy;\n },\n): Promise<ActiveAgentRunObservers> {\n const runObservers: ActiveNamedObserver<AgentRunObserver>[] = [];\n const failures: AgentObserverFailure[] = [];\n for (const [name, observer] of Object.entries(observers)) {\n try {\n const runObserver = await observer.startRun(observerSnapshot(args));\n if (runObserver !== undefined) {\n runObservers.push({ name, observer: runObserver, terminal: false });\n }\n } catch (error) {\n failures.push({ observer: name, error });\n }\n }\n if (options.errorPolicy === \"throw\" && failures.length > 0) {\n const startupError = new AgentObserverDispatchError(\"startRun\", failures);\n const cleanupFailures = await terminateObservers(runObservers, (observer) =>\n observer.error?.(\n observerSnapshot({\n error: startupError,\n usage: Usage.empty(),\n messages: [...args.history, args.prompt],\n }),\n ),\n );\n throw new AgentObserverDispatchError(\"startRun\", [...failures, ...cleanupFailures]);\n }\n return new ActiveAgentRunObservers(runObservers, options);\n}\n\nexport class ActiveAgentRunObservers {\n readonly trace: AgentTraceInfo | undefined;\n\n constructor(\n private readonly runObservers: readonly ActiveNamedObserver<AgentRunObserver>[],\n private readonly options: {\n readonly primaryTrace?: string | undefined;\n readonly errorPolicy: AgentObserverErrorPolicy;\n },\n ) {\n const primary =\n options.primaryTrace === undefined\n ? undefined\n : runObservers.find((entry) => entry.name === options.primaryTrace);\n this.trace =\n primary?.observer.trace === undefined\n ? undefined\n : Object.freeze({ observer: primary.name, ...primary.observer.trace });\n }\n\n async startGeneration(args: AgentGenerationStartArgs): Promise<ActiveGenerationObservers> {\n const generationObservers: ActiveNamedObserver<AgentGenerationObserver>[] = [];\n const failures: AgentObserverFailure[] = [];\n for (const entry of this.runObservers) {\n if (entry.observer.startGeneration === undefined) continue;\n try {\n const observer = await entry.observer.startGeneration(observerSnapshot(args));\n if (observer !== undefined) {\n generationObservers.push({ name: entry.name, observer, terminal: false });\n }\n } catch (error) {\n failures.push({ observer: entry.name, error });\n }\n }\n if (this.options.errorPolicy === \"throw\" && failures.length > 0) {\n const startupError = new AgentObserverDispatchError(\"startGeneration\", failures);\n const cleanupFailures = await terminateObservers(generationObservers, (observer) =>\n observer.error?.(observerSnapshot({ turn: args.turn, error: startupError })),\n );\n throw new AgentObserverDispatchError(\"startGeneration\", [...failures, ...cleanupFailures]);\n }\n return new ActiveGenerationObservers(generationObservers, this.options.errorPolicy);\n }\n\n async startTool(args: AgentToolStartArgs): Promise<ActiveToolObservers> {\n const toolObservers: ActiveNamedObserver<AgentToolObserver>[] = [];\n const failures: AgentObserverFailure[] = [];\n for (const entry of this.runObservers) {\n if (entry.observer.startTool === undefined) continue;\n try {\n const observer = await entry.observer.startTool(observerSnapshot(args));\n if (observer !== undefined) {\n toolObservers.push({ name: entry.name, observer, terminal: false });\n }\n } catch (error) {\n failures.push({ observer: entry.name, error });\n }\n }\n if (this.options.errorPolicy === \"throw\" && failures.length > 0) {\n const startupError = new AgentObserverDispatchError(\"startTool\", failures);\n const cleanupFailures = await terminateObservers(toolObservers, (observer) =>\n observer.error?.(observerSnapshot({ ...args, error: startupError })),\n );\n throw new AgentObserverDispatchError(\"startTool\", [...failures, ...cleanupFailures]);\n }\n return new ActiveToolObservers(toolObservers, this.options.errorPolicy);\n }\n\n async end(args: AgentRunEndArgs): Promise<void> {\n await dispatchTerminalObservers(\n this.runObservers,\n \"end\",\n (observer) => observer.end(observerSnapshot(args)),\n this.options.errorPolicy,\n );\n }\n\n async error(args: AgentRunErrorArgs): Promise<void> {\n await dispatchTerminalObservers(\n this.runObservers,\n \"error\",\n (observer) => observer.error?.(observerSnapshot(args)),\n \"ignore\",\n );\n }\n\n async event(args: AgentRunEventArgs): Promise<void> {\n await dispatchObservers(\n this.runObservers,\n \"event\",\n (observer) => observer.event?.(observerSnapshot(args)),\n this.options.errorPolicy,\n );\n }\n}\n\nexport class ActiveGenerationObservers {\n constructor(\n private readonly observers: readonly ActiveNamedObserver<AgentGenerationObserver>[],\n private readonly errorPolicy: AgentObserverErrorPolicy,\n ) {}\n\n async end(args: AgentGenerationEndArgs): Promise<void> {\n await dispatchTerminalObservers(\n this.observers,\n \"generation.end\",\n (observer) => observer.end(observerSnapshot(args)),\n this.errorPolicy,\n );\n }\n\n async error(args: AgentGenerationErrorArgs): Promise<void> {\n await dispatchTerminalObservers(\n this.observers,\n \"generation.error\",\n (observer) => observer.error?.(observerSnapshot(args)),\n \"ignore\",\n );\n }\n\n async update(args: AgentGenerationUpdateArgs): Promise<void> {\n await dispatchObservers(\n this.observers,\n \"generation.update\",\n (observer) => observer.update?.(observerSnapshot(args)),\n this.errorPolicy,\n );\n }\n}\n\nexport class ActiveToolObservers {\n constructor(\n private readonly observers: readonly ActiveNamedObserver<AgentToolObserver>[],\n private readonly errorPolicy: AgentObserverErrorPolicy,\n ) {}\n\n async streamEvent(args: AgentToolStreamEventArgs): Promise<void> {\n await dispatchObservers(\n this.observers,\n \"tool.streamEvent\",\n (observer) => observer.streamEvent?.(observerSnapshot(args)),\n this.errorPolicy,\n );\n }\n\n async end(args: AgentToolEndArgs): Promise<void> {\n await dispatchTerminalObservers(\n this.observers,\n \"tool.end\",\n (observer) => observer.end(observerSnapshot(args)),\n this.errorPolicy,\n );\n }\n\n async error(args: AgentToolErrorArgs): Promise<void> {\n await dispatchTerminalObservers(\n this.observers,\n \"tool.error\",\n (observer) => observer.error?.(observerSnapshot(args)),\n \"ignore\",\n );\n }\n}\n\nasync function dispatchObservers<T>(\n observers: readonly NamedObserver<T>[],\n phase: string,\n dispatch: (observer: T) => void | Promise<void> | undefined,\n errorPolicy: AgentObserverErrorPolicy,\n): Promise<void> {\n const failures: AgentObserverFailure[] = [];\n for (const entry of observers) {\n try {\n await dispatch(entry.observer);\n } catch (error) {\n failures.push({ observer: entry.name, error });\n }\n }\n throwObserverFailures(phase, failures, errorPolicy);\n}\n\nasync function dispatchTerminalObservers<T>(\n observers: readonly ActiveNamedObserver<T>[],\n phase: string,\n dispatch: (observer: T) => void | Promise<void> | undefined,\n errorPolicy: AgentObserverErrorPolicy,\n): Promise<void> {\n const failures = await terminateObservers(observers, dispatch);\n throwObserverFailures(phase, failures, errorPolicy);\n}\n\nasync function terminateObservers<T>(\n observers: readonly ActiveNamedObserver<T>[],\n dispatch: (observer: T) => void | Promise<void> | undefined,\n): Promise<AgentObserverFailure[]> {\n const failures: AgentObserverFailure[] = [];\n for (const entry of observers) {\n if (entry.terminal) continue;\n entry.terminal = true;\n try {\n await dispatch(entry.observer);\n } catch (error) {\n failures.push({ observer: entry.name, error });\n }\n }\n return failures;\n}\n\nfunction throwObserverFailures(\n phase: string,\n failures: readonly AgentObserverFailure[],\n errorPolicy: AgentObserverErrorPolicy,\n): void {\n if (errorPolicy === \"throw\" && failures.length > 0) {\n throw new AgentObserverDispatchError(phase, failures);\n }\n}\n"],"mappings":"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","names":["clone"]}
@@ -1,28 +1,17 @@
1
1
  import {
2
2
  InMemoryVectorStore,
3
- createTool
4
- } from "./chunk-R2LJSQUW.js";
3
+ assertFiniteMinScore,
4
+ assertPositiveSearchLimit,
5
+ createTool,
6
+ retrieveDocuments
7
+ } from "./chunk-77AIYARB.js";
5
8
  import {
6
9
  embedDocuments
7
- } from "./chunk-DZ3CKYTH.js";
8
-
9
- // src/internal/vector-search-options.ts
10
- function assertPositiveSearchLimit(value, name = "topK") {
11
- if (!Number.isSafeInteger(value) || value <= 0) {
12
- throw new RangeError(`${name} must be a positive safe integer.`);
13
- }
14
- return value;
15
- }
16
- function assertFiniteSearchThreshold(value, name = "threshold") {
17
- if (value !== void 0 && !Number.isFinite(value)) {
18
- throw new RangeError(`${name} must be a finite number.`);
19
- }
20
- return value;
21
- }
10
+ } from "./chunk-FMHLROPQ.js";
22
11
 
23
12
  // src/tool/dynamic-tools.ts
24
- async function embedTools(model, tools, options = {}) {
25
- const toolList = dedupeTools(tools);
13
+ async function embedTools(options) {
14
+ const toolList = dedupeTools(options.tools);
26
15
  const definitions = await Promise.all(
27
16
  toolList.map(async (tool) => ({ tool, definition: await tool.definition("") }))
28
17
  );
@@ -33,73 +22,78 @@ async function embedTools(model, tools, options = {}) {
33
22
  const document = {
34
23
  toolName: tool.name,
35
24
  definition,
36
- text: texts.join("\n")
25
+ text: texts.join("\n"),
26
+ ...metadata === void 0 ? {} : { metadata }
37
27
  };
38
- if (metadata !== void 0) {
39
- document.metadata = metadata;
40
- }
41
28
  return { tool, document, texts, metadata };
42
29
  });
43
- return embedDocuments(model, documents, {
30
+ const embedded = await embedDocuments({
31
+ model: options.model,
32
+ documents,
44
33
  id: (item) => item.tool.name,
45
34
  content: (item) => item.texts,
46
35
  metadata: (item) => item.metadata,
47
- concurrency: options.concurrency
48
- }).then(
49
- (embedded) => embedded.map((item) => ({
36
+ concurrency: options.concurrency,
37
+ retries: options.retries,
38
+ abortSignal: options.abortSignal
39
+ });
40
+ return {
41
+ documents: embedded.documents.map((item) => ({
50
42
  ...item,
51
43
  document: item.document.document
52
44
  }))
53
- );
45
+ };
54
46
  }
55
- async function createToolIndex(model, tools, options) {
47
+ async function createToolIndex(options) {
56
48
  assertPositiveSearchLimit(options.topK);
57
- assertFiniteSearchThreshold(options.threshold);
58
- const toolList = dedupeTools(tools);
59
- const embedded = await embedTools(model, toolList, options);
60
- const index = InMemoryVectorStore.fromDocuments(embedded).index(model);
61
- return new ToolSearchIndex(index, toolList, options);
49
+ assertFiniteMinScore(options.minScore);
50
+ const tools = dedupeTools(options.tools);
51
+ const { documents } = await embedTools({ ...options, tools });
52
+ const store = InMemoryVectorStore.fromDocuments({ documents });
53
+ return new ToolSearchIndex(store, options.model, tools, options);
62
54
  }
63
55
  function isToolIndex(value) {
64
- if (typeof value !== "object" || value === null) {
65
- return false;
66
- }
56
+ if (typeof value !== "object" || value === null) return false;
67
57
  const candidate = value;
68
- return candidate.kind === "tool-index" && Array.isArray(candidate.tools) && typeof candidate.topK === "number" && typeof candidate.search === "function" && typeof candidate.searchIds === "function" && typeof candidate.asTool === "function";
58
+ return candidate.kind === "tool-index" && Array.isArray(candidate.tools) && typeof candidate.topK === "number" && typeof candidate.search === "function";
69
59
  }
70
60
  var ToolSearchIndex = class {
71
- constructor(index, tools, options) {
72
- this.index = index;
61
+ constructor(store, model, tools, options) {
62
+ this.store = store;
63
+ this.model = model;
64
+ this.options = options;
73
65
  this.tools = Object.freeze([...tools]);
74
66
  this.topK = options.topK;
75
- this.threshold = options.threshold;
67
+ this.minScore = options.minScore;
76
68
  this.filter = options.filter;
77
- if (index.inspect !== void 0) {
78
- this.inspect = (request) => index.inspect?.(request);
79
- }
80
69
  }
81
- index;
70
+ store;
71
+ model;
72
+ options;
82
73
  kind = "tool-index";
83
74
  tools;
84
75
  topK;
85
- threshold;
76
+ minScore;
86
77
  filter;
87
- inspect;
88
- search(request) {
89
- return this.index.search(request);
78
+ search(options) {
79
+ return retrieveDocuments({
80
+ store: this.store,
81
+ model: this.model,
82
+ query: options.query,
83
+ topK: this.topK,
84
+ minScore: this.minScore,
85
+ filter: this.filter,
86
+ retries: this.options.retries,
87
+ abortSignal: options.abortSignal
88
+ });
90
89
  }
91
- searchIds(request) {
92
- return this.index.searchIds(request);
93
- }
94
- asTool(options) {
95
- return this.index.asTool(options);
90
+ inspect(request) {
91
+ return this.store.inspect(request);
96
92
  }
97
93
  };
98
94
  function dedupeTools(tools) {
99
95
  const byName = /* @__PURE__ */ new Map();
100
- for (const tool of tools) {
101
- byName.set(tool.name, tool);
102
- }
96
+ for (const tool of tools) byName.set(tool.name, tool);
103
97
  return [...byName.values()];
104
98
  }
105
99
  function defaultToolEmbeddingText(definition) {
@@ -128,12 +122,10 @@ function createThinkTool(options = {}) {
128
122
  }
129
123
 
130
124
  export {
131
- assertPositiveSearchLimit,
132
- assertFiniteSearchThreshold,
133
125
  embedTools,
134
126
  createToolIndex,
135
127
  isToolIndex,
136
128
  createMiddleware,
137
129
  createThinkTool
138
130
  };
139
- //# sourceMappingURL=chunk-6WGGTJE6.js.map
131
+ //# sourceMappingURL=chunk-D37WMSP6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/tool/dynamic-tools.ts","../src/tool/middleware.ts","../src/tool/think-tool.ts"],"sourcesContent":["import type { ToolDefinition } from \"../completion\";\nimport type { EmbeddedDocument, EmbeddingModel, VectorMetadata } from \"../embeddings\";\nimport { embedDocuments } from \"../embeddings\";\nimport { assertFiniteMinScore, assertPositiveSearchLimit } from \"../internal/vector-search-options\";\nimport type { RetrySetting } from \"../retry\";\nimport {\n InMemoryVectorStore,\n retrieveDocuments,\n type VectorFilter,\n type VectorInspectPage,\n type VectorInspectRequest,\n type VectorSearchResult,\n} from \"../vector-store\";\nimport type { AnyTool } from \"./tool\";\n\nexport type ToolSearchDocument<Metadata extends VectorMetadata = VectorMetadata> = {\n toolName: string;\n definition: ToolDefinition;\n text: string;\n metadata?: Metadata | undefined;\n};\n\nexport type EmbedToolsOptions<Metadata extends VectorMetadata = VectorMetadata> = {\n model: EmbeddingModel;\n tools: readonly AnyTool[];\n content?: ((tool: AnyTool, definition: ToolDefinition) => string | string[]) | undefined;\n metadata?: ((tool: AnyTool, definition: ToolDefinition) => Metadata | undefined) | undefined;\n concurrency?: number | undefined;\n retries?: RetrySetting | undefined;\n abortSignal?: AbortSignal | undefined;\n};\n\nexport type CreateToolIndexOptions<Metadata extends VectorMetadata = VectorMetadata> =\n EmbedToolsOptions<Metadata> & {\n topK: number;\n minScore?: number | undefined;\n filter?: VectorFilter | undefined;\n };\n\nexport interface ToolIndex<Metadata extends VectorMetadata = VectorMetadata> {\n readonly kind: \"tool-index\";\n readonly tools: readonly AnyTool[];\n readonly topK: number;\n readonly minScore?: number | undefined;\n readonly filter?: VectorFilter | undefined;\n search(options: {\n query: string;\n abortSignal?: AbortSignal | undefined;\n }): Promise<Array<VectorSearchResult<ToolSearchDocument<Metadata>, Metadata>>>;\n inspect?(\n request: VectorInspectRequest,\n ): Promise<VectorInspectPage<ToolSearchDocument<Metadata>, Metadata>>;\n}\n\nexport async function embedTools<Metadata extends VectorMetadata = VectorMetadata>(\n options: EmbedToolsOptions<Metadata>,\n): Promise<{\n documents: Array<EmbeddedDocument<ToolSearchDocument<Metadata>, Metadata>>;\n}> {\n const toolList = dedupeTools(options.tools);\n const definitions = await Promise.all(\n toolList.map(async (tool) => ({ tool, definition: await tool.definition(\"\") })),\n );\n const documents = definitions.map(({ tool, definition }) => {\n const content = options.content?.(tool, definition) ?? defaultToolEmbeddingText(definition);\n const texts = Array.isArray(content) ? content : [content];\n const metadata = options.metadata?.(tool, definition);\n const document: ToolSearchDocument<Metadata> = {\n toolName: tool.name,\n definition,\n text: texts.join(\"\\n\"),\n ...(metadata === undefined ? {} : { metadata }),\n };\n return { tool, document, texts, metadata };\n });\n\n const embedded = await embedDocuments({\n model: options.model,\n documents,\n id: (item) => item.tool.name,\n content: (item) => item.texts,\n metadata: (item) => item.metadata,\n concurrency: options.concurrency,\n retries: options.retries,\n abortSignal: options.abortSignal,\n });\n return {\n documents: embedded.documents.map((item) => ({\n ...item,\n document: item.document.document,\n })),\n };\n}\n\nexport async function createToolIndex<Metadata extends VectorMetadata = VectorMetadata>(\n options: CreateToolIndexOptions<Metadata>,\n): Promise<ToolIndex<Metadata>> {\n assertPositiveSearchLimit(options.topK);\n assertFiniteMinScore(options.minScore);\n const tools = dedupeTools(options.tools);\n const { documents } = await embedTools({ ...options, tools });\n const store = InMemoryVectorStore.fromDocuments({ documents });\n return new ToolSearchIndex(store, options.model, tools, options);\n}\n\nexport function isToolIndex(value: unknown): value is ToolIndex {\n if (typeof value !== \"object\" || value === null) return false;\n const candidate = value as {\n kind?: unknown;\n tools?: unknown;\n topK?: unknown;\n search?: unknown;\n };\n return (\n candidate.kind === \"tool-index\" &&\n Array.isArray(candidate.tools) &&\n typeof candidate.topK === \"number\" &&\n typeof candidate.search === \"function\"\n );\n}\n\nclass ToolSearchIndex<Metadata extends VectorMetadata> implements ToolIndex<Metadata> {\n readonly kind = \"tool-index\" as const;\n readonly tools: readonly AnyTool[];\n readonly topK: number;\n readonly minScore: number | undefined;\n readonly filter: VectorFilter | undefined;\n\n constructor(\n private readonly store: InMemoryVectorStore<ToolSearchDocument<Metadata>, Metadata>,\n private readonly model: EmbeddingModel,\n tools: readonly AnyTool[],\n private readonly options: CreateToolIndexOptions<Metadata>,\n ) {\n this.tools = Object.freeze([...tools]);\n this.topK = options.topK;\n this.minScore = options.minScore;\n this.filter = options.filter;\n }\n\n search(options: {\n query: string;\n abortSignal?: AbortSignal | undefined;\n }): Promise<Array<VectorSearchResult<ToolSearchDocument<Metadata>, Metadata>>> {\n return retrieveDocuments({\n store: this.store,\n model: this.model,\n query: options.query,\n topK: this.topK,\n minScore: this.minScore,\n filter: this.filter,\n retries: this.options.retries,\n abortSignal: options.abortSignal,\n });\n }\n\n inspect(\n request: VectorInspectRequest,\n ): Promise<VectorInspectPage<ToolSearchDocument<Metadata>, Metadata>> {\n return this.store.inspect(request);\n }\n}\n\nfunction dedupeTools(tools: readonly AnyTool[]): AnyTool[] {\n const byName = new Map<string, AnyTool>();\n for (const tool of tools) byName.set(tool.name, tool);\n return [...byName.values()];\n}\n\nfunction defaultToolEmbeddingText(definition: ToolDefinition): string[] {\n return [definition.name, definition.description, JSON.stringify(definition.parameters)];\n}\n","import type {\n CompletionRequest,\n CompletionResponse,\n JsonValue,\n ToolResultContentPart,\n} from \"../completion\";\nimport type { MaybePromise } from \"../internal/type-utils\";\n\nexport type CompletionRequestMiddlewareArgs = {\n turn: number;\n request: CompletionRequest;\n originalRequest: CompletionRequest;\n};\n\nexport type CompletionRequestMiddlewareResult =\n | {\n request: CompletionRequest;\n }\n | undefined;\n\nexport type CompletionResponseMiddlewareArgs<RawResponse = unknown> = {\n turn: number;\n request: CompletionRequest;\n response: CompletionResponse<RawResponse>;\n originalResponse: CompletionResponse<RawResponse>;\n};\n\nexport type CompletionResponseMiddlewareResult<RawResponse = unknown> =\n | {\n response: CompletionResponse<RawResponse>;\n }\n | undefined;\n\nexport type ToolInputMiddlewareArgs = {\n toolName: string;\n args: string;\n originalArgs: string;\n turn: number;\n toolCallId?: string | undefined;\n internalCallId: string;\n};\n\nexport type ToolInputMiddlewareResult =\n | {\n args: JsonValue | string;\n }\n | undefined;\n\nexport type ToolResultMiddlewareArgs = {\n toolName: string;\n args: string;\n result: string;\n originalResult: string;\n structuredResult?: readonly ToolResultContentPart[] | undefined;\n originalStructuredResult?: readonly ToolResultContentPart[] | undefined;\n turn: number;\n toolCallId?: string | undefined;\n internalCallId: string;\n};\n\nexport type ToolOutputMiddlewareArgs = ToolResultMiddlewareArgs;\n\nexport type ToolOutputMiddlewareResult =\n | string\n | {\n result?: string | undefined;\n structuredResult?: readonly ToolResultContentPart[] | undefined;\n }\n | undefined;\n\nexport interface AgentMiddleware<RawResponse = unknown> {\n onCompletionRequest?(\n args: CompletionRequestMiddlewareArgs,\n ): MaybePromise<CompletionRequestMiddlewareResult>;\n onCompletionResponse?(\n args: CompletionResponseMiddlewareArgs<RawResponse>,\n ): MaybePromise<CompletionResponseMiddlewareResult<RawResponse>>;\n onToolInput?(args: ToolInputMiddlewareArgs): MaybePromise<ToolInputMiddlewareResult>;\n onToolOutput?(args: ToolOutputMiddlewareArgs): MaybePromise<ToolOutputMiddlewareResult>;\n}\n\nexport function createMiddleware<RawResponse = unknown>(\n middleware: AgentMiddleware<RawResponse>,\n): AgentMiddleware<RawResponse> {\n return middleware;\n}\n","import { z } from \"zod\";\nimport { createTool } from \"./create-tool\";\n\nconst defaultThinkToolDescription =\n \"Use this tool to record a thought while reasoning through a complex task. It does not retrieve information, store memory, or change external state.\";\n\nconst thinkToolInput = z.object({\n thought: z.string().describe(\"A thought to record while reasoning through a task.\"),\n});\n\nexport type CreateThinkToolOptions = {\n name?: string;\n description?: string;\n};\n\nexport function createThinkTool(options: CreateThinkToolOptions = {}) {\n return createTool({\n name: options.name ?? \"think\",\n description: options.description ?? defaultThinkToolDescription,\n inputSchema: thinkToolInput,\n outputSchema: z.string(),\n execute: (args) => args.thought,\n });\n}\n"],"mappings":"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","names":[]}