@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,54 @@
|
|
|
1
|
+
import { Nr as SDKLanguageModel } from "./ai-runtime-DIwOEc6g.mjs";
|
|
2
|
+
import { a as AgentExecutionOptions, c as BaseAgentState, n as AgentConfig, t as Agent } from "./types-DbUfMCnT.mjs";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
|
|
5
|
+
//#region src/agents/coordinator/coordinator-agent.d.ts
|
|
6
|
+
interface Task {
|
|
7
|
+
id: string;
|
|
8
|
+
description: string;
|
|
9
|
+
agentId: string;
|
|
10
|
+
dependencies?: string[];
|
|
11
|
+
priority?: number;
|
|
12
|
+
input?: unknown;
|
|
13
|
+
}
|
|
14
|
+
interface TaskResult {
|
|
15
|
+
taskId: string;
|
|
16
|
+
status: 'pending' | 'running' | 'completed' | 'failed';
|
|
17
|
+
result?: unknown;
|
|
18
|
+
error?: string;
|
|
19
|
+
executionTimeMs?: number;
|
|
20
|
+
}
|
|
21
|
+
declare const ExecutionPlanSchema: z.ZodObject<{
|
|
22
|
+
description: z.ZodString;
|
|
23
|
+
tasks: z.ZodArray<z.ZodObject<{
|
|
24
|
+
id: z.ZodString;
|
|
25
|
+
description: z.ZodString;
|
|
26
|
+
agentId: z.ZodString;
|
|
27
|
+
dependencies: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
28
|
+
priority: z.ZodOptional<z.ZodNumber>;
|
|
29
|
+
}, z.core.$strip>>;
|
|
30
|
+
estimatedTimeMs: z.ZodOptional<z.ZodNumber>;
|
|
31
|
+
}, z.core.$strip>;
|
|
32
|
+
type ExecutionPlan = z.infer<typeof ExecutionPlanSchema>;
|
|
33
|
+
interface CoordinatorConfig extends Omit<AgentConfig, 'systemPrompt'> {
|
|
34
|
+
agents: Map<string, Agent>;
|
|
35
|
+
maxParallel?: number;
|
|
36
|
+
taskTimeoutMs?: number;
|
|
37
|
+
planningPrompt?: string;
|
|
38
|
+
}
|
|
39
|
+
declare function createCoordinatorAgent(config: CoordinatorConfig): {
|
|
40
|
+
config: AgentConfig;
|
|
41
|
+
agents: Map<string, Agent>;
|
|
42
|
+
plan(goal: string, options: {
|
|
43
|
+
model: SDKLanguageModel;
|
|
44
|
+
context?: AgentExecutionOptions["context"];
|
|
45
|
+
}): Promise<ExecutionPlan>;
|
|
46
|
+
executePlan(plan: ExecutionPlan, options: AgentExecutionOptions): Promise<Map<string, TaskResult>>;
|
|
47
|
+
execute(prompt: string, options: AgentExecutionOptions): Promise<BaseAgentState & {
|
|
48
|
+
plan: ExecutionPlan;
|
|
49
|
+
taskResults: Map<string, TaskResult>;
|
|
50
|
+
}>;
|
|
51
|
+
};
|
|
52
|
+
//#endregion
|
|
53
|
+
export { TaskResult as a, Task as i, ExecutionPlan as n, createCoordinatorAgent as o, ExecutionPlanSchema as r, CoordinatorConfig as t };
|
|
54
|
+
//# sourceMappingURL=coordinator-agent-BglqZLwo.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coordinator-agent-BglqZLwo.d.mts","names":[],"sources":["../src/agents/coordinator/coordinator-agent.ts"],"mappings":";;;;;UAkBiB,IAAA;EAEf,EAAA;EAEA,WAAA;EAEA,OAAA;EAEA,YAAA;EAEA,QAAA;EAEA,KAAA;AAAA;AAAA,UAMe,UAAA;EAEf,MAAA;EAEA,MAAA;EAEA,MAAA;EAEA,KAAA;EAEA,eAAA;AAAA;AAAA,cAMW,mBAAA,EAAmB,CAAA,CAAA,SAAA;;;;;;;;;;;KAiBpB,aAAA,GAAgB,CAAA,CAAE,KAAA,QAAa,mBAAA;AAAA,UAK1B,iBAAA,SAA0B,IAAA,CAAK,WAAA;EAE9C,MAAA,EAAQ,GAAA,SAAY,KAAA;EAEpB,WAAA;EAEA,aAAA;EAEA,cAAA;AAAA;AAAA,iBA4Bc,sBAAA,CAAuB,MAAA,EAAQ,iBAAA;UAWJ,WAAA;;qBAOzB,OAAA;IACD,KAAA,EAAO,gBAAA;IAAkB,OAAA,GAAU,qBAAA;EAAA,IAC7C,OAAA,CAAQ,aAAA;oBAgBH,aAAA,EAAa,OAAA,EACV,qBAAA,GACR,OAAA,CAAQ,GAAA,SAAY,UAAA;0BAkJP,OAAA,EACL,qBAAA,GACR,OAAA,CAAQ,cAAA;IAAmB,IAAA,EAAM,aAAA;IAAe,WAAA,EAAa,GAAA,SAAY,UAAA;EAAA;AAAA"}
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
import { $ as generateObject } from "./ai-runtime-CDzQztTt.mjs";
|
|
2
|
+
import { n as createInitialState } from "./factory-DP6VSl8C.mjs";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
import { withTimeout } from "@od-oneapp/core-utils/shared/timeout";
|
|
5
|
+
|
|
6
|
+
//#region src/agents/coordinator/coordinator-agent.ts
|
|
7
|
+
/**
|
|
8
|
+
* @fileoverview Coordinator agent for multi-agent orchestration.
|
|
9
|
+
* @module @od-oneapp/ai-platform/agents/coordinator
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Execution plan schema.
|
|
13
|
+
*/
|
|
14
|
+
const ExecutionPlanSchema = z.object({
|
|
15
|
+
description: z.string(),
|
|
16
|
+
tasks: z.array(z.object({
|
|
17
|
+
id: z.string(),
|
|
18
|
+
description: z.string(),
|
|
19
|
+
agentId: z.string(),
|
|
20
|
+
dependencies: z.array(z.string()).optional(),
|
|
21
|
+
priority: z.number().optional()
|
|
22
|
+
})),
|
|
23
|
+
estimatedTimeMs: z.number().optional()
|
|
24
|
+
});
|
|
25
|
+
/**
|
|
26
|
+
* Creates a coordinator agent that orchestrates multiple agents.
|
|
27
|
+
*
|
|
28
|
+
* @param config - Coordinator configuration
|
|
29
|
+
* @returns Coordinator agent
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```ts
|
|
33
|
+
* const coordinator = createCoordinatorAgent({
|
|
34
|
+
* id: 'coordinator',
|
|
35
|
+
* name: 'Task Coordinator',
|
|
36
|
+
* description: 'Coordinates multi-agent workflows',
|
|
37
|
+
* agents: new Map([
|
|
38
|
+
* ['research', researchAgent],
|
|
39
|
+
* ['code', codeAgent],
|
|
40
|
+
* ['review', reviewAgent],
|
|
41
|
+
* ]),
|
|
42
|
+
* maxParallel: 3,
|
|
43
|
+
* });
|
|
44
|
+
*
|
|
45
|
+
* const result = await coordinator.execute('Build a todo app with tests', {
|
|
46
|
+
* model: openai('gpt-4o'),
|
|
47
|
+
* });
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
function createCoordinatorAgent(config) {
|
|
51
|
+
const { agents, maxParallel = 3, taskTimeoutMs = 6e4, planningPrompt } = config;
|
|
52
|
+
if (maxParallel < 1) throw new Error(`maxParallel must be at least 1, got ${maxParallel}`);
|
|
53
|
+
const systemPrompt = planningPrompt ?? buildPlanningPrompt(agents);
|
|
54
|
+
return {
|
|
55
|
+
config: {
|
|
56
|
+
...config,
|
|
57
|
+
systemPrompt
|
|
58
|
+
},
|
|
59
|
+
agents,
|
|
60
|
+
async plan(goal, options) {
|
|
61
|
+
const { object } = await generateObject({
|
|
62
|
+
model: options.model,
|
|
63
|
+
system: systemPrompt,
|
|
64
|
+
prompt: `Create an execution plan for this goal:\n\n"${goal}"`,
|
|
65
|
+
schema: ExecutionPlanSchema,
|
|
66
|
+
abortSignal: options.context?.abortSignal
|
|
67
|
+
});
|
|
68
|
+
return object;
|
|
69
|
+
},
|
|
70
|
+
async executePlan(plan, options) {
|
|
71
|
+
const taskIds = plan.tasks.map((t) => t.id);
|
|
72
|
+
if (new Set(taskIds).size !== taskIds.length) {
|
|
73
|
+
const duplicates = taskIds.filter((id, idx) => taskIds.indexOf(id) !== idx);
|
|
74
|
+
throw new Error(`Duplicate task IDs detected: ${[...new Set(duplicates)].join(", ")}`);
|
|
75
|
+
}
|
|
76
|
+
const results = /* @__PURE__ */ new Map();
|
|
77
|
+
const pending = new Set(plan.tasks.map((t) => t.id));
|
|
78
|
+
const running = /* @__PURE__ */ new Set();
|
|
79
|
+
const runningPromises = /* @__PURE__ */ new Map();
|
|
80
|
+
for (const task of plan.tasks) results.set(task.id, {
|
|
81
|
+
taskId: task.id,
|
|
82
|
+
status: "pending"
|
|
83
|
+
});
|
|
84
|
+
while (pending.size > 0 || running.size > 0) {
|
|
85
|
+
const availableSlots = maxParallel - running.size;
|
|
86
|
+
const readyTasks = plan.tasks.filter((task) => {
|
|
87
|
+
if (!pending.has(task.id)) return false;
|
|
88
|
+
return (task.dependencies ?? []).every((depId) => {
|
|
89
|
+
return results.get(depId)?.status === "completed";
|
|
90
|
+
});
|
|
91
|
+
}).sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0)).slice(0, Math.max(0, availableSlots));
|
|
92
|
+
if (readyTasks.length === 0 && running.size === 0) {
|
|
93
|
+
const missingDeps = plan.tasks.filter((task) => pending.has(task.id)).flatMap((task) => {
|
|
94
|
+
return (task.dependencies ?? []).filter((depId) => !results.has(depId)).map((depId) => ({
|
|
95
|
+
taskId: task.id,
|
|
96
|
+
depId
|
|
97
|
+
}));
|
|
98
|
+
});
|
|
99
|
+
if (missingDeps.length > 0) {
|
|
100
|
+
const missingDep = missingDeps[0];
|
|
101
|
+
if (missingDep) throw new Error(`Task "${missingDep.taskId}" references non-existent dependency "${missingDep.depId}"`);
|
|
102
|
+
}
|
|
103
|
+
if (plan.tasks.some((task) => {
|
|
104
|
+
if (!pending.has(task.id)) return false;
|
|
105
|
+
return (task.dependencies ?? []).some((depId) => results.get(depId)?.status === "failed");
|
|
106
|
+
})) {
|
|
107
|
+
for (const taskId of pending) results.set(taskId, {
|
|
108
|
+
taskId,
|
|
109
|
+
status: "failed",
|
|
110
|
+
error: "Dependency failed"
|
|
111
|
+
});
|
|
112
|
+
break;
|
|
113
|
+
}
|
|
114
|
+
throw new Error("Circular dependency detected in task plan");
|
|
115
|
+
}
|
|
116
|
+
for (const task of readyTasks) {
|
|
117
|
+
pending.delete(task.id);
|
|
118
|
+
running.add(task.id);
|
|
119
|
+
results.set(task.id, {
|
|
120
|
+
taskId: task.id,
|
|
121
|
+
status: "running"
|
|
122
|
+
});
|
|
123
|
+
const taskPromise = (async () => {
|
|
124
|
+
const startTime = Date.now();
|
|
125
|
+
const agent = agents.get(task.agentId);
|
|
126
|
+
if (!agent) {
|
|
127
|
+
results.set(task.id, {
|
|
128
|
+
taskId: task.id,
|
|
129
|
+
status: "failed",
|
|
130
|
+
error: `Agent not found: ${task.agentId}`
|
|
131
|
+
});
|
|
132
|
+
running.delete(task.id);
|
|
133
|
+
runningPromises.delete(task.id);
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
try {
|
|
137
|
+
const depResults = {};
|
|
138
|
+
for (const depId of task.dependencies ?? []) depResults[depId] = results.get(depId)?.result;
|
|
139
|
+
const prompt = buildTaskPrompt(task, depResults);
|
|
140
|
+
const agentResult = await withTimeout(agent.execute(prompt, options), taskTimeoutMs, { name: `Task ${task.id}` });
|
|
141
|
+
results.set(task.id, {
|
|
142
|
+
taskId: task.id,
|
|
143
|
+
status: "completed",
|
|
144
|
+
result: agentResult.result,
|
|
145
|
+
executionTimeMs: Date.now() - startTime
|
|
146
|
+
});
|
|
147
|
+
} catch (error) {
|
|
148
|
+
results.set(task.id, {
|
|
149
|
+
taskId: task.id,
|
|
150
|
+
status: "failed",
|
|
151
|
+
error: error instanceof Error ? error.message : String(error),
|
|
152
|
+
executionTimeMs: Date.now() - startTime
|
|
153
|
+
});
|
|
154
|
+
} finally {
|
|
155
|
+
running.delete(task.id);
|
|
156
|
+
runningPromises.delete(task.id);
|
|
157
|
+
}
|
|
158
|
+
})();
|
|
159
|
+
runningPromises.set(task.id, taskPromise);
|
|
160
|
+
}
|
|
161
|
+
if (runningPromises.size > 0) await Promise.race(runningPromises.values());
|
|
162
|
+
}
|
|
163
|
+
return results;
|
|
164
|
+
},
|
|
165
|
+
async execute(prompt, options) {
|
|
166
|
+
const state = createInitialState(options.messages);
|
|
167
|
+
try {
|
|
168
|
+
const plan = await this.plan(prompt, {
|
|
169
|
+
model: options.model,
|
|
170
|
+
context: options.context
|
|
171
|
+
});
|
|
172
|
+
state.metadata.plan = plan;
|
|
173
|
+
const taskResults = await this.executePlan(plan, options);
|
|
174
|
+
const completedTasks = Array.from(taskResults.values()).filter((r) => r.status === "completed");
|
|
175
|
+
state.isComplete = true;
|
|
176
|
+
state.result = {
|
|
177
|
+
plan,
|
|
178
|
+
taskResults: Object.fromEntries(taskResults),
|
|
179
|
+
completedCount: completedTasks.length,
|
|
180
|
+
totalCount: plan.tasks.length
|
|
181
|
+
};
|
|
182
|
+
return {
|
|
183
|
+
...state,
|
|
184
|
+
plan,
|
|
185
|
+
taskResults
|
|
186
|
+
};
|
|
187
|
+
} catch (error) {
|
|
188
|
+
state.error = error instanceof Error ? error : new Error(String(error));
|
|
189
|
+
state.isComplete = true;
|
|
190
|
+
return {
|
|
191
|
+
...state,
|
|
192
|
+
plan: {
|
|
193
|
+
description: "",
|
|
194
|
+
tasks: []
|
|
195
|
+
},
|
|
196
|
+
taskResults: /* @__PURE__ */ new Map()
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Builds the planning system prompt.
|
|
204
|
+
*/
|
|
205
|
+
function buildPlanningPrompt(agents) {
|
|
206
|
+
return `You are a task planning coordinator. Your job is to break down complex goals into tasks that can be executed by specialized agents.
|
|
207
|
+
|
|
208
|
+
Available Agents:
|
|
209
|
+
${Array.from(agents.entries()).map(([id, agent]) => `- ${id}: ${agent.config.description}`).join("\n")}
|
|
210
|
+
|
|
211
|
+
Instructions:
|
|
212
|
+
1. Analyze the goal to identify required sub-tasks
|
|
213
|
+
2. Assign each task to the most appropriate agent
|
|
214
|
+
3. Define dependencies between tasks (which must complete before others can start)
|
|
215
|
+
4. Prioritize tasks when possible (higher priority = execute first when ready)
|
|
216
|
+
5. Keep tasks focused and atomic
|
|
217
|
+
|
|
218
|
+
Output your plan in the specified JSON format.`;
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Builds a task prompt including dependency results.
|
|
222
|
+
*/
|
|
223
|
+
function buildTaskPrompt(task, depResults) {
|
|
224
|
+
let prompt = task.description;
|
|
225
|
+
if (task.input) prompt += `\n\nInput: ${JSON.stringify(task.input)}`;
|
|
226
|
+
const deps = Object.entries(depResults);
|
|
227
|
+
if (deps.length > 0) {
|
|
228
|
+
prompt += "\n\nResults from previous tasks:";
|
|
229
|
+
for (const [depId, result] of deps) prompt += `\n- ${depId}: ${JSON.stringify(result)}`;
|
|
230
|
+
}
|
|
231
|
+
return prompt;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
//#endregion
|
|
235
|
+
export { createCoordinatorAgent as n, ExecutionPlanSchema as t };
|
|
236
|
+
//# sourceMappingURL=coordinator-agent-WFWBRL-G.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coordinator-agent-WFWBRL-G.mjs","names":[],"sources":["../src/agents/coordinator/coordinator-agent.ts"],"sourcesContent":["/**\n * @fileoverview Coordinator agent for multi-agent orchestration.\n * @module @od-oneapp/ai-platform/agents/coordinator\n */\n\nimport { withTimeout } from '@repo/core-utils/shared/timeout';\nimport { z } from 'zod';\n\nimport { generateObject } from '../../shared';\nimport { createInitialState } from '../base/factory';\n\nimport type { SDKLanguageModel } from '../../shared';\nimport type { Agent, AgentConfig, BaseAgentState, AgentExecutionOptions } from '../base/types';\n\n\n/**\n * Task definition for coordinator.\n */\nexport interface Task {\n /** Task ID */\n id: string;\n /** Task description */\n description: string;\n /** Agent ID to execute task */\n agentId: string;\n /** Dependencies (task IDs that must complete first) */\n dependencies?: string[];\n /** Priority (higher = more urgent) */\n priority?: number;\n /** Input data for the task */\n input?: unknown;\n}\n\n/**\n * Task result.\n */\nexport interface TaskResult {\n /** Task ID */\n taskId: string;\n /** Task status */\n status: 'pending' | 'running' | 'completed' | 'failed';\n /** Result data */\n result?: unknown;\n /** Error if failed */\n error?: string;\n /** Execution time in ms */\n executionTimeMs?: number;\n}\n\n/**\n * Execution plan schema.\n */\nexport const ExecutionPlanSchema = z.object({\n /** Plan description */\n description: z.string(),\n /** Tasks to execute */\n tasks: z.array(\n z.object({\n id: z.string(),\n description: z.string(),\n agentId: z.string(),\n dependencies: z.array(z.string()).optional(),\n priority: z.number().optional(),\n }),\n ),\n /** Estimated total time */\n estimatedTimeMs: z.number().optional(),\n});\n\nexport type ExecutionPlan = z.infer<typeof ExecutionPlanSchema>;\n\n/**\n * Coordinator agent configuration.\n */\nexport interface CoordinatorConfig extends Omit<AgentConfig, 'systemPrompt'> {\n /** Available agents */\n agents: Map<string, Agent>;\n /** Maximum parallel tasks */\n maxParallel?: number;\n /** Task timeout in ms */\n taskTimeoutMs?: number;\n /** Custom planning prompt */\n planningPrompt?: string;\n}\n\n/**\n * Creates a coordinator agent that orchestrates multiple agents.\n *\n * @param config - Coordinator configuration\n * @returns Coordinator agent\n *\n * @example\n * ```ts\n * const coordinator = createCoordinatorAgent({\n * id: 'coordinator',\n * name: 'Task Coordinator',\n * description: 'Coordinates multi-agent workflows',\n * agents: new Map([\n * ['research', researchAgent],\n * ['code', codeAgent],\n * ['review', reviewAgent],\n * ]),\n * maxParallel: 3,\n * });\n *\n * const result = await coordinator.execute('Build a todo app with tests', {\n * model: openai('gpt-4o'),\n * });\n * ```\n */\nexport function createCoordinatorAgent(config: CoordinatorConfig) {\n const { agents, maxParallel = 3, taskTimeoutMs = 60000, planningPrompt } = config;\n\n // Validate maxParallel to avoid misleading failures\n if (maxParallel < 1) {\n throw new Error(`maxParallel must be at least 1, got ${maxParallel}`);\n }\n\n const systemPrompt = planningPrompt ?? buildPlanningPrompt(agents);\n\n return {\n config: { ...config, systemPrompt } as AgentConfig,\n agents,\n\n /**\n * Creates an execution plan for a goal.\n */\n async plan(\n goal: string,\n options: { model: SDKLanguageModel; context?: AgentExecutionOptions['context'] },\n ): Promise<ExecutionPlan> {\n const { object } = await generateObject({\n model: options.model,\n system: systemPrompt,\n prompt: `Create an execution plan for this goal:\\n\\n\"${goal}\"`,\n schema: ExecutionPlanSchema,\n abortSignal: options.context?.abortSignal,\n });\n\n return object;\n },\n\n /**\n * Executes a plan with dependency management.\n */\n async executePlan(\n plan: ExecutionPlan,\n options: AgentExecutionOptions,\n ): Promise<Map<string, TaskResult>> {\n // Validate unique task IDs to prevent silent task skipping\n const taskIds = plan.tasks.map(t => t.id);\n const uniqueIds = new Set(taskIds);\n if (uniqueIds.size !== taskIds.length) {\n const duplicates = taskIds.filter((id, idx) => taskIds.indexOf(id) !== idx);\n throw new Error(`Duplicate task IDs detected: ${[...new Set(duplicates)].join(', ')}`);\n }\n\n const results = new Map<string, TaskResult>();\n const pending = new Set(plan.tasks.map(t => t.id));\n const running = new Set<string>();\n const runningPromises = new Map<string, Promise<void>>();\n\n // Initialize all tasks as pending\n for (const task of plan.tasks) {\n results.set(task.id, { taskId: task.id, status: 'pending' });\n }\n\n while (pending.size > 0 || running.size > 0) {\n // Find ready tasks (dependencies completed), sorted by priority descending\n const availableSlots = maxParallel - running.size;\n const readyTasks = plan.tasks\n .filter(task => {\n if (!pending.has(task.id)) return false;\n\n const deps = task.dependencies ?? [];\n return deps.every(depId => {\n const depResult = results.get(depId);\n return depResult?.status === 'completed';\n });\n })\n .sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0))\n .slice(0, Math.max(0, availableSlots));\n\n if (readyTasks.length === 0 && running.size === 0) {\n // Check for missing dependencies first\n const missingDeps = plan.tasks\n .filter(task => pending.has(task.id))\n .flatMap(task => {\n const deps = task.dependencies ?? [];\n return deps\n .filter(depId => !results.has(depId))\n .map(depId => ({ taskId: task.id, depId }));\n });\n\n if (missingDeps.length > 0) {\n const missingDep = missingDeps[0];\n if (missingDep) {\n throw new Error(\n `Task \"${missingDep.taskId}\" references non-existent dependency \"${missingDep.depId}\"`,\n );\n }\n }\n\n // Check for failed dependencies\n const hasFailedDeps = plan.tasks.some(task => {\n if (!pending.has(task.id)) return false;\n const deps = task.dependencies ?? [];\n return deps.some(depId => results.get(depId)?.status === 'failed');\n });\n\n if (hasFailedDeps) {\n // Mark remaining tasks as failed due to dependency failure\n for (const taskId of pending) {\n results.set(taskId, {\n taskId,\n status: 'failed',\n error: 'Dependency failed',\n });\n }\n break;\n }\n\n // Circular dependency\n throw new Error('Circular dependency detected in task plan');\n }\n\n // Start ready tasks\n for (const task of readyTasks) {\n pending.delete(task.id);\n running.add(task.id);\n results.set(task.id, { taskId: task.id, status: 'running' });\n\n const taskPromise = (async () => {\n const startTime = Date.now();\n const agent = agents.get(task.agentId);\n\n if (!agent) {\n results.set(task.id, {\n taskId: task.id,\n status: 'failed',\n error: `Agent not found: ${task.agentId}`,\n });\n running.delete(task.id);\n runningPromises.delete(task.id);\n return;\n }\n\n try {\n // Build context with dependency results\n const depResults: Record<string, unknown> = {};\n for (const depId of task.dependencies ?? []) {\n depResults[depId] = results.get(depId)?.result;\n }\n\n const prompt = buildTaskPrompt(task, depResults);\n const agentResult = await withTimeout(agent.execute(prompt, options), taskTimeoutMs, {\n name: `Task ${task.id}`,\n });\n\n results.set(task.id, {\n taskId: task.id,\n status: 'completed',\n result: agentResult.result,\n executionTimeMs: Date.now() - startTime,\n });\n } catch (error) {\n results.set(task.id, {\n taskId: task.id,\n status: 'failed',\n error: error instanceof Error ? error.message : String(error),\n executionTimeMs: Date.now() - startTime,\n });\n } finally {\n running.delete(task.id);\n runningPromises.delete(task.id);\n }\n })();\n\n runningPromises.set(task.id, taskPromise);\n }\n\n // Wait for at least one task to complete if there are any running\n if (runningPromises.size > 0) {\n await Promise.race(runningPromises.values());\n }\n }\n\n return results;\n },\n\n /**\n * Full execution: plan + execute.\n */\n async execute(\n prompt: string,\n options: AgentExecutionOptions,\n ): Promise<BaseAgentState & { plan: ExecutionPlan; taskResults: Map<string, TaskResult> }> {\n const state = createInitialState(options.messages);\n\n try {\n // Create plan\n const plan = await this.plan(prompt, {\n model: options.model,\n context: options.context,\n });\n\n state.metadata.plan = plan;\n\n // Execute plan\n const taskResults = await this.executePlan(plan, options);\n\n // Aggregate results\n const completedTasks = Array.from(taskResults.values()).filter(\n r => r.status === 'completed',\n );\n\n state.isComplete = true;\n state.result = {\n plan,\n taskResults: Object.fromEntries(taskResults),\n completedCount: completedTasks.length,\n totalCount: plan.tasks.length,\n };\n\n return { ...state, plan, taskResults };\n } catch (error) {\n state.error = error instanceof Error ? error : new Error(String(error));\n state.isComplete = true;\n return {\n ...state,\n plan: { description: '', tasks: [] },\n taskResults: new Map(),\n };\n }\n },\n };\n}\n\n/**\n * Builds the planning system prompt.\n */\nfunction buildPlanningPrompt(agents: Map<string, Agent>): string {\n const agentList = Array.from(agents.entries())\n .map(([id, agent]) => `- ${id}: ${agent.config.description}`)\n .join('\\n');\n\n return `You are a task planning coordinator. Your job is to break down complex goals into tasks that can be executed by specialized agents.\n\nAvailable Agents:\n${agentList}\n\nInstructions:\n1. Analyze the goal to identify required sub-tasks\n2. Assign each task to the most appropriate agent\n3. Define dependencies between tasks (which must complete before others can start)\n4. Prioritize tasks when possible (higher priority = execute first when ready)\n5. Keep tasks focused and atomic\n\nOutput your plan in the specified JSON format.`;\n}\n\n/**\n * Builds a task prompt including dependency results.\n */\nfunction buildTaskPrompt(task: Task, depResults: Record<string, unknown>): string {\n let prompt = task.description;\n\n if (task.input) {\n prompt += `\\n\\nInput: ${JSON.stringify(task.input)}`;\n }\n\n const deps = Object.entries(depResults);\n if (deps.length > 0) {\n prompt += '\\n\\nResults from previous tasks:';\n for (const [depId, result] of deps) {\n prompt += `\\n- ${depId}: ${JSON.stringify(result)}`;\n }\n }\n\n return prompt;\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { createHash, createHmac } from "node:crypto";
|
|
2
|
+
|
|
3
|
+
//#region src/server/cache/crypto.ts
|
|
4
|
+
/**
|
|
5
|
+
* @fileoverview Cryptographic helper functions for audit logging and data integrity
|
|
6
|
+
* Provides hashing and signature generation for security-critical operations
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Generate a hash of the input data using SHA-256
|
|
10
|
+
* @param input - Data to hash (string or object)
|
|
11
|
+
* @returns Hex-encoded hash
|
|
12
|
+
*/
|
|
13
|
+
function hashInput(input) {
|
|
14
|
+
const data = typeof input === "string" ? input : JSON.stringify(input);
|
|
15
|
+
return createHash("sha256").update(data).digest("hex");
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Generate an HMAC signature for the input data
|
|
19
|
+
* @param input - Data to sign
|
|
20
|
+
* @param secret - Secret key for HMAC (defaults to env var or empty string)
|
|
21
|
+
* @returns Hex-encoded HMAC signature
|
|
22
|
+
*/
|
|
23
|
+
function generateSignature(input, secret) {
|
|
24
|
+
const data = typeof input === "string" ? input : JSON.stringify(input);
|
|
25
|
+
return createHmac("sha256", secret || process.env.AUDIT_SECRET_KEY || "").update(data).digest("hex");
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Verify an HMAC signature
|
|
29
|
+
* @param input - Original data that was signed
|
|
30
|
+
* @param signature - Signature to verify
|
|
31
|
+
* @param secret - Secret key for HMAC (defaults to env var or empty string)
|
|
32
|
+
* @returns True if signature is valid
|
|
33
|
+
*/
|
|
34
|
+
function verifySignature(input, signature, secret) {
|
|
35
|
+
return generateSignature(input, secret) === signature;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
//#endregion
|
|
39
|
+
export { hashInput as n, verifySignature as r, generateSignature as t };
|
|
40
|
+
//# sourceMappingURL=crypto-8ABhc3TD.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crypto-8ABhc3TD.mjs","names":[],"sources":["../src/server/cache/crypto.ts"],"sourcesContent":["/**\n * @fileoverview Cryptographic helper functions for audit logging and data integrity\n * Provides hashing and signature generation for security-critical operations\n */\n\nimport { createHash, createHmac } from 'node:crypto';\n\n/**\n * Generate a hash of the input data using SHA-256\n * @param input - Data to hash (string or object)\n * @returns Hex-encoded hash\n */\nexport function hashInput(input: string | Record<string, unknown>): string {\n const data = typeof input === 'string' ? input : JSON.stringify(input);\n return createHash('sha256').update(data).digest('hex');\n}\n\n/**\n * Generate an HMAC signature for the input data\n * @param input - Data to sign\n * @param secret - Secret key for HMAC (defaults to env var or empty string)\n * @returns Hex-encoded HMAC signature\n */\nexport function generateSignature(\n input: string | Record<string, unknown>,\n secret?: string,\n): string {\n const data = typeof input === 'string' ? input : JSON.stringify(input);\n const key = secret || process.env.AUDIT_SECRET_KEY || '';\n return createHmac('sha256', key).update(data).digest('hex');\n}\n\n/**\n * Verify an HMAC signature\n * @param input - Original data that was signed\n * @param signature - Signature to verify\n * @param secret - Secret key for HMAC (defaults to env var or empty string)\n * @returns True if signature is valid\n */\nexport function verifySignature(\n input: string | Record<string, unknown>,\n signature: string,\n secret?: string,\n): boolean {\n const expected = generateSignature(input, secret);\n return expected === signature;\n}\n"],"mappings":";;;;;;;;;;;;AAYA,SAAgB,UAAU,OAAiD;CACzE,MAAM,OAAO,OAAO,UAAU,WAAW,QAAQ,KAAK,UAAU,MAAM;AACtE,QAAO,WAAW,SAAS,CAAC,OAAO,KAAK,CAAC,OAAO,MAAM;;;;;;;;AASxD,SAAgB,kBACd,OACA,QACQ;CACR,MAAM,OAAO,OAAO,UAAU,WAAW,QAAQ,KAAK,UAAU,MAAM;AAEtE,QAAO,WAAW,UADN,UAAU,QAAQ,IAAI,oBAAoB,GACtB,CAAC,OAAO,KAAK,CAAC,OAAO,MAAM;;;;;;;;;AAU7D,SAAgB,gBACd,OACA,WACA,QACS;AAET,QADiB,kBAAkB,OAAO,OAAO,KAC7B"}
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
import { t as __exportAll } from "./chunk-CkzbjWQW.mjs";
|
|
2
|
+
import { logWarn } from "@od-oneapp/shared/logs";
|
|
3
|
+
|
|
4
|
+
//#region src/tools/mcp/transports.ts
|
|
5
|
+
/**
|
|
6
|
+
* Pre-configured MCP transports for common use cases
|
|
7
|
+
*/
|
|
8
|
+
const mcpTransports = {
|
|
9
|
+
filesystem: (rootPath = process.cwd()) => ({
|
|
10
|
+
name: "filesystem",
|
|
11
|
+
transport: {
|
|
12
|
+
type: "stdio",
|
|
13
|
+
command: "npx",
|
|
14
|
+
args: [
|
|
15
|
+
"-y",
|
|
16
|
+
"@modelcontextprotocol/server-filesystem",
|
|
17
|
+
rootPath
|
|
18
|
+
]
|
|
19
|
+
}
|
|
20
|
+
}),
|
|
21
|
+
sqlite: (dbPath) => ({
|
|
22
|
+
name: "sqlite",
|
|
23
|
+
transport: {
|
|
24
|
+
type: "stdio",
|
|
25
|
+
command: "npx",
|
|
26
|
+
args: [
|
|
27
|
+
"-y",
|
|
28
|
+
"@modelcontextprotocol/server-sqlite",
|
|
29
|
+
dbPath
|
|
30
|
+
]
|
|
31
|
+
}
|
|
32
|
+
}),
|
|
33
|
+
git: (repoPath = process.cwd()) => ({
|
|
34
|
+
name: "git",
|
|
35
|
+
transport: {
|
|
36
|
+
type: "stdio",
|
|
37
|
+
command: "npx",
|
|
38
|
+
args: [
|
|
39
|
+
"-y",
|
|
40
|
+
"@modelcontextprotocol/server-git",
|
|
41
|
+
repoPath
|
|
42
|
+
]
|
|
43
|
+
}
|
|
44
|
+
}),
|
|
45
|
+
sse: (name, url) => ({
|
|
46
|
+
name,
|
|
47
|
+
transport: {
|
|
48
|
+
type: "sse",
|
|
49
|
+
url
|
|
50
|
+
}
|
|
51
|
+
}),
|
|
52
|
+
stdio: (name, command, args = []) => ({
|
|
53
|
+
name,
|
|
54
|
+
transport: {
|
|
55
|
+
type: "stdio",
|
|
56
|
+
command,
|
|
57
|
+
args
|
|
58
|
+
}
|
|
59
|
+
}),
|
|
60
|
+
http: (name, httpUrl, sessionId) => ({
|
|
61
|
+
name,
|
|
62
|
+
transport: {
|
|
63
|
+
type: "http",
|
|
64
|
+
url: httpUrl,
|
|
65
|
+
sessionId
|
|
66
|
+
}
|
|
67
|
+
}),
|
|
68
|
+
perplexityAsk: () => ({
|
|
69
|
+
name: "perplexity-ask",
|
|
70
|
+
transport: {
|
|
71
|
+
type: "stdio",
|
|
72
|
+
command: "npx",
|
|
73
|
+
args: ["-y", "server-perplexity-ask"]
|
|
74
|
+
}
|
|
75
|
+
})
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
//#endregion
|
|
79
|
+
//#region src/tools/mcp/environment.ts
|
|
80
|
+
/**
|
|
81
|
+
* @fileoverview environment.ts
|
|
82
|
+
*/
|
|
83
|
+
var environment_exports = /* @__PURE__ */ __exportAll({
|
|
84
|
+
discoverMCPServersFromEnvironment: () => discoverMCPServersFromEnvironment,
|
|
85
|
+
getMCPServers: () => getMCPServers,
|
|
86
|
+
validateMCPEnvironment: () => validateMCPEnvironment
|
|
87
|
+
});
|
|
88
|
+
/**
|
|
89
|
+
* Discover MCP servers from environment variables
|
|
90
|
+
*
|
|
91
|
+
* Environment variable format:
|
|
92
|
+
* - MCP_SERVERS=filesystem,git,perplexity # Enable specific servers
|
|
93
|
+
* - MCP_FILESYSTEM_PATH=/workspace # Configure filesystem path
|
|
94
|
+
* - MCP_CUSTOM_SQLITE_DB=/data/app.db # Configure sqlite database
|
|
95
|
+
* - MCP_CUSTOM_SSE_URL=http://example.com # Configure SSE server
|
|
96
|
+
* - MCP_CUSTOM_HTTP_URL=http://example.com # Configure HTTP server
|
|
97
|
+
*/
|
|
98
|
+
function discoverMCPServersFromEnvironment(config = {}) {
|
|
99
|
+
const { prefix = "MCP_", includeDefaults = true, basePath = process.cwd() } = config;
|
|
100
|
+
const allowDefaults = !(process.env.NODE_ENV === "production") || process.env[`${prefix}ALLOW_DEFAULTS`] === "true";
|
|
101
|
+
const servers = [];
|
|
102
|
+
const enabledServers = getEnabledServers(prefix);
|
|
103
|
+
if (includeDefaults && !allowDefaults) logWarn("MCP default servers are disabled in production unless MCP_ALLOW_DEFAULTS=true", { operation: "mcp_default_servers_blocked" });
|
|
104
|
+
if (includeDefaults && allowDefaults) {
|
|
105
|
+
if (enabledServers.includes("filesystem")) {
|
|
106
|
+
const fsPath = process.env[`${prefix}FILESYSTEM_PATH`] || basePath;
|
|
107
|
+
servers.push(mcpTransports.filesystem(fsPath));
|
|
108
|
+
}
|
|
109
|
+
if (enabledServers.includes("git")) {
|
|
110
|
+
const gitPath = process.env[`${prefix}GIT_PATH`] || basePath;
|
|
111
|
+
servers.push(mcpTransports.git(gitPath));
|
|
112
|
+
}
|
|
113
|
+
if (enabledServers.includes("perplexity") && process.env.PERPLEXITY_API_KEY) servers.push(mcpTransports.perplexityAsk());
|
|
114
|
+
if (enabledServers.includes("sqlite")) {
|
|
115
|
+
const dbPath = process.env[`${prefix}SQLITE_DB`];
|
|
116
|
+
if (dbPath) servers.push(mcpTransports.sqlite(dbPath));
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
const customServers = discoverCustomServers(prefix, enabledServers);
|
|
120
|
+
servers.push(...customServers);
|
|
121
|
+
return servers;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Get list of enabled servers from environment
|
|
125
|
+
*/
|
|
126
|
+
function getEnabledServers(prefix) {
|
|
127
|
+
const serversEnv = process.env[`${prefix}SERVERS`];
|
|
128
|
+
if (!serversEnv) return [];
|
|
129
|
+
return serversEnv.split(",").map((s) => s.trim().toLowerCase()).filter((s) => s.length > 0);
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Discover custom MCP servers from environment variables
|
|
133
|
+
*/
|
|
134
|
+
function discoverCustomServers(prefix, enabledServers) {
|
|
135
|
+
const servers = [];
|
|
136
|
+
const processed = /* @__PURE__ */ new Set();
|
|
137
|
+
for (const [envKey, envValue] of Object.entries(process.env)) {
|
|
138
|
+
if (!envKey.startsWith(prefix) || !envValue) continue;
|
|
139
|
+
const match = envKey.match(new RegExp(`^${prefix}CUSTOM_(.+)_(URL|COMMAND|DB)$`));
|
|
140
|
+
if (!match) continue;
|
|
141
|
+
const [, serverName, configType] = match;
|
|
142
|
+
if (!serverName || !configType) continue;
|
|
143
|
+
const name = serverName.toLowerCase();
|
|
144
|
+
if (!enabledServers.includes(name) && !enabledServers.includes("*")) continue;
|
|
145
|
+
if (processed.has(name)) continue;
|
|
146
|
+
processed.add(name);
|
|
147
|
+
const server = createCustomServer(prefix, name, configType.toLowerCase(), envValue);
|
|
148
|
+
if (server) servers.push(server);
|
|
149
|
+
}
|
|
150
|
+
return servers;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Create custom server configuration
|
|
154
|
+
*/
|
|
155
|
+
function createCustomServer(prefix, name, type, value) {
|
|
156
|
+
const envPrefix = `${prefix}CUSTOM_${name.toUpperCase()}_`;
|
|
157
|
+
switch (type) {
|
|
158
|
+
case "url": if (process.env[`${envPrefix}TYPE`]?.toLowerCase() === "sse" || value.includes("/sse")) return {
|
|
159
|
+
name: `custom-${name}`,
|
|
160
|
+
transport: {
|
|
161
|
+
type: "sse",
|
|
162
|
+
url: value,
|
|
163
|
+
headers: parseHeaders(process.env[`${envPrefix}HEADERS`])
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
else {
|
|
167
|
+
const sessionId = process.env[`${envPrefix}SESSION_ID`];
|
|
168
|
+
return {
|
|
169
|
+
name: `custom-${name}`,
|
|
170
|
+
transport: {
|
|
171
|
+
type: "http",
|
|
172
|
+
url: value,
|
|
173
|
+
sessionId
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
case "command": {
|
|
178
|
+
const args = process.env[`${envPrefix}ARGS`];
|
|
179
|
+
return {
|
|
180
|
+
name: `custom-${name}`,
|
|
181
|
+
transport: {
|
|
182
|
+
type: "stdio",
|
|
183
|
+
command: value,
|
|
184
|
+
args: args ? args.split(",").map((arg) => arg.trim()) : []
|
|
185
|
+
}
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
case "db": return mcpTransports.sqlite(value);
|
|
189
|
+
default:
|
|
190
|
+
logWarn(`Unknown custom server type: ${type} for server: ${name}`, {
|
|
191
|
+
serverType: type,
|
|
192
|
+
serverName: name,
|
|
193
|
+
operation: "mcp_environment_config"
|
|
194
|
+
});
|
|
195
|
+
return null;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Parse headers from environment variable
|
|
200
|
+
*/
|
|
201
|
+
function parseHeaders(headersStr) {
|
|
202
|
+
if (!headersStr) return void 0;
|
|
203
|
+
try {
|
|
204
|
+
return JSON.parse(headersStr);
|
|
205
|
+
} catch {
|
|
206
|
+
const headers = {};
|
|
207
|
+
for (const pair of headersStr.split(",")) {
|
|
208
|
+
const [key, value] = pair.split("=").map((s) => s.trim());
|
|
209
|
+
if (key && value) headers[key] = value;
|
|
210
|
+
}
|
|
211
|
+
return Object.keys(headers).length > 0 ? headers : void 0;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Get MCP server configurations with environment discovery
|
|
216
|
+
* This combines explicit configs with environment-discovered servers
|
|
217
|
+
*/
|
|
218
|
+
function getMCPServers(explicitConfigs = [], envConfig = {}) {
|
|
219
|
+
const discoveredConfigs = discoverMCPServersFromEnvironment(envConfig);
|
|
220
|
+
const allConfigs = [...explicitConfigs];
|
|
221
|
+
const explicitNames = new Set(explicitConfigs.map((c) => c.name));
|
|
222
|
+
for (const discovered of discoveredConfigs) if (!explicitNames.has(discovered.name)) allConfigs.push(discovered);
|
|
223
|
+
return allConfigs;
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Validate environment configuration and provide helpful error messages
|
|
227
|
+
*/
|
|
228
|
+
async function validateMCPEnvironment() {
|
|
229
|
+
const errors = [];
|
|
230
|
+
const warnings = [];
|
|
231
|
+
const recommendations = [];
|
|
232
|
+
const enabledServers = getEnabledServers("MCP_");
|
|
233
|
+
if (enabledServers.includes("perplexity") && !process.env.PERPLEXITY_API_KEY) errors.push("Perplexity server enabled but PERPLEXITY_API_KEY not set");
|
|
234
|
+
if (enabledServers.includes("sqlite") && !process.env.MCP_SQLITE_DB) warnings.push("SQLite server enabled but MCP_SQLITE_DB not set");
|
|
235
|
+
if (enabledServers.includes("filesystem")) {
|
|
236
|
+
const fsPath = process.env.MCP_FILESYSTEM_PATH || process.cwd();
|
|
237
|
+
try {
|
|
238
|
+
(await import("node:fs")).accessSync(fsPath);
|
|
239
|
+
} catch {
|
|
240
|
+
errors.push(`Filesystem server enabled but path not accessible: ${fsPath}`);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
if (enabledServers.length === 0) recommendations.push("Consider enabling at least one MCP server via MCP_SERVERS environment variable");
|
|
244
|
+
if (!process.env.MCP_SERVERS) recommendations.push("Set MCP_SERVERS to control which servers are enabled (e.g., MCP_SERVERS=filesystem,git)");
|
|
245
|
+
return {
|
|
246
|
+
isValid: errors.length === 0,
|
|
247
|
+
errors,
|
|
248
|
+
warnings,
|
|
249
|
+
recommendations
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
//#endregion
|
|
254
|
+
export { mcpTransports as a, validateMCPEnvironment as i, environment_exports as n, getMCPServers as r, discoverMCPServersFromEnvironment as t };
|
|
255
|
+
//# sourceMappingURL=environment-CSoJb0SW.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"environment-CSoJb0SW.mjs","names":[],"sources":["../src/tools/mcp/transports.ts","../src/tools/mcp/environment.ts"],"sourcesContent":["/**\n * @fileoverview transports.ts\n */\n\nimport type { MCPClientConfig } from './client';\n\n/**\n * Pre-configured MCP transports for common use cases\n */\nexport const mcpTransports = {\n /**\n * Filesystem MCP server\n * Allows AI to read/write files in specified directory\n */\n filesystem: (rootPath: string = process.cwd()): MCPClientConfig => ({\n name: 'filesystem',\n transport: {\n type: 'stdio',\n command: 'npx',\n args: ['-y', '@modelcontextprotocol/server-filesystem', rootPath],\n },\n }),\n\n /**\n * SQLite MCP server\n * Allows AI to query SQLite databases\n */\n sqlite: (dbPath: string): MCPClientConfig => ({\n name: 'sqlite',\n transport: {\n type: 'stdio',\n command: 'npx',\n args: ['-y', '@modelcontextprotocol/server-sqlite', dbPath],\n },\n }),\n\n /**\n * Git MCP server\n * Allows AI to read git repository information\n */\n git: (repoPath: string = process.cwd()): MCPClientConfig => ({\n name: 'git',\n transport: {\n type: 'stdio',\n command: 'npx',\n args: ['-y', '@modelcontextprotocol/server-git', repoPath],\n },\n }),\n\n /**\n * Custom SSE transport\n */\n sse: (name: string, url: string): MCPClientConfig => ({\n name,\n transport: {\n type: 'sse',\n url,\n },\n }),\n\n /**\n * Custom stdio transport\n */\n stdio: (name: string, command: string, args: string[] = []): MCPClientConfig => ({\n name,\n transport: {\n type: 'stdio',\n command,\n args,\n },\n }),\n\n /**\n * HTTP transport using StreamableHTTPClientTransport\n */\n http: (name: string, httpUrl: string, sessionId?: string): MCPClientConfig => ({\n name,\n transport: {\n type: 'http',\n url: httpUrl,\n sessionId,\n },\n }),\n\n /**\n * Perplexity Ask MCP server\n * Allows AI to perform live web searches using Perplexity's Sonar API\n * Requires PERPLEXITY_API_KEY environment variable\n */\n perplexityAsk: (): MCPClientConfig => ({\n name: 'perplexity-ask',\n transport: {\n type: 'stdio',\n command: 'npx',\n // Use locally installed package if available, otherwise download with -y flag\n args: ['-y', 'server-perplexity-ask'],\n },\n }),\n};\n","/**\n * @fileoverview environment.ts\n */\n\nimport { logWarn } from '@repo/shared/logs';\n\nimport { mcpTransports } from './transports';\n\nimport type { MCPClientConfig } from './client';\n\n/**\n * Environment variable patterns for MCP server discovery\n */\nexport interface MCPEnvironmentConfig {\n /** Environment variable prefix for MCP servers (default: 'MCP_') */\n prefix?: string;\n /** Whether to include default servers (filesystem, git, etc.) */\n includeDefaults?: boolean;\n /** Base path for filesystem server (default: process.cwd()) */\n basePath?: string;\n}\n\n/**\n * Parsed MCP server configuration from environment\n */\nexport interface ParsedMCPServer {\n name: string;\n type: 'stdio' | 'sse' | 'http';\n url?: string;\n command?: string;\n args?: string[];\n enabled: boolean;\n}\n\n/**\n * Discover MCP servers from environment variables\n *\n * Environment variable format:\n * - MCP_SERVERS=filesystem,git,perplexity # Enable specific servers\n * - MCP_FILESYSTEM_PATH=/workspace # Configure filesystem path\n * - MCP_CUSTOM_SQLITE_DB=/data/app.db # Configure sqlite database\n * - MCP_CUSTOM_SSE_URL=http://example.com # Configure SSE server\n * - MCP_CUSTOM_HTTP_URL=http://example.com # Configure HTTP server\n */\nexport function discoverMCPServersFromEnvironment(\n config: MCPEnvironmentConfig = {},\n): MCPClientConfig[] {\n const { prefix = 'MCP_', includeDefaults = true, basePath = process.cwd() } = config;\n const isProduction = process.env.NODE_ENV === 'production';\n const allowDefaults = !isProduction || process.env[`${prefix}ALLOW_DEFAULTS`] === 'true';\n\n const servers: MCPClientConfig[] = [];\n const enabledServers = getEnabledServers(prefix);\n\n // Add default servers if enabled\n if (includeDefaults && !allowDefaults) {\n logWarn('MCP default servers are disabled in production unless MCP_ALLOW_DEFAULTS=true', {\n operation: 'mcp_default_servers_blocked',\n });\n }\n\n if (includeDefaults && allowDefaults) {\n if (enabledServers.includes('filesystem')) {\n const fsPath = process.env[`${prefix}FILESYSTEM_PATH`] || basePath;\n servers.push(mcpTransports.filesystem(fsPath));\n }\n\n if (enabledServers.includes('git')) {\n const gitPath = process.env[`${prefix}GIT_PATH`] || basePath;\n servers.push(mcpTransports.git(gitPath));\n }\n\n if (enabledServers.includes('perplexity') && process.env.PERPLEXITY_API_KEY) {\n servers.push(mcpTransports.perplexityAsk());\n }\n\n if (enabledServers.includes('sqlite')) {\n const dbPath = process.env[`${prefix}SQLITE_DB`];\n if (dbPath) {\n servers.push(mcpTransports.sqlite(dbPath));\n }\n }\n }\n\n // Discover custom servers from environment\n const customServers = discoverCustomServers(prefix, enabledServers);\n servers.push(...customServers);\n\n return servers;\n}\n\n/**\n * Get list of enabled servers from environment\n */\nfunction getEnabledServers(prefix: string): string[] {\n const serversEnv = process.env[`${prefix}SERVERS`];\n if (!serversEnv) {\n return [];\n }\n\n return serversEnv\n .split(',')\n .map(s => s.trim().toLowerCase())\n .filter(s => s.length > 0);\n}\n\n/**\n * Discover custom MCP servers from environment variables\n */\nfunction discoverCustomServers(prefix: string, enabledServers: string[]): MCPClientConfig[] {\n const servers: MCPClientConfig[] = [];\n const processed = new Set<string>();\n\n // Look for custom server definitions\n for (const [envKey, envValue] of Object.entries(process.env)) {\n if (!envKey.startsWith(prefix) || !envValue) continue;\n\n // Parse pattern: MCP_CUSTOM_<NAME>_<TYPE>\n\n const match = envKey.match(new RegExp(`^${prefix}CUSTOM_(.+)_(URL|COMMAND|DB)$`));\n if (!match) continue;\n\n const [, serverName, configType] = match;\n if (!serverName || !configType) continue;\n const name = serverName.toLowerCase();\n\n // Skip if not enabled\n if (!enabledServers.includes(name) && !enabledServers.includes('*')) {\n continue;\n }\n\n // Skip if already processed\n if (processed.has(name)) continue;\n processed.add(name);\n\n const server = createCustomServer(prefix, name, configType.toLowerCase(), envValue);\n if (server) {\n servers.push(server);\n }\n }\n\n return servers;\n}\n\n/**\n * Create custom server configuration\n */\nfunction createCustomServer(\n prefix: string,\n name: string,\n type: string,\n value: string,\n): MCPClientConfig | null {\n const envPrefix = `${prefix}CUSTOM_${name.toUpperCase()}_`;\n\n switch (type) {\n case 'url': {\n // Determine if SSE or HTTP based on URL or explicit type\n const transportType = process.env[`${envPrefix}TYPE`]?.toLowerCase();\n\n if (transportType === 'sse' || value.includes('/sse')) {\n return {\n name: `custom-${name}`,\n transport: {\n type: 'sse',\n url: value,\n headers: parseHeaders(process.env[`${envPrefix}HEADERS`]),\n },\n };\n } else {\n // Default to HTTP transport\n const sessionId = process.env[`${envPrefix}SESSION_ID`];\n return {\n name: `custom-${name}`,\n transport: {\n type: 'http',\n url: value,\n sessionId,\n },\n };\n }\n }\n\n case 'command': {\n const args = process.env[`${envPrefix}ARGS`];\n return {\n name: `custom-${name}`,\n transport: {\n type: 'stdio',\n command: value,\n args: args ? args.split(',').map(arg => arg.trim()) : [],\n },\n };\n }\n\n case 'db': {\n // Assume SQLite for database paths\n return mcpTransports.sqlite(value);\n }\n\n default:\n logWarn(`Unknown custom server type: ${type} for server: ${name}`, {\n serverType: type,\n serverName: name,\n operation: 'mcp_environment_config',\n });\n return null;\n }\n}\n\n/**\n * Parse headers from environment variable\n */\nfunction parseHeaders(headersStr?: string): Record<string, string> | undefined {\n if (!headersStr) return undefined;\n\n try {\n return JSON.parse(headersStr);\n } catch {\n // Try simple key=value,key=value format\n const headers: Record<string, string> = {};\n for (const pair of headersStr.split(',')) {\n const [key, value] = pair.split('=').map(s => s.trim());\n if (key && value) {\n headers[key] = value;\n }\n }\n return Object.keys(headers).length > 0 ? headers : undefined;\n }\n}\n\n/**\n * Get MCP server configurations with environment discovery\n * This combines explicit configs with environment-discovered servers\n */\nexport function getMCPServers(\n explicitConfigs: MCPClientConfig[] = [],\n envConfig: MCPEnvironmentConfig = {},\n): MCPClientConfig[] {\n const discoveredConfigs = discoverMCPServersFromEnvironment(envConfig);\n\n // Merge explicit and discovered configs, with explicit taking precedence\n const allConfigs = [...explicitConfigs];\n const explicitNames = new Set(explicitConfigs.map(c => c.name));\n\n for (const discovered of discoveredConfigs) {\n if (!explicitNames.has(discovered.name)) {\n allConfigs.push(discovered);\n }\n }\n\n return allConfigs;\n}\n\n/**\n * Validate environment configuration and provide helpful error messages\n */\nexport async function validateMCPEnvironment(): Promise<{\n isValid: boolean;\n errors: string[];\n warnings: string[];\n recommendations: string[];\n}> {\n const errors: string[] = [];\n const warnings: string[] = [];\n const recommendations: string[] = [];\n\n // Check for required environment variables\n const enabledServers = getEnabledServers('MCP_');\n\n if (enabledServers.includes('perplexity') && !process.env.PERPLEXITY_API_KEY) {\n errors.push('Perplexity server enabled but PERPLEXITY_API_KEY not set');\n }\n\n if (enabledServers.includes('sqlite') && !process.env.MCP_SQLITE_DB) {\n warnings.push('SQLite server enabled but MCP_SQLITE_DB not set');\n }\n\n // Check for filesystem access\n if (enabledServers.includes('filesystem')) {\n const fsPath = process.env.MCP_FILESYSTEM_PATH || process.cwd();\n try {\n // Use dynamic import for Node.js 22 async compatibility\n const fs = await import('node:fs');\n fs.accessSync(fsPath);\n } catch {\n errors.push(`Filesystem server enabled but path not accessible: ${fsPath}`);\n }\n }\n\n // Provide recommendations\n if (enabledServers.length === 0) {\n recommendations.push(\n 'Consider enabling at least one MCP server via MCP_SERVERS environment variable',\n );\n }\n\n if (!process.env.MCP_SERVERS) {\n recommendations.push(\n 'Set MCP_SERVERS to control which servers are enabled (e.g., MCP_SERVERS=filesystem,git)',\n );\n }\n\n return {\n isValid: errors.length === 0,\n errors,\n warnings,\n recommendations,\n };\n}\n"],"mappings":"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"}
|