@cleocode/cleo 2026.4.58 → 2026.4.59
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/dist/cli/commander-shim.d.ts +112 -0
- package/dist/cli/commander-shim.d.ts.map +1 -0
- package/dist/cli/commander-shim.js +233 -0
- package/dist/cli/commander-shim.js.map +1 -0
- package/dist/cli/commands/adapter.d.ts +21 -0
- package/dist/cli/commands/adapter.d.ts.map +1 -0
- package/dist/cli/commands/adapter.js +73 -0
- package/dist/cli/commands/adapter.js.map +1 -0
- package/dist/cli/commands/add-batch.d.ts +16 -0
- package/dist/cli/commands/add-batch.d.ts.map +1 -0
- package/dist/cli/commands/add-batch.js +133 -0
- package/dist/cli/commands/add-batch.js.map +1 -0
- package/dist/cli/commands/add.d.ts +12 -0
- package/dist/cli/commands/add.d.ts.map +1 -0
- package/dist/cli/commands/add.js +238 -0
- package/dist/cli/commands/add.js.map +1 -0
- package/dist/cli/commands/admin.d.ts +15 -0
- package/dist/cli/commands/admin.d.ts.map +1 -0
- package/dist/cli/commands/admin.js +143 -0
- package/dist/cli/commands/admin.js.map +1 -0
- package/dist/cli/commands/adr.d.ts +27 -0
- package/dist/cli/commands/adr.d.ts.map +1 -0
- package/dist/cli/commands/adr.js +79 -0
- package/dist/cli/commands/adr.js.map +1 -0
- package/dist/cli/commands/agent-profile-status.d.ts +98 -0
- package/dist/cli/commands/agent-profile-status.d.ts.map +1 -0
- package/dist/cli/commands/agent-profile-status.js +71 -0
- package/dist/cli/commands/agent-profile-status.js.map +1 -0
- package/dist/cli/commands/agent.d.ts +41 -0
- package/dist/cli/commands/agent.d.ts.map +1 -0
- package/dist/cli/commands/agent.js +2270 -0
- package/dist/cli/commands/agent.js.map +1 -0
- package/dist/cli/commands/agents.d.ts +17 -0
- package/dist/cli/commands/agents.d.ts.map +1 -0
- package/dist/cli/commands/agents.js +20 -0
- package/dist/cli/commands/agents.js.map +1 -0
- package/dist/cli/commands/analyze.d.ts +12 -0
- package/dist/cli/commands/analyze.d.ts.map +1 -0
- package/dist/cli/commands/analyze.js +20 -0
- package/dist/cli/commands/analyze.js.map +1 -0
- package/dist/cli/commands/archive-stats.d.ts +18 -0
- package/dist/cli/commands/archive-stats.d.ts.map +1 -0
- package/dist/cli/commands/archive-stats.js +49 -0
- package/dist/cli/commands/archive-stats.js.map +1 -0
- package/dist/cli/commands/archive.d.ts +12 -0
- package/dist/cli/commands/archive.d.ts.map +1 -0
- package/dist/cli/commands/archive.js +32 -0
- package/dist/cli/commands/archive.js.map +1 -0
- package/dist/cli/commands/backfill.d.ts +38 -0
- package/dist/cli/commands/backfill.d.ts.map +1 -0
- package/dist/cli/commands/backfill.js +144 -0
- package/dist/cli/commands/backfill.js.map +1 -0
- package/dist/cli/commands/backup-inspect.d.ts +24 -0
- package/dist/cli/commands/backup-inspect.d.ts.map +1 -0
- package/dist/cli/commands/backup-inspect.js +417 -0
- package/dist/cli/commands/backup-inspect.js.map +1 -0
- package/dist/cli/commands/backup.d.ts +13 -0
- package/dist/cli/commands/backup.d.ts.map +1 -0
- package/dist/cli/commands/backup.js +479 -0
- package/dist/cli/commands/backup.js.map +1 -0
- package/dist/cli/commands/blockers.d.ts +7 -0
- package/dist/cli/commands/blockers.d.ts.map +1 -0
- package/dist/cli/commands/blockers.js +16 -0
- package/dist/cli/commands/blockers.js.map +1 -0
- package/dist/cli/commands/brain.d.ts +29 -0
- package/dist/cli/commands/brain.d.ts.map +1 -0
- package/dist/cli/commands/brain.js +358 -0
- package/dist/cli/commands/brain.js.map +1 -0
- package/dist/cli/commands/briefing.d.ts +22 -0
- package/dist/cli/commands/briefing.d.ts.map +1 -0
- package/dist/cli/commands/briefing.js +45 -0
- package/dist/cli/commands/briefing.js.map +1 -0
- package/dist/cli/commands/bug.d.ts +12 -0
- package/dist/cli/commands/bug.d.ts.map +1 -0
- package/dist/cli/commands/bug.js +81 -0
- package/dist/cli/commands/bug.js.map +1 -0
- package/dist/cli/commands/cancel.d.ts +17 -0
- package/dist/cli/commands/cancel.d.ts.map +1 -0
- package/dist/cli/commands/cancel.js +28 -0
- package/dist/cli/commands/cancel.js.map +1 -0
- package/dist/cli/commands/cant.d.ts +32 -0
- package/dist/cli/commands/cant.d.ts.map +1 -0
- package/dist/cli/commands/cant.js +264 -0
- package/dist/cli/commands/cant.js.map +1 -0
- package/dist/cli/commands/chain.d.ts +16 -0
- package/dist/cli/commands/chain.d.ts.map +1 -0
- package/dist/cli/commands/chain.js +52 -0
- package/dist/cli/commands/chain.js.map +1 -0
- package/dist/cli/commands/check.d.ts +25 -0
- package/dist/cli/commands/check.d.ts.map +1 -0
- package/dist/cli/commands/check.js +193 -0
- package/dist/cli/commands/check.js.map +1 -0
- package/dist/cli/commands/checkpoint.d.ts +15 -0
- package/dist/cli/commands/checkpoint.d.ts.map +1 -0
- package/dist/cli/commands/checkpoint.js +91 -0
- package/dist/cli/commands/checkpoint.js.map +1 -0
- package/dist/cli/commands/claim.d.ts +27 -0
- package/dist/cli/commands/claim.d.ts.map +1 -0
- package/dist/cli/commands/claim.js +45 -0
- package/dist/cli/commands/claim.js.map +1 -0
- package/dist/cli/commands/code.d.ts +11 -0
- package/dist/cli/commands/code.d.ts.map +1 -0
- package/dist/cli/commands/code.js +114 -0
- package/dist/cli/commands/code.js.map +1 -0
- package/dist/cli/commands/commands.d.ts +13 -0
- package/dist/cli/commands/commands.d.ts.map +1 -0
- package/dist/cli/commands/commands.js +29 -0
- package/dist/cli/commands/commands.js.map +1 -0
- package/dist/cli/commands/complete.d.ts +12 -0
- package/dist/cli/commands/complete.d.ts.map +1 -0
- package/dist/cli/commands/complete.js +92 -0
- package/dist/cli/commands/complete.js.map +1 -0
- package/dist/cli/commands/complexity.d.ts +17 -0
- package/dist/cli/commands/complexity.d.ts.map +1 -0
- package/dist/cli/commands/complexity.js +25 -0
- package/dist/cli/commands/complexity.js.map +1 -0
- package/dist/cli/commands/compliance.d.ts +9 -0
- package/dist/cli/commands/compliance.d.ts.map +1 -0
- package/dist/cli/commands/compliance.js +110 -0
- package/dist/cli/commands/compliance.js.map +1 -0
- package/dist/cli/commands/config.d.ts +10 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +69 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/consensus.d.ts +13 -0
- package/dist/cli/commands/consensus.d.ts.map +1 -0
- package/dist/cli/commands/consensus.js +45 -0
- package/dist/cli/commands/consensus.js.map +1 -0
- package/dist/cli/commands/context.d.ts +15 -0
- package/dist/cli/commands/context.d.ts.map +1 -0
- package/dist/cli/commands/context.js +76 -0
- package/dist/cli/commands/context.js.map +1 -0
- package/dist/cli/commands/contribution.d.ts +13 -0
- package/dist/cli/commands/contribution.d.ts.map +1 -0
- package/dist/cli/commands/contribution.js +41 -0
- package/dist/cli/commands/contribution.js.map +1 -0
- package/dist/cli/commands/current.d.ts +13 -0
- package/dist/cli/commands/current.d.ts.map +1 -0
- package/dist/cli/commands/current.js +20 -0
- package/dist/cli/commands/current.js.map +1 -0
- package/dist/cli/commands/dash.d.ts +12 -0
- package/dist/cli/commands/dash.d.ts.map +1 -0
- package/dist/cli/commands/dash.js +20 -0
- package/dist/cli/commands/dash.js.map +1 -0
- package/dist/cli/commands/decomposition.d.ts +13 -0
- package/dist/cli/commands/decomposition.d.ts.map +1 -0
- package/dist/cli/commands/decomposition.js +45 -0
- package/dist/cli/commands/decomposition.js.map +1 -0
- package/dist/cli/commands/delete.d.ts +12 -0
- package/dist/cli/commands/delete.d.ts.map +1 -0
- package/dist/cli/commands/delete.js +37 -0
- package/dist/cli/commands/delete.js.map +1 -0
- package/dist/cli/commands/deps.d.ts +24 -0
- package/dist/cli/commands/deps.d.ts.map +1 -0
- package/dist/cli/commands/deps.js +98 -0
- package/dist/cli/commands/deps.js.map +1 -0
- package/dist/cli/commands/detect-drift.d.ts +15 -0
- package/dist/cli/commands/detect-drift.d.ts.map +1 -0
- package/dist/cli/commands/detect-drift.js +428 -0
- package/dist/cli/commands/detect-drift.js.map +1 -0
- package/dist/cli/commands/detect.d.ts +13 -0
- package/dist/cli/commands/detect.d.ts.map +1 -0
- package/dist/cli/commands/detect.js +20 -0
- package/dist/cli/commands/detect.js.map +1 -0
- package/dist/cli/commands/diagnostics.d.ts +16 -0
- package/dist/cli/commands/diagnostics.d.ts.map +1 -0
- package/dist/cli/commands/diagnostics.js +58 -0
- package/dist/cli/commands/diagnostics.js.map +1 -0
- package/dist/cli/commands/docs.d.ts +13 -0
- package/dist/cli/commands/docs.d.ts.map +1 -0
- package/dist/cli/commands/docs.js +169 -0
- package/dist/cli/commands/docs.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +15 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +133 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/dynamic.d.ts +24 -0
- package/dist/cli/commands/dynamic.d.ts.map +1 -0
- package/dist/cli/commands/dynamic.js +27 -0
- package/dist/cli/commands/dynamic.js.map +1 -0
- package/dist/cli/commands/env.d.ts +12 -0
- package/dist/cli/commands/env.d.ts.map +1 -0
- package/dist/cli/commands/env.js +44 -0
- package/dist/cli/commands/env.js.map +1 -0
- package/dist/cli/commands/exists.d.ts +24 -0
- package/dist/cli/commands/exists.d.ts.map +1 -0
- package/dist/cli/commands/exists.js +53 -0
- package/dist/cli/commands/exists.js.map +1 -0
- package/dist/cli/commands/export-tasks.d.ts +10 -0
- package/dist/cli/commands/export-tasks.d.ts.map +1 -0
- package/dist/cli/commands/export-tasks.js +47 -0
- package/dist/cli/commands/export-tasks.js.map +1 -0
- package/dist/cli/commands/export.d.ts +9 -0
- package/dist/cli/commands/export.d.ts.map +1 -0
- package/dist/cli/commands/export.js +46 -0
- package/dist/cli/commands/export.js.map +1 -0
- package/dist/cli/commands/find.d.ts +14 -0
- package/dist/cli/commands/find.d.ts.map +1 -0
- package/dist/cli/commands/find.js +152 -0
- package/dist/cli/commands/find.js.map +1 -0
- package/dist/cli/commands/generate-changelog.d.ts +14 -0
- package/dist/cli/commands/generate-changelog.d.ts.map +1 -0
- package/dist/cli/commands/generate-changelog.js +252 -0
- package/dist/cli/commands/generate-changelog.js.map +1 -0
- package/dist/cli/commands/grade.d.ts +13 -0
- package/dist/cli/commands/grade.d.ts.map +1 -0
- package/dist/cli/commands/grade.js +26 -0
- package/dist/cli/commands/grade.js.map +1 -0
- package/dist/cli/commands/history.d.ts +9 -0
- package/dist/cli/commands/history.d.ts.map +1 -0
- package/dist/cli/commands/history.js +33 -0
- package/dist/cli/commands/history.js.map +1 -0
- package/dist/cli/commands/implementation.d.ts +13 -0
- package/dist/cli/commands/implementation.d.ts.map +1 -0
- package/dist/cli/commands/implementation.js +41 -0
- package/dist/cli/commands/implementation.js.map +1 -0
- package/dist/cli/commands/import-tasks.d.ts +10 -0
- package/dist/cli/commands/import-tasks.d.ts.map +1 -0
- package/dist/cli/commands/import-tasks.js +38 -0
- package/dist/cli/commands/import-tasks.js.map +1 -0
- package/dist/cli/commands/import.d.ts +9 -0
- package/dist/cli/commands/import.d.ts.map +1 -0
- package/dist/cli/commands/import.js +28 -0
- package/dist/cli/commands/import.js.map +1 -0
- package/dist/cli/commands/init.d.ts +34 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +96 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/inject.d.ts +8 -0
- package/dist/cli/commands/inject.d.ts.map +1 -0
- package/dist/cli/commands/inject.js +28 -0
- package/dist/cli/commands/inject.js.map +1 -0
- package/dist/cli/commands/intelligence.d.ts +22 -0
- package/dist/cli/commands/intelligence.d.ts.map +1 -0
- package/dist/cli/commands/intelligence.js +72 -0
- package/dist/cli/commands/intelligence.js.map +1 -0
- package/dist/cli/commands/issue.d.ts +17 -0
- package/dist/cli/commands/issue.d.ts.map +1 -0
- package/dist/cli/commands/issue.js +107 -0
- package/dist/cli/commands/issue.js.map +1 -0
- package/dist/cli/commands/labels.d.ts +17 -0
- package/dist/cli/commands/labels.d.ts.map +1 -0
- package/dist/cli/commands/labels.js +48 -0
- package/dist/cli/commands/labels.js.map +1 -0
- package/dist/cli/commands/lifecycle.d.ts +8 -0
- package/dist/cli/commands/lifecycle.d.ts.map +1 -0
- package/dist/cli/commands/lifecycle.js +128 -0
- package/dist/cli/commands/lifecycle.js.map +1 -0
- package/dist/cli/commands/list.d.ts +14 -0
- package/dist/cli/commands/list.d.ts.map +1 -0
- package/dist/cli/commands/list.js +143 -0
- package/dist/cli/commands/list.js.map +1 -0
- package/dist/cli/commands/log.d.ts +12 -0
- package/dist/cli/commands/log.d.ts.map +1 -0
- package/dist/cli/commands/log.js +30 -0
- package/dist/cli/commands/log.js.map +1 -0
- package/dist/cli/commands/map.d.ts +10 -0
- package/dist/cli/commands/map.d.ts.map +1 -0
- package/dist/cli/commands/map.js +23 -0
- package/dist/cli/commands/map.js.map +1 -0
- package/dist/cli/commands/memory-brain.d.ts +15 -0
- package/dist/cli/commands/memory-brain.d.ts.map +1 -0
- package/dist/cli/commands/memory-brain.js +436 -0
- package/dist/cli/commands/memory-brain.js.map +1 -0
- package/dist/cli/commands/migrate-claude-mem.d.ts +23 -0
- package/dist/cli/commands/migrate-claude-mem.d.ts.map +1 -0
- package/dist/cli/commands/migrate-claude-mem.js +79 -0
- package/dist/cli/commands/migrate-claude-mem.js.map +1 -0
- package/dist/cli/commands/next.d.ts +9 -0
- package/dist/cli/commands/next.d.ts.map +1 -0
- package/dist/cli/commands/next.js +20 -0
- package/dist/cli/commands/next.js.map +1 -0
- package/dist/cli/commands/nexus.d.ts +20 -0
- package/dist/cli/commands/nexus.d.ts.map +1 -0
- package/dist/cli/commands/nexus.js +2290 -0
- package/dist/cli/commands/nexus.js.map +1 -0
- package/dist/cli/commands/observe.d.ts +13 -0
- package/dist/cli/commands/observe.d.ts.map +1 -0
- package/dist/cli/commands/observe.js +30 -0
- package/dist/cli/commands/observe.js.map +1 -0
- package/dist/cli/commands/ops.d.ts +10 -0
- package/dist/cli/commands/ops.d.ts.map +1 -0
- package/dist/cli/commands/ops.js +19 -0
- package/dist/cli/commands/ops.js.map +1 -0
- package/dist/cli/commands/orchestrate.d.ts +24 -0
- package/dist/cli/commands/orchestrate.d.ts.map +1 -0
- package/dist/cli/commands/orchestrate.js +254 -0
- package/dist/cli/commands/orchestrate.js.map +1 -0
- package/dist/cli/commands/otel.d.ts +12 -0
- package/dist/cli/commands/otel.d.ts.map +1 -0
- package/dist/cli/commands/otel.js +128 -0
- package/dist/cli/commands/otel.js.map +1 -0
- package/dist/cli/commands/phase.d.ts +12 -0
- package/dist/cli/commands/phase.d.ts.map +1 -0
- package/dist/cli/commands/phase.js +91 -0
- package/dist/cli/commands/phase.js.map +1 -0
- package/dist/cli/commands/phases.d.ts +14 -0
- package/dist/cli/commands/phases.d.ts.map +1 -0
- package/dist/cli/commands/phases.js +42 -0
- package/dist/cli/commands/phases.js.map +1 -0
- package/dist/cli/commands/plan.d.ts +8 -0
- package/dist/cli/commands/plan.d.ts.map +1 -0
- package/dist/cli/commands/plan.js +15 -0
- package/dist/cli/commands/plan.js.map +1 -0
- package/dist/cli/commands/promote.d.ts +11 -0
- package/dist/cli/commands/promote.d.ts.map +1 -0
- package/dist/cli/commands/promote.js +18 -0
- package/dist/cli/commands/promote.js.map +1 -0
- package/dist/cli/commands/provider.d.ts +21 -0
- package/dist/cli/commands/provider.d.ts.map +1 -0
- package/dist/cli/commands/provider.js +88 -0
- package/dist/cli/commands/provider.js.map +1 -0
- package/dist/cli/commands/reason.d.ts +36 -0
- package/dist/cli/commands/reason.d.ts.map +1 -0
- package/dist/cli/commands/reason.js +85 -0
- package/dist/cli/commands/reason.js.map +1 -0
- package/dist/cli/commands/refresh-memory.d.ts +9 -0
- package/dist/cli/commands/refresh-memory.d.ts.map +1 -0
- package/dist/cli/commands/refresh-memory.js +24 -0
- package/dist/cli/commands/refresh-memory.js.map +1 -0
- package/dist/cli/commands/relates.d.ts +12 -0
- package/dist/cli/commands/relates.d.ts.map +1 -0
- package/dist/cli/commands/relates.js +53 -0
- package/dist/cli/commands/relates.js.map +1 -0
- package/dist/cli/commands/release.d.ts +8 -0
- package/dist/cli/commands/release.d.ts.map +1 -0
- package/dist/cli/commands/release.js +82 -0
- package/dist/cli/commands/release.js.map +1 -0
- package/dist/cli/commands/remote.d.ts +12 -0
- package/dist/cli/commands/remote.d.ts.map +1 -0
- package/dist/cli/commands/remote.js +207 -0
- package/dist/cli/commands/remote.js.map +1 -0
- package/dist/cli/commands/reorder.d.ts +17 -0
- package/dist/cli/commands/reorder.d.ts.map +1 -0
- package/dist/cli/commands/reorder.js +41 -0
- package/dist/cli/commands/reorder.js.map +1 -0
- package/dist/cli/commands/reparent.d.ts +10 -0
- package/dist/cli/commands/reparent.d.ts.map +1 -0
- package/dist/cli/commands/reparent.js +19 -0
- package/dist/cli/commands/reparent.js.map +1 -0
- package/dist/cli/commands/research.d.ts +8 -0
- package/dist/cli/commands/research.d.ts.map +1 -0
- package/dist/cli/commands/research.js +164 -0
- package/dist/cli/commands/research.js.map +1 -0
- package/dist/cli/commands/restore.d.ts +54 -0
- package/dist/cli/commands/restore.d.ts.map +1 -0
- package/dist/cli/commands/restore.js +470 -0
- package/dist/cli/commands/restore.js.map +1 -0
- package/dist/cli/commands/roadmap.d.ts +14 -0
- package/dist/cli/commands/roadmap.d.ts.map +1 -0
- package/dist/cli/commands/roadmap.js +26 -0
- package/dist/cli/commands/roadmap.js.map +1 -0
- package/dist/cli/commands/safestop.d.ts +14 -0
- package/dist/cli/commands/safestop.d.ts.map +1 -0
- package/dist/cli/commands/safestop.js +32 -0
- package/dist/cli/commands/safestop.js.map +1 -0
- package/dist/cli/commands/schema.d.ts +27 -0
- package/dist/cli/commands/schema.d.ts.map +1 -0
- package/dist/cli/commands/schema.js +160 -0
- package/dist/cli/commands/schema.js.map +1 -0
- package/dist/cli/commands/self-update.d.ts +15 -0
- package/dist/cli/commands/self-update.d.ts.map +1 -0
- package/dist/cli/commands/self-update.js +363 -0
- package/dist/cli/commands/self-update.js.map +1 -0
- package/dist/cli/commands/sequence.d.ts +11 -0
- package/dist/cli/commands/sequence.d.ts.map +1 -0
- package/dist/cli/commands/sequence.js +40 -0
- package/dist/cli/commands/sequence.js.map +1 -0
- package/dist/cli/commands/session.d.ts +12 -0
- package/dist/cli/commands/session.d.ts.map +1 -0
- package/dist/cli/commands/session.js +219 -0
- package/dist/cli/commands/session.js.map +1 -0
- package/dist/cli/commands/show.d.ts +13 -0
- package/dist/cli/commands/show.d.ts.map +1 -0
- package/dist/cli/commands/show.js +40 -0
- package/dist/cli/commands/show.js.map +1 -0
- package/dist/cli/commands/skills.d.ts +13 -0
- package/dist/cli/commands/skills.d.ts.map +1 -0
- package/dist/cli/commands/skills.js +161 -0
- package/dist/cli/commands/skills.js.map +1 -0
- package/dist/cli/commands/snapshot.d.ts +9 -0
- package/dist/cli/commands/snapshot.d.ts.map +1 -0
- package/dist/cli/commands/snapshot.js +50 -0
- package/dist/cli/commands/snapshot.js.map +1 -0
- package/dist/cli/commands/specification.d.ts +13 -0
- package/dist/cli/commands/specification.d.ts.map +1 -0
- package/dist/cli/commands/specification.js +45 -0
- package/dist/cli/commands/specification.js.map +1 -0
- package/dist/cli/commands/start.d.ts +13 -0
- package/dist/cli/commands/start.d.ts.map +1 -0
- package/dist/cli/commands/start.js +20 -0
- package/dist/cli/commands/start.js.map +1 -0
- package/dist/cli/commands/stats.d.ts +12 -0
- package/dist/cli/commands/stats.d.ts.map +1 -0
- package/dist/cli/commands/stats.js +35 -0
- package/dist/cli/commands/stats.js.map +1 -0
- package/dist/cli/commands/sticky.d.ts +16 -0
- package/dist/cli/commands/sticky.d.ts.map +1 -0
- package/dist/cli/commands/sticky.js +218 -0
- package/dist/cli/commands/sticky.js.map +1 -0
- package/dist/cli/commands/stop.d.ts +13 -0
- package/dist/cli/commands/stop.d.ts.map +1 -0
- package/dist/cli/commands/stop.js +20 -0
- package/dist/cli/commands/stop.js.map +1 -0
- package/dist/cli/commands/sync.d.ts +26 -0
- package/dist/cli/commands/sync.d.ts.map +1 -0
- package/dist/cli/commands/sync.js +82 -0
- package/dist/cli/commands/sync.js.map +1 -0
- package/dist/cli/commands/testing.d.ts +13 -0
- package/dist/cli/commands/testing.d.ts.map +1 -0
- package/dist/cli/commands/testing.js +65 -0
- package/dist/cli/commands/testing.js.map +1 -0
- package/dist/cli/commands/token.d.ts +10 -0
- package/dist/cli/commands/token.d.ts.map +1 -0
- package/dist/cli/commands/token.js +135 -0
- package/dist/cli/commands/token.js.map +1 -0
- package/dist/cli/commands/update.d.ts +12 -0
- package/dist/cli/commands/update.d.ts.map +1 -0
- package/dist/cli/commands/update.js +83 -0
- package/dist/cli/commands/update.js.map +1 -0
- package/dist/cli/commands/upgrade.d.ts +18 -0
- package/dist/cli/commands/upgrade.d.ts.map +1 -0
- package/dist/cli/commands/upgrade.js +103 -0
- package/dist/cli/commands/upgrade.js.map +1 -0
- package/dist/cli/commands/validate.d.ts +12 -0
- package/dist/cli/commands/validate.d.ts.map +1 -0
- package/dist/cli/commands/validate.js +24 -0
- package/dist/cli/commands/validate.js.map +1 -0
- package/dist/cli/commands/verify.d.ts +8 -0
- package/dist/cli/commands/verify.d.ts.map +1 -0
- package/dist/cli/commands/verify.js +28 -0
- package/dist/cli/commands/verify.js.map +1 -0
- package/dist/cli/commands/web.d.ts +19 -0
- package/dist/cli/commands/web.d.ts.map +1 -0
- package/dist/cli/commands/web.js +371 -0
- package/dist/cli/commands/web.js.map +1 -0
- package/dist/cli/field-context.d.ts +32 -0
- package/dist/cli/field-context.d.ts.map +1 -0
- package/dist/cli/field-context.js +47 -0
- package/dist/cli/field-context.js.map +1 -0
- package/dist/cli/format-context.d.ts +32 -0
- package/dist/cli/format-context.d.ts.map +1 -0
- package/dist/cli/format-context.js +50 -0
- package/dist/cli/format-context.js.map +1 -0
- package/dist/cli/help-generator.d.ts +74 -0
- package/dist/cli/help-generator.d.ts.map +1 -0
- package/dist/cli/help-generator.js +229 -0
- package/dist/cli/help-generator.js.map +1 -0
- package/dist/cli/help-renderer.d.ts +28 -0
- package/dist/cli/help-renderer.d.ts.map +1 -0
- package/dist/cli/help-renderer.js +301 -0
- package/dist/cli/help-renderer.js.map +1 -0
- package/dist/cli/index.d.ts +9 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/logger-bootstrap.d.ts +6 -0
- package/dist/cli/logger-bootstrap.d.ts.map +1 -0
- package/dist/cli/logger-bootstrap.js +10 -0
- package/dist/cli/logger-bootstrap.js.map +1 -0
- package/dist/cli/middleware/output-format.d.ts +30 -0
- package/dist/cli/middleware/output-format.d.ts.map +1 -0
- package/dist/cli/middleware/output-format.js +35 -0
- package/dist/cli/middleware/output-format.js.map +1 -0
- package/dist/cli/progress.d.ts +84 -0
- package/dist/cli/progress.d.ts.map +1 -0
- package/dist/cli/progress.js +169 -0
- package/dist/cli/progress.js.map +1 -0
- package/dist/cli/renderers/colors.d.ts +32 -0
- package/dist/cli/renderers/colors.d.ts.map +1 -0
- package/dist/cli/renderers/colors.js +141 -0
- package/dist/cli/renderers/colors.js.map +1 -0
- package/dist/cli/renderers/error.d.ts +13 -0
- package/dist/cli/renderers/error.d.ts.map +1 -0
- package/dist/cli/renderers/error.js +42 -0
- package/dist/cli/renderers/error.js.map +1 -0
- package/dist/cli/renderers/index.d.ts +87 -0
- package/dist/cli/renderers/index.d.ts.map +1 -0
- package/dist/cli/renderers/index.js +262 -0
- package/dist/cli/renderers/index.js.map +1 -0
- package/dist/cli/renderers/lafs-validator.d.ts +91 -0
- package/dist/cli/renderers/lafs-validator.d.ts.map +1 -0
- package/dist/cli/renderers/lafs-validator.js +176 -0
- package/dist/cli/renderers/lafs-validator.js.map +1 -0
- package/dist/cli/renderers/normalizer.d.ts +21 -0
- package/dist/cli/renderers/normalizer.d.ts.map +1 -0
- package/dist/cli/renderers/normalizer.js +106 -0
- package/dist/cli/renderers/normalizer.js.map +1 -0
- package/dist/cli/renderers/system.d.ts +25 -0
- package/dist/cli/renderers/system.d.ts.map +1 -0
- package/dist/cli/renderers/system.js +416 -0
- package/dist/cli/renderers/system.js.map +1 -0
- package/dist/cli/renderers/tasks.d.ts +28 -0
- package/dist/cli/renderers/tasks.d.ts.map +1 -0
- package/dist/cli/renderers/tasks.js +306 -0
- package/dist/cli/renderers/tasks.js.map +1 -0
- package/dist/dispatch/adapters/cli.d.ts +67 -0
- package/dist/dispatch/adapters/cli.d.ts.map +1 -0
- package/dist/dispatch/adapters/cli.js +331 -0
- package/dist/dispatch/adapters/cli.js.map +1 -0
- package/dist/dispatch/context/session-context.d.ts +54 -0
- package/dist/dispatch/context/session-context.d.ts.map +1 -0
- package/dist/dispatch/context/session-context.js +61 -0
- package/dist/dispatch/context/session-context.js.map +1 -0
- package/dist/dispatch/dispatcher.d.ts +23 -0
- package/dist/dispatch/dispatcher.d.ts.map +1 -0
- package/dist/dispatch/dispatcher.js +84 -0
- package/dist/dispatch/dispatcher.js.map +1 -0
- package/dist/dispatch/domains/_base.d.ts +59 -0
- package/dist/dispatch/domains/_base.d.ts.map +1 -0
- package/dist/dispatch/domains/_base.js +77 -0
- package/dist/dispatch/domains/_base.js.map +1 -0
- package/dist/dispatch/domains/_meta.d.ts +23 -0
- package/dist/dispatch/domains/_meta.d.ts.map +1 -0
- package/dist/dispatch/domains/_meta.js +25 -0
- package/dist/dispatch/domains/_meta.js.map +1 -0
- package/dist/dispatch/domains/_routing.d.ts +8 -0
- package/dist/dispatch/domains/_routing.d.ts.map +1 -0
- package/dist/dispatch/domains/_routing.js +20 -0
- package/dist/dispatch/domains/_routing.js.map +1 -0
- package/dist/dispatch/domains/admin.d.ts +25 -0
- package/dist/dispatch/domains/admin.d.ts.map +1 -0
- package/dist/dispatch/domains/admin.js +791 -0
- package/dist/dispatch/domains/admin.js.map +1 -0
- package/dist/dispatch/domains/check.d.ts +22 -0
- package/dist/dispatch/domains/check.d.ts.map +1 -0
- package/dist/dispatch/domains/check.js +381 -0
- package/dist/dispatch/domains/check.js.map +1 -0
- package/dist/dispatch/domains/conduit.d.ts +38 -0
- package/dist/dispatch/domains/conduit.d.ts.map +1 -0
- package/dist/dispatch/domains/conduit.js +360 -0
- package/dist/dispatch/domains/conduit.js.map +1 -0
- package/dist/dispatch/domains/diagnostics.d.ts +20 -0
- package/dist/dispatch/domains/diagnostics.d.ts.map +1 -0
- package/dist/dispatch/domains/diagnostics.js +77 -0
- package/dist/dispatch/domains/diagnostics.js.map +1 -0
- package/dist/dispatch/domains/index.d.ts +29 -0
- package/dist/dispatch/domains/index.d.ts.map +1 -0
- package/dist/dispatch/domains/index.js +45 -0
- package/dist/dispatch/domains/index.js.map +1 -0
- package/dist/dispatch/domains/intelligence.d.ts +26 -0
- package/dist/dispatch/domains/intelligence.d.ts.map +1 -0
- package/dist/dispatch/domains/intelligence.js +154 -0
- package/dist/dispatch/domains/intelligence.js.map +1 -0
- package/dist/dispatch/domains/memory.d.ts +22 -0
- package/dist/dispatch/domains/memory.d.ts.map +1 -0
- package/dist/dispatch/domains/memory.js +387 -0
- package/dist/dispatch/domains/memory.js.map +1 -0
- package/dist/dispatch/domains/nexus.d.ts +22 -0
- package/dist/dispatch/domains/nexus.d.ts.map +1 -0
- package/dist/dispatch/domains/nexus.js +286 -0
- package/dist/dispatch/domains/nexus.js.map +1 -0
- package/dist/dispatch/domains/orchestrate.d.ts +26 -0
- package/dist/dispatch/domains/orchestrate.d.ts.map +1 -0
- package/dist/dispatch/domains/orchestrate.js +691 -0
- package/dist/dispatch/domains/orchestrate.js.map +1 -0
- package/dist/dispatch/domains/pipeline.d.ts +35 -0
- package/dist/dispatch/domains/pipeline.d.ts.map +1 -0
- package/dist/dispatch/domains/pipeline.js +593 -0
- package/dist/dispatch/domains/pipeline.js.map +1 -0
- package/dist/dispatch/domains/session.d.ts +22 -0
- package/dist/dispatch/domains/session.d.ts.map +1 -0
- package/dist/dispatch/domains/session.js +267 -0
- package/dist/dispatch/domains/session.js.map +1 -0
- package/dist/dispatch/domains/sticky.d.ts +20 -0
- package/dist/dispatch/domains/sticky.d.ts.map +1 -0
- package/dist/dispatch/domains/sticky.js +167 -0
- package/dist/dispatch/domains/sticky.js.map +1 -0
- package/dist/dispatch/domains/tasks.d.ts +25 -0
- package/dist/dispatch/domains/tasks.d.ts.map +1 -0
- package/dist/dispatch/domains/tasks.js +368 -0
- package/dist/dispatch/domains/tasks.js.map +1 -0
- package/dist/dispatch/domains/tools.d.ts +37 -0
- package/dist/dispatch/domains/tools.d.ts.map +1 -0
- package/dist/dispatch/domains/tools.js +481 -0
- package/dist/dispatch/domains/tools.js.map +1 -0
- package/dist/dispatch/engines/_error.d.ts +119 -0
- package/dist/dispatch/engines/_error.d.ts.map +1 -0
- package/dist/dispatch/engines/_error.js +298 -0
- package/dist/dispatch/engines/_error.js.map +1 -0
- package/dist/dispatch/engines/code-engine.d.ts +18 -0
- package/dist/dispatch/engines/code-engine.d.ts.map +1 -0
- package/dist/dispatch/engines/code-engine.js +71 -0
- package/dist/dispatch/engines/code-engine.js.map +1 -0
- package/dist/dispatch/engines/codebase-map-engine.d.ts +31 -0
- package/dist/dispatch/engines/codebase-map-engine.d.ts.map +1 -0
- package/dist/dispatch/engines/codebase-map-engine.js +43 -0
- package/dist/dispatch/engines/codebase-map-engine.js.map +1 -0
- package/dist/dispatch/engines/config-engine.d.ts +32 -0
- package/dist/dispatch/engines/config-engine.d.ts.map +1 -0
- package/dist/dispatch/engines/config-engine.js +70 -0
- package/dist/dispatch/engines/config-engine.js.map +1 -0
- package/dist/dispatch/engines/diagnostics-engine.d.ts +57 -0
- package/dist/dispatch/engines/diagnostics-engine.d.ts.map +1 -0
- package/dist/dispatch/engines/diagnostics-engine.js +163 -0
- package/dist/dispatch/engines/diagnostics-engine.js.map +1 -0
- package/dist/dispatch/engines/hooks-engine.d.ts +96 -0
- package/dist/dispatch/engines/hooks-engine.d.ts.map +1 -0
- package/dist/dispatch/engines/hooks-engine.js +144 -0
- package/dist/dispatch/engines/hooks-engine.js.map +1 -0
- package/dist/dispatch/engines/init-engine.d.ts +56 -0
- package/dist/dispatch/engines/init-engine.d.ts.map +1 -0
- package/dist/dispatch/engines/init-engine.js +78 -0
- package/dist/dispatch/engines/init-engine.js.map +1 -0
- package/dist/dispatch/engines/lifecycle-engine.d.ts +66 -0
- package/dist/dispatch/engines/lifecycle-engine.d.ts.map +1 -0
- package/dist/dispatch/engines/lifecycle-engine.js +224 -0
- package/dist/dispatch/engines/lifecycle-engine.js.map +1 -0
- package/dist/dispatch/engines/memory-engine.d.ts +10 -0
- package/dist/dispatch/engines/memory-engine.d.ts.map +1 -0
- package/dist/dispatch/engines/memory-engine.js +10 -0
- package/dist/dispatch/engines/memory-engine.js.map +1 -0
- package/dist/dispatch/engines/nexus-engine.d.ts +167 -0
- package/dist/dispatch/engines/nexus-engine.d.ts.map +1 -0
- package/dist/dispatch/engines/nexus-engine.js +356 -0
- package/dist/dispatch/engines/nexus-engine.js.map +1 -0
- package/dist/dispatch/engines/orchestrate-engine.d.ts +141 -0
- package/dist/dispatch/engines/orchestrate-engine.d.ts.map +1 -0
- package/dist/dispatch/engines/orchestrate-engine.js +892 -0
- package/dist/dispatch/engines/orchestrate-engine.js.map +1 -0
- package/dist/dispatch/engines/pipeline-engine.d.ts +51 -0
- package/dist/dispatch/engines/pipeline-engine.d.ts.map +1 -0
- package/dist/dispatch/engines/pipeline-engine.js +191 -0
- package/dist/dispatch/engines/pipeline-engine.js.map +1 -0
- package/dist/dispatch/engines/release-engine.d.ts +94 -0
- package/dist/dispatch/engines/release-engine.d.ts.map +1 -0
- package/dist/dispatch/engines/release-engine.js +763 -0
- package/dist/dispatch/engines/release-engine.js.map +1 -0
- package/dist/dispatch/engines/session-engine.d.ts +387 -0
- package/dist/dispatch/engines/session-engine.d.ts.map +1 -0
- package/dist/dispatch/engines/session-engine.js +924 -0
- package/dist/dispatch/engines/session-engine.js.map +1 -0
- package/dist/dispatch/engines/sticky-engine.d.ts +100 -0
- package/dist/dispatch/engines/sticky-engine.d.ts.map +1 -0
- package/dist/dispatch/engines/sticky-engine.js +181 -0
- package/dist/dispatch/engines/sticky-engine.js.map +1 -0
- package/dist/dispatch/engines/system-engine.d.ts +543 -0
- package/dist/dispatch/engines/system-engine.d.ts.map +1 -0
- package/dist/dispatch/engines/system-engine.js +1273 -0
- package/dist/dispatch/engines/system-engine.js.map +1 -0
- package/dist/dispatch/engines/task-engine.d.ts +971 -0
- package/dist/dispatch/engines/task-engine.d.ts.map +1 -0
- package/dist/dispatch/engines/task-engine.js +1255 -0
- package/dist/dispatch/engines/task-engine.js.map +1 -0
- package/dist/dispatch/engines/template-parser.d.ts +85 -0
- package/dist/dispatch/engines/template-parser.d.ts.map +1 -0
- package/dist/dispatch/engines/template-parser.js +108 -0
- package/dist/dispatch/engines/template-parser.js.map +1 -0
- package/dist/dispatch/engines/tools-engine.d.ts +270 -0
- package/dist/dispatch/engines/tools-engine.d.ts.map +1 -0
- package/dist/dispatch/engines/tools-engine.js +663 -0
- package/dist/dispatch/engines/tools-engine.js.map +1 -0
- package/dist/dispatch/engines/validate-engine.d.ts +218 -0
- package/dist/dispatch/engines/validate-engine.d.ts.map +1 -0
- package/dist/dispatch/engines/validate-engine.js +737 -0
- package/dist/dispatch/engines/validate-engine.js.map +1 -0
- package/dist/dispatch/index.d.ts +20 -0
- package/dist/dispatch/index.d.ts.map +1 -0
- package/dist/dispatch/index.js +19 -0
- package/dist/dispatch/index.js.map +1 -0
- package/dist/dispatch/lib/background-jobs.d.ts +86 -0
- package/dist/dispatch/lib/background-jobs.d.ts.map +1 -0
- package/dist/dispatch/lib/background-jobs.js +183 -0
- package/dist/dispatch/lib/background-jobs.js.map +1 -0
- package/dist/dispatch/lib/budget.d.ts +36 -0
- package/dist/dispatch/lib/budget.d.ts.map +1 -0
- package/dist/dispatch/lib/budget.js +109 -0
- package/dist/dispatch/lib/budget.js.map +1 -0
- package/dist/dispatch/lib/capability-matrix.d.ts +11 -0
- package/dist/dispatch/lib/capability-matrix.d.ts.map +1 -0
- package/dist/dispatch/lib/capability-matrix.js +10 -0
- package/dist/dispatch/lib/capability-matrix.js.map +1 -0
- package/dist/dispatch/lib/config-loader.d.ts +42 -0
- package/dist/dispatch/lib/config-loader.d.ts.map +1 -0
- package/dist/dispatch/lib/config-loader.js +217 -0
- package/dist/dispatch/lib/config-loader.js.map +1 -0
- package/dist/dispatch/lib/config.d.ts +11 -0
- package/dist/dispatch/lib/config.d.ts.map +1 -0
- package/dist/dispatch/lib/config.js +10 -0
- package/dist/dispatch/lib/config.js.map +1 -0
- package/dist/dispatch/lib/defaults.d.ts +115 -0
- package/dist/dispatch/lib/defaults.d.ts.map +1 -0
- package/dist/dispatch/lib/defaults.js +61 -0
- package/dist/dispatch/lib/defaults.js.map +1 -0
- package/dist/dispatch/lib/engine.d.ts +26 -0
- package/dist/dispatch/lib/engine.d.ts.map +1 -0
- package/dist/dispatch/lib/engine.js +46 -0
- package/dist/dispatch/lib/engine.js.map +1 -0
- package/dist/dispatch/lib/exit-codes.d.ts +35 -0
- package/dist/dispatch/lib/exit-codes.d.ts.map +1 -0
- package/dist/dispatch/lib/exit-codes.js +60 -0
- package/dist/dispatch/lib/exit-codes.js.map +1 -0
- package/dist/dispatch/lib/gateway-meta.d.ts +37 -0
- package/dist/dispatch/lib/gateway-meta.d.ts.map +1 -0
- package/dist/dispatch/lib/gateway-meta.js +50 -0
- package/dist/dispatch/lib/gateway-meta.js.map +1 -0
- package/dist/dispatch/lib/job-manager-accessor.d.ts +9 -0
- package/dist/dispatch/lib/job-manager-accessor.d.ts.map +1 -0
- package/dist/dispatch/lib/job-manager-accessor.js +13 -0
- package/dist/dispatch/lib/job-manager-accessor.js.map +1 -0
- package/dist/dispatch/lib/meta.d.ts +26 -0
- package/dist/dispatch/lib/meta.d.ts.map +1 -0
- package/dist/dispatch/lib/meta.js +37 -0
- package/dist/dispatch/lib/meta.js.map +1 -0
- package/dist/dispatch/lib/param-utils.d.ts +11 -0
- package/dist/dispatch/lib/param-utils.d.ts.map +1 -0
- package/dist/dispatch/lib/param-utils.js +10 -0
- package/dist/dispatch/lib/param-utils.js.map +1 -0
- package/dist/dispatch/lib/projections.d.ts +56 -0
- package/dist/dispatch/lib/projections.d.ts.map +1 -0
- package/dist/dispatch/lib/projections.js +65 -0
- package/dist/dispatch/lib/projections.js.map +1 -0
- package/dist/dispatch/lib/proto-envelope.d.ts +56 -0
- package/dist/dispatch/lib/proto-envelope.d.ts.map +1 -0
- package/dist/dispatch/lib/proto-envelope.js +17 -0
- package/dist/dispatch/lib/proto-envelope.js.map +1 -0
- package/dist/dispatch/lib/schema-utils.d.ts +39 -0
- package/dist/dispatch/lib/schema-utils.d.ts.map +1 -0
- package/dist/dispatch/lib/schema-utils.js +88 -0
- package/dist/dispatch/lib/schema-utils.js.map +1 -0
- package/dist/dispatch/lib/security.d.ts +11 -0
- package/dist/dispatch/lib/security.d.ts.map +1 -0
- package/dist/dispatch/lib/security.js +10 -0
- package/dist/dispatch/lib/security.js.map +1 -0
- package/dist/dispatch/middleware/audit.d.ts +23 -0
- package/dist/dispatch/middleware/audit.d.ts.map +1 -0
- package/dist/dispatch/middleware/audit.js +169 -0
- package/dist/dispatch/middleware/audit.js.map +1 -0
- package/dist/dispatch/middleware/field-filter.d.ts +25 -0
- package/dist/dispatch/middleware/field-filter.d.ts.map +1 -0
- package/dist/dispatch/middleware/field-filter.js +70 -0
- package/dist/dispatch/middleware/field-filter.js.map +1 -0
- package/dist/dispatch/middleware/pipeline.d.ts +33 -0
- package/dist/dispatch/middleware/pipeline.d.ts.map +1 -0
- package/dist/dispatch/middleware/pipeline.js +60 -0
- package/dist/dispatch/middleware/pipeline.js.map +1 -0
- package/dist/dispatch/middleware/projection.d.ts +35 -0
- package/dist/dispatch/middleware/projection.d.ts.map +1 -0
- package/dist/dispatch/middleware/projection.js +146 -0
- package/dist/dispatch/middleware/projection.js.map +1 -0
- package/dist/dispatch/middleware/protocol-enforcement.d.ts +30 -0
- package/dist/dispatch/middleware/protocol-enforcement.d.ts.map +1 -0
- package/dist/dispatch/middleware/protocol-enforcement.js +56 -0
- package/dist/dispatch/middleware/protocol-enforcement.js.map +1 -0
- package/dist/dispatch/middleware/rate-limiter.d.ts +72 -0
- package/dist/dispatch/middleware/rate-limiter.d.ts.map +1 -0
- package/dist/dispatch/middleware/rate-limiter.js +127 -0
- package/dist/dispatch/middleware/rate-limiter.js.map +1 -0
- package/dist/dispatch/middleware/sanitizer.d.ts +24 -0
- package/dist/dispatch/middleware/sanitizer.d.ts.map +1 -0
- package/dist/dispatch/middleware/sanitizer.js +56 -0
- package/dist/dispatch/middleware/sanitizer.js.map +1 -0
- package/dist/dispatch/middleware/session-resolver.d.ts +26 -0
- package/dist/dispatch/middleware/session-resolver.d.ts.map +1 -0
- package/dist/dispatch/middleware/session-resolver.js +65 -0
- package/dist/dispatch/middleware/session-resolver.js.map +1 -0
- package/dist/dispatch/middleware/telemetry.d.ts +21 -0
- package/dist/dispatch/middleware/telemetry.d.ts.map +1 -0
- package/dist/dispatch/middleware/telemetry.js +50 -0
- package/dist/dispatch/middleware/telemetry.js.map +1 -0
- package/dist/dispatch/middleware/verification-gates.d.ts +22 -0
- package/dist/dispatch/middleware/verification-gates.d.ts.map +1 -0
- package/dist/dispatch/middleware/verification-gates.js +59 -0
- package/dist/dispatch/middleware/verification-gates.js.map +1 -0
- package/dist/dispatch/registry.d.ts +91 -0
- package/dist/dispatch/registry.d.ts.map +1 -0
- package/dist/dispatch/registry.js +3535 -0
- package/dist/dispatch/registry.js.map +1 -0
- package/dist/dispatch/types.d.ts +206 -0
- package/dist/dispatch/types.d.ts.map +1 -0
- package/dist/dispatch/types.js +27 -0
- package/dist/dispatch/types.js.map +1 -0
- package/package.json +8 -8
|
@@ -0,0 +1,691 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Orchestrate Domain Handler (Dispatch Layer)
|
|
3
|
+
*
|
|
4
|
+
* Handles multi-agent orchestration: dependency analysis, wave computation,
|
|
5
|
+
* spawn readiness, parallel coordination, and orchestration context.
|
|
6
|
+
* All operations delegate to native engine functions.
|
|
7
|
+
*
|
|
8
|
+
* Wave 7a additions (T379):
|
|
9
|
+
* - orchestrate.classify (T408) — prompt-based team routing stub
|
|
10
|
+
* - orchestrate.fanout (T409) — Promise.allSettled spawn wrapper
|
|
11
|
+
* - orchestrate.fanout.status (T415) — fanout status stub
|
|
12
|
+
* - orchestrate.analyze mode="parallel-safety" (T410) — dep-graph grouping
|
|
13
|
+
*
|
|
14
|
+
* @epic T4820
|
|
15
|
+
* @epic T377
|
|
16
|
+
*/
|
|
17
|
+
import { getLogger, getProjectRoot, instantiateTessera, listTesseraTemplates, paginate, showTessera, } from '@cleocode/core/internal';
|
|
18
|
+
import { orchestrateAnalyze, orchestrateBootstrap, orchestrateContext, orchestrateHandoff, orchestrateNext, orchestrateParallelEnd, orchestrateParallelStart, orchestrateReady, orchestrateSpawn, orchestrateSpawnExecute, orchestrateStartup, orchestrateStatus, orchestrateUnblockOpportunities, orchestrateValidate, orchestrateWaves, } from '../lib/engine.js';
|
|
19
|
+
import { errorResult, getListParams, handleErrorResult, wrapResult } from './_base.js';
|
|
20
|
+
import { dispatchMeta } from './_meta.js';
|
|
21
|
+
import { routeByParam } from './_routing.js';
|
|
22
|
+
import { ConduitHandler } from './conduit.js';
|
|
23
|
+
/** Shared ConduitHandler instance for conduit.* sub-operations (ADR-042). */
|
|
24
|
+
const conduitHandler = new ConduitHandler();
|
|
25
|
+
// ---------------------------------------------------------------------------
|
|
26
|
+
// OrchestrateHandler
|
|
27
|
+
// ---------------------------------------------------------------------------
|
|
28
|
+
export class OrchestrateHandler {
|
|
29
|
+
// -----------------------------------------------------------------------
|
|
30
|
+
// DomainHandler interface
|
|
31
|
+
// -----------------------------------------------------------------------
|
|
32
|
+
async query(operation, params) {
|
|
33
|
+
const projectRoot = getProjectRoot();
|
|
34
|
+
const startTime = Date.now();
|
|
35
|
+
try {
|
|
36
|
+
switch (operation) {
|
|
37
|
+
case 'status': {
|
|
38
|
+
const epicId = params?.epicId;
|
|
39
|
+
const result = await orchestrateStatus(epicId, projectRoot);
|
|
40
|
+
return wrapResult(result, 'query', 'orchestrate', operation, startTime);
|
|
41
|
+
}
|
|
42
|
+
case 'next': {
|
|
43
|
+
const epicId = params?.epicId;
|
|
44
|
+
if (!epicId) {
|
|
45
|
+
return errorResult('query', 'orchestrate', operation, 'E_INVALID_INPUT', 'epicId is required', startTime);
|
|
46
|
+
}
|
|
47
|
+
const result = await orchestrateNext(epicId, projectRoot);
|
|
48
|
+
return wrapResult(result, 'query', 'orchestrate', operation, startTime);
|
|
49
|
+
}
|
|
50
|
+
case 'ready': {
|
|
51
|
+
const epicId = params?.epicId;
|
|
52
|
+
if (!epicId) {
|
|
53
|
+
return errorResult('query', 'orchestrate', operation, 'E_INVALID_INPUT', 'epicId is required', startTime);
|
|
54
|
+
}
|
|
55
|
+
const result = await orchestrateReady(epicId, projectRoot);
|
|
56
|
+
return wrapResult(result, 'query', 'orchestrate', operation, startTime);
|
|
57
|
+
}
|
|
58
|
+
case 'analyze': {
|
|
59
|
+
const epicId = params?.epicId;
|
|
60
|
+
const mode = params?.mode;
|
|
61
|
+
// T410: parallel-safety mode — dep-graph grouping without epicId
|
|
62
|
+
if (mode === 'parallel-safety') {
|
|
63
|
+
const taskIds = params?.taskIds;
|
|
64
|
+
const result = await orchestrateAnalyzeParallelSafety(taskIds ?? [], projectRoot);
|
|
65
|
+
return wrapResult(result, 'query', 'orchestrate', 'analyze', startTime);
|
|
66
|
+
}
|
|
67
|
+
const result = await orchestrateAnalyze(epicId, projectRoot, mode);
|
|
68
|
+
return wrapResult(result, 'query', 'orchestrate', 'analyze', startTime);
|
|
69
|
+
}
|
|
70
|
+
case 'classify': {
|
|
71
|
+
// T408: prompt-based team routing stub.
|
|
72
|
+
//
|
|
73
|
+
// ADR-030 §5 Challenge Questions:
|
|
74
|
+
// Q1: Is this operation idempotent? Yes — same request + context produces same routing.
|
|
75
|
+
// Q2: What is the failure mode when no team matches? Returns confidence=0 with null team.
|
|
76
|
+
// Q3: Should this be a query or mutate? Query — no state is written; routing is advisory.
|
|
77
|
+
// Q4: How does this compose with orchestrate.spawn? Classify first, then spawn to the
|
|
78
|
+
// returned team's lead using the returned protocol.
|
|
79
|
+
// Q5: What prevents stale team registry data? The classifier reads live .cant files at
|
|
80
|
+
// runtime; W7b adds cache invalidation on file-change events.
|
|
81
|
+
const request = params?.request;
|
|
82
|
+
if (!request) {
|
|
83
|
+
return errorResult('query', 'orchestrate', operation, 'E_INVALID_INPUT', 'request is required', startTime);
|
|
84
|
+
}
|
|
85
|
+
const context = params?.context;
|
|
86
|
+
const result = await orchestrateClassify(request, context, projectRoot);
|
|
87
|
+
return wrapResult(result, 'query', 'orchestrate', operation, startTime);
|
|
88
|
+
}
|
|
89
|
+
case 'fanout.status': {
|
|
90
|
+
// T433 STAB-1: reads results from the in-process fanoutManifestStore.
|
|
91
|
+
const manifestEntryId = params?.manifestEntryId;
|
|
92
|
+
if (!manifestEntryId) {
|
|
93
|
+
return errorResult('query', 'orchestrate', operation, 'E_INVALID_INPUT', 'manifestEntryId is required', startTime);
|
|
94
|
+
}
|
|
95
|
+
const entry = fanoutManifestStore.get(manifestEntryId);
|
|
96
|
+
if (!entry) {
|
|
97
|
+
return {
|
|
98
|
+
meta: dispatchMeta('query', 'orchestrate', operation, startTime),
|
|
99
|
+
success: true,
|
|
100
|
+
data: {
|
|
101
|
+
manifestEntryId,
|
|
102
|
+
pending: [],
|
|
103
|
+
running: [],
|
|
104
|
+
complete: [],
|
|
105
|
+
failed: [],
|
|
106
|
+
found: false,
|
|
107
|
+
},
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
const spawned = entry.results.filter((r) => r.status === 'spawned').map((r) => r.taskId);
|
|
111
|
+
const failed = entry.results.filter((r) => r.status === 'failed').map((r) => r.taskId);
|
|
112
|
+
return {
|
|
113
|
+
meta: dispatchMeta('query', 'orchestrate', operation, startTime),
|
|
114
|
+
success: true,
|
|
115
|
+
data: {
|
|
116
|
+
manifestEntryId,
|
|
117
|
+
pending: [],
|
|
118
|
+
running: spawned,
|
|
119
|
+
complete: [],
|
|
120
|
+
failed,
|
|
121
|
+
found: true,
|
|
122
|
+
completedAt: entry.completedAt,
|
|
123
|
+
},
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
case 'context': {
|
|
127
|
+
const epicId = params?.epicId;
|
|
128
|
+
const result = await orchestrateContext(epicId, projectRoot);
|
|
129
|
+
return wrapResult(result, 'query', 'orchestrate', operation, startTime);
|
|
130
|
+
}
|
|
131
|
+
case 'waves': {
|
|
132
|
+
const epicId = params?.epicId;
|
|
133
|
+
if (!epicId) {
|
|
134
|
+
return errorResult('query', 'orchestrate', operation, 'E_INVALID_INPUT', 'epicId is required', startTime);
|
|
135
|
+
}
|
|
136
|
+
const result = await orchestrateWaves(epicId, projectRoot);
|
|
137
|
+
return wrapResult(result, 'query', 'orchestrate', operation, startTime);
|
|
138
|
+
}
|
|
139
|
+
case 'bootstrap': {
|
|
140
|
+
const speed = params?.speed;
|
|
141
|
+
const result = await orchestrateBootstrap(projectRoot, { speed });
|
|
142
|
+
return wrapResult(result, 'query', 'orchestrate', operation, startTime);
|
|
143
|
+
}
|
|
144
|
+
case 'unblock.opportunities': {
|
|
145
|
+
const result = await orchestrateUnblockOpportunities(projectRoot);
|
|
146
|
+
return wrapResult(result, 'query', 'orchestrate', operation, startTime);
|
|
147
|
+
}
|
|
148
|
+
case 'tessera.list': {
|
|
149
|
+
const id = params?.id;
|
|
150
|
+
if (id) {
|
|
151
|
+
const template = showTessera(id);
|
|
152
|
+
if (!template) {
|
|
153
|
+
return errorResult('query', 'orchestrate', 'tessera.list', 'E_NOT_FOUND', `Tessera template "${id}" not found`, startTime);
|
|
154
|
+
}
|
|
155
|
+
return {
|
|
156
|
+
meta: dispatchMeta('query', 'orchestrate', 'tessera.list', startTime),
|
|
157
|
+
success: true,
|
|
158
|
+
data: template,
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
const templates = listTesseraTemplates();
|
|
162
|
+
const { limit, offset } = getListParams(params);
|
|
163
|
+
const page = paginate(templates, limit, offset);
|
|
164
|
+
return {
|
|
165
|
+
meta: dispatchMeta('query', 'orchestrate', 'tessera.list', startTime),
|
|
166
|
+
success: true,
|
|
167
|
+
data: {
|
|
168
|
+
templates: page.items,
|
|
169
|
+
count: templates.length,
|
|
170
|
+
total: templates.length,
|
|
171
|
+
filtered: templates.length,
|
|
172
|
+
},
|
|
173
|
+
page: page.page,
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
// ADR-042: conduit sub-operations routed through orchestrate domain
|
|
177
|
+
case 'conduit.status':
|
|
178
|
+
return conduitHandler.query('status', params);
|
|
179
|
+
case 'conduit.peek':
|
|
180
|
+
return conduitHandler.query('peek', params);
|
|
181
|
+
default:
|
|
182
|
+
return errorResult('query', 'orchestrate', operation, 'E_INVALID_OPERATION', `Unknown orchestrate query: ${operation}`, startTime);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
catch (error) {
|
|
186
|
+
getLogger('domain:orchestrate').error({ gateway: 'query', domain: 'orchestrate', operation, err: error }, error instanceof Error ? error.message : String(error));
|
|
187
|
+
return handleErrorResult('query', 'orchestrate', operation, error, startTime);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
async mutate(operation, params) {
|
|
191
|
+
const projectRoot = getProjectRoot();
|
|
192
|
+
const startTime = Date.now();
|
|
193
|
+
try {
|
|
194
|
+
switch (operation) {
|
|
195
|
+
case 'start': {
|
|
196
|
+
const epicId = params?.epicId;
|
|
197
|
+
if (!epicId) {
|
|
198
|
+
return errorResult('mutate', 'orchestrate', operation, 'E_INVALID_INPUT', 'epicId is required', startTime);
|
|
199
|
+
}
|
|
200
|
+
const result = await orchestrateStartup(epicId, projectRoot);
|
|
201
|
+
return wrapResult(result, 'mutate', 'orchestrate', operation, startTime);
|
|
202
|
+
}
|
|
203
|
+
case 'spawn': {
|
|
204
|
+
const taskId = params?.taskId;
|
|
205
|
+
if (!taskId) {
|
|
206
|
+
return errorResult('mutate', 'orchestrate', operation, 'E_INVALID_INPUT', 'taskId is required', startTime);
|
|
207
|
+
}
|
|
208
|
+
const protocolType = params?.protocolType;
|
|
209
|
+
const tier = params?.tier;
|
|
210
|
+
const result = await orchestrateSpawn(taskId, protocolType, projectRoot, tier);
|
|
211
|
+
return wrapResult(result, 'mutate', 'orchestrate', operation, startTime);
|
|
212
|
+
}
|
|
213
|
+
case 'handoff': {
|
|
214
|
+
const taskId = params?.taskId;
|
|
215
|
+
const protocolType = params?.protocolType;
|
|
216
|
+
if (!taskId) {
|
|
217
|
+
return errorResult('mutate', 'orchestrate', operation, 'E_INVALID_INPUT', 'taskId is required', startTime);
|
|
218
|
+
}
|
|
219
|
+
if (!protocolType) {
|
|
220
|
+
return errorResult('mutate', 'orchestrate', operation, 'E_INVALID_INPUT', 'protocolType is required', startTime);
|
|
221
|
+
}
|
|
222
|
+
const tier = params?.tier;
|
|
223
|
+
const result = await orchestrateHandoff({
|
|
224
|
+
taskId,
|
|
225
|
+
protocolType,
|
|
226
|
+
note: params?.note,
|
|
227
|
+
nextAction: params?.nextAction,
|
|
228
|
+
variant: params?.variant,
|
|
229
|
+
tier,
|
|
230
|
+
idempotencyKey: params?.idempotencyKey,
|
|
231
|
+
}, projectRoot);
|
|
232
|
+
return wrapResult(result, 'mutate', 'orchestrate', operation, startTime);
|
|
233
|
+
}
|
|
234
|
+
case 'spawn.execute': {
|
|
235
|
+
const taskId = params?.taskId;
|
|
236
|
+
if (!taskId) {
|
|
237
|
+
return errorResult('mutate', 'orchestrate', operation, 'E_INVALID_INPUT', 'taskId is required', startTime);
|
|
238
|
+
}
|
|
239
|
+
const adapterId = params?.adapterId;
|
|
240
|
+
const protocolType = params?.protocolType;
|
|
241
|
+
const tier = params?.tier;
|
|
242
|
+
const result = await orchestrateSpawnExecute(taskId, adapterId, protocolType, projectRoot, tier);
|
|
243
|
+
return wrapResult(result, 'mutate', 'orchestrate', operation, startTime);
|
|
244
|
+
}
|
|
245
|
+
case 'validate': {
|
|
246
|
+
const taskId = params?.taskId;
|
|
247
|
+
if (!taskId) {
|
|
248
|
+
return errorResult('mutate', 'orchestrate', operation, 'E_INVALID_INPUT', 'taskId is required', startTime);
|
|
249
|
+
}
|
|
250
|
+
const result = await orchestrateValidate(taskId, projectRoot);
|
|
251
|
+
return wrapResult(result, 'mutate', 'orchestrate', operation, startTime);
|
|
252
|
+
}
|
|
253
|
+
case 'parallel': {
|
|
254
|
+
return routeByParam(params, 'action', {
|
|
255
|
+
start: async () => {
|
|
256
|
+
const epicId = params?.epicId;
|
|
257
|
+
const wave = params?.wave;
|
|
258
|
+
if (!epicId) {
|
|
259
|
+
return errorResult('mutate', 'orchestrate', 'parallel', 'E_INVALID_INPUT', 'epicId is required', startTime);
|
|
260
|
+
}
|
|
261
|
+
if (wave === undefined || wave === null) {
|
|
262
|
+
return errorResult('mutate', 'orchestrate', 'parallel', 'E_INVALID_INPUT', 'wave number is required', startTime);
|
|
263
|
+
}
|
|
264
|
+
const result = await orchestrateParallelStart(epicId, wave, projectRoot);
|
|
265
|
+
return wrapResult(result, 'mutate', 'orchestrate', 'parallel', startTime);
|
|
266
|
+
},
|
|
267
|
+
end: async () => {
|
|
268
|
+
const epicId = params?.epicId;
|
|
269
|
+
const wave = params?.wave;
|
|
270
|
+
if (!epicId) {
|
|
271
|
+
return errorResult('mutate', 'orchestrate', 'parallel', 'E_INVALID_INPUT', 'epicId is required', startTime);
|
|
272
|
+
}
|
|
273
|
+
if (wave === undefined || wave === null) {
|
|
274
|
+
return errorResult('mutate', 'orchestrate', 'parallel', 'E_INVALID_INPUT', 'wave number is required', startTime);
|
|
275
|
+
}
|
|
276
|
+
const result = await orchestrateParallelEnd(epicId, wave, projectRoot);
|
|
277
|
+
return wrapResult(result, 'mutate', 'orchestrate', 'parallel', startTime);
|
|
278
|
+
},
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
case 'fanout': {
|
|
282
|
+
// T409: Promise.allSettled fanout wrapper.
|
|
283
|
+
//
|
|
284
|
+
// ADR-030 §5 Challenge Questions:
|
|
285
|
+
// Q1: Is this idempotent? No — each call triggers new spawn attempts.
|
|
286
|
+
// Q2: What happens on partial failure? allSettled collects all; results
|
|
287
|
+
// include per-item status and error fields. Orchestrator decides retry.
|
|
288
|
+
// Q3: Does this block the orchestrator? No — allSettled runs concurrently
|
|
289
|
+
// and returns aggregate results. The caller decides whether to await.
|
|
290
|
+
// Q4: How does this relate to orchestrate.spawn? fanout is the N-task
|
|
291
|
+
// coordinator; spawn is the single-task primitive. fanout wraps spawn.
|
|
292
|
+
// Q5: What is the manifestEntryId for? Correlates with fanout.status so
|
|
293
|
+
// the orchestrator can poll fanout progress across turns.
|
|
294
|
+
const items = params?.items;
|
|
295
|
+
if (!items || !Array.isArray(items) || items.length === 0) {
|
|
296
|
+
return errorResult('mutate', 'orchestrate', operation, 'E_INVALID_INPUT', 'items array is required and must be non-empty', startTime);
|
|
297
|
+
}
|
|
298
|
+
const result = await orchestrateFanout(items, projectRoot);
|
|
299
|
+
return wrapResult(result, 'mutate', 'orchestrate', operation, startTime);
|
|
300
|
+
}
|
|
301
|
+
case 'tessera.instantiate': {
|
|
302
|
+
const templateId = params?.templateId;
|
|
303
|
+
const epicId = params?.epicId;
|
|
304
|
+
if (!templateId) {
|
|
305
|
+
return errorResult('mutate', 'orchestrate', operation, 'E_INVALID_INPUT', 'templateId is required', startTime);
|
|
306
|
+
}
|
|
307
|
+
if (!epicId) {
|
|
308
|
+
return errorResult('mutate', 'orchestrate', operation, 'E_INVALID_INPUT', 'epicId is required', startTime);
|
|
309
|
+
}
|
|
310
|
+
const template = showTessera(templateId);
|
|
311
|
+
if (!template) {
|
|
312
|
+
return errorResult('mutate', 'orchestrate', operation, 'E_NOT_FOUND', `Tessera template "${templateId}" not found`, startTime);
|
|
313
|
+
}
|
|
314
|
+
const variables = params?.variables ?? {};
|
|
315
|
+
const instance = await instantiateTessera(template, { templateId, epicId, variables: { epicId, ...variables } }, projectRoot);
|
|
316
|
+
return {
|
|
317
|
+
meta: dispatchMeta('mutate', 'orchestrate', operation, startTime),
|
|
318
|
+
success: true,
|
|
319
|
+
data: instance,
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
// ADR-042: conduit sub-operations routed through orchestrate domain
|
|
323
|
+
case 'conduit.start':
|
|
324
|
+
return conduitHandler.mutate('start', params);
|
|
325
|
+
case 'conduit.stop':
|
|
326
|
+
return conduitHandler.mutate('stop', params);
|
|
327
|
+
case 'conduit.send':
|
|
328
|
+
return conduitHandler.mutate('send', params);
|
|
329
|
+
default:
|
|
330
|
+
return errorResult('mutate', 'orchestrate', operation, 'E_INVALID_OPERATION', `Unknown orchestrate mutation: ${operation}`, startTime);
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
catch (error) {
|
|
334
|
+
getLogger('domain:orchestrate').error({ gateway: 'mutate', domain: 'orchestrate', operation, err: error }, error instanceof Error ? error.message : String(error));
|
|
335
|
+
return handleErrorResult('mutate', 'orchestrate', operation, error, startTime);
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
getSupportedOperations() {
|
|
339
|
+
return {
|
|
340
|
+
query: [
|
|
341
|
+
'status',
|
|
342
|
+
'next',
|
|
343
|
+
'ready',
|
|
344
|
+
'analyze',
|
|
345
|
+
'context',
|
|
346
|
+
'waves',
|
|
347
|
+
'bootstrap',
|
|
348
|
+
'unblock.opportunities',
|
|
349
|
+
'tessera.list',
|
|
350
|
+
// Wave 7a (T379)
|
|
351
|
+
'classify',
|
|
352
|
+
'fanout.status',
|
|
353
|
+
// ADR-042: conduit sub-operations
|
|
354
|
+
'conduit.status',
|
|
355
|
+
'conduit.peek',
|
|
356
|
+
],
|
|
357
|
+
mutate: [
|
|
358
|
+
'start',
|
|
359
|
+
'spawn',
|
|
360
|
+
'handoff',
|
|
361
|
+
'spawn.execute',
|
|
362
|
+
'validate',
|
|
363
|
+
'parallel',
|
|
364
|
+
'tessera.instantiate',
|
|
365
|
+
// Wave 7a (T379)
|
|
366
|
+
'fanout',
|
|
367
|
+
// ADR-042: conduit sub-operations
|
|
368
|
+
'conduit.start',
|
|
369
|
+
'conduit.stop',
|
|
370
|
+
'conduit.send',
|
|
371
|
+
],
|
|
372
|
+
};
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* T408 — Classify a request against the CANT team registry.
|
|
377
|
+
*
|
|
378
|
+
* Implementation: prompt-based reasoning stub. Reads team definitions from the
|
|
379
|
+
* canonical CANT workflows dir and performs substring matching against each
|
|
380
|
+
* team's `consult-when` hint. Returns the highest-scoring team.
|
|
381
|
+
*
|
|
382
|
+
* Real LLM-based routing will replace this in a later wave once the runtime
|
|
383
|
+
* bridge (W7b) has loaded `.cant` team definitions into memory.
|
|
384
|
+
*
|
|
385
|
+
* @param request - The request text to classify.
|
|
386
|
+
* @param context - Optional additional context.
|
|
387
|
+
* @param projectRoot - Project root directory.
|
|
388
|
+
* @returns EngineResult containing ClassifyResult.
|
|
389
|
+
*/
|
|
390
|
+
async function orchestrateClassify(request, context, projectRoot) {
|
|
391
|
+
try {
|
|
392
|
+
const { getCleoCantWorkflowsDir } = await import('@cleocode/core/internal');
|
|
393
|
+
const { readFileSync, readdirSync, existsSync } = await import('node:fs');
|
|
394
|
+
const { join } = await import('node:path');
|
|
395
|
+
const workflowsDir = getCleoCantWorkflowsDir();
|
|
396
|
+
const combined = `${request} ${context ?? ''}`.toLowerCase();
|
|
397
|
+
// Walk .cant files and look for `consult-when:` entries.
|
|
398
|
+
const matches = [];
|
|
399
|
+
if (existsSync(workflowsDir)) {
|
|
400
|
+
const files = readdirSync(workflowsDir).filter((f) => f.endsWith('.cant'));
|
|
401
|
+
for (const file of files) {
|
|
402
|
+
try {
|
|
403
|
+
const src = readFileSync(join(workflowsDir, file), 'utf-8');
|
|
404
|
+
// Extract team name
|
|
405
|
+
const teamMatch = /^team\s+(\S+):/m.exec(src);
|
|
406
|
+
if (!teamMatch)
|
|
407
|
+
continue;
|
|
408
|
+
const teamName = teamMatch[1];
|
|
409
|
+
// Extract consult-when hint
|
|
410
|
+
const cwMatch = /consult-when:\s*["']?(.+?)["']?\s*$/m.exec(src);
|
|
411
|
+
const consultWhen = cwMatch ? cwMatch[1].trim() : '';
|
|
412
|
+
// Extract stages
|
|
413
|
+
const stagesMatch = /stages:\s*\[([^\]]+)\]/.exec(src);
|
|
414
|
+
const stages = stagesMatch ? stagesMatch[1].split(',').map((s) => s.trim()) : [];
|
|
415
|
+
// Simple substring scoring: count hint word matches in request
|
|
416
|
+
const hintWords = consultWhen.toLowerCase().split(/\s+/);
|
|
417
|
+
const score = hintWords.filter((w) => combined.includes(w)).length;
|
|
418
|
+
matches.push({ team: teamName, score, consultWhen, stages });
|
|
419
|
+
}
|
|
420
|
+
catch {
|
|
421
|
+
// skip unreadable files
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
// Also check project-local .cant files
|
|
426
|
+
const localCantDir = join(projectRoot, '.cleo', 'workflows');
|
|
427
|
+
if (existsSync(localCantDir)) {
|
|
428
|
+
const files = readdirSync(localCantDir).filter((f) => f.endsWith('.cant'));
|
|
429
|
+
for (const file of files) {
|
|
430
|
+
try {
|
|
431
|
+
const src = readFileSync(join(localCantDir, file), 'utf-8');
|
|
432
|
+
const teamMatch = /^team\s+(\S+):/m.exec(src);
|
|
433
|
+
if (!teamMatch)
|
|
434
|
+
continue;
|
|
435
|
+
const teamName = teamMatch[1];
|
|
436
|
+
const cwMatch = /consult-when:\s*["']?(.+?)["']?\s*$/m.exec(src);
|
|
437
|
+
const consultWhen = cwMatch ? cwMatch[1].trim() : '';
|
|
438
|
+
const stagesMatch = /stages:\s*\[([^\]]+)\]/.exec(src);
|
|
439
|
+
const stages = stagesMatch ? stagesMatch[1].split(',').map((s) => s.trim()) : [];
|
|
440
|
+
const hintWords = consultWhen.toLowerCase().split(/\s+/);
|
|
441
|
+
const score = hintWords.filter((w) => combined.includes(w)).length;
|
|
442
|
+
matches.push({ team: teamName, score, consultWhen, stages });
|
|
443
|
+
}
|
|
444
|
+
catch {
|
|
445
|
+
// skip
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
if (matches.length === 0) {
|
|
450
|
+
return {
|
|
451
|
+
success: true,
|
|
452
|
+
data: {
|
|
453
|
+
team: null,
|
|
454
|
+
lead: null,
|
|
455
|
+
protocol: null,
|
|
456
|
+
stage: null,
|
|
457
|
+
confidence: 0,
|
|
458
|
+
reasoning: 'No CANT team definitions found. Seed teams.cant in the global workflows dir ' +
|
|
459
|
+
'(W7b runtime enforcement) to enable team routing.',
|
|
460
|
+
},
|
|
461
|
+
};
|
|
462
|
+
}
|
|
463
|
+
// Pick the best match
|
|
464
|
+
matches.sort((a, b) => b.score - a.score);
|
|
465
|
+
const best = matches[0];
|
|
466
|
+
return {
|
|
467
|
+
success: true,
|
|
468
|
+
data: {
|
|
469
|
+
team: best.team,
|
|
470
|
+
lead: null, // lead resolution requires W7b runtime bridge
|
|
471
|
+
protocol: 'base-subagent', // default protocol stub
|
|
472
|
+
stage: best.stages[0] ?? null,
|
|
473
|
+
confidence: best.score > 0 ? 0.5 : 0.1,
|
|
474
|
+
reasoning: best.score > 0
|
|
475
|
+
? `Matched team '${best.team}' via consult-when hint: "${best.consultWhen}"`
|
|
476
|
+
: `No strong match found; defaulting to first registered team '${best.team}'`,
|
|
477
|
+
},
|
|
478
|
+
};
|
|
479
|
+
}
|
|
480
|
+
catch (error) {
|
|
481
|
+
getLogger('domain:orchestrate').error({ operation: 'classify', err: error }, error instanceof Error ? error.message : String(error));
|
|
482
|
+
return {
|
|
483
|
+
success: false,
|
|
484
|
+
error: {
|
|
485
|
+
code: 'E_CLASSIFY_FAILED',
|
|
486
|
+
message: error instanceof Error ? error.message : String(error),
|
|
487
|
+
},
|
|
488
|
+
};
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
/**
|
|
492
|
+
* In-process store for fanout manifest entries.
|
|
493
|
+
*
|
|
494
|
+
* Keyed by manifestEntryId (generated in orchestrateFanout).
|
|
495
|
+
* Populated when a fanout completes so that orchestrate.fanout.status
|
|
496
|
+
* can categorise results across orchestrator turns.
|
|
497
|
+
*/
|
|
498
|
+
/** Maximum number of fanout manifest entries retained in memory. */
|
|
499
|
+
const FANOUT_MANIFEST_MAX_SIZE = 64;
|
|
500
|
+
const fanoutManifestStore = new Map();
|
|
501
|
+
/**
|
|
502
|
+
* Evict oldest entries when the manifest store exceeds the size cap.
|
|
503
|
+
* Map iteration order is insertion order, so deleting the first key
|
|
504
|
+
* removes the oldest entry.
|
|
505
|
+
*/
|
|
506
|
+
function evictFanoutManifest() {
|
|
507
|
+
while (fanoutManifestStore.size > FANOUT_MANIFEST_MAX_SIZE) {
|
|
508
|
+
const oldest = fanoutManifestStore.keys().next().value;
|
|
509
|
+
if (oldest !== undefined)
|
|
510
|
+
fanoutManifestStore.delete(oldest);
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
/**
|
|
514
|
+
* T409 / T433 — Fan out N spawn requests via Promise.allSettled.
|
|
515
|
+
*
|
|
516
|
+
* Each item is dispatched concurrently through orchestrateSpawnExecute
|
|
517
|
+
* (T432/W7a adapter registry path). Results are persisted in the
|
|
518
|
+
* in-process fanoutManifestStore so that orchestrate.fanout.status can
|
|
519
|
+
* categorise them across orchestrator turns.
|
|
520
|
+
*
|
|
521
|
+
* @param items - Array of fanout items to dispatch.
|
|
522
|
+
* @param projectRoot - Project root directory.
|
|
523
|
+
* @returns EngineResult with aggregated results and a manifest entry ID.
|
|
524
|
+
*/
|
|
525
|
+
async function orchestrateFanout(items, projectRoot) {
|
|
526
|
+
const manifestEntryId = `fanout-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
527
|
+
try {
|
|
528
|
+
// Promise.allSettled wrapper — each item is processed concurrently via
|
|
529
|
+
// the adapter registry's orchestrateSpawnExecute path (T432/W7a wired).
|
|
530
|
+
const settled = await Promise.allSettled(items.map(async (item) => {
|
|
531
|
+
const spawnResult = await orchestrateSpawnExecute(item.taskId,
|
|
532
|
+
/* adapterId */ undefined,
|
|
533
|
+
/* protocolType */ undefined, projectRoot,
|
|
534
|
+
/* tier */ undefined);
|
|
535
|
+
if (!spawnResult.success) {
|
|
536
|
+
return {
|
|
537
|
+
taskId: item.taskId,
|
|
538
|
+
status: 'failed',
|
|
539
|
+
error: spawnResult.error?.message ?? `Spawn failed for task ${item.taskId}`,
|
|
540
|
+
};
|
|
541
|
+
}
|
|
542
|
+
const data = spawnResult.data;
|
|
543
|
+
return {
|
|
544
|
+
taskId: item.taskId,
|
|
545
|
+
status: 'spawned',
|
|
546
|
+
instanceId: typeof data?.instanceId === 'string' ? data.instanceId : undefined,
|
|
547
|
+
};
|
|
548
|
+
}));
|
|
549
|
+
const results = settled.map((outcome, i) => {
|
|
550
|
+
if (outcome.status === 'fulfilled') {
|
|
551
|
+
return outcome.value;
|
|
552
|
+
}
|
|
553
|
+
return {
|
|
554
|
+
taskId: items[i].taskId,
|
|
555
|
+
status: 'failed',
|
|
556
|
+
error: outcome.reason instanceof Error ? outcome.reason.message : String(outcome.reason),
|
|
557
|
+
};
|
|
558
|
+
});
|
|
559
|
+
// Persist results in the in-process manifest store so that
|
|
560
|
+
// orchestrate.fanout.status can categorise them across turns.
|
|
561
|
+
fanoutManifestStore.set(manifestEntryId, {
|
|
562
|
+
results,
|
|
563
|
+
completedAt: new Date().toISOString(),
|
|
564
|
+
});
|
|
565
|
+
evictFanoutManifest();
|
|
566
|
+
return {
|
|
567
|
+
success: true,
|
|
568
|
+
data: {
|
|
569
|
+
manifestEntryId,
|
|
570
|
+
results,
|
|
571
|
+
total: items.length,
|
|
572
|
+
spawned: results.filter((r) => r.status === 'spawned').length,
|
|
573
|
+
failed: results.filter((r) => r.status === 'failed').length,
|
|
574
|
+
},
|
|
575
|
+
};
|
|
576
|
+
}
|
|
577
|
+
catch (error) {
|
|
578
|
+
getLogger('domain:orchestrate').error({ operation: 'fanout', err: error }, error instanceof Error ? error.message : String(error));
|
|
579
|
+
return {
|
|
580
|
+
success: false,
|
|
581
|
+
error: {
|
|
582
|
+
code: 'E_FANOUT_FAILED',
|
|
583
|
+
message: error instanceof Error ? error.message : String(error),
|
|
584
|
+
},
|
|
585
|
+
};
|
|
586
|
+
}
|
|
587
|
+
}
|
|
588
|
+
/**
|
|
589
|
+
* T410 — Analyze a list of tasks for parallel safety.
|
|
590
|
+
*
|
|
591
|
+
* Walks `Task.depends` (stored as `blockers` in the accessor) to build a
|
|
592
|
+
* transitive dependency closure. Two tasks are parallel-safe if neither
|
|
593
|
+
* appears in the other's transitive closure.
|
|
594
|
+
*
|
|
595
|
+
* Returns `{parallelSafe: boolean, groups: string[][]}` where each group
|
|
596
|
+
* contains tasks with no intra-group dependency edges.
|
|
597
|
+
*
|
|
598
|
+
* @param taskIds - List of task IDs to analyze.
|
|
599
|
+
* @param projectRoot - Project root directory.
|
|
600
|
+
* @returns EngineResult with parallel safety analysis.
|
|
601
|
+
*/
|
|
602
|
+
async function orchestrateAnalyzeParallelSafety(taskIds, projectRoot) {
|
|
603
|
+
if (taskIds.length === 0) {
|
|
604
|
+
return {
|
|
605
|
+
success: true,
|
|
606
|
+
data: {
|
|
607
|
+
parallelSafe: true,
|
|
608
|
+
groups: [],
|
|
609
|
+
note: 'No tasks provided — trivially parallel-safe',
|
|
610
|
+
},
|
|
611
|
+
};
|
|
612
|
+
}
|
|
613
|
+
try {
|
|
614
|
+
const { getAccessor } = await import('@cleocode/core/internal');
|
|
615
|
+
const accessor = await getAccessor(projectRoot);
|
|
616
|
+
const result = await accessor.queryTasks({});
|
|
617
|
+
const allTasks = result?.tasks ?? [];
|
|
618
|
+
// Build a lookup map from task ID to its direct dependencies.
|
|
619
|
+
const depMap = new Map();
|
|
620
|
+
for (const t of allTasks) {
|
|
621
|
+
// Tasks store deps in `blockers` field which maps to Task.depends.
|
|
622
|
+
const deps = t.blockers ?? [];
|
|
623
|
+
depMap.set(t.id, deps);
|
|
624
|
+
}
|
|
625
|
+
/**
|
|
626
|
+
* Compute the transitive dependency closure for a given task ID.
|
|
627
|
+
* Returns the set of all task IDs that `id` transitively depends on.
|
|
628
|
+
*/
|
|
629
|
+
function transitiveClose(id, visited = new Set()) {
|
|
630
|
+
if (visited.has(id))
|
|
631
|
+
return visited;
|
|
632
|
+
visited.add(id);
|
|
633
|
+
const deps = depMap.get(id) ?? [];
|
|
634
|
+
for (const dep of deps) {
|
|
635
|
+
transitiveClose(dep, visited);
|
|
636
|
+
}
|
|
637
|
+
return visited;
|
|
638
|
+
}
|
|
639
|
+
// Build the closure for each task in the input set.
|
|
640
|
+
const closures = new Map();
|
|
641
|
+
for (const id of taskIds) {
|
|
642
|
+
closures.set(id, transitiveClose(id));
|
|
643
|
+
}
|
|
644
|
+
/**
|
|
645
|
+
* Two tasks are parallel-safe if:
|
|
646
|
+
* - neither appears in the other's transitive closure.
|
|
647
|
+
*/
|
|
648
|
+
function parallelSafe(a, b) {
|
|
649
|
+
const closureA = closures.get(a) ?? new Set();
|
|
650
|
+
const closureB = closures.get(b) ?? new Set();
|
|
651
|
+
return !closureA.has(b) && !closureB.has(a);
|
|
652
|
+
}
|
|
653
|
+
// Greedy group assignment — assigns tasks to the first group where they
|
|
654
|
+
// are safe relative to all existing members.
|
|
655
|
+
const groups = [];
|
|
656
|
+
for (const id of taskIds) {
|
|
657
|
+
let placed = false;
|
|
658
|
+
for (const group of groups) {
|
|
659
|
+
if (group.every((member) => parallelSafe(id, member))) {
|
|
660
|
+
group.push(id);
|
|
661
|
+
placed = true;
|
|
662
|
+
break;
|
|
663
|
+
}
|
|
664
|
+
}
|
|
665
|
+
if (!placed) {
|
|
666
|
+
groups.push([id]);
|
|
667
|
+
}
|
|
668
|
+
}
|
|
669
|
+
const isFullyParallelSafe = groups.length <= 1;
|
|
670
|
+
return {
|
|
671
|
+
success: true,
|
|
672
|
+
data: {
|
|
673
|
+
parallelSafe: isFullyParallelSafe,
|
|
674
|
+
groups,
|
|
675
|
+
taskCount: taskIds.length,
|
|
676
|
+
groupCount: groups.length,
|
|
677
|
+
},
|
|
678
|
+
};
|
|
679
|
+
}
|
|
680
|
+
catch (error) {
|
|
681
|
+
getLogger('domain:orchestrate').error({ operation: 'analyze/parallel-safety', err: error }, error instanceof Error ? error.message : String(error));
|
|
682
|
+
return {
|
|
683
|
+
success: false,
|
|
684
|
+
error: {
|
|
685
|
+
code: 'E_ANALYZE_FAILED',
|
|
686
|
+
message: error instanceof Error ? error.message : String(error),
|
|
687
|
+
},
|
|
688
|
+
};
|
|
689
|
+
}
|
|
690
|
+
}
|
|
691
|
+
//# sourceMappingURL=orchestrate.js.map
|