@kynetic-ai/spec 0.1.2 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (540) hide show
  1. package/README.md +250 -17
  2. package/dist/acp/client.d.ts +18 -4
  3. package/dist/acp/client.d.ts.map +1 -1
  4. package/dist/acp/client.js +44 -26
  5. package/dist/acp/client.js.map +1 -1
  6. package/dist/acp/framing.d.ts +2 -2
  7. package/dist/acp/framing.d.ts.map +1 -1
  8. package/dist/acp/framing.js +37 -29
  9. package/dist/acp/framing.js.map +1 -1
  10. package/dist/acp/index.d.ts +6 -7
  11. package/dist/acp/index.d.ts.map +1 -1
  12. package/dist/acp/index.js +3 -3
  13. package/dist/acp/index.js.map +1 -1
  14. package/dist/acp/types.d.ts +5 -5
  15. package/dist/acp/types.d.ts.map +1 -1
  16. package/dist/acp/types.js +18 -18
  17. package/dist/acp/types.js.map +1 -1
  18. package/dist/agents/adapters.d.ts.map +1 -1
  19. package/dist/agents/adapters.js +24 -13
  20. package/dist/agents/adapters.js.map +1 -1
  21. package/dist/agents/index.d.ts +2 -2
  22. package/dist/agents/index.js +2 -2
  23. package/dist/agents/spawner.d.ts +4 -4
  24. package/dist/agents/spawner.d.ts.map +1 -1
  25. package/dist/agents/spawner.js +6 -6
  26. package/dist/agents/spawner.js.map +1 -1
  27. package/dist/cli/batch-context.d.ts +43 -0
  28. package/dist/cli/batch-context.d.ts.map +1 -0
  29. package/dist/cli/batch-context.js +93 -0
  30. package/dist/cli/batch-context.js.map +1 -0
  31. package/dist/cli/batch-exec.d.ts +107 -0
  32. package/dist/cli/batch-exec.d.ts.map +1 -0
  33. package/dist/cli/batch-exec.js +706 -0
  34. package/dist/cli/batch-exec.js.map +1 -0
  35. package/dist/cli/batch.d.ts +4 -2
  36. package/dist/cli/batch.d.ts.map +1 -1
  37. package/dist/cli/batch.js +15 -14
  38. package/dist/cli/batch.js.map +1 -1
  39. package/dist/cli/command-annotations.d.ts +23 -0
  40. package/dist/cli/command-annotations.d.ts.map +1 -0
  41. package/dist/cli/command-annotations.js +27 -0
  42. package/dist/cli/command-annotations.js.map +1 -0
  43. package/dist/cli/commands/agents.d.ts +46 -0
  44. package/dist/cli/commands/agents.d.ts.map +1 -0
  45. package/dist/cli/commands/agents.js +377 -0
  46. package/dist/cli/commands/agents.js.map +1 -0
  47. package/dist/cli/commands/batch.d.ts +20 -0
  48. package/dist/cli/commands/batch.d.ts.map +1 -0
  49. package/dist/cli/commands/batch.js +214 -0
  50. package/dist/cli/commands/batch.js.map +1 -0
  51. package/dist/cli/commands/clone-for-testing.d.ts +1 -1
  52. package/dist/cli/commands/clone-for-testing.d.ts.map +1 -1
  53. package/dist/cli/commands/clone-for-testing.js +37 -47
  54. package/dist/cli/commands/clone-for-testing.js.map +1 -1
  55. package/dist/cli/commands/derive.d.ts +1 -1
  56. package/dist/cli/commands/derive.d.ts.map +1 -1
  57. package/dist/cli/commands/derive.js +141 -88
  58. package/dist/cli/commands/derive.js.map +1 -1
  59. package/dist/cli/commands/doctor.d.ts +11 -0
  60. package/dist/cli/commands/doctor.d.ts.map +1 -0
  61. package/dist/cli/commands/doctor.js +152 -0
  62. package/dist/cli/commands/doctor.js.map +1 -0
  63. package/dist/cli/commands/export.d.ts +12 -0
  64. package/dist/cli/commands/export.d.ts.map +1 -0
  65. package/dist/cli/commands/export.js +134 -0
  66. package/dist/cli/commands/export.js.map +1 -0
  67. package/dist/cli/commands/help.d.ts +1 -1
  68. package/dist/cli/commands/help.d.ts.map +1 -1
  69. package/dist/cli/commands/help.js +163 -37
  70. package/dist/cli/commands/help.js.map +1 -1
  71. package/dist/cli/commands/inbox.d.ts +1 -1
  72. package/dist/cli/commands/inbox.d.ts.map +1 -1
  73. package/dist/cli/commands/inbox.js +178 -56
  74. package/dist/cli/commands/inbox.js.map +1 -1
  75. package/dist/cli/commands/index.d.ts +31 -19
  76. package/dist/cli/commands/index.d.ts.map +1 -1
  77. package/dist/cli/commands/index.js +31 -19
  78. package/dist/cli/commands/index.js.map +1 -1
  79. package/dist/cli/commands/init.d.ts +5 -1
  80. package/dist/cli/commands/init.d.ts.map +1 -1
  81. package/dist/cli/commands/init.js +108 -57
  82. package/dist/cli/commands/init.js.map +1 -1
  83. package/dist/cli/commands/item.d.ts +1 -1
  84. package/dist/cli/commands/item.d.ts.map +1 -1
  85. package/dist/cli/commands/item.js +557 -274
  86. package/dist/cli/commands/item.js.map +1 -1
  87. package/dist/cli/commands/link.d.ts +1 -1
  88. package/dist/cli/commands/link.d.ts.map +1 -1
  89. package/dist/cli/commands/link.js +55 -46
  90. package/dist/cli/commands/link.js.map +1 -1
  91. package/dist/cli/commands/log.d.ts +1 -1
  92. package/dist/cli/commands/log.d.ts.map +1 -1
  93. package/dist/cli/commands/log.js +58 -51
  94. package/dist/cli/commands/log.js.map +1 -1
  95. package/dist/cli/commands/merge-driver.d.ts +19 -0
  96. package/dist/cli/commands/merge-driver.d.ts.map +1 -0
  97. package/dist/cli/commands/merge-driver.js +398 -0
  98. package/dist/cli/commands/merge-driver.js.map +1 -0
  99. package/dist/cli/commands/meta.d.ts +1 -1
  100. package/dist/cli/commands/meta.d.ts.map +1 -1
  101. package/dist/cli/commands/meta.js +534 -399
  102. package/dist/cli/commands/meta.js.map +1 -1
  103. package/dist/cli/commands/module.d.ts +1 -1
  104. package/dist/cli/commands/module.d.ts.map +1 -1
  105. package/dist/cli/commands/module.js +30 -25
  106. package/dist/cli/commands/module.js.map +1 -1
  107. package/dist/cli/commands/plan-import.d.ts +11 -0
  108. package/dist/cli/commands/plan-import.d.ts.map +1 -0
  109. package/dist/cli/commands/plan-import.js +547 -0
  110. package/dist/cli/commands/plan-import.js.map +1 -0
  111. package/dist/cli/commands/plan.d.ts +10 -0
  112. package/dist/cli/commands/plan.d.ts.map +1 -0
  113. package/dist/cli/commands/plan.js +421 -0
  114. package/dist/cli/commands/plan.js.map +1 -0
  115. package/dist/cli/commands/ralph.d.ts +1 -1
  116. package/dist/cli/commands/ralph.d.ts.map +1 -1
  117. package/dist/cli/commands/ralph.js +1109 -170
  118. package/dist/cli/commands/ralph.js.map +1 -1
  119. package/dist/cli/commands/refs.d.ts +13 -0
  120. package/dist/cli/commands/refs.d.ts.map +1 -0
  121. package/dist/cli/commands/refs.js +283 -0
  122. package/dist/cli/commands/refs.js.map +1 -0
  123. package/dist/cli/commands/search.d.ts +1 -1
  124. package/dist/cli/commands/search.d.ts.map +1 -1
  125. package/dist/cli/commands/search.js +199 -37
  126. package/dist/cli/commands/search.js.map +1 -1
  127. package/dist/cli/commands/serve.d.ts +10 -0
  128. package/dist/cli/commands/serve.d.ts.map +1 -0
  129. package/dist/cli/commands/serve.js +491 -0
  130. package/dist/cli/commands/serve.js.map +1 -0
  131. package/dist/cli/commands/session.d.ts +25 -6
  132. package/dist/cli/commands/session.d.ts.map +1 -1
  133. package/dist/cli/commands/session.js +810 -127
  134. package/dist/cli/commands/session.js.map +1 -1
  135. package/dist/cli/commands/setup-seeding.d.ts +81 -0
  136. package/dist/cli/commands/setup-seeding.d.ts.map +1 -0
  137. package/dist/cli/commands/setup-seeding.js +292 -0
  138. package/dist/cli/commands/setup-seeding.js.map +1 -0
  139. package/dist/cli/commands/setup.d.ts +77 -3
  140. package/dist/cli/commands/setup.d.ts.map +1 -1
  141. package/dist/cli/commands/setup.js +1267 -274
  142. package/dist/cli/commands/setup.js.map +1 -1
  143. package/dist/cli/commands/shadow.d.ts +1 -1
  144. package/dist/cli/commands/shadow.d.ts.map +1 -1
  145. package/dist/cli/commands/shadow.js +70 -50
  146. package/dist/cli/commands/shadow.js.map +1 -1
  147. package/dist/cli/commands/skill-crud.d.ts +58 -0
  148. package/dist/cli/commands/skill-crud.d.ts.map +1 -0
  149. package/dist/cli/commands/skill-crud.js +753 -0
  150. package/dist/cli/commands/skill-crud.js.map +1 -0
  151. package/dist/cli/commands/skill-diff.d.ts +27 -0
  152. package/dist/cli/commands/skill-diff.d.ts.map +1 -0
  153. package/dist/cli/commands/skill-diff.js +840 -0
  154. package/dist/cli/commands/skill-diff.js.map +1 -0
  155. package/dist/cli/commands/skill-install.d.ts +56 -0
  156. package/dist/cli/commands/skill-install.d.ts.map +1 -0
  157. package/dist/cli/commands/skill-install.js +509 -0
  158. package/dist/cli/commands/skill-install.js.map +1 -0
  159. package/dist/cli/commands/skill.d.ts +20 -0
  160. package/dist/cli/commands/skill.d.ts.map +1 -0
  161. package/dist/cli/commands/skill.js +36 -0
  162. package/dist/cli/commands/skill.js.map +1 -0
  163. package/dist/cli/commands/task.d.ts +1 -1
  164. package/dist/cli/commands/task.d.ts.map +1 -1
  165. package/dist/cli/commands/task.js +584 -350
  166. package/dist/cli/commands/task.js.map +1 -1
  167. package/dist/cli/commands/tasks.d.ts +26 -1
  168. package/dist/cli/commands/tasks.d.ts.map +1 -1
  169. package/dist/cli/commands/tasks.js +225 -122
  170. package/dist/cli/commands/tasks.js.map +1 -1
  171. package/dist/cli/commands/trait.d.ts +1 -1
  172. package/dist/cli/commands/trait.d.ts.map +1 -1
  173. package/dist/cli/commands/trait.js +166 -101
  174. package/dist/cli/commands/trait.js.map +1 -1
  175. package/dist/cli/commands/triage.d.ts +7 -0
  176. package/dist/cli/commands/triage.d.ts.map +1 -0
  177. package/dist/cli/commands/triage.js +483 -0
  178. package/dist/cli/commands/triage.js.map +1 -0
  179. package/dist/cli/commands/util.d.ts +7 -0
  180. package/dist/cli/commands/util.d.ts.map +1 -0
  181. package/dist/cli/commands/util.js +30 -0
  182. package/dist/cli/commands/util.js.map +1 -0
  183. package/dist/cli/commands/validate.d.ts +1 -1
  184. package/dist/cli/commands/validate.d.ts.map +1 -1
  185. package/dist/cli/commands/validate.js +264 -83
  186. package/dist/cli/commands/validate.js.map +1 -1
  187. package/dist/cli/commands/workflow.d.ts +16 -0
  188. package/dist/cli/commands/workflow.d.ts.map +1 -0
  189. package/dist/cli/commands/workflow.js +851 -0
  190. package/dist/cli/commands/workflow.js.map +1 -0
  191. package/dist/cli/exit-codes.d.ts +7 -0
  192. package/dist/cli/exit-codes.d.ts.map +1 -1
  193. package/dist/cli/exit-codes.js +26 -18
  194. package/dist/cli/exit-codes.js.map +1 -1
  195. package/dist/cli/help/content.d.ts.map +1 -1
  196. package/dist/cli/help/content.js +86 -71
  197. package/dist/cli/help/content.js.map +1 -1
  198. package/dist/cli/index.d.ts +1 -1
  199. package/dist/cli/index.d.ts.map +1 -1
  200. package/dist/cli/index.js +131 -19
  201. package/dist/cli/index.js.map +1 -1
  202. package/dist/cli/introspection.d.ts +6 -2
  203. package/dist/cli/introspection.d.ts.map +1 -1
  204. package/dist/cli/introspection.js +11 -8
  205. package/dist/cli/introspection.js.map +1 -1
  206. package/dist/cli/output.d.ts +64 -4
  207. package/dist/cli/output.d.ts.map +1 -1
  208. package/dist/cli/output.js +237 -85
  209. package/dist/cli/output.js.map +1 -1
  210. package/dist/cli/parse-utils.d.ts +21 -0
  211. package/dist/cli/parse-utils.d.ts.map +1 -0
  212. package/dist/cli/parse-utils.js +32 -0
  213. package/dist/cli/parse-utils.js.map +1 -0
  214. package/dist/cli/pid-utils.d.ts +72 -0
  215. package/dist/cli/pid-utils.d.ts.map +1 -0
  216. package/dist/cli/pid-utils.js +174 -0
  217. package/dist/cli/pid-utils.js.map +1 -0
  218. package/dist/cli/suggest.d.ts.map +1 -1
  219. package/dist/cli/suggest.js +1 -2
  220. package/dist/cli/suggest.js.map +1 -1
  221. package/dist/cli/validators.d.ts +43 -0
  222. package/dist/cli/validators.d.ts.map +1 -0
  223. package/dist/cli/validators.js +84 -0
  224. package/dist/cli/validators.js.map +1 -0
  225. package/dist/daemon/index.ts +52 -0
  226. package/dist/daemon/middleware/project-context.ts +126 -0
  227. package/dist/daemon/pid.ts +179 -0
  228. package/dist/daemon/project-context.ts +343 -0
  229. package/dist/daemon/routes/inbox.ts +164 -0
  230. package/dist/daemon/routes/items.ts +322 -0
  231. package/dist/daemon/routes/meta.ts +118 -0
  232. package/dist/daemon/routes/projects.ts +162 -0
  233. package/dist/daemon/routes/tasks.ts +327 -0
  234. package/dist/daemon/routes/triage.ts +402 -0
  235. package/dist/daemon/routes/validation.ts +248 -0
  236. package/dist/daemon/server.ts +408 -0
  237. package/dist/daemon/watcher.ts +195 -0
  238. package/dist/daemon/websocket/handler.ts +138 -0
  239. package/dist/daemon/websocket/heartbeat.ts +71 -0
  240. package/dist/daemon/websocket/pubsub.ts +125 -0
  241. package/dist/daemon/websocket/types.ts +66 -0
  242. package/dist/export/html.d.ts +19 -0
  243. package/dist/export/html.d.ts.map +1 -0
  244. package/dist/export/html.js +239 -0
  245. package/dist/export/html.js.map +1 -0
  246. package/dist/export/index.d.ts +10 -0
  247. package/dist/export/index.d.ts.map +1 -0
  248. package/dist/export/index.js +10 -0
  249. package/dist/export/index.js.map +1 -0
  250. package/dist/export/json.d.ts +24 -0
  251. package/dist/export/json.d.ts.map +1 -0
  252. package/dist/export/json.js +198 -0
  253. package/dist/export/json.js.map +1 -0
  254. package/dist/export/triage.d.ts +51 -0
  255. package/dist/export/triage.d.ts.map +1 -0
  256. package/dist/export/triage.js +83 -0
  257. package/dist/export/triage.js.map +1 -0
  258. package/dist/export/types.d.ts +122 -0
  259. package/dist/export/types.d.ts.map +1 -0
  260. package/dist/export/types.js +9 -0
  261. package/dist/export/types.js.map +1 -0
  262. package/dist/index.d.ts +2 -2
  263. package/dist/index.js +2 -2
  264. package/dist/lib/claude-plugin-registry.d.ts +66 -0
  265. package/dist/lib/claude-plugin-registry.d.ts.map +1 -0
  266. package/dist/lib/claude-plugin-registry.js +318 -0
  267. package/dist/lib/claude-plugin-registry.js.map +1 -0
  268. package/dist/merge/arrays.d.ts +87 -0
  269. package/dist/merge/arrays.d.ts.map +1 -0
  270. package/dist/merge/arrays.js +164 -0
  271. package/dist/merge/arrays.js.map +1 -0
  272. package/dist/merge/file-type.d.ts +32 -0
  273. package/dist/merge/file-type.d.ts.map +1 -0
  274. package/dist/merge/file-type.js +70 -0
  275. package/dist/merge/file-type.js.map +1 -0
  276. package/dist/merge/index.d.ts +14 -0
  277. package/dist/merge/index.d.ts.map +1 -0
  278. package/dist/merge/index.js +11 -0
  279. package/dist/merge/index.js.map +1 -0
  280. package/dist/merge/objects.d.ts +46 -0
  281. package/dist/merge/objects.d.ts.map +1 -0
  282. package/dist/merge/objects.js +193 -0
  283. package/dist/merge/objects.js.map +1 -0
  284. package/dist/merge/parse.d.ts +23 -0
  285. package/dist/merge/parse.d.ts.map +1 -0
  286. package/dist/merge/parse.js +78 -0
  287. package/dist/merge/parse.js.map +1 -0
  288. package/dist/merge/resolve.d.ts +66 -0
  289. package/dist/merge/resolve.d.ts.map +1 -0
  290. package/dist/merge/resolve.js +189 -0
  291. package/dist/merge/resolve.js.map +1 -0
  292. package/dist/merge/types.d.ts +82 -0
  293. package/dist/merge/types.d.ts.map +1 -0
  294. package/dist/merge/types.js +8 -0
  295. package/dist/merge/types.js.map +1 -0
  296. package/dist/parser/agent-data-sections.d.ts +53 -0
  297. package/dist/parser/agent-data-sections.d.ts.map +1 -0
  298. package/dist/parser/agent-data-sections.js +118 -0
  299. package/dist/parser/agent-data-sections.js.map +1 -0
  300. package/dist/parser/alignment.d.ts +4 -4
  301. package/dist/parser/alignment.d.ts.map +1 -1
  302. package/dist/parser/alignment.js +27 -22
  303. package/dist/parser/alignment.js.map +1 -1
  304. package/dist/parser/assess.d.ts +5 -5
  305. package/dist/parser/assess.d.ts.map +1 -1
  306. package/dist/parser/assess.js +36 -32
  307. package/dist/parser/assess.js.map +1 -1
  308. package/dist/parser/config.d.ts +457 -0
  309. package/dist/parser/config.d.ts.map +1 -0
  310. package/dist/parser/config.js +373 -0
  311. package/dist/parser/config.js.map +1 -0
  312. package/dist/parser/convention-validation.d.ts +1 -1
  313. package/dist/parser/convention-validation.d.ts.map +1 -1
  314. package/dist/parser/convention-validation.js +21 -16
  315. package/dist/parser/convention-validation.js.map +1 -1
  316. package/dist/parser/coverage-cache.d.ts +49 -0
  317. package/dist/parser/coverage-cache.d.ts.map +1 -0
  318. package/dist/parser/coverage-cache.js +123 -0
  319. package/dist/parser/coverage-cache.js.map +1 -0
  320. package/dist/parser/daemon-status.d.ts +37 -0
  321. package/dist/parser/daemon-status.d.ts.map +1 -0
  322. package/dist/parser/daemon-status.js +67 -0
  323. package/dist/parser/daemon-status.js.map +1 -0
  324. package/dist/parser/doctor.d.ts +107 -0
  325. package/dist/parser/doctor.d.ts.map +1 -0
  326. package/dist/parser/doctor.js +366 -0
  327. package/dist/parser/doctor.js.map +1 -0
  328. package/dist/parser/fix.d.ts +1 -1
  329. package/dist/parser/fix.d.ts.map +1 -1
  330. package/dist/parser/fix.js +31 -27
  331. package/dist/parser/fix.js.map +1 -1
  332. package/dist/parser/index.d.ts +16 -11
  333. package/dist/parser/index.d.ts.map +1 -1
  334. package/dist/parser/index.js +16 -11
  335. package/dist/parser/index.js.map +1 -1
  336. package/dist/parser/items.d.ts +8 -2
  337. package/dist/parser/items.d.ts.map +1 -1
  338. package/dist/parser/items.js +71 -35
  339. package/dist/parser/items.js.map +1 -1
  340. package/dist/parser/meta.d.ts +167 -9
  341. package/dist/parser/meta.d.ts.map +1 -1
  342. package/dist/parser/meta.js +379 -46
  343. package/dist/parser/meta.js.map +1 -1
  344. package/dist/parser/plan-document.d.ts +197 -0
  345. package/dist/parser/plan-document.d.ts.map +1 -0
  346. package/dist/parser/plan-document.js +341 -0
  347. package/dist/parser/plan-document.js.map +1 -0
  348. package/dist/parser/plans.d.ts +59 -0
  349. package/dist/parser/plans.d.ts.map +1 -0
  350. package/dist/parser/plans.js +239 -0
  351. package/dist/parser/plans.js.map +1 -0
  352. package/dist/parser/refs.d.ts +22 -9
  353. package/dist/parser/refs.d.ts.map +1 -1
  354. package/dist/parser/refs.js +102 -50
  355. package/dist/parser/refs.js.map +1 -1
  356. package/dist/parser/setup-status.d.ts +71 -0
  357. package/dist/parser/setup-status.d.ts.map +1 -0
  358. package/dist/parser/setup-status.js +269 -0
  359. package/dist/parser/setup-status.js.map +1 -0
  360. package/dist/parser/shadow.d.ts +150 -19
  361. package/dist/parser/shadow.d.ts.map +1 -1
  362. package/dist/parser/shadow.js +548 -187
  363. package/dist/parser/shadow.js.map +1 -1
  364. package/dist/parser/skill-render.d.ts +317 -0
  365. package/dist/parser/skill-render.d.ts.map +1 -0
  366. package/dist/parser/skill-render.js +943 -0
  367. package/dist/parser/skill-render.js.map +1 -0
  368. package/dist/parser/traits.d.ts +3 -3
  369. package/dist/parser/traits.d.ts.map +1 -1
  370. package/dist/parser/traits.js +2 -2
  371. package/dist/parser/traits.js.map +1 -1
  372. package/dist/parser/validate-skills.d.ts +32 -0
  373. package/dist/parser/validate-skills.d.ts.map +1 -0
  374. package/dist/parser/validate-skills.js +202 -0
  375. package/dist/parser/validate-skills.js.map +1 -0
  376. package/dist/parser/validate.d.ts +45 -3
  377. package/dist/parser/validate.d.ts.map +1 -1
  378. package/dist/parser/validate.js +622 -105
  379. package/dist/parser/validate.js.map +1 -1
  380. package/dist/parser/yaml.d.ts +83 -19
  381. package/dist/parser/yaml.d.ts.map +1 -1
  382. package/dist/parser/yaml.js +478 -173
  383. package/dist/parser/yaml.js.map +1 -1
  384. package/dist/ralph/cli-renderer.d.ts +8 -1
  385. package/dist/ralph/cli-renderer.d.ts.map +1 -1
  386. package/dist/ralph/cli-renderer.js +105 -34
  387. package/dist/ralph/cli-renderer.js.map +1 -1
  388. package/dist/ralph/events.d.ts +10 -10
  389. package/dist/ralph/events.d.ts.map +1 -1
  390. package/dist/ralph/events.js +301 -98
  391. package/dist/ralph/events.js.map +1 -1
  392. package/dist/ralph/index.d.ts +5 -2
  393. package/dist/ralph/index.d.ts.map +1 -1
  394. package/dist/ralph/index.js +9 -3
  395. package/dist/ralph/index.js.map +1 -1
  396. package/dist/ralph/loop-errors.d.ts +83 -0
  397. package/dist/ralph/loop-errors.d.ts.map +1 -0
  398. package/dist/ralph/loop-errors.js +150 -0
  399. package/dist/ralph/loop-errors.js.map +1 -0
  400. package/dist/ralph/subagent.d.ts +94 -0
  401. package/dist/ralph/subagent.d.ts.map +1 -0
  402. package/dist/ralph/subagent.js +193 -0
  403. package/dist/ralph/subagent.js.map +1 -0
  404. package/dist/ralph/wrap-up.d.ts +125 -0
  405. package/dist/ralph/wrap-up.d.ts.map +1 -0
  406. package/dist/ralph/wrap-up.js +270 -0
  407. package/dist/ralph/wrap-up.js.map +1 -0
  408. package/dist/schema/batch.d.ts +97 -0
  409. package/dist/schema/batch.d.ts.map +1 -0
  410. package/dist/schema/batch.js +24 -0
  411. package/dist/schema/batch.js.map +1 -0
  412. package/dist/schema/common.d.ts +8 -2
  413. package/dist/schema/common.d.ts.map +1 -1
  414. package/dist/schema/common.js +42 -31
  415. package/dist/schema/common.js.map +1 -1
  416. package/dist/schema/inbox.d.ts +12 -12
  417. package/dist/schema/inbox.js +4 -4
  418. package/dist/schema/inbox.js.map +1 -1
  419. package/dist/schema/index.d.ts +8 -5
  420. package/dist/schema/index.d.ts.map +1 -1
  421. package/dist/schema/index.js +8 -5
  422. package/dist/schema/index.js.map +1 -1
  423. package/dist/schema/meta.d.ts +1454 -27
  424. package/dist/schema/meta.d.ts.map +1 -1
  425. package/dist/schema/meta.js +198 -21
  426. package/dist/schema/meta.js.map +1 -1
  427. package/dist/schema/plan.d.ts +285 -0
  428. package/dist/schema/plan.d.ts.map +1 -0
  429. package/dist/schema/plan.js +81 -0
  430. package/dist/schema/plan.js.map +1 -0
  431. package/dist/schema/spec.d.ts +72 -33
  432. package/dist/schema/spec.d.ts.map +1 -1
  433. package/dist/schema/spec.js +22 -9
  434. package/dist/schema/spec.js.map +1 -1
  435. package/dist/schema/task.d.ts +172 -161
  436. package/dist/schema/task.d.ts.map +1 -1
  437. package/dist/schema/task.js +21 -12
  438. package/dist/schema/task.js.map +1 -1
  439. package/dist/schema/triage.d.ts +266 -0
  440. package/dist/schema/triage.d.ts.map +1 -0
  441. package/dist/schema/triage.js +134 -0
  442. package/dist/schema/triage.js.map +1 -0
  443. package/dist/sessions/index.d.ts +2 -2
  444. package/dist/sessions/index.d.ts.map +1 -1
  445. package/dist/sessions/index.js +3 -3
  446. package/dist/sessions/index.js.map +1 -1
  447. package/dist/sessions/store.d.ts +241 -1
  448. package/dist/sessions/store.d.ts.map +1 -1
  449. package/dist/sessions/store.js +810 -31
  450. package/dist/sessions/store.js.map +1 -1
  451. package/dist/sessions/types.d.ts +10 -10
  452. package/dist/sessions/types.d.ts.map +1 -1
  453. package/dist/sessions/types.js +10 -9
  454. package/dist/sessions/types.js.map +1 -1
  455. package/dist/strings/errors.d.ts +55 -0
  456. package/dist/strings/errors.d.ts.map +1 -1
  457. package/dist/strings/errors.js +138 -106
  458. package/dist/strings/errors.js.map +1 -1
  459. package/dist/strings/guidance.d.ts.map +1 -1
  460. package/dist/strings/guidance.js +16 -16
  461. package/dist/strings/guidance.js.map +1 -1
  462. package/dist/strings/index.d.ts +4 -4
  463. package/dist/strings/index.d.ts.map +1 -1
  464. package/dist/strings/index.js +4 -4
  465. package/dist/strings/index.js.map +1 -1
  466. package/dist/strings/labels.d.ts +4 -0
  467. package/dist/strings/labels.d.ts.map +1 -1
  468. package/dist/strings/labels.js +45 -41
  469. package/dist/strings/labels.js.map +1 -1
  470. package/dist/strings/validation.d.ts.map +1 -1
  471. package/dist/strings/validation.js +71 -71
  472. package/dist/strings/validation.js.map +1 -1
  473. package/dist/triage/actions.d.ts +27 -0
  474. package/dist/triage/actions.d.ts.map +1 -0
  475. package/dist/triage/actions.js +95 -0
  476. package/dist/triage/actions.js.map +1 -0
  477. package/dist/triage/constants.d.ts +6 -0
  478. package/dist/triage/constants.d.ts.map +1 -0
  479. package/dist/triage/constants.js +7 -0
  480. package/dist/triage/constants.js.map +1 -0
  481. package/dist/triage/index.d.ts +3 -0
  482. package/dist/triage/index.d.ts.map +1 -0
  483. package/dist/triage/index.js +3 -0
  484. package/dist/triage/index.js.map +1 -0
  485. package/dist/utils/commit.d.ts +1 -1
  486. package/dist/utils/commit.d.ts.map +1 -1
  487. package/dist/utils/commit.js +28 -26
  488. package/dist/utils/commit.js.map +1 -1
  489. package/dist/utils/git.d.ts +1 -1
  490. package/dist/utils/git.d.ts.map +1 -1
  491. package/dist/utils/git.js +40 -38
  492. package/dist/utils/git.js.map +1 -1
  493. package/dist/utils/grep.js +11 -11
  494. package/dist/utils/grep.js.map +1 -1
  495. package/dist/utils/index.d.ts +7 -7
  496. package/dist/utils/index.d.ts.map +1 -1
  497. package/dist/utils/index.js +4 -4
  498. package/dist/utils/index.js.map +1 -1
  499. package/dist/utils/time.d.ts.map +1 -1
  500. package/dist/utils/time.js +10 -10
  501. package/dist/utils/time.js.map +1 -1
  502. package/package.json +28 -5
  503. package/plugin/.claude-plugin/marketplace.json +17 -0
  504. package/plugin/.claude-plugin/plugin.json +5 -0
  505. package/plugin/plugins/kspec/skills/create-workflow/SKILL.md +235 -0
  506. package/plugin/plugins/kspec/skills/help/SKILL.md +42 -0
  507. package/plugin/plugins/kspec/skills/observations/SKILL.md +143 -0
  508. package/plugin/plugins/kspec/skills/plan/SKILL.md +343 -0
  509. package/plugin/plugins/kspec/skills/reflect/SKILL.md +161 -0
  510. package/plugin/plugins/kspec/skills/review/SKILL.md +193 -0
  511. package/plugin/plugins/kspec/skills/task-work/SKILL.md +303 -0
  512. package/plugin/plugins/kspec/skills/triage/SKILL.md +206 -0
  513. package/plugin/plugins/kspec/skills/triage/docs/automation.md +120 -0
  514. package/plugin/plugins/kspec/skills/triage/docs/inbox.md +144 -0
  515. package/plugin/plugins/kspec/skills/triage/docs/observations.md +85 -0
  516. package/plugin/plugins/kspec/skills/triage-automation/SKILL.md +140 -0
  517. package/plugin/plugins/kspec/skills/triage-inbox/SKILL.md +232 -0
  518. package/plugin/plugins/kspec/skills/writing-specs/SKILL.md +340 -0
  519. package/templates/agents-sections/01-quick-start.md +22 -0
  520. package/templates/agents-sections/02-shadow-branch.md +34 -0
  521. package/templates/agents-sections/03-task-lifecycle.md +48 -0
  522. package/templates/agents-sections/04-pr-workflow.md +17 -0
  523. package/templates/agents-sections/05-commit-convention.md +27 -0
  524. package/templates/agents-sections/06-ralph-loop.md +45 -0
  525. package/templates/hooks/pre-commit +34 -0
  526. package/templates/skills/create-workflow/SKILL.md +228 -0
  527. package/templates/skills/help/SKILL.md +37 -0
  528. package/templates/skills/manifest.yaml +60 -0
  529. package/templates/skills/observations/SKILL.md +137 -0
  530. package/templates/skills/plan/SKILL.md +336 -0
  531. package/templates/skills/reflect/SKILL.md +155 -0
  532. package/templates/skills/review/SKILL.md +186 -0
  533. package/templates/skills/task-work/SKILL.md +296 -0
  534. package/templates/skills/triage/SKILL.md +199 -0
  535. package/templates/skills/triage/docs/automation.md +120 -0
  536. package/templates/skills/triage/docs/inbox.md +144 -0
  537. package/templates/skills/triage/docs/observations.md +85 -0
  538. package/templates/skills/triage-automation/SKILL.md +134 -0
  539. package/templates/skills/triage-inbox/SKILL.md +225 -0
  540. package/templates/skills/writing-specs/SKILL.md +333 -0
@@ -0,0 +1,547 @@
1
+ /**
2
+ * Plan import CLI command
3
+ * AC: @plan-import ac-11 through ac-33
4
+ */
5
+ import * as fs from "node:fs/promises";
6
+ import * as path from "node:path";
7
+ import { markMutating } from "../command-annotations.js";
8
+ import { addChildItem, buildIndexes, createPlan, createSpecItem, createTask, getAuthor, initContext, loadAllTasks, loadPlans, savePlan, saveTask, updateSpecItem, } from "../../parser/index.js";
9
+ import { parsePlanDocument, topologicalSort, validateParentRefs, } from "../../parser/plan-document.js";
10
+ import { commitIfShadow } from "../../parser/shadow.js";
11
+ import { normalizeRefInput } from "../../schema/index.js";
12
+ import { errors } from "../../strings/index.js";
13
+ import { EXIT_CODES } from "../exit-codes.js";
14
+ import { error, info, isJsonMode, output, success, warn } from "../output.js";
15
+ import { ulid } from "ulid";
16
+ /**
17
+ * Register plan import command
18
+ * AC: @plan-import ac-11, ac-15, ac-32
19
+ */
20
+ export function registerPlanImportCommand(planCommand) {
21
+ markMutating(planCommand.command("import <path>"))
22
+ .description("Import plan document and auto-generate specs/tasks")
23
+ .requiredOption("--module <ref>", "Module to add specs under (e.g., @core-module)")
24
+ .option("--dry-run", "Show what would be created without making changes")
25
+ .option("--update", "Update existing specs instead of skipping them")
26
+ .option("--json", "Output as JSON")
27
+ .addHelpText("after", `
28
+ Format:
29
+ Plan documents use markdown with a ## Specs section containing a fenced
30
+ YAML code block. The YAML must be wrapped in triple-backtick yaml markers:
31
+
32
+ ## Specs
33
+ \`\`\`yaml
34
+ - title: My Feature
35
+ type: feature
36
+ \`\`\`
37
+
38
+ Without the fenced code block, specs will not be detected.
39
+
40
+ Examples:
41
+ $ kspec plan import ./plan.md --module @core
42
+ $ kspec plan import ./plan.md --module @api --dry-run
43
+ $ kspec plan import ./plan.md --module @features --update --json`)
44
+ .action(async (planPath, options) => {
45
+ try {
46
+ await importPlan(planPath, options);
47
+ }
48
+ catch (err) {
49
+ error("Failed to import plan", err);
50
+ process.exit(EXIT_CODES.ERROR);
51
+ }
52
+ });
53
+ }
54
+ /**
55
+ * Import plan document and create specs/tasks
56
+ * AC: @plan-import ac-11 through ac-33
57
+ */
58
+ async function importPlan(planPath, options) {
59
+ // JSON mode is set by global preAction hook
60
+ const ctx = await initContext();
61
+ const author = getAuthor(ctx.config?.identity?.author);
62
+ // Read plan file
63
+ // AC: @plan-import ac-21 - Handle file read errors
64
+ const fullPath = path.resolve(process.cwd(), planPath);
65
+ let content;
66
+ try {
67
+ content = await fs.readFile(fullPath, "utf-8");
68
+ }
69
+ catch (err) {
70
+ error(`Failed to read plan file: ${planPath}`, err);
71
+ process.exit(EXIT_CODES.USAGE_ERROR);
72
+ }
73
+ // Parse plan document
74
+ // AC: @plan-import ac-11, ac-12, ac-13, ac-21, ac-22
75
+ const parsed = parsePlanDocument(content);
76
+ // Report parsing errors
77
+ if (parsed.errors.length > 0) {
78
+ for (const err of parsed.errors) {
79
+ if (err.type === "yaml") {
80
+ // AC: @plan-import ac-21 - YAML parse errors (fatal)
81
+ error(err.message);
82
+ process.exit(EXIT_CODES.USAGE_ERROR);
83
+ }
84
+ else if (err.type === "validation") {
85
+ // AC: @plan-import ac-22 - Validation errors (non-fatal, add to warnings)
86
+ warn(err.message);
87
+ }
88
+ }
89
+ }
90
+ // Load plans for cross-namespace slug safety
91
+ const plans = await loadPlans(ctx);
92
+ // Build indexes to check existing specs (include plans for cross-namespace slug safety)
93
+ const { refIndex, items } = await buildIndexes(ctx, plans);
94
+ const existingSpecRefs = new Set();
95
+ for (const item of items) {
96
+ for (const slug of item.slugs || []) {
97
+ existingSpecRefs.add(slug);
98
+ }
99
+ existingSpecRefs.add(item._ulid.slice(0, 8));
100
+ }
101
+ // Resolve module reference
102
+ const moduleResult = refIndex.resolve(options.module);
103
+ if (!moduleResult.ok) {
104
+ error(errors.reference.itemNotFound(options.module));
105
+ process.exit(EXIT_CODES.NOT_FOUND);
106
+ }
107
+ const moduleItem = moduleResult.item;
108
+ // Verify it's a module
109
+ if (moduleItem.type !== "module") {
110
+ error(`${options.module} is not a module (type: ${moduleItem.type})`);
111
+ process.exit(EXIT_CODES.USAGE_ERROR);
112
+ }
113
+ // Validate parent references
114
+ // AC: @plan-import ac-17, ac-33
115
+ const parentErrors = validateParentRefs(parsed.specs, existingSpecRefs);
116
+ parsed.errors.push(...parentErrors);
117
+ // Sort specs topologically
118
+ // AC: @plan-import ac-16, ac-18
119
+ const { sorted, error: sortError } = topologicalSort(parsed.specs);
120
+ if (sortError) {
121
+ // AC: @plan-import ac-18 - Circular dependency detection
122
+ error(sortError.message);
123
+ process.exit(EXIT_CODES.USAGE_ERROR);
124
+ }
125
+ // Create plan record
126
+ // AC: @plan-import ac-24, ac-28
127
+ // Auto-namespace plan slugs with "plan-" prefix to prevent collision with spec slugs
128
+ // Ensure uniqueness across all namespaces (plans + specs + tasks via refIndex)
129
+ let planSlug = `plan-${generateSlug(parsed.title)}`;
130
+ let counter = 1;
131
+ const baseSlug = planSlug;
132
+ while (!refIndex.isSlugAvailable(planSlug)) {
133
+ planSlug = `${baseSlug}-${counter}`;
134
+ counter++;
135
+ }
136
+ // Track all slugs created during this import (refIndex is stale after mutations)
137
+ const importReservedSlugs = new Set([planSlug]);
138
+ const planInput = {
139
+ title: parsed.title,
140
+ content: parsed.content,
141
+ status: "active",
142
+ slugs: [planSlug],
143
+ source_path: fullPath,
144
+ };
145
+ const newPlan = createPlan(planInput);
146
+ const planRef = `@${planSlug}`;
147
+ // AC: @plan-import ac-13 - Attach global implementation notes to plan record
148
+ if (parsed.implementationNotes) {
149
+ newPlan.notes.push({
150
+ _ulid: ulid(),
151
+ created_at: new Date().toISOString(),
152
+ author,
153
+ content: `Implementation notes:\n\n${parsed.implementationNotes}`,
154
+ });
155
+ }
156
+ // Initialize result
157
+ const result = {
158
+ createdSpecs: [],
159
+ updatedSpecs: [],
160
+ createdTasks: [],
161
+ errors: [],
162
+ skipped: [],
163
+ planRef,
164
+ };
165
+ // Add parser validation errors to result
166
+ // AC: @plan-import ac-22, ac-29 - Include parser validation errors in summary
167
+ for (const err of parsed.errors) {
168
+ if (err.type === "validation") {
169
+ result.errors.push({ message: err.message });
170
+ }
171
+ }
172
+ // Track newly created specs for parent resolution
173
+ // AC: @plan-import ac-16 - Resolve local references
174
+ const createdSpecsMap = new Map();
175
+ // Process specs
176
+ // AC: @plan-import ac-14, ac-16, ac-17, ac-22, ac-23, ac-25, ac-26, ac-29
177
+ for (let i = 0; i < sorted.length; i++) {
178
+ const spec = sorted[i];
179
+ try {
180
+ // Validate required fields first
181
+ // AC: @plan-import ac-22
182
+ if (!spec.title) {
183
+ const errMsg = `Spec at index ${i} missing required field: title`;
184
+ warn(errMsg);
185
+ result.errors.push({ message: errMsg, spec });
186
+ continue;
187
+ }
188
+ const specSlug = spec.slug || generateSlug(spec.title);
189
+ const specRef = `@${specSlug}`;
190
+ // Check against slugs reserved during this import (plan slug, earlier specs)
191
+ if (importReservedSlugs.has(specSlug)) {
192
+ warn(`Spec slug "${specSlug}" collides with another item in this import, skipping`);
193
+ result.skipped.push({ slug: specSlug, reason: "Slug collision within import" });
194
+ continue;
195
+ }
196
+ // Check if spec already exists in pre-import state
197
+ const exists = refIndex.resolve(specRef);
198
+ if (exists.ok && !options.update) {
199
+ // AC: @plan-import ac-14, ac-25 - Skip existing specs
200
+ warn(`Skipping existing spec: ${specRef}`);
201
+ result.skipped.push({ slug: specSlug, reason: "Already exists" });
202
+ continue;
203
+ }
204
+ if (exists.ok && options.update) {
205
+ // AC: @plan-import ac-26 - Update existing spec
206
+ // Updates: description, type, tags, traits, and acceptance_criteria
207
+ const existingSpec = exists.item;
208
+ if (options.dryRun) {
209
+ info(`Would update spec: ${specRef}`);
210
+ result.updatedSpecs.push(specRef);
211
+ }
212
+ else {
213
+ // Build updates from plan spec
214
+ const updates = {};
215
+ if (spec.description !== undefined) {
216
+ updates.description = spec.description;
217
+ }
218
+ if (spec.type !== undefined) {
219
+ updates.type = spec.type;
220
+ }
221
+ if (spec.traits !== undefined) {
222
+ updates.traits = spec.traits.map(normalizeRefInput);
223
+ }
224
+ if (spec.acceptance_criteria !== undefined) {
225
+ updates.acceptance_criteria = spec.acceptance_criteria;
226
+ }
227
+ await updateSpecItem(ctx, existingSpec, updates);
228
+ info(`Updated spec: ${specRef}`);
229
+ result.updatedSpecs.push(specRef);
230
+ }
231
+ continue;
232
+ }
233
+ // Resolve parent reference
234
+ // AC: @plan-import ac-16, ac-17
235
+ let parent = null;
236
+ if (spec.parent) {
237
+ const parentRef = normalizeRefInput(spec.parent);
238
+ // Check if parent was just created in this import
239
+ const parentSlug = parentRef.slice(1);
240
+ if (createdSpecsMap.has(parentSlug)) {
241
+ parent = createdSpecsMap.get(parentSlug);
242
+ }
243
+ else {
244
+ // Check existing specs
245
+ const parentResult = refIndex.resolve(parentRef);
246
+ if (!parentResult.ok) {
247
+ // AC: @plan-import ac-17, ac-33 - Missing parent with hint
248
+ const errMsg = `Parent ${parentRef} not found. Check parent exists or define it earlier in plan`;
249
+ warn(errMsg);
250
+ result.errors.push({ message: errMsg, spec });
251
+ result.skipped.push({ slug: specSlug, reason: "Missing parent" });
252
+ continue;
253
+ }
254
+ parent = parentResult.item;
255
+ }
256
+ }
257
+ // Determine if this is a root-level trait (type: trait with no parent)
258
+ const isRootTrait = (spec.type === "trait") && !parent;
259
+ if (options.dryRun) {
260
+ // AC: @plan-import ac-15 - Dry run mode
261
+ info(`Would create spec: ${specRef} ${spec.parent ? `under ${spec.parent}` : isRootTrait ? "(project-level trait)" : "(root)"}`);
262
+ result.createdSpecs.push(specRef);
263
+ importReservedSlugs.add(specSlug);
264
+ // Track would-be created spec for parent resolution in dry-run
265
+ const dryRunSpec = createSpecItem({
266
+ title: spec.title,
267
+ type: spec.type || "feature",
268
+ slugs: [specSlug],
269
+ description: spec.description,
270
+ ...(spec.acceptance_criteria ? { acceptance_criteria: spec.acceptance_criteria } : {}),
271
+ priority: undefined,
272
+ tags: [],
273
+ depends_on: [],
274
+ implements: [],
275
+ relates_to: [],
276
+ tests: [],
277
+ traits: (spec.traits || []).map(normalizeRefInput),
278
+ notes: [],
279
+ });
280
+ createdSpecsMap.set(specSlug, dryRunSpec);
281
+ }
282
+ else {
283
+ // Create spec item
284
+ const specInput = {
285
+ title: spec.title,
286
+ type: spec.type || "feature",
287
+ slugs: [specSlug],
288
+ description: spec.description,
289
+ priority: undefined,
290
+ tags: [],
291
+ depends_on: [],
292
+ implements: [],
293
+ relates_to: [],
294
+ tests: [],
295
+ traits: (spec.traits || []).map(normalizeRefInput),
296
+ notes: [],
297
+ };
298
+ // Add acceptance criteria if present
299
+ if (spec.acceptance_criteria) {
300
+ specInput.acceptance_criteria = spec.acceptance_criteria;
301
+ }
302
+ const newSpec = createSpecItem(specInput);
303
+ if (isRootTrait) {
304
+ // Traits without a parent go to kynetic.yaml project-level traits array,
305
+ // not the module-level traits array (same logic as `kspec trait add`)
306
+ if (!ctx.manifestPath) {
307
+ throw new Error("Could not find kynetic.yaml");
308
+ }
309
+ const { readYamlFile, writeYamlFilePreserveFormat } = await import("../../parser/yaml.js");
310
+ const manifest = await readYamlFile(ctx.manifestPath);
311
+ if (!manifest) {
312
+ throw new Error("Could not load kynetic.yaml");
313
+ }
314
+ // Ensure traits array exists at root
315
+ if (!Array.isArray(manifest.traits)) {
316
+ manifest.traits = [];
317
+ }
318
+ // Strip metadata from newSpec (_sourceFile, _path)
319
+ const { _sourceFile, _path, ...cleanItem } = newSpec;
320
+ manifest.traits.push(cleanItem);
321
+ await writeYamlFilePreserveFormat(ctx.manifestPath, manifest);
322
+ const traitIndex = manifest.traits.length - 1;
323
+ const createdSpec = {
324
+ ...newSpec,
325
+ _sourceFile: ctx.manifestPath,
326
+ _path: `traits[${traitIndex}]`,
327
+ };
328
+ createdSpecsMap.set(specSlug, createdSpec);
329
+ }
330
+ else {
331
+ // Add spec to parent (or module if no parent)
332
+ const actualParent = parent || moduleItem;
333
+ const addResult = await addChildItem(ctx, actualParent, newSpec);
334
+ // Track the created spec for parent resolution
335
+ // Need to construct LoadedSpecItem with _sourceFile and _path for nested specs
336
+ const createdSpec = {
337
+ ...addResult.item,
338
+ _sourceFile: actualParent._sourceFile,
339
+ _path: addResult.path,
340
+ };
341
+ createdSpecsMap.set(specSlug, createdSpec);
342
+ }
343
+ result.createdSpecs.push(specRef);
344
+ importReservedSlugs.add(specSlug);
345
+ newPlan.derived_specs.push(specRef);
346
+ info(`Created spec: ${specRef}`);
347
+ }
348
+ }
349
+ catch (err) {
350
+ const errMsg = `Failed to create spec "${spec.title}": ${err instanceof Error ? err.message : String(err)}`;
351
+ warn(errMsg);
352
+ result.errors.push({ message: errMsg, spec });
353
+ }
354
+ }
355
+ // Derive tasks from specs
356
+ // AC: @plan-import ac-12, ac-13, ac-19, ac-20
357
+ if (parsed.tasks.derive_from_specs && result.createdSpecs.length > 0) {
358
+ const tasks = await loadAllTasks(ctx);
359
+ // Combine existing task slugs + all slugs reserved during this import (plan + specs)
360
+ const importSlugs = new Set([
361
+ ...tasks.flatMap((t) => t.slugs),
362
+ ...importReservedSlugs,
363
+ ]);
364
+ for (const specRef of result.createdSpecs) {
365
+ // Get spec from createdSpecsMap (works in both dry-run and real mode)
366
+ const specSlug = specRef.slice(1);
367
+ const spec = createdSpecsMap.get(specSlug);
368
+ if (!spec)
369
+ continue;
370
+ // AC: @plan-import ac-20 - Task title follows "Implement X" pattern
371
+ const taskTitle = `Implement ${spec.title}`;
372
+ const taskSlug = generateSlug(taskTitle);
373
+ // Ensure slug uniqueness across all namespaces + this import's slugs
374
+ let uniqueSlug = taskSlug;
375
+ let counter = 1;
376
+ while (importSlugs.has(uniqueSlug) || !refIndex.isSlugAvailable(uniqueSlug)) {
377
+ uniqueSlug = `${taskSlug}-${counter}`;
378
+ counter++;
379
+ }
380
+ importSlugs.add(uniqueSlug);
381
+ importReservedSlugs.add(uniqueSlug);
382
+ if (options.dryRun) {
383
+ info(`Would derive task: @${uniqueSlug} from ${specRef}`);
384
+ result.createdTasks.push(`@${uniqueSlug}`);
385
+ }
386
+ else {
387
+ // AC: @plan-import ac-19 - Task has both spec_ref and plan_ref
388
+ const taskInput = {
389
+ title: taskTitle,
390
+ type: "task",
391
+ spec_ref: specRef,
392
+ plan_ref: planRef,
393
+ priority: 3,
394
+ slugs: [uniqueSlug],
395
+ tags: [],
396
+ depends_on: [],
397
+ notes: [],
398
+ };
399
+ const newTask = createTask(taskInput);
400
+ // AC: @plan-import ac-13 - Scoped implementation notes
401
+ const planSpec = parsed.specs.find(s => (s.slug || generateSlug(s.title)) === specSlug);
402
+ if (planSpec?.implementation_notes) {
403
+ // Per-spec notes go directly to this task
404
+ newTask.notes.push({
405
+ _ulid: ulid(),
406
+ created_at: new Date().toISOString(),
407
+ author,
408
+ content: `Implementation notes:\n\n${planSpec.implementation_notes}`,
409
+ });
410
+ }
411
+ else if (parsed.implementationNotes) {
412
+ // No per-spec notes — reference the plan
413
+ newTask.notes.push({
414
+ _ulid: ulid(),
415
+ created_at: new Date().toISOString(),
416
+ author,
417
+ content: `See plan ${planRef} for implementation notes`,
418
+ });
419
+ }
420
+ await saveTask(ctx, newTask);
421
+ result.createdTasks.push(`@${uniqueSlug}`);
422
+ newPlan.derived_tasks.push(`@${uniqueSlug}`);
423
+ info(`Derived task: @${uniqueSlug}`);
424
+ }
425
+ }
426
+ }
427
+ // Create manual tasks
428
+ // AC: @plan-import ac-27
429
+ if (parsed.tasks.additional_tasks) {
430
+ // Reload tasks to catch any created by derive loop above
431
+ // Combine with all slugs reserved during this import (plan + specs)
432
+ const manualTasks = await loadAllTasks(ctx);
433
+ const manualImportSlugs = new Set([
434
+ ...manualTasks.flatMap((t) => t.slugs),
435
+ ...importReservedSlugs,
436
+ ]);
437
+ for (const taskDef of parsed.tasks.additional_tasks) {
438
+ const taskSlug = taskDef.slug || generateSlug(taskDef.title);
439
+ // Ensure slug uniqueness across all namespaces + this import's slugs
440
+ let uniqueSlug = taskSlug;
441
+ let counter = 1;
442
+ while (manualImportSlugs.has(uniqueSlug) || !refIndex.isSlugAvailable(uniqueSlug)) {
443
+ uniqueSlug = `${taskSlug}-${counter}`;
444
+ counter++;
445
+ }
446
+ manualImportSlugs.add(uniqueSlug);
447
+ if (options.dryRun) {
448
+ info(`Would create manual task: @${uniqueSlug}`);
449
+ result.createdTasks.push(`@${uniqueSlug}`);
450
+ }
451
+ else {
452
+ // AC: @plan-import ac-27 - Manual tasks have plan_ref; spec_ref honored if provided
453
+ const taskInput = {
454
+ title: taskDef.title,
455
+ type: "task",
456
+ plan_ref: planRef,
457
+ priority: taskDef.priority || 3,
458
+ slugs: [uniqueSlug],
459
+ tags: taskDef.tags || [],
460
+ depends_on: [],
461
+ notes: [],
462
+ ...(taskDef.spec_ref ? { spec_ref: normalizeRefInput(taskDef.spec_ref) } : {}),
463
+ };
464
+ if (taskDef.description) {
465
+ taskInput.notes = [
466
+ {
467
+ _ulid: ulid(),
468
+ created_at: new Date().toISOString(),
469
+ author,
470
+ content: taskDef.description,
471
+ },
472
+ ];
473
+ }
474
+ const newTask = createTask(taskInput);
475
+ await saveTask(ctx, newTask);
476
+ result.createdTasks.push(`@${uniqueSlug}`);
477
+ newPlan.derived_tasks.push(`@${uniqueSlug}`);
478
+ info(`Created manual task: @${uniqueSlug}`);
479
+ }
480
+ }
481
+ }
482
+ // Save plan record
483
+ // AC: @plan-import ac-24
484
+ if (!options.dryRun) {
485
+ await savePlan(ctx, newPlan);
486
+ await commitIfShadow(ctx.shadow, "plan-import", planSlug, parsed.title);
487
+ }
488
+ // AC: @plan-import ac-23, ac-29 - Summary output
489
+ const successCount = result.createdSpecs.length +
490
+ result.updatedSpecs.length +
491
+ result.createdTasks.length;
492
+ const errorCount = result.errors.length + result.skipped.length;
493
+ // AC: @plan-import ac-32 - JSON output
494
+ if (isJsonMode()) {
495
+ output({
496
+ plan: planRef,
497
+ created_specs: result.createdSpecs,
498
+ updated_specs: result.updatedSpecs,
499
+ created_tasks: result.createdTasks,
500
+ errors: result.errors,
501
+ skipped: result.skipped,
502
+ });
503
+ }
504
+ else {
505
+ // Human-readable output
506
+ if (options.dryRun) {
507
+ console.log("\nDry run - no changes made\n");
508
+ }
509
+ console.log(`Plan: ${planRef}`);
510
+ console.log(`Created ${result.createdSpecs.length} specs`);
511
+ if (result.updatedSpecs.length > 0) {
512
+ console.log(`Updated ${result.updatedSpecs.length} specs`);
513
+ }
514
+ console.log(`Created ${result.createdTasks.length} tasks`);
515
+ if (result.errors.length > 0) {
516
+ console.log(`\nErrors (${result.errors.length}):`);
517
+ for (const err of result.errors) {
518
+ console.log(` - ${err.message}`);
519
+ }
520
+ }
521
+ if (result.skipped.length > 0) {
522
+ console.log(`\nSkipped (${result.skipped.length}):`);
523
+ for (const skip of result.skipped) {
524
+ console.log(` - @${skip.slug}: ${skip.reason}`);
525
+ }
526
+ }
527
+ // AC: @plan-import ac-15, ac-23 - Exit code 0 on success
528
+ if (!options.dryRun && successCount > 0) {
529
+ success(`\nImported plan: ${successCount} items created, ${errorCount} errors`);
530
+ }
531
+ } // end of else block (non-JSON output)
532
+ // Exit code logic
533
+ // AC: @plan-import ac-15 - Dry run exits 0
534
+ // AC: @plan-import ac-23 - Success with some errors still exits 0
535
+ process.exit(EXIT_CODES.SUCCESS);
536
+ }
537
+ /**
538
+ * Generate URL-safe slug from title
539
+ */
540
+ function generateSlug(title) {
541
+ return title
542
+ .toLowerCase()
543
+ .replace(/[^a-z0-9]+/g, "-")
544
+ .replace(/^-|-$/g, "")
545
+ .slice(0, 50);
546
+ }
547
+ //# sourceMappingURL=plan-import.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-import.js","sourceRoot":"","sources":["../../../src/cli/commands/plan-import.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Plan CLI commands
3
+ * AC: @plan-crud ac-1, ac-2, ac-3, ac-4, ac-7, ac-8, ac-9, ac-30, ac-31
4
+ */
5
+ import type { Command } from "commander";
6
+ /**
7
+ * Register the 'plan' command group
8
+ */
9
+ export declare function registerPlanCommands(program: Command): void;
10
+ //# sourceMappingURL=plan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/plan.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuDzC;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0d3D"}