@cleocode/core 2026.3.74 → 2026.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/agents/agent-schema.d.ts.map +1 -1
- package/dist/agents/retry.js +26 -21
- package/dist/agents/retry.js.map +1 -1
- package/dist/cant/approval.d.ts +110 -0
- package/dist/cant/approval.d.ts.map +1 -0
- package/dist/cant/approval.js +185 -0
- package/dist/cant/approval.js.map +1 -0
- package/dist/cant/context-builder.d.ts +79 -0
- package/dist/cant/context-builder.d.ts.map +1 -0
- package/dist/cant/context-builder.js +117 -0
- package/dist/cant/context-builder.js.map +1 -0
- package/dist/cant/discretion.d.ts +95 -0
- package/dist/cant/discretion.d.ts.map +1 -0
- package/dist/cant/discretion.js +116 -0
- package/dist/cant/discretion.js.map +1 -0
- package/dist/cant/index.d.ts +25 -0
- package/dist/cant/index.d.ts.map +1 -0
- package/dist/cant/index.js +23 -0
- package/dist/cant/index.js.map +1 -0
- package/dist/cant/parallel-runner.d.ts +38 -0
- package/dist/cant/parallel-runner.d.ts.map +1 -0
- package/dist/cant/parallel-runner.js +173 -0
- package/dist/cant/parallel-runner.js.map +1 -0
- package/dist/cant/types.d.ts +127 -0
- package/dist/cant/types.d.ts.map +1 -0
- package/dist/cant/types.js +11 -0
- package/dist/cant/types.js.map +1 -0
- package/dist/cant/workflow-executor.d.ts +105 -0
- package/dist/cant/workflow-executor.d.ts.map +1 -0
- package/dist/cant/workflow-executor.js +440 -0
- package/dist/cant/workflow-executor.js.map +1 -0
- package/dist/cleo.js +21 -1
- package/dist/cleo.js.map +1 -1
- package/dist/code/index.d.ts +10 -0
- package/dist/code/index.d.ts.map +1 -0
- package/dist/code/outline.d.ts +51 -0
- package/dist/code/outline.d.ts.map +1 -0
- package/dist/code/parser.d.ts +30 -0
- package/dist/code/parser.d.ts.map +1 -0
- package/dist/code/search.d.ts +42 -0
- package/dist/code/search.d.ts.map +1 -0
- package/dist/code/unfold.d.ts +44 -0
- package/dist/code/unfold.d.ts.map +1 -0
- package/dist/conduit/conduit-client.d.ts +35 -0
- package/dist/conduit/conduit-client.d.ts.map +1 -0
- package/dist/conduit/conduit-client.js +94 -0
- package/dist/conduit/conduit-client.js.map +1 -0
- package/dist/conduit/factory.d.ts +15 -0
- package/dist/conduit/factory.d.ts.map +1 -0
- package/dist/conduit/factory.js +35 -0
- package/dist/conduit/factory.js.map +1 -0
- package/dist/conduit/http-transport.d.ts +44 -0
- package/dist/conduit/http-transport.d.ts.map +1 -0
- package/dist/conduit/http-transport.js +165 -0
- package/dist/conduit/http-transport.js.map +1 -0
- package/dist/conduit/index.d.ts +15 -0
- package/dist/conduit/index.d.ts.map +1 -0
- package/dist/conduit/index.js +12 -0
- package/dist/conduit/index.js.map +1 -0
- package/dist/conduit/local-transport.d.ts +91 -0
- package/dist/conduit/local-transport.d.ts.map +1 -0
- package/dist/conduit/sse-transport.d.ts +68 -0
- package/dist/conduit/sse-transport.d.ts.map +1 -0
- package/dist/config.js +4 -3
- package/dist/config.js.map +1 -1
- package/dist/crypto/credentials.d.ts +40 -0
- package/dist/crypto/credentials.d.ts.map +1 -0
- package/dist/crypto/credentials.js +144 -0
- package/dist/crypto/credentials.js.map +1 -0
- package/dist/engine-result.d.ts +1 -1
- package/dist/engine-result.d.ts.map +1 -1
- package/dist/error-catalog.d.ts +1 -1
- package/dist/error-catalog.d.ts.map +1 -1
- package/dist/error-registry.d.ts +1 -1
- package/dist/error-registry.d.ts.map +1 -1
- package/dist/errors.d.ts +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/hooks/handlers/agent-hooks.d.ts.map +1 -1
- package/dist/hooks/handlers/agent-hooks.js +106 -0
- package/dist/hooks/handlers/agent-hooks.js.map +1 -0
- package/dist/hooks/handlers/context-hooks.d.ts.map +1 -1
- package/dist/hooks/handlers/context-hooks.js +111 -0
- package/dist/hooks/handlers/context-hooks.js.map +1 -0
- package/dist/hooks/handlers/error-hooks.d.ts +14 -5
- package/dist/hooks/handlers/error-hooks.d.ts.map +1 -1
- package/dist/hooks/handlers/error-hooks.js +15 -6
- package/dist/hooks/handlers/error-hooks.js.map +1 -1
- package/dist/hooks/handlers/file-hooks.d.ts.map +1 -1
- package/dist/hooks/handlers/file-hooks.js +35 -11
- package/dist/hooks/handlers/file-hooks.js.map +1 -1
- package/dist/hooks/handlers/handler-helpers.d.ts +41 -0
- package/dist/hooks/handlers/handler-helpers.d.ts.map +1 -0
- package/dist/hooks/handlers/handler-helpers.js +61 -0
- package/dist/hooks/handlers/handler-helpers.js.map +1 -0
- package/dist/hooks/handlers/index.js +10 -1
- package/dist/hooks/handlers/index.js.map +1 -1
- package/dist/hooks/handlers/mcp-hooks.d.ts.map +1 -1
- package/dist/hooks/handlers/mcp-hooks.js +88 -21
- package/dist/hooks/handlers/mcp-hooks.js.map +1 -1
- package/dist/hooks/handlers/session-hooks.d.ts.map +1 -1
- package/dist/hooks/handlers/session-hooks.js +5 -10
- package/dist/hooks/handlers/session-hooks.js.map +1 -1
- package/dist/hooks/handlers/task-hooks.d.ts.map +1 -1
- package/dist/hooks/handlers/task-hooks.js +5 -10
- package/dist/hooks/handlers/task-hooks.js.map +1 -1
- package/dist/hooks/handlers/work-capture-hooks.d.ts.map +1 -1
- package/dist/hooks/handlers/work-capture-hooks.js +165 -0
- package/dist/hooks/handlers/work-capture-hooks.js.map +1 -0
- package/dist/hooks/payload-schemas.js +83 -26
- package/dist/hooks/payload-schemas.js.map +1 -1
- package/dist/hooks/provider-hooks.js +37 -5
- package/dist/hooks/provider-hooks.js.map +1 -1
- package/dist/hooks/registry.js +76 -23
- package/dist/hooks/registry.js.map +1 -1
- package/dist/hooks/types.js +17 -13
- package/dist/hooks/types.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6452 -3371
- package/dist/index.js.map +4 -4
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +12 -0
- package/dist/init.js.map +1 -1
- package/dist/internal.d.ts +11 -1
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +10 -0
- package/dist/internal.js.map +1 -1
- package/dist/lib/index.d.ts +1 -0
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/tree-sitter-languages.d.ts +29 -0
- package/dist/lib/tree-sitter-languages.d.ts.map +1 -0
- package/dist/memory/brain-links.d.ts.map +1 -1
- package/dist/memory/brain-maintenance.d.ts +13 -0
- package/dist/memory/brain-maintenance.d.ts.map +1 -1
- package/dist/memory/brain-retrieval.d.ts +3 -0
- package/dist/memory/brain-retrieval.d.ts.map +1 -1
- package/dist/memory/brain-retrieval.js +5 -0
- package/dist/memory/brain-retrieval.js.map +1 -1
- package/dist/memory/decisions.d.ts.map +1 -1
- package/dist/mvi-helpers.d.ts +52 -0
- package/dist/mvi-helpers.d.ts.map +1 -0
- package/dist/mvi-helpers.js +74 -0
- package/dist/mvi-helpers.js.map +1 -0
- package/dist/nexus/index.js +2 -0
- package/dist/nexus/index.js.map +1 -1
- package/dist/nexus/workspace.d.ts.map +1 -1
- package/dist/nexus/workspace.js +355 -0
- package/dist/nexus/workspace.js.map +1 -0
- package/dist/orchestration/hierarchy.d.ts +32 -0
- package/dist/orchestration/hierarchy.d.ts.map +1 -0
- package/dist/orchestration/index.d.ts +1 -0
- package/dist/orchestration/index.d.ts.map +1 -1
- package/dist/output.d.ts +2 -2
- package/dist/output.d.ts.map +1 -1
- package/dist/output.js +40 -8
- package/dist/output.js.map +1 -1
- package/dist/pagination.d.ts +1 -1
- package/dist/pagination.d.ts.map +1 -1
- package/dist/sessions/find.d.ts +3 -0
- package/dist/sessions/find.d.ts.map +1 -1
- package/dist/sessions/find.js +3 -1
- package/dist/sessions/find.js.map +1 -1
- package/dist/sessions/index.d.ts.map +1 -1
- package/dist/sessions/index.js +11 -4
- package/dist/sessions/index.js.map +1 -1
- package/dist/sessions/snapshot.js +213 -0
- package/dist/sessions/snapshot.js.map +1 -0
- package/dist/store/agent-registry-accessor.d.ts +31 -0
- package/dist/store/agent-registry-accessor.d.ts.map +1 -0
- package/dist/store/agent-registry-accessor.js +169 -0
- package/dist/store/agent-registry-accessor.js.map +1 -0
- package/dist/store/converters.d.ts.map +1 -1
- package/dist/store/converters.js +2 -0
- package/dist/store/converters.js.map +1 -1
- package/dist/store/cross-db-cleanup.d.ts +34 -0
- package/dist/store/cross-db-cleanup.d.ts.map +1 -1
- package/dist/store/db-helpers.d.ts.map +1 -1
- package/dist/store/db-helpers.js +1 -0
- package/dist/store/db-helpers.js.map +1 -1
- package/dist/store/json.js +2 -2
- package/dist/store/safety-data-accessor.d.ts +7 -0
- package/dist/store/safety-data-accessor.d.ts.map +1 -1
- package/dist/store/safety-data-accessor.js +14 -0
- package/dist/store/safety-data-accessor.js.map +1 -1
- package/dist/store/signaldock-sqlite.d.ts +48 -0
- package/dist/store/signaldock-sqlite.d.ts.map +1 -0
- package/dist/store/signaldock-sqlite.js +178 -0
- package/dist/store/signaldock-sqlite.js.map +1 -0
- package/dist/store/sqlite-data-accessor.d.ts.map +1 -1
- package/dist/store/sqlite-data-accessor.js +50 -0
- package/dist/store/sqlite-data-accessor.js.map +1 -1
- package/dist/store/sqlite.d.ts.map +1 -1
- package/dist/store/sqlite.js +30 -1
- package/dist/store/sqlite.js.map +1 -1
- package/dist/store/task-store.d.ts.map +1 -1
- package/dist/store/task-store.js +2 -0
- package/dist/store/task-store.js.map +1 -1
- package/dist/store/tasks-schema.d.ts +16 -0
- package/dist/store/tasks-schema.d.ts.map +1 -1
- package/dist/store/tasks-schema.js +33 -0
- package/dist/store/tasks-schema.js.map +1 -1
- package/dist/store/validation-schemas.d.ts +32 -0
- package/dist/store/validation-schemas.d.ts.map +1 -1
- package/dist/system/health.d.ts +1 -1
- package/dist/system/health.d.ts.map +1 -1
- package/dist/system/health.js +35 -0
- package/dist/system/health.js.map +1 -1
- package/dist/task-work/index.d.ts.map +1 -1
- package/dist/task-work/index.js +8 -4
- package/dist/task-work/index.js.map +1 -1
- package/dist/tasks/complete.js +5 -2
- package/dist/tasks/complete.js.map +1 -1
- package/dist/tasks/find.d.ts +3 -0
- package/dist/tasks/find.d.ts.map +1 -1
- package/dist/tasks/find.js +7 -1
- package/dist/tasks/find.js.map +1 -1
- package/dist/tasks/list.d.ts +5 -2
- package/dist/tasks/list.d.ts.map +1 -1
- package/dist/tasks/list.js +9 -2
- package/dist/tasks/list.js.map +1 -1
- package/dist/tasks/show.d.ts +3 -0
- package/dist/tasks/show.d.ts.map +1 -1
- package/dist/tasks/show.js +2 -0
- package/dist/tasks/show.js.map +1 -1
- package/dist/upgrade.d.ts.map +1 -1
- package/dist/upgrade.js +15 -0
- package/dist/upgrade.js.map +1 -1
- package/migrations/drizzle-tasks/20260324000000_assignee-column/migration.sql +6 -0
- package/migrations/drizzle-tasks/20260324000000_assignee-column/snapshot.json +9 -0
- package/migrations/drizzle-tasks/20260327000000_agent-credentials/migration.sql +23 -0
- package/package.json +17 -7
- package/src/__tests__/cli-parity.test.js +11 -1
- package/src/__tests__/cli-parity.test.js.map +1 -1
- package/src/__tests__/cli-parity.test.ts +17 -1
- package/src/__tests__/human-output.test.js +11 -1
- package/src/__tests__/human-output.test.js.map +1 -1
- package/src/__tests__/human-output.test.ts +18 -1
- package/src/__tests__/injection-chain.test.js +3 -2
- package/src/__tests__/injection-chain.test.js.map +1 -1
- package/src/__tests__/injection-mvi-tiers.test.d.ts +2 -2
- package/src/__tests__/injection-mvi-tiers.test.js +15 -15
- package/src/__tests__/injection-mvi-tiers.test.js.map +1 -1
- package/src/__tests__/lafs-conformance.test.d.ts +1 -1
- package/src/__tests__/lafs-conformance.test.js +2 -2
- package/src/__tests__/sharing.test.js +19 -0
- package/src/__tests__/sharing.test.js.map +1 -1
- package/src/agents/__tests__/agent-registry.test.d.ts +12 -0
- package/src/agents/__tests__/agent-registry.test.d.ts.map +1 -0
- package/src/agents/__tests__/agent-registry.test.js +262 -0
- package/src/agents/__tests__/agent-registry.test.js.map +1 -0
- package/src/agents/__tests__/execution-learning.test.d.ts +14 -0
- package/src/agents/__tests__/execution-learning.test.d.ts.map +1 -0
- package/src/agents/__tests__/execution-learning.test.js +533 -0
- package/src/agents/__tests__/execution-learning.test.js.map +1 -0
- package/src/agents/__tests__/health-monitor.test.d.ts +10 -0
- package/src/agents/__tests__/health-monitor.test.d.ts.map +1 -0
- package/src/agents/__tests__/health-monitor.test.js +259 -0
- package/src/agents/__tests__/health-monitor.test.js.map +1 -0
- package/src/agents/__tests__/registry.test.js +27 -2
- package/src/agents/__tests__/registry.test.js.map +1 -1
- package/src/agents/agent-schema.ts +2 -5
- package/src/cant/__tests__/cant-agent-parse.test.ts +94 -0
- package/src/cant/approval.ts +218 -0
- package/src/cant/context-builder.ts +135 -0
- package/src/cant/discretion.ts +149 -0
- package/src/cant/index.ts +58 -0
- package/src/cant/parallel-runner.ts +205 -0
- package/src/cant/types.ts +158 -0
- package/src/cant/workflow-executor.ts +618 -0
- package/src/code/index.ts +10 -0
- package/src/code/outline.ts +214 -0
- package/src/code/parser.ts +299 -0
- package/src/code/search.ts +173 -0
- package/src/code/unfold.ts +204 -0
- package/src/conduit/__tests__/dual-api-e2e.test.ts +212 -0
- package/src/conduit/__tests__/local-credential-flow.test.ts +230 -0
- package/src/conduit/__tests__/local-transport.test.ts +320 -0
- package/src/conduit/__tests__/sse-transport.test.ts +344 -0
- package/src/conduit/conduit-client.ts +123 -0
- package/src/conduit/factory.ts +49 -0
- package/src/conduit/http-transport.ts +201 -0
- package/src/conduit/index.ts +15 -0
- package/src/conduit/local-transport.ts +309 -0
- package/src/conduit/sse-transport.ts +382 -0
- package/src/crypto/credentials.ts +166 -0
- package/src/engine-result.ts +1 -1
- package/src/error-catalog.ts +1 -1
- package/src/error-registry.ts +1 -1
- package/src/errors.ts +1 -1
- package/src/hooks/handlers/__tests__/hook-automation-e2e.test.d.ts +13 -0
- package/src/hooks/handlers/__tests__/hook-automation-e2e.test.d.ts.map +1 -0
- package/src/hooks/handlers/__tests__/hook-automation-e2e.test.js +501 -0
- package/src/hooks/handlers/__tests__/hook-automation-e2e.test.js.map +1 -0
- package/src/hooks/handlers/agent-hooks.ts +1 -30
- package/src/hooks/handlers/context-hooks.ts +1 -30
- package/src/hooks/handlers/error-hooks.ts +14 -5
- package/src/hooks/handlers/file-hooks.ts +1 -6
- package/src/hooks/handlers/handler-helpers.ts +62 -0
- package/src/hooks/handlers/mcp-hooks.ts +2 -14
- package/src/hooks/handlers/session-hooks.ts +1 -6
- package/src/hooks/handlers/task-hooks.ts +1 -6
- package/src/hooks/handlers/work-capture-hooks.ts +1 -10
- package/src/index.ts +12 -1
- package/src/init.ts +12 -0
- package/src/intelligence/__tests__/adaptive-validation.test.d.ts +11 -0
- package/src/intelligence/__tests__/adaptive-validation.test.d.ts.map +1 -0
- package/src/intelligence/__tests__/adaptive-validation.test.js +517 -0
- package/src/intelligence/__tests__/adaptive-validation.test.js.map +1 -0
- package/src/intelligence/__tests__/impact.test.d.ts +1 -0
- package/src/intelligence/__tests__/impact.test.d.ts.map +1 -1
- package/src/intelligence/__tests__/impact.test.js +132 -1
- package/src/intelligence/__tests__/impact.test.js.map +1 -1
- package/src/internal.ts +22 -0
- package/src/lib/__tests__/retry.test.d.ts +7 -0
- package/src/lib/__tests__/retry.test.d.ts.map +1 -0
- package/src/lib/__tests__/retry.test.js +225 -0
- package/src/lib/__tests__/retry.test.js.map +1 -0
- package/src/lib/index.ts +8 -0
- package/src/lib/tree-sitter-languages.ts +88 -0
- package/src/lifecycle/__tests__/chain-store.test.js +6 -0
- package/src/lifecycle/__tests__/chain-store.test.js.map +1 -1
- package/src/lifecycle/__tests__/tessera-engine.test.js +52 -0
- package/src/lifecycle/__tests__/tessera-engine.test.js.map +1 -1
- package/src/memory/__tests__/brain-automation.test.d.ts +11 -0
- package/src/memory/__tests__/brain-automation.test.d.ts.map +1 -0
- package/src/memory/__tests__/brain-automation.test.js +730 -0
- package/src/memory/__tests__/brain-automation.test.js.map +1 -0
- package/src/memory/__tests__/brain-links.test.ts +14 -0
- package/src/memory/__tests__/brain-retrieval.test.ts +10 -0
- package/src/memory/__tests__/session-memory.test.ts +17 -0
- package/src/memory/brain-links.ts +17 -0
- package/src/memory/brain-maintenance.ts +33 -1
- package/src/memory/brain-retrieval.ts +27 -2
- package/src/memory/decisions.ts +18 -2
- package/src/mvi-helpers.ts +81 -0
- package/src/nexus/workspace.ts +19 -7
- package/src/orchestration/hierarchy.ts +202 -0
- package/src/orchestration/index.ts +1 -0
- package/src/output.ts +43 -10
- package/src/pagination.ts +1 -1
- package/src/sessions/__tests__/session-edge-cases.test.js +20 -1
- package/src/sessions/__tests__/session-edge-cases.test.js.map +1 -1
- package/src/sessions/__tests__/session-find.test.js +1 -1
- package/src/sessions/__tests__/session-find.test.js.map +1 -1
- package/src/sessions/__tests__/session-find.test.ts +1 -1
- package/src/sessions/find.ts +6 -1
- package/src/sessions/index.ts +9 -0
- package/src/store/__tests__/migration-safety.test.js +3 -0
- package/src/store/__tests__/migration-safety.test.js.map +1 -1
- package/src/store/__tests__/session-store.test.js +128 -1
- package/src/store/__tests__/session-store.test.js.map +1 -1
- package/src/store/__tests__/task-store.test.js +18 -1
- package/src/store/__tests__/task-store.test.js.map +1 -1
- package/src/store/__tests__/test-db-helper.d.ts.map +1 -1
- package/src/store/__tests__/test-db-helper.js +12 -0
- package/src/store/__tests__/test-db-helper.js.map +1 -1
- package/src/store/agent-registry-accessor.ts +375 -0
- package/src/store/converters.ts +2 -0
- package/src/store/cross-db-cleanup.ts +175 -1
- package/src/store/db-helpers.ts +1 -0
- package/src/store/safety-data-accessor.ts +23 -0
- package/src/store/signaldock-sqlite.ts +429 -0
- package/src/store/sqlite-data-accessor.ts +72 -0
- package/src/store/sqlite.ts +4 -1
- package/src/store/task-store.ts +9 -1
- package/src/store/tasks-schema.ts +7 -0
- package/src/system/__tests__/health.test.ts +2 -2
- package/src/system/health.ts +54 -2
- package/src/task-work/index.ts +5 -0
- package/src/tasks/__tests__/add.test.js +19 -1
- package/src/tasks/__tests__/add.test.js.map +1 -1
- package/src/tasks/__tests__/assignee.test.d.ts +14 -0
- package/src/tasks/__tests__/assignee.test.d.ts.map +1 -0
- package/src/tasks/__tests__/assignee.test.js +125 -0
- package/src/tasks/__tests__/assignee.test.js.map +1 -0
- package/src/tasks/__tests__/assignee.test.ts +162 -0
- package/src/tasks/__tests__/complete-unblocks.test.js +13 -1
- package/src/tasks/__tests__/complete-unblocks.test.js.map +1 -1
- package/src/tasks/__tests__/complete.test.js +28 -7
- package/src/tasks/__tests__/complete.test.js.map +1 -1
- package/src/tasks/__tests__/epic-enforcement.test.d.ts +15 -0
- package/src/tasks/__tests__/epic-enforcement.test.d.ts.map +1 -0
- package/src/tasks/__tests__/epic-enforcement.test.js +669 -0
- package/src/tasks/__tests__/epic-enforcement.test.js.map +1 -0
- package/src/tasks/__tests__/hierarchy-policy.test.js +5 -0
- package/src/tasks/__tests__/hierarchy-policy.test.js.map +1 -1
- package/src/tasks/__tests__/minimal-test.test.d.ts +2 -0
- package/src/tasks/__tests__/minimal-test.test.d.ts.map +1 -0
- package/src/tasks/__tests__/minimal-test.test.js +25 -0
- package/src/tasks/__tests__/minimal-test.test.js.map +1 -0
- package/src/tasks/__tests__/pipeline-stage.test.d.ts +14 -0
- package/src/tasks/__tests__/pipeline-stage.test.d.ts.map +1 -0
- package/src/tasks/__tests__/pipeline-stage.test.js +277 -0
- package/src/tasks/__tests__/pipeline-stage.test.js.map +1 -0
- package/src/tasks/__tests__/update.test.js +43 -6
- package/src/tasks/__tests__/update.test.js.map +1 -1
- package/src/tasks/find.ts +11 -1
- package/src/tasks/list.ts +14 -3
- package/src/tasks/show.ts +6 -0
- package/src/upgrade.ts +16 -0
- package/dist/tasks/reparent.d.ts +0 -38
- package/dist/tasks/reparent.d.ts.map +0 -1
- package/dist/ui/injection-legacy.d.ts +0 -26
- package/dist/ui/injection-legacy.d.ts.map +0 -1
- package/dist/ui/injection-legacy.js +0 -42
- package/dist/ui/injection-legacy.js.map +0 -1
- package/src/signaldock/__tests__/claude-code-transport.test.d.ts +0 -7
- package/src/signaldock/__tests__/claude-code-transport.test.d.ts.map +0 -1
- package/src/signaldock/__tests__/claude-code-transport.test.js +0 -147
- package/src/signaldock/__tests__/claude-code-transport.test.js.map +0 -1
- package/src/signaldock/__tests__/claude-code-transport.test.ts +0 -180
- package/src/signaldock/__tests__/factory.test.d.ts +0 -7
- package/src/signaldock/__tests__/factory.test.d.ts.map +0 -1
- package/src/signaldock/__tests__/factory.test.js +0 -55
- package/src/signaldock/__tests__/factory.test.js.map +0 -1
- package/src/signaldock/__tests__/factory.test.ts +0 -61
- package/src/signaldock/__tests__/signaldock-transport.test.d.ts +0 -9
- package/src/signaldock/__tests__/signaldock-transport.test.d.ts.map +0 -1
- package/src/signaldock/__tests__/signaldock-transport.test.js +0 -321
- package/src/signaldock/__tests__/signaldock-transport.test.js.map +0 -1
- package/src/signaldock/__tests__/signaldock-transport.test.ts +0 -421
- package/src/signaldock/claude-code-transport.ts +0 -137
- package/src/signaldock/factory.ts +0 -39
- package/src/signaldock/index.ts +0 -28
- package/src/signaldock/signaldock-transport.ts +0 -194
- package/src/signaldock/transport.ts +0 -78
- package/src/signaldock/types.ts +0 -100
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CANT workflow executor — orchestrates workflow statement execution.
|
|
3
|
+
*
|
|
4
|
+
* Walks the statement list of a `WorkflowDef` AST node, dispatching to
|
|
5
|
+
* appropriate handlers for each statement type: sessions, pipelines,
|
|
6
|
+
* parallel blocks, conditionals, loops, try/catch, approval gates,
|
|
7
|
+
* bindings, directives, and output statements.
|
|
8
|
+
*
|
|
9
|
+
* Pipelines are delegated to the Rust executor via napi-rs bridge.
|
|
10
|
+
* Sessions invoke the CLEO session machinery. Discretion conditions
|
|
11
|
+
* are evaluated by a pluggable evaluator.
|
|
12
|
+
*
|
|
13
|
+
* @see docs/specs/CANT-DSL-SPEC.md Section 7.2 (Workflow Execution)
|
|
14
|
+
*/
|
|
15
|
+
import { ApprovalManager } from './approval.js';
|
|
16
|
+
import type { DiscretionEvaluator } from './discretion.js';
|
|
17
|
+
import type { ExecutionResult } from './types.js';
|
|
18
|
+
/** Configuration options for the workflow executor. */
|
|
19
|
+
export interface WorkflowExecutorConfig {
|
|
20
|
+
/** Maximum number of discretion evaluations per workflow run (default: 100). */
|
|
21
|
+
maxDiscretionEvaluations?: number;
|
|
22
|
+
/** The session ID for this execution. */
|
|
23
|
+
sessionId?: string;
|
|
24
|
+
/** The agent ID performing the execution. */
|
|
25
|
+
agentId?: string;
|
|
26
|
+
}
|
|
27
|
+
/** Loose AST statement shape — mirrors cant-core Statement variants. */
|
|
28
|
+
interface AstStatement {
|
|
29
|
+
type?: string;
|
|
30
|
+
[key: string]: unknown;
|
|
31
|
+
}
|
|
32
|
+
/** A workflow definition with a name, params, and body statements. */
|
|
33
|
+
interface WorkflowDef {
|
|
34
|
+
name: {
|
|
35
|
+
value: string;
|
|
36
|
+
};
|
|
37
|
+
params: Array<{
|
|
38
|
+
name: {
|
|
39
|
+
value: string;
|
|
40
|
+
};
|
|
41
|
+
}>;
|
|
42
|
+
body: AstStatement[];
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Executes CANT workflow definitions.
|
|
46
|
+
*
|
|
47
|
+
* The executor processes each statement in the workflow body sequentially,
|
|
48
|
+
* maintaining an execution scope for variable bindings and dispatching to
|
|
49
|
+
* the appropriate handler based on statement type.
|
|
50
|
+
*/
|
|
51
|
+
export declare class WorkflowExecutor {
|
|
52
|
+
private readonly discretionEvaluator;
|
|
53
|
+
private readonly approvalManager;
|
|
54
|
+
private readonly config;
|
|
55
|
+
/**
|
|
56
|
+
* Creates a new workflow executor.
|
|
57
|
+
*
|
|
58
|
+
* @param discretionEvaluator - Custom discretion evaluator (default: stub that returns true).
|
|
59
|
+
* @param approvalManager - Approval token manager (default: new instance).
|
|
60
|
+
* @param config - Executor configuration.
|
|
61
|
+
*/
|
|
62
|
+
constructor(discretionEvaluator?: DiscretionEvaluator, approvalManager?: ApprovalManager, config?: WorkflowExecutorConfig);
|
|
63
|
+
/**
|
|
64
|
+
* Executes a workflow definition with the given parameter values.
|
|
65
|
+
*
|
|
66
|
+
* @param workflow - The parsed workflow AST node.
|
|
67
|
+
* @param context - Parameter values and initial context.
|
|
68
|
+
* @returns Execution result with outputs and step results.
|
|
69
|
+
*/
|
|
70
|
+
execute(workflow: WorkflowDef, context?: Record<string, unknown>): Promise<ExecutionResult>;
|
|
71
|
+
/**
|
|
72
|
+
* Dispatches a single statement to the appropriate handler.
|
|
73
|
+
*/
|
|
74
|
+
private executeStatement;
|
|
75
|
+
/** Execute a let binding statement. */
|
|
76
|
+
private executeBinding;
|
|
77
|
+
/** Execute an output binding statement. */
|
|
78
|
+
private executeOutput;
|
|
79
|
+
/** Execute an if/elif/else conditional. */
|
|
80
|
+
private executeConditional;
|
|
81
|
+
/** Execute a parallel block with arms. */
|
|
82
|
+
private executeParallelBlock;
|
|
83
|
+
/** Execute a session invocation (stub — real session dispatch is a separate integration). */
|
|
84
|
+
private executeSession;
|
|
85
|
+
/** Execute a pipeline definition (stub — real pipeline calls Rust via napi-rs). */
|
|
86
|
+
private executePipeline;
|
|
87
|
+
/** Execute an approval gate. */
|
|
88
|
+
private executeApprovalGate;
|
|
89
|
+
/** Execute a repeat N loop. */
|
|
90
|
+
private executeRepeat;
|
|
91
|
+
/** Execute a for-in loop. */
|
|
92
|
+
private executeForLoop;
|
|
93
|
+
/** Execute a loop-until block. */
|
|
94
|
+
private executeLoopUntil;
|
|
95
|
+
/** Execute a try/catch/finally block. */
|
|
96
|
+
private executeTryCatch;
|
|
97
|
+
/** Execute a CANT directive statement. */
|
|
98
|
+
private executeDirective;
|
|
99
|
+
/**
|
|
100
|
+
* Evaluate a condition (regular expression or discretion).
|
|
101
|
+
*/
|
|
102
|
+
private evaluateCondition;
|
|
103
|
+
}
|
|
104
|
+
export {};
|
|
105
|
+
//# sourceMappingURL=workflow-executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-executor.d.ts","sourceRoot":"","sources":["../../src/cant/workflow-executor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAI3D,OAAO,KAAK,EAEV,eAAe,EAIhB,MAAM,YAAY,CAAC;AAMpB,uDAAuD;AACvD,MAAM,WAAW,sBAAsB;IACrC,gFAAgF;IAChF,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAUD,wEAAwE;AACxE,UAAU,YAAY;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,sEAAsE;AACtE,UAAU,WAAW;IACnB,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACxB,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC,CAAC;IAC3C,IAAI,EAAE,YAAY,EAAE,CAAC;CACtB;AAMD;;;;;;GAMG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAsB;IAC1D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;IAEhD;;;;;;OAMG;gBAED,mBAAmB,GAAE,mBAAsD,EAC3E,eAAe,GAAE,eAAuC,EACxD,MAAM,GAAE,sBAA2B;IAQrC;;;;;;OAMG;IACG,OAAO,CACX,QAAQ,EAAE,WAAW,EACrB,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACpC,OAAO,CAAC,eAAe,CAAC;IAkD3B;;OAEG;YACW,gBAAgB;IA4C9B,uCAAuC;YACzB,cAAc;IAU5B,2CAA2C;YAC7B,aAAa;IAY3B,2CAA2C;YAC7B,kBAAkB;IA8ChC,0CAA0C;YAC5B,oBAAoB;IAuClC,6FAA6F;YAC/E,cAAc;IAkB5B,mFAAmF;YACrE,eAAe;IAgB7B,gCAAgC;YAClB,mBAAmB;IAiCjC,+BAA+B;YACjB,aAAa;IAkB3B,6BAA6B;YACf,cAAc;IA+B5B,kCAAkC;YACpB,gBAAgB;IAgC9B,yCAAyC;YAC3B,eAAe;IA0C7B,0CAA0C;YAC5B,gBAAgB;IAwB9B;;OAEG;YACW,iBAAiB;CAwBhC"}
|
|
@@ -0,0 +1,440 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CANT workflow executor — orchestrates workflow statement execution.
|
|
3
|
+
*
|
|
4
|
+
* Walks the statement list of a `WorkflowDef` AST node, dispatching to
|
|
5
|
+
* appropriate handlers for each statement type: sessions, pipelines,
|
|
6
|
+
* parallel blocks, conditionals, loops, try/catch, approval gates,
|
|
7
|
+
* bindings, directives, and output statements.
|
|
8
|
+
*
|
|
9
|
+
* Pipelines are delegated to the Rust executor via napi-rs bridge.
|
|
10
|
+
* Sessions invoke the CLEO session machinery. Discretion conditions
|
|
11
|
+
* are evaluated by a pluggable evaluator.
|
|
12
|
+
*
|
|
13
|
+
* @see docs/specs/CANT-DSL-SPEC.md Section 7.2 (Workflow Execution)
|
|
14
|
+
*/
|
|
15
|
+
import { ApprovalManager } from './approval.js';
|
|
16
|
+
import { createChildScope, createScope, flattenScope, setVariable } from './context-builder.js';
|
|
17
|
+
import { DefaultDiscretionEvaluator, RateLimitedDiscretionEvaluator } from './discretion.js';
|
|
18
|
+
import { executeParallel } from './parallel-runner.js';
|
|
19
|
+
// ---------------------------------------------------------------------------
|
|
20
|
+
// Workflow Executor
|
|
21
|
+
// ---------------------------------------------------------------------------
|
|
22
|
+
/**
|
|
23
|
+
* Executes CANT workflow definitions.
|
|
24
|
+
*
|
|
25
|
+
* The executor processes each statement in the workflow body sequentially,
|
|
26
|
+
* maintaining an execution scope for variable bindings and dispatching to
|
|
27
|
+
* the appropriate handler based on statement type.
|
|
28
|
+
*/
|
|
29
|
+
export class WorkflowExecutor {
|
|
30
|
+
discretionEvaluator;
|
|
31
|
+
approvalManager;
|
|
32
|
+
config;
|
|
33
|
+
/**
|
|
34
|
+
* Creates a new workflow executor.
|
|
35
|
+
*
|
|
36
|
+
* @param discretionEvaluator - Custom discretion evaluator (default: stub that returns true).
|
|
37
|
+
* @param approvalManager - Approval token manager (default: new instance).
|
|
38
|
+
* @param config - Executor configuration.
|
|
39
|
+
*/
|
|
40
|
+
constructor(discretionEvaluator = new DefaultDiscretionEvaluator(), approvalManager = new ApprovalManager(), config = {}) {
|
|
41
|
+
const maxEvals = config.maxDiscretionEvaluations ?? 100;
|
|
42
|
+
this.discretionEvaluator = new RateLimitedDiscretionEvaluator(discretionEvaluator, maxEvals);
|
|
43
|
+
this.approvalManager = approvalManager;
|
|
44
|
+
this.config = config;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Executes a workflow definition with the given parameter values.
|
|
48
|
+
*
|
|
49
|
+
* @param workflow - The parsed workflow AST node.
|
|
50
|
+
* @param context - Parameter values and initial context.
|
|
51
|
+
* @returns Execution result with outputs and step results.
|
|
52
|
+
*/
|
|
53
|
+
async execute(workflow, context = {}) {
|
|
54
|
+
const start = Date.now();
|
|
55
|
+
const scope = createScope(context);
|
|
56
|
+
const steps = [];
|
|
57
|
+
const outputs = {};
|
|
58
|
+
// Bind workflow parameters to scope
|
|
59
|
+
for (const param of workflow.params) {
|
|
60
|
+
const value = context[param.name.value];
|
|
61
|
+
if (value !== undefined) {
|
|
62
|
+
setVariable(scope, param.name.value, value);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
let success = true;
|
|
66
|
+
for (const statement of workflow.body) {
|
|
67
|
+
const stepStart = Date.now();
|
|
68
|
+
try {
|
|
69
|
+
const result = await this.executeStatement(statement, scope, outputs);
|
|
70
|
+
if (result) {
|
|
71
|
+
steps.push({ ...result, duration: Date.now() - stepStart });
|
|
72
|
+
if (!result.success) {
|
|
73
|
+
success = false;
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
const error = err instanceof Error ? err.message : String(err);
|
|
80
|
+
steps.push({
|
|
81
|
+
name: getStatementName(statement),
|
|
82
|
+
type: getStatementType(statement),
|
|
83
|
+
success: false,
|
|
84
|
+
error,
|
|
85
|
+
duration: Date.now() - stepStart,
|
|
86
|
+
});
|
|
87
|
+
success = false;
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return {
|
|
92
|
+
success,
|
|
93
|
+
outputs,
|
|
94
|
+
steps,
|
|
95
|
+
duration: Date.now() - start,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Dispatches a single statement to the appropriate handler.
|
|
100
|
+
*/
|
|
101
|
+
async executeStatement(statement, scope, outputs) {
|
|
102
|
+
const stmtType = detectStatementType(statement);
|
|
103
|
+
switch (stmtType) {
|
|
104
|
+
case 'Binding':
|
|
105
|
+
return this.executeBinding(statement, scope);
|
|
106
|
+
case 'Output':
|
|
107
|
+
return this.executeOutput(statement, scope, outputs);
|
|
108
|
+
case 'Conditional':
|
|
109
|
+
return this.executeConditional(statement, scope, outputs);
|
|
110
|
+
case 'Parallel':
|
|
111
|
+
return this.executeParallelBlock(statement, scope, outputs);
|
|
112
|
+
case 'Session':
|
|
113
|
+
return this.executeSession(statement, scope);
|
|
114
|
+
case 'Pipeline':
|
|
115
|
+
return this.executePipeline(statement, scope);
|
|
116
|
+
case 'ApprovalGate':
|
|
117
|
+
return this.executeApprovalGate(statement, scope);
|
|
118
|
+
case 'Repeat':
|
|
119
|
+
return this.executeRepeat(statement, scope, outputs);
|
|
120
|
+
case 'ForLoop':
|
|
121
|
+
return this.executeForLoop(statement, scope, outputs);
|
|
122
|
+
case 'LoopUntil':
|
|
123
|
+
return this.executeLoopUntil(statement, scope, outputs);
|
|
124
|
+
case 'TryCatch':
|
|
125
|
+
return this.executeTryCatch(statement, scope, outputs);
|
|
126
|
+
case 'Directive':
|
|
127
|
+
return this.executeDirective(statement, scope);
|
|
128
|
+
case 'Comment':
|
|
129
|
+
return null; // Comments are no-ops
|
|
130
|
+
default:
|
|
131
|
+
return {
|
|
132
|
+
name: getStatementName(statement),
|
|
133
|
+
type: 'binding',
|
|
134
|
+
success: true,
|
|
135
|
+
duration: 0,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
/** Execute a let binding statement. */
|
|
140
|
+
async executeBinding(statement, scope) {
|
|
141
|
+
const name = statement.name?.value ?? 'binding';
|
|
142
|
+
const value = statement.value;
|
|
143
|
+
setVariable(scope, name, value);
|
|
144
|
+
return { name, type: 'binding', success: true, output: value, duration: 0 };
|
|
145
|
+
}
|
|
146
|
+
/** Execute an output binding statement. */
|
|
147
|
+
async executeOutput(statement, scope, outputs) {
|
|
148
|
+
const name = statement.name?.value ?? 'output';
|
|
149
|
+
const value = statement.value;
|
|
150
|
+
outputs[name] = value;
|
|
151
|
+
setVariable(scope, name, value);
|
|
152
|
+
return { name, type: 'output', success: true, output: value, duration: 0 };
|
|
153
|
+
}
|
|
154
|
+
/** Execute an if/elif/else conditional. */
|
|
155
|
+
async executeConditional(statement, scope, outputs) {
|
|
156
|
+
const conditional = statement;
|
|
157
|
+
// Evaluate the if condition
|
|
158
|
+
const ifResult = await this.evaluateCondition(conditional.condition, scope);
|
|
159
|
+
if (ifResult) {
|
|
160
|
+
for (const stmt of conditional.then_body ?? []) {
|
|
161
|
+
await this.executeStatement(stmt, scope, outputs);
|
|
162
|
+
}
|
|
163
|
+
return { name: 'if', type: 'conditional', success: true, output: true, duration: 0 };
|
|
164
|
+
}
|
|
165
|
+
// Check elif branches
|
|
166
|
+
for (const elif of conditional.elif_branches ?? []) {
|
|
167
|
+
const elifResult = await this.evaluateCondition(elif.condition, scope);
|
|
168
|
+
if (elifResult) {
|
|
169
|
+
for (const stmt of elif.body) {
|
|
170
|
+
await this.executeStatement(stmt, scope, outputs);
|
|
171
|
+
}
|
|
172
|
+
return { name: 'elif', type: 'conditional', success: true, output: true, duration: 0 };
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
// Execute else branch
|
|
176
|
+
if (conditional.else_body) {
|
|
177
|
+
for (const stmt of conditional.else_body) {
|
|
178
|
+
await this.executeStatement(stmt, scope, outputs);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
return { name: 'else', type: 'conditional', success: true, output: false, duration: 0 };
|
|
182
|
+
}
|
|
183
|
+
/** Execute a parallel block with arms. */
|
|
184
|
+
async executeParallelBlock(statement, scope, _outputs) {
|
|
185
|
+
const parallel = statement;
|
|
186
|
+
const strategy = parallel.modifier === 'Race' ? 'race' : parallel.modifier === 'Settle' ? 'settle' : 'all';
|
|
187
|
+
const arms = (parallel.arms ?? []).map((arm) => ({
|
|
188
|
+
name: arm.name,
|
|
189
|
+
execute: async () => {
|
|
190
|
+
const childScope = createChildScope(scope);
|
|
191
|
+
const armOutputs = {};
|
|
192
|
+
const result = await this.executeStatement(arm.body, childScope, armOutputs);
|
|
193
|
+
return result?.output;
|
|
194
|
+
},
|
|
195
|
+
}));
|
|
196
|
+
const result = await executeParallel(arms, strategy);
|
|
197
|
+
// Bind arm results to the parent scope
|
|
198
|
+
for (const [name, value] of Object.entries(result.results)) {
|
|
199
|
+
setVariable(scope, name, value);
|
|
200
|
+
}
|
|
201
|
+
return {
|
|
202
|
+
name: 'parallel',
|
|
203
|
+
type: 'parallel',
|
|
204
|
+
success: result.success,
|
|
205
|
+
output: result.results,
|
|
206
|
+
duration: 0,
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
/** Execute a session invocation (stub — real session dispatch is a separate integration). */
|
|
210
|
+
async executeSession(statement, _scope) {
|
|
211
|
+
const session = statement;
|
|
212
|
+
const targetName = session.target?.Prompt ?? session.target?.Agent ?? 'session';
|
|
213
|
+
// Stub: real session dispatch integrates with CLEO session machinery
|
|
214
|
+
return {
|
|
215
|
+
name: targetName,
|
|
216
|
+
type: 'session',
|
|
217
|
+
success: true,
|
|
218
|
+
output: { stub: true, target: targetName },
|
|
219
|
+
duration: 0,
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
/** Execute a pipeline definition (stub — real pipeline calls Rust via napi-rs). */
|
|
223
|
+
async executePipeline(statement, _scope) {
|
|
224
|
+
const pipeline = statement;
|
|
225
|
+
const name = pipeline.name?.value ?? 'pipeline';
|
|
226
|
+
// Stub: real implementation calls Rust pipeline executor via napi-rs bridge
|
|
227
|
+
return {
|
|
228
|
+
name,
|
|
229
|
+
type: 'pipeline',
|
|
230
|
+
success: true,
|
|
231
|
+
output: { stub: true },
|
|
232
|
+
duration: 0,
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
/** Execute an approval gate. */
|
|
236
|
+
async executeApprovalGate(statement, _scope) {
|
|
237
|
+
const gate = statement;
|
|
238
|
+
const message = gate.properties?.find((p) => p.key.value === 'message')?.value?.raw ?? 'Approval required';
|
|
239
|
+
const gateName = 'approval-gate';
|
|
240
|
+
const workflowHash = ApprovalManager.computeWorkflowHash(JSON.stringify(statement));
|
|
241
|
+
const token = this.approvalManager.generateToken(this.config.sessionId ?? 'unknown-session', 'workflow', gateName, message, workflowHash, this.config.agentId ?? 'unknown-agent');
|
|
242
|
+
// In production, the executor would suspend the session here and
|
|
243
|
+
// wait for a /approve directive. For now, return the token info.
|
|
244
|
+
return {
|
|
245
|
+
name: gateName,
|
|
246
|
+
type: 'approval',
|
|
247
|
+
success: true,
|
|
248
|
+
output: { tokenId: token.token, message, status: token.status },
|
|
249
|
+
duration: 0,
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
/** Execute a repeat N loop. */
|
|
253
|
+
async executeRepeat(statement, scope, outputs) {
|
|
254
|
+
const repeat = statement;
|
|
255
|
+
const count = repeat.count?.value ?? 1;
|
|
256
|
+
for (let i = 0; i < count; i++) {
|
|
257
|
+
const iterScope = createChildScope(scope, { _iteration: i });
|
|
258
|
+
for (const stmt of repeat.body ?? []) {
|
|
259
|
+
await this.executeStatement(stmt, iterScope, outputs);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
return { name: `repeat(${count})`, type: 'loop', success: true, output: count, duration: 0 };
|
|
263
|
+
}
|
|
264
|
+
/** Execute a for-in loop. */
|
|
265
|
+
async executeForLoop(statement, scope, outputs) {
|
|
266
|
+
const forLoop = statement;
|
|
267
|
+
const varName = forLoop.variable?.value ?? 'item';
|
|
268
|
+
const iterable = forLoop.iterable;
|
|
269
|
+
const items = Array.isArray(iterable) ? iterable : [];
|
|
270
|
+
for (const item of items) {
|
|
271
|
+
const iterScope = createChildScope(scope, { [varName]: item });
|
|
272
|
+
for (const stmt of forLoop.body ?? []) {
|
|
273
|
+
await this.executeStatement(stmt, iterScope, outputs);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
return {
|
|
277
|
+
name: `for(${varName})`,
|
|
278
|
+
type: 'loop',
|
|
279
|
+
success: true,
|
|
280
|
+
output: items.length,
|
|
281
|
+
duration: 0,
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
/** Execute a loop-until block. */
|
|
285
|
+
async executeLoopUntil(statement, scope, outputs) {
|
|
286
|
+
const loop = statement;
|
|
287
|
+
let iterations = 0;
|
|
288
|
+
const maxIterations = 10000;
|
|
289
|
+
let conditionMet = false;
|
|
290
|
+
do {
|
|
291
|
+
iterations++;
|
|
292
|
+
if (iterations > maxIterations) {
|
|
293
|
+
throw new Error(`Loop exceeded maximum iterations (${maxIterations})`);
|
|
294
|
+
}
|
|
295
|
+
for (const stmt of loop.body ?? []) {
|
|
296
|
+
await this.executeStatement(stmt, scope, outputs);
|
|
297
|
+
}
|
|
298
|
+
conditionMet = await this.evaluateCondition(loop.condition, scope);
|
|
299
|
+
} while (!conditionMet);
|
|
300
|
+
return {
|
|
301
|
+
name: 'loop-until',
|
|
302
|
+
type: 'loop',
|
|
303
|
+
success: true,
|
|
304
|
+
output: iterations,
|
|
305
|
+
duration: 0,
|
|
306
|
+
};
|
|
307
|
+
}
|
|
308
|
+
/** Execute a try/catch/finally block. */
|
|
309
|
+
async executeTryCatch(statement, scope, outputs) {
|
|
310
|
+
const tryCatch = statement;
|
|
311
|
+
let success = true;
|
|
312
|
+
let error;
|
|
313
|
+
try {
|
|
314
|
+
for (const stmt of tryCatch.try_body ?? []) {
|
|
315
|
+
await this.executeStatement(stmt, scope, outputs);
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
catch (err) {
|
|
319
|
+
success = false;
|
|
320
|
+
error = err instanceof Error ? err.message : String(err);
|
|
321
|
+
if (tryCatch.catch_body) {
|
|
322
|
+
const catchScope = createChildScope(scope, {
|
|
323
|
+
[tryCatch.catch_name ?? 'err']: error,
|
|
324
|
+
});
|
|
325
|
+
for (const stmt of tryCatch.catch_body) {
|
|
326
|
+
await this.executeStatement(stmt, catchScope, outputs);
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
finally {
|
|
331
|
+
if (tryCatch.finally_body) {
|
|
332
|
+
for (const stmt of tryCatch.finally_body) {
|
|
333
|
+
await this.executeStatement(stmt, scope, outputs);
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
return { name: 'try-catch', type: 'conditional', success, error, duration: 0 };
|
|
338
|
+
}
|
|
339
|
+
/** Execute a CANT directive statement. */
|
|
340
|
+
async executeDirective(statement, _scope) {
|
|
341
|
+
const directive = statement;
|
|
342
|
+
// Stub: real implementation dispatches via CLEO operations
|
|
343
|
+
return {
|
|
344
|
+
name: `/${directive.verb ?? 'unknown'}`,
|
|
345
|
+
type: 'directive',
|
|
346
|
+
success: true,
|
|
347
|
+
output: {
|
|
348
|
+
verb: directive.verb,
|
|
349
|
+
addresses: directive.addresses,
|
|
350
|
+
taskRefs: directive.task_refs,
|
|
351
|
+
},
|
|
352
|
+
duration: 0,
|
|
353
|
+
};
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Evaluate a condition (regular expression or discretion).
|
|
357
|
+
*/
|
|
358
|
+
async evaluateCondition(condition, scope) {
|
|
359
|
+
if (!condition)
|
|
360
|
+
return true;
|
|
361
|
+
const cond = condition;
|
|
362
|
+
if (cond.Discretion) {
|
|
363
|
+
const context = {
|
|
364
|
+
sessionId: this.config.sessionId ?? '',
|
|
365
|
+
taskRefs: [],
|
|
366
|
+
agentId: this.config.agentId ?? '',
|
|
367
|
+
variables: flattenScope(scope),
|
|
368
|
+
condition: cond.Discretion.prose,
|
|
369
|
+
precedingResults: {},
|
|
370
|
+
};
|
|
371
|
+
return this.discretionEvaluator.evaluate(cond.Discretion.prose, context);
|
|
372
|
+
}
|
|
373
|
+
// For regular expressions, return true as a stub
|
|
374
|
+
// Real implementation would evaluate the expression against the scope
|
|
375
|
+
return true;
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
// ---------------------------------------------------------------------------
|
|
379
|
+
// Helpers
|
|
380
|
+
// ---------------------------------------------------------------------------
|
|
381
|
+
/** Detect the statement type from an AST statement object. */
|
|
382
|
+
function detectStatementType(statement) {
|
|
383
|
+
if ('Binding' in statement)
|
|
384
|
+
return 'Binding';
|
|
385
|
+
if ('Output' in statement)
|
|
386
|
+
return 'Output';
|
|
387
|
+
if ('Conditional' in statement || ('condition' in statement && 'then_body' in statement))
|
|
388
|
+
return 'Conditional';
|
|
389
|
+
if ('Parallel' in statement || 'arms' in statement)
|
|
390
|
+
return 'Parallel';
|
|
391
|
+
if ('Session' in statement || 'target' in statement)
|
|
392
|
+
return 'Session';
|
|
393
|
+
if ('Pipeline' in statement || ('steps' in statement && 'name' in statement))
|
|
394
|
+
return 'Pipeline';
|
|
395
|
+
if ('ApprovalGate' in statement)
|
|
396
|
+
return 'ApprovalGate';
|
|
397
|
+
if ('Repeat' in statement || 'count' in statement)
|
|
398
|
+
return 'Repeat';
|
|
399
|
+
if ('ForLoop' in statement || ('variable' in statement && 'iterable' in statement))
|
|
400
|
+
return 'ForLoop';
|
|
401
|
+
if ('LoopUntil' in statement)
|
|
402
|
+
return 'LoopUntil';
|
|
403
|
+
if ('TryCatch' in statement || 'try_body' in statement)
|
|
404
|
+
return 'TryCatch';
|
|
405
|
+
if ('Directive' in statement || 'verb' in statement)
|
|
406
|
+
return 'Directive';
|
|
407
|
+
if ('Comment' in statement || 'text' in statement)
|
|
408
|
+
return 'Comment';
|
|
409
|
+
return statement.type ?? 'unknown';
|
|
410
|
+
}
|
|
411
|
+
/** Extract a human-readable name from a statement. */
|
|
412
|
+
function getStatementName(statement) {
|
|
413
|
+
const named = statement;
|
|
414
|
+
if (typeof named.name === 'object' && named.name?.value)
|
|
415
|
+
return named.name.value;
|
|
416
|
+
if (typeof named.name === 'string')
|
|
417
|
+
return named.name;
|
|
418
|
+
if (named.verb)
|
|
419
|
+
return `/${named.verb}`;
|
|
420
|
+
return detectStatementType(statement);
|
|
421
|
+
}
|
|
422
|
+
/** Map a statement to a StepResult type category. */
|
|
423
|
+
function getStatementType(statement) {
|
|
424
|
+
const t = detectStatementType(statement);
|
|
425
|
+
const mapping = {
|
|
426
|
+
Session: 'session',
|
|
427
|
+
Pipeline: 'pipeline',
|
|
428
|
+
Parallel: 'parallel',
|
|
429
|
+
Conditional: 'conditional',
|
|
430
|
+
Repeat: 'loop',
|
|
431
|
+
ForLoop: 'loop',
|
|
432
|
+
LoopUntil: 'loop',
|
|
433
|
+
ApprovalGate: 'approval',
|
|
434
|
+
Binding: 'binding',
|
|
435
|
+
Output: 'output',
|
|
436
|
+
Directive: 'directive',
|
|
437
|
+
};
|
|
438
|
+
return mapping[t] ?? 'binding';
|
|
439
|
+
}
|
|
440
|
+
//# sourceMappingURL=workflow-executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-executor.js","sourceRoot":"","sources":["../../src/cant/workflow-executor.ts"],"names":[],"mappings":"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"}
|
package/dist/cleo.js
CHANGED
|
@@ -20,7 +20,7 @@ import { importTasks } from './admin/import.js';
|
|
|
20
20
|
// Agents
|
|
21
21
|
import { checkAgentHealth, deregisterAgent, detectCrashedAgents, getAgentCapacity, heartbeat, isOverloaded, listAgentInstances, registerAgent, } from './agents/index.js';
|
|
22
22
|
// Intelligence
|
|
23
|
-
import { calculateBlastRadius, predictImpact
|
|
23
|
+
import { calculateBlastRadius, predictImpact } from './intelligence/index.js';
|
|
24
24
|
// Lifecycle
|
|
25
25
|
import { checkGate, completeStage, failGate, getLifecycleHistory, getLifecycleStatus, PIPELINE_STAGES, passGate, resetStage, skipStage, startStage, } from './lifecycle/index.js';
|
|
26
26
|
// Memory
|
|
@@ -31,6 +31,8 @@ import { discoverRelated, searchAcrossProjects } from './nexus/discover.js';
|
|
|
31
31
|
import { setPermission } from './nexus/permissions.js';
|
|
32
32
|
import { nexusGetProject, nexusInit, nexusList, nexusRegister, nexusSync, nexusSyncAll, nexusUnregister, } from './nexus/registry.js';
|
|
33
33
|
import { getSharingStatus } from './nexus/sharing/index.js';
|
|
34
|
+
// Nexus workspace (ORCH-PLAN Phase B)
|
|
35
|
+
import { parseDirective, routeDirective, workspaceAgents, workspaceStatus, } from './nexus/workspace.js';
|
|
34
36
|
// Orchestration
|
|
35
37
|
import { analyzeEpic, buildDependencyGraph, computeEpicStatus, computeProgress, getNextTask, getOrchestratorContext, getReadyTasks, startOrchestration, } from './orchestration/index.js';
|
|
36
38
|
// Reconciliation (sync)
|
|
@@ -40,6 +42,8 @@ import { getLinksByProvider, getLinksByTaskId, removeLinksByProvider, } from './
|
|
|
40
42
|
import { bumpVersionFromConfig, calculateNewVersion, commitRelease, prepareRelease, pushRelease, rollbackRelease, tagRelease, } from './release/index.js';
|
|
41
43
|
// Sessions
|
|
42
44
|
import { computeBriefing, computeHandoff, endSession, findSessions, gcSessions, getContextDrift, getDecisionLog, getLastHandoff, listSessions, recordAssumption, recordDecision, resumeSession, sessionStatus, showSession, startSession, suspendSession, } from './sessions/index.js';
|
|
45
|
+
// Session snapshots (Phase 3: persistence)
|
|
46
|
+
import { restoreSession, serializeSession } from './sessions/snapshot.js';
|
|
43
47
|
// Sticky
|
|
44
48
|
import { addSticky, archiveSticky, convertStickyToMemory, convertStickyToTask, getSticky, listStickies, purgeSticky, } from './sticky/index.js';
|
|
45
49
|
// Store
|
|
@@ -141,6 +145,14 @@ export class Cleo {
|
|
|
141
145
|
contextDrift: (p) => getContextDrift(root, p),
|
|
142
146
|
decisionLog: (p) => getDecisionLog(root, { sessionId: p?.sessionId, taskId: p?.taskId }),
|
|
143
147
|
lastHandoff: (scope) => getLastHandoff(root, scope),
|
|
148
|
+
serialize: (p) => serializeSession(root, {
|
|
149
|
+
sessionId: p?.sessionId,
|
|
150
|
+
maxObservations: p?.maxObservations,
|
|
151
|
+
}),
|
|
152
|
+
restore: (snapshot, p) => restoreSession(root, snapshot, {
|
|
153
|
+
agent: p?.agent,
|
|
154
|
+
activate: p?.activate,
|
|
155
|
+
}),
|
|
144
156
|
};
|
|
145
157
|
}
|
|
146
158
|
// === Memory ===
|
|
@@ -252,6 +264,14 @@ export class Cleo {
|
|
|
252
264
|
search: (p) => searchAcrossProjects(p.pattern, p.project, p.limit),
|
|
253
265
|
setPermission: (p) => setPermission(p.name, p.level),
|
|
254
266
|
sharingStatus: () => getSharingStatus(),
|
|
267
|
+
route: (message) => {
|
|
268
|
+
const directive = parseDirective(message);
|
|
269
|
+
if (!directive)
|
|
270
|
+
return Promise.resolve([]);
|
|
271
|
+
return routeDirective(directive);
|
|
272
|
+
},
|
|
273
|
+
workspaceStatus: () => workspaceStatus(),
|
|
274
|
+
workspaceAgents: () => workspaceAgents(),
|
|
255
275
|
};
|
|
256
276
|
}
|
|
257
277
|
// === Agents ===
|