@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,882 @@
|
|
|
1
|
+
import { t as __exportAll } from "./chunk-CkzbjWQW.mjs";
|
|
2
|
+
import { r as getErrorCode } from "./errors-Dtn-UeRi.mjs";
|
|
3
|
+
import { createMCPClient } from "@ai-sdk/mcp";
|
|
4
|
+
import { Experimental_StdioMCPTransport } from "@ai-sdk/mcp/mcp-stdio";
|
|
5
|
+
import { logError, logInfo, logWarn } from "@od-oneapp/shared/logs";
|
|
6
|
+
import "server-only";
|
|
7
|
+
|
|
8
|
+
//#region src/tools/mcp/ai-sdk-error-integration.ts
|
|
9
|
+
/**
|
|
10
|
+
* @fileoverview ai-sdk-error-integration.ts
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Enhanced error class that conforms to AI SDK v6 error handling patterns
|
|
14
|
+
*/
|
|
15
|
+
var AISDKCompatibleMCPError = class AISDKCompatibleMCPError extends Error {
|
|
16
|
+
errorType;
|
|
17
|
+
timestamp;
|
|
18
|
+
recoverable;
|
|
19
|
+
metadata;
|
|
20
|
+
constructor(message, errorType = "unknown-error", originalError, metadata = {}, recoverable = false) {
|
|
21
|
+
super(message);
|
|
22
|
+
this.name = "AISDKCompatibleMCPError";
|
|
23
|
+
this.errorType = errorType;
|
|
24
|
+
this.timestamp = /* @__PURE__ */ new Date();
|
|
25
|
+
this.recoverable = recoverable;
|
|
26
|
+
this.metadata = {
|
|
27
|
+
...metadata,
|
|
28
|
+
originalError: originalError?.message,
|
|
29
|
+
originalStack: originalError?.stack
|
|
30
|
+
};
|
|
31
|
+
if (Error.captureStackTrace) Error.captureStackTrace(this, AISDKCompatibleMCPError);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Convert to AI SDK error format for logging
|
|
35
|
+
*/
|
|
36
|
+
toAISDKFormat() {
|
|
37
|
+
return {
|
|
38
|
+
name: this.name,
|
|
39
|
+
message: this.message,
|
|
40
|
+
errorType: this.errorType,
|
|
41
|
+
timestamp: this.timestamp.toISOString(),
|
|
42
|
+
recoverable: this.recoverable,
|
|
43
|
+
metadata: this.metadata,
|
|
44
|
+
stack: this.stack
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Error handler factory for MCP operations
|
|
50
|
+
* Creates standardized error handlers that integrate with AI SDK v6 patterns
|
|
51
|
+
*/
|
|
52
|
+
var MCPErrorHandlerFactory = class {
|
|
53
|
+
clientName;
|
|
54
|
+
operationContext;
|
|
55
|
+
constructor(clientName, operationContext = "mcp-operation") {
|
|
56
|
+
this.clientName = clientName;
|
|
57
|
+
this.operationContext = operationContext;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Create an onUncaughtError handler for AI SDK v6 integration
|
|
61
|
+
*/
|
|
62
|
+
createUncaughtErrorHandler(cleanupFn, options = {}) {
|
|
63
|
+
const { enableRecovery = false, maxRecoveryAttempts = 1, logLevel = "error" } = options;
|
|
64
|
+
let recoveryAttempts = 0;
|
|
65
|
+
return (error) => {
|
|
66
|
+
const aiError = this.convertToAISDKError(error);
|
|
67
|
+
(logLevel === "warn" ? logWarn : logLevel === "info" ? logInfo : logError)(`MCP uncaught error in ${this.operationContext}`, {
|
|
68
|
+
operation: "mcp_uncaught_error_handler",
|
|
69
|
+
metadata: {
|
|
70
|
+
clientName: this.clientName,
|
|
71
|
+
errorType: aiError.errorType,
|
|
72
|
+
recoverable: aiError.recoverable,
|
|
73
|
+
recoveryAttempts,
|
|
74
|
+
maxRecoveryAttempts,
|
|
75
|
+
...aiError.metadata
|
|
76
|
+
},
|
|
77
|
+
error: aiError
|
|
78
|
+
});
|
|
79
|
+
if (enableRecovery && aiError.recoverable && recoveryAttempts < maxRecoveryAttempts) {
|
|
80
|
+
recoveryAttempts++;
|
|
81
|
+
logInfo(`Attempting recovery for MCP error (attempt ${recoveryAttempts}/${maxRecoveryAttempts})`, {
|
|
82
|
+
operation: "mcp_error_recovery_attempt",
|
|
83
|
+
metadata: {
|
|
84
|
+
clientName: this.clientName,
|
|
85
|
+
recoveryAttempt: recoveryAttempts,
|
|
86
|
+
errorType: aiError.errorType
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
(async () => {
|
|
92
|
+
try {
|
|
93
|
+
await cleanupFn();
|
|
94
|
+
} catch (cleanupError) {
|
|
95
|
+
logError(`Failed to cleanup after uncaught error in ${this.operationContext}`, {
|
|
96
|
+
operation: "mcp_cleanup_after_uncaught_error",
|
|
97
|
+
metadata: {
|
|
98
|
+
clientName: this.clientName,
|
|
99
|
+
originalError: aiError.message,
|
|
100
|
+
cleanupError: cleanupError instanceof Error ? cleanupError.message : String(cleanupError)
|
|
101
|
+
},
|
|
102
|
+
error: cleanupError instanceof Error ? cleanupError : new Error(String(cleanupError))
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
})();
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Create a stream error handler for AI SDK v6 streaming integration
|
|
110
|
+
*/
|
|
111
|
+
createStreamErrorHandler(cleanupFn, onStreamError) {
|
|
112
|
+
return (error) => {
|
|
113
|
+
const aiError = this.convertToAISDKError(error, "transport-error");
|
|
114
|
+
logError(`MCP stream error in ${this.operationContext}`, {
|
|
115
|
+
operation: "mcp_stream_error_handler",
|
|
116
|
+
metadata: {
|
|
117
|
+
clientName: this.clientName,
|
|
118
|
+
errorType: aiError.errorType,
|
|
119
|
+
streamContext: this.operationContext,
|
|
120
|
+
...aiError.metadata
|
|
121
|
+
},
|
|
122
|
+
error: aiError
|
|
123
|
+
});
|
|
124
|
+
if (onStreamError) try {
|
|
125
|
+
onStreamError(aiError);
|
|
126
|
+
} catch (callbackError) {
|
|
127
|
+
logError(`Stream error callback failed in ${this.operationContext}`, {
|
|
128
|
+
operation: "mcp_stream_error_callback_failure",
|
|
129
|
+
metadata: {
|
|
130
|
+
clientName: this.clientName,
|
|
131
|
+
callbackError: callbackError instanceof Error ? callbackError.message : String(callbackError)
|
|
132
|
+
},
|
|
133
|
+
error: callbackError instanceof Error ? callbackError : new Error(String(callbackError))
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
(async () => {
|
|
137
|
+
try {
|
|
138
|
+
await cleanupFn();
|
|
139
|
+
} catch (cleanupError) {
|
|
140
|
+
logError(`Failed to cleanup after stream error in ${this.operationContext}`, {
|
|
141
|
+
operation: "mcp_stream_cleanup_error",
|
|
142
|
+
metadata: {
|
|
143
|
+
clientName: this.clientName,
|
|
144
|
+
originalError: aiError.message,
|
|
145
|
+
cleanupError: cleanupError instanceof Error ? cleanupError.message : String(cleanupError)
|
|
146
|
+
},
|
|
147
|
+
error: cleanupError instanceof Error ? cleanupError : new Error(String(cleanupError))
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
})();
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Create a finish handler for proper AI SDK v6 lifecycle management
|
|
155
|
+
*/
|
|
156
|
+
createFinishHandler(cleanupFn, successCallback) {
|
|
157
|
+
return async () => {
|
|
158
|
+
try {
|
|
159
|
+
await cleanupFn();
|
|
160
|
+
logInfo(`MCP operation completed successfully in ${this.operationContext}`, {
|
|
161
|
+
operation: "mcp_finish_handler_success",
|
|
162
|
+
metadata: {
|
|
163
|
+
clientName: this.clientName,
|
|
164
|
+
operationContext: this.operationContext
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
if (successCallback) try {
|
|
168
|
+
successCallback();
|
|
169
|
+
} catch (callbackError) {
|
|
170
|
+
logWarn(`Success callback failed in ${this.operationContext}`, {
|
|
171
|
+
operation: "mcp_success_callback_failure",
|
|
172
|
+
metadata: {
|
|
173
|
+
clientName: this.clientName,
|
|
174
|
+
callbackError: callbackError instanceof Error ? callbackError.message : String(callbackError)
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
} catch (error) {
|
|
179
|
+
const aiError = this.convertToAISDKError(error instanceof Error ? error : new Error(String(error)));
|
|
180
|
+
logError(`MCP finish handler failed in ${this.operationContext}`, {
|
|
181
|
+
operation: "mcp_finish_handler_error",
|
|
182
|
+
metadata: {
|
|
183
|
+
clientName: this.clientName,
|
|
184
|
+
errorType: aiError.errorType,
|
|
185
|
+
...aiError.metadata
|
|
186
|
+
},
|
|
187
|
+
error: aiError
|
|
188
|
+
});
|
|
189
|
+
throw aiError;
|
|
190
|
+
}
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Convert generic error to AI SDK compatible error
|
|
195
|
+
*/
|
|
196
|
+
convertToAISDKError(error, defaultType = "unknown-error") {
|
|
197
|
+
if (error instanceof AISDKCompatibleMCPError) return error;
|
|
198
|
+
let errorType = defaultType;
|
|
199
|
+
let recoverable = false;
|
|
200
|
+
if (error.message.includes("ECONNREFUSED") || error.message.includes("ENOTFOUND")) {
|
|
201
|
+
errorType = "connection-error";
|
|
202
|
+
recoverable = true;
|
|
203
|
+
} else if (error.message.includes("timeout") || error.message.includes("TIMEOUT")) {
|
|
204
|
+
errorType = "timeout-error";
|
|
205
|
+
recoverable = true;
|
|
206
|
+
} else if (error.message.includes("transport") || error.message.includes("Transport")) {
|
|
207
|
+
errorType = "transport-error";
|
|
208
|
+
recoverable = true;
|
|
209
|
+
} else if (error.message.includes("validation") || error.message.includes("invalid")) {
|
|
210
|
+
errorType = "validation-error";
|
|
211
|
+
recoverable = false;
|
|
212
|
+
} else if (error.message.includes("resource") || error.message.includes("limit")) {
|
|
213
|
+
errorType = "resource-exhausted";
|
|
214
|
+
recoverable = true;
|
|
215
|
+
} else if (error.message.includes("tool") || error.message.includes("execution")) {
|
|
216
|
+
errorType = "tool-execution-error";
|
|
217
|
+
recoverable = false;
|
|
218
|
+
}
|
|
219
|
+
return new AISDKCompatibleMCPError(error.message, errorType, error, {
|
|
220
|
+
clientName: this.clientName,
|
|
221
|
+
operationContext: this.operationContext,
|
|
222
|
+
originalErrorName: error.name
|
|
223
|
+
}, recoverable);
|
|
224
|
+
}
|
|
225
|
+
};
|
|
226
|
+
/**
|
|
227
|
+
* Utility functions for AI SDK v6 error integration
|
|
228
|
+
*/
|
|
229
|
+
const MCPErrorUtils = {
|
|
230
|
+
createErrorContext(clientName, operation) {
|
|
231
|
+
return new MCPErrorHandlerFactory(clientName, operation);
|
|
232
|
+
},
|
|
233
|
+
isRecoverableError(error) {
|
|
234
|
+
if (error instanceof AISDKCompatibleMCPError) return error.recoverable;
|
|
235
|
+
return [
|
|
236
|
+
"ECONNREFUSED",
|
|
237
|
+
"ENOTFOUND",
|
|
238
|
+
"TIMEOUT",
|
|
239
|
+
"timeout",
|
|
240
|
+
"network",
|
|
241
|
+
"temporary",
|
|
242
|
+
"rate limit",
|
|
243
|
+
"throttle"
|
|
244
|
+
].some((pattern) => error.message.toLowerCase().includes(pattern.toLowerCase()));
|
|
245
|
+
},
|
|
246
|
+
extractErrorMetadata(error) {
|
|
247
|
+
const metadata = {
|
|
248
|
+
errorName: error.name,
|
|
249
|
+
errorMessage: error.message,
|
|
250
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
251
|
+
};
|
|
252
|
+
if (error instanceof AISDKCompatibleMCPError) {
|
|
253
|
+
metadata.errorType = error.errorType;
|
|
254
|
+
metadata.recoverable = error.recoverable;
|
|
255
|
+
metadata.customMetadata = error.metadata;
|
|
256
|
+
}
|
|
257
|
+
const errorCode = getErrorCode(error);
|
|
258
|
+
if (errorCode) metadata.errorCode = errorCode;
|
|
259
|
+
const errorDetails = error;
|
|
260
|
+
if (typeof errorDetails.errno === "string" || typeof errorDetails.errno === "number") metadata.errno = errorDetails.errno;
|
|
261
|
+
if (typeof errorDetails.syscall === "string") metadata.syscall = errorDetails.syscall;
|
|
262
|
+
return metadata;
|
|
263
|
+
}
|
|
264
|
+
};
|
|
265
|
+
|
|
266
|
+
//#endregion
|
|
267
|
+
//#region src/tools/mcp/client.ts
|
|
268
|
+
/**
|
|
269
|
+
* @fileoverview client.ts
|
|
270
|
+
*/
|
|
271
|
+
var client_exports = /* @__PURE__ */ __exportAll({
|
|
272
|
+
DEFAULT_HEALTH_CHECK_CONFIG: () => DEFAULT_HEALTH_CHECK_CONFIG,
|
|
273
|
+
DEFAULT_RETRY_CONFIG: () => DEFAULT_RETRY_CONFIG,
|
|
274
|
+
MCPConnectionError: () => MCPConnectionError,
|
|
275
|
+
MCPHealthMonitor: () => MCPHealthMonitor,
|
|
276
|
+
MCPHealthStatus: () => MCPHealthStatus,
|
|
277
|
+
MCPRequestManager: () => MCPRequestManager,
|
|
278
|
+
MCPRetryableError: () => MCPRetryableError,
|
|
279
|
+
MCPTransportError: () => MCPTransportError,
|
|
280
|
+
createMCPToolsForRequest: () => createMCPToolsForRequest,
|
|
281
|
+
createMCPToolsFromConfigs: () => createMCPToolsFromConfigs,
|
|
282
|
+
createTransportFromConfig: () => createTransportFromConfig,
|
|
283
|
+
globalMCPHealthMonitor: () => globalMCPHealthMonitor,
|
|
284
|
+
withRetryAndTimeout: () => withRetryAndTimeout
|
|
285
|
+
});
|
|
286
|
+
/**
|
|
287
|
+
* Default retry configuration
|
|
288
|
+
*/
|
|
289
|
+
const DEFAULT_RETRY_CONFIG = {
|
|
290
|
+
maxAttempts: 3,
|
|
291
|
+
initialDelayMs: 1e3,
|
|
292
|
+
maxDelayMs: 1e4,
|
|
293
|
+
backoffMultiplier: 2,
|
|
294
|
+
retryableErrors: [
|
|
295
|
+
"ECONNREFUSED",
|
|
296
|
+
"ENOTFOUND",
|
|
297
|
+
"TIMEOUT",
|
|
298
|
+
"NETWORK_ERROR",
|
|
299
|
+
"CONNECTION_LOST"
|
|
300
|
+
]
|
|
301
|
+
};
|
|
302
|
+
/**
|
|
303
|
+
* Default health check configuration
|
|
304
|
+
*/
|
|
305
|
+
const DEFAULT_HEALTH_CHECK_CONFIG = {
|
|
306
|
+
enabled: true,
|
|
307
|
+
intervalMs: 6e4,
|
|
308
|
+
timeoutMs: 5e3,
|
|
309
|
+
failureThreshold: 3,
|
|
310
|
+
recoveryThreshold: 2
|
|
311
|
+
};
|
|
312
|
+
/**
|
|
313
|
+
* Health status for MCP servers
|
|
314
|
+
*/
|
|
315
|
+
let MCPHealthStatus = /* @__PURE__ */ function(MCPHealthStatus) {
|
|
316
|
+
MCPHealthStatus["HEALTHY"] = "healthy";
|
|
317
|
+
MCPHealthStatus["DEGRADED"] = "degraded";
|
|
318
|
+
MCPHealthStatus["UNHEALTHY"] = "unhealthy";
|
|
319
|
+
MCPHealthStatus["UNKNOWN"] = "unknown";
|
|
320
|
+
return MCPHealthStatus;
|
|
321
|
+
}({});
|
|
322
|
+
/**
|
|
323
|
+
* MCP Error types for better error handling
|
|
324
|
+
*/
|
|
325
|
+
var MCPConnectionError = class extends Error {
|
|
326
|
+
constructor(message, clientName, transportType, originalError) {
|
|
327
|
+
super(message);
|
|
328
|
+
this.clientName = clientName;
|
|
329
|
+
this.transportType = transportType;
|
|
330
|
+
this.originalError = originalError;
|
|
331
|
+
this.name = "MCPConnectionError";
|
|
332
|
+
}
|
|
333
|
+
};
|
|
334
|
+
var MCPTransportError = class extends Error {
|
|
335
|
+
constructor(message, transportType, originalError) {
|
|
336
|
+
super(message);
|
|
337
|
+
this.transportType = transportType;
|
|
338
|
+
this.originalError = originalError;
|
|
339
|
+
this.name = "MCPTransportError";
|
|
340
|
+
}
|
|
341
|
+
};
|
|
342
|
+
var MCPRetryableError = class extends Error {
|
|
343
|
+
constructor(message, attempt, maxAttempts, originalError) {
|
|
344
|
+
super(message);
|
|
345
|
+
this.attempt = attempt;
|
|
346
|
+
this.maxAttempts = maxAttempts;
|
|
347
|
+
this.originalError = originalError;
|
|
348
|
+
this.name = "MCPRetryableError";
|
|
349
|
+
}
|
|
350
|
+
};
|
|
351
|
+
/**
|
|
352
|
+
* Utility function to check if an error is retryable
|
|
353
|
+
*/
|
|
354
|
+
function isRetryableError(error, retryableErrors) {
|
|
355
|
+
const errorMessage = error.message.toUpperCase();
|
|
356
|
+
const errorCode = getErrorCode(error);
|
|
357
|
+
return retryableErrors.some((pattern) => errorMessage.includes(pattern.toUpperCase()) || errorCode === pattern);
|
|
358
|
+
}
|
|
359
|
+
/**
|
|
360
|
+
* Utility function to calculate exponential backoff delay
|
|
361
|
+
*/
|
|
362
|
+
function calculateDelay(attempt, config) {
|
|
363
|
+
const delay = config.initialDelayMs * Math.pow(config.backoffMultiplier, attempt - 1);
|
|
364
|
+
return Math.min(delay, config.maxDelayMs);
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* Utility function to sleep for a given duration
|
|
368
|
+
*/
|
|
369
|
+
function sleep(ms) {
|
|
370
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
371
|
+
}
|
|
372
|
+
/**
|
|
373
|
+
* Timeout wrapper that cancels operations after a specified duration
|
|
374
|
+
*/
|
|
375
|
+
async function withTimeout(operation, timeoutMs, context = "MCP operation") {
|
|
376
|
+
const timeoutPromise = new Promise((resolve, reject) => {
|
|
377
|
+
setTimeout(() => {
|
|
378
|
+
reject(/* @__PURE__ */ new Error(`${context} timed out after ${timeoutMs}ms`));
|
|
379
|
+
}, timeoutMs);
|
|
380
|
+
});
|
|
381
|
+
return Promise.race([operation(), timeoutPromise]);
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* Enhanced retry wrapper with exponential backoff
|
|
385
|
+
*/
|
|
386
|
+
async function withRetry(operation, config = DEFAULT_RETRY_CONFIG, context = "MCP operation") {
|
|
387
|
+
let lastError;
|
|
388
|
+
for (let attempt = 1; attempt <= config.maxAttempts; attempt++) try {
|
|
389
|
+
return await operation();
|
|
390
|
+
} catch (error) {
|
|
391
|
+
lastError = error instanceof Error ? error : new Error(String(error));
|
|
392
|
+
if (attempt === config.maxAttempts || !isRetryableError(lastError, config.retryableErrors)) {
|
|
393
|
+
logError(`${context} failed after ${attempt} attempts`, {
|
|
394
|
+
operation: "mcp_retry_exhausted",
|
|
395
|
+
metadata: {
|
|
396
|
+
context,
|
|
397
|
+
attempt,
|
|
398
|
+
maxAttempts: config.maxAttempts,
|
|
399
|
+
error: lastError.message
|
|
400
|
+
},
|
|
401
|
+
error: lastError
|
|
402
|
+
});
|
|
403
|
+
throw lastError;
|
|
404
|
+
}
|
|
405
|
+
const delay = calculateDelay(attempt, config);
|
|
406
|
+
logWarn(`${context} failed, retrying in ${delay}ms (attempt ${attempt}/${config.maxAttempts})`, {
|
|
407
|
+
operation: "mcp_retry_attempt",
|
|
408
|
+
metadata: {
|
|
409
|
+
context,
|
|
410
|
+
attempt,
|
|
411
|
+
maxAttempts: config.maxAttempts,
|
|
412
|
+
delayMs: delay,
|
|
413
|
+
error: lastError.message
|
|
414
|
+
}
|
|
415
|
+
});
|
|
416
|
+
await sleep(delay);
|
|
417
|
+
}
|
|
418
|
+
throw lastError || /* @__PURE__ */ new Error(`${context} failed after all retry attempts`);
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* Combined retry and timeout wrapper
|
|
422
|
+
*/
|
|
423
|
+
async function withRetryAndTimeout(operation, retryConfig = DEFAULT_RETRY_CONFIG, timeoutMs, context = "MCP operation") {
|
|
424
|
+
return withRetry(timeoutMs ? () => withTimeout(operation, timeoutMs, context) : operation, retryConfig, context);
|
|
425
|
+
}
|
|
426
|
+
/**
|
|
427
|
+
* MCP Server Health Monitor
|
|
428
|
+
* Tracks health status of MCP servers and provides graceful degradation
|
|
429
|
+
*/
|
|
430
|
+
var MCPHealthMonitor = class {
|
|
431
|
+
healthStatuses = /* @__PURE__ */ new Map();
|
|
432
|
+
healthCheckIntervals = /* @__PURE__ */ new Map();
|
|
433
|
+
/**
|
|
434
|
+
* Start health monitoring for a client configuration
|
|
435
|
+
*/
|
|
436
|
+
startMonitoring(config) {
|
|
437
|
+
const healthConfig = config.healthCheck ?? DEFAULT_HEALTH_CHECK_CONFIG;
|
|
438
|
+
if (!healthConfig.enabled) return;
|
|
439
|
+
this.healthStatuses.set(config.name, {
|
|
440
|
+
status: MCPHealthStatus.UNKNOWN,
|
|
441
|
+
lastCheck: /* @__PURE__ */ new Date(),
|
|
442
|
+
consecutiveFailures: 0,
|
|
443
|
+
consecutiveSuccesses: 0
|
|
444
|
+
});
|
|
445
|
+
const intervalId = setInterval(() => {
|
|
446
|
+
this.performHealthCheck(config);
|
|
447
|
+
}, healthConfig.intervalMs);
|
|
448
|
+
this.healthCheckIntervals.set(config.name, intervalId);
|
|
449
|
+
this.performHealthCheck(config);
|
|
450
|
+
}
|
|
451
|
+
/**
|
|
452
|
+
* Stop health monitoring for a client
|
|
453
|
+
*/
|
|
454
|
+
stopMonitoring(clientName) {
|
|
455
|
+
const intervalId = this.healthCheckIntervals.get(clientName);
|
|
456
|
+
if (intervalId) {
|
|
457
|
+
clearInterval(intervalId);
|
|
458
|
+
this.healthCheckIntervals.delete(clientName);
|
|
459
|
+
}
|
|
460
|
+
this.healthStatuses.delete(clientName);
|
|
461
|
+
}
|
|
462
|
+
/**
|
|
463
|
+
* Get current health status for a client
|
|
464
|
+
*/
|
|
465
|
+
getHealthStatus(clientName) {
|
|
466
|
+
return this.healthStatuses.get(clientName);
|
|
467
|
+
}
|
|
468
|
+
/**
|
|
469
|
+
* Check if a client is currently healthy
|
|
470
|
+
*/
|
|
471
|
+
isHealthy(clientName) {
|
|
472
|
+
return this.healthStatuses.get(clientName)?.status === MCPHealthStatus.HEALTHY;
|
|
473
|
+
}
|
|
474
|
+
/**
|
|
475
|
+
* Check if a client should be excluded due to poor health
|
|
476
|
+
*/
|
|
477
|
+
shouldExclude(clientName) {
|
|
478
|
+
return this.healthStatuses.get(clientName)?.status === MCPHealthStatus.UNHEALTHY;
|
|
479
|
+
}
|
|
480
|
+
/**
|
|
481
|
+
* Perform a health check for a specific client
|
|
482
|
+
*/
|
|
483
|
+
async performHealthCheck(config) {
|
|
484
|
+
const healthConfig = config.healthCheck ?? DEFAULT_HEALTH_CHECK_CONFIG;
|
|
485
|
+
const startTime = Date.now();
|
|
486
|
+
let result;
|
|
487
|
+
try {
|
|
488
|
+
await withTimeout(async () => {
|
|
489
|
+
const tempClient = await createMCPClient({ transport: createTransportFromConfig(config.transport) });
|
|
490
|
+
try {
|
|
491
|
+
await tempClient.tools();
|
|
492
|
+
await tempClient.close();
|
|
493
|
+
} catch (toolError) {
|
|
494
|
+
await tempClient.close();
|
|
495
|
+
throw toolError;
|
|
496
|
+
}
|
|
497
|
+
}, healthConfig.timeoutMs, `Health check for ${config.name}`);
|
|
498
|
+
const responseTime = Date.now() - startTime;
|
|
499
|
+
const currentStatus = this.healthStatuses.get(config.name);
|
|
500
|
+
result = {
|
|
501
|
+
status: MCPHealthStatus.HEALTHY,
|
|
502
|
+
lastCheck: /* @__PURE__ */ new Date(),
|
|
503
|
+
consecutiveFailures: 0,
|
|
504
|
+
consecutiveSuccesses: (currentStatus?.consecutiveSuccesses ?? 0) + 1,
|
|
505
|
+
responseTimeMs: responseTime
|
|
506
|
+
};
|
|
507
|
+
} catch (error) {
|
|
508
|
+
const consecutiveFailures = (this.healthStatuses.get(config.name)?.consecutiveFailures ?? 0) + 1;
|
|
509
|
+
let newStatus;
|
|
510
|
+
if (consecutiveFailures >= healthConfig.failureThreshold) newStatus = MCPHealthStatus.UNHEALTHY;
|
|
511
|
+
else if (consecutiveFailures > 1) newStatus = MCPHealthStatus.DEGRADED;
|
|
512
|
+
else newStatus = MCPHealthStatus.DEGRADED;
|
|
513
|
+
result = {
|
|
514
|
+
status: newStatus,
|
|
515
|
+
lastCheck: /* @__PURE__ */ new Date(),
|
|
516
|
+
consecutiveFailures,
|
|
517
|
+
consecutiveSuccesses: 0,
|
|
518
|
+
error: error instanceof Error ? error.message : String(error)
|
|
519
|
+
};
|
|
520
|
+
logWarn(`Health check failed for MCP client '${config.name}'`, {
|
|
521
|
+
operation: "mcp_health_check_failed",
|
|
522
|
+
metadata: {
|
|
523
|
+
clientName: config.name,
|
|
524
|
+
consecutiveFailures,
|
|
525
|
+
status: newStatus,
|
|
526
|
+
error: result.error
|
|
527
|
+
}
|
|
528
|
+
});
|
|
529
|
+
}
|
|
530
|
+
const previousStatus = this.healthStatuses.get(config.name);
|
|
531
|
+
this.healthStatuses.set(config.name, result);
|
|
532
|
+
if (previousStatus && previousStatus.status !== result.status) logWarn(`MCP client '${config.name}' health status changed: ${previousStatus.status} → ${result.status}`, {
|
|
533
|
+
operation: "mcp_health_status_change",
|
|
534
|
+
metadata: {
|
|
535
|
+
clientName: config.name,
|
|
536
|
+
previousStatus: previousStatus.status,
|
|
537
|
+
newStatus: result.status,
|
|
538
|
+
consecutiveFailures: result.consecutiveFailures,
|
|
539
|
+
consecutiveSuccesses: result.consecutiveSuccesses
|
|
540
|
+
}
|
|
541
|
+
});
|
|
542
|
+
}
|
|
543
|
+
/**
|
|
544
|
+
* Get summary of all client health statuses
|
|
545
|
+
*/
|
|
546
|
+
getHealthSummary() {
|
|
547
|
+
return Object.fromEntries(this.healthStatuses);
|
|
548
|
+
}
|
|
549
|
+
/**
|
|
550
|
+
* Cleanup all monitoring
|
|
551
|
+
*/
|
|
552
|
+
cleanup() {
|
|
553
|
+
for (const intervalId of this.healthCheckIntervals.values()) clearInterval(intervalId);
|
|
554
|
+
this.healthCheckIntervals.clear();
|
|
555
|
+
this.healthStatuses.clear();
|
|
556
|
+
}
|
|
557
|
+
};
|
|
558
|
+
/**
|
|
559
|
+
* Global health monitor instance
|
|
560
|
+
*/
|
|
561
|
+
const globalMCPHealthMonitor = new MCPHealthMonitor();
|
|
562
|
+
/**
|
|
563
|
+
* Validate transport configuration at runtime
|
|
564
|
+
*/
|
|
565
|
+
function validateTransportConfig(transportConfig) {
|
|
566
|
+
switch (transportConfig.type) {
|
|
567
|
+
case "stdio":
|
|
568
|
+
if (!transportConfig.command) throw new MCPTransportError("Command is required for stdio transport", "stdio");
|
|
569
|
+
break;
|
|
570
|
+
case "sse": {
|
|
571
|
+
const url = resolveRemoteUrl(transportConfig);
|
|
572
|
+
if (!url) throw new MCPTransportError("URL is required for SSE transport", "sse");
|
|
573
|
+
try {
|
|
574
|
+
new URL(url);
|
|
575
|
+
} catch {
|
|
576
|
+
throw new MCPTransportError("Invalid URL format for SSE transport", "sse");
|
|
577
|
+
}
|
|
578
|
+
break;
|
|
579
|
+
}
|
|
580
|
+
case "http": {
|
|
581
|
+
const url = resolveRemoteUrl(transportConfig);
|
|
582
|
+
if (!url) throw new MCPTransportError("HTTP URL is required for HTTP transport", "http");
|
|
583
|
+
try {
|
|
584
|
+
new URL(url);
|
|
585
|
+
} catch {
|
|
586
|
+
throw new MCPTransportError("Invalid HTTP URL format for HTTP transport", "http");
|
|
587
|
+
}
|
|
588
|
+
break;
|
|
589
|
+
}
|
|
590
|
+
default: throw new MCPTransportError(`Unsupported transport type: ${getTransportTypeLabel(transportConfig)}`, "unknown");
|
|
591
|
+
}
|
|
592
|
+
}
|
|
593
|
+
/**
|
|
594
|
+
* Create transport instance from configuration with proper typing and validation
|
|
595
|
+
*/
|
|
596
|
+
function createTransportFromConfig(transportConfig) {
|
|
597
|
+
validateTransportConfig(transportConfig);
|
|
598
|
+
switch (transportConfig.type) {
|
|
599
|
+
case "stdio":
|
|
600
|
+
const baseEnv = Object.entries(process.env).reduce((acc, [key, value]) => {
|
|
601
|
+
if (typeof value === "string") acc[key] = value;
|
|
602
|
+
return acc;
|
|
603
|
+
}, {});
|
|
604
|
+
return new Experimental_StdioMCPTransport({
|
|
605
|
+
command: transportConfig.command ?? "node",
|
|
606
|
+
args: transportConfig.args ?? [],
|
|
607
|
+
cwd: transportConfig.cwd,
|
|
608
|
+
stderr: transportConfig.stderr,
|
|
609
|
+
env: {
|
|
610
|
+
...baseEnv,
|
|
611
|
+
...process.env.PERPLEXITY_API_KEY && { PERPLEXITY_API_KEY: process.env.PERPLEXITY_API_KEY },
|
|
612
|
+
...process.env.OPENAI_API_KEY && { OPENAI_API_KEY: process.env.OPENAI_API_KEY },
|
|
613
|
+
...process.env.ANTHROPIC_API_KEY && { ANTHROPIC_API_KEY: process.env.ANTHROPIC_API_KEY },
|
|
614
|
+
...transportConfig.env
|
|
615
|
+
}
|
|
616
|
+
});
|
|
617
|
+
case "sse": return buildRemoteTransport("sse", transportConfig);
|
|
618
|
+
case "http": return buildRemoteTransport("http", transportConfig);
|
|
619
|
+
default: throw new MCPTransportError(`Unsupported transport type: ${getTransportTypeLabel(transportConfig)}`, "unknown");
|
|
620
|
+
}
|
|
621
|
+
}
|
|
622
|
+
function resolveRemoteUrl(transportConfig) {
|
|
623
|
+
return transportConfig.url ?? transportConfig.httpUrl;
|
|
624
|
+
}
|
|
625
|
+
function getTransportTypeLabel(transportConfig) {
|
|
626
|
+
return typeof transportConfig.type === "string" ? transportConfig.type : "unknown";
|
|
627
|
+
}
|
|
628
|
+
function buildRemoteTransport(type, transportConfig) {
|
|
629
|
+
const url = resolveRemoteUrl(transportConfig);
|
|
630
|
+
if (!url) throw new MCPTransportError(`URL is required for ${type} transport`, type);
|
|
631
|
+
const headers = { ...transportConfig.headers };
|
|
632
|
+
if (type === "http" && transportConfig.sessionId) headers["x-mcp-session-id"] = transportConfig.sessionId;
|
|
633
|
+
return {
|
|
634
|
+
type,
|
|
635
|
+
url,
|
|
636
|
+
headers: Object.keys(headers).length > 0 ? headers : void 0,
|
|
637
|
+
authProvider: transportConfig.authProvider
|
|
638
|
+
};
|
|
639
|
+
}
|
|
640
|
+
/**
|
|
641
|
+
* Per-request MCP client manager following Next.js documentation pattern with AI SDK v6 integration
|
|
642
|
+
* Creates clients per request and cleans them up automatically with proper error handling
|
|
643
|
+
*/
|
|
644
|
+
var MCPRequestManager = class {
|
|
645
|
+
clients = [];
|
|
646
|
+
tools = {};
|
|
647
|
+
errorHandlers = /* @__PURE__ */ new Map();
|
|
648
|
+
async addClient(config) {
|
|
649
|
+
const retryConfig = config.retry ?? DEFAULT_RETRY_CONFIG;
|
|
650
|
+
const timeoutMs = config.timeoutMs || 3e4;
|
|
651
|
+
const context = `MCP client creation (${config.name})`;
|
|
652
|
+
const errorHandler = new MCPErrorHandlerFactory(config.name, context);
|
|
653
|
+
this.errorHandlers.set(config.name, errorHandler);
|
|
654
|
+
if (globalMCPHealthMonitor.shouldExclude(config.name)) if (config.gracefulDegradation) {
|
|
655
|
+
logWarn(`Skipping unhealthy MCP client '${config.name}'`, {
|
|
656
|
+
operation: "mcp_skip_unhealthy",
|
|
657
|
+
metadata: {
|
|
658
|
+
clientName: config.name,
|
|
659
|
+
healthStatus: globalMCPHealthMonitor.getHealthStatus(config.name)
|
|
660
|
+
}
|
|
661
|
+
});
|
|
662
|
+
return;
|
|
663
|
+
} else throw new AISDKCompatibleMCPError(`MCP client '${config.name}' is marked as unhealthy`, "connection-error", void 0, {
|
|
664
|
+
clientName: config.name,
|
|
665
|
+
transportType: config.transport.type,
|
|
666
|
+
healthStatus: globalMCPHealthMonitor.getHealthStatus(config.name)
|
|
667
|
+
}, true);
|
|
668
|
+
try {
|
|
669
|
+
await withRetryAndTimeout(async () => {
|
|
670
|
+
const client = await createMCPClient({ transport: createTransportFromConfig(config.transport) });
|
|
671
|
+
this.clients.push(client);
|
|
672
|
+
const clientTools = await withRetryAndTimeout(() => client.tools(), retryConfig, timeoutMs, `MCP tools retrieval (${config.name})`);
|
|
673
|
+
Object.assign(this.tools, clientTools);
|
|
674
|
+
globalMCPHealthMonitor.startMonitoring(config);
|
|
675
|
+
}, retryConfig, timeoutMs, context);
|
|
676
|
+
} catch (error) {
|
|
677
|
+
const originalError = error instanceof Error ? error : new Error(String(error));
|
|
678
|
+
const aiError = new AISDKCompatibleMCPError(`Failed to create MCP client '${config.name}' after retries`, "connection-error", originalError, {
|
|
679
|
+
clientName: config.name,
|
|
680
|
+
transportType: config.transport.type,
|
|
681
|
+
retryAttempts: retryConfig.maxAttempts,
|
|
682
|
+
timeoutMs
|
|
683
|
+
}, MCPErrorUtils.isRecoverableError(originalError));
|
|
684
|
+
if (config.gracefulDegradation) {
|
|
685
|
+
logWarn(`MCP client '${config.name}' failed, continuing with degraded functionality`, {
|
|
686
|
+
operation: "mcp_graceful_degradation",
|
|
687
|
+
metadata: {
|
|
688
|
+
clientName: config.name,
|
|
689
|
+
transportType: config.transport.type,
|
|
690
|
+
error: aiError.message,
|
|
691
|
+
errorType: aiError.errorType,
|
|
692
|
+
recoverable: aiError.recoverable,
|
|
693
|
+
...MCPErrorUtils.extractErrorMetadata(originalError)
|
|
694
|
+
}
|
|
695
|
+
});
|
|
696
|
+
return;
|
|
697
|
+
}
|
|
698
|
+
throw aiError;
|
|
699
|
+
}
|
|
700
|
+
}
|
|
701
|
+
getTools() {
|
|
702
|
+
return this.tools;
|
|
703
|
+
}
|
|
704
|
+
async close() {
|
|
705
|
+
const closePromises = this.clients.map(async (client, index) => {
|
|
706
|
+
try {
|
|
707
|
+
await client.close();
|
|
708
|
+
} catch (error) {
|
|
709
|
+
logWarn(`Failed to close MCP client ${index}`, {
|
|
710
|
+
operation: "mcp_client_close",
|
|
711
|
+
metadata: {
|
|
712
|
+
clientIndex: index,
|
|
713
|
+
error: error instanceof Error ? error.message : String(error)
|
|
714
|
+
}
|
|
715
|
+
});
|
|
716
|
+
}
|
|
717
|
+
});
|
|
718
|
+
await Promise.all(closePromises);
|
|
719
|
+
this.clients = [];
|
|
720
|
+
this.tools = {};
|
|
721
|
+
}
|
|
722
|
+
/**
|
|
723
|
+
* Get health summary for all managed clients
|
|
724
|
+
*/
|
|
725
|
+
getHealthSummary() {
|
|
726
|
+
return globalMCPHealthMonitor.getHealthSummary();
|
|
727
|
+
}
|
|
728
|
+
/**
|
|
729
|
+
* Create AI SDK v6 compatible error handlers for all managed clients
|
|
730
|
+
*/
|
|
731
|
+
createAISDKErrorHandlers() {
|
|
732
|
+
const onUncaughtError = (error) => {
|
|
733
|
+
for (const [, errorHandler] of this.errorHandlers.entries()) errorHandler.createUncaughtErrorHandler(() => this.close(), {
|
|
734
|
+
enableRecovery: true,
|
|
735
|
+
maxRecoveryAttempts: 1
|
|
736
|
+
})(error);
|
|
737
|
+
};
|
|
738
|
+
const onFinish = async () => {
|
|
739
|
+
try {
|
|
740
|
+
await this.close();
|
|
741
|
+
} catch (error) {
|
|
742
|
+
throw new AISDKCompatibleMCPError("Failed to close MCP clients on finish", "resource-exhausted", error instanceof Error ? error : new Error(String(error)), {
|
|
743
|
+
clientCount: this.clients.length,
|
|
744
|
+
operation: "finish_cleanup"
|
|
745
|
+
}, false);
|
|
746
|
+
}
|
|
747
|
+
};
|
|
748
|
+
const onStreamError = (error) => {
|
|
749
|
+
for (const [, errorHandler] of this.errorHandlers.entries()) errorHandler.createStreamErrorHandler(() => this.close())(error);
|
|
750
|
+
};
|
|
751
|
+
return {
|
|
752
|
+
onUncaughtError,
|
|
753
|
+
onFinish,
|
|
754
|
+
onStreamError
|
|
755
|
+
};
|
|
756
|
+
}
|
|
757
|
+
};
|
|
758
|
+
/**
|
|
759
|
+
* Create MCP tools for a single request (following Next.js docs pattern)
|
|
760
|
+
* This creates clients per request and returns cleanup functions
|
|
761
|
+
*/
|
|
762
|
+
async function createMCPToolsForRequest(configs) {
|
|
763
|
+
const manager = new MCPRequestManager();
|
|
764
|
+
for (const config of configs) await manager.addClient(config);
|
|
765
|
+
return {
|
|
766
|
+
tools: manager.getTools(),
|
|
767
|
+
clients: manager.clients,
|
|
768
|
+
cleanup: () => manager.close()
|
|
769
|
+
};
|
|
770
|
+
}
|
|
771
|
+
/**
|
|
772
|
+
* Create MCP tools following the exact Next.js documentation pattern
|
|
773
|
+
* This function matches the pattern shown in the official AI SDK docs:
|
|
774
|
+
* https://sdk.vercel.ai/docs/ai-sdk-ui/mcp-tools (Next.js usage)
|
|
775
|
+
* https://sdk.vercel.ai/docs/ai-sdk-core/mcp-tools (Node.js usage)
|
|
776
|
+
*
|
|
777
|
+
* Next.js streamText example from official docs:
|
|
778
|
+
* ```typescript
|
|
779
|
+
* const toolSetOne = await stdioClient.tools();
|
|
780
|
+
* const toolSetTwo = await sseClient.tools();
|
|
781
|
+
* const toolSetThree = await customClient.tools();
|
|
782
|
+
* const tools = {
|
|
783
|
+
* ...toolSetOne,
|
|
784
|
+
* ...toolSetTwo,
|
|
785
|
+
* ...toolSetThree, // note: this approach causes subsequent tool sets to override tools with the same name
|
|
786
|
+
* };
|
|
787
|
+
*
|
|
788
|
+
* const response = streamText({
|
|
789
|
+
* model: openai('gpt-4o'),
|
|
790
|
+
* tools,
|
|
791
|
+
* prompt,
|
|
792
|
+
* onFinish: async () => {
|
|
793
|
+
* await stdioClient.close();
|
|
794
|
+
* await sseClient.close();
|
|
795
|
+
* await customClient.close();
|
|
796
|
+
* },
|
|
797
|
+
* });
|
|
798
|
+
* ```
|
|
799
|
+
*/
|
|
800
|
+
async function createMCPToolsFromConfigs(configs, options = {}) {
|
|
801
|
+
const clients = [];
|
|
802
|
+
const toolSets = [];
|
|
803
|
+
const clientPromises = configs.map(async (config) => {
|
|
804
|
+
const retryConfig = config.retry ?? DEFAULT_RETRY_CONFIG;
|
|
805
|
+
const timeoutMs = config.timeoutMs || 3e4;
|
|
806
|
+
const enableGracefulDegradation = config.gracefulDegradation ?? options.gracefulDegradation ?? false;
|
|
807
|
+
try {
|
|
808
|
+
return await withRetryAndTimeout(async () => {
|
|
809
|
+
const client = await createMCPClient({ transport: createTransportFromConfig(config.transport) });
|
|
810
|
+
try {
|
|
811
|
+
return {
|
|
812
|
+
client,
|
|
813
|
+
toolSet: await withRetryAndTimeout(() => client.tools(), retryConfig, timeoutMs, `MCP tools retrieval (${config.name})`),
|
|
814
|
+
config
|
|
815
|
+
};
|
|
816
|
+
} catch (error) {
|
|
817
|
+
try {
|
|
818
|
+
await client.close();
|
|
819
|
+
} catch (closeError) {
|
|
820
|
+
logError(`Failed to close failed client ${config.name}`, {
|
|
821
|
+
operation: "mcp_client_cleanup",
|
|
822
|
+
metadata: { clientName: config.name },
|
|
823
|
+
error: closeError instanceof Error ? closeError : new Error(String(closeError))
|
|
824
|
+
});
|
|
825
|
+
}
|
|
826
|
+
throw error;
|
|
827
|
+
}
|
|
828
|
+
}, retryConfig, timeoutMs, `MCP client creation (${config.name})`);
|
|
829
|
+
} catch (error) {
|
|
830
|
+
const mcpError = new MCPConnectionError(`Failed to create MCP client '${config.name}' after retries`, config.name, config.transport.type, error instanceof Error ? error : new Error(String(error)));
|
|
831
|
+
if (enableGracefulDegradation) {
|
|
832
|
+
logWarn(`Failed to create MCP client ${config.name}, continuing with degraded functionality`, {
|
|
833
|
+
operation: "mcp_client_creation_degraded",
|
|
834
|
+
metadata: {
|
|
835
|
+
clientName: config.name,
|
|
836
|
+
transportType: config.transport.type,
|
|
837
|
+
retryAttempts: retryConfig.maxAttempts,
|
|
838
|
+
timeoutMs,
|
|
839
|
+
error: mcpError.message
|
|
840
|
+
}
|
|
841
|
+
});
|
|
842
|
+
return null;
|
|
843
|
+
} else throw mcpError;
|
|
844
|
+
}
|
|
845
|
+
});
|
|
846
|
+
const results = await Promise.all(clientPromises);
|
|
847
|
+
for (const result of results) if (result) {
|
|
848
|
+
clients.push(result.client);
|
|
849
|
+
toolSets.push(result.toolSet);
|
|
850
|
+
}
|
|
851
|
+
const tools = mergeToolSets(toolSets);
|
|
852
|
+
const closeAllClients = async () => {
|
|
853
|
+
const closePromises = clients.map(async (client, index) => {
|
|
854
|
+
try {
|
|
855
|
+
await client.close();
|
|
856
|
+
} catch (error) {
|
|
857
|
+
logWarn(`Failed to close MCP client ${index}`, {
|
|
858
|
+
operation: "mcp_client_close",
|
|
859
|
+
metadata: {
|
|
860
|
+
clientIndex: index,
|
|
861
|
+
error: error instanceof Error ? error.message : String(error)
|
|
862
|
+
}
|
|
863
|
+
});
|
|
864
|
+
}
|
|
865
|
+
});
|
|
866
|
+
await Promise.all(closePromises);
|
|
867
|
+
};
|
|
868
|
+
return {
|
|
869
|
+
tools,
|
|
870
|
+
clients,
|
|
871
|
+
closeAllClients
|
|
872
|
+
};
|
|
873
|
+
}
|
|
874
|
+
function mergeToolSets(toolSets) {
|
|
875
|
+
const merged = {};
|
|
876
|
+
for (const toolSet of toolSets) Object.assign(merged, toolSet);
|
|
877
|
+
return merged;
|
|
878
|
+
}
|
|
879
|
+
|
|
880
|
+
//#endregion
|
|
881
|
+
export { MCPErrorUtils as _, MCPHealthStatus as a, MCPTransportError as c, createMCPToolsFromConfigs as d, createTransportFromConfig as f, MCPErrorHandlerFactory as g, AISDKCompatibleMCPError as h, MCPHealthMonitor as i, client_exports as l, withRetryAndTimeout as m, DEFAULT_RETRY_CONFIG as n, MCPRequestManager as o, globalMCPHealthMonitor as p, MCPConnectionError as r, MCPRetryableError as s, DEFAULT_HEALTH_CHECK_CONFIG as t, createMCPToolsForRequest as u };
|
|
882
|
+
//# sourceMappingURL=client-CpacYDIE.mjs.map
|