@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,596 @@
|
|
|
1
|
+
import { n as hashInput, t as generateSignature } from "./crypto-8ABhc3TD.mjs";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { logInfo, logWarn } from "@od-oneapp/shared/logs";
|
|
4
|
+
|
|
5
|
+
//#region src/governance/versioning/index.ts
|
|
6
|
+
/**
|
|
7
|
+
* Version Control & Configuration Management
|
|
8
|
+
*
|
|
9
|
+
* Manages versioning for AI platform configurations, policies, and schemas.
|
|
10
|
+
* Enables tracking configuration changes, compatibility checking, and migration.
|
|
11
|
+
*
|
|
12
|
+
* @module @od-oneapp/ai-platform/governance/versioning
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* import {
|
|
17
|
+
* createVersionRegistry,
|
|
18
|
+
* getCurrentVersion,
|
|
19
|
+
* isVersionCompatible,
|
|
20
|
+
* migrateConfig
|
|
21
|
+
* } from '@od-oneapp/ai-platform/governance/versioning';
|
|
22
|
+
*
|
|
23
|
+
* // Get current platform version
|
|
24
|
+
* const version = getCurrentVersion();
|
|
25
|
+
*
|
|
26
|
+
* // Check compatibility
|
|
27
|
+
* if (isVersionCompatible(config.version, version)) {
|
|
28
|
+
* // Config is compatible
|
|
29
|
+
* } else {
|
|
30
|
+
* // Migrate config
|
|
31
|
+
* const migrated = migrateConfig(config, version);
|
|
32
|
+
* }
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
/** Current policy version - increment when making breaking changes */
|
|
36
|
+
const POLICY_VERSION = "2.0.0";
|
|
37
|
+
/** Current schema version for configurations */
|
|
38
|
+
const SCHEMA_VERSION = "1.0.0";
|
|
39
|
+
/** Platform version (synced with package.json) */
|
|
40
|
+
const PLATFORM_VERSION = "1.0.0";
|
|
41
|
+
/**
|
|
42
|
+
* Create a version registry for tracking and managing versions.
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```typescript
|
|
46
|
+
* const registry = createVersionRegistry();
|
|
47
|
+
*
|
|
48
|
+
* registry.registerVersion({
|
|
49
|
+
* version: '1.0.0',
|
|
50
|
+
* releasedAt: new Date('2024-01-01'),
|
|
51
|
+
* deprecated: false,
|
|
52
|
+
* features: ['Initial release']
|
|
53
|
+
* });
|
|
54
|
+
*
|
|
55
|
+
* registry.registerVersion({
|
|
56
|
+
* version: '2.0.0',
|
|
57
|
+
* releasedAt: new Date('2024-06-01'),
|
|
58
|
+
* deprecated: false,
|
|
59
|
+
* breakingChanges: ['Changed policy schema']
|
|
60
|
+
* });
|
|
61
|
+
*
|
|
62
|
+
* registry.registerMigration({
|
|
63
|
+
* fromVersion: '1.0.0',
|
|
64
|
+
* toVersion: '2.0.0',
|
|
65
|
+
* migrate: (config) => ({ ...config, newField: 'default' })
|
|
66
|
+
* });
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
function createVersionRegistry(config = {}) {
|
|
70
|
+
const versions = /* @__PURE__ */ new Map();
|
|
71
|
+
const migrations = /* @__PURE__ */ new Map();
|
|
72
|
+
for (const version of config.versions ?? []) versions.set(version.version, version);
|
|
73
|
+
for (const migration of config.migrations ?? []) {
|
|
74
|
+
const key = `${migration.fromVersion}->${migration.toVersion}`;
|
|
75
|
+
migrations.set(key, migration);
|
|
76
|
+
}
|
|
77
|
+
function registerVersion(metadata) {
|
|
78
|
+
versions.set(metadata.version, metadata);
|
|
79
|
+
}
|
|
80
|
+
function getVersion(version) {
|
|
81
|
+
return versions.get(version);
|
|
82
|
+
}
|
|
83
|
+
function getAllVersions() {
|
|
84
|
+
return Array.from(versions.values()).sort((a, b) => compareVersions(a.version, b.version));
|
|
85
|
+
}
|
|
86
|
+
function getLatestVersion() {
|
|
87
|
+
const all = getAllVersions();
|
|
88
|
+
return all[all.length - 1];
|
|
89
|
+
}
|
|
90
|
+
function deprecateVersion(version, migrateToVersion) {
|
|
91
|
+
const metadata = versions.get(version);
|
|
92
|
+
if (metadata) {
|
|
93
|
+
metadata.deprecated = true;
|
|
94
|
+
metadata.migrateToVersion = migrateToVersion;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
function hasVersion(version) {
|
|
98
|
+
return versions.has(version);
|
|
99
|
+
}
|
|
100
|
+
function registerMigration(migration) {
|
|
101
|
+
const key = `${migration.fromVersion}->${migration.toVersion}`;
|
|
102
|
+
migrations.set(key, migration);
|
|
103
|
+
}
|
|
104
|
+
function getMigrationPath(fromVersion, toVersion) {
|
|
105
|
+
const path = [];
|
|
106
|
+
const visited = /* @__PURE__ */ new Set();
|
|
107
|
+
const queue = [{
|
|
108
|
+
version: fromVersion,
|
|
109
|
+
path: []
|
|
110
|
+
}];
|
|
111
|
+
while (queue.length > 0) {
|
|
112
|
+
const item = queue.shift();
|
|
113
|
+
if (!item) break;
|
|
114
|
+
const { version, path: currentPath } = item;
|
|
115
|
+
if (version === toVersion) return currentPath;
|
|
116
|
+
if (visited.has(version)) continue;
|
|
117
|
+
visited.add(version);
|
|
118
|
+
for (const migration of migrations.values()) if (migration.fromVersion === version && !visited.has(migration.toVersion)) queue.push({
|
|
119
|
+
version: migration.toVersion,
|
|
120
|
+
path: [...currentPath, migration]
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
return path;
|
|
124
|
+
}
|
|
125
|
+
function migrate(config, fromVersion, toVersion) {
|
|
126
|
+
if (fromVersion === toVersion) return config;
|
|
127
|
+
const path = getMigrationPath(fromVersion, toVersion);
|
|
128
|
+
if (path.length === 0) throw new Error(`No migration path from ${fromVersion} to ${toVersion}`);
|
|
129
|
+
let result = config;
|
|
130
|
+
for (const migration of path) result = migration.migrate(result);
|
|
131
|
+
return result;
|
|
132
|
+
}
|
|
133
|
+
return {
|
|
134
|
+
registerVersion,
|
|
135
|
+
getVersion,
|
|
136
|
+
getAllVersions,
|
|
137
|
+
getLatestVersion,
|
|
138
|
+
deprecateVersion,
|
|
139
|
+
hasVersion,
|
|
140
|
+
registerMigration,
|
|
141
|
+
getMigrationPath,
|
|
142
|
+
migrate
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Parse a semantic version string.
|
|
147
|
+
*
|
|
148
|
+
* @example
|
|
149
|
+
* ```typescript
|
|
150
|
+
* const { major, minor, patch } = parseVersion('2.1.3');
|
|
151
|
+
* // { major: 2, minor: 1, patch: 3 }
|
|
152
|
+
* ```
|
|
153
|
+
*/
|
|
154
|
+
function parseVersion(version) {
|
|
155
|
+
const match = version.match(/^(\d+)\.(\d+)\.(\d+)/);
|
|
156
|
+
if (!match) throw new Error(`Invalid version format: ${version}`);
|
|
157
|
+
const major = match[1];
|
|
158
|
+
const minor = match[2];
|
|
159
|
+
const patch = match[3];
|
|
160
|
+
if (!major || !minor || !patch) throw new Error(`Invalid version format: ${version}`);
|
|
161
|
+
return {
|
|
162
|
+
major: parseInt(major, 10),
|
|
163
|
+
minor: parseInt(minor, 10),
|
|
164
|
+
patch: parseInt(patch, 10)
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Compare two version strings.
|
|
169
|
+
* Returns negative if a < b, positive if a > b, 0 if equal.
|
|
170
|
+
*
|
|
171
|
+
* @example
|
|
172
|
+
* ```typescript
|
|
173
|
+
* compareVersions('1.0.0', '2.0.0'); // -1
|
|
174
|
+
* compareVersions('2.0.0', '1.0.0'); // 1
|
|
175
|
+
* compareVersions('1.0.0', '1.0.0'); // 0
|
|
176
|
+
* ```
|
|
177
|
+
*/
|
|
178
|
+
function compareVersions(a, b) {
|
|
179
|
+
const versionA = parseVersion(a);
|
|
180
|
+
const versionB = parseVersion(b);
|
|
181
|
+
if (versionA.major !== versionB.major) return versionA.major - versionB.major;
|
|
182
|
+
if (versionA.minor !== versionB.minor) return versionA.minor - versionB.minor;
|
|
183
|
+
return versionA.patch - versionB.patch;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Check if two versions are compatible (same major version).
|
|
187
|
+
*
|
|
188
|
+
* @example
|
|
189
|
+
* ```typescript
|
|
190
|
+
* isVersionCompatible('1.0.0', '1.5.0'); // true
|
|
191
|
+
* isVersionCompatible('1.0.0', '2.0.0'); // false
|
|
192
|
+
* ```
|
|
193
|
+
*/
|
|
194
|
+
function isVersionCompatible(configVersion, targetVersion) {
|
|
195
|
+
const config = parseVersion(configVersion);
|
|
196
|
+
const target = parseVersion(targetVersion);
|
|
197
|
+
return config.major === target.major;
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Check if a version satisfies a version range.
|
|
201
|
+
*
|
|
202
|
+
* @example
|
|
203
|
+
* ```typescript
|
|
204
|
+
* satisfiesRange('1.5.0', '>=1.0.0'); // true
|
|
205
|
+
* satisfiesRange('2.0.0', '<2.0.0'); // false
|
|
206
|
+
* satisfiesRange('1.5.0', '>=1.0.0 <2.0.0'); // true
|
|
207
|
+
* ```
|
|
208
|
+
*/
|
|
209
|
+
function satisfiesRange(version, range) {
|
|
210
|
+
parseVersion(version);
|
|
211
|
+
const conditions = range.split(/\s+/).filter((c) => c.length > 0);
|
|
212
|
+
for (const condition of conditions) {
|
|
213
|
+
const trimmed = condition.trim();
|
|
214
|
+
const operator = trimmed.startsWith(">=") || trimmed.startsWith("<=") ? trimmed.slice(0, 2) : trimmed.startsWith(">") || trimmed.startsWith("<") || trimmed.startsWith("=") ? trimmed.slice(0, 1) : "=";
|
|
215
|
+
const targetVersion = trimmed.slice(operator.length);
|
|
216
|
+
if (!targetVersion) continue;
|
|
217
|
+
const cmp = compareVersions(version, targetVersion);
|
|
218
|
+
switch (operator) {
|
|
219
|
+
case ">=":
|
|
220
|
+
if (cmp < 0) return false;
|
|
221
|
+
break;
|
|
222
|
+
case ">":
|
|
223
|
+
if (cmp <= 0) return false;
|
|
224
|
+
break;
|
|
225
|
+
case "<=":
|
|
226
|
+
if (cmp > 0) return false;
|
|
227
|
+
break;
|
|
228
|
+
case "<":
|
|
229
|
+
if (cmp >= 0) return false;
|
|
230
|
+
break;
|
|
231
|
+
case "=":
|
|
232
|
+
if (cmp !== 0) return false;
|
|
233
|
+
break;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
return true;
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Get the current platform version.
|
|
240
|
+
*/
|
|
241
|
+
function getCurrentVersion() {
|
|
242
|
+
return PLATFORM_VERSION;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Get the current policy version.
|
|
246
|
+
*/
|
|
247
|
+
function getCurrentPolicyVersion() {
|
|
248
|
+
return POLICY_VERSION;
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Get the current schema version.
|
|
252
|
+
*/
|
|
253
|
+
function getCurrentSchemaVersion() {
|
|
254
|
+
return SCHEMA_VERSION;
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Create a versioned configuration wrapper.
|
|
258
|
+
*
|
|
259
|
+
* @example
|
|
260
|
+
* ```typescript
|
|
261
|
+
* const config = createVersionedConfig(
|
|
262
|
+
* { apiKey: 'xxx', timeout: 5000 },
|
|
263
|
+
* '1.0.0'
|
|
264
|
+
* );
|
|
265
|
+
* ```
|
|
266
|
+
*/
|
|
267
|
+
function createVersionedConfig(data, schemaVersion = SCHEMA_VERSION) {
|
|
268
|
+
const now = /* @__PURE__ */ new Date();
|
|
269
|
+
return {
|
|
270
|
+
schemaVersion,
|
|
271
|
+
data,
|
|
272
|
+
createdAt: now,
|
|
273
|
+
updatedAt: now,
|
|
274
|
+
hash: computeConfigHash(data)
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Update a versioned configuration.
|
|
279
|
+
*
|
|
280
|
+
* @example
|
|
281
|
+
* ```typescript
|
|
282
|
+
* const updated = updateVersionedConfig(config, { timeout: 10000 });
|
|
283
|
+
* ```
|
|
284
|
+
*/
|
|
285
|
+
function updateVersionedConfig(config, updates) {
|
|
286
|
+
const data = {
|
|
287
|
+
...config.data,
|
|
288
|
+
...updates
|
|
289
|
+
};
|
|
290
|
+
return {
|
|
291
|
+
...config,
|
|
292
|
+
data,
|
|
293
|
+
updatedAt: /* @__PURE__ */ new Date(),
|
|
294
|
+
hash: computeConfigHash(data)
|
|
295
|
+
};
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Migrate a versioned configuration to a new schema version.
|
|
299
|
+
*
|
|
300
|
+
* @example
|
|
301
|
+
* ```typescript
|
|
302
|
+
* const registry = createVersionRegistry();
|
|
303
|
+
* const migrated = migrateVersionedConfig(config, '2.0.0', registry);
|
|
304
|
+
* ```
|
|
305
|
+
*/
|
|
306
|
+
function migrateVersionedConfig(config, targetVersion, registry) {
|
|
307
|
+
if (config.schemaVersion === targetVersion) return config;
|
|
308
|
+
const migratedData = registry.migrate(config.data, config.schemaVersion, targetVersion);
|
|
309
|
+
return {
|
|
310
|
+
...config,
|
|
311
|
+
schemaVersion: targetVersion,
|
|
312
|
+
data: migratedData,
|
|
313
|
+
updatedAt: /* @__PURE__ */ new Date(),
|
|
314
|
+
hash: computeConfigHash(migratedData)
|
|
315
|
+
};
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Validate a versioned configuration integrity.
|
|
319
|
+
*/
|
|
320
|
+
function validateConfigIntegrity(config) {
|
|
321
|
+
if (!config.hash) return true;
|
|
322
|
+
return config.hash === computeConfigHash(config.data);
|
|
323
|
+
}
|
|
324
|
+
/** Default version registry with platform versions */
|
|
325
|
+
const defaultRegistry = createVersionRegistry({
|
|
326
|
+
versions: [{
|
|
327
|
+
version: "1.0.0",
|
|
328
|
+
releasedAt: /* @__PURE__ */ new Date("2024-01-01"),
|
|
329
|
+
deprecated: false,
|
|
330
|
+
features: [
|
|
331
|
+
"Initial release",
|
|
332
|
+
"Basic policy support",
|
|
333
|
+
"ABAC compliance"
|
|
334
|
+
]
|
|
335
|
+
}, {
|
|
336
|
+
version: "2.0.0",
|
|
337
|
+
releasedAt: /* @__PURE__ */ new Date("2024-06-01"),
|
|
338
|
+
deprecated: false,
|
|
339
|
+
breakingChanges: ["New policy schema", "Updated compliance validators"],
|
|
340
|
+
features: [
|
|
341
|
+
"Advanced guardrails",
|
|
342
|
+
"Adaptive caching",
|
|
343
|
+
"Multi-tenant support"
|
|
344
|
+
]
|
|
345
|
+
}],
|
|
346
|
+
migrations: [{
|
|
347
|
+
fromVersion: "1.0.0",
|
|
348
|
+
toVersion: "2.0.0",
|
|
349
|
+
description: "Migrate from v1 to v2 schema",
|
|
350
|
+
migrate: (config) => {
|
|
351
|
+
return {
|
|
352
|
+
...config,
|
|
353
|
+
policyVersion: "2.0.0",
|
|
354
|
+
migratedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
355
|
+
};
|
|
356
|
+
}
|
|
357
|
+
}]
|
|
358
|
+
});
|
|
359
|
+
function computeConfigHash(data) {
|
|
360
|
+
const str = JSON.stringify(data, Object.keys(data).sort());
|
|
361
|
+
let hash = 0;
|
|
362
|
+
for (let i = 0; i < str.length; i++) {
|
|
363
|
+
const char = str.charCodeAt(i);
|
|
364
|
+
hash = (hash << 5) - hash + char;
|
|
365
|
+
hash = hash & hash;
|
|
366
|
+
}
|
|
367
|
+
return Math.abs(hash).toString(16).padStart(8, "0");
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
//#endregion
|
|
371
|
+
//#region src/governance/audit/audit-schema.ts
|
|
372
|
+
/**
|
|
373
|
+
* @fileoverview Audit entry schemas and validation
|
|
374
|
+
* Audit entry schemas and validation
|
|
375
|
+
* Ensures structured, machine-readable audit logs for FDA/SOC2
|
|
376
|
+
*/
|
|
377
|
+
/**
|
|
378
|
+
* Audit action types
|
|
379
|
+
*/
|
|
380
|
+
const AuditActionSchema = z.enum([
|
|
381
|
+
"generation",
|
|
382
|
+
"generative_ui",
|
|
383
|
+
"tool_call",
|
|
384
|
+
"redaction",
|
|
385
|
+
"policy_check",
|
|
386
|
+
"abac_decision",
|
|
387
|
+
"approval_request",
|
|
388
|
+
"approval_granted",
|
|
389
|
+
"approval_denied"
|
|
390
|
+
]);
|
|
391
|
+
/**
|
|
392
|
+
* ABAC decision schema
|
|
393
|
+
*/
|
|
394
|
+
const ABACDecisionSchema = z.object({
|
|
395
|
+
allowed: z.boolean(),
|
|
396
|
+
reason: z.string().optional(),
|
|
397
|
+
conditions: z.array(z.string()).optional(),
|
|
398
|
+
policyId: z.string()
|
|
399
|
+
});
|
|
400
|
+
/**
|
|
401
|
+
* Core audit entry schema
|
|
402
|
+
*/
|
|
403
|
+
const AuditEntrySchema = z.object({
|
|
404
|
+
id: z.string().optional(),
|
|
405
|
+
timestamp: z.string(),
|
|
406
|
+
actor: z.string(),
|
|
407
|
+
action: AuditActionSchema,
|
|
408
|
+
input_hash: z.string(),
|
|
409
|
+
output_snapshot: z.unknown(),
|
|
410
|
+
policy_version: z.string(),
|
|
411
|
+
abac_decision: ABACDecisionSchema.optional(),
|
|
412
|
+
metadata: z.record(z.string(), z.unknown()).optional(),
|
|
413
|
+
signature: z.string()
|
|
414
|
+
});
|
|
415
|
+
/**
|
|
416
|
+
* Audit query filter schema
|
|
417
|
+
*/
|
|
418
|
+
const AuditQueryFilterSchema = z.object({
|
|
419
|
+
actor: z.string().optional(),
|
|
420
|
+
action: AuditActionSchema.optional(),
|
|
421
|
+
startDate: z.date().optional(),
|
|
422
|
+
endDate: z.date().optional(),
|
|
423
|
+
limit: z.number().positive().max(1e3).default(100),
|
|
424
|
+
offset: z.number().nonnegative().default(0)
|
|
425
|
+
});
|
|
426
|
+
/**
|
|
427
|
+
* Validate audit entry
|
|
428
|
+
*/
|
|
429
|
+
function validateAuditEntry(entry) {
|
|
430
|
+
return AuditEntrySchema.parse(entry);
|
|
431
|
+
}
|
|
432
|
+
/**
|
|
433
|
+
* Validate query filter
|
|
434
|
+
*/
|
|
435
|
+
function validateQueryFilter(filter) {
|
|
436
|
+
return AuditQueryFilterSchema.parse(filter);
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
//#endregion
|
|
440
|
+
//#region src/governance/audit/audit-logger.ts
|
|
441
|
+
/**
|
|
442
|
+
* @fileoverview Audit Logger Implementation
|
|
443
|
+
* Audit Logger Implementation
|
|
444
|
+
* Creates immutable, cryptographically signed audit trail
|
|
445
|
+
*/
|
|
446
|
+
/**
|
|
447
|
+
* In-memory audit logger (for development)
|
|
448
|
+
* In production, replace with persistent storage (PostgreSQL, Redis, S3)
|
|
449
|
+
*/
|
|
450
|
+
var InMemoryAuditLogger = class {
|
|
451
|
+
entries = [];
|
|
452
|
+
maxEntries;
|
|
453
|
+
constructor(maxEntries = 1e4) {
|
|
454
|
+
this.maxEntries = maxEntries;
|
|
455
|
+
}
|
|
456
|
+
async log(entry) {
|
|
457
|
+
const timestamp = (/* @__PURE__ */ new Date()).toISOString();
|
|
458
|
+
const entryWithTimestamp = {
|
|
459
|
+
...entry,
|
|
460
|
+
timestamp
|
|
461
|
+
};
|
|
462
|
+
const signature = await generateSignature(entryWithTimestamp);
|
|
463
|
+
const completeEntry = {
|
|
464
|
+
...entryWithTimestamp,
|
|
465
|
+
signature
|
|
466
|
+
};
|
|
467
|
+
validateAuditEntry(completeEntry);
|
|
468
|
+
this.entries.push(completeEntry);
|
|
469
|
+
if (this.entries.length > this.maxEntries) this.entries.shift();
|
|
470
|
+
if (process.env.NODE_ENV === "development") logInfo("[AUDIT]", {
|
|
471
|
+
action: completeEntry.action,
|
|
472
|
+
actor: completeEntry.actor,
|
|
473
|
+
timestamp: completeEntry.timestamp
|
|
474
|
+
});
|
|
475
|
+
}
|
|
476
|
+
async query(filter) {
|
|
477
|
+
let results = this.entries.map((entry) => structuredClone(entry));
|
|
478
|
+
if (filter.actor) results = results.filter((e) => e.actor === filter.actor);
|
|
479
|
+
if (filter.action) results = results.filter((e) => e.action === filter.action);
|
|
480
|
+
const { startDate, endDate } = filter;
|
|
481
|
+
if (startDate) results = results.filter((e) => new Date(e.timestamp) >= startDate);
|
|
482
|
+
if (endDate) results = results.filter((e) => new Date(e.timestamp) <= endDate);
|
|
483
|
+
const limit = filter.limit ?? 100;
|
|
484
|
+
return results.slice(0, limit);
|
|
485
|
+
}
|
|
486
|
+
/**
|
|
487
|
+
* Get all entries (for development/testing)
|
|
488
|
+
*/
|
|
489
|
+
async getAll() {
|
|
490
|
+
return this.entries.map((entry) => structuredClone(entry));
|
|
491
|
+
}
|
|
492
|
+
/**
|
|
493
|
+
* Clear all entries (for testing only)
|
|
494
|
+
*/
|
|
495
|
+
async clear() {
|
|
496
|
+
this.entries = [];
|
|
497
|
+
}
|
|
498
|
+
};
|
|
499
|
+
/**
|
|
500
|
+
* Console-only audit logger (for demos)
|
|
501
|
+
*/
|
|
502
|
+
var ConsoleAuditLogger = class {
|
|
503
|
+
async log(entry) {
|
|
504
|
+
const timestamp = (/* @__PURE__ */ new Date()).toISOString();
|
|
505
|
+
const signature = await generateSignature({
|
|
506
|
+
...entry,
|
|
507
|
+
timestamp
|
|
508
|
+
});
|
|
509
|
+
logInfo("[AUDIT LOG]", { entry: {
|
|
510
|
+
...entry,
|
|
511
|
+
timestamp,
|
|
512
|
+
signature
|
|
513
|
+
} });
|
|
514
|
+
}
|
|
515
|
+
async query(filter) {
|
|
516
|
+
logWarn("[AUDIT] ConsoleAuditLogger does not support querying");
|
|
517
|
+
return [];
|
|
518
|
+
}
|
|
519
|
+
};
|
|
520
|
+
/**
|
|
521
|
+
* Create an audit logger instance
|
|
522
|
+
*/
|
|
523
|
+
function createAuditLogger(type = "memory") {
|
|
524
|
+
switch (type) {
|
|
525
|
+
case "console": return new ConsoleAuditLogger();
|
|
526
|
+
default: return new InMemoryAuditLogger();
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
/**
|
|
530
|
+
* Global audit logger instance
|
|
531
|
+
*/
|
|
532
|
+
let globalLogger = null;
|
|
533
|
+
/**
|
|
534
|
+
* Get or create global audit logger
|
|
535
|
+
*/
|
|
536
|
+
function getAuditLogger() {
|
|
537
|
+
if (!globalLogger) globalLogger = createAuditLogger("memory");
|
|
538
|
+
return globalLogger;
|
|
539
|
+
}
|
|
540
|
+
/**
|
|
541
|
+
* Set global audit logger
|
|
542
|
+
*/
|
|
543
|
+
function setAuditLogger(logger) {
|
|
544
|
+
globalLogger = logger;
|
|
545
|
+
}
|
|
546
|
+
/**
|
|
547
|
+
* Helper to log a generation event
|
|
548
|
+
*/
|
|
549
|
+
async function logGeneration(actor, input, output, metadata) {
|
|
550
|
+
const logger = getAuditLogger();
|
|
551
|
+
const input_hash = await hashInput(input);
|
|
552
|
+
await logger.log({
|
|
553
|
+
actor,
|
|
554
|
+
action: "generation",
|
|
555
|
+
input_hash,
|
|
556
|
+
output_snapshot: output,
|
|
557
|
+
policy_version: POLICY_VERSION,
|
|
558
|
+
metadata
|
|
559
|
+
});
|
|
560
|
+
}
|
|
561
|
+
/**
|
|
562
|
+
* Helper to log a tool call event
|
|
563
|
+
*/
|
|
564
|
+
async function logToolCall(actor, toolName, args, result, metadata) {
|
|
565
|
+
const logger = getAuditLogger();
|
|
566
|
+
const input_hash = await hashInput(JSON.stringify(args));
|
|
567
|
+
await logger.log({
|
|
568
|
+
actor,
|
|
569
|
+
action: "tool_call",
|
|
570
|
+
input_hash,
|
|
571
|
+
output_snapshot: {
|
|
572
|
+
tool: toolName,
|
|
573
|
+
args,
|
|
574
|
+
result
|
|
575
|
+
},
|
|
576
|
+
policy_version: POLICY_VERSION,
|
|
577
|
+
metadata
|
|
578
|
+
});
|
|
579
|
+
}
|
|
580
|
+
/**
|
|
581
|
+
* Helper to log a redaction event
|
|
582
|
+
*/
|
|
583
|
+
async function logRedaction(actor, detections, metadata) {
|
|
584
|
+
await getAuditLogger().log({
|
|
585
|
+
actor,
|
|
586
|
+
action: "redaction",
|
|
587
|
+
input_hash: "n/a",
|
|
588
|
+
output_snapshot: { detections },
|
|
589
|
+
policy_version: POLICY_VERSION,
|
|
590
|
+
metadata
|
|
591
|
+
});
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
//#endregion
|
|
595
|
+
export { isVersionCompatible as C, updateVersionedConfig as D, satisfiesRange as E, validateConfigIntegrity as O, getCurrentVersion as S, parseVersion as T, createVersionRegistry as _, logToolCall as a, getCurrentPolicyVersion as b, AuditActionSchema as c, validateAuditEntry as d, validateQueryFilter as f, compareVersions as g, SCHEMA_VERSION as h, logRedaction as i, AuditEntrySchema as l, POLICY_VERSION as m, getAuditLogger as n, setAuditLogger as o, PLATFORM_VERSION as p, logGeneration as r, ABACDecisionSchema as s, createAuditLogger as t, AuditQueryFilterSchema as u, createVersionedConfig as v, migrateVersionedConfig as w, getCurrentSchemaVersion as x, defaultRegistry as y };
|
|
596
|
+
//# sourceMappingURL=audit-logger-CHIP8bRO.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-logger-CHIP8bRO.mjs","names":[],"sources":["../src/governance/versioning/index.ts","../src/governance/audit/audit-schema.ts","../src/governance/audit/audit-logger.ts"],"sourcesContent":["/**\n * Version Control & Configuration Management\n *\n * Manages versioning for AI platform configurations, policies, and schemas.\n * Enables tracking configuration changes, compatibility checking, and migration.\n *\n * @module @od-oneapp/ai-platform/governance/versioning\n *\n * @example\n * ```typescript\n * import {\n * createVersionRegistry,\n * getCurrentVersion,\n * isVersionCompatible,\n * migrateConfig\n * } from '@od-oneapp/ai-platform/governance/versioning';\n *\n * // Get current platform version\n * const version = getCurrentVersion();\n *\n * // Check compatibility\n * if (isVersionCompatible(config.version, version)) {\n * // Config is compatible\n * } else {\n * // Migrate config\n * const migrated = migrateConfig(config, version);\n * }\n * ```\n */\n\n// -----------------------------------------------------------------------------\n// Constants\n// -----------------------------------------------------------------------------\n\n/** Current policy version - increment when making breaking changes */\nexport const POLICY_VERSION = '2.0.0' as const;\n\n/** Current schema version for configurations */\nexport const SCHEMA_VERSION = '1.0.0' as const;\n\n/** Platform version (synced with package.json) */\nexport const PLATFORM_VERSION = '1.0.0' as const;\n\n// -----------------------------------------------------------------------------\n// Types\n// -----------------------------------------------------------------------------\n\n/** Semantic version string */\nexport type SemVer = `${number}.${number}.${number}`;\n\n/** Version metadata */\nexport interface VersionMetadata {\n /** Version string */\n version: SemVer;\n /** When this version was released */\n releasedAt: Date;\n /** Whether this version is deprecated */\n deprecated: boolean;\n /** Version to migrate to if deprecated */\n migrateToVersion?: SemVer;\n /** Breaking changes in this version */\n breakingChanges?: string[];\n /** New features in this version */\n features?: string[];\n /** Bug fixes in this version */\n bugFixes?: string[];\n /** Additional metadata */\n metadata?: Record<string, unknown>;\n}\n\n/** Version change record */\nexport interface VersionChange {\n /** ID of the change */\n id: string;\n /** Type of change */\n type: 'breaking' | 'feature' | 'fix' | 'deprecation';\n /** Description of the change */\n description: string;\n /** Affected components */\n affectedComponents: string[];\n /** Migration guide if applicable */\n migrationGuide?: string;\n}\n\n/** Versioned configuration */\nexport interface VersionedConfig<T = unknown> {\n /** Schema version */\n schemaVersion: SemVer;\n /** Configuration data */\n data: T;\n /** When the config was created */\n createdAt: Date;\n /** When the config was last updated */\n updatedAt: Date;\n /** Configuration hash for integrity checking */\n hash?: string;\n}\n\n/** Migration function type */\nexport type MigrationFn<TFrom = unknown, TTo = unknown> = (config: TFrom) => TTo;\n\n/** Migration definition */\nexport interface Migration {\n /** Source version */\n fromVersion: SemVer;\n /** Target version */\n toVersion: SemVer;\n /** Migration function */\n migrate: MigrationFn;\n /** Description of the migration */\n description?: string;\n}\n\n/** Version registry interface */\nexport interface VersionRegistry {\n /** Register a version */\n registerVersion(metadata: VersionMetadata): void;\n /** Get version metadata */\n getVersion(version: SemVer): VersionMetadata | undefined;\n /** Get all versions */\n getAllVersions(): VersionMetadata[];\n /** Get latest version */\n getLatestVersion(): VersionMetadata | undefined;\n /** Deprecate a version */\n deprecateVersion(version: SemVer, migrateToVersion: SemVer): void;\n /** Check if version exists */\n hasVersion(version: SemVer): boolean;\n /** Register a migration */\n registerMigration(migration: Migration): void;\n /** Get migration path */\n getMigrationPath(fromVersion: SemVer, toVersion: SemVer): Migration[];\n /** Execute migration */\n migrate<T>(config: T, fromVersion: SemVer, toVersion: SemVer): T;\n}\n\n/** Version registry configuration */\nexport interface VersionRegistryConfig {\n /** Initial versions to register */\n versions?: VersionMetadata[];\n /** Initial migrations to register */\n migrations?: Migration[];\n}\n\n// -----------------------------------------------------------------------------\n// Version Registry Implementation\n// -----------------------------------------------------------------------------\n\n/**\n * Create a version registry for tracking and managing versions.\n *\n * @example\n * ```typescript\n * const registry = createVersionRegistry();\n *\n * registry.registerVersion({\n * version: '1.0.0',\n * releasedAt: new Date('2024-01-01'),\n * deprecated: false,\n * features: ['Initial release']\n * });\n *\n * registry.registerVersion({\n * version: '2.0.0',\n * releasedAt: new Date('2024-06-01'),\n * deprecated: false,\n * breakingChanges: ['Changed policy schema']\n * });\n *\n * registry.registerMigration({\n * fromVersion: '1.0.0',\n * toVersion: '2.0.0',\n * migrate: (config) => ({ ...config, newField: 'default' })\n * });\n * ```\n */\nexport function createVersionRegistry(config: VersionRegistryConfig = {}): VersionRegistry {\n const versions = new Map<SemVer, VersionMetadata>();\n const migrations = new Map<string, Migration>();\n\n // Register initial versions\n for (const version of config.versions ?? []) {\n versions.set(version.version, version);\n }\n\n // Register initial migrations\n for (const migration of config.migrations ?? []) {\n const key = `${migration.fromVersion}->${migration.toVersion}`;\n migrations.set(key, migration);\n }\n\n function registerVersion(metadata: VersionMetadata): void {\n versions.set(metadata.version, metadata);\n }\n\n function getVersion(version: SemVer): VersionMetadata | undefined {\n return versions.get(version);\n }\n\n function getAllVersions(): VersionMetadata[] {\n return Array.from(versions.values()).sort((a, b) => compareVersions(a.version, b.version));\n }\n\n function getLatestVersion(): VersionMetadata | undefined {\n const all = getAllVersions();\n return all[all.length - 1];\n }\n\n function deprecateVersion(version: SemVer, migrateToVersion: SemVer): void {\n const metadata = versions.get(version);\n if (metadata) {\n metadata.deprecated = true;\n metadata.migrateToVersion = migrateToVersion;\n }\n }\n\n function hasVersion(version: SemVer): boolean {\n return versions.has(version);\n }\n\n function registerMigration(migration: Migration): void {\n const key = `${migration.fromVersion}->${migration.toVersion}`;\n migrations.set(key, migration);\n }\n\n function getMigrationPath(fromVersion: SemVer, toVersion: SemVer): Migration[] {\n const path: Migration[] = [];\n\n // Simple BFS to find path\n const visited = new Set<SemVer>();\n const queue: Array<{ version: SemVer; path: Migration[] }> = [\n { version: fromVersion, path: [] },\n ];\n\n while (queue.length > 0) {\n const item = queue.shift();\n if (!item) {\n break;\n }\n const { version, path: currentPath } = item;\n\n if (version === toVersion) {\n return currentPath;\n }\n\n if (visited.has(version)) continue;\n visited.add(version);\n\n // Find all migrations from this version\n for (const migration of migrations.values()) {\n if (migration.fromVersion === version && !visited.has(migration.toVersion)) {\n queue.push({\n version: migration.toVersion,\n path: [...currentPath, migration],\n });\n }\n }\n }\n\n return path; // Empty if no path found\n }\n\n function migrate<T>(config: T, fromVersion: SemVer, toVersion: SemVer): T {\n if (fromVersion === toVersion) return config;\n\n const path = getMigrationPath(fromVersion, toVersion);\n if (path.length === 0) {\n throw new Error(`No migration path from ${fromVersion} to ${toVersion}`);\n }\n\n let result: unknown = config;\n for (const migration of path) {\n result = migration.migrate(result);\n }\n\n return result as T;\n }\n\n return {\n registerVersion,\n getVersion,\n getAllVersions,\n getLatestVersion,\n deprecateVersion,\n hasVersion,\n registerMigration,\n getMigrationPath,\n migrate,\n };\n}\n\n// -----------------------------------------------------------------------------\n// Version Utilities\n// -----------------------------------------------------------------------------\n\n/**\n * Parse a semantic version string.\n *\n * @example\n * ```typescript\n * const { major, minor, patch } = parseVersion('2.1.3');\n * // { major: 2, minor: 1, patch: 3 }\n * ```\n */\nexport function parseVersion(version: string): { major: number; minor: number; patch: number } {\n const match = version.match(/^(\\d+)\\.(\\d+)\\.(\\d+)/);\n if (!match) {\n throw new Error(`Invalid version format: ${version}`);\n }\n const major = match[1];\n const minor = match[2];\n const patch = match[3];\n if (!major || !minor || !patch) {\n throw new Error(`Invalid version format: ${version}`);\n }\n return {\n major: parseInt(major, 10),\n minor: parseInt(minor, 10),\n patch: parseInt(patch, 10),\n };\n}\n\n/**\n * Compare two version strings.\n * Returns negative if a < b, positive if a > b, 0 if equal.\n *\n * @example\n * ```typescript\n * compareVersions('1.0.0', '2.0.0'); // -1\n * compareVersions('2.0.0', '1.0.0'); // 1\n * compareVersions('1.0.0', '1.0.0'); // 0\n * ```\n */\nexport function compareVersions(a: string, b: string): number {\n const versionA = parseVersion(a);\n const versionB = parseVersion(b);\n\n if (versionA.major !== versionB.major) {\n return versionA.major - versionB.major;\n }\n if (versionA.minor !== versionB.minor) {\n return versionA.minor - versionB.minor;\n }\n return versionA.patch - versionB.patch;\n}\n\n/**\n * Check if two versions are compatible (same major version).\n *\n * @example\n * ```typescript\n * isVersionCompatible('1.0.0', '1.5.0'); // true\n * isVersionCompatible('1.0.0', '2.0.0'); // false\n * ```\n */\nexport function isVersionCompatible(configVersion: string, targetVersion: string): boolean {\n const config = parseVersion(configVersion);\n const target = parseVersion(targetVersion);\n\n // Same major version = compatible\n return config.major === target.major;\n}\n\n/**\n * Check if a version satisfies a version range.\n *\n * @example\n * ```typescript\n * satisfiesRange('1.5.0', '>=1.0.0'); // true\n * satisfiesRange('2.0.0', '<2.0.0'); // false\n * satisfiesRange('1.5.0', '>=1.0.0 <2.0.0'); // true\n * ```\n */\nexport function satisfiesRange(version: string, range: string): boolean {\n parseVersion(version);\n\n // Parse range conditions\n const conditions = range.split(/\\s+/).filter(c => c.length > 0);\n\n for (const condition of conditions) {\n const trimmed = condition.trim();\n const operator =\n trimmed.startsWith('>=') || trimmed.startsWith('<=')\n ? trimmed.slice(0, 2)\n : trimmed.startsWith('>') || trimmed.startsWith('<') || trimmed.startsWith('=')\n ? trimmed.slice(0, 1)\n : '=';\n const targetVersion = trimmed.slice(operator.length);\n if (!targetVersion) continue;\n const cmp = compareVersions(version, targetVersion);\n\n switch (operator) {\n case '>=':\n if (cmp < 0) return false;\n break;\n case '>':\n if (cmp <= 0) return false;\n break;\n case '<=':\n if (cmp > 0) return false;\n break;\n case '<':\n if (cmp >= 0) return false;\n break;\n case '=':\n if (cmp !== 0) return false;\n break;\n }\n }\n\n return true;\n}\n\n/**\n * Get the current platform version.\n */\nexport function getCurrentVersion(): SemVer {\n return PLATFORM_VERSION;\n}\n\n/**\n * Get the current policy version.\n */\nexport function getCurrentPolicyVersion(): SemVer {\n return POLICY_VERSION as SemVer;\n}\n\n/**\n * Get the current schema version.\n */\nexport function getCurrentSchemaVersion(): SemVer {\n return SCHEMA_VERSION;\n}\n\n// -----------------------------------------------------------------------------\n// Configuration Versioning Utilities\n// -----------------------------------------------------------------------------\n\n/**\n * Create a versioned configuration wrapper.\n *\n * @example\n * ```typescript\n * const config = createVersionedConfig(\n * { apiKey: 'xxx', timeout: 5000 },\n * '1.0.0'\n * );\n * ```\n */\nexport function createVersionedConfig<T>(\n data: T,\n schemaVersion: SemVer = SCHEMA_VERSION,\n): VersionedConfig<T> {\n const now = new Date();\n return {\n schemaVersion,\n data,\n createdAt: now,\n updatedAt: now,\n hash: computeConfigHash(data),\n };\n}\n\n/**\n * Update a versioned configuration.\n *\n * @example\n * ```typescript\n * const updated = updateVersionedConfig(config, { timeout: 10000 });\n * ```\n */\nexport function updateVersionedConfig<T>(\n config: VersionedConfig<T>,\n updates: Partial<T>,\n): VersionedConfig<T> {\n const data = { ...config.data, ...updates };\n return {\n ...config,\n data,\n updatedAt: new Date(),\n hash: computeConfigHash(data),\n };\n}\n\n/**\n * Migrate a versioned configuration to a new schema version.\n *\n * @example\n * ```typescript\n * const registry = createVersionRegistry();\n * const migrated = migrateVersionedConfig(config, '2.0.0', registry);\n * ```\n */\nexport function migrateVersionedConfig<T>(\n config: VersionedConfig<T>,\n targetVersion: SemVer,\n registry: VersionRegistry,\n): VersionedConfig<T> {\n if (config.schemaVersion === targetVersion) {\n return config;\n }\n\n const migratedData = registry.migrate<T>(config.data, config.schemaVersion, targetVersion);\n\n return {\n ...config,\n schemaVersion: targetVersion,\n data: migratedData,\n updatedAt: new Date(),\n hash: computeConfigHash(migratedData),\n };\n}\n\n/**\n * Validate a versioned configuration integrity.\n */\nexport function validateConfigIntegrity<T>(config: VersionedConfig<T>): boolean {\n if (!config.hash) return true; // No hash to validate\n return config.hash === computeConfigHash(config.data);\n}\n\n// -----------------------------------------------------------------------------\n// Default Registry\n// -----------------------------------------------------------------------------\n\n/** Default version registry with platform versions */\nexport const defaultRegistry = createVersionRegistry({\n versions: [\n {\n version: '1.0.0',\n releasedAt: new Date('2024-01-01'),\n deprecated: false,\n features: ['Initial release', 'Basic policy support', 'ABAC compliance'],\n },\n {\n version: '2.0.0',\n releasedAt: new Date('2024-06-01'),\n deprecated: false,\n breakingChanges: ['New policy schema', 'Updated compliance validators'],\n features: ['Advanced guardrails', 'Adaptive caching', 'Multi-tenant support'],\n },\n ],\n migrations: [\n {\n fromVersion: '1.0.0',\n toVersion: '2.0.0',\n description: 'Migrate from v1 to v2 schema',\n migrate: (config: unknown) => {\n // Default migration - adds default values for new fields\n return {\n ...(config as object),\n policyVersion: '2.0.0',\n migratedAt: new Date().toISOString(),\n };\n },\n },\n ],\n});\n\n// -----------------------------------------------------------------------------\n// Utility Functions\n// -----------------------------------------------------------------------------\n\nfunction computeConfigHash(data: unknown): string {\n // Simple hash for integrity checking\n const str = JSON.stringify(data, Object.keys(data as object).sort());\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n const char = str.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash; // Convert to 32-bit integer\n }\n return Math.abs(hash).toString(16).padStart(8, '0');\n}\n","/**\n * @fileoverview Audit entry schemas and validation\n * Audit entry schemas and validation\n * Ensures structured, machine-readable audit logs for FDA/SOC2\n */\n\nimport { z } from 'zod';\n\n/**\n * Audit action types\n */\nexport const AuditActionSchema = z.enum([\n 'generation',\n 'generative_ui',\n 'tool_call',\n 'redaction',\n 'policy_check',\n 'abac_decision',\n 'approval_request',\n 'approval_granted',\n 'approval_denied',\n]);\n\n/**\n * ABAC decision schema\n */\nexport const ABACDecisionSchema = z.object({\n allowed: z.boolean(),\n reason: z.string().optional(),\n conditions: z.array(z.string()).optional(),\n policyId: z.string(),\n});\n\n/**\n * Core audit entry schema\n */\nexport const AuditEntrySchema = z.object({\n id: z.string().optional(), // Generated by logger\n timestamp: z.string(), // ISO 8601\n actor: z.string(), // User/Agent ID\n action: AuditActionSchema,\n input_hash: z.string(), // SHA-256 hash\n output_snapshot: z.unknown(), // Flexible structured output\n policy_version: z.string(),\n abac_decision: ABACDecisionSchema.optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n signature: z.string(), // HMAC signature\n});\n\n/**\n * Audit query filter schema\n */\nexport const AuditQueryFilterSchema = z.object({\n actor: z.string().optional(),\n action: AuditActionSchema.optional(),\n startDate: z.date().optional(),\n endDate: z.date().optional(),\n limit: z.number().positive().max(1000).default(100),\n offset: z.number().nonnegative().default(0),\n});\n\n/**\n * Type exports\n */\nexport type AuditAction = z.infer<typeof AuditActionSchema>;\nexport type ABACDecision = z.infer<typeof ABACDecisionSchema>;\nexport type AuditEntry = z.infer<typeof AuditEntrySchema>;\nexport type AuditQueryFilter = z.infer<typeof AuditQueryFilterSchema>;\n\n/**\n * Validate audit entry\n */\nexport function validateAuditEntry(entry: unknown): AuditEntry {\n return AuditEntrySchema.parse(entry);\n}\n\n/**\n * Validate query filter\n */\nexport function validateQueryFilter(filter: unknown): AuditQueryFilter {\n return AuditQueryFilterSchema.parse(filter);\n}\n","/**\n * @fileoverview Audit Logger Implementation\n * Audit Logger Implementation\n * Creates immutable, cryptographically signed audit trail\n */\n\nimport { logInfo, logWarn } from '@repo/shared/logs';\n\nimport { generateSignature, hashInput } from '../../server/cache/crypto';\nimport { POLICY_VERSION } from '../versioning';\n\nimport { validateAuditEntry } from './audit-schema';\n\nimport type { AuditEntry, AuditLogger, AuditQueryFilter } from '../types';\n\n/**\n * In-memory audit logger (for development)\n * In production, replace with persistent storage (PostgreSQL, Redis, S3)\n */\nclass InMemoryAuditLogger implements AuditLogger {\n private entries: AuditEntry[] = [];\n private readonly maxEntries: number;\n\n constructor(maxEntries: number = 10000) {\n this.maxEntries = maxEntries;\n }\n\n async log(entry: Omit<AuditEntry, 'timestamp' | 'signature'>): Promise<void> {\n const timestamp = new Date().toISOString();\n\n // Create entry with timestamp\n const entryWithTimestamp = {\n ...entry,\n timestamp,\n };\n\n // Generate signature\n const signature = await generateSignature(entryWithTimestamp);\n\n // Complete entry\n const completeEntry: AuditEntry = {\n ...entryWithTimestamp,\n signature,\n };\n\n // Validate\n validateAuditEntry(completeEntry);\n\n // Store (append-only)\n this.entries.push(completeEntry);\n\n // Enforce retention limit (in production, use proper archival)\n if (this.entries.length > this.maxEntries) {\n this.entries.shift(); // Remove oldest\n }\n\n // Log to console in development\n if (process.env.NODE_ENV === 'development') {\n logInfo('[AUDIT]', {\n action: completeEntry.action,\n actor: completeEntry.actor,\n timestamp: completeEntry.timestamp,\n });\n }\n }\n\n async query(filter: AuditQueryFilter): Promise<AuditEntry[]> {\n // Clone entries to prevent external mutation\n let results = this.entries.map(entry => structuredClone(entry));\n\n // Filter by actor\n if (filter.actor) {\n results = results.filter(e => e.actor === filter.actor);\n }\n\n // Filter by action\n if (filter.action) {\n results = results.filter(e => e.action === filter.action);\n }\n\n // Filter by date range\n const { startDate, endDate } = filter;\n if (startDate) {\n results = results.filter(e => new Date(e.timestamp) >= startDate);\n }\n if (endDate) {\n results = results.filter(e => new Date(e.timestamp) <= endDate);\n }\n\n // Apply limit\n const limit = filter.limit ?? 100;\n return results.slice(0, limit);\n }\n\n /**\n * Get all entries (for development/testing)\n */\n async getAll(): Promise<AuditEntry[]> {\n // Return deep clones to prevent external mutation\n return this.entries.map(entry => structuredClone(entry));\n }\n\n /**\n * Clear all entries (for testing only)\n */\n async clear(): Promise<void> {\n this.entries = [];\n }\n}\n\n/**\n * Console-only audit logger (for demos)\n */\nclass ConsoleAuditLogger implements AuditLogger {\n async log(entry: Omit<AuditEntry, 'timestamp' | 'signature'>): Promise<void> {\n const timestamp = new Date().toISOString();\n const signature = await generateSignature({ ...entry, timestamp });\n\n const completeEntry = {\n ...entry,\n timestamp,\n signature,\n };\n\n logInfo('[AUDIT LOG]', { entry: completeEntry });\n }\n\n async query(filter: AuditQueryFilter): Promise<AuditEntry[]> {\n void filter;\n logWarn('[AUDIT] ConsoleAuditLogger does not support querying');\n return [];\n }\n}\n\n/**\n * Create an audit logger instance\n */\nexport function createAuditLogger(type: 'memory' | 'console' = 'memory'): AuditLogger {\n switch (type) {\n case 'console':\n return new ConsoleAuditLogger();\n case 'memory':\n default:\n return new InMemoryAuditLogger();\n }\n}\n\n/**\n * Global audit logger instance\n */\nlet globalLogger: AuditLogger | null = null;\n\n/**\n * Get or create global audit logger\n */\nexport function getAuditLogger(): AuditLogger {\n if (!globalLogger) {\n globalLogger = createAuditLogger('memory');\n }\n return globalLogger;\n}\n\n/**\n * Set global audit logger\n */\nexport function setAuditLogger(logger: AuditLogger): void {\n globalLogger = logger;\n}\n\n/**\n * Helper to log a generation event\n */\nexport async function logGeneration(\n actor: string,\n input: string,\n output: unknown,\n metadata?: Record<string, unknown>,\n): Promise<void> {\n const logger = getAuditLogger();\n const input_hash = await hashInput(input);\n\n await logger.log({\n actor,\n action: 'generation',\n input_hash,\n output_snapshot: output,\n policy_version: POLICY_VERSION,\n metadata,\n });\n}\n\n/**\n * Helper to log a tool call event\n */\nexport async function logToolCall(\n actor: string,\n toolName: string,\n args: unknown,\n result: unknown,\n metadata?: Record<string, unknown>,\n): Promise<void> {\n const logger = getAuditLogger();\n const input_hash = await hashInput(JSON.stringify(args));\n\n await logger.log({\n actor,\n action: 'tool_call',\n input_hash,\n output_snapshot: {\n tool: toolName,\n args,\n result,\n },\n policy_version: POLICY_VERSION,\n metadata,\n });\n}\n\n/**\n * Helper to log a redaction event\n */\nexport async function logRedaction(\n actor: string,\n detections: unknown,\n metadata?: Record<string, unknown>,\n): Promise<void> {\n const logger = getAuditLogger();\n\n await logger.log({\n actor,\n action: 'redaction',\n input_hash: 'n/a', // Don't hash PHI\n output_snapshot: {\n detections,\n },\n policy_version: POLICY_VERSION,\n metadata,\n });\n}\n"],"mappings":"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"}
|