@voltro/ai 0.86.0 → 0.88.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/CHANGELOG.md +5484 -0
  2. package/THIRD-PARTY-NOTICES.md +5352 -524
  3. package/dist/agent.js +1 -2
  4. package/dist/agentConstants.js +1 -2
  5. package/dist/agentExecutor.js +43 -40
  6. package/dist/aiSettings.js +10 -0
  7. package/dist/api.js +1 -2
  8. package/dist/appTools.js +1 -2
  9. package/dist/budget.js +1 -2
  10. package/dist/callEvidence.js +1 -2
  11. package/dist/copilot.js +1 -2
  12. package/dist/cost.js +1 -2
  13. package/dist/embed.js +1 -2
  14. package/dist/embeddingProvider.js +40 -23
  15. package/dist/eval.js +1 -2
  16. package/dist/events.js +1 -2
  17. package/dist/executableModalities.js +1 -2
  18. package/dist/gateway.js +1 -2
  19. package/dist/gatewayCatalog.js +1 -2
  20. package/dist/gatewayMedia.js +1 -2
  21. package/dist/index.d.ts +49 -2
  22. package/dist/index.js +41 -41
  23. package/dist/inferenceDispatch.js +1 -2
  24. package/dist/inferenceQueue.js +1 -2
  25. package/dist/jsonOutputValidation.js +1 -2
  26. package/dist/mcpClient.js +1 -2
  27. package/dist/mcpTools.js +1 -2
  28. package/dist/media.js +1 -2
  29. package/dist/mediaBytes.js +1 -2
  30. package/dist/mediaCall.js +1 -2
  31. package/dist/mediaTaskProvider.js +1 -2
  32. package/dist/middleware.js +1 -2
  33. package/dist/observe.js +1 -2
  34. package/dist/prompts.js +1 -2
  35. package/dist/provider.js +85 -70
  36. package/dist/realtimeEvent.js +1 -2
  37. package/dist/realtimeSession.js +1 -2
  38. package/dist/rerank.js +1 -2
  39. package/dist/resumableStream.js +2 -3
  40. package/dist/retrieveReranked.js +1 -2
  41. package/dist/runAndPersist.js +47 -49
  42. package/dist/semanticCache.js +1 -2
  43. package/dist/speechProvider.js +1 -2
  44. package/dist/streamRegistry.js +1 -2
  45. package/dist/streamText.js +1 -2
  46. package/dist/streamTranscribe.js +1 -2
  47. package/dist/streamWakeups.js +1 -2
  48. package/dist/structuredEvidence.js +1 -2
  49. package/dist/test.js +1 -2
  50. package/dist/threads.js +1 -2
  51. package/dist/tools.js +1 -2
  52. package/dist/transcribe.js +1 -2
  53. package/dist/transcriptionEvent.js +1 -2
  54. package/dist/workflow.js +1 -2
  55. package/package.json +13 -12
package/dist/index.js CHANGED
@@ -1,42 +1,42 @@
1
1
  import { applyMiddleware as e, clearAiMiddleware as t, defaultSettingsMiddleware as n, extractReasoningMiddleware as r, getAiMiddleware as i, loggingMiddleware as a, setAiMiddleware as o, simulateStreamingMiddleware as s } from "./middleware.js";
2
- import { MockScript as c, getProviderOverride as l, providerFromEnv as u, providerKeyEnvVar as d, resolveImageModel as f, resolveModel as p, resolveSpeechModel as m, resolveTranscriptionModel as h, resolveVideoModel as g, setProviderOverride as _ } from "./provider.js";
3
- import { buildSdkTools as v, defineTool as y, isTool as b, resolveToolModuleHandlers as x } from "./tools.js";
4
- import { AI_BUDGET_RESERVATIONS_TABLE as S, AI_BUDGET_TABLE as C, AiBudgetExceeded as w, AiBudgetInvalidInput as T, AiBudgetReservationConflict as E, aiBudgetReservationsTable as D, aiBudgetTable as O, releaseAiBudget as k, requireAiBudget as A } from "./budget.js";
5
- import { AI_USAGE_TABLE as j, AiUsageLedgerError as M, AiUsageReceiptConflict as N, MODEL_PRICING_DEFAULTS as P, aiSpendUsd as F, aiUsageTable as I, estimateCostUsd as L, gatewayCostUsd as R, isMeteredUsage as z, modelPricing as B, normaliseUsage as V, priceForModel as H, recordAiUsage as U, recordAiUsageBestEffort as W, setModelPricing as G } from "./cost.js";
6
- import { aiCallAttributes as K, observeStream as q, withAiCallSpan as J } from "./observe.js";
7
- import { AiCallEvidenceSchema as Y } from "./callEvidence.js";
8
- import { AiError as X, AiService as Z, aiGenerationError as Q, defaultAiService as $, generateObject as ee, generateObjectJson as te, generateObjectWithTools as ne, generateText as re, outputJsonSchema as ie } from "./api.js";
9
- import { BUILTIN_SPEECH_PROVIDERS as ae, clearSpeechProviders as oe, registerSpeechProvider as se, registeredSpeechProviders as ce, replacesBuiltinSpeechProvider as le, speechProvider as ue } from "./speechProvider.js";
10
- import { generateImage as de, generateSpeech as fe, generateVideo as pe } from "./media.js";
11
- import { transcribe as me } from "./transcribe.js";
12
- import { TranscriptionStreamError as he, TranscriptionStreamEvent as ge } from "./transcriptionEvent.js";
13
- import { streamTranscribe as _e } from "./streamTranscribe.js";
14
- import { RealtimeClientEvent as ve, RealtimeServerEvent as ye } from "./realtimeEvent.js";
15
- import { defineRealtimeSession as be, resolveRealtimeModel as xe } from "./realtimeSession.js";
16
- import { BUILTIN_MEDIA_PROVIDERS as Se, clearMediaTaskProviders as Ce, mediaTaskProvider as we, registerMediaTaskProvider as Te, registeredMediaTaskProviders as Ee } from "./mediaTaskProvider.js";
17
- import { AgentErrorCode as De, AgentEvent as Oe, SeqEvent as ke } from "./events.js";
18
- import { agentActor as Ae, appToolDecision as je, appTools as Me, passesPolicy as Ne, synthesizeToolSpecs as Pe } from "./appTools.js";
19
- import { activeStreamCount as Fe, cancelStream as Ie, isStreamActive as Le, registerStream as Re, unregisterStream as ze } from "./streamRegistry.js";
20
- import { streamText as Be, streamTextWithFallback as Ve, streamTextWithRetry as He } from "./streamText.js";
21
- import { DEFAULT_STREAM_LOG_RETENTION_HOURS as Ue, STREAM_EVENTS_TABLE as We, STREAM_STATE_TABLE as Ge, consumeResumableStream as Ke, dataStoreResumableStreamStore as qe, gcResumableStreams as Je, memoryResumableStreamStore as Ye, redisResumableStreamStore as Xe, resumableStream as Ze, resumableStreamText as Qe, startResumableProducer as $e, streamEventsTable as et, streamStateTable as tt } from "./resumableStream.js";
22
- import { AGENT_MESSAGES_TABLE as nt, AGENT_THREADS_TABLE as rt } from "./agentConstants.js";
23
- import { AgentThreadAccessDenied as it, agentInputSchema as at, agentMessageSchema as ot, agentRouteDescriptors as st, defineAgent as ct, isAgentDescriptor as lt } from "./agent.js";
24
- import { agentMessagesTable as ut, agentThreadsTable as dt, appendMessage as ft, createThread as pt, ensureThreadOwned as mt, getMessages as ht, getThread as gt } from "./threads.js";
25
- import { appendStreamingMessage as _t, historyToModelMessages as vt, patchStreamingMessage as yt, runAssistant as bt } from "./runAndPersist.js";
26
- import { defineAgentExecutor as xt, isAgentExecutor as St, loadAgentMessages as Ct, resolveAgentModel as wt, resolveSystem as Tt, runAgentTurn as Et } from "./agentExecutor.js";
27
- import { embeddingProviderFromEnv as Dt, hashToVector as Ot, resolveEmbeddingModel as kt } from "./embeddingProvider.js";
28
- import { cosineSimilarity as At, embed as jt, embedMany as Mt } from "./embed.js";
29
- import { recordReads as Nt, semanticGenerateObject as Pt, semanticGenerateText as Ft } from "./semanticCache.js";
30
- import { rerank as It } from "./rerank.js";
31
- import { retrieveReranked as Lt } from "./retrieveReranked.js";
32
- import { DEFAULT_PROMPT_RETENTION_HOURS as Rt, PROMPTS_TABLE as zt, PromptRenderError as Bt, definePrompt as Vt, isRenderedPrompt as Ht, promptDigest as Ut, promptVersionByDigest as Wt, promptVersionDigest as Gt, promptVersionsFor as Kt, promptsTable as qt, recordPromptVersion as Jt } from "./prompts.js";
33
- import { MCP_BOUNDS_DEFAULTS as Yt, MCP_CLIENT_INFO as Xt, MCP_CLIENT_PROTOCOL_VERSION as Zt, McpError as Qt, flattenMcpContent as $t, httpMcpTransport as en, isUsableMcpToolName as tn, mcpCallTool as nn, mcpInitialize as rn, mcpListTools as an, parseHttpMcpBody as on, resolveMcpBounds as sn, sanitizeExternalText as cn, sanitizeInputSchema as ln, stdioMcpTransport as un } from "./mcpClient.js";
34
- import { describeExternalTool as dn, isExternalWrite as fn, makeMcpTool as pn, mcpToolDecision as mn, mcpToolTag as hn, mcpTools as gn, mcpToolset as _n, refreshMcpToolset as vn } from "./mcpTools.js";
35
- import { DEFAULT_JUDGE_THRESHOLD as yn, defineEval as bn, evaluateAssertions as xn, isEvalDefinition as Sn, llmJudge as Cn, runEval as wn, scoreCase as Tn } from "./eval.js";
36
- import { capabilitiesOf as En, contextWindowOf as Dn, dataPolicyOf as On, knowledgeCutoffOf as kn, maxOutputTokensOf as An, modalitiesOf as jn, modalityOf as Mn, releasedAtOf as Nn } from "./gatewayCatalog.js";
37
- import { fromRaw as Pn, getAvailableModels as Fn, readGatewayCatalog as In, toModelInfo as Ln } from "./gateway.js";
38
- import { MODALITY_PRIMITIVE as Rn, canExecute as zn, executableModalities as Bn } from "./executableModalities.js";
39
- import { COPILOT_MAX_LIMIT as Vn, CopilotProposalSchema as Hn, CopilotRejected as Un, buildCopilotSystemPrompt as Wn, runDataCopilot as Gn, validateCopilotProposal as Kn } from "./copilot.js";
40
- import { AI_INFERENCES_TABLE as qn, DEFAULT_INFERENCE_ATTEMPTS as Jn, DEFAULT_INFERENCE_LEASE_MS as Yn, aiInferencesTable as Xn, decideInferenceFailure as Zn, inferenceSignalName as Qn, offloadedInferenceId as $n, toQueuedInference as er } from "./inferenceQueue.js";
41
- import { DEFAULT_INFERENCE_CONCURRENCY as tr, DEFAULT_INFERENCE_POLL_MS as nr, DEFAULT_INFERENCE_RETENTION_HOURS as rr, dispatchInferences as ir } from "./inferenceDispatch.js";
42
- export { nt as AGENT_MESSAGES_TABLE, rt as AGENT_THREADS_TABLE, S as AI_BUDGET_RESERVATIONS_TABLE, C as AI_BUDGET_TABLE, qn as AI_INFERENCES_TABLE, j as AI_USAGE_TABLE, De as AgentErrorCode, Oe as AgentEvent, it as AgentThreadAccessDenied, w as AiBudgetExceeded, T as AiBudgetInvalidInput, E as AiBudgetReservationConflict, Y as AiCallEvidenceSchema, X as AiError, Z as AiService, M as AiUsageLedgerError, N as AiUsageReceiptConflict, Se as BUILTIN_MEDIA_PROVIDERS, ae as BUILTIN_SPEECH_PROVIDERS, Vn as COPILOT_MAX_LIMIT, Hn as CopilotProposalSchema, Un as CopilotRejected, Jn as DEFAULT_INFERENCE_ATTEMPTS, tr as DEFAULT_INFERENCE_CONCURRENCY, Yn as DEFAULT_INFERENCE_LEASE_MS, nr as DEFAULT_INFERENCE_POLL_MS, rr as DEFAULT_INFERENCE_RETENTION_HOURS, yn as DEFAULT_JUDGE_THRESHOLD, Rt as DEFAULT_PROMPT_RETENTION_HOURS, Ue as DEFAULT_STREAM_LOG_RETENTION_HOURS, Yt as MCP_BOUNDS_DEFAULTS, Xt as MCP_CLIENT_INFO, Zt as MCP_CLIENT_PROTOCOL_VERSION, Rn as MODALITY_PRIMITIVE, P as MODEL_PRICING_DEFAULTS, Qt as McpError, c as MockScript, zt as PROMPTS_TABLE, Bt as PromptRenderError, ve as RealtimeClientEvent, ye as RealtimeServerEvent, We as STREAM_EVENTS_TABLE, Ge as STREAM_STATE_TABLE, ke as SeqEvent, he as TranscriptionStreamError, ge as TranscriptionStreamEvent, Fe as activeStreamCount, Ae as agentActor, at as agentInputSchema, ot as agentMessageSchema, ut as agentMessagesTable, st as agentRouteDescriptors, dt as agentThreadsTable, D as aiBudgetReservationsTable, O as aiBudgetTable, K as aiCallAttributes, Q as aiGenerationError, Xn as aiInferencesTable, F as aiSpendUsd, I as aiUsageTable, je as appToolDecision, Me as appTools, ft as appendMessage, _t as appendStreamingMessage, e as applyMiddleware, Wn as buildCopilotSystemPrompt, v as buildSdkTools, zn as canExecute, Ie as cancelStream, En as capabilitiesOf, t as clearAiMiddleware, Ce as clearMediaTaskProviders, oe as clearSpeechProviders, Ke as consumeResumableStream, Dn as contextWindowOf, At as cosineSimilarity, pt as createThread, On as dataPolicyOf, qe as dataStoreResumableStreamStore, Zn as decideInferenceFailure, $ as defaultAiService, n as defaultSettingsMiddleware, ct as defineAgent, xt as defineAgentExecutor, bn as defineEval, Vt as definePrompt, be as defineRealtimeSession, y as defineTool, dn as describeExternalTool, ir as dispatchInferences, jt as embed, Mt as embedMany, Dt as embeddingProviderFromEnv, mt as ensureThreadOwned, L as estimateCostUsd, xn as evaluateAssertions, Bn as executableModalities, r as extractReasoningMiddleware, $t as flattenMcpContent, Pn as fromRaw, R as gatewayCostUsd, Je as gcResumableStreams, de as generateImage, ee as generateObject, te as generateObjectJson, ne as generateObjectWithTools, fe as generateSpeech, re as generateText, pe as generateVideo, i as getAiMiddleware, Fn as getAvailableModels, ht as getMessages, l as getProviderOverride, gt as getThread, Ot as hashToVector, vt as historyToModelMessages, en as httpMcpTransport, Qn as inferenceSignalName, lt as isAgentDescriptor, St as isAgentExecutor, Sn as isEvalDefinition, fn as isExternalWrite, z as isMeteredUsage, Ht as isRenderedPrompt, Le as isStreamActive, b as isTool, tn as isUsableMcpToolName, kn as knowledgeCutoffOf, Cn as llmJudge, Ct as loadAgentMessages, a as loggingMiddleware, pn as makeMcpTool, An as maxOutputTokensOf, nn as mcpCallTool, rn as mcpInitialize, an as mcpListTools, mn as mcpToolDecision, hn as mcpToolTag, gn as mcpTools, _n as mcpToolset, we as mediaTaskProvider, Ye as memoryResumableStreamStore, jn as modalitiesOf, Mn as modalityOf, B as modelPricing, V as normaliseUsage, q as observeStream, $n as offloadedInferenceId, ie as outputJsonSchema, on as parseHttpMcpBody, Ne as passesPolicy, yt as patchStreamingMessage, H as priceForModel, Ut as promptDigest, Wt as promptVersionByDigest, Gt as promptVersionDigest, Kt as promptVersionsFor, qt as promptsTable, u as providerFromEnv, d as providerKeyEnvVar, In as readGatewayCatalog, U as recordAiUsage, W as recordAiUsageBestEffort, Jt as recordPromptVersion, Nt as recordReads, Xe as redisResumableStreamStore, vn as refreshMcpToolset, Te as registerMediaTaskProvider, se as registerSpeechProvider, Re as registerStream, Ee as registeredMediaTaskProviders, ce as registeredSpeechProviders, k as releaseAiBudget, Nn as releasedAtOf, le as replacesBuiltinSpeechProvider, A as requireAiBudget, It as rerank, wt as resolveAgentModel, kt as resolveEmbeddingModel, f as resolveImageModel, sn as resolveMcpBounds, p as resolveModel, xe as resolveRealtimeModel, m as resolveSpeechModel, Tt as resolveSystem, x as resolveToolModuleHandlers, h as resolveTranscriptionModel, g as resolveVideoModel, Ze as resumableStream, Qe as resumableStreamText, Lt as retrieveReranked, Et as runAgentTurn, bt as runAssistant, Gn as runDataCopilot, wn as runEval, cn as sanitizeExternalText, ln as sanitizeInputSchema, Tn as scoreCase, Pt as semanticGenerateObject, Ft as semanticGenerateText, o as setAiMiddleware, G as setModelPricing, _ as setProviderOverride, s as simulateStreamingMiddleware, ue as speechProvider, $e as startResumableProducer, un as stdioMcpTransport, et as streamEventsTable, tt as streamStateTable, Be as streamText, Ve as streamTextWithFallback, He as streamTextWithRetry, _e as streamTranscribe, Pe as synthesizeToolSpecs, Ln as toModelInfo, er as toQueuedInference, me as transcribe, ze as unregisterStream, Kn as validateCopilotProposal, J as withAiCallSpan };
2
+ import { MockScript as c, getProviderOverride as l, providerChoice as u, providerFromEnv as d, providerKeyEnvVar as f, resolveImageModel as p, resolveModel as m, resolveSpeechModel as h, resolveTranscriptionModel as g, resolveVideoModel as _, setProviderOverride as v } from "./provider.js";
3
+ import { buildSdkTools as y, defineTool as b, isTool as x, resolveToolModuleHandlers as S } from "./tools.js";
4
+ import { AI_BUDGET_RESERVATIONS_TABLE as C, AI_BUDGET_TABLE as w, AiBudgetExceeded as T, AiBudgetInvalidInput as E, AiBudgetReservationConflict as D, aiBudgetReservationsTable as O, aiBudgetTable as k, releaseAiBudget as A, requireAiBudget as j } from "./budget.js";
5
+ import { AI_USAGE_TABLE as M, AiUsageLedgerError as N, AiUsageReceiptConflict as P, MODEL_PRICING_DEFAULTS as F, aiSpendUsd as I, aiUsageTable as L, estimateCostUsd as R, gatewayCostUsd as z, isMeteredUsage as B, modelPricing as V, normaliseUsage as H, priceForModel as U, recordAiUsage as W, recordAiUsageBestEffort as G, setModelPricing as K } from "./cost.js";
6
+ import { aiCallAttributes as q, observeStream as J, withAiCallSpan as Y } from "./observe.js";
7
+ import { AiCallEvidenceSchema as X } from "./callEvidence.js";
8
+ import { AiError as Z, AiService as Q, aiGenerationError as $, defaultAiService as ee, generateObject as te, generateObjectJson as ne, generateObjectWithTools as re, generateText as ie, outputJsonSchema as ae } from "./api.js";
9
+ import { BUILTIN_SPEECH_PROVIDERS as oe, clearSpeechProviders as se, registerSpeechProvider as ce, registeredSpeechProviders as le, replacesBuiltinSpeechProvider as ue, speechProvider as de } from "./speechProvider.js";
10
+ import { generateImage as fe, generateSpeech as pe, generateVideo as me } from "./media.js";
11
+ import { transcribe as he } from "./transcribe.js";
12
+ import { TranscriptionStreamError as ge, TranscriptionStreamEvent as _e } from "./transcriptionEvent.js";
13
+ import { streamTranscribe as ve } from "./streamTranscribe.js";
14
+ import { RealtimeClientEvent as ye, RealtimeServerEvent as be } from "./realtimeEvent.js";
15
+ import { defineRealtimeSession as xe, resolveRealtimeModel as Se } from "./realtimeSession.js";
16
+ import { BUILTIN_MEDIA_PROVIDERS as Ce, clearMediaTaskProviders as we, mediaTaskProvider as Te, registerMediaTaskProvider as Ee, registeredMediaTaskProviders as De } from "./mediaTaskProvider.js";
17
+ import { AgentErrorCode as Oe, AgentEvent as ke, SeqEvent as Ae } from "./events.js";
18
+ import { agentActor as je, appToolDecision as Me, appTools as Ne, passesPolicy as Pe, synthesizeToolSpecs as Fe } from "./appTools.js";
19
+ import { activeStreamCount as Ie, cancelStream as Le, isStreamActive as Re, registerStream as ze, unregisterStream as Be } from "./streamRegistry.js";
20
+ import { streamText as Ve, streamTextWithFallback as He, streamTextWithRetry as Ue } from "./streamText.js";
21
+ import { DEFAULT_STREAM_LOG_RETENTION_HOURS as We, STREAM_EVENTS_TABLE as Ge, STREAM_STATE_TABLE as Ke, consumeResumableStream as qe, dataStoreResumableStreamStore as Je, gcResumableStreams as Ye, memoryResumableStreamStore as Xe, redisResumableStreamStore as Ze, resumableStream as Qe, resumableStreamText as $e, startResumableProducer as et, streamEventsTable as tt, streamStateTable as nt } from "./resumableStream.js";
22
+ import { AGENT_MESSAGES_TABLE as rt, AGENT_THREADS_TABLE as it } from "./agentConstants.js";
23
+ import { AgentThreadAccessDenied as at, agentInputSchema as ot, agentMessageSchema as st, agentRouteDescriptors as ct, defineAgent as lt, isAgentDescriptor as ut } from "./agent.js";
24
+ import { agentMessagesTable as dt, agentThreadsTable as ft, appendMessage as pt, createThread as mt, ensureThreadOwned as ht, getMessages as gt, getThread as _t } from "./threads.js";
25
+ import { appendStreamingMessage as vt, historyToModelMessages as yt, patchStreamingMessage as bt, runAssistant as xt } from "./runAndPersist.js";
26
+ import { defineAgentExecutor as St, isAgentExecutor as Ct, loadAgentMessages as wt, resolveAgentModel as Tt, resolveSystem as Et, runAgentTurn as Dt } from "./agentExecutor.js";
27
+ import { embeddingProviderChoice as Ot, embeddingProviderFromEnv as kt, embeddingProviderKeyEnvVar as At, hashToVector as jt, resolveEmbeddingModel as Mt } from "./embeddingProvider.js";
28
+ import { cosineSimilarity as Nt, embed as Pt, embedMany as Ft } from "./embed.js";
29
+ import { recordReads as It, semanticGenerateObject as Lt, semanticGenerateText as Rt } from "./semanticCache.js";
30
+ import { rerank as zt } from "./rerank.js";
31
+ import { retrieveReranked as Bt } from "./retrieveReranked.js";
32
+ import { DEFAULT_PROMPT_RETENTION_HOURS as Vt, PROMPTS_TABLE as Ht, PromptRenderError as Ut, definePrompt as Wt, isRenderedPrompt as Gt, promptDigest as Kt, promptVersionByDigest as qt, promptVersionDigest as Jt, promptVersionsFor as Yt, promptsTable as Xt, recordPromptVersion as Zt } from "./prompts.js";
33
+ import { MCP_BOUNDS_DEFAULTS as Qt, MCP_CLIENT_INFO as $t, MCP_CLIENT_PROTOCOL_VERSION as en, McpError as tn, flattenMcpContent as nn, httpMcpTransport as rn, isUsableMcpToolName as an, mcpCallTool as on, mcpInitialize as sn, mcpListTools as cn, parseHttpMcpBody as ln, resolveMcpBounds as un, sanitizeExternalText as dn, sanitizeInputSchema as fn, stdioMcpTransport as pn } from "./mcpClient.js";
34
+ import { describeExternalTool as mn, isExternalWrite as hn, makeMcpTool as gn, mcpToolDecision as _n, mcpToolTag as vn, mcpTools as yn, mcpToolset as bn, refreshMcpToolset as xn } from "./mcpTools.js";
35
+ import { DEFAULT_JUDGE_THRESHOLD as Sn, defineEval as Cn, evaluateAssertions as wn, isEvalDefinition as Tn, llmJudge as En, runEval as Dn, scoreCase as On } from "./eval.js";
36
+ import { capabilitiesOf as kn, contextWindowOf as An, dataPolicyOf as jn, knowledgeCutoffOf as Mn, maxOutputTokensOf as Nn, modalitiesOf as Pn, modalityOf as Fn, releasedAtOf as In } from "./gatewayCatalog.js";
37
+ import { fromRaw as Ln, getAvailableModels as Rn, readGatewayCatalog as zn, toModelInfo as Bn } from "./gateway.js";
38
+ import { MODALITY_PRIMITIVE as Vn, canExecute as Hn, executableModalities as Un } from "./executableModalities.js";
39
+ import { COPILOT_MAX_LIMIT as Wn, CopilotProposalSchema as Gn, CopilotRejected as Kn, buildCopilotSystemPrompt as qn, runDataCopilot as Jn, validateCopilotProposal as Yn } from "./copilot.js";
40
+ import { AI_INFERENCES_TABLE as Xn, DEFAULT_INFERENCE_ATTEMPTS as Zn, DEFAULT_INFERENCE_LEASE_MS as Qn, aiInferencesTable as $n, decideInferenceFailure as er, inferenceSignalName as tr, offloadedInferenceId as nr, toQueuedInference as rr } from "./inferenceQueue.js";
41
+ import { DEFAULT_INFERENCE_CONCURRENCY as ir, DEFAULT_INFERENCE_POLL_MS as ar, DEFAULT_INFERENCE_RETENTION_HOURS as or, dispatchInferences as sr } from "./inferenceDispatch.js";
42
+ export { rt as AGENT_MESSAGES_TABLE, it as AGENT_THREADS_TABLE, C as AI_BUDGET_RESERVATIONS_TABLE, w as AI_BUDGET_TABLE, Xn as AI_INFERENCES_TABLE, M as AI_USAGE_TABLE, Oe as AgentErrorCode, ke as AgentEvent, at as AgentThreadAccessDenied, T as AiBudgetExceeded, E as AiBudgetInvalidInput, D as AiBudgetReservationConflict, X as AiCallEvidenceSchema, Z as AiError, Q as AiService, N as AiUsageLedgerError, P as AiUsageReceiptConflict, Ce as BUILTIN_MEDIA_PROVIDERS, oe as BUILTIN_SPEECH_PROVIDERS, Wn as COPILOT_MAX_LIMIT, Gn as CopilotProposalSchema, Kn as CopilotRejected, Zn as DEFAULT_INFERENCE_ATTEMPTS, ir as DEFAULT_INFERENCE_CONCURRENCY, Qn as DEFAULT_INFERENCE_LEASE_MS, ar as DEFAULT_INFERENCE_POLL_MS, or as DEFAULT_INFERENCE_RETENTION_HOURS, Sn as DEFAULT_JUDGE_THRESHOLD, Vt as DEFAULT_PROMPT_RETENTION_HOURS, We as DEFAULT_STREAM_LOG_RETENTION_HOURS, Qt as MCP_BOUNDS_DEFAULTS, $t as MCP_CLIENT_INFO, en as MCP_CLIENT_PROTOCOL_VERSION, Vn as MODALITY_PRIMITIVE, F as MODEL_PRICING_DEFAULTS, tn as McpError, c as MockScript, Ht as PROMPTS_TABLE, Ut as PromptRenderError, ye as RealtimeClientEvent, be as RealtimeServerEvent, Ge as STREAM_EVENTS_TABLE, Ke as STREAM_STATE_TABLE, Ae as SeqEvent, ge as TranscriptionStreamError, _e as TranscriptionStreamEvent, Ie as activeStreamCount, je as agentActor, ot as agentInputSchema, st as agentMessageSchema, dt as agentMessagesTable, ct as agentRouteDescriptors, ft as agentThreadsTable, O as aiBudgetReservationsTable, k as aiBudgetTable, q as aiCallAttributes, $ as aiGenerationError, $n as aiInferencesTable, I as aiSpendUsd, L as aiUsageTable, Me as appToolDecision, Ne as appTools, pt as appendMessage, vt as appendStreamingMessage, e as applyMiddleware, qn as buildCopilotSystemPrompt, y as buildSdkTools, Hn as canExecute, Le as cancelStream, kn as capabilitiesOf, t as clearAiMiddleware, we as clearMediaTaskProviders, se as clearSpeechProviders, qe as consumeResumableStream, An as contextWindowOf, Nt as cosineSimilarity, mt as createThread, jn as dataPolicyOf, Je as dataStoreResumableStreamStore, er as decideInferenceFailure, ee as defaultAiService, n as defaultSettingsMiddleware, lt as defineAgent, St as defineAgentExecutor, Cn as defineEval, Wt as definePrompt, xe as defineRealtimeSession, b as defineTool, mn as describeExternalTool, sr as dispatchInferences, Pt as embed, Ft as embedMany, Ot as embeddingProviderChoice, kt as embeddingProviderFromEnv, At as embeddingProviderKeyEnvVar, ht as ensureThreadOwned, R as estimateCostUsd, wn as evaluateAssertions, Un as executableModalities, r as extractReasoningMiddleware, nn as flattenMcpContent, Ln as fromRaw, z as gatewayCostUsd, Ye as gcResumableStreams, fe as generateImage, te as generateObject, ne as generateObjectJson, re as generateObjectWithTools, pe as generateSpeech, ie as generateText, me as generateVideo, i as getAiMiddleware, Rn as getAvailableModels, gt as getMessages, l as getProviderOverride, _t as getThread, jt as hashToVector, yt as historyToModelMessages, rn as httpMcpTransport, tr as inferenceSignalName, ut as isAgentDescriptor, Ct as isAgentExecutor, Tn as isEvalDefinition, hn as isExternalWrite, B as isMeteredUsage, Gt as isRenderedPrompt, Re as isStreamActive, x as isTool, an as isUsableMcpToolName, Mn as knowledgeCutoffOf, En as llmJudge, wt as loadAgentMessages, a as loggingMiddleware, gn as makeMcpTool, Nn as maxOutputTokensOf, on as mcpCallTool, sn as mcpInitialize, cn as mcpListTools, _n as mcpToolDecision, vn as mcpToolTag, yn as mcpTools, bn as mcpToolset, Te as mediaTaskProvider, Xe as memoryResumableStreamStore, Pn as modalitiesOf, Fn as modalityOf, V as modelPricing, H as normaliseUsage, J as observeStream, nr as offloadedInferenceId, ae as outputJsonSchema, ln as parseHttpMcpBody, Pe as passesPolicy, bt as patchStreamingMessage, U as priceForModel, Kt as promptDigest, qt as promptVersionByDigest, Jt as promptVersionDigest, Yt as promptVersionsFor, Xt as promptsTable, u as providerChoice, d as providerFromEnv, f as providerKeyEnvVar, zn as readGatewayCatalog, W as recordAiUsage, G as recordAiUsageBestEffort, Zt as recordPromptVersion, It as recordReads, Ze as redisResumableStreamStore, xn as refreshMcpToolset, Ee as registerMediaTaskProvider, ce as registerSpeechProvider, ze as registerStream, De as registeredMediaTaskProviders, le as registeredSpeechProviders, A as releaseAiBudget, In as releasedAtOf, ue as replacesBuiltinSpeechProvider, j as requireAiBudget, zt as rerank, Tt as resolveAgentModel, Mt as resolveEmbeddingModel, p as resolveImageModel, un as resolveMcpBounds, m as resolveModel, Se as resolveRealtimeModel, h as resolveSpeechModel, Et as resolveSystem, S as resolveToolModuleHandlers, g as resolveTranscriptionModel, _ as resolveVideoModel, Qe as resumableStream, $e as resumableStreamText, Bt as retrieveReranked, Dt as runAgentTurn, xt as runAssistant, Jn as runDataCopilot, Dn as runEval, dn as sanitizeExternalText, fn as sanitizeInputSchema, On as scoreCase, Lt as semanticGenerateObject, Rt as semanticGenerateText, o as setAiMiddleware, K as setModelPricing, v as setProviderOverride, s as simulateStreamingMiddleware, de as speechProvider, et as startResumableProducer, pn as stdioMcpTransport, tt as streamEventsTable, nt as streamStateTable, Ve as streamText, He as streamTextWithFallback, Ue as streamTextWithRetry, ve as streamTranscribe, Fe as synthesizeToolSpecs, Bn as toModelInfo, rr as toQueuedInference, he as transcribe, Be as unregisterStream, Yn as validateCopilotProposal, Y as withAiCallSpan };
@@ -6,7 +6,7 @@ import { transcribe as c } from "./transcribe.js";
6
6
  import { mediaTaskProvider as l } from "./mediaTaskProvider.js";
7
7
  import { AI_INFERENCES_TABLE as u, decideInferenceFailure as d, toQueuedInference as f } from "./inferenceQueue.js";
8
8
  import { and as p, eq as m, gt as h, gte as g, lt as _, lte as v, or as y, registerRetention as b, retentionTtlMsFromEnv as x } from "@voltro/database";
9
- //#region src/inferenceDispatch.ts
9
+ // src/inferenceDispatch.ts
10
10
  var S = 4, C = 250, w = 5e3, T = 36e5, E = {
11
11
  examined: !1,
12
12
  claimed: 0,
@@ -489,5 +489,4 @@ var S = 4, C = 250, w = 5e3, T = 36e5, E = {
489
489
  } } : {}
490
490
  }));
491
491
  };
492
- //#endregion
493
492
  export { S as DEFAULT_INFERENCE_CONCURRENCY, C as DEFAULT_INFERENCE_POLL_MS, j as DEFAULT_INFERENCE_RETENTION_HOURS, w as DEFAULT_MEDIA_TASK_POLL_MS, T as DEFAULT_MEDIA_TASK_TIMEOUT_MS, N as dispatchInferences };
@@ -1,6 +1,6 @@
1
1
  import { id as e, integer as t, json as n, table as r, text as i, timestamp as a } from "@voltro/database";
2
2
  import { createHash as o } from "node:crypto";
3
- //#region src/inferenceQueue.ts
3
+ // src/inferenceQueue.ts
4
4
  var s = "_voltro_ai_inferences", c = r(s, {
5
5
  id: e({ prefix: "aiinf" }),
6
6
  tenantId: i().nullable(),
@@ -92,5 +92,4 @@ var s = "_voltro_ai_inferences", c = r(s, {
92
92
  delayMs: e.retryAfterMs !== void 0 && e.retryAfterMs > 0 ? e.retryAfterMs : Math.min(e.baseDelayMs * 2 ** (t - 1), e.maxDelayMs)
93
93
  };
94
94
  }, g = (e) => `voltro.ai.infer:${e}`, _ = (e, t) => `aiinf_${o("sha256").update(`${e}\u0000${t}`).digest("hex").slice(0, 40)}`;
95
- //#endregion
96
95
  export { s as AI_INFERENCES_TABLE, u as DEFAULT_INFERENCE_ATTEMPTS, l as DEFAULT_INFERENCE_LEASE_MS, c as aiInferencesTable, h as decideInferenceFailure, g as inferenceSignalName, _ as offloadedInferenceId, m as toQueuedInference };
@@ -3,7 +3,7 @@ import { Ajv as t } from "ajv";
3
3
  import { Ajv2019 as n } from "ajv/dist/2019.js";
4
4
  import { Ajv2020 as r } from "ajv/dist/2020.js";
5
5
  import i from "ajv-formats";
6
- //#region src/jsonOutputValidation.ts
6
+ // src/jsonOutputValidation.ts
7
7
  var a = (a) => {
8
8
  let o = structuredClone(a), s = {
9
9
  strict: !0,
@@ -23,5 +23,4 @@ var a = (a) => {
23
23
  error: /* @__PURE__ */ Error("model output does not satisfy the declared JSON Schema")
24
24
  } });
25
25
  };
26
- //#endregion
27
26
  export { a as validatedOutputSchema };
package/dist/mcpClient.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Effect as e, Schema as t } from "effect";
2
- //#region src/mcpClient.ts
2
+ // src/mcpClient.ts
3
3
  var n = "2025-06-18", r = {
4
4
  name: "voltro-ai",
5
5
  version: "0.0.0"
@@ -328,5 +328,4 @@ var n = "2025-06-18", r = {
328
328
  }), n), o = x(e, a.maxResultBytes);
329
329
  return e.isError === !0 ? `Error: ${o}` : o;
330
330
  });
331
- //#endregion
332
331
  export { a as MCP_BOUNDS_DEFAULTS, r as MCP_CLIENT_INFO, n as MCP_CLIENT_PROTOCOL_VERSION, i as McpError, x as flattenMcpContent, g as httpMcpTransport, d as isUsableMcpToolName, S as mcpCallTool, y as mcpInitialize, b as mcpListTools, h as parseHttpMcpBody, s as resolveMcpBounds, l as sanitizeExternalText, f as sanitizeInputSchema, _ as stdioMcpTransport };
package/dist/mcpTools.js CHANGED
@@ -2,7 +2,7 @@ import { defineTool as e } from "./tools.js";
2
2
  import { passesPolicy as t } from "./appTools.js";
3
3
  import { McpError as n, mcpCallTool as r, mcpInitialize as i, mcpListTools as a, resolveMcpBounds as o } from "./mcpClient.js";
4
4
  import { Effect as s, Schema as c } from "effect";
5
- //#region src/mcpTools.ts
5
+ // src/mcpTools.ts
6
6
  var l = (e) => RegExp("^" + e.split("*").map((e) => e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")).join(".*") + "$"), u = (e, t) => t instanceof RegExp ? t.test(e) : t.some((t) => l(t).test(e)), d = (e, t) => `${e}.${t}`, f = (e, t, n) => {
7
7
  let r = d(t, e.name);
8
8
  return !(n.readOnly !== void 0 && u(r, n.readOnly) || n.trustToolHints === !0 && e.annotations?.readOnlyHint === !0);
@@ -76,5 +76,4 @@ var l = (e) => RegExp("^" + e.split("*").map((e) => e.replace(/[.*+?^${}()|[\]\\
76
76
  close: () => e.transport.close()
77
77
  };
78
78
  }), v = (e, t) => _(e, t).pipe(s.map((e) => e.tools)), y = (e, t) => _(e, t);
79
- //#endregion
80
79
  export { m as describeExternalTool, f as isExternalWrite, g as makeMcpTool, p as mcpToolDecision, d as mcpToolTag, v as mcpTools, _ as mcpToolset, y as refreshMcpToolset };
package/dist/media.js CHANGED
@@ -6,7 +6,7 @@ import { decodeInlineVideo as d, inlineVideoByteLimit as f } from "./mediaBytes.
6
6
  import { mediaCall as p } from "./mediaCall.js";
7
7
  import { generateImage as m, generateSpeech as h } from "ai";
8
8
  import { Effect as g } from "effect";
9
- //#region src/media.ts
9
+ // src/media.ts
10
10
  var _ = (e) => e === void 0 ? {} : { providerOptions: e }, v = (e) => s(e), y = (e) => {
11
11
  let t = async (t) => {
12
12
  let n = await e.doGenerate(t);
@@ -178,5 +178,4 @@ var _ = (e) => e === void 0 ? {} : { providerOptions: e }, v = (e) => s(e), y =
178
178
  catch: v
179
179
  }), t.abortSignal));
180
180
  };
181
- //#endregion
182
181
  export { x as generateImage, C as generateSpeech, T as generateVideo };
@@ -1,4 +1,4 @@
1
- //#region src/mediaBytes.ts
1
+ // src/mediaBytes.ts
2
2
  var e = 67108864, t = (t = e) => {
3
3
  if (!Number.isSafeInteger(t) || t < 0) throw RangeError("generateVideo: maxInlineBytes must be a non-negative safe integer.");
4
4
  return t;
@@ -15,5 +15,4 @@ var e = 67108864, t = (t = e) => {
15
15
  if (r > 0 && (i.length === 0 || a & (r === 2 ? 15 : 3))) throw Error("generateVideo: provider returned invalid canonical base64.");
16
16
  return Buffer.from(e, "base64");
17
17
  };
18
- //#endregion
19
18
  export { e as DEFAULT_INLINE_VIDEO_BYTES, n as decodeInlineVideo, t as inlineVideoByteLimit };
package/dist/mediaCall.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Effect as e } from "effect";
2
- //#region src/mediaCall.ts
2
+ // src/mediaCall.ts
3
3
  var t = (t, n) => e.suspend(() => n?.aborted ? e.interrupt : e.acquireUseRelease(e.sync(() => new AbortController()), (r) => {
4
4
  let i = e.suspend(() => t(r.signal));
5
5
  if (n === void 0) return i;
@@ -9,5 +9,4 @@ var t = (t, n) => e.suspend(() => n?.aborted ? e.interrupt : e.acquireUseRelease
9
9
  });
10
10
  return e.raceFirst(i, a);
11
11
  }, (t) => e.sync(() => t.abort())));
12
- //#endregion
13
12
  export { t as mediaCall };
@@ -1,4 +1,4 @@
1
- //#region src/mediaTaskProvider.ts
1
+ // src/mediaTaskProvider.ts
2
2
  var e = Symbol.for("@voltro/ai/mediaTaskProviders"), t = globalThis, n = () => t[e] ?? (t[e] = /* @__PURE__ */ new Map()), r = [
3
3
  "mock",
4
4
  "openai",
@@ -12,5 +12,4 @@ var e = Symbol.for("@voltro/ai/mediaTaskProviders"), t = globalThis, n = () => t
12
12
  }, a = (e) => n().get(e), o = () => [...n().keys()].sort(), s = () => {
13
13
  n().clear();
14
14
  };
15
- //#endregion
16
15
  export { r as BUILTIN_MEDIA_PROVIDERS, s as clearMediaTaskProviders, a as mediaTaskProvider, i as registerMediaTaskProvider, o as registeredMediaTaskProviders };
@@ -1,5 +1,5 @@
1
1
  import { defaultSettingsMiddleware as e, extractReasoningMiddleware as t, simulateStreamingMiddleware as n, wrapLanguageModel as r } from "ai";
2
- //#region src/middleware.ts
2
+ // src/middleware.ts
3
3
  var i = [], a = (...e) => {
4
4
  let t = i;
5
5
  return i = e, t;
@@ -28,5 +28,4 @@ var i = [], a = (...e) => {
28
28
  }), e())
29
29
  };
30
30
  };
31
- //#endregion
32
31
  export { c as applyMiddleware, s as clearAiMiddleware, e as defaultSettingsMiddleware, t as extractReasoningMiddleware, o as getAiMiddleware, l as loggingMiddleware, a as setAiMiddleware, n as simulateStreamingMiddleware };
package/dist/observe.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { estimateCostUsd as e } from "./cost.js";
2
2
  import { Effect as t, Metric as n, Stream as r } from "effect";
3
- //#region src/observe.ts
3
+ // src/observe.ts
4
4
  var i = Array.from({ length: 16 }, (e, t) => .001 * 2 ** t), a = n.counter("voltro_ai_calls_total", { description: "Total AI provider calls (generate + stream)." }), o = n.counter("voltro_ai_call_errors_total", { description: "AI provider calls that errored." }), s = n.histogram("voltro_ai_call_duration_seconds", {
5
5
  boundaries: i,
6
6
  description: "AI provider call duration in seconds."
@@ -48,5 +48,4 @@ var i = Array.from({ length: 16 }, (e, t) => .001 * 2 ** t), a = n.counter("volt
48
48
  "ai.operation": e.operation
49
49
  } }));
50
50
  };
51
- //#endregion
52
51
  export { d as aiCallAttributes, h as observeStream, m as withAiCallSpan };
package/dist/prompts.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { Effect as e, Schema as t } from "effect";
2
2
  import { and as n, eq as r, generateId as i, id as a, integer as o, queryFor as s, registerRetention as c, retentionTtlMsFromEnv as l, table as u, text as d, timestamp as f } from "@voltro/database";
3
3
  import { createHash as p } from "node:crypto";
4
- //#region src/prompts.ts
4
+ // src/prompts.ts
5
5
  var m = (e) => `sha256:${p("sha256").update(e).digest("hex").slice(0, 16)}`, h = class extends t.TaggedError()("PromptRenderError", {
6
6
  promptId: t.String,
7
7
  missing: t.Array(t.String),
@@ -99,5 +99,4 @@ var m = (e) => `sha256:${p("sha256").update(e).digest("hex").slice(0, 16)}`, h =
99
99
  let e = (await t.query(s(S).where(r("digest", n)).descriptor))[0];
100
100
  return e === void 0 ? null : T(e);
101
101
  }), O = (t, n) => e.promise(async () => [...await t.query(s(S).where(r("promptId", n)).orderBy("revision", "desc").descriptor)].sort((e, t) => (Number(t.revision) || 0) - (Number(e.revision) || 0)).map(T));
102
- //#endregion
103
102
  export { C as DEFAULT_PROMPT_RETENTION_HOURS, x as PROMPTS_TABLE, h as PromptRenderError, y as definePrompt, b as isRenderedPrompt, m as promptDigest, D as promptVersionByDigest, v as promptVersionDigest, O as promptVersionsFor, S as promptsTable, E as recordPromptVersion };
package/dist/provider.js CHANGED
@@ -1,10 +1,11 @@
1
- import { applyMiddleware as e } from "./middleware.js";
2
- import { boundedGatewaySettings as t, gatewayImageModel as n, gatewayVideoModel as r, mediaResponseBudget as i } from "./gatewayMedia.js";
3
- import { anthropic as a, createAnthropic as o } from "@ai-sdk/anthropic";
4
- import { createOpenAI as s, openai as c } from "@ai-sdk/openai";
5
- import { createGateway as l, gateway as u } from "@ai-sdk/gateway";
6
- //#region src/provider.ts
7
- var d = {
1
+ import { aiSetting as e, isProductionEnv as t } from "./aiSettings.js";
2
+ import { applyMiddleware as n } from "./middleware.js";
3
+ import { boundedGatewaySettings as r, gatewayImageModel as i, gatewayVideoModel as a, mediaResponseBudget as o } from "./gatewayMedia.js";
4
+ import { anthropic as s, createAnthropic as c } from "@ai-sdk/anthropic";
5
+ import { createOpenAI as l, openai as u } from "@ai-sdk/openai";
6
+ import { createGateway as d, gateway as f } from "@ai-sdk/gateway";
7
+ // src/provider.ts
8
+ var p = {
8
9
  inputTokens: {
9
10
  total: 0,
10
11
  noCache: 0,
@@ -16,10 +17,10 @@ var d = {
16
17
  text: 0,
17
18
  reasoning: 0
18
19
  }
19
- }, f = (e) => ({
20
+ }, m = (e) => ({
20
21
  unified: e,
21
22
  raw: void 0
22
- }), p = class {
23
+ }), h = class {
23
24
  turns;
24
25
  cursor = 0;
25
26
  calls = [];
@@ -39,12 +40,12 @@ var d = {
39
40
  reset() {
40
41
  this.cursor = 0, this.calls.length = 0;
41
42
  }
42
- }, m = (e) => (e.toolCalls ?? []).map((e, t) => ({
43
+ }, g = (e) => (e.toolCalls ?? []).map((e, t) => ({
43
44
  type: "tool-call",
44
45
  toolCallId: `mock_tool_${t}`,
45
46
  toolName: e.name,
46
47
  input: JSON.stringify(e.input ?? {})
47
- })), h = (e) => (e.sources ?? []).map((e, t) => e.sourceType === "document" ? {
48
+ })), _ = (e) => (e.sources ?? []).map((e, t) => e.sourceType === "document" ? {
48
49
  type: "source",
49
50
  sourceType: "document",
50
51
  id: e.id ?? `mock_src_${t}`,
@@ -57,14 +58,14 @@ var d = {
57
58
  id: e.id ?? `mock_src_${t}`,
58
59
  url: e.url ?? "https://example.com",
59
60
  ...e.title === void 0 ? {} : { title: e.title }
60
- }), g = (e) => (e.files ?? []).map((e) => ({
61
+ }), v = (e) => (e.files ?? []).map((e) => ({
61
62
  type: "file",
62
63
  mediaType: e.mediaType,
63
64
  data: {
64
65
  type: "data",
65
66
  data: e.data
66
67
  }
67
- })), _ = (e) => [
68
+ })), y = (e) => [
68
69
  {
69
70
  type: "text-start",
70
71
  id: "0"
@@ -78,7 +79,7 @@ var d = {
78
79
  type: "text-end",
79
80
  id: "0"
80
81
  }
81
- ], v = (e) => e.length === 0 ? [] : [
82
+ ], b = (e) => e.length === 0 ? [] : [
82
83
  {
83
84
  type: "reasoning-start",
84
85
  id: "r0"
@@ -92,7 +93,7 @@ var d = {
92
93
  type: "reasoning-end",
93
94
  id: "r0"
94
95
  }
95
- ], y = (e, t, n, r) => ({
96
+ ], x = (e, t, n, r) => ({
96
97
  specificationVersion: "v4",
97
98
  provider: "mock",
98
99
  modelId: e,
@@ -109,16 +110,16 @@ var d = {
109
110
  toolName: e.name,
110
111
  input: JSON.stringify(e.input ?? {})
111
112
  })),
112
- finishReason: f("tool-calls"),
113
- usage: d,
113
+ finishReason: m("tool-calls"),
114
+ usage: p,
114
115
  warnings: []
115
116
  } : {
116
117
  content: [{
117
118
  type: "text",
118
119
  text: o?.text ?? t ?? `[mock(${e})] ${s}`
119
120
  }],
120
- finishReason: f("stop"),
121
- usage: d,
121
+ finishReason: m("stop"),
122
+ usage: p,
122
123
  warnings: [],
123
124
  ...r === void 0 ? {} : { providerMetadata: r }
124
125
  };
@@ -134,18 +135,18 @@ var d = {
134
135
  error: Error(i.error.message)
135
136
  }), s.push({
136
137
  type: "finish",
137
- finishReason: f("error"),
138
- usage: d
139
- })) : (s.push(...v(i?.reasoning ?? "")), o.length > 0 && s.push(..._(o)), s.push(...h(i ?? {})), s.push(...g(i ?? {})), s.push(...m(i ?? {})), s.push({
138
+ finishReason: m("error"),
139
+ usage: p
140
+ })) : (s.push(...b(i?.reasoning ?? "")), o.length > 0 && s.push(...y(o)), s.push(..._(i ?? {})), s.push(...v(i ?? {})), s.push(...g(i ?? {})), s.push({
140
141
  type: "finish",
141
- finishReason: f(a ? "tool-calls" : "stop"),
142
- usage: d
142
+ finishReason: m(a ? "tool-calls" : "stop"),
143
+ usage: p
143
144
  })), { stream: new ReadableStream({ start(e) {
144
145
  for (let t of s) e.enqueue(t);
145
146
  e.close();
146
147
  } }) };
147
148
  }
148
- }), b = "iVBORw0KGgo=", x = "SUQzBAAAAAAAAA==", S = "video/mp4", C = "mock transcript", w = (e, t) => ({
149
+ }), S = "iVBORw0KGgo=", C = "SUQzBAAAAAAAAA==", w = "video/mp4", T = "mock transcript", E = (e, t) => ({
149
150
  specificationVersion: "v4",
150
151
  provider: "mock",
151
152
  modelId: e,
@@ -164,7 +165,7 @@ var d = {
164
165
  totalTokens: 0
165
166
  }
166
167
  })
167
- }), T = (e, t, n) => ({
168
+ }), D = (e, t, n) => ({
168
169
  specificationVersion: "v4",
169
170
  provider: "mock",
170
171
  modelId: e,
@@ -177,7 +178,7 @@ var d = {
177
178
  },
178
179
  ...n === void 0 ? {} : { providerMetadata: n }
179
180
  })
180
- }), E = (e, t, n) => ({
181
+ }), O = (e, t, n) => ({
181
182
  specificationVersion: "v4",
182
183
  provider: "mock",
183
184
  modelId: e,
@@ -195,7 +196,7 @@ var d = {
195
196
  },
196
197
  ...n === void 0 ? {} : { providerMetadata: n }
197
198
  })
198
- }), D = (e, t, n) => ({
199
+ }), k = (e, t, n) => ({
199
200
  specificationVersion: "v4",
200
201
  provider: "mock",
201
202
  modelId: e,
@@ -210,94 +211,108 @@ var d = {
210
211
  },
211
212
  ...n === void 0 ? {} : { providerMetadata: n }
212
213
  })
213
- }), O = (e) => e.apiKey !== void 0 || e.baseURL !== void 0, k = (e) => ({
214
+ }), A = (e) => e.apiKey !== void 0 || e.baseURL !== void 0, j = (e) => ({
214
215
  ...e.apiKey === void 0 ? {} : { apiKey: e.apiKey },
215
216
  ...e.baseURL === void 0 ? {} : { baseURL: e.baseURL }
216
- }), A = (t, n) => {
217
+ }), M = (e, t) => {
217
218
  let r = (() => {
218
- switch (t.name) {
219
- case "mock": return y(t.model ?? "mock", t.mockText, t.script, t.providerMetadata);
220
- case "anthropic": return O(t) ? o(k(t))(t.model) : a(t.model);
221
- case "openai": return O(t) ? s(k(t))(t.model) : c(t.model);
222
- case "gateway": return O(t) ? l(k(t))(t.model) : u(t.model);
219
+ switch (e.name) {
220
+ case "mock": return x(e.model ?? "mock", e.mockText, e.script, e.providerMetadata);
221
+ case "anthropic": return A(e) ? c(j(e))(e.model) : s(e.model);
222
+ case "openai": return A(e) ? l(j(e))(e.model) : u(e.model);
223
+ case "gateway": return A(e) ? d(j(e))(e.model) : f(e.model);
223
224
  }
224
225
  })();
225
- return e(r, n);
226
- }, j = (e) => {
226
+ return n(r, t);
227
+ }, N = (e) => {
227
228
  switch (e.name) {
228
- case "mock": return w(e.model ?? "mock", e.mockMedia?.imageBase64 ?? b);
229
- case "openai": return O(e) ? s(k(e)).image(e.model) : c.image(e.model);
230
- case "gateway": return n(t(k(e), i(e.maxResponseBytes)), e.model);
229
+ case "mock": return E(e.model ?? "mock", e.mockMedia?.imageBase64 ?? S);
230
+ case "openai": return A(e) ? l(j(e)).image(e.model) : u.image(e.model);
231
+ case "gateway": return i(r(j(e), o(e.maxResponseBytes)), e.model);
231
232
  case "anthropic": throw Error("Provider 'anthropic' does not support image generation. Use 'openai' or 'gateway'.");
232
233
  }
233
- }, M = (e) => {
234
+ }, P = (e) => {
234
235
  switch (e.name) {
235
- case "mock": return T(e.model ?? "mock", e.mockMedia?.audioBase64 ?? x, e.providerMetadata);
236
- case "openai": return O(e) ? s(k(e)).speech(e.model) : c.speech(e.model);
237
- case "gateway": return l(t(k(e), i(e.maxResponseBytes))).speech(e.model);
236
+ case "mock": return D(e.model ?? "mock", e.mockMedia?.audioBase64 ?? C, e.providerMetadata);
237
+ case "openai": return A(e) ? l(j(e)).speech(e.model) : u.speech(e.model);
238
+ case "gateway": return d(r(j(e), o(e.maxResponseBytes))).speech(e.model);
238
239
  case "anthropic": throw Error("Provider 'anthropic' does not support speech generation. Use 'openai' or 'gateway'.");
239
240
  }
240
- }, N = (e) => {
241
+ }, F = (e) => {
241
242
  switch (e.name) {
242
- case "mock": return E(e.model ?? "mock", e.mockMedia?.transcript ?? C, e.providerMetadata);
243
- case "openai": return O(e) ? s(k(e)).transcription(e.model) : c.transcription(e.model);
244
- case "gateway": return l(t(k(e), i(e.maxResponseBytes))).transcription(e.model);
243
+ case "mock": return O(e.model ?? "mock", e.mockMedia?.transcript ?? T, e.providerMetadata);
244
+ case "openai": return A(e) ? l(j(e)).transcription(e.model) : u.transcription(e.model);
245
+ case "gateway": return d(r(j(e), o(e.maxResponseBytes))).transcription(e.model);
245
246
  case "anthropic": throw Error("Provider 'anthropic' does not support transcription. Use 'openai' or 'gateway'.");
246
247
  }
247
- }, P = (e) => {
248
+ }, I = (e) => {
248
249
  switch (e.name) {
249
250
  case "mock": {
250
251
  let t = e.mockMedia, n = t?.videoBase64 === void 0 ? {
251
252
  type: "url",
252
253
  url: t?.videoUrl ?? `https://mock.local/${e.model ?? "mock"}.mp4`,
253
- mediaType: S
254
+ mediaType: w
254
255
  } : {
255
256
  type: "base64",
256
257
  data: t.videoBase64,
257
- mediaType: S
258
+ mediaType: w
258
259
  };
259
- return D(e.model ?? "mock", n, e.providerMetadata);
260
+ return k(e.model ?? "mock", n, e.providerMetadata);
260
261
  }
261
- case "gateway": return r(t(k(e), i(e.maxResponseBytes)), e.model);
262
+ case "gateway": return a(r(j(e), o(e.maxResponseBytes)), e.model);
262
263
  case "openai": throw Error("Provider 'openai' does not support video generation. Use 'gateway'.");
263
264
  case "anthropic": throw Error("Provider 'anthropic' does not support video generation. Use 'gateway'.");
264
265
  }
265
- }, F = null, I = (e) => {
266
- let t = F;
267
- return F = e, t;
268
- }, L = () => F, R = (e) => {
266
+ }, L = null, R = (e) => {
267
+ let t = L;
268
+ return L = e, t;
269
+ }, z = () => L, B = (e) => {
269
270
  switch (e.toLowerCase()) {
270
271
  case "anthropic": return "ANTHROPIC_API_KEY";
271
272
  case "openai": return "OPENAI_API_KEY";
272
273
  case "gateway": return "AI_GATEWAY_API_KEY";
273
274
  default: return;
274
275
  }
275
- }, z = (e = process.env) => {
276
- if (F) return F;
277
- let t = (e.AI_PROVIDER ?? "mock").toLowerCase(), n = e.AI_MODEL;
278
- switch (t) {
276
+ }, V = (t = process.env) => {
277
+ if (L) return {
278
+ name: L.name,
279
+ chosen: !0
280
+ };
281
+ let n = e("AI_PROVIDER", t);
282
+ return n === void 0 ? {
283
+ name: "mock",
284
+ chosen: !1
285
+ } : {
286
+ name: n.toLowerCase(),
287
+ chosen: !0
288
+ };
289
+ }, H = (n = process.env) => {
290
+ if (L) return L;
291
+ let r = V(n);
292
+ if (!r.chosen && t(n)) throw Error("No AI provider is chosen in this production process: AI_PROVIDER is unset and this call passes no `provider` (or its agent declares no `model`), so it would answer from the mock provider. Set AI_PROVIDER (anthropic | openai | gateway) for every process that makes model calls, or declare it in `defineEnv` with a `default`, or pass `provider` to the call. Set AI_PROVIDER=mock to serve mock answers deliberately.");
293
+ let i = r.name, a = e("AI_MODEL", n);
294
+ switch (i) {
279
295
  case "mock": return {
280
296
  name: "mock",
281
- model: n ?? "mock"
297
+ model: a ?? "mock"
282
298
  };
283
299
  case "anthropic": return {
284
300
  name: "anthropic",
285
- model: n ?? "claude-opus-4-8"
301
+ model: a ?? "claude-opus-4-8"
286
302
  };
287
303
  case "openai": return {
288
304
  name: "openai",
289
- model: n ?? "gpt-5.5"
305
+ model: a ?? "gpt-5.5"
290
306
  };
291
307
  case "gateway": {
292
- let e = n === void 0 ? -1 : n.indexOf("/");
293
- if (n === void 0 || e <= 0 || e === n.length - 1) throw Error("AI_PROVIDER=gateway requires AI_MODEL set to a 'creator/model' id, e.g. 'openai/gpt-5.5'");
308
+ let e = a === void 0 ? -1 : a.indexOf("/");
309
+ if (a === void 0 || e <= 0 || e === a.length - 1) throw Error("AI_PROVIDER=gateway requires AI_MODEL set to a 'creator/model' id, e.g. 'openai/gpt-5.5'");
294
310
  return {
295
311
  name: "gateway",
296
- model: n
312
+ model: a
297
313
  };
298
314
  }
299
- default: throw Error(`Unknown AI_PROVIDER '${t}'. Expected one of: mock, anthropic, openai, gateway.`);
315
+ default: throw Error(`Unknown AI_PROVIDER '${i}'. Expected one of: mock, anthropic, openai, gateway.`);
300
316
  }
301
317
  };
302
- //#endregion
303
- export { p as MockScript, L as getProviderOverride, z as providerFromEnv, R as providerKeyEnvVar, j as resolveImageModel, A as resolveModel, M as resolveSpeechModel, N as resolveTranscriptionModel, P as resolveVideoModel, I as setProviderOverride };
318
+ export { h as MockScript, z as getProviderOverride, V as providerChoice, H as providerFromEnv, B as providerKeyEnvVar, N as resolveImageModel, M as resolveModel, P as resolveSpeechModel, F as resolveTranscriptionModel, I as resolveVideoModel, R as setProviderOverride };