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