@kynetic-ai/spec 0.10.0 → 0.12.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 (487) hide show
  1. package/README.md +55 -455
  2. package/dist/agent-runtime/bootstrap.d.ts +31 -0
  3. package/dist/agent-runtime/bootstrap.d.ts.map +1 -0
  4. package/dist/agent-runtime/bootstrap.js +302 -0
  5. package/dist/agent-runtime/bootstrap.js.map +1 -0
  6. package/dist/agent-runtime/dispatch.d.ts +150 -10
  7. package/dist/agent-runtime/dispatch.d.ts.map +1 -1
  8. package/dist/agent-runtime/dispatch.js +1248 -244
  9. package/dist/agent-runtime/dispatch.js.map +1 -1
  10. package/dist/agent-runtime/invocation.d.ts +28 -1
  11. package/dist/agent-runtime/invocation.d.ts.map +1 -1
  12. package/dist/agent-runtime/invocation.js +172 -60
  13. package/dist/agent-runtime/invocation.js.map +1 -1
  14. package/dist/agent-runtime/prompts.d.ts +9 -0
  15. package/dist/agent-runtime/prompts.d.ts.map +1 -1
  16. package/dist/agent-runtime/prompts.js +42 -7
  17. package/dist/agent-runtime/prompts.js.map +1 -1
  18. package/dist/agent-runtime/session-event-accumulator.d.ts +83 -0
  19. package/dist/agent-runtime/session-event-accumulator.d.ts.map +1 -0
  20. package/dist/agent-runtime/session-event-accumulator.js +203 -0
  21. package/dist/agent-runtime/session-event-accumulator.js.map +1 -0
  22. package/dist/agent-runtime/session-event-types.d.ts +67 -0
  23. package/dist/agent-runtime/session-event-types.d.ts.map +1 -0
  24. package/dist/agent-runtime/session-event-types.js +13 -0
  25. package/dist/agent-runtime/session-event-types.js.map +1 -0
  26. package/dist/agent-runtime/workspace.d.ts +244 -0
  27. package/dist/agent-runtime/workspace.d.ts.map +1 -0
  28. package/dist/agent-runtime/workspace.js +2025 -0
  29. package/dist/agent-runtime/workspace.js.map +1 -0
  30. package/dist/agents/adapters.d.ts.map +1 -1
  31. package/dist/agents/adapters.js +58 -13
  32. package/dist/agents/adapters.js.map +1 -1
  33. package/dist/agents/spawner.d.ts +8 -0
  34. package/dist/agents/spawner.d.ts.map +1 -1
  35. package/dist/agents/spawner.js +25 -3
  36. package/dist/agents/spawner.js.map +1 -1
  37. package/dist/cli/batch-exec.js +1 -1
  38. package/dist/cli/batch-exec.js.map +1 -1
  39. package/dist/cli/command-annotations.d.ts +15 -3
  40. package/dist/cli/command-annotations.d.ts.map +1 -1
  41. package/dist/cli/command-annotations.js +23 -3
  42. package/dist/cli/command-annotations.js.map +1 -1
  43. package/dist/cli/commands/agent.d.ts +2 -0
  44. package/dist/cli/commands/agent.d.ts.map +1 -1
  45. package/dist/cli/commands/agent.js +144 -27
  46. package/dist/cli/commands/agent.js.map +1 -1
  47. package/dist/cli/commands/agents.d.ts.map +1 -1
  48. package/dist/cli/commands/agents.js +5 -5
  49. package/dist/cli/commands/agents.js.map +1 -1
  50. package/dist/cli/commands/derive.d.ts.map +1 -1
  51. package/dist/cli/commands/derive.js +118 -3
  52. package/dist/cli/commands/derive.js.map +1 -1
  53. package/dist/cli/commands/guard.d.ts.map +1 -1
  54. package/dist/cli/commands/guard.js +8 -6
  55. package/dist/cli/commands/guard.js.map +1 -1
  56. package/dist/cli/commands/index.d.ts +1 -0
  57. package/dist/cli/commands/index.d.ts.map +1 -1
  58. package/dist/cli/commands/index.js +1 -0
  59. package/dist/cli/commands/index.js.map +1 -1
  60. package/dist/cli/commands/init.d.ts.map +1 -1
  61. package/dist/cli/commands/init.js +20 -0
  62. package/dist/cli/commands/init.js.map +1 -1
  63. package/dist/cli/commands/item.d.ts.map +1 -1
  64. package/dist/cli/commands/item.js +205 -47
  65. package/dist/cli/commands/item.js.map +1 -1
  66. package/dist/cli/commands/log.d.ts.map +1 -1
  67. package/dist/cli/commands/log.js +24 -10
  68. package/dist/cli/commands/log.js.map +1 -1
  69. package/dist/cli/commands/meta.d.ts.map +1 -1
  70. package/dist/cli/commands/meta.js +10 -1
  71. package/dist/cli/commands/meta.js.map +1 -1
  72. package/dist/cli/commands/plan-import.d.ts +3 -3
  73. package/dist/cli/commands/plan-import.d.ts.map +1 -1
  74. package/dist/cli/commands/plan-import.js +213 -528
  75. package/dist/cli/commands/plan-import.js.map +1 -1
  76. package/dist/cli/commands/plan.d.ts.map +1 -1
  77. package/dist/cli/commands/plan.js +533 -83
  78. package/dist/cli/commands/plan.js.map +1 -1
  79. package/dist/cli/commands/review.d.ts +14 -0
  80. package/dist/cli/commands/review.d.ts.map +1 -0
  81. package/dist/cli/commands/review.js +1142 -0
  82. package/dist/cli/commands/review.js.map +1 -0
  83. package/dist/cli/commands/serve.d.ts +1 -0
  84. package/dist/cli/commands/serve.d.ts.map +1 -1
  85. package/dist/cli/commands/serve.js +33 -10
  86. package/dist/cli/commands/serve.js.map +1 -1
  87. package/dist/cli/commands/session/checkpoint.d.ts +2 -4
  88. package/dist/cli/commands/session/checkpoint.d.ts.map +1 -1
  89. package/dist/cli/commands/session/checkpoint.js +6 -107
  90. package/dist/cli/commands/session/checkpoint.js.map +1 -1
  91. package/dist/cli/commands/session/commands.d.ts.map +1 -1
  92. package/dist/cli/commands/session/commands.js +33 -23
  93. package/dist/cli/commands/session/commands.js.map +1 -1
  94. package/dist/cli/commands/session/compact.js +4 -4
  95. package/dist/cli/commands/session/compact.js.map +1 -1
  96. package/dist/cli/commands/session/create.js +2 -2
  97. package/dist/cli/commands/session/create.js.map +1 -1
  98. package/dist/cli/commands/session/format.d.ts.map +1 -1
  99. package/dist/cli/commands/session/format.js +1 -6
  100. package/dist/cli/commands/session/format.js.map +1 -1
  101. package/dist/cli/commands/session/log.d.ts +32 -7
  102. package/dist/cli/commands/session/log.d.ts.map +1 -1
  103. package/dist/cli/commands/session/log.js +166 -60
  104. package/dist/cli/commands/session/log.js.map +1 -1
  105. package/dist/cli/commands/session/migrate.d.ts +9 -0
  106. package/dist/cli/commands/session/migrate.d.ts.map +1 -0
  107. package/dist/cli/commands/session/migrate.js +46 -0
  108. package/dist/cli/commands/session/migrate.js.map +1 -0
  109. package/dist/cli/commands/session/stale-close.d.ts.map +1 -1
  110. package/dist/cli/commands/session/stale-close.js +5 -8
  111. package/dist/cli/commands/session/stale-close.js.map +1 -1
  112. package/dist/cli/commands/session/types.d.ts +1 -1
  113. package/dist/cli/commands/session/types.d.ts.map +1 -1
  114. package/dist/cli/commands/setup.d.ts +2 -2
  115. package/dist/cli/commands/setup.d.ts.map +1 -1
  116. package/dist/cli/commands/setup.js +287 -257
  117. package/dist/cli/commands/setup.js.map +1 -1
  118. package/dist/cli/commands/shadow.d.ts.map +1 -1
  119. package/dist/cli/commands/shadow.js +147 -31
  120. package/dist/cli/commands/shadow.js.map +1 -1
  121. package/dist/cli/commands/skill-crud.d.ts +7 -0
  122. package/dist/cli/commands/skill-crud.d.ts.map +1 -1
  123. package/dist/cli/commands/skill-crud.js +41 -18
  124. package/dist/cli/commands/skill-crud.js.map +1 -1
  125. package/dist/cli/commands/skill-diff.d.ts.map +1 -1
  126. package/dist/cli/commands/skill-diff.js +29 -3
  127. package/dist/cli/commands/skill-diff.js.map +1 -1
  128. package/dist/cli/commands/skill-install.d.ts.map +1 -1
  129. package/dist/cli/commands/skill-install.js +5 -4
  130. package/dist/cli/commands/skill-install.js.map +1 -1
  131. package/dist/cli/commands/task.d.ts.map +1 -1
  132. package/dist/cli/commands/task.js +359 -49
  133. package/dist/cli/commands/task.js.map +1 -1
  134. package/dist/cli/commands/trait.d.ts.map +1 -1
  135. package/dist/cli/commands/trait.js +5 -27
  136. package/dist/cli/commands/trait.js.map +1 -1
  137. package/dist/cli/commands/validate.d.ts.map +1 -1
  138. package/dist/cli/commands/validate.js +113 -52
  139. package/dist/cli/commands/validate.js.map +1 -1
  140. package/dist/cli/index.d.ts.map +1 -1
  141. package/dist/cli/index.js +69 -2
  142. package/dist/cli/index.js.map +1 -1
  143. package/dist/cli/output.d.ts +26 -0
  144. package/dist/cli/output.d.ts.map +1 -1
  145. package/dist/cli/output.js +108 -1
  146. package/dist/cli/output.js.map +1 -1
  147. package/dist/cli/sync-mode.d.ts +44 -0
  148. package/dist/cli/sync-mode.d.ts.map +1 -0
  149. package/dist/cli/sync-mode.js +64 -0
  150. package/dist/cli/sync-mode.js.map +1 -0
  151. package/dist/daemon/middleware/project-context.ts +25 -7
  152. package/dist/daemon/project-context.ts +18 -0
  153. package/dist/daemon/routes/agent-dispatch.ts +107 -23
  154. package/dist/daemon/routes/aggregation.ts +184 -0
  155. package/dist/daemon/routes/inbox.ts +5 -0
  156. package/dist/daemon/routes/items.ts +167 -0
  157. package/dist/daemon/routes/meta.ts +141 -1
  158. package/dist/daemon/routes/plans.ts +147 -0
  159. package/dist/daemon/routes/projects.ts +28 -6
  160. package/dist/daemon/routes/ref-resolution.ts +119 -0
  161. package/dist/daemon/routes/refs.ts +42 -0
  162. package/dist/daemon/routes/session-related.ts +140 -0
  163. package/dist/daemon/routes/sessions.ts +581 -0
  164. package/dist/daemon/routes/tasks.ts +257 -2
  165. package/dist/daemon/routes/triage.ts +40 -1
  166. package/dist/daemon/routes/validation.ts +1 -1
  167. package/dist/daemon/server.ts +165 -50
  168. package/dist/daemon/session-sync.ts +11 -0
  169. package/dist/daemon/shadow-sync.ts +11 -0
  170. package/dist/daemon/watcher.ts +56 -5
  171. package/dist/daemon/websocket/project-resolution.ts +77 -0
  172. package/dist/export/json.d.ts.map +1 -1
  173. package/dist/export/json.js +104 -1
  174. package/dist/export/json.js.map +1 -1
  175. package/dist/export/types.d.ts +52 -1
  176. package/dist/export/types.d.ts.map +1 -1
  177. package/dist/index.d.ts +1 -0
  178. package/dist/index.d.ts.map +1 -1
  179. package/dist/index.js +1 -0
  180. package/dist/index.js.map +1 -1
  181. package/dist/parser/agent-detection.d.ts +1 -1
  182. package/dist/parser/agent-detection.d.ts.map +1 -1
  183. package/dist/parser/agent-detection.js +10 -0
  184. package/dist/parser/agent-detection.js.map +1 -1
  185. package/dist/parser/alignment.d.ts.map +1 -1
  186. package/dist/parser/alignment.js +4 -2
  187. package/dist/parser/alignment.js.map +1 -1
  188. package/dist/parser/config.d.ts +397 -2
  189. package/dist/parser/config.d.ts.map +1 -1
  190. package/dist/parser/config.js +125 -3
  191. package/dist/parser/config.js.map +1 -1
  192. package/dist/parser/dispatch-workspaces.d.ts +18 -0
  193. package/dist/parser/dispatch-workspaces.d.ts.map +1 -0
  194. package/dist/parser/dispatch-workspaces.js +209 -0
  195. package/dist/parser/dispatch-workspaces.js.map +1 -0
  196. package/dist/parser/doctor.d.ts.map +1 -1
  197. package/dist/parser/doctor.js +27 -8
  198. package/dist/parser/doctor.js.map +1 -1
  199. package/dist/parser/file-lock.d.ts.map +1 -1
  200. package/dist/parser/file-lock.js +9 -2
  201. package/dist/parser/file-lock.js.map +1 -1
  202. package/dist/parser/index.d.ts +6 -0
  203. package/dist/parser/index.d.ts.map +1 -1
  204. package/dist/parser/index.js +6 -0
  205. package/dist/parser/index.js.map +1 -1
  206. package/dist/parser/plans.d.ts.map +1 -1
  207. package/dist/parser/plans.js +1 -0
  208. package/dist/parser/plans.js.map +1 -1
  209. package/dist/parser/refs.d.ts +8 -1
  210. package/dist/parser/refs.d.ts.map +1 -1
  211. package/dist/parser/refs.js +27 -1
  212. package/dist/parser/refs.js.map +1 -1
  213. package/dist/parser/review-operations.d.ts +72 -0
  214. package/dist/parser/review-operations.d.ts.map +1 -0
  215. package/dist/parser/review-operations.js +185 -0
  216. package/dist/parser/review-operations.js.map +1 -0
  217. package/dist/parser/review-task-integration.d.ts +78 -0
  218. package/dist/parser/review-task-integration.d.ts.map +1 -0
  219. package/dist/parser/review-task-integration.js +173 -0
  220. package/dist/parser/review-task-integration.js.map +1 -0
  221. package/dist/parser/review-threads.d.ts +101 -0
  222. package/dist/parser/review-threads.d.ts.map +1 -0
  223. package/dist/parser/review-threads.js +222 -0
  224. package/dist/parser/review-threads.js.map +1 -0
  225. package/dist/parser/review-validation.d.ts +69 -0
  226. package/dist/parser/review-validation.d.ts.map +1 -0
  227. package/dist/parser/review-validation.js +207 -0
  228. package/dist/parser/review-validation.js.map +1 -0
  229. package/dist/parser/reviews.d.ts +58 -0
  230. package/dist/parser/reviews.d.ts.map +1 -0
  231. package/dist/parser/reviews.js +230 -0
  232. package/dist/parser/reviews.js.map +1 -0
  233. package/dist/parser/session-branch.d.ts +91 -0
  234. package/dist/parser/session-branch.d.ts.map +1 -0
  235. package/dist/parser/session-branch.js +565 -0
  236. package/dist/parser/session-branch.js.map +1 -0
  237. package/dist/parser/session-sync-scheduler.d.ts +53 -0
  238. package/dist/parser/session-sync-scheduler.d.ts.map +1 -0
  239. package/dist/parser/session-sync-scheduler.js +100 -0
  240. package/dist/parser/session-sync-scheduler.js.map +1 -0
  241. package/dist/parser/setup-status.d.ts +7 -1
  242. package/dist/parser/setup-status.d.ts.map +1 -1
  243. package/dist/parser/setup-status.js +104 -39
  244. package/dist/parser/setup-status.js.map +1 -1
  245. package/dist/parser/shadow-sync-scheduler.d.ts +71 -0
  246. package/dist/parser/shadow-sync-scheduler.d.ts.map +1 -0
  247. package/dist/parser/shadow-sync-scheduler.js +139 -0
  248. package/dist/parser/shadow-sync-scheduler.js.map +1 -0
  249. package/dist/parser/shadow.d.ts +121 -14
  250. package/dist/parser/shadow.d.ts.map +1 -1
  251. package/dist/parser/shadow.js +752 -27
  252. package/dist/parser/shadow.js.map +1 -1
  253. package/dist/parser/skill-render.d.ts +24 -0
  254. package/dist/parser/skill-render.d.ts.map +1 -1
  255. package/dist/parser/skill-render.js +98 -26
  256. package/dist/parser/skill-render.js.map +1 -1
  257. package/dist/parser/validate.d.ts +43 -3
  258. package/dist/parser/validate.d.ts.map +1 -1
  259. package/dist/parser/validate.js +204 -30
  260. package/dist/parser/validate.js.map +1 -1
  261. package/dist/parser/yaml.d.ts +47 -11
  262. package/dist/parser/yaml.d.ts.map +1 -1
  263. package/dist/parser/yaml.js +329 -149
  264. package/dist/parser/yaml.js.map +1 -1
  265. package/dist/review/checks.d.ts +97 -0
  266. package/dist/review/checks.d.ts.map +1 -0
  267. package/dist/review/checks.js +175 -0
  268. package/dist/review/checks.js.map +1 -0
  269. package/dist/review/index.d.ts +3 -0
  270. package/dist/review/index.d.ts.map +1 -0
  271. package/dist/review/index.js +3 -0
  272. package/dist/review/index.js.map +1 -0
  273. package/dist/review/subject-bindings.d.ts +83 -0
  274. package/dist/review/subject-bindings.d.ts.map +1 -0
  275. package/dist/review/subject-bindings.js +175 -0
  276. package/dist/review/subject-bindings.js.map +1 -0
  277. package/dist/schema/common.d.ts +26 -0
  278. package/dist/schema/common.d.ts.map +1 -1
  279. package/dist/schema/common.js +13 -0
  280. package/dist/schema/common.js.map +1 -1
  281. package/dist/schema/dispatch-workspace.d.ts +2643 -0
  282. package/dist/schema/dispatch-workspace.d.ts.map +1 -0
  283. package/dist/schema/dispatch-workspace.js +187 -0
  284. package/dist/schema/dispatch-workspace.js.map +1 -0
  285. package/dist/schema/inbox.d.ts +8 -8
  286. package/dist/schema/index.d.ts +2 -0
  287. package/dist/schema/index.d.ts.map +1 -1
  288. package/dist/schema/index.js +2 -0
  289. package/dist/schema/index.js.map +1 -1
  290. package/dist/schema/meta.d.ts +663 -116
  291. package/dist/schema/meta.d.ts.map +1 -1
  292. package/dist/schema/meta.js +28 -0
  293. package/dist/schema/meta.js.map +1 -1
  294. package/dist/schema/plan.d.ts +30 -19
  295. package/dist/schema/plan.d.ts.map +1 -1
  296. package/dist/schema/plan.js +3 -1
  297. package/dist/schema/plan.js.map +1 -1
  298. package/dist/schema/review-records.d.ts +2676 -0
  299. package/dist/schema/review-records.d.ts.map +1 -0
  300. package/dist/schema/review-records.js +232 -0
  301. package/dist/schema/review-records.js.map +1 -0
  302. package/dist/schema/spec.d.ts +32 -14
  303. package/dist/schema/spec.d.ts.map +1 -1
  304. package/dist/schema/spec.js +5 -0
  305. package/dist/schema/spec.js.map +1 -1
  306. package/dist/schema/task.d.ts +187 -29
  307. package/dist/schema/task.d.ts.map +1 -1
  308. package/dist/schema/task.js +12 -2
  309. package/dist/schema/task.js.map +1 -1
  310. package/dist/schema/triage.d.ts +22 -22
  311. package/dist/sessions/cache.d.ts +119 -0
  312. package/dist/sessions/cache.d.ts.map +1 -0
  313. package/dist/sessions/cache.js +284 -0
  314. package/dist/sessions/cache.js.map +1 -0
  315. package/dist/sessions/index.d.ts +1 -0
  316. package/dist/sessions/index.d.ts.map +1 -1
  317. package/dist/sessions/index.js +2 -0
  318. package/dist/sessions/index.js.map +1 -1
  319. package/dist/sessions/legacy.d.ts +77 -0
  320. package/dist/sessions/legacy.d.ts.map +1 -0
  321. package/dist/sessions/legacy.js +146 -0
  322. package/dist/sessions/legacy.js.map +1 -0
  323. package/dist/sessions/store.d.ts +115 -71
  324. package/dist/sessions/store.d.ts.map +1 -1
  325. package/dist/sessions/store.js +357 -182
  326. package/dist/sessions/store.js.map +1 -1
  327. package/dist/sessions/types.d.ts +44 -16
  328. package/dist/sessions/types.d.ts.map +1 -1
  329. package/dist/sessions/types.js +11 -2
  330. package/dist/sessions/types.js.map +1 -1
  331. package/dist/strings/errors.d.ts +32 -0
  332. package/dist/strings/errors.d.ts.map +1 -1
  333. package/dist/strings/errors.js +17 -0
  334. package/dist/strings/errors.js.map +1 -1
  335. package/dist/strings/labels.d.ts +1 -0
  336. package/dist/strings/labels.d.ts.map +1 -1
  337. package/dist/strings/labels.js +1 -0
  338. package/dist/strings/labels.js.map +1 -1
  339. package/dist/utils/activity.d.ts +101 -0
  340. package/dist/utils/activity.d.ts.map +1 -0
  341. package/dist/utils/activity.js +408 -0
  342. package/dist/utils/activity.js.map +1 -0
  343. package/dist/utils/git.d.ts +31 -0
  344. package/dist/utils/git.d.ts.map +1 -1
  345. package/dist/utils/git.js +87 -0
  346. package/dist/utils/git.js.map +1 -1
  347. package/dist/utils/index.d.ts +2 -0
  348. package/dist/utils/index.d.ts.map +1 -1
  349. package/dist/utils/index.js +1 -0
  350. package/dist/utils/index.js.map +1 -1
  351. package/dist/web-ui/_app/immutable/assets/0.tmlwn-Ih.css +1 -0
  352. package/dist/web-ui/_app/immutable/assets/9.BwwJybWx.css +1 -0
  353. package/dist/web-ui/_app/immutable/chunks/2KqE8gtn.js +1 -0
  354. package/dist/web-ui/_app/immutable/chunks/70-t_QvE.js +1 -0
  355. package/dist/web-ui/_app/immutable/chunks/AiWQj974.js +1 -0
  356. package/dist/web-ui/_app/immutable/chunks/B25nWFyA.js +5 -0
  357. package/dist/web-ui/_app/immutable/chunks/B2bcA_Q_.js +1 -0
  358. package/dist/web-ui/_app/immutable/chunks/B5e5HYyB.js +1 -0
  359. package/dist/web-ui/_app/immutable/chunks/B7-5z6eA.js +1 -0
  360. package/dist/web-ui/_app/immutable/chunks/B7bGmhK0.js +1 -0
  361. package/dist/web-ui/_app/immutable/chunks/B8tYZKAE.js +1 -0
  362. package/dist/web-ui/_app/immutable/chunks/BFGAyJjD.js +1 -0
  363. package/dist/web-ui/_app/immutable/chunks/BG0850zf.js +1 -0
  364. package/dist/web-ui/_app/immutable/chunks/BG8eSzAd.js +1 -0
  365. package/dist/web-ui/_app/immutable/chunks/BIMxXS8I.js +1 -0
  366. package/dist/web-ui/_app/immutable/chunks/BSzL1fpU.js +1 -0
  367. package/dist/web-ui/_app/immutable/chunks/BYtjHfeq.js +1 -0
  368. package/dist/web-ui/_app/immutable/chunks/{D1ArdqNb.js → Bp5pFYXL.js} +1 -1
  369. package/dist/web-ui/_app/immutable/chunks/BsJFsuAT.js +1 -0
  370. package/dist/web-ui/_app/immutable/chunks/BvpNHcD6.js +1 -0
  371. package/dist/web-ui/_app/immutable/chunks/BypqA25-.js +1 -0
  372. package/dist/web-ui/_app/immutable/chunks/C0w6WDm5.js +1 -0
  373. package/dist/web-ui/_app/immutable/chunks/C5_PAZ0y.js +1 -0
  374. package/dist/web-ui/_app/immutable/chunks/CDRO15Iv.js +1 -0
  375. package/dist/web-ui/_app/immutable/chunks/CF1CoqD5.js +1 -0
  376. package/dist/web-ui/_app/immutable/chunks/CS2sa4_m.js +1 -0
  377. package/dist/web-ui/_app/immutable/chunks/CWUQwB9H.js +1 -0
  378. package/dist/web-ui/_app/immutable/chunks/CY5FDdSU.js +1 -0
  379. package/dist/web-ui/_app/immutable/chunks/C_7MTDoj.js +1 -0
  380. package/dist/web-ui/_app/immutable/chunks/CaAJD3dl.js +1 -0
  381. package/dist/web-ui/_app/immutable/chunks/{i-XnOIX0.js → ChB5iyEL.js} +1 -1
  382. package/dist/web-ui/_app/immutable/chunks/ChQD-6N8.js +1 -0
  383. package/dist/web-ui/_app/immutable/chunks/{BCkp8Hs8.js → CqbsoCwA.js} +1 -1
  384. package/dist/web-ui/_app/immutable/chunks/DCeJW50p.js +1 -0
  385. package/dist/web-ui/_app/immutable/chunks/DJtZNgcs.js +1 -0
  386. package/dist/web-ui/_app/immutable/chunks/DKIeaprD.js +1 -0
  387. package/dist/web-ui/_app/immutable/chunks/DLd2uVIA.js +1 -0
  388. package/dist/web-ui/_app/immutable/chunks/DW_subyT.js +2 -0
  389. package/dist/web-ui/_app/immutable/chunks/DbU6lVn0.js +1 -0
  390. package/dist/web-ui/_app/immutable/chunks/Dc7ZCC5m.js +1 -0
  391. package/dist/web-ui/_app/immutable/chunks/Dd5umPsk.js +2 -0
  392. package/dist/web-ui/_app/immutable/chunks/Dg_zDpDS.js +1 -0
  393. package/dist/web-ui/_app/immutable/chunks/Dgqu8Yuc.js +1 -0
  394. package/dist/web-ui/_app/immutable/chunks/DmxsPZTB.js +1 -0
  395. package/dist/web-ui/_app/immutable/chunks/DphTaFUB.js +1 -0
  396. package/dist/web-ui/_app/immutable/chunks/DqK4iHp0.js +1 -0
  397. package/dist/web-ui/_app/immutable/chunks/DqT6OH_u.js +2 -0
  398. package/dist/web-ui/_app/immutable/chunks/Ds9I9wQb.js +1 -0
  399. package/dist/web-ui/_app/immutable/chunks/Du5ng3u4.js +1 -0
  400. package/dist/web-ui/_app/immutable/chunks/DxJw79Wi.js +1 -0
  401. package/dist/web-ui/_app/immutable/chunks/GFTX8GgV.js +1 -0
  402. package/dist/web-ui/_app/immutable/chunks/HNjs76Zz.js +1 -0
  403. package/dist/web-ui/_app/immutable/chunks/HVMjDi4_.js +1 -0
  404. package/dist/web-ui/_app/immutable/chunks/P0A_fJvS.js +1 -0
  405. package/dist/web-ui/_app/immutable/chunks/T3vGWjIL.js +1 -0
  406. package/dist/web-ui/_app/immutable/chunks/VTmrX9Qu.js +1 -0
  407. package/dist/web-ui/_app/immutable/chunks/Xvwhx_F1.js +1 -0
  408. package/dist/web-ui/_app/immutable/chunks/Yyz1XMQA.js +1 -0
  409. package/dist/web-ui/_app/immutable/chunks/dh5HeqUr.js +1 -0
  410. package/dist/web-ui/_app/immutable/chunks/fZMteyca.js +62 -0
  411. package/dist/web-ui/_app/immutable/chunks/{D28BF5MJ.js → gPrj-hqC.js} +1 -1
  412. package/dist/web-ui/_app/immutable/chunks/htcWMiYN.js +1 -0
  413. package/dist/web-ui/_app/immutable/chunks/oTsvd9y4.js +1 -0
  414. package/dist/web-ui/_app/immutable/chunks/qJfLUwU4.js +1 -0
  415. package/dist/web-ui/_app/immutable/chunks/xCtiO_JE.js +1 -0
  416. package/dist/web-ui/_app/immutable/chunks/y4GeEH6k.js +1 -0
  417. package/dist/web-ui/_app/immutable/entry/app.C4h_eOn6.js +2 -0
  418. package/dist/web-ui/_app/immutable/entry/start.CQFTf9ep.js +1 -0
  419. package/dist/web-ui/_app/immutable/nodes/0.Dh1xO970.js +1 -0
  420. package/dist/web-ui/_app/immutable/nodes/1.l75D3Opx.js +1 -0
  421. package/dist/web-ui/_app/immutable/nodes/10.DBidBPc-.js +1 -0
  422. package/dist/web-ui/_app/immutable/nodes/11.Ab0gUKWe.js +1 -0
  423. package/dist/web-ui/_app/immutable/nodes/12.CMsnoxfs.js +1 -0
  424. package/dist/web-ui/_app/immutable/nodes/13.D8YKuknB.js +1 -0
  425. package/dist/web-ui/_app/immutable/nodes/14.DZ0aan7y.js +1 -0
  426. package/dist/web-ui/_app/immutable/nodes/15.CUIKreDL.js +2 -0
  427. package/dist/web-ui/_app/immutable/nodes/16.BWc8--BO.js +1 -0
  428. package/dist/web-ui/_app/immutable/nodes/2.CDUonbuh.js +1 -0
  429. package/dist/web-ui/_app/immutable/nodes/3.Ctg3M00i.js +1 -0
  430. package/dist/web-ui/_app/immutable/nodes/4.Ci-JDwbA.js +2 -0
  431. package/dist/web-ui/_app/immutable/nodes/5.CTyEDAq0.js +1 -0
  432. package/dist/web-ui/_app/immutable/nodes/6.BTZZqsAb.js +1 -0
  433. package/dist/web-ui/_app/immutable/nodes/7.BI52g_Jo.js +137 -0
  434. package/dist/web-ui/_app/immutable/nodes/8.3hZPaB9x.js +1 -0
  435. package/dist/web-ui/_app/immutable/nodes/9.DS49kvwl.js +29 -0
  436. package/dist/web-ui/_app/version.json +1 -1
  437. package/dist/web-ui/favicon-192.png +0 -0
  438. package/dist/web-ui/favicon-32.png +0 -0
  439. package/dist/web-ui/favicon.ico +0 -0
  440. package/dist/web-ui/index.html +14 -11
  441. package/package.json +14 -7
  442. package/plugin/.claude-plugin/marketplace.json +1 -1
  443. package/plugin/.claude-plugin/plugin.json +1 -1
  444. package/plugin/plugins/kspec/skills/merge/SKILL.md +127 -0
  445. package/plugin/plugins/kspec/skills/plan/SKILL.md +55 -26
  446. package/plugin/plugins/kspec/skills/review/SKILL.md +350 -133
  447. package/plugin/plugins/kspec/skills/task-work/SKILL.md +96 -106
  448. package/templates/agents-sections/04-pr-workflow.md +15 -12
  449. package/templates/agents-sections/06-ralph-loop.md +15 -10
  450. package/templates/skills/manifest.yaml +25 -7
  451. package/templates/skills/merge/SKILL.md +120 -0
  452. package/templates/skills/plan/SKILL.md +55 -26
  453. package/templates/skills/review/SKILL.md +346 -130
  454. package/templates/skills/task-work/SKILL.md +93 -103
  455. package/dist/web-ui/_app/immutable/assets/0.BxCxvrZR.css +0 -1
  456. package/dist/web-ui/_app/immutable/chunks/B-CZR0q8.js +0 -1
  457. package/dist/web-ui/_app/immutable/chunks/B1IR5Su5.js +0 -1
  458. package/dist/web-ui/_app/immutable/chunks/B_Cvvtc4.js +0 -1
  459. package/dist/web-ui/_app/immutable/chunks/BtFaGGII.js +0 -1
  460. package/dist/web-ui/_app/immutable/chunks/Bu8JVsCH.js +0 -1
  461. package/dist/web-ui/_app/immutable/chunks/C87u-CNA.js +0 -1
  462. package/dist/web-ui/_app/immutable/chunks/CrFkBTYp.js +0 -1
  463. package/dist/web-ui/_app/immutable/chunks/D6RtLpzL.js +0 -1
  464. package/dist/web-ui/_app/immutable/chunks/D7FHSgx2.js +0 -1
  465. package/dist/web-ui/_app/immutable/chunks/DBXrsxZQ.js +0 -2
  466. package/dist/web-ui/_app/immutable/chunks/Da_hHMuA.js +0 -1
  467. package/dist/web-ui/_app/immutable/chunks/Do6LchSF.js +0 -1
  468. package/dist/web-ui/_app/immutable/chunks/DoNPtcAw.js +0 -1
  469. package/dist/web-ui/_app/immutable/chunks/DtUbXRZz.js +0 -1
  470. package/dist/web-ui/_app/immutable/chunks/DyFPRlLl.js +0 -1
  471. package/dist/web-ui/_app/immutable/chunks/DzAP8lRM.js +0 -1
  472. package/dist/web-ui/_app/immutable/chunks/DzVXElzN.js +0 -2
  473. package/dist/web-ui/_app/immutable/chunks/aoPBFken.js +0 -1
  474. package/dist/web-ui/_app/immutable/chunks/laxtrUO3.js +0 -1
  475. package/dist/web-ui/_app/immutable/chunks/q1nIWgqB.js +0 -1
  476. package/dist/web-ui/_app/immutable/chunks/sTLbk5Nm.js +0 -1
  477. package/dist/web-ui/_app/immutable/chunks/vwKgQu5P.js +0 -5
  478. package/dist/web-ui/_app/immutable/entry/app.BCwMcqnT.js +0 -2
  479. package/dist/web-ui/_app/immutable/entry/start.wKCQH-tt.js +0 -1
  480. package/dist/web-ui/_app/immutable/nodes/0.CjGVMG74.js +0 -1
  481. package/dist/web-ui/_app/immutable/nodes/1.B6_AIPan.js +0 -1
  482. package/dist/web-ui/_app/immutable/nodes/2.q4oCS7Ws.js +0 -1
  483. package/dist/web-ui/_app/immutable/nodes/3.rTKZf9o2.js +0 -1
  484. package/dist/web-ui/_app/immutable/nodes/4.DVIDRu1d.js +0 -1
  485. package/dist/web-ui/_app/immutable/nodes/5.8PtPXIOd.js +0 -1
  486. package/dist/web-ui/_app/immutable/nodes/6.ZZrTemy_.js +0 -1
  487. package/dist/web-ui/_app/immutable/nodes/7.IP-gxCxi.js +0 -1
package/README.md CHANGED
@@ -1,497 +1,97 @@
1
- # Kynetic Spec (kspec)
1
+ # kspec
2
2
 
3
- > **Warning: Experimental Software**
4
- >
5
- > This project is a work-in-progress and is not ready for production use. APIs, file formats, and CLI commands may change without notice. Use at your own risk.
6
- >
7
- > If you're interested in the project, feel free to explore the code and design docs, but please don't depend on it for real work yet.
3
+ `kspec` is spec-first task management for AI-assisted development.
8
4
 
9
- A structured specification and task management system designed for AI-assisted development. kspec provides a YAML-based format for defining project specifications that can be programmatically manipulated, with a task system to track implementation progress.
5
+ It gives you a durable spec tree, linked implementation tasks, and a shadow-branch workflow that keeps project planning state out of your main git history. The result is a tighter loop between "what should exist", "what is being worked on", and "what shipped".
10
6
 
11
- **Key feature**: kspec is self-hosting - it tracks its own development using itself.
7
+ > Early-stage software: expect rough edges and command/API changes while the workflow stabilizes.
12
8
 
13
- ## Installation
9
+ ## Why teams use it
14
10
 
15
- ### Quick Start (Development)
11
+ - Define features and requirements before implementation.
12
+ - Derive tasks directly from specs instead of duplicating intent in tickets.
13
+ - Keep spec and task state in a separate `kspec-meta` branch via the `.kspec/` worktree.
14
+ - Give human and AI contributors the same project context through `kspec session start` and generated agent instructions.
16
15
 
17
- ```bash
18
- # Clone and install
19
- git clone <repo-url>
20
- cd kynetic-spec
21
- npm install
22
-
23
- # Run with npm (recommended - works from any project directory)
24
- npm run dev -- <command>
25
- ```
26
-
27
- ### Build and Link Globally
28
-
29
- ```bash
30
- npm run build
31
- npm link
32
-
33
- # Now available as 'kspec' globally
34
- kspec tasks ready
35
- ```
36
-
37
- ## Basic Usage
38
-
39
- ```bash
40
- # Initialize a new project
41
- kspec init
42
-
43
- # See what tasks are ready to work on
44
- kspec tasks ready
45
-
46
- # Task lifecycle
47
- kspec task start @task-slug
48
- kspec task note @task-slug "What you're doing..."
49
- kspec task submit @task-slug # Code done, PR created
50
- kspec task complete @task-slug --reason "Summary"
51
-
52
- # Capture ideas
53
- kspec inbox add "idea or random thought"
54
-
55
- # Validate spec files
56
- kspec validate
57
-
58
- # Search across everything
59
- kspec search "pattern"
60
- ```
61
-
62
- ## Agent Integration
63
-
64
- kspec is agent-agnostic but designed to work well with AI coding assistants. The key integration point is **author attribution** for notes.
65
-
66
- ### Quick Setup
67
-
68
- Run the setup command to auto-configure your agent environment:
69
-
70
- ```bash
71
- kspec setup # Auto-detect and configure
72
- kspec setup --dry-run # Preview what would be done
73
- ```
74
-
75
- The setup command detects which agent you're running in and installs the appropriate configuration.
76
-
77
- **Supported agents:**
78
- - Claude Code (`CLAUDE_PROJECT_DIR`)
79
- - Cline (`CLINE_ACTIVE`)
80
- - Gemini CLI (`GEMINI_CLI`)
81
- - Codex CLI (`CODEX_SANDBOX`)
82
- - Aider (`AIDER_MODEL`)
83
- - OpenCode (`OPENCODE_CONFIG_DIR`)
84
- - Amp (`AMP_API_KEY`)
85
- - GitHub Copilot CLI
86
-
87
- ### How Author Detection Works
88
-
89
- When adding notes, kspec auto-detects the author using this fallback chain:
90
-
91
- 1. `KSPEC_AUTHOR` environment variable (explicit config)
92
- 2. `git config user.name` (developer identity)
93
- 3. `USER`/`USERNAME` env var (system user)
16
+ ## Quick start
94
17
 
95
- ### Manual Setup
18
+ Install `kspec`:
96
19
 
97
- If auto-setup doesn't work, configure manually:
98
-
99
- **Claude Code** - Add to `~/.claude/settings.json`:
100
- ```json
101
- {
102
- "env": {
103
- "KSPEC_AUTHOR": "@claude"
104
- }
105
- }
106
- ```
107
-
108
- **Aider** - Add to `~/.aider.conf.yml`:
109
- ```yaml
110
- env:
111
- KSPEC_AUTHOR: "@aider"
112
- ```
113
-
114
- **Other agents** - Set in shell profile:
115
20
  ```bash
116
- export KSPEC_AUTHOR="@agent-name"
117
- ```
118
-
119
- Convention: Use `@` prefix for agent authors (e.g., `@claude`, `@copilot`) to distinguish from human authors.
120
-
121
- ## References
122
-
123
- All items (tasks, spec items, inbox, plans) can be referenced by:
124
- - **Full ULID**: `01KEYQSD2QJCNGRKSR38V0E3BM`
125
- - **Short ULID**: `01KEYQSD` (unique prefix)
126
- - **Slug**: `@my-task-slug`
127
-
128
- ## Task Management
129
-
130
- ### Task States
131
-
21
+ npm install -g @kynetic-ai/spec
132
22
  ```
133
- pending → in_progress → pending_review → completed
134
- ↓ ↓
135
- blocked ←──────────┘
136
-
137
- cancelled
138
- ```
139
-
140
- **State transitions:**
141
- - `kspec task start` → `in_progress`
142
- - `kspec task submit` → `pending_review` (code done, awaiting merge)
143
- - `kspec task complete` → `completed` (from `pending_review`)
144
- - `kspec task complete --skip-review --reason "..."` → `completed` (bypass review requirement)
145
- - `kspec task complete --force` → `completed` (even if blocked)
146
- - `kspec task block` → `blocked`
147
- - `kspec task unblock` → `pending`
148
- - `kspec task cancel` → `cancelled`
149
23
 
150
- ### Commands
24
+ Or run it without a global install:
151
25
 
152
26
  ```bash
153
- # List tasks
154
- kspec tasks list # All tasks
155
- kspec tasks list --status pending # Filter by status
156
- kspec tasks list --tag mvp # Filter by tag
157
- kspec tasks list --count # Count only
158
- kspec tasks ready # Tasks ready to work on
159
- kspec tasks next # Highest priority ready task
160
- kspec tasks blocked # Blocked tasks
161
- kspec tasks in-progress # Active tasks
162
-
163
- # Task operations
164
- kspec task get <ref> # View details
165
- kspec task start <ref> # Begin work
166
- kspec task submit <ref> # Submit for review
167
- kspec task complete <ref> # Mark done
168
- kspec task complete --force <ref> # Force complete from any state
169
- kspec task block <ref> --reason "..." # Block with reason
170
- kspec task unblock <ref> # Remove block
171
- kspec task cancel <ref> # Cancel task
172
- kspec task reset <ref> # Reset to pending
173
- kspec task delete <ref> # Delete permanently
174
-
175
- # Notes and todos
176
- kspec task note <ref> "message" # Add note
177
- kspec task notes <ref> # View notes
178
- kspec task todo add <ref> "text" # Add a todo item
179
- kspec task todos <ref> # View todos
180
-
181
- # Create tasks
182
- kspec task add --title "My task" --priority 2 --slug my-task
183
- kspec task add --title "Bug fix" --type bug --spec-ref @feature --tag urgent
184
-
185
- # Update tasks
186
- kspec task set <ref> --priority 1 --tag critical
187
- kspec task set <ref> --depends-on @other-task
27
+ npx @kynetic-ai/spec --help
188
28
  ```
189
29
 
190
- ## Spec Item Management
191
-
192
- Spec items define WHAT to build — features, requirements, constraints.
30
+ Initialize a project:
193
31
 
194
32
  ```bash
195
- # List and browse
196
- kspec item list # All items
197
- kspec item list --type feature # Filter by type
198
- kspec item list --tree # Hierarchical view
199
- kspec item list --count # Count only
200
- kspec item types # Item types and counts
201
- kspec item tags # Tags and counts
202
-
203
- # View details
204
- kspec item get <ref> # Item details
205
- kspec item status <ref> # Implementation status + linked tasks
206
-
207
- # Create items (--under is required)
208
- kspec item add --under @parent --title "My Feature" --type feature --slug my-feature
209
- kspec item add --under @parent --title "Sub-feature" --type requirement
210
- kspec item add --under @parent --title "Auditable" --type constraint --trait @trait-ref
211
-
212
- # Trait lifecycle
213
- kspec trait list # Discover available traits
214
- kspec trait get <ref> # Trait details and ACs
215
- kspec trait add "Trait Name" --description "..." --slug my-trait
216
-
217
- # Update items
218
- kspec item set <ref> --title "New Title" --priority 1
219
- kspec item set <ref> --relates-to @other-item # Add relationship
220
- kspec item set <ref> --implements @parent-item # Add implements link
221
- kspec item set <ref> --depends-on @dependency # Add dependency
222
- kspec item set <ref> --clear-relates-to # Clear relationships
223
-
224
- # Notes
225
- kspec item note <ref> "Design rationale..."
226
- kspec item notes <ref>
227
-
228
- # Acceptance criteria
229
- kspec item ac list <ref>
230
- kspec item ac add <ref> --given "user is logged in" --when "they click logout" --then "session ends"
231
- kspec item ac set <ref> ac-1 --then "updated expectation"
232
- kspec item ac remove <ref> ac-1
233
-
234
- # Traits
235
- kspec item trait add <ref> @trait-a @trait-b
236
- kspec item trait remove <ref> @trait-a
237
-
238
- # Derive implementation task from spec
239
- kspec derive <ref> # Create task from spec item
240
- kspec derive --all --dry-run # Preview tasks for all unlinked specs
241
- ```
242
-
243
- ## Inbox
244
-
245
- Low-friction capture for ideas that aren't yet tasks.
246
-
247
- ```bash
248
- kspec inbox add "idea or random thought" # Capture
249
- kspec inbox add "tagged idea" --tag dx --tag cli # With tags
250
- kspec inbox list # Show items (oldest first)
251
- kspec inbox list --newest --limit 5 # Recent items
252
- kspec inbox list --tag dx # Filter by tag
253
- kspec inbox list --count # Count only
254
- kspec inbox get <ref> # View details
255
-
256
- # Edit items
257
- kspec inbox set <ref> --content "updated text" # Update content
258
- kspec inbox set <ref> --tag new-tag # Add tags
259
- kspec inbox set <ref> --clear-tags # Remove all tags
260
- kspec inbox note <ref> "additional context" # Append a note
261
-
262
- # Convert to task
263
- kspec inbox promote <ref> --title "Task title"
264
- kspec inbox promote <ref> --title "Task" --priority 2 --note "Context from triage"
265
-
266
- # Remove
267
- kspec inbox delete <ref>
268
- ```
269
-
270
- ## Plans
271
-
272
- Plans capture implementation context and rationale. They can auto-generate specs and tasks from structured markdown.
273
-
274
- ```bash
275
- # Create plans
276
- kspec plan add --title "Feature Name" --content "Description..."
277
- kspec plan add --title "Feature Name" --content-file ./plan.md
278
-
279
- # Import structured plan (auto-creates specs and tasks)
280
- kspec plan import ./plan.md --module @target-module --dry-run # Preview
281
- kspec plan import ./plan.md --module @target-module # Execute
282
- kspec plan import ./plan.md --module @target-module --update # Re-import
283
-
284
- # Manage plans
285
- kspec plan list # List all plans
286
- kspec plan get <ref> # View details
287
- kspec plan set <ref> --status active # Update status
288
- kspec plan note <ref> "Progress..." # Add note
289
- kspec plan derive <ref> # Create task from plan
290
- ```
291
-
292
- ## Validation
293
-
294
- Validate spec files for schema conformance, reference integrity, and alignment.
295
-
296
- ```bash
297
- kspec validate # Full validation
298
- kspec validate --schema # Schema conformance only
299
- kspec validate --refs # Reference resolution only
300
- kspec validate --alignment # Spec-task alignment
301
- kspec validate --completeness # Spec completeness
302
- kspec validate --orphans # Orphaned items
303
- kspec validate --strict # Treat warnings as errors
304
- kspec validate --warnings-ok # Treat warnings-only as success (exit 0)
305
- kspec validate --fix # Auto-fix (invalid ULIDs, missing timestamps)
306
- kspec validate -v # Verbose output
307
- ```
308
-
309
- **Exit codes:** `0` = success, `4` = validation errors, `6` = warnings only (unless `--warnings-ok`).
310
-
311
- ## Session Log
312
-
313
- View and search historical session data.
314
-
315
- ```bash
316
- kspec session log list # List sessions with stats
317
- kspec session log list --since 7d # Recent sessions
318
- kspec session log list --agent ralph # Filter by agent type
319
- kspec session log show <session-id> # Detailed session view
320
- kspec session log show <id> --events # Include events
321
- kspec session log stats # Aggregate analytics
322
- kspec session log stats --by-day # Daily breakdown
323
- kspec session log stats --tool-usage # Tool usage stats
324
- kspec session log search "pattern" # Search across events
325
- ```
326
-
327
- ## Search and Export
328
-
329
- ```bash
330
- # Search across items, tasks, inbox, and meta
331
- kspec search "pattern"
332
- kspec search "auth" --tasks-only
333
- kspec search "feature" --items-only --limit 10
334
-
335
- # Git history by spec/task
336
- kspec log @task-ref # Commits related to a ref
337
- kspec log --spec @spec-ref # Search by spec trailer
338
- kspec log --since "2 weeks ago" # Filter by date
339
-
340
- # Export
341
- kspec export # JSON export
342
- kspec export --format html -o out.html
343
- ```
344
-
345
- ## Batch Execution
346
-
347
- Execute multiple commands atomically or with per-command commits.
348
-
349
- ```bash
350
- # Atomic (default) — single commit, rollback on failure
351
- echo '[{"command":"task note","args":{"ref":"@task","message":"update"}}]' | kspec batch
352
- kspec batch --file commands.json
353
-
354
- # Immediate mode — per-command commits
355
- kspec batch --no-atomic --file commands.json
356
-
357
- # Continue on error, dry run
358
- kspec batch --continue --file commands.json
359
- kspec batch --dry-run --file commands.json
360
-
361
- # Discover available batch commands
362
- kspec batch commands
363
- ```
364
-
365
- Each command: `{"command": "cli path", "args": {...}, "id": "optional"}`. Only mutating commands allowed. Typos in command names produce did-you-mean suggestions.
366
-
367
- ## Shadow Branch
368
-
369
- kspec stores spec/task state on a separate orphan branch (`kspec-meta`) via a git worktree at `.kspec/`. This keeps spec changes out of your main branch history.
370
-
371
- ```bash
372
- kspec init # Initialize project (creates shadow branch)
373
- kspec shadow status # Check shadow branch health
374
- kspec shadow sync # Sync with remote
375
- kspec shadow repair # Fix broken worktree
376
- kspec shadow log # Recent shadow commits
33
+ kspec init
34
+ kspec setup
35
+ kspec session start
377
36
  ```
378
37
 
379
- ## Utility Commands
38
+ That three-command sequence is the common starting point across real kspec projects:
380
39
 
381
- ```bash
382
- kspec util ulid # Generate a valid ULID
383
- kspec util ulid --count 5 # Generate multiple ULIDs
384
- kspec help # Extended help
385
- kspec help --all # Full command reference
386
- kspec help --exit-codes # Exit code documentation
387
- kspec help <cmd> --json-schema # JSON Schema for a command
388
- ```
40
+ 1. `kspec init` creates the project manifest plus the `.kspec/` shadow worktree.
41
+ 2. `kspec setup` configures agent authoring and local runtime integration.
42
+ 3. `kspec session start` shows active work, ready tasks, and pending project context.
389
43
 
390
- ## Task File Format
391
-
392
- Tasks are stored in YAML files (`*.tasks.yaml`):
393
-
394
- ```yaml
395
- - _ulid: 01KEYQSD2QJCNGRKSR38V0E3BM
396
- slugs: [my-task]
397
- title: My task title
398
- type: task # task, epic, bug, spike, infra
399
- status: pending # pending, in_progress, pending_review, completed, blocked, cancelled
400
- priority: 2 # 1 (highest) to 5 (lowest)
401
- spec_ref: "@feature-slug"
402
- depends_on: ["@other-task"]
403
- tags: [mvp]
404
- notes:
405
- - _ulid: 01KEYRJ953HRYWJ0W4XEG6J9FB
406
- created_at: "2026-01-14T17:00:00Z"
407
- author: "@claude"
408
- content: |
409
- Started implementing feature X...
410
- ```
44
+ For install details, cloning existing kspec projects, and troubleshooting, see [INSTALL.md](INSTALL.md).
411
45
 
412
- ## JSON Output
46
+ ## The spec-first loop
413
47
 
414
- Add `--json` flag for machine-readable output:
48
+ The core workflow is short:
415
49
 
416
50
  ```bash
417
- kspec --json tasks ready
418
- kspec --json task get @my-task
419
- ```
51
+ # 1. Define what should exist
52
+ kspec item add --under @main --title "Contributing guide" --type feature --slug contributing-guide
53
+ kspec item ac add @contributing-guide \
54
+ --given "a new contributor opens the repository" \
55
+ --when "they look for project workflow guidance" \
56
+ --then "they can follow a documented path to set up, make changes, and submit work"
420
57
 
421
- ## Project Structure
58
+ # 2. Derive implementation work from the spec
59
+ kspec derive @contributing-guide
422
60
 
423
- ```
424
- kynetic-spec/
425
- ├── .kspec/ # kspec's own spec (shadow branch worktree)
426
- │ ├── kynetic.yaml # Root manifest
427
- │ ├── project.tasks.yaml # Active tasks
428
- │ ├── project.inbox.yaml # Inbox items
429
- │ └── modules/ # Spec items by domain
430
- ├── src/ # TypeScript implementation
431
- │ ├── schema/ # Zod schemas
432
- │ ├── parser/ # YAML loading
433
- │ └── cli/ # Command handlers
434
- └── tests/ # Vitest tests
435
- ```
436
-
437
- ## Development
61
+ # 3. Start and track execution
62
+ kspec task start @task-contributing-guide
63
+ kspec task note @task-contributing-guide "Drafting CONTRIBUTING.md and linking it from README."
438
64
 
439
- ```bash
440
- # Run tests
441
- npm test
442
- npm run test:watch
65
+ # 4. Submit after code/docs + PR are ready
66
+ kspec task submit @task-contributing-guide
443
67
 
444
- # Type check
445
- npm run build
446
-
447
- # Run CLI in dev mode
448
- npm run dev -- tasks ready
68
+ # 5. Complete after merge
69
+ kspec task complete @task-contributing-guide --reason "Merged in PR #123."
449
70
  ```
450
71
 
451
- ### Troubleshooting: ESM + npm link
72
+ For the full walkthrough from install to first completed task, see [docs/getting-started.md](docs/getting-started.md).
452
73
 
453
- When using `npm link` to develop kspec globally, ESM module detection can break without proper symlink resolution. This manifests as the CLI executing twice or commands not working correctly.
74
+ ## How it works
454
75
 
455
- **Symptoms:**
456
- - Commands execute twice
457
- - CLI seems to hang or behave unexpectedly
458
- - "Cannot find module" errors when using `npm link`
76
+ ### Specs stay separate from product code
459
77
 
460
- **Why it happens:**
461
- - `npm link` creates symlinks for global CLI binaries
462
- - Node.js ESM uses `import.meta.url` to detect if a module is the main entry point
463
- - Without symlink resolution, `import.meta.url` doesn't match the symlinked path
464
- - This causes the module to be imported but not executed, or executed multiple times
78
+ By default, `kspec` stores specs, tasks, plans, and workflow state inside `.kspec/`, which is a git worktree backed by an orphan `kspec-meta` branch. Your source branch stays focused on code. Your planning state remains versioned and auditable.
465
79
 
466
- **The fix:**
467
- kspec uses `fs.realpathSync()` to resolve symlinks before comparing paths:
80
+ ### Tasks stay linked to intent
468
81
 
469
- ```javascript
470
- // src/cli/index.ts
471
- const scriptPath = realpathSync(process.argv[1]);
472
- if (import.meta.url === `file://${scriptPath}`) {
473
- program.parse();
474
- }
475
- ```
82
+ When you run `kspec derive @spec-ref`, the resulting task keeps a `spec_ref` back to the originating item. Reviews can validate the implementation against acceptance criteria instead of relying on a loosely-related ticket title.
476
83
 
477
- This ensures the CLI works correctly whether run via:
478
- - `npm run dev` (direct TypeScript execution)
479
- - `npm link` (symlinked global binary)
480
- - `node dist/cli/index.js` (built code)
84
+ ### Agents get the same context humans do
481
85
 
482
- **For contributors:** If you encounter similar issues in ESM CLIs, remember to resolve symlinks before path comparisons. The pattern is:
483
- 1. Import `realpathSync` from `fs`
484
- 2. Resolve `process.argv[1]` before comparing with `import.meta.url`
485
- 3. This makes the CLI work correctly in all installation modes
86
+ `kspec setup` and `kspec agents generate` produce project-scoped instructions and skills so agents can follow the same conventions, workflows, and task lifecycle you use manually.
486
87
 
487
- ## Design Decisions
88
+ ## Where to go next
488
89
 
489
- - **Library-first**: Core parsing logic is separate from CLI for reuse
490
- - **Zod schemas**: TypeScript-native validation
491
- - **YAML format**: Human-readable, git-friendly, supports comments
492
- - **ULID identifiers**: Time-sortable, globally unique, shortenable
493
- - **Slug aliases**: Human-friendly names that map to ULIDs
90
+ - [docs/getting-started.md](docs/getting-started.md): first-project tutorial for humans and agents
91
+ - [INSTALL.md](INSTALL.md): installation, setup modes, and troubleshooting
92
+ - [AGENTS.md](AGENTS.md): project instructions for agent contributors
93
+ - [docs/history/KYNETIC_SPEC_DESIGN.md](docs/history/KYNETIC_SPEC_DESIGN.md): design rationale and architecture history
494
94
 
495
- ## License
95
+ ## Developing kspec itself
496
96
 
497
- MIT
97
+ This repository is the source for the `@kynetic-ai/spec` npm package. If you want to work on `kspec` rather than adopt it in another repo, use the contributor/development setup in [INSTALL.md](INSTALL.md#from-source) and the project workflow in [AGENTS.md](AGENTS.md).
@@ -0,0 +1,31 @@
1
+ import type { Agent } from "../schema/meta.js";
2
+ import type { DispatchWorkspaceMetadata, DispatchWorkspaceRole } from "./workspace.js";
3
+ export interface DispatchBootstrapStep {
4
+ source: "dispatch" | "agent";
5
+ name: string;
6
+ run: string;
7
+ roles?: Array<DispatchWorkspaceRole>;
8
+ idempotent: boolean;
9
+ allowTrackedChanges: boolean;
10
+ reviewerRerunAllowed: boolean;
11
+ }
12
+ export interface EnsureWorkspaceBootstrapOptions {
13
+ projectDir: string;
14
+ workspaceDir: string;
15
+ metadataPath: string;
16
+ metadata: DispatchWorkspaceMetadata;
17
+ role: DispatchWorkspaceRole;
18
+ agent: Agent;
19
+ env: Record<string, string>;
20
+ }
21
+ export interface EnsureWorkspaceBootstrapResult {
22
+ metadata: DispatchWorkspaceMetadata;
23
+ reused: boolean;
24
+ ranSteps: boolean;
25
+ }
26
+ export declare class DispatchBootstrapError extends Error {
27
+ suggestion: string;
28
+ constructor(message: string, suggestion: string);
29
+ }
30
+ export declare function ensureWorkspaceBootstrap(options: EnsureWorkspaceBootstrapOptions): Promise<EnsureWorkspaceBootstrapResult>;
31
+ //# sourceMappingURL=bootstrap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/bootstrap.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAEV,yBAAyB,EACzB,qBAAqB,EACtB,MAAM,gBAAgB,CAAC;AAMxB,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACrC,UAAU,EAAE,OAAO,CAAC;IACpB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,+BAA+B;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,yBAAyB,CAAC;IACpC,IAAI,EAAE,qBAAqB,CAAC;IAC5B,KAAK,EAAE,KAAK,CAAC;IACb,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7B;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,EAAE,yBAAyB,CAAC;IACpC,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,UAAU,EAAE,MAAM,CAAC;gBAEP,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;CAKhD;AAoJD,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,+BAA+B,GACvC,OAAO,CAAC,8BAA8B,CAAC,CAwOzC"}