@warlock.js/core 4.4.0 → 4.5.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/CHANGELOG.md +45 -5
- package/README.md +47 -11
- package/esm/ai/src/agent/agent-input-builder.mjs +132 -0
- package/esm/ai/src/agent/agent-input-builder.mjs.map +1 -0
- package/esm/ai/src/agent/agent-log-event.mjs +101 -0
- package/esm/ai/src/agent/agent-log-event.mjs.map +1 -0
- package/esm/ai/src/agent/agent-stream.mjs +82 -0
- package/esm/ai/src/agent/agent-stream.mjs.map +1 -0
- package/esm/ai/src/agent/agent-to-stream-event.mjs +86 -0
- package/esm/ai/src/agent/agent-to-stream-event.mjs.map +1 -0
- package/esm/ai/src/agent/agent.mjs +1157 -0
- package/esm/ai/src/agent/agent.mjs.map +1 -0
- package/esm/ai/src/agent/index.mjs +5 -0
- package/esm/ai/src/agent/json-stream-guard.mjs +400 -0
- package/esm/ai/src/agent/json-stream-guard.mjs.map +1 -0
- package/esm/ai/src/agent/spawn-sub-agent.mjs +68 -0
- package/esm/ai/src/agent/spawn-sub-agent.mjs.map +1 -0
- package/esm/ai/src/ai.mjs +155 -0
- package/esm/ai/src/ai.mjs.map +1 -0
- package/esm/ai/src/batch/batch.mjs +198 -0
- package/esm/ai/src/batch/batch.mjs.map +1 -0
- package/esm/ai/src/batch/index.mjs +3 -0
- package/esm/ai/src/batch/run-batch-item.mjs +100 -0
- package/esm/ai/src/batch/run-batch-item.mjs.map +1 -0
- package/esm/ai/src/batch/run-with-concurrency.mjs +39 -0
- package/esm/ai/src/batch/run-with-concurrency.mjs.map +1 -0
- package/esm/ai/src/checkpoint/memory.mjs +0 -0
- package/esm/ai/src/checkpoint/memory.mjs.map +1 -0
- package/esm/ai/src/checkpoint/pg.mjs +265 -0
- package/esm/ai/src/checkpoint/pg.mjs.map +1 -0
- package/esm/ai/src/checkpoint/redis.mjs +200 -0
- package/esm/ai/src/checkpoint/redis.mjs.map +1 -0
- package/esm/ai/src/config.mjs +59 -0
- package/esm/ai/src/config.mjs.map +1 -0
- package/esm/ai/src/contracts/end.type.mjs +47 -0
- package/esm/ai/src/contracts/end.type.mjs.map +1 -0
- package/esm/ai/src/errors/agent-cancelled-error.mjs +43 -0
- package/esm/ai/src/errors/agent-cancelled-error.mjs.map +1 -0
- package/esm/ai/src/errors/agent-execution-error.mjs +35 -0
- package/esm/ai/src/errors/agent-execution-error.mjs.map +1 -0
- package/esm/ai/src/errors/agent-max-trips-error.mjs +41 -0
- package/esm/ai/src/errors/agent-max-trips-error.mjs.map +1 -0
- package/esm/ai/src/errors/ai-error.mjs +68 -0
- package/esm/ai/src/errors/ai-error.mjs.map +1 -0
- package/esm/ai/src/errors/budget-exceeded-error.mjs +31 -0
- package/esm/ai/src/errors/budget-exceeded-error.mjs.map +1 -0
- package/esm/ai/src/errors/content-filter-error.mjs +28 -0
- package/esm/ai/src/errors/content-filter-error.mjs.map +1 -0
- package/esm/ai/src/errors/context-length-exceeded-error.mjs +31 -0
- package/esm/ai/src/errors/context-length-exceeded-error.mjs.map +1 -0
- package/esm/ai/src/errors/guardrail-violation-error.mjs +41 -0
- package/esm/ai/src/errors/guardrail-violation-error.mjs.map +1 -0
- package/esm/ai/src/errors/index.mjs +37 -0
- package/esm/ai/src/errors/invalid-request-error.mjs +31 -0
- package/esm/ai/src/errors/invalid-request-error.mjs.map +1 -0
- package/esm/ai/src/errors/max-iterations-error.mjs +32 -0
- package/esm/ai/src/errors/max-iterations-error.mjs.map +1 -0
- package/esm/ai/src/errors/max-steps-exceeded-error.mjs +21 -0
- package/esm/ai/src/errors/max-steps-exceeded-error.mjs.map +1 -0
- package/esm/ai/src/errors/orchestrator-cancelled-error.mjs +31 -0
- package/esm/ai/src/errors/orchestrator-cancelled-error.mjs.map +1 -0
- package/esm/ai/src/errors/orchestrator-config-error.mjs +30 -0
- package/esm/ai/src/errors/orchestrator-config-error.mjs.map +1 -0
- package/esm/ai/src/errors/orchestrator-drift-error.mjs +37 -0
- package/esm/ai/src/errors/orchestrator-drift-error.mjs.map +1 -0
- package/esm/ai/src/errors/orchestrator-failed-error.mjs +36 -0
- package/esm/ai/src/errors/orchestrator-failed-error.mjs.map +1 -0
- package/esm/ai/src/errors/outbound-policy-error.mjs +32 -0
- package/esm/ai/src/errors/outbound-policy-error.mjs.map +1 -0
- package/esm/ai/src/errors/planner-cancelled-error.mjs +29 -0
- package/esm/ai/src/errors/planner-cancelled-error.mjs.map +1 -0
- package/esm/ai/src/errors/planner-failed-error.mjs +37 -0
- package/esm/ai/src/errors/planner-failed-error.mjs.map +1 -0
- package/esm/ai/src/errors/planner-plan-invalid-error.mjs +25 -0
- package/esm/ai/src/errors/planner-plan-invalid-error.mjs.map +1 -0
- package/esm/ai/src/errors/provider-auth-error.mjs +26 -0
- package/esm/ai/src/errors/provider-auth-error.mjs.map +1 -0
- package/esm/ai/src/errors/provider-error.mjs +42 -0
- package/esm/ai/src/errors/provider-error.mjs.map +1 -0
- package/esm/ai/src/errors/provider-rate-limit-error.mjs +31 -0
- package/esm/ai/src/errors/provider-rate-limit-error.mjs.map +1 -0
- package/esm/ai/src/errors/provider-timeout-error.mjs +26 -0
- package/esm/ai/src/errors/provider-timeout-error.mjs.map +1 -0
- package/esm/ai/src/errors/quota-exceeded-error.mjs +40 -0
- package/esm/ai/src/errors/quota-exceeded-error.mjs.map +1 -0
- package/esm/ai/src/errors/routing-error.mjs +23 -0
- package/esm/ai/src/errors/routing-error.mjs.map +1 -0
- package/esm/ai/src/errors/schema-validation-error.mjs +37 -0
- package/esm/ai/src/errors/schema-validation-error.mjs.map +1 -0
- package/esm/ai/src/errors/step-failed-error.mjs +19 -0
- package/esm/ai/src/errors/step-failed-error.mjs.map +1 -0
- package/esm/ai/src/errors/supervisor-cancelled-error.mjs +29 -0
- package/esm/ai/src/errors/supervisor-cancelled-error.mjs.map +1 -0
- package/esm/ai/src/errors/supervisor-drift-error.mjs +30 -0
- package/esm/ai/src/errors/supervisor-drift-error.mjs.map +1 -0
- package/esm/ai/src/errors/supervisor-failed-error.mjs +43 -0
- package/esm/ai/src/errors/supervisor-failed-error.mjs.map +1 -0
- package/esm/ai/src/errors/supervisor-routing-error.mjs +39 -0
- package/esm/ai/src/errors/supervisor-routing-error.mjs.map +1 -0
- package/esm/ai/src/errors/tool-execution-error.mjs +32 -0
- package/esm/ai/src/errors/tool-execution-error.mjs.map +1 -0
- package/esm/ai/src/errors/workflow-cancelled-error.mjs +23 -0
- package/esm/ai/src/errors/workflow-cancelled-error.mjs.map +1 -0
- package/esm/ai/src/errors/workflow-drift-error.mjs +24 -0
- package/esm/ai/src/errors/workflow-drift-error.mjs.map +1 -0
- package/esm/ai/src/errors/workflow-error.mjs +18 -0
- package/esm/ai/src/errors/workflow-error.mjs.map +1 -0
- package/esm/ai/src/eval/dataset.mjs +112 -0
- package/esm/ai/src/eval/dataset.mjs.map +1 -0
- package/esm/ai/src/eval/eval-runner.mjs +135 -0
- package/esm/ai/src/eval/eval-runner.mjs.map +1 -0
- package/esm/ai/src/eval/index.mjs +48 -0
- package/esm/ai/src/eval/index.mjs.map +1 -0
- package/esm/ai/src/eval/judge-scorer.mjs +87 -0
- package/esm/ai/src/eval/judge-scorer.mjs.map +1 -0
- package/esm/ai/src/eval/regression.mjs +51 -0
- package/esm/ai/src/eval/regression.mjs.map +1 -0
- package/esm/ai/src/eval/report-json.mjs +33 -0
- package/esm/ai/src/eval/report-json.mjs.map +1 -0
- package/esm/ai/src/eval/report-junit.mjs +60 -0
- package/esm/ai/src/eval/report-junit.mjs.map +1 -0
- package/esm/ai/src/eval/scorers.mjs +101 -0
- package/esm/ai/src/eval/scorers.mjs.map +1 -0
- package/esm/ai/src/guard/detectors/index.mjs +6 -0
- package/esm/ai/src/guard/detectors/injection.mjs +254 -0
- package/esm/ai/src/guard/detectors/injection.mjs.map +1 -0
- package/esm/ai/src/guard/detectors/moderation.mjs +134 -0
- package/esm/ai/src/guard/detectors/moderation.mjs.map +1 -0
- package/esm/ai/src/guard/detectors/pii.mjs +199 -0
- package/esm/ai/src/guard/detectors/pii.mjs.map +1 -0
- package/esm/ai/src/guard/detectors/topic.mjs +99 -0
- package/esm/ai/src/guard/detectors/topic.mjs.map +1 -0
- package/esm/ai/src/guard/errors.mjs +18 -0
- package/esm/ai/src/guard/errors.mjs.map +1 -0
- package/esm/ai/src/guard/guard.mjs +209 -0
- package/esm/ai/src/guard/guard.mjs.map +1 -0
- package/esm/ai/src/guard/guardrail.mjs +22 -0
- package/esm/ai/src/guard/guardrail.mjs.map +1 -0
- package/esm/ai/src/human/errors.mjs +60 -0
- package/esm/ai/src/human/errors.mjs.map +1 -0
- package/esm/ai/src/human/human-approval.mjs +170 -0
- package/esm/ai/src/human/human-approval.mjs.map +1 -0
- package/esm/ai/src/human/policy.mjs +67 -0
- package/esm/ai/src/human/policy.mjs.map +1 -0
- package/esm/ai/src/human/register.mjs +37 -0
- package/esm/ai/src/human/register.mjs.map +1 -0
- package/esm/ai/src/human/resume-seed.mjs +53 -0
- package/esm/ai/src/human/resume-seed.mjs.map +1 -0
- package/esm/ai/src/human/resume.mjs +121 -0
- package/esm/ai/src/human/resume.mjs.map +1 -0
- package/esm/ai/src/human/stores/index.mjs +5 -0
- package/esm/ai/src/human/stores/memory.mjs +91 -0
- package/esm/ai/src/human/stores/memory.mjs.map +1 -0
- package/esm/ai/src/human/stores/pg.mjs +220 -0
- package/esm/ai/src/human/stores/pg.mjs.map +1 -0
- package/esm/ai/src/human/stores/redis.mjs +201 -0
- package/esm/ai/src/human/stores/redis.mjs.map +1 -0
- package/esm/ai/src/index.mjs +174 -0
- package/esm/ai/src/memory/derive-id.mjs +24 -0
- package/esm/ai/src/memory/derive-id.mjs.map +1 -0
- package/esm/ai/src/memory/episodic-memory.mjs +106 -0
- package/esm/ai/src/memory/episodic-memory.mjs.map +1 -0
- package/esm/ai/src/memory/memory.mjs +166 -0
- package/esm/ai/src/memory/memory.mjs.map +1 -0
- package/esm/ai/src/memory/procedural-memory.mjs +103 -0
- package/esm/ai/src/memory/procedural-memory.mjs.map +1 -0
- package/esm/ai/src/memory/semantic-memory.mjs +80 -0
- package/esm/ai/src/memory/semantic-memory.mjs.map +1 -0
- package/esm/ai/src/memory/working-memory.mjs +62 -0
- package/esm/ai/src/memory/working-memory.mjs.map +1 -0
- package/esm/ai/src/middleware/builtins/budget.mjs +219 -0
- package/esm/ai/src/middleware/builtins/budget.mjs.map +1 -0
- package/esm/ai/src/middleware/builtins/guardrail.mjs +76 -0
- package/esm/ai/src/middleware/builtins/guardrail.mjs.map +1 -0
- package/esm/ai/src/middleware/builtins/semantic-cache.mjs +149 -0
- package/esm/ai/src/middleware/builtins/semantic-cache.mjs.map +1 -0
- package/esm/ai/src/middleware/helpers/compose.mjs +52 -0
- package/esm/ai/src/middleware/helpers/compose.mjs.map +1 -0
- package/esm/ai/src/middleware/helpers/for-tool.mjs +80 -0
- package/esm/ai/src/middleware/helpers/for-tool.mjs.map +1 -0
- package/esm/ai/src/middleware/index.mjs +10 -0
- package/esm/ai/src/middleware/pipeline.mjs +100 -0
- package/esm/ai/src/middleware/pipeline.mjs.map +1 -0
- package/esm/ai/src/middleware/utils/extract-user-text.mjs +47 -0
- package/esm/ai/src/middleware/utils/extract-user-text.mjs.map +1 -0
- package/esm/ai/src/middleware/utils/namespaced-state.mjs +60 -0
- package/esm/ai/src/middleware/utils/namespaced-state.mjs.map +1 -0
- package/esm/ai/src/mock/index.mjs +4 -0
- package/esm/ai/src/mock/mock-agent.mjs +3 -0
- package/esm/ai/src/mock/mock-router.mjs +58 -0
- package/esm/ai/src/mock/mock-router.mjs.map +1 -0
- package/esm/ai/src/model/fallback-model.mjs +218 -0
- package/esm/ai/src/model/fallback-model.mjs.map +1 -0
- package/esm/ai/src/model/index.mjs +3 -0
- package/esm/ai/src/object-stream/index.mjs +4 -0
- package/esm/ai/src/object-stream/parse-partial-json.mjs +78 -0
- package/esm/ai/src/object-stream/parse-partial-json.mjs.map +1 -0
- package/esm/ai/src/object-stream/stream-object.mjs +97 -0
- package/esm/ai/src/object-stream/stream-object.mjs.map +1 -0
- package/esm/ai/src/observe/index.mjs +4 -0
- package/esm/ai/src/observe/observer-registry.mjs +35 -0
- package/esm/ai/src/observe/observer-registry.mjs.map +1 -0
- package/esm/ai/src/observe/resolve-observers.mjs +73 -0
- package/esm/ai/src/observe/resolve-observers.mjs.map +1 -0
- package/esm/ai/src/orchestrator/as-tool.mjs +98 -0
- package/esm/ai/src/orchestrator/as-tool.mjs.map +1 -0
- package/esm/ai/src/orchestrator/checkpoint.mjs +75 -0
- package/esm/ai/src/orchestrator/checkpoint.mjs.map +1 -0
- package/esm/ai/src/orchestrator/commands.mjs +34 -0
- package/esm/ai/src/orchestrator/commands.mjs.map +1 -0
- package/esm/ai/src/orchestrator/compaction.mjs +206 -0
- package/esm/ai/src/orchestrator/compaction.mjs.map +1 -0
- package/esm/ai/src/orchestrator/dispatch.mjs +171 -0
- package/esm/ai/src/orchestrator/dispatch.mjs.map +1 -0
- package/esm/ai/src/orchestrator/emitter.mjs +85 -0
- package/esm/ai/src/orchestrator/emitter.mjs.map +1 -0
- package/esm/ai/src/orchestrator/execution.mjs +395 -0
- package/esm/ai/src/orchestrator/execution.mjs.map +1 -0
- package/esm/ai/src/orchestrator/index.mjs +11 -0
- package/esm/ai/src/orchestrator/load.mjs +49 -0
- package/esm/ai/src/orchestrator/load.mjs.map +1 -0
- package/esm/ai/src/orchestrator/lock.mjs +75 -0
- package/esm/ai/src/orchestrator/lock.mjs.map +1 -0
- package/esm/ai/src/orchestrator/memory.mjs +141 -0
- package/esm/ai/src/orchestrator/memory.mjs.map +1 -0
- package/esm/ai/src/orchestrator/orchestrator-stream.mjs +98 -0
- package/esm/ai/src/orchestrator/orchestrator-stream.mjs.map +1 -0
- package/esm/ai/src/orchestrator/orchestrator.mjs +206 -0
- package/esm/ai/src/orchestrator/orchestrator.mjs.map +1 -0
- package/esm/ai/src/orchestrator/resume.mjs +74 -0
- package/esm/ai/src/orchestrator/resume.mjs.map +1 -0
- package/esm/ai/src/orchestrator/session-lock.mjs +83 -0
- package/esm/ai/src/orchestrator/session-lock.mjs.map +1 -0
- package/esm/ai/src/orchestrator/signature.mjs +120 -0
- package/esm/ai/src/orchestrator/signature.mjs.map +1 -0
- package/esm/ai/src/orchestrator/window.mjs +56 -0
- package/esm/ai/src/orchestrator/window.mjs.map +1 -0
- package/esm/ai/src/planner/dag-scheduler.mjs +97 -0
- package/esm/ai/src/planner/dag-scheduler.mjs.map +1 -0
- package/esm/ai/src/planner/index.mjs +6 -0
- package/esm/ai/src/planner/plan-prompt.mjs +31 -0
- package/esm/ai/src/planner/plan-prompt.mjs.map +1 -0
- package/esm/ai/src/planner/plan-schema.mjs +120 -0
- package/esm/ai/src/planner/plan-schema.mjs.map +1 -0
- package/esm/ai/src/planner/planner-run.mjs +614 -0
- package/esm/ai/src/planner/planner-run.mjs.map +1 -0
- package/esm/ai/src/planner/planner.mjs +120 -0
- package/esm/ai/src/planner/planner.mjs.map +1 -0
- package/esm/ai/src/planner/signature.mjs +27 -0
- package/esm/ai/src/planner/signature.mjs.map +1 -0
- package/esm/ai/src/prompt/errors.mjs +73 -0
- package/esm/ai/src/prompt/errors.mjs.map +1 -0
- package/esm/ai/src/prompt/index.mjs +4 -0
- package/esm/ai/src/prompt/prompt-langfuse-sync.mjs +104 -0
- package/esm/ai/src/prompt/prompt-langfuse-sync.mjs.map +1 -0
- package/esm/ai/src/prompt/prompt-validate.mjs +170 -0
- package/esm/ai/src/prompt/prompt-validate.mjs.map +1 -0
- package/esm/ai/src/prompt/prompt.mjs +218 -0
- package/esm/ai/src/prompt/prompt.mjs.map +1 -0
- package/esm/ai/src/prompts/index.mjs +3 -0
- package/esm/ai/src/prompts/prompts-manager.mjs +410 -0
- package/esm/ai/src/prompts/prompts-manager.mjs.map +1 -0
- package/esm/ai/src/prompts/prompts-validate.mjs +200 -0
- package/esm/ai/src/prompts/prompts-validate.mjs.map +1 -0
- package/esm/ai/src/rag/as-tool.mjs +48 -0
- package/esm/ai/src/rag/as-tool.mjs.map +1 -0
- package/esm/ai/src/rag/chunk/chunk.mjs +44 -0
- package/esm/ai/src/rag/chunk/chunk.mjs.map +1 -0
- package/esm/ai/src/rag/chunk/fixed.mjs +32 -0
- package/esm/ai/src/rag/chunk/fixed.mjs.map +1 -0
- package/esm/ai/src/rag/chunk/markdown.mjs +75 -0
- package/esm/ai/src/rag/chunk/markdown.mjs.map +1 -0
- package/esm/ai/src/rag/chunk/recursive.mjs +132 -0
- package/esm/ai/src/rag/chunk/recursive.mjs.map +1 -0
- package/esm/ai/src/rag/chunk/sentence.mjs +73 -0
- package/esm/ai/src/rag/chunk/sentence.mjs.map +1 -0
- package/esm/ai/src/rag/index.mjs +7 -0
- package/esm/ai/src/rag/rag.mjs +126 -0
- package/esm/ai/src/rag/rag.mjs.map +1 -0
- package/esm/ai/src/rag/rerank/keyword-reranker.mjs +58 -0
- package/esm/ai/src/rag/rerank/keyword-reranker.mjs.map +1 -0
- package/esm/ai/src/rag/rerank/llm-reranker.mjs +85 -0
- package/esm/ai/src/rag/rerank/llm-reranker.mjs.map +1 -0
- package/esm/ai/src/rag/retrieve.mjs +68 -0
- package/esm/ai/src/rag/retrieve.mjs.map +1 -0
- package/esm/ai/src/rag/store/cache-vector-store.mjs +48 -0
- package/esm/ai/src/rag/store/cache-vector-store.mjs.map +1 -0
- package/esm/ai/src/security/index.mjs +5 -0
- package/esm/ai/src/security/outbound-policy.mjs +187 -0
- package/esm/ai/src/security/outbound-policy.mjs.map +1 -0
- package/esm/ai/src/security/private-ip.mjs +48 -0
- package/esm/ai/src/security/private-ip.mjs.map +1 -0
- package/esm/ai/src/security/redact.mjs +60 -0
- package/esm/ai/src/security/redact.mjs.map +1 -0
- package/esm/ai/src/serve/serve.mjs +90 -0
- package/esm/ai/src/serve/serve.mjs.map +1 -0
- package/esm/ai/src/serve/sse.mjs +25 -0
- package/esm/ai/src/serve/sse.mjs.map +1 -0
- package/esm/ai/src/serve/stream-to-sse.mjs +37 -0
- package/esm/ai/src/serve/stream-to-sse.mjs.map +1 -0
- package/esm/ai/src/skills/catalog.mjs +140 -0
- package/esm/ai/src/skills/catalog.mjs.map +1 -0
- package/esm/ai/src/skills/index.mjs +11 -0
- package/esm/ai/src/skills/load-skill-tool.mjs +65 -0
- package/esm/ai/src/skills/load-skill-tool.mjs.map +1 -0
- package/esm/ai/src/skills/save-skill-tool.mjs +65 -0
- package/esm/ai/src/skills/save-skill-tool.mjs.map +1 -0
- package/esm/ai/src/skills/skills.mjs +109 -0
- package/esm/ai/src/skills/skills.mjs.map +1 -0
- package/esm/ai/src/skills/sources/directory-source.mjs +108 -0
- package/esm/ai/src/skills/sources/directory-source.mjs.map +1 -0
- package/esm/ai/src/skills/sources/index.mjs +27 -0
- package/esm/ai/src/skills/sources/index.mjs.map +1 -0
- package/esm/ai/src/skills/sources/parse-frontmatter.mjs +46 -0
- package/esm/ai/src/skills/sources/parse-frontmatter.mjs.map +1 -0
- package/esm/ai/src/skills/sources/store-source.mjs +15 -0
- package/esm/ai/src/skills/sources/store-source.mjs.map +1 -0
- package/esm/ai/src/skills/sources/url-source.mjs +117 -0
- package/esm/ai/src/skills/sources/url-source.mjs.map +1 -0
- package/esm/ai/src/snapshot/memory.mjs +81 -0
- package/esm/ai/src/snapshot/memory.mjs.map +1 -0
- package/esm/ai/src/snapshot/pg.mjs +146 -0
- package/esm/ai/src/snapshot/pg.mjs.map +1 -0
- package/esm/ai/src/snapshot/redis.mjs +101 -0
- package/esm/ai/src/snapshot/redis.mjs.map +1 -0
- package/esm/ai/src/supervisor/as-tool.mjs +74 -0
- package/esm/ai/src/supervisor/as-tool.mjs.map +1 -0
- package/esm/ai/src/supervisor/cancellation.mjs +22 -0
- package/esm/ai/src/supervisor/cancellation.mjs.map +1 -0
- package/esm/ai/src/supervisor/decide.mjs +272 -0
- package/esm/ai/src/supervisor/decide.mjs.map +1 -0
- package/esm/ai/src/supervisor/emitter.mjs +47 -0
- package/esm/ai/src/supervisor/emitter.mjs.map +1 -0
- package/esm/ai/src/supervisor/entries.mjs +206 -0
- package/esm/ai/src/supervisor/entries.mjs.map +1 -0
- package/esm/ai/src/supervisor/execution.mjs +1921 -0
- package/esm/ai/src/supervisor/execution.mjs.map +1 -0
- package/esm/ai/src/supervisor/fan-out.mjs +65 -0
- package/esm/ai/src/supervisor/fan-out.mjs.map +1 -0
- package/esm/ai/src/supervisor/index.mjs +14 -0
- package/esm/ai/src/supervisor/router-factory.mjs +141 -0
- package/esm/ai/src/supervisor/router-factory.mjs.map +1 -0
- package/esm/ai/src/supervisor/router-prompt.mjs +52 -0
- package/esm/ai/src/supervisor/router-prompt.mjs.map +1 -0
- package/esm/ai/src/supervisor/signature.mjs +89 -0
- package/esm/ai/src/supervisor/signature.mjs.map +1 -0
- package/esm/ai/src/supervisor/snapshot.mjs +69 -0
- package/esm/ai/src/supervisor/snapshot.mjs.map +1 -0
- package/esm/ai/src/supervisor/supervisor-stream.mjs +89 -0
- package/esm/ai/src/supervisor/supervisor-stream.mjs.map +1 -0
- package/esm/ai/src/supervisor/supervisor.mjs +144 -0
- package/esm/ai/src/supervisor/supervisor.mjs.map +1 -0
- package/esm/ai/src/system-prompt/index.mjs +6 -0
- package/esm/ai/src/system-prompt/instruction.mjs +57 -0
- package/esm/ai/src/system-prompt/instruction.mjs.map +1 -0
- package/esm/ai/src/system-prompt/persona.mjs +57 -0
- package/esm/ai/src/system-prompt/persona.mjs.map +1 -0
- package/esm/ai/src/system-prompt/render-placeholders.mjs +58 -0
- package/esm/ai/src/system-prompt/render-placeholders.mjs.map +1 -0
- package/esm/ai/src/system-prompt/system-prompt.mjs +267 -0
- package/esm/ai/src/system-prompt/system-prompt.mjs.map +1 -0
- package/esm/ai/src/team/gates.mjs +48 -0
- package/esm/ai/src/team/gates.mjs.map +1 -0
- package/esm/ai/src/team/index.mjs +3 -0
- package/esm/ai/src/team/team.mjs +94 -0
- package/esm/ai/src/team/team.mjs.map +1 -0
- package/esm/ai/src/tool/executable-as-tool.mjs +81 -0
- package/esm/ai/src/tool/executable-as-tool.mjs.map +1 -0
- package/esm/ai/src/tool/index.mjs +4 -0
- package/esm/ai/src/tool/tool.mjs +185 -0
- package/esm/ai/src/tool/tool.mjs.map +1 -0
- package/esm/ai/src/utils/compute-cost.mjs +112 -0
- package/esm/ai/src/utils/compute-cost.mjs.map +1 -0
- package/esm/ai/src/utils/extract-json-lenient.mjs +97 -0
- package/esm/ai/src/utils/extract-json-lenient.mjs.map +1 -0
- package/esm/ai/src/utils/extract-json-payload.mjs +39 -0
- package/esm/ai/src/utils/extract-json-payload.mjs.map +1 -0
- package/esm/ai/src/utils/generate-run-id.mjs +23 -0
- package/esm/ai/src/utils/generate-run-id.mjs.map +1 -0
- package/esm/ai/src/utils/index.mjs +12 -0
- package/esm/ai/src/utils/json-schema.mjs +89 -0
- package/esm/ai/src/utils/json-schema.mjs.map +1 -0
- package/esm/ai/src/utils/prepare-attachment-part.mjs +232 -0
- package/esm/ai/src/utils/prepare-attachment-part.mjs.map +1 -0
- package/esm/ai/src/utils/resolve-attachment.mjs +74 -0
- package/esm/ai/src/utils/resolve-attachment.mjs.map +1 -0
- package/esm/ai/src/utils/run-context.mjs +89 -0
- package/esm/ai/src/utils/run-context.mjs.map +1 -0
- package/esm/ai/src/utils/safe-json-parse.mjs +22 -0
- package/esm/ai/src/utils/safe-json-parse.mjs.map +1 -0
- package/esm/ai/src/utils/stamp-report-lineage.mjs +45 -0
- package/esm/ai/src/utils/stamp-report-lineage.mjs.map +1 -0
- package/esm/ai/src/vcr/cassette-io.mjs +57 -0
- package/esm/ai/src/vcr/cassette-io.mjs.map +1 -0
- package/esm/ai/src/vcr/errors.mjs +37 -0
- package/esm/ai/src/vcr/errors.mjs.map +1 -0
- package/esm/ai/src/vcr/hash-request.mjs +118 -0
- package/esm/ai/src/vcr/hash-request.mjs.map +1 -0
- package/esm/ai/src/vcr/index.mjs +5 -0
- package/esm/ai/src/vcr/vcr.mjs +248 -0
- package/esm/ai/src/vcr/vcr.mjs.map +1 -0
- package/esm/ai/src/workflow/as-tool.mjs +49 -0
- package/esm/ai/src/workflow/as-tool.mjs.map +1 -0
- package/esm/ai/src/workflow/cancellation.mjs +44 -0
- package/esm/ai/src/workflow/cancellation.mjs.map +1 -0
- package/esm/ai/src/workflow/emitter.mjs +40 -0
- package/esm/ai/src/workflow/emitter.mjs.map +1 -0
- package/esm/ai/src/workflow/engine.mjs +363 -0
- package/esm/ai/src/workflow/engine.mjs.map +1 -0
- package/esm/ai/src/workflow/index.mjs +5 -0
- package/esm/ai/src/workflow/retry.mjs +32 -0
- package/esm/ai/src/workflow/retry.mjs.map +1 -0
- package/esm/ai/src/workflow/router.mjs +56 -0
- package/esm/ai/src/workflow/router.mjs.map +1 -0
- package/esm/ai/src/workflow/run-scoped-emitter.mjs +32 -0
- package/esm/ai/src/workflow/run-scoped-emitter.mjs.map +1 -0
- package/esm/ai/src/workflow/signature.mjs +34 -0
- package/esm/ai/src/workflow/signature.mjs.map +1 -0
- package/esm/ai/src/workflow/snapshot.mjs +77 -0
- package/esm/ai/src/workflow/snapshot.mjs.map +1 -0
- package/esm/ai/src/workflow/state.mjs +37 -0
- package/esm/ai/src/workflow/state.mjs.map +1 -0
- package/esm/ai/src/workflow/step-runner.mjs +370 -0
- package/esm/ai/src/workflow/step-runner.mjs.map +1 -0
- package/esm/ai/src/workflow/step.mjs +37 -0
- package/esm/ai/src/workflow/step.mjs.map +1 -0
- package/esm/ai/src/workflow/workflow.mjs +122 -0
- package/esm/ai/src/workflow/workflow.mjs.map +1 -0
- package/esm/ai-openai/src/embedder.mjs +4 -0
- package/esm/ai-openai/src/index.mjs +4 -0
- package/esm/ai-openai/src/model.mjs +5 -0
- package/esm/ai-openai/src/sdk.mjs +6 -0
- package/esm/ai-openai/src/utils/index.mjs +4 -0
- package/esm/ai-openai/src/utils/to-openai-tools.mjs +3 -0
- package/esm/ai-openai/src/utils/wrap-openai-error.mjs +4 -0
- package/esm/cli/commands/dev-server.command.mjs +1 -1
- package/esm/cli/commands/dev-server.command.mjs.map +1 -1
- package/esm/cli/commands/generate/templates/stubs.mjs +3 -4
- package/esm/cli/commands/generate/templates/stubs.mjs.map +1 -1
- package/esm/connectors/ai-connector.d.mts +43 -0
- package/esm/connectors/ai-connector.d.mts.map +1 -0
- package/esm/connectors/ai-connector.mjs +56 -0
- package/esm/connectors/ai-connector.mjs.map +1 -0
- package/esm/connectors/cache-connector.d.mts +5 -0
- package/esm/connectors/cache-connector.d.mts.map +1 -1
- package/esm/connectors/cache-connector.mjs +7 -0
- package/esm/connectors/cache-connector.mjs.map +1 -1
- package/esm/connectors/connectors-manager.d.mts +6 -2
- package/esm/connectors/connectors-manager.d.mts.map +1 -1
- package/esm/connectors/connectors-manager.mjs +8 -2
- package/esm/connectors/connectors-manager.mjs.map +1 -1
- package/esm/connectors/http-connector.mjs.map +1 -1
- package/esm/connectors/index.d.mts +1 -0
- package/esm/connectors/index.mjs +1 -0
- package/esm/connectors/socket-connector.d.mts +16 -1
- package/esm/connectors/socket-connector.d.mts.map +1 -1
- package/esm/connectors/socket-connector.mjs +28 -5
- package/esm/connectors/socket-connector.mjs.map +1 -1
- package/esm/connectors/storage.connector.d.mts +7 -0
- package/esm/connectors/storage.connector.d.mts.map +1 -1
- package/esm/connectors/storage.connector.mjs +7 -0
- package/esm/connectors/storage.connector.mjs.map +1 -1
- package/esm/connectors/types.d.mts +3 -2
- package/esm/connectors/types.d.mts.map +1 -1
- package/esm/connectors/types.mjs +1 -0
- package/esm/connectors/types.mjs.map +1 -1
- package/esm/dev-server/development-server.mjs +2 -14
- package/esm/dev-server/development-server.mjs.map +1 -1
- package/esm/dev-server/file-event-handler.mjs +15 -3
- package/esm/dev-server/file-event-handler.mjs.map +1 -1
- package/esm/generations/add-command.action.mjs +61 -12
- package/esm/generations/add-command.action.mjs.map +1 -1
- package/esm/generations/stubs.mjs +31 -1
- package/esm/generations/stubs.mjs.map +1 -1
- package/esm/http/middleware/cache-response-middleware.d.mts +1 -1
- package/esm/http/middleware/cache-response-middleware.d.mts.map +1 -1
- package/esm/http/middleware/cache-response-middleware.mjs +15 -6
- package/esm/http/middleware/cache-response-middleware.mjs.map +1 -1
- package/esm/http/middleware/concurrency-limit.middleware.mjs +2 -0
- package/esm/http/middleware/concurrency-limit.middleware.mjs.map +1 -1
- package/esm/http/middleware/idempotency.middleware.d.mts.map +1 -1
- package/esm/http/middleware/idempotency.middleware.mjs +4 -1
- package/esm/http/middleware/idempotency.middleware.mjs.map +1 -1
- package/esm/http/middleware/maintenance.middleware.mjs +2 -1
- package/esm/http/middleware/maintenance.middleware.mjs.map +1 -1
- package/esm/http/request.d.mts +9 -2
- package/esm/http/request.d.mts.map +1 -1
- package/esm/http/request.mjs +15 -3
- package/esm/http/request.mjs.map +1 -1
- package/esm/http/response.d.mts +12 -0
- package/esm/http/response.d.mts.map +1 -1
- package/esm/http/response.mjs +19 -2
- package/esm/http/response.mjs.map +1 -1
- package/esm/http/server.d.mts.map +1 -1
- package/esm/http/server.mjs +1 -1
- package/esm/http/server.mjs.map +1 -1
- package/esm/index.d.mts +6 -2
- package/esm/index.mjs +5 -1
- package/esm/node_modules/langfuse/lib/index.mjs +1827 -0
- package/esm/node_modules/langfuse/lib/index.mjs.map +1 -0
- package/esm/node_modules/langfuse-core/lib/index.mjs +1770 -0
- package/esm/node_modules/langfuse-core/lib/index.mjs.map +1 -0
- package/esm/node_modules/mustache/mustache.mjs +587 -0
- package/esm/node_modules/mustache/mustache.mjs.map +1 -0
- package/esm/node_modules/openai/_vendor/partial-json-parser/parser.mjs +180 -0
- package/esm/node_modules/openai/_vendor/partial-json-parser/parser.mjs.map +1 -0
- package/esm/node_modules/openai/auth/workload-identity-auth.mjs +80 -0
- package/esm/node_modules/openai/auth/workload-identity-auth.mjs.map +1 -0
- package/esm/node_modules/openai/azure.mjs +82 -0
- package/esm/node_modules/openai/azure.mjs.map +1 -0
- package/esm/node_modules/openai/client.mjs +638 -0
- package/esm/node_modules/openai/client.mjs.map +1 -0
- package/esm/node_modules/openai/core/api-promise.mjs +75 -0
- package/esm/node_modules/openai/core/api-promise.mjs.map +1 -0
- package/esm/node_modules/openai/core/error.mjs +110 -0
- package/esm/node_modules/openai/core/error.mjs.map +1 -0
- package/esm/node_modules/openai/core/pagination.mjs +160 -0
- package/esm/node_modules/openai/core/pagination.mjs.map +1 -0
- package/esm/node_modules/openai/core/resource.mjs +10 -0
- package/esm/node_modules/openai/core/resource.mjs.map +1 -0
- package/esm/node_modules/openai/core/streaming.mjs +238 -0
- package/esm/node_modules/openai/core/streaming.mjs.map +1 -0
- package/esm/node_modules/openai/index.mjs +8 -0
- package/esm/node_modules/openai/internal/decoders/line.mjs +91 -0
- package/esm/node_modules/openai/internal/decoders/line.mjs.map +1 -0
- package/esm/node_modules/openai/internal/detect-platform.mjs +123 -0
- package/esm/node_modules/openai/internal/detect-platform.mjs.map +1 -0
- package/esm/node_modules/openai/internal/errors.mjs +26 -0
- package/esm/node_modules/openai/internal/errors.mjs.map +1 -0
- package/esm/node_modules/openai/internal/headers.mjs +65 -0
- package/esm/node_modules/openai/internal/headers.mjs.map +1 -0
- package/esm/node_modules/openai/internal/parse.mjs +41 -0
- package/esm/node_modules/openai/internal/parse.mjs.map +1 -0
- package/esm/node_modules/openai/internal/qs/formats.mjs +12 -0
- package/esm/node_modules/openai/internal/qs/formats.mjs.map +1 -0
- package/esm/node_modules/openai/internal/qs/stringify.mjs +179 -0
- package/esm/node_modules/openai/internal/qs/stringify.mjs.map +1 -0
- package/esm/node_modules/openai/internal/qs/utils.mjs +65 -0
- package/esm/node_modules/openai/internal/qs/utils.mjs.map +1 -0
- package/esm/node_modules/openai/internal/request-options.mjs +11 -0
- package/esm/node_modules/openai/internal/request-options.mjs.map +1 -0
- package/esm/node_modules/openai/internal/shims.mjs +77 -0
- package/esm/node_modules/openai/internal/shims.mjs.map +1 -0
- package/esm/node_modules/openai/internal/to-file.mjs +63 -0
- package/esm/node_modules/openai/internal/to-file.mjs.map +1 -0
- package/esm/node_modules/openai/internal/tslib.mjs +16 -0
- package/esm/node_modules/openai/internal/tslib.mjs.map +1 -0
- package/esm/node_modules/openai/internal/uploads.mjs +94 -0
- package/esm/node_modules/openai/internal/uploads.mjs.map +1 -0
- package/esm/node_modules/openai/internal/utils/base64.mjs +22 -0
- package/esm/node_modules/openai/internal/utils/base64.mjs.map +1 -0
- package/esm/node_modules/openai/internal/utils/bytes.mjs +26 -0
- package/esm/node_modules/openai/internal/utils/bytes.mjs.map +1 -0
- package/esm/node_modules/openai/internal/utils/env.mjs +16 -0
- package/esm/node_modules/openai/internal/utils/env.mjs.map +1 -0
- package/esm/node_modules/openai/internal/utils/log.mjs +58 -0
- package/esm/node_modules/openai/internal/utils/log.mjs.map +1 -0
- package/esm/node_modules/openai/internal/utils/path.mjs +62 -0
- package/esm/node_modules/openai/internal/utils/path.mjs.map +1 -0
- package/esm/node_modules/openai/internal/utils/query.mjs +10 -0
- package/esm/node_modules/openai/internal/utils/query.mjs.map +1 -0
- package/esm/node_modules/openai/internal/utils/sleep.mjs +6 -0
- package/esm/node_modules/openai/internal/utils/sleep.mjs.map +1 -0
- package/esm/node_modules/openai/internal/utils/uuid.mjs +18 -0
- package/esm/node_modules/openai/internal/utils/uuid.mjs.map +1 -0
- package/esm/node_modules/openai/internal/utils/values.mjs +41 -0
- package/esm/node_modules/openai/internal/utils/values.mjs.map +1 -0
- package/esm/node_modules/openai/lib/AbstractChatCompletionRunner.mjs +247 -0
- package/esm/node_modules/openai/lib/AbstractChatCompletionRunner.mjs.map +1 -0
- package/esm/node_modules/openai/lib/AssistantStream.mjs +472 -0
- package/esm/node_modules/openai/lib/AssistantStream.mjs.map +1 -0
- package/esm/node_modules/openai/lib/ChatCompletionRunner.mjs +26 -0
- package/esm/node_modules/openai/lib/ChatCompletionRunner.mjs.map +1 -0
- package/esm/node_modules/openai/lib/ChatCompletionStream.mjs +423 -0
- package/esm/node_modules/openai/lib/ChatCompletionStream.mjs.map +1 -0
- package/esm/node_modules/openai/lib/ChatCompletionStreamingRunner.mjs +26 -0
- package/esm/node_modules/openai/lib/ChatCompletionStreamingRunner.mjs.map +1 -0
- package/esm/node_modules/openai/lib/EventStream.mjs +163 -0
- package/esm/node_modules/openai/lib/EventStream.mjs.map +1 -0
- package/esm/node_modules/openai/lib/ResponsesParser.mjs +94 -0
- package/esm/node_modules/openai/lib/ResponsesParser.mjs.map +1 -0
- package/esm/node_modules/openai/lib/RunnableFunction.mjs +8 -0
- package/esm/node_modules/openai/lib/RunnableFunction.mjs.map +1 -0
- package/esm/node_modules/openai/lib/Util.mjs +19 -0
- package/esm/node_modules/openai/lib/Util.mjs.map +1 -0
- package/esm/node_modules/openai/lib/chatCompletionUtils.mjs +11 -0
- package/esm/node_modules/openai/lib/chatCompletionUtils.mjs.map +1 -0
- package/esm/node_modules/openai/lib/parser.mjs +88 -0
- package/esm/node_modules/openai/lib/parser.mjs.map +1 -0
- package/esm/node_modules/openai/lib/responses/ResponseStream.mjs +231 -0
- package/esm/node_modules/openai/lib/responses/ResponseStream.mjs.map +1 -0
- package/esm/node_modules/openai/resources/admin/admin.mjs +15 -0
- package/esm/node_modules/openai/resources/admin/admin.mjs.map +1 -0
- package/esm/node_modules/openai/resources/admin/organization/admin-api-keys.mjs +81 -0
- package/esm/node_modules/openai/resources/admin/organization/admin-api-keys.mjs.map +1 -0
- package/esm/node_modules/openai/resources/admin/organization/audit-logs.mjs +31 -0
- package/esm/node_modules/openai/resources/admin/organization/audit-logs.mjs.map +1 -0
- package/esm/node_modules/openai/resources/admin/organization/certificates.mjs +153 -0
- package/esm/node_modules/openai/resources/admin/organization/certificates.mjs.map +1 -0
- package/esm/node_modules/openai/resources/admin/organization/data-retention.mjs +42 -0
- package/esm/node_modules/openai/resources/admin/organization/data-retention.mjs.map +1 -0
- package/esm/node_modules/openai/resources/admin/organization/groups/groups.mjs +106 -0
- package/esm/node_modules/openai/resources/admin/organization/groups/groups.mjs.map +1 -0
- package/esm/node_modules/openai/resources/admin/organization/groups/roles.mjs +88 -0
- package/esm/node_modules/openai/resources/admin/organization/groups/roles.mjs.map +1 -0
- package/esm/node_modules/openai/resources/admin/organization/groups/users.mjs +88 -0
- package/esm/node_modules/openai/resources/admin/organization/groups/users.mjs.map +1 -0
- package/esm/node_modules/openai/resources/admin/organization/invites.mjs +83 -0
- package/esm/node_modules/openai/resources/admin/organization/invites.mjs.map +1 -0
- package/esm/node_modules/openai/resources/admin/organization/organization.mjs +45 -0
- package/esm/node_modules/openai/resources/admin/organization/organization.mjs.map +1 -0
- package/esm/node_modules/openai/resources/admin/organization/projects/api-keys.mjs +72 -0
- package/esm/node_modules/openai/resources/admin/organization/projects/api-keys.mjs.map +1 -0
- package/esm/node_modules/openai/resources/admin/organization/projects/certificates.mjs +78 -0
- package/esm/node_modules/openai/resources/admin/organization/projects/certificates.mjs.map +1 -0
- package/esm/node_modules/openai/resources/admin/organization/projects/data-retention.mjs +46 -0
- package/esm/node_modules/openai/resources/admin/organization/projects/data-retention.mjs.map +1 -0
- package/esm/node_modules/openai/resources/admin/organization/projects/groups/groups.mjs +95 -0
- package/esm/node_modules/openai/resources/admin/organization/projects/groups/groups.mjs.map +1 -0
- package/esm/node_modules/openai/resources/admin/organization/projects/groups/roles.mjs +91 -0
- package/esm/node_modules/openai/resources/admin/organization/projects/groups/roles.mjs.map +1 -0
- package/esm/node_modules/openai/resources/admin/organization/projects/hosted-tool-permissions.mjs +45 -0
- package/esm/node_modules/openai/resources/admin/organization/projects/hosted-tool-permissions.mjs.map +1 -0
- package/esm/node_modules/openai/resources/admin/organization/projects/model-permissions.mjs +63 -0
- package/esm/node_modules/openai/resources/admin/organization/projects/model-permissions.mjs.map +1 -0
- package/esm/node_modules/openai/resources/admin/organization/projects/projects.mjs +137 -0
- package/esm/node_modules/openai/resources/admin/organization/projects/projects.mjs.map +1 -0
- package/esm/node_modules/openai/resources/admin/organization/projects/rate-limits.mjs +51 -0
- package/esm/node_modules/openai/resources/admin/organization/projects/rate-limits.mjs.map +1 -0
- package/esm/node_modules/openai/resources/admin/organization/projects/roles.mjs +108 -0
- package/esm/node_modules/openai/resources/admin/organization/projects/roles.mjs.map +1 -0
- package/esm/node_modules/openai/resources/admin/organization/projects/service-accounts.mjs +112 -0
- package/esm/node_modules/openai/resources/admin/organization/projects/service-accounts.mjs.map +1 -0
- package/esm/node_modules/openai/resources/admin/organization/projects/spend-alerts.mjs +106 -0
- package/esm/node_modules/openai/resources/admin/organization/projects/spend-alerts.mjs.map +1 -0
- package/esm/node_modules/openai/resources/admin/organization/projects/users/roles.mjs +91 -0
- package/esm/node_modules/openai/resources/admin/organization/projects/users/roles.mjs.map +1 -0
- package/esm/node_modules/openai/resources/admin/organization/projects/users/users.mjs +118 -0
- package/esm/node_modules/openai/resources/admin/organization/projects/users/users.mjs.map +1 -0
- package/esm/node_modules/openai/resources/admin/organization/roles.mjs +96 -0
- package/esm/node_modules/openai/resources/admin/organization/roles.mjs.map +1 -0
- package/esm/node_modules/openai/resources/admin/organization/spend-alerts.mjs +97 -0
- package/esm/node_modules/openai/resources/admin/organization/spend-alerts.mjs.map +1 -0
- package/esm/node_modules/openai/resources/admin/organization/usage.mjs +207 -0
- package/esm/node_modules/openai/resources/admin/organization/usage.mjs.map +1 -0
- package/esm/node_modules/openai/resources/admin/organization/users/roles.mjs +88 -0
- package/esm/node_modules/openai/resources/admin/organization/users/roles.mjs.map +1 -0
- package/esm/node_modules/openai/resources/admin/organization/users/users.mjs +82 -0
- package/esm/node_modules/openai/resources/admin/organization/users/users.mjs.map +1 -0
- package/esm/node_modules/openai/resources/audio/audio.mjs +21 -0
- package/esm/node_modules/openai/resources/audio/audio.mjs.map +1 -0
- package/esm/node_modules/openai/resources/audio/speech.mjs +39 -0
- package/esm/node_modules/openai/resources/audio/speech.mjs.map +1 -0
- package/esm/node_modules/openai/resources/audio/transcriptions.mjs +22 -0
- package/esm/node_modules/openai/resources/audio/transcriptions.mjs.map +1 -0
- package/esm/node_modules/openai/resources/audio/translations.mjs +21 -0
- package/esm/node_modules/openai/resources/audio/translations.mjs.map +1 -0
- package/esm/node_modules/openai/resources/batches.mjs +54 -0
- package/esm/node_modules/openai/resources/batches.mjs.map +1 -0
- package/esm/node_modules/openai/resources/beta/assistants.mjs +78 -0
- package/esm/node_modules/openai/resources/beta/assistants.mjs.map +1 -0
- package/esm/node_modules/openai/resources/beta/beta.mjs +24 -0
- package/esm/node_modules/openai/resources/beta/beta.mjs.map +1 -0
- package/esm/node_modules/openai/resources/beta/chatkit/chatkit.mjs +18 -0
- package/esm/node_modules/openai/resources/beta/chatkit/chatkit.mjs.map +1 -0
- package/esm/node_modules/openai/resources/beta/chatkit/sessions.mjs +49 -0
- package/esm/node_modules/openai/resources/beta/chatkit/sessions.mjs.map +1 -0
- package/esm/node_modules/openai/resources/beta/chatkit/threads.mjs +85 -0
- package/esm/node_modules/openai/resources/beta/chatkit/threads.mjs.map +1 -0
- package/esm/node_modules/openai/resources/beta/realtime/realtime.mjs +21 -0
- package/esm/node_modules/openai/resources/beta/realtime/realtime.mjs.map +1 -0
- package/esm/node_modules/openai/resources/beta/realtime/sessions.mjs +33 -0
- package/esm/node_modules/openai/resources/beta/realtime/sessions.mjs.map +1 -0
- package/esm/node_modules/openai/resources/beta/realtime/transcription-sessions.mjs +33 -0
- package/esm/node_modules/openai/resources/beta/realtime/transcription-sessions.mjs.map +1 -0
- package/esm/node_modules/openai/resources/beta/threads/messages.mjs +83 -0
- package/esm/node_modules/openai/resources/beta/threads/messages.mjs.map +1 -0
- package/esm/node_modules/openai/resources/beta/threads/runs/runs.mjs +183 -0
- package/esm/node_modules/openai/resources/beta/threads/runs/runs.mjs.map +1 -0
- package/esm/node_modules/openai/resources/beta/threads/runs/steps.mjs +45 -0
- package/esm/node_modules/openai/resources/beta/threads/runs/steps.mjs.map +1 -0
- package/esm/node_modules/openai/resources/beta/threads/threads.mjs +101 -0
- package/esm/node_modules/openai/resources/beta/threads/threads.mjs.map +1 -0
- package/esm/node_modules/openai/resources/chat/chat.mjs +15 -0
- package/esm/node_modules/openai/resources/chat/chat.mjs.map +1 -0
- package/esm/node_modules/openai/resources/chat/completions/completions.mjs +123 -0
- package/esm/node_modules/openai/resources/chat/completions/completions.mjs.map +1 -0
- package/esm/node_modules/openai/resources/chat/completions/index.mjs +7 -0
- package/esm/node_modules/openai/resources/chat/completions/messages.mjs +35 -0
- package/esm/node_modules/openai/resources/chat/completions/messages.mjs.map +1 -0
- package/esm/node_modules/openai/resources/chat/index.mjs +5 -0
- package/esm/node_modules/openai/resources/completions.mjs +20 -0
- package/esm/node_modules/openai/resources/completions.mjs.map +1 -0
- package/esm/node_modules/openai/resources/containers/containers.mjs +57 -0
- package/esm/node_modules/openai/resources/containers/containers.mjs.map +1 -0
- package/esm/node_modules/openai/resources/containers/files/content.mjs +23 -0
- package/esm/node_modules/openai/resources/containers/files/content.mjs.map +1 -0
- package/esm/node_modules/openai/resources/containers/files/files.mjs +63 -0
- package/esm/node_modules/openai/resources/containers/files/files.mjs.map +1 -0
- package/esm/node_modules/openai/resources/conversations/conversations.mjs +57 -0
- package/esm/node_modules/openai/resources/conversations/conversations.mjs.map +1 -0
- package/esm/node_modules/openai/resources/conversations/items.mjs +57 -0
- package/esm/node_modules/openai/resources/conversations/items.mjs.map +1 -0
- package/esm/node_modules/openai/resources/embeddings.mjs +48 -0
- package/esm/node_modules/openai/resources/embeddings.mjs.map +1 -0
- package/esm/node_modules/openai/resources/evals/evals.mjs +73 -0
- package/esm/node_modules/openai/resources/evals/evals.mjs.map +1 -0
- package/esm/node_modules/openai/resources/evals/runs/output-items.mjs +35 -0
- package/esm/node_modules/openai/resources/evals/runs/output-items.mjs.map +1 -0
- package/esm/node_modules/openai/resources/evals/runs/runs.mjs +72 -0
- package/esm/node_modules/openai/resources/evals/runs/runs.mjs.map +1 -0
- package/esm/node_modules/openai/resources/files.mjs +111 -0
- package/esm/node_modules/openai/resources/files.mjs.map +1 -0
- package/esm/node_modules/openai/resources/fine-tuning/alpha/alpha.mjs +15 -0
- package/esm/node_modules/openai/resources/fine-tuning/alpha/alpha.mjs.map +1 -0
- package/esm/node_modules/openai/resources/fine-tuning/alpha/graders.mjs +60 -0
- package/esm/node_modules/openai/resources/fine-tuning/alpha/graders.mjs.map +1 -0
- package/esm/node_modules/openai/resources/fine-tuning/checkpoints/checkpoints.mjs +15 -0
- package/esm/node_modules/openai/resources/fine-tuning/checkpoints/checkpoints.mjs.map +1 -0
- package/esm/node_modules/openai/resources/fine-tuning/checkpoints/permissions.mjs +102 -0
- package/esm/node_modules/openai/resources/fine-tuning/checkpoints/permissions.mjs.map +1 -0
- package/esm/node_modules/openai/resources/fine-tuning/fine-tuning.mjs +24 -0
- package/esm/node_modules/openai/resources/fine-tuning/fine-tuning.mjs.map +1 -0
- package/esm/node_modules/openai/resources/fine-tuning/jobs/checkpoints.mjs +34 -0
- package/esm/node_modules/openai/resources/fine-tuning/jobs/checkpoints.mjs.map +1 -0
- package/esm/node_modules/openai/resources/fine-tuning/jobs/jobs.mjs +148 -0
- package/esm/node_modules/openai/resources/fine-tuning/jobs/jobs.mjs.map +1 -0
- package/esm/node_modules/openai/resources/fine-tuning/methods.mjs +8 -0
- package/esm/node_modules/openai/resources/fine-tuning/methods.mjs.map +1 -0
- package/esm/node_modules/openai/resources/graders/grader-models.mjs +8 -0
- package/esm/node_modules/openai/resources/graders/grader-models.mjs.map +1 -0
- package/esm/node_modules/openai/resources/graders/graders.mjs +15 -0
- package/esm/node_modules/openai/resources/graders/graders.mjs.map +1 -0
- package/esm/node_modules/openai/resources/images.mjs +46 -0
- package/esm/node_modules/openai/resources/images.mjs.map +1 -0
- package/esm/node_modules/openai/resources/index.mjs +27 -0
- package/esm/node_modules/openai/resources/models.mjs +44 -0
- package/esm/node_modules/openai/resources/models.mjs.map +1 -0
- package/esm/node_modules/openai/resources/moderations.mjs +23 -0
- package/esm/node_modules/openai/resources/moderations.mjs.map +1 -0
- package/esm/node_modules/openai/resources/realtime/calls.mjs +79 -0
- package/esm/node_modules/openai/resources/realtime/calls.mjs.map +1 -0
- package/esm/node_modules/openai/resources/realtime/client-secrets.mjs +39 -0
- package/esm/node_modules/openai/resources/realtime/client-secrets.mjs.map +1 -0
- package/esm/node_modules/openai/resources/realtime/realtime.mjs +18 -0
- package/esm/node_modules/openai/resources/realtime/realtime.mjs.map +1 -0
- package/esm/node_modules/openai/resources/responses/input-items.mjs +31 -0
- package/esm/node_modules/openai/resources/responses/input-items.mjs.map +1 -0
- package/esm/node_modules/openai/resources/responses/input-tokens.mjs +27 -0
- package/esm/node_modules/openai/resources/responses/input-tokens.mjs.map +1 -0
- package/esm/node_modules/openai/resources/responses/responses.mjs +110 -0
- package/esm/node_modules/openai/resources/responses/responses.mjs.map +1 -0
- package/esm/node_modules/openai/resources/skills/content.mjs +22 -0
- package/esm/node_modules/openai/resources/skills/content.mjs.map +1 -0
- package/esm/node_modules/openai/resources/skills/skills.mjs +69 -0
- package/esm/node_modules/openai/resources/skills/skills.mjs.map +1 -0
- package/esm/node_modules/openai/resources/skills/versions/content.mjs +23 -0
- package/esm/node_modules/openai/resources/skills/versions/content.mjs.map +1 -0
- package/esm/node_modules/openai/resources/skills/versions/versions.mjs +58 -0
- package/esm/node_modules/openai/resources/skills/versions/versions.mjs.map +1 -0
- package/esm/node_modules/openai/resources/uploads/parts.mjs +34 -0
- package/esm/node_modules/openai/resources/uploads/parts.mjs.map +1 -0
- package/esm/node_modules/openai/resources/uploads/uploads.mjs +84 -0
- package/esm/node_modules/openai/resources/uploads/uploads.mjs.map +1 -0
- package/esm/node_modules/openai/resources/vector-stores/file-batches.mjs +126 -0
- package/esm/node_modules/openai/resources/vector-stores/file-batches.mjs.map +1 -0
- package/esm/node_modules/openai/resources/vector-stores/files.mjs +147 -0
- package/esm/node_modules/openai/resources/vector-stores/files.mjs.map +1 -0
- package/esm/node_modules/openai/resources/vector-stores/vector-stores.mjs +87 -0
- package/esm/node_modules/openai/resources/vector-stores/vector-stores.mjs.map +1 -0
- package/esm/node_modules/openai/resources/videos.mjs +115 -0
- package/esm/node_modules/openai/resources/videos.mjs.map +1 -0
- package/esm/node_modules/openai/resources/webhooks/index.mjs +3 -0
- package/esm/node_modules/openai/resources/webhooks/webhooks.mjs +69 -0
- package/esm/node_modules/openai/resources/webhooks/webhooks.mjs.map +1 -0
- package/esm/node_modules/openai/resources/webhooks.mjs +4 -0
- package/esm/node_modules/openai/streaming.mjs +3 -0
- package/esm/node_modules/openai/version.mjs +6 -0
- package/esm/node_modules/openai/version.mjs.map +1 -0
- package/esm/repositories/adapters/cascade/cascade-query-builder.d.mts +9 -0
- package/esm/repositories/adapters/cascade/cascade-query-builder.d.mts.map +1 -1
- package/esm/repositories/adapters/cascade/cascade-query-builder.mjs +32 -5
- package/esm/repositories/adapters/cascade/cascade-query-builder.mjs.map +1 -1
- package/esm/repositories/adapters/cascade/filter-applicator.mjs +17 -3
- package/esm/repositories/adapters/cascade/filter-applicator.mjs.map +1 -1
- package/esm/repositories/repository.manager.d.mts +11 -1
- package/esm/repositories/repository.manager.d.mts.map +1 -1
- package/esm/repositories/repository.manager.mjs +79 -25
- package/esm/repositories/repository.manager.mjs.map +1 -1
- package/esm/router/route-registry.mjs +19 -10
- package/esm/router/route-registry.mjs.map +1 -1
- package/esm/router/router.d.mts.map +1 -1
- package/esm/router/router.mjs +7 -4
- package/esm/router/router.mjs.map +1 -1
- package/esm/storage/drivers/cloud-driver.d.mts.map +1 -1
- package/esm/storage/drivers/cloud-driver.mjs +48 -12
- package/esm/storage/drivers/cloud-driver.mjs.map +1 -1
- package/esm/storage/drivers/do-spaces-driver.mjs +1 -1
- package/esm/storage/drivers/do-spaces-driver.mjs.map +1 -1
- package/esm/storage/drivers/local-driver.d.mts +8 -0
- package/esm/storage/drivers/local-driver.d.mts.map +1 -1
- package/esm/storage/drivers/local-driver.mjs +19 -4
- package/esm/storage/drivers/local-driver.mjs.map +1 -1
- package/esm/storage/drivers/r2-driver.mjs +1 -1
- package/esm/storage/drivers/r2-driver.mjs.map +1 -1
- package/esm/storage/drivers/s3-driver.mjs +1 -1
- package/esm/storage/drivers/s3-driver.mjs.map +1 -1
- package/esm/storage/index.d.mts +4 -1
- package/esm/storage/index.mjs +3 -0
- package/esm/storage/scoped-storage.d.mts +8 -4
- package/esm/storage/scoped-storage.d.mts.map +1 -1
- package/esm/storage/scoped-storage.mjs +21 -6
- package/esm/storage/scoped-storage.mjs.map +1 -1
- package/esm/storage/storage.d.mts +12 -4
- package/esm/storage/storage.d.mts.map +1 -1
- package/esm/storage/storage.mjs +23 -9
- package/esm/storage/storage.mjs.map +1 -1
- package/esm/storage/types.d.mts +33 -5
- package/esm/storage/types.d.mts.map +1 -1
- package/esm/storage/utils/contain-path.d.mts +23 -0
- package/esm/storage/utils/contain-path.d.mts.map +1 -0
- package/esm/storage/utils/contain-path.mjs +35 -0
- package/esm/storage/utils/contain-path.mjs.map +1 -0
- package/esm/storage/utils/safe-fetch.d.mts +68 -0
- package/esm/storage/utils/safe-fetch.d.mts.map +1 -0
- package/esm/storage/utils/safe-fetch.mjs +205 -0
- package/esm/storage/utils/safe-fetch.mjs.map +1 -0
- package/esm/storage/utils/storage-error.d.mts +35 -0
- package/esm/storage/utils/storage-error.d.mts.map +1 -0
- package/esm/storage/utils/storage-error.mjs +17 -0
- package/esm/storage/utils/storage-error.mjs.map +1 -0
- package/esm/use-cases/use-case-pipeline.mjs +4 -1
- package/esm/use-cases/use-case-pipeline.mjs.map +1 -1
- package/esm/use-cases/use-case.mjs +12 -4
- package/esm/use-cases/use-case.mjs.map +1 -1
- package/esm/use-cases/use-cases-registry.d.mts +12 -4
- package/esm/use-cases/use-cases-registry.d.mts.map +1 -1
- package/esm/use-cases/use-cases-registry.mjs +13 -3
- package/esm/use-cases/use-cases-registry.mjs.map +1 -1
- package/esm/utils/npm-registry.d.mts +1 -1
- package/esm/utils/npm-registry.mjs +2 -2
- package/esm/utils/npm-registry.mjs.map +1 -1
- package/llms-full.txt +29 -1
- package/package.json +9 -9
- package/skills/add-connector/SKILL.md +6 -1
- package/skills/configure-app/SKILL.md +23 -0
|
@@ -0,0 +1,614 @@
|
|
|
1
|
+
import { AIError } from "../errors/ai-error.mjs";
|
|
2
|
+
import { PlannerFailedError } from "../errors/planner-failed-error.mjs";
|
|
3
|
+
import { PlannerCancelledError } from "../errors/planner-cancelled-error.mjs";
|
|
4
|
+
import { PlannerPlanInvalidError } from "../errors/planner-plan-invalid-error.mjs";
|
|
5
|
+
import { SchemaValidationError } from "../errors/schema-validation-error.mjs";
|
|
6
|
+
import { accumulateCost } from "../utils/compute-cost.mjs";
|
|
7
|
+
import { generateRunId } from "../utils/generate-run-id.mjs";
|
|
8
|
+
import { captureChildReport, withoutRunFrame } from "../utils/run-context.mjs";
|
|
9
|
+
import { stampReportLineage } from "../utils/stamp-report-lineage.mjs";
|
|
10
|
+
import { notifyObservers } from "../observe/resolve-observers.mjs";
|
|
11
|
+
import { buildDag, readyNodes, sinkNodes } from "./dag-scheduler.mjs";
|
|
12
|
+
import { planSchema } from "./plan-schema.mjs";
|
|
13
|
+
|
|
14
|
+
//#region ../@warlock.js/ai/src/planner/planner-run.ts
|
|
15
|
+
/**
|
|
16
|
+
* Per-call orchestration state for one `planner.execute()` invocation.
|
|
17
|
+
*
|
|
18
|
+
* **Role.** Owns the full bounded-v1 planning lifecycle across four
|
|
19
|
+
* phases that share mutable accumulators: (1) ask the LLM to GENERATE a
|
|
20
|
+
* plan, (2) execute each plan step through its capability's `execute()`,
|
|
21
|
+
* (3) optionally validate the final output, (4) assemble the unified
|
|
22
|
+
* {@link PlannerResult}. Instantiated fresh per call inside the factory
|
|
23
|
+
* so the accumulators (`usage`, `children`, `executedSteps`) are never
|
|
24
|
+
* shared across runs. Unexported — callers only ever see the plain
|
|
25
|
+
* {@link PlannerResult}.
|
|
26
|
+
*
|
|
27
|
+
* **Composition, not a fork.** Plan generation runs through a normal
|
|
28
|
+
* `agent.execute()`; each step runs through the capability's own
|
|
29
|
+
* `executable.execute()`. The planner adds the plan-generation brain and
|
|
30
|
+
* the ordered-dispatch loop on top of the existing executable machinery —
|
|
31
|
+
* it does not reimplement agent or step internals.
|
|
32
|
+
*/
|
|
33
|
+
var PlannerRun = class {
|
|
34
|
+
constructor(args) {
|
|
35
|
+
this.args = args;
|
|
36
|
+
this.startedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
37
|
+
this.startPerf = performance.now();
|
|
38
|
+
this.usage = {
|
|
39
|
+
input: 0,
|
|
40
|
+
output: 0,
|
|
41
|
+
total: 0
|
|
42
|
+
};
|
|
43
|
+
this.children = [];
|
|
44
|
+
this.executedSteps = [];
|
|
45
|
+
this.awaitingApproval = false;
|
|
46
|
+
this.replanCount = 0;
|
|
47
|
+
this.runId = args.options?.runId ?? generateRunId("planner");
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Run the planner end-to-end. Never throws on runtime failure —
|
|
51
|
+
* generation errors, plan-validity errors, step failures, and
|
|
52
|
+
* cancellation all surface on `result.error` with a narrowing
|
|
53
|
+
* `report.status`.
|
|
54
|
+
*/
|
|
55
|
+
async run() {
|
|
56
|
+
const result = await this.runPlan();
|
|
57
|
+
await notifyObservers(this.args.config.observe, result.report);
|
|
58
|
+
captureChildReport(result.report);
|
|
59
|
+
return result;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Drive the planner lifecycle and return the built result WITHOUT
|
|
63
|
+
* routing it — `run()` owns observer routing + auto-nesting so the
|
|
64
|
+
* unified tree is emitted exactly once.
|
|
65
|
+
*/
|
|
66
|
+
async runPlan() {
|
|
67
|
+
try {
|
|
68
|
+
if (this.isAborted()) {
|
|
69
|
+
this.markCancelled();
|
|
70
|
+
return this.buildResult();
|
|
71
|
+
}
|
|
72
|
+
const plan = this.args.options?.approvedPlan ?? await this.generatePlan();
|
|
73
|
+
if (this.error || !plan) return this.buildResult();
|
|
74
|
+
this.assertPlanValid(plan);
|
|
75
|
+
if (this.error) return this.buildResult();
|
|
76
|
+
this.plan = plan;
|
|
77
|
+
if (this.args.options?.mode === "plan-only" && !this.args.options?.approvedPlan) {
|
|
78
|
+
this.awaitingApproval = true;
|
|
79
|
+
return this.buildResult();
|
|
80
|
+
}
|
|
81
|
+
await this.executePlan(plan);
|
|
82
|
+
await this.finalizeOutput();
|
|
83
|
+
} catch (caught) {
|
|
84
|
+
this.error = this.toAIError(caught);
|
|
85
|
+
}
|
|
86
|
+
return this.buildResult();
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Phase 1 — ask the planning agent for a structured plan. The plan
|
|
90
|
+
* schema (built from the live capability names) is supplied as the
|
|
91
|
+
* agent's per-call `output`, so the model is steered to reference only
|
|
92
|
+
* real capabilities. The planning trip's usage + report roll into the
|
|
93
|
+
* planner's totals regardless of outcome.
|
|
94
|
+
*
|
|
95
|
+
* `feedback` is set only on a RE-plan: the regenerated request is
|
|
96
|
+
* seeded with the executed-step digest plus the caller's feedback so
|
|
97
|
+
* the planner revises the remaining work rather than starting cold.
|
|
98
|
+
*/
|
|
99
|
+
async generatePlan(feedback) {
|
|
100
|
+
const schema = planSchema([...this.args.capabilities.keys()], this.args.maxSteps);
|
|
101
|
+
const result = await withoutRunFrame(() => this.args.planningAgent.execute(this.buildPlanPrompt(feedback), {
|
|
102
|
+
output: schema,
|
|
103
|
+
placeholders: this.args.options?.placeholders,
|
|
104
|
+
signal: this.args.options?.signal,
|
|
105
|
+
sessionId: this.args.options?.sessionId
|
|
106
|
+
}));
|
|
107
|
+
this.absorb(result.usage, result.report);
|
|
108
|
+
if (result.error) {
|
|
109
|
+
this.error = result.error instanceof SchemaValidationError ? new PlannerPlanInvalidError(`ai.planner("${this.args.config.name}"): the planner produced no usable plan`, {
|
|
110
|
+
cause: result.error,
|
|
111
|
+
context: { runId: this.runId }
|
|
112
|
+
}) : result.error;
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
const plan = result.data;
|
|
116
|
+
if (!plan || !Array.isArray(plan.steps) || plan.steps.length === 0) {
|
|
117
|
+
this.error = new PlannerPlanInvalidError(`ai.planner("${this.args.config.name}"): the planner produced no usable plan`, { context: { runId: this.runId } });
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
this.assertPlanValid(plan);
|
|
121
|
+
if (this.error) return;
|
|
122
|
+
return plan;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Shared plan-validity guard — used both for a freshly generated plan
|
|
126
|
+
* and for a caller-supplied `approvedPlan`. Sets `this.error` to a
|
|
127
|
+
* typed {@link PlannerPlanInvalidError} when the plan is empty or names
|
|
128
|
+
* an unknown capability; a stale `approvedPlan` thus fails the same way
|
|
129
|
+
* a hallucinated capability does, never silently mis-dispatching.
|
|
130
|
+
*/
|
|
131
|
+
assertPlanValid(plan) {
|
|
132
|
+
if (!Array.isArray(plan.steps) || plan.steps.length === 0) {
|
|
133
|
+
this.error = new PlannerPlanInvalidError(`ai.planner("${this.args.config.name}"): the planner produced no usable plan`, { context: { runId: this.runId } });
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
const unknownStep = plan.steps.find((step) => !this.args.capabilities.has(step.capability));
|
|
137
|
+
if (unknownStep) this.error = new PlannerPlanInvalidError(`ai.planner("${this.args.config.name}"): plan references unknown capability "${unknownStep.capability}"`, { context: {
|
|
138
|
+
runId: this.runId,
|
|
139
|
+
capability: unknownStep.capability
|
|
140
|
+
} });
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Phase 2 — execute the plan. Branches on `config.dag`: the default is
|
|
144
|
+
* the strict array-order sequential loop (byte-for-byte today's
|
|
145
|
+
* behavior when neither `onStep` nor `replan` is configured); `dag:
|
|
146
|
+
* true` schedules independent `dependsOn` branches in parallel.
|
|
147
|
+
*/
|
|
148
|
+
async executePlan(plan) {
|
|
149
|
+
if (this.args.config.dag) return this.executeDag(plan);
|
|
150
|
+
return this.executeSequential(plan);
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Sequential executor — the original strict array-order loop, threading
|
|
154
|
+
* each completed step's output into the next step's input context.
|
|
155
|
+
* Stops at the first step failure or when the abort signal fires
|
|
156
|
+
* between steps; steps beyond `maxSteps` are recorded `skipped`.
|
|
157
|
+
*
|
|
158
|
+
* **Additive hooks (inert by default).** After each step settles it
|
|
159
|
+
* fires the `onStep` directive hook; an `abort` directive stops the run
|
|
160
|
+
* like a failure, and a `replan` directive (or, when `config.replan` is
|
|
161
|
+
* set, an unhandled failure) regenerates the REMAINING plan instead of
|
|
162
|
+
* aborting. With no `onStep` and no `replan`, the behavior is identical
|
|
163
|
+
* to before.
|
|
164
|
+
*/
|
|
165
|
+
async executeSequential(plan) {
|
|
166
|
+
const previousOutputs = [];
|
|
167
|
+
let steps = plan.steps;
|
|
168
|
+
let index = 0;
|
|
169
|
+
while (index < steps.length) {
|
|
170
|
+
const step = steps[index];
|
|
171
|
+
if (index >= this.args.maxSteps) {
|
|
172
|
+
this.recordSkipped(index, step);
|
|
173
|
+
index++;
|
|
174
|
+
continue;
|
|
175
|
+
}
|
|
176
|
+
if (this.isAborted()) {
|
|
177
|
+
this.markCancelled();
|
|
178
|
+
this.recordSkipped(index, step);
|
|
179
|
+
index++;
|
|
180
|
+
continue;
|
|
181
|
+
}
|
|
182
|
+
const completed = await this.executeStep(index, step, previousOutputs);
|
|
183
|
+
const snapshot = this.snapshotFor(index);
|
|
184
|
+
const directive = snapshot ? await this.resolveDirective(snapshot, plan, completed) : void 0;
|
|
185
|
+
if (directive?.type === "replan") {
|
|
186
|
+
const remaining = await this.regeneratePlan(directive.feedback);
|
|
187
|
+
if (this.error || !remaining) {
|
|
188
|
+
this.skipRest(steps, index + 1);
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
steps = remaining.steps;
|
|
192
|
+
index = 0;
|
|
193
|
+
previousOutputs.length = 0;
|
|
194
|
+
previousOutputs.push(...this.executedDigest());
|
|
195
|
+
continue;
|
|
196
|
+
}
|
|
197
|
+
if (directive?.type === "abort") {
|
|
198
|
+
this.skipRest(steps, index + 1);
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
index++;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* DAG executor — schedule independent `dependsOn` branches in parallel.
|
|
206
|
+
*
|
|
207
|
+
* Builds the DAG (cycle / unknown-id → `PlannerPlanInvalidError`),
|
|
208
|
+
* then repeatedly computes the ready set (steps whose deps all
|
|
209
|
+
* completed), dispatches up to `maxConcurrency` of them with
|
|
210
|
+
* `Promise.all`, and feeds each step ONLY its dependencies' outputs. A
|
|
211
|
+
* failed step blocks just its descendants (recorded `skipped`);
|
|
212
|
+
* independent branches still settle. With an `output` schema set, the
|
|
213
|
+
* final `data` is the topological SINK's output (multiple sinks → a
|
|
214
|
+
* convergence error).
|
|
215
|
+
*/
|
|
216
|
+
async executeDag(plan) {
|
|
217
|
+
const dag = buildDag(plan.steps, this.args.config.name);
|
|
218
|
+
const maxConcurrency = Math.max(1, this.args.config.maxConcurrency ?? 4);
|
|
219
|
+
const completed = /* @__PURE__ */ new Set();
|
|
220
|
+
const done = /* @__PURE__ */ new Set();
|
|
221
|
+
const outputs = /* @__PURE__ */ new Map();
|
|
222
|
+
const rawOutputs = /* @__PURE__ */ new Map();
|
|
223
|
+
let executedCount = 0;
|
|
224
|
+
while (done.size < dag.nodes.length) {
|
|
225
|
+
if (this.isAborted()) {
|
|
226
|
+
this.markCancelled();
|
|
227
|
+
this.skipDagRest(dag, done);
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
const ready = readyNodes(dag, completed, done);
|
|
231
|
+
if (ready.length === 0) {
|
|
232
|
+
this.skipDagRest(dag, done);
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
const batch = ready.slice(0, maxConcurrency);
|
|
236
|
+
const settled = await Promise.all(batch.map(async (node) => {
|
|
237
|
+
if (executedCount >= this.args.maxSteps) {
|
|
238
|
+
this.recordSkipped(node.index, node.step);
|
|
239
|
+
return {
|
|
240
|
+
node,
|
|
241
|
+
ran: false,
|
|
242
|
+
completed: false
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
executedCount++;
|
|
246
|
+
const previousOutputs = node.dependencies.map((dependency) => outputs.get(dependency));
|
|
247
|
+
const stepCompleted = await this.executeStep(node.index, node.step, previousOutputs);
|
|
248
|
+
if (stepCompleted) {
|
|
249
|
+
const rawOutput = this.snapshotFor(node.index)?.output;
|
|
250
|
+
rawOutputs.set(node.id, rawOutput);
|
|
251
|
+
outputs.set(node.id, this.stringifyOutput(node.step.capability, rawOutput));
|
|
252
|
+
}
|
|
253
|
+
return {
|
|
254
|
+
node,
|
|
255
|
+
ran: true,
|
|
256
|
+
completed: stepCompleted
|
|
257
|
+
};
|
|
258
|
+
}));
|
|
259
|
+
for (const entry of settled) {
|
|
260
|
+
done.add(entry.node.id);
|
|
261
|
+
if (entry.completed) completed.add(entry.node.id);
|
|
262
|
+
}
|
|
263
|
+
let replanFeedback;
|
|
264
|
+
let shouldAbort = false;
|
|
265
|
+
for (const entry of settled) {
|
|
266
|
+
if (!entry.ran) continue;
|
|
267
|
+
const snapshot = this.snapshotFor(entry.node.index);
|
|
268
|
+
const directive = snapshot ? await this.resolveDirective(snapshot, plan, entry.completed) : void 0;
|
|
269
|
+
if (directive?.type === "replan") replanFeedback = directive.feedback;
|
|
270
|
+
else if (directive?.type === "abort") shouldAbort = true;
|
|
271
|
+
}
|
|
272
|
+
if (shouldAbort) {
|
|
273
|
+
this.skipDagRest(dag, done);
|
|
274
|
+
return;
|
|
275
|
+
}
|
|
276
|
+
if (replanFeedback !== void 0) {
|
|
277
|
+
const remaining = await this.regeneratePlan(replanFeedback);
|
|
278
|
+
if (this.error || !remaining) {
|
|
279
|
+
this.skipDagRest(dag, done);
|
|
280
|
+
return;
|
|
281
|
+
}
|
|
282
|
+
return this.executeDag(remaining);
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
this.finalizeDagOutput(dag, completed, rawOutputs);
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Dispatch one plan step through its capability's `executable.execute()`
|
|
289
|
+
* and fold the outcome into the accumulators. Returns `true` when the
|
|
290
|
+
* step completed, `false` when it failed (setting the run error).
|
|
291
|
+
*/
|
|
292
|
+
async executeStep(index, step, previousOutputs) {
|
|
293
|
+
const capability = this.args.capabilities.get(step.capability);
|
|
294
|
+
const stepStart = performance.now();
|
|
295
|
+
const startedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
296
|
+
const input = this.composeStepInput(step, previousOutputs);
|
|
297
|
+
const result = await withoutRunFrame(() => capability.executable.execute(input, {
|
|
298
|
+
signal: this.args.options?.signal,
|
|
299
|
+
sessionId: this.args.options?.sessionId
|
|
300
|
+
}));
|
|
301
|
+
const childReport = "report" in result ? result.report : void 0;
|
|
302
|
+
this.absorb(result.usage, childReport);
|
|
303
|
+
const output = this.extractOutput(result);
|
|
304
|
+
const failed = result.error !== void 0;
|
|
305
|
+
this.executedSteps.push({
|
|
306
|
+
index,
|
|
307
|
+
step,
|
|
308
|
+
status: failed ? "failed" : "completed",
|
|
309
|
+
output: failed ? void 0 : output,
|
|
310
|
+
error: result.error,
|
|
311
|
+
startedAt,
|
|
312
|
+
endedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
313
|
+
duration: performance.now() - stepStart,
|
|
314
|
+
usage: result.usage,
|
|
315
|
+
childReport
|
|
316
|
+
});
|
|
317
|
+
if (failed) {
|
|
318
|
+
this.error = result.error;
|
|
319
|
+
return false;
|
|
320
|
+
}
|
|
321
|
+
previousOutputs.push(this.stringifyOutput(step.capability, output));
|
|
322
|
+
this.data = output;
|
|
323
|
+
return true;
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Resolve the steering directive for a just-settled step, shared by the
|
|
327
|
+
* sequential and DAG executors. Fires the user's `onStep` hook, then
|
|
328
|
+
* normalizes the result against the `replan` budget:
|
|
329
|
+
*
|
|
330
|
+
* - explicit `replan` directive — honored only when `config.replan` is
|
|
331
|
+
* set and the budget remains; otherwise downgraded to `continue`.
|
|
332
|
+
* - explicit `abort` — honored.
|
|
333
|
+
* - failed step with no overriding directive — auto-`replan` when
|
|
334
|
+
* `config.replan` is set and the budget remains (feedback = the step
|
|
335
|
+
* error message), else `abort` (today's abort-on-first-failure).
|
|
336
|
+
*
|
|
337
|
+
* Returns `undefined` when the run should simply continue. A returned
|
|
338
|
+
* `replan` directive has ALREADY consumed one unit of the replan budget.
|
|
339
|
+
*/
|
|
340
|
+
async resolveDirective(snapshot, plan, completed) {
|
|
341
|
+
const hook = this.args.options?.onStep;
|
|
342
|
+
const userDirective = hook ? await hook(snapshot, plan) : void 0;
|
|
343
|
+
if (userDirective?.type === "replan") {
|
|
344
|
+
if (this.canReplan()) {
|
|
345
|
+
this.replanCount++;
|
|
346
|
+
return userDirective;
|
|
347
|
+
}
|
|
348
|
+
} else if (userDirective?.type === "abort") return { type: "abort" };
|
|
349
|
+
else if (userDirective?.type === "continue") return;
|
|
350
|
+
if (!completed) {
|
|
351
|
+
if (this.canReplan()) {
|
|
352
|
+
this.replanCount++;
|
|
353
|
+
return {
|
|
354
|
+
type: "replan",
|
|
355
|
+
feedback: snapshot.error?.message ?? "step failed"
|
|
356
|
+
};
|
|
357
|
+
}
|
|
358
|
+
return { type: "abort" };
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
/** Whether a re-plan is configured and the budget has room. */
|
|
362
|
+
canReplan() {
|
|
363
|
+
const replan = this.args.config.replan;
|
|
364
|
+
return replan !== void 0 && this.replanCount < replan.maxReplans;
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* Re-ask the planning agent for a plan over the REMAINING work — a
|
|
368
|
+
* second `generatePlan()` seeded with the executed-step digest plus the
|
|
369
|
+
* caller's feedback. Reuses the exact `generatePlan` plumbing (same
|
|
370
|
+
* schema, same `PlannerPlanInvalidError` handling), so a regenerated
|
|
371
|
+
* plan that is empty or names an unknown capability fails identically.
|
|
372
|
+
* The failed step's error is cleared so the regenerated plan runs
|
|
373
|
+
* cleanly; a fresh failure (or exhausted budget) re-sets it.
|
|
374
|
+
*/
|
|
375
|
+
async regeneratePlan(feedback) {
|
|
376
|
+
this.error = void 0;
|
|
377
|
+
return this.generatePlan(feedback);
|
|
378
|
+
}
|
|
379
|
+
/**
|
|
380
|
+
* The executed-so-far digest — one context line per completed step, in
|
|
381
|
+
* execution order. Seeds the regenerated plan's first step so it builds
|
|
382
|
+
* on what already ran.
|
|
383
|
+
*/
|
|
384
|
+
executedDigest() {
|
|
385
|
+
return this.executedSteps.filter((snapshot) => snapshot.status === "completed").map((snapshot) => this.stringifyOutput(snapshot.step.capability, snapshot.output));
|
|
386
|
+
}
|
|
387
|
+
/** The last-pushed snapshot for a given step index, if any. */
|
|
388
|
+
snapshotFor(index) {
|
|
389
|
+
for (let position = this.executedSteps.length - 1; position >= 0; position--) {
|
|
390
|
+
const snapshot = this.executedSteps[position];
|
|
391
|
+
if (snapshot.index === index) return snapshot;
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
/** Record every step from `from` onward (in a flat array plan) as skipped. */
|
|
395
|
+
skipRest(steps, from) {
|
|
396
|
+
for (let rest = from; rest < steps.length; rest++) this.recordSkipped(rest, steps[rest]);
|
|
397
|
+
}
|
|
398
|
+
/** Record every not-yet-`done` DAG node as skipped, in plan order. */
|
|
399
|
+
skipDagRest(dag, done) {
|
|
400
|
+
for (const node of dag.nodes) if (!done.has(node.id)) this.recordSkipped(node.index, node.step);
|
|
401
|
+
}
|
|
402
|
+
/**
|
|
403
|
+
* Set `this.data` from the DAG's topological sink for a configured
|
|
404
|
+
* `output` schema. "Last completed step" is meaningless under
|
|
405
|
+
* parallelism, so the sink (the step nothing depends on) is the
|
|
406
|
+
* unambiguous final output. Multiple sinks while an `output` schema is
|
|
407
|
+
* set is a convergence error — a typed `PlannerPlanInvalidError`.
|
|
408
|
+
*/
|
|
409
|
+
finalizeDagOutput(dag, completed, rawOutputs) {
|
|
410
|
+
if (!(this.args.options?.output ?? this.args.config.output) || this.error) return;
|
|
411
|
+
const sinks = sinkNodes(dag).filter((node) => completed.has(node.id));
|
|
412
|
+
if (sinks.length > 1) {
|
|
413
|
+
this.error = new PlannerPlanInvalidError(`ai.planner("${this.args.config.name}"): DAG has multiple sinks but an \`output\` schema is set — the plan must converge to a single final step`, { context: {
|
|
414
|
+
runId: this.runId,
|
|
415
|
+
sinks: sinks.map((node) => node.id)
|
|
416
|
+
} });
|
|
417
|
+
this.data = void 0;
|
|
418
|
+
return;
|
|
419
|
+
}
|
|
420
|
+
const sink = sinks[0];
|
|
421
|
+
this.data = sink ? rawOutputs.get(sink.id) : void 0;
|
|
422
|
+
}
|
|
423
|
+
/**
|
|
424
|
+
* Phase 3 — when an `output` schema is configured (factory or per-call
|
|
425
|
+
* override), validate the final completed step's output into typed
|
|
426
|
+
* `result.data`. A validation failure replaces the run error and flips
|
|
427
|
+
* the status to failed.
|
|
428
|
+
*/
|
|
429
|
+
async finalizeOutput() {
|
|
430
|
+
const schema = this.args.options?.output ?? this.args.config.output;
|
|
431
|
+
if (!schema || this.error) return;
|
|
432
|
+
if (this.data === void 0) {
|
|
433
|
+
this.error = new PlannerPlanInvalidError(`ai.planner("${this.args.config.name}"): plan completed without producing output for the configured \`output\` schema`, { context: { runId: this.runId } });
|
|
434
|
+
return;
|
|
435
|
+
}
|
|
436
|
+
const validation = await schema["~standard"].validate(this.data);
|
|
437
|
+
if (validation.issues) {
|
|
438
|
+
this.error = new PlannerPlanInvalidError(`ai.planner("${this.args.config.name}"): final output failed validation`, { context: {
|
|
439
|
+
runId: this.runId,
|
|
440
|
+
issues: validation.issues.map((issue) => issue.message)
|
|
441
|
+
} });
|
|
442
|
+
this.data = void 0;
|
|
443
|
+
return;
|
|
444
|
+
}
|
|
445
|
+
this.data = validation.value;
|
|
446
|
+
}
|
|
447
|
+
/**
|
|
448
|
+
* Phase 4 — fold the accumulators into the planner's own
|
|
449
|
+
* {@link PlannerReport} node and the final {@link PlannerResult}, then
|
|
450
|
+
* stamp lineage across the whole subtree so every child shares this
|
|
451
|
+
* run's root id.
|
|
452
|
+
*/
|
|
453
|
+
buildResult() {
|
|
454
|
+
const status = this.resolveStatus();
|
|
455
|
+
const report = {
|
|
456
|
+
runId: this.runId,
|
|
457
|
+
rootRunId: this.runId,
|
|
458
|
+
name: this.args.config.name,
|
|
459
|
+
version: this.args.config.version,
|
|
460
|
+
type: "planner",
|
|
461
|
+
status,
|
|
462
|
+
...this.error ? { error: this.error } : {},
|
|
463
|
+
startedAt: this.startedAt,
|
|
464
|
+
endedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
465
|
+
duration: performance.now() - this.startPerf,
|
|
466
|
+
usage: this.usage,
|
|
467
|
+
children: this.children,
|
|
468
|
+
signature: this.args.signature,
|
|
469
|
+
plan: this.plan,
|
|
470
|
+
executedSteps: this.executedSteps,
|
|
471
|
+
cancelledAt: this.cancelledAt,
|
|
472
|
+
reportSchemaVersion: 1
|
|
473
|
+
};
|
|
474
|
+
stampReportLineage(report, {
|
|
475
|
+
rootRunId: this.runId,
|
|
476
|
+
sessionId: this.args.options?.sessionId
|
|
477
|
+
});
|
|
478
|
+
const result = {
|
|
479
|
+
type: "planner",
|
|
480
|
+
data: this.error ? void 0 : this.data,
|
|
481
|
+
error: this.error,
|
|
482
|
+
usage: this.usage,
|
|
483
|
+
report
|
|
484
|
+
};
|
|
485
|
+
if (this.awaitingApproval) result.plan = this.plan;
|
|
486
|
+
return result;
|
|
487
|
+
}
|
|
488
|
+
/**
|
|
489
|
+
* Resolve the terminal status from the accumulated outcome.
|
|
490
|
+
* `awaiting-approval` (plan-only short-circuit) wins over everything —
|
|
491
|
+
* nothing executed, so neither cancellation nor error applies.
|
|
492
|
+
* Otherwise cancelled wins over failed (an abort that also produced a
|
|
493
|
+
* step error still reads as cancelled); failed wins over completed.
|
|
494
|
+
*/
|
|
495
|
+
resolveStatus() {
|
|
496
|
+
if (this.awaitingApproval) return "awaiting-approval";
|
|
497
|
+
if (this.cancelledAt !== void 0) return "cancelled";
|
|
498
|
+
if (this.error) return "failed";
|
|
499
|
+
return "completed";
|
|
500
|
+
}
|
|
501
|
+
/**
|
|
502
|
+
* Build the prompt handed to the planning agent. On the first pass this
|
|
503
|
+
* is just the user's goal (byte-for-byte unchanged). On a RE-plan it
|
|
504
|
+
* prepends the executed-step digest and the steering feedback so the
|
|
505
|
+
* planner revises the remaining work.
|
|
506
|
+
*/
|
|
507
|
+
buildPlanPrompt(feedback) {
|
|
508
|
+
if (feedback === void 0) return this.args.goal;
|
|
509
|
+
const digest = this.executedDigest();
|
|
510
|
+
const sections = [`Goal: ${this.args.goal}`, ""];
|
|
511
|
+
if (digest.length > 0) sections.push("Steps already completed:", ...digest, "");
|
|
512
|
+
sections.push(`Feedback requiring a revised plan: ${feedback}`, "", "Produce a plan for the REMAINING work only.");
|
|
513
|
+
return sections.join("\n");
|
|
514
|
+
}
|
|
515
|
+
/**
|
|
516
|
+
* Compose a step's effective input: the step's own `input`, prefixed
|
|
517
|
+
* with a compact digest of every prior step's output so a downstream
|
|
518
|
+
* capability can build on what ran before it. No prior output → the
|
|
519
|
+
* step's raw input.
|
|
520
|
+
*/
|
|
521
|
+
composeStepInput(step, previousOutputs) {
|
|
522
|
+
if (previousOutputs.length === 0) return step.input;
|
|
523
|
+
return [
|
|
524
|
+
"Context from earlier steps:",
|
|
525
|
+
...previousOutputs,
|
|
526
|
+
"",
|
|
527
|
+
`Task: ${step.input}`
|
|
528
|
+
].join("\n");
|
|
529
|
+
}
|
|
530
|
+
/**
|
|
531
|
+
* Pull the usable output off a capability's result. Prefers structured
|
|
532
|
+
* `data` (agents/workflows with an `output` schema, tools), and falls
|
|
533
|
+
* back to an agent's raw `text` when no structured data was produced —
|
|
534
|
+
* the common case for a plain text-producing capability agent.
|
|
535
|
+
*/
|
|
536
|
+
extractOutput(result) {
|
|
537
|
+
const shaped = result;
|
|
538
|
+
if (shaped.data !== void 0) return shaped.data;
|
|
539
|
+
if (typeof shaped.text === "string") return shaped.text;
|
|
540
|
+
}
|
|
541
|
+
/** Serialize a capability output into a single context line for the next step. */
|
|
542
|
+
stringifyOutput(capability, output) {
|
|
543
|
+
if (output === void 0) return `- ${capability}: (no output)`;
|
|
544
|
+
if (typeof output === "string") return `- ${capability}: ${output}`;
|
|
545
|
+
return `- ${capability}: ${JSON.stringify(output)}`;
|
|
546
|
+
}
|
|
547
|
+
/** Push a `skipped` snapshot for a step the planner never dispatched. */
|
|
548
|
+
recordSkipped(index, step) {
|
|
549
|
+
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
550
|
+
this.executedSteps.push({
|
|
551
|
+
index,
|
|
552
|
+
step,
|
|
553
|
+
status: "skipped",
|
|
554
|
+
startedAt: now,
|
|
555
|
+
endedAt: now,
|
|
556
|
+
duration: 0,
|
|
557
|
+
usage: {
|
|
558
|
+
input: 0,
|
|
559
|
+
output: 0,
|
|
560
|
+
total: 0
|
|
561
|
+
}
|
|
562
|
+
});
|
|
563
|
+
}
|
|
564
|
+
/** Fold a child's usage + report node into the planner's accumulators. */
|
|
565
|
+
absorb(usage, report) {
|
|
566
|
+
this.mergeUsage(this.usage, usage);
|
|
567
|
+
if (report) this.children.push(report);
|
|
568
|
+
}
|
|
569
|
+
/**
|
|
570
|
+
* Add a child's usage into the running total. Mirrors the batch
|
|
571
|
+
* primitive's rollup: scalar token channels sum directly, optional
|
|
572
|
+
* sub-channels accumulate only when reported, and the cost breakdown
|
|
573
|
+
* merges via {@link accumulateCost} so one unpriced child can't erase
|
|
574
|
+
* priced siblings.
|
|
575
|
+
*/
|
|
576
|
+
mergeUsage(target, child) {
|
|
577
|
+
target.input += child.input;
|
|
578
|
+
target.output += child.output;
|
|
579
|
+
target.total += child.total;
|
|
580
|
+
if (child.cachedTokens !== void 0) target.cachedTokens = (target.cachedTokens ?? 0) + child.cachedTokens;
|
|
581
|
+
if (child.reasoningTokens !== void 0) target.reasoningTokens = (target.reasoningTokens ?? 0) + child.reasoningTokens;
|
|
582
|
+
if (child.cacheWriteTokens !== void 0) target.cacheWriteTokens = (target.cacheWriteTokens ?? 0) + child.cacheWriteTokens;
|
|
583
|
+
const mergedCost = accumulateCost(target.cost, child.cost);
|
|
584
|
+
if (mergedCost !== void 0) target.cost = mergedCost;
|
|
585
|
+
}
|
|
586
|
+
/** Whether the caller's abort signal has fired. */
|
|
587
|
+
isAborted() {
|
|
588
|
+
return this.args.options?.signal?.aborted === true;
|
|
589
|
+
}
|
|
590
|
+
/** Record a cancellation observation, setting the run error once. */
|
|
591
|
+
markCancelled() {
|
|
592
|
+
if (this.cancelledAt !== void 0) return;
|
|
593
|
+
this.cancelledAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
594
|
+
const reason = this.args.options?.signal?.reason;
|
|
595
|
+
this.error = new PlannerCancelledError(`ai.planner("${this.args.config.name}"): run cancelled`, {
|
|
596
|
+
cancelledAt: this.cancelledAt,
|
|
597
|
+
reason: typeof reason === "string" ? reason : void 0,
|
|
598
|
+
context: { runId: this.runId }
|
|
599
|
+
});
|
|
600
|
+
}
|
|
601
|
+
/** Normalize any thrown value into a typed {@link AIError}. */
|
|
602
|
+
toAIError(caught) {
|
|
603
|
+
if (caught instanceof AIError) return caught;
|
|
604
|
+
const message = caught instanceof Error ? caught.message : String(caught);
|
|
605
|
+
return new PlannerFailedError(`ai.planner("${this.args.config.name}"): ${message}`, {
|
|
606
|
+
cause: caught,
|
|
607
|
+
context: { runId: this.runId }
|
|
608
|
+
});
|
|
609
|
+
}
|
|
610
|
+
};
|
|
611
|
+
|
|
612
|
+
//#endregion
|
|
613
|
+
export { PlannerRun };
|
|
614
|
+
//# sourceMappingURL=planner-run.mjs.map
|