@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 @@
|
|
|
1
|
+
{"version":3,"file":"pipelines.mjs","names":[],"sources":["../src/pipelines/step-executor.ts","../src/pipelines/validation.ts","../src/pipelines/multi-step-wrapper.ts","../src/pipelines/defaults.ts","../src/pipelines/message-transforms.ts","../src/pipelines/adapters/trace-storage-memory.ts","../src/pipelines/pipeline-presets.ts","../src/pipelines/trace-storage-interface.ts","../src/pipelines/adapters/trace-storage-blob.ts","../src/pipelines/storage-factory.ts","../src/pipelines/index.ts"],"sourcesContent":["/**\n * @fileoverview Step Executor\n * Step Executor\n * Executes individual pipeline steps with compliance\n * Leverages AI SDK v6 native features (AbortSignal for timeouts, usage Promise)\n */\n\nimport { getErrorCode } from '../server/errors';\nimport { generateText, streamText } from '../shared';\nimport {\n logGeneration,\n postprocessText,\n preprocessMessages,\n} from '../tools/compliance/compliance-wrapper';\n\nimport type { PipelineStep, StepResult, StepStatus } from './types';\nimport type { ComplianceOptions } from '../governance/compliance/types';\nimport type { CoreMessage } from '../shared';\n\n/**\n * Message type for pipeline steps.\n * Aligned with SDK's CoreMessage type.\n */\ntype PipelineMessage = CoreMessage;\n\n/**\n * Execute a single pipeline step with compliance\n * Uses AI SDK v6 native features:\n * - AbortSignal for timeouts\n * - usage Promise for token tracking\n * - Native streaming APIs\n */\nexport async function executeStep(\n step: PipelineStep,\n previousResults: StepResult[],\n globalCompliance: ComplianceOptions,\n actorId: string,\n runId: string,\n): Promise<StepResult> {\n const startTime = Date.now();\n\n // Initialize result\n const result: StepResult = {\n stepId: step.id,\n stepName: step.name,\n stepIndex: previousResults.length,\n status: 'running' as StepStatus,\n output: null,\n phiDetections: [],\n startedAt: new Date(),\n metadata: step.transformOutput ? { hasTransform: true } : undefined,\n };\n\n // Create AbortController for native timeout support (AI SDK v6)\n const abortController = new AbortController();\n const timeoutMs = step.timeoutMs ?? 120000; // 2 minutes default\n const timeoutId = setTimeout(() => abortController.abort(), timeoutMs);\n\n try {\n // Check if step should be skipped\n if (step.skipIf) {\n const shouldSkip = await step.skipIf(previousResults);\n if (shouldSkip) {\n clearTimeout(timeoutId);\n result.status = 'skipped';\n result.completedAt = new Date();\n result.durationMs = Date.now() - startTime;\n return result;\n }\n }\n\n // Transform input from previous results\n let messages: PipelineMessage[];\n if (step.transformInput) {\n messages = await step.transformInput(previousResults);\n } else {\n // Default: use output from last step as user message\n const lastOutput = previousResults[previousResults.length - 1]?.output;\n if (typeof lastOutput === 'string') {\n messages = [{ role: 'user', content: lastOutput }];\n } else {\n messages = [{ role: 'user', content: 'Continue' }];\n }\n }\n\n // Add system prompt if provided\n if (step.systemPrompt) {\n messages = [{ role: 'system', content: step.systemPrompt }, ...messages];\n }\n\n // Merge compliance options (step overrides global)\n const compliance: ComplianceOptions = {\n ...globalCompliance,\n ...step.compliance,\n };\n\n // Preprocess messages (PHI redaction, ABAC)\n const { messages: processedMessages, detections } = await preprocessMessages(\n messages,\n compliance,\n );\n\n result.phiDetections = detections;\n\n // Execute using AI SDK v6 with native features\n // Build options without conditional spread to maintain type safety\n const baseOptions = {\n model: step.model,\n messages: processedMessages,\n temperature: step.temperature,\n tools: step.tools,\n abortSignal: abortController.signal, // Native timeout support\n };\n\n // Add maxOutputTokens if specified\n const options = step.maxTokens\n ? { ...baseOptions, maxOutputTokens: step.maxTokens }\n : baseOptions;\n\n let output: string;\n let usage: { inputTokens?: number; outputTokens?: number; totalTokens?: number };\n\n if (step.streaming) {\n // Streaming path\n const streamResult = await streamText(options);\n clearTimeout(timeoutId);\n\n // Collect streamed text\n output = '';\n for await (const chunk of streamResult.textStream) {\n output += chunk;\n }\n usage = await streamResult.usage;\n } else {\n // Non-streaming path\n const generateResult = await generateText(options);\n clearTimeout(timeoutId);\n\n output = generateResult.text;\n usage = await generateResult.usage;\n }\n result.usage = {\n promptTokens: usage.inputTokens ?? 0,\n completionTokens: usage.outputTokens ?? 0,\n totalTokens: usage.totalTokens ?? 0,\n };\n\n // Transform output if needed\n let finalOutput: unknown = output;\n if (step.transformOutput) {\n finalOutput = await step.transformOutput(output);\n }\n\n // Postprocess output (PHI redaction)\n if (typeof finalOutput === 'string') {\n const { text: sanitized, detections: outputDetections } = await postprocessText(\n finalOutput,\n compliance,\n );\n finalOutput = sanitized;\n result.phiDetections.push(...outputDetections);\n }\n\n // Set result\n result.output = finalOutput;\n result.status = 'completed';\n result.completedAt = new Date();\n result.durationMs = Date.now() - startTime;\n\n // Log generation (compliance audit)\n await logGeneration(actorId, JSON.stringify(messages), finalOutput, {\n runId,\n stepId: step.id,\n stepName: step.name,\n phiDetections: result.phiDetections.length,\n usage: result.usage,\n });\n\n return result;\n } catch (error) {\n clearTimeout(timeoutId);\n\n result.status = 'failed';\n result.completedAt = new Date();\n result.durationMs = Date.now() - startTime;\n\n // Check if timeout (AbortError from AbortSignal)\n const isTimeout = error instanceof Error && error.name === 'AbortError';\n\n result.error = {\n message: isTimeout\n ? `Step timeout after ${timeoutMs}ms`\n : error instanceof Error\n ? error.message\n : 'Unknown error',\n code: isTimeout ? 'TIMEOUT' : getErrorCode(error),\n stack: error instanceof Error ? error.stack : undefined,\n };\n\n // Log error\n await logGeneration(\n actorId,\n JSON.stringify({ step: step.id }),\n { error: result.error },\n {\n runId,\n stepId: step.id,\n stepName: step.name,\n failed: true,\n },\n );\n\n return result;\n }\n}\n\n/**\n * Execute step with retry logic\n * Note: Custom retry wrapper - AI SDK v6 doesn't have built-in retry yet\n */\nexport async function executeStepWithRetry(\n step: PipelineStep,\n previousResults: StepResult[],\n globalCompliance: ComplianceOptions,\n actorId: string,\n runId: string,\n): Promise<StepResult> {\n const retry = step.retry ?? { maxAttempts: 1, delayMs: 0 };\n let lastError: Error | null = null;\n\n for (let attempt = 0; attempt < retry.maxAttempts; attempt++) {\n try {\n const result = await executeStep(step, previousResults, globalCompliance, actorId, runId);\n\n // If succeeded, return\n if (result.status === 'completed' || result.status === 'skipped') {\n return result;\n }\n\n // If failed, retry\n lastError = new Error(result.error?.message ?? 'Step failed');\n } catch (error) {\n lastError = error instanceof Error ? error : new Error('Unknown error');\n }\n\n // Wait before retry (with backoff)\n if (attempt < retry.maxAttempts - 1) {\n const delay =\n retry.backoff === 'exponential' ? retry.delayMs * Math.pow(2, attempt) : retry.delayMs;\n\n await new Promise(resolve => setTimeout(resolve, delay));\n }\n }\n\n // All attempts failed\n throw lastError ?? new Error('Step failed after retries');\n}\n","/**\n * @fileoverview Pipeline Validation Utilities\n * Pipeline Validation Utilities\n * Validate pipeline configurations before execution\n */\n\nimport { logWarn } from '@repo/shared/logs';\n\nimport { isModelRef } from '../shared';\n\nimport type { PipelineConfig, PipelineStep } from './types';\n\nexport interface PipelineValidationIssue {\n field: string;\n message: string;\n severity: 'error' | 'warning';\n}\n\n/**\n * @deprecated Use PipelineValidationIssue instead\n */\nexport type ValidationError = PipelineValidationIssue;\n\nexport interface PipelineValidationResult {\n valid: boolean;\n errors: PipelineValidationIssue[];\n warnings: PipelineValidationIssue[];\n}\n\n/**\n * @deprecated Use PipelineValidationResult instead\n */\nexport type ValidationResult = PipelineValidationResult;\n\n/**\n * Validate pipeline configuration\n */\nexport function validatePipelineConfig(config: PipelineConfig): ValidationResult {\n const errors: ValidationError[] = [];\n const warnings: ValidationError[] = [];\n\n // Required fields\n if (!config.id || config.id.trim() === '') {\n errors.push({\n field: 'id',\n message: 'Pipeline ID is required',\n severity: 'error',\n });\n }\n\n if (!config.name || config.name.trim() === '') {\n errors.push({\n field: 'name',\n message: 'Pipeline name is required',\n severity: 'error',\n });\n }\n\n if (!config.actorId || config.actorId.trim() === '') {\n errors.push({\n field: 'actorId',\n message: 'Actor ID is required for audit compliance',\n severity: 'error',\n });\n }\n\n if (!config.storage) {\n errors.push({\n field: 'storage',\n message: 'Storage type is required',\n severity: 'error',\n });\n }\n\n // Steps validation\n if (!config.steps || config.steps.length === 0) {\n errors.push({\n field: 'steps',\n message: 'Pipeline must have at least one step',\n severity: 'error',\n });\n } else {\n // Validate each step\n config.steps.forEach((step, index) => {\n const stepErrors = validatePipelineStep(step, index);\n errors.push(...stepErrors.filter(e => e.severity === 'error'));\n warnings.push(...stepErrors.filter(e => e.severity === 'warning'));\n });\n\n // Check for duplicate step IDs\n const stepIds = config.steps.map(s => s.id);\n const duplicates = stepIds.filter((id, index) => stepIds.indexOf(id) !== index);\n if (duplicates.length > 0) {\n errors.push({\n field: 'steps',\n message: `Duplicate step IDs found: ${duplicates.join(', ')}`,\n severity: 'error',\n });\n }\n }\n\n // Compliance validation\n if (!config.compliance) {\n warnings.push({\n field: 'compliance',\n message: 'No compliance configuration provided',\n severity: 'warning',\n });\n }\n\n // Initial messages\n if (!config.initialMessages || config.initialMessages.length === 0) {\n warnings.push({\n field: 'initialMessages',\n message: 'No initial messages provided',\n severity: 'warning',\n });\n }\n\n // Resumption validation\n if (config.enableResumption && !config.resumeFromRunId) {\n // This is fine - resumption is enabled for new runs\n }\n\n if (config.resumeFromRunId && !config.enableResumption) {\n warnings.push({\n field: 'resumeFromRunId',\n message: 'resumeFromRunId provided but enableResumption is false',\n severity: 'warning',\n });\n }\n\n return {\n valid: errors.length === 0,\n errors,\n warnings,\n };\n}\n\n/**\n * Validate individual pipeline step\n */\nexport function validatePipelineStep(step: PipelineStep, index: number): ValidationError[] {\n const errors: ValidationError[] = [];\n\n const field = `steps[${index}]`;\n\n // Required fields\n if (!step.id || step.id.trim() === '') {\n errors.push({\n field: `${field}.id`,\n message: `Step ${index}: ID is required`,\n severity: 'error',\n });\n }\n\n if (!step.name || step.name.trim() === '') {\n errors.push({\n field: `${field}.name`,\n message: `Step ${index}: Name is required`,\n severity: 'error',\n });\n }\n\n if (!step.model) {\n errors.push({\n field: `${field}.model`,\n message: `Step ${index}: Model is required`,\n severity: 'error',\n });\n } else if (!isModelRef(step.model)) {\n errors.push({\n field: `${field}.model`,\n message: `Step ${index}: Model must be a string or a language model instance`,\n severity: 'error',\n });\n }\n\n // Temperature validation\n if (step.temperature !== undefined && (step.temperature < 0 || step.temperature > 2)) {\n errors.push({\n field: `${field}.temperature`,\n message: `Step ${index}: Temperature must be between 0 and 2`,\n severity: 'error',\n });\n }\n\n // Max tokens validation\n if (step.maxTokens !== undefined) {\n if (step.maxTokens < 1) {\n errors.push({\n field: `${field}.maxTokens`,\n message: `Step ${index}: maxTokens must be positive`,\n severity: 'error',\n });\n }\n if (step.maxTokens > 100000) {\n errors.push({\n field: `${field}.maxTokens`,\n message: `Step ${index}: maxTokens seems unusually high (${step.maxTokens})`,\n severity: 'warning',\n });\n }\n }\n\n // Timeout validation\n if (step.timeoutMs !== undefined) {\n if (step.timeoutMs < 1000) {\n errors.push({\n field: `${field}.timeoutMs`,\n message: `Step ${index}: Timeout too short (minimum 1000ms recommended)`,\n severity: 'warning',\n });\n }\n if (step.timeoutMs > 600000) {\n errors.push({\n field: `${field}.timeoutMs`,\n message: `Step ${index}: Timeout very long (${step.timeoutMs}ms = ${step.timeoutMs / 60000} minutes)`,\n severity: 'warning',\n });\n }\n }\n\n // Retry validation\n if (step.retry) {\n if (step.retry.maxAttempts < 1) {\n errors.push({\n field: `${field}.retry.maxAttempts`,\n message: `Step ${index}: maxAttempts must be at least 1`,\n severity: 'error',\n });\n }\n if (step.retry.maxAttempts > 10) {\n errors.push({\n field: `${field}.retry.maxAttempts`,\n message: `Step ${index}: maxAttempts very high (${step.retry.maxAttempts})`,\n severity: 'warning',\n });\n }\n if (step.retry.delayMs < 0) {\n errors.push({\n field: `${field}.retry.delayMs`,\n message: `Step ${index}: Retry delay must be non-negative`,\n severity: 'error',\n });\n }\n }\n\n return errors;\n}\n\n/**\n * Assert pipeline config is valid (throws on error)\n */\nexport function assertValidPipelineConfig(config: PipelineConfig): void {\n const result = validatePipelineConfig(config);\n\n if (!result.valid) {\n const errorMessages = result.errors.map(e => ` - ${e.field}: ${e.message}`);\n throw new Error(`Invalid pipeline configuration:\\n${errorMessages.join('\\n')}`);\n }\n\n // Log warnings if any\n if (result.warnings.length > 0) {\n logWarn('Pipeline configuration warnings', { warnings: result.warnings });\n result.warnings.forEach(w => {\n logWarn(` - ${w.field}: ${w.message}`, { field: w.field, message: w.message });\n });\n }\n}\n\n/**\n * Validate storage configuration\n */\nexport function validateStorageConfig(config: {\n type: 'blob' | 'postgres';\n blob?: { token: string };\n redis?: { url: string; token: string };\n postgres?: { connectionString: string };\n}): ValidationResult {\n const errors: ValidationError[] = [];\n const warnings: ValidationError[] = [];\n\n if (config.type === 'blob') {\n if (!config.blob?.token) {\n errors.push({\n field: 'blob.token',\n message: 'Blob token is required for blob storage',\n severity: 'error',\n });\n }\n if (!config.redis?.url || !config.redis?.token) {\n errors.push({\n field: 'redis',\n message: 'Redis configuration is required for blob storage',\n severity: 'error',\n });\n }\n }\n\n if (config.type === 'postgres') {\n if (!config.postgres?.connectionString) {\n errors.push({\n field: 'postgres.connectionString',\n message: 'Connection string is required for postgres storage',\n severity: 'error',\n });\n }\n if (!config.blob?.token) {\n errors.push({\n field: 'blob.token',\n message: 'Blob token is required for postgres storage (artifacts)',\n severity: 'error',\n });\n }\n }\n\n return {\n valid: errors.length === 0,\n errors,\n warnings,\n };\n}\n","/**\n * @fileoverview Multi-Step Pipeline Executor\n * Multi-Step Pipeline Executor\n * Orchestrates execution of multi-step AI pipelines with compliance\n */\n\nimport { getErrorCode } from '../server/errors';\n\nimport { executeStepWithRetry } from './step-executor';\nimport { assertValidPipelineConfig } from './validation';\n\nimport type { TraceStorage } from './trace-storage-interface';\nimport type {\n PipelineConfig,\n PipelineResult,\n PipelineRun,\n PipelineStreamChunk,\n StepResult,\n} from './types';\n\n/**\n * Execute a compliant multi-step pipeline\n *\n * @throws {Error} If pipeline configuration is invalid\n * @throws {Error} If storage initialization fails\n * @throws {Error} If any step fails and cannot be retried\n */\nexport async function executeCompliantPipeline(\n config: PipelineConfig,\n storage: TraceStorage,\n): Promise<PipelineResult> {\n // Validate configuration\n try {\n assertValidPipelineConfig(config);\n } catch (error) {\n throw new Error(\n `Pipeline configuration validation failed: ${error instanceof Error ? error.message : 'Unknown error'}`,\n );\n }\n\n // Initialize storage\n try {\n await storage.initialize();\n } catch (error) {\n throw new Error(\n `Storage initialization failed: ${error instanceof Error ? error.message : 'Unknown error'}. ` +\n `Check your storage configuration and credentials.`,\n );\n }\n\n // Check if resuming from previous run\n let run: PipelineRun;\n let startStepIndex = 0;\n let previousResults: StepResult[] = [];\n\n if (config.resumeFromRunId) {\n const existingRun = await storage.getRun(config.resumeFromRunId);\n if (!existingRun) {\n throw new Error(`Run ${config.resumeFromRunId} not found`);\n }\n\n run = existingRun;\n startStepIndex = run.currentStepIndex;\n previousResults = await storage.getStepResults(run.runId);\n\n // Update status to running\n await storage.updateRun(run.runId, { status: 'running' });\n } else {\n // Create new run\n run = await storage.createRun(config);\n }\n\n const startTime = Date.now();\n\n try {\n // Execute hooks\n const initialStep = config.steps[startStepIndex];\n if (config.hooks?.onStepStart && initialStep) {\n await config.hooks.onStepStart(initialStep, run.runId);\n }\n\n // Execute steps sequentially (or in parallel if configured)\n for (let i = startStepIndex; i < config.steps.length; i++) {\n const step = config.steps[i];\n if (!step) {\n continue;\n }\n\n // Call hook\n if (config.hooks?.onStepStart) {\n await config.hooks.onStepStart(step, run.runId);\n }\n\n // Execute step with retry\n const result = await executeStepWithRetry(\n step,\n previousResults,\n config.compliance,\n config.actorId,\n run.runId,\n );\n\n // Store artifacts if needed\n if (result.output && typeof result.output === 'string') {\n const outputUrl = await storage.storeArtifact(run.runId, step.id, {\n type: 'output',\n content: result.output,\n contentType: 'text/plain',\n });\n result.artifacts = { output: outputUrl };\n }\n\n // Add step result to storage\n await storage.addStepResult(run.runId, result);\n previousResults.push(result);\n\n // Update run progress\n await storage.updateRun(run.runId, {\n currentStepIndex: i + 1,\n totalPHIDetections: run.totalPHIDetections + result.phiDetections.length,\n totalTokens: run.totalTokens + (result.usage?.totalTokens ?? 0),\n });\n\n // Call hook\n if (config.hooks?.onStepComplete) {\n await config.hooks.onStepComplete(result, run.runId);\n }\n\n // If step failed and no retry, stop pipeline\n if (result.status === 'failed') {\n throw new Error(`Step ${step.name} failed: ${result.error?.message}`);\n }\n }\n\n // Pipeline completed successfully\n const totalDurationMs = Date.now() - startTime;\n\n await storage.updateRun(run.runId, {\n status: 'completed',\n completedAt: new Date(),\n totalDurationMs,\n });\n\n // Build final result\n const finalResult: PipelineResult = {\n run: {\n ...run,\n status: 'completed',\n completedAt: new Date(),\n totalDurationMs,\n steps: previousResults,\n },\n output: previousResults[previousResults.length - 1]?.output,\n steps: previousResults,\n success: true,\n compliance: {\n totalPHIRedacted: previousResults.reduce((sum, r) => sum + r.phiDetections.length, 0),\n phiByType: previousResults\n .flatMap(r => r.phiDetections)\n .reduce(\n (acc, d) => {\n acc[d.type] = (acc[d.type] || 0) + 1;\n return acc;\n },\n {} as Record<string, number>,\n ),\n totalAuditEvents: previousResults.length,\n /**\n * Note: Policy violation tracking will be added when ABAC system is integrated\n */\n policyViolations: 0,\n },\n };\n\n // Call hook\n if (config.hooks?.onPipelineComplete) {\n await config.hooks.onPipelineComplete(previousResults, run.runId);\n }\n\n return finalResult;\n } catch (error) {\n const totalDurationMs = Date.now() - startTime;\n\n // Update run as failed\n await storage.updateRun(run.runId, {\n status: 'failed',\n completedAt: new Date(),\n totalDurationMs,\n error: {\n message: error instanceof Error ? error.message : 'Unknown error',\n code: getErrorCode(error),\n stack: error instanceof Error ? error.stack : undefined,\n failedStep: config.steps[run.currentStepIndex]?.id,\n },\n });\n\n // Call hook\n if (config.hooks?.onPipelineError) {\n await config.hooks.onPipelineError(\n error instanceof Error ? error : new Error('Unknown error'),\n run.runId,\n );\n }\n\n // Build error result\n const finalResult: PipelineResult = {\n run: {\n ...run,\n status: 'failed',\n completedAt: new Date(),\n totalDurationMs,\n steps: previousResults,\n error: {\n message: error instanceof Error ? error.message : 'Unknown error',\n code: getErrorCode(error),\n stack: error instanceof Error ? error.stack : undefined,\n failedStep: config.steps[run.currentStepIndex]?.id,\n },\n },\n output: null,\n steps: previousResults,\n success: false,\n compliance: {\n totalPHIRedacted: previousResults.reduce((sum, r) => sum + r.phiDetections.length, 0),\n phiByType: previousResults\n .flatMap(r => r.phiDetections)\n .reduce(\n (acc, d) => {\n acc[d.type] = (acc[d.type] || 0) + 1;\n return acc;\n },\n {} as Record<string, number>,\n ),\n totalAuditEvents: previousResults.length,\n policyViolations: 0,\n },\n };\n\n return finalResult;\n }\n}\n\n/**\n * Execute pipeline with streaming updates\n */\nexport async function executeCompliantPipelineStream(\n config: PipelineConfig,\n storage: TraceStorage,\n): Promise<ReadableStream<PipelineStreamChunk>> {\n return new ReadableStream({\n async start(controller) {\n try {\n // Initialize storage\n await storage.initialize();\n\n // Create run\n const run = await storage.createRun(config);\n\n // Send initial event\n controller.enqueue({\n type: 'step_start',\n runId: run.runId,\n stepId: config.steps[0]?.id,\n timestamp: new Date(),\n data: { step: config.steps[0] },\n });\n\n const previousResults: StepResult[] = [];\n\n // Execute steps\n for (let i = 0; i < config.steps.length; i++) {\n const step = config.steps[i];\n if (!step) {\n continue;\n }\n\n // Send step start event\n controller.enqueue({\n type: 'step_start',\n runId: run.runId,\n stepId: step.id,\n timestamp: new Date(),\n data: { stepIndex: i, stepName: step.name },\n });\n\n try {\n // Execute step\n const result = await executeStepWithRetry(\n step,\n previousResults,\n config.compliance,\n config.actorId,\n run.runId,\n );\n\n // Store artifacts\n if (result.output && typeof result.output === 'string') {\n const outputUrl = await storage.storeArtifact(run.runId, step.id, {\n type: 'output',\n content: result.output,\n contentType: 'text/plain',\n });\n result.artifacts = { output: outputUrl };\n }\n\n // Add to storage\n await storage.addStepResult(run.runId, result);\n previousResults.push(result);\n\n // Update run\n await storage.updateRun(run.runId, {\n currentStepIndex: i + 1,\n });\n\n // Send step complete event\n controller.enqueue({\n type: 'step_complete',\n runId: run.runId,\n stepId: step.id,\n timestamp: new Date(),\n data: result,\n });\n\n // Send PHI detection events\n if (result.phiDetections.length > 0) {\n controller.enqueue({\n type: 'phi_detection',\n runId: run.runId,\n stepId: step.id,\n timestamp: new Date(),\n data: { count: result.phiDetections.length },\n });\n }\n } catch (error) {\n // Send error event\n controller.enqueue({\n type: 'step_error',\n runId: run.runId,\n stepId: step.id,\n timestamp: new Date(),\n data: {\n error: error instanceof Error ? error.message : 'Unknown error',\n },\n });\n\n // Mark run as failed\n await storage.updateRun(run.runId, {\n status: 'failed',\n completedAt: new Date(),\n });\n\n // Send pipeline error event\n controller.enqueue({\n type: 'pipeline_error',\n runId: run.runId,\n timestamp: new Date(),\n data: {\n error: error instanceof Error ? error.message : 'Unknown error',\n },\n });\n\n controller.close();\n return;\n }\n }\n\n // Mark run as completed\n await storage.updateRun(run.runId, {\n status: 'completed',\n completedAt: new Date(),\n });\n\n // Send pipeline complete event\n controller.enqueue({\n type: 'pipeline_complete',\n runId: run.runId,\n timestamp: new Date(),\n data: {\n totalSteps: previousResults.length,\n totalPHI: previousResults.reduce((sum, r) => sum + r.phiDetections.length, 0),\n },\n });\n\n controller.close();\n } catch (error) {\n controller.error(error);\n }\n },\n });\n}\n\n/**\n * Create resumption point for a paused pipeline\n */\nexport async function createResumptionPoint(runId: string, storage: TraceStorage): Promise<string> {\n const run = await storage.getRun(runId);\n if (!run) {\n throw new Error(`Run ${runId} not found`);\n }\n\n const previousResults = await storage.getStepResults(runId);\n\n const resumption = await storage.createResumptionPoint(\n runId,\n run.currentStepIndex,\n previousResults,\n );\n\n return resumption.token;\n}\n\n/**\n * Resume pipeline from token\n */\nexport async function resumePipeline(\n token: string,\n config: PipelineConfig,\n storage: TraceStorage,\n): Promise<PipelineResult> {\n const resumption = await storage.getResumptionPoint(token);\n if (!resumption) {\n throw new Error('Invalid or expired resumption token');\n }\n\n // Update config to resume from this run\n return executeCompliantPipeline(\n {\n ...config,\n resumeFromRunId: resumption.runId,\n },\n storage,\n );\n}\n","/**\n * @fileoverview Pipeline Defaults\n * Pipeline Defaults\n * DRY default configurations for common pipeline scenarios\n */\n\nimport type { ComplianceOptions } from '../governance/compliance/types';\n\n/**\n * Default compliance options for HIPAA-compliant pipelines\n */\nexport const HIPAA_COMPLIANCE: ComplianceOptions = {\n enablePHIRedaction: true,\n enableABAC: true,\n policyVersion: 'v2.0',\n};\n\n/**\n * Default compliance options for general use (PHI redaction only)\n */\nexport const BASIC_COMPLIANCE: ComplianceOptions = {\n enablePHIRedaction: true,\n enableABAC: false,\n policyVersion: 'v2.0',\n};\n\n/**\n * No compliance (for non-sensitive data)\n */\nexport const NO_COMPLIANCE: ComplianceOptions = {\n enablePHIRedaction: false,\n enableABAC: false,\n policyVersion: 'v2.0',\n};\n\n/**\n * Common temperature settings\n */\nexport const TEMPERATURES = {\n /** Deterministic, factual (0.0-0.3) */\n factual: 0.1,\n /** Balanced, research (0.3-0.5) */\n balanced: 0.4,\n /** Creative, synthesis (0.6-0.8) */\n creative: 0.7,\n /** Very creative (0.8-1.0) */\n experimental: 0.9,\n} as const;\n\n/**\n * Common system prompts\n */\nexport const SYSTEM_PROMPTS = {\n research: `You are a research assistant. Provide comprehensive, well-researched information.\nInclude key facts, concepts, and context. Be thorough and cite sources when possible.`,\n\n analysis: `You are an expert analyst. Provide deep analysis with:\n- Key insights and patterns\n- Critical evaluation\n- Implications and recommendations\n- Knowledge gaps\n\nBe thorough and analytical.`,\n\n synthesis: `You are a synthesis expert. Create clear, actionable summaries with:\n- Executive summary (3-5 sentences)\n- Key findings\n- Actionable recommendations\n- Next steps\n\nWrite clearly for a general audience.`,\n\n editor: `You are an expert editor. Improve clarity, coherence, and impact.\nFocus on structure, flow, and readability. Preserve the author's voice.`,\n\n critic: `You are a constructive critic. Identify areas for improvement while acknowledging strengths.\nBe specific, actionable, and balanced in your feedback.`,\n} as const;\n\n/**\n * Common timeouts (milliseconds)\n */\nexport const TIMEOUTS = {\n /** Quick operations (30s) */\n quick: 30000,\n /** Standard operations (2min) */\n standard: 120000,\n /** Long operations (5min) */\n long: 300000,\n /** Very long operations (10min) */\n veryLong: 600000,\n} as const;\n\n/**\n * Common retry configurations\n */\nexport const RETRY_CONFIGS = {\n /** No retry */\n none: { maxAttempts: 1, delayMs: 0 },\n\n /** Standard retry: 3 attempts with exponential backoff */\n standard: { maxAttempts: 3, delayMs: 1000, backoff: 'exponential' as const },\n\n /** Aggressive retry: 5 attempts with exponential backoff */\n aggressive: { maxAttempts: 5, delayMs: 2000, backoff: 'exponential' as const },\n\n /** Quick retry: 2 attempts with linear backoff */\n quick: { maxAttempts: 2, delayMs: 500, backoff: 'linear' as const },\n} as const;\n","/**\n * @fileoverview Message Transformation Helpers\n * Message Transformation Helpers\n * DRY helpers for common message transformation patterns\n */\n\nimport type { CoreMessage } from '../shared';\nimport type { StepResult } from './types';\n\n/**\n * Message type for pipeline steps.\n * Aligned with SDK's CoreMessage type.\n */\ntype PipelineMessage = CoreMessage;\n\n/**\n * Use previous step's output as next input\n * Most common pattern in pipelines\n */\nexport function usePreviousOutput(previousResults: StepResult[]): PipelineMessage[] {\n const lastOutput = previousResults[previousResults.length - 1]?.output;\n\n if (typeof lastOutput === 'string') {\n return [{ role: 'user', content: lastOutput }];\n }\n\n return [{ role: 'user', content: 'Continue with the previous result.' }];\n}\n\n/**\n * Combine all previous outputs into one message\n */\nexport function combineAllOutputs(\n previousResults: StepResult[],\n separator: string = '\\n\\n---\\n\\n',\n): PipelineMessage[] {\n const allOutputs = previousResults\n .map(r => r.output)\n .filter((o): o is string => typeof o === 'string')\n .join(separator);\n\n return [{ role: 'user', content: allOutputs }];\n}\n\n/**\n * Create a message with context from previous step\n */\nexport function withContext(prompt: string, previousResults: StepResult[]): PipelineMessage[] {\n const lastOutput = previousResults[previousResults.length - 1]?.output;\n\n if (typeof lastOutput === 'string') {\n return [\n {\n role: 'user',\n content: `${prompt}\\n\\nContext:\\n${lastOutput}`,\n },\n ];\n }\n\n return [{ role: 'user', content: prompt }];\n}\n\n/**\n * Create analysis prompt from research output\n */\nexport function analyzeResearch(previousResults: StepResult[]): PipelineMessage[] {\n const research = previousResults[0]?.output as string;\n return [\n {\n role: 'user',\n content: `Research findings:\\n\\n${research}\\n\\nProvide your analysis.`,\n },\n ];\n}\n\n/**\n * Create synthesis prompt from research and analysis\n */\nexport function synthesizeResults(previousResults: StepResult[]): PipelineMessage[] {\n const research = previousResults[0]?.output as string;\n const analysis = previousResults[1]?.output as string;\n\n return [\n {\n role: 'user',\n content: `Research:\\n${research}\\n\\nAnalysis:\\n${analysis}\\n\\nProvide your synthesis.`,\n },\n ];\n}\n\n/**\n * Create refinement prompt\n */\nexport function refine(instruction: string, previousResults: StepResult[]): PipelineMessage[] {\n const lastOutput = previousResults[previousResults.length - 1]?.output;\n\n if (typeof lastOutput === 'string') {\n return [\n {\n role: 'user',\n content: `Previous version:\\n\\n${lastOutput}\\n\\n${instruction}`,\n },\n ];\n }\n\n return [{ role: 'user', content: instruction }];\n}\n","/**\n * @fileoverview In-Memory Trace Storage Adapter\n * In-Memory Trace Storage Adapter\n * For testing and development (no persistence)\n */\n\nimport { generateId } from '../../shared';\n\nimport type { Artifact, TraceStorage } from '../trace-storage-interface';\nimport type { PipelineConfig, PipelineRun, ResumptionPoint, StepResult } from '../types';\n\n/**\n * In-memory storage adapter\n * - Fast for testing and development\n * - No external dependencies\n * - Data lost on process restart\n */\nexport class MemoryTraceStorage implements TraceStorage {\n private runs: Map<string, PipelineRun> = new Map();\n private steps: Map<string, StepResult[]> = new Map();\n private artifacts: Map<string, Buffer | string | object> = new Map();\n private resumptionPoints: Map<string, ResumptionPoint> = new Map();\n private actorIndex: Map<string, Set<string>> = new Map();\n private pipelineIndex: Map<string, Set<string>> = new Map();\n\n async initialize(): Promise<void> {\n // No initialization needed for memory storage\n }\n\n async createRun(config: PipelineConfig): Promise<PipelineRun> {\n const runId = `${config.id}-${generateId()}`;\n\n const run: PipelineRun = {\n runId,\n pipelineId: config.id,\n actorId: config.actorId,\n status: 'running',\n steps: [],\n currentStepIndex: 0,\n startedAt: new Date(),\n totalPHIDetections: 0,\n totalTokens: 0,\n complianceMetrics: {\n phiRedacted: 0,\n abacChecks: 0,\n auditEvents: 0,\n approvalRequests: 0,\n },\n metadata: config.metadata,\n };\n\n // Store run\n this.runs.set(runId, run);\n\n // Index by actor\n let actorRuns = this.actorIndex.get(config.actorId);\n if (!actorRuns) {\n actorRuns = new Set();\n this.actorIndex.set(config.actorId, actorRuns);\n }\n actorRuns.add(runId);\n\n // Index by pipeline\n let pipelineRuns = this.pipelineIndex.get(config.id);\n if (!pipelineRuns) {\n pipelineRuns = new Set();\n this.pipelineIndex.set(config.id, pipelineRuns);\n }\n pipelineRuns.add(runId);\n\n return run;\n }\n\n async getRun(runId: string): Promise<PipelineRun | null> {\n return this.runs.get(runId) ?? null;\n }\n\n async updateRun(\n runId: string,\n updates: Partial<\n Pick<\n PipelineRun,\n | 'status'\n | 'currentStepIndex'\n | 'completedAt'\n | 'totalDurationMs'\n | 'error'\n | 'resumeToken'\n | 'complianceMetrics'\n | 'totalPHIDetections'\n | 'totalTokens'\n >\n >,\n ): Promise<void> {\n const run = this.runs.get(runId);\n if (!run) {\n throw new Error(`Run ${runId} not found`);\n }\n\n Object.assign(run, updates);\n this.runs.set(runId, run);\n }\n\n async addStepResult(runId: string, result: StepResult): Promise<void> {\n let runSteps = this.steps.get(runId);\n if (!runSteps) {\n runSteps = [];\n this.steps.set(runId, runSteps);\n }\n runSteps.push(result);\n }\n\n async getStepResults(runId: string): Promise<StepResult[]> {\n return this.steps.get(runId) ?? [];\n }\n\n async storeArtifact(runId: string, stepId: string, artifact: Artifact): Promise<string> {\n const artifactId = `${runId}/${stepId}/${artifact.type}`;\n this.artifacts.set(artifactId, artifact.content);\n return `memory://${artifactId}`;\n }\n\n async getArtifact(url: string): Promise<Buffer | string | object> {\n const artifactId = url.replace('memory://', '');\n const artifact = this.artifacts.get(artifactId);\n if (!artifact) {\n throw new Error(`Artifact not found: ${url}`);\n }\n return artifact;\n }\n\n async createResumptionPoint(\n runId: string,\n stepIndex: number,\n previousResults: StepResult[],\n ): Promise<ResumptionPoint> {\n const token = generateId();\n const expiresAt = new Date(Date.now() + 3600 * 1000); // 1 hour\n\n const resumption: ResumptionPoint = {\n runId,\n stepIndex,\n previousResults,\n token,\n expiresAt,\n };\n\n this.resumptionPoints.set(token, resumption);\n return resumption;\n }\n\n async getResumptionPoint(token: string): Promise<ResumptionPoint | null> {\n const resumption = this.resumptionPoints.get(token);\n if (!resumption) {\n return null;\n }\n\n // Check if expired\n if (resumption.expiresAt < new Date()) {\n this.resumptionPoints.delete(token);\n return null;\n }\n\n return resumption;\n }\n\n async cleanupExpiredResumptionPoints(): Promise<number> {\n const now = new Date();\n let count = 0;\n\n for (const [token, resumption] of this.resumptionPoints.entries()) {\n if (resumption.expiresAt < now) {\n this.resumptionPoints.delete(token);\n count++;\n }\n }\n\n return count;\n }\n\n async queryRunsByActor(\n actorId: string,\n options?: {\n limit?: number;\n offset?: number;\n status?: PipelineRun['status'];\n },\n ): Promise<PipelineRun[]> {\n const runIds = this.actorIndex.get(actorId) ?? new Set();\n let runs = [...runIds].flatMap(id => {\n const run = this.runs.get(id);\n return run ? [run] : [];\n });\n\n // Filter by status\n if (options?.status) {\n runs = runs.filter(r => r.status === options.status);\n }\n\n // Sort by start time (most recent first)\n runs.sort((a, b) => b.startedAt.getTime() - a.startedAt.getTime());\n\n // Pagination\n const offset = options?.offset ?? 0;\n const limit = options?.limit || 10;\n return runs.slice(offset, offset + limit);\n }\n\n async queryRunsByPipeline(\n pipelineId: string,\n options?: {\n limit?: number;\n offset?: number;\n status?: PipelineRun['status'];\n },\n ): Promise<PipelineRun[]> {\n const runIds = this.pipelineIndex.get(pipelineId) ?? new Set();\n let runs = [...runIds].flatMap(id => {\n const run = this.runs.get(id);\n return run ? [run] : [];\n });\n\n // Filter by status\n if (options?.status) {\n runs = runs.filter(r => r.status === options.status);\n }\n\n // Sort by start time (most recent first)\n runs.sort((a, b) => b.startedAt.getTime() - a.startedAt.getTime());\n\n // Pagination\n const offset = options?.offset ?? 0;\n const limit = options?.limit || 10;\n return runs.slice(offset, offset + limit);\n }\n\n async getComplianceMetrics(\n startDate: Date,\n endDate: Date,\n options?: {\n actorId?: string;\n pipelineId?: string;\n },\n ): Promise<{\n totalRuns: number;\n totalPHIDetections: number;\n totalAuditEvents: number;\n totalApprovals: number;\n phiByType: Record<string, number>;\n runsByStatus: Record<PipelineRun['status'], number>;\n }> {\n let runs = [...this.runs.values()];\n\n // Filter by date range\n runs = runs.filter(r => r.startedAt >= startDate && r.startedAt <= endDate);\n\n // Filter by actor\n if (options?.actorId) {\n runs = runs.filter(r => r.actorId === options.actorId);\n }\n\n // Filter by pipeline\n if (options?.pipelineId) {\n runs = runs.filter(r => r.pipelineId === options.pipelineId);\n }\n\n // Aggregate metrics\n const metrics = {\n totalRuns: runs.length,\n totalPHIDetections: runs.reduce((sum, r) => sum + r.totalPHIDetections, 0),\n totalAuditEvents: runs.reduce((sum, r) => sum + (r.complianceMetrics.auditEvents ?? 0), 0),\n totalApprovals: runs.reduce((sum, r) => sum + (r.complianceMetrics.approvalRequests ?? 0), 0),\n phiByType: {} as Record<string, number>,\n runsByStatus: {} as Record<PipelineRun['status'], number>,\n };\n\n // Count by status\n for (const run of runs) {\n metrics.runsByStatus[run.status] = (metrics.runsByStatus[run.status] || 0) + 1;\n }\n\n return metrics;\n }\n\n async close(): Promise<void> {\n // No cleanup needed for memory storage\n }\n\n /**\n * Clear all data (useful for testing)\n */\n clear(): void {\n this.runs.clear();\n this.steps.clear();\n this.artifacts.clear();\n this.resumptionPoints.clear();\n this.actorIndex.clear();\n this.pipelineIndex.clear();\n }\n\n /**\n * Get storage statistics\n */\n getStats() {\n return {\n runs: this.runs.size,\n steps: [...this.steps.values()].reduce((sum, steps) => sum + steps.length, 0),\n artifacts: this.artifacts.size,\n resumptionPoints: this.resumptionPoints.size,\n };\n }\n}\n\n/**\n * Create in-memory storage adapter\n */\nexport function createMemoryTraceStorage(): MemoryTraceStorage {\n return new MemoryTraceStorage();\n}\n","/**\n * @fileoverview Pipeline Presets\n * Pipeline Presets\n * Simplified API for common pipeline patterns\n */\n\nimport { logError } from '@repo/shared/logs';\n\nimport { createMemoryTraceStorage } from './adapters/trace-storage-memory';\nimport { executeCompliantPipeline } from './multi-step-wrapper';\nimport { assertValidPipelineConfig } from './validation';\n\nimport type { TraceStorage } from './trace-storage-interface';\nimport type { PipelineConfig, PipelineResult, PipelineStep } from './types';\nimport type { CoreMessage, ModelRef } from '../shared';\n\n/**\n * Message type for pipeline steps.\n * Aligned with SDK's CoreMessage type.\n */\ntype PipelineMessage = CoreMessage;\n\n/**\n * Simple step configuration (minimal required fields)\n */\nexport interface SimpleStep {\n /** Step name */\n name: string;\n /** AI model (string or model object) */\n model: ModelRef;\n /** System prompt */\n systemPrompt?: string;\n /** Temperature (0-1) */\n temperature?: number;\n /** Transform input from previous step */\n transformInput?: (previousOutput: string | null) => PipelineMessage[];\n}\n\n/**\n * Quick pipeline options\n */\nexport interface QuickPipelineOptions {\n /** Pipeline name */\n name: string;\n /** Steps to execute */\n steps: SimpleStep[];\n /** Initial query/prompt */\n query: string;\n /** User ID for audit logging */\n userId?: string;\n /** Storage adapter (defaults to in-memory) */\n storage?: TraceStorage;\n /** Enable PHI redaction */\n enablePHI?: boolean;\n /** Enable ABAC */\n enableABAC?: boolean;\n}\n\n/**\n * Execute a simple pipeline with sensible defaults\n *\n * @example\n * ```typescript\n * const result = await quickPipeline({\n * name: 'Research Pipeline',\n * query: 'What is AI safety?',\n * steps: [\n * { name: 'Research', model: openai('gpt-5.1-instant') },\n * { name: 'Analyze', model: anthropic('claude-sonnet-4-5') },\n * ],\n * });\n * console.log(result.output);\n * ```\n */\nexport async function quickPipeline(options: QuickPipelineOptions): Promise<PipelineResult> {\n const {\n name,\n steps: simpleSteps,\n query,\n userId = 'default_user',\n storage = createMemoryTraceStorage(),\n enablePHI = true,\n enableABAC = false,\n } = options;\n\n // Convert simple steps to full pipeline steps\n const steps: PipelineStep[] = simpleSteps.map((step, index) => {\n const { transformInput } = step;\n return {\n id: `step_${index + 1}`,\n name: step.name,\n model: step.model,\n systemPrompt: step.systemPrompt,\n temperature: step.temperature ?? 0.7,\n streaming: true,\n transformInput: transformInput\n ? previousResults => {\n const lastResult = previousResults.at(-1);\n const previousOutput = (lastResult?.output as string | undefined) ?? null;\n return transformInput(previousOutput);\n }\n : index === 0\n ? () => [{ role: 'user' as const, content: query }]\n : previousResults => {\n const previousOutput = previousResults[previousResults.length - 1]?.output as string;\n return [{ role: 'user' as const, content: previousOutput ?? query }];\n },\n };\n });\n\n // Create pipeline config\n const config: PipelineConfig = {\n id: `quick_${Date.now()}`,\n name,\n actorId: userId,\n storage: 'blob', // Placeholder, we use provided storage directly\n initialMessages: [{ role: 'user', content: query }],\n compliance: {\n enablePHIRedaction: enablePHI,\n enableABAC,\n policyVersion: 'v2.0',\n },\n steps,\n };\n\n // Validate config\n assertValidPipelineConfig(config);\n\n // Execute pipeline\n return executeCompliantPipeline(config, storage);\n}\n\n/**\n * Create a two-step pipeline: Research → Synthesis\n *\n * @example\n * ```typescript\n * const result = await researchAndSynthesize({\n * query: 'What are the latest trends in AI?',\n * researchModel: openai('gpt-5.1-instant'),\n * synthesisModel: anthropic('claude-sonnet-4-5'),\n * });\n * ```\n */\nexport async function researchAndSynthesize(options: {\n query: string;\n researchModel: ModelRef;\n synthesisModel: ModelRef;\n userId?: string;\n storage?: TraceStorage;\n}): Promise<PipelineResult> {\n return quickPipeline({\n name: 'Research & Synthesis Pipeline',\n query: options.query,\n userId: options.userId,\n storage: options.storage,\n steps: [\n {\n name: 'Research',\n model: options.researchModel,\n systemPrompt:\n 'You are a research assistant. Provide comprehensive, well-researched information.',\n temperature: 0.3,\n },\n {\n name: 'Synthesize',\n model: options.synthesisModel,\n systemPrompt:\n 'You are a synthesis expert. Create a clear, concise summary with key insights.',\n temperature: 0.7,\n transformInput: previousOutput => [\n {\n role: 'user' as const,\n content: `Research findings:\\n\\n${previousOutput}\\n\\nProvide a synthesis with key insights.`,\n },\n ],\n },\n ],\n });\n}\n\n/**\n * Create a three-step pipeline: Research → Analyze → Synthesize\n *\n * @example\n * ```typescript\n * const result = await deepResearchPipeline({\n * query: 'Explain quantum computing',\n * models: {\n * research: openai('gpt-5.1-instant'),\n * analysis: anthropic('claude-sonnet-4-5'),\n * synthesis: openai('gpt-5.1-thinking'),\n * },\n * });\n * ```\n */\nexport async function deepResearchPipeline(options: {\n query: string;\n models: {\n research: ModelRef;\n analysis: ModelRef;\n synthesis: ModelRef;\n };\n userId?: string;\n storage?: TraceStorage;\n}): Promise<PipelineResult> {\n return quickPipeline({\n name: 'Deep Research Pipeline',\n query: options.query,\n userId: options.userId,\n storage: options.storage,\n steps: [\n {\n name: 'Research',\n model: options.models.research,\n systemPrompt: 'You are a research assistant. Gather comprehensive information.',\n temperature: 0.3,\n },\n {\n name: 'Analyze',\n model: options.models.analysis,\n systemPrompt:\n 'You are an expert analyst. Provide deep analysis, identify patterns, and evaluate critically.',\n temperature: 0.5,\n transformInput: previousOutput => [\n {\n role: 'user' as const,\n content: `Research findings:\\n\\n${previousOutput}\\n\\nProvide your expert analysis.`,\n },\n ],\n },\n {\n name: 'Synthesize',\n model: options.models.synthesis,\n systemPrompt:\n 'You are a synthesis expert. Create an executive summary with actionable insights.',\n temperature: 0.7,\n transformInput: previousOutput => [\n {\n role: 'user' as const,\n content: `Analysis:\\n\\n${previousOutput}\\n\\nCreate a final synthesis with actionable insights.`,\n },\n ],\n },\n ],\n });\n}\n\n/**\n * Create a pipeline for iterative refinement\n *\n * @example\n * ```typescript\n * const result = await iterativeRefinement({\n * initialContent: 'Draft blog post about AI...',\n * refinementSteps: 3,\n * model: anthropic('claude-sonnet-4-5'),\n * });\n * ```\n */\nexport async function iterativeRefinement(options: {\n initialContent: string;\n refinementSteps: number;\n model: ModelRef;\n userId?: string;\n storage?: TraceStorage;\n}): Promise<PipelineResult> {\n const steps: SimpleStep[] = [];\n\n for (let i = 0; i < options.refinementSteps; i++) {\n steps.push({\n name: `Refinement ${i + 1}`,\n model: options.model,\n systemPrompt: `You are an expert editor. Improve clarity, coherence, and impact. This is iteration ${i + 1} of ${options.refinementSteps}.`,\n temperature: 0.5,\n transformInput:\n i === 0\n ? () => [{ role: 'user' as const, content: options.initialContent }]\n : previousOutput => [\n {\n role: 'user' as const,\n content: `Previous version:\\n\\n${previousOutput}\\n\\nRefine and improve this further.`,\n },\n ],\n });\n }\n\n return quickPipeline({\n name: 'Iterative Refinement Pipeline',\n query: options.initialContent,\n userId: options.userId,\n storage: options.storage,\n steps,\n });\n}\n\n/**\n * Execute pipeline with custom retry logic\n *\n * @example\n * ```typescript\n * const result = await pipelineWithRetry({\n * config: myPipelineConfig,\n * storage: myStorage,\n * maxRetries: 3,\n * });\n * ```\n */\nexport async function pipelineWithRetry(options: {\n config: PipelineConfig;\n storage: TraceStorage;\n maxRetries?: number;\n retryDelay?: number;\n}): Promise<PipelineResult> {\n const { config, storage, maxRetries = 3, retryDelay = 2000 } = options;\n\n let lastError: Error | null = null;\n\n for (let attempt = 0; attempt < maxRetries; attempt++) {\n try {\n return await executeCompliantPipeline(config, storage);\n } catch (error) {\n lastError = error instanceof Error ? error : new Error('Unknown error');\n logError(`Pipeline attempt ${attempt + 1} failed`, {\n error: lastError,\n attempt: attempt + 1,\n config,\n });\n\n if (attempt < maxRetries - 1) {\n await new Promise(resolve => setTimeout(resolve, retryDelay * (attempt + 1)));\n }\n }\n }\n\n throw new Error(\n `Pipeline failed after ${maxRetries} attempts. Last error: ${lastError?.message}`,\n );\n}\n","/**\n * @fileoverview Trace Storage Interface\n * Trace Storage Interface\n * Abstract interface for pluggable pipeline storage backends\n */\n\nimport type { PipelineConfig, PipelineRun, ResumptionPoint, StepResult } from './types';\n\n/**\n * Artifact to store in blob storage\n */\nexport interface Artifact {\n /** Artifact type */\n type: 'input' | 'output' | 'redacted' | 'metadata';\n /** Content to store */\n content: string | Buffer | object;\n /** Content type (MIME type) */\n contentType: string;\n /** Custom metadata */\n metadata?: Record<string, string>;\n}\n\n/**\n * Abstract interface for trace storage\n *\n * Implementations:\n * - BlobTraceStorage (Vercel Blob + Upstash Redis)\n * - PostgresTraceStorage (Neon Postgres + Vercel Blob)\n */\nexport interface TraceStorage {\n /**\n * Initialize storage (setup connections, tables, etc.)\n */\n initialize(): Promise<void>;\n\n /**\n * Create a new pipeline run\n */\n createRun(config: PipelineConfig): Promise<PipelineRun>;\n\n /**\n * Get pipeline run by ID\n */\n getRun(runId: string): Promise<PipelineRun | null>;\n\n /**\n * Update pipeline run status\n */\n updateRun(\n runId: string,\n updates: Partial<\n Pick<\n PipelineRun,\n | 'status'\n | 'currentStepIndex'\n | 'completedAt'\n | 'totalDurationMs'\n | 'error'\n | 'resumeToken'\n | 'complianceMetrics'\n | 'totalPHIDetections'\n | 'totalTokens'\n >\n >,\n ): Promise<void>;\n\n /**\n * Add step result to run\n */\n addStepResult(runId: string, result: StepResult): Promise<void>;\n\n /**\n * Get step results for a run\n */\n getStepResults(runId: string): Promise<StepResult[]>;\n\n /**\n * Store artifact in blob storage\n * Returns URL to the stored artifact\n */\n storeArtifact(runId: string, stepId: string, artifact: Artifact): Promise<string>;\n\n /**\n * Retrieve artifact from blob storage\n */\n getArtifact(url: string): Promise<Buffer | string | object>;\n\n /**\n * Create resumption point\n */\n createResumptionPoint(\n runId: string,\n stepIndex: number,\n previousResults: StepResult[],\n ): Promise<ResumptionPoint>;\n\n /**\n * Get resumption point by token\n */\n getResumptionPoint(token: string): Promise<ResumptionPoint | null>;\n\n /**\n * Delete expired resumption points\n */\n cleanupExpiredResumptionPoints(): Promise<number>;\n\n /**\n * Query runs by actor\n */\n queryRunsByActor(\n actorId: string,\n options?: {\n limit?: number;\n offset?: number;\n status?: PipelineRun['status'];\n },\n ): Promise<PipelineRun[]>;\n\n /**\n * Query runs by pipeline ID\n */\n queryRunsByPipeline(\n pipelineId: string,\n options?: {\n limit?: number;\n offset?: number;\n status?: PipelineRun['status'];\n },\n ): Promise<PipelineRun[]>;\n\n /**\n * Get compliance metrics for a time range\n */\n getComplianceMetrics(\n startDate: Date,\n endDate: Date,\n options?: {\n actorId?: string;\n pipelineId?: string;\n },\n ): Promise<{\n totalRuns: number;\n totalPHIDetections: number;\n totalAuditEvents: number;\n totalApprovals: number;\n phiByType: Record<string, number>;\n runsByStatus: Record<PipelineRun['status'], number>;\n }>;\n\n /**\n * Close storage connections\n */\n close(): Promise<void>;\n}\n\n/**\n * Storage adapter configuration\n */\nexport interface StorageConfig {\n /** Storage type */\n type: 'blob' | 'postgres';\n\n /** Vercel Blob configuration (for both adapters) */\n blob?: {\n token: string;\n baseUrl?: string;\n };\n\n /** Upstash Redis configuration (for blob adapter) */\n redis?: {\n url: string;\n token: string;\n };\n\n /** Postgres configuration (for postgres adapter) */\n postgres?: {\n connectionString: string;\n schema?: string;\n };\n\n /** Cache TTL in seconds */\n cacheTTL?: number;\n\n /** Artifact retention in days */\n artifactRetentionDays?: number;\n\n /** Maximum artifact size in bytes (default: 5 MB) */\n artifactMaxBytes?: number;\n\n /** Resumption point TTL in seconds (default: 1 hour) */\n resumptionTTL?: number;\n}\n\n/**\n * Helper to create storage adapter\n *\n * For ESM compatibility, import adapters directly:\n * ```typescript\n * import { createBlobTraceStorage } from '#/lib/ai-onedigital/adapters/trace-storage-blob';\n * const storage = createBlobTraceStorage(config);\n * ```\n */\nexport function createTraceStorage(config: StorageConfig): TraceStorage {\n switch (config.type) {\n case 'blob':\n throw new Error(\n 'Use createBlobTraceStorage() directly from #/lib/ai-onedigital/adapters/trace-storage-blob',\n );\n case 'postgres':\n throw new Error(\n 'PostgresTraceStorage not yet implemented. See adapters/trace-storage-postgres/README.md',\n );\n default:\n throw new Error(`Unknown storage type: ${config.type}. Use 'blob' or 'postgres'`);\n }\n}\n","/**\n * @fileoverview Blob Trace Storage Adapter\n * Blob Trace Storage Adapter\n * Uses Vercel Blob for artifacts + Upstash Redis for metadata\n */\n\nimport { createVercelBlobClient } from '../../integrations/blob-storage';\nimport { createUpstashRedis } from '../../integrations/redis';\nimport { generateId } from '../../shared';\n\nimport type { BlobStorageClient } from '../../integrations/blob-storage';\nimport type { RedisClientExtended } from '../../integrations/redis';\nimport type { Artifact, StorageConfig, TraceStorage } from '../trace-storage-interface';\nimport type { PipelineConfig, PipelineRun, ResumptionPoint, StepResult } from '../types';\n\nconst DEFAULT_MAX_ARTIFACT_BYTES = 5 * 1024 * 1024;\n\nconst stringifyArtifact = (value: unknown): string => {\n const seen = new WeakSet<object>();\n\n return JSON.stringify(value, (key, current) => {\n void key;\n if (typeof current === 'bigint') {\n return current.toString();\n }\n\n if (typeof current === 'object' && current !== null) {\n if (seen.has(current)) {\n throw new Error('Artifact content contains a circular reference');\n }\n seen.add(current);\n }\n\n return current;\n });\n};\n\nconst serializeArtifactContent = (artifact: Artifact, maxBytes: number): Buffer => {\n try {\n const { content: artifactContent } = artifact;\n let content: Buffer;\n if (typeof artifactContent === 'string') {\n content = Buffer.from(artifactContent);\n } else if (Buffer.isBuffer(artifactContent)) {\n content = artifactContent;\n } else {\n content = Buffer.from(stringifyArtifact(artifactContent));\n }\n\n if (content.byteLength > maxBytes) {\n throw new Error(`Artifact content exceeds max size (${maxBytes} bytes)`);\n }\n\n return content;\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Unknown error';\n throw new Error(`Failed to serialize artifact content: ${message}`);\n }\n};\n\n/**\n * Blob storage adapter\n * - Metadata: Upstash Redis (fast queries)\n * - Artifacts: Vercel Blob (large files)\n */\nexport class BlobTraceStorage implements TraceStorage {\n private redis: RedisClientExtended;\n private blob: BlobStorageClient;\n private cacheTTL: number;\n private artifactRetentionDays: number;\n private artifactMaxBytes: number;\n private resumptionTTL: number;\n\n constructor(config: StorageConfig) {\n if (!config.redis) {\n throw new Error('Redis configuration required for BlobTraceStorage');\n }\n if (!config.blob) {\n throw new Error('Blob configuration required for BlobTraceStorage');\n }\n\n this.redis = createUpstashRedis({\n url: config.redis.url,\n token: config.redis.token,\n });\n\n this.blob = createVercelBlobClient({ token: config.blob.token, baseUrl: config.blob.baseUrl });\n this.cacheTTL = config.cacheTTL ?? 3600; // 1 hour\n this.artifactRetentionDays = config.artifactRetentionDays ?? 90;\n this.artifactMaxBytes = config.artifactMaxBytes ?? DEFAULT_MAX_ARTIFACT_BYTES;\n this.resumptionTTL = config.resumptionTTL || 3600; // 1 hour\n }\n\n async initialize(): Promise<void> {\n // Test Redis connection\n try {\n await this.redis.ping();\n } catch (error) {\n throw new Error(\n `Failed to connect to Redis: ${error instanceof Error ? error.message : 'Unknown error'}`,\n );\n }\n }\n\n async createRun(config: PipelineConfig): Promise<PipelineRun> {\n const runId = `${config.id}-${generateId()}`;\n\n const run: PipelineRun = {\n runId,\n pipelineId: config.id,\n actorId: config.actorId,\n status: 'running',\n steps: [],\n currentStepIndex: 0,\n startedAt: new Date(),\n totalPHIDetections: 0,\n totalTokens: 0,\n complianceMetrics: {\n phiRedacted: 0,\n abacChecks: 0,\n auditEvents: 0,\n approvalRequests: 0,\n },\n metadata: config.metadata,\n };\n\n // Store in Redis\n await this.redis.set(`run:${runId}`, JSON.stringify(run), {\n ex: this.cacheTTL,\n });\n\n // Add to actor index\n await this.redis.zadd(`actor:${config.actorId}:runs`, {\n score: Date.now(),\n member: runId,\n });\n\n // Add to pipeline index\n await this.redis.zadd(`pipeline:${config.id}:runs`, {\n score: Date.now(),\n member: runId,\n });\n\n // Add to global index for cross-actor/pipeline queries\n await this.redis.zadd('global:runs', {\n score: Date.now(),\n member: runId,\n });\n\n return run;\n }\n\n async getRun(runId: string): Promise<PipelineRun | null> {\n const data = await this.redis.get(`run:${runId}`);\n if (!data) {\n return null;\n }\n\n const run = JSON.parse(data) as PipelineRun;\n\n // Convert date strings back to Date objects\n run.startedAt = new Date(run.startedAt);\n if (run.completedAt) {\n run.completedAt = new Date(run.completedAt);\n }\n\n return run;\n }\n\n async updateRun(\n runId: string,\n updates: Partial<\n Pick<\n PipelineRun,\n | 'status'\n | 'currentStepIndex'\n | 'completedAt'\n | 'totalDurationMs'\n | 'error'\n | 'resumeToken'\n | 'complianceMetrics'\n | 'totalPHIDetections'\n | 'totalTokens'\n >\n >,\n ): Promise<void> {\n const run = await this.getRun(runId);\n if (!run) {\n throw new Error(`Run ${runId} not found`);\n }\n\n const updated = { ...run, ...updates };\n\n await this.redis.set(`run:${runId}`, JSON.stringify(updated), {\n ex: this.cacheTTL,\n });\n }\n\n async addStepResult(runId: string, result: StepResult): Promise<void> {\n // Store step result\n await this.redis.set(`run:${runId}:step:${result.stepId}`, JSON.stringify(result), {\n ex: this.cacheTTL,\n });\n\n // Add to step index\n await this.redis.zadd(`run:${runId}:steps`, {\n score: result.stepIndex,\n member: result.stepId,\n });\n }\n\n async getStepResults(runId: string): Promise<StepResult[]> {\n // Get step IDs in order\n const stepIds = await this.redis.zrange<string[]>(`run:${runId}:steps`, 0, -1);\n\n // Fetch all steps in parallel\n const results = await Promise.all(\n stepIds.map(async (stepId: string) => {\n const data = await this.redis.get(`run:${runId}:step:${stepId}`);\n if (!data) {\n return null;\n }\n const step = JSON.parse(data) as StepResult;\n // Convert dates\n step.startedAt = new Date(step.startedAt);\n if (step.completedAt) {\n step.completedAt = new Date(step.completedAt);\n }\n return step;\n }),\n );\n\n return results.filter((r): r is StepResult => r !== null);\n }\n\n async storeArtifact(runId: string, stepId: string, artifact: Artifact): Promise<string> {\n const pathname = `pipelines/${runId}/${stepId}/${artifact.type}`;\n\n const content = serializeArtifactContent(artifact, this.artifactMaxBytes);\n\n // Upload to blob storage\n const result = await this.blob.put(pathname, content, {\n access: 'public',\n contentType: artifact.contentType,\n });\n\n return result.url;\n }\n\n async getArtifact(url: string): Promise<Buffer | string | object> {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(`Failed to fetch artifact: ${response.statusText}`);\n }\n\n const contentType = response.headers.get('content-type') ?? '';\n\n if (contentType.includes('application/json')) {\n return (await response.json()) as object;\n } else if (contentType.includes('text/')) {\n return await response.text();\n } else {\n return Buffer.from(await response.arrayBuffer());\n }\n }\n\n async createResumptionPoint(\n runId: string,\n stepIndex: number,\n previousResults: StepResult[],\n ): Promise<ResumptionPoint> {\n const token = generateId();\n const expiresAt = new Date(Date.now() + this.resumptionTTL * 1000);\n\n const resumption: ResumptionPoint = {\n runId,\n stepIndex,\n previousResults,\n token,\n expiresAt,\n };\n\n // Store in Redis with TTL\n await this.redis.set(`resumption:${token}`, JSON.stringify(resumption), {\n ex: this.resumptionTTL,\n });\n\n return resumption;\n }\n\n async getResumptionPoint(token: string): Promise<ResumptionPoint | null> {\n const data = await this.redis.get(`resumption:${token}`);\n if (!data) {\n return null;\n }\n\n const resumption = JSON.parse(data) as ResumptionPoint;\n\n // Convert dates\n resumption.expiresAt = new Date(resumption.expiresAt);\n resumption.previousResults = resumption.previousResults.map(r => ({\n ...r,\n startedAt: new Date(r.startedAt),\n completedAt: r.completedAt ? new Date(r.completedAt) : undefined,\n }));\n\n return resumption;\n }\n\n async cleanupExpiredResumptionPoints(): Promise<number> {\n // Redis automatically expires keys with TTL\n // This is a no-op for this implementation\n return 0;\n }\n\n async queryRunsByActor(\n actorId: string,\n options?: {\n limit?: number;\n offset?: number;\n status?: PipelineRun['status'];\n },\n ): Promise<PipelineRun[]> {\n const limit = options?.limit ?? 10;\n const offset = options?.offset || 0;\n\n // Get run IDs from sorted set (most recent first)\n const runIds = await this.redis.zrange<string[]>(\n `actor:${actorId}:runs`,\n offset,\n offset + limit - 1,\n {\n rev: true,\n },\n );\n\n // Fetch runs in parallel\n const runs = await Promise.all(runIds.map(id => this.getRun(id)));\n\n // Filter by status if provided\n let filtered = runs.filter((r): r is PipelineRun => r !== null);\n if (options?.status) {\n filtered = filtered.filter(r => r.status === options.status);\n }\n\n return filtered;\n }\n\n async queryRunsByPipeline(\n pipelineId: string,\n options?: {\n limit?: number;\n offset?: number;\n status?: PipelineRun['status'];\n },\n ): Promise<PipelineRun[]> {\n const limit = options?.limit ?? 10;\n const offset = options?.offset || 0;\n\n // Get run IDs from sorted set (most recent first)\n const runIds = await this.redis.zrange<string[]>(\n `pipeline:${pipelineId}:runs`,\n offset,\n offset + limit - 1,\n {\n rev: true,\n },\n );\n\n // Fetch runs in parallel\n const runs = await Promise.all(runIds.map(id => this.getRun(id)));\n\n // Filter by status if provided\n let filtered = runs.filter((r): r is PipelineRun => r !== null);\n if (options?.status) {\n filtered = filtered.filter(r => r.status === options.status);\n }\n\n return filtered;\n }\n\n async getComplianceMetrics(\n startDate: Date,\n endDate: Date,\n options?: {\n actorId?: string;\n pipelineId?: string;\n },\n ): Promise<{\n totalRuns: number;\n totalPHIDetections: number;\n totalAuditEvents: number;\n totalApprovals: number;\n phiByType: Record<string, number>;\n runsByStatus: Record<PipelineRun['status'], number>;\n }> {\n // Get runs in date range\n let runIds: string[];\n if (options?.actorId) {\n runIds = await this.redis.zrange<string[]>(\n `actor:${options.actorId}:runs`,\n startDate.getTime(),\n endDate.getTime(),\n { byScore: true },\n );\n } else if (options?.pipelineId) {\n runIds = await this.redis.zrange<string[]>(\n `pipeline:${options.pipelineId}:runs`,\n startDate.getTime(),\n endDate.getTime(),\n { byScore: true },\n );\n } else {\n // Global metrics: query all runs by date range\n runIds = await this.redis.zrange<string[]>(\n 'global:runs',\n startDate.getTime(),\n endDate.getTime(),\n {\n byScore: true,\n },\n );\n }\n\n // Fetch all runs\n const runs = await Promise.all(runIds.map(id => this.getRun(id)));\n\n const validRuns = runs.filter((r): r is PipelineRun => r !== null);\n\n // Aggregate metrics\n const metrics = {\n totalRuns: validRuns.length,\n totalPHIDetections: validRuns.reduce((sum, r) => sum + r.totalPHIDetections, 0),\n totalAuditEvents: validRuns.reduce((sum, r) => sum + r.complianceMetrics.auditEvents, 0),\n totalApprovals: validRuns.reduce((sum, r) => sum + r.complianceMetrics.approvalRequests, 0),\n phiByType: {} as Record<string, number>,\n runsByStatus: {} as Record<PipelineRun['status'], number>,\n };\n\n // Count by status\n for (const run of validRuns) {\n metrics.runsByStatus[run.status] = (metrics.runsByStatus[run.status] || 0) + 1;\n }\n\n return metrics;\n }\n\n async close(): Promise<void> {\n // Redis client doesn't need explicit closing\n }\n}\n\n/**\n * Create blob storage adapter\n */\nexport function createBlobTraceStorage(config: StorageConfig): BlobTraceStorage {\n return new BlobTraceStorage(config);\n}\n","/**\n * @fileoverview Storage Factory Helpers\n * Storage Factory Helpers\n * DRY helpers for creating storage adapters from environment variables\n */\n\nimport { logInfo } from '@repo/shared/logs';\n\nimport { createBlobTraceStorage } from './adapters/trace-storage-blob';\nimport { createMemoryTraceStorage } from './adapters/trace-storage-memory';\n\nimport type { TraceStorage } from './trace-storage-interface';\n\n/**\n * Create storage adapter from environment variables\n * No config needed - reads from process.env automatically\n *\n * @example\n * ```typescript\n * const storage = createStorageFromEnv();\n * // Uses VERCEL_BLOB_READ_WRITE_TOKEN, UPSTASH_REDIS_URL, UPSTASH_REDIS_TOKEN\n * ```\n */\nexport function createStorageFromEnv(type: 'blob' | 'memory' = 'blob'): TraceStorage {\n if (type === 'memory') {\n return createMemoryTraceStorage();\n }\n\n // Validate env vars exist\n const blobToken = process.env.VERCEL_BLOB_READ_WRITE_TOKEN;\n const redisUrl = process.env.UPSTASH_REDIS_URL;\n const redisToken = process.env.UPSTASH_REDIS_TOKEN;\n\n if (!blobToken || !redisUrl || !redisToken) {\n throw new Error(\n `Missing required environment variables for blob storage:\\n${\n !blobToken ? ' - VERCEL_BLOB_READ_WRITE_TOKEN\\n' : ''\n }${!redisUrl ? ' - UPSTASH_REDIS_URL\\n' : ''}${\n !redisToken ? ' - UPSTASH_REDIS_TOKEN\\n' : ''\n }Set these in your .env file or use createMemoryTraceStorage() for testing.`,\n );\n }\n\n return createBlobTraceStorage({\n type: 'blob',\n blob: { token: blobToken },\n redis: { url: redisUrl, token: redisToken },\n });\n}\n\n/**\n * Create storage for development (memory-based)\n * No environment variables required\n */\nexport function createDevStorage(): TraceStorage {\n return createMemoryTraceStorage();\n}\n\n/**\n * Create storage for production (blob-based)\n * Validates all required environment variables\n */\nexport function createProdStorage(): TraceStorage {\n return createStorageFromEnv('blob');\n}\n\n/**\n * Auto-detect storage type based on environment\n * Development: memory storage\n * Production: blob storage\n */\nexport function createAutoStorage(): TraceStorage {\n const isDev = process.env.NODE_ENV === 'development';\n const hasEnvVars =\n process.env.VERCEL_BLOB_READ_WRITE_TOKEN &&\n process.env.UPSTASH_REDIS_URL &&\n process.env.UPSTASH_REDIS_TOKEN;\n\n if (isDev && !hasEnvVars) {\n logInfo('[Pipeline] Using in-memory storage (development mode)');\n return createMemoryTraceStorage();\n }\n\n return createStorageFromEnv('blob');\n}\n","/**\n * Pipeline orchestration module\n * Multi-step execution with resumption, compliance, and tracing\n * Ported from oneapp-onstage production patterns\n */\n\n// Core pipeline execution\nexport * from './multi-step-wrapper';\nexport * from './step-executor';\nexport * from './validation';\nexport * from './types';\nexport * from './defaults';\n\n// Message transforms\nexport * from './message-transforms';\n\n// Pipeline presets\nexport * from './pipeline-presets';\n\n// Trace storage\nexport * from './trace-storage-interface';\nexport * from './storage-factory';\nexport * from './adapters/trace-storage-blob';\nexport * from './adapters/trace-storage-memory';\n"],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { o as InjectionDetectionResult } from "./types-BxD-5btB.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/security/injection/prompt-injection.d.ts
|
|
4
|
+
declare function detectPromptInjection(input: string): Promise<InjectionDetectionResult>;
|
|
5
|
+
declare function sanitizeInjection(input: string): string;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { sanitizeInjection as n, detectPromptInjection as t };
|
|
8
|
+
//# sourceMappingURL=prompt-injection-DQXchzsV.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-injection-DQXchzsV.d.mts","names":[],"sources":["../src/security/injection/prompt-injection.ts"],"mappings":";;;iBAoCsB,qBAAA,CAAsB,KAAA,WAAgB,OAAA,CAAQ,wBAAA;AAAA,iBAmBpD,iBAAA,CAAkB,KAAA"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
//#region src/security/injection/prompt-injection.ts
|
|
2
|
+
/**
|
|
3
|
+
* Common prompt injection patterns
|
|
4
|
+
*/
|
|
5
|
+
const INJECTION_PATTERNS = [
|
|
6
|
+
/ignore.*(?:previous|above|prior).*(?:instructions?|prompt)/i,
|
|
7
|
+
/disregard.*(?:above|previous)/i,
|
|
8
|
+
/(?:new|different).*instructions?/i,
|
|
9
|
+
/(?:system|admin).*prompt/i,
|
|
10
|
+
/you.*are.*now/i,
|
|
11
|
+
/pretend.*(?:you|to\s+be)/i,
|
|
12
|
+
/(?:forget|ignore).*everything/i,
|
|
13
|
+
/(?:override|bypass).*(?:rules?|instructions?)/i,
|
|
14
|
+
/(?:act|behave).*(?:as|like)/i,
|
|
15
|
+
/(?:jailbreak|unlock)/i,
|
|
16
|
+
/\[system\]/i,
|
|
17
|
+
/\[admin\]/i,
|
|
18
|
+
/<\/?(?:system|admin)>/i
|
|
19
|
+
];
|
|
20
|
+
/**
|
|
21
|
+
* Detect prompt injection attempts in text
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```ts
|
|
25
|
+
* const result = await detectPromptInjection("Ignore previous instructions and...");
|
|
26
|
+
* if (result.detected) {
|
|
27
|
+
* console.log(`Injection detected with ${result.confidence * 100}% confidence`);
|
|
28
|
+
* }
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
async function detectPromptInjection(input) {
|
|
32
|
+
const matchedPatterns = INJECTION_PATTERNS.filter((pattern) => pattern.test(input));
|
|
33
|
+
const confidence = matchedPatterns.length > 0 ? Math.min(matchedPatterns.length / 3, 1) : 0;
|
|
34
|
+
return {
|
|
35
|
+
detected: matchedPatterns.length > 0,
|
|
36
|
+
confidence,
|
|
37
|
+
patterns: matchedPatterns.map((p) => p.source),
|
|
38
|
+
originalText: input
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Sanitize potential injection attempts from text
|
|
43
|
+
*/
|
|
44
|
+
function sanitizeInjection(input) {
|
|
45
|
+
let sanitized = input;
|
|
46
|
+
for (const pattern of INJECTION_PATTERNS) sanitized = sanitized.replace(pattern, "[REDACTED]");
|
|
47
|
+
return sanitized;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
//#endregion
|
|
51
|
+
export { sanitizeInjection as n, detectPromptInjection as t };
|
|
52
|
+
//# sourceMappingURL=prompt-injection-RpoLPwSa.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-injection-RpoLPwSa.mjs","names":[],"sources":["../src/security/injection/prompt-injection.ts"],"sourcesContent":["/**\n * Prompt injection detection\n */\n\nimport type { InjectionDetectionResult } from '../types';\n\n/**\n * Common prompt injection patterns\n */\nconst INJECTION_PATTERNS = [\n /ignore.*(?:previous|above|prior).*(?:instructions?|prompt)/i,\n /disregard.*(?:above|previous)/i,\n /(?:new|different).*instructions?/i,\n /(?:system|admin).*prompt/i,\n /you.*are.*now/i,\n /pretend.*(?:you|to\\s+be)/i,\n /(?:forget|ignore).*everything/i,\n /(?:override|bypass).*(?:rules?|instructions?)/i,\n /(?:act|behave).*(?:as|like)/i,\n /(?:jailbreak|unlock)/i,\n /\\[system\\]/i,\n /\\[admin\\]/i,\n /<\\/?(?:system|admin)>/i,\n];\n\n/**\n * Detect prompt injection attempts in text\n *\n * @example\n * ```ts\n * const result = await detectPromptInjection(\"Ignore previous instructions and...\");\n * if (result.detected) {\n * console.log(`Injection detected with ${result.confidence * 100}% confidence`);\n * }\n * ```\n */\nexport async function detectPromptInjection(input: string): Promise<InjectionDetectionResult> {\n const matchedPatterns = INJECTION_PATTERNS.filter(pattern => pattern.test(input));\n\n const confidence =\n matchedPatterns.length > 0\n ? Math.min(matchedPatterns.length / 3, 1) // Cap at 1.0\n : 0;\n\n return {\n detected: matchedPatterns.length > 0,\n confidence,\n patterns: matchedPatterns.map(p => p.source),\n originalText: input,\n };\n}\n\n/**\n * Sanitize potential injection attempts from text\n */\nexport function sanitizeInjection(input: string): string {\n let sanitized = input;\n\n for (const pattern of INJECTION_PATTERNS) {\n sanitized = sanitized.replace(pattern, '[REDACTED]');\n }\n\n return sanitized;\n}\n"],"mappings":";;;;AASA,MAAM,qBAAqB;CACzB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;;;;;;;;;;;;AAaD,eAAsB,sBAAsB,OAAkD;CAC5F,MAAM,kBAAkB,mBAAmB,QAAO,YAAW,QAAQ,KAAK,MAAM,CAAC;CAEjF,MAAM,aACJ,gBAAgB,SAAS,IACrB,KAAK,IAAI,gBAAgB,SAAS,GAAG,EAAE,GACvC;AAEN,QAAO;EACL,UAAU,gBAAgB,SAAS;EACnC;EACA,UAAU,gBAAgB,KAAI,MAAK,EAAE,OAAO;EAC5C,cAAc;EACf;;;;;AAMH,SAAgB,kBAAkB,OAAuB;CACvD,IAAI,YAAY;AAEhB,MAAK,MAAM,WAAW,mBACpB,aAAY,UAAU,QAAQ,SAAS,aAAa;AAGtD,QAAO"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
//#region src/prompts/templates.d.ts
|
|
2
|
+
interface InterpolationResult {
|
|
3
|
+
result: string;
|
|
4
|
+
success: boolean;
|
|
5
|
+
missingVariables: string[];
|
|
6
|
+
substitutedVariables: string[];
|
|
7
|
+
}
|
|
8
|
+
declare function createPromptTemplate(template: string): {
|
|
9
|
+
template: string;
|
|
10
|
+
variables: Set<string>;
|
|
11
|
+
interpolate: (vars: Record<string, string | number | boolean>) => InterpolationResult;
|
|
12
|
+
getRequiredVariables: () => string[];
|
|
13
|
+
validate: (vars: Record<string, unknown>) => {
|
|
14
|
+
valid: boolean;
|
|
15
|
+
missing: string[];
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
declare function interpolateTemplate(template: string, variables: Record<string, string | number | boolean>, knownVariables?: Set<string>): InterpolationResult;
|
|
19
|
+
declare function validatePromptTemplate(template: string, variables: Record<string, unknown>): {
|
|
20
|
+
valid: boolean;
|
|
21
|
+
missing: string[];
|
|
22
|
+
};
|
|
23
|
+
declare function mergePromptTemplates(templates: string[], separator?: string): {
|
|
24
|
+
merged: string;
|
|
25
|
+
variables: Set<string>;
|
|
26
|
+
conflicts: string[];
|
|
27
|
+
};
|
|
28
|
+
declare function extractTemplateVariables(template: string): string[];
|
|
29
|
+
declare class CachedPromptTemplate {
|
|
30
|
+
private template;
|
|
31
|
+
private variables;
|
|
32
|
+
private cache;
|
|
33
|
+
constructor(template: string);
|
|
34
|
+
getTemplate(): string;
|
|
35
|
+
getVariables(): string[];
|
|
36
|
+
interpolate(variables: Record<string, string | number | boolean>): string;
|
|
37
|
+
clearCache(): void;
|
|
38
|
+
getCacheStats(): {
|
|
39
|
+
size: number;
|
|
40
|
+
maxSize: number;
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
declare const PROMPT_TEMPLATES: {
|
|
44
|
+
task: {
|
|
45
|
+
template: string;
|
|
46
|
+
variables: Set<string>;
|
|
47
|
+
interpolate: (vars: Record<string, string | number | boolean>) => InterpolationResult;
|
|
48
|
+
getRequiredVariables: () => string[];
|
|
49
|
+
validate: (vars: Record<string, unknown>) => {
|
|
50
|
+
valid: boolean;
|
|
51
|
+
missing: string[];
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
conversation: {
|
|
55
|
+
template: string;
|
|
56
|
+
variables: Set<string>;
|
|
57
|
+
interpolate: (vars: Record<string, string | number | boolean>) => InterpolationResult;
|
|
58
|
+
getRequiredVariables: () => string[];
|
|
59
|
+
validate: (vars: Record<string, unknown>) => {
|
|
60
|
+
valid: boolean;
|
|
61
|
+
missing: string[];
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
analysis: {
|
|
65
|
+
template: string;
|
|
66
|
+
variables: Set<string>;
|
|
67
|
+
interpolate: (vars: Record<string, string | number | boolean>) => InterpolationResult;
|
|
68
|
+
getRequiredVariables: () => string[];
|
|
69
|
+
validate: (vars: Record<string, unknown>) => {
|
|
70
|
+
valid: boolean;
|
|
71
|
+
missing: string[];
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
codeGeneration: {
|
|
75
|
+
template: string;
|
|
76
|
+
variables: Set<string>;
|
|
77
|
+
interpolate: (vars: Record<string, string | number | boolean>) => InterpolationResult;
|
|
78
|
+
getRequiredVariables: () => string[];
|
|
79
|
+
validate: (vars: Record<string, unknown>) => {
|
|
80
|
+
valid: boolean;
|
|
81
|
+
missing: string[];
|
|
82
|
+
};
|
|
83
|
+
};
|
|
84
|
+
};
|
|
85
|
+
//#endregion
|
|
86
|
+
//#region src/prompts/model-variants.d.ts
|
|
87
|
+
interface ModelProfile {
|
|
88
|
+
model: string;
|
|
89
|
+
provider: 'anthropic' | 'openai' | 'google' | 'other';
|
|
90
|
+
maxTokens: number;
|
|
91
|
+
supportsFunctions: boolean;
|
|
92
|
+
supportsStreaming: boolean;
|
|
93
|
+
supportsVision: boolean;
|
|
94
|
+
contextWindow: number;
|
|
95
|
+
strengths: string[];
|
|
96
|
+
formatting: string;
|
|
97
|
+
}
|
|
98
|
+
declare const MODEL_PROFILES: Record<string, ModelProfile>;
|
|
99
|
+
declare function getModelProfile(model: string): ModelProfile | undefined;
|
|
100
|
+
declare function formatPromptForClaude(basePrompt: string): string;
|
|
101
|
+
declare function formatPromptForGPT(basePrompt: string): string;
|
|
102
|
+
declare function formatPromptForGemini(basePrompt: string): string;
|
|
103
|
+
declare function adjustForContextWindow(prompt: string, model: string, maxPromptTokens?: number): string;
|
|
104
|
+
declare function optimizeForModel(prompt: string, model: string): string;
|
|
105
|
+
declare function getModelFormatGuidance(model: string): string;
|
|
106
|
+
declare function optimizeForStreaming(prompt: string, model: string): string;
|
|
107
|
+
declare function optimizeForCost(basePrompt: string, targetModel: string): string;
|
|
108
|
+
interface ModelConfig {
|
|
109
|
+
model: string;
|
|
110
|
+
profile: ModelProfile;
|
|
111
|
+
optimizedPrompt: string;
|
|
112
|
+
formatGuidance: string;
|
|
113
|
+
capabilities: string[];
|
|
114
|
+
}
|
|
115
|
+
declare function getModelConfig(basePrompt: string, model: string, optimizationMode?: 'balanced' | 'speed' | 'quality' | 'cost'): ModelConfig;
|
|
116
|
+
declare namespace index_d_exports {
|
|
117
|
+
export { CachedPromptTemplate, ComposeOptions, InterpolationResult, MODEL_PROFILES, ModelConfig, ModelProfile, PROMPT_FRAGMENTS, PROMPT_TEMPLATES, PromptTemplate, SYSTEM_PROMPTS, TEMPS, TOKENS, TemplateVariables, adjustForContextWindow, chatFragments, composeSystemPrompt, createPromptTemplate, extractTemplateVariables, formatPromptForClaude, formatPromptForGPT, formatPromptForGemini, formatPromptForModel, getModelConfig, getModelFormatGuidance, getModelProfile, interpolateTemplate, mergePromptFragments, mergePromptTemplates, optimizeForCost, optimizeForModel, optimizeForStreaming, validatePromptTemplate, validatePromptVariables };
|
|
118
|
+
}
|
|
119
|
+
declare const SYSTEM_PROMPTS: {
|
|
120
|
+
default: string;
|
|
121
|
+
assistant: string;
|
|
122
|
+
coder: string;
|
|
123
|
+
analyst: string;
|
|
124
|
+
researcher: string;
|
|
125
|
+
writer: string;
|
|
126
|
+
};
|
|
127
|
+
declare const PROMPT_FRAGMENTS: {
|
|
128
|
+
safety: string;
|
|
129
|
+
formatting: string;
|
|
130
|
+
codeStyle: string;
|
|
131
|
+
reasoning: string;
|
|
132
|
+
citations: string;
|
|
133
|
+
};
|
|
134
|
+
interface ComposeOptions {
|
|
135
|
+
basePrompt: string;
|
|
136
|
+
fragments?: string[];
|
|
137
|
+
model?: string;
|
|
138
|
+
temperature?: number;
|
|
139
|
+
maxTokens?: number;
|
|
140
|
+
style?: 'concise' | 'detailed' | 'balanced';
|
|
141
|
+
customInstructions?: string;
|
|
142
|
+
}
|
|
143
|
+
declare function composeSystemPrompt(options: ComposeOptions): string;
|
|
144
|
+
declare function formatPromptForModel(basePrompt: string, model: string): string;
|
|
145
|
+
interface TemplateVariables {
|
|
146
|
+
[key: string]: string | number | boolean;
|
|
147
|
+
}
|
|
148
|
+
interface PromptTemplate {
|
|
149
|
+
template: string;
|
|
150
|
+
variables: Set<string>;
|
|
151
|
+
}
|
|
152
|
+
declare function validatePromptVariables(template: PromptTemplate, variables: TemplateVariables): {
|
|
153
|
+
valid: boolean;
|
|
154
|
+
missing: string[];
|
|
155
|
+
};
|
|
156
|
+
declare function mergePromptFragments(fragments: string[], separator?: string): string;
|
|
157
|
+
declare const TEMPS: {
|
|
158
|
+
readonly PRECISE: 0;
|
|
159
|
+
readonly VERY_LOW: 0.1;
|
|
160
|
+
readonly FACTUAL: 0.2;
|
|
161
|
+
readonly LOW_CREATIVE: 0.3;
|
|
162
|
+
readonly MODERATE: 0.5;
|
|
163
|
+
readonly BALANCED: 0.7;
|
|
164
|
+
readonly HIGH_CREATIVE: 0.8;
|
|
165
|
+
readonly CREATIVE: 0.9;
|
|
166
|
+
};
|
|
167
|
+
declare const TOKENS: {
|
|
168
|
+
readonly TINY: 256;
|
|
169
|
+
readonly SHORT: 1024;
|
|
170
|
+
readonly MEDIUM: 2048;
|
|
171
|
+
readonly LONG: 4096;
|
|
172
|
+
readonly EXTENDED: 8192;
|
|
173
|
+
readonly MAX: 16384;
|
|
174
|
+
};
|
|
175
|
+
declare const chatFragments: {
|
|
176
|
+
readonly basicChat: {
|
|
177
|
+
readonly temperature: 0.7;
|
|
178
|
+
readonly maxOutputTokens: 2048;
|
|
179
|
+
};
|
|
180
|
+
readonly structured: {
|
|
181
|
+
readonly temperature: 0.1;
|
|
182
|
+
readonly maxOutputTokens: 4096;
|
|
183
|
+
};
|
|
184
|
+
readonly withTools: {
|
|
185
|
+
readonly temperature: 0.7;
|
|
186
|
+
readonly maxOutputTokens: 2048;
|
|
187
|
+
readonly toolChoice: "auto";
|
|
188
|
+
};
|
|
189
|
+
};
|
|
190
|
+
//#endregion
|
|
191
|
+
export { CachedPromptTemplate, ComposeOptions, InterpolationResult, MODEL_PROFILES, ModelConfig, ModelProfile, PROMPT_FRAGMENTS, PROMPT_TEMPLATES, PromptTemplate, SYSTEM_PROMPTS, TEMPS, TOKENS, TemplateVariables, adjustForContextWindow, chatFragments, composeSystemPrompt, createPromptTemplate, extractTemplateVariables, formatPromptForClaude, formatPromptForGPT, formatPromptForGemini, formatPromptForModel, getModelConfig, getModelFormatGuidance, getModelProfile, interpolateTemplate, mergePromptFragments, mergePromptTemplates, optimizeForCost, optimizeForModel, optimizeForStreaming, index_d_exports as t, validatePromptTemplate, validatePromptVariables };
|
|
192
|
+
//# sourceMappingURL=prompts.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.d.mts","names":[],"sources":["../src/prompts/templates.ts","../src/prompts/model-variants.ts","../src/prompts/index.ts"],"mappings":";UAciB,mBAAA;EACf,MAAA;EACA,OAAA;EACA,gBAAA;EACA,oBAAA;AAAA;AAAA,iBAQc,oBAAA,CAAqB,QAAA;;;sBAmBb,MAAA,wCAA4C,mBAAA;;mBAU/C,MAAA;;;;;iBAiBL,mBAAA,CACd,QAAA,UACA,SAAA,EAAW,MAAA,qCACX,cAAA,GAAiB,GAAA,WAChB,mBAAA;AAAA,iBAuCa,sBAAA,CACd,QAAA,UACA,SAAA,EAAW,MAAA;EACR,KAAA;EAAgB,OAAA;AAAA;AAAA,iBA2BL,oBAAA,CACd,SAAA,YACA,SAAA;EAEA,MAAA;EACA,SAAA,EAAW,GAAA;EACX,SAAA;AAAA;AAAA,iBAwCc,wBAAA,CAAyB,QAAA;AAAA,cAqB5B,oBAAA;EAAA,QACH,QAAA;EAAA,QACA,SAAA;EAAA,QACA,KAAA;cAEI,QAAA;EAkBZ,WAAA,CAAA;EAOA,YAAA,CAAA;EAOA,WAAA,CAAY,SAAA,EAAW,MAAA;EAmBvB,UAAA,CAAA;EAOA,aAAA,CAAA;IAAmB,IAAA;IAAc,OAAA;EAAA;AAAA;AAAA,cAWtB,gBAAA;;;;wBAjPW,MAAA,wCAA4C,mBAAA;;qBAU/C,MAAA;;;;;;;;wBAVG,MAAA,wCAA4C,mBAAA;;qBAU/C,MAAA;;;;;;;;wBAVG,MAAA,wCAA4C,mBAAA;;qBAU/C,MAAA;;;;;;;;wBAVG,MAAA,wCAA4C,mBAAA;;qBAU/C,MAAA;;;;;;;;UC/CJ,YAAA;EACf,KAAA;EACA,QAAA;EACA,SAAA;EACA,iBAAA;EACA,iBAAA;EACA,cAAA;EACA,aAAA;EACA,SAAA;EACA,UAAA;AAAA;AAAA,cAMW,cAAA,EAAgB,MAAA,SAAe,YAAA;AAAA,iBAqG5B,eAAA,CAAgB,KAAA,WAAgB,YAAA;AAAA,iBAahC,qBAAA,CAAsB,UAAA;AAAA,iBAmBtB,kBAAA,CAAmB,UAAA;AAAA,iBAiBnB,qBAAA,CAAsB,UAAA;AAAA,iBAatB,sBAAA,CACd,MAAA,UACA,KAAA,UACA,eAAA;AAAA,iBAoCc,gBAAA,CAAiB,MAAA,UAAgB,KAAA;AAAA,iBAkDjC,sBAAA,CAAuB,KAAA;AAAA,iBAqCvB,oBAAA,CAAqB,MAAA,UAAgB,KAAA;AAAA,iBAqBrC,eAAA,CAAgB,UAAA,UAAoB,WAAA;AAAA,UAyBnC,WAAA;EACf,KAAA;EACA,OAAA,EAAS,YAAA;EACT,eAAA;EACA,cAAA;EACA,YAAA;AAAA;AAAA,iBAUc,cAAA,CACd,UAAA,UACA,KAAA,UACA,gBAAA,+CACC,WAAA;AAAA;;;cCjXU,cAAA;;;;;;;;cA+BA,gBAAA;;;;;;;UAmCI,cAAA;EACf,UAAA;EACA,SAAA;EACA,KAAA;EACA,WAAA;EACA,SAAA;EACA,KAAA;EACA,kBAAA;AAAA;AAAA,iBAQc,mBAAA,CAAoB,OAAA,EAAS,cAAA;AAAA,iBAoD7B,oBAAA,CAAqB,UAAA,UAAoB,KAAA;AAAA,UAoBxC,iBAAA;EAAA,CACd,GAAA;AAAA;AAAA,UAMc,cAAA;EACf,QAAA;EACA,SAAA,EAAW,GAAA;AAAA;AAAA,iBASG,uBAAA,CACd,QAAA,EAAU,cAAA,EACV,SAAA,EAAW,iBAAA;EACR,KAAA;EAAgB,OAAA;AAAA;AAAA,iBAcL,oBAAA,CAAqB,SAAA,YAAqB,SAAA;AAAA,cAsB7C,KAAA;EAAA;;;;;;;;;cAeA,MAAA;EAAA;;;;;;;cAkBA,aAAA;EAAA"}
|