@anvia/core 0.26.0 → 1.0.0-rc.10

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 (184) hide show
  1. package/README.md +400 -94
  2. package/dist/agent/index.d.ts +67 -71
  3. package/dist/agent/index.js +36 -18
  4. package/dist/agent/interactions/index.d.ts +122 -0
  5. package/dist/agent/interactions/index.js +20 -0
  6. package/dist/agent-DWzW9SoH.d.ts +150 -0
  7. package/dist/chunk-3RM57ZT2.js +31 -0
  8. package/dist/chunk-3RM57ZT2.js.map +1 -0
  9. package/dist/chunk-3RWESPUG.js +331 -0
  10. package/dist/chunk-3RWESPUG.js.map +1 -0
  11. package/dist/{chunk-NCPN4SJR.js → chunk-3SKZ2BKP.js} +15 -13
  12. package/dist/chunk-3SKZ2BKP.js.map +1 -0
  13. package/dist/chunk-3XQGVDU5.js +69 -0
  14. package/dist/chunk-3XQGVDU5.js.map +1 -0
  15. package/dist/{chunk-MRQLEK2B.js → chunk-5C6B6ZRH.js} +69 -51
  16. package/dist/chunk-5C6B6ZRH.js.map +1 -0
  17. package/dist/chunk-6BBOCFHV.js +323 -0
  18. package/dist/chunk-6BBOCFHV.js.map +1 -0
  19. package/dist/chunk-7JLAIN6E.js +15 -0
  20. package/dist/chunk-7JLAIN6E.js.map +1 -0
  21. package/dist/chunk-7PHMK7W4.js +1516 -0
  22. package/dist/chunk-7PHMK7W4.js.map +1 -0
  23. package/dist/{chunk-CWUJUSOS.js → chunk-AZB6N7P4.js} +94 -65
  24. package/dist/chunk-AZB6N7P4.js.map +1 -0
  25. package/dist/chunk-D4PACGPA.js +37 -0
  26. package/dist/chunk-D4PACGPA.js.map +1 -0
  27. package/dist/chunk-EFLT7XZD.js +51 -0
  28. package/dist/chunk-EFLT7XZD.js.map +1 -0
  29. package/dist/chunk-EMZKPRE6.js +667 -0
  30. package/dist/chunk-EMZKPRE6.js.map +1 -0
  31. package/dist/chunk-I3Q7XSBB.js +59 -0
  32. package/dist/chunk-I3Q7XSBB.js.map +1 -0
  33. package/dist/chunk-J6LVLV6P.js +13 -0
  34. package/dist/chunk-J6LVLV6P.js.map +1 -0
  35. package/dist/chunk-LTXABCOO.js +127 -0
  36. package/dist/chunk-LTXABCOO.js.map +1 -0
  37. package/dist/chunk-OJBFDBLG.js +164 -0
  38. package/dist/chunk-OJBFDBLG.js.map +1 -0
  39. package/dist/chunk-QGX73TSQ.js +177 -0
  40. package/dist/chunk-QGX73TSQ.js.map +1 -0
  41. package/dist/chunk-QOUPWOGW.js +29 -0
  42. package/dist/chunk-QOUPWOGW.js.map +1 -0
  43. package/dist/chunk-SJMSS5SI.js +171 -0
  44. package/dist/chunk-SJMSS5SI.js.map +1 -0
  45. package/dist/chunk-T2C3CGDQ.js +56 -0
  46. package/dist/chunk-T2C3CGDQ.js.map +1 -0
  47. package/dist/chunk-VX3HS6PE.js +4569 -0
  48. package/dist/chunk-VX3HS6PE.js.map +1 -0
  49. package/dist/chunk-X4LK4ODN.js +86 -0
  50. package/dist/chunk-X4LK4ODN.js.map +1 -0
  51. package/dist/chunk-ZA564323.js +331 -0
  52. package/dist/chunk-ZA564323.js.map +1 -0
  53. package/dist/completion/index.d.ts +6 -36
  54. package/dist/completion/index.js +34 -29
  55. package/dist/documents/index.d.ts +34 -0
  56. package/dist/documents/index.js +340 -0
  57. package/dist/documents/index.js.map +1 -0
  58. package/dist/dynamic-tools-aIZlg5x1.d.ts +45 -0
  59. package/dist/embeddings/index.d.ts +11 -9
  60. package/dist/embeddings/index.js +3 -4
  61. package/dist/evals/index.d.ts +57 -21
  62. package/dist/evals/index.js +209 -104
  63. package/dist/evals/index.js.map +1 -1
  64. package/dist/extractor/index.d.ts +27 -42
  65. package/dist/extractor/index.js +9 -22
  66. package/dist/guardrails/index.d.ts +7 -129
  67. package/dist/guardrails/index.js +1 -1
  68. package/dist/image-generation/index.d.ts +23 -23
  69. package/dist/image-generation/index.js +7 -39
  70. package/dist/image-generation/index.js.map +1 -1
  71. package/dist/index.d.ts +24 -22
  72. package/dist/index.js +85 -68
  73. package/dist/internal/agent.d.ts +156 -10
  74. package/dist/internal/agent.js +58 -18
  75. package/dist/internal/agent.js.map +1 -1
  76. package/dist/mcp/index.d.ts +7 -15
  77. package/dist/mcp/index.js +3 -348
  78. package/dist/mcp/index.js.map +1 -1
  79. package/dist/memory/index.d.ts +20 -6
  80. package/dist/memory/index.js +11 -10
  81. package/dist/middleware-kcF8AusP.d.ts +59 -0
  82. package/dist/model-call-options-CZkSw_xN.d.ts +6 -0
  83. package/dist/model-listing/index.d.ts +3 -1
  84. package/dist/observability/index.d.ts +23 -4
  85. package/dist/observability/index.js +10 -5
  86. package/dist/observability/index.js.map +1 -1
  87. package/dist/pipeline/index.d.ts +111 -73
  88. package/dist/pipeline/index.js +471 -286
  89. package/dist/pipeline/index.js.map +1 -1
  90. package/dist/provider-output-error-BEwDgVv3.d.ts +99 -0
  91. package/dist/retry-CjvSlKGW.d.ts +16 -0
  92. package/dist/skills/index.d.ts +5 -4
  93. package/dist/skills/index.js +8 -8
  94. package/dist/speech-generation/index.d.ts +37 -0
  95. package/dist/speech-generation/index.js +10 -0
  96. package/dist/streaming/index.js +37 -3
  97. package/dist/streaming/index.js.map +1 -1
  98. package/dist/text-ZLECpQE7.d.ts +32 -0
  99. package/dist/think-tool-BwCsJ365.d.ts +40 -0
  100. package/dist/tool/index.d.ts +11 -6
  101. package/dist/tool/index.js +21 -21
  102. package/dist/tool-BpqpoRSE.d.ts +58 -0
  103. package/dist/transcription/index.d.ts +29 -22
  104. package/dist/transcription/index.js +7 -57
  105. package/dist/transcription/index.js.map +1 -1
  106. package/dist/type-utils-CtHVDRn_.d.ts +6 -0
  107. package/dist/types-CXNE592e.d.ts +130 -0
  108. package/dist/types-Cr4uiYo5.d.ts +99 -0
  109. package/dist/{types-04LqWrmy.d.ts → types-DC1U1XwW.d.ts} +1 -1
  110. package/dist/types-DKOXVTcq.d.ts +155 -0
  111. package/dist/types-DgvozfPc.d.ts +349 -0
  112. package/dist/types-DhkodEft.d.ts +105 -0
  113. package/dist/types-DjqRHeAi.d.ts +31 -0
  114. package/dist/types-Sue2hb_L.d.ts +403 -0
  115. package/dist/vector-store/index.d.ts +34 -34
  116. package/dist/vector-store/index.js +10 -6
  117. package/package.json +22 -24
  118. package/dist/agent-x3YTyv5i.d.ts +0 -222
  119. package/dist/audio-generation/index.d.ts +0 -33
  120. package/dist/audio-generation/index.js +0 -42
  121. package/dist/audio-generation/index.js.map +0 -1
  122. package/dist/chunk-2ODTMRHP.js +0 -54
  123. package/dist/chunk-2ODTMRHP.js.map +0 -1
  124. package/dist/chunk-ADH7NNCS.js +0 -512
  125. package/dist/chunk-ADH7NNCS.js.map +0 -1
  126. package/dist/chunk-BALBBVI3.js +0 -2732
  127. package/dist/chunk-BALBBVI3.js.map +0 -1
  128. package/dist/chunk-CQNNSZPG.js +0 -9
  129. package/dist/chunk-CQNNSZPG.js.map +0 -1
  130. package/dist/chunk-CWUJUSOS.js.map +0 -1
  131. package/dist/chunk-DALYP4PX.js +0 -225
  132. package/dist/chunk-DALYP4PX.js.map +0 -1
  133. package/dist/chunk-HYUYZEAJ.js +0 -223
  134. package/dist/chunk-HYUYZEAJ.js.map +0 -1
  135. package/dist/chunk-I6XOQ4LK.js +0 -466
  136. package/dist/chunk-I6XOQ4LK.js.map +0 -1
  137. package/dist/chunk-JI5YZWNT.js +0 -220
  138. package/dist/chunk-JI5YZWNT.js.map +0 -1
  139. package/dist/chunk-MC3CCKEB.js +0 -221
  140. package/dist/chunk-MC3CCKEB.js.map +0 -1
  141. package/dist/chunk-MELYDKWQ.js +0 -337
  142. package/dist/chunk-MELYDKWQ.js.map +0 -1
  143. package/dist/chunk-MNWK2USR.js +0 -243
  144. package/dist/chunk-MNWK2USR.js.map +0 -1
  145. package/dist/chunk-MRQLEK2B.js.map +0 -1
  146. package/dist/chunk-NCPN4SJR.js.map +0 -1
  147. package/dist/chunk-OIMLU4SF.js +0 -20
  148. package/dist/chunk-OIMLU4SF.js.map +0 -1
  149. package/dist/chunk-Q25IWLBT.js +0 -138
  150. package/dist/chunk-Q25IWLBT.js.map +0 -1
  151. package/dist/chunk-UQX6EXWG.js +0 -33
  152. package/dist/chunk-UQX6EXWG.js.map +0 -1
  153. package/dist/chunk-WQKHFADH.js +0 -12
  154. package/dist/chunk-WQKHFADH.js.map +0 -1
  155. package/dist/chunk-XUUY2L2D.js +0 -42
  156. package/dist/chunk-XUUY2L2D.js.map +0 -1
  157. package/dist/chunk-XWUC7CIT.js +0 -1
  158. package/dist/chunk-XWUC7CIT.js.map +0 -1
  159. package/dist/chunk-YLMDBQO4.js +0 -141
  160. package/dist/chunk-YLMDBQO4.js.map +0 -1
  161. package/dist/errors-2moLDuuN.d.ts +0 -17
  162. package/dist/hooks/index.d.ts +0 -12
  163. package/dist/hooks/index.js +0 -17
  164. package/dist/index-BxSbmOMr.d.ts +0 -257
  165. package/dist/json-BVPssigK.d.ts +0 -39
  166. package/dist/loaders/index.d.ts +0 -91
  167. package/dist/loaders/index.js +0 -299
  168. package/dist/loaders/index.js.map +0 -1
  169. package/dist/middleware-Dp3d_pxi.d.ts +0 -90
  170. package/dist/request/index.d.ts +0 -28
  171. package/dist/request/index.js +0 -25
  172. package/dist/think-tool-DfCMuO8e.d.ts +0 -26
  173. package/dist/tool-Cohdv5GC.d.ts +0 -65
  174. package/dist/types-BCTRUGex.d.ts +0 -47
  175. package/dist/types-BrLbKnEz.d.ts +0 -119
  176. package/dist/types-D9JpeAPF.d.ts +0 -114
  177. package/dist/types-G12i56s2.d.ts +0 -354
  178. package/dist/types-JJCxRnaZ.d.ts +0 -70
  179. package/dist/types-O-abTIin.d.ts +0 -79
  180. package/dist/ui/index.d.ts +0 -107
  181. package/dist/ui/index.js +0 -10
  182. package/dist/ui/index.js.map +0 -1
  183. /package/dist/{hooks → agent/interactions}/index.js.map +0 -0
  184. /package/dist/{request → speech-generation}/index.js.map +0 -0
@@ -0,0 +1,340 @@
1
+ // src/documents/chunk-text.ts
2
+ function chunkText(options) {
3
+ const validated = validateOptions(options);
4
+ if (validated.text.length === 0) {
5
+ return [];
6
+ }
7
+ if (validated.strategy === "fixed") {
8
+ return chunkFixed(validated.text, validated.maxSize, validated.overlap);
9
+ }
10
+ const ranges = resolveRecursiveRanges(
11
+ validated.text,
12
+ { start: 0, end: validated.text.length },
13
+ validated.maxSize,
14
+ validated.separators
15
+ );
16
+ return applyRecursiveOverlap(validated.text, ranges, validated.maxSize, validated.overlap);
17
+ }
18
+ function validateOptions(options) {
19
+ if (typeof options !== "object" || options === null) {
20
+ throw new TypeError("chunkText options must be an object");
21
+ }
22
+ const value = options;
23
+ if (typeof value.text !== "string") {
24
+ throw new TypeError("chunkText text must be a string");
25
+ }
26
+ if (!Number.isSafeInteger(value.maxSize) || value.maxSize <= 0) {
27
+ throw new RangeError("chunkText maxSize must be a positive safe integer");
28
+ }
29
+ const maxSize = value.maxSize;
30
+ const overlap = value.overlap === void 0 ? 0 : value.overlap;
31
+ if (!Number.isSafeInteger(overlap) || overlap < 0 || overlap >= maxSize) {
32
+ throw new RangeError(
33
+ "chunkText overlap must be a non-negative safe integer smaller than maxSize"
34
+ );
35
+ }
36
+ if (value.strategy === "fixed") {
37
+ if ("separators" in value) {
38
+ throw new TypeError("chunkText fixed strategy does not accept separators");
39
+ }
40
+ return {
41
+ text: value.text,
42
+ strategy: "fixed",
43
+ maxSize,
44
+ overlap
45
+ };
46
+ }
47
+ if (value.strategy !== "recursive") {
48
+ throw new TypeError('chunkText strategy must be either "fixed" or "recursive"');
49
+ }
50
+ if (!Array.isArray(value.separators) || value.separators.length === 0) {
51
+ throw new TypeError("chunkText recursive separators must be a non-empty array");
52
+ }
53
+ const separators = value.separators;
54
+ const seen = /* @__PURE__ */ new Set();
55
+ for (const separator of separators) {
56
+ if (typeof separator !== "string" || separator.length === 0) {
57
+ throw new TypeError("chunkText recursive separators must contain non-empty strings");
58
+ }
59
+ if (seen.has(separator)) {
60
+ throw new TypeError("chunkText recursive separators must not contain duplicates");
61
+ }
62
+ seen.add(separator);
63
+ }
64
+ return {
65
+ text: value.text,
66
+ strategy: "recursive",
67
+ maxSize,
68
+ overlap,
69
+ separators
70
+ };
71
+ }
72
+ function chunkFixed(text, maxSize, overlap) {
73
+ const chunks = [];
74
+ let start = 0;
75
+ while (start < text.length) {
76
+ const end = Math.min(start + maxSize, text.length);
77
+ chunks.push(createChunk(text, chunks.length, start, end));
78
+ if (end === text.length) {
79
+ break;
80
+ }
81
+ start = end - overlap;
82
+ }
83
+ return chunks;
84
+ }
85
+ function resolveRecursiveRanges(text, initialRange, maxSize, separators) {
86
+ const resolved = [];
87
+ const pending = [
88
+ { range: initialRange, separatorIndex: 0 }
89
+ ];
90
+ while (pending.length > 0) {
91
+ const current = pending.pop();
92
+ if (current === void 0) {
93
+ break;
94
+ }
95
+ if (current.range.end - current.range.start <= maxSize) {
96
+ resolved.push(current.range);
97
+ continue;
98
+ }
99
+ let pieces;
100
+ let nextSeparatorIndex = separators.length;
101
+ for (let index = current.separatorIndex; index < separators.length; index += 1) {
102
+ const candidate = splitAfterSeparator(text, current.range, separators[index]);
103
+ if (candidate.length > 1) {
104
+ pieces = candidate;
105
+ nextSeparatorIndex = index + 1;
106
+ break;
107
+ }
108
+ }
109
+ if (pieces === void 0) {
110
+ resolved.push(...hardSplit(current.range, maxSize));
111
+ continue;
112
+ }
113
+ for (let index = pieces.length - 1; index >= 0; index -= 1) {
114
+ pending.push({ range: pieces[index], separatorIndex: nextSeparatorIndex });
115
+ }
116
+ }
117
+ return resolved;
118
+ }
119
+ function splitAfterSeparator(text, range, separator) {
120
+ const ranges = [];
121
+ let start = range.start;
122
+ let searchFrom = range.start;
123
+ while (searchFrom < range.end) {
124
+ const separatorStart = text.indexOf(separator, searchFrom);
125
+ if (separatorStart < 0 || separatorStart + separator.length > range.end) {
126
+ break;
127
+ }
128
+ const end = separatorStart + separator.length;
129
+ if (end > start) {
130
+ ranges.push({ start, end });
131
+ }
132
+ start = end;
133
+ searchFrom = end;
134
+ }
135
+ if (start < range.end) {
136
+ ranges.push({ start, end: range.end });
137
+ }
138
+ return ranges;
139
+ }
140
+ function hardSplit(range, maxSize) {
141
+ const ranges = [];
142
+ for (let start = range.start; start < range.end; start += maxSize) {
143
+ ranges.push({ start, end: Math.min(start + maxSize, range.end) });
144
+ }
145
+ return ranges;
146
+ }
147
+ function applyRecursiveOverlap(text, ranges, maxSize, overlap) {
148
+ const boundaries = ranges.map((range) => range.end);
149
+ const chunks = [];
150
+ let start = 0;
151
+ let previousEnd = 0;
152
+ while (start < text.length) {
153
+ const limit = Math.min(start + maxSize, text.length);
154
+ const boundary = findLastBoundaryAtMost(boundaries, limit);
155
+ const end = boundary !== void 0 && boundary > previousEnd ? boundary : limit;
156
+ chunks.push(createChunk(text, chunks.length, start, end));
157
+ if (end === text.length) {
158
+ break;
159
+ }
160
+ previousEnd = end;
161
+ start = Math.max(0, end - overlap);
162
+ }
163
+ return chunks;
164
+ }
165
+ function findLastBoundaryAtMost(boundaries, limit) {
166
+ let low = 0;
167
+ let high = boundaries.length;
168
+ while (low < high) {
169
+ const middle = low + Math.floor((high - low) / 2);
170
+ if (boundaries[middle] <= limit) {
171
+ low = middle + 1;
172
+ } else {
173
+ high = middle;
174
+ }
175
+ }
176
+ return boundaries[low - 1];
177
+ }
178
+ function createChunk(text, index, start, end) {
179
+ return { index, text: text.slice(start, end), start, end };
180
+ }
181
+
182
+ // src/documents/pdf.ts
183
+ async function extractPdfText(options) {
184
+ if (typeof options !== "object" || options === null) {
185
+ throw new TypeError("extractPdfText options must be an object");
186
+ }
187
+ if (!(options.data instanceof Uint8Array)) {
188
+ throw new TypeError("extractPdfText data must be a Uint8Array");
189
+ }
190
+ if (options.abortSignal !== void 0 && !isAbortSignal(options.abortSignal)) {
191
+ throw new TypeError("extractPdfText abortSignal must be an AbortSignal");
192
+ }
193
+ const { abortSignal } = options;
194
+ abortSignal?.throwIfAborted();
195
+ const data = new Uint8Array(options.data);
196
+ const pdfjs = await loadPdfjs();
197
+ abortSignal?.throwIfAborted();
198
+ const loadingTask = pdfjs.getDocument({ data });
199
+ let destroyPromise;
200
+ const destroy = () => {
201
+ destroyPromise ??= loadingTask.destroy();
202
+ return destroyPromise;
203
+ };
204
+ const abort = createAbortPromise(abortSignal, destroy);
205
+ return runWithCleanup(
206
+ async () => {
207
+ const document = await abort.wait(loadingTask.promise);
208
+ const pages = [];
209
+ for (let pageNumber = 1; pageNumber <= document.numPages; pageNumber += 1) {
210
+ abortSignal?.throwIfAborted();
211
+ const page = await abort.wait(document.getPage(pageNumber));
212
+ const content = await abort.wait(page.getTextContent());
213
+ pages.push({ pageNumber, text: extractPageText(content.items) });
214
+ }
215
+ return { pages };
216
+ },
217
+ async () => {
218
+ abort.dispose();
219
+ await destroy();
220
+ }
221
+ );
222
+ }
223
+ async function loadPdfjs() {
224
+ try {
225
+ return await import("pdfjs-dist/legacy/build/pdf.mjs");
226
+ } catch (cause) {
227
+ if (!isMissingPdfjsDependency(cause)) {
228
+ throw cause;
229
+ }
230
+ throw new Error(
231
+ 'PDF extraction requires the optional "pdfjs-dist" package. Install it in your application to use extractPdfText().',
232
+ { cause }
233
+ );
234
+ }
235
+ }
236
+ function isMissingPdfjsDependency(error) {
237
+ const seen = /* @__PURE__ */ new Set();
238
+ let current = error;
239
+ while (current instanceof Error && !seen.has(current)) {
240
+ seen.add(current);
241
+ if (current.message.includes("pdfjs-dist") && "code" in current && current.code === "ERR_MODULE_NOT_FOUND") {
242
+ return true;
243
+ }
244
+ current = "cause" in current ? current.cause : void 0;
245
+ }
246
+ return false;
247
+ }
248
+ async function runWithCleanup(operation, cleanup) {
249
+ let outcome;
250
+ try {
251
+ outcome = { ok: true, value: await operation() };
252
+ } catch (error) {
253
+ outcome = { ok: false, error };
254
+ }
255
+ let cleanupError;
256
+ let cleanupFailed = false;
257
+ try {
258
+ await cleanup();
259
+ } catch (error) {
260
+ cleanupFailed = true;
261
+ cleanupError = error;
262
+ }
263
+ if (!outcome.ok) {
264
+ if (cleanupFailed) {
265
+ throw new AggregateError(
266
+ [outcome.error, cleanupError],
267
+ "PDF extraction and cleanup both failed",
268
+ { cause: outcome.error }
269
+ );
270
+ }
271
+ throw outcome.error;
272
+ }
273
+ if (cleanupFailed) {
274
+ throw cleanupError;
275
+ }
276
+ return outcome.value;
277
+ }
278
+ function isAbortSignal(value) {
279
+ if (typeof value !== "object" || value === null) {
280
+ return false;
281
+ }
282
+ const candidate = value;
283
+ return typeof candidate.aborted === "boolean" && typeof candidate.addEventListener === "function" && typeof candidate.removeEventListener === "function" && typeof candidate.throwIfAborted === "function";
284
+ }
285
+ function extractPageText(items) {
286
+ let text = "";
287
+ for (const item of items) {
288
+ if (typeof item !== "object" || item === null) {
289
+ throw new TypeError("PDF text content contains a malformed item");
290
+ }
291
+ if (!("str" in item)) {
292
+ if ("type" in item && (item.type === "beginMarkedContent" || item.type === "beginMarkedContentProps" || item.type === "endMarkedContent")) {
293
+ continue;
294
+ }
295
+ throw new TypeError("PDF text content contains an unknown non-text item");
296
+ }
297
+ if (typeof item.str !== "string") {
298
+ throw new TypeError("PDF text content item str must be a string");
299
+ }
300
+ if (!("hasEOL" in item) || typeof item.hasEOL !== "boolean") {
301
+ throw new TypeError("PDF text content item hasEOL must be a boolean");
302
+ }
303
+ text += item.str;
304
+ if (item.hasEOL) {
305
+ text += "\n";
306
+ }
307
+ }
308
+ return text;
309
+ }
310
+ function createAbortPromise(abortSignal, destroy) {
311
+ if (abortSignal === void 0) {
312
+ return {
313
+ wait: (promise) => promise,
314
+ dispose: () => void 0
315
+ };
316
+ }
317
+ let rejectAbort;
318
+ const aborted = new Promise((_resolve, reject) => {
319
+ rejectAbort = reject;
320
+ });
321
+ const onAbort = () => {
322
+ void destroy();
323
+ rejectAbort?.(
324
+ abortSignal.reason ?? new DOMException("The operation was aborted", "AbortError")
325
+ );
326
+ };
327
+ abortSignal.addEventListener("abort", onAbort, { once: true });
328
+ if (abortSignal.aborted) {
329
+ onAbort();
330
+ }
331
+ return {
332
+ wait: (promise) => Promise.race([promise, aborted]),
333
+ dispose: () => abortSignal.removeEventListener("abort", onAbort)
334
+ };
335
+ }
336
+ export {
337
+ chunkText,
338
+ extractPdfText
339
+ };
340
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/documents/chunk-text.ts","../../src/documents/pdf.ts"],"sourcesContent":["export type TextChunk = Readonly<{\n index: number;\n text: string;\n start: number;\n end: number;\n}>;\n\nexport type ChunkTextOptions =\n | Readonly<{\n text: string;\n strategy: \"fixed\";\n maxSize: number;\n overlap?: number;\n }>\n | Readonly<{\n text: string;\n strategy: \"recursive\";\n maxSize: number;\n overlap?: number;\n separators: readonly string[];\n }>;\n\ntype TextRange = Readonly<{\n start: number;\n end: number;\n}>;\n\nexport function chunkText(options: ChunkTextOptions): readonly TextChunk[] {\n const validated = validateOptions(options);\n if (validated.text.length === 0) {\n return [];\n }\n\n if (validated.strategy === \"fixed\") {\n return chunkFixed(validated.text, validated.maxSize, validated.overlap);\n }\n\n const ranges = resolveRecursiveRanges(\n validated.text,\n { start: 0, end: validated.text.length },\n validated.maxSize,\n validated.separators,\n );\n return applyRecursiveOverlap(validated.text, ranges, validated.maxSize, validated.overlap);\n}\n\nfunction validateOptions(options: ChunkTextOptions):\n | Readonly<{\n text: string;\n strategy: \"fixed\";\n maxSize: number;\n overlap: number;\n }>\n | Readonly<{\n text: string;\n strategy: \"recursive\";\n maxSize: number;\n overlap: number;\n separators: readonly string[];\n }> {\n if (typeof options !== \"object\" || options === null) {\n throw new TypeError(\"chunkText options must be an object\");\n }\n\n const value = options as unknown as Record<string, unknown>;\n if (typeof value.text !== \"string\") {\n throw new TypeError(\"chunkText text must be a string\");\n }\n if (!Number.isSafeInteger(value.maxSize) || (value.maxSize as number) <= 0) {\n throw new RangeError(\"chunkText maxSize must be a positive safe integer\");\n }\n\n const maxSize = value.maxSize as number;\n const overlap = value.overlap === undefined ? 0 : value.overlap;\n if (!Number.isSafeInteger(overlap) || (overlap as number) < 0 || (overlap as number) >= maxSize) {\n throw new RangeError(\n \"chunkText overlap must be a non-negative safe integer smaller than maxSize\",\n );\n }\n\n if (value.strategy === \"fixed\") {\n if (\"separators\" in value) {\n throw new TypeError(\"chunkText fixed strategy does not accept separators\");\n }\n return {\n text: value.text,\n strategy: \"fixed\",\n maxSize,\n overlap: overlap as number,\n };\n }\n\n if (value.strategy !== \"recursive\") {\n throw new TypeError('chunkText strategy must be either \"fixed\" or \"recursive\"');\n }\n if (!Array.isArray(value.separators) || value.separators.length === 0) {\n throw new TypeError(\"chunkText recursive separators must be a non-empty array\");\n }\n\n const separators = value.separators as unknown[];\n const seen = new Set<string>();\n for (const separator of separators) {\n if (typeof separator !== \"string\" || separator.length === 0) {\n throw new TypeError(\"chunkText recursive separators must contain non-empty strings\");\n }\n if (seen.has(separator)) {\n throw new TypeError(\"chunkText recursive separators must not contain duplicates\");\n }\n seen.add(separator);\n }\n\n return {\n text: value.text,\n strategy: \"recursive\",\n maxSize,\n overlap: overlap as number,\n separators: separators as string[],\n };\n}\n\nfunction chunkFixed(text: string, maxSize: number, overlap: number): readonly TextChunk[] {\n const chunks: TextChunk[] = [];\n let start = 0;\n\n while (start < text.length) {\n const end = Math.min(start + maxSize, text.length);\n chunks.push(createChunk(text, chunks.length, start, end));\n if (end === text.length) {\n break;\n }\n start = end - overlap;\n }\n\n return chunks;\n}\n\nfunction resolveRecursiveRanges(\n text: string,\n initialRange: TextRange,\n maxSize: number,\n separators: readonly string[],\n): readonly TextRange[] {\n const resolved: TextRange[] = [];\n const pending: Array<Readonly<{ range: TextRange; separatorIndex: number }>> = [\n { range: initialRange, separatorIndex: 0 },\n ];\n\n while (pending.length > 0) {\n const current = pending.pop();\n if (current === undefined) {\n break;\n }\n if (current.range.end - current.range.start <= maxSize) {\n resolved.push(current.range);\n continue;\n }\n\n let pieces: readonly TextRange[] | undefined;\n let nextSeparatorIndex = separators.length;\n for (let index = current.separatorIndex; index < separators.length; index += 1) {\n const candidate = splitAfterSeparator(text, current.range, separators[index] as string);\n if (candidate.length > 1) {\n pieces = candidate;\n nextSeparatorIndex = index + 1;\n break;\n }\n }\n\n if (pieces === undefined) {\n resolved.push(...hardSplit(current.range, maxSize));\n continue;\n }\n\n for (let index = pieces.length - 1; index >= 0; index -= 1) {\n pending.push({ range: pieces[index] as TextRange, separatorIndex: nextSeparatorIndex });\n }\n }\n\n return resolved;\n}\n\nfunction splitAfterSeparator(text: string, range: TextRange, separator: string): TextRange[] {\n const ranges: TextRange[] = [];\n let start = range.start;\n let searchFrom = range.start;\n\n while (searchFrom < range.end) {\n const separatorStart = text.indexOf(separator, searchFrom);\n if (separatorStart < 0 || separatorStart + separator.length > range.end) {\n break;\n }\n const end = separatorStart + separator.length;\n if (end > start) {\n ranges.push({ start, end });\n }\n start = end;\n searchFrom = end;\n }\n\n if (start < range.end) {\n ranges.push({ start, end: range.end });\n }\n return ranges;\n}\n\nfunction hardSplit(range: TextRange, maxSize: number): readonly TextRange[] {\n const ranges: TextRange[] = [];\n for (let start = range.start; start < range.end; start += maxSize) {\n ranges.push({ start, end: Math.min(start + maxSize, range.end) });\n }\n return ranges;\n}\n\nfunction applyRecursiveOverlap(\n text: string,\n ranges: readonly TextRange[],\n maxSize: number,\n overlap: number,\n): readonly TextChunk[] {\n const boundaries = ranges.map((range) => range.end);\n const chunks: TextChunk[] = [];\n let start = 0;\n let previousEnd = 0;\n\n while (start < text.length) {\n const limit = Math.min(start + maxSize, text.length);\n const boundary = findLastBoundaryAtMost(boundaries, limit);\n const end = boundary !== undefined && boundary > previousEnd ? boundary : limit;\n\n chunks.push(createChunk(text, chunks.length, start, end));\n if (end === text.length) {\n break;\n }\n previousEnd = end;\n start = Math.max(0, end - overlap);\n }\n\n return chunks;\n}\n\nfunction findLastBoundaryAtMost(boundaries: readonly number[], limit: number): number | undefined {\n let low = 0;\n let high = boundaries.length;\n while (low < high) {\n const middle = low + Math.floor((high - low) / 2);\n if ((boundaries[middle] as number) <= limit) {\n low = middle + 1;\n } else {\n high = middle;\n }\n }\n return boundaries[low - 1];\n}\n\nfunction createChunk(text: string, index: number, start: number, end: number): TextChunk {\n return { index, text: text.slice(start, end), start, end };\n}\n","export type PdfTextPage = Readonly<{\n pageNumber: number;\n text: string;\n}>;\n\nexport type ExtractPdfTextOptions = Readonly<{\n data: Uint8Array;\n abortSignal?: AbortSignal;\n}>;\n\nexport type ExtractPdfTextResult = Readonly<{\n pages: readonly PdfTextPage[];\n}>;\n\nexport async function extractPdfText(\n options: ExtractPdfTextOptions,\n): Promise<ExtractPdfTextResult> {\n if (typeof options !== \"object\" || options === null) {\n throw new TypeError(\"extractPdfText options must be an object\");\n }\n if (!(options.data instanceof Uint8Array)) {\n throw new TypeError(\"extractPdfText data must be a Uint8Array\");\n }\n if (options.abortSignal !== undefined && !isAbortSignal(options.abortSignal)) {\n throw new TypeError(\"extractPdfText abortSignal must be an AbortSignal\");\n }\n\n const { abortSignal } = options;\n abortSignal?.throwIfAborted();\n const data = new Uint8Array(options.data);\n const pdfjs = await loadPdfjs();\n abortSignal?.throwIfAborted();\n\n const loadingTask = pdfjs.getDocument({ data });\n let destroyPromise: Promise<void> | undefined;\n const destroy = (): Promise<void> => {\n destroyPromise ??= loadingTask.destroy();\n return destroyPromise;\n };\n const abort = createAbortPromise(abortSignal, destroy);\n\n return runWithCleanup(\n async () => {\n const document = await abort.wait(loadingTask.promise);\n const pages: PdfTextPage[] = [];\n for (let pageNumber = 1; pageNumber <= document.numPages; pageNumber += 1) {\n abortSignal?.throwIfAborted();\n const page = await abort.wait(document.getPage(pageNumber));\n const content = await abort.wait(page.getTextContent());\n pages.push({ pageNumber, text: extractPageText(content.items) });\n }\n return { pages };\n },\n async () => {\n abort.dispose();\n await destroy();\n },\n );\n}\n\nasync function loadPdfjs(): Promise<typeof import(\"pdfjs-dist/legacy/build/pdf.mjs\")> {\n try {\n return await import(\"pdfjs-dist/legacy/build/pdf.mjs\");\n } catch (cause) {\n if (!isMissingPdfjsDependency(cause)) {\n throw cause;\n }\n throw new Error(\n 'PDF extraction requires the optional \"pdfjs-dist\" package. Install it in your application to use extractPdfText().',\n { cause },\n );\n }\n}\n\nfunction isMissingPdfjsDependency(error: unknown): boolean {\n const seen = new Set<unknown>();\n let current = error;\n while (current instanceof Error && !seen.has(current)) {\n seen.add(current);\n if (\n current.message.includes(\"pdfjs-dist\") &&\n \"code\" in current &&\n current.code === \"ERR_MODULE_NOT_FOUND\"\n ) {\n return true;\n }\n current = \"cause\" in current ? current.cause : undefined;\n }\n return false;\n}\n\nasync function runWithCleanup<Result>(\n operation: () => Promise<Result>,\n cleanup: () => Promise<void>,\n): Promise<Result> {\n let outcome: { ok: true; value: Result } | { ok: false; error: unknown };\n try {\n outcome = { ok: true, value: await operation() };\n } catch (error) {\n outcome = { ok: false, error };\n }\n\n let cleanupError: unknown;\n let cleanupFailed = false;\n try {\n await cleanup();\n } catch (error) {\n cleanupFailed = true;\n cleanupError = error;\n }\n\n if (!outcome.ok) {\n if (cleanupFailed) {\n throw new AggregateError(\n [outcome.error, cleanupError],\n \"PDF extraction and cleanup both failed\",\n { cause: outcome.error },\n );\n }\n throw outcome.error;\n }\n if (cleanupFailed) {\n throw cleanupError;\n }\n return outcome.value;\n}\n\nfunction isAbortSignal(value: unknown): value is AbortSignal {\n if (typeof value !== \"object\" || value === null) {\n return false;\n }\n const candidate = value as Partial<AbortSignal>;\n return (\n typeof candidate.aborted === \"boolean\" &&\n typeof candidate.addEventListener === \"function\" &&\n typeof candidate.removeEventListener === \"function\" &&\n typeof candidate.throwIfAborted === \"function\"\n );\n}\n\nfunction extractPageText(items: readonly unknown[]): string {\n let text = \"\";\n for (const item of items) {\n if (typeof item !== \"object\" || item === null) {\n throw new TypeError(\"PDF text content contains a malformed item\");\n }\n if (!(\"str\" in item)) {\n if (\n \"type\" in item &&\n (item.type === \"beginMarkedContent\" ||\n item.type === \"beginMarkedContentProps\" ||\n item.type === \"endMarkedContent\")\n ) {\n continue;\n }\n throw new TypeError(\"PDF text content contains an unknown non-text item\");\n }\n if (typeof item.str !== \"string\") {\n throw new TypeError(\"PDF text content item str must be a string\");\n }\n if (!(\"hasEOL\" in item) || typeof item.hasEOL !== \"boolean\") {\n throw new TypeError(\"PDF text content item hasEOL must be a boolean\");\n }\n text += item.str;\n if (item.hasEOL) {\n text += \"\\n\";\n }\n }\n return text;\n}\n\nfunction createAbortPromise(\n abortSignal: AbortSignal | undefined,\n destroy: () => Promise<void>,\n): {\n wait<T>(promise: Promise<T>): Promise<T>;\n dispose(): void;\n} {\n if (abortSignal === undefined) {\n return {\n wait: (promise) => promise,\n dispose: () => undefined,\n };\n }\n\n let rejectAbort: ((reason?: unknown) => void) | undefined;\n const aborted = new Promise<never>((_resolve, reject) => {\n rejectAbort = reject;\n });\n const onAbort = () => {\n void destroy();\n rejectAbort?.(\n abortSignal.reason ?? new DOMException(\"The operation was aborted\", \"AbortError\"),\n );\n };\n abortSignal.addEventListener(\"abort\", onAbort, { once: true });\n if (abortSignal.aborted) {\n onAbort();\n }\n\n return {\n wait: (promise) => Promise.race([promise, aborted]),\n dispose: () => abortSignal.removeEventListener(\"abort\", onAbort),\n };\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,45 @@
1
+ import { b as RetrySetting } from './retry-CjvSlKGW.js';
2
+ import { w as ToolDefinition } from './types-DgvozfPc.js';
3
+ import { V as VectorMetadata, E as EmbeddingModel, a as EmbeddedDocument } from './types-Cr4uiYo5.js';
4
+ import { A as AnyTool } from './tool-BpqpoRSE.js';
5
+ import { V as VectorFilter, a as VectorSearchResult, b as VectorInspectRequest, c as VectorInspectPage } from './types-CXNE592e.js';
6
+
7
+ type ToolSearchDocument<Metadata extends VectorMetadata = VectorMetadata> = {
8
+ toolName: string;
9
+ definition: ToolDefinition;
10
+ text: string;
11
+ metadata?: Metadata | undefined;
12
+ };
13
+ type EmbedToolsOptions<Metadata extends VectorMetadata = VectorMetadata> = {
14
+ model: EmbeddingModel;
15
+ tools: readonly AnyTool[];
16
+ content?: ((tool: AnyTool, definition: ToolDefinition) => string | string[]) | undefined;
17
+ metadata?: ((tool: AnyTool, definition: ToolDefinition) => Metadata | undefined) | undefined;
18
+ concurrency?: number | undefined;
19
+ retries?: RetrySetting | undefined;
20
+ abortSignal?: AbortSignal | undefined;
21
+ };
22
+ type CreateToolIndexOptions<Metadata extends VectorMetadata = VectorMetadata> = EmbedToolsOptions<Metadata> & {
23
+ topK: number;
24
+ minScore?: number | undefined;
25
+ filter?: VectorFilter | undefined;
26
+ };
27
+ interface ToolIndex<Metadata extends VectorMetadata = VectorMetadata> {
28
+ readonly kind: "tool-index";
29
+ readonly tools: readonly AnyTool[];
30
+ readonly topK: number;
31
+ readonly minScore?: number | undefined;
32
+ readonly filter?: VectorFilter | undefined;
33
+ search(options: {
34
+ query: string;
35
+ abortSignal?: AbortSignal | undefined;
36
+ }): Promise<Array<VectorSearchResult<ToolSearchDocument<Metadata>, Metadata>>>;
37
+ inspect?(request: VectorInspectRequest): Promise<VectorInspectPage<ToolSearchDocument<Metadata>, Metadata>>;
38
+ }
39
+ declare function embedTools<Metadata extends VectorMetadata = VectorMetadata>(options: EmbedToolsOptions<Metadata>): Promise<{
40
+ documents: Array<EmbeddedDocument<ToolSearchDocument<Metadata>, Metadata>>;
41
+ }>;
42
+ declare function createToolIndex<Metadata extends VectorMetadata = VectorMetadata>(options: CreateToolIndexOptions<Metadata>): Promise<ToolIndex<Metadata>>;
43
+ declare function isToolIndex(value: unknown): value is ToolIndex;
44
+
45
+ export { type CreateToolIndexOptions as C, type EmbedToolsOptions as E, type ToolIndex as T, type ToolSearchDocument as a, createToolIndex as c, embedTools as e, isToolIndex as i };
@@ -1,5 +1,7 @@
1
- import { V as VectorMetadata, E as EmbeddingModel, b as EmbedDocumentsOptions, c as EmbeddedDocument, d as EmbedHybridDocumentsOptions, S as SparseEmbeddingModel, e as SparseEmbedding, f as Embedding } from '../types-BCTRUGex.js';
2
- export { g as SparseVector, a as VectorMetadataValue } from '../types-BCTRUGex.js';
1
+ export { M as ModelCallOptions } from '../model-call-options-CZkSw_xN.js';
2
+ export { R as RetryContext, a as RetryOptions, b as RetrySetting } from '../retry-CjvSlKGW.js';
3
+ import { V as VectorMetadata, d as EmbedDocumentsOptions, e as EmbedDocumentsResult, f as EmbedHybridDocumentsOptions, g as EmbedSparseQueryOptions, h as EmbedSparseQueryResult, i as EmbedSparseTextsOptions, j as EmbedSparseTextsResult, k as EmbedTextOptions, l as EmbedTextResult, m as EmbedTextsOptions, n as EmbedTextsResult } from '../types-Cr4uiYo5.js';
4
+ export { o as EmbedDocumentsBaseOptions, a as EmbeddedDocument, p as Embedding, E as EmbeddingModel, q as EmbeddingOperationOptions, r as SparseEmbedding, c as SparseEmbeddingModel, S as SparseVector, b as VectorMetadataValue } from '../types-Cr4uiYo5.js';
3
5
 
4
6
  declare function dotProduct(left: number[], right: number[]): number;
5
7
  declare function cosineSimilarity(left: number[], right: number[]): number;
@@ -8,11 +10,11 @@ declare function euclideanDistance(left: number[], right: number[]): number;
8
10
  declare function manhattanDistance(left: number[], right: number[]): number;
9
11
  declare function chebyshevDistance(left: number[], right: number[]): number;
10
12
 
11
- declare function embedText(model: EmbeddingModel, text: string): Promise<Embedding>;
12
- declare function embedTexts(model: EmbeddingModel, texts: string[]): Promise<Embedding[]>;
13
- declare function embedSparseTexts(model: SparseEmbeddingModel, texts: string[]): Promise<SparseEmbedding[]>;
14
- declare function embedSparseQuery(model: SparseEmbeddingModel, query: string): Promise<SparseEmbedding>;
15
- declare function embedDocuments<T, Metadata extends VectorMetadata = VectorMetadata>(model: EmbeddingModel, documents: T[], options: EmbedDocumentsOptions<T, Metadata>): Promise<Array<EmbeddedDocument<T, Metadata>>>;
16
- declare function embedHybridDocuments<T, Metadata extends VectorMetadata = VectorMetadata>(models: EmbedHybridDocumentsOptions, documents: T[], options: EmbedDocumentsOptions<T, Metadata>): Promise<Array<EmbeddedDocument<T, Metadata>>>;
13
+ declare function embedText(options: EmbedTextOptions): Promise<EmbedTextResult>;
14
+ declare function embedTexts(options: EmbedTextsOptions): Promise<EmbedTextsResult>;
15
+ declare function embedSparseTexts(options: EmbedSparseTextsOptions): Promise<EmbedSparseTextsResult>;
16
+ declare function embedSparseQuery(options: EmbedSparseQueryOptions): Promise<EmbedSparseQueryResult>;
17
+ declare function embedDocuments<T, Metadata extends VectorMetadata = VectorMetadata>(options: EmbedDocumentsOptions<T, Metadata>): Promise<EmbedDocumentsResult<T, Metadata>>;
18
+ declare function embedDocuments<T, Metadata extends VectorMetadata = VectorMetadata>(options: EmbedHybridDocumentsOptions<T, Metadata>): Promise<EmbedDocumentsResult<T, Metadata>>;
17
19
 
18
- export { EmbedDocumentsOptions, EmbedHybridDocumentsOptions, EmbeddedDocument, Embedding, EmbeddingModel, SparseEmbedding, SparseEmbeddingModel, VectorMetadata, angularDistance, chebyshevDistance, cosineSimilarity, dotProduct, embedDocuments, embedHybridDocuments, embedSparseQuery, embedSparseTexts, embedText, embedTexts, euclideanDistance, manhattanDistance };
20
+ export { EmbedDocumentsOptions, EmbedDocumentsResult, EmbedHybridDocumentsOptions, EmbedSparseQueryOptions, EmbedSparseQueryResult, EmbedSparseTextsOptions, EmbedSparseTextsResult, EmbedTextOptions, EmbedTextResult, EmbedTextsOptions, EmbedTextsResult, VectorMetadata, angularDistance, chebyshevDistance, cosineSimilarity, dotProduct, embedDocuments, embedSparseQuery, embedSparseTexts, embedText, embedTexts, euclideanDistance, manhattanDistance };
@@ -4,22 +4,21 @@ import {
4
4
  cosineSimilarity,
5
5
  dotProduct,
6
6
  embedDocuments,
7
- embedHybridDocuments,
8
7
  embedSparseQuery,
9
8
  embedSparseTexts,
10
9
  embedText,
11
10
  embedTexts,
12
11
  euclideanDistance,
13
12
  manhattanDistance
14
- } from "../chunk-MNWK2USR.js";
15
- import "../chunk-OIMLU4SF.js";
13
+ } from "../chunk-ZA564323.js";
14
+ import "../chunk-3RM57ZT2.js";
15
+ import "../chunk-3RWESPUG.js";
16
16
  export {
17
17
  angularDistance,
18
18
  chebyshevDistance,
19
19
  cosineSimilarity,
20
20
  dotProduct,
21
21
  embedDocuments,
22
- embedHybridDocuments,
23
22
  embedSparseQuery,
24
23
  embedSparseTexts,
25
24
  embedText,
@@ -1,15 +1,16 @@
1
+ import { U as Usage, J as JsonObject, c as CompletionModel, M as Message } from '../types-DgvozfPc.js';
1
2
  import { Z as ZodSchema } from '../zod-schema-C7F4clpm.js';
2
- import { U as Usage, l as JsonValue, C as CompletionModel, M as Message } from '../types-G12i56s2.js';
3
- import { A as Agent } from '../agent-x3YTyv5i.js';
4
- import { P as PromptResponse } from '../index-BxSbmOMr.js';
5
- import { E as EmbeddingModel } from '../types-BCTRUGex.js';
3
+ import { AgentInteractionRequest, AgentInteractionResponse } from '../agent/interactions/index.js';
4
+ import { t as AgentSuspendedResult, j as AgentResponse, l as AgentRunOptions, k as AgentResult } from '../types-Sue2hb_L.js';
5
+ import { E as EmbeddingModel } from '../types-Cr4uiYo5.js';
6
+ import '../model-call-options-CZkSw_xN.js';
6
7
  import 'zod';
7
- import '../guardrails/index.js';
8
- import '../types-D9JpeAPF.js';
9
- import '../types-BrLbKnEz.js';
10
- import '../tool-Cohdv5GC.js';
11
- import '../middleware-Dp3d_pxi.js';
12
- import '../types-O-abTIin.js';
8
+ import '../retry-CjvSlKGW.js';
9
+ import '../types-DhkodEft.js';
10
+ import '../type-utils-CtHVDRn_.js';
11
+ import '../types-DKOXVTcq.js';
12
+ import '../tool-BpqpoRSE.js';
13
+ import '../middleware-kcF8AusP.js';
13
14
 
14
15
  type EvalOutcome<Score = unknown> = {
15
16
  outcome: "pass";
@@ -50,7 +51,8 @@ declare const EvalOutcome: {
50
51
  }): EvalOutcome<Score>;
51
52
  };
52
53
 
53
- type EvalMetadata = Record<string, JsonValue | undefined>;
54
+ type EvalMetadata = JsonObject;
55
+ type EvalReporterErrorPolicy = "collect" | "throw";
54
56
  type EvalRunOptions = {
55
57
  id?: string | undefined;
56
58
  datasetName?: string | undefined;
@@ -78,6 +80,7 @@ type EvalTurn = {
78
80
  metadata?: EvalMetadata | undefined;
79
81
  };
80
82
  type EvalTraceRef = {
83
+ observer?: string | undefined;
81
84
  traceId: string;
82
85
  observationId?: string | undefined;
83
86
  responseId?: string | undefined;
@@ -248,7 +251,7 @@ type RunEvalSuiteOptions<Input, Output, Expected = unknown, Metrics extends read
248
251
  concurrency?: number | undefined;
249
252
  trace?: EvalTraceSelector<NoInfer<Input>, NoInfer<Output>, NoInfer<Expected>> | undefined;
250
253
  reporters?: readonly EvalReporter<NoInfer<Input>, NoInfer<Output>, NoInfer<Expected>>[] | undefined;
251
- failOnReporterError?: boolean | undefined;
254
+ reporterErrorPolicy?: EvalReporterErrorPolicy | undefined;
252
255
  targetUsage?: EvalTargetUsageSelector<NoInfer<Input>, NoInfer<Output>, NoInfer<Expected>> | undefined;
253
256
  cost?: EvalCostOptions<NoInfer<Input>, NoInfer<Output>, NoInfer<Expected>> | undefined;
254
257
  };
@@ -381,12 +384,41 @@ declare function knowledgeRetention<Input, Output, Expected = unknown, const Nam
381
384
  }): EvalMetric<Input, Output, number, Expected, Name>;
382
385
  type ConversationSource = EvalTurn[] | Message[];
383
386
 
384
- type AgentEvalTargetOptions<Input, Output = PromptResponse, Expected = unknown> = {
385
- prompt?: ((input: Input, testCase: EvalCase<Input, Expected>) => string | Message) | undefined;
386
- output?: ((response: PromptResponse, testCase: EvalCase<Input, Expected>) => Output) | undefined;
387
- };
388
- declare function agentEvalTarget<Input, Expected = unknown>(agent: Agent, options?: AgentEvalTargetOptions<Input, PromptResponse, Expected>): EvalTarget<Input, PromptResponse, Expected>;
389
- declare function agentEvalTarget<Input, Output, Expected = unknown>(agent: Agent, options: AgentEvalTargetOptions<Input, Output, Expected>): EvalTarget<Input, Output, Expected>;
387
+ type EvaluableAgent<Output> = {
388
+ generate(input: AgentRunOptions<Output>): Promise<AgentResult<Output>>;
389
+ };
390
+ type IsAny<Value> = 0 extends 1 & Value ? true : false;
391
+ type IsExactly<Left, Right> = IsAny<Left> extends true ? false : [Left] extends [Right] ? [Right] extends [Left] ? true : false : false;
392
+ type AgentEvalTargetOptions<Input, AgentOutput = string, Output = AgentResponse<AgentOutput>, Expected = unknown> = {
393
+ agent: EvaluableAgent<AgentOutput>;
394
+ request(args: {
395
+ input: Input;
396
+ testCase: EvalCase<Input, Expected>;
397
+ }): AgentRunOptions<AgentOutput> | Promise<AgentRunOptions<AgentOutput>>;
398
+ interactions?: {
399
+ maxResponses?: number | undefined;
400
+ respond(args: {
401
+ interaction: AgentInteractionRequest;
402
+ testCase: EvalCase<Input, Expected>;
403
+ phase: number;
404
+ }): AgentInteractionResponse | Promise<AgentInteractionResponse>;
405
+ } | undefined;
406
+ } & (IsExactly<Output, AgentResponse<AgentOutput>> extends true ? {
407
+ output?(args: {
408
+ response: AgentResponse<AgentOutput>;
409
+ testCase: EvalCase<Input, Expected>;
410
+ }): Output | Promise<Output>;
411
+ } : {
412
+ output(args: {
413
+ response: AgentResponse<AgentOutput>;
414
+ testCase: EvalCase<Input, Expected>;
415
+ }): Output | Promise<Output>;
416
+ });
417
+ declare class AgentEvalSuspensionError extends Error {
418
+ readonly result: AgentSuspendedResult;
419
+ constructor(result: AgentSuspendedResult, message?: string);
420
+ }
421
+ declare function agentEvalTarget<Input, AgentOutput = string, Output = AgentResponse<AgentOutput>, Expected = unknown>(options: AgentEvalTargetOptions<Input, AgentOutput, Output, Expected>): EvalTarget<Input, Output, Expected>;
390
422
 
391
423
  type EvalOutputFormat = "pretty" | "json" | "quiet";
392
424
  type EvalExpectedTotals = Partial<EvalTotals> & {
@@ -562,6 +594,10 @@ declare function resolveEvalTraceRef(args: {
562
594
  }): EvalTraceRef | undefined;
563
595
  declare function defaultEvalTraceSelector<Input, Output, Expected>(args: EvalTraceSelectorArgs<Input, Output, Expected>): EvalTraceRef | undefined;
564
596
 
597
+ declare class EvalReporterDispatchError extends AggregateError {
598
+ readonly phase: string;
599
+ constructor(phase: string, errors: readonly unknown[]);
600
+ }
565
601
  declare function runEvalSuite<Input, Output, Expected = unknown, const Metrics extends readonly EvalMetric<NoInfer<Input>, NoInfer<Output>, unknown, NoInfer<Expected>, string>[] = readonly EvalMetric<NoInfer<Input>, NoInfer<Output>, unknown, NoInfer<Expected>, string>[]>(options: RunEvalSuiteOptions<Input, Output, Expected, Metrics>): Promise<EvalSuiteResult<Input, Output, Expected, Metrics>>;
566
602
 
567
603
  declare function selectPromptOutput(args: EvalMetricArgs<unknown, unknown, unknown>): string;
@@ -599,7 +635,7 @@ type DefinedEvalSuite<Cases extends readonly EvalCaseLike[], Output, Metrics ext
599
635
  target: EvalTarget<EvalCasesInput<Cases>, Output, EvalCasesExpected<Cases>>;
600
636
  metrics: Metrics;
601
637
  };
602
- type EvalSuiteTypeBuilder<Input, Output, Expected = unknown> = {
638
+ type EvalMetricFactory<Input, Output, Expected = unknown> = {
603
639
  defineMetric<const Name extends string = string>(metric: EvalMetric<Input, Output, boolean, Expected, Name> & {
604
640
  dataType: "BOOLEAN";
605
641
  }): EvalMetric<Input, Output, boolean, Expected, Name>;
@@ -626,11 +662,11 @@ type EvalSuiteTypeBuilder<Input, Output, Expected = unknown> = {
626
662
  }): EvalMetric<Input, Output, Score, Expected, Name>;
627
663
  };
628
664
  declare function defineEvalCases<const Cases extends readonly EvalCaseLike[]>(cases: Cases): Cases;
629
- declare function defineEvalSuite<Input, Output, Expected = unknown>(): EvalSuiteTypeBuilder<Input, Output, Expected>;
665
+ declare function defineEvalSuite<Input, Output, Expected = unknown>(): EvalMetricFactory<Input, Output, Expected>;
630
666
  declare function defineEvalSuite<const Cases extends readonly EvalCaseLike[], const Target extends (input: EvalCasesInput<Cases>, testCase: EvalCase<EvalCasesInput<Cases>, EvalCasesExpected<Cases>>) => unknown, const Metrics extends readonly EvalMetric<EvalCasesInput<Cases>, Awaited<ReturnType<Target>>, unknown, EvalCasesExpected<Cases>, string>[]>(options: DefinedEvalSuite<Cases, Awaited<ReturnType<Target>>, Metrics> & {
631
667
  target: Target;
632
668
  }): DefinedEvalSuite<Cases, Awaited<ReturnType<Target>>, Metrics> & {
633
669
  target: Target;
634
670
  };
635
671
 
636
- export { type AbstentionCategory, type AbstentionOptions, type AgentEvalTargetOptions, type AnswerRelevancyOptions, type AnyEvalMetric, type ContainsAllOptions, type ContainsAnyOptions, type ContainsListOptions, type ContainsOptions, type DefaultEvalActual, type DefinedEvalSuite, type DoesNotMatchOptions, EvalAssertionError, type EvalCase, type EvalCaseRequirements, type EvalCaseResult, type EvalCasesExpected, type EvalCasesForMetrics, type EvalCasesInput, type EvalCostCalculatorArgs, type EvalCostOptions, type EvalCostSummary, type EvalDataType, type EvalExpectations, type EvalExpectedOutcomes, type EvalExpectedTotals, type EvalMetadata, type EvalMetric, type EvalMetricArgs, type EvalMetricDescriptor, type EvalMetricResult, type EvalMetricResultFor, type EvalMetricScore, EvalOutcome, type EvalOutcomeStatus, type EvalOutputFormat, type EvalOutputWriters, type EvalReportArgs, type EvalReporter, type EvalRunContext, type EvalRunEndArgs, type EvalRunOptions, type EvalRunStartArgs, type EvalScoreDirection, type EvalScoreMap, type EvalScoreProjection, type EvalSuiteResult, type EvalSuiteTypeBuilder, type EvalTarget, type EvalTargetUsageSelector, type EvalTotals, type EvalTraceCarrier, type EvalTraceRef, type EvalTraceSelector, type EvalTraceSelectorArgs, type EvalTurn, type EvalUsageSummary, type ExactMatchOptions, type FaithfulnessOptions, type GEvalOptions, type GEvalParameter, type GEvalRubric, type HallucinationOptions, type JsonCorrectnessOptions, type KnowledgeRetentionOptions, type LlmJudgeOptions, type LlmScoreMetricScore, type LlmScoreOptions, type MatchesOptions, type MaxLengthOptions, type NotContainsOptions, type PrintEvalResultOptions, type PromptAlignmentOptions, type RequiredFieldsOptions, type RunEvalCliOptions, type RunEvalSuiteOptions, type SelectorOrValue, type SemanticSimilarityOptions, type SummarizationOptions, type TurnRelevancyOptions, type ValueSelector, abstention, agentEvalTarget, answerRelevancy, assertEvalOutcomes, assertEvalTotals, contains, containsAll, containsAny, defaultEvalTraceSelector, defineEvalCases, defineEvalSuite, defineMetric, doesNotMatch, evalExitCode, exactMatch, faithfulness, gEval, hallucination, jsonCorrectness, knowledgeRetention, llmJudge, llmScore, matches, maxLength, notContains, printEvalResult, projectEvalOutcome, promptAlignment, requiredFields, resolveEvalTraceRef, runEvalCli, runEvalSuite, selectPromptOutput, semanticSimilarity, summarization, turnRelevancy };
672
+ export { type AbstentionCategory, type AbstentionOptions, AgentEvalSuspensionError, type AgentEvalTargetOptions, type AnswerRelevancyOptions, type AnyEvalMetric, type ContainsAllOptions, type ContainsAnyOptions, type ContainsListOptions, type ContainsOptions, type DefaultEvalActual, type DefinedEvalSuite, type DoesNotMatchOptions, EvalAssertionError, type EvalCase, type EvalCaseRequirements, type EvalCaseResult, type EvalCasesExpected, type EvalCasesForMetrics, type EvalCasesInput, type EvalCostCalculatorArgs, type EvalCostOptions, type EvalCostSummary, type EvalDataType, type EvalExpectations, type EvalExpectedOutcomes, type EvalExpectedTotals, type EvalMetadata, type EvalMetric, type EvalMetricArgs, type EvalMetricDescriptor, type EvalMetricResult, type EvalMetricResultFor, type EvalMetricScore, EvalOutcome, type EvalOutcomeStatus, type EvalOutputFormat, type EvalOutputWriters, type EvalReportArgs, type EvalReporter, EvalReporterDispatchError, type EvalReporterErrorPolicy, type EvalRunContext, type EvalRunEndArgs, type EvalRunOptions, type EvalRunStartArgs, type EvalScoreDirection, type EvalScoreMap, type EvalScoreProjection, type EvalSuiteResult, type EvalTarget, type EvalTargetUsageSelector, type EvalTotals, type EvalTraceCarrier, type EvalTraceRef, type EvalTraceSelector, type EvalTraceSelectorArgs, type EvalTurn, type EvalUsageSummary, type ExactMatchOptions, type FaithfulnessOptions, type GEvalOptions, type GEvalParameter, type GEvalRubric, type HallucinationOptions, type JsonCorrectnessOptions, type KnowledgeRetentionOptions, type LlmJudgeOptions, type LlmScoreMetricScore, type LlmScoreOptions, type MatchesOptions, type MaxLengthOptions, type NotContainsOptions, type PrintEvalResultOptions, type PromptAlignmentOptions, type RequiredFieldsOptions, type RunEvalCliOptions, type RunEvalSuiteOptions, type SelectorOrValue, type SemanticSimilarityOptions, type SummarizationOptions, type TurnRelevancyOptions, type ValueSelector, abstention, agentEvalTarget, answerRelevancy, assertEvalOutcomes, assertEvalTotals, contains, containsAll, containsAny, defaultEvalTraceSelector, defineEvalCases, defineEvalSuite, defineMetric, doesNotMatch, evalExitCode, exactMatch, faithfulness, gEval, hallucination, jsonCorrectness, knowledgeRetention, llmJudge, llmScore, matches, maxLength, notContains, printEvalResult, projectEvalOutcome, promptAlignment, requiredFields, resolveEvalTraceRef, runEvalCli, runEvalSuite, selectPromptOutput, semanticSimilarity, summarization, turnRelevancy };