@anvia/core 1.0.0-rc.1 → 1.0.0-rc.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +344 -85
- package/dist/agent/index.d.ts +33 -18
- package/dist/agent/index.js +42 -17
- package/dist/agent-CXScUOpX.d.ts +150 -0
- package/dist/{chunk-R2LJSQUW.js → chunk-3CMWKK32.js} +260 -104
- package/dist/chunk-3CMWKK32.js.map +1 -0
- package/dist/chunk-3RM57ZT2.js +31 -0
- package/dist/chunk-3RM57ZT2.js.map +1 -0
- package/dist/chunk-5MK3BISB.js +704 -0
- package/dist/chunk-5MK3BISB.js.map +1 -0
- package/dist/chunk-AI5JMUW7.js +45 -0
- package/dist/chunk-AI5JMUW7.js.map +1 -0
- package/dist/{chunk-FNQB2JEH.js → chunk-AZB6N7P4.js} +94 -65
- package/dist/chunk-AZB6N7P4.js.map +1 -0
- package/dist/chunk-BEYBU7VJ.js +53 -0
- package/dist/chunk-BEYBU7VJ.js.map +1 -0
- package/dist/chunk-BY4OMNIU.js +4699 -0
- package/dist/chunk-BY4OMNIU.js.map +1 -0
- package/dist/chunk-D2ECOWN5.js +515 -0
- package/dist/chunk-D2ECOWN5.js.map +1 -0
- package/dist/{chunk-A3UBYTJT.js → chunk-FN7HLLAZ.js} +60 -6
- package/dist/chunk-FN7HLLAZ.js.map +1 -0
- package/dist/chunk-GKDERULJ.js +50 -0
- package/dist/chunk-GKDERULJ.js.map +1 -0
- package/dist/chunk-GQL5KRAH.js +331 -0
- package/dist/chunk-GQL5KRAH.js.map +1 -0
- package/dist/{chunk-5XKDW36Z.js → chunk-KFR4CDGK.js} +70 -75
- package/dist/chunk-KFR4CDGK.js.map +1 -0
- package/dist/chunk-KV6QCRQ4.js +171 -0
- package/dist/chunk-KV6QCRQ4.js.map +1 -0
- package/dist/{chunk-DMPUP4R3.js → chunk-LXMAFD23.js} +5 -5
- package/dist/{chunk-I6G7BC42.js → chunk-MGNTXGTX.js} +2 -6
- package/dist/chunk-MGNTXGTX.js.map +1 -0
- package/dist/chunk-PK5LKOFL.js +239 -0
- package/dist/chunk-PK5LKOFL.js.map +1 -0
- package/dist/chunk-QOUPWOGW.js +29 -0
- package/dist/chunk-QOUPWOGW.js.map +1 -0
- package/dist/chunk-TRQ3XRFD.js +54 -0
- package/dist/chunk-TRQ3XRFD.js.map +1 -0
- package/dist/chunk-VKYZZXP5.js +323 -0
- package/dist/chunk-VKYZZXP5.js.map +1 -0
- package/dist/chunk-ZCPOIDAQ.js +127 -0
- package/dist/chunk-ZCPOIDAQ.js.map +1 -0
- package/dist/client-DvUatElp.d.ts +84 -0
- package/dist/completion/index.d.ts +5 -4
- package/dist/completion/index.js +25 -28
- package/dist/documents/index.d.ts +34 -0
- package/dist/documents/index.js +315 -0
- package/dist/documents/index.js.map +1 -0
- package/dist/{dynamic-tools-i9woysFa.d.ts → dynamic-tools-AEBOTgu1.d.ts} +21 -9
- package/dist/embeddings/index.d.ts +11 -9
- package/dist/embeddings/index.js +3 -3
- package/dist/evals/index.d.ts +53 -25
- package/dist/evals/index.js +153 -103
- package/dist/evals/index.js.map +1 -1
- package/dist/extractor/index.d.ts +23 -26
- package/dist/extractor/index.js +7 -8
- package/dist/guardrails/index.d.ts +7 -129
- package/dist/guardrails/index.js +1 -1
- package/dist/image-generation/index.d.ts +18 -16
- package/dist/image-generation/index.js +2 -2
- package/dist/index.d.ts +26 -23
- package/dist/index.js +71 -48
- package/dist/interactions-csssHYcN.d.ts +174 -0
- package/dist/internal/agent.d.ts +36 -29
- package/dist/internal/agent.js +48 -15
- package/dist/internal/agent.js.map +1 -1
- package/dist/mcp/index.d.ts +19 -13
- package/dist/mcp/index.js +14 -348
- package/dist/mcp/index.js.map +1 -1
- package/dist/memory/index.d.ts +20 -6
- package/dist/memory/index.js +10 -10
- package/dist/message-schema-B2M7AYzR.d.ts +52 -0
- package/dist/model-call-options-CZkSw_xN.d.ts +6 -0
- package/dist/model-listing/index.d.ts +3 -1
- package/dist/observability/index.d.ts +21 -6
- package/dist/observability/index.js +8 -5
- package/dist/observability/index.js.map +1 -1
- package/dist/pipeline/index.d.ts +106 -57
- package/dist/pipeline/index.js +419 -236
- package/dist/pipeline/index.js.map +1 -1
- package/dist/{retry-D3Ruy-ba.d.ts → retry-CjvSlKGW.d.ts} +2 -1
- package/dist/skills/index.d.ts +5 -4
- package/dist/skills/index.js +8 -7
- package/dist/speech-generation/index.d.ts +37 -0
- package/dist/speech-generation/index.js +8 -0
- package/dist/text-C_6eKrbC.d.ts +32 -0
- package/dist/{think-tool-DZqZj2LV.d.ts → think-tool-D8frXxwV.d.ts} +16 -2
- package/dist/tool/index.d.ts +9 -7
- package/dist/tool/index.js +12 -10
- package/dist/{tool-C_8GudXn.d.ts → tool-r62gf3QY.d.ts} +17 -8
- package/dist/transcription/index.d.ts +23 -14
- package/dist/transcription/index.js +2 -2
- package/dist/types-C3gv9EX6.d.ts +130 -0
- package/dist/{index-DxB74ybJ.d.ts → types-CElwurHZ.d.ts} +139 -88
- package/dist/types-CIPaIbZo.d.ts +105 -0
- package/dist/types-Cr4uiYo5.d.ts +99 -0
- package/dist/types-D9rKQ_as.d.ts +341 -0
- package/dist/types-DbolvLtZ.d.ts +155 -0
- package/dist/{types-DhQfwiZn.d.ts → types-RT3cuyRk.d.ts} +1 -1
- package/dist/vector-store/index.d.ts +33 -34
- package/dist/vector-store/index.js +7 -6
- package/package.json +10 -14
- package/dist/agent-DGYY_onS.d.ts +0 -145
- package/dist/audio-generation/index.d.ts +0 -31
- package/dist/audio-generation/index.js +0 -8
- package/dist/chunk-5XKDW36Z.js.map +0 -1
- package/dist/chunk-6WGGTJE6.js +0 -139
- package/dist/chunk-6WGGTJE6.js.map +0 -1
- package/dist/chunk-A3UBYTJT.js.map +0 -1
- package/dist/chunk-ADH7NNCS.js +0 -512
- package/dist/chunk-ADH7NNCS.js.map +0 -1
- package/dist/chunk-DZ3CKYTH.js +0 -267
- package/dist/chunk-DZ3CKYTH.js.map +0 -1
- package/dist/chunk-FNQB2JEH.js.map +0 -1
- package/dist/chunk-I6G7BC42.js.map +0 -1
- package/dist/chunk-IL3ZSNJI.js +0 -3748
- package/dist/chunk-IL3ZSNJI.js.map +0 -1
- package/dist/chunk-J6GNQART.js +0 -122
- package/dist/chunk-J6GNQART.js.map +0 -1
- package/dist/chunk-M3IOWB4Y.js +0 -280
- package/dist/chunk-M3IOWB4Y.js.map +0 -1
- package/dist/chunk-QY5GZ7HR.js +0 -39
- package/dist/chunk-QY5GZ7HR.js.map +0 -1
- package/dist/chunk-R2LJSQUW.js.map +0 -1
- package/dist/chunk-RFDVKCIE.js +0 -12
- package/dist/chunk-RFDVKCIE.js.map +0 -1
- package/dist/chunk-RMUBRRSK.js +0 -34
- package/dist/chunk-RMUBRRSK.js.map +0 -1
- package/dist/chunk-RXKHOYEH.js +0 -466
- package/dist/chunk-RXKHOYEH.js.map +0 -1
- package/dist/chunk-XDRSPSR7.js +0 -38
- package/dist/chunk-XDRSPSR7.js.map +0 -1
- package/dist/chunk-XWUC7CIT.js +0 -1
- package/dist/chunk-XWUC7CIT.js.map +0 -1
- package/dist/errors-CYKUcU89.d.ts +0 -17
- package/dist/json-Zo7K3xmt.d.ts +0 -40
- package/dist/loaders/index.d.ts +0 -86
- package/dist/loaders/index.js +0 -299
- package/dist/loaders/index.js.map +0 -1
- package/dist/middleware-KynLg_RW.d.ts +0 -56
- package/dist/types-B3A4YxaA.d.ts +0 -354
- package/dist/types-BBEGKB9m.d.ts +0 -119
- package/dist/types-DT3nEemY.d.ts +0 -79
- package/dist/types-DulRCYdB.d.ts +0 -70
- package/dist/types-p55Jc-sr.d.ts +0 -47
- package/dist/ui/index.d.ts +0 -107
- package/dist/ui/index.js +0 -10
- package/dist/ui/index.js.map +0 -1
- /package/dist/{chunk-DMPUP4R3.js.map → chunk-LXMAFD23.js.map} +0 -0
- /package/dist/{audio-generation → speech-generation}/index.js.map +0 -0
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Usage
|
|
3
|
+
} from "./chunk-D2ECOWN5.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 suspend(args) {
|
|
269
|
+
await dispatchTerminalObservers(
|
|
270
|
+
this.observers,
|
|
271
|
+
"tool.suspend",
|
|
272
|
+
(observer) => observer.suspend?.(observerSnapshot(args)),
|
|
273
|
+
this.errorPolicy
|
|
274
|
+
);
|
|
275
|
+
}
|
|
276
|
+
async error(args) {
|
|
277
|
+
await dispatchTerminalObservers(
|
|
278
|
+
this.observers,
|
|
279
|
+
"tool.error",
|
|
280
|
+
(observer) => observer.error?.(observerSnapshot(args)),
|
|
281
|
+
"ignore"
|
|
282
|
+
);
|
|
283
|
+
}
|
|
284
|
+
};
|
|
285
|
+
async function dispatchObservers(observers, phase, dispatch, errorPolicy) {
|
|
286
|
+
const failures = [];
|
|
287
|
+
for (const entry of observers) {
|
|
288
|
+
try {
|
|
289
|
+
await dispatch(entry.observer);
|
|
290
|
+
} catch (error) {
|
|
291
|
+
failures.push({ observer: entry.name, error });
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
throwObserverFailures(phase, failures, errorPolicy);
|
|
295
|
+
}
|
|
296
|
+
async function dispatchTerminalObservers(observers, phase, dispatch, errorPolicy) {
|
|
297
|
+
const failures = await terminateObservers(observers, dispatch);
|
|
298
|
+
throwObserverFailures(phase, failures, errorPolicy);
|
|
299
|
+
}
|
|
300
|
+
async function terminateObservers(observers, dispatch) {
|
|
301
|
+
const failures = [];
|
|
302
|
+
for (const entry of observers) {
|
|
303
|
+
if (entry.terminal) continue;
|
|
304
|
+
entry.terminal = true;
|
|
305
|
+
try {
|
|
306
|
+
await dispatch(entry.observer);
|
|
307
|
+
} catch (error) {
|
|
308
|
+
failures.push({ observer: entry.name, error });
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
return failures;
|
|
312
|
+
}
|
|
313
|
+
function throwObserverFailures(phase, failures, errorPolicy) {
|
|
314
|
+
if (errorPolicy === "throw" && failures.length > 0) {
|
|
315
|
+
throw new AgentObserverDispatchError(phase, failures);
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
export {
|
|
320
|
+
AgentObserverDispatchError,
|
|
321
|
+
startAgentRunObservers
|
|
322
|
+
};
|
|
323
|
+
//# sourceMappingURL=chunk-VKYZZXP5.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 AgentToolSuspendedArgs,\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 suspend(args: AgentToolSuspendedArgs): Promise<void> {\n await dispatchTerminalObservers(\n this.observers,\n \"tool.suspend\",\n (observer) => observer.suspend?.(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"]}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CompletionCapabilityError,
|
|
3
|
+
Usage,
|
|
4
|
+
generateCompletion
|
|
5
|
+
} from "./chunk-D2ECOWN5.js";
|
|
6
|
+
import {
|
|
7
|
+
toProviderJsonSchema
|
|
8
|
+
} from "./chunk-PK5LKOFL.js";
|
|
9
|
+
import {
|
|
10
|
+
isAbortError,
|
|
11
|
+
resolveRetryOptions,
|
|
12
|
+
retryDelayMs,
|
|
13
|
+
retryOptionsForFailure,
|
|
14
|
+
waitForRetry
|
|
15
|
+
} from "./chunk-FN7HLLAZ.js";
|
|
16
|
+
|
|
17
|
+
// src/extractor/extractor.ts
|
|
18
|
+
import { z } from "zod";
|
|
19
|
+
var SUBMIT_TOOL_NAME = "submit";
|
|
20
|
+
var DEFAULT_EXTRACTOR_INSTRUCTIONS = "You are an AI assistant whose purpose is to extract structured data from the provided text.\nYou have access to a `submit` function that defines the structure of the data to extract.\nAlways call the `submit` function with the structured data. Use default or null values when information is missing.";
|
|
21
|
+
var ExtractionError = class extends Error {
|
|
22
|
+
attempts;
|
|
23
|
+
usage;
|
|
24
|
+
constructor(message, options) {
|
|
25
|
+
super(message, options.cause === void 0 ? void 0 : { cause: options.cause });
|
|
26
|
+
this.name = "ExtractionError";
|
|
27
|
+
this.attempts = options.attempts;
|
|
28
|
+
this.usage = options.usage;
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
async function extract(options) {
|
|
32
|
+
if (!(options.outputSchema instanceof z.ZodType)) {
|
|
33
|
+
throw new TypeError("extract outputSchema must be a Zod schema.");
|
|
34
|
+
}
|
|
35
|
+
if (typeof options.text !== "string") {
|
|
36
|
+
throw new TypeError("extract text must be a string.");
|
|
37
|
+
}
|
|
38
|
+
const retries = resolveExtractionRetries(options.retries);
|
|
39
|
+
const maxAttempts = retries?.maxAttempts ?? 1;
|
|
40
|
+
const submitTool = createSubmitTool(options.outputSchema);
|
|
41
|
+
const instructions = extractionInstructions(options.instructions);
|
|
42
|
+
let usage = Usage.empty();
|
|
43
|
+
let lastError;
|
|
44
|
+
for (let attempt = 1; attempt <= maxAttempts; attempt += 1) {
|
|
45
|
+
try {
|
|
46
|
+
const result = await generateCompletion({
|
|
47
|
+
model: options.model,
|
|
48
|
+
prompt: options.text,
|
|
49
|
+
instructions,
|
|
50
|
+
tools: [globalThis.structuredClone(submitTool)],
|
|
51
|
+
temperature: options.temperature,
|
|
52
|
+
maxTokens: options.maxTokens,
|
|
53
|
+
providerOptions: options.providerOptions,
|
|
54
|
+
toolChoice: "required",
|
|
55
|
+
retries: false,
|
|
56
|
+
abortSignal: options.abortSignal
|
|
57
|
+
});
|
|
58
|
+
usage = Usage.add(usage, result.usage);
|
|
59
|
+
return {
|
|
60
|
+
...result,
|
|
61
|
+
output: extractSubmittedData(result.content, options.outputSchema),
|
|
62
|
+
usage
|
|
63
|
+
};
|
|
64
|
+
} catch (error) {
|
|
65
|
+
if (error instanceof CompletionCapabilityError || isAbortError(error)) {
|
|
66
|
+
throw error;
|
|
67
|
+
}
|
|
68
|
+
lastError = error;
|
|
69
|
+
const retryOptions = retryOptionsForFailure(retries, {
|
|
70
|
+
error,
|
|
71
|
+
attempt,
|
|
72
|
+
streaming: false
|
|
73
|
+
});
|
|
74
|
+
if (retryOptions === void 0) {
|
|
75
|
+
throw new ExtractionError("No data extracted", {
|
|
76
|
+
cause: lastError,
|
|
77
|
+
attempts: attempt,
|
|
78
|
+
usage
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
await waitForRetry(retryDelayMs(retryOptions, attempt), options.abortSignal);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
throw new ExtractionError("No data extracted", {
|
|
85
|
+
cause: lastError,
|
|
86
|
+
attempts: maxAttempts,
|
|
87
|
+
usage
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
function extractionInstructions(instructions) {
|
|
91
|
+
return instructions === void 0 || instructions.length === 0 ? DEFAULT_EXTRACTOR_INSTRUCTIONS : `${DEFAULT_EXTRACTOR_INSTRUCTIONS}
|
|
92
|
+
|
|
93
|
+
${instructions}`;
|
|
94
|
+
}
|
|
95
|
+
function createSubmitTool(outputSchema) {
|
|
96
|
+
return {
|
|
97
|
+
name: SUBMIT_TOOL_NAME,
|
|
98
|
+
description: "Submit the structured data extracted from the provided text.",
|
|
99
|
+
parameters: toProviderJsonSchema(outputSchema, { io: "input" })
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
function resolveExtractionRetries(options) {
|
|
103
|
+
if (options === void 0 || options === false) {
|
|
104
|
+
return void 0;
|
|
105
|
+
}
|
|
106
|
+
return resolveRetryOptions({
|
|
107
|
+
...options,
|
|
108
|
+
shouldRetry: options.shouldRetry ?? (() => true)
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
function extractSubmittedData(content, schema) {
|
|
112
|
+
const submitted = content.filter((item) => item.type === "tool-call").filter((toolCall) => toolCall.toolName === SUBMIT_TOOL_NAME).at(-1);
|
|
113
|
+
if (submitted === void 0) {
|
|
114
|
+
throw new Error("The model did not call the submit tool");
|
|
115
|
+
}
|
|
116
|
+
try {
|
|
117
|
+
return schema.parse(submitted.input);
|
|
118
|
+
} catch (error) {
|
|
119
|
+
throw new Error("Submitted data failed output schema validation", { cause: error });
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
export {
|
|
124
|
+
ExtractionError,
|
|
125
|
+
extract
|
|
126
|
+
};
|
|
127
|
+
//# sourceMappingURL=chunk-ZCPOIDAQ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/extractor/extractor.ts"],"sourcesContent":["import { z } from \"zod\";\nimport {\n type AssistantContentPart,\n CompletionCapabilityError,\n type CompletionModel,\n type CompletionResult,\n generateCompletion,\n type JsonObject,\n type ToolDefinition,\n Usage,\n} from \"../completion/index\";\nimport { isAbortError } from \"../internal/abort\";\nimport {\n type ResolvedRetryOptions,\n type RetrySetting,\n resolveRetryOptions,\n retryDelayMs,\n retryOptionsForFailure,\n waitForRetry,\n} from \"../retry\";\nimport { toProviderJsonSchema, type ZodSchema } from \"../schema/zod-schema\";\n\nconst SUBMIT_TOOL_NAME = \"submit\";\n\nconst DEFAULT_EXTRACTOR_INSTRUCTIONS =\n \"You are an AI assistant whose purpose is to extract structured data from the provided text.\\n\" +\n \"You have access to a `submit` function that defines the structure of the data to extract.\\n\" +\n \"Always call the `submit` function with the structured data. Use default or null values when information is missing.\";\n\ntype RawResponseOf<Model> =\n Model extends CompletionModel<infer RawResponse> ? RawResponse : unknown;\n\nexport type ExtractOptions<Output, Model extends CompletionModel = CompletionModel> = {\n model: Model;\n text: string;\n outputSchema: ZodSchema<Output>;\n instructions?: string | undefined;\n retries?: RetrySetting | undefined;\n temperature?: number | undefined;\n maxTokens?: number | undefined;\n providerOptions?: JsonObject | undefined;\n abortSignal?: AbortSignal | undefined;\n};\n\nexport type ExtractionResult<Output, RawResponse = unknown> = Omit<\n CompletionResult<string, RawResponse>,\n \"output\"\n> & {\n output: Output;\n};\n\nexport class ExtractionError extends Error {\n readonly attempts: number;\n readonly usage: Usage;\n\n constructor(\n message: string,\n options: {\n cause?: unknown;\n attempts: number;\n usage: Usage;\n },\n ) {\n super(message, options.cause === undefined ? undefined : { cause: options.cause });\n this.name = \"ExtractionError\";\n this.attempts = options.attempts;\n this.usage = options.usage;\n }\n}\n\n/** Extract structured data from text using a required, schema-backed submit tool. */\nexport async function extract<Output, Model extends CompletionModel>(\n options: ExtractOptions<Output, Model>,\n): Promise<ExtractionResult<Output, RawResponseOf<Model>>> {\n if (!(options.outputSchema instanceof z.ZodType)) {\n throw new TypeError(\"extract outputSchema must be a Zod schema.\");\n }\n if (typeof options.text !== \"string\") {\n throw new TypeError(\"extract text must be a string.\");\n }\n\n const retries = resolveExtractionRetries(options.retries);\n const maxAttempts = retries?.maxAttempts ?? 1;\n const submitTool = createSubmitTool(options.outputSchema);\n const instructions = extractionInstructions(options.instructions);\n let usage = Usage.empty();\n let lastError: unknown;\n\n for (let attempt = 1; attempt <= maxAttempts; attempt += 1) {\n try {\n const result = await generateCompletion({\n model: options.model,\n prompt: options.text,\n instructions,\n tools: [globalThis.structuredClone(submitTool)],\n temperature: options.temperature,\n maxTokens: options.maxTokens,\n providerOptions: options.providerOptions,\n toolChoice: \"required\",\n retries: false,\n abortSignal: options.abortSignal,\n });\n usage = Usage.add(usage, result.usage);\n return {\n ...result,\n output: extractSubmittedData(result.content, options.outputSchema),\n usage,\n };\n } catch (error) {\n if (error instanceof CompletionCapabilityError || isAbortError(error)) {\n throw error;\n }\n lastError = error;\n const retryOptions = retryOptionsForFailure(retries, {\n error,\n attempt,\n streaming: false,\n });\n if (retryOptions === undefined) {\n throw new ExtractionError(\"No data extracted\", {\n cause: lastError,\n attempts: attempt,\n usage,\n });\n }\n await waitForRetry(retryDelayMs(retryOptions, attempt), options.abortSignal);\n }\n }\n\n throw new ExtractionError(\"No data extracted\", {\n cause: lastError,\n attempts: maxAttempts,\n usage,\n });\n}\n\nfunction extractionInstructions(instructions: string | undefined): string {\n return instructions === undefined || instructions.length === 0\n ? DEFAULT_EXTRACTOR_INSTRUCTIONS\n : `${DEFAULT_EXTRACTOR_INSTRUCTIONS}\\n\\n${instructions}`;\n}\n\nfunction createSubmitTool<Output>(outputSchema: ZodSchema<Output>): ToolDefinition {\n return {\n name: SUBMIT_TOOL_NAME,\n description: \"Submit the structured data extracted from the provided text.\",\n parameters: toProviderJsonSchema(outputSchema, { io: \"input\" }),\n };\n}\n\nfunction resolveExtractionRetries(\n options: RetrySetting | undefined,\n): ResolvedRetryOptions | undefined {\n if (options === undefined || options === false) {\n return undefined;\n }\n return resolveRetryOptions({\n ...options,\n shouldRetry: options.shouldRetry ?? (() => true),\n });\n}\n\nfunction extractSubmittedData<Output>(\n content: readonly AssistantContentPart[],\n schema: ZodSchema<Output>,\n): Output {\n const submitted = content\n .filter((item) => item.type === \"tool-call\")\n .filter((toolCall) => toolCall.toolName === SUBMIT_TOOL_NAME)\n .at(-1);\n\n if (submitted === undefined) {\n throw new Error(\"The model did not call the submit tool\");\n }\n\n try {\n return schema.parse(submitted.input);\n } catch (error) {\n throw new Error(\"Submitted data failed output schema validation\", { cause: error });\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { IOType } from 'node:child_process';
|
|
2
|
+
import { Stream } from 'node:stream';
|
|
3
|
+
import { OAuthClientProvider } from '@modelcontextprotocol/sdk/client/auth.js';
|
|
4
|
+
import { StreamableHTTPReconnectionOptions } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
|
|
5
|
+
import { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';
|
|
6
|
+
import { J as JsonObject } from './types-D9rKQ_as.js';
|
|
7
|
+
import { A as AnyTool } from './tool-r62gf3QY.js';
|
|
8
|
+
|
|
9
|
+
type McpStdioTransport = {
|
|
10
|
+
readonly type: "stdio";
|
|
11
|
+
readonly command: string;
|
|
12
|
+
readonly args?: string[] | undefined;
|
|
13
|
+
readonly env?: Record<string, string> | undefined;
|
|
14
|
+
readonly cwd?: string | undefined;
|
|
15
|
+
readonly stderr?: IOType | Stream | number | undefined;
|
|
16
|
+
readonly maxBufferSize?: number | undefined;
|
|
17
|
+
};
|
|
18
|
+
type McpStreamableHttpTransport = {
|
|
19
|
+
readonly type: "streamableHttp";
|
|
20
|
+
readonly url: string | URL;
|
|
21
|
+
readonly ssrfProtection?: "strict" | "disabled" | undefined;
|
|
22
|
+
readonly headers?: Readonly<Record<string, string>> | undefined;
|
|
23
|
+
readonly authProvider?: OAuthClientProvider | undefined;
|
|
24
|
+
readonly reconnectionOptions?: StreamableHTTPReconnectionOptions | undefined;
|
|
25
|
+
readonly sessionId?: string | undefined;
|
|
26
|
+
};
|
|
27
|
+
type McpTransport = Transport;
|
|
28
|
+
type McpCustomTransport = {
|
|
29
|
+
readonly type: "custom";
|
|
30
|
+
readonly create: (options: {
|
|
31
|
+
abortSignal?: AbortSignal | undefined;
|
|
32
|
+
}) => McpTransport | Promise<McpTransport>;
|
|
33
|
+
};
|
|
34
|
+
type McpClientTransport = McpStdioTransport | McpStreamableHttpTransport | McpCustomTransport;
|
|
35
|
+
type McpClientOptions = {
|
|
36
|
+
readonly name: string;
|
|
37
|
+
readonly transport: McpClientTransport;
|
|
38
|
+
readonly tools?: {
|
|
39
|
+
readonly prefix?: string | undefined;
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
type McpConnectOptions = {
|
|
43
|
+
readonly abortSignal?: AbortSignal | undefined;
|
|
44
|
+
};
|
|
45
|
+
type McpServerInfo = {
|
|
46
|
+
readonly name: string;
|
|
47
|
+
readonly version: string;
|
|
48
|
+
readonly title?: string | undefined;
|
|
49
|
+
readonly description?: string | undefined;
|
|
50
|
+
readonly websiteUrl?: string | undefined;
|
|
51
|
+
readonly icons?: readonly {
|
|
52
|
+
readonly src: string;
|
|
53
|
+
readonly mimeType?: string | undefined;
|
|
54
|
+
readonly sizes?: readonly string[] | undefined;
|
|
55
|
+
readonly theme?: "light" | "dark" | undefined;
|
|
56
|
+
}[];
|
|
57
|
+
};
|
|
58
|
+
type McpTool = AnyTool & {
|
|
59
|
+
readonly mcp: {
|
|
60
|
+
readonly serverName: string;
|
|
61
|
+
readonly remoteName: string;
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
type McpServer = {
|
|
65
|
+
readonly name: string;
|
|
66
|
+
readonly tools: readonly McpTool[];
|
|
67
|
+
readonly serverInfo?: McpServerInfo | undefined;
|
|
68
|
+
readonly capabilities?: JsonObject | undefined;
|
|
69
|
+
readonly instructions?: string | undefined;
|
|
70
|
+
};
|
|
71
|
+
type McpClientGroupConnectOptions = {
|
|
72
|
+
readonly clients: readonly McpClient[];
|
|
73
|
+
readonly abortSignal?: AbortSignal | undefined;
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
declare class McpClient {
|
|
77
|
+
#private;
|
|
78
|
+
readonly name: string;
|
|
79
|
+
constructor(options: McpClientOptions);
|
|
80
|
+
connect(options?: McpConnectOptions): Promise<McpServer>;
|
|
81
|
+
close(): Promise<void>;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export { McpClient as M, type McpServer as a, type McpClientGroupConnectOptions as b, type McpTool as c, type McpClientOptions as d, type McpClientTransport as e, type McpConnectOptions as f, type McpCustomTransport as g, type McpServerInfo as h, type McpStdioTransport as i, type McpStreamableHttpTransport as j, type McpTransport as k };
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
3
|
-
import { D as Document, M as Message } from '../types-
|
|
4
|
-
export { A as
|
|
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 { D as Document, M as Message } from '../types-D9rKQ_as.js';
|
|
4
|
+
export { A as AssistantContentPart, a as AssistantGenerationMetadata, b as AssistantMessage, O as CompletionCapabilityError, C as CompletionModel, Q as CompletionModelCapabilities, c as CompletionModelInfo, d as CompletionModelStreamEvent, e as CompletionRequest, f as CompletionResponse, g as CompletionResult, h as CompletionSource, i as CompletionStreamEvent, V as CompletionStreamPart, j as CompletionTool, k as ContextUsage, F as FileData, l as FilePart, I as ImageDetail, m as ImagePart, J as JsonObject, n as JsonPrimitive, o as JsonValue, p as ModelContextLimits, P as ProviderTool, q as ProviderToolCall, R as ReasoningContentType, r as ReasoningDetail, s as ReasoningPart, W as StreamingCompletionModel, S as SystemMessage, T as TextPart, X as ToolApprovalResponsePart, Y as ToolCallArgumentsMode, t as ToolCallPart, u as ToolChoice, v as ToolDefinition, Z as ToolInteractionResponsePart, w as ToolMessage, _ as ToolQuestionAnswer, $ as ToolQuestionResponsePart, x as ToolResultContentPart, y as ToolResultOutput, z as ToolResultPart, U as Usage, a0 as UsageDetails, B as UserContentPart, E as UserMessage, a1 as assertCompletionRequestSupported, G as calculateContextUsage, H as getAssistantGenerationMetadata, K as isProviderTool, a2 as reasoningDisplayText, L as resolveModelContextLimits, a3 as textFromAssistantContent, N as withContextUsage } from '../types-D9rKQ_as.js';
|
|
5
|
+
export { C as CompletionBaseOptions, a as CompletionInput, G as GenerateCompletionOptions, b as GenerateStructuredCompletionOptions, M as MessageMetadataSchema, S as StreamCompletionOptions, c as StreamStructuredCompletionOptions, d as createMessageSchema, g as generateCompletion, i as isJsonValue, e as isMessage, j as isStreamingCompletionModel, m as messageSchema, f as messagesSchema, p as parseMessage, h as parseMessages, s as streamCompletion } from '../message-schema-B2M7AYzR.js';
|
|
5
6
|
import '../zod-schema-C7F4clpm.js';
|
|
6
7
|
import 'zod';
|
|
7
8
|
|