@voltro/ai 0.29.0 → 0.30.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,392 +1,27 @@
1
- import { a as e, c as t, d as n, f as r, g as i, h as a, i as o, l as s, m as c, n as l, o as u, p as ee, r as d, s as f, t as te, u as ne } from "./provider-BOC5wBxx.js";
2
- import { AgentErrorCode as re, AgentEvent as ie, SeqEvent as ae } from "./events.js";
3
- import { a as oe, i as se, n as ce, o as p, r as le, s as m, t as ue } from "./agentDescriptor-CCeWeadZ.js";
4
- import { createGateway as de, gateway as fe } from "@ai-sdk/gateway";
5
- import { Output as pe, cosineSimilarity as me, embed as he, embedMany as ge, generateImage as _e, generateObject as ve, generateSpeech as ye, generateText as be, jsonSchema as h, rerank as xe, stepCountIs as Se, streamText as Ce, tool as we } from "ai";
6
- import { Chunk as g, Context as Te, Duration as Ee, Effect as _, JSONSchema as De, Metric as v, MetricBoundaries as Oe, Option as y, Runtime as ke, Schema as b, Stream as x } from "effect";
7
- import { and as S, boolean as Ae, contains as je, eq as C, generateId as Me, gt as Ne, gte as Pe, id as w, inSet as Fe, integer as T, json as Ie, lt as Le, lte as Re, neq as ze, queryFor as Be, registerRetention as Ve, retentionTtlMsFromEnv as He, table as E, text as D, timestamp as O } from "@voltro/database";
8
- import { rowDep as Ue, tableDep as We } from "@voltro/cache";
9
- //#region src/tools.ts
10
- var Ge = (e, t) => e(t), Ke = Symbol.for("@voltro/ai/Tool"), qe = (e) => ({
11
- ...e,
12
- [Ke]: !0
13
- }), Je = (e) => typeof e == "object" && !!e && e[Ke] === !0, Ye = (e) => {
14
- let t = e.default;
15
- if (typeof t != "function") return 0;
16
- let n = 0;
17
- for (let r of Object.values(e)) Je(r) && r.execute === void 0 && r.handler === void 0 && (r.handler = t, n += 1);
18
- return n;
19
- }, Xe = (e, t) => {
20
- let n = t ?? ke.defaultRuntime;
21
- return ke.runPromise(n)(e);
22
- }, Ze = (e, t, n) => n ? e.pipe(_.timeoutFail({
23
- duration: `${n} millis`,
24
- onTimeout: () => /* @__PURE__ */ Error(`tool '${t}' timed out`)
25
- })) : e, Qe = (e, t, n) => {
26
- if (e.execute) return Xe(Ze(Ge(e.execute, t), e.name, e.timeoutMs), n.runtime);
27
- if (e.handler) {
28
- let r = e.handler, i = r(t, n);
29
- return _.isEffect(i) ? Xe(Ze(i, e.name, e.timeoutMs), n.runtime) : i;
30
- }
31
- return Promise.reject(/* @__PURE__ */ Error(`tool '${e.name}' has neither execute nor handler`));
32
- }, $e = (e) => {
33
- let t = De.make(e);
34
- return t && t.type === "object" ? t : {
35
- type: "object",
36
- properties: {},
37
- additionalProperties: !1
38
- };
39
- }, k = (e, t = { store: void 0 }) => {
40
- let n = {};
41
- for (let [r, i] of Object.entries(e)) n[i.name || r] = we({
42
- description: i.description,
43
- inputSchema: h($e(i.input)),
44
- execute: async (e) => {
45
- let n = await _.runPromise(b.decodeUnknown(i.input)(e)), r = await Qe(i, n, t);
46
- return i.output ? _.runPromise(b.decodeUnknown(i.output)(r)) : r;
47
- }
48
- });
49
- return n;
50
- }, et = {
51
- "claude-opus-4-8": {
52
- inputPer1M: 15,
53
- outputPer1M: 75
54
- },
55
- "claude-opus-4-6": {
56
- inputPer1M: 15,
57
- outputPer1M: 75
58
- },
59
- "claude-sonnet-4-6": {
60
- inputPer1M: 3,
61
- outputPer1M: 15
62
- },
63
- "claude-haiku-4-5": {
64
- inputPer1M: 1,
65
- outputPer1M: 5
66
- },
67
- "claude-haiku-4-5-20251001": {
68
- inputPer1M: 1,
69
- outputPer1M: 5
70
- },
71
- "gpt-5.5": {
72
- inputPer1M: 5,
73
- outputPer1M: 30
74
- },
75
- "gpt-4o": {
76
- inputPer1M: 2.5,
77
- outputPer1M: 10
78
- },
79
- "gpt-4o-mini": {
80
- inputPer1M: .15,
81
- outputPer1M: .6
82
- },
83
- "gemini-2.5-pro": {
84
- inputPer1M: 1.25,
85
- outputPer1M: 10
86
- },
87
- "gemini-2.5-flash": {
88
- inputPer1M: .3,
89
- outputPer1M: 2.5
90
- },
91
- "gemini-2.0-flash": {
92
- inputPer1M: .1,
93
- outputPer1M: .4
94
- }
95
- }, A = {}, tt = (e) => {
96
- let t = A;
97
- return A = { ...e }, t;
98
- }, nt = () => ({
99
- ...et,
100
- ...A
101
- }), rt = (e) => {
102
- let t = nt();
103
- if (t[e] !== void 0) return t[e];
104
- let n = e.indexOf("/");
105
- if (n > 0) {
106
- let r = e.slice(n + 1);
107
- if (t[r] !== void 0) return t[r];
108
- }
109
- }, j = (e, t) => {
110
- let n = e.inputTokens ?? 0, r = e.outputTokens ?? 0;
111
- if (t.actualCostUsd !== void 0) {
112
- let e = n + r, i = e > 0 ? n / e : 0;
113
- return {
114
- inputTokens: n,
115
- outputTokens: r,
116
- inputCostUsd: t.actualCostUsd * i,
117
- outputCostUsd: t.actualCostUsd * (1 - i),
118
- totalCostUsd: t.actualCostUsd,
119
- costSource: "gateway"
120
- };
121
- }
122
- let i = t.price ?? rt(t.model) ?? {
123
- inputPer1M: 0,
124
- outputPer1M: 0
125
- }, a = n / 1e6 * i.inputPer1M, o = r / 1e6 * i.outputPer1M;
126
- return {
127
- inputTokens: n,
128
- outputTokens: r,
129
- inputCostUsd: a,
130
- outputCostUsd: o,
131
- totalCostUsd: a + o,
132
- costSource: "estimated"
133
- };
134
- }, M = "_voltro_ai_usage", it = E(M, {
135
- id: w({ prefix: "aiu" }),
136
- tenantId: D().nullable(),
137
- provider: D(),
138
- model: D(),
139
- operation: D(),
140
- agent: D().nullable(),
141
- inputTokens: T().default(0),
142
- outputTokens: T().default(0),
143
- costMicroUsd: T().default(0),
144
- costSource: D().default("estimated"),
145
- calledAt: O().default("now")
146
- }).index(["tenantId"]), at = (e) => {
147
- let t = e?.gateway?.cost, n = typeof t == "number" ? t : typeof t == "string" ? Number(t) : NaN;
148
- return Number.isFinite(n) ? n : void 0;
149
- }, ot = (e, t) => (Ve({
150
- table: M,
151
- timeColumn: "calledAt",
152
- ttlMs: He(process.env.VOLTRO_AI_USAGE_TTL_HOURS, 24 * 365)
153
- }), _.promise(async () => {
154
- let n = j(t.usage, {
155
- model: t.model,
156
- ...t.price === void 0 ? {} : { price: t.price },
157
- ...t.actualCostUsd === void 0 ? {} : { actualCostUsd: t.actualCostUsd }
158
- });
159
- return await e.insert(M, {
160
- tenantId: t.tenantId ?? null,
161
- provider: t.provider,
162
- model: t.model,
163
- operation: t.operation,
164
- agent: t.agent ?? null,
165
- inputTokens: n.inputTokens,
166
- outputTokens: n.outputTokens,
167
- costMicroUsd: Math.round(n.totalCostUsd * 1e6),
168
- costSource: n.costSource,
169
- calledAt: t.calledAt ?? /* @__PURE__ */ new Date()
170
- }), n;
171
- })), st = (e, t = {}) => _.promise(async () => {
172
- let n = [...t.tenantId === void 0 ? [] : [C("tenantId", t.tenantId)], ...t.since === void 0 ? [] : [Pe("calledAt", t.since)]], r = Be(it), i = n.length === 0 ? r : r.where(n.length === 1 ? n[0] : S(...n));
173
- return (await e.query(i.descriptor)).reduce((e, t) => e + (Number(t.costMicroUsd) || 0), 0) / 1e6;
174
- }), ct = class extends b.TaggedError()("AiBudgetExceeded", {
175
- tenantId: b.NullOr(b.String),
176
- limitUsd: b.Number,
177
- spentUsd: b.Number,
178
- attemptedUsd: b.Number
179
- }) {}, N = "_voltro_ai_budget", lt = E(N, {
180
- id: w({ prefix: "aib" }),
181
- bucket: D().maxLength(191),
182
- tenantId: D().nullable(),
183
- reservedMicroUsd: T().default(0),
184
- updatedAt: O().default("now")
185
- }).unique("byAiBudgetBucket", ["bucket"]), ut = (e, t) => `${e ?? "global"}::${t === void 0 ? "all" : String(t.getTime())}`, dt = 32, ft = (e, t) => _.gen(function* () {
186
- Ve({
187
- table: N,
188
- timeColumn: "updatedAt",
189
- ttlMs: He(process.env.VOLTRO_AI_USAGE_TTL_HOURS, 24 * 365)
190
- });
191
- let n = t.addUsd ?? 0, r = Math.round(n * 1e6), i = Math.round(t.limitUsd * 1e6), a = ut(t.tenantId, t.since), o = t.tenantId ?? null, s = (e) => new ct({
192
- tenantId: o,
193
- limitUsd: t.limitUsd,
194
- spentUsd: e / 1e6,
195
- attemptedUsd: n
196
- }), c = yield* _.promise(async () => {
197
- for (let t = 0; t < dt; t++) {
198
- t > 0 && await new Promise((e) => setTimeout(e, t));
199
- let n = (await e.query(Be(lt).where(C("bucket", a)).descriptor))[0], s = n && Number(n.reservedMicroUsd) || 0;
200
- if (s + r > i) return {
201
- ok: !1,
202
- reservedMicro: s
203
- };
204
- if (r === 0) return { ok: !0 };
205
- if (n) {
206
- if (await e.updateMany("_voltro_ai_budget", {
207
- reservedMicroUsd: s + r,
208
- updatedAt: /* @__PURE__ */ new Date()
209
- }, { where: S(C("id", String(n.id)), C("reservedMicroUsd", s)) }) === 1) return { ok: !0 };
210
- } else {
211
- let t = Me({
212
- kind: "typeid",
213
- prefix: "aib"
214
- }, N), n = await e.insertIgnore(N, {
215
- id: t,
216
- bucket: a,
217
- tenantId: o,
218
- reservedMicroUsd: r,
219
- updatedAt: /* @__PURE__ */ new Date()
220
- }, { conflictColumns: ["bucket"] });
221
- if (String(n.id) === t) return { ok: !0 };
222
- }
223
- }
224
- throw Error(`requireAiBudget: contention on bucket '${a}' exceeded ${dt} attempts`);
225
- });
226
- if (!c.ok) return yield* _.fail(s(c.reservedMicro));
227
- }), pt = Oe.exponential({
228
- start: .001,
229
- factor: 2,
230
- count: 16
231
- }), P = v.counter("voltro_ai_calls_total", { description: "Total AI provider calls (generate + stream)." }), mt = v.counter("voltro_ai_call_errors_total", { description: "AI provider calls that errored." }), F = v.histogram("voltro_ai_call_duration_seconds", pt, "AI provider call duration in seconds."), ht = v.counter("voltro_ai_input_tokens_total", {
232
- description: "Total prompt (input) tokens across AI calls.",
233
- incremental: !0
234
- }), gt = v.counter("voltro_ai_output_tokens_total", {
235
- description: "Total completion (output) tokens across AI calls.",
236
- incremental: !0
237
- }), _t = v.counter("voltro_ai_cost_microusd_total", {
238
- description: "Total estimated AI spend in micro-USD (USD × 1e6).",
239
- incremental: !0
240
- }), I = (e, t) => ({
241
- provider: e.name,
242
- model: e.model ?? e.name,
243
- operation: t
244
- }), L = (e, t, n) => e.pipe(_.tagMetrics("provider", t.provider), _.tagMetrics("model", t.model), _.tagMetrics("operation", t.operation), _.tagMetrics("status", n)), vt = (e, t) => {
245
- let n = t.inputTokens ?? 0, r = t.outputTokens ?? 0, i = j({
246
- inputTokens: n,
247
- outputTokens: r
248
- }, { model: e.model }), a = Math.round(i.totalCostUsd * 1e6);
249
- return _.all([
250
- L(v.incrementBy(ht, n), e, "ok"),
251
- L(v.incrementBy(gt, r), e, "ok"),
252
- L(v.incrementBy(_t, a), e, "ok")
253
- ], { discard: !0 });
254
- }, R = (e, t, n) => _.gen(function* () {
255
- let r = yield* _.clockWith((e) => e.currentTimeMillis);
256
- return yield* n.pipe(_.tap((n) => vt(e, t(n))), _.tap(() => L(v.increment(P), e, "ok").pipe(_.zipRight(_.clockWith((e) => e.currentTimeMillis).pipe(_.flatMap((t) => L(v.update(F, (t - r) / 1e3), e, "ok")))))), _.tapError(() => L(v.increment(P), e, "error").pipe(_.zipRight(L(v.increment(mt), e, "error")), _.zipRight(_.clockWith((e) => e.currentTimeMillis).pipe(_.flatMap((t) => L(v.update(F, (t - r) / 1e3), e, "error")))))), _.withSpan("voltro.ai.call", { attributes: {
257
- "ai.provider": e.provider,
258
- "ai.model": e.model,
259
- "ai.operation": e.operation
260
- } }));
261
- }), yt = (e, t) => {
262
- let n = Date.now();
263
- return t.pipe(x.tap((t) => t._tag === "done" ? L(v.increment(P), e, "ok").pipe(_.zipRight(L(v.update(F, (Date.now() - n) / 1e3), e, "ok")), _.zipRight(vt(e, t.usage ?? {}))) : t._tag === "error" ? L(v.increment(P), e, "error").pipe(_.zipRight(L(v.increment(mt), e, "error")), _.zipRight(L(v.update(F, (Date.now() - n) / 1e3), e, "error"))) : _.void), x.withSpan("voltro.ai.call", { attributes: {
264
- "ai.provider": e.provider,
265
- "ai.model": e.model,
266
- "ai.operation": e.operation
267
- } }));
268
- }, z = class extends b.TaggedError()("AiError", {
269
- reason: b.Literal("generation", "decode"),
270
- message: b.String
271
- }) {}, bt = (e, t, n) => {
272
- let r = [e, ...t ?? []], i = (e) => n(r[e]).pipe(_.catchTag("AiError", (t) => t.reason === "generation" && e + 1 < r.length ? i(e + 1) : _.fail(t)));
273
- return i(0);
274
- }, xt = (t) => bt(t.provider ?? d(), t.fallbacks, (n) => R(I(n, "generateText"), (e) => e.usage, _.tryPromise({
275
- try: async () => {
276
- let r = await be({
277
- model: e(n),
278
- prompt: t.prompt,
279
- ...t.system === void 0 ? {} : { system: t.system },
280
- ...t.maxTokens === void 0 ? {} : { maxOutputTokens: t.maxTokens },
281
- ...t.providerOptions === void 0 ? {} : { providerOptions: t.providerOptions }
282
- });
283
- return {
284
- text: r.text,
285
- usage: {
286
- inputTokens: r.usage.inputTokens,
287
- outputTokens: r.usage.outputTokens,
288
- totalTokens: r.usage.totalTokens
289
- },
290
- providerMetadata: r.providerMetadata
291
- };
292
- },
293
- catch: (e) => new z({
294
- reason: "generation",
295
- message: String(e?.message ?? e)
296
- })
297
- }))), St = (e, t) => _.gen(function* () {
298
- let n = De.make(e);
299
- if (n?.type !== "object") {
300
- let e = n?.anyOf === void 0 ? `type:${JSON.stringify(n?.type ?? null)}` : "anyOf (e.g. Schema.Struct({}) or a union)";
301
- return yield* _.fail(new z({
302
- reason: "generation",
303
- message: `${t}: the output schema must render as a top-level JSON object (type:"object"), but got ${e}. Use a Schema.Struct({ ... }) as the output schema — wrap arrays/scalars in a field (e.g. Schema.Struct({ items: Schema.Array(...) })).`
304
- }));
305
- }
306
- return n;
307
- }), B = (t) => _.gen(function* () {
308
- let n = yield* St(t.schema, "generateObject");
309
- return yield* bt(t.provider ?? d(), t.fallbacks, (r) => R(I(r, "generateObject"), (e) => e.usage, _.gen(function* () {
310
- let i = e(r), a = yield* _.tryPromise({
311
- try: () => ve({
312
- model: i,
313
- schema: h(n),
314
- prompt: t.prompt,
315
- ...t.system === void 0 ? {} : { system: t.system },
316
- ...t.maxTokens === void 0 ? {} : { maxOutputTokens: t.maxTokens },
317
- ...t.providerOptions === void 0 ? {} : { providerOptions: t.providerOptions }
318
- }),
319
- catch: (e) => new z({
320
- reason: "generation",
321
- message: String(e?.message ?? e)
322
- })
323
- });
324
- return {
325
- object: yield* b.decodeUnknown(t.schema)(a.object).pipe(_.mapError((e) => new z({
326
- reason: "decode",
327
- message: `model output failed schema decode: ${String(e)}`
328
- }))),
329
- usage: {
330
- inputTokens: a.usage.inputTokens,
331
- outputTokens: a.usage.outputTokens,
332
- totalTokens: a.usage.totalTokens
333
- },
334
- providerMetadata: a.providerMetadata
335
- };
336
- })));
337
- }), Ct = (t) => _.gen(function* () {
338
- let n = yield* _.runtime(), r = yield* St(t.schema, "generateObjectWithTools"), i = {
339
- store: void 0,
340
- ...t.toolContext,
341
- runtime: n
342
- }, a = k(t.tools, i);
343
- return yield* bt(t.provider ?? d(), t.fallbacks, (n) => R(I(n, "generateObjectWithTools"), (e) => e.usage, _.gen(function* () {
344
- let i = e(n), o = yield* _.tryPromise({
345
- try: () => be({
346
- model: i,
347
- prompt: t.prompt,
348
- tools: a,
349
- stopWhen: Se(t.maxSteps ?? 8),
350
- output: pe.object({ schema: h(r) }),
351
- ...t.system === void 0 ? {} : { system: t.system },
352
- ...t.maxTokens === void 0 ? {} : { maxOutputTokens: t.maxTokens },
353
- ...t.providerOptions === void 0 ? {} : { providerOptions: t.providerOptions }
354
- }),
355
- catch: (e) => new z({
356
- reason: "generation",
357
- message: String(e?.message ?? e)
358
- })
359
- });
360
- return {
361
- object: yield* b.decodeUnknown(t.schema)(o.output).pipe(_.mapError((e) => new z({
362
- reason: "decode",
363
- message: `model output failed schema decode: ${String(e)}`
364
- }))),
365
- usage: {
366
- inputTokens: o.usage.inputTokens,
367
- outputTokens: o.usage.outputTokens,
368
- totalTokens: o.usage.totalTokens
369
- },
370
- providerMetadata: o.providerMetadata
371
- };
372
- })));
373
- }), wt = class extends Te.Tag("@voltro/AiService")() {}, Tt = {
374
- generateText: (e) => xt(e),
375
- generateObject: (e) => B(e)
376
- }, Et = (e) => e === void 0 ? {} : { providerOptions: e }, V = (e) => new z({
1
+ import { a as e, c as t, d as n, f as r, g as i, h as a, i as o, l as s, m as c, n as l, o as u, p as d, r as f, s as p, t as m, u as h } from "./provider-BOC5wBxx.js";
2
+ import { A as g, C as ee, D as te, E as ne, F as re, I as ie, L as ae, M as oe, N as se, O as ce, P as le, S as ue, T as de, _, a as fe, b as pe, c as me, d as he, f as v, g as ge, h as _e, i as ve, j as ye, k as be, l as y, m as xe, n as Se, o as Ce, p as we, r as Te, s as Ee, t as b, u as De, v as Oe, w as ke, x as Ae, y as x } from "./inferenceQueue-B25RTJZ4.js";
3
+ import { AgentErrorCode as je, AgentEvent as Me, SeqEvent as Ne } from "./events.js";
4
+ import { a as Pe, i as Fe, n as Ie, o as S, r as Le, s as C, t as Re } from "./agentDescriptor-CCeWeadZ.js";
5
+ import { createGateway as ze, gateway as Be } from "@ai-sdk/gateway";
6
+ import { cosineSimilarity as Ve, embed as He, embedMany as Ue, generateImage as We, generateSpeech as Ge, rerank as Ke, stepCountIs as qe, streamText as Je } from "ai";
7
+ import { Chunk as w, Duration as Ye, Effect as T, Option as E, Schema as D, Stream as O } from "effect";
8
+ import { and as k, boolean as Xe, contains as Ze, eq as A, generateId as Qe, gt as $e, gte as et, id as j, inSet as tt, integer as M, json as nt, lt as N, lte as P, neq as rt, or as it, table as F, text as I, timestamp as L } from "@voltro/database";
9
+ import { rowDep as at, tableDep as ot } from "@voltro/cache";
10
+ //#region src/media.ts
11
+ var st = (e) => e === void 0 ? {} : { providerOptions: e }, R = (e) => new y({
377
12
  reason: "generation",
378
13
  message: String(e?.message ?? e)
379
- }), Dt = (e) => {
380
- let t = e.provider ?? d();
381
- return R(I(t, "generateImage"), (e) => e.usage ?? {}, _.tryPromise({
14
+ }), ct = (e) => {
15
+ let t = e.provider ?? f();
16
+ return x(_(t, "generateImage"), (e) => e.usage ?? {}, T.tryPromise({
382
17
  try: async () => {
383
- let n = await _e({
18
+ let n = await We({
384
19
  model: o(t),
385
20
  prompt: e.prompt,
386
21
  ...e.n === void 0 ? {} : { n: e.n },
387
22
  ...e.size === void 0 ? {} : { size: e.size },
388
23
  ...e.aspectRatio === void 0 ? {} : { aspectRatio: e.aspectRatio },
389
- ...Et(e.providerOptions)
24
+ ...st(e.providerOptions)
390
25
  });
391
26
  return {
392
27
  images: n.images.map((e) => ({
@@ -401,13 +36,13 @@ var Ge = (e, t) => e(t), Ke = Symbol.for("@voltro/ai/Tool"), qe = (e) => ({
401
36
  providerMetadata: n.providerMetadata
402
37
  };
403
38
  },
404
- catch: V
39
+ catch: R
405
40
  }));
406
- }, Ot = (e) => {
407
- let t = e.provider ?? d();
408
- return R(I(t, "generateSpeech"), () => ({}), _.tryPromise({
41
+ }, lt = (e) => {
42
+ let t = e.provider ?? f();
43
+ return x(_(t, "generateSpeech"), () => ({}), T.tryPromise({
409
44
  try: async () => {
410
- let n = await ye({
45
+ let n = await Ge({
411
46
  model: u(t),
412
47
  text: e.text,
413
48
  ...e.voice === void 0 ? {} : { voice: e.voice },
@@ -415,7 +50,7 @@ var Ge = (e, t) => e(t), Ke = Symbol.for("@voltro/ai/Tool"), qe = (e) => ({
415
50
  ...e.instructions === void 0 ? {} : { instructions: e.instructions },
416
51
  ...e.speed === void 0 ? {} : { speed: e.speed },
417
52
  ...e.language === void 0 ? {} : { language: e.language },
418
- ...Et(e.providerOptions)
53
+ ...st(e.providerOptions)
419
54
  });
420
55
  return {
421
56
  audio: {
@@ -425,16 +60,16 @@ var Ge = (e, t) => e(t), Ke = Symbol.for("@voltro/ai/Tool"), qe = (e) => ({
425
60
  providerMetadata: n.providerMetadata
426
61
  };
427
62
  },
428
- catch: V
63
+ catch: R
429
64
  }));
430
- }, kt = (e) => ({
65
+ }, ut = (e) => ({
431
66
  type: "url",
432
67
  url: e
433
- }), At = (e) => Uint8Array.from(Buffer.from(e, "base64")), jt = (e) => {
434
- let t = e.provider ?? d();
435
- return R(I(t, "generateVideo"), () => ({}), _.tryPromise({
68
+ }), dt = (e) => Uint8Array.from(Buffer.from(e, "base64")), ft = (e) => {
69
+ let t = e.provider ?? f();
70
+ return x(_(t, "generateVideo"), () => ({}), T.tryPromise({
436
71
  try: async () => {
437
- let n = await f(t).doGenerate({
72
+ let n = await p(t).doGenerate({
438
73
  prompt: e.prompt,
439
74
  n: 1,
440
75
  aspectRatio: e.params?.aspectRatio,
@@ -442,9 +77,9 @@ var Ge = (e, t) => e(t), Ke = Symbol.for("@voltro/ai/Tool"), qe = (e) => ({
442
77
  duration: e.params?.durationSeconds,
443
78
  fps: e.params?.fps,
444
79
  seed: e.params?.seed,
445
- image: e.inputs?.image === void 0 ? void 0 : kt(e.inputs.image),
80
+ image: e.inputs?.image === void 0 ? void 0 : ut(e.inputs.image),
446
81
  frameImages: void 0,
447
- inputReferences: e.inputs?.references?.map(kt),
82
+ inputReferences: e.inputs?.references?.map(ut),
448
83
  generateAudio: void 0,
449
84
  providerOptions: e.providerOptions ?? {}
450
85
  }), r = n.videos[0];
@@ -454,7 +89,7 @@ var Ge = (e, t) => e(t), Ke = Symbol.for("@voltro/ai/Tool"), qe = (e) => ({
454
89
  url: r.url,
455
90
  mediaType: r.mediaType
456
91
  } : r.type === "base64" ? {
457
- data: At(r.data),
92
+ data: dt(r.data),
458
93
  mediaType: r.mediaType
459
94
  } : {
460
95
  data: r.data,
@@ -463,53 +98,53 @@ var Ge = (e, t) => e(t), Ke = Symbol.for("@voltro/ai/Tool"), qe = (e) => ({
463
98
  providerMetadata: n.providerMetadata
464
99
  };
465
100
  },
466
- catch: V
101
+ catch: R
467
102
  }));
468
- }, Mt = (e) => RegExp("^" + e.split("*").map((e) => e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")).join(".*") + "$"), Nt = (e, t) => t instanceof RegExp ? t.test(e) : t.some((t) => Mt(t).test(e)), H = (e, t) => !(t.deny !== void 0 && Nt(e, t.deny) || t.allow !== void 0 && !Nt(e, t.allow)), U = (e) => e === "mutation" || e === "action", Pt = (e) => ({
103
+ }, pt = (e) => RegExp("^" + e.split("*").map((e) => e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")).join(".*") + "$"), mt = (e, t) => t instanceof RegExp ? t.test(e) : t.some((t) => pt(t).test(e)), z = (e, t) => !(t.deny !== void 0 && mt(e, t.deny) || t.allow !== void 0 && !mt(e, t.allow)), B = (e) => e === "mutation" || e === "action", ht = (e) => ({
469
104
  id: e,
470
105
  via: "agent"
471
- }), W = (e, t) => {
106
+ }), V = (e, t) => {
472
107
  let n = e.exposeAsTool;
473
108
  if (n === void 0 || n === !1 || n === !0) return null;
474
- let r = U(e.kind), i = n.confirm ?? (r && (t.requireConfirmForWrites ?? !0));
109
+ let r = B(e.kind), i = n.confirm ?? (r && (t.requireConfirmForWrites ?? !0));
475
110
  return {
476
111
  description: n.description,
477
112
  confirm: i,
478
113
  ...n.maxPerRun === void 0 ? {} : { maxPerRun: n.maxPerRun }
479
114
  };
480
- }, Ft = (e, t = {}) => e.filter((e) => H(e.descriptor.name, t)).map((e) => ({
115
+ }, gt = (e, t = {}) => e.filter((e) => z(e.descriptor.name, t)).map((e) => ({
481
116
  entry: e,
482
- exposure: W(e.descriptor, t)
117
+ exposure: V(e.descriptor, t)
483
118
  })).filter((e) => e.exposure !== null).map(({ entry: e, exposure: t }) => ({
484
119
  name: e.descriptor.name,
485
120
  kind: e.descriptor.kind,
486
121
  description: t.description,
487
- write: U(e.descriptor.kind),
122
+ write: B(e.descriptor.kind),
488
123
  confirm: t.confirm,
489
124
  ...t.maxPerRun === void 0 ? {} : { maxPerRun: t.maxPerRun }
490
- })).sort((e, t) => e.name.localeCompare(t.name)), It = (e, t = {}) => e.filter((e) => H(e.descriptor.name, t)).filter((e) => W(e.descriptor, t) !== null).filter((e) => t.includeWrites === !0 || !U(e.descriptor.kind)).map((e) => {
491
- let n = W(e.descriptor, t);
492
- return qe({
125
+ })).sort((e, t) => e.name.localeCompare(t.name)), _t = (e, t = {}) => e.filter((e) => z(e.descriptor.name, t)).filter((e) => V(e.descriptor, t) !== null).filter((e) => t.includeWrites === !0 || !B(e.descriptor.kind)).map((e) => {
126
+ let n = V(e.descriptor, t);
127
+ return re({
493
128
  name: e.descriptor.name,
494
129
  description: n.description,
495
130
  input: e.descriptor.input,
496
131
  ...e.descriptor.output === void 0 ? {} : { output: e.descriptor.output },
497
132
  handler: (t) => Promise.resolve(e.invoke(t))
498
133
  });
499
- }), G = /* @__PURE__ */ new Map(), Lt = (e) => {
500
- let t = G.get(e);
134
+ }), H = /* @__PURE__ */ new Map(), vt = (e) => {
135
+ let t = H.get(e);
501
136
  if (t) return t;
502
137
  let n = new AbortController();
503
- return G.set(e, n), n;
504
- }, Rt = (e) => {
505
- let t = G.get(e);
506
- return t ? (G.delete(e), t.abort(), !0) : !1;
507
- }, zt = (e) => G.has(e), Bt = (e) => {
508
- G.delete(e);
509
- }, Vt = () => G.size, Ht = (e) => {
138
+ return H.set(e, n), n;
139
+ }, yt = (e) => {
140
+ let t = H.get(e);
141
+ return t ? (H.delete(e), t.abort(), !0) : !1;
142
+ }, bt = (e) => H.has(e), xt = (e) => {
143
+ H.delete(e);
144
+ }, St = () => H.size, Ct = (e) => {
510
145
  let t = e?.name, n = String(e?.message ?? e ?? "");
511
146
  return t === "AbortError" || t === "TimeoutError" || /\babort(ed)?\b/i.test(n);
512
- }, Ut = (e) => {
147
+ }, wt = (e) => {
513
148
  switch (e?.type) {
514
149
  case "text-delta": return {
515
150
  _tag: "token",
@@ -575,14 +210,14 @@ var Ge = (e, t) => e(t), Ke = Symbol.for("@voltro/ai/Tool"), qe = (e) => ({
575
210
  };
576
211
  default: return null;
577
212
  }
578
- }, K = (t) => x.unwrap(_.gen(function* () {
579
- let n = yield* _.runtime(), r = t.provider ?? d(), i = e(r), a = t.tools ? {
213
+ }, U = (t) => O.unwrap(T.gen(function* () {
214
+ let n = yield* T.runtime(), r = t.provider ?? f(), i = e(r), a = t.tools ? {
580
215
  store: void 0,
581
216
  ...t.toolContext,
582
217
  runtime: n
583
- } : t.toolContext, o = t.tools ? k(t.tools, a) : void 0, s = t.streamId === void 0 ? new AbortController() : Lt(t.streamId);
218
+ } : t.toolContext, o = t.tools ? le(t.tools, a) : void 0, s = t.streamId === void 0 ? new AbortController() : vt(t.streamId);
584
219
  t.signal !== void 0 && (t.signal.aborted ? s.abort() : t.signal.addEventListener("abort", () => s.abort(), { once: !0 }));
585
- let c = s.signal, l = Ce({
220
+ let c = s.signal, l = Je({
586
221
  model: i,
587
222
  ...t.messages === void 0 ? { prompt: t.prompt } : { messages: [...t.messages] },
588
223
  ...t.system === void 0 ? {} : { system: t.system },
@@ -592,59 +227,59 @@ var Ge = (e, t) => e(t), Ke = Symbol.for("@voltro/ai/Tool"), qe = (e) => ({
592
227
  abortSignal: c,
593
228
  ...o ? {
594
229
  tools: o,
595
- stopWhen: Se(t.maxSteps ?? 8)
230
+ stopWhen: qe(t.maxSteps ?? 8)
596
231
  } : {}
597
232
  });
598
- return yt(I(r, "streamText"), x.fromAsyncIterable(l.fullStream, (e) => e).pipe(x.map(Ut), x.filter((e) => e !== null), x.catchAll((e) => {
599
- let t = c.aborted || Ht(e);
600
- return x.make({
233
+ return Oe(_(r, "streamText"), O.fromAsyncIterable(l.fullStream, (e) => e).pipe(O.map(wt), O.filter((e) => e !== null), O.catchAll((e) => {
234
+ let t = c.aborted || Ct(e);
235
+ return O.make({
601
236
  _tag: "error",
602
237
  code: t ? "cancelled" : "provider",
603
238
  message: t ? "stream aborted" : String(e),
604
239
  retryable: !t
605
240
  });
606
- }), x.ensuring(_.sync(() => {
607
- s.abort(), t.streamId !== void 0 && Bt(t.streamId);
241
+ }), O.ensuring(T.sync(() => {
242
+ s.abort(), t.streamId !== void 0 && xt(t.streamId);
608
243
  }))));
609
- })), Wt = (e) => e._tag === "token" || e._tag === "reasoning" || e._tag === "toolCall" || e._tag === "toolResult" || e._tag === "source" || e._tag === "file" || e._tag === "message", Gt = (e) => e._tag === "done" || e._tag === "error", Kt = (e, t = {}) => {
244
+ })), Tt = (e) => e._tag === "token" || e._tag === "reasoning" || e._tag === "toolCall" || e._tag === "toolResult" || e._tag === "source" || e._tag === "file" || e._tag === "message", Et = (e) => e._tag === "done" || e._tag === "error", Dt = (e, t = {}) => {
610
245
  let n = Math.max(1, t.maxAttempts ?? 3), r = t.backoffMs ?? 250, i = t.maxBackoffMs ?? 5e3, a = [e.provider, ...e.fallbacks ?? []], o = (t, s) => {
611
246
  let c = !1, l = a[t];
612
- return K(l === void 0 ? e : {
247
+ return U(l === void 0 ? e : {
613
248
  ...e,
614
249
  provider: l
615
- }).pipe(x.takeUntil(Gt), x.flatMap((e) => {
250
+ }).pipe(O.takeUntil(Et), O.flatMap((e) => {
616
251
  if (e._tag === "error" && e.retryable && !c) {
617
252
  if (s + 1 < n) {
618
253
  let e = Math.min(i, r * 2 ** s);
619
- return x.unwrap(_.as(_.sleep(Ee.millis(e)), o(t, s + 1)));
254
+ return O.unwrap(T.as(T.sleep(Ye.millis(e)), o(t, s + 1)));
620
255
  }
621
256
  if (t + 1 < a.length) return o(t + 1, 0);
622
257
  }
623
- return Wt(e) && (c = !0), x.make(e);
258
+ return Tt(e) && (c = !0), O.make(e);
624
259
  }, { concurrency: 1 }));
625
260
  };
626
261
  return o(0, 0);
627
- }, qt = (e) => {
262
+ }, Ot = (e) => {
628
263
  let t = [e.provider, ...e.fallbacks ?? []], n = (r) => {
629
264
  let i = !1, a = t[r];
630
- return K(a === void 0 ? e : {
265
+ return U(a === void 0 ? e : {
631
266
  ...e,
632
267
  provider: a
633
- }).pipe(x.takeUntil(Gt), x.flatMap((e) => e._tag === "error" && e.retryable && !i && r + 1 < t.length ? n(r + 1) : (Wt(e) && (i = !0), x.make(e)), { concurrency: 1 }));
268
+ }).pipe(O.takeUntil(Et), O.flatMap((e) => e._tag === "error" && e.retryable && !i && r + 1 < t.length ? n(r + 1) : (Tt(e) && (i = !0), O.make(e)), { concurrency: 1 }));
634
269
  };
635
270
  return n(0);
636
- }, Jt = (e, t, n = {}) => {
637
- let r = n.pollMs ?? 50, i = n.fromSeq ?? 0, a = n.idleTimeoutMs, o = [g.empty(), y.none()];
638
- return x.paginateChunkEffect({
271
+ }, kt = (e, t, n = {}) => {
272
+ let r = n.pollMs ?? 50, i = n.fromSeq ?? 0, a = n.idleTimeoutMs, o = [w.empty(), E.none()];
273
+ return O.paginateChunkEffect({
639
274
  cursor: i,
640
275
  finishing: !1,
641
276
  idleMs: 0
642
- }, (n) => _.gen(function* () {
277
+ }, (n) => T.gen(function* () {
643
278
  if (n.finishing) return o;
644
279
  let i = yield* t.read(e, n.cursor);
645
280
  if (i.length > 0) {
646
281
  let e = i[i.length - 1].seq;
647
- return [g.fromIterable(i), y.some({
282
+ return [w.fromIterable(i), E.some({
648
283
  cursor: e,
649
284
  finishing: !1,
650
285
  idleMs: 0
@@ -654,38 +289,38 @@ var Ge = (e, t) => e(t), Ke = Symbol.for("@voltro/ai/Tool"), qe = (e) => ({
654
289
  let r = yield* t.read(e, n.cursor);
655
290
  if (r.length === 0) return o;
656
291
  let i = r[r.length - 1].seq;
657
- return [g.fromIterable(r), y.some({
292
+ return [w.fromIterable(r), E.some({
658
293
  cursor: i,
659
294
  finishing: !0,
660
295
  idleMs: 0
661
296
  })];
662
297
  }
663
298
  let s = n.idleMs + r;
664
- return a !== void 0 && s >= a ? o : (yield* _.sleep(Ee.millis(r)), [g.empty(), y.some({
299
+ return a !== void 0 && s >= a ? o : (yield* T.sleep(Ye.millis(r)), [w.empty(), E.some({
665
300
  ...n,
666
301
  idleMs: s
667
302
  })]);
668
303
  }));
669
- }, Yt = (e, t, n) => {
304
+ }, At = (e, t, n) => {
670
305
  let r = 0;
671
- return n().pipe(x.runForEach((n) => (r += 1, t.append(e, {
306
+ return n().pipe(O.runForEach((n) => (r += 1, t.append(e, {
672
307
  seq: r,
673
308
  event: n
674
- }))), _.ensuring(t.markDone(e)), _.catchAllCause(() => _.void));
675
- }, Xt = (e) => x.unwrap(_.gen(function* () {
676
- return (yield* e.store.claimProducer(e.streamId)) && (yield* _.forkDaemon(Yt(e.streamId, e.store, e.source))), Jt(e.streamId, e.store, {
309
+ }))), T.ensuring(t.markDone(e)), T.catchAllCause(() => T.void));
310
+ }, jt = (e) => O.unwrap(T.gen(function* () {
311
+ return (yield* e.store.claimProducer(e.streamId)) && (yield* T.forkDaemon(At(e.streamId, e.store, e.source))), kt(e.streamId, e.store, {
677
312
  fromSeq: e.fromSeq ?? 0,
678
313
  pollMs: e.pollMs ?? 50,
679
314
  ...e.idleTimeoutMs === void 0 ? {} : { idleTimeoutMs: e.idleTimeoutMs }
680
315
  });
681
- })), Zt = (e) => Xt({
316
+ })), Mt = (e) => jt({
682
317
  streamId: e.streamId,
683
318
  store: e.store,
684
- source: () => K(e.options),
319
+ source: () => U(e.options),
685
320
  ...e.fromSeq === void 0 ? {} : { fromSeq: e.fromSeq },
686
321
  ...e.pollMs === void 0 ? {} : { pollMs: e.pollMs },
687
322
  ...e.idleTimeoutMs === void 0 ? {} : { idleTimeoutMs: e.idleTimeoutMs }
688
- }), Qt = () => {
323
+ }), Nt = () => {
689
324
  let e = /* @__PURE__ */ new Map(), t = /* @__PURE__ */ new Set(), n = (t) => {
690
325
  let n = e.get(t);
691
326
  return n || (n = {
@@ -694,42 +329,42 @@ var Ge = (e, t) => e(t), Ke = Symbol.for("@voltro/ai/Tool"), qe = (e) => ({
694
329
  }, e.set(t, n)), n;
695
330
  };
696
331
  return {
697
- claimProducer: (e) => _.sync(() => t.has(e) ? !1 : (t.add(e), !0)),
698
- append: (e, t) => _.sync(() => {
332
+ claimProducer: (e) => T.sync(() => t.has(e) ? !1 : (t.add(e), !0)),
333
+ append: (e, t) => T.sync(() => {
699
334
  n(e).events.push(t);
700
335
  }),
701
- read: (e, t) => _.sync(() => n(e).events.filter((e) => e.seq > t)),
702
- markDone: (e) => _.sync(() => {
336
+ read: (e, t) => T.sync(() => n(e).events.filter((e) => e.seq > t)),
337
+ markDone: (e) => T.sync(() => {
703
338
  n(e).done = !0;
704
339
  }),
705
- isDone: (e) => _.sync(() => n(e).done)
340
+ isDone: (e) => T.sync(() => n(e).done)
706
341
  };
707
- }, q = "_voltro_stream_events", J = "_voltro_stream_state", $t = E(q, {
708
- id: w({ prefix: "sev" }),
709
- streamId: D(),
710
- seq: T(),
711
- event: Ie(),
712
- createdAt: O().default("now")
713
- }).unique(["streamId", "seq"]).index(["streamId"]), en = E(J, {
714
- id: w({ prefix: "sst" }),
715
- streamId: D().unique(),
716
- done: Ae().default(!1),
717
- createdAt: O().default("now"),
718
- updatedAt: O().default("now")
719
- }).index(["createdAt"]), tn = (e) => e === !0 || e === 1 || e === "1" || e === "t", nn = async (e, t) => (await e.query({
342
+ }, W = "_voltro_stream_events", G = "_voltro_stream_state", Pt = F(W, {
343
+ id: j({ prefix: "sev" }),
344
+ streamId: I(),
345
+ seq: M(),
346
+ event: nt(),
347
+ createdAt: L().default("now")
348
+ }).unique(["streamId", "seq"]).index(["streamId"]), Ft = F(G, {
349
+ id: j({ prefix: "sst" }),
350
+ streamId: I().unique(),
351
+ done: Xe().default(!1),
352
+ createdAt: L().default("now"),
353
+ updatedAt: L().default("now")
354
+ }).index(["createdAt"]), It = (e) => e === !0 || e === 1 || e === "1" || e === "t", Lt = async (e, t) => (await e.query({
720
355
  table: "_voltro_stream_state",
721
- predicate: C("streamId", t),
356
+ predicate: A("streamId", t),
722
357
  order: [],
723
358
  take: 1,
724
359
  skip: void 0,
725
360
  projection: void 0
726
- }))[0]?.id ?? null, rn = (e) => ({
727
- claimProducer: (t) => _.promise(async () => {
728
- let n = Me({
361
+ }))[0]?.id ?? null, Rt = (e) => ({
362
+ claimProducer: (t) => T.promise(async () => {
363
+ let n = Qe({
729
364
  kind: "typeid",
730
365
  prefix: "sst"
731
- }, J);
732
- return (await e.insertIgnore(J, {
366
+ }, G);
367
+ return (await e.insertIgnore(G, {
733
368
  id: n,
734
369
  streamId: t,
735
370
  done: !1,
@@ -737,17 +372,17 @@ var Ge = (e, t) => e(t), Ke = Symbol.for("@voltro/ai/Tool"), qe = (e) => ({
737
372
  updatedAt: /* @__PURE__ */ new Date()
738
373
  }, { conflictColumns: ["streamId"] })).id === n;
739
374
  }),
740
- append: (t, n) => _.promise(async () => {
741
- await e.insert(q, {
375
+ append: (t, n) => T.promise(async () => {
376
+ await e.insert(W, {
742
377
  streamId: t,
743
378
  seq: n.seq,
744
379
  event: n.event,
745
380
  createdAt: /* @__PURE__ */ new Date()
746
381
  });
747
382
  }),
748
- read: (t, n) => _.promise(async () => (await e.query({
749
- table: q,
750
- predicate: S(C("streamId", t), Ne("seq", n)),
383
+ read: (t, n) => T.promise(async () => (await e.query({
384
+ table: W,
385
+ predicate: k(A("streamId", t), $e("seq", n)),
751
386
  order: [{
752
387
  column: "seq",
753
388
  direction: "asc"
@@ -759,28 +394,28 @@ var Ge = (e, t) => e(t), Ke = Symbol.for("@voltro/ai/Tool"), qe = (e) => ({
759
394
  seq: Number(e.seq),
760
395
  event: e.event
761
396
  }))),
762
- markDone: (t) => _.promise(async () => {
763
- let n = await nn(e, t);
764
- n !== null && await e.update(J, n, {
397
+ markDone: (t) => T.promise(async () => {
398
+ let n = await Lt(e, t);
399
+ n !== null && await e.update(G, n, {
765
400
  done: !0,
766
401
  updatedAt: /* @__PURE__ */ new Date()
767
402
  });
768
403
  }),
769
- isDone: (t) => _.promise(async () => {
404
+ isDone: (t) => T.promise(async () => {
770
405
  let n = (await e.query({
771
- table: J,
772
- predicate: C("streamId", t),
406
+ table: G,
407
+ predicate: A("streamId", t),
773
408
  order: [],
774
409
  take: 1,
775
410
  skip: void 0,
776
411
  projection: void 0
777
412
  }))[0];
778
- return n !== void 0 && tn(n.done);
413
+ return n !== void 0 && It(n.done);
779
414
  })
780
- }), an = (e, t) => _.promise(async () => {
415
+ }), zt = (e, t) => T.promise(async () => {
781
416
  let n = await e.query({
782
- table: J,
783
- predicate: C("done", !0),
417
+ table: G,
418
+ predicate: A("done", !0),
784
419
  order: [],
785
420
  take: void 0,
786
421
  skip: void 0,
@@ -790,25 +425,25 @@ var Ge = (e, t) => e(t), Ke = Symbol.for("@voltro/ai/Tool"), qe = (e) => ({
790
425
  let n = i;
791
426
  if ((n.createdAt instanceof Date ? n.createdAt : new Date(String(n.createdAt))).getTime() >= t.olderThan.getTime()) continue;
792
427
  let a = await e.query({
793
- table: q,
794
- predicate: C("streamId", n.streamId),
428
+ table: W,
429
+ predicate: A("streamId", n.streamId),
795
430
  order: [],
796
431
  take: void 0,
797
432
  skip: void 0,
798
433
  projection: void 0
799
434
  });
800
- for (let t of a) await e.delete(q, t.id);
801
- await e.delete(J, n.id), r += 1;
435
+ for (let t of a) await e.delete(W, t.id);
436
+ await e.delete(G, n.id), r += 1;
802
437
  }
803
438
  return r;
804
- }), on = (e, t = {}) => {
439
+ }), Bt = (e, t = {}) => {
805
440
  let n = t.keyPrefix ?? "voltro:rstream", r = t.ttlSeconds ?? 3600, i = (e) => `${n}:log:${e}`, a = (e) => `${n}:producer:${e}`, o = (e) => `${n}:done:${e}`;
806
441
  return {
807
- claimProducer: (t) => _.promise(() => e.setNx(a(t), "1", r)),
808
- append: (t, n) => _.promise(async () => {
442
+ claimProducer: (t) => T.promise(() => e.setNx(a(t), "1", r)),
443
+ append: (t, n) => T.promise(async () => {
809
444
  await e.rpush(i(t), JSON.stringify(n)), e.expire && await e.expire(i(t), r);
810
445
  }),
811
- read: (t, n) => _.promise(async () => {
446
+ read: (t, n) => T.promise(async () => {
812
447
  let r = await e.lrange(i(t), n, -1), a = [];
813
448
  for (let e of r) try {
814
449
  let t = JSON.parse(e);
@@ -816,39 +451,39 @@ var Ge = (e, t) => e(t), Ke = Symbol.for("@voltro/ai/Tool"), qe = (e) => ({
816
451
  } catch {}
817
452
  return a;
818
453
  }),
819
- markDone: (t) => _.promise(() => e.set(o(t), "1", r)),
820
- isDone: (t) => _.promise(() => e.exists(o(t)))
454
+ markDone: (t) => T.promise(() => e.set(o(t), "1", r)),
455
+ isDone: (t) => T.promise(() => e.exists(o(t)))
821
456
  };
822
- }, sn = E(m, {
823
- id: w({ prefix: "thread" }),
824
- tenantId: D().nullable(),
825
- title: D().nullable(),
826
- createdAt: O(),
827
- updatedAt: O()
828
- }).renamedFrom("agent_threads").index(["tenantId"]), cn = E(p, {
829
- id: w({ prefix: "msg" }),
830
- threadId: D(),
831
- tenantId: D().nullable(),
832
- role: D(),
833
- content: D(),
834
- streaming: Ae(),
835
- order: T(),
836
- stepOrder: T(),
837
- parts: Ie(),
838
- createdAt: O()
839
- }).renamedFrom("agent_messages").index(["threadId"]), ln = (e, t = {}) => _.promise(async () => {
457
+ }, Vt = F(C, {
458
+ id: j({ prefix: "thread" }),
459
+ tenantId: I().nullable(),
460
+ title: I().nullable(),
461
+ createdAt: L(),
462
+ updatedAt: L()
463
+ }).renamedFrom("agent_threads").index(["tenantId"]), Ht = F(S, {
464
+ id: j({ prefix: "msg" }),
465
+ threadId: I(),
466
+ tenantId: I().nullable(),
467
+ role: I(),
468
+ content: I(),
469
+ streaming: Xe(),
470
+ order: M(),
471
+ stepOrder: M(),
472
+ parts: nt(),
473
+ createdAt: L()
474
+ }).renamedFrom("agent_messages").index(["threadId"]), Ut = (e, t = {}) => T.promise(async () => {
840
475
  let n = /* @__PURE__ */ new Date();
841
- return await e.insert(m, {
476
+ return await e.insert(C, {
842
477
  tenantId: t.tenantId ?? null,
843
478
  title: t.title ?? null,
844
479
  createdAt: n,
845
480
  updatedAt: n
846
481
  });
847
- }), un = (e, t) => _.promise(async () => {
482
+ }), Wt = (e, t) => T.promise(async () => {
848
483
  let n = t.parts ?? (t.content ? [{
849
484
  type: "text",
850
485
  text: t.content
851
- }] : []), r = await e.insert(p, {
486
+ }] : []), r = await e.insert(S, {
852
487
  threadId: t.threadId,
853
488
  tenantId: t.tenantId ?? null,
854
489
  role: t.role,
@@ -859,9 +494,9 @@ var Ge = (e, t) => e(t), Ke = Symbol.for("@voltro/ai/Tool"), qe = (e) => ({
859
494
  parts: n,
860
495
  createdAt: /* @__PURE__ */ new Date()
861
496
  });
862
- return await e.update(m, t.threadId, { updatedAt: /* @__PURE__ */ new Date() }).catch(() => null), r;
863
- }), Y = (e, t) => _.promise(async () => await e.query({
864
- table: p,
497
+ return await e.update(C, t.threadId, { updatedAt: /* @__PURE__ */ new Date() }).catch(() => null), r;
498
+ }), K = (e, t) => T.promise(async () => await e.query({
499
+ table: S,
865
500
  predicate: {
866
501
  _tag: "leaf",
867
502
  column: "threadId",
@@ -875,7 +510,7 @@ var Ge = (e, t) => e(t), Ke = Symbol.for("@voltro/ai/Tool"), qe = (e) => ({
875
510
  take: void 0,
876
511
  skip: void 0,
877
512
  projection: void 0
878
- })), dn = (e, t) => _.promise(async () => (await e.query({
513
+ })), Gt = (e, t) => T.promise(async () => (await e.query({
879
514
  table: "_voltro_agent_threads",
880
515
  predicate: {
881
516
  _tag: "leaf",
@@ -887,14 +522,14 @@ var Ge = (e, t) => e(t), Ke = Symbol.for("@voltro/ai/Tool"), qe = (e) => ({
887
522
  take: 1,
888
523
  skip: void 0,
889
524
  projection: void 0
890
- }))[0] ?? null), fn = (e) => [...e].sort((e, t) => e.order - t.order || e.stepOrder - t.stepOrder).filter((e) => !e.streaming && e.content.length > 0 && (e.role === "user" || e.role === "assistant")).map((e) => e.role === "user" ? {
525
+ }))[0] ?? null), Kt = (e) => [...e].sort((e, t) => e.order - t.order || e.stepOrder - t.stepOrder).filter((e) => !e.streaming && e.content.length > 0 && (e.role === "user" || e.role === "assistant")).map((e) => e.role === "user" ? {
891
526
  role: "user",
892
527
  content: e.content
893
528
  } : {
894
529
  role: "assistant",
895
530
  content: e.content
896
- }), pn = (e, t) => _.promise(async () => {
897
- let n = await e.insert(p, {
531
+ }), qt = (e, t) => T.promise(async () => {
532
+ let n = await e.insert(S, {
898
533
  threadId: t.threadId,
899
534
  tenantId: t.tenantId ?? null,
900
535
  role: "assistant",
@@ -905,18 +540,18 @@ var Ge = (e, t) => e(t), Ke = Symbol.for("@voltro/ai/Tool"), qe = (e) => ({
905
540
  parts: [],
906
541
  createdAt: /* @__PURE__ */ new Date()
907
542
  });
908
- return await e.update(m, t.threadId, { updatedAt: /* @__PURE__ */ new Date() }).catch(() => null), n.id;
909
- }), mn = (e, t, n) => _.promise(async () => {
910
- await e.update(p, t, {
543
+ return await e.update(C, t.threadId, { updatedAt: /* @__PURE__ */ new Date() }).catch(() => null), n.id;
544
+ }), Jt = (e, t, n) => T.promise(async () => {
545
+ await e.update(S, t, {
911
546
  parts: n,
912
- content: X(n)
547
+ content: q(n)
913
548
  });
914
- }), X = (e) => e.filter((e) => e.type === "text").map((e) => e.text).join(""), hn = (e, t) => _.gen(function* () {
915
- let n = yield* pn(e, {
549
+ }), q = (e) => e.filter((e) => e.type === "text").map((e) => e.text).join(""), Yt = (e, t) => T.gen(function* () {
550
+ let n = yield* qt(e, {
916
551
  threadId: t.threadId,
917
552
  tenantId: t.tenantId ?? null,
918
553
  order: t.order
919
- }), r = "", i = "", a = /* @__PURE__ */ new Map(), o = [], s = [], c = 0, l = null, u = t.throttleMs ?? 100, ee = () => {
554
+ }), r = "", i = "", a = /* @__PURE__ */ new Map(), o = [], s = [], c = 0, l = null, u = t.throttleMs ?? 100, d = () => {
920
555
  let e = [];
921
556
  r.length > 0 && e.push({
922
557
  type: "reasoning",
@@ -929,11 +564,11 @@ var Ge = (e, t) => e(t), Ke = Symbol.for("@voltro/ai/Tool"), qe = (e) => ({
929
564
  for (let t of o) e.push(t);
930
565
  for (let t of s) e.push(t);
931
566
  return e;
932
- }, d = (t) => {
567
+ }, f = (t) => {
933
568
  let r = Date.now();
934
- return !t && r - c < u ? _.void : (c = r, mn(e, n, ee()));
569
+ return !t && r - c < u ? T.void : (c = r, Jt(e, n, d()));
935
570
  };
936
- yield* K({
571
+ yield* U({
937
572
  prompt: t.prompt,
938
573
  ...t.messages === void 0 ? {} : { messages: t.messages },
939
574
  ...t.system === void 0 ? {} : { system: t.system },
@@ -942,10 +577,10 @@ var Ge = (e, t) => e(t), Ke = Symbol.for("@voltro/ai/Tool"), qe = (e) => ({
942
577
  ...t.maxSteps === void 0 ? {} : { maxSteps: t.maxSteps },
943
578
  ...t.toolContext === void 0 ? {} : { toolContext: t.toolContext },
944
579
  ...t.providerOptions === void 0 ? {} : { providerOptions: t.providerOptions }
945
- }).pipe(x.runForEach((e) => _.gen(function* () {
580
+ }).pipe(O.runForEach((e) => T.gen(function* () {
946
581
  switch (e._tag) {
947
582
  case "token":
948
- i += e.text, yield* d(!1);
583
+ i += e.text, yield* f(!1);
949
584
  break;
950
585
  case "toolCall":
951
586
  a.set(e.id, {
@@ -954,7 +589,7 @@ var Ge = (e, t) => e(t), Ke = Symbol.for("@voltro/ai/Tool"), qe = (e) => ({
954
589
  toolName: e.name,
955
590
  state: "input-available",
956
591
  input: e.input
957
- }), yield* d(!0);
592
+ }), yield* f(!0);
958
593
  break;
959
594
  case "toolResult": {
960
595
  let t = a.get(e.id);
@@ -966,11 +601,11 @@ var Ge = (e, t) => e(t), Ke = Symbol.for("@voltro/ai/Tool"), qe = (e) => ({
966
601
  input: t?.input,
967
602
  output: e.output,
968
603
  ...e.error ? { errorText: e.error } : {}
969
- }), yield* d(!0);
604
+ }), yield* f(!0);
970
605
  break;
971
606
  }
972
607
  case "reasoning":
973
- r += e.text, yield* d(!1);
608
+ r += e.text, yield* f(!1);
974
609
  break;
975
610
  case "source":
976
611
  o.push({
@@ -981,14 +616,14 @@ var Ge = (e, t) => e(t), Ke = Symbol.for("@voltro/ai/Tool"), qe = (e) => ({
981
616
  ...e.title === void 0 ? {} : { title: e.title },
982
617
  ...e.mediaType === void 0 ? {} : { mediaType: e.mediaType },
983
618
  ...e.filename === void 0 ? {} : { filename: e.filename }
984
- }), yield* d(!0);
619
+ }), yield* f(!0);
985
620
  break;
986
621
  case "file":
987
622
  s.push({
988
623
  type: "file",
989
624
  mediaType: e.mediaType,
990
625
  data: e.data
991
- }), yield* d(!0);
626
+ }), yield* f(!0);
992
627
  break;
993
628
  case "error":
994
629
  l = e.message;
@@ -997,33 +632,33 @@ var Ge = (e, t) => e(t), Ke = Symbol.for("@voltro/ai/Tool"), qe = (e) => ({
997
632
  case "message": break;
998
633
  }
999
634
  })));
1000
- let f = ee();
1001
- return yield* _.promise(() => e.update(p, n, {
1002
- parts: f,
1003
- content: X(f),
635
+ let p = d();
636
+ return yield* T.promise(() => e.update(S, n, {
637
+ parts: p,
638
+ content: q(p),
1004
639
  streaming: !1
1005
- })), l ? yield* _.fail(Error(l)) : X(f);
1006
- }), gn = "@voltro/ai/AgentExecutor", _n = (e, t) => ({
1007
- _brand: gn,
640
+ })), l ? yield* T.fail(Error(l)) : q(p);
641
+ }), Xt = "@voltro/ai/AgentExecutor", Zt = (e, t) => ({
642
+ _brand: Xt,
1008
643
  descriptor: e,
1009
644
  config: t
1010
- }), vn = (e) => typeof e == "object" && !!e && e._brand === gn, yn = (e, t) => {
645
+ }), Qt = (e) => typeof e == "object" && !!e && e._brand === Xt, $t = (e, t) => {
1011
646
  let n = e.config.system;
1012
647
  if (n !== void 0) return typeof n == "function" ? n(t) : n;
1013
- }, bn = (e, t) => {
648
+ }, en = (e, t) => {
1014
649
  let n = e.config.model;
1015
650
  return typeof n == "function" ? n(t) : n;
1016
- }, xn = (e, t, n) => _.gen(function* () {
1017
- let r = n.promptOf ? n.promptOf(n.input) : String(n.input?.prompt ?? ""), i = yn(e, n.input), a = bn(e, n.input);
1018
- yield* un(t, {
651
+ }, tn = (e, t, n) => T.gen(function* () {
652
+ let r = n.promptOf ? n.promptOf(n.input) : String(n.input?.prompt ?? ""), i = $t(e, n.input), a = en(e, n.input);
653
+ yield* Wt(t, {
1019
654
  threadId: n.threadId,
1020
655
  role: "user",
1021
656
  content: r,
1022
657
  tenantId: n.tenantId ?? null,
1023
658
  order: n.order
1024
659
  });
1025
- let o = fn(yield* Y(t, n.threadId));
1026
- return yield* hn(t, {
660
+ let o = Kt(yield* K(t, n.threadId));
661
+ return yield* Yt(t, {
1027
662
  threadId: n.threadId,
1028
663
  tenantId: n.tenantId ?? null,
1029
664
  prompt: r,
@@ -1037,18 +672,18 @@ var Ge = (e, t) => e(t), Ke = Symbol.for("@voltro/ai/Tool"), qe = (e) => ({
1037
672
  order: n.order + 1,
1038
673
  ...n.throttleMs === void 0 ? {} : { throttleMs: n.throttleMs }
1039
674
  });
1040
- }), Sn = (e, t) => Y(e, t), Cn = (e, t) => ({
675
+ }), nn = (e, t) => K(e, t), rn = (e, t) => ({
1041
676
  specificationVersion: "v4",
1042
677
  provider: "mock",
1043
678
  modelId: e,
1044
679
  maxEmbeddingsPerCall: 2048,
1045
680
  supportsParallelCalls: !0,
1046
681
  doEmbed: async ({ values: e }) => ({
1047
- embeddings: e.map((e) => wn(e, t)),
682
+ embeddings: e.map((e) => an(e, t)),
1048
683
  usage: { tokens: e.reduce((e, t) => e + t.length, 0) },
1049
684
  warnings: []
1050
685
  })
1051
- }), wn = (e, t) => {
686
+ }), an = (e, t) => {
1052
687
  let n = Array(t);
1053
688
  for (let r = 0; r < t; r++) {
1054
689
  let t = 2166136261 ^ r * 16777619;
@@ -1056,14 +691,14 @@ var Ge = (e, t) => e(t), Ke = Symbol.for("@voltro/ai/Tool"), qe = (e) => ({
1056
691
  n[r] = (t >>> 0) / 4294967295 * 2 - 1;
1057
692
  }
1058
693
  return n;
1059
- }, Z = async (e) => {
694
+ }, J = async (e) => {
1060
695
  switch (e.name) {
1061
- case "mock": return Cn(e.model, e.mockDim ?? 8);
1062
- case "openai": return (await Q("@ai-sdk/openai", "openai")).openai.textEmbeddingModel(e.model);
1063
- case "voyage": return (await Q("voyage-ai-provider", "voyage")).voyage.textEmbeddingModel(e.model);
1064
- case "cohere": return (await Q("@ai-sdk/cohere", "cohere")).cohere.textEmbeddingModel(e.model);
696
+ case "mock": return rn(e.model, e.mockDim ?? 8);
697
+ case "openai": return (await Y("@ai-sdk/openai", "openai")).openai.textEmbeddingModel(e.model);
698
+ case "voyage": return (await Y("voyage-ai-provider", "voyage")).voyage.textEmbeddingModel(e.model);
699
+ case "cohere": return (await Y("@ai-sdk/cohere", "cohere")).cohere.textEmbeddingModel(e.model);
1065
700
  }
1066
- }, Q = async (e, t) => {
701
+ }, Y = async (e, t) => {
1067
702
  try {
1068
703
  return await import(
1069
704
  /* @vite-ignore */
@@ -1072,71 +707,71 @@ var Ge = (e, t) => e(t), Ke = Symbol.for("@voltro/ai/Tool"), qe = (e) => ({
1072
707
  } catch {
1073
708
  throw Error(`embedding provider '${t}' needs the '${e}' package — install it (pnpm add ${e}) or use AI_EMBED_PROVIDER=mock for tests/demos.`);
1074
709
  }
1075
- }, Tn = (e = process.env) => {
710
+ }, X = (e = process.env) => {
1076
711
  let t = (e.AI_EMBED_PROVIDER ?? "mock").toLowerCase(), n = t === "openai" ? "text-embedding-3-small" : t === "voyage" ? "voyage-3" : t === "cohere" ? "embed-english-v3.0" : "mock", r = e.AI_EMBED_MODEL ?? n, i = e.AI_EMBED_MOCK_DIM === void 0 ? void 0 : Number(e.AI_EMBED_MOCK_DIM);
1077
712
  return {
1078
713
  name: t,
1079
714
  model: r,
1080
715
  ...i !== void 0 && Number.isFinite(i) ? { mockDim: i } : {}
1081
716
  };
1082
- }, En = (e, t) => _.tryPromise({
1083
- try: async () => (await he({
1084
- model: await Z(t ?? Tn()),
717
+ }, Z = (e, t) => T.tryPromise({
718
+ try: async () => (await He({
719
+ model: await J(t ?? X()),
1085
720
  value: e
1086
721
  })).embedding,
1087
- catch: (e) => new z({
722
+ catch: (e) => new y({
1088
723
  reason: "generation",
1089
724
  message: String(e?.message ?? e)
1090
725
  })
1091
- }), Dn = (e, t) => _.tryPromise({
1092
- try: async () => (await ge({
1093
- model: await Z(t ?? Tn()),
726
+ }), on = (e, t) => T.tryPromise({
727
+ try: async () => (await Ue({
728
+ model: await J(t ?? X()),
1094
729
  values: [...e]
1095
730
  })).embeddings,
1096
- catch: (e) => new z({
731
+ catch: (e) => new y({
1097
732
  reason: "generation",
1098
733
  message: String(e?.message ?? e)
1099
734
  })
1100
- }), On = (e, t) => me([...e], [...t]), kn = {
735
+ }), sn = (e, t) => Ve([...e], [...t]), cn = {
1101
736
  inputTokens: 0,
1102
737
  outputTokens: 0,
1103
738
  totalTokens: 0
1104
- }, An = .95, jn = (e, t) => t === void 0 ? e : `${t}\n\n${e}`, Mn = (e, t, n) => e.lookup(t, { threshold: n }).pipe(_.catchTag("CacheError", () => _.succeed(y.none()))), Nn = (e, t, n, r) => e.put(t, n, {
739
+ }, ln = .95, un = (e, t) => t === void 0 ? e : `${t}\n\n${e}`, dn = (e, t, n) => e.lookup(t, { threshold: n }).pipe(T.catchTag("CacheError", () => T.succeed(E.none()))), fn = (e, t, n, r) => e.put(t, n, {
1105
740
  deps: r.deps,
1106
741
  ...r.ttlMs === void 0 ? {} : { ttlMs: r.ttlMs }
1107
- }).pipe(_.catchTag("CacheError", () => _.void)), Pn = (e, t, n) => _.gen(function* () {
1108
- let r = n.embed ?? En, i = t.threshold ?? An, a = yield* r(jn(e.prompt, e.system)), o = yield* Mn(n.cache, a, i);
1109
- if (y.isSome(o)) return {
742
+ }).pipe(T.catchTag("CacheError", () => T.void)), pn = (e, t, n) => T.gen(function* () {
743
+ let r = n.embed ?? Z, i = t.threshold ?? ln, a = yield* r(un(e.prompt, e.system)), o = yield* dn(n.cache, a, i);
744
+ if (E.isSome(o)) return {
1110
745
  value: o.value,
1111
746
  cached: !0,
1112
- usage: kn
747
+ usage: cn
1113
748
  };
1114
- let s = yield* xt(e);
1115
- return yield* Nn(n.cache, a, s.text, t), {
749
+ let s = yield* _e(e);
750
+ return yield* fn(n.cache, a, s.text, t), {
1116
751
  value: s.text,
1117
752
  cached: !1,
1118
753
  usage: s.usage
1119
754
  };
1120
- }), Fn = (e, t, n) => _.gen(function* () {
1121
- let r = n.embed ?? En, i = t.threshold ?? An, a = yield* r(jn(e.prompt, e.system)), o = yield* Mn(n.cache, a, i);
1122
- if (y.isSome(o)) return {
755
+ }), mn = (e, t, n) => T.gen(function* () {
756
+ let r = n.embed ?? Z, i = t.threshold ?? ln, a = yield* r(un(e.prompt, e.system)), o = yield* dn(n.cache, a, i);
757
+ if (E.isSome(o)) return {
1123
758
  value: o.value,
1124
759
  cached: !0,
1125
- usage: kn
760
+ usage: cn
1126
761
  };
1127
- let s = yield* B(e);
1128
- return yield* Nn(n.cache, a, s.object, t), {
762
+ let s = yield* v(e);
763
+ return yield* fn(n.cache, a, s.object, t), {
1129
764
  value: s.object,
1130
765
  cached: !1,
1131
766
  usage: s.usage
1132
767
  };
1133
- }), In = (e) => {
768
+ }), hn = (e) => {
1134
769
  let t = /* @__PURE__ */ new Set(), n = async (n) => {
1135
770
  let r = await e.query(n);
1136
- t.add(We(n.table));
771
+ t.add(ot(n.table));
1137
772
  for (let e of r) {
1138
773
  let r = e.id;
1139
- r != null && t.add(Ue(n.table, String(r)));
774
+ r != null && t.add(at(n.table, String(r)));
1140
775
  }
1141
776
  return r;
1142
777
  };
@@ -1147,26 +782,26 @@ var Ge = (e, t) => e(t), Ke = Symbol.for("@voltro/ai/Tool"), qe = (e) => ({
1147
782
  deps: () => [...t],
1148
783
  reset: () => t.clear()
1149
784
  };
1150
- }, Ln = (e) => _.tryPromise({
785
+ }, gn = (e) => T.tryPromise({
1151
786
  try: async () => {
1152
- let t = e.getText ?? ((e) => String(e)), n = e.provider ?? "mock", r = [...n === "mock" ? Rn(e.query, e.documents, t) : await Bn(n, e.query, e.documents, t, e.model)].sort((e, t) => t.score - e.score);
787
+ let t = e.getText ?? ((e) => String(e)), n = e.provider ?? "mock", r = [...n === "mock" ? _n(e.query, e.documents, t) : await yn(n, e.query, e.documents, t, e.model)].sort((e, t) => t.score - e.score);
1153
788
  return e.topN === void 0 ? r : r.slice(0, e.topN);
1154
789
  },
1155
- catch: (e) => new z({
790
+ catch: (e) => new y({
1156
791
  reason: "generation",
1157
792
  message: String(e?.message ?? e)
1158
793
  })
1159
- }), Rn = (e, t, n) => {
1160
- let r = zn(e), i = new Set(r);
794
+ }), _n = (e, t, n) => {
795
+ let r = vn(e), i = new Set(r);
1161
796
  return t.map((e) => {
1162
- let t = new Set(zn(n(e))), r = 0;
797
+ let t = new Set(vn(n(e))), r = 0;
1163
798
  for (let e of i) t.has(e) && r++;
1164
799
  return {
1165
800
  document: e,
1166
801
  score: i.size === 0 ? 0 : r / i.size
1167
802
  };
1168
803
  });
1169
- }, zn = (e) => e.toLowerCase().split(/[^a-z0-9]+/).filter((e) => e.length > 0), Bn = async (e, t, n, r, i) => {
804
+ }, vn = (e) => e.toLowerCase().split(/[^a-z0-9]+/).filter((e) => e.length > 0), yn = async (e, t, n, r, i) => {
1170
805
  let a = e === "cohere" ? "@ai-sdk/cohere" : "voyage-ai-provider", o;
1171
806
  try {
1172
807
  o = await import(
@@ -1178,7 +813,7 @@ var Ge = (e, t) => e(t), Ke = Symbol.for("@voltro/ai/Tool"), qe = (e) => ({
1178
813
  }
1179
814
  let s = o[e], c = s?.rerankingModel ?? s?.reranking;
1180
815
  if (typeof c != "function") throw Error(`rerank provider '${e}' does not expose a reranking model in '${a}'.`);
1181
- return (await xe({
816
+ return (await Ke({
1182
817
  model: c(i ?? (e === "cohere" ? "rerank-english-v3.0" : "rerank-2")),
1183
818
  query: t,
1184
819
  documents: n.map(r)
@@ -1186,7 +821,7 @@ var Ge = (e, t) => e(t), Ke = Symbol.for("@voltro/ai/Tool"), qe = (e) => ({
1186
821
  document: n[e.originalIndex],
1187
822
  score: e.score
1188
823
  }));
1189
- }, Vn = (e) => {
824
+ }, bn = (e) => {
1190
825
  if (e.name.trim() === "") throw Error("defineEval: name must be non-empty");
1191
826
  if (e.cases.length === 0) throw Error(`defineEval "${e.name}": at least one case is required`);
1192
827
  let t = /* @__PURE__ */ new Set();
@@ -1201,7 +836,7 @@ var Ge = (e, t) => e(t), Ke = Symbol.for("@voltro/ai/Tool"), qe = (e) => ({
1201
836
  ...e,
1202
837
  __eval: !0
1203
838
  };
1204
- }, Hn = (e) => typeof e == "object" && !!e && "__eval" in e && e.__eval === !0, Un = (e, t) => {
839
+ }, xn = (e) => typeof e == "object" && !!e && "__eval" in e && e.__eval === !0, Sn = (e, t) => {
1205
840
  let n = [], r = e.text;
1206
841
  for (let i of t) switch (i.kind) {
1207
842
  case "contains": {
@@ -1257,8 +892,8 @@ var Ge = (e, t) => e(t), Ke = Symbol.for("@voltro/ai/Tool"), qe = (e) => ({
1257
892
  break;
1258
893
  }
1259
894
  return n;
1260
- }, Wn = .7, Gn = (e, t, n, r, i) => {
1261
- let a = Un(t, [...n, ...e.assert ?? []]), o = r?.threshold ?? .7, s = i === void 0 || i.score >= o;
895
+ }, Cn = .7, wn = (e, t, n, r, i) => {
896
+ let a = Sn(t, [...n, ...e.assert ?? []]), o = r?.threshold ?? .7, s = i === void 0 || i.score >= o;
1262
897
  return {
1263
898
  id: e.id,
1264
899
  pass: a.length === 0 && s,
@@ -1266,7 +901,7 @@ var Ge = (e, t) => e(t), Ke = Symbol.for("@voltro/ai/Tool"), qe = (e) => ({
1266
901
  ...i === void 0 ? {} : { judge: i },
1267
902
  output: t
1268
903
  };
1269
- }, Kn = async (e, t) => {
904
+ }, Tn = async (e, t) => {
1270
905
  let n = [];
1271
906
  for (let r of e.cases) {
1272
907
  let i = await t.replay({
@@ -1277,7 +912,7 @@ var Ge = (e, t) => e(t), Ke = Symbol.for("@voltro/ai/Tool"), qe = (e) => ({
1277
912
  output: i,
1278
913
  config: e.judge
1279
914
  }) : void 0;
1280
- n.push(Gn(r, i, e.assert ?? [], e.judge, a));
915
+ n.push(wn(r, i, e.assert ?? [], e.judge, a));
1281
916
  }
1282
917
  let r = n.filter((e) => !e.pass).length;
1283
918
  return {
@@ -1288,11 +923,11 @@ var Ge = (e, t) => e(t), Ke = Symbol.for("@voltro/ai/Tool"), qe = (e) => ({
1288
923
  cases: n,
1289
924
  ...t.branchId === void 0 ? {} : { branch: { id: t.branchId } }
1290
925
  };
1291
- }, qn = b.Struct({
1292
- pass: b.Boolean,
1293
- score: b.Number,
1294
- reason: b.String
1295
- }), Jn = (e, t, n) => [
926
+ }, En = D.Struct({
927
+ pass: D.Boolean,
928
+ score: D.Number,
929
+ reason: D.String
930
+ }), Dn = (e, t, n) => [
1296
931
  "You are grading an AI assistant response against a rubric. Respond with a JSON",
1297
932
  "object { pass: boolean, score: number (0..1), reason: string }. Score 1 is a",
1298
933
  "perfect response, 0 is unusable. Be strict: a plausible-sounding but wrong or",
@@ -1303,20 +938,20 @@ var Ge = (e, t) => e(t), Ke = Symbol.for("@voltro/ai/Tool"), qe = (e) => ({
1303
938
  ...e.input.prompt === "" ? [] : ["", `USER PROMPT:\n${e.input.prompt}`],
1304
939
  "",
1305
940
  `CANDIDATE RESPONSE (to grade):\n${t.text}`
1306
- ].join("\n"), Yn = async ({ case: e, output: t, config: n }) => await _.runPromise(B({
1307
- schema: qn,
1308
- prompt: Jn(e, t, n),
1309
- provider: d()
1310
- }).pipe(_.map((e) => e.object), _.catchAll((e) => _.succeed({
941
+ ].join("\n"), On = async ({ case: e, output: t, config: n }) => await T.runPromise(v({
942
+ schema: En,
943
+ prompt: Dn(e, t, n),
944
+ provider: f()
945
+ }).pipe(T.map((e) => e.object), T.catchAll((e) => T.succeed({
1311
946
  pass: !1,
1312
947
  score: 0,
1313
948
  reason: `judge failed: ${e.message}`
1314
- })))), Xn = (e) => {
949
+ })))), kn = (e) => {
1315
950
  if (e === void 0) return;
1316
951
  let t = Number(e);
1317
952
  return Number.isFinite(t) ? t * 1e6 : void 0;
1318
- }, Zn = (e) => {
1319
- let t = Xn(e.pricing?.input), n = Xn(e.pricing?.output), r = Xn(e.pricing?.cachedInputTokens ?? void 0);
953
+ }, An = (e) => {
954
+ let t = kn(e.pricing?.input), n = kn(e.pricing?.output), r = kn(e.pricing?.cachedInputTokens ?? void 0);
1320
955
  return {
1321
956
  id: e.id,
1322
957
  name: e.name,
@@ -1328,16 +963,16 @@ var Ge = (e, t) => e(t), Ke = Symbol.for("@voltro/ai/Tool"), qe = (e) => ({
1328
963
  ...r === void 0 ? {} : { cachedInputPer1M: r }
1329
964
  } } : {}
1330
965
  };
1331
- }, Qn = async (e = {}) => {
1332
- let t = (await (e.gatewayProvider ?? (e.apiKey !== void 0 || e.baseURL !== void 0 ? de({
966
+ }, jn = async (e = {}) => {
967
+ let t = (await (e.gatewayProvider ?? (e.apiKey !== void 0 || e.baseURL !== void 0 ? ze({
1333
968
  ...e.apiKey === void 0 ? {} : { apiKey: e.apiKey },
1334
969
  ...e.baseURL === void 0 ? {} : { baseURL: e.baseURL }
1335
- }) : fe)).getAvailableModels()).models.map(Zn);
970
+ }) : Be)).getAvailableModels()).models.map(An);
1336
971
  return e.modality === void 0 ? t : t.filter((t) => t.modality === e.modality);
1337
- }, $n = class extends b.TaggedError()("CopilotRejected", {
1338
- reason: b.Literal("unknown-table", "unknown-column", "bad-op", "bad-aggregate", "empty"),
1339
- detail: b.String
1340
- }) {}, er = 200, tr = 50, nr = /* @__PURE__ */ new Set([
972
+ }, Mn = class extends D.TaggedError()("CopilotRejected", {
973
+ reason: D.Literal("unknown-table", "unknown-column", "bad-op", "bad-aggregate", "empty"),
974
+ detail: D.String
975
+ }) {}, Nn = 200, Pn = 50, Fn = /* @__PURE__ */ new Set([
1341
976
  "eq",
1342
977
  "neq",
1343
978
  "gt",
@@ -1346,38 +981,38 @@ var Ge = (e, t) => e(t), Ke = Symbol.for("@voltro/ai/Tool"), qe = (e) => ({
1346
981
  "lte",
1347
982
  "contains",
1348
983
  "in"
1349
- ]), rr = (e) => {
984
+ ]), In = (e) => {
1350
985
  switch (e.op) {
1351
- case "eq": return C(e.column, e.value);
1352
- case "neq": return ze(e.column, e.value);
1353
- case "gt": return Ne(e.column, e.value);
1354
- case "gte": return Pe(e.column, e.value);
1355
- case "lt": return Le(e.column, e.value);
1356
- case "lte": return Re(e.column, e.value);
1357
- case "contains": return je(e.column, e.value);
1358
- case "in": return Fe(e.column, Array.isArray(e.value) ? e.value : [e.value]);
986
+ case "eq": return A(e.column, e.value);
987
+ case "neq": return rt(e.column, e.value);
988
+ case "gt": return $e(e.column, e.value);
989
+ case "gte": return et(e.column, e.value);
990
+ case "lt": return N(e.column, e.value);
991
+ case "lte": return P(e.column, e.value);
992
+ case "contains": return Ze(e.column, e.value);
993
+ case "in": return tt(e.column, Array.isArray(e.value) ? e.value : [e.value]);
1359
994
  }
1360
- }, $ = (e, t) => ({
995
+ }, Q = (e, t) => ({
1361
996
  ok: !1,
1362
- rejection: new $n({
997
+ rejection: new Mn({
1363
998
  reason: e,
1364
999
  detail: t
1365
1000
  })
1366
- }), ir = (e, t) => {
1001
+ }), Ln = (e, t) => {
1367
1002
  let n = t.tables.find((t) => t.name === e.table);
1368
- if (n === void 0) return $("unknown-table", e.table);
1003
+ if (n === void 0) return Q("unknown-table", e.table);
1369
1004
  let r = new Set(n.columns.map((e) => e.name));
1370
- for (let t of e.columns ?? []) if (!r.has(t)) return $("unknown-column", `${e.table}.${t}`);
1005
+ for (let t of e.columns ?? []) if (!r.has(t)) return Q("unknown-column", `${e.table}.${t}`);
1371
1006
  for (let t of e.filters ?? []) {
1372
- if (!nr.has(t.op)) return $("bad-op", String(t.op));
1373
- if (!r.has(t.column)) return $("unknown-column", `${e.table}.${t.column}`);
1007
+ if (!Fn.has(t.op)) return Q("bad-op", String(t.op));
1008
+ if (!r.has(t.column)) return Q("unknown-column", `${e.table}.${t.column}`);
1374
1009
  }
1375
- if (e.orderBy !== void 0 && !r.has(e.orderBy.column)) return $("unknown-column", `${e.table}.${e.orderBy.column}`);
1010
+ if (e.orderBy !== void 0 && !r.has(e.orderBy.column)) return Q("unknown-column", `${e.table}.${e.orderBy.column}`);
1376
1011
  if (e.aggregate !== void 0) {
1377
1012
  let { fn: t, column: n } = e.aggregate;
1378
- if (t !== "count" && (n === void 0 || !r.has(n))) return $("bad-aggregate", `${t}(${n ?? "∅"})`);
1013
+ if (t !== "count" && (n === void 0 || !r.has(n))) return Q("bad-aggregate", `${t}(${n ?? "∅"})`);
1379
1014
  }
1380
- let i = e.filters ?? [], a = i.length === 0 ? void 0 : i.length === 1 ? rr(i[0]) : S(...i.map(rr)), o = Math.min(Math.max(1, e.limit ?? tr), 200), s = {
1015
+ let i = e.filters ?? [], a = i.length === 0 ? void 0 : i.length === 1 ? In(i[0]) : k(...i.map(In)), o = Math.min(Math.max(1, e.limit ?? Pn), 200), s = {
1381
1016
  table: e.table,
1382
1017
  predicate: a,
1383
1018
  order: e.orderBy ? [{
@@ -1398,24 +1033,24 @@ var Ge = (e, t) => e(t), Ke = Symbol.for("@voltro/ai/Tool"), qe = (e) => ({
1398
1033
  descriptor: s,
1399
1034
  table: e.table
1400
1035
  };
1401
- }, ar = b.Struct({
1402
- table: b.String,
1403
- columns: b.optional(b.Array(b.String)),
1404
- filters: b.optional(b.Array(b.Struct({
1405
- column: b.String,
1406
- op: b.Literal("eq", "neq", "gt", "gte", "lt", "lte", "contains", "in"),
1407
- value: b.Unknown
1036
+ }, Rn = D.Struct({
1037
+ table: D.String,
1038
+ columns: D.optional(D.Array(D.String)),
1039
+ filters: D.optional(D.Array(D.Struct({
1040
+ column: D.String,
1041
+ op: D.Literal("eq", "neq", "gt", "gte", "lt", "lte", "contains", "in"),
1042
+ value: D.Unknown
1408
1043
  }))),
1409
- orderBy: b.optional(b.Struct({
1410
- column: b.String,
1411
- direction: b.optional(b.Literal("asc", "desc"))
1044
+ orderBy: D.optional(D.Struct({
1045
+ column: D.String,
1046
+ direction: D.optional(D.Literal("asc", "desc"))
1412
1047
  })),
1413
- limit: b.optional(b.Number),
1414
- aggregate: b.optional(b.Struct({
1415
- fn: b.Literal("count", "sum", "avg", "min", "max"),
1416
- column: b.optional(b.String)
1048
+ limit: D.optional(D.Number),
1049
+ aggregate: D.optional(D.Struct({
1050
+ fn: D.Literal("count", "sum", "avg", "min", "max"),
1051
+ column: D.optional(D.String)
1417
1052
  }))
1418
- }), or = (e) => [
1053
+ }), zn = (e) => [
1419
1054
  "You are a data copilot. Translate the user question into a JSON query proposal.",
1420
1055
  "",
1421
1056
  "You may ONLY reference these tables and columns:",
@@ -1427,12 +1062,187 @@ var Ge = (e, t) => e(t), Ke = Symbol.for("@voltro/ai/Tool"), qe = (e) => ({
1427
1062
  "- NEVER invent a table or column. If the question cannot be answered from the listed schema, pick the closest table and leave filters empty.",
1428
1063
  "- The query is READ-ONLY. You cannot insert, update, or delete.",
1429
1064
  "- Keep the result small (limit ≤ 200)."
1430
- ].join("\n"), sr = async (e, t, n) => {
1431
- let r = or(t);
1432
- return ir(await n.propose({
1065
+ ].join("\n"), Bn = async (e, t, n) => {
1066
+ let r = zn(t);
1067
+ return Ln(await n.propose({
1433
1068
  system: r,
1434
1069
  prompt: e
1435
1070
  }), t);
1071
+ }, Vn = 4, Hn = 250, Un = {
1072
+ examined: !1,
1073
+ claimed: 0,
1074
+ succeeded: 0,
1075
+ failed: 0,
1076
+ retried: 0,
1077
+ reclaimed: 0,
1078
+ failures: []
1079
+ }, $ = (e) => {
1080
+ let t = e instanceof Error ? e.message : String(e);
1081
+ return t.length > 1e3 ? `${t.slice(0, 1e3)}…` : t;
1082
+ }, Wn = (e) => {
1083
+ let t = e;
1084
+ if (typeof t?.retryAfterMillis == "number") return t.retryAfterMillis;
1085
+ if (typeof t?.retryAfter == "number") return t.retryAfter * 1e3;
1086
+ }, Gn = (e) => it(k(A("status", "pending"), P("enqueuedAt", new Date(e))), k(A("status", "running"), N("leaseUntil", new Date(e)))), Kn = async (e, t = {}) => {
1087
+ let n = e.now?.() ?? Date.now(), r = t.batch ?? 4, i = t.leaseMs ?? 3e5, a = t.maxAttempts ?? 4, o = e.replicaId ?? `pid-${process.pid}`, s;
1088
+ try {
1089
+ s = await e.store.query({
1090
+ table: b,
1091
+ predicate: Gn(n),
1092
+ order: [{
1093
+ column: "enqueuedAt",
1094
+ direction: "asc"
1095
+ }],
1096
+ take: r,
1097
+ skip: void 0,
1098
+ projection: void 0
1099
+ });
1100
+ } catch (e) {
1101
+ return {
1102
+ ...Un,
1103
+ examined: !0,
1104
+ failures: [{
1105
+ id: b,
1106
+ detail: $(e)
1107
+ }]
1108
+ };
1109
+ }
1110
+ if (s.length === 0) return {
1111
+ ...Un,
1112
+ examined: !0
1113
+ };
1114
+ let c = [], l = 0, u = 0, d = 0, f = 0, p = 0, m = s.map((r) => async () => {
1115
+ let s = me(r), m = String(r.status) === "running", h = 0;
1116
+ try {
1117
+ h = await e.store.updateMany(b, {
1118
+ status: "running",
1119
+ leaseUntil: new Date(n + i),
1120
+ claimedBy: o,
1121
+ startedAt: new Date(n)
1122
+ }, { where: k(A("id", s.id), m ? k(A("status", "running"), N("leaseUntil", new Date(n))) : k(A("status", "pending"), P("enqueuedAt", new Date(n)))) });
1123
+ } catch (e) {
1124
+ c.push({
1125
+ id: s.id,
1126
+ detail: $(e)
1127
+ });
1128
+ return;
1129
+ }
1130
+ if (h !== 1) return;
1131
+ l += 1, m && (p += 1);
1132
+ let g = Date.now();
1133
+ try {
1134
+ let t = await qn(e, s);
1135
+ await e.resume({
1136
+ executionId: s.executionId,
1137
+ workflowName: s.workflowName,
1138
+ signalName: s.signalName,
1139
+ payload: t.payload
1140
+ }), await e.store.update(b, s.id, {
1141
+ status: "succeeded",
1142
+ result: t.payload,
1143
+ completedAt: /* @__PURE__ */ new Date(),
1144
+ durationMs: Date.now() - g,
1145
+ leaseUntil: null
1146
+ }), u += 1, e.log?.info("ai.infer: offloaded call completed", {
1147
+ id: s.id,
1148
+ model: s.model,
1149
+ durationMs: Date.now() - g
1150
+ });
1151
+ } catch (n) {
1152
+ let r = fe({
1153
+ attempts: s.attempts,
1154
+ maxAttempts: a,
1155
+ baseDelayMs: t.baseDelayMs ?? 1e3,
1156
+ maxDelayMs: t.maxDelayMs ?? 3e4,
1157
+ retryAfterMs: Wn(n)
1158
+ }), i = $(n);
1159
+ if (c.push({
1160
+ id: s.id,
1161
+ detail: i
1162
+ }), r.kind === "retry") {
1163
+ await e.store.update(b, s.id, {
1164
+ status: "pending",
1165
+ attempts: r.attempts,
1166
+ errorMessage: i,
1167
+ leaseUntil: null,
1168
+ enqueuedAt: new Date(Date.now() + r.delayMs)
1169
+ }).catch(() => {}), f += 1;
1170
+ return;
1171
+ }
1172
+ await e.resume({
1173
+ executionId: s.executionId,
1174
+ workflowName: s.workflowName,
1175
+ signalName: s.signalName,
1176
+ payload: {
1177
+ __voltro_ai_error: !0,
1178
+ message: i,
1179
+ attempts: r.attempts
1180
+ }
1181
+ }).catch((e) => {
1182
+ c.push({
1183
+ id: s.id,
1184
+ detail: `could not resume the parked run: ${$(e)}`
1185
+ });
1186
+ }), await e.store.update(b, s.id, {
1187
+ status: "failed",
1188
+ attempts: r.attempts,
1189
+ errorMessage: i,
1190
+ completedAt: /* @__PURE__ */ new Date(),
1191
+ leaseUntil: null
1192
+ }).catch(() => {}), d += 1, e.log?.warn("ai.infer: offloaded call gave up", {
1193
+ id: s.id,
1194
+ model: s.model,
1195
+ attempts: r.attempts,
1196
+ detail: i
1197
+ });
1198
+ }
1199
+ });
1200
+ return await Promise.all(m.map((e) => e())), {
1201
+ examined: !0,
1202
+ claimed: l,
1203
+ succeeded: u,
1204
+ failed: d,
1205
+ retried: f,
1206
+ reclaimed: p,
1207
+ failures: c
1208
+ };
1209
+ }, qn = async (e, t) => {
1210
+ let n = {
1211
+ provider: t.provider,
1212
+ model: t.model
1213
+ }, r = {
1214
+ prompt: t.prompt,
1215
+ provider: n,
1216
+ ...t.system === null ? {} : { system: t.system },
1217
+ ...t.maxTokens === null ? {} : { maxTokens: t.maxTokens },
1218
+ ...t.providerOptions !== null && t.providerOptions !== void 0 ? { providerOptions: t.providerOptions } : {}
1219
+ };
1220
+ if (t.kind === "object") {
1221
+ if (t.jsonSchema === null) throw Error(`inference ${t.id} is kind 'object' but carries no jsonSchema`);
1222
+ let n = await e.run(we({
1223
+ ...r,
1224
+ jsonSchema: t.jsonSchema
1225
+ }));
1226
+ return await Jn(e, t, "generateObject", n), { payload: n.object };
1227
+ }
1228
+ let i = await e.run(_e(r));
1229
+ return await Jn(e, t, "generateText", i), { payload: {
1230
+ text: i.text,
1231
+ inputTokens: i.usage.inputTokens ?? null,
1232
+ outputTokens: i.usage.outputTokens ?? null,
1233
+ totalTokens: i.usage.totalTokens ?? null
1234
+ } };
1235
+ }, Jn = async (e, t, n, r) => {
1236
+ let i = ce(r.providerMetadata);
1237
+ await e.run(ye(e.store, {
1238
+ provider: t.provider,
1239
+ model: t.model,
1240
+ operation: n,
1241
+ agent: t.stepName,
1242
+ usage: r.usage,
1243
+ ...t.tenantId === null ? {} : { tenantId: t.tenantId },
1244
+ ...i === void 0 ? {} : { actualCostUsd: i }
1245
+ })).catch(() => {});
1436
1246
  };
1437
1247
  //#endregion
1438
- export { p as AGENT_MESSAGES_TABLE, m as AGENT_THREADS_TABLE, N as AI_BUDGET_TABLE, M as AI_USAGE_TABLE, re as AgentErrorCode, ie as AgentEvent, ct as AiBudgetExceeded, z as AiError, wt as AiService, er as COPILOT_MAX_LIMIT, ar as CopilotProposalSchema, $n as CopilotRejected, Wn as DEFAULT_JUDGE_THRESHOLD, et as MODEL_PRICING_DEFAULTS, te as MockScript, q as STREAM_EVENTS_TABLE, J as STREAM_STATE_TABLE, ae as SeqEvent, Vt as activeStreamCount, Pt as agentActor, ue as agentInputSchema, ce as agentMessageSchema, cn as agentMessagesTable, le as agentRouteDescriptors, sn as agentThreadsTable, lt as aiBudgetTable, I as aiCallAttributes, st as aiSpendUsd, it as aiUsageTable, It as appTools, un as appendMessage, pn as appendStreamingMessage, s as applyMiddleware, or as buildCopilotSystemPrompt, k as buildSdkTools, Rt as cancelStream, ne as clearAiMiddleware, Jt as consumeResumableStream, On as cosineSimilarity, ln as createThread, rn as dataStoreResumableStreamStore, Tt as defaultAiService, n as defaultSettingsMiddleware, se as defineAgent, _n as defineAgentExecutor, Vn as defineEval, qe as defineTool, En as embed, Dn as embedMany, Tn as embeddingProviderFromEnv, j as estimateCostUsd, Un as evaluateAssertions, r as extractReasoningMiddleware, at as gatewayCostUsd, an as gcResumableStreams, Dt as generateImage, B as generateObject, Ct as generateObjectWithTools, Ot as generateSpeech, xt as generateText, jt as generateVideo, ee as getAiMiddleware, Qn as getAvailableModels, Y as getMessages, l as getProviderOverride, dn as getThread, wn as hashToVector, fn as historyToModelMessages, oe as isAgentDescriptor, vn as isAgentExecutor, Hn as isEvalDefinition, zt as isStreamActive, Je as isTool, Yn as llmJudge, Sn as loadAgentMessages, c as loggingMiddleware, Qt as memoryResumableStreamStore, nt as modelPricing, yt as observeStream, H as passesPolicy, mn as patchStreamingMessage, rt as priceForModel, d as providerFromEnv, ot as recordAiUsage, In as recordReads, on as redisResumableStreamStore, Lt as registerStream, ft as requireAiBudget, Ln as rerank, bn as resolveAgentModel, Z as resolveEmbeddingModel, o as resolveImageModel, e as resolveModel, u as resolveSpeechModel, yn as resolveSystem, Ye as resolveToolModuleHandlers, f as resolveVideoModel, Xt as resumableStream, Zt as resumableStreamText, xn as runAgentTurn, hn as runAssistant, sr as runDataCopilot, Kn as runEval, Gn as scoreCase, Fn as semanticGenerateObject, Pn as semanticGenerateText, a as setAiMiddleware, tt as setModelPricing, t as setProviderOverride, i as simulateStreamingMiddleware, Yt as startResumableProducer, $t as streamEventsTable, en as streamStateTable, K as streamText, qt as streamTextWithFallback, Kt as streamTextWithRetry, Ft as synthesizeToolSpecs, Zn as toModelInfo, Bt as unregisterStream, ir as validateCopilotProposal, R as withAiCallSpan };
1248
+ export { S as AGENT_MESSAGES_TABLE, C as AGENT_THREADS_TABLE, pe as AI_BUDGET_TABLE, b as AI_INFERENCES_TABLE, Ae as AI_USAGE_TABLE, je as AgentErrorCode, Me as AgentEvent, ue as AiBudgetExceeded, y as AiError, De as AiService, Nn as COPILOT_MAX_LIMIT, Rn as CopilotProposalSchema, Mn as CopilotRejected, Se as DEFAULT_INFERENCE_ATTEMPTS, Vn as DEFAULT_INFERENCE_CONCURRENCY, Te as DEFAULT_INFERENCE_LEASE_MS, Hn as DEFAULT_INFERENCE_POLL_MS, Cn as DEFAULT_JUDGE_THRESHOLD, ee as MODEL_PRICING_DEFAULTS, m as MockScript, W as STREAM_EVENTS_TABLE, G as STREAM_STATE_TABLE, Ne as SeqEvent, St as activeStreamCount, ht as agentActor, Re as agentInputSchema, Ie as agentMessageSchema, Ht as agentMessagesTable, Le as agentRouteDescriptors, Vt as agentThreadsTable, ke as aiBudgetTable, _ as aiCallAttributes, ve as aiInferencesTable, de as aiSpendUsd, ne as aiUsageTable, _t as appTools, Wt as appendMessage, qt as appendStreamingMessage, s as applyMiddleware, zn as buildCopilotSystemPrompt, le as buildSdkTools, yt as cancelStream, h as clearAiMiddleware, kt as consumeResumableStream, sn as cosineSimilarity, Ut as createThread, Rt as dataStoreResumableStreamStore, fe as decideInferenceFailure, he as defaultAiService, n as defaultSettingsMiddleware, Fe as defineAgent, Zt as defineAgentExecutor, bn as defineEval, re as defineTool, Kn as dispatchInferences, Z as embed, on as embedMany, X as embeddingProviderFromEnv, te as estimateCostUsd, Sn as evaluateAssertions, r as extractReasoningMiddleware, ce as gatewayCostUsd, zt as gcResumableStreams, ct as generateImage, v as generateObject, we as generateObjectJson, xe as generateObjectWithTools, lt as generateSpeech, _e as generateText, ft as generateVideo, d as getAiMiddleware, jn as getAvailableModels, K as getMessages, l as getProviderOverride, Gt as getThread, an as hashToVector, Kt as historyToModelMessages, Ce as inferenceSignalName, Pe as isAgentDescriptor, Qt as isAgentExecutor, xn as isEvalDefinition, bt as isStreamActive, ie as isTool, On as llmJudge, nn as loadAgentMessages, c as loggingMiddleware, Nt as memoryResumableStreamStore, be as modelPricing, Oe as observeStream, Ee as offloadedInferenceId, ge as outputJsonSchema, z as passesPolicy, Jt as patchStreamingMessage, g as priceForModel, f as providerFromEnv, ye as recordAiUsage, hn as recordReads, Bt as redisResumableStreamStore, vt as registerStream, oe as requireAiBudget, gn as rerank, en as resolveAgentModel, J as resolveEmbeddingModel, o as resolveImageModel, e as resolveModel, u as resolveSpeechModel, $t as resolveSystem, ae as resolveToolModuleHandlers, p as resolveVideoModel, jt as resumableStream, Mt as resumableStreamText, tn as runAgentTurn, Yt as runAssistant, Bn as runDataCopilot, Tn as runEval, wn as scoreCase, mn as semanticGenerateObject, pn as semanticGenerateText, a as setAiMiddleware, se as setModelPricing, t as setProviderOverride, i as simulateStreamingMiddleware, At as startResumableProducer, Pt as streamEventsTable, Ft as streamStateTable, U as streamText, Ot as streamTextWithFallback, Dt as streamTextWithRetry, gt as synthesizeToolSpecs, An as toModelInfo, me as toQueuedInference, xt as unregisterStream, Ln as validateCopilotProposal, x as withAiCallSpan };