@cleocode/cleo 2026.2.5 → 2026.2.6

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.
Files changed (1631) hide show
  1. package/README.md +111 -73
  2. package/dist/cli/index.js +25536 -23636
  3. package/dist/cli/index.js.map +4 -4
  4. package/dist/mcp/index.js +17101 -13563
  5. package/dist/mcp/index.js.map +4 -4
  6. package/drizzle/20260224040019_baseline/migration.sql +156 -0
  7. package/drizzle/20260224040019_baseline/snapshot.json +1480 -0
  8. package/drizzle/20260224040238_add-audit-log/migration.sql +14 -0
  9. package/drizzle/20260224040238_add-audit-log/snapshot.json +1615 -0
  10. package/drizzle/20260224144602_closed_grim_reaper/migration.sql +185 -0
  11. package/drizzle/20260224144602_closed_grim_reaper/snapshot.json +1702 -0
  12. package/drizzle/20260225024442_sync-lifecycle-enums-and-arch-decisions/migration.sql +61 -0
  13. package/drizzle/20260225024442_sync-lifecycle-enums-and-arch-decisions/snapshot.json +1855 -0
  14. package/drizzle/20260227014821_adr-system-and-status-registry/migration.sql +93 -0
  15. package/drizzle/20260227014821_adr-system-and-status-registry/snapshot.json +2160 -0
  16. package/drizzle/20260227021231_add-cancelled-pipeline-status/migration.sql +28 -0
  17. package/drizzle/20260227021231_add-cancelled-pipeline-status/snapshot.json +2160 -0
  18. package/drizzle/20260227022417_adr-cognitive-search-fields/migration.sql +3 -0
  19. package/drizzle/20260227022417_adr-cognitive-search-fields/snapshot.json +2190 -0
  20. package/drizzle/20260227172236_freezing_grey_gargoyle/migration.sql +8 -0
  21. package/drizzle/20260227172236_freezing_grey_gargoyle/snapshot.json +2278 -0
  22. package/drizzle/20260227183444_fix-orphaned-parent-ids/migration.sql +5 -0
  23. package/drizzle/20260227183444_fix-orphaned-parent-ids/snapshot.json +2278 -0
  24. package/drizzle/20260227183521_parent-id-on-delete-set-null/migration.sql +55 -0
  25. package/drizzle/20260227183521_parent-id-on-delete-set-null/snapshot.json +2278 -0
  26. package/drizzle/20260227200430_numerous_mysterio/migration.sql +3 -0
  27. package/drizzle/20260227200430_numerous_mysterio/snapshot.json +2323 -0
  28. package/package.json +20 -14
  29. package/packages/ct-skills/dispatch-config.json +404 -0
  30. package/packages/ct-skills/index.d.ts +178 -0
  31. package/packages/ct-skills/index.js +405 -0
  32. package/packages/ct-skills/package.json +16 -0
  33. package/packages/ct-skills/profiles/core.json +7 -0
  34. package/packages/ct-skills/profiles/full.json +11 -0
  35. package/packages/ct-skills/profiles/minimal.json +7 -0
  36. package/packages/ct-skills/profiles/recommended.json +7 -0
  37. package/packages/ct-skills/protocols/agent-protocol.md +260 -0
  38. package/packages/ct-skills/protocols/artifact-publish.md +587 -0
  39. package/packages/ct-skills/protocols/consensus.md +309 -0
  40. package/packages/ct-skills/protocols/contribution.md +375 -0
  41. package/packages/ct-skills/protocols/decomposition.md +352 -0
  42. package/packages/ct-skills/protocols/implementation.md +344 -0
  43. package/packages/ct-skills/protocols/provenance.md +600 -0
  44. package/packages/ct-skills/protocols/release.md +635 -0
  45. package/packages/ct-skills/protocols/research.md +248 -0
  46. package/packages/ct-skills/protocols/specification.md +287 -0
  47. package/packages/ct-skills/protocols/testing.md +346 -0
  48. package/packages/ct-skills/protocols/validation.md +229 -0
  49. package/packages/ct-skills/skills/_shared/cleo-style-guide.md +84 -0
  50. package/packages/ct-skills/skills/_shared/manifest-operations.md +810 -0
  51. package/packages/ct-skills/skills/_shared/placeholders.json +433 -0
  52. package/packages/ct-skills/skills/_shared/skill-chaining-patterns.md +240 -0
  53. package/packages/ct-skills/skills/_shared/subagent-protocol-base.md +221 -0
  54. package/packages/ct-skills/skills/_shared/task-system-integration.md +232 -0
  55. package/packages/ct-skills/skills/_shared/testing-framework-config.md +110 -0
  56. package/packages/ct-skills/skills/ct-cleo/SKILL.md +169 -0
  57. package/packages/ct-skills/skills/ct-cleo/references/anti-patterns.md +19 -0
  58. package/packages/ct-skills/skills/ct-cleo/references/orchestrator-constraints.md +55 -0
  59. package/packages/ct-skills/skills/ct-cleo/references/rcsd-lifecycle.md +127 -0
  60. package/packages/ct-skills/skills/ct-cleo/references/session-protocol.md +162 -0
  61. package/packages/ct-skills/skills/ct-contribution/SKILL.md +521 -0
  62. package/packages/ct-skills/skills/ct-contribution/templates/contribution-init.json +21 -0
  63. package/packages/ct-skills/skills/ct-dev-workflow/SKILL.md +423 -0
  64. package/packages/ct-skills/skills/ct-docs-lookup/SKILL.md +66 -0
  65. package/packages/ct-skills/skills/ct-docs-review/SKILL.md +175 -0
  66. package/packages/ct-skills/skills/ct-docs-write/SKILL.md +108 -0
  67. package/packages/ct-skills/skills/ct-documentor/SKILL.md +231 -0
  68. package/packages/ct-skills/skills/ct-epic-architect/SKILL.md +305 -0
  69. package/packages/ct-skills/skills/ct-epic-architect/references/bug-epic-example.md +172 -0
  70. package/packages/ct-skills/skills/ct-epic-architect/references/commands.md +201 -0
  71. package/packages/ct-skills/skills/ct-epic-architect/references/feature-epic-example.md +210 -0
  72. package/packages/ct-skills/skills/ct-epic-architect/references/migration-epic-example.md +244 -0
  73. package/packages/ct-skills/skills/ct-epic-architect/references/output-format.md +92 -0
  74. package/packages/ct-skills/skills/ct-epic-architect/references/patterns.md +284 -0
  75. package/packages/ct-skills/skills/ct-epic-architect/references/refactor-epic-example.md +412 -0
  76. package/packages/ct-skills/skills/ct-epic-architect/references/research-epic-example.md +226 -0
  77. package/packages/ct-skills/skills/ct-epic-architect/references/shell-escaping.md +86 -0
  78. package/packages/ct-skills/skills/ct-epic-architect/references/skill-aware-execution.md +195 -0
  79. package/packages/ct-skills/skills/ct-gitbook/SKILL.md +516 -0
  80. package/packages/ct-skills/skills/ct-gitbook/assets/SUMMARY.md +28 -0
  81. package/packages/ct-skills/skills/ct-gitbook/assets/gitbook.yaml +14 -0
  82. package/packages/ct-skills/skills/ct-gitbook/references/api-sdk.md +318 -0
  83. package/packages/ct-skills/skills/ct-gitbook/references/auth-sso.md +208 -0
  84. package/packages/ct-skills/skills/ct-gitbook/references/change-requests.md +169 -0
  85. package/packages/ct-skills/skills/ct-gitbook/references/content-blocks.md +230 -0
  86. package/packages/ct-skills/skills/ct-gitbook/references/docs-sites.md +202 -0
  87. package/packages/ct-skills/skills/ct-gitbook/references/git-sync.md +175 -0
  88. package/packages/ct-skills/skills/ct-gitbook/references/llm-ready.md +178 -0
  89. package/packages/ct-skills/skills/ct-gitbook/references/migration.md +263 -0
  90. package/packages/ct-skills/skills/ct-library-implementer-bash/SKILL.md +316 -0
  91. package/packages/ct-skills/skills/ct-orchestrator/INSTALL.md +61 -0
  92. package/packages/ct-skills/skills/ct-orchestrator/README.md +69 -0
  93. package/packages/ct-skills/skills/ct-orchestrator/SKILL.md +330 -0
  94. package/packages/ct-skills/skills/ct-orchestrator/references/SUBAGENT-PROTOCOL-BLOCK.md +66 -0
  95. package/packages/ct-skills/skills/ct-orchestrator/references/autonomous-operation.md +167 -0
  96. package/packages/ct-skills/skills/ct-orchestrator/references/lifecycle-gates.md +98 -0
  97. package/packages/ct-skills/skills/ct-orchestrator/references/orchestrator-compliance.md +271 -0
  98. package/packages/ct-skills/skills/ct-orchestrator/references/orchestrator-handoffs.md +85 -0
  99. package/packages/ct-skills/skills/ct-orchestrator/references/orchestrator-patterns.md +164 -0
  100. package/packages/ct-skills/skills/ct-orchestrator/references/orchestrator-recovery.md +113 -0
  101. package/packages/ct-skills/skills/ct-orchestrator/references/orchestrator-spawning.md +271 -0
  102. package/packages/ct-skills/skills/ct-orchestrator/references/orchestrator-tokens.md +180 -0
  103. package/packages/ct-skills/skills/ct-research-agent/SKILL.md +226 -0
  104. package/packages/ct-skills/skills/ct-skill-creator/SKILL.md +368 -0
  105. package/packages/ct-skills/skills/ct-skill-creator/references/output-patterns.md +86 -0
  106. package/packages/ct-skills/skills/ct-skill-creator/references/workflows.md +28 -0
  107. package/packages/ct-skills/skills/ct-skill-creator/scripts/init_skill.py +300 -0
  108. package/packages/ct-skills/skills/ct-skill-creator/scripts/package_skill.py +110 -0
  109. package/packages/ct-skills/skills/ct-skill-creator/scripts/quick_validate.py +97 -0
  110. package/packages/ct-skills/skills/ct-skill-lookup/SKILL.md +179 -0
  111. package/packages/ct-skills/skills/ct-spec-writer/SKILL.md +189 -0
  112. package/packages/ct-skills/skills/ct-task-executor/SKILL.md +296 -0
  113. package/packages/ct-skills/skills/ct-test-writer-bats/SKILL.md +347 -0
  114. package/packages/ct-skills/skills/ct-validator/SKILL.md +216 -0
  115. package/packages/ct-skills/skills/manifest.json +1199 -0
  116. package/packages/ct-skills/skills/railway-platform/SKILL.md +506 -0
  117. package/packages/ct-skills/skills/railway-platform/_shared/scripts/railway-api.sh +180 -0
  118. package/packages/ct-skills/skills/railway-platform/_shared/scripts/railway-common.sh +262 -0
  119. package/packages/ct-skills/skills/railway-platform/references/01-getting-started.md +149 -0
  120. package/packages/ct-skills/skills/railway-platform/references/02-projects.md +116 -0
  121. package/packages/ct-skills/skills/railway-platform/references/03-services.md +147 -0
  122. package/packages/ct-skills/skills/railway-platform/references/04-deployments.md +210 -0
  123. package/packages/ct-skills/skills/railway-platform/references/05-databases.md +142 -0
  124. package/packages/ct-skills/skills/railway-platform/references/06-environments.md +261 -0
  125. package/packages/ct-skills/skills/railway-platform/references/07-domains.md +139 -0
  126. package/packages/ct-skills/skills/railway-platform/references/08-volumes.md +533 -0
  127. package/packages/ct-skills/skills/railway-platform/references/09-networking.md +592 -0
  128. package/packages/ct-skills/skills/railway-platform/references/10-cron.md +488 -0
  129. package/packages/ct-skills/skills/railway-platform/references/11-functions.md +170 -0
  130. package/packages/ct-skills/skills/railway-platform/references/12-monorepo.md +294 -0
  131. package/packages/ct-skills/skills/railway-platform/references/13-troubleshooting.md +335 -0
  132. package/packages/ct-skills/skills/railway-platform/references/14-railway-metal.md +197 -0
  133. package/packages/ct-skills/skills.json +5 -0
  134. package/schemas/adr-frontmatter.schema.json +72 -0
  135. package/schemas/archive/agent-configs.schema.json +120 -0
  136. package/schemas/archive/agent-registry.schema.json +132 -0
  137. package/schemas/archive/archive.schema.json +450 -0
  138. package/schemas/archive/claudedocs-frontmatter.schema.json +162 -0
  139. package/schemas/archive/commands-index.schema.json +158 -0
  140. package/schemas/archive/contribution.schema.json +722 -0
  141. package/schemas/archive/critical-path.schema.json +246 -0
  142. package/schemas/archive/deps-cache.schema.json +97 -0
  143. package/schemas/archive/doctor-output.schema.json +283 -0
  144. package/schemas/archive/error.schema.json +161 -0
  145. package/schemas/archive/export-package.schema.json +375 -0
  146. package/schemas/archive/global-config.schema.json +219 -0
  147. package/schemas/archive/log.schema.json +250 -0
  148. package/schemas/archive/metrics.schema.json +328 -0
  149. package/schemas/archive/migrations.schema.json +150 -0
  150. package/schemas/archive/nexus-registry.schema.json +90 -0
  151. package/schemas/archive/output.schema.json +164 -0
  152. package/schemas/archive/rcsd-consensus-report.schema.json +491 -0
  153. package/schemas/archive/rcsd-hitl-resolution.schema.json +216 -0
  154. package/schemas/archive/rcsd-index.schema.json +384 -0
  155. package/schemas/archive/rcsd-manifest.schema.json +264 -0
  156. package/schemas/archive/rcsd-research-output.schema.json +564 -0
  157. package/schemas/archive/rcsd-spec-frontmatter.schema.json +225 -0
  158. package/schemas/archive/releases.schema.json +267 -0
  159. package/schemas/archive/skills-manifest.schema.json +91 -0
  160. package/schemas/archive/skillsmp.schema.json +208 -0
  161. package/schemas/archive/spec-index.schema.json +196 -0
  162. package/schemas/archive/todo.schema.json +995 -0
  163. package/schemas/brain-decision.schema.json +69 -0
  164. package/schemas/brain-learning.schema.json +57 -0
  165. package/schemas/brain-pattern.schema.json +72 -0
  166. package/schemas/config.schema.json +33 -1
  167. package/schemas/grade.schema.json +49 -0
  168. package/schemas/project-info.schema.json +17 -7
  169. package/schemas/protocol-frontmatter.schema.json +72 -0
  170. package/schemas/rcasd-consensus-report.schema.json +10 -0
  171. package/schemas/rcasd-evidence.schema.json +42 -0
  172. package/schemas/rcasd-gate-result.schema.json +46 -0
  173. package/schemas/rcasd-hitl-resolution.schema.json +10 -0
  174. package/schemas/rcasd-index.schema.json +10 -0
  175. package/schemas/rcasd-manifest.schema.json +10 -0
  176. package/schemas/rcasd-research-output.schema.json +10 -0
  177. package/schemas/rcasd-spec-frontmatter.schema.json +10 -0
  178. package/schemas/rcasd-stage-transition.schema.json +38 -0
  179. package/schemas/rcsd-consensus-report.schema.json +4 -1
  180. package/schemas/rcsd-hitl-resolution.schema.json +4 -1
  181. package/schemas/rcsd-index.schema.json +4 -1
  182. package/schemas/rcsd-manifest.schema.json +4 -1
  183. package/schemas/rcsd-research-output.schema.json +4 -1
  184. package/skills/_shared/manifest-operations.md +1 -1
  185. package/skills/_shared/placeholders.json +3 -3
  186. package/skills/_shared/subagent-protocol-base.md +3 -3
  187. package/skills/_shared/task-system-integration.md +10 -10
  188. package/templates/AGENT-INJECTION.md +7 -7
  189. package/templates/CLEO-INJECTION.md +101 -393
  190. package/templates/README.md +2 -2
  191. package/templates/agents/BASE-SUBAGENT-PROTOCOL.md +4 -4
  192. package/templates/agents/README.md +4 -4
  193. package/templates/agents/cleo-subagent.md +4 -4
  194. package/templates/cleo-gitignore +4 -1
  195. package/templates/config.template.json +1 -1
  196. package/templates/git-hooks/commit-msg +187 -0
  197. package/templates/git-hooks/pre-commit +40 -0
  198. package/templates/todo.template.json +0 -1
  199. package/dist/cli/commands/add.d.ts +0 -12
  200. package/dist/cli/commands/add.d.ts.map +0 -1
  201. package/dist/cli/commands/add.js +0 -74
  202. package/dist/cli/commands/add.js.map +0 -1
  203. package/dist/cli/commands/analyze.d.ts +0 -12
  204. package/dist/cli/commands/analyze.d.ts.map +0 -1
  205. package/dist/cli/commands/analyze.js +0 -37
  206. package/dist/cli/commands/analyze.js.map +0 -1
  207. package/dist/cli/commands/archive-stats.d.ts +0 -26
  208. package/dist/cli/commands/archive-stats.d.ts.map +0 -1
  209. package/dist/cli/commands/archive-stats.js +0 -291
  210. package/dist/cli/commands/archive-stats.js.map +0 -1
  211. package/dist/cli/commands/archive.d.ts +0 -12
  212. package/dist/cli/commands/archive.d.ts.map +0 -1
  213. package/dist/cli/commands/archive.js +0 -43
  214. package/dist/cli/commands/archive.js.map +0 -1
  215. package/dist/cli/commands/backup.d.ts +0 -7
  216. package/dist/cli/commands/backup.d.ts.map +0 -1
  217. package/dist/cli/commands/backup.js +0 -122
  218. package/dist/cli/commands/backup.js.map +0 -1
  219. package/dist/cli/commands/blockers.d.ts +0 -7
  220. package/dist/cli/commands/blockers.d.ts.map +0 -1
  221. package/dist/cli/commands/blockers.js +0 -107
  222. package/dist/cli/commands/blockers.js.map +0 -1
  223. package/dist/cli/commands/checkpoint.d.ts +0 -13
  224. package/dist/cli/commands/checkpoint.d.ts.map +0 -1
  225. package/dist/cli/commands/checkpoint.js +0 -185
  226. package/dist/cli/commands/checkpoint.js.map +0 -1
  227. package/dist/cli/commands/claude-migrate.d.ts +0 -13
  228. package/dist/cli/commands/claude-migrate.d.ts.map +0 -1
  229. package/dist/cli/commands/claude-migrate.js +0 -355
  230. package/dist/cli/commands/claude-migrate.js.map +0 -1
  231. package/dist/cli/commands/commands.d.ts +0 -13
  232. package/dist/cli/commands/commands.d.ts.map +0 -1
  233. package/dist/cli/commands/commands.js +0 -114
  234. package/dist/cli/commands/commands.js.map +0 -1
  235. package/dist/cli/commands/complete.d.ts +0 -12
  236. package/dist/cli/commands/complete.d.ts.map +0 -1
  237. package/dist/cli/commands/complete.js +0 -45
  238. package/dist/cli/commands/complete.js.map +0 -1
  239. package/dist/cli/commands/compliance.d.ts +0 -12
  240. package/dist/cli/commands/compliance.d.ts.map +0 -1
  241. package/dist/cli/commands/compliance.js +0 -152
  242. package/dist/cli/commands/compliance.js.map +0 -1
  243. package/dist/cli/commands/config.d.ts +0 -7
  244. package/dist/cli/commands/config.d.ts.map +0 -1
  245. package/dist/cli/commands/config.js +0 -107
  246. package/dist/cli/commands/config.js.map +0 -1
  247. package/dist/cli/commands/consensus.d.ts +0 -12
  248. package/dist/cli/commands/consensus.d.ts.map +0 -1
  249. package/dist/cli/commands/consensus.js +0 -61
  250. package/dist/cli/commands/consensus.js.map +0 -1
  251. package/dist/cli/commands/context.d.ts +0 -12
  252. package/dist/cli/commands/context.d.ts.map +0 -1
  253. package/dist/cli/commands/context.js +0 -76
  254. package/dist/cli/commands/context.js.map +0 -1
  255. package/dist/cli/commands/contribution.d.ts +0 -12
  256. package/dist/cli/commands/contribution.d.ts.map +0 -1
  257. package/dist/cli/commands/contribution.js +0 -57
  258. package/dist/cli/commands/contribution.js.map +0 -1
  259. package/dist/cli/commands/current.d.ts +0 -13
  260. package/dist/cli/commands/current.d.ts.map +0 -1
  261. package/dist/cli/commands/current.js +0 -35
  262. package/dist/cli/commands/current.js.map +0 -1
  263. package/dist/cli/commands/dash.d.ts +0 -12
  264. package/dist/cli/commands/dash.d.ts.map +0 -1
  265. package/dist/cli/commands/dash.js +0 -44
  266. package/dist/cli/commands/dash.js.map +0 -1
  267. package/dist/cli/commands/decomposition.d.ts +0 -12
  268. package/dist/cli/commands/decomposition.d.ts.map +0 -1
  269. package/dist/cli/commands/decomposition.js +0 -61
  270. package/dist/cli/commands/decomposition.js.map +0 -1
  271. package/dist/cli/commands/delete.d.ts +0 -12
  272. package/dist/cli/commands/delete.d.ts.map +0 -1
  273. package/dist/cli/commands/delete.js +0 -45
  274. package/dist/cli/commands/delete.js.map +0 -1
  275. package/dist/cli/commands/deps.d.ts +0 -17
  276. package/dist/cli/commands/deps.d.ts.map +0 -1
  277. package/dist/cli/commands/deps.js +0 -139
  278. package/dist/cli/commands/deps.js.map +0 -1
  279. package/dist/cli/commands/detect-drift.d.ts +0 -8
  280. package/dist/cli/commands/detect-drift.d.ts.map +0 -1
  281. package/dist/cli/commands/detect-drift.js +0 -202
  282. package/dist/cli/commands/detect-drift.js.map +0 -1
  283. package/dist/cli/commands/docs.d.ts +0 -13
  284. package/dist/cli/commands/docs.d.ts.map +0 -1
  285. package/dist/cli/commands/docs.js +0 -167
  286. package/dist/cli/commands/docs.js.map +0 -1
  287. package/dist/cli/commands/doctor.d.ts +0 -7
  288. package/dist/cli/commands/doctor.d.ts.map +0 -1
  289. package/dist/cli/commands/doctor.js +0 -215
  290. package/dist/cli/commands/doctor.js.map +0 -1
  291. package/dist/cli/commands/env.d.ts +0 -12
  292. package/dist/cli/commands/env.d.ts.map +0 -1
  293. package/dist/cli/commands/env.js +0 -167
  294. package/dist/cli/commands/env.js.map +0 -1
  295. package/dist/cli/commands/exists.d.ts +0 -7
  296. package/dist/cli/commands/exists.d.ts.map +0 -1
  297. package/dist/cli/commands/exists.js +0 -78
  298. package/dist/cli/commands/exists.js.map +0 -1
  299. package/dist/cli/commands/export-tasks.d.ts +0 -13
  300. package/dist/cli/commands/export-tasks.d.ts.map +0 -1
  301. package/dist/cli/commands/export-tasks.js +0 -214
  302. package/dist/cli/commands/export-tasks.js.map +0 -1
  303. package/dist/cli/commands/export.d.ts +0 -7
  304. package/dist/cli/commands/export.d.ts.map +0 -1
  305. package/dist/cli/commands/export.js +0 -144
  306. package/dist/cli/commands/export.js.map +0 -1
  307. package/dist/cli/commands/extract.d.ts +0 -13
  308. package/dist/cli/commands/extract.d.ts.map +0 -1
  309. package/dist/cli/commands/extract.js +0 -208
  310. package/dist/cli/commands/extract.js.map +0 -1
  311. package/dist/cli/commands/find.d.ts +0 -14
  312. package/dist/cli/commands/find.d.ts.map +0 -1
  313. package/dist/cli/commands/find.js +0 -62
  314. package/dist/cli/commands/find.js.map +0 -1
  315. package/dist/cli/commands/focus.d.ts +0 -19
  316. package/dist/cli/commands/focus.d.ts.map +0 -1
  317. package/dist/cli/commands/focus.js +0 -95
  318. package/dist/cli/commands/focus.js.map +0 -1
  319. package/dist/cli/commands/generate-changelog.d.ts +0 -14
  320. package/dist/cli/commands/generate-changelog.d.ts.map +0 -1
  321. package/dist/cli/commands/generate-changelog.js +0 -252
  322. package/dist/cli/commands/generate-changelog.js.map +0 -1
  323. package/dist/cli/commands/history.d.ts +0 -12
  324. package/dist/cli/commands/history.d.ts.map +0 -1
  325. package/dist/cli/commands/history.js +0 -40
  326. package/dist/cli/commands/history.js.map +0 -1
  327. package/dist/cli/commands/implementation.d.ts +0 -12
  328. package/dist/cli/commands/implementation.d.ts.map +0 -1
  329. package/dist/cli/commands/implementation.js +0 -57
  330. package/dist/cli/commands/implementation.js.map +0 -1
  331. package/dist/cli/commands/import-tasks.d.ts +0 -13
  332. package/dist/cli/commands/import-tasks.d.ts.map +0 -1
  333. package/dist/cli/commands/import-tasks.js +0 -219
  334. package/dist/cli/commands/import-tasks.js.map +0 -1
  335. package/dist/cli/commands/import.d.ts +0 -7
  336. package/dist/cli/commands/import.d.ts.map +0 -1
  337. package/dist/cli/commands/import.js +0 -162
  338. package/dist/cli/commands/import.js.map +0 -1
  339. package/dist/cli/commands/init.d.ts +0 -34
  340. package/dist/cli/commands/init.d.ts.map +0 -1
  341. package/dist/cli/commands/init.js +0 -88
  342. package/dist/cli/commands/init.js.map +0 -1
  343. package/dist/cli/commands/inject.d.ts +0 -12
  344. package/dist/cli/commands/inject.d.ts.map +0 -1
  345. package/dist/cli/commands/inject.js +0 -45
  346. package/dist/cli/commands/inject.js.map +0 -1
  347. package/dist/cli/commands/issue.d.ts +0 -14
  348. package/dist/cli/commands/issue.d.ts.map +0 -1
  349. package/dist/cli/commands/issue.js +0 -256
  350. package/dist/cli/commands/issue.js.map +0 -1
  351. package/dist/cli/commands/labels.d.ts +0 -12
  352. package/dist/cli/commands/labels.d.ts.map +0 -1
  353. package/dist/cli/commands/labels.js +0 -89
  354. package/dist/cli/commands/labels.js.map +0 -1
  355. package/dist/cli/commands/lifecycle.d.ts +0 -12
  356. package/dist/cli/commands/lifecycle.d.ts.map +0 -1
  357. package/dist/cli/commands/lifecycle.js +0 -108
  358. package/dist/cli/commands/lifecycle.js.map +0 -1
  359. package/dist/cli/commands/list.d.ts +0 -14
  360. package/dist/cli/commands/list.d.ts.map +0 -1
  361. package/dist/cli/commands/list.js +0 -65
  362. package/dist/cli/commands/list.js.map +0 -1
  363. package/dist/cli/commands/log.d.ts +0 -12
  364. package/dist/cli/commands/log.d.ts.map +0 -1
  365. package/dist/cli/commands/log.js +0 -43
  366. package/dist/cli/commands/log.js.map +0 -1
  367. package/dist/cli/commands/mcp-install.d.ts +0 -17
  368. package/dist/cli/commands/mcp-install.d.ts.map +0 -1
  369. package/dist/cli/commands/mcp-install.js +0 -125
  370. package/dist/cli/commands/mcp-install.js.map +0 -1
  371. package/dist/cli/commands/migrate-storage.d.ts +0 -19
  372. package/dist/cli/commands/migrate-storage.d.ts.map +0 -1
  373. package/dist/cli/commands/migrate-storage.js +0 -494
  374. package/dist/cli/commands/migrate-storage.js.map +0 -1
  375. package/dist/cli/commands/migrate.d.ts +0 -12
  376. package/dist/cli/commands/migrate.d.ts.map +0 -1
  377. package/dist/cli/commands/migrate.js +0 -62
  378. package/dist/cli/commands/migrate.js.map +0 -1
  379. package/dist/cli/commands/next.d.ts +0 -7
  380. package/dist/cli/commands/next.d.ts.map +0 -1
  381. package/dist/cli/commands/next.js +0 -124
  382. package/dist/cli/commands/next.js.map +0 -1
  383. package/dist/cli/commands/nexus.d.ts +0 -19
  384. package/dist/cli/commands/nexus.d.ts.map +0 -1
  385. package/dist/cli/commands/nexus.js +0 -440
  386. package/dist/cli/commands/nexus.js.map +0 -1
  387. package/dist/cli/commands/orchestrate.d.ts +0 -12
  388. package/dist/cli/commands/orchestrate.d.ts.map +0 -1
  389. package/dist/cli/commands/orchestrate.js +0 -141
  390. package/dist/cli/commands/orchestrate.js.map +0 -1
  391. package/dist/cli/commands/otel.d.ts +0 -12
  392. package/dist/cli/commands/otel.d.ts.map +0 -1
  393. package/dist/cli/commands/otel.js +0 -130
  394. package/dist/cli/commands/otel.js.map +0 -1
  395. package/dist/cli/commands/phase.d.ts +0 -12
  396. package/dist/cli/commands/phase.d.ts.map +0 -1
  397. package/dist/cli/commands/phase.js +0 -161
  398. package/dist/cli/commands/phase.js.map +0 -1
  399. package/dist/cli/commands/phases.d.ts +0 -12
  400. package/dist/cli/commands/phases.d.ts.map +0 -1
  401. package/dist/cli/commands/phases.js +0 -67
  402. package/dist/cli/commands/phases.js.map +0 -1
  403. package/dist/cli/commands/promote.d.ts +0 -7
  404. package/dist/cli/commands/promote.d.ts.map +0 -1
  405. package/dist/cli/commands/promote.js +0 -64
  406. package/dist/cli/commands/promote.js.map +0 -1
  407. package/dist/cli/commands/relates.d.ts +0 -12
  408. package/dist/cli/commands/relates.d.ts.map +0 -1
  409. package/dist/cli/commands/relates.js +0 -91
  410. package/dist/cli/commands/relates.js.map +0 -1
  411. package/dist/cli/commands/release.d.ts +0 -12
  412. package/dist/cli/commands/release.d.ts.map +0 -1
  413. package/dist/cli/commands/release.js +0 -142
  414. package/dist/cli/commands/release.js.map +0 -1
  415. package/dist/cli/commands/reopen.d.ts +0 -7
  416. package/dist/cli/commands/reopen.d.ts.map +0 -1
  417. package/dist/cli/commands/reopen.js +0 -83
  418. package/dist/cli/commands/reopen.js.map +0 -1
  419. package/dist/cli/commands/reorder.d.ts +0 -7
  420. package/dist/cli/commands/reorder.d.ts.map +0 -1
  421. package/dist/cli/commands/reorder.js +0 -106
  422. package/dist/cli/commands/reorder.js.map +0 -1
  423. package/dist/cli/commands/reparent.d.ts +0 -10
  424. package/dist/cli/commands/reparent.d.ts.map +0 -1
  425. package/dist/cli/commands/reparent.js +0 -53
  426. package/dist/cli/commands/reparent.js.map +0 -1
  427. package/dist/cli/commands/research.d.ts +0 -12
  428. package/dist/cli/commands/research.d.ts.map +0 -1
  429. package/dist/cli/commands/research.js +0 -220
  430. package/dist/cli/commands/research.js.map +0 -1
  431. package/dist/cli/commands/restore.d.ts +0 -7
  432. package/dist/cli/commands/restore.d.ts.map +0 -1
  433. package/dist/cli/commands/restore.js +0 -202
  434. package/dist/cli/commands/restore.js.map +0 -1
  435. package/dist/cli/commands/roadmap.d.ts +0 -12
  436. package/dist/cli/commands/roadmap.d.ts.map +0 -1
  437. package/dist/cli/commands/roadmap.js +0 -37
  438. package/dist/cli/commands/roadmap.js.map +0 -1
  439. package/dist/cli/commands/safestop.d.ts +0 -13
  440. package/dist/cli/commands/safestop.d.ts.map +0 -1
  441. package/dist/cli/commands/safestop.js +0 -217
  442. package/dist/cli/commands/safestop.js.map +0 -1
  443. package/dist/cli/commands/self-update.d.ts +0 -15
  444. package/dist/cli/commands/self-update.d.ts.map +0 -1
  445. package/dist/cli/commands/self-update.js +0 -195
  446. package/dist/cli/commands/self-update.js.map +0 -1
  447. package/dist/cli/commands/sequence.d.ts +0 -12
  448. package/dist/cli/commands/sequence.d.ts.map +0 -1
  449. package/dist/cli/commands/sequence.js +0 -67
  450. package/dist/cli/commands/sequence.js.map +0 -1
  451. package/dist/cli/commands/session.d.ts +0 -12
  452. package/dist/cli/commands/session.d.ts.map +0 -1
  453. package/dist/cli/commands/session.js +0 -150
  454. package/dist/cli/commands/session.js.map +0 -1
  455. package/dist/cli/commands/show.d.ts +0 -13
  456. package/dist/cli/commands/show.d.ts.map +0 -1
  457. package/dist/cli/commands/show.js +0 -35
  458. package/dist/cli/commands/show.js.map +0 -1
  459. package/dist/cli/commands/skills.d.ts +0 -13
  460. package/dist/cli/commands/skills.d.ts.map +0 -1
  461. package/dist/cli/commands/skills.js +0 -215
  462. package/dist/cli/commands/skills.js.map +0 -1
  463. package/dist/cli/commands/specification.d.ts +0 -12
  464. package/dist/cli/commands/specification.d.ts.map +0 -1
  465. package/dist/cli/commands/specification.js +0 -61
  466. package/dist/cli/commands/specification.js.map +0 -1
  467. package/dist/cli/commands/start.d.ts +0 -13
  468. package/dist/cli/commands/start.d.ts.map +0 -1
  469. package/dist/cli/commands/start.js +0 -35
  470. package/dist/cli/commands/start.js.map +0 -1
  471. package/dist/cli/commands/stats.d.ts +0 -12
  472. package/dist/cli/commands/stats.d.ts.map +0 -1
  473. package/dist/cli/commands/stats.js +0 -37
  474. package/dist/cli/commands/stats.js.map +0 -1
  475. package/dist/cli/commands/stop.d.ts +0 -13
  476. package/dist/cli/commands/stop.d.ts.map +0 -1
  477. package/dist/cli/commands/stop.js +0 -35
  478. package/dist/cli/commands/stop.js.map +0 -1
  479. package/dist/cli/commands/sync.d.ts +0 -13
  480. package/dist/cli/commands/sync.d.ts.map +0 -1
  481. package/dist/cli/commands/sync.js +0 -129
  482. package/dist/cli/commands/sync.js.map +0 -1
  483. package/dist/cli/commands/testing.d.ts +0 -13
  484. package/dist/cli/commands/testing.d.ts.map +0 -1
  485. package/dist/cli/commands/testing.js +0 -160
  486. package/dist/cli/commands/testing.js.map +0 -1
  487. package/dist/cli/commands/unarchive.d.ts +0 -7
  488. package/dist/cli/commands/unarchive.d.ts.map +0 -1
  489. package/dist/cli/commands/unarchive.js +0 -93
  490. package/dist/cli/commands/unarchive.js.map +0 -1
  491. package/dist/cli/commands/uncancel.d.ts +0 -7
  492. package/dist/cli/commands/uncancel.d.ts.map +0 -1
  493. package/dist/cli/commands/uncancel.js +0 -93
  494. package/dist/cli/commands/uncancel.js.map +0 -1
  495. package/dist/cli/commands/update.d.ts +0 -12
  496. package/dist/cli/commands/update.d.ts.map +0 -1
  497. package/dist/cli/commands/update.js +0 -74
  498. package/dist/cli/commands/update.js.map +0 -1
  499. package/dist/cli/commands/upgrade.d.ts +0 -15
  500. package/dist/cli/commands/upgrade.d.ts.map +0 -1
  501. package/dist/cli/commands/upgrade.js +0 -59
  502. package/dist/cli/commands/upgrade.js.map +0 -1
  503. package/dist/cli/commands/validate.d.ts +0 -9
  504. package/dist/cli/commands/validate.d.ts.map +0 -1
  505. package/dist/cli/commands/validate.js +0 -211
  506. package/dist/cli/commands/validate.js.map +0 -1
  507. package/dist/cli/commands/verify.d.ts +0 -7
  508. package/dist/cli/commands/verify.d.ts.map +0 -1
  509. package/dist/cli/commands/verify.js +0 -153
  510. package/dist/cli/commands/verify.js.map +0 -1
  511. package/dist/cli/commands/web.d.ts +0 -13
  512. package/dist/cli/commands/web.d.ts.map +0 -1
  513. package/dist/cli/commands/web.js +0 -281
  514. package/dist/cli/commands/web.js.map +0 -1
  515. package/dist/cli/format-context.d.ts +0 -32
  516. package/dist/cli/format-context.d.ts.map +0 -1
  517. package/dist/cli/format-context.js +0 -50
  518. package/dist/cli/format-context.js.map +0 -1
  519. package/dist/cli/index.d.ts +0 -7
  520. package/dist/cli/index.d.ts.map +0 -1
  521. package/dist/cli/middleware/output-format.d.ts +0 -30
  522. package/dist/cli/middleware/output-format.d.ts.map +0 -1
  523. package/dist/cli/middleware/output-format.js +0 -35
  524. package/dist/cli/middleware/output-format.js.map +0 -1
  525. package/dist/cli/renderers/colors.d.ts +0 -41
  526. package/dist/cli/renderers/colors.d.ts.map +0 -1
  527. package/dist/cli/renderers/colors.js +0 -120
  528. package/dist/cli/renderers/colors.js.map +0 -1
  529. package/dist/cli/renderers/index.d.ts +0 -47
  530. package/dist/cli/renderers/index.d.ts.map +0 -1
  531. package/dist/cli/renderers/index.js +0 -103
  532. package/dist/cli/renderers/index.js.map +0 -1
  533. package/dist/cli/renderers/system.d.ts +0 -24
  534. package/dist/cli/renderers/system.d.ts.map +0 -1
  535. package/dist/cli/renderers/system.js +0 -317
  536. package/dist/cli/renderers/system.js.map +0 -1
  537. package/dist/cli/renderers/tasks.d.ts +0 -28
  538. package/dist/cli/renderers/tasks.d.ts.map +0 -1
  539. package/dist/cli/renderers/tasks.js +0 -307
  540. package/dist/cli/renderers/tasks.js.map +0 -1
  541. package/dist/core/caamp/adapter.d.ts +0 -141
  542. package/dist/core/caamp/adapter.d.ts.map +0 -1
  543. package/dist/core/caamp/adapter.js +0 -437
  544. package/dist/core/caamp/adapter.js.map +0 -1
  545. package/dist/core/caamp/index.d.ts +0 -11
  546. package/dist/core/caamp/index.d.ts.map +0 -1
  547. package/dist/core/caamp/index.js +0 -21
  548. package/dist/core/caamp/index.js.map +0 -1
  549. package/dist/core/compliance/index.d.ts +0 -38
  550. package/dist/core/compliance/index.d.ts.map +0 -1
  551. package/dist/core/compliance/index.js +0 -229
  552. package/dist/core/compliance/index.js.map +0 -1
  553. package/dist/core/config.d.ts +0 -20
  554. package/dist/core/config.d.ts.map +0 -1
  555. package/dist/core/config.js +0 -179
  556. package/dist/core/config.js.map +0 -1
  557. package/dist/core/context/index.d.ts +0 -20
  558. package/dist/core/context/index.d.ts.map +0 -1
  559. package/dist/core/context/index.js +0 -137
  560. package/dist/core/context/index.js.map +0 -1
  561. package/dist/core/error-registry.d.ts +0 -54
  562. package/dist/core/error-registry.d.ts.map +0 -1
  563. package/dist/core/error-registry.js +0 -109
  564. package/dist/core/error-registry.js.map +0 -1
  565. package/dist/core/errors.d.ts +0 -38
  566. package/dist/core/errors.d.ts.map +0 -1
  567. package/dist/core/errors.js +0 -105
  568. package/dist/core/errors.js.map +0 -1
  569. package/dist/core/focus/index.d.ts +0 -46
  570. package/dist/core/focus/index.d.ts.map +0 -1
  571. package/dist/core/focus/index.js +0 -118
  572. package/dist/core/focus/index.js.map +0 -1
  573. package/dist/core/index.d.ts +0 -14
  574. package/dist/core/index.d.ts.map +0 -1
  575. package/dist/core/index.js +0 -12
  576. package/dist/core/index.js.map +0 -1
  577. package/dist/core/init.d.ts +0 -76
  578. package/dist/core/init.d.ts.map +0 -1
  579. package/dist/core/init.js +0 -730
  580. package/dist/core/init.js.map +0 -1
  581. package/dist/core/inject/index.d.ts +0 -24
  582. package/dist/core/inject/index.d.ts.map +0 -1
  583. package/dist/core/inject/index.js +0 -84
  584. package/dist/core/inject/index.js.map +0 -1
  585. package/dist/core/issue/index.d.ts +0 -9
  586. package/dist/core/issue/index.d.ts.map +0 -1
  587. package/dist/core/issue/index.js +0 -8
  588. package/dist/core/issue/index.js.map +0 -1
  589. package/dist/core/issue/template-parser.d.ts +0 -45
  590. package/dist/core/issue/template-parser.d.ts.map +0 -1
  591. package/dist/core/issue/template-parser.js +0 -178
  592. package/dist/core/issue/template-parser.js.map +0 -1
  593. package/dist/core/lifecycle/index.d.ts +0 -71
  594. package/dist/core/lifecycle/index.d.ts.map +0 -1
  595. package/dist/core/lifecycle/index.js +0 -213
  596. package/dist/core/lifecycle/index.js.map +0 -1
  597. package/dist/core/log/index.d.ts +0 -15
  598. package/dist/core/log/index.d.ts.map +0 -1
  599. package/dist/core/log/index.js +0 -33
  600. package/dist/core/log/index.js.map +0 -1
  601. package/dist/core/mcp/index.d.ts +0 -37
  602. package/dist/core/mcp/index.d.ts.map +0 -1
  603. package/dist/core/mcp/index.js +0 -73
  604. package/dist/core/mcp/index.js.map +0 -1
  605. package/dist/core/metrics/ab-test.d.ts +0 -52
  606. package/dist/core/metrics/ab-test.d.ts.map +0 -1
  607. package/dist/core/metrics/ab-test.js +0 -261
  608. package/dist/core/metrics/ab-test.js.map +0 -1
  609. package/dist/core/metrics/aggregation.d.ts +0 -41
  610. package/dist/core/metrics/aggregation.d.ts.map +0 -1
  611. package/dist/core/metrics/aggregation.js +0 -353
  612. package/dist/core/metrics/aggregation.js.map +0 -1
  613. package/dist/core/metrics/common.d.ts +0 -30
  614. package/dist/core/metrics/common.d.ts.map +0 -1
  615. package/dist/core/metrics/common.js +0 -64
  616. package/dist/core/metrics/common.js.map +0 -1
  617. package/dist/core/metrics/enums.d.ts +0 -68
  618. package/dist/core/metrics/enums.d.ts.map +0 -1
  619. package/dist/core/metrics/enums.js +0 -78
  620. package/dist/core/metrics/enums.js.map +0 -1
  621. package/dist/core/metrics/index.d.ts +0 -17
  622. package/dist/core/metrics/index.d.ts.map +0 -1
  623. package/dist/core/metrics/index.js +0 -19
  624. package/dist/core/metrics/index.js.map +0 -1
  625. package/dist/core/metrics/otel-integration.d.ts +0 -49
  626. package/dist/core/metrics/otel-integration.d.ts.map +0 -1
  627. package/dist/core/metrics/otel-integration.js +0 -261
  628. package/dist/core/metrics/otel-integration.js.map +0 -1
  629. package/dist/core/metrics/token-estimation.d.ts +0 -70
  630. package/dist/core/metrics/token-estimation.d.ts.map +0 -1
  631. package/dist/core/metrics/token-estimation.js +0 -253
  632. package/dist/core/metrics/token-estimation.js.map +0 -1
  633. package/dist/core/migration/checksum.d.ts +0 -55
  634. package/dist/core/migration/checksum.d.ts.map +0 -1
  635. package/dist/core/migration/checksum.js +0 -90
  636. package/dist/core/migration/checksum.js.map +0 -1
  637. package/dist/core/migration/index.d.ts +0 -77
  638. package/dist/core/migration/index.d.ts.map +0 -1
  639. package/dist/core/migration/index.js +0 -278
  640. package/dist/core/migration/index.js.map +0 -1
  641. package/dist/core/migration/logger.d.ts +0 -161
  642. package/dist/core/migration/logger.d.ts.map +0 -1
  643. package/dist/core/migration/logger.js +0 -364
  644. package/dist/core/migration/logger.js.map +0 -1
  645. package/dist/core/migration/preflight.d.ts +0 -43
  646. package/dist/core/migration/preflight.d.ts.map +0 -1
  647. package/dist/core/migration/preflight.js +0 -164
  648. package/dist/core/migration/preflight.js.map +0 -1
  649. package/dist/core/migration/state.d.ts +0 -186
  650. package/dist/core/migration/state.d.ts.map +0 -1
  651. package/dist/core/migration/state.js +0 -419
  652. package/dist/core/migration/state.js.map +0 -1
  653. package/dist/core/migration/validate.d.ts +0 -57
  654. package/dist/core/migration/validate.d.ts.map +0 -1
  655. package/dist/core/migration/validate.js +0 -242
  656. package/dist/core/migration/validate.js.map +0 -1
  657. package/dist/core/nexus/deps.d.ts +0 -112
  658. package/dist/core/nexus/deps.d.ts.map +0 -1
  659. package/dist/core/nexus/deps.js +0 -394
  660. package/dist/core/nexus/deps.js.map +0 -1
  661. package/dist/core/nexus/index.d.ts +0 -14
  662. package/dist/core/nexus/index.d.ts.map +0 -1
  663. package/dist/core/nexus/index.js +0 -36
  664. package/dist/core/nexus/index.js.map +0 -1
  665. package/dist/core/nexus/permissions.d.ts +0 -75
  666. package/dist/core/nexus/permissions.d.ts.map +0 -1
  667. package/dist/core/nexus/permissions.js +0 -126
  668. package/dist/core/nexus/permissions.js.map +0 -1
  669. package/dist/core/nexus/query.d.ts +0 -55
  670. package/dist/core/nexus/query.d.ts.map +0 -1
  671. package/dist/core/nexus/query.js +0 -181
  672. package/dist/core/nexus/query.js.map +0 -1
  673. package/dist/core/nexus/registry.d.ts +0 -135
  674. package/dist/core/nexus/registry.d.ts.map +0 -1
  675. package/dist/core/nexus/registry.js +0 -296
  676. package/dist/core/nexus/registry.js.map +0 -1
  677. package/dist/core/orchestration/index.d.ts +0 -114
  678. package/dist/core/orchestration/index.d.ts.map +0 -1
  679. package/dist/core/orchestration/index.js +0 -295
  680. package/dist/core/orchestration/index.js.map +0 -1
  681. package/dist/core/orchestration/protocol-validators.d.ts +0 -94
  682. package/dist/core/orchestration/protocol-validators.d.ts.map +0 -1
  683. package/dist/core/orchestration/protocol-validators.js +0 -510
  684. package/dist/core/orchestration/protocol-validators.js.map +0 -1
  685. package/dist/core/otel/index.d.ts +0 -27
  686. package/dist/core/otel/index.d.ts.map +0 -1
  687. package/dist/core/otel/index.js +0 -126
  688. package/dist/core/otel/index.js.map +0 -1
  689. package/dist/core/output.d.ts +0 -64
  690. package/dist/core/output.d.ts.map +0 -1
  691. package/dist/core/output.js +0 -134
  692. package/dist/core/output.js.map +0 -1
  693. package/dist/core/pagination.d.ts +0 -45
  694. package/dist/core/pagination.d.ts.map +0 -1
  695. package/dist/core/pagination.js +0 -61
  696. package/dist/core/pagination.js.map +0 -1
  697. package/dist/core/paths.d.ts +0 -122
  698. package/dist/core/paths.d.ts.map +0 -1
  699. package/dist/core/paths.js +0 -269
  700. package/dist/core/paths.js.map +0 -1
  701. package/dist/core/phases/deps.d.ts +0 -142
  702. package/dist/core/phases/deps.d.ts.map +0 -1
  703. package/dist/core/phases/deps.js +0 -390
  704. package/dist/core/phases/deps.js.map +0 -1
  705. package/dist/core/phases/index.d.ts +0 -123
  706. package/dist/core/phases/index.d.ts.map +0 -1
  707. package/dist/core/phases/index.js +0 -409
  708. package/dist/core/phases/index.js.map +0 -1
  709. package/dist/core/platform.d.ts +0 -55
  710. package/dist/core/platform.d.ts.map +0 -1
  711. package/dist/core/platform.js +0 -117
  712. package/dist/core/platform.js.map +0 -1
  713. package/dist/core/release/artifacts.d.ts +0 -71
  714. package/dist/core/release/artifacts.d.ts.map +0 -1
  715. package/dist/core/release/artifacts.js +0 -412
  716. package/dist/core/release/artifacts.js.map +0 -1
  717. package/dist/core/release/ci.d.ts +0 -35
  718. package/dist/core/release/ci.d.ts.map +0 -1
  719. package/dist/core/release/ci.js +0 -162
  720. package/dist/core/release/ci.js.map +0 -1
  721. package/dist/core/release/guards.d.ts +0 -47
  722. package/dist/core/release/guards.d.ts.map +0 -1
  723. package/dist/core/release/guards.js +0 -110
  724. package/dist/core/release/guards.js.map +0 -1
  725. package/dist/core/release/index.d.ts +0 -97
  726. package/dist/core/release/index.d.ts.map +0 -1
  727. package/dist/core/release/index.js +0 -459
  728. package/dist/core/release/index.js.map +0 -1
  729. package/dist/core/release/provenance.d.ts +0 -75
  730. package/dist/core/release/provenance.d.ts.map +0 -1
  731. package/dist/core/release/provenance.js +0 -213
  732. package/dist/core/release/provenance.js.map +0 -1
  733. package/dist/core/release/release-config.d.ts +0 -55
  734. package/dist/core/release/release-config.d.ts.map +0 -1
  735. package/dist/core/release/release-config.js +0 -105
  736. package/dist/core/release/release-config.js.map +0 -1
  737. package/dist/core/release/version-bump.d.ts +0 -51
  738. package/dist/core/release/version-bump.d.ts.map +0 -1
  739. package/dist/core/release/version-bump.js +0 -251
  740. package/dist/core/release/version-bump.js.map +0 -1
  741. package/dist/core/research/index.d.ts +0 -129
  742. package/dist/core/research/index.d.ts.map +0 -1
  743. package/dist/core/research/index.js +0 -251
  744. package/dist/core/research/index.js.map +0 -1
  745. package/dist/core/roadmap/index.d.ts +0 -13
  746. package/dist/core/roadmap/index.d.ts.map +0 -1
  747. package/dist/core/roadmap/index.js +0 -63
  748. package/dist/core/roadmap/index.js.map +0 -1
  749. package/dist/core/schema.d.ts +0 -20
  750. package/dist/core/schema.d.ts.map +0 -1
  751. package/dist/core/schema.js +0 -75
  752. package/dist/core/schema.js.map +0 -1
  753. package/dist/core/sequence/index.d.ts +0 -21
  754. package/dist/core/sequence/index.d.ts.map +0 -1
  755. package/dist/core/sequence/index.js +0 -108
  756. package/dist/core/sequence/index.js.map +0 -1
  757. package/dist/core/sessions/context-alert.d.ts +0 -48
  758. package/dist/core/sessions/context-alert.d.ts.map +0 -1
  759. package/dist/core/sessions/context-alert.js +0 -222
  760. package/dist/core/sessions/context-alert.js.map +0 -1
  761. package/dist/core/sessions/context-monitor.d.ts +0 -31
  762. package/dist/core/sessions/context-monitor.d.ts.map +0 -1
  763. package/dist/core/sessions/context-monitor.js +0 -83
  764. package/dist/core/sessions/context-monitor.js.map +0 -1
  765. package/dist/core/sessions/hitl-warnings.d.ts +0 -58
  766. package/dist/core/sessions/hitl-warnings.d.ts.map +0 -1
  767. package/dist/core/sessions/hitl-warnings.js +0 -253
  768. package/dist/core/sessions/hitl-warnings.js.map +0 -1
  769. package/dist/core/sessions/index.d.ts +0 -65
  770. package/dist/core/sessions/index.d.ts.map +0 -1
  771. package/dist/core/sessions/index.js +0 -244
  772. package/dist/core/sessions/index.js.map +0 -1
  773. package/dist/core/sessions/session-enforcement.d.ts +0 -50
  774. package/dist/core/sessions/session-enforcement.d.ts.map +0 -1
  775. package/dist/core/sessions/session-enforcement.js +0 -139
  776. package/dist/core/sessions/session-enforcement.js.map +0 -1
  777. package/dist/core/sessions/session-migration.d.ts +0 -31
  778. package/dist/core/sessions/session-migration.d.ts.map +0 -1
  779. package/dist/core/sessions/session-migration.js +0 -122
  780. package/dist/core/sessions/session-migration.js.map +0 -1
  781. package/dist/core/sessions/statusline-setup.d.ts +0 -24
  782. package/dist/core/sessions/statusline-setup.d.ts.map +0 -1
  783. package/dist/core/sessions/statusline-setup.js +0 -82
  784. package/dist/core/sessions/statusline-setup.js.map +0 -1
  785. package/dist/core/skills/agents/config.d.ts +0 -39
  786. package/dist/core/skills/agents/config.d.ts.map +0 -1
  787. package/dist/core/skills/agents/config.js +0 -94
  788. package/dist/core/skills/agents/config.js.map +0 -1
  789. package/dist/core/skills/agents/install.d.ts +0 -33
  790. package/dist/core/skills/agents/install.d.ts.map +0 -1
  791. package/dist/core/skills/agents/install.js +0 -105
  792. package/dist/core/skills/agents/install.js.map +0 -1
  793. package/dist/core/skills/agents/registry.d.ts +0 -56
  794. package/dist/core/skills/agents/registry.d.ts.map +0 -1
  795. package/dist/core/skills/agents/registry.js +0 -161
  796. package/dist/core/skills/agents/registry.js.map +0 -1
  797. package/dist/core/skills/discovery.d.ts +0 -102
  798. package/dist/core/skills/discovery.d.ts.map +0 -1
  799. package/dist/core/skills/discovery.js +0 -331
  800. package/dist/core/skills/discovery.js.map +0 -1
  801. package/dist/core/skills/dispatch.d.ts +0 -67
  802. package/dist/core/skills/dispatch.d.ts.map +0 -1
  803. package/dist/core/skills/dispatch.js +0 -327
  804. package/dist/core/skills/dispatch.js.map +0 -1
  805. package/dist/core/skills/index.d.ts +0 -39
  806. package/dist/core/skills/index.d.ts.map +0 -1
  807. package/dist/core/skills/index.js +0 -44
  808. package/dist/core/skills/index.js.map +0 -1
  809. package/dist/core/skills/injection/subagent.d.ts +0 -47
  810. package/dist/core/skills/injection/subagent.d.ts.map +0 -1
  811. package/dist/core/skills/injection/subagent.js +0 -143
  812. package/dist/core/skills/injection/subagent.js.map +0 -1
  813. package/dist/core/skills/injection/token.d.ts +0 -121
  814. package/dist/core/skills/injection/token.d.ts.map +0 -1
  815. package/dist/core/skills/injection/token.js +0 -255
  816. package/dist/core/skills/injection/token.js.map +0 -1
  817. package/dist/core/skills/install.d.ts +0 -42
  818. package/dist/core/skills/install.d.ts.map +0 -1
  819. package/dist/core/skills/install.js +0 -129
  820. package/dist/core/skills/install.js.map +0 -1
  821. package/dist/core/skills/manifests/contribution.d.ts +0 -74
  822. package/dist/core/skills/manifests/contribution.d.ts.map +0 -1
  823. package/dist/core/skills/manifests/contribution.js +0 -180
  824. package/dist/core/skills/manifests/contribution.js.map +0 -1
  825. package/dist/core/skills/manifests/research.d.ts +0 -73
  826. package/dist/core/skills/manifests/research.d.ts.map +0 -1
  827. package/dist/core/skills/manifests/research.js +0 -264
  828. package/dist/core/skills/manifests/research.js.map +0 -1
  829. package/dist/core/skills/manifests/resolver.d.ts +0 -40
  830. package/dist/core/skills/manifests/resolver.d.ts.map +0 -1
  831. package/dist/core/skills/manifests/resolver.js +0 -146
  832. package/dist/core/skills/manifests/resolver.js.map +0 -1
  833. package/dist/core/skills/marketplace.d.ts +0 -45
  834. package/dist/core/skills/marketplace.d.ts.map +0 -1
  835. package/dist/core/skills/marketplace.js +0 -90
  836. package/dist/core/skills/marketplace.js.map +0 -1
  837. package/dist/core/skills/orchestrator/spawn.d.ts +0 -66
  838. package/dist/core/skills/orchestrator/spawn.d.ts.map +0 -1
  839. package/dist/core/skills/orchestrator/spawn.js +0 -186
  840. package/dist/core/skills/orchestrator/spawn.js.map +0 -1
  841. package/dist/core/skills/orchestrator/startup.d.ts +0 -89
  842. package/dist/core/skills/orchestrator/startup.d.ts.map +0 -1
  843. package/dist/core/skills/orchestrator/startup.js +0 -434
  844. package/dist/core/skills/orchestrator/startup.js.map +0 -1
  845. package/dist/core/skills/orchestrator/validator.d.ts +0 -40
  846. package/dist/core/skills/orchestrator/validator.d.ts.map +0 -1
  847. package/dist/core/skills/orchestrator/validator.js +0 -297
  848. package/dist/core/skills/orchestrator/validator.js.map +0 -1
  849. package/dist/core/skills/skill-paths.d.ts +0 -79
  850. package/dist/core/skills/skill-paths.d.ts.map +0 -1
  851. package/dist/core/skills/skill-paths.js +0 -220
  852. package/dist/core/skills/skill-paths.js.map +0 -1
  853. package/dist/core/skills/test-utility.d.ts +0 -39
  854. package/dist/core/skills/test-utility.d.ts.map +0 -1
  855. package/dist/core/skills/test-utility.js +0 -55
  856. package/dist/core/skills/test-utility.js.map +0 -1
  857. package/dist/core/skills/types.d.ts +0 -290
  858. package/dist/core/skills/types.d.ts.map +0 -1
  859. package/dist/core/skills/types.js +0 -86
  860. package/dist/core/skills/types.js.map +0 -1
  861. package/dist/core/skills/validation.d.ts +0 -46
  862. package/dist/core/skills/validation.d.ts.map +0 -1
  863. package/dist/core/skills/validation.js +0 -176
  864. package/dist/core/skills/validation.js.map +0 -1
  865. package/dist/core/skills/version.d.ts +0 -87
  866. package/dist/core/skills/version.d.ts.map +0 -1
  867. package/dist/core/skills/version.js +0 -241
  868. package/dist/core/skills/version.js.map +0 -1
  869. package/dist/core/stats/index.d.ts +0 -30
  870. package/dist/core/stats/index.d.ts.map +0 -1
  871. package/dist/core/stats/index.js +0 -152
  872. package/dist/core/stats/index.js.map +0 -1
  873. package/dist/core/task-work/index.d.ts +0 -66
  874. package/dist/core/task-work/index.d.ts.map +0 -1
  875. package/dist/core/task-work/index.js +0 -148
  876. package/dist/core/task-work/index.js.map +0 -1
  877. package/dist/core/tasks/add.d.ts +0 -125
  878. package/dist/core/tasks/add.d.ts.map +0 -1
  879. package/dist/core/tasks/add.js +0 -489
  880. package/dist/core/tasks/add.js.map +0 -1
  881. package/dist/core/tasks/analyze.d.ts +0 -49
  882. package/dist/core/tasks/analyze.d.ts.map +0 -1
  883. package/dist/core/tasks/analyze.js +0 -94
  884. package/dist/core/tasks/analyze.js.map +0 -1
  885. package/dist/core/tasks/archive.d.ts +0 -31
  886. package/dist/core/tasks/archive.d.ts.map +0 -1
  887. package/dist/core/tasks/archive.js +0 -126
  888. package/dist/core/tasks/archive.js.map +0 -1
  889. package/dist/core/tasks/cancel-ops.d.ts +0 -42
  890. package/dist/core/tasks/cancel-ops.d.ts.map +0 -1
  891. package/dist/core/tasks/cancel-ops.js +0 -83
  892. package/dist/core/tasks/cancel-ops.js.map +0 -1
  893. package/dist/core/tasks/complete.d.ts +0 -25
  894. package/dist/core/tasks/complete.d.ts.map +0 -1
  895. package/dist/core/tasks/complete.js +0 -109
  896. package/dist/core/tasks/complete.js.map +0 -1
  897. package/dist/core/tasks/crossref-extract.d.ts +0 -39
  898. package/dist/core/tasks/crossref-extract.d.ts.map +0 -1
  899. package/dist/core/tasks/crossref-extract.js +0 -75
  900. package/dist/core/tasks/crossref-extract.js.map +0 -1
  901. package/dist/core/tasks/delete-preview.d.ts +0 -69
  902. package/dist/core/tasks/delete-preview.d.ts.map +0 -1
  903. package/dist/core/tasks/delete-preview.js +0 -192
  904. package/dist/core/tasks/delete-preview.js.map +0 -1
  905. package/dist/core/tasks/delete.d.ts +0 -24
  906. package/dist/core/tasks/delete.d.ts.map +0 -1
  907. package/dist/core/tasks/delete.js +0 -130
  908. package/dist/core/tasks/delete.js.map +0 -1
  909. package/dist/core/tasks/deletion-strategy.d.ts +0 -46
  910. package/dist/core/tasks/deletion-strategy.d.ts.map +0 -1
  911. package/dist/core/tasks/deletion-strategy.js +0 -200
  912. package/dist/core/tasks/deletion-strategy.js.map +0 -1
  913. package/dist/core/tasks/dependency-check.d.ts +0 -70
  914. package/dist/core/tasks/dependency-check.d.ts.map +0 -1
  915. package/dist/core/tasks/dependency-check.js +0 -226
  916. package/dist/core/tasks/dependency-check.js.map +0 -1
  917. package/dist/core/tasks/find.d.ts +0 -48
  918. package/dist/core/tasks/find.d.ts.map +0 -1
  919. package/dist/core/tasks/find.js +0 -155
  920. package/dist/core/tasks/find.js.map +0 -1
  921. package/dist/core/tasks/graph-cache.d.ts +0 -70
  922. package/dist/core/tasks/graph-cache.d.ts.map +0 -1
  923. package/dist/core/tasks/graph-cache.js +0 -127
  924. package/dist/core/tasks/graph-cache.js.map +0 -1
  925. package/dist/core/tasks/graph-ops.d.ts +0 -36
  926. package/dist/core/tasks/graph-ops.d.ts.map +0 -1
  927. package/dist/core/tasks/graph-ops.js +0 -173
  928. package/dist/core/tasks/graph-ops.js.map +0 -1
  929. package/dist/core/tasks/graph-rag.d.ts +0 -49
  930. package/dist/core/tasks/graph-rag.d.ts.map +0 -1
  931. package/dist/core/tasks/graph-rag.js +0 -253
  932. package/dist/core/tasks/graph-rag.js.map +0 -1
  933. package/dist/core/tasks/hierarchy.d.ts +0 -82
  934. package/dist/core/tasks/hierarchy.d.ts.map +0 -1
  935. package/dist/core/tasks/hierarchy.js +0 -188
  936. package/dist/core/tasks/hierarchy.js.map +0 -1
  937. package/dist/core/tasks/index.d.ts +0 -15
  938. package/dist/core/tasks/index.d.ts.map +0 -1
  939. package/dist/core/tasks/index.js +0 -15
  940. package/dist/core/tasks/index.js.map +0 -1
  941. package/dist/core/tasks/labels.d.ts +0 -19
  942. package/dist/core/tasks/labels.d.ts.map +0 -1
  943. package/dist/core/tasks/labels.js +0 -56
  944. package/dist/core/tasks/labels.js.map +0 -1
  945. package/dist/core/tasks/list.d.ts +0 -36
  946. package/dist/core/tasks/list.d.ts.map +0 -1
  947. package/dist/core/tasks/list.js +0 -72
  948. package/dist/core/tasks/list.js.map +0 -1
  949. package/dist/core/tasks/phase-tracking.d.ts +0 -61
  950. package/dist/core/tasks/phase-tracking.d.ts.map +0 -1
  951. package/dist/core/tasks/phase-tracking.js +0 -133
  952. package/dist/core/tasks/phase-tracking.js.map +0 -1
  953. package/dist/core/tasks/relates.d.ts +0 -18
  954. package/dist/core/tasks/relates.d.ts.map +0 -1
  955. package/dist/core/tasks/relates.js +0 -115
  956. package/dist/core/tasks/relates.js.map +0 -1
  957. package/dist/core/tasks/show.d.ts +0 -25
  958. package/dist/core/tasks/show.d.ts.map +0 -1
  959. package/dist/core/tasks/show.js +0 -79
  960. package/dist/core/tasks/show.js.map +0 -1
  961. package/dist/core/tasks/size-weighting.d.ts +0 -38
  962. package/dist/core/tasks/size-weighting.d.ts.map +0 -1
  963. package/dist/core/tasks/size-weighting.js +0 -86
  964. package/dist/core/tasks/size-weighting.js.map +0 -1
  965. package/dist/core/tasks/staleness.d.ts +0 -56
  966. package/dist/core/tasks/staleness.d.ts.map +0 -1
  967. package/dist/core/tasks/staleness.js +0 -91
  968. package/dist/core/tasks/staleness.js.map +0 -1
  969. package/dist/core/tasks/todowrite-integration.d.ts +0 -46
  970. package/dist/core/tasks/todowrite-integration.d.ts.map +0 -1
  971. package/dist/core/tasks/todowrite-integration.js +0 -172
  972. package/dist/core/tasks/todowrite-integration.js.map +0 -1
  973. package/dist/core/tasks/update.d.ts +0 -41
  974. package/dist/core/tasks/update.d.ts.map +0 -1
  975. package/dist/core/tasks/update.js +0 -178
  976. package/dist/core/tasks/update.js.map +0 -1
  977. package/dist/core/ui/aliases.d.ts +0 -43
  978. package/dist/core/ui/aliases.d.ts.map +0 -1
  979. package/dist/core/ui/aliases.js +0 -150
  980. package/dist/core/ui/aliases.js.map +0 -1
  981. package/dist/core/ui/changelog.d.ts +0 -58
  982. package/dist/core/ui/changelog.d.ts.map +0 -1
  983. package/dist/core/ui/changelog.js +0 -195
  984. package/dist/core/ui/changelog.js.map +0 -1
  985. package/dist/core/ui/command-registry.d.ts +0 -44
  986. package/dist/core/ui/command-registry.d.ts.map +0 -1
  987. package/dist/core/ui/command-registry.js +0 -156
  988. package/dist/core/ui/command-registry.js.map +0 -1
  989. package/dist/core/ui/flags.d.ts +0 -34
  990. package/dist/core/ui/flags.d.ts.map +0 -1
  991. package/dist/core/ui/flags.js +0 -94
  992. package/dist/core/ui/flags.js.map +0 -1
  993. package/dist/core/ui/index.d.ts +0 -18
  994. package/dist/core/ui/index.d.ts.map +0 -1
  995. package/dist/core/ui/index.js +0 -28
  996. package/dist/core/ui/index.js.map +0 -1
  997. package/dist/core/ui/injection-legacy.d.ts +0 -26
  998. package/dist/core/ui/injection-legacy.d.ts.map +0 -1
  999. package/dist/core/ui/injection-legacy.js +0 -42
  1000. package/dist/core/ui/injection-legacy.js.map +0 -1
  1001. package/dist/core/ui/injection-registry.d.ts +0 -56
  1002. package/dist/core/ui/injection-registry.d.ts.map +0 -1
  1003. package/dist/core/ui/injection-registry.js +0 -68
  1004. package/dist/core/ui/injection-registry.js.map +0 -1
  1005. package/dist/core/ui/injection.d.ts +0 -51
  1006. package/dist/core/ui/injection.d.ts.map +0 -1
  1007. package/dist/core/ui/injection.js +0 -125
  1008. package/dist/core/ui/injection.js.map +0 -1
  1009. package/dist/core/ui/mcp-config.d.ts +0 -40
  1010. package/dist/core/ui/mcp-config.d.ts.map +0 -1
  1011. package/dist/core/ui/mcp-config.js +0 -173
  1012. package/dist/core/ui/mcp-config.js.map +0 -1
  1013. package/dist/core/ui/version-check.d.ts +0 -31
  1014. package/dist/core/ui/version-check.d.ts.map +0 -1
  1015. package/dist/core/ui/version-check.js +0 -121
  1016. package/dist/core/ui/version-check.js.map +0 -1
  1017. package/dist/core/upgrade.d.ts +0 -59
  1018. package/dist/core/upgrade.d.ts.map +0 -1
  1019. package/dist/core/upgrade.js +0 -649
  1020. package/dist/core/upgrade.js.map +0 -1
  1021. package/dist/core/validation/compliance.d.ts +0 -94
  1022. package/dist/core/validation/compliance.d.ts.map +0 -1
  1023. package/dist/core/validation/compliance.js +0 -157
  1024. package/dist/core/validation/compliance.js.map +0 -1
  1025. package/dist/core/validation/docs-sync.d.ts +0 -66
  1026. package/dist/core/validation/docs-sync.d.ts.map +0 -1
  1027. package/dist/core/validation/docs-sync.js +0 -204
  1028. package/dist/core/validation/docs-sync.js.map +0 -1
  1029. package/dist/core/validation/doctor/checks.d.ts +0 -61
  1030. package/dist/core/validation/doctor/checks.d.ts.map +0 -1
  1031. package/dist/core/validation/doctor/checks.js +0 -457
  1032. package/dist/core/validation/doctor/checks.js.map +0 -1
  1033. package/dist/core/validation/doctor/index.d.ts +0 -9
  1034. package/dist/core/validation/doctor/index.d.ts.map +0 -1
  1035. package/dist/core/validation/doctor/index.js +0 -9
  1036. package/dist/core/validation/doctor/index.js.map +0 -1
  1037. package/dist/core/validation/doctor/project-cache.d.ts +0 -79
  1038. package/dist/core/validation/doctor/project-cache.d.ts.map +0 -1
  1039. package/dist/core/validation/doctor/project-cache.js +0 -164
  1040. package/dist/core/validation/doctor/project-cache.js.map +0 -1
  1041. package/dist/core/validation/doctor/utils.d.ts +0 -68
  1042. package/dist/core/validation/doctor/utils.d.ts.map +0 -1
  1043. package/dist/core/validation/doctor/utils.js +0 -162
  1044. package/dist/core/validation/doctor/utils.js.map +0 -1
  1045. package/dist/core/validation/engine.d.ts +0 -172
  1046. package/dist/core/validation/engine.d.ts.map +0 -1
  1047. package/dist/core/validation/engine.js +0 -791
  1048. package/dist/core/validation/engine.js.map +0 -1
  1049. package/dist/core/validation/gap-check.d.ts +0 -74
  1050. package/dist/core/validation/gap-check.d.ts.map +0 -1
  1051. package/dist/core/validation/gap-check.js +0 -175
  1052. package/dist/core/validation/gap-check.js.map +0 -1
  1053. package/dist/core/validation/index.d.ts +0 -17
  1054. package/dist/core/validation/index.d.ts.map +0 -1
  1055. package/dist/core/validation/index.js +0 -25
  1056. package/dist/core/validation/index.js.map +0 -1
  1057. package/dist/core/validation/manifest.d.ts +0 -81
  1058. package/dist/core/validation/manifest.d.ts.map +0 -1
  1059. package/dist/core/validation/manifest.js +0 -225
  1060. package/dist/core/validation/manifest.js.map +0 -1
  1061. package/dist/core/validation/protocol-common.d.ts +0 -77
  1062. package/dist/core/validation/protocol-common.d.ts.map +0 -1
  1063. package/dist/core/validation/protocol-common.js +0 -240
  1064. package/dist/core/validation/protocol-common.js.map +0 -1
  1065. package/dist/core/validation/protocols/consensus.d.ts +0 -28
  1066. package/dist/core/validation/protocols/consensus.d.ts.map +0 -1
  1067. package/dist/core/validation/protocols/consensus.js +0 -70
  1068. package/dist/core/validation/protocols/consensus.js.map +0 -1
  1069. package/dist/core/validation/protocols/contribution.d.ts +0 -26
  1070. package/dist/core/validation/protocols/contribution.d.ts.map +0 -1
  1071. package/dist/core/validation/protocols/contribution.js +0 -58
  1072. package/dist/core/validation/protocols/contribution.js.map +0 -1
  1073. package/dist/core/validation/protocols/decomposition.d.ts +0 -28
  1074. package/dist/core/validation/protocols/decomposition.d.ts.map +0 -1
  1075. package/dist/core/validation/protocols/decomposition.js +0 -58
  1076. package/dist/core/validation/protocols/decomposition.js.map +0 -1
  1077. package/dist/core/validation/protocols/implementation.d.ts +0 -26
  1078. package/dist/core/validation/protocols/implementation.d.ts.map +0 -1
  1079. package/dist/core/validation/protocols/implementation.js +0 -58
  1080. package/dist/core/validation/protocols/implementation.js.map +0 -1
  1081. package/dist/core/validation/protocols/specification.d.ts +0 -28
  1082. package/dist/core/validation/protocols/specification.d.ts.map +0 -1
  1083. package/dist/core/validation/protocols/specification.js +0 -83
  1084. package/dist/core/validation/protocols/specification.js.map +0 -1
  1085. package/dist/core/validation/verification.d.ts +0 -153
  1086. package/dist/core/validation/verification.d.ts.map +0 -1
  1087. package/dist/core/validation/verification.js +0 -311
  1088. package/dist/core/validation/verification.js.map +0 -1
  1089. package/dist/dispatch/dispatcher.d.ts +0 -23
  1090. package/dist/dispatch/dispatcher.d.ts.map +0 -1
  1091. package/dist/dispatch/dispatcher.js +0 -90
  1092. package/dist/dispatch/dispatcher.js.map +0 -1
  1093. package/dist/dispatch/domains/_meta.d.ts +0 -23
  1094. package/dist/dispatch/domains/_meta.d.ts.map +0 -1
  1095. package/dist/dispatch/domains/_meta.js +0 -25
  1096. package/dist/dispatch/domains/_meta.js.map +0 -1
  1097. package/dist/dispatch/domains/admin.d.ts +0 -29
  1098. package/dist/dispatch/domains/admin.d.ts.map +0 -1
  1099. package/dist/dispatch/domains/admin.js +0 -200
  1100. package/dist/dispatch/domains/admin.js.map +0 -1
  1101. package/dist/dispatch/domains/check.d.ts +0 -28
  1102. package/dist/dispatch/domains/check.d.ts.map +0 -1
  1103. package/dist/dispatch/domains/check.js +0 -170
  1104. package/dist/dispatch/domains/check.js.map +0 -1
  1105. package/dist/dispatch/domains/index.d.ts +0 -26
  1106. package/dist/dispatch/domains/index.d.ts.map +0 -1
  1107. package/dist/dispatch/domains/index.js +0 -36
  1108. package/dist/dispatch/domains/index.js.map +0 -1
  1109. package/dist/dispatch/domains/memory.d.ts +0 -27
  1110. package/dist/dispatch/domains/memory.d.ts.map +0 -1
  1111. package/dist/dispatch/domains/memory.js +0 -169
  1112. package/dist/dispatch/domains/memory.js.map +0 -1
  1113. package/dist/dispatch/domains/nexus.d.ts +0 -18
  1114. package/dist/dispatch/domains/nexus.d.ts.map +0 -1
  1115. package/dist/dispatch/domains/nexus.js +0 -34
  1116. package/dist/dispatch/domains/nexus.js.map +0 -1
  1117. package/dist/dispatch/domains/orchestrate.d.ts +0 -24
  1118. package/dist/dispatch/domains/orchestrate.d.ts.map +0 -1
  1119. package/dist/dispatch/domains/orchestrate.js +0 -199
  1120. package/dist/dispatch/domains/orchestrate.js.map +0 -1
  1121. package/dist/dispatch/domains/pipeline.d.ts +0 -31
  1122. package/dist/dispatch/domains/pipeline.d.ts.map +0 -1
  1123. package/dist/dispatch/domains/pipeline.js +0 -284
  1124. package/dist/dispatch/domains/pipeline.js.map +0 -1
  1125. package/dist/dispatch/domains/session.d.ts +0 -27
  1126. package/dist/dispatch/domains/session.d.ts.map +0 -1
  1127. package/dist/dispatch/domains/session.js +0 -180
  1128. package/dist/dispatch/domains/session.js.map +0 -1
  1129. package/dist/dispatch/domains/tools.d.ts +0 -39
  1130. package/dist/dispatch/domains/tools.d.ts.map +0 -1
  1131. package/dist/dispatch/domains/tools.js +0 -314
  1132. package/dist/dispatch/domains/tools.js.map +0 -1
  1133. package/dist/dispatch/index.d.ts +0 -20
  1134. package/dist/dispatch/index.d.ts.map +0 -1
  1135. package/dist/dispatch/index.js +0 -19
  1136. package/dist/dispatch/index.js.map +0 -1
  1137. package/dist/dispatch/lib/meta.d.ts +0 -24
  1138. package/dist/dispatch/lib/meta.d.ts.map +0 -1
  1139. package/dist/dispatch/lib/meta.js +0 -34
  1140. package/dist/dispatch/lib/meta.js.map +0 -1
  1141. package/dist/dispatch/middleware/audit.d.ts +0 -123
  1142. package/dist/dispatch/middleware/audit.d.ts.map +0 -1
  1143. package/dist/dispatch/middleware/audit.js +0 -345
  1144. package/dist/dispatch/middleware/audit.js.map +0 -1
  1145. package/dist/dispatch/middleware/pipeline.d.ts +0 -20
  1146. package/dist/dispatch/middleware/pipeline.d.ts.map +0 -1
  1147. package/dist/dispatch/middleware/pipeline.js +0 -47
  1148. package/dist/dispatch/middleware/pipeline.js.map +0 -1
  1149. package/dist/dispatch/middleware/protocol-enforcement.d.ts +0 -6
  1150. package/dist/dispatch/middleware/protocol-enforcement.d.ts.map +0 -1
  1151. package/dist/dispatch/middleware/protocol-enforcement.js +0 -12
  1152. package/dist/dispatch/middleware/protocol-enforcement.js.map +0 -1
  1153. package/dist/dispatch/middleware/rate-limiter.d.ts +0 -30
  1154. package/dist/dispatch/middleware/rate-limiter.d.ts.map +0 -1
  1155. package/dist/dispatch/middleware/rate-limiter.js +0 -101
  1156. package/dist/dispatch/middleware/rate-limiter.js.map +0 -1
  1157. package/dist/dispatch/middleware/sanitizer.d.ts +0 -10
  1158. package/dist/dispatch/middleware/sanitizer.d.ts.map +0 -1
  1159. package/dist/dispatch/middleware/sanitizer.js +0 -39
  1160. package/dist/dispatch/middleware/sanitizer.js.map +0 -1
  1161. package/dist/dispatch/middleware/verification-gates.d.ts +0 -3
  1162. package/dist/dispatch/middleware/verification-gates.d.ts.map +0 -1
  1163. package/dist/dispatch/middleware/verification-gates.js +0 -40
  1164. package/dist/dispatch/middleware/verification-gates.js.map +0 -1
  1165. package/dist/dispatch/registry.d.ts +0 -89
  1166. package/dist/dispatch/registry.d.ts.map +0 -1
  1167. package/dist/dispatch/registry.js +0 -1591
  1168. package/dist/dispatch/registry.js.map +0 -1
  1169. package/dist/dispatch/types.d.ts +0 -137
  1170. package/dist/dispatch/types.d.ts.map +0 -1
  1171. package/dist/dispatch/types.js +0 -24
  1172. package/dist/dispatch/types.js.map +0 -1
  1173. package/dist/index.d.ts +0 -22
  1174. package/dist/index.d.ts.map +0 -1
  1175. package/dist/index.js +0 -30
  1176. package/dist/index.js.map +0 -1
  1177. package/dist/mcp/domains/index.d.ts +0 -19
  1178. package/dist/mcp/domains/index.d.ts.map +0 -1
  1179. package/dist/mcp/domains/index.js +0 -19
  1180. package/dist/mcp/domains/index.js.map +0 -1
  1181. package/dist/mcp/domains/issues.d.ts +0 -69
  1182. package/dist/mcp/domains/issues.d.ts.map +0 -1
  1183. package/dist/mcp/domains/issues.js +0 -260
  1184. package/dist/mcp/domains/issues.js.map +0 -1
  1185. package/dist/mcp/domains/lifecycle.d.ts +0 -154
  1186. package/dist/mcp/domains/lifecycle.d.ts.map +0 -1
  1187. package/dist/mcp/domains/lifecycle.js +0 -508
  1188. package/dist/mcp/domains/lifecycle.js.map +0 -1
  1189. package/dist/mcp/domains/orchestrate.d.ts +0 -140
  1190. package/dist/mcp/domains/orchestrate.d.ts.map +0 -1
  1191. package/dist/mcp/domains/orchestrate.js +0 -542
  1192. package/dist/mcp/domains/orchestrate.js.map +0 -1
  1193. package/dist/mcp/domains/providers.d.ts +0 -28
  1194. package/dist/mcp/domains/providers.d.ts.map +0 -1
  1195. package/dist/mcp/domains/providers.js +0 -108
  1196. package/dist/mcp/domains/providers.js.map +0 -1
  1197. package/dist/mcp/domains/release.d.ts +0 -121
  1198. package/dist/mcp/domains/release.d.ts.map +0 -1
  1199. package/dist/mcp/domains/release.js +0 -486
  1200. package/dist/mcp/domains/release.js.map +0 -1
  1201. package/dist/mcp/domains/research.d.ts +0 -158
  1202. package/dist/mcp/domains/research.d.ts.map +0 -1
  1203. package/dist/mcp/domains/research.js +0 -698
  1204. package/dist/mcp/domains/research.js.map +0 -1
  1205. package/dist/mcp/domains/session.d.ts +0 -136
  1206. package/dist/mcp/domains/session.d.ts.map +0 -1
  1207. package/dist/mcp/domains/session.js +0 -583
  1208. package/dist/mcp/domains/session.js.map +0 -1
  1209. package/dist/mcp/domains/skills.d.ts +0 -129
  1210. package/dist/mcp/domains/skills.d.ts.map +0 -1
  1211. package/dist/mcp/domains/skills.js +0 -691
  1212. package/dist/mcp/domains/skills.js.map +0 -1
  1213. package/dist/mcp/domains/system.d.ts +0 -166
  1214. package/dist/mcp/domains/system.d.ts.map +0 -1
  1215. package/dist/mcp/domains/system.js +0 -1000
  1216. package/dist/mcp/domains/system.js.map +0 -1
  1217. package/dist/mcp/domains/tasks.d.ts +0 -241
  1218. package/dist/mcp/domains/tasks.d.ts.map +0 -1
  1219. package/dist/mcp/domains/tasks.js +0 -1152
  1220. package/dist/mcp/domains/tasks.js.map +0 -1
  1221. package/dist/mcp/domains/validate.d.ts +0 -163
  1222. package/dist/mcp/domains/validate.d.ts.map +0 -1
  1223. package/dist/mcp/domains/validate.js +0 -787
  1224. package/dist/mcp/domains/validate.js.map +0 -1
  1225. package/dist/mcp/engine/caamp-adapter.d.ts +0 -12
  1226. package/dist/mcp/engine/caamp-adapter.d.ts.map +0 -1
  1227. package/dist/mcp/engine/caamp-adapter.js +0 -23
  1228. package/dist/mcp/engine/caamp-adapter.js.map +0 -1
  1229. package/dist/mcp/engine/caamp-verify.d.ts +0 -2
  1230. package/dist/mcp/engine/caamp-verify.d.ts.map +0 -1
  1231. package/dist/mcp/engine/caamp-verify.js +0 -15
  1232. package/dist/mcp/engine/caamp-verify.js.map +0 -1
  1233. package/dist/mcp/engine/capability-matrix.d.ts +0 -67
  1234. package/dist/mcp/engine/capability-matrix.d.ts.map +0 -1
  1235. package/dist/mcp/engine/capability-matrix.js +0 -243
  1236. package/dist/mcp/engine/capability-matrix.js.map +0 -1
  1237. package/dist/mcp/engine/config-engine.d.ts +0 -29
  1238. package/dist/mcp/engine/config-engine.d.ts.map +0 -1
  1239. package/dist/mcp/engine/config-engine.js +0 -110
  1240. package/dist/mcp/engine/config-engine.js.map +0 -1
  1241. package/dist/mcp/engine/id-generator.d.ts +0 -34
  1242. package/dist/mcp/engine/id-generator.d.ts.map +0 -1
  1243. package/dist/mcp/engine/id-generator.js +0 -91
  1244. package/dist/mcp/engine/id-generator.js.map +0 -1
  1245. package/dist/mcp/engine/index.d.ts +0 -25
  1246. package/dist/mcp/engine/index.d.ts.map +0 -1
  1247. package/dist/mcp/engine/index.js +0 -42
  1248. package/dist/mcp/engine/index.js.map +0 -1
  1249. package/dist/mcp/engine/init-engine.d.ts +0 -52
  1250. package/dist/mcp/engine/init-engine.d.ts.map +0 -1
  1251. package/dist/mcp/engine/init-engine.js +0 -222
  1252. package/dist/mcp/engine/init-engine.js.map +0 -1
  1253. package/dist/mcp/engine/lifecycle-engine.d.ts +0 -119
  1254. package/dist/mcp/engine/lifecycle-engine.d.ts.map +0 -1
  1255. package/dist/mcp/engine/lifecycle-engine.js +0 -564
  1256. package/dist/mcp/engine/lifecycle-engine.js.map +0 -1
  1257. package/dist/mcp/engine/orchestrate-engine.d.ts +0 -127
  1258. package/dist/mcp/engine/orchestrate-engine.d.ts.map +0 -1
  1259. package/dist/mcp/engine/orchestrate-engine.js +0 -1233
  1260. package/dist/mcp/engine/orchestrate-engine.js.map +0 -1
  1261. package/dist/mcp/engine/release-engine.d.ts +0 -71
  1262. package/dist/mcp/engine/release-engine.d.ts.map +0 -1
  1263. package/dist/mcp/engine/release-engine.js +0 -515
  1264. package/dist/mcp/engine/release-engine.js.map +0 -1
  1265. package/dist/mcp/engine/research-engine.d.ts +0 -182
  1266. package/dist/mcp/engine/research-engine.d.ts.map +0 -1
  1267. package/dist/mcp/engine/research-engine.js +0 -747
  1268. package/dist/mcp/engine/research-engine.js.map +0 -1
  1269. package/dist/mcp/engine/schema-validator.d.ts +0 -47
  1270. package/dist/mcp/engine/schema-validator.d.ts.map +0 -1
  1271. package/dist/mcp/engine/schema-validator.js +0 -219
  1272. package/dist/mcp/engine/schema-validator.js.map +0 -1
  1273. package/dist/mcp/engine/session-engine.d.ts +0 -340
  1274. package/dist/mcp/engine/session-engine.d.ts.map +0 -1
  1275. package/dist/mcp/engine/session-engine.js +0 -1355
  1276. package/dist/mcp/engine/session-engine.js.map +0 -1
  1277. package/dist/mcp/engine/store.d.ts +0 -86
  1278. package/dist/mcp/engine/store.d.ts.map +0 -1
  1279. package/dist/mcp/engine/store.js +0 -393
  1280. package/dist/mcp/engine/store.js.map +0 -1
  1281. package/dist/mcp/engine/system-engine.d.ts +0 -458
  1282. package/dist/mcp/engine/system-engine.d.ts.map +0 -1
  1283. package/dist/mcp/engine/system-engine.js +0 -1568
  1284. package/dist/mcp/engine/system-engine.js.map +0 -1
  1285. package/dist/mcp/engine/task-engine.d.ts +0 -501
  1286. package/dist/mcp/engine/task-engine.d.ts.map +0 -1
  1287. package/dist/mcp/engine/task-engine.js +0 -1840
  1288. package/dist/mcp/engine/task-engine.js.map +0 -1
  1289. package/dist/mcp/engine/template-parser.d.ts +0 -83
  1290. package/dist/mcp/engine/template-parser.d.ts.map +0 -1
  1291. package/dist/mcp/engine/template-parser.js +0 -255
  1292. package/dist/mcp/engine/template-parser.js.map +0 -1
  1293. package/dist/mcp/engine/validate-engine.d.ts +0 -120
  1294. package/dist/mcp/engine/validate-engine.d.ts.map +0 -1
  1295. package/dist/mcp/engine/validate-engine.js +0 -828
  1296. package/dist/mcp/engine/validate-engine.js.map +0 -1
  1297. package/dist/mcp/engine/validation-rules.d.ts +0 -85
  1298. package/dist/mcp/engine/validation-rules.d.ts.map +0 -1
  1299. package/dist/mcp/engine/validation-rules.js +0 -220
  1300. package/dist/mcp/engine/validation-rules.js.map +0 -1
  1301. package/dist/mcp/gateways/mutate.d.ts +0 -100
  1302. package/dist/mcp/gateways/mutate.d.ts.map +0 -1
  1303. package/dist/mcp/gateways/mutate.js +0 -1070
  1304. package/dist/mcp/gateways/mutate.js.map +0 -1
  1305. package/dist/mcp/gateways/query.d.ts +0 -91
  1306. package/dist/mcp/gateways/query.d.ts.map +0 -1
  1307. package/dist/mcp/gateways/query.js +0 -278
  1308. package/dist/mcp/gateways/query.js.map +0 -1
  1309. package/dist/mcp/index.d.ts +0 -20
  1310. package/dist/mcp/index.d.ts.map +0 -1
  1311. package/dist/mcp/lib/audit.d.ts +0 -118
  1312. package/dist/mcp/lib/audit.d.ts.map +0 -1
  1313. package/dist/mcp/lib/audit.js +0 -310
  1314. package/dist/mcp/lib/audit.js.map +0 -1
  1315. package/dist/mcp/lib/background-jobs.d.ts +0 -86
  1316. package/dist/mcp/lib/background-jobs.d.ts.map +0 -1
  1317. package/dist/mcp/lib/background-jobs.js +0 -183
  1318. package/dist/mcp/lib/background-jobs.js.map +0 -1
  1319. package/dist/mcp/lib/budget.d.ts +0 -35
  1320. package/dist/mcp/lib/budget.d.ts.map +0 -1
  1321. package/dist/mcp/lib/budget.js +0 -101
  1322. package/dist/mcp/lib/budget.js.map +0 -1
  1323. package/dist/mcp/lib/cache.d.ts +0 -78
  1324. package/dist/mcp/lib/cache.d.ts.map +0 -1
  1325. package/dist/mcp/lib/cache.js +0 -204
  1326. package/dist/mcp/lib/cache.js.map +0 -1
  1327. package/dist/mcp/lib/command-builder.d.ts +0 -52
  1328. package/dist/mcp/lib/command-builder.d.ts.map +0 -1
  1329. package/dist/mcp/lib/command-builder.js +0 -269
  1330. package/dist/mcp/lib/command-builder.js.map +0 -1
  1331. package/dist/mcp/lib/config.d.ts +0 -42
  1332. package/dist/mcp/lib/config.d.ts.map +0 -1
  1333. package/dist/mcp/lib/config.js +0 -248
  1334. package/dist/mcp/lib/config.js.map +0 -1
  1335. package/dist/mcp/lib/defaults.d.ts +0 -115
  1336. package/dist/mcp/lib/defaults.d.ts.map +0 -1
  1337. package/dist/mcp/lib/defaults.js +0 -61
  1338. package/dist/mcp/lib/defaults.js.map +0 -1
  1339. package/dist/mcp/lib/error-handler.d.ts +0 -101
  1340. package/dist/mcp/lib/error-handler.d.ts.map +0 -1
  1341. package/dist/mcp/lib/error-handler.js +0 -277
  1342. package/dist/mcp/lib/error-handler.js.map +0 -1
  1343. package/dist/mcp/lib/executor.d.ts +0 -122
  1344. package/dist/mcp/lib/executor.d.ts.map +0 -1
  1345. package/dist/mcp/lib/executor.js +0 -391
  1346. package/dist/mcp/lib/executor.js.map +0 -1
  1347. package/dist/mcp/lib/exit-codes.d.ts +0 -192
  1348. package/dist/mcp/lib/exit-codes.d.ts.map +0 -1
  1349. package/dist/mcp/lib/exit-codes.js +0 -1029
  1350. package/dist/mcp/lib/exit-codes.js.map +0 -1
  1351. package/dist/mcp/lib/formatter.d.ts +0 -196
  1352. package/dist/mcp/lib/formatter.d.ts.map +0 -1
  1353. package/dist/mcp/lib/formatter.js +0 -260
  1354. package/dist/mcp/lib/formatter.js.map +0 -1
  1355. package/dist/mcp/lib/gate-validators.d.ts +0 -104
  1356. package/dist/mcp/lib/gate-validators.d.ts.map +0 -1
  1357. package/dist/mcp/lib/gate-validators.js +0 -709
  1358. package/dist/mcp/lib/gate-validators.js.map +0 -1
  1359. package/dist/mcp/lib/gateway-meta.d.ts +0 -37
  1360. package/dist/mcp/lib/gateway-meta.d.ts.map +0 -1
  1361. package/dist/mcp/lib/gateway-meta.js +0 -50
  1362. package/dist/mcp/lib/gateway-meta.js.map +0 -1
  1363. package/dist/mcp/lib/manifest-parser.d.ts +0 -61
  1364. package/dist/mcp/lib/manifest-parser.d.ts.map +0 -1
  1365. package/dist/mcp/lib/manifest-parser.js +0 -338
  1366. package/dist/mcp/lib/manifest-parser.js.map +0 -1
  1367. package/dist/mcp/lib/manifest.d.ts +0 -177
  1368. package/dist/mcp/lib/manifest.d.ts.map +0 -1
  1369. package/dist/mcp/lib/manifest.js +0 -301
  1370. package/dist/mcp/lib/manifest.js.map +0 -1
  1371. package/dist/mcp/lib/mode-detector.d.ts +0 -71
  1372. package/dist/mcp/lib/mode-detector.d.ts.map +0 -1
  1373. package/dist/mcp/lib/mode-detector.js +0 -184
  1374. package/dist/mcp/lib/mode-detector.js.map +0 -1
  1375. package/dist/mcp/lib/protocol-enforcement.d.ts +0 -105
  1376. package/dist/mcp/lib/protocol-enforcement.d.ts.map +0 -1
  1377. package/dist/mcp/lib/protocol-enforcement.js +0 -331
  1378. package/dist/mcp/lib/protocol-enforcement.js.map +0 -1
  1379. package/dist/mcp/lib/protocol-rules.d.ts +0 -55
  1380. package/dist/mcp/lib/protocol-rules.d.ts.map +0 -1
  1381. package/dist/mcp/lib/protocol-rules.js +0 -760
  1382. package/dist/mcp/lib/protocol-rules.js.map +0 -1
  1383. package/dist/mcp/lib/rate-limiter.d.ts +0 -110
  1384. package/dist/mcp/lib/rate-limiter.d.ts.map +0 -1
  1385. package/dist/mcp/lib/rate-limiter.js +0 -208
  1386. package/dist/mcp/lib/rate-limiter.js.map +0 -1
  1387. package/dist/mcp/lib/router.d.ts +0 -136
  1388. package/dist/mcp/lib/router.d.ts.map +0 -1
  1389. package/dist/mcp/lib/router.js +0 -298
  1390. package/dist/mcp/lib/router.js.map +0 -1
  1391. package/dist/mcp/lib/schema.d.ts +0 -55
  1392. package/dist/mcp/lib/schema.d.ts.map +0 -1
  1393. package/dist/mcp/lib/schema.js +0 -70
  1394. package/dist/mcp/lib/schema.js.map +0 -1
  1395. package/dist/mcp/lib/security.d.ts +0 -158
  1396. package/dist/mcp/lib/security.d.ts.map +0 -1
  1397. package/dist/mcp/lib/security.js +0 -353
  1398. package/dist/mcp/lib/security.js.map +0 -1
  1399. package/dist/mcp/lib/verification-gates.d.ts +0 -287
  1400. package/dist/mcp/lib/verification-gates.d.ts.map +0 -1
  1401. package/dist/mcp/lib/verification-gates.js +0 -547
  1402. package/dist/mcp/lib/verification-gates.js.map +0 -1
  1403. package/dist/mcp/types/domain.d.ts +0 -29
  1404. package/dist/mcp/types/domain.d.ts.map +0 -1
  1405. package/dist/mcp/types/domain.js +0 -7
  1406. package/dist/mcp/types/domain.js.map +0 -1
  1407. package/dist/mcp/types/error.d.ts +0 -101
  1408. package/dist/mcp/types/error.d.ts.map +0 -1
  1409. package/dist/mcp/types/error.js +0 -148
  1410. package/dist/mcp/types/error.js.map +0 -1
  1411. package/dist/mcp/types/gateway.d.ts +0 -78
  1412. package/dist/mcp/types/gateway.d.ts.map +0 -1
  1413. package/dist/mcp/types/gateway.js +0 -7
  1414. package/dist/mcp/types/gateway.js.map +0 -1
  1415. package/dist/mcp/types/index.d.ts +0 -23
  1416. package/dist/mcp/types/index.d.ts.map +0 -1
  1417. package/dist/mcp/types/index.js +0 -11
  1418. package/dist/mcp/types/index.js.map +0 -1
  1419. package/dist/mcp/types/operations/issues.d.ts +0 -3
  1420. package/dist/mcp/types/operations/issues.d.ts.map +0 -1
  1421. package/dist/mcp/types/operations/issues.js +0 -3
  1422. package/dist/mcp/types/operations/issues.js.map +0 -1
  1423. package/dist/mcp/types/operations/lifecycle.d.ts +0 -3
  1424. package/dist/mcp/types/operations/lifecycle.d.ts.map +0 -1
  1425. package/dist/mcp/types/operations/lifecycle.js +0 -3
  1426. package/dist/mcp/types/operations/lifecycle.js.map +0 -1
  1427. package/dist/mcp/types/operations/orchestrate.d.ts +0 -3
  1428. package/dist/mcp/types/operations/orchestrate.d.ts.map +0 -1
  1429. package/dist/mcp/types/operations/orchestrate.js +0 -3
  1430. package/dist/mcp/types/operations/orchestrate.js.map +0 -1
  1431. package/dist/mcp/types/operations/release.d.ts +0 -3
  1432. package/dist/mcp/types/operations/release.d.ts.map +0 -1
  1433. package/dist/mcp/types/operations/release.js +0 -3
  1434. package/dist/mcp/types/operations/release.js.map +0 -1
  1435. package/dist/mcp/types/operations/research.d.ts +0 -3
  1436. package/dist/mcp/types/operations/research.d.ts.map +0 -1
  1437. package/dist/mcp/types/operations/research.js +0 -3
  1438. package/dist/mcp/types/operations/research.js.map +0 -1
  1439. package/dist/mcp/types/operations/session.d.ts +0 -3
  1440. package/dist/mcp/types/operations/session.d.ts.map +0 -1
  1441. package/dist/mcp/types/operations/session.js +0 -3
  1442. package/dist/mcp/types/operations/session.js.map +0 -1
  1443. package/dist/mcp/types/operations/skills.d.ts +0 -3
  1444. package/dist/mcp/types/operations/skills.d.ts.map +0 -1
  1445. package/dist/mcp/types/operations/skills.js +0 -3
  1446. package/dist/mcp/types/operations/skills.js.map +0 -1
  1447. package/dist/mcp/types/operations/system.d.ts +0 -3
  1448. package/dist/mcp/types/operations/system.d.ts.map +0 -1
  1449. package/dist/mcp/types/operations/system.js +0 -3
  1450. package/dist/mcp/types/operations/system.js.map +0 -1
  1451. package/dist/mcp/types/operations/tasks.d.ts +0 -3
  1452. package/dist/mcp/types/operations/tasks.d.ts.map +0 -1
  1453. package/dist/mcp/types/operations/tasks.js +0 -3
  1454. package/dist/mcp/types/operations/tasks.js.map +0 -1
  1455. package/dist/mcp/types/operations/validate.d.ts +0 -3
  1456. package/dist/mcp/types/operations/validate.d.ts.map +0 -1
  1457. package/dist/mcp/types/operations/validate.js +0 -3
  1458. package/dist/mcp/types/operations/validate.js.map +0 -1
  1459. package/dist/scripts/migrate-todo-to-tasks.d.ts +0 -46
  1460. package/dist/scripts/migrate-todo-to-tasks.d.ts.map +0 -1
  1461. package/dist/scripts/migrate-todo-to-tasks.js +0 -379
  1462. package/dist/scripts/migrate-todo-to-tasks.js.map +0 -1
  1463. package/dist/store/atomic.d.ts +0 -75
  1464. package/dist/store/atomic.d.ts.map +0 -1
  1465. package/dist/store/atomic.js +0 -167
  1466. package/dist/store/atomic.js.map +0 -1
  1467. package/dist/store/backup.d.ts +0 -21
  1468. package/dist/store/backup.d.ts.map +0 -1
  1469. package/dist/store/backup.js +0 -94
  1470. package/dist/store/backup.js.map +0 -1
  1471. package/dist/store/cache.d.ts +0 -67
  1472. package/dist/store/cache.d.ts.map +0 -1
  1473. package/dist/store/cache.js +0 -168
  1474. package/dist/store/cache.js.map +0 -1
  1475. package/dist/store/data-accessor.d.ts +0 -77
  1476. package/dist/store/data-accessor.d.ts.map +0 -1
  1477. package/dist/store/data-accessor.js +0 -149
  1478. package/dist/store/data-accessor.js.map +0 -1
  1479. package/dist/store/data-safety-central.d.ts +0 -103
  1480. package/dist/store/data-safety-central.d.ts.map +0 -1
  1481. package/dist/store/data-safety-central.js +0 -291
  1482. package/dist/store/data-safety-central.js.map +0 -1
  1483. package/dist/store/data-safety.d.ts +0 -93
  1484. package/dist/store/data-safety.d.ts.map +0 -1
  1485. package/dist/store/data-safety.js +0 -298
  1486. package/dist/store/data-safety.js.map +0 -1
  1487. package/dist/store/export.d.ts +0 -87
  1488. package/dist/store/export.d.ts.map +0 -1
  1489. package/dist/store/export.js +0 -153
  1490. package/dist/store/export.js.map +0 -1
  1491. package/dist/store/git-checkpoint.d.ts +0 -65
  1492. package/dist/store/git-checkpoint.d.ts.map +0 -1
  1493. package/dist/store/git-checkpoint.js +0 -304
  1494. package/dist/store/git-checkpoint.js.map +0 -1
  1495. package/dist/store/import-logging.d.ts +0 -58
  1496. package/dist/store/import-logging.d.ts.map +0 -1
  1497. package/dist/store/import-logging.js +0 -139
  1498. package/dist/store/import-logging.js.map +0 -1
  1499. package/dist/store/import-remap.d.ts +0 -50
  1500. package/dist/store/import-remap.d.ts.map +0 -1
  1501. package/dist/store/import-remap.js +0 -145
  1502. package/dist/store/import-remap.js.map +0 -1
  1503. package/dist/store/import-sort.d.ts +0 -35
  1504. package/dist/store/import-sort.d.ts.map +0 -1
  1505. package/dist/store/import-sort.js +0 -123
  1506. package/dist/store/import-sort.js.map +0 -1
  1507. package/dist/store/index.d.ts +0 -28
  1508. package/dist/store/index.d.ts.map +0 -1
  1509. package/dist/store/index.js +0 -28
  1510. package/dist/store/index.js.map +0 -1
  1511. package/dist/store/json-data-accessor.d.ts +0 -16
  1512. package/dist/store/json-data-accessor.d.ts.map +0 -1
  1513. package/dist/store/json-data-accessor.js +0 -68
  1514. package/dist/store/json-data-accessor.js.map +0 -1
  1515. package/dist/store/json-provider.d.ts +0 -23
  1516. package/dist/store/json-provider.d.ts.map +0 -1
  1517. package/dist/store/json-provider.js +0 -263
  1518. package/dist/store/json-provider.js.map +0 -1
  1519. package/dist/store/json.d.ts +0 -57
  1520. package/dist/store/json.d.ts.map +0 -1
  1521. package/dist/store/json.js +0 -198
  1522. package/dist/store/json.js.map +0 -1
  1523. package/dist/store/lock.d.ts +0 -29
  1524. package/dist/store/lock.d.ts.map +0 -1
  1525. package/dist/store/lock.js +0 -70
  1526. package/dist/store/lock.js.map +0 -1
  1527. package/dist/store/migration-sqlite.d.ts +0 -68
  1528. package/dist/store/migration-sqlite.d.ts.map +0 -1
  1529. package/dist/store/migration-sqlite.js +0 -742
  1530. package/dist/store/migration-sqlite.js.map +0 -1
  1531. package/dist/store/project-detect.d.ts +0 -24
  1532. package/dist/store/project-detect.d.ts.map +0 -1
  1533. package/dist/store/project-detect.js +0 -93
  1534. package/dist/store/project-detect.js.map +0 -1
  1535. package/dist/store/project-registry.d.ts +0 -113
  1536. package/dist/store/project-registry.d.ts.map +0 -1
  1537. package/dist/store/project-registry.js +0 -194
  1538. package/dist/store/project-registry.js.map +0 -1
  1539. package/dist/store/provider.d.ts +0 -162
  1540. package/dist/store/provider.d.ts.map +0 -1
  1541. package/dist/store/provider.js +0 -319
  1542. package/dist/store/provider.js.map +0 -1
  1543. package/dist/store/safety-data-accessor.d.ts +0 -99
  1544. package/dist/store/safety-data-accessor.d.ts.map +0 -1
  1545. package/dist/store/safety-data-accessor.js +0 -167
  1546. package/dist/store/safety-data-accessor.js.map +0 -1
  1547. package/dist/store/schema.d.ts +0 -1094
  1548. package/dist/store/schema.d.ts.map +0 -1
  1549. package/dist/store/schema.js +0 -114
  1550. package/dist/store/schema.js.map +0 -1
  1551. package/dist/store/session-store.d.ts +0 -42
  1552. package/dist/store/session-store.d.ts.map +0 -1
  1553. package/dist/store/session-store.js +0 -227
  1554. package/dist/store/session-store.js.map +0 -1
  1555. package/dist/store/sqlite-data-accessor.d.ts +0 -24
  1556. package/dist/store/sqlite-data-accessor.d.ts.map +0 -1
  1557. package/dist/store/sqlite-data-accessor.js +0 -564
  1558. package/dist/store/sqlite-data-accessor.js.map +0 -1
  1559. package/dist/store/sqlite.d.ts +0 -51
  1560. package/dist/store/sqlite.d.ts.map +0 -1
  1561. package/dist/store/sqlite.js +0 -235
  1562. package/dist/store/sqlite.js.map +0 -1
  1563. package/dist/store/task-store.d.ts +0 -70
  1564. package/dist/store/task-store.d.ts.map +0 -1
  1565. package/dist/store/task-store.js +0 -401
  1566. package/dist/store/task-store.js.map +0 -1
  1567. package/dist/types/config.d.ts +0 -59
  1568. package/dist/types/config.d.ts.map +0 -1
  1569. package/dist/types/config.js +0 -8
  1570. package/dist/types/config.js.map +0 -1
  1571. package/dist/types/exit-codes.d.ts +0 -102
  1572. package/dist/types/exit-codes.d.ts.map +0 -1
  1573. package/dist/types/exit-codes.js +0 -150
  1574. package/dist/types/exit-codes.js.map +0 -1
  1575. package/dist/types/index.d.ts +0 -11
  1576. package/dist/types/index.d.ts.map +0 -1
  1577. package/dist/types/index.js +0 -11
  1578. package/dist/types/index.js.map +0 -1
  1579. package/dist/types/lafs.d.ts +0 -77
  1580. package/dist/types/lafs.d.ts.map +0 -1
  1581. package/dist/types/lafs.js +0 -28
  1582. package/dist/types/lafs.js.map +0 -1
  1583. package/dist/types/operations/issues.d.ts +0 -75
  1584. package/dist/types/operations/issues.d.ts.map +0 -1
  1585. package/dist/types/operations/issues.js +0 -10
  1586. package/dist/types/operations/issues.js.map +0 -1
  1587. package/dist/types/operations/lifecycle.d.ts +0 -140
  1588. package/dist/types/operations/lifecycle.d.ts.map +0 -1
  1589. package/dist/types/operations/lifecycle.js +0 -8
  1590. package/dist/types/operations/lifecycle.js.map +0 -1
  1591. package/dist/types/operations/orchestrate.d.ts +0 -187
  1592. package/dist/types/operations/orchestrate.d.ts.map +0 -1
  1593. package/dist/types/operations/orchestrate.js +0 -8
  1594. package/dist/types/operations/orchestrate.js.map +0 -1
  1595. package/dist/types/operations/release.d.ts +0 -97
  1596. package/dist/types/operations/release.d.ts.map +0 -1
  1597. package/dist/types/operations/release.js +0 -7
  1598. package/dist/types/operations/release.js.map +0 -1
  1599. package/dist/types/operations/research.d.ts +0 -122
  1600. package/dist/types/operations/research.d.ts.map +0 -1
  1601. package/dist/types/operations/research.js +0 -8
  1602. package/dist/types/operations/research.js.map +0 -1
  1603. package/dist/types/operations/session.d.ts +0 -93
  1604. package/dist/types/operations/session.d.ts.map +0 -1
  1605. package/dist/types/operations/session.js +0 -12
  1606. package/dist/types/operations/session.js.map +0 -1
  1607. package/dist/types/operations/skills.d.ts +0 -182
  1608. package/dist/types/operations/skills.d.ts.map +0 -1
  1609. package/dist/types/operations/skills.js +0 -10
  1610. package/dist/types/operations/skills.js.map +0 -1
  1611. package/dist/types/operations/system.d.ts +0 -147
  1612. package/dist/types/operations/system.d.ts.map +0 -1
  1613. package/dist/types/operations/system.js +0 -8
  1614. package/dist/types/operations/system.js.map +0 -1
  1615. package/dist/types/operations/tasks.d.ts +0 -219
  1616. package/dist/types/operations/tasks.d.ts.map +0 -1
  1617. package/dist/types/operations/tasks.js +0 -13
  1618. package/dist/types/operations/tasks.js.map +0 -1
  1619. package/dist/types/operations/validate.d.ts +0 -170
  1620. package/dist/types/operations/validate.d.ts.map +0 -1
  1621. package/dist/types/operations/validate.js +0 -8
  1622. package/dist/types/operations/validate.js.map +0 -1
  1623. package/dist/types/session.d.ts +0 -48
  1624. package/dist/types/session.d.ts.map +0 -1
  1625. package/dist/types/session.js +0 -8
  1626. package/dist/types/session.js.map +0 -1
  1627. package/dist/types/task.d.ts +0 -160
  1628. package/dist/types/task.d.ts.map +0 -1
  1629. package/dist/types/task.js +0 -7
  1630. package/dist/types/task.js.map +0 -1
  1631. package/schemas/sessions.schema.json +0 -406
@@ -1,1840 +0,0 @@
1
- /**
2
- * Task Engine
3
- *
4
- * Native TypeScript implementation of core task CRUD operations.
5
- * Uses StoreProvider (via getStore()) for task/session data access,
6
- * falling back to direct JSON for config and specialized operations.
7
- *
8
- * Supports: show, get, list, find, exists, create/add, update, complete, delete, archive
9
- *
10
- * @task T4657
11
- * @epic T4654
12
- */
13
- import { readJsonFile, readLogFileEntries, getDataPath } from './store.js';
14
- import { getAccessor } from '../../store/data-accessor.js';
15
- // validation-rules.js still used by other engines; core modules handle their own validation
16
- // Core module imports for accessor-based operations
17
- import { addTask as coreAddTask } from '../../core/tasks/add.js';
18
- import { updateTask as coreUpdateTask } from '../../core/tasks/update.js';
19
- import { deleteTask as coreDeleteTask } from '../../core/tasks/delete.js';
20
- import { archiveTasks as coreArchiveTasks } from '../../core/tasks/archive.js';
21
- import { showTask as coreShowTask } from '../../core/tasks/show.js';
22
- import { listTasks as coreListTasks } from '../../core/tasks/list.js';
23
- import { findTasks as coreFindTasks } from '../../core/tasks/find.js';
24
- /**
25
- * Read hierarchy limits from .cleo/config.json.
26
- * Falls back to defaults if config is missing or unset.
27
- */
28
- function getHierarchyLimits(projectRoot) {
29
- const configPath = getDataPath(projectRoot, 'config.json');
30
- const config = readJsonFile(configPath);
31
- let maxDepth = 3;
32
- let maxSiblings = 7;
33
- if (config) {
34
- const hierarchy = config.hierarchy;
35
- if (hierarchy) {
36
- if (typeof hierarchy.maxDepth === 'number')
37
- maxDepth = hierarchy.maxDepth;
38
- if (typeof hierarchy.maxSiblings === 'number')
39
- maxSiblings = hierarchy.maxSiblings;
40
- }
41
- }
42
- return { maxDepth, maxSiblings };
43
- }
44
- /**
45
- * Load all tasks via DataAccessor.
46
- * Returns Task[] from the accessor abstraction layer.
47
- *
48
- * @task T4657
49
- * @epic T4654
50
- */
51
- async function loadAllTasksAsync(projectRoot) {
52
- const accessor = await getAccessor(projectRoot);
53
- const data = await accessor.loadTodoFile();
54
- return data.tasks;
55
- }
56
- /**
57
- * Convert a core Task to a TaskRecord for backward compatibility.
58
- * TaskRecord has string-typed status/priority; Task has union types.
59
- *
60
- * @task T4657
61
- * @epic T4654
62
- */
63
- function taskToRecord(task) {
64
- return task;
65
- }
66
- /**
67
- * Convert an array of core Tasks to TaskRecords.
68
- *
69
- * @task T4657
70
- * @epic T4654
71
- */
72
- function tasksToRecords(tasks) {
73
- return tasks;
74
- }
75
- // loadTodoFile and saveTodoFile removed — all operations now use DataAccessor.
76
- // Config reads (hierarchy limits, phase meta) still use readJsonFile directly
77
- // since they are NOT domain data (they don't go through the accessor).
78
- // Priority normalization moved to core/tasks/add.ts (normalizePriority)
79
- // ===== Query Operations =====
80
- /**
81
- * Get a single task by ID
82
- * @task T4657
83
- * @epic T4654
84
- */
85
- export async function taskShow(projectRoot, taskId) {
86
- try {
87
- const accessor = await getAccessor(projectRoot);
88
- const detail = await coreShowTask(taskId, projectRoot, accessor);
89
- return { success: true, data: taskToRecord(detail) };
90
- }
91
- catch (err) {
92
- const code = err?.code;
93
- if (code === 5 /* NOT_FOUND */) {
94
- return {
95
- success: false,
96
- error: { code: 'E_NOT_FOUND', message: `Task '${taskId}' not found` },
97
- };
98
- }
99
- return { success: false, error: { code: 'E_NOT_INITIALIZED', message: 'No todo.json found' } };
100
- }
101
- }
102
- /**
103
- * List tasks with optional filters
104
- * @task T4657
105
- * @epic T4654
106
- */
107
- export async function taskList(projectRoot, params) {
108
- try {
109
- const accessor = await getAccessor(projectRoot);
110
- const result = await coreListTasks({
111
- parentId: params?.parent ?? undefined,
112
- status: params?.status,
113
- limit: params?.limit,
114
- }, projectRoot, accessor);
115
- return { success: true, data: tasksToRecords(result.tasks) };
116
- }
117
- catch {
118
- return { success: false, error: { code: 'E_NOT_INITIALIZED', message: 'No todo.json found' } };
119
- }
120
- }
121
- /**
122
- * Fuzzy search tasks by title/description/ID
123
- * @task T4657
124
- * @epic T4654
125
- */
126
- export async function taskFind(projectRoot, query, limit) {
127
- try {
128
- const accessor = await getAccessor(projectRoot);
129
- const findResult = await coreFindTasks({
130
- query,
131
- limit: limit ?? 20,
132
- }, projectRoot, accessor);
133
- const results = findResult.results.map((r) => ({
134
- id: r.id,
135
- title: r.title,
136
- status: r.status,
137
- priority: r.priority,
138
- parentId: r.parentId,
139
- }));
140
- return { success: true, data: results };
141
- }
142
- catch {
143
- return { success: false, error: { code: 'E_NOT_INITIALIZED', message: 'No todo.json found' } };
144
- }
145
- }
146
- /**
147
- * Check if a task exists
148
- * @task T4657
149
- * @epic T4654
150
- */
151
- export async function taskExists(projectRoot, taskId) {
152
- try {
153
- const accessor = await getAccessor(projectRoot);
154
- const data = await accessor.loadTodoFile();
155
- const exists = data.tasks.some((t) => t.id === taskId);
156
- return { success: true, data: { exists, taskId } };
157
- }
158
- catch {
159
- return { success: true, data: { exists: false, taskId } };
160
- }
161
- }
162
- // ===== Mutate Operations =====
163
- /**
164
- * Create a new task
165
- */
166
- export async function taskCreate(projectRoot, params) {
167
- try {
168
- const accessor = await getAccessor(projectRoot);
169
- const result = await coreAddTask({
170
- title: params.title,
171
- description: params.description,
172
- parentId: params.parent || null,
173
- depends: params.depends,
174
- priority: params.priority || 'medium',
175
- labels: params.labels,
176
- type: params.type || undefined,
177
- }, projectRoot, accessor);
178
- if (result.duplicate) {
179
- return {
180
- success: true,
181
- data: taskToRecord(result.task),
182
- };
183
- }
184
- return { success: true, data: taskToRecord(result.task) };
185
- }
186
- catch (err) {
187
- const cleoErr = err;
188
- // Map CleoError exit codes to engine error codes
189
- if (cleoErr.code === 7 /* PARENT_NOT_FOUND */) {
190
- return { success: false, error: { code: 'E_PARENT_NOT_FOUND', message: cleoErr.message ?? 'Parent task not found' } };
191
- }
192
- if (cleoErr.code === 9 /* DEPTH_EXCEEDED */) {
193
- return { success: false, error: { code: 'E_DEPTH_EXCEEDED', message: cleoErr.message ?? 'Max hierarchy depth exceeded' } };
194
- }
195
- if (cleoErr.code === 10 /* SIBLING_LIMIT */) {
196
- return { success: false, error: { code: 'E_SIBLING_LIMIT', message: cleoErr.message ?? 'Max siblings exceeded' } };
197
- }
198
- if (cleoErr.code === 4 /* VALIDATION_ERROR */ || cleoErr.code === 3 /* INVALID_INPUT */) {
199
- return { success: false, error: { code: 'E_VALIDATION_FAILED', message: cleoErr.message ?? 'Validation failed' } };
200
- }
201
- return { success: false, error: { code: 'E_NOT_INITIALIZED', message: cleoErr.message ?? 'No valid todo.json found' } };
202
- }
203
- }
204
- /**
205
- * Update a task
206
- */
207
- export async function taskUpdate(projectRoot, taskId, updates) {
208
- try {
209
- const accessor = await getAccessor(projectRoot);
210
- const result = await coreUpdateTask({
211
- taskId,
212
- title: updates.title,
213
- description: updates.description,
214
- status: updates.status,
215
- priority: updates.priority,
216
- notes: updates.notes,
217
- labels: updates.labels,
218
- addLabels: updates.addLabels,
219
- removeLabels: updates.removeLabels,
220
- depends: updates.depends,
221
- addDepends: updates.addDepends,
222
- removeDepends: updates.removeDepends,
223
- acceptance: updates.acceptance,
224
- parentId: updates.parent,
225
- type: updates.type,
226
- size: updates.size,
227
- }, projectRoot, accessor);
228
- return { success: true, data: taskToRecord(result.task) };
229
- }
230
- catch (err) {
231
- const cleoErr = err;
232
- if (cleoErr.code === 5 /* NOT_FOUND */) {
233
- return { success: false, error: { code: 'E_NOT_FOUND', message: cleoErr.message ?? `Task '${taskId}' not found` } };
234
- }
235
- if (cleoErr.code === 4 /* VALIDATION_ERROR */ || cleoErr.code === 3 /* INVALID_INPUT */) {
236
- return { success: false, error: { code: 'E_VALIDATION_FAILED', message: cleoErr.message ?? 'Validation failed' } };
237
- }
238
- if (cleoErr.code === 50 /* NO_CHANGE */) {
239
- return { success: false, error: { code: 'E_NO_CHANGE', message: cleoErr.message ?? 'No changes specified' } };
240
- }
241
- return { success: false, error: { code: 'E_NOT_INITIALIZED', message: cleoErr.message ?? 'No valid todo.json found' } };
242
- }
243
- }
244
- /**
245
- * Complete a task (set status to done)
246
- */
247
- export async function taskComplete(projectRoot, taskId, notes) {
248
- return taskUpdate(projectRoot, taskId, {
249
- status: 'done',
250
- notes: notes || undefined,
251
- });
252
- }
253
- /**
254
- * Delete a task
255
- */
256
- export async function taskDelete(projectRoot, taskId, force) {
257
- try {
258
- const accessor = await getAccessor(projectRoot);
259
- await coreDeleteTask({
260
- taskId,
261
- force: force ?? false,
262
- cascade: force ?? false,
263
- }, projectRoot, accessor);
264
- return { success: true, data: { deleted: true, taskId } };
265
- }
266
- catch (err) {
267
- const cleoErr = err;
268
- if (cleoErr.code === 5 /* NOT_FOUND */) {
269
- return { success: false, error: { code: 'E_NOT_FOUND', message: cleoErr.message ?? `Task '${taskId}' not found` } };
270
- }
271
- if (cleoErr.code === 11 /* HAS_CHILDREN */) {
272
- return { success: false, error: { code: 'E_HAS_CHILDREN', message: cleoErr.message ?? `Task '${taskId}' has children` } };
273
- }
274
- return { success: false, error: { code: 'E_NOT_INITIALIZED', message: cleoErr.message ?? 'No valid todo.json found' } };
275
- }
276
- }
277
- /**
278
- * Archive completed tasks.
279
- * Moves done/cancelled tasks from todo.json to todo-archive.json.
280
- */
281
- export async function taskArchive(projectRoot, taskId, before) {
282
- try {
283
- const accessor = await getAccessor(projectRoot);
284
- const result = await coreArchiveTasks({
285
- taskIds: taskId ? [taskId] : undefined,
286
- before,
287
- }, projectRoot, accessor);
288
- return {
289
- success: true,
290
- data: { archived: result.archived.length, taskIds: result.archived },
291
- };
292
- }
293
- catch (err) {
294
- const cleoErr = err;
295
- if (cleoErr.code === 5 /* NOT_FOUND */) {
296
- return { success: false, error: { code: 'E_NOT_FOUND', message: cleoErr.message ?? `Task not found` } };
297
- }
298
- return { success: false, error: { code: 'E_NOT_INITIALIZED', message: cleoErr.message ?? 'No valid todo.json found' } };
299
- }
300
- }
301
- // ===== Scoring & Analysis Operations =====
302
- /**
303
- * Priority score weights for task scoring
304
- */
305
- const PRIORITY_SCORE = {
306
- critical: 100,
307
- high: 75,
308
- medium: 50,
309
- low: 25,
310
- };
311
- /**
312
- * Check if all dependencies of a task are satisfied (done/cancelled).
313
- */
314
- function depsReady(task, taskMap) {
315
- if (!task.depends || task.depends.length === 0)
316
- return true;
317
- return task.depends.every((depId) => {
318
- const dep = taskMap.get(depId);
319
- return dep && (dep.status === 'done' || dep.status === 'cancelled');
320
- });
321
- }
322
- /**
323
- * Suggest next task to work on based on priority, phase alignment, age, and dependency readiness.
324
- * @task T4657
325
- * @epic T4654
326
- */
327
- export async function taskNext(projectRoot, params) {
328
- let allTasks;
329
- try {
330
- const tasks = await loadAllTasksAsync(projectRoot);
331
- allTasks = tasksToRecords(tasks);
332
- }
333
- catch {
334
- return { success: false, error: { code: 'E_NOT_INITIALIZED', message: 'No todo.json found' } };
335
- }
336
- const taskMap = new Map(allTasks.map((t) => [t.id, t]));
337
- // Read current phase from config (not domain data - keep as direct JSON)
338
- const todoPath = getDataPath(projectRoot, 'todo.json');
339
- const todoMeta = readJsonFile(todoPath);
340
- const currentPhase = todoMeta?.project?.currentPhase;
341
- // Filter candidates: pending, deps ready
342
- const candidates = allTasks.filter((t) => t.status === 'pending' && depsReady(t, taskMap));
343
- if (candidates.length === 0) {
344
- return {
345
- success: true,
346
- data: {
347
- suggestions: [],
348
- totalCandidates: 0,
349
- },
350
- };
351
- }
352
- // Score each candidate
353
- const scored = candidates.map((task) => {
354
- const reasons = [];
355
- let score = 0;
356
- // Priority score
357
- score += PRIORITY_SCORE[task.priority] ?? 50;
358
- reasons.push(`priority: ${task.priority} (+${PRIORITY_SCORE[task.priority] ?? 50})`);
359
- // Phase alignment bonus
360
- if (currentPhase && task.phase === currentPhase) {
361
- score += 20;
362
- reasons.push(`phase alignment: ${currentPhase} (+20)`);
363
- }
364
- // Dependencies ready bonus
365
- if (depsReady(task, taskMap)) {
366
- score += 10;
367
- reasons.push('all dependencies satisfied (+10)');
368
- }
369
- // Age bonus (older tasks get slight priority)
370
- if (task.createdAt) {
371
- const ageMs = Date.now() - new Date(task.createdAt).getTime();
372
- const ageDays = ageMs / (1000 * 60 * 60 * 24);
373
- if (ageDays > 7) {
374
- const ageBonus = Math.min(15, Math.floor(ageDays / 7));
375
- score += ageBonus;
376
- reasons.push(`age: ${Math.floor(ageDays)} days (+${ageBonus})`);
377
- }
378
- }
379
- return { task, score, reasons };
380
- }).sort((a, b) => b.score - a.score);
381
- const count = Math.min(params?.count || 1, scored.length);
382
- const explain = params?.explain ?? false;
383
- const suggestions = scored.slice(0, count).map(({ task, score, reasons }) => ({
384
- id: task.id,
385
- title: task.title,
386
- priority: task.priority,
387
- phase: task.phase ?? null,
388
- score,
389
- ...(explain && { reasons }),
390
- }));
391
- return {
392
- success: true,
393
- data: {
394
- suggestions,
395
- totalCandidates: candidates.length,
396
- },
397
- };
398
- }
399
- // ===== Blocking Chain Operations =====
400
- /**
401
- * Build blocking chain for a task recursively.
402
- */
403
- function buildBlockingChain(task, taskMap, visited = new Set()) {
404
- const chain = [];
405
- if (visited.has(task.id))
406
- return chain;
407
- visited.add(task.id);
408
- if (task.depends) {
409
- for (const depId of task.depends) {
410
- const dep = taskMap.get(depId);
411
- if (dep && dep.status !== 'done' && dep.status !== 'cancelled') {
412
- chain.push(depId);
413
- chain.push(...buildBlockingChain(dep, taskMap, visited));
414
- }
415
- }
416
- }
417
- return chain;
418
- }
419
- /**
420
- * Show blocked tasks and analyze blocking chains.
421
- * @task T4657
422
- * @epic T4654
423
- */
424
- export async function taskBlockers(projectRoot, params) {
425
- let allTasks;
426
- try {
427
- const tasks = await loadAllTasksAsync(projectRoot);
428
- allTasks = tasksToRecords(tasks);
429
- }
430
- catch {
431
- return { success: false, error: { code: 'E_NOT_INITIALIZED', message: 'No todo.json found' } };
432
- }
433
- const taskMap = new Map(allTasks.map((t) => [t.id, t]));
434
- const analyze = params?.analyze ?? false;
435
- // Find tasks with status 'blocked'
436
- const blockedTasks = allTasks.filter((t) => t.status === 'blocked');
437
- // Find pending tasks with unsatisfied dependencies
438
- const depBlockedTasks = allTasks.filter((t) => t.status === 'pending' &&
439
- t.depends &&
440
- t.depends.length > 0 &&
441
- t.depends.some((depId) => {
442
- const dep = taskMap.get(depId);
443
- return dep && dep.status !== 'done' && dep.status !== 'cancelled';
444
- }));
445
- const blockerInfos = [
446
- ...blockedTasks.map((t) => ({
447
- id: t.id,
448
- title: t.title,
449
- status: t.status,
450
- depends: t.depends,
451
- blockingChain: analyze ? buildBlockingChain(t, taskMap) : [],
452
- })),
453
- ...depBlockedTasks
454
- .filter((t) => !blockedTasks.some((bt) => bt.id === t.id))
455
- .map((t) => ({
456
- id: t.id,
457
- title: t.title,
458
- status: t.status,
459
- depends: t.depends,
460
- blockingChain: analyze ? buildBlockingChain(t, taskMap) : [],
461
- })),
462
- ];
463
- // Find critical blockers (tasks that block the most others)
464
- const blockerCounts = new Map();
465
- for (const info of blockerInfos) {
466
- for (const depId of info.blockingChain) {
467
- blockerCounts.set(depId, (blockerCounts.get(depId) ?? 0) + 1);
468
- }
469
- }
470
- const criticalBlockers = [...blockerCounts.entries()]
471
- .sort((a, b) => b[1] - a[1])
472
- .slice(0, 5)
473
- .map(([id, count]) => {
474
- const task = taskMap.get(id);
475
- return { id, title: task?.title ?? 'Unknown', blocksCount: count };
476
- });
477
- return {
478
- success: true,
479
- data: {
480
- blockedTasks: blockerInfos,
481
- criticalBlockers,
482
- summary: blockerInfos.length === 0
483
- ? 'No blocked tasks found'
484
- : `${blockerInfos.length} blocked task(s)`,
485
- },
486
- };
487
- }
488
- /**
489
- * Build a tree node recursively from a task
490
- */
491
- function buildTreeNode(task, childrenMap) {
492
- const children = (childrenMap.get(task.id) ?? []).map((child) => buildTreeNode(child, childrenMap));
493
- return {
494
- id: task.id,
495
- title: task.title,
496
- status: task.status,
497
- type: task.type,
498
- children,
499
- };
500
- }
501
- /**
502
- * Build hierarchy tree. If taskId is provided, build subtree rooted at that task.
503
- * Otherwise, build full tree from all root tasks.
504
- * @task T4657
505
- * @epic T4654
506
- */
507
- export async function taskTree(projectRoot, taskId) {
508
- let allTasks;
509
- try {
510
- const tasks = await loadAllTasksAsync(projectRoot);
511
- allTasks = tasksToRecords(tasks);
512
- }
513
- catch {
514
- return { success: false, error: { code: 'E_NOT_INITIALIZED', message: 'No todo.json found' } };
515
- }
516
- if (taskId) {
517
- const task = allTasks.find((t) => t.id === taskId);
518
- if (!task) {
519
- return {
520
- success: false,
521
- error: { code: 'E_NOT_FOUND', message: `Task '${taskId}' not found` },
522
- };
523
- }
524
- }
525
- // Build children lookup
526
- const childrenMap = new Map();
527
- for (const task of allTasks) {
528
- const parentKey = task.parentId ?? '__root__';
529
- if (!childrenMap.has(parentKey)) {
530
- childrenMap.set(parentKey, []);
531
- }
532
- childrenMap.get(parentKey).push(task);
533
- }
534
- let roots;
535
- if (taskId) {
536
- const rootTask = allTasks.find((t) => t.id === taskId);
537
- roots = [rootTask];
538
- }
539
- else {
540
- roots = childrenMap.get('__root__') ?? [];
541
- }
542
- const tree = roots.map((root) => buildTreeNode(root, childrenMap));
543
- // Count total nodes
544
- function countNodes(nodes) {
545
- let count = nodes.length;
546
- for (const node of nodes) {
547
- count += countNodes(node.children);
548
- }
549
- return count;
550
- }
551
- return {
552
- success: true,
553
- data: { tree, totalNodes: countNodes(tree) },
554
- };
555
- }
556
- // ===== Dependency Operations =====
557
- /**
558
- * Show dependencies for a task - both what it depends on and what depends on it.
559
- * @task T4657
560
- * @epic T4654
561
- */
562
- export async function taskDeps(projectRoot, taskId) {
563
- let allTasks;
564
- try {
565
- const tasks = await loadAllTasksAsync(projectRoot);
566
- allTasks = tasksToRecords(tasks);
567
- }
568
- catch {
569
- return { success: false, error: { code: 'E_NOT_INITIALIZED', message: 'No todo.json found' } };
570
- }
571
- const task = allTasks.find((t) => t.id === taskId);
572
- if (!task) {
573
- return {
574
- success: false,
575
- error: { code: 'E_NOT_FOUND', message: `Task '${taskId}' not found` },
576
- };
577
- }
578
- const taskMap = new Map(allTasks.map((t) => [t.id, t]));
579
- const completedIds = new Set(allTasks.filter((t) => t.status === 'done' || t.status === 'cancelled').map((t) => t.id));
580
- // What this task depends on
581
- const dependsOn = (task.depends ?? [])
582
- .map((depId) => {
583
- const dep = taskMap.get(depId);
584
- return dep ? { id: dep.id, title: dep.title, status: dep.status } : null;
585
- })
586
- .filter((d) => d !== null);
587
- // What depends on this task
588
- const dependedOnBy = allTasks
589
- .filter((t) => t.depends?.includes(taskId))
590
- .map((t) => ({ id: t.id, title: t.title, status: t.status }));
591
- // Unresolved deps
592
- const unresolvedDeps = (task.depends ?? []).filter((depId) => !completedIds.has(depId));
593
- return {
594
- success: true,
595
- data: {
596
- taskId,
597
- dependsOn,
598
- dependedOnBy,
599
- unresolvedDeps,
600
- allDepsReady: unresolvedDeps.length === 0,
601
- },
602
- };
603
- }
604
- // ===== Relation Operations =====
605
- /**
606
- * Show task relations (existing relates entries).
607
- * @task T4657
608
- * @epic T4654
609
- */
610
- export async function taskRelates(projectRoot, taskId) {
611
- let allTasks;
612
- try {
613
- const tasks = await loadAllTasksAsync(projectRoot);
614
- allTasks = tasksToRecords(tasks);
615
- }
616
- catch {
617
- return { success: false, error: { code: 'E_NOT_INITIALIZED', message: 'No todo.json found' } };
618
- }
619
- const task = allTasks.find((t) => t.id === taskId);
620
- if (!task) {
621
- return {
622
- success: false,
623
- error: { code: 'E_NOT_FOUND', message: `Task '${taskId}' not found` },
624
- };
625
- }
626
- const relations = task.relates ?? [];
627
- return {
628
- success: true,
629
- data: {
630
- taskId,
631
- relations,
632
- count: relations.length,
633
- },
634
- };
635
- }
636
- /**
637
- * Add a relation between two tasks.
638
- */
639
- export async function taskRelatesAdd(projectRoot, taskId, relatedId, type, reason) {
640
- try {
641
- const accessor = await getAccessor(projectRoot);
642
- const current = await accessor.loadTodoFile();
643
- if (!current || !current.tasks) {
644
- return {
645
- success: false,
646
- error: { code: 'E_NOT_INITIALIZED', message: 'No valid todo.json found' },
647
- };
648
- }
649
- const fromTask = current.tasks.find((t) => t.id === taskId);
650
- if (!fromTask) {
651
- return {
652
- success: false,
653
- error: { code: 'E_NOT_FOUND', message: `Task '${taskId}' not found` },
654
- };
655
- }
656
- const toTask = current.tasks.find((t) => t.id === relatedId);
657
- if (!toTask) {
658
- return {
659
- success: false,
660
- error: { code: 'E_NOT_FOUND', message: `Task '${relatedId}' not found` },
661
- };
662
- }
663
- if (!fromTask.relates) {
664
- fromTask.relates = [];
665
- }
666
- fromTask.relates.push({
667
- taskId: relatedId,
668
- type,
669
- reason: reason || undefined,
670
- });
671
- fromTask.updatedAt = new Date().toISOString();
672
- await accessor.saveTodoFile(current);
673
- return {
674
- success: true,
675
- data: { from: taskId, to: relatedId, type, added: true },
676
- };
677
- }
678
- catch {
679
- return {
680
- success: false,
681
- error: { code: 'E_NOT_INITIALIZED', message: 'Failed to update task relations' },
682
- };
683
- }
684
- }
685
- // ===== Analysis Operations =====
686
- /**
687
- * Analyze a task for description quality, missing fields, and dependency health.
688
- * @task T4657
689
- * @epic T4654
690
- */
691
- export async function taskAnalyze(projectRoot, taskId) {
692
- let allTasks;
693
- try {
694
- const loaded = await loadAllTasksAsync(projectRoot);
695
- allTasks = tasksToRecords(loaded);
696
- }
697
- catch {
698
- return { success: false, error: { code: 'E_NOT_INITIALIZED', message: 'No todo.json found' } };
699
- }
700
- const tasks = taskId
701
- ? allTasks.filter((t) => t.id === taskId || t.parentId === taskId)
702
- : allTasks;
703
- // Build dependency graph: who blocks whom
704
- const blocksMap = {};
705
- for (const task of tasks) {
706
- if (task.depends) {
707
- for (const dep of task.depends) {
708
- if (!blocksMap[dep])
709
- blocksMap[dep] = [];
710
- blocksMap[dep].push(task.id);
711
- }
712
- }
713
- }
714
- // Calculate leverage for each task
715
- const leverageMap = {};
716
- for (const task of tasks) {
717
- leverageMap[task.id] = (blocksMap[task.id] ?? []).length;
718
- }
719
- // Actionable tasks (pending or active)
720
- const actionable = tasks.filter((t) => t.status === 'pending' || t.status === 'active');
721
- const blocked = tasks.filter((t) => t.status === 'blocked');
722
- // Bottlenecks: tasks blocking the most others
723
- const bottlenecks = tasks
724
- .filter((t) => (blocksMap[t.id]?.length ?? 0) > 0 && t.status !== 'done')
725
- .map((t) => ({ id: t.id, title: t.title, blocksCount: blocksMap[t.id].length }))
726
- .sort((a, b) => b.blocksCount - a.blocksCount)
727
- .slice(0, 5);
728
- // Score and tier actionable tasks
729
- const scored = actionable.map((t) => ({
730
- id: t.id,
731
- title: t.title,
732
- leverage: leverageMap[t.id] ?? 0,
733
- priority: t.priority,
734
- }));
735
- scored.sort((a, b) => {
736
- const priorityWeight = { critical: 100, high: 50, medium: 20, low: 5 };
737
- const aScore = (priorityWeight[a.priority ?? 'medium'] ?? 20) + a.leverage * 10;
738
- const bScore = (priorityWeight[b.priority ?? 'medium'] ?? 20) + b.leverage * 10;
739
- return bScore - aScore;
740
- });
741
- const critical = scored.filter((t) => t.priority === 'critical');
742
- const high = scored.filter((t) => t.priority === 'high');
743
- const normal = scored.filter((t) => t.priority !== 'critical' && t.priority !== 'high');
744
- const recommended = scored.length > 0
745
- ? {
746
- id: scored[0].id,
747
- title: scored[0].title,
748
- leverage: scored[0].leverage,
749
- reason: 'Highest combined priority and leverage score',
750
- }
751
- : null;
752
- const totalLeverage = Object.values(leverageMap).reduce((s, v) => s + v, 0);
753
- const avgLeverage = tasks.length > 0
754
- ? Math.round((totalLeverage / tasks.length) * 100) / 100
755
- : 0;
756
- return {
757
- success: true,
758
- data: {
759
- recommended,
760
- bottlenecks,
761
- tiers: {
762
- critical: critical.map(({ id, title, leverage }) => ({ id, title, leverage })),
763
- high: high.map(({ id, title, leverage }) => ({ id, title, leverage })),
764
- normal: normal.slice(0, 10).map(({ id, title, leverage }) => ({ id, title, leverage })),
765
- },
766
- metrics: {
767
- totalTasks: tasks.length,
768
- actionable: actionable.length,
769
- blocked: blocked.length,
770
- avgLeverage,
771
- },
772
- },
773
- };
774
- }
775
- // ===== Status Restoration Operations =====
776
- /**
777
- * Restore a cancelled task back to pending.
778
- */
779
- export async function taskRestore(projectRoot, taskId, params) {
780
- try {
781
- const accessor = await getAccessor(projectRoot);
782
- const current = await accessor.loadTodoFile();
783
- if (!current || !current.tasks) {
784
- return {
785
- success: false,
786
- error: { code: 'E_NOT_INITIALIZED', message: 'No valid todo.json found' },
787
- };
788
- }
789
- const task = current.tasks.find((t) => t.id === taskId);
790
- if (!task) {
791
- return {
792
- success: false,
793
- error: { code: 'E_NOT_FOUND', message: `Task '${taskId}' not found` },
794
- };
795
- }
796
- if (task.status !== 'cancelled') {
797
- return {
798
- success: false,
799
- error: {
800
- code: 'E_INVALID_STATUS',
801
- message: `Task '${taskId}' is not cancelled (status: ${task.status}). Only cancelled tasks can be restored.`,
802
- },
803
- };
804
- }
805
- // Collect tasks to restore (cast to TaskRecord for mutation)
806
- const tasksToRestore = [task];
807
- if (params?.cascade) {
808
- const findCancelledChildren = (parentId) => {
809
- const children = current.tasks.filter((t) => t.parentId === parentId && t.status === 'cancelled');
810
- for (const child of children) {
811
- tasksToRestore.push(child);
812
- findCancelledChildren(child.id);
813
- }
814
- };
815
- findCancelledChildren(taskId);
816
- }
817
- const now = new Date().toISOString();
818
- const restored = [];
819
- for (const t of tasksToRestore) {
820
- t.status = 'pending';
821
- t.cancelledAt = null;
822
- t.cancellationReason = undefined;
823
- t.updatedAt = now;
824
- if (!t.notes)
825
- t.notes = [];
826
- t.notes.push(`[${now}] Restored from cancelled${params?.notes ? ': ' + params.notes : ''}`);
827
- restored.push(t.id);
828
- }
829
- await accessor.saveTodoFile(current);
830
- return {
831
- success: true,
832
- data: { task: taskId, restored, count: restored.length },
833
- };
834
- }
835
- catch {
836
- return {
837
- success: false,
838
- error: { code: 'E_NOT_INITIALIZED', message: 'Failed to restore task' },
839
- };
840
- }
841
- }
842
- /**
843
- * Move an archived task back to todo.json with status 'done' (or specified status).
844
- */
845
- export async function taskUnarchive(projectRoot, taskId, params) {
846
- try {
847
- const accessor = await getAccessor(projectRoot);
848
- const todo = await accessor.loadTodoFile();
849
- if (!todo || !todo.tasks) {
850
- return {
851
- success: false,
852
- error: { code: 'E_NOT_INITIALIZED', message: 'No valid todo.json found' },
853
- };
854
- }
855
- const archive = await accessor.loadArchive();
856
- if (!archive || !archive.archivedTasks) {
857
- return {
858
- success: false,
859
- error: { code: 'E_NOT_FOUND', message: 'No archive file found' },
860
- };
861
- }
862
- const taskIndex = archive.archivedTasks.findIndex((t) => t.id === taskId);
863
- if (taskIndex === -1) {
864
- return {
865
- success: false,
866
- error: { code: 'E_NOT_FOUND', message: `Task '${taskId}' not found in archive` },
867
- };
868
- }
869
- // Check for ID collision
870
- if (todo.tasks.some((t) => t.id === taskId)) {
871
- return {
872
- success: false,
873
- error: { code: 'E_ID_COLLISION', message: `Task '${taskId}' already exists in todo.json` },
874
- };
875
- }
876
- const task = archive.archivedTasks[taskIndex];
877
- // Remove archive metadata
878
- delete task._archive;
879
- // Set status
880
- if (!params?.preserveStatus) {
881
- const targetStatus = params?.status || 'pending';
882
- task.status = targetStatus;
883
- if (targetStatus !== 'done') {
884
- task.completedAt = null;
885
- }
886
- }
887
- task.updatedAt = new Date().toISOString();
888
- // Add to todo.json
889
- todo.tasks.push(task);
890
- // Remove from archive
891
- archive.archivedTasks.splice(taskIndex, 1);
892
- // Save both files via accessor
893
- await accessor.saveTodoFile(todo);
894
- await accessor.saveArchive(archive);
895
- return {
896
- success: true,
897
- data: {
898
- task: taskId,
899
- unarchived: true,
900
- title: task.title,
901
- status: task.status,
902
- },
903
- };
904
- }
905
- catch {
906
- return {
907
- success: false,
908
- error: { code: 'E_NOT_INITIALIZED', message: 'Failed to unarchive task' },
909
- };
910
- }
911
- }
912
- // ===== Hierarchy Mutation Operations =====
913
- /**
914
- * Change task position within its sibling group.
915
- */
916
- export async function taskReorder(projectRoot, taskId, position) {
917
- try {
918
- const accessor = await getAccessor(projectRoot);
919
- const current = await accessor.loadTodoFile();
920
- if (!current || !current.tasks) {
921
- return {
922
- success: false,
923
- error: { code: 'E_NOT_INITIALIZED', message: 'No valid todo.json found' },
924
- };
925
- }
926
- const task = current.tasks.find((t) => t.id === taskId);
927
- if (!task) {
928
- return {
929
- success: false,
930
- error: { code: 'E_NOT_FOUND', message: `Task '${taskId}' not found` },
931
- };
932
- }
933
- // Get all siblings (same parent, including self), sorted by position
934
- const allSiblings = current.tasks
935
- .filter((t) => t.parentId === task.parentId)
936
- .sort((a, b) => (a.position ?? 0) - (b.position ?? 0));
937
- const currentIndex = allSiblings.findIndex((t) => t.id === taskId);
938
- const newIndex = Math.max(0, Math.min(position - 1, allSiblings.length - 1));
939
- // Remove from current position and insert at new position
940
- allSiblings.splice(currentIndex, 1);
941
- allSiblings.splice(newIndex, 0, task);
942
- // Update positions on the actual tasks in current.tasks
943
- const now = new Date().toISOString();
944
- for (let i = 0; i < allSiblings.length; i++) {
945
- const sibling = current.tasks.find((t) => t.id === allSiblings[i].id);
946
- if (sibling) {
947
- sibling.position = i + 1;
948
- sibling.positionVersion = (sibling.positionVersion ?? 0) + 1;
949
- sibling.updatedAt = now;
950
- }
951
- }
952
- await accessor.saveTodoFile(current);
953
- return {
954
- success: true,
955
- data: {
956
- task: taskId,
957
- reordered: true,
958
- newPosition: newIndex + 1,
959
- totalSiblings: allSiblings.length,
960
- },
961
- };
962
- }
963
- catch {
964
- return {
965
- success: false,
966
- error: { code: 'E_NOT_INITIALIZED', message: 'Failed to reorder task' },
967
- };
968
- }
969
- }
970
- /**
971
- * Move task under a different parent.
972
- * Pass null or empty string for newParentId to make it a root task.
973
- */
974
- export async function taskReparent(projectRoot, taskId, newParentId) {
975
- try {
976
- const accessor = await getAccessor(projectRoot);
977
- const current = await accessor.loadTodoFile();
978
- if (!current || !current.tasks) {
979
- return {
980
- success: false,
981
- error: { code: 'E_NOT_INITIALIZED', message: 'No valid todo.json found' },
982
- };
983
- }
984
- const taskMap = new Map(current.tasks.map((t) => [t.id, t]));
985
- const task = taskMap.get(taskId);
986
- if (!task) {
987
- return {
988
- success: false,
989
- error: { code: 'E_NOT_FOUND', message: `Task '${taskId}' not found` },
990
- };
991
- }
992
- const effectiveParentId = newParentId || null;
993
- // Promote to root
994
- if (!effectiveParentId) {
995
- const oldParent = task.parentId ?? null;
996
- task.parentId = null;
997
- if (task.type === 'subtask')
998
- task.type = 'task';
999
- task.updatedAt = new Date().toISOString();
1000
- await accessor.saveTodoFile(current);
1001
- return {
1002
- success: true,
1003
- data: {
1004
- task: taskId,
1005
- reparented: true,
1006
- oldParent,
1007
- newParent: null,
1008
- newType: task.type,
1009
- },
1010
- };
1011
- }
1012
- const newParent = taskMap.get(effectiveParentId);
1013
- if (!newParent) {
1014
- return {
1015
- success: false,
1016
- error: { code: 'E_PARENT_NOT_FOUND', message: `Parent task '${effectiveParentId}' not found` },
1017
- };
1018
- }
1019
- // Cannot parent under a subtask
1020
- if (newParent.type === 'subtask') {
1021
- return {
1022
- success: false,
1023
- error: { code: 'E_INVALID_PARENT_TYPE', message: `Cannot parent under subtask '${effectiveParentId}'` },
1024
- };
1025
- }
1026
- // Check circular reference: walk newParent's ancestors to ensure taskId is not among them
1027
- let ancestor = newParent;
1028
- while (ancestor) {
1029
- if (ancestor.id === taskId) {
1030
- return {
1031
- success: false,
1032
- error: { code: 'E_CIRCULAR_REFERENCE', message: `Moving '${taskId}' under '${effectiveParentId}' would create circular reference` },
1033
- };
1034
- }
1035
- if (!ancestor.parentId)
1036
- break;
1037
- ancestor = taskMap.get(ancestor.parentId);
1038
- if (!ancestor)
1039
- break;
1040
- }
1041
- // Check depth limit (max 3: epic -> task -> subtask)
1042
- let parentDepth = 0;
1043
- let cur = newParent;
1044
- while (cur?.parentId) {
1045
- parentDepth++;
1046
- cur = taskMap.get(cur.parentId);
1047
- if (!cur || parentDepth > 10)
1048
- break;
1049
- }
1050
- const reparentLimits = getHierarchyLimits(projectRoot);
1051
- if (parentDepth + 1 >= reparentLimits.maxDepth) {
1052
- return {
1053
- success: false,
1054
- error: { code: 'E_DEPTH_EXCEEDED', message: `Move would exceed max depth of ${reparentLimits.maxDepth}` },
1055
- };
1056
- }
1057
- // Check sibling limit
1058
- const siblingCount = current.tasks.filter((t) => t.parentId === effectiveParentId && t.id !== taskId).length;
1059
- if (siblingCount >= reparentLimits.maxSiblings) {
1060
- return {
1061
- success: false,
1062
- error: { code: 'E_SIBLING_LIMIT', message: `Cannot add child to ${effectiveParentId}: max siblings (${reparentLimits.maxSiblings}) exceeded` },
1063
- };
1064
- }
1065
- const oldParent = task.parentId ?? null;
1066
- task.parentId = effectiveParentId;
1067
- // Update type based on new depth
1068
- const newDepth = parentDepth + 1;
1069
- if (newDepth === 1)
1070
- task.type = 'task';
1071
- else if (newDepth >= 2)
1072
- task.type = 'subtask';
1073
- task.updatedAt = new Date().toISOString();
1074
- await accessor.saveTodoFile(current);
1075
- return {
1076
- success: true,
1077
- data: {
1078
- task: taskId,
1079
- reparented: true,
1080
- oldParent,
1081
- newParent: effectiveParentId,
1082
- newType: task.type,
1083
- },
1084
- };
1085
- }
1086
- catch {
1087
- return {
1088
- success: false,
1089
- error: { code: 'E_NOT_INITIALIZED', message: 'Failed to reparent task' },
1090
- };
1091
- }
1092
- }
1093
- /**
1094
- * Promote a subtask to task or task to root (remove parent).
1095
- */
1096
- export async function taskPromote(projectRoot, taskId) {
1097
- try {
1098
- const accessor = await getAccessor(projectRoot);
1099
- const current = await accessor.loadTodoFile();
1100
- if (!current || !current.tasks) {
1101
- return {
1102
- success: false,
1103
- error: { code: 'E_NOT_INITIALIZED', message: 'No valid todo.json found' },
1104
- };
1105
- }
1106
- const task = current.tasks.find((t) => t.id === taskId);
1107
- if (!task) {
1108
- return {
1109
- success: false,
1110
- error: { code: 'E_NOT_FOUND', message: `Task '${taskId}' not found` },
1111
- };
1112
- }
1113
- if (!task.parentId) {
1114
- return {
1115
- success: true,
1116
- data: { task: taskId, promoted: false, previousParent: null, typeChanged: false },
1117
- };
1118
- }
1119
- const oldParent = task.parentId;
1120
- task.parentId = null;
1121
- task.updatedAt = new Date().toISOString();
1122
- let typeChanged = false;
1123
- if (task.type === 'subtask') {
1124
- task.type = 'task';
1125
- typeChanged = true;
1126
- }
1127
- await accessor.saveTodoFile(current);
1128
- return {
1129
- success: true,
1130
- data: { task: taskId, promoted: true, previousParent: oldParent, typeChanged },
1131
- };
1132
- }
1133
- catch {
1134
- return {
1135
- success: false,
1136
- error: { code: 'E_NOT_INITIALIZED', message: 'Failed to promote task' },
1137
- };
1138
- }
1139
- }
1140
- /**
1141
- * Reopen a completed task (set status back to pending).
1142
- */
1143
- export async function taskReopen(projectRoot, taskId, params) {
1144
- try {
1145
- const accessor = await getAccessor(projectRoot);
1146
- const current = await accessor.loadTodoFile();
1147
- if (!current || !current.tasks) {
1148
- return {
1149
- success: false,
1150
- error: { code: 'E_NOT_INITIALIZED', message: 'No valid todo.json found' },
1151
- };
1152
- }
1153
- const task = current.tasks.find((t) => t.id === taskId);
1154
- if (!task) {
1155
- return {
1156
- success: false,
1157
- error: { code: 'E_NOT_FOUND', message: `Task '${taskId}' not found` },
1158
- };
1159
- }
1160
- if (task.status !== 'done') {
1161
- return {
1162
- success: false,
1163
- error: {
1164
- code: 'E_INVALID_STATUS',
1165
- message: `Task '${taskId}' is not completed (status: ${task.status}). Only done tasks can be reopened.`,
1166
- },
1167
- };
1168
- }
1169
- const targetStatus = params?.status || 'pending';
1170
- if (targetStatus !== 'pending' && targetStatus !== 'active') {
1171
- return {
1172
- success: false,
1173
- error: {
1174
- code: 'E_INVALID_INPUT',
1175
- message: `Invalid target status: ${targetStatus}. Must be 'pending' or 'active'.`,
1176
- },
1177
- };
1178
- }
1179
- const previousStatus = task.status;
1180
- task.status = targetStatus;
1181
- task.completedAt = null;
1182
- task.updatedAt = new Date().toISOString();
1183
- // Add note about reopening
1184
- if (!task.notes)
1185
- task.notes = [];
1186
- const reason = params?.reason;
1187
- task.notes.push(`[${task.updatedAt}] Reopened from ${previousStatus}${reason ? ': ' + reason : ''}`);
1188
- await accessor.saveTodoFile(current);
1189
- return {
1190
- success: true,
1191
- data: {
1192
- task: taskId,
1193
- reopened: true,
1194
- previousStatus,
1195
- newStatus: targetStatus,
1196
- },
1197
- };
1198
- }
1199
- catch {
1200
- return {
1201
- success: false,
1202
- error: { code: 'E_NOT_INITIALIZED', message: 'Failed to reopen task' },
1203
- };
1204
- }
1205
- }
1206
- /**
1207
- * Walk the dependency chain recursively and return the maximum depth.
1208
- */
1209
- function measureDependencyDepth(taskId, taskMap, visited = new Set()) {
1210
- if (visited.has(taskId))
1211
- return 0;
1212
- visited.add(taskId);
1213
- const task = taskMap.get(taskId);
1214
- if (!task || !task.depends || task.depends.length === 0)
1215
- return 0;
1216
- let maxDepth = 0;
1217
- for (const depId of task.depends) {
1218
- const depth = 1 + measureDependencyDepth(depId, taskMap, visited);
1219
- if (depth > maxDepth)
1220
- maxDepth = depth;
1221
- }
1222
- return maxDepth;
1223
- }
1224
- /**
1225
- * Deterministic complexity scoring from task metadata.
1226
- * NOT a time estimate. Produces a size classification (small/medium/large)
1227
- * based on description length, acceptance criteria count, dependency depth,
1228
- * subtask count, and file reference count.
1229
- */
1230
- /**
1231
- * @task T4657
1232
- * @epic T4654
1233
- */
1234
- export async function taskComplexityEstimate(projectRoot, params) {
1235
- let allTasks;
1236
- try {
1237
- const loaded = await loadAllTasksAsync(projectRoot);
1238
- allTasks = tasksToRecords(loaded);
1239
- }
1240
- catch {
1241
- return { success: false, error: { code: 'E_NOT_INITIALIZED', message: 'No todo.json found' } };
1242
- }
1243
- const task = allTasks.find((t) => t.id === params.taskId);
1244
- if (!task) {
1245
- return {
1246
- success: false,
1247
- error: { code: 'E_NOT_FOUND', message: `Task '${params.taskId}' not found` },
1248
- };
1249
- }
1250
- const factors = [];
1251
- let score = 0;
1252
- // Factor 1: Description length
1253
- const descLen = (task.description || '').length;
1254
- let descScore;
1255
- let descLabel;
1256
- if (descLen < 100) {
1257
- descScore = 1;
1258
- descLabel = 'short';
1259
- }
1260
- else if (descLen < 500) {
1261
- descScore = 2;
1262
- descLabel = 'medium';
1263
- }
1264
- else {
1265
- descScore = 3;
1266
- descLabel = 'long';
1267
- }
1268
- score += descScore;
1269
- factors.push({ name: 'descriptionLength', value: descScore, detail: `${descLabel} (${descLen} chars)` });
1270
- // Factor 2: Acceptance criteria count
1271
- const acceptanceCount = task.acceptance?.length ?? 0;
1272
- const acceptanceScore = Math.min(acceptanceCount, 3);
1273
- score += acceptanceScore;
1274
- factors.push({ name: 'acceptanceCriteria', value: acceptanceScore, detail: `${acceptanceCount} criteria` });
1275
- // Factor 3: Dependency depth (recursive walk)
1276
- const taskMap = new Map(allTasks.map((t) => [t.id, t]));
1277
- const dependencyDepth = measureDependencyDepth(params.taskId, taskMap);
1278
- const depthScore = Math.min(dependencyDepth, 3);
1279
- score += depthScore;
1280
- factors.push({ name: 'dependencyDepth', value: depthScore, detail: `depth ${dependencyDepth}` });
1281
- // Factor 4: Subtask count (direct children)
1282
- const subtaskCount = allTasks.filter((t) => t.parentId === params.taskId).length;
1283
- const subtaskScore = Math.min(subtaskCount, 3);
1284
- score += subtaskScore;
1285
- factors.push({ name: 'subtaskCount', value: subtaskScore, detail: `${subtaskCount} subtasks` });
1286
- // Factor 5: File reference count
1287
- const fileCount = task.files?.length ?? 0;
1288
- const fileScore = Math.min(fileCount, 3);
1289
- score += fileScore;
1290
- factors.push({ name: 'fileReferences', value: fileScore, detail: `${fileCount} files` });
1291
- // Size classification
1292
- let size;
1293
- if (score <= 3) {
1294
- size = 'small';
1295
- }
1296
- else if (score <= 7) {
1297
- size = 'medium';
1298
- }
1299
- else {
1300
- size = 'large';
1301
- }
1302
- return {
1303
- success: true,
1304
- data: {
1305
- size,
1306
- score,
1307
- factors,
1308
- dependencyDepth,
1309
- subtaskCount,
1310
- fileCount,
1311
- },
1312
- };
1313
- }
1314
- // ===== Dependency Query Operations =====
1315
- /**
1316
- * List dependencies for a task in a given direction.
1317
- * 'upstream' = what this task depends on
1318
- * 'downstream' = what depends on this task
1319
- * 'both' = both directions
1320
- */
1321
- /**
1322
- * @task T4657
1323
- * @epic T4654
1324
- */
1325
- export async function taskDepends(projectRoot, taskId, direction = 'both') {
1326
- let allTasks;
1327
- try {
1328
- const loaded = await loadAllTasksAsync(projectRoot);
1329
- allTasks = tasksToRecords(loaded);
1330
- }
1331
- catch {
1332
- return { success: false, error: { code: 'E_NOT_INITIALIZED', message: 'No todo.json found' } };
1333
- }
1334
- const task = allTasks.find((t) => t.id === taskId);
1335
- if (!task) {
1336
- return {
1337
- success: false,
1338
- error: { code: 'E_NOT_FOUND', message: `Task '${taskId}' not found` },
1339
- };
1340
- }
1341
- const taskMap = new Map(allTasks.map((t) => [t.id, t]));
1342
- // Upstream: tasks this task depends on
1343
- const upstream = [];
1344
- if (direction === 'upstream' || direction === 'both') {
1345
- for (const depId of task.depends ?? []) {
1346
- const dep = taskMap.get(depId);
1347
- if (dep) {
1348
- upstream.push({ id: dep.id, title: dep.title, status: dep.status });
1349
- }
1350
- }
1351
- }
1352
- // Downstream: tasks that depend on this task
1353
- const downstream = [];
1354
- if (direction === 'downstream' || direction === 'both') {
1355
- for (const t of allTasks) {
1356
- if (t.depends?.includes(taskId)) {
1357
- downstream.push({ id: t.id, title: t.title, status: t.status });
1358
- }
1359
- }
1360
- }
1361
- return {
1362
- success: true,
1363
- data: { taskId, direction, upstream, downstream },
1364
- };
1365
- }
1366
- // ===== Statistics Operations =====
1367
- /**
1368
- * Compute task statistics, optionally scoped to an epic.
1369
- */
1370
- /**
1371
- * @task T4657
1372
- * @epic T4654
1373
- */
1374
- export async function taskStats(projectRoot, epicId) {
1375
- let allTasks;
1376
- try {
1377
- const loaded = await loadAllTasksAsync(projectRoot);
1378
- allTasks = tasksToRecords(loaded);
1379
- }
1380
- catch {
1381
- return { success: false, error: { code: 'E_NOT_INITIALIZED', message: 'No todo.json found' } };
1382
- }
1383
- let tasks = allTasks;
1384
- // Scope to epic if provided
1385
- if (epicId) {
1386
- const epicIds = new Set();
1387
- epicIds.add(epicId);
1388
- // Collect all descendants
1389
- const collectChildren = (parentId) => {
1390
- for (const t of allTasks) {
1391
- if (t.parentId === parentId && !epicIds.has(t.id)) {
1392
- epicIds.add(t.id);
1393
- collectChildren(t.id);
1394
- }
1395
- }
1396
- };
1397
- collectChildren(epicId);
1398
- tasks = allTasks.filter((t) => epicIds.has(t.id));
1399
- }
1400
- const byStatus = {};
1401
- const byPriority = {};
1402
- const byType = {};
1403
- for (const task of tasks) {
1404
- byStatus[task.status] = (byStatus[task.status] ?? 0) + 1;
1405
- byPriority[task.priority] = (byPriority[task.priority] ?? 0) + 1;
1406
- const taskType = task.type ?? 'task';
1407
- byType[taskType] = (byType[taskType] ?? 0) + 1;
1408
- }
1409
- return {
1410
- success: true,
1411
- data: {
1412
- total: tasks.length,
1413
- pending: byStatus['pending'] ?? 0,
1414
- active: byStatus['active'] ?? 0,
1415
- blocked: byStatus['blocked'] ?? 0,
1416
- done: byStatus['done'] ?? 0,
1417
- cancelled: byStatus['cancelled'] ?? 0,
1418
- byPriority,
1419
- byType,
1420
- },
1421
- };
1422
- }
1423
- // ===== Export Operations =====
1424
- /**
1425
- * Export tasks as JSON or CSV.
1426
- */
1427
- /**
1428
- * @task T4657
1429
- * @epic T4654
1430
- */
1431
- export async function taskExport(projectRoot, params) {
1432
- let allTasks;
1433
- try {
1434
- const loaded = await loadAllTasksAsync(projectRoot);
1435
- allTasks = tasksToRecords(loaded);
1436
- }
1437
- catch {
1438
- return { success: false, error: { code: 'E_NOT_INITIALIZED', message: 'No todo.json found' } };
1439
- }
1440
- let tasks = allTasks;
1441
- if (params?.status) {
1442
- tasks = tasks.filter((t) => t.status === params.status);
1443
- }
1444
- if (params?.parent) {
1445
- // Collect parent + all descendants
1446
- const parentIds = new Set();
1447
- parentIds.add(params.parent);
1448
- const collectChildren = (parentId) => {
1449
- for (const t of allTasks) {
1450
- if (t.parentId === parentId && !parentIds.has(t.id)) {
1451
- parentIds.add(t.id);
1452
- collectChildren(t.id);
1453
- }
1454
- }
1455
- };
1456
- collectChildren(params.parent);
1457
- tasks = tasks.filter((t) => parentIds.has(t.id));
1458
- }
1459
- if (params?.format === 'csv') {
1460
- // Build CSV output
1461
- const headers = ['id', 'title', 'status', 'priority', 'type', 'parentId', 'createdAt'];
1462
- const rows = tasks.map((t) => [
1463
- t.id,
1464
- `"${(t.title || '').replace(/"/g, '""')}"`,
1465
- t.status,
1466
- t.priority,
1467
- t.type ?? 'task',
1468
- t.parentId ?? '',
1469
- t.createdAt,
1470
- ].join(','));
1471
- const csv = [headers.join(','), ...rows].join('\n');
1472
- return { success: true, data: { format: 'csv', content: csv, taskCount: tasks.length } };
1473
- }
1474
- // Default: JSON format
1475
- return {
1476
- success: true,
1477
- data: {
1478
- format: 'json',
1479
- tasks,
1480
- taskCount: tasks.length,
1481
- },
1482
- };
1483
- }
1484
- // ===== History Operations =====
1485
- /**
1486
- * Get task history from the log file.
1487
- */
1488
- /**
1489
- * @task T4657
1490
- * @epic T4654
1491
- */
1492
- export async function taskHistory(projectRoot, taskId, limit) {
1493
- const logPath = getDataPath(projectRoot, 'todo-log.jsonl');
1494
- const entries = readLogFileEntries(logPath);
1495
- // Filter entries that reference this task
1496
- const taskEntries = entries.filter((entry) => {
1497
- // Check multiple fields where task ID might appear
1498
- if (entry.taskId === taskId)
1499
- return true;
1500
- if (entry.id === taskId)
1501
- return true;
1502
- if (typeof entry.details === 'string' && entry.details.includes(taskId))
1503
- return true;
1504
- if (typeof entry.message === 'string' && entry.message.includes(taskId))
1505
- return true;
1506
- return false;
1507
- });
1508
- // Sort by timestamp descending (most recent first)
1509
- taskEntries.sort((a, b) => {
1510
- const timeA = String(a.timestamp ?? a.date ?? '');
1511
- const timeB = String(b.timestamp ?? b.date ?? '');
1512
- return timeB.localeCompare(timeA);
1513
- });
1514
- const result = limit && limit > 0 ? taskEntries.slice(0, limit) : taskEntries;
1515
- return { success: true, data: result };
1516
- }
1517
- // ===== Lint Operations =====
1518
- /**
1519
- * Lint tasks for common issues.
1520
- */
1521
- /**
1522
- * @task T4657
1523
- * @epic T4654
1524
- */
1525
- export async function taskLint(projectRoot, taskId) {
1526
- let allTasks;
1527
- try {
1528
- const loaded = await loadAllTasksAsync(projectRoot);
1529
- allTasks = tasksToRecords(loaded);
1530
- }
1531
- catch {
1532
- return { success: false, error: { code: 'E_NOT_INITIALIZED', message: 'No todo.json found' } };
1533
- }
1534
- const tasks = taskId
1535
- ? allTasks.filter((t) => t.id === taskId)
1536
- : allTasks;
1537
- if (taskId && tasks.length === 0) {
1538
- return {
1539
- success: false,
1540
- error: { code: 'E_NOT_FOUND', message: `Task '${taskId}' not found` },
1541
- };
1542
- }
1543
- const issues = [];
1544
- const allDescriptions = new Set();
1545
- const allIds = new Set();
1546
- for (const task of allTasks) {
1547
- // Check ID uniqueness
1548
- if (allIds.has(task.id)) {
1549
- issues.push({
1550
- taskId: task.id,
1551
- severity: 'error',
1552
- rule: 'unique-id',
1553
- message: `Duplicate task ID: ${task.id}`,
1554
- });
1555
- }
1556
- allIds.add(task.id);
1557
- // Only lint targeted tasks
1558
- if (taskId && task.id !== taskId) {
1559
- if (task.description)
1560
- allDescriptions.add(task.description.toLowerCase());
1561
- continue;
1562
- }
1563
- // Check title present
1564
- if (!task.title || task.title.trim().length === 0) {
1565
- issues.push({
1566
- taskId: task.id,
1567
- severity: 'error',
1568
- rule: 'title-required',
1569
- message: 'Task is missing a title',
1570
- });
1571
- }
1572
- // Check description present
1573
- if (!task.description || task.description.trim().length === 0) {
1574
- issues.push({
1575
- taskId: task.id,
1576
- severity: 'warning',
1577
- rule: 'description-required',
1578
- message: 'Task is missing a description',
1579
- });
1580
- }
1581
- // Check title != description
1582
- if (task.title && task.description && task.title.trim() === task.description.trim()) {
1583
- issues.push({
1584
- taskId: task.id,
1585
- severity: 'warning',
1586
- rule: 'title-description-different',
1587
- message: 'Title and description should not be identical',
1588
- });
1589
- }
1590
- // Check duplicate descriptions
1591
- if (task.description) {
1592
- const descLower = task.description.toLowerCase();
1593
- if (allDescriptions.has(descLower)) {
1594
- issues.push({
1595
- taskId: task.id,
1596
- severity: 'warning',
1597
- rule: 'unique-description',
1598
- message: 'Duplicate task description found',
1599
- });
1600
- }
1601
- allDescriptions.add(descLower);
1602
- }
1603
- // Check valid status
1604
- const validStatuses = ['pending', 'active', 'blocked', 'done', 'cancelled'];
1605
- if (!validStatuses.includes(task.status)) {
1606
- issues.push({
1607
- taskId: task.id,
1608
- severity: 'error',
1609
- rule: 'valid-status',
1610
- message: `Invalid status: ${task.status}`,
1611
- });
1612
- }
1613
- // Check future timestamps
1614
- const now = new Date();
1615
- if (task.createdAt && new Date(task.createdAt) > now) {
1616
- issues.push({
1617
- taskId: task.id,
1618
- severity: 'warning',
1619
- rule: 'no-future-timestamps',
1620
- message: 'createdAt is in the future',
1621
- });
1622
- }
1623
- // Check orphaned parent references
1624
- if (task.parentId && !allTasks.some((t) => t.id === task.parentId)) {
1625
- issues.push({
1626
- taskId: task.id,
1627
- severity: 'error',
1628
- rule: 'valid-parent',
1629
- message: `Parent task '${task.parentId}' does not exist`,
1630
- });
1631
- }
1632
- // Check orphaned dependency references
1633
- for (const depId of task.depends ?? []) {
1634
- if (!allTasks.some((t) => t.id === depId)) {
1635
- issues.push({
1636
- taskId: task.id,
1637
- severity: 'warning',
1638
- rule: 'valid-dependency',
1639
- message: `Dependency '${depId}' does not exist`,
1640
- });
1641
- }
1642
- }
1643
- }
1644
- return { success: true, data: issues };
1645
- }
1646
- // ===== Batch Validate Operations =====
1647
- /**
1648
- * Validate multiple tasks at once.
1649
- */
1650
- /**
1651
- * @task T4657
1652
- * @epic T4654
1653
- */
1654
- export async function taskBatchValidate(projectRoot, taskIds, checkMode = 'full') {
1655
- let allTasks;
1656
- try {
1657
- const loaded = await loadAllTasksAsync(projectRoot);
1658
- allTasks = tasksToRecords(loaded);
1659
- }
1660
- catch {
1661
- return { success: false, error: { code: 'E_NOT_INITIALIZED', message: 'No todo.json found' } };
1662
- }
1663
- const results = {};
1664
- let totalErrors = 0;
1665
- let totalWarnings = 0;
1666
- for (const id of taskIds) {
1667
- const task = allTasks.find((t) => t.id === id);
1668
- if (!task) {
1669
- results[id] = [{ severity: 'error', rule: 'exists', message: `Task '${id}' not found` }];
1670
- totalErrors++;
1671
- continue;
1672
- }
1673
- const taskIssues = [];
1674
- // Quick mode: basic checks
1675
- if (!task.title || task.title.trim().length === 0) {
1676
- taskIssues.push({ severity: 'error', rule: 'title-required', message: 'Missing title' });
1677
- }
1678
- if (!task.description || task.description.trim().length === 0) {
1679
- taskIssues.push({ severity: 'warning', rule: 'description-required', message: 'Missing description' });
1680
- }
1681
- const validStatuses = ['pending', 'active', 'blocked', 'done', 'cancelled'];
1682
- if (!validStatuses.includes(task.status)) {
1683
- taskIssues.push({ severity: 'error', rule: 'valid-status', message: `Invalid status: ${task.status}` });
1684
- }
1685
- // Full mode: additional checks
1686
- if (checkMode === 'full') {
1687
- if (task.title && task.description && task.title.trim() === task.description.trim()) {
1688
- taskIssues.push({ severity: 'warning', rule: 'title-description-different', message: 'Title equals description' });
1689
- }
1690
- if (task.parentId && !allTasks.some((t) => t.id === task.parentId)) {
1691
- taskIssues.push({ severity: 'error', rule: 'valid-parent', message: `Parent '${task.parentId}' not found` });
1692
- }
1693
- for (const depId of task.depends ?? []) {
1694
- if (!allTasks.some((t) => t.id === depId)) {
1695
- taskIssues.push({ severity: 'warning', rule: 'valid-dependency', message: `Dependency '${depId}' not found` });
1696
- }
1697
- }
1698
- const now = new Date();
1699
- if (task.createdAt && new Date(task.createdAt) > now) {
1700
- taskIssues.push({ severity: 'warning', rule: 'no-future-timestamps', message: 'createdAt in future' });
1701
- }
1702
- }
1703
- results[id] = taskIssues;
1704
- totalErrors += taskIssues.filter((i) => i.severity === 'error').length;
1705
- totalWarnings += taskIssues.filter((i) => i.severity === 'warning').length;
1706
- }
1707
- const invalidTasks = Object.values(results).filter((issues) => issues.some((i) => i.severity === 'error')).length;
1708
- return {
1709
- success: true,
1710
- data: {
1711
- results,
1712
- summary: {
1713
- totalTasks: taskIds.length,
1714
- validTasks: taskIds.length - invalidTasks,
1715
- invalidTasks,
1716
- totalIssues: totalErrors + totalWarnings,
1717
- errors: totalErrors,
1718
- warnings: totalWarnings,
1719
- },
1720
- },
1721
- };
1722
- }
1723
- // ===== Import Operations =====
1724
- /**
1725
- * Import tasks from a JSON source string or export package.
1726
- */
1727
- export async function taskImport(projectRoot, source, overwrite) {
1728
- try {
1729
- const accessor = await getAccessor(projectRoot);
1730
- const current = await accessor.loadTodoFile();
1731
- if (!current || !current.tasks) {
1732
- return {
1733
- success: false,
1734
- error: { code: 'E_NOT_INITIALIZED', message: 'No valid todo.json found' },
1735
- };
1736
- }
1737
- // Parse the source JSON
1738
- let importData;
1739
- try {
1740
- importData = JSON.parse(source);
1741
- }
1742
- catch {
1743
- return {
1744
- success: false,
1745
- error: { code: 'E_INVALID_INPUT', message: 'Invalid JSON in import source' },
1746
- };
1747
- }
1748
- // Extract tasks from various formats
1749
- let importTasks = [];
1750
- if (Array.isArray(importData)) {
1751
- importTasks = importData;
1752
- }
1753
- else if (typeof importData === 'object' && importData !== null) {
1754
- const data = importData;
1755
- if (Array.isArray(data.tasks)) {
1756
- importTasks = data.tasks;
1757
- }
1758
- else if (data._meta && Array.isArray(data.tasks)) {
1759
- // Export package format
1760
- importTasks = data.tasks;
1761
- }
1762
- }
1763
- if (importTasks.length === 0) {
1764
- return {
1765
- success: true,
1766
- data: { imported: 0, skipped: 0, errors: ['No tasks found in import source'] },
1767
- };
1768
- }
1769
- const existingIds = new Set(current.tasks.map((t) => t.id));
1770
- const allIds = new Set(current.tasks.map((t) => t.id));
1771
- const errors = [];
1772
- let imported = 0;
1773
- let skipped = 0;
1774
- const remapTable = {};
1775
- // Generate new IDs for imported tasks
1776
- let nextIdNum = 0;
1777
- for (const t of current.tasks) {
1778
- const num = parseInt(t.id.replace('T', ''), 10);
1779
- if (!isNaN(num) && num > nextIdNum)
1780
- nextIdNum = num;
1781
- }
1782
- const tasksList = current.tasks;
1783
- for (const importTask of importTasks) {
1784
- if (!importTask.id || !importTask.title) {
1785
- errors.push(`Skipped task with missing id or title`);
1786
- skipped++;
1787
- continue;
1788
- }
1789
- if (existingIds.has(importTask.id) && !overwrite) {
1790
- skipped++;
1791
- continue;
1792
- }
1793
- // Generate new ID if collision
1794
- let newId = importTask.id;
1795
- if (allIds.has(importTask.id) && !overwrite) {
1796
- nextIdNum++;
1797
- newId = `T${String(nextIdNum).padStart(3, '0')}`;
1798
- remapTable[importTask.id] = newId;
1799
- }
1800
- const now = new Date().toISOString();
1801
- const newTask = {
1802
- ...importTask,
1803
- id: newId,
1804
- createdAt: importTask.createdAt || now,
1805
- updatedAt: now,
1806
- };
1807
- if (overwrite && existingIds.has(importTask.id)) {
1808
- // Replace existing
1809
- const idx = tasksList.findIndex((t) => t.id === importTask.id);
1810
- if (idx !== -1) {
1811
- tasksList[idx] = newTask;
1812
- }
1813
- }
1814
- else {
1815
- tasksList.push(newTask);
1816
- }
1817
- allIds.add(newId);
1818
- imported++;
1819
- }
1820
- if (imported > 0) {
1821
- await accessor.saveTodoFile(current);
1822
- }
1823
- return {
1824
- success: true,
1825
- data: {
1826
- imported,
1827
- skipped,
1828
- errors,
1829
- ...(Object.keys(remapTable).length > 0 ? { remapTable } : {}),
1830
- },
1831
- };
1832
- }
1833
- catch {
1834
- return {
1835
- success: false,
1836
- error: { code: 'E_NOT_INITIALIZED', message: 'Failed to import tasks' },
1837
- };
1838
- }
1839
- }
1840
- //# sourceMappingURL=task-engine.js.map