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,451 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import YAML from 'yaml';
3
+ import { z } from 'zod';
4
+ import { validateAttributeValue } from '../model/attributes.js';
5
+ import { ATTRIBUTE_TYPES, TEMPLATE_FOLDER_TYPE, reservedFieldsFor } from '../model/types.js';
6
+ const IDENT_RE = /^[a-z][a-z0-9_]*$/;
7
+ /** The one remote name a tracker may not take: `lpm remote git` is the board's own git remote. */
8
+ export const RESERVED_REMOTE_NAME = 'git';
9
+ const PREFIX_RE = /^[A-Z][A-Z0-9]{0,9}$/;
10
+ const PREFIX_MESSAGE = 'must be 1-10 uppercase letters or digits, starting with a letter';
11
+ /**
12
+ * The id prefix registry templates take when a board says nothing.
13
+ *
14
+ * Every other namespace is opt-in and so has no default; the registry is always
15
+ * there, because it is written in the board's own issue types. A board whose
16
+ * `key_prefix` really is `TPL` sets `template_prefix` instead — the collision
17
+ * check below says so rather than letting two namespaces mint the same id.
18
+ */
19
+ const DEFAULT_TEMPLATE_PREFIX = 'TPL';
20
+ const attributeDefSchema = z.object({
21
+ type: z.enum(ATTRIBUTE_TYPES),
22
+ description: z.string().optional(),
23
+ required: z.boolean().optional(),
24
+ default: z.unknown().optional(),
25
+ values: z.array(z.string()).min(1).optional(),
26
+ });
27
+ const typeSchema = z.object({
28
+ label: z.string().min(1),
29
+ attributes: z.record(z.string(), attributeDefSchema).default({}),
30
+ body: z.string().default(''),
31
+ generic: z.boolean().optional(),
32
+ atomic: z.boolean().optional(),
33
+ });
34
+ const statusSchema = z.object({
35
+ id: z.string().regex(IDENT_RE, 'must be lower_snake_case'),
36
+ label: z.string().min(1),
37
+ terminal: z.boolean().optional(),
38
+ active: z.boolean().optional(),
39
+ });
40
+ const hierarchySchema = z.array(z.union([z.string(), z.array(z.string()).min(1)])).min(1);
41
+ const typeMapSchema = z.record(z.string().regex(IDENT_RE, 'must be lower_snake_case'), typeSchema);
42
+ /**
43
+ * A per-field conflict override: the field always takes this owner and never
44
+ * conflicts. `owner: local` means the board wins, `owner: remote` the remote.
45
+ */
46
+ const fieldOwnerSchema = z.object({
47
+ owner: z.enum(['local', 'remote']),
48
+ });
49
+ /**
50
+ * The frame of one remote. Core validates this much and nothing more:
51
+ * `connection` and `mapping` are opaque records whose contents are the
52
+ * provider's to validate, not core's — core must never know what a provider is.
53
+ *
54
+ * `fields` is the one policy block core *can* read the contents of: it names
55
+ * board fields (canonical fields and attribute names), which are core's
56
+ * vocabulary, not a provider's. The `{ owner }` spelling is flattened to the
57
+ * owner value, so a caller reads `fields.status` and gets `'remote'`.
58
+ */
59
+ const remoteSchema = z.object({
60
+ provider: z.string().min(1),
61
+ scope: z.string().optional(),
62
+ direction: z.enum(['both', 'push', 'pull']).default('both'),
63
+ on_delete: z.enum(['unlink', 'close', 'delete', 'restore', 'manual']).default('unlink'),
64
+ conflict: z.enum(['manual', 'local', 'remote']),
65
+ /**
66
+ * The bulk guard (LP-364): a run where more than this fraction of linked
67
+ * twins is missing at once is treated as unreachable rather than as a wave
68
+ * of deletions, because infrastructure failures arrive all at once and real
69
+ * deletions arrive a few at a time. `1` disables the guard (a fraction can
70
+ * never exceed 1); absent means the resolver's default of 0.5 applies.
71
+ */
72
+ bulk_guard: z.number().min(0).max(1).optional(),
73
+ /**
74
+ * The write threshold (LP-350): a push whose plan creates or closes more
75
+ * than this many issues stops and requires `--yes`, so a misconfigured scope
76
+ * cannot turn into a wave of duplicate or closed tickets. Absent means the
77
+ * default of 25 applies.
78
+ */
79
+ write_threshold: z.number().int().positive().optional(),
80
+ fields: z
81
+ .record(z.string(), fieldOwnerSchema)
82
+ .transform((entries) => Object.fromEntries(Object.entries(entries).map(([field, entry]) => [field, entry.owner])))
83
+ .default({}),
84
+ encoding: z.enum(['block', 'comment']).default('block'),
85
+ comments: z.enum(['push', 'both']).default('push'),
86
+ connection: z.record(z.string(), z.unknown()).default({}),
87
+ mapping: z.record(z.string(), z.unknown()).default({}),
88
+ });
89
+ /**
90
+ * A git remote or branch name, conservatively: the characters every host
91
+ * accepts, nothing a shell or a refspec would read as syntax, and no leading
92
+ * dash (which git would take for an option).
93
+ */
94
+ const GIT_NAME_RE = /^(?!-)[A-Za-z0-9._/-]+$/;
95
+ const GIT_NAME_MESSAGE = 'must be a plain git name (letters, digits, ".", "_", "-", "/")';
96
+ const rawConfigSchema = z.object({
97
+ version: z.number().int().positive().default(1),
98
+ key_prefix: z.string().regex(PREFIX_RE, PREFIX_MESSAGE),
99
+ statuses: z.array(statusSchema).min(1),
100
+ default_status: z.string().optional(),
101
+ issue_types: typeMapSchema,
102
+ hierarchy: hierarchySchema,
103
+ period_prefix: z.string().regex(PREFIX_RE, PREFIX_MESSAGE).optional(),
104
+ period_types: typeMapSchema.optional(),
105
+ period_hierarchy: hierarchySchema.optional(),
106
+ resource_prefix: z.string().regex(PREFIX_RE, PREFIX_MESSAGE).optional(),
107
+ resource_types: typeMapSchema.optional(),
108
+ resource_hierarchy: hierarchySchema.optional(),
109
+ squad_prefix: z.string().regex(PREFIX_RE, PREFIX_MESSAGE).optional(),
110
+ squad_types: typeMapSchema.optional(),
111
+ squad_hierarchy: hierarchySchema.optional(),
112
+ // The registry has no types or hierarchy of its own: a template *is* an issue
113
+ // of one of the board's own types, so both are derived from `issue_types` and
114
+ // `hierarchy`. Only the id prefix has to be said out loud.
115
+ template_prefix: z.string().regex(PREFIX_RE, PREFIX_MESSAGE).optional(),
116
+ priority_attribute: z.string().regex(IDENT_RE, 'must be lower_snake_case').optional(),
117
+ effort_attribute: z.string().regex(IDENT_RE, 'must be lower_snake_case').optional(),
118
+ remotes: z.record(z.string(), remoteSchema).default({}),
119
+ // Remotes turned off, kept whole so they can be turned on again — see
120
+ // `operations/remotes-off.ts`. Validated as strictly as an active one, so a
121
+ // block that was valid when it was turned off is valid when it comes back.
122
+ remotes_off: z.record(z.string(), remoteSchema).default({}),
123
+ // Sharing the board itself through its git repository. Present means on.
124
+ git_sync: z
125
+ .object({
126
+ remote: z.string().regex(GIT_NAME_RE, GIT_NAME_MESSAGE).default('origin'),
127
+ branch: z.string().regex(GIT_NAME_RE, GIT_NAME_MESSAGE).default('main'),
128
+ })
129
+ .strict()
130
+ .optional(),
131
+ });
132
+ import { formatZodIssues } from '../model/zod.js';
133
+ function normalizeHierarchy(levels) {
134
+ return levels.map((level) => (typeof level === 'string' ? [level] : level));
135
+ }
136
+ /** The config keys that describe one namespace, keyed by the kind they govern. */
137
+ const NAMESPACE_KEYS = {
138
+ issue: { types: 'issue_types', hierarchy: 'hierarchy', prefix: 'key_prefix' },
139
+ period: { types: 'period_types', hierarchy: 'period_hierarchy', prefix: 'period_prefix' },
140
+ resource: { types: 'resource_types', hierarchy: 'resource_hierarchy', prefix: 'resource_prefix' },
141
+ squad: { types: 'squad_types', hierarchy: 'squad_hierarchy', prefix: 'squad_prefix' },
142
+ };
143
+ /** Hierarchy <-> type-map consistency, shared by all three namespaces. */
144
+ function checkNamespace(types, hierarchy, kind, errors) {
145
+ const { types: typesKey, hierarchy: label } = NAMESPACE_KEYS[kind];
146
+ const declared = Object.keys(types);
147
+ const seen = new Map();
148
+ hierarchy.forEach((level, depth) => {
149
+ for (const name of level) {
150
+ if (seen.has(name)) {
151
+ errors.push(`${label}: "${name}" appears at level ${seen.get(name)} and level ${depth}; each type belongs to exactly one level`);
152
+ }
153
+ else {
154
+ seen.set(name, depth);
155
+ }
156
+ if (!declared.includes(name)) {
157
+ errors.push(`${label}: "${name}" is not defined under ${typesKey}`);
158
+ }
159
+ }
160
+ });
161
+ for (const name of declared) {
162
+ if (!seen.has(name)) {
163
+ errors.push(`${typesKey}.${name}: declared but missing from ${label}`);
164
+ }
165
+ }
166
+ }
167
+ function checkAttributes(path, types, kind, errors) {
168
+ const reserved = reservedFieldsFor(kind);
169
+ for (const [typeName, typeDef] of Object.entries(types)) {
170
+ for (const [attrName, attrDef] of Object.entries(typeDef.attributes)) {
171
+ const where = `${path}.${typeName}.attributes.${attrName}`;
172
+ if (reserved.includes(attrName)) {
173
+ errors.push(`${where}: "${attrName}" is a reserved field name`);
174
+ }
175
+ if (!IDENT_RE.test(attrName)) {
176
+ errors.push(`${where}: attribute names must be lower_snake_case`);
177
+ }
178
+ if (attrDef.type === 'enum' && !attrDef.values) {
179
+ errors.push(`${where}: enum attributes need a "values" list`);
180
+ }
181
+ if (attrDef.type !== 'enum' && attrDef.values) {
182
+ errors.push(`${where}: "values" is only valid for enum attributes`);
183
+ }
184
+ if (attrDef.default !== undefined) {
185
+ const problem = validateAttributeValue(attrDef, attrDef.default);
186
+ if (problem)
187
+ errors.push(`${where}.default: ${problem}`);
188
+ }
189
+ }
190
+ }
191
+ }
192
+ /**
193
+ * Periods and resources are opt-in: a board declares the whole namespace or
194
+ * none of it. Returns true when this one is in use.
195
+ */
196
+ function checkOptionalNamespace(kind, raw, hierarchy, errors) {
197
+ const keys = NAMESPACE_KEYS[kind];
198
+ const types = raw[keys.types];
199
+ const rawHierarchy = raw[keys.hierarchy];
200
+ if (!types && !rawHierarchy)
201
+ return false;
202
+ if (!types)
203
+ errors.push(`${keys.types}: required when ${keys.hierarchy} is set`);
204
+ if (!rawHierarchy)
205
+ errors.push(`${keys.hierarchy}: required when ${keys.types} is set`);
206
+ if (!raw[keys.prefix]) {
207
+ errors.push(`${keys.prefix}: required when the board declares ${kind} types`);
208
+ }
209
+ if (types && rawHierarchy) {
210
+ checkNamespace(types, hierarchy, kind, errors);
211
+ checkAttributes(keys.types, types, kind, errors);
212
+ }
213
+ return true;
214
+ }
215
+ /**
216
+ * A type flag that means something in exactly one namespace. `generic` describes
217
+ * a pool of people and means nothing outside the roster; `atomic` describes a
218
+ * unit of work and means nothing outside the issue tree. Declaring one where
219
+ * nothing will ever read it is a typo, not a harmless extra key.
220
+ */
221
+ function checkTypeFlag(flag, owner, kind, types, errors) {
222
+ const key = NAMESPACE_KEYS[kind].types;
223
+ for (const [name, def] of Object.entries(types)) {
224
+ if (def[flag] !== undefined) {
225
+ errors.push(`${key}.${name}.${flag}: only ${owner} types can be ${flag}`);
226
+ }
227
+ }
228
+ }
229
+ /**
230
+ * `priority_attribute` / `effort_attribute` name an issue attribute the engine
231
+ * reads (to rank work and to add up load), so the named attribute has to exist
232
+ * and have a usable type wherever it is declared.
233
+ */
234
+ function checkIssueAttributeRef(key, name, types, allowed, errors) {
235
+ if (!name)
236
+ return;
237
+ const declaring = Object.entries(types).filter(([, def]) => def.attributes[name]);
238
+ if (!declaring.length) {
239
+ errors.push(`${key}: "${name}" is not an attribute of any issue type`);
240
+ return;
241
+ }
242
+ for (const [typeName, def] of declaring) {
243
+ const attribute = def.attributes[name];
244
+ if (!allowed.includes(attribute.type)) {
245
+ errors.push(`${key}: issue_types.${typeName}.attributes.${name} is "${attribute.type}"; expected ${allowed.join(' or ')}`);
246
+ }
247
+ }
248
+ }
249
+ /**
250
+ * Remote names follow IDENT_RE, and no two remotes may both claim the same
251
+ * documents. Core cannot see the board tree from the config alone, so it
252
+ * rejects every overlap it *can* see: an absent scope means the whole board,
253
+ * which contains every other scope, and two equal scopes are the same subtree.
254
+ * Two different, both-present scopes are left alone — whether one sits inside
255
+ * the other is answered against the board tree (by `lpm check`), not here.
256
+ */
257
+ function checkRemotes(raw, errors) {
258
+ for (const [key, block] of [
259
+ ['remotes', raw.remotes],
260
+ ['remotes_off', raw.remotes_off],
261
+ ]) {
262
+ for (const name of Object.keys(block)) {
263
+ if (!IDENT_RE.test(name)) {
264
+ errors.push(`${key}.${name}: remote names must be lower_snake_case`);
265
+ }
266
+ if (name === RESERVED_REMOTE_NAME) {
267
+ errors.push(`${key}.${name}: "${name}" is reserved — \`lpm remote git\` is the board's own git remote`);
268
+ }
269
+ }
270
+ }
271
+ // One name, one remote: the two blocks share `.lpm/remotes/<name>/`, so a
272
+ // name in both would be two declarations writing one link store.
273
+ for (const name of Object.keys(raw.remotes_off)) {
274
+ if (raw.remotes[name]) {
275
+ errors.push(`remotes.${name}: also declared under remotes_off — a turned-off remote comes back with ` +
276
+ `\`lpm remote on ${name}\`, not by declaring it again`);
277
+ }
278
+ }
279
+ // A board is shared through git *or* mirrored onto trackers. Git replicates
280
+ // the whole folder — every tracker's link store with it — so "one remote per
281
+ // document" can only be decided for the board as a whole.
282
+ if (raw.git_sync && Object.keys(raw.remotes).length > 0) {
283
+ errors.push(`git_sync and remotes: a board syncs through git or mirrors onto trackers, not both ` +
284
+ `(declared: ${Object.keys(raw.remotes).sort().join(', ')}). ` +
285
+ 'Turn the trackers off with `lpm remote off <name>` (kept, and `lpm remote on <name>` brings ' +
286
+ 'one back), or turn git sync off with `lpm git off`.');
287
+ }
288
+ const names = Object.keys(raw.remotes);
289
+ for (let i = 0; i < names.length; i += 1) {
290
+ for (let j = i + 1; j < names.length; j += 1) {
291
+ const a = raw.remotes[names[i]].scope;
292
+ const b = raw.remotes[names[j]].scope;
293
+ if (a === b || a === undefined || b === undefined) {
294
+ // Say *why*, because the commonest way to hit this is the reasonable
295
+ // wish to mirror one board onto two trackers: both declarations claim
296
+ // the whole board, and "overlapping scopes" reads as a typo rather than
297
+ // as the rule it is. Name the fix in the same line.
298
+ const whole = a === undefined || b === undefined;
299
+ errors.push(`remotes: "${names[i]}" and "${names[j]}" have overlapping scopes` +
300
+ (whole
301
+ ? ' — both mirror the whole board. Give each a different `scope:` (a document id), because two remotes may never mirror the same work.'
302
+ : ` — both mirror ${a}. Two remotes may never mirror the same work.`));
303
+ }
304
+ }
305
+ }
306
+ }
307
+ /** Cross-field rules zod cannot express on its own. */
308
+ function checkSemantics(raw, hierarchies) {
309
+ const errors = [];
310
+ checkNamespace(raw.issue_types, hierarchies.issue, 'issue', errors);
311
+ checkAttributes('issue_types', raw.issue_types, 'issue', errors);
312
+ checkTypeFlag('generic', 'resource', 'issue', raw.issue_types, errors);
313
+ const statusIdList = raw.statuses.map((status) => status.id);
314
+ const duplicateStatus = statusIdList.find((id, index) => statusIdList.indexOf(id) !== index);
315
+ if (duplicateStatus)
316
+ errors.push(`statuses: duplicate status id "${duplicateStatus}"`);
317
+ if (raw.default_status && !statusIdList.includes(raw.default_status)) {
318
+ errors.push(`default_status: "${raw.default_status}" is not one of [${statusIdList.join(', ')}]`);
319
+ }
320
+ for (const status of raw.statuses) {
321
+ if (status.terminal && status.active) {
322
+ errors.push(`statuses.${status.id}: a status cannot be both terminal and active`);
323
+ }
324
+ }
325
+ checkIssueAttributeRef('priority_attribute', raw.priority_attribute, raw.issue_types, ['enum'], errors);
326
+ checkIssueAttributeRef('effort_attribute', raw.effort_attribute, raw.issue_types, ['int', 'float'], errors);
327
+ const usesPeriods = checkOptionalNamespace('period', raw, hierarchies.period, errors);
328
+ if (usesPeriods) {
329
+ checkTypeFlag('generic', 'resource', 'period', raw.period_types ?? {}, errors);
330
+ checkTypeFlag('atomic', 'issue', 'period', raw.period_types ?? {}, errors);
331
+ }
332
+ const usesResources = checkOptionalNamespace('resource', raw, hierarchies.resource, errors);
333
+ if (usesResources) {
334
+ checkTypeFlag('atomic', 'issue', 'resource', raw.resource_types ?? {}, errors);
335
+ }
336
+ const usesSquads = checkOptionalNamespace('squad', raw, hierarchies.squad, errors);
337
+ if (usesSquads) {
338
+ checkTypeFlag('generic', 'resource', 'squad', raw.squad_types ?? {}, errors);
339
+ checkTypeFlag('atomic', 'issue', 'squad', raw.squad_types ?? {}, errors);
340
+ }
341
+ // Ids from different namespaces must never collide...
342
+ const prefixes = [['key_prefix', raw.key_prefix]];
343
+ if (usesPeriods && raw.period_prefix)
344
+ prefixes.push(['period_prefix', raw.period_prefix]);
345
+ if (usesResources && raw.resource_prefix)
346
+ prefixes.push(['resource_prefix', raw.resource_prefix]);
347
+ if (usesSquads && raw.squad_prefix)
348
+ prefixes.push(['squad_prefix', raw.squad_prefix]);
349
+ // The registry is never opt-in — every board has one, because its types are
350
+ // the board's own — so its prefix is always in the collision check.
351
+ prefixes.push(['template_prefix', raw.template_prefix ?? DEFAULT_TEMPLATE_PREFIX]);
352
+ for (let index = 1; index < prefixes.length; index += 1) {
353
+ const [key, value] = prefixes[index];
354
+ const clash = prefixes.slice(0, index).find(([, other]) => other === value);
355
+ if (clash) {
356
+ errors.push(`${key}: "${value}" must differ from ${clash[0]} so ids never collide`);
357
+ }
358
+ }
359
+ // ...and `lpm new <type>` resolves the namespace from the type name, so a
360
+ // name may not mean two different things either.
361
+ const namespaces = [
362
+ ['issue', raw.issue_types],
363
+ ];
364
+ if (usesPeriods)
365
+ namespaces.push(['period', raw.period_types ?? {}]);
366
+ if (usesResources)
367
+ namespaces.push(['resource', raw.resource_types ?? {}]);
368
+ if (usesSquads)
369
+ namespaces.push(['squad', raw.squad_types ?? {}]);
370
+ const owner = new Map();
371
+ for (const [kind, types] of namespaces) {
372
+ for (const name of Object.keys(types)) {
373
+ // The registry reuses the issue types by name and adds exactly one of its
374
+ // own, so a board that also called something `folder` would make "which
375
+ // folder?" unanswerable. @see TEMPLATE_FOLDER_TYPE
376
+ if (name === TEMPLATE_FOLDER_TYPE) {
377
+ errors.push(`${NAMESPACE_KEYS[kind].types}.${name}: "${name}" is reserved for the template registry`);
378
+ continue;
379
+ }
380
+ const previous = owner.get(name);
381
+ if (previous) {
382
+ const article = previous === 'issue' ? 'an' : 'a';
383
+ errors.push(`${NAMESPACE_KEYS[kind].types}.${name}: "${name}" is also ${article} ${previous} type; type names must be unique across namespaces`);
384
+ }
385
+ else {
386
+ owner.set(name, kind);
387
+ }
388
+ }
389
+ }
390
+ checkRemotes(raw, errors);
391
+ return errors;
392
+ }
393
+ export function parseConfigText(text) {
394
+ let doc;
395
+ try {
396
+ doc = YAML.parse(text);
397
+ }
398
+ catch (error) {
399
+ return { config: null, errors: [`invalid YAML: ${error.message}`] };
400
+ }
401
+ const parsed = rawConfigSchema.safeParse(doc);
402
+ if (!parsed.success)
403
+ return { config: null, errors: formatZodIssues(parsed.error) };
404
+ const raw = parsed.data;
405
+ const hierarchies = {
406
+ issue: normalizeHierarchy(raw.hierarchy),
407
+ period: normalizeHierarchy(raw.period_hierarchy ?? []),
408
+ resource: normalizeHierarchy(raw.resource_hierarchy ?? []),
409
+ squad: normalizeHierarchy(raw.squad_hierarchy ?? []),
410
+ };
411
+ const errors = checkSemantics(raw, hierarchies);
412
+ if (errors.length)
413
+ return { config: null, errors };
414
+ return {
415
+ config: {
416
+ version: raw.version,
417
+ key_prefix: raw.key_prefix,
418
+ default_status: raw.default_status ?? raw.statuses[0].id,
419
+ statuses: raw.statuses,
420
+ issue_types: raw.issue_types,
421
+ hierarchy: hierarchies.issue,
422
+ period_prefix: raw.period_prefix ?? '',
423
+ period_types: raw.period_types ?? {},
424
+ period_hierarchy: hierarchies.period,
425
+ resource_prefix: raw.resource_prefix ?? '',
426
+ resource_types: raw.resource_types ?? {},
427
+ resource_hierarchy: hierarchies.resource,
428
+ squad_prefix: raw.squad_prefix ?? '',
429
+ squad_types: raw.squad_types ?? {},
430
+ squad_hierarchy: hierarchies.squad,
431
+ template_prefix: raw.template_prefix ?? DEFAULT_TEMPLATE_PREFIX,
432
+ priority_attribute: raw.priority_attribute ?? '',
433
+ effort_attribute: raw.effort_attribute ?? '',
434
+ remotes: raw.remotes,
435
+ remotes_off: raw.remotes_off,
436
+ git_sync: raw.git_sync ?? null,
437
+ },
438
+ errors: [],
439
+ };
440
+ }
441
+ export function loadConfig(paths) {
442
+ let text;
443
+ try {
444
+ text = readFileSync(paths.configPath, 'utf8');
445
+ }
446
+ catch (error) {
447
+ return { config: null, errors: [`cannot read config: ${error.message}`] };
448
+ }
449
+ return parseConfigText(text);
450
+ }
451
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/core/config/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /** An error the CLI can print verbatim: a headline plus optional detail lines. */
2
+ export declare class BoardError extends Error {
3
+ readonly details: string[];
4
+ constructor(message: string, details?: string[]);
5
+ }
6
+ /**
7
+ * Somebody else got there first.
8
+ *
9
+ * A `BoardError` in every respect — it prints the same way and carries the same
10
+ * hints — but distinguishable, because the remedy is different in kind. A
11
+ * request that is wrong stays wrong however often it is repeated; a request that
12
+ * lost a race is answered by reading the board again and asking a fresh
13
+ * question, which is something a queue runner can do for itself. `lpm queue
14
+ * agent` picks the next task instead of stopping on one of these, and nothing
15
+ * else may act on the distinction by matching on the message.
16
+ *
17
+ * The two things that raise one: a document that changed underneath the handle
18
+ * it was read into (`requireUnchanged`), and an issue somebody claimed while
19
+ * this process was deciding to claim it (`claimIssue`).
20
+ */
21
+ export declare class ConflictError extends BoardError {
22
+ constructor(message: string, details?: string[]);
23
+ }
@@ -0,0 +1,31 @@
1
+ /** An error the CLI can print verbatim: a headline plus optional detail lines. */
2
+ export class BoardError extends Error {
3
+ details;
4
+ constructor(message, details = []) {
5
+ super(message);
6
+ this.name = 'BoardError';
7
+ this.details = details;
8
+ }
9
+ }
10
+ /**
11
+ * Somebody else got there first.
12
+ *
13
+ * A `BoardError` in every respect — it prints the same way and carries the same
14
+ * hints — but distinguishable, because the remedy is different in kind. A
15
+ * request that is wrong stays wrong however often it is repeated; a request that
16
+ * lost a race is answered by reading the board again and asking a fresh
17
+ * question, which is something a queue runner can do for itself. `lpm queue
18
+ * agent` picks the next task instead of stopping on one of these, and nothing
19
+ * else may act on the distinction by matching on the message.
20
+ *
21
+ * The two things that raise one: a document that changed underneath the handle
22
+ * it was read into (`requireUnchanged`), and an issue somebody claimed while
23
+ * this process was deciding to claim it (`claimIssue`).
24
+ */
25
+ export class ConflictError extends BoardError {
26
+ constructor(message, details = []) {
27
+ super(message, details);
28
+ this.name = 'ConflictError';
29
+ }
30
+ }
31
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,MAAM,OAAO,UAAW,SAAQ,KAAK;IAC1B,OAAO,CAAW;IAE3B,YAAY,OAAe,EAAE,UAAoB,EAAE;QACjD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,aAAc,SAAQ,UAAU;IAC3C,YAAY,OAAe,EAAE,UAAoB,EAAE;QACjD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * The git hosts setup knows how to talk somebody through.
3
+ *
4
+ * Knowing a host is *help*, never a requirement: any URL git can push to works,
5
+ * and an unrecognised one is "a git server". What a host entry adds is what a
6
+ * person setting this up for the first time actually needs — what a URL to
7
+ * that host looks like, where an empty repository is created, and how git will
8
+ * find the credential — because the commonest way setup fails is a URL pasted
9
+ * from the wrong page, or a token git was never told about.
10
+ *
11
+ * light-plan stores no git credential. It runs git, and git asks its own
12
+ * credential helper (Git Credential Manager, the macOS keychain, an SSH key) —
13
+ * the same thing that answers when the person pushes their code. That is why
14
+ * every hint below points at git's configuration rather than at a light-plan
15
+ * command.
16
+ *
17
+ * Data only; the CLI prints it and the web serves it.
18
+ */
19
+ export type GitHostId = 'github' | 'gitlab' | 'bitbucket' | 'azure' | 'other';
20
+ export interface GitHost {
21
+ id: GitHostId;
22
+ label: string;
23
+ /** URL shapes, with placeholders in angle brackets. */
24
+ examples: string[];
25
+ /** Where to make the (empty) repository the board will live in. */
26
+ create: string;
27
+ /** How git authenticates to it. */
28
+ credentials: string;
29
+ }
30
+ export declare const GIT_HOSTS: readonly GitHost[];
31
+ /** Which host a URL belongs to; `other` for anything unrecognised. */
32
+ export declare function recognizeHost(url: string): GitHost;
33
+ /**
34
+ * Why a string cannot be a git URL, or null when git may as well try it. Loose
35
+ * on purpose — git is the judge — but a leading dash would be read as an
36
+ * option, and an empty string is a form somebody has not filled in.
37
+ */
38
+ export declare function urlProblem(url: string): string | null;
39
+ /** Two URLs naming the same repository, ignoring a trailing `.git`, a slash and case. */
40
+ export declare function sameRepositoryUrl(a: string, b: string): boolean;