@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,373 @@
1
+ /**
2
+ * Project-level configuration for kspec.
3
+ *
4
+ * Loads kspec.config.yaml from the project root (main branch) before shadow
5
+ * branch detection. All fields are optional with backward-compatible defaults.
6
+ *
7
+ * Priority: env vars > config file > defaults
8
+ *
9
+ * @module
10
+ */
11
+ import * as fs from "node:fs/promises";
12
+ import * as path from "node:path";
13
+ import { z } from "zod";
14
+ import * as YAML from "yaml";
15
+ import { getGitRoot } from "./shadow.js";
16
+ // ── Schema ──────────────────────────────────────────────────────────────
17
+ /**
18
+ * Schema for shadow branch configuration.
19
+ *
20
+ * AC: @config-shadow — shadow.branch, shadow.directory, shadow.remote configurable
21
+ */
22
+ const ShadowConfigSchema = z
23
+ .object({
24
+ /** Branch name for shadow branch (default: kspec-meta) */
25
+ branch: z.string().optional(),
26
+ /** Worktree directory name (default: .kspec) */
27
+ directory: z.string().optional(),
28
+ /**
29
+ * Remote target for shadow branch. Can be:
30
+ * - Named remote (e.g., "origin", "specs-origin")
31
+ * - Local filesystem path (starts with /, ./, or ~)
32
+ * - Git URL (contains :// or starts with git@)
33
+ */
34
+ remote: z.string().optional(),
35
+ })
36
+ .strict()
37
+ .optional();
38
+ /**
39
+ * Schema for identity configuration.
40
+ */
41
+ const IdentityConfigSchema = z
42
+ .object({
43
+ /** Default author for notes/tasks (overridden by KSPEC_AUTHOR env var) */
44
+ author: z.string().optional(),
45
+ })
46
+ .strict()
47
+ .optional();
48
+ /**
49
+ * Schema for validation configuration.
50
+ *
51
+ * AC: @config-validation — validation settings configurable in kspec.config.yaml
52
+ */
53
+ const ValidationConfigSchema = z
54
+ .object({
55
+ /**
56
+ * When true, dangling references are treated as errors instead of warnings.
57
+ * AC: @config-validation ac-2 ac-3 — strict_refs configurable
58
+ */
59
+ strict_refs: z.boolean().optional(),
60
+ /**
61
+ * When true, specs missing acceptance criteria are reported as errors not warnings.
62
+ * AC: @config-validation ac-1 — require_acceptance configurable
63
+ */
64
+ require_acceptance: z.boolean().optional(),
65
+ })
66
+ .strict()
67
+ .optional();
68
+ /**
69
+ * Schema for daemon configuration.
70
+ *
71
+ * AC: @config-daemon — daemon.port, daemon.auto_start configurable
72
+ */
73
+ const DaemonConfigSchema = z
74
+ .object({
75
+ /** Default port for daemon (default: 3456) */
76
+ port: z.number().int().min(1).max(65535).optional(),
77
+ /** Host to bind to (default: localhost) */
78
+ host: z.string().optional(),
79
+ /**
80
+ * Whether to auto-start daemon when running kspec commands.
81
+ * AC: @config-daemon ac-3 — auto_start configurable
82
+ */
83
+ auto_start: z.boolean().optional(),
84
+ })
85
+ .strict()
86
+ .optional();
87
+ /**
88
+ * Schema for ralph skill name overrides.
89
+ *
90
+ * Ralph prompts reference skills by invocation name. These default to
91
+ * kspec: namespace core skills but can be overridden per-project for
92
+ * projects that use project-specific skill names.
93
+ */
94
+ const RalphSkillsSchema = z
95
+ .object({
96
+ /** Skill invocation for task-work (default: /kspec:task-work) */
97
+ task_work: z.string().optional(),
98
+ /** Skill invocation for reflect (default: /kspec:reflect) */
99
+ reflect: z.string().optional(),
100
+ /** Skill invocation for PR review (default: /kspec:review) */
101
+ pr_review: z.string().optional(),
102
+ })
103
+ .strict()
104
+ .optional();
105
+ /**
106
+ * Schema for ralph configuration.
107
+ */
108
+ const RalphConfigSchema = z
109
+ .object({
110
+ /** Skill invocation name overrides */
111
+ skills: RalphSkillsSchema,
112
+ })
113
+ .strict()
114
+ .optional();
115
+ /**
116
+ * Complete schema for kspec.config.yaml.
117
+ *
118
+ * AC: @project-config ac-4 — unknown fields are ignored via passthrough
119
+ */
120
+ export const KspecConfigSchema = z
121
+ .object({
122
+ /** Shadow branch configuration */
123
+ shadow: ShadowConfigSchema,
124
+ /** Identity configuration */
125
+ identity: IdentityConfigSchema,
126
+ /** Validation configuration */
127
+ validation: ValidationConfigSchema,
128
+ /** Daemon configuration */
129
+ daemon: DaemonConfigSchema,
130
+ /** Ralph automation configuration */
131
+ ralph: RalphConfigSchema,
132
+ })
133
+ .passthrough(); // AC: ac-4 — ignore unknown fields
134
+ /**
135
+ * Detect the type of a shadow remote string.
136
+ *
137
+ * AC: @config-shadow ac-3 ac-4 ac-5 — remote type detection
138
+ *
139
+ * @param remote Remote string from config
140
+ * @returns Detected type: "path" for filesystem, "url" for git URLs, "named" for git remote names
141
+ */
142
+ export function detectRemoteType(remote) {
143
+ // AC: ac-4 — Local filesystem path (starts with /, ./, ../, or ~)
144
+ if (remote.startsWith("/") ||
145
+ remote.startsWith("./") ||
146
+ remote.startsWith("../") ||
147
+ remote.startsWith("~")) {
148
+ return "path";
149
+ }
150
+ // AC: ac-5 — Git URL (contains :// or starts with git@)
151
+ if (remote.includes("://") || remote.startsWith("git@")) {
152
+ return "url";
153
+ }
154
+ // AC: ac-3 — Otherwise it's a named remote
155
+ return "named";
156
+ }
157
+ // ── Defaults ────────────────────────────────────────────────────────────
158
+ /**
159
+ * Default configuration values.
160
+ *
161
+ * AC: @project-config ac-1 — these are the current defaults
162
+ */
163
+ const DEFAULT_CONFIG = {
164
+ shadow: {
165
+ branch: "kspec-meta",
166
+ directory: ".kspec",
167
+ remote: null,
168
+ },
169
+ identity: {
170
+ author: null,
171
+ },
172
+ validation: {
173
+ // AC: @config-validation — defaults preserve existing behavior
174
+ // strict_refs: true = dangling refs are errors (existing behavior)
175
+ // require_acceptance: false = missing AC is warning (existing behavior)
176
+ strict_refs: true,
177
+ require_acceptance: false,
178
+ },
179
+ daemon: {
180
+ port: 3456,
181
+ host: "localhost",
182
+ auto_start: true, // AC: @config-daemon — default auto-start enabled
183
+ },
184
+ ralph: {
185
+ skills: {
186
+ task_work: "/kspec:task-work",
187
+ reflect: "/kspec:reflect",
188
+ pr_review: "/kspec:review",
189
+ },
190
+ },
191
+ };
192
+ // ── Loading ─────────────────────────────────────────────────────────────
193
+ const CONFIG_FILENAME = "kspec.config.yaml";
194
+ /**
195
+ * Find git root directory, handling KSPEC_SPEC_DIR batch mode.
196
+ *
197
+ * AC: @project-config ac-7 — in batch mode, we need the REAL project root
198
+ *
199
+ * When KSPEC_SPEC_DIR is set (batch atomic mode), the cwd might be the temp
200
+ * directory. We need to find the real project root by checking:
201
+ * 1. If KSPEC_BATCH_PROJECT_ROOT is set, use that (set by batch executor)
202
+ * 2. Otherwise, use git root from cwd
203
+ *
204
+ * AC: @project-config ac-6 — loads from git root, not cwd subdirectory
205
+ */
206
+ export function findProjectRoot(startDir) {
207
+ // In batch mode, the batch executor should set this to the real root
208
+ // before redirecting KSPEC_SPEC_DIR
209
+ const batchRoot = process.env.KSPEC_BATCH_PROJECT_ROOT;
210
+ if (batchRoot) {
211
+ return batchRoot;
212
+ }
213
+ // Normal mode: find git root
214
+ return getGitRoot(startDir);
215
+ }
216
+ /**
217
+ * Load project configuration from kspec.config.yaml.
218
+ *
219
+ * AC: @project-config ac-1 — no config = all defaults
220
+ * AC: @project-config ac-2 — config parsed and available before shadow detection
221
+ * AC: @project-config ac-3 — invalid YAML = defaults + warning
222
+ * AC: @project-config ac-4 — unknown fields ignored
223
+ * AC: @project-config ac-5 — env vars take precedence
224
+ * AC: @project-config ac-6 — loads from git root
225
+ * AC: @project-config ac-7 — batch mode uses real project root
226
+ *
227
+ * @param startDir Starting directory for git root detection
228
+ */
229
+ export async function loadProjectConfig(startDir = process.cwd()) {
230
+ const gitRoot = findProjectRoot(startDir);
231
+ if (!gitRoot) {
232
+ // Not in a git repo, use defaults
233
+ return {
234
+ config: resolveConfig(null),
235
+ configPath: null,
236
+ warning: null,
237
+ gitRoot: null,
238
+ };
239
+ }
240
+ const configPath = path.join(gitRoot, CONFIG_FILENAME);
241
+ // Check if config file exists
242
+ try {
243
+ await fs.access(configPath);
244
+ }
245
+ catch {
246
+ // AC: ac-1 — no config file, use defaults
247
+ return {
248
+ config: resolveConfig(null),
249
+ configPath: null,
250
+ warning: null,
251
+ gitRoot,
252
+ };
253
+ }
254
+ // Try to load and parse config
255
+ try {
256
+ const content = await fs.readFile(configPath, "utf-8");
257
+ const raw = YAML.parse(content);
258
+ // Validate against schema
259
+ const result = KspecConfigSchema.safeParse(raw);
260
+ if (!result.success) {
261
+ // AC: ac-3 — validation error = defaults + warning
262
+ const issues = result.error.issues
263
+ .map((i) => `${i.path.join(".")}: ${i.message}`)
264
+ .join("; ");
265
+ return {
266
+ config: resolveConfig(null),
267
+ configPath,
268
+ warning: `Config validation failed: ${issues}. Using defaults.`,
269
+ gitRoot,
270
+ };
271
+ }
272
+ // AC: ac-5 — apply env var overrides during resolution
273
+ return {
274
+ config: resolveConfig(result.data),
275
+ configPath,
276
+ warning: null,
277
+ gitRoot,
278
+ };
279
+ }
280
+ catch (err) {
281
+ // AC: ac-3 — parse error = defaults + warning
282
+ const message = err instanceof Error ? err.message : String(err);
283
+ return {
284
+ config: resolveConfig(null),
285
+ configPath,
286
+ warning: `Failed to parse ${CONFIG_FILENAME}: ${message}. Using defaults.`,
287
+ gitRoot,
288
+ };
289
+ }
290
+ }
291
+ /**
292
+ * Resolve configuration by merging file config with env vars and defaults.
293
+ *
294
+ * Priority: env vars > config file > defaults
295
+ *
296
+ * AC: @project-config ac-5 — env vars take precedence
297
+ */
298
+ export function resolveConfig(fileConfig) {
299
+ const file = fileConfig || {};
300
+ // Get env var overrides
301
+ const envAuthor = process.env.KSPEC_AUTHOR;
302
+ const envPort = process.env.KSPEC_DAEMON_PORT
303
+ ? parseInt(process.env.KSPEC_DAEMON_PORT, 10)
304
+ : undefined;
305
+ const envHost = process.env.KSPEC_DAEMON_HOST;
306
+ // Resolve shadow remote if specified
307
+ const remoteValue = file.shadow?.remote;
308
+ const resolvedRemote = remoteValue
309
+ ? { value: remoteValue, type: detectRemoteType(remoteValue) }
310
+ : DEFAULT_CONFIG.shadow.remote;
311
+ return {
312
+ shadow: {
313
+ branch: file.shadow?.branch ?? DEFAULT_CONFIG.shadow.branch,
314
+ directory: file.shadow?.directory ?? DEFAULT_CONFIG.shadow.directory,
315
+ remote: resolvedRemote,
316
+ },
317
+ identity: {
318
+ // AC: ac-5 — env var takes precedence
319
+ author: envAuthor ?? file.identity?.author ?? DEFAULT_CONFIG.identity.author,
320
+ },
321
+ validation: {
322
+ // AC: @config-validation ac-2 ac-3 — strict_refs from config
323
+ strict_refs: file.validation?.strict_refs ?? DEFAULT_CONFIG.validation.strict_refs,
324
+ // AC: @config-validation ac-1 — require_acceptance from config
325
+ require_acceptance: file.validation?.require_acceptance ?? DEFAULT_CONFIG.validation.require_acceptance,
326
+ },
327
+ daemon: {
328
+ // AC: ac-5 — env vars take precedence
329
+ port: (envPort && !isNaN(envPort) ? envPort : undefined) ??
330
+ file.daemon?.port ??
331
+ DEFAULT_CONFIG.daemon.port,
332
+ // AC: @config-daemon ac-5 ac-6 — host from config/env
333
+ host: envHost ?? file.daemon?.host ?? DEFAULT_CONFIG.daemon.host,
334
+ // AC: @config-daemon ac-3 — auto_start from config
335
+ auto_start: file.daemon?.auto_start ?? DEFAULT_CONFIG.daemon.auto_start,
336
+ },
337
+ ralph: {
338
+ skills: {
339
+ task_work: file.ralph?.skills?.task_work ?? DEFAULT_CONFIG.ralph.skills.task_work,
340
+ reflect: file.ralph?.skills?.reflect ?? DEFAULT_CONFIG.ralph.skills.reflect,
341
+ pr_review: file.ralph?.skills?.pr_review ?? DEFAULT_CONFIG.ralph.skills.pr_review,
342
+ },
343
+ },
344
+ };
345
+ }
346
+ /**
347
+ * Get the default configuration (no file, no env vars).
348
+ * Useful for testing or when config loading fails completely.
349
+ * Returns a deep copy to prevent mutation of shared defaults.
350
+ */
351
+ export function getDefaultConfig() {
352
+ return {
353
+ shadow: {
354
+ branch: DEFAULT_CONFIG.shadow.branch,
355
+ directory: DEFAULT_CONFIG.shadow.directory,
356
+ remote: DEFAULT_CONFIG.shadow.remote,
357
+ },
358
+ identity: { ...DEFAULT_CONFIG.identity },
359
+ validation: {
360
+ strict_refs: DEFAULT_CONFIG.validation.strict_refs,
361
+ require_acceptance: DEFAULT_CONFIG.validation.require_acceptance,
362
+ },
363
+ daemon: {
364
+ port: DEFAULT_CONFIG.daemon.port,
365
+ host: DEFAULT_CONFIG.daemon.host,
366
+ auto_start: DEFAULT_CONFIG.daemon.auto_start,
367
+ },
368
+ ralph: {
369
+ skills: { ...DEFAULT_CONFIG.ralph.skills },
370
+ },
371
+ };
372
+ }
373
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/parser/config.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Validates content against convention rules with domain-specific strategies.
5
5
  */
6
- import type { Convention } from '../schema/meta.js';
6
+ import type { Convention } from "../schema/meta.js";
7
7
  /**
8
8
  * Convention validation error
9
9
  */
@@ -1 +1 @@
1
- {"version":3,"file":"convention-validation.d.ts","sourceRoot":"","sources":["../../src/parser/convention-validation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAwB,MAAM,mBAAmB,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,yBAAyB,EAAE,CAAC;IACpC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE;QACL,kBAAkB,EAAE,MAAM,CAAC;QAC3B,kBAAkB,EAAE,MAAM,CAAC;KAC5B,CAAC;CACH;AA8GD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,UAAU,GACrB,yBAAyB,GAAG,IAAI,CAyBlC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,UAAU,EAAE,EACzB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC,0BAA0B,CAsC5B"}
1
+ {"version":3,"file":"convention-validation.d.ts","sourceRoot":"","sources":["../../src/parser/convention-validation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAwB,MAAM,mBAAmB,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,yBAAyB,EAAE,CAAC;IACpC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE;QACL,kBAAkB,EAAE,MAAM,CAAC;QAC3B,kBAAkB,EAAE,MAAM,CAAC;KAC5B,CAAC;CACH;AAsHD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,UAAU,GACrB,yBAAyB,GAAG,IAAI,CAyBlC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,UAAU,EAAE,EACzB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC,0BAA0B,CAsC5B"}
@@ -10,7 +10,7 @@ function validateRegex(content, validation, domain) {
10
10
  if (!validation.pattern) {
11
11
  return {
12
12
  domain,
13
- message: 'Regex validation requires a pattern',
13
+ message: "Regex validation requires a pattern",
14
14
  };
15
15
  }
16
16
  try {
@@ -38,14 +38,14 @@ function validateEnum(content, validation, domain) {
38
38
  if (!validation.allowed || validation.allowed.length === 0) {
39
39
  return {
40
40
  domain,
41
- message: 'Enum validation requires an allowed list',
41
+ message: "Enum validation requires an allowed list",
42
42
  };
43
43
  }
44
44
  if (!validation.allowed.includes(content.trim())) {
45
45
  return {
46
46
  domain,
47
47
  message: validation.message || `Value not in allowed list`,
48
- expected: `One of: ${validation.allowed.join(', ')}`,
48
+ expected: `One of: ${validation.allowed.join(", ")}`,
49
49
  };
50
50
  }
51
51
  return null;
@@ -54,17 +54,20 @@ function validateEnum(content, validation, domain) {
54
54
  * Validate content against a range (word count, character count, or line count)
55
55
  */
56
56
  function validateRange(content, validation, domain) {
57
- const unit = validation.unit || 'words';
57
+ const unit = validation.unit || "words";
58
58
  let count;
59
59
  switch (unit) {
60
- case 'words':
61
- count = content.trim().split(/\s+/).filter(w => w.length > 0).length;
60
+ case "words":
61
+ count = content
62
+ .trim()
63
+ .split(/\s+/)
64
+ .filter((w) => w.length > 0).length;
62
65
  break;
63
- case 'chars':
66
+ case "chars":
64
67
  count = content.length;
65
68
  break;
66
- case 'lines':
67
- count = content.split('\n').length;
69
+ case "lines":
70
+ count = content.split("\n").length;
68
71
  break;
69
72
  default:
70
73
  return {
@@ -77,13 +80,15 @@ function validateRange(content, validation, domain) {
77
80
  if (min !== undefined && count < min) {
78
81
  return {
79
82
  domain,
80
- message: validation.message || `Content too short: ${count} ${unit}, minimum ${min} ${unit}`,
83
+ message: validation.message ||
84
+ `Content too short: ${count} ${unit}, minimum ${min} ${unit}`,
81
85
  };
82
86
  }
83
87
  if (max !== undefined && count > max) {
84
88
  return {
85
89
  domain,
86
- message: validation.message || `Content too long: ${count} ${unit}, maximum ${max} ${unit}`,
90
+ message: validation.message ||
91
+ `Content too long: ${count} ${unit}, maximum ${max} ${unit}`,
87
92
  };
88
93
  }
89
94
  return null;
@@ -103,13 +108,13 @@ export function validateConvention(content, convention) {
103
108
  const { validation } = convention;
104
109
  const domain = convention.domain;
105
110
  switch (validation.type) {
106
- case 'regex':
111
+ case "regex":
107
112
  return validateRegex(content, validation, domain);
108
- case 'enum':
113
+ case "enum":
109
114
  return validateEnum(content, validation, domain);
110
- case 'range':
115
+ case "range":
111
116
  return validateRange(content, validation, domain);
112
- case 'prose':
117
+ case "prose":
113
118
  // Prose conventions are advisory only - no validation
114
119
  return null;
115
120
  default:
@@ -139,7 +144,7 @@ export function validateConventions(conventions, contentMap) {
139
144
  skipped.push(convention.domain);
140
145
  continue;
141
146
  }
142
- if (convention.validation.type === 'prose') {
147
+ if (convention.validation.type === "prose") {
143
148
  skipped.push(convention.domain);
144
149
  continue;
145
150
  }
@@ -1 +1 @@
1
- {"version":3,"file":"convention-validation.js","sourceRoot":"","sources":["../../src/parser/convention-validation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA2BH;;GAEG;AACH,SAAS,aAAa,CACpB,OAAe,EACf,UAAgC,EAChC,MAAc;IAEd,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QACxB,OAAO;YACL,MAAM;YACN,OAAO,EAAE,qCAAqC;SAC/C,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,OAAO;gBACL,MAAM;gBACN,OAAO,EAAE,UAAU,CAAC,OAAO,IAAI,yCAAyC;gBACxE,QAAQ,EAAE,UAAU,CAAC,OAAO;aAC7B,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,MAAM;YACN,OAAO,EAAE,0BAA0B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;SACtF,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CACnB,OAAe,EACf,UAAgC,EAChC,MAAc;IAEd,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3D,OAAO;YACL,MAAM;YACN,OAAO,EAAE,0CAA0C;SACpD,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QACjD,OAAO;YACL,MAAM;YACN,OAAO,EAAE,UAAU,CAAC,OAAO,IAAI,2BAA2B;YAC1D,QAAQ,EAAE,WAAW,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SACrD,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CACpB,OAAe,EACf,UAAgC,EAChC,MAAc;IAEd,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,IAAI,OAAO,CAAC;IAExC,IAAI,KAAa,CAAC;IAClB,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,OAAO;YACV,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;YACrE,MAAM;QACR,KAAK,OAAO;YACV,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;YACvB,MAAM;QACR,KAAK,OAAO;YACV,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;YACnC,MAAM;QACR;YACE,OAAO;gBACL,MAAM;gBACN,OAAO,EAAE,iBAAiB,IAAI,EAAE;aACjC,CAAC;IACN,CAAC;IAED,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC;IAC3B,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC;IAE3B,IAAI,GAAG,KAAK,SAAS,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;QACrC,OAAO;YACL,MAAM;YACN,OAAO,EAAE,UAAU,CAAC,OAAO,IAAI,sBAAsB,KAAK,IAAI,IAAI,aAAa,GAAG,IAAI,IAAI,EAAE;SAC7F,CAAC;IACJ,CAAC;IAED,IAAI,GAAG,KAAK,SAAS,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;QACrC,OAAO;YACL,MAAM;YACN,OAAO,EAAE,UAAU,CAAC,OAAO,IAAI,qBAAqB,KAAK,IAAI,IAAI,aAAa,GAAG,IAAI,IAAI,EAAE;SAC5F,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAe,EACf,UAAsB;IAEtB,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;QAC3B,2DAA2D;QAC3D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,EAAE,UAAU,EAAE,GAAG,UAAU,CAAC;IAClC,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAEjC,QAAQ,UAAU,CAAC,IAAI,EAAE,CAAC;QACxB,KAAK,OAAO;YACV,OAAO,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QACpD,KAAK,MAAM;YACT,OAAO,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QACnD,KAAK,OAAO;YACV,OAAO,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QACpD,KAAK,OAAO;YACV,sDAAsD;YACtD,OAAO,IAAI,CAAC;QACd;YACE,OAAO;gBACL,MAAM;gBACN,OAAO,EAAE,4BAA6B,UAAkB,CAAC,IAAI,EAAE;aAChE,CAAC;IACN,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,mBAAmB,CACjC,WAAyB,EACzB,UAAkC;IAElC,MAAM,MAAM,GAAgC,EAAE,CAAC;IAC/C,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAChC,SAAS;QACX,CAAC;QAED,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC3C,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAChC,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,6CAA6C;YAC7C,SAAS;QACX,CAAC;QAED,OAAO,EAAE,CAAC;QACV,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACtD,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;QAC1B,MAAM;QACN,OAAO;QACP,KAAK,EAAE;YACL,kBAAkB,EAAE,OAAO;YAC3B,kBAAkB,EAAE,OAAO,CAAC,MAAM;SACnC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"convention-validation.js","sourceRoot":"","sources":["../../src/parser/convention-validation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Test coverage cache for daemon performance optimization.
3
+ *
4
+ * Caches scanTestCoverage() results to avoid re-scanning test files
5
+ * on every API request. The cache is per-project-directory and supports:
6
+ * - TTL-based expiration (default 60 seconds)
7
+ * - Explicit invalidation for file watcher integration
8
+ *
9
+ * @module coverage-cache
10
+ */
11
+ /**
12
+ * Get test coverage for a project directory, using cache when available.
13
+ *
14
+ * This is the primary API for daemon routes. It:
15
+ * 1. Returns cached results if valid
16
+ * 2. Returns in-flight scan result if a scan is already in progress
17
+ * 3. Otherwise initiates a new scan and caches the result
18
+ *
19
+ * @param rootDir - Project root directory containing tests/
20
+ * @returns Set of covered AC references (e.g., "@spec-ref ac-1")
21
+ */
22
+ export declare function getCachedTestCoverage(rootDir: string): Promise<Set<string>>;
23
+ /**
24
+ * Invalidate the test coverage cache for a specific project or all projects.
25
+ *
26
+ * Call this when test files change (via file watcher) to ensure
27
+ * fresh coverage data on next request.
28
+ *
29
+ * @param rootDir - Optional project root directory. If omitted, clears all caches.
30
+ */
31
+ export declare function invalidateTestCoverageCache(rootDir?: string): void;
32
+ /**
33
+ * Set the cache TTL (for testing purposes).
34
+ *
35
+ * @param ms - TTL in milliseconds
36
+ */
37
+ export declare function setTestCoverageCacheTTL(ms: number): void;
38
+ /**
39
+ * Reset the cache TTL to default (for testing purposes).
40
+ */
41
+ export declare function resetTestCoverageCacheTTL(): void;
42
+ /**
43
+ * Get current cache statistics (for debugging/monitoring).
44
+ */
45
+ export declare function getTestCoverageCacheStats(): {
46
+ entries: number;
47
+ ttlMs: number;
48
+ };
49
+ //# sourceMappingURL=coverage-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coverage-cache.d.ts","sourceRoot":"","sources":["../../src/parser/coverage-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA+CH;;;;;;;;;;GAUG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAqCtB;AAED;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAOlE;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAExD;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,IAAI,CAEhD;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf,CAKA"}