@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,282 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Evaluator Module
|
|
3
|
+
* Implements LLM-as-judge pattern for content quality assessment
|
|
4
|
+
* Based on VERCEL_AI_SDK_V6_PATTERNS.md section 4.2
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { generateObject } from '../../shared';
|
|
8
|
+
|
|
9
|
+
import {
|
|
10
|
+
type EvaluationResult,
|
|
11
|
+
EvaluationResultSchema,
|
|
12
|
+
type EvaluatorInput,
|
|
13
|
+
type Evaluator,
|
|
14
|
+
} from './schema';
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* LLM-as-Judge Evaluator
|
|
18
|
+
* Uses language model to assess content quality across 9 dimensions
|
|
19
|
+
*/
|
|
20
|
+
export class LLMEvaluator implements Evaluator {
|
|
21
|
+
/**
|
|
22
|
+
* Model identifier for evaluation (typically a fast model)
|
|
23
|
+
* @default 'openai/gpt-4o-mini'
|
|
24
|
+
*/
|
|
25
|
+
private modelId: string;
|
|
26
|
+
|
|
27
|
+
constructor(modelId: string = 'openai/gpt-4o-mini') {
|
|
28
|
+
this.modelId = modelId;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Evaluate content using LLM-as-judge pattern
|
|
33
|
+
* Provides comprehensive assessment across multiple quality dimensions
|
|
34
|
+
*
|
|
35
|
+
* @param input - Evaluation input containing content and context
|
|
36
|
+
* @returns Promise resolving to detailed evaluation result
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```typescript
|
|
40
|
+
* const evaluator = new LLMEvaluator();
|
|
41
|
+
* const result = await evaluator.evaluate({
|
|
42
|
+
* content: "Generated content here",
|
|
43
|
+
* originalRequest: "Write a technical article about TypeScript",
|
|
44
|
+
* criteria: { threshold: 8 }
|
|
45
|
+
* });
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
async evaluate(input: EvaluatorInput): Promise<EvaluationResult> {
|
|
49
|
+
const { content, originalRequest, criteria, iterationNumber } = input;
|
|
50
|
+
const threshold = criteria?.threshold ?? 8;
|
|
51
|
+
|
|
52
|
+
const systemPrompt = `You are an expert content evaluator with deep knowledge in quality assessment.
|
|
53
|
+
Evaluate content across these 9 dimensions:
|
|
54
|
+
|
|
55
|
+
1. **Quality Score** (1-10): Overall quality from poor (1-3) to excellent (9-10)
|
|
56
|
+
2. **Tone Preservation**: Whether original intended tone is maintained
|
|
57
|
+
3. **Nuance Preservation**: Whether subtle meanings and context are preserved
|
|
58
|
+
4. **Cultural Accuracy**: Sensitivity and accuracy regarding cultural references
|
|
59
|
+
5. **Technical Correctness**: Accuracy of any technical, factual, or domain-specific claims
|
|
60
|
+
6. **Specific Issues**: Concrete problems, gaps, or errors found
|
|
61
|
+
7. **Improvement Suggestions**: Actionable feedback for enhancement
|
|
62
|
+
8. **Strengths**: Aspects to preserve during optimization
|
|
63
|
+
9. **Overall Assessment**: Summary of quality and readiness
|
|
64
|
+
|
|
65
|
+
Be rigorous and specific. Identify real issues, not minor nitpicks.
|
|
66
|
+
Provide constructive, actionable feedback.`;
|
|
67
|
+
|
|
68
|
+
const userPrompt = `${iterationNumber ? `[Iteration ${iterationNumber}]\n` : ''}Evaluate this content:
|
|
69
|
+
|
|
70
|
+
ORIGINAL REQUEST: ${originalRequest}
|
|
71
|
+
|
|
72
|
+
CONTENT TO EVALUATE:
|
|
73
|
+
${content}
|
|
74
|
+
|
|
75
|
+
QUALITY THRESHOLD: ${threshold}/10
|
|
76
|
+
|
|
77
|
+
Provide a comprehensive evaluation following the schema. Content must score at least ${threshold}/10 to pass.
|
|
78
|
+
For meetsThreshold, set to true only if qualityScore >= ${threshold}.`;
|
|
79
|
+
|
|
80
|
+
try {
|
|
81
|
+
const { object: evaluation } = await generateObject({
|
|
82
|
+
model: this.modelId,
|
|
83
|
+
schema: EvaluationResultSchema,
|
|
84
|
+
system: systemPrompt,
|
|
85
|
+
prompt: userPrompt,
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
return evaluation;
|
|
89
|
+
} catch (error) {
|
|
90
|
+
throw new Error(
|
|
91
|
+
`LLM evaluation failed: ${error instanceof Error ? error.message : String(error)}`,
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Rubric-Based Evaluator
|
|
99
|
+
* Provides structured evaluation using predefined criteria and scoring rubric
|
|
100
|
+
* Useful for consistent, deterministic evaluation across multiple runs
|
|
101
|
+
*/
|
|
102
|
+
export class RubricEvaluator implements Evaluator {
|
|
103
|
+
/**
|
|
104
|
+
* Scoring rubric mapping criteria to score ranges
|
|
105
|
+
*/
|
|
106
|
+
private rubric: Map<string, (content: string, request: string) => number>;
|
|
107
|
+
|
|
108
|
+
constructor(customRubric?: Map<string, (content: string, request: string) => number>) {
|
|
109
|
+
this.rubric = customRubric || this.createDefaultRubric();
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Create default rubric for evaluation
|
|
114
|
+
*/
|
|
115
|
+
private createDefaultRubric(): Map<string, (content: string, request: string) => number> {
|
|
116
|
+
return new Map([
|
|
117
|
+
['length', content => (content.length > 100 ? 2 : 1)],
|
|
118
|
+
['clarity', content => (content.split(' ').length > 10 ? 2 : 1)],
|
|
119
|
+
['structure', content => (content.includes('\n') ? 2 : 1)],
|
|
120
|
+
['completeness', (content, request) => (content.length > request.length * 0.5 ? 2 : 1)],
|
|
121
|
+
]);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Evaluate content using predefined rubric
|
|
126
|
+
* Faster than LLM evaluation but less nuanced
|
|
127
|
+
*/
|
|
128
|
+
async evaluate(input: EvaluatorInput): Promise<EvaluationResult> {
|
|
129
|
+
const { content, originalRequest, criteria } = input;
|
|
130
|
+
const threshold = criteria?.threshold ?? 8;
|
|
131
|
+
|
|
132
|
+
// Calculate score from rubric criteria
|
|
133
|
+
let totalScore = 0;
|
|
134
|
+
let maxScore = 0;
|
|
135
|
+
const issues: string[] = [];
|
|
136
|
+
|
|
137
|
+
for (const scorer of this.rubric.values()) {
|
|
138
|
+
const score = scorer(content, originalRequest);
|
|
139
|
+
totalScore += score;
|
|
140
|
+
maxScore += 2; // Each criterion in default rubric scores 1-2
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
// Normalize to 1-10 scale
|
|
144
|
+
const qualityScore = Math.max(1, Math.min(10, Math.round((totalScore / maxScore) * 10)));
|
|
145
|
+
|
|
146
|
+
// Determine issues based on score
|
|
147
|
+
if (qualityScore < 4) {
|
|
148
|
+
issues.push('Content is too brief or lacks detail');
|
|
149
|
+
issues.push('Structure could be clearer');
|
|
150
|
+
} else if (qualityScore < 7) {
|
|
151
|
+
issues.push('Could provide more specific examples');
|
|
152
|
+
issues.push('Organization could be improved');
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
return {
|
|
156
|
+
qualityScore,
|
|
157
|
+
preservesTone: true,
|
|
158
|
+
preservesNuance: qualityScore >= 7,
|
|
159
|
+
culturallyAccurate: true,
|
|
160
|
+
technicallyCorrect: qualityScore >= 6,
|
|
161
|
+
specificIssues: issues,
|
|
162
|
+
improvementSuggestions: [
|
|
163
|
+
'Expand with concrete examples',
|
|
164
|
+
'Improve paragraph transitions',
|
|
165
|
+
'Add supporting evidence',
|
|
166
|
+
],
|
|
167
|
+
strengths: ['Clear writing', 'Relevant content'],
|
|
168
|
+
overallAssessment: `Content quality score: ${qualityScore}/10. ${
|
|
169
|
+
qualityScore >= threshold ? 'Meets threshold.' : 'Needs optimization.'
|
|
170
|
+
}`,
|
|
171
|
+
meetsThreshold: qualityScore >= threshold,
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Composite Evaluator
|
|
178
|
+
* Combines multiple evaluators (LLM, rubric, custom) for multi-dimensional assessment
|
|
179
|
+
* Weights results from different evaluators to produce robust evaluation
|
|
180
|
+
*/
|
|
181
|
+
export class CompositeEvaluator implements Evaluator {
|
|
182
|
+
/**
|
|
183
|
+
* Array of evaluators with their weights (0-1)
|
|
184
|
+
*/
|
|
185
|
+
private evaluators: Array<{
|
|
186
|
+
evaluator: Evaluator;
|
|
187
|
+
weight: number;
|
|
188
|
+
}>;
|
|
189
|
+
|
|
190
|
+
constructor(evaluators: Array<{ evaluator: Evaluator; weight: number }> = []) {
|
|
191
|
+
this.evaluators = evaluators;
|
|
192
|
+
|
|
193
|
+
// Default composite if none provided
|
|
194
|
+
if (this.evaluators.length === 0) {
|
|
195
|
+
this.evaluators = [
|
|
196
|
+
{ evaluator: new LLMEvaluator(), weight: 0.7 },
|
|
197
|
+
{ evaluator: new RubricEvaluator(), weight: 0.3 },
|
|
198
|
+
];
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
// Normalize weights
|
|
202
|
+
const totalWeight = this.evaluators.reduce((sum, e) => sum + e.weight, 0);
|
|
203
|
+
if (totalWeight === 0) {
|
|
204
|
+
throw new Error('CompositeEvaluator requires weights > 0');
|
|
205
|
+
}
|
|
206
|
+
this.evaluators = this.evaluators.map(e => ({
|
|
207
|
+
...e,
|
|
208
|
+
weight: e.weight / totalWeight,
|
|
209
|
+
}));
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* Run composite evaluation combining multiple perspectives
|
|
214
|
+
*/
|
|
215
|
+
async evaluate(input: EvaluatorInput): Promise<EvaluationResult> {
|
|
216
|
+
const results = await Promise.all(this.evaluators.map(e => e.evaluator.evaluate(input)));
|
|
217
|
+
|
|
218
|
+
// Weighted average score
|
|
219
|
+
const weightedScore = results.reduce(
|
|
220
|
+
(sum, result, idx) => sum + result.qualityScore * (this.evaluators[idx]?.weight ?? 0),
|
|
221
|
+
0,
|
|
222
|
+
);
|
|
223
|
+
|
|
224
|
+
// Combine boolean assessments (true if majority agree)
|
|
225
|
+
const agreeingEvaluators = (
|
|
226
|
+
key: 'preservesTone' | 'preservesNuance' | 'culturallyAccurate' | 'technicallyCorrect',
|
|
227
|
+
) => {
|
|
228
|
+
const trueCount = results.filter(r => r[key]).length;
|
|
229
|
+
return trueCount > results.length / 2;
|
|
230
|
+
};
|
|
231
|
+
|
|
232
|
+
// Aggregate issues and suggestions (unique)
|
|
233
|
+
const allIssues = results.flatMap(r => r.specificIssues);
|
|
234
|
+
const uniqueIssues = [...new Set(allIssues)];
|
|
235
|
+
|
|
236
|
+
const allSuggestions = results.flatMap(r => r.improvementSuggestions);
|
|
237
|
+
const uniqueSuggestions = [...new Set(allSuggestions)];
|
|
238
|
+
|
|
239
|
+
const allStrengths = results.flatMap(r => r.strengths);
|
|
240
|
+
const uniqueStrengths = [...new Set(allStrengths)];
|
|
241
|
+
|
|
242
|
+
const meetsThreshold = weightedScore >= (input.criteria?.threshold ?? 8);
|
|
243
|
+
|
|
244
|
+
return {
|
|
245
|
+
qualityScore: Math.round(weightedScore),
|
|
246
|
+
preservesTone: agreeingEvaluators('preservesTone'),
|
|
247
|
+
preservesNuance: agreeingEvaluators('preservesNuance'),
|
|
248
|
+
culturallyAccurate: agreeingEvaluators('culturallyAccurate'),
|
|
249
|
+
technicallyCorrect: agreeingEvaluators('technicallyCorrect'),
|
|
250
|
+
specificIssues: uniqueIssues.slice(0, 5), // Top 5 issues
|
|
251
|
+
improvementSuggestions: uniqueSuggestions.slice(0, 5), // Top 5 suggestions
|
|
252
|
+
strengths: uniqueStrengths.slice(0, 5), // Top 5 strengths
|
|
253
|
+
overallAssessment: `Composite evaluation: ${weightedScore.toFixed(1)}/10. Based on ${this.evaluators.length} evaluator(s).`,
|
|
254
|
+
meetsThreshold,
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* Factory function to create LLM evaluator
|
|
261
|
+
*/
|
|
262
|
+
export function createLLMEvaluator(modelId?: string): Evaluator {
|
|
263
|
+
return new LLMEvaluator(modelId);
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
/**
|
|
267
|
+
* Factory function to create rubric evaluator
|
|
268
|
+
*/
|
|
269
|
+
export function createRubricEvaluator(
|
|
270
|
+
rubric?: Map<string, (content: string, request: string) => number>,
|
|
271
|
+
): Evaluator {
|
|
272
|
+
return new RubricEvaluator(rubric);
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
/**
|
|
276
|
+
* Factory function to create composite evaluator
|
|
277
|
+
*/
|
|
278
|
+
export function createCompositeEvaluator(
|
|
279
|
+
evaluators: Array<{ evaluator: Evaluator; weight: number }> = [],
|
|
280
|
+
): Evaluator {
|
|
281
|
+
return new CompositeEvaluator(evaluators);
|
|
282
|
+
}
|
|
@@ -0,0 +1,416 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Evaluator-Optimizer Tests
|
|
3
|
+
* Unit tests for the feedback loop pattern implementation
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { describe, it, expect, beforeEach, vi } from 'vitest';
|
|
7
|
+
|
|
8
|
+
import { createLLMEvaluator, createRubricEvaluator, createCompositeEvaluator } from './evaluator';
|
|
9
|
+
import { createPromptOptimizer, createOutputOptimizer } from './optimizer';
|
|
10
|
+
import {
|
|
11
|
+
type Evaluator,
|
|
12
|
+
type Optimizer,
|
|
13
|
+
type EvaluationResult,
|
|
14
|
+
type OptimizerInput,
|
|
15
|
+
} from './schema';
|
|
16
|
+
|
|
17
|
+
import { createEvaluatorOptimizer, type EvaluatorOptimizer } from ".";
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Mock Evaluator for testing
|
|
21
|
+
* Returns predetermined scores for consistent testing
|
|
22
|
+
*/
|
|
23
|
+
class MockEvaluator implements Evaluator {
|
|
24
|
+
private scores: number[];
|
|
25
|
+
private currentCall: number = 0;
|
|
26
|
+
|
|
27
|
+
constructor(scores: number[] = [7, 8, 9]) {
|
|
28
|
+
this.scores = scores;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
async evaluate(): Promise<EvaluationResult> {
|
|
32
|
+
const score = this.scores[Math.min(this.currentCall, this.scores.length - 1)];
|
|
33
|
+
this.currentCall += 1;
|
|
34
|
+
|
|
35
|
+
return {
|
|
36
|
+
qualityScore: score,
|
|
37
|
+
preservesTone: score >= 7,
|
|
38
|
+
preservesNuance: score >= 8,
|
|
39
|
+
culturallyAccurate: true,
|
|
40
|
+
technicallyCorrect: score >= 6,
|
|
41
|
+
specificIssues: score < 8 ? ['Quality needs improvement'] : [],
|
|
42
|
+
improvementSuggestions: score < 8 ? ['Add more detail'] : [],
|
|
43
|
+
strengths: ['Clear writing'],
|
|
44
|
+
overallAssessment: `Score: ${score}/10`,
|
|
45
|
+
meetsThreshold: score >= 8,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Mock Optimizer for testing
|
|
52
|
+
*/
|
|
53
|
+
class MockOptimizer implements Optimizer {
|
|
54
|
+
private callCount: number = 0;
|
|
55
|
+
|
|
56
|
+
async optimize(input: OptimizerInput): Promise<string> {
|
|
57
|
+
this.callCount += 1;
|
|
58
|
+
// Simulate improvement by appending iteration marker
|
|
59
|
+
return `${input.content} [optimized iteration ${this.callCount}]`;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
getCallCount(): number {
|
|
63
|
+
return this.callCount;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
describe('Evaluator-Optimizer Feedback Loop', () => {
|
|
68
|
+
let mockEvaluator: MockEvaluator;
|
|
69
|
+
let mockOptimizer: MockOptimizer;
|
|
70
|
+
let optimizer: EvaluatorOptimizer;
|
|
71
|
+
|
|
72
|
+
beforeEach(() => {
|
|
73
|
+
mockEvaluator = new MockEvaluator([6, 7, 8, 9]);
|
|
74
|
+
mockOptimizer = new MockOptimizer();
|
|
75
|
+
|
|
76
|
+
optimizer = createEvaluatorOptimizer({
|
|
77
|
+
maxIterations: 5,
|
|
78
|
+
targetScore: 8,
|
|
79
|
+
evaluator: mockEvaluator,
|
|
80
|
+
optimizer: mockOptimizer,
|
|
81
|
+
enableLogging: false,
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
describe('initialization', () => {
|
|
86
|
+
it('should create optimizer with config', () => {
|
|
87
|
+
expect(optimizer).toBeDefined();
|
|
88
|
+
expect(optimizer.getEvaluator()).toBeDefined();
|
|
89
|
+
expect(optimizer.getOptimizer()).toBeDefined();
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
it('should preserve evaluator and optimizer instances', () => {
|
|
93
|
+
expect(optimizer.getEvaluator()).toBe(mockEvaluator);
|
|
94
|
+
expect(optimizer.getOptimizer()).toBe(mockOptimizer);
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
describe('feedback Loop Execution', () => {
|
|
99
|
+
it('should complete feedback loop successfully', async () => {
|
|
100
|
+
const result = await optimizer.runFeedbackLoop('Initial content', 'Test request');
|
|
101
|
+
|
|
102
|
+
expect(result).toBeDefined();
|
|
103
|
+
expect(result.finalContent).toBeDefined();
|
|
104
|
+
expect(result.finalEvaluation).toBeDefined();
|
|
105
|
+
expect(result.cyclesCompleted).toBeGreaterThan(0);
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
it('should meet threshold when score reaches target', async () => {
|
|
109
|
+
const result = await optimizer.runFeedbackLoop('Initial content', 'Test request');
|
|
110
|
+
|
|
111
|
+
expect(result.meetsThreshold).toBe(true);
|
|
112
|
+
expect(result.finalEvaluation.qualityScore).toBeGreaterThanOrEqual(8);
|
|
113
|
+
expect(result.terminationReason).toBe('threshold_met');
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
it('should record score history', async () => {
|
|
117
|
+
const result = await optimizer.runFeedbackLoop('Initial content', 'Test request');
|
|
118
|
+
|
|
119
|
+
expect(result.scoreHistory).toBeDefined();
|
|
120
|
+
expect(result.scoreHistory.length).toBeGreaterThan(0);
|
|
121
|
+
expect(result.scoreHistory[0]).toBe(6); // Initial score
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
it('should record content history', async () => {
|
|
125
|
+
const result = await optimizer.runFeedbackLoop('Initial content', 'Test request');
|
|
126
|
+
|
|
127
|
+
expect(result.contentHistory).toBeDefined();
|
|
128
|
+
expect(result.contentHistory.length).toBeGreaterThan(0);
|
|
129
|
+
expect(result.contentHistory[0]).toBe('Initial content');
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
it('should terminate when max iterations reached', async () => {
|
|
133
|
+
// Create evaluator that never reaches threshold
|
|
134
|
+
const lowScoreEvaluator = new MockEvaluator([5, 5.5, 6, 6.5, 7]);
|
|
135
|
+
|
|
136
|
+
const optimizer2 = createEvaluatorOptimizer({
|
|
137
|
+
maxIterations: 3,
|
|
138
|
+
targetScore: 9,
|
|
139
|
+
evaluator: lowScoreEvaluator,
|
|
140
|
+
optimizer: mockOptimizer,
|
|
141
|
+
enableLogging: false,
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
const result = await optimizer2.runFeedbackLoop('Content', 'Request');
|
|
145
|
+
|
|
146
|
+
expect(result.cyclesCompleted).toBeLessThanOrEqual(3);
|
|
147
|
+
expect(result.meetsThreshold).toBe(false);
|
|
148
|
+
expect(result.terminationReason).toBe('max_iterations');
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
it('should stop on threshold when stopOnThreshold is true', async () => {
|
|
152
|
+
const result = await optimizer.runFeedbackLoop('Initial content', 'Test request', {
|
|
153
|
+
stopOnThreshold: true,
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
// Should stop as soon as threshold is met
|
|
157
|
+
expect(result.meetsThreshold).toBe(true);
|
|
158
|
+
expect(result.finalEvaluation.qualityScore).toBeGreaterThanOrEqual(8);
|
|
159
|
+
});
|
|
160
|
+
|
|
161
|
+
it('should calculate average score improvement', async () => {
|
|
162
|
+
const result = await optimizer.runFeedbackLoop('Initial content', 'Test request');
|
|
163
|
+
|
|
164
|
+
const avgImprovement = result.metadata?.averageScoreImprovement ?? 0;
|
|
165
|
+
expect(avgImprovement).toBeGreaterThanOrEqual(0);
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
|
|
169
|
+
describe('optimization Cycles', () => {
|
|
170
|
+
it('should call optimizer only when score below threshold', async () => {
|
|
171
|
+
mockOptimizer = new MockOptimizer();
|
|
172
|
+
optimizer = createEvaluatorOptimizer({
|
|
173
|
+
maxIterations: 5,
|
|
174
|
+
targetScore: 8,
|
|
175
|
+
evaluator: mockEvaluator,
|
|
176
|
+
optimizer: mockOptimizer,
|
|
177
|
+
enableLogging: false,
|
|
178
|
+
});
|
|
179
|
+
|
|
180
|
+
await optimizer.runFeedbackLoop('Content', 'Request');
|
|
181
|
+
|
|
182
|
+
// With mock scores [6, 7, 8, 9], optimizer should be called
|
|
183
|
+
// for first 2 scores (below 8)
|
|
184
|
+
expect(mockOptimizer.getCallCount()).toBeGreaterThan(0);
|
|
185
|
+
});
|
|
186
|
+
|
|
187
|
+
it('should improve content through iterations', async () => {
|
|
188
|
+
const result = await optimizer.runFeedbackLoop('Content', 'Request');
|
|
189
|
+
|
|
190
|
+
// Final content should be different from initial
|
|
191
|
+
// (modified by optimizer)
|
|
192
|
+
if (result.cyclesCompleted > 0) {
|
|
193
|
+
expect(result.finalContent).not.toBe(result.contentHistory[0]);
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
});
|
|
197
|
+
|
|
198
|
+
describe('evaluators', () => {
|
|
199
|
+
it('should work with LLMEvaluator type', () => {
|
|
200
|
+
// Just test that factory creates right type
|
|
201
|
+
const evaluator = createLLMEvaluator('openai/gpt-4o-mini');
|
|
202
|
+
expect(evaluator).toBeDefined();
|
|
203
|
+
});
|
|
204
|
+
|
|
205
|
+
it('should work with RubricEvaluator type', () => {
|
|
206
|
+
const evaluator = createRubricEvaluator();
|
|
207
|
+
expect(evaluator).toBeDefined();
|
|
208
|
+
});
|
|
209
|
+
|
|
210
|
+
it('should work with CompositeEvaluator type', () => {
|
|
211
|
+
const composite = createCompositeEvaluator([
|
|
212
|
+
{ evaluator: createRubricEvaluator(), weight: 1 },
|
|
213
|
+
]);
|
|
214
|
+
expect(composite).toBeDefined();
|
|
215
|
+
});
|
|
216
|
+
});
|
|
217
|
+
|
|
218
|
+
describe('optimizers', () => {
|
|
219
|
+
it('should work with PromptOptimizer', () => {
|
|
220
|
+
const optimizer = createPromptOptimizer('openai/gpt-4o-mini');
|
|
221
|
+
expect(optimizer).toBeDefined();
|
|
222
|
+
});
|
|
223
|
+
|
|
224
|
+
it('should work with OutputOptimizer', () => {
|
|
225
|
+
const optimizer = createOutputOptimizer('openai/gpt-4o-mini', 'refine');
|
|
226
|
+
expect(optimizer).toBeDefined();
|
|
227
|
+
});
|
|
228
|
+
});
|
|
229
|
+
|
|
230
|
+
describe('error Handling', () => {
|
|
231
|
+
it('should handle evaluation errors gracefully', async () => {
|
|
232
|
+
// Create evaluator that throws
|
|
233
|
+
class ErrorEvaluator implements Evaluator {
|
|
234
|
+
async evaluate(): Promise<EvaluationResult> {
|
|
235
|
+
throw new Error('Evaluation failed');
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
const optimizer2 = createEvaluatorOptimizer({
|
|
240
|
+
maxIterations: 2,
|
|
241
|
+
targetScore: 8,
|
|
242
|
+
evaluator: new ErrorEvaluator(),
|
|
243
|
+
optimizer: mockOptimizer,
|
|
244
|
+
enableLogging: false,
|
|
245
|
+
});
|
|
246
|
+
|
|
247
|
+
const result = await optimizer2.runFeedbackLoop('Content', 'Request');
|
|
248
|
+
|
|
249
|
+
expect(result.terminationReason).toBe('error');
|
|
250
|
+
expect(result.error).toBeDefined();
|
|
251
|
+
});
|
|
252
|
+
|
|
253
|
+
it('should handle optimizer errors gracefully', async () => {
|
|
254
|
+
// Create optimizer that throws
|
|
255
|
+
class ErrorOptimizer implements Optimizer {
|
|
256
|
+
async optimize(): Promise<string> {
|
|
257
|
+
throw new Error('Optimization failed');
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
const optimizer2 = createEvaluatorOptimizer({
|
|
262
|
+
maxIterations: 2,
|
|
263
|
+
targetScore: 8,
|
|
264
|
+
evaluator: mockEvaluator,
|
|
265
|
+
optimizer: new ErrorOptimizer(),
|
|
266
|
+
enableLogging: false,
|
|
267
|
+
});
|
|
268
|
+
|
|
269
|
+
const result = await optimizer2.runFeedbackLoop('Content', 'Request');
|
|
270
|
+
|
|
271
|
+
expect(result.terminationReason).toBe('error');
|
|
272
|
+
expect(result.error).toBeDefined();
|
|
273
|
+
});
|
|
274
|
+
});
|
|
275
|
+
|
|
276
|
+
describe('result Structure', () => {
|
|
277
|
+
it('should include all required fields in result', async () => {
|
|
278
|
+
const result = await optimizer.runFeedbackLoop('Content', 'Request');
|
|
279
|
+
|
|
280
|
+
expect(result.finalContent).toBeDefined();
|
|
281
|
+
expect(result.finalEvaluation).toBeDefined();
|
|
282
|
+
expect(result.cyclesCompleted).toBeDefined();
|
|
283
|
+
expect(result.meetsThreshold).toBeDefined();
|
|
284
|
+
expect(result.scoreHistory).toBeDefined();
|
|
285
|
+
expect(result.contentHistory).toBeDefined();
|
|
286
|
+
expect(result.terminationReason).toBeDefined();
|
|
287
|
+
expect(result.metadata).toBeDefined();
|
|
288
|
+
});
|
|
289
|
+
|
|
290
|
+
it('should include metadata with timing information', async () => {
|
|
291
|
+
const result = await optimizer.runFeedbackLoop('Content', 'Request');
|
|
292
|
+
|
|
293
|
+
expect(result.metadata?.startTime).toBeDefined();
|
|
294
|
+
expect(result.metadata?.endTime).toBeDefined();
|
|
295
|
+
expect(result.metadata?.processingTimeMs).toBeGreaterThan(0);
|
|
296
|
+
expect(result.metadata?.averageScoreImprovement).toBeDefined();
|
|
297
|
+
});
|
|
298
|
+
|
|
299
|
+
it('should include error only on error termination', async () => {
|
|
300
|
+
const result = await optimizer.runFeedbackLoop('Content', 'Request');
|
|
301
|
+
|
|
302
|
+
if (result.terminationReason === 'error') {
|
|
303
|
+
expect(result.error).toBeDefined();
|
|
304
|
+
} else {
|
|
305
|
+
// May or may not have error field when not erroring
|
|
306
|
+
expect(result.error).toBeUndefined();
|
|
307
|
+
}
|
|
308
|
+
});
|
|
309
|
+
});
|
|
310
|
+
|
|
311
|
+
describe('configuration', () => {
|
|
312
|
+
it('should respect maxIterations config', async () => {
|
|
313
|
+
const optimizer2 = createEvaluatorOptimizer({
|
|
314
|
+
maxIterations: 2,
|
|
315
|
+
targetScore: 8,
|
|
316
|
+
evaluator: mockEvaluator,
|
|
317
|
+
optimizer: mockOptimizer,
|
|
318
|
+
enableLogging: false,
|
|
319
|
+
});
|
|
320
|
+
|
|
321
|
+
const result = await optimizer2.runFeedbackLoop('Content', 'Request');
|
|
322
|
+
|
|
323
|
+
expect(result.cyclesCompleted).toBeLessThanOrEqual(2);
|
|
324
|
+
});
|
|
325
|
+
|
|
326
|
+
it('should respect targetScore config', async () => {
|
|
327
|
+
const highTargetOptimizer = createEvaluatorOptimizer({
|
|
328
|
+
maxIterations: 5,
|
|
329
|
+
targetScore: 9,
|
|
330
|
+
evaluator: new MockEvaluator([6, 7, 8, 8.5, 9]),
|
|
331
|
+
optimizer: mockOptimizer,
|
|
332
|
+
enableLogging: false,
|
|
333
|
+
});
|
|
334
|
+
|
|
335
|
+
const result = await highTargetOptimizer.runFeedbackLoop('Content', 'Request');
|
|
336
|
+
|
|
337
|
+
expect(result.meetsThreshold).toBe(true);
|
|
338
|
+
expect(result.finalEvaluation.qualityScore).toBeGreaterThanOrEqual(9);
|
|
339
|
+
});
|
|
340
|
+
});
|
|
341
|
+
|
|
342
|
+
describe('logging', () => {
|
|
343
|
+
it('should not log when enableLogging is false', async () => {
|
|
344
|
+
const consoleSpy = vi.spyOn(console, 'log');
|
|
345
|
+
|
|
346
|
+
const optimizer2 = createEvaluatorOptimizer({
|
|
347
|
+
maxIterations: 3,
|
|
348
|
+
targetScore: 8,
|
|
349
|
+
evaluator: mockEvaluator,
|
|
350
|
+
optimizer: mockOptimizer,
|
|
351
|
+
enableLogging: false,
|
|
352
|
+
});
|
|
353
|
+
|
|
354
|
+
await optimizer2.runFeedbackLoop('Content', 'Request');
|
|
355
|
+
|
|
356
|
+
expect(consoleSpy).not.toHaveBeenCalled();
|
|
357
|
+
consoleSpy.mockRestore();
|
|
358
|
+
});
|
|
359
|
+
|
|
360
|
+
it('should log when enableLogging is true', async () => {
|
|
361
|
+
const consoleSpy = vi.spyOn(console, 'log');
|
|
362
|
+
|
|
363
|
+
const optimizer2 = createEvaluatorOptimizer({
|
|
364
|
+
maxIterations: 3,
|
|
365
|
+
targetScore: 8,
|
|
366
|
+
evaluator: mockEvaluator,
|
|
367
|
+
optimizer: mockOptimizer,
|
|
368
|
+
enableLogging: true,
|
|
369
|
+
});
|
|
370
|
+
|
|
371
|
+
await optimizer2.runFeedbackLoop('Content', 'Request');
|
|
372
|
+
|
|
373
|
+
expect(consoleSpy).toHaveBeenCalledWith();
|
|
374
|
+
consoleSpy.mockRestore();
|
|
375
|
+
});
|
|
376
|
+
});
|
|
377
|
+
|
|
378
|
+
describe('edge Cases', () => {
|
|
379
|
+
it('should handle empty content', async () => {
|
|
380
|
+
const result = await optimizer.runFeedbackLoop('', 'Request');
|
|
381
|
+
|
|
382
|
+
expect(result).toBeDefined();
|
|
383
|
+
expect(result.finalContent).toBeDefined();
|
|
384
|
+
});
|
|
385
|
+
|
|
386
|
+
it('should handle very long content', async () => {
|
|
387
|
+
const longContent = 'x'.repeat(10000);
|
|
388
|
+
|
|
389
|
+
const result = await optimizer.runFeedbackLoop(longContent, 'Request');
|
|
390
|
+
|
|
391
|
+
expect(result).toBeDefined();
|
|
392
|
+
expect(result.finalContent).toBeDefined();
|
|
393
|
+
});
|
|
394
|
+
|
|
395
|
+
it('should handle special characters in content', async () => {
|
|
396
|
+
const specialContent = 'Content with émojis 🎉 and spëcial çhars';
|
|
397
|
+
|
|
398
|
+
const result = await optimizer.runFeedbackLoop(specialContent, 'Request');
|
|
399
|
+
|
|
400
|
+
expect(result).toBeDefined();
|
|
401
|
+
});
|
|
402
|
+
|
|
403
|
+
it('should handle rapid successive calls', async () => {
|
|
404
|
+
const promises = Array(3)
|
|
405
|
+
.fill(null)
|
|
406
|
+
.map(() => optimizer.runFeedbackLoop('Content', 'Request'));
|
|
407
|
+
|
|
408
|
+
const results = await Promise.all(promises);
|
|
409
|
+
|
|
410
|
+
expect(results).toHaveLength(3);
|
|
411
|
+
results.forEach(result => {
|
|
412
|
+
expect(result).toBeDefined();
|
|
413
|
+
});
|
|
414
|
+
});
|
|
415
|
+
});
|
|
416
|
+
});
|