@od-oneapp/ai-platform 0.1.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.
- package/README.md +235 -0
- package/dist/agents-base.d.mts +12 -0
- package/dist/agents-base.d.mts.map +1 -0
- package/dist/agents-base.mjs +20 -0
- package/dist/agents-base.mjs.map +1 -0
- package/dist/agents-control-flow.d.mts +115 -0
- package/dist/agents-control-flow.d.mts.map +1 -0
- package/dist/agents-control-flow.mjs +514 -0
- package/dist/agents-control-flow.mjs.map +1 -0
- package/dist/agents-coordinator.d.mts +11 -0
- package/dist/agents-coordinator.d.mts.map +1 -0
- package/dist/agents-coordinator.mjs +12 -0
- package/dist/agents-coordinator.mjs.map +1 -0
- package/dist/agents-experimental.d.mts +153 -0
- package/dist/agents-experimental.d.mts.map +1 -0
- package/dist/agents-experimental.mjs +580 -0
- package/dist/agents-experimental.mjs.map +1 -0
- package/dist/agents-fallback.d.mts +10 -0
- package/dist/agents-fallback.d.mts.map +1 -0
- package/dist/agents-fallback.mjs +15 -0
- package/dist/agents-fallback.mjs.map +1 -0
- package/dist/agents-multi-swarm.d.mts +9 -0
- package/dist/agents-multi-swarm.d.mts.map +1 -0
- package/dist/agents-multi-swarm.mjs +44 -0
- package/dist/agents-multi-swarm.mjs.map +1 -0
- package/dist/agents-multi.d.mts +10 -0
- package/dist/agents-multi.d.mts.map +1 -0
- package/dist/agents-multi.mjs +44 -0
- package/dist/agents-multi.mjs.map +1 -0
- package/dist/agents-observability.d.mts +161 -0
- package/dist/agents-observability.d.mts.map +1 -0
- package/dist/agents-observability.mjs +550 -0
- package/dist/agents-observability.mjs.map +1 -0
- package/dist/agents-patterns.d.mts +9 -0
- package/dist/agents-patterns.d.mts.map +1 -0
- package/dist/agents-patterns.mjs +18 -0
- package/dist/agents-patterns.mjs.map +1 -0
- package/dist/agents-persistence.d.mts +234 -0
- package/dist/agents-persistence.d.mts.map +1 -0
- package/dist/agents-persistence.mjs +447 -0
- package/dist/agents-persistence.mjs.map +1 -0
- package/dist/agents-triage.d.mts +11 -0
- package/dist/agents-triage.d.mts.map +1 -0
- package/dist/agents-triage.mjs +13 -0
- package/dist/agents-triage.mjs.map +1 -0
- package/dist/agents-workflows.d.mts +9 -0
- package/dist/agents-workflows.d.mts.map +1 -0
- package/dist/agents-workflows.mjs +9 -0
- package/dist/agents-workflows.mjs.map +1 -0
- package/dist/agents.d.mts +30 -0
- package/dist/agents.d.mts.map +1 -0
- package/dist/agents.mjs +50 -0
- package/dist/agents.mjs.map +1 -0
- package/dist/aggregation-8KJF1uzp.d.mts +276 -0
- package/dist/aggregation-8KJF1uzp.d.mts.map +1 -0
- package/dist/aggregation-BDop87kL.mjs +1180 -0
- package/dist/aggregation-BDop87kL.mjs.map +1 -0
- package/dist/ai-runtime-CDzQztTt.mjs +85 -0
- package/dist/ai-runtime-CDzQztTt.mjs.map +1 -0
- package/dist/ai-runtime-DIwOEc6g.d.mts +56 -0
- package/dist/ai-runtime-DIwOEc6g.d.mts.map +1 -0
- package/dist/ai-sdk-error-integration-D0GDqrM0.d.mts +553 -0
- package/dist/ai-sdk-error-integration-D0GDqrM0.d.mts.map +1 -0
- package/dist/approval-queue-BcDDQ4oQ.mjs +104 -0
- package/dist/approval-queue-BcDDQ4oQ.mjs.map +1 -0
- package/dist/approval-queue-CiKiFT9z.d.mts +21 -0
- package/dist/approval-queue-CiKiFT9z.d.mts.map +1 -0
- package/dist/audio-BzvN7r10.d.mts +79 -0
- package/dist/audio-BzvN7r10.d.mts.map +1 -0
- package/dist/audio-vBG_62ME.mjs +226 -0
- package/dist/audio-vBG_62ME.mjs.map +1 -0
- package/dist/audit-logger-Bb2JIcIk.d.mts +12 -0
- package/dist/audit-logger-Bb2JIcIk.d.mts.map +1 -0
- package/dist/audit-logger-CHIP8bRO.mjs +596 -0
- package/dist/audit-logger-CHIP8bRO.mjs.map +1 -0
- package/dist/auto-resume-BpUNbPtp.d.mts +160 -0
- package/dist/auto-resume-BpUNbPtp.d.mts.map +1 -0
- package/dist/auto-resume-BuFRNvAX.mjs +638 -0
- package/dist/auto-resume-BuFRNvAX.mjs.map +1 -0
- package/dist/budget-guard-C83KCH9V.d.mts +52 -0
- package/dist/budget-guard-C83KCH9V.d.mts.map +1 -0
- package/dist/budget-guard-d_b5rq4u.mjs +158 -0
- package/dist/budget-guard-d_b5rq4u.mjs.map +1 -0
- package/dist/budget-guard-gyhJS00s.mjs +234 -0
- package/dist/budget-guard-gyhJS00s.mjs.map +1 -0
- package/dist/buffer-BC8mvXHE.d.mts +98 -0
- package/dist/buffer-BC8mvXHE.d.mts.map +1 -0
- package/dist/buffer-CefJGbRy.mjs +289 -0
- package/dist/buffer-CefJGbRy.mjs.map +1 -0
- package/dist/caching-adapters.d.mts +5 -0
- package/dist/caching-adapters.mjs +3 -0
- package/dist/caching-strategies.d.mts +52 -0
- package/dist/caching-strategies.d.mts.map +1 -0
- package/dist/caching-strategies.mjs +703 -0
- package/dist/caching-strategies.mjs.map +1 -0
- package/dist/caching.d.mts +14 -0
- package/dist/caching.d.mts.map +1 -0
- package/dist/caching.mjs +15 -0
- package/dist/caching.mjs.map +1 -0
- package/dist/catalog.d.mts +19 -0
- package/dist/catalog.d.mts.map +1 -0
- package/dist/catalog.mjs +1114 -0
- package/dist/catalog.mjs.map +1 -0
- package/dist/chunk-CkzbjWQW.mjs +20 -0
- package/dist/circuit-breaker-DoKWPORd.mjs +262 -0
- package/dist/circuit-breaker-DoKWPORd.mjs.map +1 -0
- package/dist/circuit-breaker-Mey3E7tW.d.mts +64 -0
- package/dist/circuit-breaker-Mey3E7tW.d.mts.map +1 -0
- package/dist/citation-generator-C-9RpbHq.mjs +103 -0
- package/dist/citation-generator-C-9RpbHq.mjs.map +1 -0
- package/dist/citation-generator-CDSymDs_.d.mts +18 -0
- package/dist/citation-generator-CDSymDs_.d.mts.map +1 -0
- package/dist/client-CpacYDIE.mjs +882 -0
- package/dist/client-CpacYDIE.mjs.map +1 -0
- package/dist/client.d.mts +103 -0
- package/dist/client.d.mts.map +1 -0
- package/dist/client.mjs +470 -0
- package/dist/client.mjs.map +1 -0
- package/dist/compliance-approval-queue-DQGLojAm.mjs +172 -0
- package/dist/compliance-approval-queue-DQGLojAm.mjs.map +1 -0
- package/dist/compliance-approval-queue-IrMxFfSJ.d.mts +99 -0
- package/dist/compliance-approval-queue-IrMxFfSJ.d.mts.map +1 -0
- package/dist/compliance-wrapper-CrOMHhHN.mjs +528 -0
- package/dist/compliance-wrapper-CrOMHhHN.mjs.map +1 -0
- package/dist/conditions-DmQ6Y1Wt.mjs +179 -0
- package/dist/conditions-DmQ6Y1Wt.mjs.map +1 -0
- package/dist/conditions-zDrKfrc3.d.mts +42 -0
- package/dist/conditions-zDrKfrc3.d.mts.map +1 -0
- package/dist/console-BGMxxPZN.mjs +181 -0
- package/dist/console-BGMxxPZN.mjs.map +1 -0
- package/dist/console-DqEqZd4A.d.mts +76 -0
- package/dist/console-DqEqZd4A.d.mts.map +1 -0
- package/dist/controller-BOy3-xbC.mjs +501 -0
- package/dist/controller-BOy3-xbC.mjs.map +1 -0
- package/dist/controller-Y0NGosbJ.d.mts +104 -0
- package/dist/controller-Y0NGosbJ.d.mts.map +1 -0
- package/dist/coordinator-agent-BglqZLwo.d.mts +54 -0
- package/dist/coordinator-agent-BglqZLwo.d.mts.map +1 -0
- package/dist/coordinator-agent-WFWBRL-G.mjs +236 -0
- package/dist/coordinator-agent-WFWBRL-G.mjs.map +1 -0
- package/dist/crypto-8ABhc3TD.mjs +40 -0
- package/dist/crypto-8ABhc3TD.mjs.map +1 -0
- package/dist/environment-CSoJb0SW.mjs +255 -0
- package/dist/environment-CSoJb0SW.mjs.map +1 -0
- package/dist/error-handling-DNVkm6RY.mjs +1334 -0
- package/dist/error-handling-DNVkm6RY.mjs.map +1 -0
- package/dist/errors-CQ8tF4dP.mjs +985 -0
- package/dist/errors-CQ8tF4dP.mjs.map +1 -0
- package/dist/errors-CfYdVeum.d.mts +212 -0
- package/dist/errors-CfYdVeum.d.mts.map +1 -0
- package/dist/errors-Dtn-UeRi.mjs +61 -0
- package/dist/errors-Dtn-UeRi.mjs.map +1 -0
- package/dist/evaluator-Cs84qkr8.mjs +91 -0
- package/dist/evaluator-Cs84qkr8.mjs.map +1 -0
- package/dist/evaluator-optimizer-De67_mJC.mjs +1086 -0
- package/dist/evaluator-optimizer-De67_mJC.mjs.map +1 -0
- package/dist/evaluator-optimizer-pattern-B5939s2Z.mjs +367 -0
- package/dist/evaluator-optimizer-pattern-B5939s2Z.mjs.map +1 -0
- package/dist/evaluator-optimizer-pattern-D1AJrzBD.d.mts +72 -0
- package/dist/evaluator-optimizer-pattern-D1AJrzBD.d.mts.map +1 -0
- package/dist/factory-DP6VSl8C.mjs +307 -0
- package/dist/factory-DP6VSl8C.mjs.map +1 -0
- package/dist/generative-ui-catalog.d.mts +8 -0
- package/dist/generative-ui-catalog.d.mts.map +1 -0
- package/dist/generative-ui-catalog.mjs +679 -0
- package/dist/generative-ui-catalog.mjs.map +1 -0
- package/dist/generative-ui-registry.d.mts +195 -0
- package/dist/generative-ui-registry.d.mts.map +1 -0
- package/dist/generative-ui-registry.mjs +250 -0
- package/dist/generative-ui-registry.mjs.map +1 -0
- package/dist/generative-ui-stream.d.mts +23 -0
- package/dist/generative-ui-stream.d.mts.map +1 -0
- package/dist/generative-ui-stream.mjs +219 -0
- package/dist/generative-ui-stream.mjs.map +1 -0
- package/dist/generative-ui-types.d.mts +123 -0
- package/dist/generative-ui-types.d.mts.map +1 -0
- package/dist/generative-ui-types.mjs +1 -0
- package/dist/generative-ui.d.mts +13 -0
- package/dist/generative-ui.d.mts.map +1 -0
- package/dist/generative-ui.mjs +21 -0
- package/dist/generative-ui.mjs.map +1 -0
- package/dist/governance-audit.d.mts +3 -0
- package/dist/governance-audit.mjs +3 -0
- package/dist/governance-compliance.d.mts +5 -0
- package/dist/governance-compliance.mjs +4 -0
- package/dist/governance-policies.d.mts +4 -0
- package/dist/governance-policies.mjs +4 -0
- package/dist/governance-tenancy.d.mts +3 -0
- package/dist/governance-tenancy.mjs +3 -0
- package/dist/governance.d.mts +88 -0
- package/dist/governance.d.mts.map +1 -0
- package/dist/governance.mjs +432 -0
- package/dist/governance.mjs.map +1 -0
- package/dist/grounding-attribution.d.mts +63 -0
- package/dist/grounding-attribution.d.mts.map +1 -0
- package/dist/grounding-attribution.mjs +259 -0
- package/dist/grounding-attribution.mjs.map +1 -0
- package/dist/grounding-citation.d.mts +2 -0
- package/dist/grounding-citation.mjs +3 -0
- package/dist/grounding-context.d.mts +9 -0
- package/dist/grounding-context.d.mts.map +1 -0
- package/dist/grounding-context.mjs +19 -0
- package/dist/grounding-context.mjs.map +1 -0
- package/dist/grounding-embed.d.mts +102 -0
- package/dist/grounding-embed.d.mts.map +1 -0
- package/dist/grounding-embed.mjs +417 -0
- package/dist/grounding-embed.mjs.map +1 -0
- package/dist/grounding-hallucination.d.mts +44 -0
- package/dist/grounding-hallucination.d.mts.map +1 -0
- package/dist/grounding-hallucination.mjs +115 -0
- package/dist/grounding-hallucination.mjs.map +1 -0
- package/dist/grounding-proof-map.d.mts +9 -0
- package/dist/grounding-proof-map.d.mts.map +1 -0
- package/dist/grounding-proof-map.mjs +26 -0
- package/dist/grounding-proof-map.mjs.map +1 -0
- package/dist/grounding-rag.d.mts +10 -0
- package/dist/grounding-rag.d.mts.map +1 -0
- package/dist/grounding-rag.mjs +27 -0
- package/dist/grounding-rag.mjs.map +1 -0
- package/dist/grounding-verification.d.mts +48 -0
- package/dist/grounding-verification.d.mts.map +1 -0
- package/dist/grounding-verification.mjs +224 -0
- package/dist/grounding-verification.mjs.map +1 -0
- package/dist/grounding.d.mts +24 -0
- package/dist/grounding.d.mts.map +1 -0
- package/dist/grounding.mjs +77 -0
- package/dist/grounding.mjs.map +1 -0
- package/dist/hitl-active-learning.d.mts +41 -0
- package/dist/hitl-active-learning.d.mts.map +1 -0
- package/dist/hitl-active-learning.mjs +178 -0
- package/dist/hitl-active-learning.mjs.map +1 -0
- package/dist/hitl-annotation.d.mts +74 -0
- package/dist/hitl-annotation.d.mts.map +1 -0
- package/dist/hitl-annotation.mjs +170 -0
- package/dist/hitl-annotation.mjs.map +1 -0
- package/dist/hitl-approval.d.mts +2 -0
- package/dist/hitl-approval.mjs +3 -0
- package/dist/hitl-feedback.d.mts +59 -0
- package/dist/hitl-feedback.d.mts.map +1 -0
- package/dist/hitl-feedback.mjs +137 -0
- package/dist/hitl-feedback.mjs.map +1 -0
- package/dist/hitl-review.d.mts +2 -0
- package/dist/hitl-review.mjs +3 -0
- package/dist/hitl.d.mts +14 -0
- package/dist/hitl.d.mts.map +1 -0
- package/dist/hitl.mjs +22 -0
- package/dist/hitl.mjs.map +1 -0
- package/dist/index-B17HT-VL.d.mts +285 -0
- package/dist/index-B17HT-VL.d.mts.map +1 -0
- package/dist/index-BDwgsK9B.d.mts +101 -0
- package/dist/index-BDwgsK9B.d.mts.map +1 -0
- package/dist/index-BGgMn_Ev.d.mts +2615 -0
- package/dist/index-BGgMn_Ev.d.mts.map +1 -0
- package/dist/index-DOqe5r9G.d.mts +318 -0
- package/dist/index-DOqe5r9G.d.mts.map +1 -0
- package/dist/index-DotINT7o.d.mts +1004 -0
- package/dist/index-DotINT7o.d.mts.map +1 -0
- package/dist/index-URlW7aD1.d.mts +67 -0
- package/dist/index-URlW7aD1.d.mts.map +1 -0
- package/dist/index.d.mts +64 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +46 -0
- package/dist/index.mjs.map +1 -0
- package/dist/integrations-blob-storage.d.mts +25 -0
- package/dist/integrations-blob-storage.d.mts.map +1 -0
- package/dist/integrations-blob-storage.mjs +3 -0
- package/dist/integrations-notifications.d.mts +2 -0
- package/dist/integrations-notifications.mjs +3 -0
- package/dist/integrations-rate-limit.d.mts +27 -0
- package/dist/integrations-rate-limit.d.mts.map +1 -0
- package/dist/integrations-rate-limit.mjs +30 -0
- package/dist/integrations-rate-limit.mjs.map +1 -0
- package/dist/integrations-redis.d.mts +3 -0
- package/dist/integrations-redis.mjs +3 -0
- package/dist/integrations-stream.d.mts +14 -0
- package/dist/integrations-stream.d.mts.map +1 -0
- package/dist/integrations-stream.mjs +3 -0
- package/dist/integrations.d.mts +7 -0
- package/dist/integrations.mjs +7 -0
- package/dist/log-adapter-BLegSZtz.d.mts +16 -0
- package/dist/log-adapter-BLegSZtz.d.mts.map +1 -0
- package/dist/log-adapter-PPe_2Pwv.mjs +28 -0
- package/dist/log-adapter-PPe_2Pwv.mjs.map +1 -0
- package/dist/loop-BOYEtr2g.mjs +520 -0
- package/dist/loop-BOYEtr2g.mjs.map +1 -0
- package/dist/loop-C-tBBOqi.d.mts +219 -0
- package/dist/loop-C-tBBOqi.d.mts.map +1 -0
- package/dist/middleware-5wQ9bANW.mjs +306 -0
- package/dist/middleware-5wQ9bANW.mjs.map +1 -0
- package/dist/middleware-C1apSrj0.mjs +613 -0
- package/dist/middleware-C1apSrj0.mjs.map +1 -0
- package/dist/middleware-C7k0uItW.d.mts +9 -0
- package/dist/middleware-C7k0uItW.d.mts.map +1 -0
- package/dist/middleware-CZQCTHfl.mjs +366 -0
- package/dist/middleware-CZQCTHfl.mjs.map +1 -0
- package/dist/models.d.mts +11 -0
- package/dist/models.d.mts.map +1 -0
- package/dist/models.mjs +32 -0
- package/dist/models.mjs.map +1 -0
- package/dist/observability-analytics.d.mts +107 -0
- package/dist/observability-analytics.d.mts.map +1 -0
- package/dist/observability-analytics.mjs +409 -0
- package/dist/observability-analytics.mjs.map +1 -0
- package/dist/observability-cost.d.mts +10 -0
- package/dist/observability-cost.d.mts.map +1 -0
- package/dist/observability-cost.mjs +15 -0
- package/dist/observability-cost.mjs.map +1 -0
- package/dist/observability-telemetry.d.mts +111 -0
- package/dist/observability-telemetry.d.mts.map +1 -0
- package/dist/observability-telemetry.mjs +343 -0
- package/dist/observability-telemetry.mjs.map +1 -0
- package/dist/observability-tracing.d.mts +10 -0
- package/dist/observability-tracing.d.mts.map +1 -0
- package/dist/observability-tracing.mjs +17 -0
- package/dist/observability-tracing.mjs.map +1 -0
- package/dist/observability.d.mts +15 -0
- package/dist/observability.d.mts.map +1 -0
- package/dist/observability.mjs +17 -0
- package/dist/observability.mjs.map +1 -0
- package/dist/optimizer-DhXXpci6.mjs +97 -0
- package/dist/optimizer-DhXXpci6.mjs.map +1 -0
- package/dist/output-multimodal.d.mts +9 -0
- package/dist/output-multimodal.d.mts.map +1 -0
- package/dist/output-multimodal.mjs +18 -0
- package/dist/output-multimodal.mjs.map +1 -0
- package/dist/output.d.mts +11 -0
- package/dist/output.d.mts.map +1 -0
- package/dist/output.mjs +40 -0
- package/dist/output.mjs.map +1 -0
- package/dist/pii-filter-3AxmYSiu.d.mts +23 -0
- package/dist/pii-filter-3AxmYSiu.d.mts.map +1 -0
- package/dist/pipelines.d.mts +448 -0
- package/dist/pipelines.d.mts.map +1 -0
- package/dist/pipelines.mjs +1534 -0
- package/dist/pipelines.mjs.map +1 -0
- package/dist/prompt-injection-DQXchzsV.d.mts +8 -0
- package/dist/prompt-injection-DQXchzsV.d.mts.map +1 -0
- package/dist/prompt-injection-RpoLPwSa.mjs +52 -0
- package/dist/prompt-injection-RpoLPwSa.mjs.map +1 -0
- package/dist/prompts.d.mts +192 -0
- package/dist/prompts.d.mts.map +1 -0
- package/dist/prompts.mjs +732 -0
- package/dist/prompts.mjs.map +1 -0
- package/dist/protocol-DfBiEsnl.d.mts +112 -0
- package/dist/protocol-DfBiEsnl.d.mts.map +1 -0
- package/dist/quota-manager-0iPMkQWN.d.mts +62 -0
- package/dist/quota-manager-0iPMkQWN.d.mts.map +1 -0
- package/dist/quota-manager-D_N7FuQ2.mjs +180 -0
- package/dist/quota-manager-D_N7FuQ2.mjs.map +1 -0
- package/dist/redaction-utils-DcQwsiNh.mjs +438 -0
- package/dist/redaction-utils-DcQwsiNh.mjs.map +1 -0
- package/dist/redis-CpsSrF8K.mjs +102 -0
- package/dist/redis-CpsSrF8K.mjs.map +1 -0
- package/dist/redis-CwguYFGh.d.mts +33 -0
- package/dist/redis-CwguYFGh.d.mts.map +1 -0
- package/dist/registry-CsD3iTIx.mjs +190 -0
- package/dist/registry-CsD3iTIx.mjs.map +1 -0
- package/dist/registry-DVPWzkXR.d.mts +36 -0
- package/dist/registry-DVPWzkXR.d.mts.map +1 -0
- package/dist/reranking-BpWYhYzl.d.mts +72 -0
- package/dist/reranking-BpWYhYzl.d.mts.map +1 -0
- package/dist/reranking-Ck8aKZW7.mjs +331 -0
- package/dist/reranking-Ck8aKZW7.mjs.map +1 -0
- package/dist/resumable-adapter-CO1HtsgJ.mjs +21 -0
- package/dist/resumable-adapter-CO1HtsgJ.mjs.map +1 -0
- package/dist/review-trigger-DmAsiQlM.d.mts +24 -0
- package/dist/review-trigger-DmAsiQlM.d.mts.map +1 -0
- package/dist/review-trigger-DwXfpww9.mjs +112 -0
- package/dist/review-trigger-DwXfpww9.mjs.map +1 -0
- package/dist/safe-context-BynhkTKR.d.mts +54 -0
- package/dist/safe-context-BynhkTKR.d.mts.map +1 -0
- package/dist/safe-context-C5A3Wv3b.mjs +143 -0
- package/dist/safe-context-C5A3Wv3b.mjs.map +1 -0
- package/dist/schema-Bu2noOZ4.mjs +27 -0
- package/dist/schema-Bu2noOZ4.mjs.map +1 -0
- package/dist/schema-CwFvuCnA.mjs +97 -0
- package/dist/schema-CwFvuCnA.mjs.map +1 -0
- package/dist/schema-Wz-1-ro9.d.mts +37 -0
- package/dist/schema-Wz-1-ro9.d.mts.map +1 -0
- package/dist/schemas-CxQtxIga.mjs +62 -0
- package/dist/schemas-CxQtxIga.mjs.map +1 -0
- package/dist/schemas-DBOhxgW7.d.mts +32 -0
- package/dist/schemas-DBOhxgW7.d.mts.map +1 -0
- package/dist/schemas-Dp_OCqBt.d.mts +63 -0
- package/dist/schemas-Dp_OCqBt.d.mts.map +1 -0
- package/dist/schemas-SwCsnT0z.mjs +83 -0
- package/dist/schemas-SwCsnT0z.mjs.map +1 -0
- package/dist/sdk-errors.d.mts +2 -0
- package/dist/sdk-errors.mjs +3 -0
- package/dist/sdk-experimental.d.mts +59 -0
- package/dist/sdk-experimental.d.mts.map +1 -0
- package/dist/sdk-experimental.mjs +193 -0
- package/dist/sdk-experimental.mjs.map +1 -0
- package/dist/sdk-stop-conditions.d.mts +3 -0
- package/dist/sdk-stop-conditions.mjs +3 -0
- package/dist/sdk.d.mts +15 -0
- package/dist/sdk.d.mts.map +1 -0
- package/dist/sdk.mjs +50 -0
- package/dist/sdk.mjs.map +1 -0
- package/dist/security-guardrails.d.mts +3 -0
- package/dist/security-guardrails.mjs +3 -0
- package/dist/security-injection.d.mts +2 -0
- package/dist/security-injection.mjs +3 -0
- package/dist/security.d.mts +12 -0
- package/dist/security.d.mts.map +1 -0
- package/dist/security.mjs +18 -0
- package/dist/security.mjs.map +1 -0
- package/dist/server.d.mts +420 -0
- package/dist/server.d.mts.map +1 -0
- package/dist/server.mjs +2225 -0
- package/dist/server.mjs.map +1 -0
- package/dist/shared.d.mts +2 -0
- package/dist/shared.mjs +3 -0
- package/dist/streaming-control.d.mts +2 -0
- package/dist/streaming-control.mjs +4 -0
- package/dist/streaming-core.d.mts +4 -0
- package/dist/streaming-core.mjs +3 -0
- package/dist/streaming-infra-resilience.d.mts +120 -0
- package/dist/streaming-infra-resilience.d.mts.map +1 -0
- package/dist/streaming-infra-resilience.mjs +358 -0
- package/dist/streaming-infra-resilience.mjs.map +1 -0
- package/dist/streaming-infra-transport.d.mts +57 -0
- package/dist/streaming-infra-transport.d.mts.map +1 -0
- package/dist/streaming-infra-transport.mjs +488 -0
- package/dist/streaming-infra-transport.mjs.map +1 -0
- package/dist/streaming-infra.d.mts +5 -0
- package/dist/streaming-infra.mjs +5 -0
- package/dist/streaming.d.mts +17 -0
- package/dist/streaming.d.mts.map +1 -0
- package/dist/streaming.mjs +71 -0
- package/dist/streaming.mjs.map +1 -0
- package/dist/telemetry-2eKMojIb.mjs +1046 -0
- package/dist/telemetry-2eKMojIb.mjs.map +1 -0
- package/dist/telemetry-C2t03dwD.d.mts +59 -0
- package/dist/telemetry-C2t03dwD.d.mts.map +1 -0
- package/dist/tool-Btbththq.d.mts +253 -0
- package/dist/tool-Btbththq.d.mts.map +1 -0
- package/dist/tool-JSf8JXZ8.mjs +1150 -0
- package/dist/tool-JSf8JXZ8.mjs.map +1 -0
- package/dist/tool-safety-CZO8a4D4.d.mts +60 -0
- package/dist/tool-safety-CZO8a4D4.d.mts.map +1 -0
- package/dist/tool-safety-DXtYDXod.mjs +319 -0
- package/dist/tool-safety-DXtYDXod.mjs.map +1 -0
- package/dist/tools-BuS2Uv0q.mjs +1708 -0
- package/dist/tools-BuS2Uv0q.mjs.map +1 -0
- package/dist/tools-approval.d.mts +99 -0
- package/dist/tools-approval.d.mts.map +1 -0
- package/dist/tools-approval.mjs +395 -0
- package/dist/tools-approval.mjs.map +1 -0
- package/dist/tools-compliance.d.mts +67 -0
- package/dist/tools-compliance.d.mts.map +1 -0
- package/dist/tools-compliance.mjs +330 -0
- package/dist/tools-compliance.mjs.map +1 -0
- package/dist/tools-computer.d.mts +25 -0
- package/dist/tools-computer.d.mts.map +1 -0
- package/dist/tools-computer.mjs +64 -0
- package/dist/tools-computer.mjs.map +1 -0
- package/dist/tools-core.d.mts +3 -0
- package/dist/tools-core.mjs +3 -0
- package/dist/tools-mcp.d.mts +3 -0
- package/dist/tools-mcp.mjs +5 -0
- package/dist/tools-superpowers.d.mts +2 -0
- package/dist/tools-superpowers.mjs +3 -0
- package/dist/tools.d.mts +401 -0
- package/dist/tools.d.mts.map +1 -0
- package/dist/tools.mjs +1921 -0
- package/dist/tools.mjs.map +1 -0
- package/dist/transport-selector-D-Ib05X1.mjs +1936 -0
- package/dist/transport-selector-D-Ib05X1.mjs.map +1 -0
- package/dist/triage-agent-BEsXg5sw.d.mts +63 -0
- package/dist/triage-agent-BEsXg5sw.d.mts.map +1 -0
- package/dist/triage-agent-CBsfX-HW.mjs +167 -0
- package/dist/triage-agent-CBsfX-HW.mjs.map +1 -0
- package/dist/types-BPnq3GQo.d.mts +23 -0
- package/dist/types-BPnq3GQo.d.mts.map +1 -0
- package/dist/types-BjWgimpY.d.mts +16 -0
- package/dist/types-BjWgimpY.d.mts.map +1 -0
- package/dist/types-BxD-5btB.d.mts +41 -0
- package/dist/types-BxD-5btB.d.mts.map +1 -0
- package/dist/types-By-r93bE.d.mts +36 -0
- package/dist/types-By-r93bE.d.mts.map +1 -0
- package/dist/types-CLBWFRZN.d.mts +69 -0
- package/dist/types-CLBWFRZN.d.mts.map +1 -0
- package/dist/types-CQ0HFd0u.d.mts +62 -0
- package/dist/types-CQ0HFd0u.d.mts.map +1 -0
- package/dist/types-D3zJb59_.d.mts +47 -0
- package/dist/types-D3zJb59_.d.mts.map +1 -0
- package/dist/types-DJnugQX0.d.mts +80 -0
- package/dist/types-DJnugQX0.d.mts.map +1 -0
- package/dist/types-DbUfMCnT.d.mts +70 -0
- package/dist/types-DbUfMCnT.d.mts.map +1 -0
- package/dist/upstash-adapter-D96Caq2O.mjs +22 -0
- package/dist/upstash-adapter-D96Caq2O.mjs.map +1 -0
- package/dist/upstash-adapter-DD4433dx.d.mts +8 -0
- package/dist/upstash-adapter-DD4433dx.d.mts.map +1 -0
- package/dist/utils-BlYhcD6M.mjs +319 -0
- package/dist/utils-BlYhcD6M.mjs.map +1 -0
- package/dist/utils-DpJGOb3y.d.mts +120 -0
- package/dist/utils-DpJGOb3y.d.mts.map +1 -0
- package/dist/vercel-blob-adapter-CkOXLT2D.mjs +25 -0
- package/dist/vercel-blob-adapter-CkOXLT2D.mjs.map +1 -0
- package/dist/xai-CbV_dCnP.mjs +1600 -0
- package/dist/xai-CbV_dCnP.mjs.map +1 -0
- package/package.json +479 -0
- package/src/agents/base/factory.ts +382 -0
- package/src/agents/base/index.ts +8 -0
- package/src/agents/base/schemas.ts +117 -0
- package/src/agents/base/types.ts +192 -0
- package/src/agents/control-flow/index.ts +683 -0
- package/src/agents/coordinator/coordinator-agent.ts +381 -0
- package/src/agents/coordinator/index.ts +6 -0
- package/src/agents/default-agent.ts +211 -0
- package/src/agents/evaluator-optimizer/README.md +612 -0
- package/src/agents/evaluator-optimizer/evaluator-optimizer.example.ts +437 -0
- package/src/agents/evaluator-optimizer/evaluator.ts +282 -0
- package/src/agents/evaluator-optimizer/index.test.ts +416 -0
- package/src/agents/evaluator-optimizer/index.ts +519 -0
- package/src/agents/evaluator-optimizer/optimizer.ts +322 -0
- package/src/agents/evaluator-optimizer/schema.ts +302 -0
- package/src/agents/evaluator-optimizer/utils.ts +42 -0
- package/src/agents/experimental/index.ts +1095 -0
- package/src/agents/experimental/types.ts +212 -0
- package/src/agents/fallback/index.ts +18 -0
- package/src/agents/fallback/recovery/circuit-breaker.ts +166 -0
- package/src/agents/fallback/strategies/model-fallback.ts +192 -0
- package/src/agents/fallback/types.ts +87 -0
- package/src/agents/governance-agent.ts +446 -0
- package/src/agents/index.ts +79 -0
- package/src/agents/multi/coordination/index.ts +6 -0
- package/src/agents/multi/coordination/message-bus.ts +144 -0
- package/src/agents/multi/index.ts +6 -0
- package/src/agents/multi/state/index.ts +162 -0
- package/src/agents/multi/supervisor/index.ts +7 -0
- package/src/agents/multi/supervisor/supervisor.ts +254 -0
- package/src/agents/multi/swarm/aggregation.ts +466 -0
- package/src/agents/multi/swarm/communication.ts +388 -0
- package/src/agents/multi/swarm/coordination.ts +380 -0
- package/src/agents/multi/swarm/index.ts +73 -0
- package/src/agents/multi/swarm/swarm-executor.ts +479 -0
- package/src/agents/multi/types.ts +181 -0
- package/src/agents/observability/index.ts +914 -0
- package/src/agents/orchestrator.ts +218 -0
- package/src/agents/patterns/README.md +512 -0
- package/src/agents/patterns/evaluator-optimizer-pattern.example.ts +455 -0
- package/src/agents/patterns/evaluator-optimizer-pattern.ts +653 -0
- package/src/agents/patterns/index.ts +26 -0
- package/src/agents/persistence/index.ts +726 -0
- package/src/agents/tools/index.ts +291 -0
- package/src/agents/tools/mcp.ts +188 -0
- package/src/agents/triage/index.ts +6 -0
- package/src/agents/triage/triage-agent.ts +280 -0
- package/src/agents/workflows/index.ts +6 -0
- package/src/agents/workflows/interfaces.ts +36 -0
- package/src/agents/workflows/schema.ts +20 -0
- package/src/caching/adapters/index.ts +7 -0
- package/src/caching/adapters/memory.ts +77 -0
- package/src/caching/adapters/redis.ts +60 -0
- package/src/caching/index.ts +17 -0
- package/src/caching/middleware.ts +452 -0
- package/src/caching/strategies/index.ts +1008 -0
- package/src/caching/types.ts +47 -0
- package/src/catalog.ts +921 -0
- package/src/client/chat-usage.ts +53 -0
- package/src/client/hooks.ts +343 -0
- package/src/client/index.ts +36 -0
- package/src/client/message-utils.ts +29 -0
- package/src/client/use-generative-ui.ts +174 -0
- package/src/client/utils.ts +66 -0
- package/src/generative-ui/catalog.ts +653 -0
- package/src/generative-ui/index.ts +82 -0
- package/src/generative-ui/registry.ts +273 -0
- package/src/generative-ui/stream.ts +324 -0
- package/src/generative-ui/types.ts +376 -0
- package/src/governance/audit/audit-logger.ts +239 -0
- package/src/governance/audit/audit-schema.ts +82 -0
- package/src/governance/audit/index.ts +6 -0
- package/src/governance/compliance/abac/policy-engine.ts +175 -0
- package/src/governance/compliance/abac/types.ts +40 -0
- package/src/governance/compliance/approval/compliance-approval-queue.ts +217 -0
- package/src/governance/compliance/index.ts +16 -0
- package/src/governance/compliance/schemas.ts +68 -0
- package/src/governance/compliance/types.ts +143 -0
- package/src/governance/compliance/validators/phi-detector.ts +145 -0
- package/src/governance/compliance/validators/redaction-utils.ts +176 -0
- package/src/governance/compliance/validators/safe-harbor.ts +135 -0
- package/src/governance/entitlements/index.ts +585 -0
- package/src/governance/entitlements/middleware.ts +651 -0
- package/src/governance/entitlements/rate-limiter.ts +711 -0
- package/src/governance/index.ts +32 -0
- package/src/governance/policies/guardrails.ts +1121 -0
- package/src/governance/policies/index.ts +42 -0
- package/src/governance/policies/loop-controls.ts +136 -0
- package/src/governance/policies/telemetry.ts +63 -0
- package/src/governance/tenancy/index.ts +30 -0
- package/src/governance/tenancy/isolation/context.ts +92 -0
- package/src/governance/tenancy/isolation/index.ts +13 -0
- package/src/governance/tenancy/quotas/index.ts +11 -0
- package/src/governance/tenancy/quotas/quota-manager.ts +180 -0
- package/src/governance/tenancy/types.ts +66 -0
- package/src/governance/types.ts +16 -0
- package/src/governance/versioning/index.ts +573 -0
- package/src/grounding/attribution/index.ts +424 -0
- package/src/grounding/citation/citation-generator.ts +174 -0
- package/src/grounding/citation/index.ts +12 -0
- package/src/grounding/context/index.ts +32 -0
- package/src/grounding/context/safe-context.ts +116 -0
- package/src/grounding/context/types.ts +62 -0
- package/src/grounding/context-engineering/error-handling.ts +359 -0
- package/src/grounding/context-engineering/index.ts +23 -0
- package/src/grounding/context-engineering/memory.ts +559 -0
- package/src/grounding/context-engineering/tool-masking.ts +338 -0
- package/src/grounding/embed/index.ts +704 -0
- package/src/grounding/embed/reranking.ts +604 -0
- package/src/grounding/hallucination/index.ts +223 -0
- package/src/grounding/index.ts +82 -0
- package/src/grounding/proof-map/applyPatch.ts +172 -0
- package/src/grounding/proof-map/index.ts +41 -0
- package/src/grounding/proof-map/loop.ts +275 -0
- package/src/grounding/proof-map/schema.ts +217 -0
- package/src/grounding/rag/__tests__/pipeline.test.ts +274 -0
- package/src/grounding/rag/__tests__/tool.test.ts +202 -0
- package/src/grounding/rag/__tests__/trace.test.ts +229 -0
- package/src/grounding/rag/circuit-breaker.ts +152 -0
- package/src/grounding/rag/index.ts +64 -0
- package/src/grounding/rag/pipeline.ts +602 -0
- package/src/grounding/rag/tool.ts +281 -0
- package/src/grounding/rag/trace.ts +503 -0
- package/src/grounding/rag/types.ts +284 -0
- package/src/grounding/retrieval/in-memory-store.ts +107 -0
- package/src/grounding/sources/index.ts +943 -0
- package/src/grounding/tests/applyPatch.test.ts +194 -0
- package/src/grounding/tests/loop.test.ts +141 -0
- package/src/grounding/tests/schema.test.ts +160 -0
- package/src/grounding/types.ts +100 -0
- package/src/grounding/verification/index.ts +419 -0
- package/src/hitl/active-learning/index.ts +332 -0
- package/src/hitl/annotation/index.ts +362 -0
- package/src/hitl/approval/approval-queue.ts +132 -0
- package/src/hitl/approval/index.ts +5 -0
- package/src/hitl/feedback/index.ts +284 -0
- package/src/hitl/index.ts +69 -0
- package/src/hitl/review/index.ts +6 -0
- package/src/hitl/review/review-trigger.ts +162 -0
- package/src/hitl/types.ts +126 -0
- package/src/index.ts +125 -0
- package/src/integrations/blob-storage/index.ts +7 -0
- package/src/integrations/blob-storage/types.ts +28 -0
- package/src/integrations/blob-storage/vercel-blob-adapter.ts +35 -0
- package/src/integrations/index.ts +15 -0
- package/src/integrations/notifications/index.ts +7 -0
- package/src/integrations/notifications/log-adapter.ts +30 -0
- package/src/integrations/notifications/types.ts +27 -0
- package/src/integrations/rate-limit/index.ts +7 -0
- package/src/integrations/rate-limit/types.ts +26 -0
- package/src/integrations/rate-limit/upstash-adapter.ts +45 -0
- package/src/integrations/redis/index.ts +7 -0
- package/src/integrations/redis/types.ts +67 -0
- package/src/integrations/redis/upstash-adapter.ts +18 -0
- package/src/integrations/stream/index.ts +7 -0
- package/src/integrations/stream/resumable-adapter.ts +20 -0
- package/src/integrations/stream/types.ts +21 -0
- package/src/internal/__tests__/hallucination.test.ts +162 -0
- package/src/internal/__tests__/models.test.ts +104 -0
- package/src/internal/__tests__/sdk-errors.test.ts +201 -0
- package/src/internal/__tests__/stop-conditions.test.ts +210 -0
- package/src/internal/shared/ai-types.ts +942 -0
- package/src/internal/testing/evaluators.ts +575 -0
- package/src/internal/testing/index.ts +960 -0
- package/src/internal/ui/data-parts.ts +511 -0
- package/src/internal/ui/type-guards.ts +344 -0
- package/src/internal/ui-factories/__tests__/ui-factories.test.ts +548 -0
- package/src/internal/ui-factories/artifact-factory.ts +667 -0
- package/src/internal/ui-factories/index.ts +82 -0
- package/src/internal/ui-factories/shimmer-manager.ts +220 -0
- package/src/internal/ui-factories/status-helpers.ts +149 -0
- package/src/internal/ui-factories/tool-renderer.ts +167 -0
- package/src/internal/ui-factories/types.ts +235 -0
- package/src/models/capabilities.ts +88 -0
- package/src/models/index.ts +16 -0
- package/src/models/provider-factory.ts +229 -0
- package/src/models/providers/anthropic.ts +539 -0
- package/src/models/providers/google.ts +354 -0
- package/src/models/providers/index.ts +21 -0
- package/src/models/providers/openai.ts +346 -0
- package/src/models/providers/perplexity.ts +276 -0
- package/src/models/providers/shared.ts +90 -0
- package/src/models/providers/xai.ts +269 -0
- package/src/models/registry.ts +208 -0
- package/src/models/routing/index.ts +45 -0
- package/src/models/routing/intent-router.ts +143 -0
- package/src/models/routing/model-router.ts +300 -0
- package/src/models/routing/types.ts +106 -0
- package/src/models/types.ts +23 -0
- package/src/observability/analytics/index.ts +593 -0
- package/src/observability/cost/index.ts +16 -0
- package/src/observability/cost/tracking/budget-guard.ts +110 -0
- package/src/observability/cost/tracking/usage-tracker.ts +120 -0
- package/src/observability/cost/types.ts +85 -0
- package/src/observability/index.ts +17 -0
- package/src/observability/telemetry/index.ts +508 -0
- package/src/observability/tracing/index.ts +30 -0
- package/src/observability/tracing/otel/ai-instrumentation.ts +193 -0
- package/src/observability/tracing/otel/exporters/console.ts +58 -0
- package/src/observability/tracing/otel/exporters/index.ts +6 -0
- package/src/observability/tracing/provenance.ts +769 -0
- package/src/observability/tracing/types.ts +92 -0
- package/src/output/__tests__/output.test.ts +737 -0
- package/src/output/element-stream.ts +678 -0
- package/src/output/errors.ts +108 -0
- package/src/output/factories.ts +392 -0
- package/src/output/index.ts +98 -0
- package/src/output/multimodal/EXPORTS.md +306 -0
- package/src/output/multimodal/IMPLEMENTATION_SUMMARY.md +421 -0
- package/src/output/multimodal/README.md +349 -0
- package/src/output/multimodal/SETUP_GUIDE.md +472 -0
- package/src/output/multimodal/audio.ts +650 -0
- package/src/output/multimodal/image.ts +22 -0
- package/src/output/multimodal/index.ts +32 -0
- package/src/output/multimodal/providers.example.ts +375 -0
- package/src/output/validator.ts +495 -0
- package/src/pipelines/adapters/trace-storage-blob.ts +458 -0
- package/src/pipelines/adapters/trace-storage-memory.ts +319 -0
- package/src/pipelines/defaults.ts +109 -0
- package/src/pipelines/index.ts +24 -0
- package/src/pipelines/message-transforms.ts +107 -0
- package/src/pipelines/multi-step-wrapper.ts +433 -0
- package/src/pipelines/pipeline-presets.ts +339 -0
- package/src/pipelines/step-executor.ts +257 -0
- package/src/pipelines/storage-factory.ts +85 -0
- package/src/pipelines/trace-storage-interface.ts +216 -0
- package/src/pipelines/types.ts +255 -0
- package/src/pipelines/validation.ts +323 -0
- package/src/prompts/index.ts +271 -0
- package/src/prompts/model-variants.ts +410 -0
- package/src/prompts/templates.ts +327 -0
- package/src/sdk/errors/base.ts +296 -0
- package/src/sdk/errors/index.ts +31 -0
- package/src/sdk/errors/utils.ts +148 -0
- package/src/sdk/experimental/index.ts +286 -0
- package/src/sdk/index.ts +25 -0
- package/src/sdk/middleware/ai-middleware.ts +95 -0
- package/src/sdk/middleware/cache.ts +154 -0
- package/src/sdk/middleware/circuit-breaker.ts +388 -0
- package/src/sdk/middleware/compose.ts +81 -0
- package/src/sdk/middleware/deduplication.ts +307 -0
- package/src/sdk/middleware/index.ts +660 -0
- package/src/sdk/middleware/model-middleware.ts +200 -0
- package/src/sdk/stop-conditions/conditions.ts +209 -0
- package/src/sdk/stop-conditions/index.ts +35 -0
- package/src/sdk/stop-conditions/types.ts +59 -0
- package/src/security/guardrails/index.ts +6 -0
- package/src/security/guardrails/middleware.ts +465 -0
- package/src/security/guardrails/pii-filter.ts +396 -0
- package/src/security/index.ts +33 -0
- package/src/security/injection/index.ts +5 -0
- package/src/security/injection/prompt-injection.ts +64 -0
- package/src/security/types.ts +85 -0
- package/src/server/cache/crypto.ts +47 -0
- package/src/server/cache/performance.ts +79 -0
- package/src/server/error-handler.ts +93 -0
- package/src/server/errors.ts +73 -0
- package/src/server/helpers.ts +944 -0
- package/src/server/http.ts +156 -0
- package/src/server/index.ts +12 -0
- package/src/server/messages/__tests__/messages.test.ts +720 -0
- package/src/server/messages/converter.ts +245 -0
- package/src/server/messages/data-parts.ts +338 -0
- package/src/server/messages/extraction.ts +328 -0
- package/src/server/messages/index.ts +126 -0
- package/src/server/messages/types.ts +355 -0
- package/src/server/messages/window.ts +450 -0
- package/src/server/rate-limit/env.ts +8 -0
- package/src/server/rate-limit/rate-limit.ts +165 -0
- package/src/server/routes/HEALTH_CHECK.md +502 -0
- package/src/server/routes/IMPLEMENTATION_SUMMARY.md +432 -0
- package/src/server/routes/QUICK_START.md +327 -0
- package/src/server/routes/README.md +357 -0
- package/src/server/routes/__tests__/routes.test.ts +628 -0
- package/src/server/routes/agent-route.ts +224 -0
- package/src/server/routes/agent-routes.ts +191 -0
- package/src/server/routes/embed-config.ts +181 -0
- package/src/server/routes/health-check.example.ts +507 -0
- package/src/server/routes/health-check.test.ts +533 -0
- package/src/server/routes/health-check.ts +639 -0
- package/src/server/routes/health-check.types.ts +217 -0
- package/src/server/routes/index.ts +32 -0
- package/src/server/routes/types.ts +274 -0
- package/src/shared/__tests__/schemas.test.ts +317 -0
- package/src/shared/ai-runtime.ts +139 -0
- package/src/shared/ai-types.ts +133 -0
- package/src/shared/index.ts +30 -0
- package/src/shared/sdk-runtime.ts +198 -0
- package/src/shared/sdk-types.ts +301 -0
- package/src/streaming/control/__tests__/streaming-control.test.ts +708 -0
- package/src/streaming/control/budget-guard.ts +264 -0
- package/src/streaming/control/controller.ts +255 -0
- package/src/streaming/control/index.ts +105 -0
- package/src/streaming/control/smoothing.ts +201 -0
- package/src/streaming/control/step-limit.ts +215 -0
- package/src/streaming/control/types.ts +234 -0
- package/src/streaming/core/auto-resume.ts +276 -0
- package/src/streaming/core/index.ts +85 -0
- package/src/streaming/core/multi-step.ts +471 -0
- package/src/streaming/core/protocol.ts +194 -0
- package/src/streaming/core/types.ts +182 -0
- package/src/streaming/index.ts +97 -0
- package/src/streaming/infra/backpressure/buffer.ts +210 -0
- package/src/streaming/infra/backpressure/index.ts +6 -0
- package/src/streaming/infra/index.ts +75 -0
- package/src/streaming/infra/multiplexing/index.ts +311 -0
- package/src/streaming/infra/resilience/index.ts +684 -0
- package/src/streaming/infra/transform/index.ts +15 -0
- package/src/streaming/infra/transform/stream-transforms.ts +166 -0
- package/src/streaming/infra/transport/index.ts +774 -0
- package/src/streaming/infra/types.ts +118 -0
- package/src/streaming/infra-extra/types.ts +118 -0
- package/src/tools/advanced/caching.ts +299 -0
- package/src/tools/advanced/generator.ts +267 -0
- package/src/tools/advanced/hitl.ts +251 -0
- package/src/tools/advanced/index.ts +9 -0
- package/src/tools/advanced/llm-tool.ts +208 -0
- package/src/tools/approval/FILES.md +449 -0
- package/src/tools/approval/IMPLEMENTATION_SUMMARY.md +567 -0
- package/src/tools/approval/QUICK_START.md +362 -0
- package/src/tools/approval/README.md +514 -0
- package/src/tools/approval/advanced-approval-queue.ts +7 -0
- package/src/tools/approval/approval.example.ts +571 -0
- package/src/tools/approval/in-memory-queue.ts +405 -0
- package/src/tools/approval/index.ts +737 -0
- package/src/tools/approval/middleware.ts +590 -0
- package/src/tools/approval/queue-factory.ts +162 -0
- package/src/tools/approval/redis-queue.ts +327 -0
- package/src/tools/approval/testing.ts +493 -0
- package/src/tools/approval/types.ts +221 -0
- package/src/tools/approval/with-approval.ts +366 -0
- package/src/tools/artifacts/artifact-tools.ts +273 -0
- package/src/tools/artifacts/index.ts +6 -0
- package/src/tools/compliance/compliance-wrapper.ts +789 -0
- package/src/tools/compliance/create-compliant-stream.ts +226 -0
- package/src/tools/compliance/index.ts +8 -0
- package/src/tools/compliance/phi-redaction.ts +406 -0
- package/src/tools/compliance/tool-wrapper.ts +306 -0
- package/src/tools/computer/index.ts +99 -0
- package/src/tools/computer/types.ts +41 -0
- package/src/tools/core/abort.ts +202 -0
- package/src/tools/core/factory.ts +197 -0
- package/src/tools/core/index.ts +8 -0
- package/src/tools/core/tool-safety.ts +112 -0
- package/src/tools/generic/index.ts +9 -0
- package/src/tools/generic/json-schema-tool.ts +301 -0
- package/src/tools/generic/tiptap-context.ts +619 -0
- package/src/tools/generic/web-search-tool.ts +82 -0
- package/src/tools/generic/web-search.ts +142 -0
- package/src/tools/index.ts +36 -0
- package/src/tools/mcp/ai-sdk-error-integration.ts +401 -0
- package/src/tools/mcp/client.ts +988 -0
- package/src/tools/mcp/connection-manager.ts +380 -0
- package/src/tools/mcp/connection-pool.ts +408 -0
- package/src/tools/mcp/edge-runtime.ts +318 -0
- package/src/tools/mcp/environment.ts +310 -0
- package/src/tools/mcp/index.ts +20 -0
- package/src/tools/mcp/next-pattern.ts +401 -0
- package/src/tools/mcp/stream-lifecycle-integration.ts +617 -0
- package/src/tools/mcp/tool-cache.ts +359 -0
- package/src/tools/mcp/transport-selector.ts +492 -0
- package/src/tools/mcp/transports.ts +99 -0
- package/src/tools/simple-factory.ts +55 -0
- package/src/tools/superpowers/index.ts +122 -0
- package/src/tools/superpowers/prompts/index.ts +533 -0
- package/src/tools/superpowers/schemas/index.ts +701 -0
- package/src/tools/superpowers/tools/index.ts +721 -0
- package/src/tools/validation-wrapper.ts +97 -0
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Type definitions for the Experimental Agent module.
|
|
3
|
+
*
|
|
4
|
+
* SDK-aligned types for agent configuration, messages, tool definitions,
|
|
5
|
+
* and execution results. All SDK types are re-exported from the canonical
|
|
6
|
+
* shared module to maintain a single source of truth.
|
|
7
|
+
*
|
|
8
|
+
* @module agents/experimental/types
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import type {
|
|
12
|
+
ModelRef,
|
|
13
|
+
TokenUsage,
|
|
14
|
+
SDKToolChoice,
|
|
15
|
+
SDKTextPart,
|
|
16
|
+
SDKFilePart,
|
|
17
|
+
SDKToolCallPart,
|
|
18
|
+
SDKToolResultPart,
|
|
19
|
+
SDKToolApprovalResponse,
|
|
20
|
+
SDKToolSet,
|
|
21
|
+
MessageRole,
|
|
22
|
+
CoreMessageRole,
|
|
23
|
+
StepFinishReason,
|
|
24
|
+
AgentFinishReason,
|
|
25
|
+
} from '../../shared';
|
|
26
|
+
import type { z } from 'zod';
|
|
27
|
+
|
|
28
|
+
// -----------------------------------------------------------------------------
|
|
29
|
+
// Types (SDK-Aligned)
|
|
30
|
+
// -----------------------------------------------------------------------------
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Model reference - LanguageModel instance from AI SDK.
|
|
34
|
+
* Re-exported from ai-types for convenience.
|
|
35
|
+
*/
|
|
36
|
+
export type { ModelRef };
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Tool choice options.
|
|
40
|
+
* Aligned with AI SDK v6's ToolChoice type.
|
|
41
|
+
* @see SDKToolChoice for the SDK's native type
|
|
42
|
+
*/
|
|
43
|
+
export type ToolChoice = SDKToolChoice<SDKToolSet>;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Token usage tracking.
|
|
47
|
+
* Re-exported from ai-types for convenience.
|
|
48
|
+
* @see TokenUsage in ai-types.ts
|
|
49
|
+
*/
|
|
50
|
+
export type { TokenUsage };
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Text part - SDK-aligned type for text content in messages.
|
|
54
|
+
*/
|
|
55
|
+
export type TextPart = SDKTextPart;
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Tool call part - SDK-aligned type for tool invocations.
|
|
59
|
+
*/
|
|
60
|
+
export type ToolCallPart = SDKToolCallPart;
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Tool result part - SDK-aligned type for tool execution results.
|
|
64
|
+
*/
|
|
65
|
+
export type ToolResultPart = SDKToolResultPart;
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Message part types union.
|
|
69
|
+
* Directly uses AI SDK v6 part types for full compatibility.
|
|
70
|
+
*/
|
|
71
|
+
export type MessagePart =
|
|
72
|
+
| TextPart
|
|
73
|
+
| SDKFilePart
|
|
74
|
+
| ToolCallPart
|
|
75
|
+
| ToolResultPart
|
|
76
|
+
| SDKToolApprovalResponse;
|
|
77
|
+
|
|
78
|
+
export type JsonValue =
|
|
79
|
+
| string
|
|
80
|
+
| number
|
|
81
|
+
| boolean
|
|
82
|
+
| null
|
|
83
|
+
| { [key: string]: JsonValue }
|
|
84
|
+
| JsonValue[];
|
|
85
|
+
|
|
86
|
+
export type AssistantPart = Exclude<MessagePart, SDKToolApprovalResponse>;
|
|
87
|
+
|
|
88
|
+
/** Tool definition */
|
|
89
|
+
export interface ToolDefinition<TInput = unknown, TOutput = unknown> {
|
|
90
|
+
readonly description: string;
|
|
91
|
+
readonly inputSchema: z.ZodSchema<TInput>;
|
|
92
|
+
readonly execute: (
|
|
93
|
+
input: TInput,
|
|
94
|
+
context: ToolExecutionContext,
|
|
95
|
+
) => Promise<TOutput> | AsyncIterable<TOutput>;
|
|
96
|
+
readonly strict?: boolean;
|
|
97
|
+
readonly inputExamples?: Array<{ input: TInput }>;
|
|
98
|
+
readonly needsApproval?: boolean | ((input: TInput) => Promise<boolean>);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/** Tool execution context */
|
|
102
|
+
export interface ToolExecutionContext {
|
|
103
|
+
readonly toolCallId: string;
|
|
104
|
+
readonly messages: AgentMessage[];
|
|
105
|
+
readonly abortSignal?: AbortSignal;
|
|
106
|
+
readonly context?: Record<string, unknown>;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Agent message (SDK-aligned).
|
|
111
|
+
* Uses SDK message part types for content and MessageRole type.
|
|
112
|
+
*/
|
|
113
|
+
export interface AgentMessage {
|
|
114
|
+
readonly id: string;
|
|
115
|
+
readonly role: MessageRole;
|
|
116
|
+
readonly content: string | MessagePart[];
|
|
117
|
+
readonly createdAt?: Date;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Step result from agent execution.
|
|
122
|
+
* Uses SDK-aligned StepFinishReason type.
|
|
123
|
+
*/
|
|
124
|
+
export interface AgentStepResult {
|
|
125
|
+
readonly stepNumber: number;
|
|
126
|
+
readonly message: AgentMessage;
|
|
127
|
+
readonly toolCalls?: Array<{
|
|
128
|
+
toolName: string;
|
|
129
|
+
toolCallId: string;
|
|
130
|
+
input: unknown;
|
|
131
|
+
output: ToolResultPart['output'];
|
|
132
|
+
duration?: number;
|
|
133
|
+
}>;
|
|
134
|
+
readonly usage?: TokenUsage;
|
|
135
|
+
readonly finishReason?: StepFinishReason;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/** Base agent configuration for experimental agent */
|
|
139
|
+
export interface ExperimentalAgentBaseConfig<
|
|
140
|
+
TTools extends Record<string, ToolDefinition> = Record<string, ToolDefinition>,
|
|
141
|
+
> {
|
|
142
|
+
/** Primary model for agent */
|
|
143
|
+
readonly model: ModelRef;
|
|
144
|
+
/** System prompt */
|
|
145
|
+
readonly system?: string;
|
|
146
|
+
/** Available tools */
|
|
147
|
+
readonly tools?: TTools;
|
|
148
|
+
/** Default tool choice behavior */
|
|
149
|
+
readonly toolChoice?: ToolChoice;
|
|
150
|
+
/** Maximum generation steps (default: 10) */
|
|
151
|
+
readonly maxSteps?: number;
|
|
152
|
+
/** Custom context passed to tools */
|
|
153
|
+
readonly context?: Record<string, unknown>;
|
|
154
|
+
/** Abort signal for cancellation */
|
|
155
|
+
readonly abortSignal?: AbortSignal;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/** PrepareStep hook input */
|
|
159
|
+
export interface PrepareStepInput {
|
|
160
|
+
readonly stepNumber: number;
|
|
161
|
+
readonly messages: AgentMessage[];
|
|
162
|
+
readonly usage?: TokenUsage[];
|
|
163
|
+
readonly toolHistory?: Array<{ toolName: string; output: unknown }>;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/** PrepareStep hook output */
|
|
167
|
+
export interface PrepareStepOutput {
|
|
168
|
+
/** Override model for this step */
|
|
169
|
+
readonly model?: ModelRef;
|
|
170
|
+
/** Trimmed/modified messages */
|
|
171
|
+
readonly messages?: AgentMessage[];
|
|
172
|
+
/** Override tool choice for this step */
|
|
173
|
+
readonly toolChoice?: ToolChoice;
|
|
174
|
+
/** Active tools (subset of available tools) */
|
|
175
|
+
readonly activeTools?: string[];
|
|
176
|
+
/** Additional system prompt */
|
|
177
|
+
readonly appendSystem?: string;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/** Agent with prepareStep hook */
|
|
181
|
+
export interface ExperimentalAgentConfig<
|
|
182
|
+
TTools extends Record<string, ToolDefinition> = Record<string, ToolDefinition>,
|
|
183
|
+
> extends ExperimentalAgentBaseConfig<TTools> {
|
|
184
|
+
/** Hook called before each generation step */
|
|
185
|
+
readonly prepareStep?: (
|
|
186
|
+
input: PrepareStepInput,
|
|
187
|
+
) => Promise<PrepareStepOutput> | PrepareStepOutput;
|
|
188
|
+
/** Callback after each step completes */
|
|
189
|
+
readonly onStepComplete?: (result: AgentStepResult) => Promise<void> | void;
|
|
190
|
+
/** Callback when tool needs approval */
|
|
191
|
+
readonly onToolApproval?: (
|
|
192
|
+
toolName: string,
|
|
193
|
+
input: unknown,
|
|
194
|
+
) => Promise<{ approved: boolean; reason?: string }>;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* Agent execution result.
|
|
199
|
+
* Uses SDK-aligned AgentFinishReason type.
|
|
200
|
+
*/
|
|
201
|
+
export interface AgentResult {
|
|
202
|
+
readonly text: string;
|
|
203
|
+
readonly steps: AgentStepResult[];
|
|
204
|
+
readonly usage: TokenUsage;
|
|
205
|
+
readonly finishReason: AgentFinishReason;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
// -----------------------------------------------------------------------------
|
|
209
|
+
// Re-exports
|
|
210
|
+
// -----------------------------------------------------------------------------
|
|
211
|
+
|
|
212
|
+
export type { MessageRole, CoreMessageRole, StepFinishReason, AgentFinishReason };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fallback and recovery module
|
|
3
|
+
*
|
|
4
|
+
* Provides model fallback strategies, circuit breakers,
|
|
5
|
+
* and resilience patterns for AI applications.
|
|
6
|
+
*
|
|
7
|
+
* @module @od-oneapp/ai-platform/fallback
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
// Types
|
|
11
|
+
export type { FallbackConfig, FallbackResult, CircuitState, CircuitBreakerConfig } from './types';
|
|
12
|
+
export { AllModelsFailedError, CircuitOpenError } from './types';
|
|
13
|
+
|
|
14
|
+
// Strategies
|
|
15
|
+
export { executeWithFallback, createFallbackMiddleware } from './strategies/model-fallback';
|
|
16
|
+
|
|
17
|
+
// Recovery
|
|
18
|
+
export { CircuitBreaker } from './recovery/circuit-breaker';
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Circuit breaker for model reliability
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import { CircuitOpenError } from '../types';
|
|
6
|
+
|
|
7
|
+
import type { Model } from '../../../models/registry';
|
|
8
|
+
import type { CircuitBreakerConfig, CircuitState } from '../types';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Circuit state for a single model
|
|
12
|
+
*/
|
|
13
|
+
interface CircuitModelState {
|
|
14
|
+
state: CircuitState;
|
|
15
|
+
failures: number;
|
|
16
|
+
successes: number;
|
|
17
|
+
lastFailure: Date | null;
|
|
18
|
+
nextRetry: Date | null;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Circuit breaker for model reliability
|
|
23
|
+
*
|
|
24
|
+
* Prevents cascading failures by temporarily blocking
|
|
25
|
+
* calls to failing models.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```ts
|
|
29
|
+
* const breaker = new CircuitBreaker({
|
|
30
|
+
* failureThreshold: 5,
|
|
31
|
+
* resetTimeout: 30000, // 30 seconds
|
|
32
|
+
* });
|
|
33
|
+
*
|
|
34
|
+
* try {
|
|
35
|
+
* breaker.checkCircuit(Model.SONNET);
|
|
36
|
+
* const result = await generateText({ model, prompt });
|
|
37
|
+
* breaker.recordSuccess(Model.SONNET);
|
|
38
|
+
* } catch (error) {
|
|
39
|
+
* breaker.recordFailure(Model.SONNET);
|
|
40
|
+
* throw error;
|
|
41
|
+
* }
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export class CircuitBreaker {
|
|
45
|
+
private circuits = new Map<Model, CircuitModelState>();
|
|
46
|
+
private config: Required<CircuitBreakerConfig>;
|
|
47
|
+
|
|
48
|
+
constructor(config: CircuitBreakerConfig) {
|
|
49
|
+
this.config = {
|
|
50
|
+
failureThreshold: config.failureThreshold,
|
|
51
|
+
resetTimeout: config.resetTimeout,
|
|
52
|
+
successThreshold: config.successThreshold ?? 2,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Get or create circuit state for a model
|
|
58
|
+
*/
|
|
59
|
+
private getCircuit(model: Model): CircuitModelState {
|
|
60
|
+
const existing = this.circuits.get(model);
|
|
61
|
+
if (existing) {
|
|
62
|
+
return existing;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
const created: CircuitModelState = {
|
|
66
|
+
state: 'closed',
|
|
67
|
+
failures: 0,
|
|
68
|
+
successes: 0,
|
|
69
|
+
lastFailure: null,
|
|
70
|
+
nextRetry: null,
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
this.circuits.set(model, created);
|
|
74
|
+
return created;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Check if circuit allows request
|
|
79
|
+
* @throws CircuitOpenError if circuit is open
|
|
80
|
+
*/
|
|
81
|
+
checkCircuit(model: Model): void {
|
|
82
|
+
const circuit = this.getCircuit(model);
|
|
83
|
+
|
|
84
|
+
if (circuit.state === 'closed') {
|
|
85
|
+
return; // Allow request
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
if (circuit.state === 'open') {
|
|
89
|
+
// Check if we should transition to half-open
|
|
90
|
+
if (circuit.nextRetry && new Date() >= circuit.nextRetry) {
|
|
91
|
+
circuit.state = 'half-open';
|
|
92
|
+
circuit.successes = 0;
|
|
93
|
+
return; // Allow test request
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
throw new CircuitOpenError(
|
|
97
|
+
model,
|
|
98
|
+
circuit.nextRetry ?? new Date(Date.now() + this.config.resetTimeout),
|
|
99
|
+
);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// half-open: allow request
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Record a successful request
|
|
107
|
+
*/
|
|
108
|
+
recordSuccess(model: Model): void {
|
|
109
|
+
const circuit = this.getCircuit(model);
|
|
110
|
+
|
|
111
|
+
if (circuit.state === 'half-open') {
|
|
112
|
+
circuit.successes++;
|
|
113
|
+
|
|
114
|
+
if (circuit.successes >= this.config.successThreshold) {
|
|
115
|
+
// Close the circuit
|
|
116
|
+
circuit.state = 'closed';
|
|
117
|
+
circuit.failures = 0;
|
|
118
|
+
circuit.successes = 0;
|
|
119
|
+
circuit.nextRetry = null;
|
|
120
|
+
}
|
|
121
|
+
} else if (circuit.state === 'closed') {
|
|
122
|
+
// Reset failure count on success
|
|
123
|
+
circuit.failures = 0;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Record a failed request
|
|
129
|
+
*/
|
|
130
|
+
recordFailure(model: Model): void {
|
|
131
|
+
const circuit = this.getCircuit(model);
|
|
132
|
+
circuit.failures++;
|
|
133
|
+
circuit.lastFailure = new Date();
|
|
134
|
+
|
|
135
|
+
if (circuit.state === 'half-open') {
|
|
136
|
+
// Failed during half-open, re-open circuit
|
|
137
|
+
circuit.state = 'open';
|
|
138
|
+
circuit.nextRetry = new Date(Date.now() + this.config.resetTimeout);
|
|
139
|
+
} else if (circuit.state === 'closed' && circuit.failures >= this.config.failureThreshold) {
|
|
140
|
+
// Threshold reached, open circuit
|
|
141
|
+
circuit.state = 'open';
|
|
142
|
+
circuit.nextRetry = new Date(Date.now() + this.config.resetTimeout);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Get current circuit state
|
|
148
|
+
*/
|
|
149
|
+
getState(model: Model): CircuitState {
|
|
150
|
+
return this.getCircuit(model).state;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Manually reset a circuit
|
|
155
|
+
*/
|
|
156
|
+
reset(model: Model): void {
|
|
157
|
+
this.circuits.delete(model);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Reset all circuits
|
|
162
|
+
*/
|
|
163
|
+
resetAll(): void {
|
|
164
|
+
this.circuits.clear();
|
|
165
|
+
}
|
|
166
|
+
}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model fallback strategy
|
|
3
|
+
* Automatically falls back to alternative models on failure
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { createLanguageModel } from '../../../models';
|
|
7
|
+
import { AllModelsFailedError } from '../types';
|
|
8
|
+
|
|
9
|
+
import type { WrapGenerateArgs, WrapStreamArgs } from '../../../sdk/middleware/model-middleware';
|
|
10
|
+
import type { SDKLanguageModel , SDKLanguageModelV3, SDKLanguageModelV3Middleware } from '../../../shared';
|
|
11
|
+
import type { FallbackConfig, FallbackResult } from '../types';
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Sleep utility
|
|
16
|
+
*/
|
|
17
|
+
function sleep(ms: number): Promise<void> {
|
|
18
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Execute with model fallback
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```ts
|
|
26
|
+
* const result = await executeWithFallback(
|
|
27
|
+
* {
|
|
28
|
+
* primary: Model.SONNET,
|
|
29
|
+
* fallbacks: [Model.HAIKU, Model.GPT_4O_MINI],
|
|
30
|
+
* maxRetries: 2,
|
|
31
|
+
* },
|
|
32
|
+
* async (model) => {
|
|
33
|
+
* return generateText({ model, prompt: "Hello" });
|
|
34
|
+
* }
|
|
35
|
+
* );
|
|
36
|
+
*
|
|
37
|
+
* console.log(`Succeeded with ${result.model} after ${result.attempts} attempts`);
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
export async function executeWithFallback<T>(
|
|
41
|
+
config: FallbackConfig,
|
|
42
|
+
execute: (model: SDKLanguageModel) => Promise<T>,
|
|
43
|
+
): Promise<FallbackResult<T>> {
|
|
44
|
+
const {
|
|
45
|
+
primary,
|
|
46
|
+
fallbacks,
|
|
47
|
+
maxRetries = 3,
|
|
48
|
+
retryDelay = 1000,
|
|
49
|
+
exponentialBackoff = true,
|
|
50
|
+
} = config;
|
|
51
|
+
|
|
52
|
+
const resolveModel = config.resolveModel ?? createLanguageModel;
|
|
53
|
+
const allModels = [primary, ...fallbacks];
|
|
54
|
+
const failedModels: FallbackResult<T>['failedModels'] = [];
|
|
55
|
+
let totalAttempts = 0;
|
|
56
|
+
|
|
57
|
+
for (const model of allModels) {
|
|
58
|
+
let attempts = 0;
|
|
59
|
+
let lastError: Error | null = null;
|
|
60
|
+
|
|
61
|
+
while (attempts < maxRetries) {
|
|
62
|
+
attempts++;
|
|
63
|
+
totalAttempts++;
|
|
64
|
+
|
|
65
|
+
try {
|
|
66
|
+
const provider = resolveModel(model);
|
|
67
|
+
const result = await execute(provider);
|
|
68
|
+
|
|
69
|
+
return {
|
|
70
|
+
result,
|
|
71
|
+
model,
|
|
72
|
+
attempts: totalAttempts,
|
|
73
|
+
failedModels,
|
|
74
|
+
};
|
|
75
|
+
} catch (error) {
|
|
76
|
+
lastError = error as Error;
|
|
77
|
+
|
|
78
|
+
// Check if error is retryable
|
|
79
|
+
if (!isRetryableError(error)) {
|
|
80
|
+
break; // Move to next model
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// Wait before retry
|
|
84
|
+
if (attempts < maxRetries) {
|
|
85
|
+
const delay = exponentialBackoff ? retryDelay * Math.pow(2, attempts - 1) : retryDelay;
|
|
86
|
+
await sleep(delay);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// Record failure for this model
|
|
92
|
+
if (lastError) {
|
|
93
|
+
failedModels.push({
|
|
94
|
+
model,
|
|
95
|
+
error: lastError,
|
|
96
|
+
attempts,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
throw new AllModelsFailedError(
|
|
102
|
+
`All models failed after ${totalAttempts} total attempts`,
|
|
103
|
+
failedModels.map(f => ({ model: f.model, error: f.error })),
|
|
104
|
+
);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Check if an error is retryable
|
|
109
|
+
*/
|
|
110
|
+
function isRetryableError(error: unknown): boolean {
|
|
111
|
+
if (!(error instanceof Error)) return false;
|
|
112
|
+
|
|
113
|
+
const message = error.message.toLowerCase();
|
|
114
|
+
|
|
115
|
+
// Rate limit errors are retryable
|
|
116
|
+
if (message.includes('rate limit') || message.includes('429')) return true;
|
|
117
|
+
|
|
118
|
+
// Timeout errors are retryable
|
|
119
|
+
if (message.includes('timeout') || message.includes('timed out')) return true;
|
|
120
|
+
|
|
121
|
+
// Server errors are retryable
|
|
122
|
+
if (message.includes('500') || message.includes('502') || message.includes('503')) {
|
|
123
|
+
return true;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
// Network errors are retryable
|
|
127
|
+
if (message.includes('network') || message.includes('connection')) return true;
|
|
128
|
+
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Create fallback middleware for AI SDK
|
|
134
|
+
*/
|
|
135
|
+
export function createFallbackMiddleware(config: FallbackConfig): SDKLanguageModelV3Middleware {
|
|
136
|
+
const asLanguageModelV3 = (model: SDKLanguageModel, modelName: string): SDKLanguageModelV3 => {
|
|
137
|
+
if (typeof model === 'string') {
|
|
138
|
+
throw new Error(
|
|
139
|
+
`Fallback middleware requires LanguageModelV3 instances, got '${modelName}'.`,
|
|
140
|
+
);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
if (model.specificationVersion !== 'v3') {
|
|
144
|
+
throw new Error(
|
|
145
|
+
`Fallback middleware requires LanguageModelV3 instances, got '${model.specificationVersion}'.`,
|
|
146
|
+
);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
return model;
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
const isSameModel = (candidate: SDKLanguageModelV3, current: SDKLanguageModelV3): boolean =>
|
|
153
|
+
candidate.provider === current.provider && candidate.modelId === current.modelId;
|
|
154
|
+
|
|
155
|
+
const describeModel = (model: SDKLanguageModel): string => {
|
|
156
|
+
if (typeof model === 'string') {
|
|
157
|
+
return model;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
return `${model.provider}:${model.modelId}`;
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
return {
|
|
164
|
+
specificationVersion: 'v3',
|
|
165
|
+
wrapGenerate: async ({ doGenerate, params, model }: WrapGenerateArgs) => {
|
|
166
|
+
const result = await executeWithFallback(config, async providerModel => {
|
|
167
|
+
const provider = asLanguageModelV3(providerModel, describeModel(providerModel));
|
|
168
|
+
|
|
169
|
+
if (isSameModel(provider, model)) {
|
|
170
|
+
return await doGenerate();
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
return await provider.doGenerate(params);
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
return result.result;
|
|
177
|
+
},
|
|
178
|
+
wrapStream: async ({ doStream, params, model }: WrapStreamArgs) => {
|
|
179
|
+
const result = await executeWithFallback(config, async providerModel => {
|
|
180
|
+
const provider = asLanguageModelV3(providerModel, describeModel(providerModel));
|
|
181
|
+
|
|
182
|
+
if (isSameModel(provider, model)) {
|
|
183
|
+
return await doStream();
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
return await provider.doStream(params);
|
|
187
|
+
});
|
|
188
|
+
|
|
189
|
+
return result.result;
|
|
190
|
+
},
|
|
191
|
+
};
|
|
192
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fallback and recovery types
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type { Model } from '../../models/registry';
|
|
6
|
+
import type { SDKLanguageModel } from '../../shared';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Fallback strategy configuration
|
|
10
|
+
*/
|
|
11
|
+
export interface FallbackConfig {
|
|
12
|
+
/** Primary model to use */
|
|
13
|
+
primary: Model;
|
|
14
|
+
/** Fallback models in order of preference */
|
|
15
|
+
fallbacks: Model[];
|
|
16
|
+
/** Optional model resolver override for testing or advanced routing */
|
|
17
|
+
resolveModel?: (model: Model) => SDKLanguageModel;
|
|
18
|
+
/** Maximum retries per model */
|
|
19
|
+
maxRetries?: number;
|
|
20
|
+
/** Delay between retries in ms */
|
|
21
|
+
retryDelay?: number;
|
|
22
|
+
/** Whether to use exponential backoff */
|
|
23
|
+
exponentialBackoff?: boolean;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Fallback result with metadata
|
|
28
|
+
*/
|
|
29
|
+
export interface FallbackResult<T> {
|
|
30
|
+
/** The result from successful model */
|
|
31
|
+
result: T;
|
|
32
|
+
/** Which model succeeded */
|
|
33
|
+
model: Model;
|
|
34
|
+
/** Number of attempts before success */
|
|
35
|
+
attempts: number;
|
|
36
|
+
/** Models that failed */
|
|
37
|
+
failedModels: Array<{
|
|
38
|
+
model: Model;
|
|
39
|
+
error: Error;
|
|
40
|
+
attempts: number;
|
|
41
|
+
}>;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Circuit breaker state
|
|
46
|
+
*/
|
|
47
|
+
export type CircuitState = 'closed' | 'open' | 'half-open';
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Circuit breaker configuration
|
|
51
|
+
*/
|
|
52
|
+
export interface CircuitBreakerConfig {
|
|
53
|
+
/** Number of failures before opening circuit */
|
|
54
|
+
failureThreshold: number;
|
|
55
|
+
/** Time in ms before trying again (half-open) */
|
|
56
|
+
resetTimeout: number;
|
|
57
|
+
/** Number of successes in half-open to close */
|
|
58
|
+
successThreshold?: number;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* All models failed error
|
|
63
|
+
*/
|
|
64
|
+
export class AllModelsFailedError extends Error {
|
|
65
|
+
constructor(
|
|
66
|
+
message: string,
|
|
67
|
+
public readonly failures: Array<{ model: Model; error: Error }>,
|
|
68
|
+
) {
|
|
69
|
+
super(message);
|
|
70
|
+
this.name = 'AllModelsFailedError';
|
|
71
|
+
Object.setPrototypeOf(this, AllModelsFailedError.prototype);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Circuit open error
|
|
77
|
+
*/
|
|
78
|
+
export class CircuitOpenError extends Error {
|
|
79
|
+
constructor(
|
|
80
|
+
public readonly model: Model,
|
|
81
|
+
public readonly resetTime: Date,
|
|
82
|
+
) {
|
|
83
|
+
super(`Circuit open for model ${model}, resets at ${resetTime.toISOString()}`);
|
|
84
|
+
this.name = 'CircuitOpenError';
|
|
85
|
+
Object.setPrototypeOf(this, CircuitOpenError.prototype);
|
|
86
|
+
}
|
|
87
|
+
}
|