light-plan 0.0.0-stage → 0.1.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 (963) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +3181 -2
  3. package/assets/README.md +111 -0
  4. package/assets/agents/lpm-developer.md +468 -0
  5. package/assets/agents/lpm-planner.md +532 -0
  6. package/assets/harnesses/claude.yml +43 -0
  7. package/assets/harnesses/copilot.yml +54 -0
  8. package/assets/harnesses/reasonix.yml +49 -0
  9. package/assets/hcm/light-plan.yml +45 -0
  10. package/assets/skills/lpm-board-health.md +243 -0
  11. package/assets/skills/lpm-board-setup.md +354 -0
  12. package/assets/skills/lpm-delivery.md +344 -0
  13. package/assets/skills/lpm-planning.md +411 -0
  14. package/assets/skills/lpm-templates.md +144 -0
  15. package/assets/skills/lpm.md +267 -0
  16. package/dist/cli/agent-view.d.ts +27 -0
  17. package/dist/cli/agent-view.js +247 -0
  18. package/dist/cli/agent-view.js.map +1 -0
  19. package/dist/cli/commands/agent/assets.d.ts +64 -0
  20. package/dist/cli/commands/agent/assets.js +106 -0
  21. package/dist/cli/commands/agent/assets.js.map +1 -0
  22. package/dist/cli/commands/agent/glob.d.ts +25 -0
  23. package/dist/cli/commands/agent/glob.js +82 -0
  24. package/dist/cli/commands/agent/glob.js.map +1 -0
  25. package/dist/cli/commands/agent/index.d.ts +11 -0
  26. package/dist/cli/commands/agent/index.js +284 -0
  27. package/dist/cli/commands/agent/index.js.map +1 -0
  28. package/dist/cli/commands/agent/install.d.ts +59 -0
  29. package/dist/cli/commands/agent/install.js +131 -0
  30. package/dist/cli/commands/agent/install.js.map +1 -0
  31. package/dist/cli/commands/agent/mapping.d.ts +175 -0
  32. package/dist/cli/commands/agent/mapping.js +256 -0
  33. package/dist/cli/commands/agent/mapping.js.map +1 -0
  34. package/dist/cli/commands/check.d.ts +2 -0
  35. package/dist/cli/commands/check.js +81 -0
  36. package/dist/cli/commands/check.js.map +1 -0
  37. package/dist/cli/commands/comment.d.ts +2 -0
  38. package/dist/cli/commands/comment.js +104 -0
  39. package/dist/cli/commands/comment.js.map +1 -0
  40. package/dist/cli/commands/convert.d.ts +2 -0
  41. package/dist/cli/commands/convert.js +115 -0
  42. package/dist/cli/commands/convert.js.map +1 -0
  43. package/dist/cli/commands/copy.d.ts +2 -0
  44. package/dist/cli/commands/copy.js +69 -0
  45. package/dist/cli/commands/copy.js.map +1 -0
  46. package/dist/cli/commands/export.d.ts +11 -0
  47. package/dist/cli/commands/export.js +226 -0
  48. package/dist/cli/commands/export.js.map +1 -0
  49. package/dist/cli/commands/flag.d.ts +2 -0
  50. package/dist/cli/commands/flag.js +172 -0
  51. package/dist/cli/commands/flag.js.map +1 -0
  52. package/dist/cli/commands/git.d.ts +11 -0
  53. package/dist/cli/commands/git.js +357 -0
  54. package/dist/cli/commands/git.js.map +1 -0
  55. package/dist/cli/commands/hcm/bundle.d.ts +60 -0
  56. package/dist/cli/commands/hcm/bundle.js +166 -0
  57. package/dist/cli/commands/hcm/bundle.js.map +1 -0
  58. package/dist/cli/commands/hcm/index.d.ts +11 -0
  59. package/dist/cli/commands/hcm/index.js +162 -0
  60. package/dist/cli/commands/hcm/index.js.map +1 -0
  61. package/dist/cli/commands/init.d.ts +2 -0
  62. package/dist/cli/commands/init.js +81 -0
  63. package/dist/cli/commands/init.js.map +1 -0
  64. package/dist/cli/commands/insert.d.ts +2 -0
  65. package/dist/cli/commands/insert.js +70 -0
  66. package/dist/cli/commands/insert.js.map +1 -0
  67. package/dist/cli/commands/instructions.d.ts +7 -0
  68. package/dist/cli/commands/instructions.js +256 -0
  69. package/dist/cli/commands/instructions.js.map +1 -0
  70. package/dist/cli/commands/link.d.ts +2 -0
  71. package/dist/cli/commands/link.js +121 -0
  72. package/dist/cli/commands/link.js.map +1 -0
  73. package/dist/cli/commands/mcp/config.d.ts +71 -0
  74. package/dist/cli/commands/mcp/config.js +119 -0
  75. package/dist/cli/commands/mcp/config.js.map +1 -0
  76. package/dist/cli/commands/mcp/index.d.ts +9 -0
  77. package/dist/cli/commands/mcp/index.js +92 -0
  78. package/dist/cli/commands/mcp/index.js.map +1 -0
  79. package/dist/cli/commands/mcp/serve.d.ts +1 -0
  80. package/dist/cli/commands/mcp/serve.js +76 -0
  81. package/dist/cli/commands/mcp/serve.js.map +1 -0
  82. package/dist/cli/commands/mcp/setup.d.ts +1 -0
  83. package/dist/cli/commands/mcp/setup.js +83 -0
  84. package/dist/cli/commands/mcp/setup.js.map +1 -0
  85. package/dist/cli/commands/me.d.ts +2 -0
  86. package/dist/cli/commands/me.js +85 -0
  87. package/dist/cli/commands/me.js.map +1 -0
  88. package/dist/cli/commands/move.d.ts +2 -0
  89. package/dist/cli/commands/move.js +81 -0
  90. package/dist/cli/commands/move.js.map +1 -0
  91. package/dist/cli/commands/new.d.ts +2 -0
  92. package/dist/cli/commands/new.js +222 -0
  93. package/dist/cli/commands/new.js.map +1 -0
  94. package/dist/cli/commands/open.d.ts +2 -0
  95. package/dist/cli/commands/open.js +43 -0
  96. package/dist/cli/commands/open.js.map +1 -0
  97. package/dist/cli/commands/period.d.ts +10 -0
  98. package/dist/cli/commands/period.js +165 -0
  99. package/dist/cli/commands/period.js.map +1 -0
  100. package/dist/cli/commands/profile.d.ts +2 -0
  101. package/dist/cli/commands/profile.js +133 -0
  102. package/dist/cli/commands/profile.js.map +1 -0
  103. package/dist/cli/commands/queue.d.ts +2 -0
  104. package/dist/cli/commands/queue.js +582 -0
  105. package/dist/cli/commands/queue.js.map +1 -0
  106. package/dist/cli/commands/remote.d.ts +10 -0
  107. package/dist/cli/commands/remote.js +3142 -0
  108. package/dist/cli/commands/remote.js.map +1 -0
  109. package/dist/cli/commands/rm.d.ts +2 -0
  110. package/dist/cli/commands/rm.js +63 -0
  111. package/dist/cli/commands/rm.js.map +1 -0
  112. package/dist/cli/commands/set.d.ts +2 -0
  113. package/dist/cli/commands/set.js +139 -0
  114. package/dist/cli/commands/set.js.map +1 -0
  115. package/dist/cli/commands/split.d.ts +2 -0
  116. package/dist/cli/commands/split.js +90 -0
  117. package/dist/cli/commands/split.js.map +1 -0
  118. package/dist/cli/commands/task.d.ts +2 -0
  119. package/dist/cli/commands/task.js +298 -0
  120. package/dist/cli/commands/task.js.map +1 -0
  121. package/dist/cli/commands/team.d.ts +2 -0
  122. package/dist/cli/commands/team.js +114 -0
  123. package/dist/cli/commands/team.js.map +1 -0
  124. package/dist/cli/commands/template.d.ts +2 -0
  125. package/dist/cli/commands/template.js +338 -0
  126. package/dist/cli/commands/template.js.map +1 -0
  127. package/dist/cli/commands/ui.d.ts +2 -0
  128. package/dist/cli/commands/ui.js +98 -0
  129. package/dist/cli/commands/ui.js.map +1 -0
  130. package/dist/cli/commands/upstream.d.ts +2 -0
  131. package/dist/cli/commands/upstream.js +218 -0
  132. package/dist/cli/commands/upstream.js.map +1 -0
  133. package/dist/cli/context.d.ts +24 -0
  134. package/dist/cli/context.js +52 -0
  135. package/dist/cli/context.js.map +1 -0
  136. package/dist/cli/index.d.ts +2 -0
  137. package/dist/cli/index.js +208 -0
  138. package/dist/cli/index.js.map +1 -0
  139. package/dist/cli/live.d.ts +71 -0
  140. package/dist/cli/live.js +182 -0
  141. package/dist/cli/live.js.map +1 -0
  142. package/dist/cli/plan.d.ts +28 -0
  143. package/dist/cli/plan.js +76 -0
  144. package/dist/cli/plan.js.map +1 -0
  145. package/dist/cli/prompt.d.ts +60 -0
  146. package/dist/cli/prompt.js +185 -0
  147. package/dist/cli/prompt.js.map +1 -0
  148. package/dist/cli/ui.d.ts +65 -0
  149. package/dist/cli/ui.js +79 -0
  150. package/dist/cli/ui.js.map +1 -0
  151. package/dist/core/board/dependency-rollup.d.ts +54 -0
  152. package/dist/core/board/dependency-rollup.js +72 -0
  153. package/dist/core/board/dependency-rollup.js.map +1 -0
  154. package/dist/core/board/flag-rollup.d.ts +33 -0
  155. package/dist/core/board/flag-rollup.js +56 -0
  156. package/dist/core/board/flag-rollup.js.map +1 -0
  157. package/dist/core/board/index.d.ts +21 -0
  158. package/dist/core/board/index.js +22 -0
  159. package/dist/core/board/index.js.map +1 -0
  160. package/dist/core/board/load/cache.d.ts +52 -0
  161. package/dist/core/board/load/cache.js +105 -0
  162. package/dist/core/board/load/cache.js.map +1 -0
  163. package/dist/core/board/load/fields.d.ts +33 -0
  164. package/dist/core/board/load/fields.js +154 -0
  165. package/dist/core/board/load/fields.js.map +1 -0
  166. package/dist/core/board/load/scan.d.ts +39 -0
  167. package/dist/core/board/load/scan.js +88 -0
  168. package/dist/core/board/load/scan.js.map +1 -0
  169. package/dist/core/board/load/tree.d.ts +10 -0
  170. package/dist/core/board/load/tree.js +114 -0
  171. package/dist/core/board/load/tree.js.map +1 -0
  172. package/dist/core/board/load.d.ts +69 -0
  173. package/dist/core/board/load.js +204 -0
  174. package/dist/core/board/load.js.map +1 -0
  175. package/dist/core/board/query.d.ts +126 -0
  176. package/dist/core/board/query.js +291 -0
  177. package/dist/core/board/query.js.map +1 -0
  178. package/dist/core/board/registry.d.ts +51 -0
  179. package/dist/core/board/registry.js +98 -0
  180. package/dist/core/board/registry.js.map +1 -0
  181. package/dist/core/board/remote-scopes.d.ts +71 -0
  182. package/dist/core/board/remote-scopes.js +103 -0
  183. package/dist/core/board/remote-scopes.js.map +1 -0
  184. package/dist/core/board/rollup.d.ts +32 -0
  185. package/dist/core/board/rollup.js +67 -0
  186. package/dist/core/board/rollup.js.map +1 -0
  187. package/dist/core/board/scope.d.ts +81 -0
  188. package/dist/core/board/scope.js +134 -0
  189. package/dist/core/board/scope.js.map +1 -0
  190. package/dist/core/board/simulate.d.ts +138 -0
  191. package/dist/core/board/simulate.js +141 -0
  192. package/dist/core/board/simulate.js.map +1 -0
  193. package/dist/core/board/tasks/index.d.ts +25 -0
  194. package/dist/core/board/tasks/index.js +26 -0
  195. package/dist/core/board/tasks/index.js.map +1 -0
  196. package/dist/core/board/tasks/ranking.d.ts +155 -0
  197. package/dist/core/board/tasks/ranking.js +374 -0
  198. package/dist/core/board/tasks/ranking.js.map +1 -0
  199. package/dist/core/board/tasks/roster.d.ts +42 -0
  200. package/dist/core/board/tasks/roster.js +82 -0
  201. package/dist/core/board/tasks/roster.js.map +1 -0
  202. package/dist/core/board/tasks.d.ts +1 -0
  203. package/dist/core/board/tasks.js +2 -0
  204. package/dist/core/board/tasks.js.map +1 -0
  205. package/dist/core/config/index.d.ts +9 -0
  206. package/dist/core/config/index.js +10 -0
  207. package/dist/core/config/index.js.map +1 -0
  208. package/dist/core/config/lookup.d.ts +114 -0
  209. package/dist/core/config/lookup.js +221 -0
  210. package/dist/core/config/lookup.js.map +1 -0
  211. package/dist/core/config/remote-blocks.d.ts +17 -0
  212. package/dist/core/config/remote-blocks.js +47 -0
  213. package/dist/core/config/remote-blocks.js.map +1 -0
  214. package/dist/core/config/schema.d.ts +10 -0
  215. package/dist/core/config/schema.js +451 -0
  216. package/dist/core/config/schema.js.map +1 -0
  217. package/dist/core/errors.d.ts +23 -0
  218. package/dist/core/errors.js +31 -0
  219. package/dist/core/errors.js.map +1 -0
  220. package/dist/core/gitsync/hosts.d.ts +40 -0
  221. package/dist/core/gitsync/hosts.js +115 -0
  222. package/dist/core/gitsync/hosts.js.map +1 -0
  223. package/dist/core/gitsync/index.d.ts +25 -0
  224. package/dist/core/gitsync/index.js +25 -0
  225. package/dist/core/gitsync/index.js.map +1 -0
  226. package/dist/core/gitsync/integrate.d.ts +72 -0
  227. package/dist/core/gitsync/integrate.js +115 -0
  228. package/dist/core/gitsync/integrate.js.map +1 -0
  229. package/dist/core/gitsync/repo.d.ts +61 -0
  230. package/dist/core/gitsync/repo.js +213 -0
  231. package/dist/core/gitsync/repo.js.map +1 -0
  232. package/dist/core/gitsync/run.d.ts +58 -0
  233. package/dist/core/gitsync/run.js +102 -0
  234. package/dist/core/gitsync/run.js.map +1 -0
  235. package/dist/core/gitsync/status.d.ts +59 -0
  236. package/dist/core/gitsync/status.js +81 -0
  237. package/dist/core/gitsync/status.js.map +1 -0
  238. package/dist/core/gitsync/sync.d.ts +111 -0
  239. package/dist/core/gitsync/sync.js +275 -0
  240. package/dist/core/gitsync/sync.js.map +1 -0
  241. package/dist/core/index.d.ts +31 -0
  242. package/dist/core/index.js +32 -0
  243. package/dist/core/index.js.map +1 -0
  244. package/dist/core/instructions/analyze.d.ts +70 -0
  245. package/dist/core/instructions/analyze.js +275 -0
  246. package/dist/core/instructions/analyze.js.map +1 -0
  247. package/dist/core/instructions/builtin.d.ts +21 -0
  248. package/dist/core/instructions/builtin.js +133 -0
  249. package/dist/core/instructions/builtin.js.map +1 -0
  250. package/dist/core/instructions/context.d.ts +155 -0
  251. package/dist/core/instructions/context.js +209 -0
  252. package/dist/core/instructions/context.js.map +1 -0
  253. package/dist/core/instructions/index.d.ts +29 -0
  254. package/dist/core/instructions/index.js +30 -0
  255. package/dist/core/instructions/index.js.map +1 -0
  256. package/dist/core/instructions/instructions.d.ts +90 -0
  257. package/dist/core/instructions/instructions.js +179 -0
  258. package/dist/core/instructions/instructions.js.map +1 -0
  259. package/dist/core/instructions/template.d.ts +108 -0
  260. package/dist/core/instructions/template.js +252 -0
  261. package/dist/core/instructions/template.js.map +1 -0
  262. package/dist/core/model/attributes.d.ts +16 -0
  263. package/dist/core/model/attributes.js +119 -0
  264. package/dist/core/model/attributes.js.map +1 -0
  265. package/dist/core/model/index.d.ts +10 -0
  266. package/dist/core/model/index.js +11 -0
  267. package/dist/core/model/index.js.map +1 -0
  268. package/dist/core/model/links.d.ts +34 -0
  269. package/dist/core/model/links.js +114 -0
  270. package/dist/core/model/links.js.map +1 -0
  271. package/dist/core/model/profile.d.ts +31 -0
  272. package/dist/core/model/profile.js +8 -0
  273. package/dist/core/model/profile.js.map +1 -0
  274. package/dist/core/model/types.d.ts +441 -0
  275. package/dist/core/model/types.js +167 -0
  276. package/dist/core/model/types.js.map +1 -0
  277. package/dist/core/model/zod.d.ts +6 -0
  278. package/dist/core/model/zod.js +11 -0
  279. package/dist/core/model/zod.js.map +1 -0
  280. package/dist/core/operations/board-index.d.ts +45 -0
  281. package/dist/core/operations/board-index.js +147 -0
  282. package/dist/core/operations/board-index.js.map +1 -0
  283. package/dist/core/operations/claim.d.ts +69 -0
  284. package/dist/core/operations/claim.js +115 -0
  285. package/dist/core/operations/claim.js.map +1 -0
  286. package/dist/core/operations/comment.d.ts +30 -0
  287. package/dist/core/operations/comment.js +46 -0
  288. package/dist/core/operations/comment.js.map +1 -0
  289. package/dist/core/operations/create.d.ts +82 -0
  290. package/dist/core/operations/create.js +306 -0
  291. package/dist/core/operations/create.js.map +1 -0
  292. package/dist/core/operations/flag.d.ts +58 -0
  293. package/dist/core/operations/flag.js +95 -0
  294. package/dist/core/operations/flag.js.map +1 -0
  295. package/dist/core/operations/git-sync.d.ts +148 -0
  296. package/dist/core/operations/git-sync.js +341 -0
  297. package/dist/core/operations/git-sync.js.map +1 -0
  298. package/dist/core/operations/index.d.ts +44 -0
  299. package/dist/core/operations/index.js +45 -0
  300. package/dist/core/operations/index.js.map +1 -0
  301. package/dist/core/operations/init.d.ts +25 -0
  302. package/dist/core/operations/init.js +122 -0
  303. package/dist/core/operations/init.js.map +1 -0
  304. package/dist/core/operations/link.d.ts +40 -0
  305. package/dist/core/operations/link.js +131 -0
  306. package/dist/core/operations/link.js.map +1 -0
  307. package/dist/core/operations/move.d.ts +43 -0
  308. package/dist/core/operations/move.js +103 -0
  309. package/dist/core/operations/move.js.map +1 -0
  310. package/dist/core/operations/profile.d.ts +23 -0
  311. package/dist/core/operations/profile.js +26 -0
  312. package/dist/core/operations/profile.js.map +1 -0
  313. package/dist/core/operations/remotes-off.d.ts +12 -0
  314. package/dist/core/operations/remotes-off.js +67 -0
  315. package/dist/core/operations/remotes-off.js.map +1 -0
  316. package/dist/core/operations/remove.d.ts +18 -0
  317. package/dist/core/operations/remove.js +114 -0
  318. package/dist/core/operations/remove.js.map +1 -0
  319. package/dist/core/operations/retype.d.ts +25 -0
  320. package/dist/core/operations/retype.js +59 -0
  321. package/dist/core/operations/retype.js.map +1 -0
  322. package/dist/core/operations/rollup.d.ts +74 -0
  323. package/dist/core/operations/rollup.js +121 -0
  324. package/dist/core/operations/rollup.js.map +1 -0
  325. package/dist/core/operations/shared.d.ts +133 -0
  326. package/dist/core/operations/shared.js +383 -0
  327. package/dist/core/operations/shared.js.map +1 -0
  328. package/dist/core/operations/update.d.ts +43 -0
  329. package/dist/core/operations/update.js +161 -0
  330. package/dist/core/operations/update.js.map +1 -0
  331. package/dist/core/operations/user.d.ts +27 -0
  332. package/dist/core/operations/user.js +68 -0
  333. package/dist/core/operations/user.js.map +1 -0
  334. package/dist/core/profile/current.d.ts +35 -0
  335. package/dist/core/profile/current.js +31 -0
  336. package/dist/core/profile/current.js.map +1 -0
  337. package/dist/core/profile/index.d.ts +14 -0
  338. package/dist/core/profile/index.js +15 -0
  339. package/dist/core/profile/index.js.map +1 -0
  340. package/dist/core/profile/schema.d.ts +9 -0
  341. package/dist/core/profile/schema.js +100 -0
  342. package/dist/core/profile/schema.js.map +1 -0
  343. package/dist/core/storage/activity.d.ts +78 -0
  344. package/dist/core/storage/activity.js +131 -0
  345. package/dist/core/storage/activity.js.map +1 -0
  346. package/dist/core/storage/atomic.d.ts +34 -0
  347. package/dist/core/storage/atomic.js +117 -0
  348. package/dist/core/storage/atomic.js.map +1 -0
  349. package/dist/core/storage/comments.d.ts +39 -0
  350. package/dist/core/storage/comments.js +88 -0
  351. package/dist/core/storage/comments.js.map +1 -0
  352. package/dist/core/storage/document.d.ts +16 -0
  353. package/dist/core/storage/document.js +98 -0
  354. package/dist/core/storage/document.js.map +1 -0
  355. package/dist/core/storage/frontmatter.d.ts +16 -0
  356. package/dist/core/storage/frontmatter.js +33 -0
  357. package/dist/core/storage/frontmatter.js.map +1 -0
  358. package/dist/core/storage/git.d.ts +8 -0
  359. package/dist/core/storage/git.js +48 -0
  360. package/dist/core/storage/git.js.map +1 -0
  361. package/dist/core/storage/index.d.ts +27 -0
  362. package/dist/core/storage/index.js +28 -0
  363. package/dist/core/storage/index.js.map +1 -0
  364. package/dist/core/storage/local.d.ts +57 -0
  365. package/dist/core/storage/local.js +133 -0
  366. package/dist/core/storage/local.js.map +1 -0
  367. package/dist/core/storage/lock.d.ts +85 -0
  368. package/dist/core/storage/lock.js +364 -0
  369. package/dist/core/storage/lock.js.map +1 -0
  370. package/dist/core/storage/paths.d.ts +125 -0
  371. package/dist/core/storage/paths.js +202 -0
  372. package/dist/core/storage/paths.js.map +1 -0
  373. package/dist/core/storage/state.d.ts +32 -0
  374. package/dist/core/storage/state.js +71 -0
  375. package/dist/core/storage/state.js.map +1 -0
  376. package/dist/core/storage/templates.d.ts +29 -0
  377. package/dist/core/storage/templates.js +62 -0
  378. package/dist/core/storage/templates.js.map +1 -0
  379. package/dist/core/storage/views.d.ts +18 -0
  380. package/dist/core/storage/views.js +62 -0
  381. package/dist/core/storage/views.js.map +1 -0
  382. package/dist/core/validation/check.d.ts +4 -0
  383. package/dist/core/validation/check.js +22 -0
  384. package/dist/core/validation/check.js.map +1 -0
  385. package/dist/core/validation/checks/collection.d.ts +4 -0
  386. package/dist/core/validation/checks/collection.js +152 -0
  387. package/dist/core/validation/checks/collection.js.map +1 -0
  388. package/dist/core/validation/checks/counters.d.ts +3 -0
  389. package/dist/core/validation/checks/counters.js +23 -0
  390. package/dist/core/validation/checks/counters.js.map +1 -0
  391. package/dist/core/validation/checks/dependencies.d.ts +3 -0
  392. package/dist/core/validation/checks/dependencies.js +58 -0
  393. package/dist/core/validation/checks/dependencies.js.map +1 -0
  394. package/dist/core/validation/checks/gitignore.d.ts +10 -0
  395. package/dist/core/validation/checks/gitignore.js +22 -0
  396. package/dist/core/validation/checks/gitignore.js.map +1 -0
  397. package/dist/core/validation/checks/index-file.d.ts +8 -0
  398. package/dist/core/validation/checks/index-file.js +26 -0
  399. package/dist/core/validation/checks/index-file.js.map +1 -0
  400. package/dist/core/validation/checks/index.d.ts +20 -0
  401. package/dist/core/validation/checks/index.js +21 -0
  402. package/dist/core/validation/checks/index.js.map +1 -0
  403. package/dist/core/validation/checks/issues.d.ts +3 -0
  404. package/dist/core/validation/checks/issues.js +152 -0
  405. package/dist/core/validation/checks/issues.js.map +1 -0
  406. package/dist/core/validation/checks/periods.d.ts +3 -0
  407. package/dist/core/validation/checks/periods.js +89 -0
  408. package/dist/core/validation/checks/periods.js.map +1 -0
  409. package/dist/core/validation/checks/remotes.d.ts +20 -0
  410. package/dist/core/validation/checks/remotes.js +42 -0
  411. package/dist/core/validation/checks/remotes.js.map +1 -0
  412. package/dist/core/validation/checks/resources.d.ts +3 -0
  413. package/dist/core/validation/checks/resources.js +77 -0
  414. package/dist/core/validation/checks/resources.js.map +1 -0
  415. package/dist/core/validation/checks/rollup.d.ts +27 -0
  416. package/dist/core/validation/checks/rollup.js +53 -0
  417. package/dist/core/validation/checks/rollup.js.map +1 -0
  418. package/dist/core/validation/checks/squads.d.ts +3 -0
  419. package/dist/core/validation/checks/squads.js +42 -0
  420. package/dist/core/validation/checks/squads.js.map +1 -0
  421. package/dist/core/validation/checks/templates.d.ts +14 -0
  422. package/dist/core/validation/checks/templates.js +119 -0
  423. package/dist/core/validation/checks/templates.js.map +1 -0
  424. package/dist/core/validation/fix.d.ts +7 -0
  425. package/dist/core/validation/fix.js +273 -0
  426. package/dist/core/validation/fix.js.map +1 -0
  427. package/dist/core/validation/index.d.ts +7 -0
  428. package/dist/core/validation/index.js +8 -0
  429. package/dist/core/validation/index.js.map +1 -0
  430. package/dist/core/validation/shared.d.ts +47 -0
  431. package/dist/core/validation/shared.js +66 -0
  432. package/dist/core/validation/shared.js.map +1 -0
  433. package/dist/mcp/context.d.ts +70 -0
  434. package/dist/mcp/context.js +110 -0
  435. package/dist/mcp/context.js.map +1 -0
  436. package/dist/mcp/index.d.ts +49 -0
  437. package/dist/mcp/index.js +90 -0
  438. package/dist/mcp/index.js.map +1 -0
  439. package/dist/mcp/reply.d.ts +28 -0
  440. package/dist/mcp/reply.js +34 -0
  441. package/dist/mcp/reply.js.map +1 -0
  442. package/dist/mcp/tools/plan/create.d.ts +3 -0
  443. package/dist/mcp/tools/plan/create.js +128 -0
  444. package/dist/mcp/tools/plan/create.js.map +1 -0
  445. package/dist/mcp/tools/plan/delete.d.ts +3 -0
  446. package/dist/mcp/tools/plan/delete.js +35 -0
  447. package/dist/mcp/tools/plan/delete.js.map +1 -0
  448. package/dist/mcp/tools/plan/graph.d.ts +3 -0
  449. package/dist/mcp/tools/plan/graph.js +53 -0
  450. package/dist/mcp/tools/plan/graph.js.map +1 -0
  451. package/dist/mcp/tools/plan/index.d.ts +15 -0
  452. package/dist/mcp/tools/plan/index.js +16 -0
  453. package/dist/mcp/tools/plan/index.js.map +1 -0
  454. package/dist/mcp/tools/plan/link.d.ts +3 -0
  455. package/dist/mcp/tools/plan/link.js +46 -0
  456. package/dist/mcp/tools/plan/link.js.map +1 -0
  457. package/dist/mcp/tools/plan/registrar.d.ts +10 -0
  458. package/dist/mcp/tools/plan/registrar.js +24 -0
  459. package/dist/mcp/tools/plan/registrar.js.map +1 -0
  460. package/dist/mcp/tools/plan/reshape.d.ts +3 -0
  461. package/dist/mcp/tools/plan/reshape.js +95 -0
  462. package/dist/mcp/tools/plan/reshape.js.map +1 -0
  463. package/dist/mcp/tools/plan/timeline.d.ts +3 -0
  464. package/dist/mcp/tools/plan/timeline.js +68 -0
  465. package/dist/mcp/tools/plan/timeline.js.map +1 -0
  466. package/dist/mcp/tools/plan/upstream.d.ts +14 -0
  467. package/dist/mcp/tools/plan/upstream.js +69 -0
  468. package/dist/mcp/tools/plan/upstream.js.map +1 -0
  469. package/dist/mcp/tools/plan.d.ts +1 -0
  470. package/dist/mcp/tools/plan.js +2 -0
  471. package/dist/mcp/tools/plan.js.map +1 -0
  472. package/dist/mcp/tools/read.d.ts +3 -0
  473. package/dist/mcp/tools/read.js +339 -0
  474. package/dist/mcp/tools/read.js.map +1 -0
  475. package/dist/mcp/tools/remote.d.ts +3 -0
  476. package/dist/mcp/tools/remote.js +254 -0
  477. package/dist/mcp/tools/remote.js.map +1 -0
  478. package/dist/mcp/tools/templates.d.ts +12 -0
  479. package/dist/mcp/tools/templates.js +165 -0
  480. package/dist/mcp/tools/templates.js.map +1 -0
  481. package/dist/mcp/tools/work.d.ts +16 -0
  482. package/dist/mcp/tools/work.js +359 -0
  483. package/dist/mcp/tools/work.js.map +1 -0
  484. package/dist/remote/accounts.d.ts +158 -0
  485. package/dist/remote/accounts.js +207 -0
  486. package/dist/remote/accounts.js.map +1 -0
  487. package/dist/remote/adopt.d.ts +139 -0
  488. package/dist/remote/adopt.js +181 -0
  489. package/dist/remote/adopt.js.map +1 -0
  490. package/dist/remote/anchor.d.ts +35 -0
  491. package/dist/remote/anchor.js +53 -0
  492. package/dist/remote/anchor.js.map +1 -0
  493. package/dist/remote/attributes.d.ts +103 -0
  494. package/dist/remote/attributes.js +245 -0
  495. package/dist/remote/attributes.js.map +1 -0
  496. package/dist/remote/audit.d.ts +112 -0
  497. package/dist/remote/audit.js +215 -0
  498. package/dist/remote/audit.js.map +1 -0
  499. package/dist/remote/capabilities.d.ts +267 -0
  500. package/dist/remote/capabilities.js +225 -0
  501. package/dist/remote/capabilities.js.map +1 -0
  502. package/dist/remote/check.d.ts +49 -0
  503. package/dist/remote/check.js +356 -0
  504. package/dist/remote/check.js.map +1 -0
  505. package/dist/remote/comments.d.ts +86 -0
  506. package/dist/remote/comments.js +87 -0
  507. package/dist/remote/comments.js.map +1 -0
  508. package/dist/remote/config-file.d.ts +237 -0
  509. package/dist/remote/config-file.js +640 -0
  510. package/dist/remote/config-file.js.map +1 -0
  511. package/dist/remote/conflicts.d.ts +110 -0
  512. package/dist/remote/conflicts.js +188 -0
  513. package/dist/remote/conflicts.js.map +1 -0
  514. package/dist/remote/connection-catalogue.d.ts +65 -0
  515. package/dist/remote/connection-catalogue.js +66 -0
  516. package/dist/remote/connection-catalogue.js.map +1 -0
  517. package/dist/remote/connection.d.ts +84 -0
  518. package/dist/remote/connection.js +229 -0
  519. package/dist/remote/connection.js.map +1 -0
  520. package/dist/remote/coverage.d.ts +65 -0
  521. package/dist/remote/coverage.js +244 -0
  522. package/dist/remote/coverage.js.map +1 -0
  523. package/dist/remote/credentials.d.ts +95 -0
  524. package/dist/remote/credentials.js +210 -0
  525. package/dist/remote/credentials.js.map +1 -0
  526. package/dist/remote/execute.d.ts +178 -0
  527. package/dist/remote/execute.js +1245 -0
  528. package/dist/remote/execute.js.map +1 -0
  529. package/dist/remote/fingerprint.d.ts +172 -0
  530. package/dist/remote/fingerprint.js +337 -0
  531. package/dist/remote/fingerprint.js.map +1 -0
  532. package/dist/remote/fixtures.d.ts +176 -0
  533. package/dist/remote/fixtures.js +432 -0
  534. package/dist/remote/fixtures.js.map +1 -0
  535. package/dist/remote/guard.d.ts +90 -0
  536. package/dist/remote/guard.js +83 -0
  537. package/dist/remote/guard.js.map +1 -0
  538. package/dist/remote/hierarchy.d.ts +141 -0
  539. package/dist/remote/hierarchy.js +129 -0
  540. package/dist/remote/hierarchy.js.map +1 -0
  541. package/dist/remote/index.d.ts +145 -0
  542. package/dist/remote/index.js +146 -0
  543. package/dist/remote/index.js.map +1 -0
  544. package/dist/remote/inspect.d.ts +103 -0
  545. package/dist/remote/inspect.js +152 -0
  546. package/dist/remote/inspect.js.map +1 -0
  547. package/dist/remote/labels.d.ts +75 -0
  548. package/dist/remote/labels.js +137 -0
  549. package/dist/remote/labels.js.map +1 -0
  550. package/dist/remote/ladder.d.ts +145 -0
  551. package/dist/remote/ladder.js +387 -0
  552. package/dist/remote/ladder.js.map +1 -0
  553. package/dist/remote/ledger.d.ts +97 -0
  554. package/dist/remote/ledger.js +148 -0
  555. package/dist/remote/ledger.js.map +1 -0
  556. package/dist/remote/lifecycle.d.ts +175 -0
  557. package/dist/remote/lifecycle.js +274 -0
  558. package/dist/remote/lifecycle.js.map +1 -0
  559. package/dist/remote/links.d.ts +411 -0
  560. package/dist/remote/links.js +748 -0
  561. package/dist/remote/links.js.map +1 -0
  562. package/dist/remote/managed-block.d.ts +182 -0
  563. package/dist/remote/managed-block.js +406 -0
  564. package/dist/remote/managed-block.js.map +1 -0
  565. package/dist/remote/managed-comment.d.ts +104 -0
  566. package/dist/remote/managed-comment.js +92 -0
  567. package/dist/remote/managed-comment.js.map +1 -0
  568. package/dist/remote/mapping.d.ts +282 -0
  569. package/dist/remote/mapping.js +336 -0
  570. package/dist/remote/mapping.js.map +1 -0
  571. package/dist/remote/merge.d.ts +172 -0
  572. package/dist/remote/merge.js +221 -0
  573. package/dist/remote/merge.js.map +1 -0
  574. package/dist/remote/periods.d.ts +209 -0
  575. package/dist/remote/periods.js +224 -0
  576. package/dist/remote/periods.js.map +1 -0
  577. package/dist/remote/plan.d.ts +671 -0
  578. package/dist/remote/plan.js +1210 -0
  579. package/dist/remote/plan.js.map +1 -0
  580. package/dist/remote/policy.d.ts +67 -0
  581. package/dist/remote/policy.js +67 -0
  582. package/dist/remote/policy.js.map +1 -0
  583. package/dist/remote/preflight.d.ts +112 -0
  584. package/dist/remote/preflight.js +342 -0
  585. package/dist/remote/preflight.js.map +1 -0
  586. package/dist/remote/prerequisites.d.ts +113 -0
  587. package/dist/remote/prerequisites.js +161 -0
  588. package/dist/remote/prerequisites.js.map +1 -0
  589. package/dist/remote/provider.d.ts +802 -0
  590. package/dist/remote/provider.js +27 -0
  591. package/dist/remote/provider.js.map +1 -0
  592. package/dist/remote/providers/github/config.d.ts +84 -0
  593. package/dist/remote/providers/github/config.js +161 -0
  594. package/dist/remote/providers/github/config.js.map +1 -0
  595. package/dist/remote/providers/github/connector.d.ts +33 -0
  596. package/dist/remote/providers/github/connector.js +774 -0
  597. package/dist/remote/providers/github/connector.js.map +1 -0
  598. package/dist/remote/providers/github/edges.d.ts +29 -0
  599. package/dist/remote/providers/github/edges.js +56 -0
  600. package/dist/remote/providers/github/edges.js.map +1 -0
  601. package/dist/remote/providers/github/hierarchy.d.ts +21 -0
  602. package/dist/remote/providers/github/hierarchy.js +46 -0
  603. package/dist/remote/providers/github/hierarchy.js.map +1 -0
  604. package/dist/remote/providers/github/index.d.ts +26 -0
  605. package/dist/remote/providers/github/index.js +69 -0
  606. package/dist/remote/providers/github/index.js.map +1 -0
  607. package/dist/remote/providers/github/project-iteration.d.ts +71 -0
  608. package/dist/remote/providers/github/project-iteration.js +203 -0
  609. package/dist/remote/providers/github/project-iteration.js.map +1 -0
  610. package/dist/remote/providers/github/project-provision.d.ts +130 -0
  611. package/dist/remote/providers/github/project-provision.js +247 -0
  612. package/dist/remote/providers/github/project-provision.js.map +1 -0
  613. package/dist/remote/providers/github/project-status.d.ts +115 -0
  614. package/dist/remote/providers/github/project-status.js +317 -0
  615. package/dist/remote/providers/github/project-status.js.map +1 -0
  616. package/dist/remote/providers/github/projects.d.ts +181 -0
  617. package/dist/remote/providers/github/projects.js +481 -0
  618. package/dist/remote/providers/github/projects.js.map +1 -0
  619. package/dist/remote/providers/github/translator.d.ts +103 -0
  620. package/dist/remote/providers/github/translator.js +400 -0
  621. package/dist/remote/providers/github/translator.js.map +1 -0
  622. package/dist/remote/providers/jira/config.d.ts +96 -0
  623. package/dist/remote/providers/jira/config.js +200 -0
  624. package/dist/remote/providers/jira/config.js.map +1 -0
  625. package/dist/remote/providers/jira/connector.d.ts +42 -0
  626. package/dist/remote/providers/jira/connector.js +1688 -0
  627. package/dist/remote/providers/jira/connector.js.map +1 -0
  628. package/dist/remote/providers/jira/fields.d.ts +292 -0
  629. package/dist/remote/providers/jira/fields.js +463 -0
  630. package/dist/remote/providers/jira/fields.js.map +1 -0
  631. package/dist/remote/providers/jira/hierarchy.d.ts +28 -0
  632. package/dist/remote/providers/jira/hierarchy.js +60 -0
  633. package/dist/remote/providers/jira/hierarchy.js.map +1 -0
  634. package/dist/remote/providers/jira/index.d.ts +29 -0
  635. package/dist/remote/providers/jira/index.js +100 -0
  636. package/dist/remote/providers/jira/index.js.map +1 -0
  637. package/dist/remote/providers/jira/links.d.ts +41 -0
  638. package/dist/remote/providers/jira/links.js +102 -0
  639. package/dist/remote/providers/jira/links.js.map +1 -0
  640. package/dist/remote/providers/jira/sprints.d.ts +80 -0
  641. package/dist/remote/providers/jira/sprints.js +107 -0
  642. package/dist/remote/providers/jira/sprints.js.map +1 -0
  643. package/dist/remote/providers/jira/translator.d.ts +61 -0
  644. package/dist/remote/providers/jira/translator.js +382 -0
  645. package/dist/remote/providers/jira/translator.js.map +1 -0
  646. package/dist/remote/providers/jira/types.d.ts +112 -0
  647. package/dist/remote/providers/jira/types.js +160 -0
  648. package/dist/remote/providers/jira/types.js.map +1 -0
  649. package/dist/remote/providers/jira/vocabulary.d.ts +55 -0
  650. package/dist/remote/providers/jira/vocabulary.js +91 -0
  651. package/dist/remote/providers/jira/vocabulary.js.map +1 -0
  652. package/dist/remote/providers/jsonfile/config.d.ts +61 -0
  653. package/dist/remote/providers/jsonfile/config.js +83 -0
  654. package/dist/remote/providers/jsonfile/config.js.map +1 -0
  655. package/dist/remote/providers/jsonfile/connector.d.ts +34 -0
  656. package/dist/remote/providers/jsonfile/connector.js +251 -0
  657. package/dist/remote/providers/jsonfile/connector.js.map +1 -0
  658. package/dist/remote/providers/jsonfile/index.d.ts +38 -0
  659. package/dist/remote/providers/jsonfile/index.js +90 -0
  660. package/dist/remote/providers/jsonfile/index.js.map +1 -0
  661. package/dist/remote/providers/jsonfile/store.d.ts +59 -0
  662. package/dist/remote/providers/jsonfile/store.js +48 -0
  663. package/dist/remote/providers/jsonfile/store.js.map +1 -0
  664. package/dist/remote/providers/jsonfile/translator.d.ts +54 -0
  665. package/dist/remote/providers/jsonfile/translator.js +199 -0
  666. package/dist/remote/providers/jsonfile/translator.js.map +1 -0
  667. package/dist/remote/providers/linear/config.d.ts +83 -0
  668. package/dist/remote/providers/linear/config.js +140 -0
  669. package/dist/remote/providers/linear/config.js.map +1 -0
  670. package/dist/remote/providers/linear/connector.d.ts +36 -0
  671. package/dist/remote/providers/linear/connector.js +438 -0
  672. package/dist/remote/providers/linear/connector.js.map +1 -0
  673. package/dist/remote/providers/linear/estimate.d.ts +63 -0
  674. package/dist/remote/providers/linear/estimate.js +112 -0
  675. package/dist/remote/providers/linear/estimate.js.map +1 -0
  676. package/dist/remote/providers/linear/index.d.ts +31 -0
  677. package/dist/remote/providers/linear/index.js +75 -0
  678. package/dist/remote/providers/linear/index.js.map +1 -0
  679. package/dist/remote/providers/linear/labels.d.ts +51 -0
  680. package/dist/remote/providers/linear/labels.js +129 -0
  681. package/dist/remote/providers/linear/labels.js.map +1 -0
  682. package/dist/remote/providers/linear/states.d.ts +97 -0
  683. package/dist/remote/providers/linear/states.js +124 -0
  684. package/dist/remote/providers/linear/states.js.map +1 -0
  685. package/dist/remote/providers/linear/translator.d.ts +48 -0
  686. package/dist/remote/providers/linear/translator.js +343 -0
  687. package/dist/remote/providers/linear/translator.js.map +1 -0
  688. package/dist/remote/providers/linear/vocabulary.d.ts +27 -0
  689. package/dist/remote/providers/linear/vocabulary.js +42 -0
  690. package/dist/remote/providers/linear/vocabulary.js.map +1 -0
  691. package/dist/remote/provision.d.ts +45 -0
  692. package/dist/remote/provision.js +81 -0
  693. package/dist/remote/provision.js.map +1 -0
  694. package/dist/remote/pull.d.ts +52 -0
  695. package/dist/remote/pull.js +116 -0
  696. package/dist/remote/pull.js.map +1 -0
  697. package/dist/remote/readiness.d.ts +67 -0
  698. package/dist/remote/readiness.js +336 -0
  699. package/dist/remote/readiness.js.map +1 -0
  700. package/dist/remote/rebase.d.ts +157 -0
  701. package/dist/remote/rebase.js +255 -0
  702. package/dist/remote/rebase.js.map +1 -0
  703. package/dist/remote/reconcile.d.ts +115 -0
  704. package/dist/remote/reconcile.js +140 -0
  705. package/dist/remote/reconcile.js.map +1 -0
  706. package/dist/remote/redact.d.ts +70 -0
  707. package/dist/remote/redact.js +132 -0
  708. package/dist/remote/redact.js.map +1 -0
  709. package/dist/remote/registry.d.ts +32 -0
  710. package/dist/remote/registry.js +54 -0
  711. package/dist/remote/registry.js.map +1 -0
  712. package/dist/remote/remotes.d.ts +94 -0
  713. package/dist/remote/remotes.js +182 -0
  714. package/dist/remote/remotes.js.map +1 -0
  715. package/dist/remote/render.d.ts +147 -0
  716. package/dist/remote/render.js +683 -0
  717. package/dist/remote/render.js.map +1 -0
  718. package/dist/remote/report.d.ts +63 -0
  719. package/dist/remote/report.js +345 -0
  720. package/dist/remote/report.js.map +1 -0
  721. package/dist/remote/resolutions.d.ts +115 -0
  722. package/dist/remote/resolutions.js +217 -0
  723. package/dist/remote/resolutions.js.map +1 -0
  724. package/dist/remote/scaffold.d.ts +134 -0
  725. package/dist/remote/scaffold.js +370 -0
  726. package/dist/remote/scaffold.js.map +1 -0
  727. package/dist/remote/scope.d.ts +57 -0
  728. package/dist/remote/scope.js +91 -0
  729. package/dist/remote/scope.js.map +1 -0
  730. package/dist/remote/selection.d.ts +38 -0
  731. package/dist/remote/selection.js +50 -0
  732. package/dist/remote/selection.js.map +1 -0
  733. package/dist/remote/shape.d.ts +141 -0
  734. package/dist/remote/shape.js +220 -0
  735. package/dist/remote/shape.js.map +1 -0
  736. package/dist/remote/status.d.ts +104 -0
  737. package/dist/remote/status.js +238 -0
  738. package/dist/remote/status.js.map +1 -0
  739. package/dist/remote/sync.d.ts +182 -0
  740. package/dist/remote/sync.js +523 -0
  741. package/dist/remote/sync.js.map +1 -0
  742. package/dist/remote/transport/budget.d.ts +48 -0
  743. package/dist/remote/transport/budget.js +68 -0
  744. package/dist/remote/transport/budget.js.map +1 -0
  745. package/dist/remote/transport/connector.d.ts +115 -0
  746. package/dist/remote/transport/connector.js +21 -0
  747. package/dist/remote/transport/connector.js.map +1 -0
  748. package/dist/remote/transport/error.d.ts +88 -0
  749. package/dist/remote/transport/error.js +196 -0
  750. package/dist/remote/transport/error.js.map +1 -0
  751. package/dist/remote/transport/gh.d.ts +20 -0
  752. package/dist/remote/transport/gh.js +41 -0
  753. package/dist/remote/transport/gh.js.map +1 -0
  754. package/dist/remote/transport/graphql.d.ts +25 -0
  755. package/dist/remote/transport/graphql.js +81 -0
  756. package/dist/remote/transport/graphql.js.map +1 -0
  757. package/dist/remote/transport/http.d.ts +47 -0
  758. package/dist/remote/transport/http.js +195 -0
  759. package/dist/remote/transport/http.js.map +1 -0
  760. package/dist/remote/transport/index.d.ts +18 -0
  761. package/dist/remote/transport/index.js +19 -0
  762. package/dist/remote/transport/index.js.map +1 -0
  763. package/dist/remote/transport/process.d.ts +39 -0
  764. package/dist/remote/transport/process.js +121 -0
  765. package/dist/remote/transport/process.js.map +1 -0
  766. package/dist/remote/transport/rest.d.ts +22 -0
  767. package/dist/remote/transport/rest.js +57 -0
  768. package/dist/remote/transport/rest.js.map +1 -0
  769. package/dist/remote/transport/retry.d.ts +91 -0
  770. package/dist/remote/transport/retry.js +138 -0
  771. package/dist/remote/transport/retry.js.map +1 -0
  772. package/dist/remote/transport-error.d.ts +19 -0
  773. package/dist/remote/transport-error.js +22 -0
  774. package/dist/remote/transport-error.js.map +1 -0
  775. package/dist/remote/vocabulary.d.ts +126 -0
  776. package/dist/remote/vocabulary.js +57 -0
  777. package/dist/remote/vocabulary.js.map +1 -0
  778. package/dist/runner/config.d.ts +7 -0
  779. package/dist/runner/config.js +61 -0
  780. package/dist/runner/config.js.map +1 -0
  781. package/dist/runner/git.d.ts +19 -0
  782. package/dist/runner/git.js +26 -0
  783. package/dist/runner/git.js.map +1 -0
  784. package/dist/runner/index.d.ts +20 -0
  785. package/dist/runner/index.js +21 -0
  786. package/dist/runner/index.js.map +1 -0
  787. package/dist/runner/loop.d.ts +46 -0
  788. package/dist/runner/loop.js +243 -0
  789. package/dist/runner/loop.js.map +1 -0
  790. package/dist/runner/pi.d.ts +39 -0
  791. package/dist/runner/pi.js +276 -0
  792. package/dist/runner/pi.js.map +1 -0
  793. package/dist/runner/shell.d.ts +44 -0
  794. package/dist/runner/shell.js +174 -0
  795. package/dist/runner/shell.js.map +1 -0
  796. package/dist/runner/stats.d.ts +19 -0
  797. package/dist/runner/stats.js +58 -0
  798. package/dist/runner/stats.js.map +1 -0
  799. package/dist/runner/types.d.ts +218 -0
  800. package/dist/runner/types.js +37 -0
  801. package/dist/runner/types.js.map +1 -0
  802. package/dist/server/git.d.ts +8 -0
  803. package/dist/server/git.js +50 -0
  804. package/dist/server/git.js.map +1 -0
  805. package/dist/server/http/respond.d.ts +13 -0
  806. package/dist/server/http/respond.js +59 -0
  807. package/dist/server/http/respond.js.map +1 -0
  808. package/dist/server/http/router.d.ts +27 -0
  809. package/dist/server/http/router.js +48 -0
  810. package/dist/server/http/router.js.map +1 -0
  811. package/dist/server/http/static.d.ts +14 -0
  812. package/dist/server/http/static.js +55 -0
  813. package/dist/server/http/static.js.map +1 -0
  814. package/dist/server/index.d.ts +58 -0
  815. package/dist/server/index.js +124 -0
  816. package/dist/server/index.js.map +1 -0
  817. package/dist/server/routes/board.d.ts +8 -0
  818. package/dist/server/routes/board.js +19 -0
  819. package/dist/server/routes/board.js.map +1 -0
  820. package/dist/server/routes/comments.d.ts +13 -0
  821. package/dist/server/routes/comments.js +36 -0
  822. package/dist/server/routes/comments.js.map +1 -0
  823. package/dist/server/routes/flags.d.ts +16 -0
  824. package/dist/server/routes/flags.js +37 -0
  825. package/dist/server/routes/flags.js.map +1 -0
  826. package/dist/server/routes/git.d.ts +13 -0
  827. package/dist/server/routes/git.js +84 -0
  828. package/dist/server/routes/git.js.map +1 -0
  829. package/dist/server/routes/remotes.d.ts +36 -0
  830. package/dist/server/routes/remotes.js +749 -0
  831. package/dist/server/routes/remotes.js.map +1 -0
  832. package/dist/server/routes/views.d.ts +10 -0
  833. package/dist/server/routes/views.js +63 -0
  834. package/dist/server/routes/views.js.map +1 -0
  835. package/dist/server/views/schema.d.ts +2 -0
  836. package/dist/server/views/schema.js +121 -0
  837. package/dist/server/views/schema.js.map +1 -0
  838. package/dist/server/views/store.d.ts +17 -0
  839. package/dist/server/views/store.js +67 -0
  840. package/dist/server/views/store.js.map +1 -0
  841. package/dist/shared/adf.d.ts +83 -0
  842. package/dist/shared/adf.js +795 -0
  843. package/dist/shared/adf.js.map +1 -0
  844. package/dist/shared/blocking.d.ts +130 -0
  845. package/dist/shared/blocking.js +179 -0
  846. package/dist/shared/blocking.js.map +1 -0
  847. package/dist/shared/changes.d.ts +100 -0
  848. package/dist/shared/changes.js +112 -0
  849. package/dist/shared/changes.js.map +1 -0
  850. package/dist/shared/cohesion.d.ts +75 -0
  851. package/dist/shared/cohesion.js +132 -0
  852. package/dist/shared/cohesion.js.map +1 -0
  853. package/dist/shared/dependency-rollup.d.ts +91 -0
  854. package/dist/shared/dependency-rollup.js +132 -0
  855. package/dist/shared/dependency-rollup.js.map +1 -0
  856. package/dist/shared/errors.d.ts +23 -0
  857. package/dist/shared/errors.js +24 -0
  858. package/dist/shared/errors.js.map +1 -0
  859. package/dist/shared/flag-rollup.d.ts +88 -0
  860. package/dist/shared/flag-rollup.js +119 -0
  861. package/dist/shared/flag-rollup.js.map +1 -0
  862. package/dist/shared/git-sync.d.ts +90 -0
  863. package/dist/shared/git-sync.js +9 -0
  864. package/dist/shared/git-sync.js.map +1 -0
  865. package/dist/shared/index.d.ts +40 -0
  866. package/dist/shared/index.js +41 -0
  867. package/dist/shared/index.js.map +1 -0
  868. package/dist/shared/model.d.ts +218 -0
  869. package/dist/shared/model.js +95 -0
  870. package/dist/shared/model.js.map +1 -0
  871. package/dist/shared/period-query.d.ts +21 -0
  872. package/dist/shared/period-query.js +26 -0
  873. package/dist/shared/period-query.js.map +1 -0
  874. package/dist/shared/period-stance.d.ts +45 -0
  875. package/dist/shared/period-stance.js +50 -0
  876. package/dist/shared/period-stance.js.map +1 -0
  877. package/dist/shared/plans/breakdown.d.ts +66 -0
  878. package/dist/shared/plans/breakdown.js +186 -0
  879. package/dist/shared/plans/breakdown.js.map +1 -0
  880. package/dist/shared/plans/index.d.ts +21 -0
  881. package/dist/shared/plans/index.js +22 -0
  882. package/dist/shared/plans/index.js.map +1 -0
  883. package/dist/shared/plans/instantiate.d.ts +61 -0
  884. package/dist/shared/plans/instantiate.js +184 -0
  885. package/dist/shared/plans/instantiate.js.map +1 -0
  886. package/dist/shared/plans/reading.d.ts +79 -0
  887. package/dist/shared/plans/reading.js +149 -0
  888. package/dist/shared/plans/reading.js.map +1 -0
  889. package/dist/shared/plans/reparent.d.ts +54 -0
  890. package/dist/shared/plans/reparent.js +217 -0
  891. package/dist/shared/plans/reparent.js.map +1 -0
  892. package/dist/shared/plans/timeline.d.ts +93 -0
  893. package/dist/shared/plans/timeline.js +224 -0
  894. package/dist/shared/plans/timeline.js.map +1 -0
  895. package/dist/shared/plans/upstream.d.ts +67 -0
  896. package/dist/shared/plans/upstream.js +73 -0
  897. package/dist/shared/plans/upstream.js.map +1 -0
  898. package/dist/shared/remote-api.d.ts +413 -0
  899. package/dist/shared/remote-api.js +11 -0
  900. package/dist/shared/remote-api.js.map +1 -0
  901. package/dist/shared/remote-coverage.d.ts +120 -0
  902. package/dist/shared/remote-coverage.js +98 -0
  903. package/dist/shared/remote-coverage.js.map +1 -0
  904. package/dist/shared/remote-readiness.d.ts +162 -0
  905. package/dist/shared/remote-readiness.js +49 -0
  906. package/dist/shared/remote-readiness.js.map +1 -0
  907. package/dist/shared/remote-status.d.ts +268 -0
  908. package/dist/shared/remote-status.js +79 -0
  909. package/dist/shared/remote-status.js.map +1 -0
  910. package/dist/shared/rollup.d.ts +90 -0
  911. package/dist/shared/rollup.js +119 -0
  912. package/dist/shared/rollup.js.map +1 -0
  913. package/dist/shared/static.d.ts +65 -0
  914. package/dist/shared/static.js +107 -0
  915. package/dist/shared/static.js.map +1 -0
  916. package/dist/shared/template-params.d.ts +80 -0
  917. package/dist/shared/template-params.js +141 -0
  918. package/dist/shared/template-params.js.map +1 -0
  919. package/dist/shared/view.d.ts +105 -0
  920. package/dist/shared/view.js +44 -0
  921. package/dist/shared/view.js.map +1 -0
  922. package/dist/shared/work-unit.d.ts +34 -0
  923. package/dist/shared/work-unit.js +47 -0
  924. package/dist/shared/work-unit.js.map +1 -0
  925. package/dist/sync/apply.d.ts +21 -0
  926. package/dist/sync/apply.js +149 -0
  927. package/dist/sync/apply.js.map +1 -0
  928. package/dist/sync/dto.d.ts +9 -0
  929. package/dist/sync/dto.js +162 -0
  930. package/dist/sync/dto.js.map +1 -0
  931. package/dist/sync/index.d.ts +24 -0
  932. package/dist/sync/index.js +25 -0
  933. package/dist/sync/index.js.map +1 -0
  934. package/dist/sync/patch.d.ts +13 -0
  935. package/dist/sync/patch.js +212 -0
  936. package/dist/sync/patch.js.map +1 -0
  937. package/dist/sync/session.d.ts +31 -0
  938. package/dist/sync/session.js +55 -0
  939. package/dist/sync/session.js.map +1 -0
  940. package/dist/sync/static.d.ts +11 -0
  941. package/dist/sync/static.js +33 -0
  942. package/dist/sync/static.js.map +1 -0
  943. package/package.json +95 -4
  944. package/templates/blank.yml +71 -0
  945. package/templates/context/bug.md +107 -0
  946. package/templates/context/default.md +119 -0
  947. package/templates/context/epic.md +81 -0
  948. package/templates/context/feature.md +91 -0
  949. package/templates/context/research.md +87 -0
  950. package/templates/context/review.md +81 -0
  951. package/templates/context/story.md +94 -0
  952. package/templates/context/sub_task.md +108 -0
  953. package/templates/context/task.md +86 -0
  954. package/templates/context/test.md +73 -0
  955. package/templates/context/user_story.md +147 -0
  956. package/templates/kanban.yml +226 -0
  957. package/templates/scrum.yml +567 -0
  958. package/web/dist/assets/index-D0j8OnHq.js +35 -0
  959. package/web/dist/assets/index-DFL7v8aP.css +1 -0
  960. package/web/dist/index.html +13 -0
  961. package/web/dist-viewer/assets/index-Bcns6OuC.css +1 -0
  962. package/web/dist-viewer/assets/index-vVXzeiFo.js +7 -0
  963. package/web/dist-viewer/index.html +14 -0
@@ -0,0 +1,45 @@
1
+ # The light-plan hcm bundle — which assets it carries, and where each lands.
2
+ #
3
+ # `lpm hcm init` renders every file in this folder into an hcm bundle and
4
+ # registers them all with `hcm registry add`. A bundle is never a second copy
5
+ # of the agents and skills: it is rendered from `assets/` each time, the way
6
+ # `lpm agent` renders a harness layout, so edit the asset and run the command
7
+ # again. See docs/hcm.md.
8
+ #
9
+ # Written by the code, not here, because they are not choices:
10
+ # version the package's own version, so the two cannot drift
11
+ # author, homepage from package.json
12
+ # mcp/<mcp>.json how to start `lpm mcp` on this machine
13
+ # context/<context>.md the pointer block `lpm agent` writes for Copilot,
14
+ # listing what every flavor installs
15
+
16
+ name: light-plan
17
+ description: >-
18
+ Plan and work a light-plan board (.lpm): the lpm skills, the planner and
19
+ developer agents, and the light-plan MCP server. Needs the lpm CLI.
20
+ tags: [light-plan, lpm, planning, issue-tracker, mcp]
21
+
22
+ # The roles `lpm agent --type` installs, under hcm's name for the same idea.
23
+ # `hcm install light-plan --flavor developer` is `lpm agent --type developer`.
24
+ flavors:
25
+ developer: >-
26
+ Pick work up off the board, implement it and leave a reviewable trail.
27
+ pm: >-
28
+ Write epics, features and stories, sequence them and set the board up.
29
+
30
+ context: 10-light-plan
31
+ mcp: light-plan
32
+
33
+ files:
34
+ - from: agents/*.md
35
+ to: "{root}/subagents/{basename}"
36
+ frontmatter:
37
+ description: "{description}"
38
+ tools: "{tools}"
39
+ flavors: "{roles}"
40
+
41
+ - from: skills/*.md
42
+ to: "{root}/skills/{name}/SKILL.md"
43
+ frontmatter:
44
+ description: "{description}"
45
+ flavors: "{roles}"
@@ -0,0 +1,243 @@
1
+ ---
2
+ name: lpm-board-health
3
+ description: Diagnose and repair a light-plan board, and publish it. Load this for `lpm check` / `check_board` failures, `lpm check --fix`, adopting hand-made or half-written folders, dependency cycles, duplicate or missing ids, "nobody is being offered work", pools nobody covers, work that vanished from a queue, merge conflicts in `.lpm`, or exporting the board as a static site with `lpm export`.
4
+ roles:
5
+ - developer
6
+ - pm
7
+ ---
8
+
9
+ # Keeping a light-plan board healthy
10
+
11
+ Load the `lpm` skill first for the tool map.
12
+
13
+ ## `lpm check` is the gate
14
+
15
+ ```bash
16
+ lpm check # read-only; exits 1 while errors remain
17
+ lpm check --fix # repairs exactly what it marks fixable
18
+ lpm check --strict # also exits non-zero on warnings
19
+ ```
20
+
21
+ ```
22
+ check_board # the same report as JSON, with error/warning counts
23
+ ```
24
+
25
+ The exit code is the contract: `lpm check` drops straight into CI or a
26
+ pre-commit hook. **`fixable: true` is also a contract** — exactly the problems
27
+ `check` marks fixable are what `--fix` repairs, and anything ambiguous is
28
+ reported and left alone.
29
+
30
+ | `--fix` repairs | It refuses to guess at |
31
+ | --- | --- |
32
+ | missing `id`, `type`, `title`, `status`, `capacity`, `created`, `author` | a duplicate id |
33
+ | attributes a type declares but a document lacks | an unresolvable or ambiguous type |
34
+ | folder names that are not the document's id | an attribute value of the wrong type |
35
+ | duplicated entries in link and coverage lists | a missing period date |
36
+ | an id counter that drifted from what is on disk | an assignee who is not on the roster |
37
+ | a stale or missing `.lpm/INDEX.md` | |
38
+ | a container whose status is out of step with the work inside it | |
39
+
40
+ Run `lpm check` before you commit, after any hand-edit, and after every merge.
41
+
42
+ ## Loading is deliberately forgiving
43
+
44
+ You can create a folder and an `_issue.md` by hand — even one containing nothing
45
+ but a `# heading` — and `lpm check --fix` will adopt it: allocate an id from the
46
+ right counter, infer the type from its depth when that level has only one type,
47
+ take the title from the heading or the folder name, set the default status,
48
+ default a resource's capacity to 1, fill in `created` (from the file's first
49
+ commit, falling back to its mtime) and `author` (from `git config`), add the
50
+ attributes its type declares, rename the folder to the id, and rewrite
51
+ `INDEX.md`.
52
+
53
+ This is the **repair path**, not a workflow. Prefer `lpm new` / `create_document`,
54
+ which validate up front.
55
+
56
+ Two things worth knowing about what loading tolerates:
57
+
58
+ - A document with no id gets an `#unassigned:<dir>` placeholder until `--fix`
59
+ allocates one.
60
+ - Frontmatter keys the config does not declare are **preserved, never dropped** —
61
+ they are reported as extras, not deleted.
62
+ - `related_files` is **never checked against the filesystem**. An entry naming a
63
+ file that does not exist is not a problem to fix; `check` only reports a
64
+ duplicate, and `--fix` dedupes it.
65
+ - A `flag` value that is not `blocked`, `paused` or `help` is an error and is
66
+ **kept, not dropped** — a flag nobody recognises still means somebody wanted
67
+ attention. Fix it by hand, or clear it with `lpm flag clear`.
68
+
69
+ ## "Nobody is being offered work"
70
+
71
+ The most common board problem, and it is almost never a bug. Work off this list
72
+ in order:
73
+
74
+ 1. **Is it a work unit?** Containers are never offered — an issue with children
75
+ never reaches anyone, however it is assigned, *unless* its type is declared
76
+ `atomic` in the config, which makes it a unit that is taken whole. Anything
77
+ nested inside such a unit is never offered either.
78
+ `list_documents { workUnitsOnly: true }` is the list that actually reaches
79
+ people.
80
+ 2. **Is its status terminal or already active?** Active work is not re-offered;
81
+ that is what stops two people taking it.
82
+ 3. **Is it assigned to anyone?** Unassigned work reaches people only via
83
+ `includeUnassigned` / `--unassigned`. Check `team_load`'s `unassigned` row.
84
+ 4. **Is it in a pool nobody covers?** `team_load` reports these as `uncovered`.
85
+ Fix with `lpm link <person> --covers <pool>`.
86
+ 5. **Is something unfinished blocking it?** `get_document { id }` → `blockedBy`.
87
+ `lpm task next` prints the blocked queue when nothing is ready.
88
+ 6. **Does the person have an identity?** `lpm me`; `board_overview` →
89
+ `currentUser`. A null user routes nothing.
90
+ 7. **Is a profile narrowing the queue?** `lpm profile` shows the scope in force
91
+ and `offers N issues of M`. `board_overview` returns `scope` and
92
+ `scopeWarnings`.
93
+
94
+ Simulate rather than assume:
95
+
96
+ ```
97
+ next_tasks { assignee: "RS-1" } # exactly what that person will be offered
98
+ ```
99
+
100
+ ### The other half of the question: work that *is* moving and has stopped
101
+
102
+ `next_tasks` answers "what could start". It does not answer "what started and
103
+ went nowhere", and a team can look busy while three people are all waiting on
104
+ somebody. That is what flags are for:
105
+
106
+ ```
107
+ flagged_issues # everything stopped, board-wide, unfiltered
108
+ ```
109
+ ```bash
110
+ lpm flag list
111
+ lpm comment <id> --list # the reason; a flag always carries one
112
+ ```
113
+
114
+ Flagged issues keep their in-progress status and their assignee — they are held,
115
+ not free — and are drawn in red on the canvas, including a count on any node they
116
+ are folded inside. `flagged_issues` is deliberately **not** scoped by a profile:
117
+ a flag is addressed to whoever runs the plan, and hiding one because it sat
118
+ outside the reader's slice would defeat it.
119
+
120
+ Clearing is a deliberate act by whoever answered it
121
+ (`lpm flag clear <id> --comment "..."`), and `lpm check` warns about a flag left
122
+ on a finished issue. Finishing an issue clears its flag automatically, so that
123
+ warning means somebody edited a file by hand.
124
+
125
+ ## Scope surprises
126
+
127
+ If a profile is involved:
128
+
129
+ - **A stale `under` fails closed.** `under: [LP-404]` on a board without LP-404
130
+ offers *nothing*, and warns. That is deliberate — silently widening to the whole
131
+ board is the failure nobody would notice.
132
+ - **Unknown keys are errors.** `excludes:` is refused rather than ignored.
133
+ - **A profile that does not parse is reported and skipped**, and the board is
134
+ unscoped. `lpm profile` exits 1 in that state; over MCP it shows in
135
+ `scopeWarnings`.
136
+ - Scope never hides work already in flight — `task current` and `current_tasks`
137
+ ignore it.
138
+
139
+ Full reference: `docs/profiles.md`.
140
+
141
+ ## Dependency cycles
142
+
143
+ `link_issues` and `lpm link` refuse a dependency that would close a cycle, so
144
+ cycles arrive only by hand-editing or by a merge. `lpm check` catches them and
145
+ will not auto-fix them — breaking a cycle is a judgement about which edge is
146
+ wrong.
147
+
148
+ ```bash
149
+ lpm check # names the cycle
150
+ lpm link LP-42 --depends-on LP-40 --remove # drop the edge that should not exist
151
+ ```
152
+
153
+ Only forward edges are stored (`depends_on`, `covers`); the inverses are derived
154
+ at load. Never try to edit an inverse — there is nothing to edit.
155
+
156
+ ## Merge conflicts
157
+
158
+ `.lpm` is its own git repository nested in the project. Conflicts are ordinary
159
+ markdown conflicts in a document or its `_comments.md`. Resolve them by hand, then:
160
+
161
+ ```bash
162
+ lpm check --fix # resyncs id counters, dedupes link lists, rolls statuses up
163
+ lpm check # confirm nothing is left
164
+ ```
165
+
166
+ A merge that takes one side of a status is the usual way a container ends up
167
+ disagreeing with the work inside it — a feature back in `backlog` with every
168
+ story done, or closed over a story somebody reopened. `check` reports each one
169
+ and `--fix` rolls it up; nothing else has to be edited by hand.
170
+
171
+ **Ids are never reused**: `allocateIds` skips any id already present on disk, so a
172
+ counter mangled by a merge cannot produce a duplicate — `--fix` just resyncs it.
173
+
174
+ ## Deleting safely
175
+
176
+ ```
177
+ delete_document { id: "LP-20", dryRun: true } # list what would go
178
+ delete_document { id: "LP-20", recursive: true }
179
+ ```
180
+
181
+ ```bash
182
+ lpm rm LP-20 --dry-run
183
+ lpm rm LP-20 -r
184
+ ```
185
+
186
+ Deleting requires `recursive` when the document has children, because that is
187
+ rarely what a typo means. Everything that referenced the deleted subtree is
188
+ rewritten, so the board is left valid — the reply's `rewritten` / `detached` list
189
+ tells you what was touched.
190
+
191
+ ## Looking at it
192
+
193
+ ```bash
194
+ lpm ui # local editor at 127.0.0.1:4571
195
+ lpm ui --port 0 # pick a free port
196
+ lpm ui --no-open # do not launch a browser
197
+ lpm ui --api-only # serve the API only (pair with `npm run dev:web`)
198
+ ```
199
+
200
+ The server is local-only and edits this checkout's `.lpm`. **Editing is queued**:
201
+ actions update a working copy and a pending list, and nothing is written until
202
+ Push. A push is **partial, not atomic** — what lands, lands; failures stay
203
+ pending and are shown. If a push half-fails, fix the reported cause and push
204
+ again; earlier changes are already on disk.
205
+
206
+ ## Publishing
207
+
208
+ ```bash
209
+ lpm export # refresh .lpm/board.json
210
+ lpm export --site docs # a full static site in docs/, ready for Pages
211
+ lpm export --site docs --workflow # ...and an Actions workflow that keeps it current
212
+ lpm export --pretty # readable diffs, bigger file
213
+ ```
214
+
215
+ `--site docs` writes `docs/index.html`, its assets, `docs/board.json` and a
216
+ `.nojekyll`; commit it and point **Settings → Pages → Source: `/docs`**.
217
+ `--workflow` instead writes `.github/workflows/lpm-board.yml` and wants **Source:
218
+ GitHub Actions**.
219
+
220
+ Two things to keep straight:
221
+
222
+ - **An export is the board as committed.** A view's queued-but-unpushed changes
223
+ are somebody's draft and never travel; publishing them would assert something
224
+ untrue.
225
+ - **`board.json` is generated**, so it goes stale like any build output. Let the
226
+ workflow rebuild it, or re-run `lpm export` before committing.
227
+
228
+ The published viewer is read-only by construction and renders bodies as plain
229
+ text, never as markup — it will happily read a board from a URL a stranger
230
+ supplied.
231
+
232
+ ## Routine maintenance
233
+
234
+ ```bash
235
+ lpm check --strict # errors and warnings
236
+ lpm team # uncovered pools, unowned work, load vs capacity
237
+ lpm task next --unassigned # is anything ready that nobody owns?
238
+ lpm export # refresh the published file
239
+ cd .lpm && git add -A && git commit -m "..." && git push
240
+ ```
241
+
242
+ A board that passes `check --strict`, has no `uncovered` pools and offers each
243
+ person at least one thing tomorrow is healthy. Everything else is planning.
@@ -0,0 +1,354 @@
1
+ ---
2
+ name: lpm-board-setup
3
+ description: Create and configure a light-plan board, and set up the people and agents who will work it. Load this for `lpm init`, editing `.lpm/config.yml` (types, hierarchy, statuses, attributes, priority/effort), adding sprints or increments, building the team roster and pools, writing developer profiles for scoped routing, wiring the MCP server into an agent host with `lpm mcp setup`, or questions about the git strategy for `.lpm`.
4
+ roles:
5
+ - pm
6
+ ---
7
+
8
+ # Setting up a light-plan board
9
+
10
+ Load the `lpm` skill first for the tool map and the hard rules.
11
+
12
+ ## Creating the board
13
+
14
+ ```bash
15
+ lpm init # scrum template, prefix from the folder name
16
+ lpm init --template kanban --prefix ACME
17
+ lpm init --template blank # types you define yourself
18
+ lpm init --template ./our-config.yml # your own config as the starting point
19
+ lpm init --no-git # skip the nested git repo
20
+ ```
21
+
22
+ Three built-ins ship: **scrum** (program > epic > feature > story/bug/test/review/
23
+ research > sub-task, with sprints and increments and a roster), **kanban**
24
+ (flatter), **blank** (minimal). `lpm init` validates the config before writing
25
+ anything.
26
+
27
+ **`.lpm` becomes its own git repository** nested inside the project and added to
28
+ the surrounding repo's `.gitignore` — deliberately not a submodule. The board has
29
+ its own history and can have its own remote, so plan changes and code changes stay
30
+ separate:
31
+
32
+ ```bash
33
+ cd .lpm && git remote add origin git@github.com:acme/plan.git && git push -u origin main
34
+ ```
35
+
36
+ Commit the board like anything else. Conflicts are ordinary markdown conflicts.
37
+
38
+ ## `.lpm/config.yml`
39
+
40
+ This one file is the board's whole vocabulary. `lpm check` validates it and the
41
+ board against it.
42
+
43
+ ```yaml
44
+ version: 1
45
+ key_prefix: LP # issue ids: LP-1, LP-2, …
46
+
47
+ statuses: # in board order
48
+ - id: backlog
49
+ label: Backlog
50
+ - id: in_progress
51
+ label: In Progress
52
+ active: true # `task start` moves here; `task current` lists these
53
+ - id: done
54
+ label: Done
55
+ terminal: true # `task done` moves here, and a parent moves here
56
+ # when everything inside it has: a container's
57
+ # status is derived from its contents
58
+
59
+ default_status: backlog
60
+
61
+ priority_attribute: priority # must be an enum, most important value first
62
+ effort_attribute: story_points # must be an int or a float
63
+
64
+ hierarchy: # folder depth IS this list
65
+ - program
66
+ - epic
67
+ - feature
68
+ - [user_story, bug, test, research] # same line = same level
69
+ - sub_task
70
+
71
+ issue_types:
72
+ user_story:
73
+ label: User Story
74
+ attributes:
75
+ priority:
76
+ type: enum
77
+ values: [critical, high, medium, low]
78
+ story_points:
79
+ type: int
80
+ body: |
81
+ ## Context
82
+
83
+ ## Acceptance Criteria
84
+
85
+ - [ ]
86
+ ```
87
+
88
+ ### The rules that bite
89
+
90
+ - **`hierarchy` is the only parenting truth.** A type's index in the list *is*
91
+ the folder depth it must sit at. Creating a `user_story` under an `epic` is
92
+ rejected. Types on the same line share a level.
93
+ - **Every declared type must appear in the hierarchy, and vice versa.** A type
94
+ declared but not placed is a config error.
95
+ - **Type names are unique across all three namespaces**, because `lpm new <type>`
96
+ resolves the collection from the type name alone.
97
+ - **Prefixes must differ** (`key_prefix`, `period_prefix`, `resource_prefix`) so
98
+ ids never collide.
99
+ - **`priority_attribute` and `effort_attribute` are the only user-defined
100
+ attributes the engine reads.** Both optional; both validated at parse time.
101
+ Priority ranks `task next`; effort feeds `lpm team` and `split --split-effort`.
102
+ - **A type's `body` is its template.** Creating a document without a body
103
+ pre-populates it — this is how you make every story on the board read alike.
104
+ - Attribute types: `string`, `text`, `int`, `float`, `bool`, `date`, `enum`,
105
+ `array`. Any may add `required: true` and `default:`. An `enum` needs `values`.
106
+ - **Reserved field names cannot be attributes** (`id`, `type`, `title`, `status`,
107
+ `assignee`, `period`, `flag`, `depends_on`, `relates_to`, `related_files`,
108
+ `created`, `updated`, `author`, and the period/resource
109
+ equivalents). The config refuses the shadow. In particular you do not need an
110
+ attribute for "which files is this about" (`related_files`) or for "is this
111
+ stuck" (`flag`) — both are built in.
112
+
113
+ After any config edit:
114
+
115
+ ```bash
116
+ lpm check # and `--fix` for anything it marks fixable
117
+ ```
118
+
119
+ ## Context templates: what a developer is told
120
+
121
+ `lpm instructions <id>` / `get_instructions { id }` prints the **working brief**
122
+ for an issue — the titles and bodies of its whole ancestry, then the issue, its
123
+ breakdown, its blockers, the research it rests on and its work log. It is the
124
+ call a developer or an agent makes before writing any code, so the layout is a
125
+ board-level decision, like the statuses.
126
+
127
+ Layouts live in `.lpm/templates/context/<issue type>.md`, with `default.md`
128
+ behind them and a built-in layout behind that. `lpm init` writes starters for the
129
+ types the chosen config declares; on an existing board:
130
+
131
+ ```bash
132
+ lpm instructions --init # write the starters (never overwrites)
133
+ lpm instructions --init --force # replace them with the shipped ones
134
+ lpm instructions --list # which layout each type resolves to
135
+ lpm instructions LP-42 # see what a developer will actually be handed
136
+ ```
137
+
138
+ They are [Eta](https://eta.js.org) templates — EJS syntax, ordinary JavaScript
139
+ between the tags:
140
+
141
+ ```markdown
142
+ # <%= issue.id %> — <%= issue.title %>
143
+
144
+ <% if (epic) { %>
145
+ ## Epic: <%= epic.title %>
146
+
147
+ <%= heading(epic.body, 3) %>
148
+
149
+ <% } %>
150
+ ## The story
151
+
152
+ <%= heading(issue.body, 3) %>
153
+
154
+ <% for (const task of children) { %>
155
+ - <%= task.id %> <%= task.title %> — <%= task.status_label %>
156
+ <% } %>
157
+ ```
158
+
159
+ Every issue type the board declares is available by name (`epic`, `feature`, …)
160
+ and resolves to the **nearest ancestor of that type**, so one template can say
161
+ "this story's epic". `heading(n)` re-levels a body so it nests under the heading
162
+ above it. `lpm instructions --help` lists every value and helper.
163
+
164
+ Four things to keep true when editing them:
165
+
166
+ - **The issue is `issue`, never `this`.** `this` inside a template is the engine,
167
+ not the document — and writing it is refused.
168
+ - **Guard anything optional.** `.length` for lists (an empty array is truthy in
169
+ JavaScript), the bare name for a document that may be absent. A board where
170
+ some stories have no epic still has to produce a brief.
171
+ - **Templates are not board truth.** They live under `.lpm/templates`, `lpm check`
172
+ does not know they exist, and no template can make a board invalid. A broken
173
+ one is a rendering error on one command, not a broken board.
174
+ - **They are, however, code.** See below.
175
+
176
+ ### Context templates are executable — say so when you set a board up
177
+
178
+ Eta compiles a template into a JavaScript function and runs it. A `.lpm` folder
179
+ arrives over `git pull` from whoever wrote it, so **rendering somebody else's
180
+ board can run somebody else's JavaScript, as the person at the keyboard.**
181
+
182
+ light-plan reads every template before compiling it and refuses the known
183
+ escapes — `process`, `require`, `this`, `import()`, a property reached by a
184
+ computed key, Eta's file-reading `include`. Run the check over a whole board:
185
+
186
+ ```bash
187
+ lpm instructions --audit # exits 1 on a finding, so it belongs in CI
188
+ ```
189
+
190
+ When you set up a board, or bring in one you did not write, tell the humans:
191
+ this refuses the known escapes, it **cannot make an untrusted template safe**,
192
+ and a `.lpm/templates/context/` from a stranger deserves the same reading as a
193
+ `postinstall` script. `--unsafe` overrides the refusal and is for a template you
194
+ wrote and meant; the MCP tool has no equivalent, so an agent can never opt out.
195
+
196
+ ## The timeline (optional)
197
+
198
+ Periods answer "when". The namespace is all-or-nothing — declare
199
+ `period_prefix`, `period_types` and `period_hierarchy`, or none of them and
200
+ `timeline/` never exists.
201
+
202
+ ```yaml
203
+ period_prefix: TL
204
+ period_hierarchy: [increment, sprint]
205
+ period_types:
206
+ increment: { label: Product Increment }
207
+ sprint: { label: Sprint }
208
+ ```
209
+
210
+ ```bash
211
+ lpm new increment -t "PI-1" --starts 2026-08-03 --ends 2026-10-24
212
+ lpm new sprint -t "Sprint 12" -p TL-1 --starts 2026-08-17 --ends 2026-08-28
213
+ lpm move LP-42 --period TL-8
214
+ lpm move LP-42 --period none
215
+ ```
216
+
217
+ Dates are `YYYY-MM-DD` and both are required on a period. Nothing in light-plan
218
+ ever works a date out for you: it learns dates only from period documents, and it
219
+ never levels or schedules on your behalf. A period containing today is "now", and
220
+ when periods nest only the innermost running one counts.
221
+
222
+ ## The roster (optional)
223
+
224
+ Same all-or-nothing rule. Two kinds of resource, and the distinction is
225
+ load-bearing:
226
+
227
+ ```yaml
228
+ resource_prefix: RS
229
+ resource_hierarchy: [person, role]
230
+ resource_types:
231
+ person: { label: Person }
232
+ role: { label: Role, generic: true } # a pool, not a human
233
+ ```
234
+
235
+ `generic: true` belongs to the **type**, never to a document, and only resource
236
+ types may set it.
237
+
238
+ ```bash
239
+ lpm new person -t "Alice Smith" --set email=alice@example.com
240
+ lpm new role -t "Web developer" --capacity 3 # a pool of three
241
+ lpm link RS-1 --covers RS-4 # Alice can take web-pool work
242
+ lpm team # who is carrying what
243
+ ```
244
+
245
+ - **A named person** is one human's queue.
246
+ - **A generic pool** is a role. Work parked there is offered to everyone covering
247
+ it, and the first to ask gets it.
248
+ - **Coverage is one hop and does not chain.** A pool covering a pool buys nothing.
249
+ - **A pool nobody covers is a dead end** — `lpm team` flags it, and work in it can
250
+ never be picked up.
251
+
252
+ Capacity is full-time equivalents: `1` a person, `0.5` part-time, `3` a pool of
253
+ three. `lpm team` reports demand against it and **never levels it** — the
254
+ judgement stays yours.
255
+
256
+ ## Setting up a developer
257
+
258
+ ```bash
259
+ lpm me "Alice Smith" # per checkout, stored in .lpm/local.json (git-ignored)
260
+ LPM_USER=RS-2 lpm task next # override for one command
261
+ ```
262
+
263
+ For a distributed team, give each developer a **profile** — one YAML file naming
264
+ who they are and which part of the board they are offered:
265
+
266
+ ```yaml
267
+ # profiles/alice.yml
268
+ user: Alice Smith
269
+ scope:
270
+ under: [LP-2] # only work at or below these documents
271
+ exclude: [LP-9] # never these, nor anything below them
272
+ types: [user_story, bug]
273
+ periods: [TL-8] # or a period below one of these
274
+ ```
275
+
276
+ ```bash
277
+ lpm profile --init ./profiles/alice.yml --user "Alice Smith" # write a starter
278
+ lpm profile ./profiles/alice.yml # adopt one
279
+ lpm profile # what is in force
280
+ lpm profile --clear
281
+ LPM_PROFILE=./profiles/bob.yml lpm task next # one shell
282
+ ```
283
+
284
+ Every scope key narrows; combining them is an AND; `exclude` beats `under`; a
285
+ period folds its child periods in. Unknown keys are an error, and a stale `under`
286
+ offers nothing rather than silently widening.
287
+
288
+ **Scope decides what is offered, never what is reachable.** It filters `task
289
+ next`, bare `task start`, `next_tasks` and `list_documents` — not `get_document`,
290
+ `lpm open`, `lpm set` or work already in flight. It is routing, not access
291
+ control. Full reference: `docs/profiles.md`.
292
+
293
+ ## Setting up an agent
294
+
295
+ ```bash
296
+ lpm mcp setup # -> <board>/.mcp.json
297
+ lpm mcp setup --user "Planner Bot"
298
+ lpm mcp setup --profile ./profiles/frontend-agent.yml --name frontend
299
+ lpm mcp setup --file ~/.cursor/mcp.json # merge into an existing config
300
+ lpm mcp setup --read-only --name light-plan-ro
301
+ lpm mcp setup --print # just show it
302
+ ```
303
+
304
+ `--file` merges in place, matching the key the file already uses (`servers` for
305
+ VS Code, `mcpServers` for everyone else) and leaving the rest untouched. Without
306
+ it a new file is written and an existing one is never clobbered without `--force`.
307
+ Add one entry per agent with `--name`.
308
+
309
+ `--user` and `--profile` are **per session and never written to
310
+ `.lpm/local.json`**, so a dozen agents can share one checkout without overwriting
311
+ each other's identity or scope. `--read-only` registers only the tools that do
312
+ not write.
313
+
314
+ A profile can carry the identity too, so one file per agent is the whole setup:
315
+
316
+ ```yaml
317
+ user: Frontend Bot
318
+ scope:
319
+ under: [LP-2]
320
+ types: [user_story, bug]
321
+ ```
322
+
323
+ The MCP SDK is an *optional* dependency — installed by default, but if the
324
+ project was installed with `--no-optional`, `lpm mcp` says what to install.
325
+
326
+ ## End-to-end: a new board for a team of four
327
+
328
+ ```bash
329
+ lpm init --template scrum --prefix ACME
330
+
331
+ # people and a pool
332
+ lpm new person -t "Alice Smith"
333
+ lpm new person -t "Bob Jones"
334
+ lpm new role -t "Web developer" --capacity 2
335
+ lpm link RS-1 --covers RS-3
336
+ lpm link RS-2 --covers RS-3
337
+
338
+ # the calendar
339
+ lpm new increment -t "PI-1" --starts 2026-08-03 --ends 2026-10-24
340
+ lpm new sprint -t "Sprint 1" -p TL-1 --starts 2026-08-03 --ends 2026-08-14
341
+
342
+ # check it holds together before anyone plans against it
343
+ lpm check
344
+ lpm team
345
+
346
+ # route each developer, and each agent
347
+ lpm profile --init ./profiles/alice.yml --user "Alice Smith"
348
+ lpm mcp setup --name planner --user "Planner Bot" --file .mcp.json
349
+
350
+ # commit the board's own repo
351
+ cd .lpm && git add -A && git commit -m "Board scaffold: roster, PI-1, Sprint 1"
352
+ ```
353
+
354
+ Then load `lpm-planning` to populate it.