@warlock.js/core 4.7.0 → 4.8.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/CHANGELOG.md +6 -0
- package/esm/config/config-getter.mjs +5 -5
- package/esm/config/config-getter.mjs.map +1 -1
- package/esm/config/config-loader.mjs +2 -2
- package/esm/config/config-loader.mjs.map +1 -1
- package/esm/connectors/access-connector.mjs +2 -2
- package/esm/connectors/access-connector.mjs.map +1 -1
- package/esm/connectors/ai-connector.mjs +3 -3
- package/esm/connectors/ai-connector.mjs.map +1 -1
- package/esm/connectors/cache-connector.mjs +2 -2
- package/esm/connectors/cache-connector.mjs.map +1 -1
- package/esm/connectors/database-connector.mjs +2 -2
- package/esm/connectors/database-connector.mjs.map +1 -1
- package/esm/connectors/herald-connector.mjs +2 -2
- package/esm/connectors/herald-connector.mjs.map +1 -1
- package/esm/connectors/http-connector.mjs +7 -7
- package/esm/connectors/http-connector.mjs.map +1 -1
- package/esm/connectors/logger-connector.mjs +2 -2
- package/esm/connectors/logger-connector.mjs.map +1 -1
- package/esm/connectors/mail-connector.mjs +2 -2
- package/esm/connectors/mail-connector.mjs.map +1 -1
- package/esm/connectors/notifications-connector.mjs +2 -2
- package/esm/connectors/notifications-connector.mjs.map +1 -1
- package/esm/connectors/socket-connector.mjs +3 -3
- package/esm/connectors/socket-connector.mjs.map +1 -1
- package/esm/http/config.mjs +2 -2
- package/esm/http/config.mjs.map +1 -1
- package/esm/http/createHttpApplication.mjs +2 -2
- package/esm/http/createHttpApplication.mjs.map +1 -1
- package/esm/http/middleware/idempotency.middleware.mjs +5 -5
- package/esm/http/middleware/idempotency.middleware.mjs.map +1 -1
- package/esm/http/middleware/inject-request-context.mjs +2 -2
- package/esm/http/middleware/inject-request-context.mjs.map +1 -1
- package/esm/http/middleware/maintenance.middleware.mjs +4 -4
- package/esm/http/middleware/maintenance.middleware.mjs.map +1 -1
- package/esm/http/plugins.mjs +9 -9
- package/esm/http/plugins.mjs.map +1 -1
- package/esm/http/response.mjs +5 -5
- package/esm/http/response.mjs.map +1 -1
- package/esm/http/server.mjs +4 -4
- package/esm/http/server.mjs.map +1 -1
- package/esm/utils/paths.mjs +2 -2
- package/esm/utils/paths.mjs.map +1 -1
- package/esm/validation/validateAll.mjs +2 -2
- package/esm/validation/validateAll.mjs.map +1 -1
- package/package.json +12 -9
- package/esm/ai/src/agent/agent-input-builder.mjs +0 -133
- package/esm/ai/src/agent/agent-input-builder.mjs.map +0 -1
- package/esm/ai/src/agent/agent-log-event.mjs +0 -101
- package/esm/ai/src/agent/agent-log-event.mjs.map +0 -1
- package/esm/ai/src/agent/agent-stream.mjs +0 -82
- package/esm/ai/src/agent/agent-stream.mjs.map +0 -1
- package/esm/ai/src/agent/agent-to-stream-event.mjs +0 -86
- package/esm/ai/src/agent/agent-to-stream-event.mjs.map +0 -1
- package/esm/ai/src/agent/agent.mjs +0 -1276
- package/esm/ai/src/agent/agent.mjs.map +0 -1
- package/esm/ai/src/agent/index.mjs +0 -5
- package/esm/ai/src/agent/json-stream-guard.mjs +0 -400
- package/esm/ai/src/agent/json-stream-guard.mjs.map +0 -1
- package/esm/ai/src/agent/signature.mjs +0 -57
- package/esm/ai/src/agent/signature.mjs.map +0 -1
- package/esm/ai/src/agent/snapshot.mjs +0 -101
- package/esm/ai/src/agent/snapshot.mjs.map +0 -1
- package/esm/ai/src/agent/spawn-sub-agent.mjs +0 -68
- package/esm/ai/src/agent/spawn-sub-agent.mjs.map +0 -1
- package/esm/ai/src/ai.mjs +0 -191
- package/esm/ai/src/ai.mjs.map +0 -1
- package/esm/ai/src/batch/batch.mjs +0 -198
- package/esm/ai/src/batch/batch.mjs.map +0 -1
- package/esm/ai/src/batch/index.mjs +0 -3
- package/esm/ai/src/batch/run-batch-item.mjs +0 -100
- package/esm/ai/src/batch/run-batch-item.mjs.map +0 -1
- package/esm/ai/src/batch/run-with-concurrency.mjs +0 -39
- package/esm/ai/src/batch/run-with-concurrency.mjs.map +0 -1
- package/esm/ai/src/checkpoint/memory.mjs +0 -0
- package/esm/ai/src/checkpoint/memory.mjs.map +0 -1
- package/esm/ai/src/checkpoint/pg.mjs +0 -265
- package/esm/ai/src/checkpoint/pg.mjs.map +0 -1
- package/esm/ai/src/checkpoint/redis.mjs +0 -200
- package/esm/ai/src/checkpoint/redis.mjs.map +0 -1
- package/esm/ai/src/config.mjs +0 -59
- package/esm/ai/src/config.mjs.map +0 -1
- package/esm/ai/src/contracts/end.type.mjs +0 -47
- package/esm/ai/src/contracts/end.type.mjs.map +0 -1
- package/esm/ai/src/errors/agent-cancelled-error.mjs +0 -43
- package/esm/ai/src/errors/agent-cancelled-error.mjs.map +0 -1
- package/esm/ai/src/errors/agent-drift-error.mjs +0 -31
- package/esm/ai/src/errors/agent-drift-error.mjs.map +0 -1
- package/esm/ai/src/errors/agent-execution-error.mjs +0 -35
- package/esm/ai/src/errors/agent-execution-error.mjs.map +0 -1
- package/esm/ai/src/errors/agent-max-trips-error.mjs +0 -41
- package/esm/ai/src/errors/agent-max-trips-error.mjs.map +0 -1
- package/esm/ai/src/errors/ai-error.mjs +0 -68
- package/esm/ai/src/errors/ai-error.mjs.map +0 -1
- package/esm/ai/src/errors/budget-exceeded-error.mjs +0 -31
- package/esm/ai/src/errors/budget-exceeded-error.mjs.map +0 -1
- package/esm/ai/src/errors/content-filter-error.mjs +0 -28
- package/esm/ai/src/errors/content-filter-error.mjs.map +0 -1
- package/esm/ai/src/errors/context-length-exceeded-error.mjs +0 -31
- package/esm/ai/src/errors/context-length-exceeded-error.mjs.map +0 -1
- package/esm/ai/src/errors/guardrail-violation-error.mjs +0 -41
- package/esm/ai/src/errors/guardrail-violation-error.mjs.map +0 -1
- package/esm/ai/src/errors/index.mjs +0 -40
- package/esm/ai/src/errors/invalid-request-error.mjs +0 -31
- package/esm/ai/src/errors/invalid-request-error.mjs.map +0 -1
- package/esm/ai/src/errors/max-iterations-error.mjs +0 -32
- package/esm/ai/src/errors/max-iterations-error.mjs.map +0 -1
- package/esm/ai/src/errors/max-steps-exceeded-error.mjs +0 -21
- package/esm/ai/src/errors/max-steps-exceeded-error.mjs.map +0 -1
- package/esm/ai/src/errors/orchestrator-cancelled-error.mjs +0 -31
- package/esm/ai/src/errors/orchestrator-cancelled-error.mjs.map +0 -1
- package/esm/ai/src/errors/orchestrator-config-error.mjs +0 -30
- package/esm/ai/src/errors/orchestrator-config-error.mjs.map +0 -1
- package/esm/ai/src/errors/orchestrator-drift-error.mjs +0 -37
- package/esm/ai/src/errors/orchestrator-drift-error.mjs.map +0 -1
- package/esm/ai/src/errors/orchestrator-failed-error.mjs +0 -36
- package/esm/ai/src/errors/orchestrator-failed-error.mjs.map +0 -1
- package/esm/ai/src/errors/outbound-policy-error.mjs +0 -32
- package/esm/ai/src/errors/outbound-policy-error.mjs.map +0 -1
- package/esm/ai/src/errors/planner-cancelled-error.mjs +0 -29
- package/esm/ai/src/errors/planner-cancelled-error.mjs.map +0 -1
- package/esm/ai/src/errors/planner-drift-error.mjs +0 -33
- package/esm/ai/src/errors/planner-drift-error.mjs.map +0 -1
- package/esm/ai/src/errors/planner-failed-error.mjs +0 -37
- package/esm/ai/src/errors/planner-failed-error.mjs.map +0 -1
- package/esm/ai/src/errors/planner-plan-invalid-error.mjs +0 -25
- package/esm/ai/src/errors/planner-plan-invalid-error.mjs.map +0 -1
- package/esm/ai/src/errors/prompt-refinement-error.mjs +0 -27
- package/esm/ai/src/errors/prompt-refinement-error.mjs.map +0 -1
- package/esm/ai/src/errors/provider-auth-error.mjs +0 -26
- package/esm/ai/src/errors/provider-auth-error.mjs.map +0 -1
- package/esm/ai/src/errors/provider-error.mjs +0 -42
- package/esm/ai/src/errors/provider-error.mjs.map +0 -1
- package/esm/ai/src/errors/provider-rate-limit-error.mjs +0 -31
- package/esm/ai/src/errors/provider-rate-limit-error.mjs.map +0 -1
- package/esm/ai/src/errors/provider-timeout-error.mjs +0 -26
- package/esm/ai/src/errors/provider-timeout-error.mjs.map +0 -1
- package/esm/ai/src/errors/quota-exceeded-error.mjs +0 -40
- package/esm/ai/src/errors/quota-exceeded-error.mjs.map +0 -1
- package/esm/ai/src/errors/routing-error.mjs +0 -23
- package/esm/ai/src/errors/routing-error.mjs.map +0 -1
- package/esm/ai/src/errors/schema-validation-error.mjs +0 -37
- package/esm/ai/src/errors/schema-validation-error.mjs.map +0 -1
- package/esm/ai/src/errors/step-failed-error.mjs +0 -19
- package/esm/ai/src/errors/step-failed-error.mjs.map +0 -1
- package/esm/ai/src/errors/supervisor-cancelled-error.mjs +0 -29
- package/esm/ai/src/errors/supervisor-cancelled-error.mjs.map +0 -1
- package/esm/ai/src/errors/supervisor-drift-error.mjs +0 -30
- package/esm/ai/src/errors/supervisor-drift-error.mjs.map +0 -1
- package/esm/ai/src/errors/supervisor-failed-error.mjs +0 -43
- package/esm/ai/src/errors/supervisor-failed-error.mjs.map +0 -1
- package/esm/ai/src/errors/supervisor-routing-error.mjs +0 -39
- package/esm/ai/src/errors/supervisor-routing-error.mjs.map +0 -1
- package/esm/ai/src/errors/tool-execution-error.mjs +0 -32
- package/esm/ai/src/errors/tool-execution-error.mjs.map +0 -1
- package/esm/ai/src/errors/workflow-cancelled-error.mjs +0 -23
- package/esm/ai/src/errors/workflow-cancelled-error.mjs.map +0 -1
- package/esm/ai/src/errors/workflow-drift-error.mjs +0 -24
- package/esm/ai/src/errors/workflow-drift-error.mjs.map +0 -1
- package/esm/ai/src/errors/workflow-error.mjs +0 -18
- package/esm/ai/src/errors/workflow-error.mjs.map +0 -1
- package/esm/ai/src/eval/dataset.mjs +0 -112
- package/esm/ai/src/eval/dataset.mjs.map +0 -1
- package/esm/ai/src/eval/eval-runner.mjs +0 -135
- package/esm/ai/src/eval/eval-runner.mjs.map +0 -1
- package/esm/ai/src/eval/index.mjs +0 -48
- package/esm/ai/src/eval/index.mjs.map +0 -1
- package/esm/ai/src/eval/judge-scorer.mjs +0 -87
- package/esm/ai/src/eval/judge-scorer.mjs.map +0 -1
- package/esm/ai/src/eval/regression.mjs +0 -51
- package/esm/ai/src/eval/regression.mjs.map +0 -1
- package/esm/ai/src/eval/report-json.mjs +0 -33
- package/esm/ai/src/eval/report-json.mjs.map +0 -1
- package/esm/ai/src/eval/report-junit.mjs +0 -60
- package/esm/ai/src/eval/report-junit.mjs.map +0 -1
- package/esm/ai/src/eval/scorers.mjs +0 -101
- package/esm/ai/src/eval/scorers.mjs.map +0 -1
- package/esm/ai/src/guard/detectors/index.mjs +0 -6
- package/esm/ai/src/guard/detectors/injection.mjs +0 -254
- package/esm/ai/src/guard/detectors/injection.mjs.map +0 -1
- package/esm/ai/src/guard/detectors/moderation.mjs +0 -134
- package/esm/ai/src/guard/detectors/moderation.mjs.map +0 -1
- package/esm/ai/src/guard/detectors/pii.mjs +0 -199
- package/esm/ai/src/guard/detectors/pii.mjs.map +0 -1
- package/esm/ai/src/guard/detectors/topic.mjs +0 -99
- package/esm/ai/src/guard/detectors/topic.mjs.map +0 -1
- package/esm/ai/src/guard/errors.mjs +0 -18
- package/esm/ai/src/guard/errors.mjs.map +0 -1
- package/esm/ai/src/guard/guard.mjs +0 -209
- package/esm/ai/src/guard/guard.mjs.map +0 -1
- package/esm/ai/src/guard/guardrail.mjs +0 -22
- package/esm/ai/src/guard/guardrail.mjs.map +0 -1
- package/esm/ai/src/human/errors.mjs +0 -60
- package/esm/ai/src/human/errors.mjs.map +0 -1
- package/esm/ai/src/human/human-approval.mjs +0 -170
- package/esm/ai/src/human/human-approval.mjs.map +0 -1
- package/esm/ai/src/human/policy.mjs +0 -67
- package/esm/ai/src/human/policy.mjs.map +0 -1
- package/esm/ai/src/human/register.mjs +0 -37
- package/esm/ai/src/human/register.mjs.map +0 -1
- package/esm/ai/src/human/resume-seed.mjs +0 -53
- package/esm/ai/src/human/resume-seed.mjs.map +0 -1
- package/esm/ai/src/human/resume.mjs +0 -121
- package/esm/ai/src/human/resume.mjs.map +0 -1
- package/esm/ai/src/human/stores/index.mjs +0 -5
- package/esm/ai/src/human/stores/memory.mjs +0 -91
- package/esm/ai/src/human/stores/memory.mjs.map +0 -1
- package/esm/ai/src/human/stores/pg.mjs +0 -220
- package/esm/ai/src/human/stores/pg.mjs.map +0 -1
- package/esm/ai/src/human/stores/redis.mjs +0 -201
- package/esm/ai/src/human/stores/redis.mjs.map +0 -1
- package/esm/ai/src/image/image-cost.mjs +0 -55
- package/esm/ai/src/image/image-cost.mjs.map +0 -1
- package/esm/ai/src/image/image.mjs +0 -112
- package/esm/ai/src/image/image.mjs.map +0 -1
- package/esm/ai/src/image/index.mjs +0 -4
- package/esm/ai/src/index.mjs +0 -196
- package/esm/ai/src/memory/derive-id.mjs +0 -24
- package/esm/ai/src/memory/derive-id.mjs.map +0 -1
- package/esm/ai/src/memory/episodic-memory.mjs +0 -106
- package/esm/ai/src/memory/episodic-memory.mjs.map +0 -1
- package/esm/ai/src/memory/memory.mjs +0 -166
- package/esm/ai/src/memory/memory.mjs.map +0 -1
- package/esm/ai/src/memory/procedural-memory.mjs +0 -103
- package/esm/ai/src/memory/procedural-memory.mjs.map +0 -1
- package/esm/ai/src/memory/semantic-memory.mjs +0 -80
- package/esm/ai/src/memory/semantic-memory.mjs.map +0 -1
- package/esm/ai/src/memory/working-memory.mjs +0 -62
- package/esm/ai/src/memory/working-memory.mjs.map +0 -1
- package/esm/ai/src/middleware/builtins/budget.mjs +0 -219
- package/esm/ai/src/middleware/builtins/budget.mjs.map +0 -1
- package/esm/ai/src/middleware/builtins/guardrail.mjs +0 -76
- package/esm/ai/src/middleware/builtins/guardrail.mjs.map +0 -1
- package/esm/ai/src/middleware/builtins/semantic-cache.mjs +0 -149
- package/esm/ai/src/middleware/builtins/semantic-cache.mjs.map +0 -1
- package/esm/ai/src/middleware/helpers/compose.mjs +0 -52
- package/esm/ai/src/middleware/helpers/compose.mjs.map +0 -1
- package/esm/ai/src/middleware/helpers/for-tool.mjs +0 -80
- package/esm/ai/src/middleware/helpers/for-tool.mjs.map +0 -1
- package/esm/ai/src/middleware/index.mjs +0 -10
- package/esm/ai/src/middleware/pipeline.mjs +0 -100
- package/esm/ai/src/middleware/pipeline.mjs.map +0 -1
- package/esm/ai/src/middleware/utils/extract-user-text.mjs +0 -47
- package/esm/ai/src/middleware/utils/extract-user-text.mjs.map +0 -1
- package/esm/ai/src/middleware/utils/namespaced-state.mjs +0 -60
- package/esm/ai/src/middleware/utils/namespaced-state.mjs.map +0 -1
- package/esm/ai/src/mock/index.mjs +0 -4
- package/esm/ai/src/mock/mock-agent.mjs +0 -3
- package/esm/ai/src/mock/mock-router.mjs +0 -58
- package/esm/ai/src/mock/mock-router.mjs.map +0 -1
- package/esm/ai/src/model/fallback-model.mjs +0 -218
- package/esm/ai/src/model/fallback-model.mjs.map +0 -1
- package/esm/ai/src/model/index.mjs +0 -3
- package/esm/ai/src/object-stream/index.mjs +0 -4
- package/esm/ai/src/object-stream/parse-partial-json.mjs +0 -78
- package/esm/ai/src/object-stream/parse-partial-json.mjs.map +0 -1
- package/esm/ai/src/object-stream/stream-object.mjs +0 -97
- package/esm/ai/src/object-stream/stream-object.mjs.map +0 -1
- package/esm/ai/src/observe/index.mjs +0 -4
- package/esm/ai/src/observe/observer-registry.mjs +0 -35
- package/esm/ai/src/observe/observer-registry.mjs.map +0 -1
- package/esm/ai/src/observe/resolve-observers.mjs +0 -73
- package/esm/ai/src/observe/resolve-observers.mjs.map +0 -1
- package/esm/ai/src/orchestrator/as-tool.mjs +0 -98
- package/esm/ai/src/orchestrator/as-tool.mjs.map +0 -1
- package/esm/ai/src/orchestrator/checkpoint.mjs +0 -75
- package/esm/ai/src/orchestrator/checkpoint.mjs.map +0 -1
- package/esm/ai/src/orchestrator/commands.mjs +0 -34
- package/esm/ai/src/orchestrator/commands.mjs.map +0 -1
- package/esm/ai/src/orchestrator/compaction.mjs +0 -206
- package/esm/ai/src/orchestrator/compaction.mjs.map +0 -1
- package/esm/ai/src/orchestrator/dispatch.mjs +0 -171
- package/esm/ai/src/orchestrator/dispatch.mjs.map +0 -1
- package/esm/ai/src/orchestrator/emitter.mjs +0 -85
- package/esm/ai/src/orchestrator/emitter.mjs.map +0 -1
- package/esm/ai/src/orchestrator/execution.mjs +0 -395
- package/esm/ai/src/orchestrator/execution.mjs.map +0 -1
- package/esm/ai/src/orchestrator/index.mjs +0 -11
- package/esm/ai/src/orchestrator/load.mjs +0 -49
- package/esm/ai/src/orchestrator/load.mjs.map +0 -1
- package/esm/ai/src/orchestrator/lock.mjs +0 -75
- package/esm/ai/src/orchestrator/lock.mjs.map +0 -1
- package/esm/ai/src/orchestrator/memory.mjs +0 -141
- package/esm/ai/src/orchestrator/memory.mjs.map +0 -1
- package/esm/ai/src/orchestrator/orchestrator-stream.mjs +0 -98
- package/esm/ai/src/orchestrator/orchestrator-stream.mjs.map +0 -1
- package/esm/ai/src/orchestrator/orchestrator.mjs +0 -206
- package/esm/ai/src/orchestrator/orchestrator.mjs.map +0 -1
- package/esm/ai/src/orchestrator/resume.mjs +0 -74
- package/esm/ai/src/orchestrator/resume.mjs.map +0 -1
- package/esm/ai/src/orchestrator/session-lock.mjs +0 -83
- package/esm/ai/src/orchestrator/session-lock.mjs.map +0 -1
- package/esm/ai/src/orchestrator/signature.mjs +0 -120
- package/esm/ai/src/orchestrator/signature.mjs.map +0 -1
- package/esm/ai/src/orchestrator/window.mjs +0 -56
- package/esm/ai/src/orchestrator/window.mjs.map +0 -1
- package/esm/ai/src/planner/dag-scheduler.mjs +0 -97
- package/esm/ai/src/planner/dag-scheduler.mjs.map +0 -1
- package/esm/ai/src/planner/index.mjs +0 -6
- package/esm/ai/src/planner/plan-prompt.mjs +0 -31
- package/esm/ai/src/planner/plan-prompt.mjs.map +0 -1
- package/esm/ai/src/planner/plan-schema.mjs +0 -120
- package/esm/ai/src/planner/plan-schema.mjs.map +0 -1
- package/esm/ai/src/planner/planner-run.mjs +0 -769
- package/esm/ai/src/planner/planner-run.mjs.map +0 -1
- package/esm/ai/src/planner/planner.mjs +0 -144
- package/esm/ai/src/planner/planner.mjs.map +0 -1
- package/esm/ai/src/planner/signature.mjs +0 -27
- package/esm/ai/src/planner/signature.mjs.map +0 -1
- package/esm/ai/src/planner/snapshot.mjs +0 -95
- package/esm/ai/src/planner/snapshot.mjs.map +0 -1
- package/esm/ai/src/prompt/errors.mjs +0 -73
- package/esm/ai/src/prompt/errors.mjs.map +0 -1
- package/esm/ai/src/prompt/index.mjs +0 -4
- package/esm/ai/src/prompt/prompt-langfuse-sync.mjs +0 -104
- package/esm/ai/src/prompt/prompt-langfuse-sync.mjs.map +0 -1
- package/esm/ai/src/prompt/prompt-validate.mjs +0 -170
- package/esm/ai/src/prompt/prompt-validate.mjs.map +0 -1
- package/esm/ai/src/prompt/prompt.mjs +0 -218
- package/esm/ai/src/prompt/prompt.mjs.map +0 -1
- package/esm/ai/src/prompts/index.mjs +0 -3
- package/esm/ai/src/prompts/prompts-manager.mjs +0 -410
- package/esm/ai/src/prompts/prompts-manager.mjs.map +0 -1
- package/esm/ai/src/prompts/prompts-validate.mjs +0 -0
- package/esm/ai/src/prompts/prompts-validate.mjs.map +0 -1
- package/esm/ai/src/rag/as-tool.mjs +0 -48
- package/esm/ai/src/rag/as-tool.mjs.map +0 -1
- package/esm/ai/src/rag/chunk/chunk.mjs +0 -44
- package/esm/ai/src/rag/chunk/chunk.mjs.map +0 -1
- package/esm/ai/src/rag/chunk/fixed.mjs +0 -32
- package/esm/ai/src/rag/chunk/fixed.mjs.map +0 -1
- package/esm/ai/src/rag/chunk/markdown.mjs +0 -75
- package/esm/ai/src/rag/chunk/markdown.mjs.map +0 -1
- package/esm/ai/src/rag/chunk/recursive.mjs +0 -132
- package/esm/ai/src/rag/chunk/recursive.mjs.map +0 -1
- package/esm/ai/src/rag/chunk/sentence.mjs +0 -73
- package/esm/ai/src/rag/chunk/sentence.mjs.map +0 -1
- package/esm/ai/src/rag/hybrid/bm25.mjs +0 -51
- package/esm/ai/src/rag/hybrid/bm25.mjs.map +0 -1
- package/esm/ai/src/rag/hybrid/hybrid-rank.mjs +0 -29
- package/esm/ai/src/rag/hybrid/hybrid-rank.mjs.map +0 -1
- package/esm/ai/src/rag/hybrid/rrf.mjs +0 -30
- package/esm/ai/src/rag/hybrid/rrf.mjs.map +0 -1
- package/esm/ai/src/rag/index.mjs +0 -18
- package/esm/ai/src/rag/loaders/errors.mjs +0 -25
- package/esm/ai/src/rag/loaders/errors.mjs.map +0 -1
- package/esm/ai/src/rag/loaders/index.mjs +0 -7
- package/esm/ai/src/rag/loaders/load-html.mjs +0 -138
- package/esm/ai/src/rag/loaders/load-html.mjs.map +0 -1
- package/esm/ai/src/rag/loaders/load-pdf.mjs +0 -150
- package/esm/ai/src/rag/loaders/load-pdf.mjs.map +0 -1
- package/esm/ai/src/rag/loaders/load-text.mjs +0 -60
- package/esm/ai/src/rag/loaders/load-text.mjs.map +0 -1
- package/esm/ai/src/rag/loaders/load-web.mjs +0 -89
- package/esm/ai/src/rag/loaders/load-web.mjs.map +0 -1
- package/esm/ai/src/rag/rag.mjs +0 -126
- package/esm/ai/src/rag/rag.mjs.map +0 -1
- package/esm/ai/src/rag/rerank/keyword-reranker.mjs +0 -58
- package/esm/ai/src/rag/rerank/keyword-reranker.mjs.map +0 -1
- package/esm/ai/src/rag/rerank/llm-reranker.mjs +0 -85
- package/esm/ai/src/rag/rerank/llm-reranker.mjs.map +0 -1
- package/esm/ai/src/rag/retrieve.mjs +0 -68
- package/esm/ai/src/rag/retrieve.mjs.map +0 -1
- package/esm/ai/src/rag/store/cache-vector-store.mjs +0 -48
- package/esm/ai/src/rag/store/cache-vector-store.mjs.map +0 -1
- package/esm/ai/src/rag/store/pg-vector-store.mjs +0 -328
- package/esm/ai/src/rag/store/pg-vector-store.mjs.map +0 -1
- package/esm/ai/src/rag/transforms/multi-query.mjs +0 -41
- package/esm/ai/src/rag/transforms/multi-query.mjs.map +0 -1
- package/esm/ai/src/security/index.mjs +0 -5
- package/esm/ai/src/security/outbound-policy.mjs +0 -187
- package/esm/ai/src/security/outbound-policy.mjs.map +0 -1
- package/esm/ai/src/security/private-ip.mjs +0 -48
- package/esm/ai/src/security/private-ip.mjs.map +0 -1
- package/esm/ai/src/security/redact.mjs +0 -60
- package/esm/ai/src/security/redact.mjs.map +0 -1
- package/esm/ai/src/serve/serve.mjs +0 -90
- package/esm/ai/src/serve/serve.mjs.map +0 -1
- package/esm/ai/src/serve/sse.mjs +0 -25
- package/esm/ai/src/serve/sse.mjs.map +0 -1
- package/esm/ai/src/serve/stream-to-sse.mjs +0 -37
- package/esm/ai/src/serve/stream-to-sse.mjs.map +0 -1
- package/esm/ai/src/skills/catalog.mjs +0 -140
- package/esm/ai/src/skills/catalog.mjs.map +0 -1
- package/esm/ai/src/skills/index.mjs +0 -11
- package/esm/ai/src/skills/load-skill-tool.mjs +0 -65
- package/esm/ai/src/skills/load-skill-tool.mjs.map +0 -1
- package/esm/ai/src/skills/save-skill-tool.mjs +0 -65
- package/esm/ai/src/skills/save-skill-tool.mjs.map +0 -1
- package/esm/ai/src/skills/skills.mjs +0 -109
- package/esm/ai/src/skills/skills.mjs.map +0 -1
- package/esm/ai/src/skills/sources/directory-source.mjs +0 -108
- package/esm/ai/src/skills/sources/directory-source.mjs.map +0 -1
- package/esm/ai/src/skills/sources/index.mjs +0 -27
- package/esm/ai/src/skills/sources/index.mjs.map +0 -1
- package/esm/ai/src/skills/sources/parse-frontmatter.mjs +0 -46
- package/esm/ai/src/skills/sources/parse-frontmatter.mjs.map +0 -1
- package/esm/ai/src/skills/sources/store-source.mjs +0 -15
- package/esm/ai/src/skills/sources/store-source.mjs.map +0 -1
- package/esm/ai/src/skills/sources/url-source.mjs +0 -117
- package/esm/ai/src/skills/sources/url-source.mjs.map +0 -1
- package/esm/ai/src/snapshot/memory.mjs +0 -81
- package/esm/ai/src/snapshot/memory.mjs.map +0 -1
- package/esm/ai/src/snapshot/pg.mjs +0 -146
- package/esm/ai/src/snapshot/pg.mjs.map +0 -1
- package/esm/ai/src/snapshot/redis.mjs +0 -101
- package/esm/ai/src/snapshot/redis.mjs.map +0 -1
- package/esm/ai/src/speech/index.mjs +0 -3
- package/esm/ai/src/speech/speech.mjs +0 -122
- package/esm/ai/src/speech/speech.mjs.map +0 -1
- package/esm/ai/src/supervisor/as-tool.mjs +0 -74
- package/esm/ai/src/supervisor/as-tool.mjs.map +0 -1
- package/esm/ai/src/supervisor/cancellation.mjs +0 -22
- package/esm/ai/src/supervisor/cancellation.mjs.map +0 -1
- package/esm/ai/src/supervisor/decide.mjs +0 -272
- package/esm/ai/src/supervisor/decide.mjs.map +0 -1
- package/esm/ai/src/supervisor/emitter.mjs +0 -47
- package/esm/ai/src/supervisor/emitter.mjs.map +0 -1
- package/esm/ai/src/supervisor/entries.mjs +0 -206
- package/esm/ai/src/supervisor/entries.mjs.map +0 -1
- package/esm/ai/src/supervisor/execution.mjs +0 -1921
- package/esm/ai/src/supervisor/execution.mjs.map +0 -1
- package/esm/ai/src/supervisor/fan-out.mjs +0 -65
- package/esm/ai/src/supervisor/fan-out.mjs.map +0 -1
- package/esm/ai/src/supervisor/index.mjs +0 -14
- package/esm/ai/src/supervisor/router-factory.mjs +0 -141
- package/esm/ai/src/supervisor/router-factory.mjs.map +0 -1
- package/esm/ai/src/supervisor/router-prompt.mjs +0 -52
- package/esm/ai/src/supervisor/router-prompt.mjs.map +0 -1
- package/esm/ai/src/supervisor/signature.mjs +0 -89
- package/esm/ai/src/supervisor/signature.mjs.map +0 -1
- package/esm/ai/src/supervisor/snapshot.mjs +0 -69
- package/esm/ai/src/supervisor/snapshot.mjs.map +0 -1
- package/esm/ai/src/supervisor/supervisor-stream.mjs +0 -89
- package/esm/ai/src/supervisor/supervisor-stream.mjs.map +0 -1
- package/esm/ai/src/supervisor/supervisor.mjs +0 -144
- package/esm/ai/src/supervisor/supervisor.mjs.map +0 -1
- package/esm/ai/src/system-prompt/index.mjs +0 -7
- package/esm/ai/src/system-prompt/instruction.mjs +0 -57
- package/esm/ai/src/system-prompt/instruction.mjs.map +0 -1
- package/esm/ai/src/system-prompt/persona.mjs +0 -57
- package/esm/ai/src/system-prompt/persona.mjs.map +0 -1
- package/esm/ai/src/system-prompt/refined-system-prompt.mjs +0 -461
- package/esm/ai/src/system-prompt/refined-system-prompt.mjs.map +0 -1
- package/esm/ai/src/system-prompt/render-placeholders.mjs +0 -58
- package/esm/ai/src/system-prompt/render-placeholders.mjs.map +0 -1
- package/esm/ai/src/system-prompt/system-prompt.mjs +0 -286
- package/esm/ai/src/system-prompt/system-prompt.mjs.map +0 -1
- package/esm/ai/src/team/gates.mjs +0 -48
- package/esm/ai/src/team/gates.mjs.map +0 -1
- package/esm/ai/src/team/index.mjs +0 -3
- package/esm/ai/src/team/team.mjs +0 -94
- package/esm/ai/src/team/team.mjs.map +0 -1
- package/esm/ai/src/tool/executable-as-tool.mjs +0 -81
- package/esm/ai/src/tool/executable-as-tool.mjs.map +0 -1
- package/esm/ai/src/tool/index.mjs +0 -4
- package/esm/ai/src/tool/tool.mjs +0 -185
- package/esm/ai/src/tool/tool.mjs.map +0 -1
- package/esm/ai/src/transcribe/audio-input.mjs +0 -84
- package/esm/ai/src/transcribe/audio-input.mjs.map +0 -1
- package/esm/ai/src/transcribe/index.mjs +0 -4
- package/esm/ai/src/transcribe/transcribe.mjs +0 -127
- package/esm/ai/src/transcribe/transcribe.mjs.map +0 -1
- package/esm/ai/src/utils/compute-cost.mjs +0 -112
- package/esm/ai/src/utils/compute-cost.mjs.map +0 -1
- package/esm/ai/src/utils/extract-json-lenient.mjs +0 -97
- package/esm/ai/src/utils/extract-json-lenient.mjs.map +0 -1
- package/esm/ai/src/utils/extract-json-payload.mjs +0 -39
- package/esm/ai/src/utils/extract-json-payload.mjs.map +0 -1
- package/esm/ai/src/utils/generate-run-id.mjs +0 -23
- package/esm/ai/src/utils/generate-run-id.mjs.map +0 -1
- package/esm/ai/src/utils/index.mjs +0 -12
- package/esm/ai/src/utils/json-schema.mjs +0 -89
- package/esm/ai/src/utils/json-schema.mjs.map +0 -1
- package/esm/ai/src/utils/prepare-attachment-part.mjs +0 -232
- package/esm/ai/src/utils/prepare-attachment-part.mjs.map +0 -1
- package/esm/ai/src/utils/resolve-attachment.mjs +0 -74
- package/esm/ai/src/utils/resolve-attachment.mjs.map +0 -1
- package/esm/ai/src/utils/run-context.mjs +0 -89
- package/esm/ai/src/utils/run-context.mjs.map +0 -1
- package/esm/ai/src/utils/safe-json-parse.mjs +0 -22
- package/esm/ai/src/utils/safe-json-parse.mjs.map +0 -1
- package/esm/ai/src/utils/stamp-report-lineage.mjs +0 -45
- package/esm/ai/src/utils/stamp-report-lineage.mjs.map +0 -1
- package/esm/ai/src/vcr/cassette-io.mjs +0 -57
- package/esm/ai/src/vcr/cassette-io.mjs.map +0 -1
- package/esm/ai/src/vcr/errors.mjs +0 -37
- package/esm/ai/src/vcr/errors.mjs.map +0 -1
- package/esm/ai/src/vcr/hash-request.mjs +0 -118
- package/esm/ai/src/vcr/hash-request.mjs.map +0 -1
- package/esm/ai/src/vcr/index.mjs +0 -5
- package/esm/ai/src/vcr/vcr.mjs +0 -248
- package/esm/ai/src/vcr/vcr.mjs.map +0 -1
- package/esm/ai/src/workflow/as-tool.mjs +0 -49
- package/esm/ai/src/workflow/as-tool.mjs.map +0 -1
- package/esm/ai/src/workflow/cancellation.mjs +0 -44
- package/esm/ai/src/workflow/cancellation.mjs.map +0 -1
- package/esm/ai/src/workflow/emitter.mjs +0 -40
- package/esm/ai/src/workflow/emitter.mjs.map +0 -1
- package/esm/ai/src/workflow/engine.mjs +0 -363
- package/esm/ai/src/workflow/engine.mjs.map +0 -1
- package/esm/ai/src/workflow/index.mjs +0 -5
- package/esm/ai/src/workflow/retry.mjs +0 -32
- package/esm/ai/src/workflow/retry.mjs.map +0 -1
- package/esm/ai/src/workflow/router.mjs +0 -56
- package/esm/ai/src/workflow/router.mjs.map +0 -1
- package/esm/ai/src/workflow/run-scoped-emitter.mjs +0 -32
- package/esm/ai/src/workflow/run-scoped-emitter.mjs.map +0 -1
- package/esm/ai/src/workflow/signature.mjs +0 -34
- package/esm/ai/src/workflow/signature.mjs.map +0 -1
- package/esm/ai/src/workflow/snapshot.mjs +0 -77
- package/esm/ai/src/workflow/snapshot.mjs.map +0 -1
- package/esm/ai/src/workflow/state.mjs +0 -37
- package/esm/ai/src/workflow/state.mjs.map +0 -1
- package/esm/ai/src/workflow/step-runner.mjs +0 -370
- package/esm/ai/src/workflow/step-runner.mjs.map +0 -1
- package/esm/ai/src/workflow/step.mjs +0 -37
- package/esm/ai/src/workflow/step.mjs.map +0 -1
- package/esm/ai/src/workflow/workflow.mjs +0 -122
- package/esm/ai/src/workflow/workflow.mjs.map +0 -1
- package/esm/ai-openai/src/embedder.mjs +0 -4
- package/esm/ai-openai/src/image.mjs +0 -5
- package/esm/ai-openai/src/index.mjs +0 -7
- package/esm/ai-openai/src/model.mjs +0 -5
- package/esm/ai-openai/src/sdk.mjs +0 -9
- package/esm/ai-openai/src/speech.mjs +0 -5
- package/esm/ai-openai/src/transcription.mjs +0 -6
- package/esm/ai-openai/src/utils/index.mjs +0 -5
- package/esm/ai-openai/src/utils/to-openai-messages.mjs +0 -3
- package/esm/ai-openai/src/utils/to-openai-tools.mjs +0 -3
- package/esm/ai-openai/src/utils/wrap-openai-error.mjs +0 -4
- package/esm/node_modules/langfuse/lib/index.mjs +0 -1827
- package/esm/node_modules/langfuse/lib/index.mjs.map +0 -1
- package/esm/node_modules/langfuse-core/lib/index.mjs +0 -1770
- package/esm/node_modules/langfuse-core/lib/index.mjs.map +0 -1
- package/esm/node_modules/mustache/mustache.mjs +0 -587
- package/esm/node_modules/mustache/mustache.mjs.map +0 -1
- package/esm/node_modules/openai/_vendor/partial-json-parser/parser.mjs +0 -180
- package/esm/node_modules/openai/_vendor/partial-json-parser/parser.mjs.map +0 -1
- package/esm/node_modules/openai/auth/workload-identity-auth.mjs +0 -80
- package/esm/node_modules/openai/auth/workload-identity-auth.mjs.map +0 -1
- package/esm/node_modules/openai/azure.mjs +0 -82
- package/esm/node_modules/openai/azure.mjs.map +0 -1
- package/esm/node_modules/openai/client.mjs +0 -638
- package/esm/node_modules/openai/client.mjs.map +0 -1
- package/esm/node_modules/openai/core/api-promise.mjs +0 -75
- package/esm/node_modules/openai/core/api-promise.mjs.map +0 -1
- package/esm/node_modules/openai/core/error.mjs +0 -110
- package/esm/node_modules/openai/core/error.mjs.map +0 -1
- package/esm/node_modules/openai/core/pagination.mjs +0 -160
- package/esm/node_modules/openai/core/pagination.mjs.map +0 -1
- package/esm/node_modules/openai/core/resource.mjs +0 -10
- package/esm/node_modules/openai/core/resource.mjs.map +0 -1
- package/esm/node_modules/openai/core/streaming.mjs +0 -238
- package/esm/node_modules/openai/core/streaming.mjs.map +0 -1
- package/esm/node_modules/openai/index.mjs +0 -8
- package/esm/node_modules/openai/internal/decoders/line.mjs +0 -91
- package/esm/node_modules/openai/internal/decoders/line.mjs.map +0 -1
- package/esm/node_modules/openai/internal/detect-platform.mjs +0 -123
- package/esm/node_modules/openai/internal/detect-platform.mjs.map +0 -1
- package/esm/node_modules/openai/internal/errors.mjs +0 -26
- package/esm/node_modules/openai/internal/errors.mjs.map +0 -1
- package/esm/node_modules/openai/internal/headers.mjs +0 -65
- package/esm/node_modules/openai/internal/headers.mjs.map +0 -1
- package/esm/node_modules/openai/internal/parse.mjs +0 -41
- package/esm/node_modules/openai/internal/parse.mjs.map +0 -1
- package/esm/node_modules/openai/internal/qs/formats.mjs +0 -12
- package/esm/node_modules/openai/internal/qs/formats.mjs.map +0 -1
- package/esm/node_modules/openai/internal/qs/stringify.mjs +0 -179
- package/esm/node_modules/openai/internal/qs/stringify.mjs.map +0 -1
- package/esm/node_modules/openai/internal/qs/utils.mjs +0 -65
- package/esm/node_modules/openai/internal/qs/utils.mjs.map +0 -1
- package/esm/node_modules/openai/internal/request-options.mjs +0 -11
- package/esm/node_modules/openai/internal/request-options.mjs.map +0 -1
- package/esm/node_modules/openai/internal/shims.mjs +0 -77
- package/esm/node_modules/openai/internal/shims.mjs.map +0 -1
- package/esm/node_modules/openai/internal/to-file.mjs +0 -63
- package/esm/node_modules/openai/internal/to-file.mjs.map +0 -1
- package/esm/node_modules/openai/internal/tslib.mjs +0 -16
- package/esm/node_modules/openai/internal/tslib.mjs.map +0 -1
- package/esm/node_modules/openai/internal/uploads.mjs +0 -94
- package/esm/node_modules/openai/internal/uploads.mjs.map +0 -1
- package/esm/node_modules/openai/internal/utils/base64.mjs +0 -22
- package/esm/node_modules/openai/internal/utils/base64.mjs.map +0 -1
- package/esm/node_modules/openai/internal/utils/bytes.mjs +0 -26
- package/esm/node_modules/openai/internal/utils/bytes.mjs.map +0 -1
- package/esm/node_modules/openai/internal/utils/env.mjs +0 -16
- package/esm/node_modules/openai/internal/utils/env.mjs.map +0 -1
- package/esm/node_modules/openai/internal/utils/log.mjs +0 -58
- package/esm/node_modules/openai/internal/utils/log.mjs.map +0 -1
- package/esm/node_modules/openai/internal/utils/path.mjs +0 -62
- package/esm/node_modules/openai/internal/utils/path.mjs.map +0 -1
- package/esm/node_modules/openai/internal/utils/query.mjs +0 -10
- package/esm/node_modules/openai/internal/utils/query.mjs.map +0 -1
- package/esm/node_modules/openai/internal/utils/sleep.mjs +0 -6
- package/esm/node_modules/openai/internal/utils/sleep.mjs.map +0 -1
- package/esm/node_modules/openai/internal/utils/uuid.mjs +0 -18
- package/esm/node_modules/openai/internal/utils/uuid.mjs.map +0 -1
- package/esm/node_modules/openai/internal/utils/values.mjs +0 -41
- package/esm/node_modules/openai/internal/utils/values.mjs.map +0 -1
- package/esm/node_modules/openai/lib/AbstractChatCompletionRunner.mjs +0 -247
- package/esm/node_modules/openai/lib/AbstractChatCompletionRunner.mjs.map +0 -1
- package/esm/node_modules/openai/lib/AssistantStream.mjs +0 -472
- package/esm/node_modules/openai/lib/AssistantStream.mjs.map +0 -1
- package/esm/node_modules/openai/lib/ChatCompletionRunner.mjs +0 -26
- package/esm/node_modules/openai/lib/ChatCompletionRunner.mjs.map +0 -1
- package/esm/node_modules/openai/lib/ChatCompletionStream.mjs +0 -423
- package/esm/node_modules/openai/lib/ChatCompletionStream.mjs.map +0 -1
- package/esm/node_modules/openai/lib/ChatCompletionStreamingRunner.mjs +0 -26
- package/esm/node_modules/openai/lib/ChatCompletionStreamingRunner.mjs.map +0 -1
- package/esm/node_modules/openai/lib/EventStream.mjs +0 -163
- package/esm/node_modules/openai/lib/EventStream.mjs.map +0 -1
- package/esm/node_modules/openai/lib/ResponsesParser.mjs +0 -94
- package/esm/node_modules/openai/lib/ResponsesParser.mjs.map +0 -1
- package/esm/node_modules/openai/lib/RunnableFunction.mjs +0 -8
- package/esm/node_modules/openai/lib/RunnableFunction.mjs.map +0 -1
- package/esm/node_modules/openai/lib/Util.mjs +0 -19
- package/esm/node_modules/openai/lib/Util.mjs.map +0 -1
- package/esm/node_modules/openai/lib/chatCompletionUtils.mjs +0 -11
- package/esm/node_modules/openai/lib/chatCompletionUtils.mjs.map +0 -1
- package/esm/node_modules/openai/lib/parser.mjs +0 -88
- package/esm/node_modules/openai/lib/parser.mjs.map +0 -1
- package/esm/node_modules/openai/lib/responses/ResponseStream.mjs +0 -231
- package/esm/node_modules/openai/lib/responses/ResponseStream.mjs.map +0 -1
- package/esm/node_modules/openai/resources/admin/admin.mjs +0 -15
- package/esm/node_modules/openai/resources/admin/admin.mjs.map +0 -1
- package/esm/node_modules/openai/resources/admin/organization/admin-api-keys.mjs +0 -81
- package/esm/node_modules/openai/resources/admin/organization/admin-api-keys.mjs.map +0 -1
- package/esm/node_modules/openai/resources/admin/organization/audit-logs.mjs +0 -31
- package/esm/node_modules/openai/resources/admin/organization/audit-logs.mjs.map +0 -1
- package/esm/node_modules/openai/resources/admin/organization/certificates.mjs +0 -153
- package/esm/node_modules/openai/resources/admin/organization/certificates.mjs.map +0 -1
- package/esm/node_modules/openai/resources/admin/organization/data-retention.mjs +0 -42
- package/esm/node_modules/openai/resources/admin/organization/data-retention.mjs.map +0 -1
- package/esm/node_modules/openai/resources/admin/organization/groups/groups.mjs +0 -106
- package/esm/node_modules/openai/resources/admin/organization/groups/groups.mjs.map +0 -1
- package/esm/node_modules/openai/resources/admin/organization/groups/roles.mjs +0 -88
- package/esm/node_modules/openai/resources/admin/organization/groups/roles.mjs.map +0 -1
- package/esm/node_modules/openai/resources/admin/organization/groups/users.mjs +0 -88
- package/esm/node_modules/openai/resources/admin/organization/groups/users.mjs.map +0 -1
- package/esm/node_modules/openai/resources/admin/organization/invites.mjs +0 -83
- package/esm/node_modules/openai/resources/admin/organization/invites.mjs.map +0 -1
- package/esm/node_modules/openai/resources/admin/organization/organization.mjs +0 -45
- package/esm/node_modules/openai/resources/admin/organization/organization.mjs.map +0 -1
- package/esm/node_modules/openai/resources/admin/organization/projects/api-keys.mjs +0 -72
- package/esm/node_modules/openai/resources/admin/organization/projects/api-keys.mjs.map +0 -1
- package/esm/node_modules/openai/resources/admin/organization/projects/certificates.mjs +0 -78
- package/esm/node_modules/openai/resources/admin/organization/projects/certificates.mjs.map +0 -1
- package/esm/node_modules/openai/resources/admin/organization/projects/data-retention.mjs +0 -46
- package/esm/node_modules/openai/resources/admin/organization/projects/data-retention.mjs.map +0 -1
- package/esm/node_modules/openai/resources/admin/organization/projects/groups/groups.mjs +0 -95
- package/esm/node_modules/openai/resources/admin/organization/projects/groups/groups.mjs.map +0 -1
- package/esm/node_modules/openai/resources/admin/organization/projects/groups/roles.mjs +0 -91
- package/esm/node_modules/openai/resources/admin/organization/projects/groups/roles.mjs.map +0 -1
- package/esm/node_modules/openai/resources/admin/organization/projects/hosted-tool-permissions.mjs +0 -45
- package/esm/node_modules/openai/resources/admin/organization/projects/hosted-tool-permissions.mjs.map +0 -1
- package/esm/node_modules/openai/resources/admin/organization/projects/model-permissions.mjs +0 -63
- package/esm/node_modules/openai/resources/admin/organization/projects/model-permissions.mjs.map +0 -1
- package/esm/node_modules/openai/resources/admin/organization/projects/projects.mjs +0 -137
- package/esm/node_modules/openai/resources/admin/organization/projects/projects.mjs.map +0 -1
- package/esm/node_modules/openai/resources/admin/organization/projects/rate-limits.mjs +0 -51
- package/esm/node_modules/openai/resources/admin/organization/projects/rate-limits.mjs.map +0 -1
- package/esm/node_modules/openai/resources/admin/organization/projects/roles.mjs +0 -108
- package/esm/node_modules/openai/resources/admin/organization/projects/roles.mjs.map +0 -1
- package/esm/node_modules/openai/resources/admin/organization/projects/service-accounts.mjs +0 -112
- package/esm/node_modules/openai/resources/admin/organization/projects/service-accounts.mjs.map +0 -1
- package/esm/node_modules/openai/resources/admin/organization/projects/spend-alerts.mjs +0 -106
- package/esm/node_modules/openai/resources/admin/organization/projects/spend-alerts.mjs.map +0 -1
- package/esm/node_modules/openai/resources/admin/organization/projects/users/roles.mjs +0 -91
- package/esm/node_modules/openai/resources/admin/organization/projects/users/roles.mjs.map +0 -1
- package/esm/node_modules/openai/resources/admin/organization/projects/users/users.mjs +0 -118
- package/esm/node_modules/openai/resources/admin/organization/projects/users/users.mjs.map +0 -1
- package/esm/node_modules/openai/resources/admin/organization/roles.mjs +0 -96
- package/esm/node_modules/openai/resources/admin/organization/roles.mjs.map +0 -1
- package/esm/node_modules/openai/resources/admin/organization/spend-alerts.mjs +0 -97
- package/esm/node_modules/openai/resources/admin/organization/spend-alerts.mjs.map +0 -1
- package/esm/node_modules/openai/resources/admin/organization/usage.mjs +0 -207
- package/esm/node_modules/openai/resources/admin/organization/usage.mjs.map +0 -1
- package/esm/node_modules/openai/resources/admin/organization/users/roles.mjs +0 -88
- package/esm/node_modules/openai/resources/admin/organization/users/roles.mjs.map +0 -1
- package/esm/node_modules/openai/resources/admin/organization/users/users.mjs +0 -82
- package/esm/node_modules/openai/resources/admin/organization/users/users.mjs.map +0 -1
- package/esm/node_modules/openai/resources/audio/audio.mjs +0 -21
- package/esm/node_modules/openai/resources/audio/audio.mjs.map +0 -1
- package/esm/node_modules/openai/resources/audio/speech.mjs +0 -39
- package/esm/node_modules/openai/resources/audio/speech.mjs.map +0 -1
- package/esm/node_modules/openai/resources/audio/transcriptions.mjs +0 -22
- package/esm/node_modules/openai/resources/audio/transcriptions.mjs.map +0 -1
- package/esm/node_modules/openai/resources/audio/translations.mjs +0 -21
- package/esm/node_modules/openai/resources/audio/translations.mjs.map +0 -1
- package/esm/node_modules/openai/resources/batches.mjs +0 -54
- package/esm/node_modules/openai/resources/batches.mjs.map +0 -1
- package/esm/node_modules/openai/resources/beta/assistants.mjs +0 -78
- package/esm/node_modules/openai/resources/beta/assistants.mjs.map +0 -1
- package/esm/node_modules/openai/resources/beta/beta.mjs +0 -24
- package/esm/node_modules/openai/resources/beta/beta.mjs.map +0 -1
- package/esm/node_modules/openai/resources/beta/chatkit/chatkit.mjs +0 -18
- package/esm/node_modules/openai/resources/beta/chatkit/chatkit.mjs.map +0 -1
- package/esm/node_modules/openai/resources/beta/chatkit/sessions.mjs +0 -49
- package/esm/node_modules/openai/resources/beta/chatkit/sessions.mjs.map +0 -1
- package/esm/node_modules/openai/resources/beta/chatkit/threads.mjs +0 -85
- package/esm/node_modules/openai/resources/beta/chatkit/threads.mjs.map +0 -1
- package/esm/node_modules/openai/resources/beta/realtime/realtime.mjs +0 -21
- package/esm/node_modules/openai/resources/beta/realtime/realtime.mjs.map +0 -1
- package/esm/node_modules/openai/resources/beta/realtime/sessions.mjs +0 -33
- package/esm/node_modules/openai/resources/beta/realtime/sessions.mjs.map +0 -1
- package/esm/node_modules/openai/resources/beta/realtime/transcription-sessions.mjs +0 -33
- package/esm/node_modules/openai/resources/beta/realtime/transcription-sessions.mjs.map +0 -1
- package/esm/node_modules/openai/resources/beta/threads/messages.mjs +0 -83
- package/esm/node_modules/openai/resources/beta/threads/messages.mjs.map +0 -1
- package/esm/node_modules/openai/resources/beta/threads/runs/runs.mjs +0 -183
- package/esm/node_modules/openai/resources/beta/threads/runs/runs.mjs.map +0 -1
- package/esm/node_modules/openai/resources/beta/threads/runs/steps.mjs +0 -45
- package/esm/node_modules/openai/resources/beta/threads/runs/steps.mjs.map +0 -1
- package/esm/node_modules/openai/resources/beta/threads/threads.mjs +0 -101
- package/esm/node_modules/openai/resources/beta/threads/threads.mjs.map +0 -1
- package/esm/node_modules/openai/resources/chat/chat.mjs +0 -15
- package/esm/node_modules/openai/resources/chat/chat.mjs.map +0 -1
- package/esm/node_modules/openai/resources/chat/completions/completions.mjs +0 -123
- package/esm/node_modules/openai/resources/chat/completions/completions.mjs.map +0 -1
- package/esm/node_modules/openai/resources/chat/completions/index.mjs +0 -7
- package/esm/node_modules/openai/resources/chat/completions/messages.mjs +0 -35
- package/esm/node_modules/openai/resources/chat/completions/messages.mjs.map +0 -1
- package/esm/node_modules/openai/resources/chat/index.mjs +0 -5
- package/esm/node_modules/openai/resources/completions.mjs +0 -20
- package/esm/node_modules/openai/resources/completions.mjs.map +0 -1
- package/esm/node_modules/openai/resources/containers/containers.mjs +0 -57
- package/esm/node_modules/openai/resources/containers/containers.mjs.map +0 -1
- package/esm/node_modules/openai/resources/containers/files/content.mjs +0 -23
- package/esm/node_modules/openai/resources/containers/files/content.mjs.map +0 -1
- package/esm/node_modules/openai/resources/containers/files/files.mjs +0 -63
- package/esm/node_modules/openai/resources/containers/files/files.mjs.map +0 -1
- package/esm/node_modules/openai/resources/conversations/conversations.mjs +0 -57
- package/esm/node_modules/openai/resources/conversations/conversations.mjs.map +0 -1
- package/esm/node_modules/openai/resources/conversations/items.mjs +0 -57
- package/esm/node_modules/openai/resources/conversations/items.mjs.map +0 -1
- package/esm/node_modules/openai/resources/embeddings.mjs +0 -48
- package/esm/node_modules/openai/resources/embeddings.mjs.map +0 -1
- package/esm/node_modules/openai/resources/evals/evals.mjs +0 -73
- package/esm/node_modules/openai/resources/evals/evals.mjs.map +0 -1
- package/esm/node_modules/openai/resources/evals/runs/output-items.mjs +0 -35
- package/esm/node_modules/openai/resources/evals/runs/output-items.mjs.map +0 -1
- package/esm/node_modules/openai/resources/evals/runs/runs.mjs +0 -72
- package/esm/node_modules/openai/resources/evals/runs/runs.mjs.map +0 -1
- package/esm/node_modules/openai/resources/files.mjs +0 -111
- package/esm/node_modules/openai/resources/files.mjs.map +0 -1
- package/esm/node_modules/openai/resources/fine-tuning/alpha/alpha.mjs +0 -15
- package/esm/node_modules/openai/resources/fine-tuning/alpha/alpha.mjs.map +0 -1
- package/esm/node_modules/openai/resources/fine-tuning/alpha/graders.mjs +0 -60
- package/esm/node_modules/openai/resources/fine-tuning/alpha/graders.mjs.map +0 -1
- package/esm/node_modules/openai/resources/fine-tuning/checkpoints/checkpoints.mjs +0 -15
- package/esm/node_modules/openai/resources/fine-tuning/checkpoints/checkpoints.mjs.map +0 -1
- package/esm/node_modules/openai/resources/fine-tuning/checkpoints/permissions.mjs +0 -102
- package/esm/node_modules/openai/resources/fine-tuning/checkpoints/permissions.mjs.map +0 -1
- package/esm/node_modules/openai/resources/fine-tuning/fine-tuning.mjs +0 -24
- package/esm/node_modules/openai/resources/fine-tuning/fine-tuning.mjs.map +0 -1
- package/esm/node_modules/openai/resources/fine-tuning/jobs/checkpoints.mjs +0 -34
- package/esm/node_modules/openai/resources/fine-tuning/jobs/checkpoints.mjs.map +0 -1
- package/esm/node_modules/openai/resources/fine-tuning/jobs/jobs.mjs +0 -148
- package/esm/node_modules/openai/resources/fine-tuning/jobs/jobs.mjs.map +0 -1
- package/esm/node_modules/openai/resources/fine-tuning/methods.mjs +0 -8
- package/esm/node_modules/openai/resources/fine-tuning/methods.mjs.map +0 -1
- package/esm/node_modules/openai/resources/graders/grader-models.mjs +0 -8
- package/esm/node_modules/openai/resources/graders/grader-models.mjs.map +0 -1
- package/esm/node_modules/openai/resources/graders/graders.mjs +0 -15
- package/esm/node_modules/openai/resources/graders/graders.mjs.map +0 -1
- package/esm/node_modules/openai/resources/images.mjs +0 -46
- package/esm/node_modules/openai/resources/images.mjs.map +0 -1
- package/esm/node_modules/openai/resources/index.mjs +0 -27
- package/esm/node_modules/openai/resources/models.mjs +0 -44
- package/esm/node_modules/openai/resources/models.mjs.map +0 -1
- package/esm/node_modules/openai/resources/moderations.mjs +0 -23
- package/esm/node_modules/openai/resources/moderations.mjs.map +0 -1
- package/esm/node_modules/openai/resources/realtime/calls.mjs +0 -79
- package/esm/node_modules/openai/resources/realtime/calls.mjs.map +0 -1
- package/esm/node_modules/openai/resources/realtime/client-secrets.mjs +0 -39
- package/esm/node_modules/openai/resources/realtime/client-secrets.mjs.map +0 -1
- package/esm/node_modules/openai/resources/realtime/realtime.mjs +0 -18
- package/esm/node_modules/openai/resources/realtime/realtime.mjs.map +0 -1
- package/esm/node_modules/openai/resources/responses/input-items.mjs +0 -31
- package/esm/node_modules/openai/resources/responses/input-items.mjs.map +0 -1
- package/esm/node_modules/openai/resources/responses/input-tokens.mjs +0 -27
- package/esm/node_modules/openai/resources/responses/input-tokens.mjs.map +0 -1
- package/esm/node_modules/openai/resources/responses/responses.mjs +0 -110
- package/esm/node_modules/openai/resources/responses/responses.mjs.map +0 -1
- package/esm/node_modules/openai/resources/skills/content.mjs +0 -22
- package/esm/node_modules/openai/resources/skills/content.mjs.map +0 -1
- package/esm/node_modules/openai/resources/skills/skills.mjs +0 -69
- package/esm/node_modules/openai/resources/skills/skills.mjs.map +0 -1
- package/esm/node_modules/openai/resources/skills/versions/content.mjs +0 -23
- package/esm/node_modules/openai/resources/skills/versions/content.mjs.map +0 -1
- package/esm/node_modules/openai/resources/skills/versions/versions.mjs +0 -58
- package/esm/node_modules/openai/resources/skills/versions/versions.mjs.map +0 -1
- package/esm/node_modules/openai/resources/uploads/parts.mjs +0 -34
- package/esm/node_modules/openai/resources/uploads/parts.mjs.map +0 -1
- package/esm/node_modules/openai/resources/uploads/uploads.mjs +0 -84
- package/esm/node_modules/openai/resources/uploads/uploads.mjs.map +0 -1
- package/esm/node_modules/openai/resources/vector-stores/file-batches.mjs +0 -126
- package/esm/node_modules/openai/resources/vector-stores/file-batches.mjs.map +0 -1
- package/esm/node_modules/openai/resources/vector-stores/files.mjs +0 -147
- package/esm/node_modules/openai/resources/vector-stores/files.mjs.map +0 -1
- package/esm/node_modules/openai/resources/vector-stores/vector-stores.mjs +0 -87
- package/esm/node_modules/openai/resources/vector-stores/vector-stores.mjs.map +0 -1
- package/esm/node_modules/openai/resources/videos.mjs +0 -115
- package/esm/node_modules/openai/resources/videos.mjs.map +0 -1
- package/esm/node_modules/openai/resources/webhooks/index.mjs +0 -3
- package/esm/node_modules/openai/resources/webhooks/webhooks.mjs +0 -69
- package/esm/node_modules/openai/resources/webhooks/webhooks.mjs.map +0 -1
- package/esm/node_modules/openai/resources/webhooks.mjs +0 -4
- package/esm/node_modules/openai/streaming.mjs +0 -3
- package/esm/node_modules/openai/version.mjs +0 -6
- package/esm/node_modules/openai/version.mjs.map +0 -1
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { WorkflowError } from "../errors/workflow-error.mjs";
|
|
2
|
-
import { WorkflowDriftError } from "../errors/workflow-drift-error.mjs";
|
|
3
|
-
import "../errors/index.mjs";
|
|
4
|
-
import { resolveDefaultSnapshotStore } from "../config.mjs";
|
|
5
|
-
|
|
6
|
-
//#region ../@warlock.js/ai/src/workflow/snapshot.ts
|
|
7
|
-
/**
|
|
8
|
-
* Resolve the effective {@link SnapshotStore}: the workflow's own
|
|
9
|
-
* `snapshotStore` field wins; absent that, fall back to the global
|
|
10
|
-
* default set via `ai.config({ defaultSnapshotStore })`.
|
|
11
|
-
*
|
|
12
|
-
* The global default is typed for the supervisor snapshot shape, but
|
|
13
|
-
* every store impl keys purely by `runId` and round-trips whatever
|
|
14
|
-
* envelope it is handed — so it serves a `WorkflowSnapshot` just as
|
|
15
|
-
* well. The cast re-tags the shape at this single boundary; the
|
|
16
|
-
* workflow only ever hands it a `WorkflowSnapshot`.
|
|
17
|
-
*/
|
|
18
|
-
function resolveSnapshotStore(definition) {
|
|
19
|
-
return definition.snapshotStore ?? resolveDefaultSnapshotStore();
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Write the current run's state to the configured `KVStore`. Returns
|
|
23
|
-
* an outcome object instead of throwing so the engine can surface
|
|
24
|
-
* persistence failures via events + logs without aborting the run.
|
|
25
|
-
* Callers decide whether a failed checkpoint is fatal.
|
|
26
|
-
*
|
|
27
|
-
* No-op (returns `{ ok: true }`) when the workflow has no store
|
|
28
|
-
* configured — the common in-memory test case.
|
|
29
|
-
*/
|
|
30
|
-
async function persistSnapshot(params) {
|
|
31
|
-
const store = resolveSnapshotStore(params.definition);
|
|
32
|
-
if (!store) return { ok: true };
|
|
33
|
-
const snapshot = {
|
|
34
|
-
runId: params.runId,
|
|
35
|
-
workflowName: params.definition.name,
|
|
36
|
-
signature: params.signature,
|
|
37
|
-
version: params.definition.version,
|
|
38
|
-
input: params.input,
|
|
39
|
-
state: { ...params.state },
|
|
40
|
-
steps: { ...params.steps },
|
|
41
|
-
next: params.next,
|
|
42
|
-
status: params.status,
|
|
43
|
-
startedAt: params.startedAt,
|
|
44
|
-
savedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
45
|
-
};
|
|
46
|
-
try {
|
|
47
|
-
await store.save(snapshot);
|
|
48
|
-
return { ok: true };
|
|
49
|
-
} catch (err) {
|
|
50
|
-
return {
|
|
51
|
-
ok: false,
|
|
52
|
-
error: err
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Load a prior run's snapshot from the store and run the drift
|
|
58
|
-
* check. Throws `WorkflowError` when no snapshot exists, and
|
|
59
|
-
* `WorkflowDriftError` when the stored signature doesn't match the
|
|
60
|
-
* current definition (unless `force` is set).
|
|
61
|
-
*/
|
|
62
|
-
async function loadSnapshotForResume(params) {
|
|
63
|
-
const store = resolveSnapshotStore(params.definition);
|
|
64
|
-
if (!store) throw new WorkflowError(`workflow "${params.definition.name}" has no store configured — set \`snapshotStore\` on the definition or call \`ai.config({ defaultSnapshotStore })\` at boot before calling resume()`);
|
|
65
|
-
const snap = await store.load(params.runId) ?? null;
|
|
66
|
-
if (!snap) throw new WorkflowError(`workflow "${params.definition.name}": no snapshot for runId "${params.runId}"`);
|
|
67
|
-
if (!params.options?.force && snap.signature !== params.signature) throw new WorkflowDriftError(`workflow "${params.definition.name}" signature drift on resume`, {
|
|
68
|
-
savedSignature: snap.signature,
|
|
69
|
-
currentSignature: params.signature,
|
|
70
|
-
runId: params.runId
|
|
71
|
-
});
|
|
72
|
-
return snap;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
//#endregion
|
|
76
|
-
export { loadSnapshotForResume, persistSnapshot };
|
|
77
|
-
//# sourceMappingURL=snapshot.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot.mjs","names":[],"sources":["../../../../../../../../../@warlock.js/ai/src/workflow/snapshot.ts"],"sourcesContent":["import { resolveDefaultSnapshotStore } from \"../config\";\nimport type { SnapshotStore } from \"../contracts/orchestrator/snapshot-store.contract\";\nimport type { StepSnapshot } from \"../contracts/result/step-result.type\";\nimport type { WorkflowSnapshot } from \"../contracts/workflow/workflow-snapshot.type\";\nimport type {\n WorkflowDefinition,\n WorkflowResumeOptions,\n} from \"../contracts/workflow/workflow.contract\";\nimport { WorkflowDriftError, WorkflowError } from \"../errors\";\n\n/**\n * Resolve the effective {@link SnapshotStore}: the workflow's own\n * `snapshotStore` field wins; absent that, fall back to the global\n * default set via `ai.config({ defaultSnapshotStore })`.\n *\n * The global default is typed for the supervisor snapshot shape, but\n * every store impl keys purely by `runId` and round-trips whatever\n * envelope it is handed — so it serves a `WorkflowSnapshot` just as\n * well. The cast re-tags the shape at this single boundary; the\n * workflow only ever hands it a `WorkflowSnapshot`.\n */\nfunction resolveSnapshotStore<T>(\n definition: WorkflowDefinition<any, T, any, any>,\n): SnapshotStore<WorkflowSnapshot> | undefined {\n return (\n definition.snapshotStore ??\n (resolveDefaultSnapshotStore() as SnapshotStore<WorkflowSnapshot> | undefined)\n );\n}\n\nexport type PersistParams<T> = {\n definition: WorkflowDefinition<any, T, any, any>;\n signature: string;\n runId: string;\n startedAt: string;\n input: unknown;\n state: Record<string, unknown>;\n steps: Record<string, StepSnapshot>;\n next: string | null;\n status: WorkflowSnapshot[\"status\"];\n};\n\nexport type PersistOutcome = { ok: true } | { ok: false; error: unknown };\n\n/**\n * Write the current run's state to the configured `KVStore`. Returns\n * an outcome object instead of throwing so the engine can surface\n * persistence failures via events + logs without aborting the run.\n * Callers decide whether a failed checkpoint is fatal.\n *\n * No-op (returns `{ ok: true }`) when the workflow has no store\n * configured — the common in-memory test case.\n */\nexport async function persistSnapshot<T>(\n params: PersistParams<T>,\n): Promise<PersistOutcome> {\n const store = resolveSnapshotStore(params.definition);\n\n if (!store) return { ok: true };\n\n const snapshot: WorkflowSnapshot = {\n runId: params.runId,\n workflowName: params.definition.name,\n signature: params.signature,\n version: params.definition.version,\n input: params.input,\n state: { ...params.state },\n steps: { ...params.steps },\n next: params.next,\n status: params.status,\n startedAt: params.startedAt,\n savedAt: new Date().toISOString(),\n };\n\n try {\n await store.save(snapshot);\n return { ok: true };\n } catch (err) {\n return { ok: false, error: err };\n }\n}\n\n/**\n * Load a prior run's snapshot from the store and run the drift\n * check. Throws `WorkflowError` when no snapshot exists, and\n * `WorkflowDriftError` when the stored signature doesn't match the\n * current definition (unless `force` is set).\n */\nexport async function loadSnapshotForResume<T>(params: {\n definition: WorkflowDefinition<any, T, any, any>;\n signature: string;\n runId: string;\n options?: WorkflowResumeOptions;\n}): Promise<WorkflowSnapshot> {\n const store = resolveSnapshotStore(params.definition);\n\n if (!store) {\n throw new WorkflowError(\n `workflow \"${params.definition.name}\" has no store configured — set \\`snapshotStore\\` on the definition or call \\`ai.config({ defaultSnapshotStore })\\` at boot before calling resume()`,\n );\n }\n\n const snap = (await store.load(params.runId)) ?? null;\n\n if (!snap) {\n throw new WorkflowError(\n `workflow \"${params.definition.name}\": no snapshot for runId \"${params.runId}\"`,\n );\n }\n\n if (!params.options?.force && snap.signature !== params.signature) {\n throw new WorkflowDriftError(\n `workflow \"${params.definition.name}\" signature drift on resume`,\n {\n savedSignature: snap.signature,\n currentSignature: params.signature,\n runId: params.runId,\n },\n );\n }\n\n return snap;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAqBA,SAAS,qBACP,YAC6C;CAC7C,OACE,WAAW,iBACV,4BAA4B;AAEjC;;;;;;;;;;AAyBA,eAAsB,gBACpB,QACyB;CACzB,MAAM,QAAQ,qBAAqB,OAAO,UAAU;CAEpD,IAAI,CAAC,OAAO,OAAO,EAAE,IAAI,KAAK;CAE9B,MAAM,WAA6B;EACjC,OAAO,OAAO;EACd,cAAc,OAAO,WAAW;EAChC,WAAW,OAAO;EAClB,SAAS,OAAO,WAAW;EAC3B,OAAO,OAAO;EACd,OAAO,EAAE,GAAG,OAAO,MAAM;EACzB,OAAO,EAAE,GAAG,OAAO,MAAM;EACzB,MAAM,OAAO;EACb,QAAQ,OAAO;EACf,WAAW,OAAO;EAClB,0BAAS,IAAI,KAAK,EAAC,CAAC,YAAY;CAClC;CAEA,IAAI;EACF,MAAM,MAAM,KAAK,QAAQ;EACzB,OAAO,EAAE,IAAI,KAAK;CACpB,SAAS,KAAK;EACZ,OAAO;GAAE,IAAI;GAAO,OAAO;EAAI;CACjC;AACF;;;;;;;AAQA,eAAsB,sBAAyB,QAKjB;CAC5B,MAAM,QAAQ,qBAAqB,OAAO,UAAU;CAEpD,IAAI,CAAC,OACH,MAAM,IAAI,cACR,aAAa,OAAO,WAAW,KAAK,oJACtC;CAGF,MAAM,OAAQ,MAAM,MAAM,KAAK,OAAO,KAAK,KAAM;CAEjD,IAAI,CAAC,MACH,MAAM,IAAI,cACR,aAAa,OAAO,WAAW,KAAK,4BAA4B,OAAO,MAAM,EAC/E;CAGF,IAAI,CAAC,OAAO,SAAS,SAAS,KAAK,cAAc,OAAO,WACtD,MAAM,IAAI,mBACR,aAAa,OAAO,WAAW,KAAK,8BACpC;EACE,gBAAgB,KAAK;EACrB,kBAAkB,OAAO;EACzB,OAAO,OAAO;CAChB,CACF;CAGF,OAAO;AACT"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { WorkflowError } from "../errors/workflow-error.mjs";
|
|
2
|
-
import "../errors/index.mjs";
|
|
3
|
-
|
|
4
|
-
//#region ../@warlock.js/ai/src/workflow/state.ts
|
|
5
|
-
/**
|
|
6
|
-
* Deep-clone workflow state. Uses `structuredClone` — handles Date,
|
|
7
|
-
* Map, Set, ArrayBuffer, nested objects, arrays, primitives. Throws
|
|
8
|
-
* a typed `WorkflowError` on older runtimes (pre-Node-17) rather
|
|
9
|
-
* than silently falling back to a JSON round-trip that would drop
|
|
10
|
-
* non-serializable values like Dates without warning.
|
|
11
|
-
*
|
|
12
|
-
* Workflow state should stay serializable anyway (it round-trips
|
|
13
|
-
* through `KVStore` on every checkpoint). If `structuredClone` chokes
|
|
14
|
-
* on a value, that's a bug in the user's state — surface it.
|
|
15
|
-
*/
|
|
16
|
-
function cloneState(value) {
|
|
17
|
-
if (typeof structuredClone !== "function") throw new WorkflowError("workflow state cloning requires `structuredClone` (Node 17+ or a modern browser)");
|
|
18
|
-
return structuredClone(value);
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Recursively freeze `value` and every nested plain object / array so
|
|
22
|
-
* consumers of `ctx.steps[x].state` or `report.state` can't mutate
|
|
23
|
-
* historical snapshots. Already-frozen values are skipped.
|
|
24
|
-
*/
|
|
25
|
-
function deepFreeze(value) {
|
|
26
|
-
if (value === null || typeof value !== "object") return value;
|
|
27
|
-
if (Object.isFrozen(value)) return value;
|
|
28
|
-
for (const key of Object.keys(value)) {
|
|
29
|
-
const child = value[key];
|
|
30
|
-
if (child && typeof child === "object") deepFreeze(child);
|
|
31
|
-
}
|
|
32
|
-
return Object.freeze(value);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
//#endregion
|
|
36
|
-
export { cloneState, deepFreeze };
|
|
37
|
-
//# sourceMappingURL=state.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"state.mjs","names":[],"sources":["../../../../../../../../../@warlock.js/ai/src/workflow/state.ts"],"sourcesContent":["import { WorkflowError } from \"../errors\";\n\n/**\n * Deep-clone workflow state. Uses `structuredClone` — handles Date,\n * Map, Set, ArrayBuffer, nested objects, arrays, primitives. Throws\n * a typed `WorkflowError` on older runtimes (pre-Node-17) rather\n * than silently falling back to a JSON round-trip that would drop\n * non-serializable values like Dates without warning.\n *\n * Workflow state should stay serializable anyway (it round-trips\n * through `KVStore` on every checkpoint). If `structuredClone` chokes\n * on a value, that's a bug in the user's state — surface it.\n */\nexport function cloneState<T>(value: T): T {\n if (typeof structuredClone !== \"function\") {\n throw new WorkflowError(\n \"workflow state cloning requires `structuredClone` (Node 17+ or a modern browser)\",\n );\n }\n\n return structuredClone(value);\n}\n\n/**\n * Recursively freeze `value` and every nested plain object / array so\n * consumers of `ctx.steps[x].state` or `report.state` can't mutate\n * historical snapshots. Already-frozen values are skipped.\n */\nexport function deepFreeze<T>(value: T): T {\n if (value === null || typeof value !== \"object\") return value;\n if (Object.isFrozen(value)) return value;\n\n for (const key of Object.keys(value as Record<string, unknown>)) {\n const child = (value as Record<string, unknown>)[key];\n if (child && typeof child === \"object\") deepFreeze(child);\n }\n\n return Object.freeze(value);\n}\n"],"mappings":";;;;;;;;;;;;;;;AAaA,SAAgB,WAAc,OAAa;CACzC,IAAI,OAAO,oBAAoB,YAC7B,MAAM,IAAI,cACR,kFACF;CAGF,OAAO,gBAAgB,KAAK;AAC9B;;;;;;AAOA,SAAgB,WAAc,OAAa;CACzC,IAAI,UAAU,QAAQ,OAAO,UAAU,UAAU,OAAO;CACxD,IAAI,OAAO,SAAS,KAAK,GAAG,OAAO;CAEnC,KAAK,MAAM,OAAO,OAAO,KAAK,KAAgC,GAAG;EAC/D,MAAM,QAAS,MAAkC;EACjD,IAAI,SAAS,OAAO,UAAU,UAAU,WAAW,KAAK;CAC1D;CAEA,OAAO,OAAO,OAAO,KAAK;AAC5B"}
|
|
@@ -1,370 +0,0 @@
|
|
|
1
|
-
import { AIError } from "../errors/ai-error.mjs";
|
|
2
|
-
import { WorkflowError } from "../errors/workflow-error.mjs";
|
|
3
|
-
import { SchemaValidationError } from "../errors/schema-validation-error.mjs";
|
|
4
|
-
import { StepFailedError } from "../errors/step-failed-error.mjs";
|
|
5
|
-
import { WorkflowCancelledError } from "../errors/workflow-cancelled-error.mjs";
|
|
6
|
-
import "../errors/index.mjs";
|
|
7
|
-
import { mergeUsage } from "../utils/compute-cost.mjs";
|
|
8
|
-
import { withoutRunFrame } from "../utils/run-context.mjs";
|
|
9
|
-
import { isAbortError, resolveBackoff, resolveRetryConfig } from "./retry.mjs";
|
|
10
|
-
import { createCancelledError, sleep } from "./cancellation.mjs";
|
|
11
|
-
import { cloneState, deepFreeze } from "./state.mjs";
|
|
12
|
-
|
|
13
|
-
//#region ../@warlock.js/ai/src/workflow/step-runner.ts
|
|
14
|
-
/**
|
|
15
|
-
* Narrow an `executionResult` to an `AgentResult` when the step ran
|
|
16
|
-
* an agent. Custom `run` steps return arbitrary values, so the
|
|
17
|
-
* `type: "agent"` discriminant keeps us honest.
|
|
18
|
-
*/
|
|
19
|
-
function asAgentResult(result) {
|
|
20
|
-
if (!result || typeof result !== "object") return void 0;
|
|
21
|
-
if (result.type !== "agent") return void 0;
|
|
22
|
-
return result;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Drive one step's full lifecycle — skip evaluation, parallel
|
|
26
|
-
* dispatch, retry loop around before → run|agent → output → after.
|
|
27
|
-
* Returns a mutable snapshot; the engine deep-freezes it before
|
|
28
|
-
* exposing.
|
|
29
|
-
*/
|
|
30
|
-
async function executeStep(params) {
|
|
31
|
-
const { step, emitter, executionHandlers, logger, logModule, signal } = params;
|
|
32
|
-
const startedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
33
|
-
const stepStartPerf = performance.now();
|
|
34
|
-
params.step.on?.starting?.({ step: step.name });
|
|
35
|
-
emitter.emit("workflow.step.starting", { step: step.name }, executionHandlers);
|
|
36
|
-
logger.debug(logModule, "step.starting", `${step.name} step starting`, { step: step.name });
|
|
37
|
-
const stepState = cloneState(params.state);
|
|
38
|
-
try {
|
|
39
|
-
if (step.skip) {
|
|
40
|
-
if (await step.skip(params.buildContext({ state: stepState }))) {
|
|
41
|
-
const endedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
42
|
-
const duration = performance.now() - stepStartPerf;
|
|
43
|
-
emitter.emit("workflow.step.skipped", { step: step.name }, executionHandlers);
|
|
44
|
-
logger.debug(logModule, "step.skipped", `${step.name} step skipped`, { step: step.name });
|
|
45
|
-
return {
|
|
46
|
-
output: void 0,
|
|
47
|
-
skipped: true,
|
|
48
|
-
status: "skipped",
|
|
49
|
-
startedAt,
|
|
50
|
-
endedAt,
|
|
51
|
-
duration,
|
|
52
|
-
attempts: 0,
|
|
53
|
-
attemptHistory: [],
|
|
54
|
-
state: stepState
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
} catch (err) {
|
|
59
|
-
return buildFailedSnapshot(step, stepState, startedAt, stepStartPerf, 1, [failedAttempt(1, err, (/* @__PURE__ */ new Date()).toISOString(), performance.now())]);
|
|
60
|
-
}
|
|
61
|
-
if (step.parallel && step.parallel.length > 0) return runParallelStep({
|
|
62
|
-
...params,
|
|
63
|
-
step,
|
|
64
|
-
stepState,
|
|
65
|
-
startedAt,
|
|
66
|
-
startPerf: stepStartPerf
|
|
67
|
-
});
|
|
68
|
-
const retryConfig = resolveRetryConfig(step, params.workflowDefaultRetry);
|
|
69
|
-
const attempts = [];
|
|
70
|
-
const totalAttempts = Math.max(1, retryConfig.attempts ?? 1);
|
|
71
|
-
let lastError;
|
|
72
|
-
let executionResult;
|
|
73
|
-
let output;
|
|
74
|
-
let succeeded = false;
|
|
75
|
-
for (let attempt = 1; attempt <= totalAttempts; attempt++) {
|
|
76
|
-
if (signal?.aborted) throw createCancelledError(signal);
|
|
77
|
-
const attemptStart = (/* @__PURE__ */ new Date()).toISOString();
|
|
78
|
-
const attemptStartPerf = performance.now();
|
|
79
|
-
try {
|
|
80
|
-
const attemptState = cloneState(params.state);
|
|
81
|
-
if (step.before) await step.before(params.buildContext({ state: attemptState }));
|
|
82
|
-
if (step.agent) {
|
|
83
|
-
const agent = step.agent;
|
|
84
|
-
const { prompt, ...agentOpts } = step.input ? await step.input(params.buildContext({ state: attemptState })) : { prompt: "" };
|
|
85
|
-
const result = await withoutRunFrame(() => agent.execute(prompt, {
|
|
86
|
-
...agentOpts,
|
|
87
|
-
signal
|
|
88
|
-
}));
|
|
89
|
-
executionResult = result;
|
|
90
|
-
if (result.usage) mergeUsage(params.usage, result.usage);
|
|
91
|
-
if (result.error) throw result.error;
|
|
92
|
-
} else if (step.run) executionResult = await step.run(params.buildContext({ state: attemptState }));
|
|
93
|
-
if (step.output) {
|
|
94
|
-
const extracted = await step.output.extract(params.buildContext({
|
|
95
|
-
state: attemptState,
|
|
96
|
-
agentResult: executionResult
|
|
97
|
-
}));
|
|
98
|
-
output = await validateSchema(step.output.schema, extracted);
|
|
99
|
-
} else output = void 0;
|
|
100
|
-
if (step.after) await step.after(params.buildContext({
|
|
101
|
-
state: attemptState,
|
|
102
|
-
agentResult: executionResult
|
|
103
|
-
}));
|
|
104
|
-
Object.assign(stepState, attemptState);
|
|
105
|
-
attempts.push({
|
|
106
|
-
index: attempt,
|
|
107
|
-
startedAt: attemptStart,
|
|
108
|
-
endedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
109
|
-
duration: performance.now() - attemptStartPerf,
|
|
110
|
-
status: "success"
|
|
111
|
-
});
|
|
112
|
-
succeeded = true;
|
|
113
|
-
break;
|
|
114
|
-
} catch (err) {
|
|
115
|
-
if (isAbortError(err) || err instanceof WorkflowCancelledError) throw createCancelledError(signal);
|
|
116
|
-
attempts.push({
|
|
117
|
-
index: attempt,
|
|
118
|
-
startedAt: attemptStart,
|
|
119
|
-
endedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
120
|
-
duration: performance.now() - attemptStartPerf,
|
|
121
|
-
status: "failed",
|
|
122
|
-
error: toAIError(err)
|
|
123
|
-
});
|
|
124
|
-
lastError = err;
|
|
125
|
-
if (!(attempt < totalAttempts && (retryConfig.retryOn ? retryConfig.retryOn(err, attempt) !== false : true))) break;
|
|
126
|
-
emitter.emit("workflow.step.retrying", {
|
|
127
|
-
step: step.name,
|
|
128
|
-
attempt: attempt + 1,
|
|
129
|
-
totalAttempts,
|
|
130
|
-
lastError: err
|
|
131
|
-
}, params.executionHandlers);
|
|
132
|
-
step.on?.retrying?.({
|
|
133
|
-
step: step.name,
|
|
134
|
-
attempt: attempt + 1,
|
|
135
|
-
totalAttempts,
|
|
136
|
-
lastError: err
|
|
137
|
-
});
|
|
138
|
-
logger.warn(logModule, "step.retrying", `${step.name} step retrying`, {
|
|
139
|
-
step: step.name,
|
|
140
|
-
attempt: attempt + 1
|
|
141
|
-
});
|
|
142
|
-
retryConfig.onRetry?.(attempt + 1, err);
|
|
143
|
-
const delay = resolveBackoff(attempt, retryConfig.backoff);
|
|
144
|
-
if (delay > 0) await sleep(delay, signal);
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
const endedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
148
|
-
const duration = performance.now() - stepStartPerf;
|
|
149
|
-
if (!succeeded) {
|
|
150
|
-
const aiError = toAIError(lastError);
|
|
151
|
-
const stepError = new StepFailedError(`step "${step.name}" failed after ${attempts.length} attempt(s): ${aiError.message}`, {
|
|
152
|
-
stepName: step.name,
|
|
153
|
-
attempts: attempts.length,
|
|
154
|
-
cause: aiError
|
|
155
|
-
});
|
|
156
|
-
emitter.emit("workflow.step.failed", {
|
|
157
|
-
step: step.name,
|
|
158
|
-
error: stepError,
|
|
159
|
-
attempts: attempts.length
|
|
160
|
-
}, params.executionHandlers);
|
|
161
|
-
step.on?.failed?.({
|
|
162
|
-
step: step.name,
|
|
163
|
-
error: stepError,
|
|
164
|
-
attempts: attempts.length
|
|
165
|
-
});
|
|
166
|
-
logger.error(logModule, "step.failed", `${step.name} step failed`, {
|
|
167
|
-
step: step.name,
|
|
168
|
-
attempts: attempts.length,
|
|
169
|
-
code: stepError.code
|
|
170
|
-
});
|
|
171
|
-
const failedAgentResult = asAgentResult(executionResult);
|
|
172
|
-
return {
|
|
173
|
-
output: void 0,
|
|
174
|
-
skipped: false,
|
|
175
|
-
status: "failed",
|
|
176
|
-
startedAt,
|
|
177
|
-
endedAt,
|
|
178
|
-
duration,
|
|
179
|
-
attempts: attempts.length,
|
|
180
|
-
attemptHistory: attempts,
|
|
181
|
-
error: stepError,
|
|
182
|
-
state: stepState,
|
|
183
|
-
executionResult: executionResult && typeof executionResult === "object" ? executionResult : void 0,
|
|
184
|
-
agentReport: failedAgentResult?.report,
|
|
185
|
-
agentUsage: failedAgentResult?.usage
|
|
186
|
-
};
|
|
187
|
-
}
|
|
188
|
-
emitter.emit("workflow.step.completed", {
|
|
189
|
-
step: step.name,
|
|
190
|
-
output,
|
|
191
|
-
duration
|
|
192
|
-
}, params.executionHandlers);
|
|
193
|
-
step.on?.completed?.({
|
|
194
|
-
step: step.name,
|
|
195
|
-
output,
|
|
196
|
-
duration
|
|
197
|
-
});
|
|
198
|
-
logger.debug(logModule, "step.completed", "step completed", {
|
|
199
|
-
step: step.name,
|
|
200
|
-
duration
|
|
201
|
-
});
|
|
202
|
-
const completedAgentResult = asAgentResult(executionResult);
|
|
203
|
-
return {
|
|
204
|
-
output,
|
|
205
|
-
skipped: false,
|
|
206
|
-
status: "completed",
|
|
207
|
-
startedAt,
|
|
208
|
-
endedAt,
|
|
209
|
-
duration,
|
|
210
|
-
attempts: attempts.length,
|
|
211
|
-
attemptHistory: attempts,
|
|
212
|
-
state: stepState,
|
|
213
|
-
executionResult: executionResult && typeof executionResult === "object" ? executionResult : void 0,
|
|
214
|
-
agentReport: completedAgentResult?.report,
|
|
215
|
-
agentUsage: completedAgentResult?.usage
|
|
216
|
-
};
|
|
217
|
-
}
|
|
218
|
-
async function runParallelStep(params) {
|
|
219
|
-
const { step, emitter, executionHandlers, logger, logModule, signal } = params;
|
|
220
|
-
const sharedState = params.stepState;
|
|
221
|
-
const childSnapshots = {};
|
|
222
|
-
let firstError;
|
|
223
|
-
const results = await Promise.all((step.parallel ?? []).map(async (child) => {
|
|
224
|
-
return {
|
|
225
|
-
child,
|
|
226
|
-
snap: await executeStep({
|
|
227
|
-
step: child,
|
|
228
|
-
state: sharedState,
|
|
229
|
-
emitter,
|
|
230
|
-
executionHandlers,
|
|
231
|
-
logger,
|
|
232
|
-
logModule,
|
|
233
|
-
signal,
|
|
234
|
-
buildContext: params.buildContext,
|
|
235
|
-
usage: params.usage
|
|
236
|
-
})
|
|
237
|
-
};
|
|
238
|
-
}));
|
|
239
|
-
for (const { child, snap } of results) {
|
|
240
|
-
childSnapshots[child.name] = finalizeSnapshot(snap);
|
|
241
|
-
if (step.mergeState) step.mergeState(sharedState, snap.state, child.name);
|
|
242
|
-
else Object.assign(sharedState, snap.state);
|
|
243
|
-
if (snap.status === "failed" && !firstError && snap.error) firstError = snap.error;
|
|
244
|
-
}
|
|
245
|
-
const endedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
246
|
-
const duration = performance.now() - params.startPerf;
|
|
247
|
-
let output;
|
|
248
|
-
if (step.output) try {
|
|
249
|
-
const ctx = params.buildContext({ state: sharedState });
|
|
250
|
-
const ctxWithChildren = {
|
|
251
|
-
...ctx,
|
|
252
|
-
steps: {
|
|
253
|
-
...ctx.steps,
|
|
254
|
-
[step.name]: {
|
|
255
|
-
...childSnapshots,
|
|
256
|
-
steps: childSnapshots,
|
|
257
|
-
status: firstError ? "failed" : "completed"
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
};
|
|
261
|
-
const extracted = await step.output.extract(ctxWithChildren);
|
|
262
|
-
output = await validateSchema(step.output.schema, extracted);
|
|
263
|
-
} catch (err) {
|
|
264
|
-
firstError = firstError ?? toAIError(err);
|
|
265
|
-
}
|
|
266
|
-
const status = firstError ? "failed" : "completed";
|
|
267
|
-
if (status === "completed") {
|
|
268
|
-
emitter.emit("workflow.step.completed", {
|
|
269
|
-
step: step.name,
|
|
270
|
-
output,
|
|
271
|
-
duration
|
|
272
|
-
}, executionHandlers);
|
|
273
|
-
step.on?.completed?.({
|
|
274
|
-
step: step.name,
|
|
275
|
-
output,
|
|
276
|
-
duration
|
|
277
|
-
});
|
|
278
|
-
} else {
|
|
279
|
-
emitter.emit("workflow.step.failed", {
|
|
280
|
-
step: step.name,
|
|
281
|
-
error: firstError,
|
|
282
|
-
attempts: 1
|
|
283
|
-
}, executionHandlers);
|
|
284
|
-
step.on?.failed?.({
|
|
285
|
-
step: step.name,
|
|
286
|
-
error: firstError,
|
|
287
|
-
attempts: 1
|
|
288
|
-
});
|
|
289
|
-
}
|
|
290
|
-
return {
|
|
291
|
-
output,
|
|
292
|
-
skipped: false,
|
|
293
|
-
status,
|
|
294
|
-
startedAt: params.startedAt,
|
|
295
|
-
endedAt,
|
|
296
|
-
duration,
|
|
297
|
-
attempts: 1,
|
|
298
|
-
attemptHistory: [],
|
|
299
|
-
error: firstError,
|
|
300
|
-
state: sharedState,
|
|
301
|
-
steps: childSnapshots
|
|
302
|
-
};
|
|
303
|
-
}
|
|
304
|
-
function finalizeSnapshot(snap) {
|
|
305
|
-
return Object.freeze({
|
|
306
|
-
output: snap.output,
|
|
307
|
-
skipped: snap.skipped,
|
|
308
|
-
status: snap.status,
|
|
309
|
-
startedAt: snap.startedAt,
|
|
310
|
-
endedAt: snap.endedAt,
|
|
311
|
-
duration: snap.duration,
|
|
312
|
-
attempts: snap.attempts,
|
|
313
|
-
attemptHistory: snap.attemptHistory,
|
|
314
|
-
error: snap.error,
|
|
315
|
-
state: deepFreeze(cloneState(snap.state)),
|
|
316
|
-
executionResult: snap.executionResult,
|
|
317
|
-
agentReport: snap.agentReport,
|
|
318
|
-
agentUsage: snap.agentUsage,
|
|
319
|
-
steps: snap.steps
|
|
320
|
-
});
|
|
321
|
-
}
|
|
322
|
-
function buildFailedSnapshot(step, state, startedAt, startPerf, attemptsCount, attemptHistory) {
|
|
323
|
-
const endedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
324
|
-
const duration = performance.now() - startPerf;
|
|
325
|
-
const lastErr = attemptHistory[attemptHistory.length - 1]?.error;
|
|
326
|
-
return {
|
|
327
|
-
output: void 0,
|
|
328
|
-
skipped: false,
|
|
329
|
-
status: "failed",
|
|
330
|
-
startedAt,
|
|
331
|
-
endedAt,
|
|
332
|
-
duration,
|
|
333
|
-
attempts: attemptsCount,
|
|
334
|
-
attemptHistory,
|
|
335
|
-
error: lastErr ? new StepFailedError(`step "${step.name}" skip threw: ${lastErr.message}`, {
|
|
336
|
-
stepName: step.name,
|
|
337
|
-
attempts: attemptsCount,
|
|
338
|
-
cause: lastErr
|
|
339
|
-
}) : new StepFailedError(`step "${step.name}" failed`, {
|
|
340
|
-
stepName: step.name,
|
|
341
|
-
attempts: attemptsCount
|
|
342
|
-
}),
|
|
343
|
-
state
|
|
344
|
-
};
|
|
345
|
-
}
|
|
346
|
-
function failedAttempt(index, err, startedAt, startPerf) {
|
|
347
|
-
return {
|
|
348
|
-
index,
|
|
349
|
-
startedAt,
|
|
350
|
-
endedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
351
|
-
duration: performance.now() - startPerf,
|
|
352
|
-
status: "failed",
|
|
353
|
-
error: toAIError(err)
|
|
354
|
-
};
|
|
355
|
-
}
|
|
356
|
-
function toAIError(err) {
|
|
357
|
-
if (err instanceof AIError) return err;
|
|
358
|
-
if (err instanceof Error) return new WorkflowError(err.message, { cause: err });
|
|
359
|
-
return new WorkflowError(String(err));
|
|
360
|
-
}
|
|
361
|
-
async function validateSchema(schema, value) {
|
|
362
|
-
if (!schema) return value;
|
|
363
|
-
const result = await schema["~standard"].validate(value);
|
|
364
|
-
if ("issues" in result && result.issues) throw new SchemaValidationError("workflow step output failed schema validation", { issues: result.issues });
|
|
365
|
-
return result.value;
|
|
366
|
-
}
|
|
367
|
-
|
|
368
|
-
//#endregion
|
|
369
|
-
export { executeStep, finalizeSnapshot, toAIError };
|
|
370
|
-
//# sourceMappingURL=step-runner.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"step-runner.mjs","names":[],"sources":["../../../../../../../../../@warlock.js/ai/src/workflow/step-runner.ts"],"sourcesContent":["import type { StandardSchemaV1 } from \"@standard-schema/spec\";\nimport type { Logger } from \"@warlock.js/logger\";\nimport type { AgentResult } from \"../contracts/result/agent-result.type\";\nimport type { AgentReport } from \"../contracts/result/execution-report.type\";\nimport type { AttemptEntry, StepSnapshot } from \"../contracts/result/step-result.type\";\nimport type { Usage } from \"../contracts/result/usage.type\";\nimport type { RetryConfig } from \"../contracts/workflow/retry-config.type\";\nimport type { StepDefinition } from \"../contracts/workflow/step.contract\";\nimport type { WorkflowContext } from \"../contracts/workflow/workflow-context.type\";\nimport type { WorkflowEventHandlers } from \"../contracts/workflow/workflow.contract\";\nimport { mergeUsage } from \"../utils/compute-cost\";\nimport { withoutRunFrame } from \"../utils/run-context\";\nimport {\n AIError,\n SchemaValidationError,\n StepFailedError,\n WorkflowCancelledError,\n WorkflowError,\n} from \"../errors\";\nimport { createCancelledError, sleep } from \"./cancellation\";\nimport type { WorkflowEventSink } from \"./emitter\";\nimport { isAbortError, resolveBackoff, resolveRetryConfig } from \"./retry\";\nimport { cloneState, deepFreeze } from \"./state\";\n\n/**\n * Mutable snapshot used by the step runner — finalized (deep-frozen)\n * by the engine before being written to `ctx.steps` / `report.steps`.\n */\nexport type MutableStepSnapshot = {\n output: unknown;\n skipped: boolean;\n status: \"completed\" | \"skipped\" | \"failed\";\n startedAt: string;\n endedAt: string;\n duration: number;\n attempts: number;\n attemptHistory: AttemptEntry[];\n error?: AIError;\n state: Record<string, unknown>;\n executionResult?: unknown;\n agentReport?: AgentReport;\n agentUsage?: Usage;\n steps?: Record<string, StepSnapshot>;\n};\n\n/**\n * Narrow an `executionResult` to an `AgentResult` when the step ran\n * an agent. Custom `run` steps return arbitrary values, so the\n * `type: \"agent\"` discriminant keeps us honest.\n */\nfunction asAgentResult(result: unknown): AgentResult<unknown> | undefined {\n if (!result || typeof result !== \"object\") return undefined;\n if ((result as { type?: unknown }).type !== \"agent\") return undefined;\n return result as AgentResult<unknown>;\n}\n\nexport type ExecuteStepParams = {\n step: StepDefinition;\n state: Record<string, unknown>;\n emitter: WorkflowEventSink;\n executionHandlers?: WorkflowEventHandlers;\n logger: Logger;\n logModule: string;\n signal?: AbortSignal;\n buildContext: (current?: {\n state: Record<string, unknown>;\n agentResult?: unknown;\n }) => WorkflowContext;\n usage: Usage;\n workflowDefaultRetry?: RetryConfig | false;\n};\n\n/**\n * Drive one step's full lifecycle — skip evaluation, parallel\n * dispatch, retry loop around before → run|agent → output → after.\n * Returns a mutable snapshot; the engine deep-freezes it before\n * exposing.\n */\nexport async function executeStep(params: ExecuteStepParams): Promise<MutableStepSnapshot> {\n const { step, emitter, executionHandlers, logger, logModule, signal } = params;\n const startedAt = new Date().toISOString();\n const stepStartPerf = performance.now();\n\n params.step.on?.starting?.({ step: step.name });\n emitter.emit(\"workflow.step.starting\", { step: step.name }, executionHandlers);\n logger.debug(logModule, \"step.starting\", `${step.name} step starting`, {\n step: step.name,\n });\n\n const stepState: Record<string, unknown> = cloneState(params.state);\n\n // SKIP\n try {\n if (step.skip) {\n const shouldSkip = await step.skip(params.buildContext({ state: stepState }));\n if (shouldSkip) {\n const endedAt = new Date().toISOString();\n const duration = performance.now() - stepStartPerf;\n emitter.emit(\"workflow.step.skipped\", { step: step.name }, executionHandlers);\n logger.debug(logModule, \"step.skipped\", `${step.name} step skipped`, {\n step: step.name,\n });\n\n return {\n output: undefined,\n skipped: true,\n status: \"skipped\",\n startedAt,\n endedAt,\n duration,\n attempts: 0,\n attemptHistory: [],\n state: stepState,\n };\n }\n }\n } catch (err) {\n return buildFailedSnapshot(step, stepState, startedAt, stepStartPerf, 1, [\n failedAttempt(1, err, new Date().toISOString(), performance.now()),\n ]);\n }\n\n // PARALLEL\n if (step.parallel && step.parallel.length > 0) {\n return runParallelStep({\n ...params,\n step,\n stepState,\n startedAt,\n startPerf: stepStartPerf,\n });\n }\n\n const retryConfig = resolveRetryConfig(step, params.workflowDefaultRetry);\n\n const attempts: AttemptEntry[] = [];\n const totalAttempts = Math.max(1, retryConfig.attempts ?? 1);\n let lastError: unknown;\n let executionResult: unknown;\n let output: unknown;\n let succeeded = false;\n\n for (let attempt = 1; attempt <= totalAttempts; attempt++) {\n if (signal?.aborted) throw createCancelledError(signal);\n\n const attemptStart = new Date().toISOString();\n const attemptStartPerf = performance.now();\n try {\n // Fresh deep-clone per attempt — retries restart cleanly.\n const attemptState: Record<string, unknown> = cloneState(params.state);\n\n if (step.before) {\n await step.before(params.buildContext({ state: attemptState }));\n }\n\n if (step.agent) {\n const agent = step.agent;\n const agentInput = step.input\n ? await step.input(params.buildContext({ state: attemptState }))\n : { prompt: \"\" };\n\n const { prompt, ...agentOpts } = agentInput;\n\n // Run the step's agent inside a nested frame so observe-all does NOT\n // also self-route it as a standalone trace — the workflow already\n // captures it into report.steps (explicit capture, like the supervisor).\n const result = await withoutRunFrame(() =>\n agent.execute(prompt, {\n ...agentOpts,\n signal,\n }),\n );\n\n executionResult = result;\n\n if (result.usage) {\n mergeUsage(params.usage, result.usage);\n }\n\n if (result.error) throw result.error;\n } else if (step.run) {\n executionResult = await step.run(params.buildContext({ state: attemptState }));\n }\n\n if (step.output) {\n const extracted = await step.output.extract(\n params.buildContext({\n state: attemptState,\n agentResult: executionResult,\n }),\n );\n output = await validateSchema(step.output.schema, extracted);\n } else {\n output = undefined;\n }\n\n if (step.after) {\n await step.after(\n params.buildContext({\n state: attemptState,\n agentResult: executionResult,\n }),\n );\n }\n\n Object.assign(stepState, attemptState);\n\n attempts.push({\n index: attempt,\n startedAt: attemptStart,\n endedAt: new Date().toISOString(),\n duration: performance.now() - attemptStartPerf,\n status: \"success\",\n });\n succeeded = true;\n break;\n } catch (err) {\n if (isAbortError(err) || err instanceof WorkflowCancelledError) {\n throw createCancelledError(signal);\n }\n\n attempts.push({\n index: attempt,\n startedAt: attemptStart,\n endedAt: new Date().toISOString(),\n duration: performance.now() - attemptStartPerf,\n status: \"failed\",\n error: toAIError(err),\n });\n\n lastError = err;\n\n const shouldRetry =\n attempt < totalAttempts &&\n (retryConfig.retryOn ? retryConfig.retryOn(err, attempt) !== false : true);\n\n if (!shouldRetry) break;\n\n emitter.emit(\n \"workflow.step.retrying\",\n {\n step: step.name,\n attempt: attempt + 1,\n totalAttempts,\n lastError: err,\n },\n params.executionHandlers,\n );\n\n step.on?.retrying?.({\n step: step.name,\n attempt: attempt + 1,\n totalAttempts,\n lastError: err,\n });\n\n logger.warn(logModule, \"step.retrying\", `${step.name} step retrying`, {\n step: step.name,\n attempt: attempt + 1,\n });\n\n retryConfig.onRetry?.(attempt + 1, err);\n\n const delay = resolveBackoff(attempt, retryConfig.backoff);\n if (delay > 0) await sleep(delay, signal);\n }\n }\n\n const endedAt = new Date().toISOString();\n const duration = performance.now() - stepStartPerf;\n\n if (!succeeded) {\n const aiError = toAIError(lastError);\n const stepError = new StepFailedError(\n `step \"${step.name}\" failed after ${attempts.length} attempt(s): ${aiError.message}`,\n { stepName: step.name, attempts: attempts.length, cause: aiError },\n );\n\n emitter.emit(\n \"workflow.step.failed\",\n { step: step.name, error: stepError, attempts: attempts.length },\n params.executionHandlers,\n );\n\n step.on?.failed?.({\n step: step.name,\n error: stepError,\n attempts: attempts.length,\n });\n\n logger.error(logModule, \"step.failed\", `${step.name} step failed`, {\n step: step.name,\n attempts: attempts.length,\n code: stepError.code,\n });\n\n const failedAgentResult = asAgentResult(executionResult);\n return {\n output: undefined,\n skipped: false,\n status: \"failed\",\n startedAt,\n endedAt,\n duration,\n attempts: attempts.length,\n attemptHistory: attempts,\n error: stepError,\n state: stepState,\n executionResult:\n executionResult && typeof executionResult === \"object\" ? executionResult : undefined,\n agentReport: failedAgentResult?.report,\n agentUsage: failedAgentResult?.usage,\n };\n }\n\n emitter.emit(\n \"workflow.step.completed\",\n { step: step.name, output, duration },\n params.executionHandlers,\n );\n step.on?.completed?.({ step: step.name, output, duration });\n logger.debug(logModule, \"step.completed\", \"step completed\", {\n step: step.name,\n duration,\n });\n\n const completedAgentResult = asAgentResult(executionResult);\n return {\n output,\n skipped: false,\n status: \"completed\",\n startedAt,\n endedAt,\n duration,\n attempts: attempts.length,\n attemptHistory: attempts,\n state: stepState,\n executionResult:\n executionResult && typeof executionResult === \"object\" ? executionResult : undefined,\n agentReport: completedAgentResult?.report,\n agentUsage: completedAgentResult?.usage,\n };\n}\n\n// ---------------------------------------------------------------------------\n// Parallel runner\n// ---------------------------------------------------------------------------\n\ntype ParallelParams = ExecuteStepParams & {\n stepState: Record<string, unknown>;\n startedAt: string;\n startPerf: number;\n};\n\nasync function runParallelStep(params: ParallelParams): Promise<MutableStepSnapshot> {\n const { step, emitter, executionHandlers, logger, logModule, signal } = params;\n\n const sharedState = params.stepState;\n const childSnapshots: Record<string, StepSnapshot> = {};\n let firstError: AIError | undefined;\n\n const results = await Promise.all(\n (step.parallel ?? []).map(async (child) => {\n const snap = await executeStep({\n step: child,\n state: sharedState,\n emitter,\n executionHandlers,\n logger,\n logModule,\n signal,\n buildContext: params.buildContext,\n usage: params.usage,\n });\n\n return { child, snap };\n }),\n );\n\n // Merge each child's resulting state into the shared parent state in\n // DECLARATION order — not completion order. Every child cloned the\n // same initial `sharedState` synchronously at dispatch, so the merge\n // here is the only thing that decides conflicting keys; `Promise.all`\n // preserves input order in `results`, so a key written by multiple\n // children deterministically resolves to the last-declared child's\n // value regardless of which settled first (C3). An optional\n // `mergeState` reducer overrides this per key for advanced workflows.\n for (const { child, snap } of results) {\n childSnapshots[child.name] = finalizeSnapshot(snap);\n\n if (step.mergeState) {\n step.mergeState(sharedState, snap.state, child.name);\n } else {\n Object.assign(sharedState, snap.state);\n }\n\n if (snap.status === \"failed\" && !firstError && snap.error) {\n firstError = snap.error;\n }\n }\n\n const endedAt = new Date().toISOString();\n const duration = performance.now() - params.startPerf;\n\n let output: unknown;\n\n if (step.output) {\n try {\n const ctx = params.buildContext({ state: sharedState });\n const ctxWithChildren = {\n ...ctx,\n steps: {\n ...ctx.steps,\n [step.name]: {\n ...(childSnapshots as unknown as StepSnapshot),\n steps: childSnapshots,\n status: firstError ? \"failed\" : \"completed\",\n } as StepSnapshot,\n } as Readonly<Record<string, StepSnapshot>>,\n };\n\n const extracted = await step.output.extract(ctxWithChildren);\n output = await validateSchema(step.output.schema, extracted);\n } catch (err) {\n firstError = firstError ?? toAIError(err);\n }\n }\n\n const status: \"completed\" | \"failed\" = firstError ? \"failed\" : \"completed\";\n\n if (status === \"completed\") {\n emitter.emit(\n \"workflow.step.completed\",\n { step: step.name, output, duration },\n executionHandlers,\n );\n step.on?.completed?.({ step: step.name, output, duration });\n } else {\n emitter.emit(\n \"workflow.step.failed\",\n { step: step.name, error: firstError!, attempts: 1 },\n executionHandlers,\n );\n step.on?.failed?.({ step: step.name, error: firstError!, attempts: 1 });\n }\n\n return {\n output,\n skipped: false,\n status,\n startedAt: params.startedAt,\n endedAt,\n duration,\n attempts: 1,\n attemptHistory: [],\n error: firstError,\n state: sharedState,\n steps: childSnapshots,\n };\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nexport function finalizeSnapshot(snap: MutableStepSnapshot): StepSnapshot {\n return Object.freeze({\n output: snap.output,\n skipped: snap.skipped,\n status: snap.status,\n startedAt: snap.startedAt,\n endedAt: snap.endedAt,\n duration: snap.duration,\n attempts: snap.attempts,\n attemptHistory: snap.attemptHistory,\n error: snap.error,\n state: deepFreeze(cloneState(snap.state)),\n executionResult: snap.executionResult as StepSnapshot[\"executionResult\"],\n agentReport: snap.agentReport,\n agentUsage: snap.agentUsage,\n steps: snap.steps,\n }) as StepSnapshot;\n}\n\nfunction buildFailedSnapshot(\n step: StepDefinition,\n state: Record<string, unknown>,\n startedAt: string,\n startPerf: number,\n attemptsCount: number,\n attemptHistory: AttemptEntry[],\n): MutableStepSnapshot {\n const endedAt = new Date().toISOString();\n const duration = performance.now() - startPerf;\n const lastErr = attemptHistory[attemptHistory.length - 1]?.error;\n const wrapped = lastErr\n ? new StepFailedError(`step \"${step.name}\" skip threw: ${lastErr.message}`, {\n stepName: step.name,\n attempts: attemptsCount,\n cause: lastErr,\n })\n : new StepFailedError(`step \"${step.name}\" failed`, {\n stepName: step.name,\n attempts: attemptsCount,\n });\n\n return {\n output: undefined,\n skipped: false,\n status: \"failed\",\n startedAt,\n endedAt,\n duration,\n attempts: attemptsCount,\n attemptHistory,\n error: wrapped,\n state,\n };\n}\n\nfunction failedAttempt(\n index: number,\n err: unknown,\n startedAt: string,\n startPerf: number,\n): AttemptEntry {\n return {\n index,\n startedAt,\n endedAt: new Date().toISOString(),\n duration: performance.now() - startPerf,\n status: \"failed\",\n error: toAIError(err),\n };\n}\n\nexport function toAIError(err: unknown): AIError {\n if (err instanceof AIError) return err;\n if (err instanceof Error) return new WorkflowError(err.message, { cause: err });\n return new WorkflowError(String(err));\n}\n\nasync function validateSchema(\n schema: StandardSchemaV1<unknown> | undefined,\n value: unknown,\n): Promise<unknown> {\n if (!schema) return value;\n const result = await schema[\"~standard\"].validate(value);\n\n if (\"issues\" in result && result.issues) {\n throw new SchemaValidationError(\"workflow step output failed schema validation\", {\n issues: result.issues,\n });\n }\n\n return (result as { value: unknown }).value;\n}\n"],"mappings":"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"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { WorkflowError } from "../errors/workflow-error.mjs";
|
|
2
|
-
import "../errors/index.mjs";
|
|
3
|
-
|
|
4
|
-
//#region ../@warlock.js/ai/src/workflow/step.ts
|
|
5
|
-
/**
|
|
6
|
-
* `ai.step(def)` — pass-through factory used for authoring. Returns
|
|
7
|
-
* the definition object verbatim so the workflow engine can read it
|
|
8
|
-
* during execution; the factory exists for API symmetry with
|
|
9
|
-
* `ai.workflow()` and to leave room for future validation or
|
|
10
|
-
* metadata annotation.
|
|
11
|
-
*
|
|
12
|
-
* Generics flow from the enclosing `ai.workflow<...>()` call when the
|
|
13
|
-
* step is declared inline inside `steps: [...]`. To author a step
|
|
14
|
-
* outside that context with full typing, pass them explicitly:
|
|
15
|
-
* `ai.step<MyInput, MyState, MyContext>({ ... })`.
|
|
16
|
-
*/
|
|
17
|
-
function step(definition) {
|
|
18
|
-
validate(definition);
|
|
19
|
-
return definition;
|
|
20
|
-
}
|
|
21
|
-
function validate(def) {
|
|
22
|
-
if (!def.name || typeof def.name !== "string") throw new WorkflowError("ai.step: `name` is required");
|
|
23
|
-
const hasRun = typeof def.run === "function";
|
|
24
|
-
const hasAgent = def.agent !== void 0;
|
|
25
|
-
const modes = [
|
|
26
|
-
hasRun,
|
|
27
|
-
hasAgent,
|
|
28
|
-
Array.isArray(def.parallel) && def.parallel.length > 0
|
|
29
|
-
].filter(Boolean).length;
|
|
30
|
-
if (modes === 0) throw new WorkflowError(`ai.step("${def.name}"): must define exactly one of run | agent | parallel`);
|
|
31
|
-
if (modes > 1) throw new WorkflowError(`ai.step("${def.name}"): define only one of run | agent | parallel`);
|
|
32
|
-
if (hasAgent && typeof def.input !== "function") throw new WorkflowError(`ai.step("${def.name}"): \`input(ctx)\` is required when \`agent\` is set`);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
//#endregion
|
|
36
|
-
export { step };
|
|
37
|
-
//# sourceMappingURL=step.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"step.mjs","names":[],"sources":["../../../../../../../../../@warlock.js/ai/src/workflow/step.ts"],"sourcesContent":["import type { StepDefinition } from \"../contracts/workflow/step.contract\";\nimport { WorkflowError } from \"../errors\";\n\n/**\n * `ai.step(def)` — pass-through factory used for authoring. Returns\n * the definition object verbatim so the workflow engine can read it\n * during execution; the factory exists for API symmetry with\n * `ai.workflow()` and to leave room for future validation or\n * metadata annotation.\n *\n * Generics flow from the enclosing `ai.workflow<...>()` call when the\n * step is declared inline inside `steps: [...]`. To author a step\n * outside that context with full typing, pass them explicitly:\n * `ai.step<MyInput, MyState, MyContext>({ ... })`.\n */\nexport function step<\n TInput = unknown,\n TState = Record<string, unknown>,\n TContext = unknown,\n>(\n definition: StepDefinition<TInput, TState, TContext>,\n): StepDefinition<TInput, TState, TContext> {\n validate(definition);\n return definition;\n}\n\nfunction validate<TInput, TState, TContext>(\n def: StepDefinition<TInput, TState, TContext>,\n): void {\n if (!def.name || typeof def.name !== \"string\") {\n throw new WorkflowError(\"ai.step: `name` is required\");\n }\n\n const hasRun = typeof def.run === \"function\";\n const hasAgent = def.agent !== undefined;\n const hasParallel = Array.isArray(def.parallel) && def.parallel.length > 0;\n\n const modes = [hasRun, hasAgent, hasParallel].filter(Boolean).length;\n\n if (modes === 0) {\n throw new WorkflowError(\n `ai.step(\"${def.name}\"): must define exactly one of run | agent | parallel`,\n );\n }\n\n if (modes > 1) {\n throw new WorkflowError(\n `ai.step(\"${def.name}\"): define only one of run | agent | parallel`,\n );\n }\n\n if (hasAgent && typeof def.input !== \"function\") {\n throw new WorkflowError(\n `ai.step(\"${def.name}\"): \\`input(ctx)\\` is required when \\`agent\\` is set`,\n );\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAeA,SAAgB,KAKd,YAC0C;CAC1C,SAAS,UAAU;CACnB,OAAO;AACT;AAEA,SAAS,SACP,KACM;CACN,IAAI,CAAC,IAAI,QAAQ,OAAO,IAAI,SAAS,UACnC,MAAM,IAAI,cAAc,6BAA6B;CAGvD,MAAM,SAAS,OAAO,IAAI,QAAQ;CAClC,MAAM,WAAW,IAAI,UAAU;CAG/B,MAAM,QAAQ;EAAC;EAAQ;EAFH,MAAM,QAAQ,IAAI,QAAQ,KAAK,IAAI,SAAS,SAAS;CAE7B,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC;CAE9D,IAAI,UAAU,GACZ,MAAM,IAAI,cACR,YAAY,IAAI,KAAK,sDACvB;CAGF,IAAI,QAAQ,GACV,MAAM,IAAI,cACR,YAAY,IAAI,KAAK,8CACvB;CAGF,IAAI,YAAY,OAAO,IAAI,UAAU,YACnC,MAAM,IAAI,cACR,YAAY,IAAI,KAAK,qDACvB;AAEJ"}
|