@warlock.js/ai 4.1.1
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 +72 -0
- package/cjs/index.cjs +8625 -0
- package/cjs/index.cjs.map +1 -0
- package/esm/agent/agent-config.type.d.mts +160 -0
- package/esm/agent/agent-config.type.d.mts.map +1 -0
- package/esm/agent/agent-input-builder.mjs +111 -0
- package/esm/agent/agent-input-builder.mjs.map +1 -0
- package/esm/agent/agent-log-event.mjs +101 -0
- package/esm/agent/agent-log-event.mjs.map +1 -0
- package/esm/agent/agent-stream.d.mts +47 -0
- package/esm/agent/agent-stream.d.mts.map +1 -0
- package/esm/agent/agent-stream.mjs +82 -0
- package/esm/agent/agent-stream.mjs.map +1 -0
- package/esm/agent/agent-to-stream-event.mjs +86 -0
- package/esm/agent/agent-to-stream-event.mjs.map +1 -0
- package/esm/agent/agent.d.mts +38 -0
- package/esm/agent/agent.d.mts.map +1 -0
- package/esm/agent/agent.mjs +974 -0
- package/esm/agent/agent.mjs.map +1 -0
- package/esm/agent/index.d.mts +3 -0
- package/esm/agent/index.mjs +4 -0
- package/esm/agent/json-stream-guard.mjs +400 -0
- package/esm/agent/json-stream-guard.mjs.map +1 -0
- package/esm/ai.d.mts +64 -0
- package/esm/ai.d.mts.map +1 -0
- package/esm/ai.mjs +65 -0
- package/esm/ai.mjs.map +1 -0
- package/esm/config.d.mts +79 -0
- package/esm/config.d.mts.map +1 -0
- package/esm/config.mjs +43 -0
- package/esm/config.mjs.map +1 -0
- package/esm/contracts/agent/agent-options.type.d.mts +132 -0
- package/esm/contracts/agent/agent-options.type.d.mts.map +1 -0
- package/esm/contracts/agent/agent.contract.d.mts +92 -0
- package/esm/contracts/agent/agent.contract.d.mts.map +1 -0
- package/esm/contracts/agent/index.d.mts +2 -0
- package/esm/contracts/attachment.type.d.mts +100 -0
- package/esm/contracts/attachment.type.d.mts.map +1 -0
- package/esm/contracts/content-part.type.d.mts +55 -0
- package/esm/contracts/content-part.type.d.mts.map +1 -0
- package/esm/contracts/conversation-message.type.d.mts +51 -0
- package/esm/contracts/conversation-message.type.d.mts.map +1 -0
- package/esm/contracts/embedder.contract.d.mts +69 -0
- package/esm/contracts/embedder.contract.d.mts.map +1 -0
- package/esm/contracts/end.type.d.mts +53 -0
- package/esm/contracts/end.type.d.mts.map +1 -0
- package/esm/contracts/end.type.mjs +47 -0
- package/esm/contracts/end.type.mjs.map +1 -0
- package/esm/contracts/events/agent-events.type.d.mts +71 -0
- package/esm/contracts/events/agent-events.type.d.mts.map +1 -0
- package/esm/contracts/events/complete-event.type.d.mts +33 -0
- package/esm/contracts/events/complete-event.type.d.mts.map +1 -0
- package/esm/contracts/events/event-identity.type.d.mts +30 -0
- package/esm/contracts/events/event-identity.type.d.mts.map +1 -0
- package/esm/contracts/events/event-map.type.d.mts +80 -0
- package/esm/contracts/events/event-map.type.d.mts.map +1 -0
- package/esm/contracts/events/index.d.mts +7 -0
- package/esm/contracts/events/supervisor-events.type.d.mts +162 -0
- package/esm/contracts/events/supervisor-events.type.d.mts.map +1 -0
- package/esm/contracts/events/usage-event.type.d.mts +39 -0
- package/esm/contracts/events/usage-event.type.d.mts.map +1 -0
- package/esm/contracts/events/workflow-events.type.d.mts +51 -0
- package/esm/contracts/events/workflow-events.type.d.mts.map +1 -0
- package/esm/contracts/executable.contract.d.mts +25 -0
- package/esm/contracts/executable.contract.d.mts.map +1 -0
- package/esm/contracts/finish-reason.type.d.mts +17 -0
- package/esm/contracts/finish-reason.type.d.mts.map +1 -0
- package/esm/contracts/index.d.mts +63 -0
- package/esm/contracts/middleware/index.d.mts +3 -0
- package/esm/contracts/middleware/middleware-context.type.d.mts +99 -0
- package/esm/contracts/middleware/middleware-context.type.d.mts.map +1 -0
- package/esm/contracts/middleware/middleware-state.type.d.mts +34 -0
- package/esm/contracts/middleware/middleware-state.type.d.mts.map +1 -0
- package/esm/contracts/middleware/middleware.contract.d.mts +140 -0
- package/esm/contracts/middleware/middleware.contract.d.mts.map +1 -0
- package/esm/contracts/model-tool-call-request.type.d.mts +58 -0
- package/esm/contracts/model-tool-call-request.type.d.mts.map +1 -0
- package/esm/contracts/model.contract.d.mts +164 -0
- package/esm/contracts/model.contract.d.mts.map +1 -0
- package/esm/contracts/placeholders.type.d.mts +23 -0
- package/esm/contracts/placeholders.type.d.mts.map +1 -0
- package/esm/contracts/result/agent-result.type.d.mts +33 -0
- package/esm/contracts/result/agent-result.type.d.mts.map +1 -0
- package/esm/contracts/result/attempt-entry.type.d.mts +40 -0
- package/esm/contracts/result/attempt-entry.type.d.mts.map +1 -0
- package/esm/contracts/result/base-report.type.d.mts +137 -0
- package/esm/contracts/result/base-report.type.d.mts.map +1 -0
- package/esm/contracts/result/base-report.type.mjs +17 -0
- package/esm/contracts/result/base-report.type.mjs.map +1 -0
- package/esm/contracts/result/base-result.type.d.mts +26 -0
- package/esm/contracts/result/base-result.type.d.mts.map +1 -0
- package/esm/contracts/result/execute-result.type.d.mts +40 -0
- package/esm/contracts/result/execute-result.type.d.mts.map +1 -0
- package/esm/contracts/result/execution-report.type.d.mts +50 -0
- package/esm/contracts/result/execution-report.type.d.mts.map +1 -0
- package/esm/contracts/result/index.d.mts +14 -0
- package/esm/contracts/result/llm-trip.type.d.mts +36 -0
- package/esm/contracts/result/llm-trip.type.d.mts.map +1 -0
- package/esm/contracts/result/model-pricing.type.d.mts +51 -0
- package/esm/contracts/result/model-pricing.type.d.mts.map +1 -0
- package/esm/contracts/result/session-send-result.type.d.mts +29 -0
- package/esm/contracts/result/session-send-result.type.d.mts.map +1 -0
- package/esm/contracts/result/step-result.type.d.mts +43 -0
- package/esm/contracts/result/step-result.type.d.mts.map +1 -0
- package/esm/contracts/result/supervisor-result.type.d.mts +86 -0
- package/esm/contracts/result/supervisor-result.type.d.mts.map +1 -0
- package/esm/contracts/result/tool-call.type.d.mts +44 -0
- package/esm/contracts/result/tool-call.type.d.mts.map +1 -0
- package/esm/contracts/result/usage.type.d.mts +57 -0
- package/esm/contracts/result/usage.type.d.mts.map +1 -0
- package/esm/contracts/result/workflow-result.type.d.mts +45 -0
- package/esm/contracts/result/workflow-result.type.d.mts.map +1 -0
- package/esm/contracts/sdk-adapter.contract.d.mts +77 -0
- package/esm/contracts/sdk-adapter.contract.d.mts.map +1 -0
- package/esm/contracts/stream/stream-event.type.d.mts +68 -0
- package/esm/contracts/stream/stream-event.type.d.mts.map +1 -0
- package/esm/contracts/stream/stream.contract.d.mts +61 -0
- package/esm/contracts/stream/stream.contract.d.mts.map +1 -0
- package/esm/contracts/streaming-tool-guard-config.type.d.mts +78 -0
- package/esm/contracts/streaming-tool-guard-config.type.d.mts.map +1 -0
- package/esm/contracts/supervisor/ack-entry.type.d.mts +97 -0
- package/esm/contracts/supervisor/ack-entry.type.d.mts.map +1 -0
- package/esm/contracts/supervisor/classifier-context.type.d.mts +189 -0
- package/esm/contracts/supervisor/classifier-context.type.d.mts.map +1 -0
- package/esm/contracts/supervisor/dispatch-context.type.d.mts +235 -0
- package/esm/contracts/supervisor/dispatch-context.type.d.mts.map +1 -0
- package/esm/contracts/supervisor/evaluate-context.type.d.mts +124 -0
- package/esm/contracts/supervisor/evaluate-context.type.d.mts.map +1 -0
- package/esm/contracts/supervisor/index.d.mts +16 -0
- package/esm/contracts/supervisor/intent-entry.type.d.mts +254 -0
- package/esm/contracts/supervisor/intent-entry.type.d.mts.map +1 -0
- package/esm/contracts/supervisor/iteration-snapshot.type.d.mts +117 -0
- package/esm/contracts/supervisor/iteration-snapshot.type.d.mts.map +1 -0
- package/esm/contracts/supervisor/next.type.d.mts +25 -0
- package/esm/contracts/supervisor/next.type.d.mts.map +1 -0
- package/esm/contracts/supervisor/route-context.type.d.mts +91 -0
- package/esm/contracts/supervisor/route-context.type.d.mts.map +1 -0
- package/esm/contracts/supervisor/router-entry.type.d.mts +67 -0
- package/esm/contracts/supervisor/router-entry.type.d.mts.map +1 -0
- package/esm/contracts/supervisor/supervisor-config.type.d.mts +356 -0
- package/esm/contracts/supervisor/supervisor-config.type.d.mts.map +1 -0
- package/esm/contracts/supervisor/supervisor-execute-options.type.d.mts +90 -0
- package/esm/contracts/supervisor/supervisor-execute-options.type.d.mts.map +1 -0
- package/esm/contracts/supervisor/supervisor-input.type.d.mts +24 -0
- package/esm/contracts/supervisor/supervisor-input.type.d.mts.map +1 -0
- package/esm/contracts/supervisor/supervisor-snapshot.type.d.mts +49 -0
- package/esm/contracts/supervisor/supervisor-snapshot.type.d.mts.map +1 -0
- package/esm/contracts/supervisor/supervisor-stream-event.type.d.mts +16 -0
- package/esm/contracts/supervisor/supervisor-stream-event.type.d.mts.map +1 -0
- package/esm/contracts/supervisor/supervisor.contract.d.mts +126 -0
- package/esm/contracts/supervisor/supervisor.contract.d.mts.map +1 -0
- package/esm/contracts/system-prompt.contract.d.mts +118 -0
- package/esm/contracts/system-prompt.contract.d.mts.map +1 -0
- package/esm/contracts/tool.contract.d.mts +161 -0
- package/esm/contracts/tool.contract.d.mts.map +1 -0
- package/esm/contracts/workflow/index.d.mts +6 -0
- package/esm/contracts/workflow/next-step-result.type.d.mts +17 -0
- package/esm/contracts/workflow/next-step-result.type.d.mts.map +1 -0
- package/esm/contracts/workflow/retry-config.type.d.mts +19 -0
- package/esm/contracts/workflow/retry-config.type.d.mts.map +1 -0
- package/esm/contracts/workflow/step.contract.d.mts +189 -0
- package/esm/contracts/workflow/step.contract.d.mts.map +1 -0
- package/esm/contracts/workflow/workflow-context.type.d.mts +45 -0
- package/esm/contracts/workflow/workflow-context.type.d.mts.map +1 -0
- package/esm/contracts/workflow/workflow-snapshot.type.d.mts +24 -0
- package/esm/contracts/workflow/workflow-snapshot.type.d.mts.map +1 -0
- package/esm/contracts/workflow/workflow.contract.d.mts +142 -0
- package/esm/contracts/workflow/workflow.contract.d.mts.map +1 -0
- package/esm/errors/agent-cancelled-error.d.mts +49 -0
- package/esm/errors/agent-cancelled-error.d.mts.map +1 -0
- package/esm/errors/agent-cancelled-error.mjs +43 -0
- package/esm/errors/agent-cancelled-error.mjs.map +1 -0
- package/esm/errors/agent-execution-error.d.mts +32 -0
- package/esm/errors/agent-execution-error.d.mts.map +1 -0
- package/esm/errors/agent-execution-error.mjs +35 -0
- package/esm/errors/agent-execution-error.mjs.map +1 -0
- package/esm/errors/agent-max-trips-error.d.mts +45 -0
- package/esm/errors/agent-max-trips-error.d.mts.map +1 -0
- package/esm/errors/agent-max-trips-error.mjs +41 -0
- package/esm/errors/agent-max-trips-error.mjs.map +1 -0
- package/esm/errors/ai-error.d.mts +94 -0
- package/esm/errors/ai-error.d.mts.map +1 -0
- package/esm/errors/ai-error.mjs +68 -0
- package/esm/errors/ai-error.mjs.map +1 -0
- package/esm/errors/budget-exceeded-error.d.mts +41 -0
- package/esm/errors/budget-exceeded-error.d.mts.map +1 -0
- package/esm/errors/budget-exceeded-error.mjs +31 -0
- package/esm/errors/budget-exceeded-error.mjs.map +1 -0
- package/esm/errors/content-filter-error.d.mts +33 -0
- package/esm/errors/content-filter-error.d.mts.map +1 -0
- package/esm/errors/content-filter-error.mjs +28 -0
- package/esm/errors/content-filter-error.mjs.map +1 -0
- package/esm/errors/context-length-exceeded-error.d.mts +38 -0
- package/esm/errors/context-length-exceeded-error.d.mts.map +1 -0
- package/esm/errors/context-length-exceeded-error.mjs +31 -0
- package/esm/errors/context-length-exceeded-error.mjs.map +1 -0
- package/esm/errors/error-category.type.d.mts +30 -0
- package/esm/errors/error-category.type.d.mts.map +1 -0
- package/esm/errors/error-code.type.d.mts +19 -0
- package/esm/errors/error-code.type.d.mts.map +1 -0
- package/esm/errors/guardrail-violation-error.d.mts +55 -0
- package/esm/errors/guardrail-violation-error.d.mts.map +1 -0
- package/esm/errors/guardrail-violation-error.mjs +41 -0
- package/esm/errors/guardrail-violation-error.mjs.map +1 -0
- package/esm/errors/index.d.mts +29 -0
- package/esm/errors/index.mjs +29 -0
- package/esm/errors/invalid-request-error.d.mts +27 -0
- package/esm/errors/invalid-request-error.d.mts.map +1 -0
- package/esm/errors/invalid-request-error.mjs +31 -0
- package/esm/errors/invalid-request-error.mjs.map +1 -0
- package/esm/errors/max-iterations-error.d.mts +31 -0
- package/esm/errors/max-iterations-error.d.mts.map +1 -0
- package/esm/errors/max-iterations-error.mjs +32 -0
- package/esm/errors/max-iterations-error.mjs.map +1 -0
- package/esm/errors/max-steps-exceeded-error.d.mts +20 -0
- package/esm/errors/max-steps-exceeded-error.d.mts.map +1 -0
- package/esm/errors/max-steps-exceeded-error.mjs +21 -0
- package/esm/errors/max-steps-exceeded-error.mjs.map +1 -0
- package/esm/errors/provider-auth-error.d.mts +22 -0
- package/esm/errors/provider-auth-error.d.mts.map +1 -0
- package/esm/errors/provider-auth-error.mjs +26 -0
- package/esm/errors/provider-auth-error.mjs.map +1 -0
- package/esm/errors/provider-error.d.mts +38 -0
- package/esm/errors/provider-error.d.mts.map +1 -0
- package/esm/errors/provider-error.mjs +42 -0
- package/esm/errors/provider-error.mjs.map +1 -0
- package/esm/errors/provider-rate-limit-error.d.mts +34 -0
- package/esm/errors/provider-rate-limit-error.d.mts.map +1 -0
- package/esm/errors/provider-rate-limit-error.mjs +31 -0
- package/esm/errors/provider-rate-limit-error.mjs.map +1 -0
- package/esm/errors/provider-timeout-error.d.mts +22 -0
- package/esm/errors/provider-timeout-error.d.mts.map +1 -0
- package/esm/errors/provider-timeout-error.mjs +26 -0
- package/esm/errors/provider-timeout-error.mjs.map +1 -0
- package/esm/errors/quota-exceeded-error.d.mts +36 -0
- package/esm/errors/quota-exceeded-error.d.mts.map +1 -0
- package/esm/errors/quota-exceeded-error.mjs +40 -0
- package/esm/errors/quota-exceeded-error.mjs.map +1 -0
- package/esm/errors/routing-error.d.mts +23 -0
- package/esm/errors/routing-error.d.mts.map +1 -0
- package/esm/errors/routing-error.mjs +23 -0
- package/esm/errors/routing-error.mjs.map +1 -0
- package/esm/errors/schema-validation-error.d.mts +40 -0
- package/esm/errors/schema-validation-error.d.mts.map +1 -0
- package/esm/errors/schema-validation-error.mjs +37 -0
- package/esm/errors/schema-validation-error.mjs.map +1 -0
- package/esm/errors/step-failed-error.d.mts +20 -0
- package/esm/errors/step-failed-error.d.mts.map +1 -0
- package/esm/errors/step-failed-error.mjs +19 -0
- package/esm/errors/step-failed-error.mjs.map +1 -0
- package/esm/errors/supervisor-cancelled-error.d.mts +29 -0
- package/esm/errors/supervisor-cancelled-error.d.mts.map +1 -0
- package/esm/errors/supervisor-cancelled-error.mjs +29 -0
- package/esm/errors/supervisor-cancelled-error.mjs.map +1 -0
- package/esm/errors/supervisor-drift-error.d.mts +31 -0
- package/esm/errors/supervisor-drift-error.d.mts.map +1 -0
- package/esm/errors/supervisor-drift-error.mjs +30 -0
- package/esm/errors/supervisor-drift-error.mjs.map +1 -0
- package/esm/errors/supervisor-failed-error.d.mts +40 -0
- package/esm/errors/supervisor-failed-error.d.mts.map +1 -0
- package/esm/errors/supervisor-failed-error.mjs +43 -0
- package/esm/errors/supervisor-failed-error.mjs.map +1 -0
- package/esm/errors/supervisor-routing-error.d.mts +44 -0
- package/esm/errors/supervisor-routing-error.d.mts.map +1 -0
- package/esm/errors/supervisor-routing-error.mjs +39 -0
- package/esm/errors/supervisor-routing-error.mjs.map +1 -0
- package/esm/errors/tool-execution-error.d.mts +35 -0
- package/esm/errors/tool-execution-error.d.mts.map +1 -0
- package/esm/errors/tool-execution-error.mjs +32 -0
- package/esm/errors/tool-execution-error.mjs.map +1 -0
- package/esm/errors/workflow-cancelled-error.d.mts +23 -0
- package/esm/errors/workflow-cancelled-error.d.mts.map +1 -0
- package/esm/errors/workflow-cancelled-error.mjs +23 -0
- package/esm/errors/workflow-cancelled-error.mjs.map +1 -0
- package/esm/errors/workflow-drift-error.d.mts +25 -0
- package/esm/errors/workflow-drift-error.d.mts.map +1 -0
- package/esm/errors/workflow-drift-error.mjs +24 -0
- package/esm/errors/workflow-drift-error.mjs.map +1 -0
- package/esm/errors/workflow-error.d.mts +15 -0
- package/esm/errors/workflow-error.d.mts.map +1 -0
- package/esm/errors/workflow-error.mjs +18 -0
- package/esm/errors/workflow-error.mjs.map +1 -0
- package/esm/index.d.mts +137 -0
- package/esm/index.mjs +81 -0
- package/esm/middleware/builtins/budget.d.mts +103 -0
- package/esm/middleware/builtins/budget.d.mts.map +1 -0
- package/esm/middleware/builtins/budget.mjs +100 -0
- package/esm/middleware/builtins/budget.mjs.map +1 -0
- package/esm/middleware/builtins/guardrail.d.mts +92 -0
- package/esm/middleware/builtins/guardrail.d.mts.map +1 -0
- package/esm/middleware/builtins/guardrail.mjs +76 -0
- package/esm/middleware/builtins/guardrail.mjs.map +1 -0
- package/esm/middleware/builtins/semantic-cache.d.mts +106 -0
- package/esm/middleware/builtins/semantic-cache.d.mts.map +1 -0
- package/esm/middleware/builtins/semantic-cache.mjs +149 -0
- package/esm/middleware/builtins/semantic-cache.mjs.map +1 -0
- package/esm/middleware/helpers/compose.d.mts +42 -0
- package/esm/middleware/helpers/compose.d.mts.map +1 -0
- package/esm/middleware/helpers/compose.mjs +52 -0
- package/esm/middleware/helpers/compose.mjs.map +1 -0
- package/esm/middleware/helpers/for-tool.d.mts +55 -0
- package/esm/middleware/helpers/for-tool.d.mts.map +1 -0
- package/esm/middleware/helpers/for-tool.mjs +80 -0
- package/esm/middleware/helpers/for-tool.mjs.map +1 -0
- package/esm/middleware/helpers/index.d.mts +2 -0
- package/esm/middleware/index.d.mts +8 -0
- package/esm/middleware/index.mjs +10 -0
- package/esm/middleware/pipeline.d.mts +70 -0
- package/esm/middleware/pipeline.d.mts.map +1 -0
- package/esm/middleware/pipeline.mjs +100 -0
- package/esm/middleware/pipeline.mjs.map +1 -0
- package/esm/middleware/utils/extract-user-text.d.mts +33 -0
- package/esm/middleware/utils/extract-user-text.d.mts.map +1 -0
- package/esm/middleware/utils/extract-user-text.mjs +40 -0
- package/esm/middleware/utils/extract-user-text.mjs.map +1 -0
- package/esm/middleware/utils/index.d.mts +2 -0
- package/esm/middleware/utils/namespaced-state.d.mts +60 -0
- package/esm/middleware/utils/namespaced-state.d.mts.map +1 -0
- package/esm/middleware/utils/namespaced-state.mjs +60 -0
- package/esm/middleware/utils/namespaced-state.mjs.map +1 -0
- package/esm/mock/index.d.mts +4 -0
- package/esm/mock/index.mjs +5 -0
- package/esm/mock/mock-agent.d.mts +41 -0
- package/esm/mock/mock-agent.d.mts.map +1 -0
- package/esm/mock/mock-agent.mjs +39 -0
- package/esm/mock/mock-agent.mjs.map +1 -0
- package/esm/mock/mock-config.type.d.mts +31 -0
- package/esm/mock/mock-config.type.d.mts.map +1 -0
- package/esm/mock/mock-model.d.mts +94 -0
- package/esm/mock/mock-model.d.mts.map +1 -0
- package/esm/mock/mock-model.mjs +150 -0
- package/esm/mock/mock-model.mjs.map +1 -0
- package/esm/mock/mock-sdk.d.mts +25 -0
- package/esm/mock/mock-sdk.d.mts.map +1 -0
- package/esm/mock/mock-sdk.mjs +37 -0
- package/esm/mock/mock-sdk.mjs.map +1 -0
- package/esm/supervisor/as-tool.d.mts +45 -0
- package/esm/supervisor/as-tool.d.mts.map +1 -0
- package/esm/supervisor/as-tool.mjs +80 -0
- package/esm/supervisor/as-tool.mjs.map +1 -0
- package/esm/supervisor/cancellation.d.mts +12 -0
- package/esm/supervisor/cancellation.d.mts.map +1 -0
- package/esm/supervisor/cancellation.mjs +22 -0
- package/esm/supervisor/cancellation.mjs.map +1 -0
- package/esm/supervisor/decide.mjs +272 -0
- package/esm/supervisor/decide.mjs.map +1 -0
- package/esm/supervisor/emitter.d.mts +27 -0
- package/esm/supervisor/emitter.d.mts.map +1 -0
- package/esm/supervisor/emitter.mjs +47 -0
- package/esm/supervisor/emitter.mjs.map +1 -0
- package/esm/supervisor/entries.d.mts +141 -0
- package/esm/supervisor/entries.d.mts.map +1 -0
- package/esm/supervisor/entries.mjs +206 -0
- package/esm/supervisor/entries.mjs.map +1 -0
- package/esm/supervisor/execution.d.mts +637 -0
- package/esm/supervisor/execution.d.mts.map +1 -0
- package/esm/supervisor/execution.mjs +1868 -0
- package/esm/supervisor/execution.mjs.map +1 -0
- package/esm/supervisor/index.d.mts +11 -0
- package/esm/supervisor/index.mjs +12 -0
- package/esm/supervisor/router-prompt.d.mts +56 -0
- package/esm/supervisor/router-prompt.d.mts.map +1 -0
- package/esm/supervisor/router-prompt.mjs +52 -0
- package/esm/supervisor/router-prompt.mjs.map +1 -0
- package/esm/supervisor/signature.d.mts +28 -0
- package/esm/supervisor/signature.d.mts.map +1 -0
- package/esm/supervisor/signature.mjs +89 -0
- package/esm/supervisor/signature.mjs.map +1 -0
- package/esm/supervisor/snapshot.d.mts +54 -0
- package/esm/supervisor/snapshot.d.mts.map +1 -0
- package/esm/supervisor/snapshot.mjs +77 -0
- package/esm/supervisor/snapshot.mjs.map +1 -0
- package/esm/supervisor/supervisor-stream.d.mts +29 -0
- package/esm/supervisor/supervisor-stream.d.mts.map +1 -0
- package/esm/supervisor/supervisor-stream.mjs +89 -0
- package/esm/supervisor/supervisor-stream.mjs.map +1 -0
- package/esm/supervisor/supervisor.d.mts +27 -0
- package/esm/supervisor/supervisor.d.mts.map +1 -0
- package/esm/supervisor/supervisor.mjs +138 -0
- package/esm/supervisor/supervisor.mjs.map +1 -0
- package/esm/system-prompt/instruction.d.mts +52 -0
- package/esm/system-prompt/instruction.d.mts.map +1 -0
- package/esm/system-prompt/instruction.mjs +57 -0
- package/esm/system-prompt/instruction.mjs.map +1 -0
- package/esm/system-prompt/persona.d.mts +52 -0
- package/esm/system-prompt/persona.d.mts.map +1 -0
- package/esm/system-prompt/persona.mjs +57 -0
- package/esm/system-prompt/persona.mjs.map +1 -0
- package/esm/system-prompt/render-placeholders.d.mts +31 -0
- package/esm/system-prompt/render-placeholders.d.mts.map +1 -0
- package/esm/system-prompt/render-placeholders.mjs +58 -0
- package/esm/system-prompt/render-placeholders.mjs.map +1 -0
- package/esm/system-prompt/system-prompt.d.mts +117 -0
- package/esm/system-prompt/system-prompt.d.mts.map +1 -0
- package/esm/system-prompt/system-prompt.mjs +137 -0
- package/esm/system-prompt/system-prompt.mjs.map +1 -0
- package/esm/tool/index.d.mts +1 -0
- package/esm/tool/index.mjs +3 -0
- package/esm/tool/tool.d.mts +64 -0
- package/esm/tool/tool.d.mts.map +1 -0
- package/esm/tool/tool.mjs +184 -0
- package/esm/tool/tool.mjs.map +1 -0
- package/esm/utils/compute-cost.d.mts +58 -0
- package/esm/utils/compute-cost.d.mts.map +1 -0
- package/esm/utils/compute-cost.mjs +87 -0
- package/esm/utils/compute-cost.mjs.map +1 -0
- package/esm/utils/extract-json-payload.d.mts +33 -0
- package/esm/utils/extract-json-payload.d.mts.map +1 -0
- package/esm/utils/extract-json-payload.mjs +39 -0
- package/esm/utils/extract-json-payload.mjs.map +1 -0
- package/esm/utils/generate-run-id.d.mts +20 -0
- package/esm/utils/generate-run-id.d.mts.map +1 -0
- package/esm/utils/generate-run-id.mjs +23 -0
- package/esm/utils/generate-run-id.mjs.map +1 -0
- package/esm/utils/index.d.mts +9 -0
- package/esm/utils/index.mjs +11 -0
- package/esm/utils/json-schema.d.mts +57 -0
- package/esm/utils/json-schema.d.mts.map +1 -0
- package/esm/utils/json-schema.mjs +89 -0
- package/esm/utils/json-schema.mjs.map +1 -0
- package/esm/utils/prepare-attachment-part.d.mts +36 -0
- package/esm/utils/prepare-attachment-part.d.mts.map +1 -0
- package/esm/utils/prepare-attachment-part.mjs +140 -0
- package/esm/utils/prepare-attachment-part.mjs.map +1 -0
- package/esm/utils/resolve-attachment.d.mts +33 -0
- package/esm/utils/resolve-attachment.d.mts.map +1 -0
- package/esm/utils/resolve-attachment.mjs +73 -0
- package/esm/utils/resolve-attachment.mjs.map +1 -0
- package/esm/utils/safe-json-parse.d.mts +14 -0
- package/esm/utils/safe-json-parse.d.mts.map +1 -0
- package/esm/utils/safe-json-parse.mjs +22 -0
- package/esm/utils/safe-json-parse.mjs.map +1 -0
- package/esm/utils/stamp-report-lineage.d.mts +61 -0
- package/esm/utils/stamp-report-lineage.d.mts.map +1 -0
- package/esm/utils/stamp-report-lineage.mjs +47 -0
- package/esm/utils/stamp-report-lineage.mjs.map +1 -0
- package/esm/utils/token-count.d.mts +15 -0
- package/esm/utils/token-count.d.mts.map +1 -0
- package/esm/utils/token-count.mjs +18 -0
- package/esm/utils/token-count.mjs.map +1 -0
- package/esm/workflow/as-tool.mjs +55 -0
- package/esm/workflow/as-tool.mjs.map +1 -0
- package/esm/workflow/cancellation.mjs +44 -0
- package/esm/workflow/cancellation.mjs.map +1 -0
- package/esm/workflow/emitter.mjs +40 -0
- package/esm/workflow/emitter.mjs.map +1 -0
- package/esm/workflow/engine.mjs +362 -0
- package/esm/workflow/engine.mjs.map +1 -0
- package/esm/workflow/index.d.mts +3 -0
- package/esm/workflow/index.mjs +5 -0
- package/esm/workflow/retry.mjs +32 -0
- package/esm/workflow/retry.mjs.map +1 -0
- package/esm/workflow/router.mjs +56 -0
- package/esm/workflow/router.mjs.map +1 -0
- package/esm/workflow/run-scoped-emitter.mjs +32 -0
- package/esm/workflow/run-scoped-emitter.mjs.map +1 -0
- package/esm/workflow/signature.d.mts +7 -0
- package/esm/workflow/signature.d.mts.map +1 -0
- package/esm/workflow/signature.mjs +34 -0
- package/esm/workflow/signature.mjs.map +1 -0
- package/esm/workflow/snapshot.mjs +71 -0
- package/esm/workflow/snapshot.mjs.map +1 -0
- package/esm/workflow/state.mjs +37 -0
- package/esm/workflow/state.mjs.map +1 -0
- package/esm/workflow/step-runner.mjs +371 -0
- package/esm/workflow/step-runner.mjs.map +1 -0
- package/esm/workflow/step.d.mts +19 -0
- package/esm/workflow/step.d.mts.map +1 -0
- package/esm/workflow/step.mjs +37 -0
- package/esm/workflow/step.mjs.map +1 -0
- package/esm/workflow/workflow.d.mts +12 -0
- package/esm/workflow/workflow.d.mts.map +1 -0
- package/esm/workflow/workflow.mjs +116 -0
- package/esm/workflow/workflow.mjs.map +1 -0
- package/llms-full.txt +2293 -0
- package/llms.txt +20 -0
- package/package.json +37 -0
- package/skills/README.md +53 -0
- package/skills/ai-basics/SKILL.md +95 -0
- package/skills/attach-ai-middleware/SKILL.md +184 -0
- package/skills/define-ai-tool/SKILL.md +186 -0
- package/skills/embed-text/SKILL.md +105 -0
- package/skills/handle-ai-errors/SKILL.md +194 -0
- package/skills/log-ai-calls/SKILL.md +141 -0
- package/skills/persist-ai-data/SKILL.md +207 -0
- package/skills/pick-ai-provider/SKILL.md +164 -0
- package/skills/run-ai-agent/SKILL.md +267 -0
- package/skills/run-ai-workflow/SKILL.md +258 -0
- package/skills/run-supervisor/SKILL.md +309 -0
- package/skills/write-system-prompt/SKILL.md +129 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdk-adapter.contract.d.mts","names":[],"sources":["../../../../../../@warlock.js/ai/src/contracts/sdk-adapter.contract.ts"],"mappings":";;;;;;;AAkBA;;;;;;;;;;;AAiBc;KAjBF,WAAA;EAkCuB,qEAhCjC,IAAA,UAqCc;EAnCd,WAAA,WA6CqC;EA3CrC,SAAA;EAsDmC;;;;;;;;EA7CnC,OAAA,GAAU,YAAY,EAkCF;EAAA,CAhCnB,GAAA;AAAA;;;;;AA2CkD;;;;;;;;;;UA1BpC,kBAAA;;;;;EAKf,KAAA,CAAM,MAAA,EAAQ,WAAA,GAAc,aAAA;;;;;;;;;EAU5B,KAAA,CAAM,IAAA,UAAc,KAAA,YAAiB,OAAA;;;;;;;;;;EAWrC,QAAA,EAAU,MAAA,EAAQ,cAAA,GAAiB,gBAAA;AAAA"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { AIError } from "../../errors/ai-error.mjs";
|
|
2
|
+
import { ToolCall } from "../result/tool-call.type.mjs";
|
|
3
|
+
import { LLMTrip } from "../result/llm-trip.type.mjs";
|
|
4
|
+
import { ToolEventMeta } from "../events/agent-events.type.mjs";
|
|
5
|
+
import { EventIdentity } from "../events/event-identity.type.mjs";
|
|
6
|
+
|
|
7
|
+
//#region ../../@warlock.js/ai/src/contracts/stream/stream-event.type.d.ts
|
|
8
|
+
/**
|
|
9
|
+
* Discriminated union of all events emitted during a streaming execution.
|
|
10
|
+
* Iterate over a StreamContract to receive these events.
|
|
11
|
+
*
|
|
12
|
+
* Event `type` strings use the same dot-notation as `AgentEventMap` keys
|
|
13
|
+
* so filtering logic in subscribers reads the same whether they came
|
|
14
|
+
* through `.on(...)` or the async iterator.
|
|
15
|
+
*
|
|
16
|
+
* Every variant also carries `EventIdentity` (`runId` / `rootRunId`)
|
|
17
|
+
* via the `StreamEvent` intersection, so stream consumers can
|
|
18
|
+
* correlate to a run the same way `.on(...)` subscribers do.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* for await (const event of stream) {
|
|
22
|
+
* if (event.type === "agent.trip.streaming") process.stdout.write(event.delta);
|
|
23
|
+
* else if (event.type === "agent.tool.called") console.log("Tool:", event.toolCall.name);
|
|
24
|
+
* else if (event.type === "agent.trip.completed") console.log("Trip done");
|
|
25
|
+
* }
|
|
26
|
+
*/
|
|
27
|
+
type StreamEventBody = {
|
|
28
|
+
type: "agent.starting";
|
|
29
|
+
input: string;
|
|
30
|
+
} | {
|
|
31
|
+
type: "agent.trip.started";
|
|
32
|
+
tripIndex: number;
|
|
33
|
+
input: string;
|
|
34
|
+
} | {
|
|
35
|
+
type: "agent.trip.streaming";
|
|
36
|
+
delta: string;
|
|
37
|
+
tripIndex: number;
|
|
38
|
+
} | {
|
|
39
|
+
type: "agent.tool.calling";
|
|
40
|
+
tool: ToolEventMeta;
|
|
41
|
+
input: unknown;
|
|
42
|
+
tripIndex: number;
|
|
43
|
+
} | {
|
|
44
|
+
type: "agent.tool.called";
|
|
45
|
+
toolCall: ToolCall;
|
|
46
|
+
tool: ToolEventMeta;
|
|
47
|
+
} | {
|
|
48
|
+
type: "agent.tool.failed";
|
|
49
|
+
tool: ToolEventMeta;
|
|
50
|
+
error: AIError;
|
|
51
|
+
tripIndex: number;
|
|
52
|
+
} | {
|
|
53
|
+
type: "agent.trip.completed";
|
|
54
|
+
trip: LLMTrip;
|
|
55
|
+
} | {
|
|
56
|
+
type: "agent.completed";
|
|
57
|
+
} | {
|
|
58
|
+
type: "agent.error";
|
|
59
|
+
error: AIError;
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* A `StreamEventBody` variant enriched with run identity. This is what
|
|
63
|
+
* `agent.stream()` consumers actually receive on each iteration.
|
|
64
|
+
*/
|
|
65
|
+
type StreamEvent = EventIdentity & StreamEventBody;
|
|
66
|
+
//#endregion
|
|
67
|
+
export { StreamEvent, StreamEventBody };
|
|
68
|
+
//# sourceMappingURL=stream-event.type.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream-event.type.d.mts","names":[],"sources":["../../../../../../../@warlock.js/ai/src/contracts/stream/stream-event.type.ts"],"mappings":";;;;;;;;;AAyBA;;;;;;;;;;;;;;;;;KAAY,eAAA;EACN,IAAA;EAAwB,KAAA;AAAA;EACxB,IAAA;EAA4B,SAAA;EAAmB,KAAA;AAAA;EAC/C,IAAA;EAA8B,KAAA;EAAe,SAAA;AAAA;EAE7C,IAAA;EACA,IAAA,EAAM,aAAA;EACN,KAAA;EACA,SAAA;AAAA;EAEA,IAAA;EAA2B,QAAA,EAAU,QAAA;EAAU,IAAA,EAAM,aAAA;AAAA;EAErD,IAAA;EACA,IAAA,EAAM,aAAA;EACN,KAAA,EAAO,OAAA;EACP,SAAA;AAAA;EAEA,IAAA;EAA8B,IAAA,EAAM,OAAA;AAAA;EACpC,IAAA;AAAA;EACA,IAAA;EAAqB,KAAA,EAAO,OAAA;AAAA;;;;;KAMtB,WAAA,GAAc,aAAA,GAAgB,eAAe"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { StreamEvent } from "./stream-event.type.mjs";
|
|
2
|
+
|
|
3
|
+
//#region ../../@warlock.js/ai/src/contracts/stream/stream.contract.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* An async iterable stream that also exposes a result promise.
|
|
6
|
+
* Returned by every primitive's `stream()` method.
|
|
7
|
+
*
|
|
8
|
+
* Parameterized by **`TResult`** (the value `result` resolves to —
|
|
9
|
+
* `AgentResult`, `WorkflowResult`, `SupervisorResult`, etc.) and
|
|
10
|
+
* **`TEvent`** (the discriminated union iterated over). `TEvent`
|
|
11
|
+
* defaults to the agent's `StreamEvent` so existing agent consumers
|
|
12
|
+
* keep working unchanged; primitives whose event surface differs
|
|
13
|
+
* (e.g. `SupervisorStreamEvent` in `supervisor.stream()`) parameterize
|
|
14
|
+
* the second slot to surface their own events to consumers.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* // Agent stream — TEvent defaults to StreamEvent
|
|
18
|
+
* const stream = agent.stream("Explain quantum computing");
|
|
19
|
+
* for await (const event of stream) {
|
|
20
|
+
* if (event.type === "agent.trip.streaming") process.stdout.write(event.delta);
|
|
21
|
+
* }
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* // Supervisor stream — TEvent narrowed to SupervisorStreamEvent
|
|
25
|
+
* const stream = supportBot.stream(message);
|
|
26
|
+
* for await (const event of stream) {
|
|
27
|
+
* if (event.type === "supervisor.agent.streaming") process.stdout.write(event.delta);
|
|
28
|
+
* }
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* // Or await just the final result
|
|
32
|
+
* const result = await stream.result;
|
|
33
|
+
* console.log(result.usage.total, "tokens used");
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* // Attach named handlers instead of iterating
|
|
37
|
+
* const stream = agent.stream("Write a poem");
|
|
38
|
+
* stream
|
|
39
|
+
* .on({ "agent.trip.streaming": ({ delta }) => process.stdout.write(delta) })
|
|
40
|
+
* .on({ "agent.completed": () => console.log("Done!") });
|
|
41
|
+
* const result = await stream.result;
|
|
42
|
+
*/
|
|
43
|
+
interface StreamContract<TResult, TEvent extends {
|
|
44
|
+
type: string;
|
|
45
|
+
} = StreamEvent> extends AsyncIterable<TEvent> {
|
|
46
|
+
/**
|
|
47
|
+
* Promise that resolves to the full execution result once streaming completes.
|
|
48
|
+
* Rejects if the execution fails.
|
|
49
|
+
*/
|
|
50
|
+
result: Promise<TResult>;
|
|
51
|
+
/**
|
|
52
|
+
* Attach event handlers by event type. Returns `this` for chaining.
|
|
53
|
+
* Handlers registered here fire in addition to iteration.
|
|
54
|
+
*/
|
|
55
|
+
on(handlers: Partial<{ [K in TEvent["type"]]: (event: Extract<TEvent, {
|
|
56
|
+
type: K;
|
|
57
|
+
}>) => void }>): this;
|
|
58
|
+
}
|
|
59
|
+
//#endregion
|
|
60
|
+
export { StreamContract };
|
|
61
|
+
//# sourceMappingURL=stream.contract.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream.contract.d.mts","names":[],"sources":["../../../../../../../@warlock.js/ai/src/contracts/stream/stream.contract.ts"],"mappings":";;;;;AAyCA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBM;;UAjBW,cAAA;EAEE,IAAA;AAAA,IAAiB,WAAA,UAC1B,aAAA,CAAc,MAAA;;;;;EAKtB,MAAA,EAAQ,OAAA,CAAQ,OAAA;;;;;EAMhB,EAAA,CACE,QAAA,EAAU,OAAA,SACF,MAAA,YAAkB,KAAA,EAAO,OAAA,CAAQ,MAAA;IAAU,IAAA,EAAM,CAAA;EAAA;AAAA"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
//#region ../../@warlock.js/ai/src/contracts/streaming-tool-guard-config.type.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Configuration for the stream-time tool-call guard.
|
|
4
|
+
*
|
|
5
|
+
* **What the guard does.** Cheap/fast models occasionally emit the
|
|
6
|
+
* structured input for a registered tool as **literal text in the
|
|
7
|
+
* content stream** instead of as a structured tool-call. Without
|
|
8
|
+
* intervention, the customer watches raw JSON build up
|
|
9
|
+
* character-by-character on screen — every `delta` already shipped
|
|
10
|
+
* over the wire before anyone can react. The guard sits at the
|
|
11
|
+
* delta-processing seam inside the agent loop, scans incoming text
|
|
12
|
+
* for a JSON envelope that matches a registered tool's name + schema,
|
|
13
|
+
* and — when matched — synthesizes a real tool call while dropping
|
|
14
|
+
* the leaked JSON from visible text.
|
|
15
|
+
*
|
|
16
|
+
* **Opt-in by design.** Absent = off (faithful relay, no mutation).
|
|
17
|
+
* Empty object `{}` = on with defaults. Mutating the stream behind a
|
|
18
|
+
* developer's back violates least surprise — set this explicitly when
|
|
19
|
+
* the agent has tools that the model has been observed to leak.
|
|
20
|
+
*
|
|
21
|
+
* **What survives the guard.**
|
|
22
|
+
* - Legitimate prose streams verbatim; the guard only engages when a
|
|
23
|
+
* `{` or ```` ```json ```` opener appears in the text channel.
|
|
24
|
+
* - A buffered JSON blob that does NOT match the named-envelope
|
|
25
|
+
* pattern (envelope `{ name|tool, arguments|input }` whose tool is
|
|
26
|
+
* registered AND whose args validate against the tool's schema) is
|
|
27
|
+
* flushed back to the consumer as text — the developer's "give me
|
|
28
|
+
* a JSON config" prompt is preserved.
|
|
29
|
+
*
|
|
30
|
+
* **Limitations.**
|
|
31
|
+
* - Named envelope only. Bare-object matching is unsafe while tool
|
|
32
|
+
* input schemas can be permissive (a `v.record(v.any())` matches
|
|
33
|
+
* any object); future tier, not in v1.
|
|
34
|
+
* - Recovery introduces a delay equal to "time to emit the suspect
|
|
35
|
+
* JSON" — the customer sees prose up to the `{`, then waits while
|
|
36
|
+
* the buffer fills, then either sees nothing (recovered) or the
|
|
37
|
+
* JSON in one shot (flushed). Negligible in normal chat; visible
|
|
38
|
+
* only when the agent's primary output IS a JSON blob the user
|
|
39
|
+
* asked for.
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* // Always on for this agent, defaults
|
|
43
|
+
* const talker = agent({
|
|
44
|
+
* model,
|
|
45
|
+
* tools: [suggestFollowupsTool],
|
|
46
|
+
* streamingToolGuard: {},
|
|
47
|
+
* });
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* // Per-call override — disable for a one-off JSON-extraction call
|
|
51
|
+
* await agent.execute(input, {
|
|
52
|
+
* streamingToolGuard: undefined,
|
|
53
|
+
* });
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* // Tighter buffer cap for cost-sensitive deployments
|
|
57
|
+
* const talker = agent({
|
|
58
|
+
* model,
|
|
59
|
+
* tools,
|
|
60
|
+
* streamingToolGuard: { maxBufferBytes: 2048 },
|
|
61
|
+
* });
|
|
62
|
+
*/
|
|
63
|
+
type StreamingToolGuardConfig = {
|
|
64
|
+
/**
|
|
65
|
+
* Hard cap on the bytes the guard will accumulate before deciding
|
|
66
|
+
* a suspect buffer is not envelope-shaped after all. When the cap
|
|
67
|
+
* is hit, the buffer flushes to the consumer as text and the guard
|
|
68
|
+
* resets to pass-through.
|
|
69
|
+
*
|
|
70
|
+
* Defaults to `4096`. Real envelope payloads observed in production
|
|
71
|
+
* leaks have been under 1 KB; the cap is a safety valve against an
|
|
72
|
+
* adversarial / runaway buffer growing without bound.
|
|
73
|
+
*/
|
|
74
|
+
maxBufferBytes?: number;
|
|
75
|
+
};
|
|
76
|
+
//#endregion
|
|
77
|
+
export { StreamingToolGuardConfig };
|
|
78
|
+
//# sourceMappingURL=streaming-tool-guard-config.type.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streaming-tool-guard-config.type.d.mts","names":[],"sources":["../../../../../../@warlock.js/ai/src/contracts/streaming-tool-guard-config.type.ts"],"mappings":";;AA6DA;;;;AAWgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAXJ,wBAAA;;;;;;;;;;;EAWV,cAAc;AAAA"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { Message } from "../conversation-message.type.mjs";
|
|
2
|
+
import { AgentContract } from "../agent/agent.contract.mjs";
|
|
3
|
+
import { RouteContext } from "./route-context.type.mjs";
|
|
4
|
+
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
5
|
+
|
|
6
|
+
//#region ../../@warlock.js/ai/src/contracts/supervisor/ack-entry.type.d.ts
|
|
7
|
+
/**
|
|
8
|
+
* Receptionist callback — pure code that produces an acknowledgment
|
|
9
|
+
* slice. Bare-callback shorthand for `AckRunEntry`. Use when the ack
|
|
10
|
+
* doesn't need an LLM at all (templated greetings, deterministic
|
|
11
|
+
* hedges based on `ctx.input` keywords, etc.).
|
|
12
|
+
*/
|
|
13
|
+
type AckCallback<TState = Record<string, unknown>> = (ctx: RouteContext<TState>) => unknown | Promise<unknown>;
|
|
14
|
+
/**
|
|
15
|
+
* Receptionist entry — LLM-driven form. Symmetric with `IntentEntry`,
|
|
16
|
+
* gated to ack-relevant fields:
|
|
17
|
+
*
|
|
18
|
+
* - `agent` — the receptionist agent. Typically a small/fast model
|
|
19
|
+
* on a separate provider so its first-token latency genuinely
|
|
20
|
+
* undercuts the slow path.
|
|
21
|
+
* - `placeholders` — values fed into the agent's `systemPrompt` template.
|
|
22
|
+
* - `input` — overrides what the agent receives as its user message.
|
|
23
|
+
* - `output` — Standard Schema; strip-validates the slice before merge.
|
|
24
|
+
*/
|
|
25
|
+
type AckEntry<TState = Record<string, unknown>> = {
|
|
26
|
+
agent: AgentContract<unknown>;
|
|
27
|
+
placeholders?: (ctx: RouteContext<TState>) => Record<string, unknown>;
|
|
28
|
+
input?: (ctx: RouteContext<TState>) => string;
|
|
29
|
+
output?: StandardSchemaV1<unknown>;
|
|
30
|
+
/**
|
|
31
|
+
* Custom history slicer for the ack agent. When supplied, REPLACES
|
|
32
|
+
* the default (which is empty — `historyWindow.ack` defaults to `0`,
|
|
33
|
+
* since receptionists rarely need scroll-back). Override this when
|
|
34
|
+
* the ack genuinely needs a turn or two of context.
|
|
35
|
+
*
|
|
36
|
+
* Precedence: entry `history` callback > `historyWindow.ack` >
|
|
37
|
+
* empty.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ack: {
|
|
41
|
+
* agent: ackAgent,
|
|
42
|
+
* history: (ctx) => ctx.history.slice(-2),
|
|
43
|
+
* }
|
|
44
|
+
*/
|
|
45
|
+
history?: (ctx: RouteContext<TState>) => Message[] | ReadonlyArray<Message>;
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Receptionist entry — callback form. Same shape as `AckEntry` but
|
|
49
|
+
* with `run` instead of `agent` — pure code, no LLM call. Mirrors
|
|
50
|
+
* the `IntentRunEntry` / `IntentEntry` split on the intents map.
|
|
51
|
+
*/
|
|
52
|
+
type AckRunEntry<TState = Record<string, unknown>> = {
|
|
53
|
+
run: AckCallback<TState>;
|
|
54
|
+
output?: StandardSchemaV1<unknown>;
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Union of accepted shapes for the supervisor's `ack` config field.
|
|
58
|
+
* Three forms in order of conciseness:
|
|
59
|
+
*
|
|
60
|
+
* 1. **`AckEntry`** — `{ agent, placeholders?, input?, output? }`.
|
|
61
|
+
* LLM-driven receptionist (e.g. one that classifies the request
|
|
62
|
+
* and weaves the category into the ack: "Looking into your *shipping*
|
|
63
|
+
* question now"). Use a meaningfully faster model + provider than
|
|
64
|
+
* the slow path the ack is masking — same model = same queue,
|
|
65
|
+
* no win.
|
|
66
|
+
*
|
|
67
|
+
* 2. **`AckRunEntry`** — `{ run, output? }`. Pure-code callback that
|
|
68
|
+
* returns the slice. Use for templated/deterministic acks that
|
|
69
|
+
* don't need an LLM.
|
|
70
|
+
*
|
|
71
|
+
* 3. **`AckCallback`** — bare `(ctx) => slice`. Shorthand for the
|
|
72
|
+
* pure-code form when no schema is declared.
|
|
73
|
+
*
|
|
74
|
+
* **Receptionist mental model.** Whatever form, the ack acknowledges
|
|
75
|
+
* receipt and indicates direction; it does NOT make decisions or
|
|
76
|
+
* promise outcomes. The downstream specialists own the actual answer.
|
|
77
|
+
*
|
|
78
|
+
* **Runtime semantics:**
|
|
79
|
+
* - Fires only when `iteration === 0 && !resumeFrom`. Resumes don't
|
|
80
|
+
* re-emit (the user already saw the original ack).
|
|
81
|
+
* - Runs concurrently with phase A (router/route decision).
|
|
82
|
+
* - Tokens stream via `supervisor.ack.streaming` (LLM form only —
|
|
83
|
+
* pure-code acks settle synchronously and emit just `.completed`).
|
|
84
|
+
* - Output strip-merges into `state` BEFORE dispatched branches —
|
|
85
|
+
* specialist outputs override the receptionist on key collision.
|
|
86
|
+
* - Loses gracefully — if ack hasn't settled by the time the
|
|
87
|
+
* iteration is otherwise ready to finalize, the slice drops with
|
|
88
|
+
* a warning log; the run completes regardless. Schema's
|
|
89
|
+
* `.optional()` covers it. Non-blocking by design.
|
|
90
|
+
* - Failure surfaces on `report.ack.error` but never aborts the run.
|
|
91
|
+
* - Usage rolls up into the supervisor's total; the ack agent's full
|
|
92
|
+
* report node lives in `result.report.children[]`.
|
|
93
|
+
*/
|
|
94
|
+
type AckConfig<TState = Record<string, unknown>> = AckEntry<TState> | AckRunEntry<TState> | AckCallback<TState>;
|
|
95
|
+
//#endregion
|
|
96
|
+
export { AckCallback, AckConfig, AckEntry, AckRunEntry };
|
|
97
|
+
//# sourceMappingURL=ack-entry.type.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ack-entry.type.d.mts","names":[],"sources":["../../../../../../../@warlock.js/ai/src/contracts/supervisor/ack-entry.type.ts"],"mappings":";;;;;;;;AAWA;;;;KAAY,WAAA,UAAqB,MAAA,sBAC/B,GAAA,EAAK,YAAA,CAAa,MAAA,gBACL,OAAA;;;;;;;;;;;;KAaH,QAAA,UAAkB,MAAA;EAC5B,KAAA,EAAO,aAAA;EACP,YAAA,IAAgB,GAAA,EAAK,YAAA,CAAa,MAAA,MAAY,MAAA;EAC9C,KAAA,IAAS,GAAA,EAAK,YAAA,CAAa,MAAA;EAC3B,MAAA,GAAS,gBAAA;EAHF;;;;;;;;;;;;;;;EAmBP,OAAA,IAAW,GAAA,EAAK,YAAA,CAAa,MAAA,MAAY,OAAA,KAAY,aAAA,CAAc,OAAA;AAAA;;;;;;KAQzD,WAAA,UAAqB,MAAA;EAC/B,GAAA,EAAK,WAAA,CAAY,MAAA;EACjB,MAAA,GAAS,gBAAA;AAAA;;;;;;;;;;;;AAViE;AAQ5E;;;;;;;;;;;;;;;;;AAE2B;AAyC3B;;;;;;;;KAAY,SAAA,UAAmB,MAAA,qBAC3B,QAAA,CAAS,MAAA,IACT,WAAA,CAAY,MAAA,IACZ,WAAA,CAAY,MAAA"}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import { Message } from "../conversation-message.type.mjs";
|
|
2
|
+
import { AIError } from "../../errors/ai-error.mjs";
|
|
3
|
+
import { Usage } from "../result/usage.type.mjs";
|
|
4
|
+
import { StreamContract } from "../stream/stream.contract.mjs";
|
|
5
|
+
import { AgentContract } from "../agent/agent.contract.mjs";
|
|
6
|
+
import { EndSentinel } from "../end.type.mjs";
|
|
7
|
+
import { SupervisorInput } from "./supervisor-input.type.mjs";
|
|
8
|
+
import { StreamableExecutable, SupervisableExecutable, SupervisableExecuteOptions, SupervisableResult } from "./dispatch-context.type.mjs";
|
|
9
|
+
|
|
10
|
+
//#region ../../@warlock.js/ai/src/contracts/supervisor/classifier-context.type.d.ts
|
|
11
|
+
/**
|
|
12
|
+
* Locked output shape every classifier must produce — agent or callback
|
|
13
|
+
* form. `intent` is required and must match a key in the supervisor's
|
|
14
|
+
* `intents` map; `reasoning` and `confidence` are optional universal
|
|
15
|
+
* telemetry fields.
|
|
16
|
+
*
|
|
17
|
+
* Devs may extend this with arbitrary additional fields by declaring
|
|
18
|
+
* a richer output schema on their classifier agent — those fields
|
|
19
|
+
* strip-merge into supervisor state per the supervisor's `output`
|
|
20
|
+
* schema. The framework only reserves the three fields below.
|
|
21
|
+
*
|
|
22
|
+
* **Confidence caveat.** LLM-reported `confidence` values are
|
|
23
|
+
* notoriously poorly calibrated — a model that says `0.95` is wrong
|
|
24
|
+
* roughly as often as one that says `0.85`. Use it as a soft signal
|
|
25
|
+
* (alongside reasoning inspection, prior state, deterministic checks)
|
|
26
|
+
* rather than as a hard threshold for control flow.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* // Output schema for a customer-support classifier:
|
|
30
|
+
* v.object({
|
|
31
|
+
* intent: v.enum(["billing", "shipping", "smalltalk"]),
|
|
32
|
+
* reasoning: v.string().optional(),
|
|
33
|
+
* confidence: v.number().optional(),
|
|
34
|
+
* // Domain-specific extension — strip-merges into state alongside.
|
|
35
|
+
* language: v.string().optional(),
|
|
36
|
+
* })
|
|
37
|
+
*/
|
|
38
|
+
type ClassifierOutput = {
|
|
39
|
+
/** Required — must match a key in the supervisor's `intents` map. */intent: string; /** Optional reasoning trail — telemetry / refine signal. */
|
|
40
|
+
reasoning?: string;
|
|
41
|
+
/**
|
|
42
|
+
* Optional self-reported confidence (0–1). See "Confidence caveat"
|
|
43
|
+
* above — LLM-reported values are not well calibrated.
|
|
44
|
+
*/
|
|
45
|
+
confidence?: number;
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Result of a `classifier.refine` callback (Phase 7 / decisions §37).
|
|
49
|
+
* Lets the dev intercept the classifier's output and either (a) accept
|
|
50
|
+
* it as-is, (b) override the dispatched intent, (c) merge additional
|
|
51
|
+
* state, or (d) halt the run before any dispatch.
|
|
52
|
+
*
|
|
53
|
+
* - `undefined` → use classifier output unchanged.
|
|
54
|
+
* - `END` (bare sentinel) → terminate the run; no dispatch, no slice
|
|
55
|
+
* merged from refine. The run completes with
|
|
56
|
+
* `terminatedBy: "classifier"`.
|
|
57
|
+
* - `{ intent: "name", ...slice }` → override intent + shallow-merge
|
|
58
|
+
* slice into state. `intent` must match a registered intents key
|
|
59
|
+
* or runtime throws `SUPERVISOR_INVALID_ROUTE`.
|
|
60
|
+
* - `{ intent: END, ...slice }` → terminate AFTER merging slice into
|
|
61
|
+
* state. Useful for "halt with reason" patterns where the dev
|
|
62
|
+
* wants the rejection reason to surface in `result.data`.
|
|
63
|
+
* - `{ ...slice }` (no `intent` key) → keep classifier's intent;
|
|
64
|
+
* shallow-merge slice into state.
|
|
65
|
+
*/
|
|
66
|
+
type ClassifierRefineResult = undefined | EndSentinel | (Record<string, unknown> & {
|
|
67
|
+
intent?: string | EndSentinel;
|
|
68
|
+
});
|
|
69
|
+
/**
|
|
70
|
+
* Read-only context passed to a classifier callback or to a
|
|
71
|
+
* classifier agent's per-call resolvers (`placeholders`, `input`,
|
|
72
|
+
* `history`). Phase 7 / decisions §37.
|
|
73
|
+
*
|
|
74
|
+
* Mirrors `RouteContext` for the iter-0 prelude with one critical
|
|
75
|
+
* exclusion: dispatch helpers (`intents.X.execute()` / `run` /
|
|
76
|
+
* `stream`) are NOT exposed at classifier time — registered intents
|
|
77
|
+
* have not dispatched yet; pre-running them from the classifier
|
|
78
|
+
* would be confusing. The refine hook gets `run` / `stream` so the
|
|
79
|
+
* "secondary classifier" pattern works (call another agent inline
|
|
80
|
+
* to validate or override the primary classification).
|
|
81
|
+
*/
|
|
82
|
+
type ClassifierContext<TState = Record<string, unknown>> = {
|
|
83
|
+
/** Always `0` — classifier runs as the iter-0 prelude. */iteration: 0; /** The supervisor's original `execute(input)` value. */
|
|
84
|
+
input: SupervisorInput; /** Empty `{}` at classifier time — no intent has dispatched yet. */
|
|
85
|
+
state: TState; /** Read-only request-scoped bag from `execute(input, { context })`. */
|
|
86
|
+
context: Readonly<Record<string, unknown>>; /** Prior conversation messages from `execute(input, { history })`. */
|
|
87
|
+
history: ReadonlyArray<Message>; /** Cancellation signal — propagated from the `execute()` caller. */
|
|
88
|
+
signal: AbortSignal; /** Resolved natural-language objective from `SupervisorConfig.goal`. */
|
|
89
|
+
goal?: string;
|
|
90
|
+
};
|
|
91
|
+
/**
|
|
92
|
+
* Context passed to `classifier.refine`. Same surface as
|
|
93
|
+
* {@link ClassifierContext} plus the just-resolved classifier output
|
|
94
|
+
* on `result.data`, plus `run` / `stream` (Phase 6 inline supervised
|
|
95
|
+
* execution) so refine can spin up a secondary classifier or
|
|
96
|
+
* validator without leaving the supervised flow.
|
|
97
|
+
*/
|
|
98
|
+
type ClassifierRefineContext<TState = Record<string, unknown>> = ClassifierContext<TState> & {
|
|
99
|
+
/** The classifier's just-resolved output, ready to refine. */result: {
|
|
100
|
+
data: ClassifierOutput;
|
|
101
|
+
}; /** Inline execute under supervision — see Phase 6 / decisions §36. */
|
|
102
|
+
run: (executable: SupervisableExecutable, input: unknown, options?: SupervisableExecuteOptions) => Promise<SupervisableResult>; /** Inline stream under supervision — see Phase 6 / decisions §36. */
|
|
103
|
+
stream: (executable: StreamableExecutable, input: unknown, options?: SupervisableExecuteOptions) => StreamContract<SupervisableResult>;
|
|
104
|
+
};
|
|
105
|
+
/**
|
|
106
|
+
* Object form of a classifier entry — agent variant. Use when you
|
|
107
|
+
* need to override per-call `placeholders`, `input`, or `history`,
|
|
108
|
+
* or attach a `refine` post-process hook.
|
|
109
|
+
*/
|
|
110
|
+
type ClassifierAgentEntry<TState = Record<string, unknown>> = {
|
|
111
|
+
agent: AgentContract<unknown>; /** Per-call placeholders for the agent's systemPrompt template. */
|
|
112
|
+
placeholders?: (ctx: ClassifierContext<TState>) => Record<string, unknown>; /** Per-call input override; defaults to the supervisor's `ctx.input`. */
|
|
113
|
+
input?: (ctx: ClassifierContext<TState>) => string;
|
|
114
|
+
/**
|
|
115
|
+
* Per-call history slicer. Defaults to the supervisor's
|
|
116
|
+
* `historyWindow.agents` slice when omitted.
|
|
117
|
+
*/
|
|
118
|
+
history?: (ctx: ClassifierContext<TState>) => Message[] | ReadonlyArray<Message>;
|
|
119
|
+
/**
|
|
120
|
+
* Optional post-classify hook. Receives the classifier's output on
|
|
121
|
+
* `ctx.result.data`; can override intent, merge state, or halt
|
|
122
|
+
* via `END`.
|
|
123
|
+
*/
|
|
124
|
+
refine?: (ctx: ClassifierRefineContext<TState>) => Promise<ClassifierRefineResult> | ClassifierRefineResult;
|
|
125
|
+
};
|
|
126
|
+
/**
|
|
127
|
+
* Object form of a classifier entry — pure-code callback variant.
|
|
128
|
+
* Use when classification is deterministic (regex, keyword match,
|
|
129
|
+
* prior-state inspection) and an LLM call would be wasteful.
|
|
130
|
+
*/
|
|
131
|
+
type ClassifierRunEntry<TState = Record<string, unknown>> = {
|
|
132
|
+
run: (ctx: ClassifierContext<TState>) => Promise<ClassifierOutput> | ClassifierOutput;
|
|
133
|
+
refine?: (ctx: ClassifierRefineContext<TState>) => Promise<ClassifierRefineResult> | ClassifierRefineResult;
|
|
134
|
+
};
|
|
135
|
+
/**
|
|
136
|
+
* Bare-callback shorthand — when classification is a pure function
|
|
137
|
+
* with no need for a `refine` hook or other entry-form fields.
|
|
138
|
+
*/
|
|
139
|
+
type ClassifierCallback<TState = Record<string, unknown>> = (ctx: ClassifierContext<TState>) => Promise<ClassifierOutput> | ClassifierOutput;
|
|
140
|
+
/**
|
|
141
|
+
* Accepted shapes for `SupervisorConfig.classifier` (Phase 7 /
|
|
142
|
+
* decisions §37). Mirrors the same flexibility as `intents` and
|
|
143
|
+
* `router`:
|
|
144
|
+
*
|
|
145
|
+
* - `AgentContract` — bare agent shorthand. Output is parsed via
|
|
146
|
+
* the agent's own typed output schema.
|
|
147
|
+
* - `ClassifierCallback` — bare function shorthand; deterministic
|
|
148
|
+
* classification.
|
|
149
|
+
* - `ClassifierAgentEntry` — full object form for an agent
|
|
150
|
+
* classifier with overrides + optional `refine`.
|
|
151
|
+
* - `ClassifierRunEntry` — full object form for a callback
|
|
152
|
+
* classifier with optional `refine`.
|
|
153
|
+
*
|
|
154
|
+
* Mutually exclusive with `initialAgent` at the factory level —
|
|
155
|
+
* both answer "what runs first?" and coexistence is meaningless.
|
|
156
|
+
* Composes with `router`, `route`, `evaluate`, `ack`,
|
|
157
|
+
* `intent.next`, and Phases 5/6 features.
|
|
158
|
+
*/
|
|
159
|
+
type ClassifierConfig<TState = Record<string, unknown>> = AgentContract<unknown> | ClassifierCallback<TState> | ClassifierAgentEntry<TState> | ClassifierRunEntry<TState>;
|
|
160
|
+
/**
|
|
161
|
+
* Forensic record of a classifier run, surfaced on
|
|
162
|
+
* `SupervisorReport.classifier` (Phase 7). Sibling of `report.ack` —
|
|
163
|
+
* complete forensic detail regardless of what strip-merged into state.
|
|
164
|
+
*
|
|
165
|
+
* `intent` here is the FINAL intent dispatched (post-refine override).
|
|
166
|
+
* `refined` indicates whether the refine hook changed something.
|
|
167
|
+
* Original classifier output is captured on `raw` for debugging.
|
|
168
|
+
*/
|
|
169
|
+
type ClassifierSnapshot = {
|
|
170
|
+
/** Final intent dispatched (post-refine), or absent when refine returned END before any dispatch. */intent?: string;
|
|
171
|
+
reasoning?: string;
|
|
172
|
+
confidence?: number; /** True when refine returned a non-undefined value that overrode or augmented the classifier output. */
|
|
173
|
+
refined: boolean; /** True when refine (or classifier-only mode) halted before any intent dispatched. */
|
|
174
|
+
halted: boolean; /** Original classifier output (pre-refine) — preserved for debugging. */
|
|
175
|
+
raw: ClassifierOutput;
|
|
176
|
+
startedAt: string;
|
|
177
|
+
endedAt: string;
|
|
178
|
+
duration: number;
|
|
179
|
+
usage: Usage;
|
|
180
|
+
/**
|
|
181
|
+
* Set when the classifier itself errored OR refine threw. Run is
|
|
182
|
+
* aborted in either case — the supervisor terminates with this
|
|
183
|
+
* error on `result.error`.
|
|
184
|
+
*/
|
|
185
|
+
error?: AIError;
|
|
186
|
+
};
|
|
187
|
+
//#endregion
|
|
188
|
+
export { ClassifierAgentEntry, ClassifierCallback, ClassifierConfig, ClassifierContext, ClassifierOutput, ClassifierRefineContext, ClassifierRefineResult, ClassifierRunEntry, ClassifierSnapshot };
|
|
189
|
+
//# sourceMappingURL=classifier-context.type.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classifier-context.type.d.mts","names":[],"sources":["../../../../../../../@warlock.js/ai/src/contracts/supervisor/classifier-context.type.ts"],"mappings":";;;;;;;;;;;;AAyCA;;;;;;;;AASY;AAsBZ;;;;;;;;;;;;;AAG8D;AAe9D;;KAjDY,gBAAA;EAiD2B,qEA/CrC,MAAA,UAqDO;EAnDP,SAAA;EAqDS;;;;EAhDT,UAAA;AAAA;;;;;;;;;;;;;;;;;;AAsDI;AAUN;KA1CY,sBAAA,eAER,WAAA,IACC,MAAA;EAA4B,MAAA,YAAkB,WAAA;AAAA;;;;;;;;;;;;;;KAevC,iBAAA,UAA2B,MAAA;EAwBM,0DAtB3C,SAAA,KAuBkB;EArBlB,KAAA,EAAO,eAAA,EAuBK;EArBZ,KAAA,EAAO,MAAA,EAuBL;EArBF,OAAA,EAAS,QAAA,CAAS,MAAA,oBAsBd;EApBJ,OAAA,EAAS,aAAA,CAAc,OAAA,GAsBT;EApBd,MAAA,EAAQ,WAAA,EAqBD;EAnBP,IAAA;AAAA;;;;;;;;KAUU,uBAAA,UAAiC,MAAA,qBAC3C,iBAAA,CAAkB,MAAA;EAcsB,8DAZtC,MAAA;IAAU,IAAA,EAAM,gBAAA;EAAA,GAoBsB;EAlBtC,GAAA,GACE,UAAA,EAAY,sBAAA,EACZ,KAAA,WACA,OAAA,GAAU,0BAAA,KACP,OAAA,CAAQ,kBAAA,GAiBwB;EAfrC,MAAA,GACE,UAAA,EAAY,oBAAA,EACZ,KAAA,WACA,OAAA,GAAU,0BAAA,KACP,cAAA,CAAe,kBAAA;AAAA;;;;;;KAQZ,oBAAA,UAA8B,MAAA;EACxC,KAAA,EAAO,aAAA,WAgBwB;EAd/B,YAAA,IAAgB,GAAA,EAAK,iBAAA,CAAkB,MAAA,MAAY,MAAA,mBAetC;EAbb,KAAA,IAAS,GAAA,EAAK,iBAAA,CAAkB,MAAA;EAaO;;;;EARvC,OAAA,IAAW,GAAA,EAAK,iBAAA,CAAkB,MAAA,MAAY,OAAA,KAAY,aAAA,CAAc,OAAA;EATxE;;;;;EAeA,MAAA,IACE,GAAA,EAAK,uBAAA,CAAwB,MAAA,MAC1B,OAAA,CAAQ,sBAAA,IAA0B,sBAAA;AAAA;;;;;;KAQ7B,kBAAA,UAA4B,MAAA;EACtC,GAAA,GACE,GAAA,EAAK,iBAAA,CAAkB,MAAA,MACpB,OAAA,CAAQ,gBAAA,IAAoB,gBAAA;EACjC,MAAA,IACE,GAAA,EAAK,uBAAA,CAAwB,MAAA,MAC1B,OAAA,CAAQ,sBAAA,IAA0B,sBAAA;AAAA;;;;;KAO7B,kBAAA,UAA4B,MAAA,sBACtC,GAAA,EAAK,iBAAA,CAAkB,MAAA,MACpB,OAAA,CAAQ,gBAAA,IAAoB,gBAAA;;;;;;AAvB8B;AAQ/D;;;;;;;;;;;;;KAoCY,gBAAA,UAA0B,MAAA,qBAClC,aAAA,YACA,kBAAA,CAAmB,MAAA,IACnB,oBAAA,CAAqB,MAAA,IACrB,kBAAA,CAAmB,MAAA;;;;;;;;;;KAWX,kBAAA;EAhDuB,qGAkDjC,MAAA;EACA,SAAA;EACA,UAAA,WAlDE;EAoDF,OAAA,WAnDa;EAqDb,MAAA,WArD6D;EAuD7D,GAAA,EAAK,gBAAA;EACL,SAAA;EACA,OAAA;EACA,QAAA;EACA,KAAA,EAAO,KAAA;EAnDgB;;;;;EAyDvB,KAAA,GAAQ,OAAA;AAAA"}
|