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,90 @@
1
+ /**
2
+ * The write-confirmation gate (LP-350) — the pure decision a push must pause
3
+ * for, shared by every front end so the CLI, the web panel and an agent cannot
4
+ * disagree about whether a plan needs consent.
5
+ *
6
+ * Two pauses, one memory:
7
+ *
8
+ * - **First write.** The very first time a remote is written to, a person
9
+ * must confirm the target and the counts. The consent is recorded once
10
+ * (`links.ts`'s `consentedAt`) and never asked again.
11
+ * - **Oversized plan.** A push whose plan creates or closes more than the
12
+ * configured threshold (default 25) stops and requires `--yes`, because a
13
+ * scope typo that makes half the board look deleted would otherwise close
14
+ * half a backlog — bulk-close is as dangerous as bulk-create.
15
+ *
16
+ * This file only *decides*. The prompting (interactive) and the refusal (a
17
+ * non-interactive run with no `--yes`) live in the caller — `runSync` enforces
18
+ * the decision through its `confirm` / `yes` options, and the CLI supplies the
19
+ * prompt. Nothing here touches a terminal, a file or a request.
20
+ */
21
+ import type { PushPlan } from './plan.js';
22
+ import type { OpenedRemote } from './remotes.js';
23
+ /** The default write threshold: more creates+closes than this needs `--yes`. */
24
+ export declare const DEFAULT_WRITE_THRESHOLD = 25;
25
+ /** The write-shaped counts a plan implies, for the confirmation and the report. */
26
+ export interface PushWriteCounts {
27
+ /** New twins the plan files: `create` plus `restore` (a re-file is a create). */
28
+ creates: number;
29
+ /** Existing twins the plan closes (a terminal status reached, or `on_delete: close`). */
30
+ closes: number;
31
+ /** Existing twins the plan deletes (`on_delete: delete`). */
32
+ deletes: number;
33
+ /** Every remote write of any kind — the number `--limit` budgets against. */
34
+ writes: number;
35
+ }
36
+ /**
37
+ * Count the write-shaped operations in a push plan. `creates` and `closes`
38
+ * feed the threshold gate; `deletes` feeds both the threshold gate (a bulk
39
+ * deletion is a bulk write) and the every-run delete gate; `writes` feeds the
40
+ * first-write gate (any write at all) and the report.
41
+ */
42
+ export declare function countPushWrites(plan: PushPlan): PushWriteCounts;
43
+ /** The configured threshold for a remote, or the default when it says nothing. */
44
+ export declare function writeThresholdOf(remote: OpenedRemote): number;
45
+ /** Why a push plan needs consent before it may run. */
46
+ export type ConsentReason = 'first_write' | 'threshold' | 'delete';
47
+ /** The decision: does this plan need a pause, and if so why. */
48
+ export interface ConsentGate {
49
+ /** True when the push may not run without consent. */
50
+ requiresConsent: boolean;
51
+ /** Why, when `requiresConsent`. */
52
+ reason?: ConsentReason;
53
+ /** The counts the gate decided on, for the message. */
54
+ counts: PushWriteCounts;
55
+ /** The threshold in force (used when `reason` is `threshold`). */
56
+ threshold: number;
57
+ }
58
+ /** What a confirmation prompt shows: the target, the reason, and the counts. */
59
+ export interface ConsentRequest {
60
+ remoteName: string;
61
+ /** The human-readable target (`owner/repo`, `PROJ @ host`, `team`). */
62
+ target: string;
63
+ reason: ConsentReason;
64
+ counts: PushWriteCounts;
65
+ threshold: number;
66
+ }
67
+ /** A refusal recorded on the result: the push was stopped, nothing written. */
68
+ export interface ConsentRefusal {
69
+ reason: ConsentReason;
70
+ target: string;
71
+ counts: PushWriteCounts;
72
+ threshold: number;
73
+ }
74
+ /**
75
+ * Decide whether a push needs consent.
76
+ *
77
+ * A plan with no remote writes never asks — there is nothing to confirm. An
78
+ * oversized plan (creates + closes + deletes above the threshold) outranks the
79
+ * rest, because `--yes` satisfies it and it is the strictest of the gates.
80
+ * A plan that deletes a twin (`on_delete: delete`) is the next: it must be
81
+ * confirmed **every run**, and the gate is never satisfied by a remembered
82
+ * first-write consent (LP-351). Otherwise the gate asks once, on the first
83
+ * write, until consent is recorded.
84
+ */
85
+ export declare function consentGate(params: {
86
+ remote: OpenedRemote;
87
+ /** Whether first-write consent has already been recorded for this remote. */
88
+ consented: boolean;
89
+ plan: PushPlan;
90
+ }): ConsentGate;
@@ -0,0 +1,83 @@
1
+ /**
2
+ * The write-confirmation gate (LP-350) — the pure decision a push must pause
3
+ * for, shared by every front end so the CLI, the web panel and an agent cannot
4
+ * disagree about whether a plan needs consent.
5
+ *
6
+ * Two pauses, one memory:
7
+ *
8
+ * - **First write.** The very first time a remote is written to, a person
9
+ * must confirm the target and the counts. The consent is recorded once
10
+ * (`links.ts`'s `consentedAt`) and never asked again.
11
+ * - **Oversized plan.** A push whose plan creates or closes more than the
12
+ * configured threshold (default 25) stops and requires `--yes`, because a
13
+ * scope typo that makes half the board look deleted would otherwise close
14
+ * half a backlog — bulk-close is as dangerous as bulk-create.
15
+ *
16
+ * This file only *decides*. The prompting (interactive) and the refusal (a
17
+ * non-interactive run with no `--yes`) live in the caller — `runSync` enforces
18
+ * the decision through its `confirm` / `yes` options, and the CLI supplies the
19
+ * prompt. Nothing here touches a terminal, a file or a request.
20
+ */
21
+ import { isRemoteWrite } from './execute.js';
22
+ /** The default write threshold: more creates+closes than this needs `--yes`. */
23
+ export const DEFAULT_WRITE_THRESHOLD = 25;
24
+ /** Whether an op files a new twin, for the create half of the threshold count. */
25
+ function isCreateLike(op) {
26
+ return op.kind === 'create' || op.kind === 'restore';
27
+ }
28
+ /**
29
+ * Count the write-shaped operations in a push plan. `creates` and `closes`
30
+ * feed the threshold gate; `deletes` feeds both the threshold gate (a bulk
31
+ * deletion is a bulk write) and the every-run delete gate; `writes` feeds the
32
+ * first-write gate (any write at all) and the report.
33
+ */
34
+ export function countPushWrites(plan) {
35
+ let creates = 0;
36
+ let closes = 0;
37
+ let deletes = 0;
38
+ let writes = 0;
39
+ for (const op of plan.ops) {
40
+ if (isCreateLike(op))
41
+ creates += 1;
42
+ else if (op.kind === 'close')
43
+ closes += 1;
44
+ else if (op.kind === 'delete')
45
+ deletes += 1;
46
+ if (isRemoteWrite(op))
47
+ writes += 1;
48
+ }
49
+ return { creates, closes, deletes, writes };
50
+ }
51
+ /** The configured threshold for a remote, or the default when it says nothing. */
52
+ export function writeThresholdOf(remote) {
53
+ return remote.write_threshold ?? DEFAULT_WRITE_THRESHOLD;
54
+ }
55
+ /**
56
+ * Decide whether a push needs consent.
57
+ *
58
+ * A plan with no remote writes never asks — there is nothing to confirm. An
59
+ * oversized plan (creates + closes + deletes above the threshold) outranks the
60
+ * rest, because `--yes` satisfies it and it is the strictest of the gates.
61
+ * A plan that deletes a twin (`on_delete: delete`) is the next: it must be
62
+ * confirmed **every run**, and the gate is never satisfied by a remembered
63
+ * first-write consent (LP-351). Otherwise the gate asks once, on the first
64
+ * write, until consent is recorded.
65
+ */
66
+ export function consentGate(params) {
67
+ const counts = countPushWrites(params.plan);
68
+ const threshold = writeThresholdOf(params.remote);
69
+ if (counts.writes === 0) {
70
+ return { requiresConsent: false, counts, threshold };
71
+ }
72
+ if (counts.creates + counts.closes + counts.deletes > threshold) {
73
+ return { requiresConsent: true, reason: 'threshold', counts, threshold };
74
+ }
75
+ if (counts.deletes > 0) {
76
+ return { requiresConsent: true, reason: 'delete', counts, threshold };
77
+ }
78
+ if (!params.consented) {
79
+ return { requiresConsent: true, reason: 'first_write', counts, threshold };
80
+ }
81
+ return { requiresConsent: false, counts, threshold };
82
+ }
83
+ //# sourceMappingURL=guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guard.js","sourceRoot":"","sources":["../../src/remote/guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,gFAAgF;AAChF,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAc1C,kFAAkF;AAClF,SAAS,YAAY,CAAC,EAAY;IAChC,OAAO,EAAE,CAAC,IAAI,KAAK,QAAQ,IAAI,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC;AACvD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,IAAc;IAC5C,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QAC1B,IAAI,YAAY,CAAC,EAAE,CAAC;YAAE,OAAO,IAAI,CAAC,CAAC;aAC9B,IAAI,EAAE,CAAC,IAAI,KAAK,OAAO;YAAE,MAAM,IAAI,CAAC,CAAC;aACrC,IAAI,EAAE,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC,CAAC;QAC5C,IAAI,aAAa,CAAC,EAAE,CAAC;YAAE,MAAM,IAAI,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAC9C,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,gBAAgB,CAAC,MAAoB;IACnD,OAAO,MAAM,CAAC,eAAe,IAAI,uBAAuB,CAAC;AAC3D,CAAC;AAmCD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,WAAW,CAAC,MAK3B;IACC,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAElD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACvD,CAAC;IACD,IAAI,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,GAAG,SAAS,EAAE,CAAC;QAChE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC3E,CAAC;IACD,IAAI,MAAM,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACxE,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACtB,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC7E,CAAC;IACD,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AACvD,CAAC"}
@@ -0,0 +1,141 @@
1
+ /**
2
+ * Hierarchy encoding — how a board's issue tree survives a flat or shallow
3
+ * tracker (LP-309).
4
+ *
5
+ * Two encodings, one board:
6
+ *
7
+ * - `sub-issues` — the remote's native parent edge (GitHub's sub-issues),
8
+ * for the levels the account supports (one native parent level on GitHub);
9
+ * - `labels` — the type label plus the parent id in the managed block,
10
+ * everywhere the native edge is not available.
11
+ *
12
+ * Which encoding a remote gets is decided per remote, at runtime, from the
13
+ * *resolved* capability table (`hierarchyDepth`) and an optional forced choice
14
+ * (`--hierarchy sub-issues|labels`). The module is pure: capabilities +
15
+ * hierarchy + option in, an encoding out — never an API version constant.
16
+ *
17
+ * The parent axis is the only thing this module owns. The *type* axis is the
18
+ * mapping's business (`mapping.ts`): a `lpm:epic` label is written and read by
19
+ * the translator whatever the encoding, and this module's `labels` kind means
20
+ * only "the parent rides the managed block, not a native edge".
21
+ *
22
+ * LP-493 adds the switch detection this module was missing: `HierarchyRecord`
23
+ * is the two fields a remote records after a successful sync, and
24
+ * `carrierChanged` answers "would this depth ride a different carrier under
25
+ * the newly resolved encoding?" — the signal `planPush` turns into a
26
+ * `reparent` op rather than a stale carrier left behind.
27
+ */
28
+ import type { ResolvedCapabilities } from './capabilities.js';
29
+ import { type DegradedLevel } from './mapping.js';
30
+ /** The two spellings of the hierarchy decision. */
31
+ export type HierarchyEncoding = 'sub-issues' | 'labels';
32
+ /**
33
+ * Which end of the board a remote's native parent chain is spent on.
34
+ *
35
+ * `root` gives the native edge to the *shallowest* levels: a programme's epics
36
+ * nest natively and the work below degrades. That is right for a tracker whose
37
+ * parent edge is type-blind — GitHub's sub-issues hold any issue under any
38
+ * issue, so the only question is how deep it goes. It is the default and the
39
+ * historical behaviour.
40
+ *
41
+ * `leaf` gives it to the *deepest*: the work items nest under their container
42
+ * and everything above degrades. That is right for a tracker whose hierarchy is
43
+ * defined from the bottom up — Jira's is (`Subtask` < standard < `Epic`), and
44
+ * only a standard issue may sit under an Epic. Spending the chain at the root
45
+ * there puts it exactly where Jira refuses it: a board with three levels above
46
+ * its stories maps them all onto `Epic`, `Epic` may not sit under `Epic`, so
47
+ * every native edge is rejected — while the one relationship Jira *would* hold,
48
+ * the work item under its container, rides the block and the tracker shows a
49
+ * flat list.
50
+ */
51
+ export type HierarchyAnchor = 'root' | 'leaf';
52
+ /** The field name the degraded parent's remote id rides under in the block. */
53
+ export declare const PARENT_FIELD = "parent";
54
+ /**
55
+ * One remote's resolved hierarchy encoding: which kind it is, how many levels
56
+ * nest natively (root = level 1), and which levels' parent therefore rides the
57
+ * managed block.
58
+ */
59
+ export interface ResolvedHierarchy {
60
+ kind: HierarchyEncoding;
61
+ /** Levels that nest natively, counting the root: 1 for labels, `hierarchyDepth + 1` for sub-issues. */
62
+ nativeDepth: number;
63
+ /** Which end of the board the native chain is spent on. */
64
+ anchor: HierarchyAnchor;
65
+ /** Shallowest depth whose parent edge is native (a root document has none). */
66
+ nativeFrom: number;
67
+ /** Deepest depth whose parent edge is native. */
68
+ nativeTo: number;
69
+ /** Levels whose parent is carried in the block. */
70
+ degraded: DegradedLevel[];
71
+ }
72
+ /**
73
+ * The hierarchy encoding a remote last used (LP-493): the two fields that
74
+ * decide which carrier a parent rides. Recorded beside the links after a
75
+ * successful sync, so the next sync can detect a switch — a plan gaining the
76
+ * sub-issue API, or a forced `--hierarchy` — and migrate each twin in place
77
+ * rather than leaving a stale carrier behind. `degraded` is derived, never
78
+ * stored.
79
+ */
80
+ export interface HierarchyRecord {
81
+ kind: HierarchyEncoding;
82
+ nativeDepth: number;
83
+ /**
84
+ * The anchor the last sync used. Absent on a record written before anchors
85
+ * existed, which reads as `root` — the behaviour those twins were filed
86
+ * under — so nothing migrates until the resolved anchor genuinely differs.
87
+ */
88
+ anchor?: HierarchyAnchor;
89
+ }
90
+ /** The `HierarchyRecord` a resolved encoding records. */
91
+ export declare function recordOf(resolved: ResolvedHierarchy): HierarchyRecord;
92
+ /**
93
+ * True when a document at `depth` (ancestor count, root = 0) would ride a
94
+ * different parent carrier under `resolved` than it did under `recorded`.
95
+ * Absent `recorded` (the first sync, or a store predating LP-493) or absent
96
+ * `resolved` answers false — there is nothing known to migrate.
97
+ */
98
+ export declare function carrierChanged(recorded: HierarchyRecord | undefined, resolved: ResolvedHierarchy | undefined, depth: number): boolean;
99
+ /** The forced-choice option `--hierarchy` maps onto. */
100
+ export interface HierarchyOptions {
101
+ /** Force one encoding, overriding capability detection. */
102
+ force?: HierarchyEncoding;
103
+ }
104
+ /**
105
+ * Resolve the hierarchy encoding for one remote.
106
+ *
107
+ * With no forced choice the capability decides: a remote that holds at least
108
+ * one native parent level is `sub-issues`, a flat one `labels`. `force`
109
+ * overrides that — a user who wants the same behaviour across accounts pins it
110
+ * (`labels` on a secondary account without sub-issues, or `sub-issues` on an
111
+ * account where the probe would otherwise read "flat").
112
+ */
113
+ export declare function resolveHierarchyEncoding(capabilities: Pick<ResolvedCapabilities, 'hierarchyDepth' | 'hierarchyAnchor'>, hierarchy: string[][], options?: HierarchyOptions): ResolvedHierarchy;
114
+ /**
115
+ * True when a document at `depth` (ancestor count, root = 0) files under a
116
+ * native parent edge. A document at depth 0 has no parent at all; the native
117
+ * edge covers depths 1 .. `nativeDepth - 1` — exactly one level of sub-issues
118
+ * (nativeDepth 2) leaves depth 2 and below to the block.
119
+ */
120
+ export declare function parentIsNative(depth: number, resolved: ResolvedHierarchy): boolean;
121
+ /**
122
+ * Build the managed-block entry carrying the degraded parent's **remote** id.
123
+ *
124
+ * The value is the remote id, not the local one, deliberately: the block must
125
+ * round-trip across boards. A fresh checkout pulling this remote has never
126
+ * seen the local id, but it resolves the remote id through the link store
127
+ * exactly as it resolves a native sub-issue parent. It is a `text` entry
128
+ * rather than an `id` link so the cell stays a plain token either way.
129
+ */
130
+ export declare function parentBlockEntry(parentRemoteId: string): {
131
+ name: string;
132
+ kind: 'text';
133
+ value: string;
134
+ };
135
+ /**
136
+ * Read the degraded parent's remote id back out of a remote body. Returns
137
+ * `undefined` when the body carries no managed block, when the block carries
138
+ * no `parent` row, or when a human left the cell empty — the caller then
139
+ * treats the issue as filed at the remote root.
140
+ */
141
+ export declare function parentRemoteIdFromBlock(body: string): string | undefined;
@@ -0,0 +1,129 @@
1
+ /**
2
+ * Hierarchy encoding — how a board's issue tree survives a flat or shallow
3
+ * tracker (LP-309).
4
+ *
5
+ * Two encodings, one board:
6
+ *
7
+ * - `sub-issues` — the remote's native parent edge (GitHub's sub-issues),
8
+ * for the levels the account supports (one native parent level on GitHub);
9
+ * - `labels` — the type label plus the parent id in the managed block,
10
+ * everywhere the native edge is not available.
11
+ *
12
+ * Which encoding a remote gets is decided per remote, at runtime, from the
13
+ * *resolved* capability table (`hierarchyDepth`) and an optional forced choice
14
+ * (`--hierarchy sub-issues|labels`). The module is pure: capabilities +
15
+ * hierarchy + option in, an encoding out — never an API version constant.
16
+ *
17
+ * The parent axis is the only thing this module owns. The *type* axis is the
18
+ * mapping's business (`mapping.ts`): a `lpm:epic` label is written and read by
19
+ * the translator whatever the encoding, and this module's `labels` kind means
20
+ * only "the parent rides the managed block, not a native edge".
21
+ *
22
+ * LP-493 adds the switch detection this module was missing: `HierarchyRecord`
23
+ * is the two fields a remote records after a successful sync, and
24
+ * `carrierChanged` answers "would this depth ride a different carrier under
25
+ * the newly resolved encoding?" — the signal `planPush` turns into a
26
+ * `reparent` op rather than a stale carrier left behind.
27
+ */
28
+ import { parseManagedBlock, parseManagedId } from './managed-block.js';
29
+ /** The field name the degraded parent's remote id rides under in the block. */
30
+ export const PARENT_FIELD = 'parent';
31
+ /** The `HierarchyRecord` a resolved encoding records. */
32
+ export function recordOf(resolved) {
33
+ return { kind: resolved.kind, nativeDepth: resolved.nativeDepth, anchor: resolved.anchor };
34
+ }
35
+ /**
36
+ * True when a document at `depth` (ancestor count, root = 0) would ride a
37
+ * different parent carrier under `resolved` than it did under `recorded`.
38
+ * Absent `recorded` (the first sync, or a store predating LP-493) or absent
39
+ * `resolved` answers false — there is nothing known to migrate.
40
+ */
41
+ export function carrierChanged(recorded, resolved, depth) {
42
+ if (recorded === undefined || resolved === undefined)
43
+ return false;
44
+ // The recorded shape carries a count and (since anchors) an end; rebuilding
45
+ // the span it implied is what lets a *changed anchor* migrate each twin in
46
+ // place rather than leaving half the board parented the old way.
47
+ const wasAnchor = recorded.anchor ?? 'root';
48
+ const deepest = Math.max(resolved.nativeFrom - 1, 0) + (resolved.nativeTo - resolved.nativeFrom) + 1;
49
+ const span = Math.max(recorded.nativeDepth - 1, 0);
50
+ const was = wasAnchor === 'leaf'
51
+ ? { nativeFrom: Math.max(1, deepest - span + 1), nativeTo: deepest }
52
+ : { nativeFrom: 1, nativeTo: span };
53
+ const wasNative = depth >= was.nativeFrom && depth <= was.nativeTo;
54
+ return wasNative !== parentIsNative(depth, resolved);
55
+ }
56
+ /**
57
+ * Resolve the hierarchy encoding for one remote.
58
+ *
59
+ * With no forced choice the capability decides: a remote that holds at least
60
+ * one native parent level is `sub-issues`, a flat one `labels`. `force`
61
+ * overrides that — a user who wants the same behaviour across accounts pins it
62
+ * (`labels` on a secondary account without sub-issues, or `sub-issues` on an
63
+ * account where the probe would otherwise read "flat").
64
+ */
65
+ export function resolveHierarchyEncoding(capabilities, hierarchy, options = {}) {
66
+ const depth = capabilities.hierarchyDepth;
67
+ const kind = options.force ?? (depth >= 1 ? 'sub-issues' : 'labels');
68
+ // `labels` never nests. `sub-issues` nests to the capability's depth; a
69
+ // forced `sub-issues` over a probe that read "flat" assumes one native
70
+ // level — the caller is asserting the account has the API.
71
+ const nativeDepth = kind === 'labels' ? 1 : depth >= 1 ? depth + 1 : 2;
72
+ const anchor = capabilities.hierarchyAnchor ?? 'root';
73
+ // Which depths' *parent edge* is native. Root-anchored, the chain starts at
74
+ // the first level below the root; leaf-anchored, it ends at the deepest level
75
+ // the board has, so the work items are what nest.
76
+ const deepest = Math.max(hierarchy.length - 1, 0);
77
+ const span = Math.max(nativeDepth - 1, 0);
78
+ const nativeFrom = anchor === 'leaf' ? Math.max(1, deepest - span + 1) : 1;
79
+ const nativeTo = anchor === 'leaf' ? deepest : span;
80
+ const degraded = [];
81
+ for (let level = 1; level < hierarchy.length; level += 1) {
82
+ if (level >= nativeFrom && level <= nativeTo)
83
+ continue;
84
+ const types = hierarchy[level] ?? [];
85
+ if (types.length > 0)
86
+ degraded.push({ depth: level, types: [...types] });
87
+ }
88
+ return { kind, nativeDepth, anchor, nativeFrom, nativeTo, degraded };
89
+ }
90
+ /**
91
+ * True when a document at `depth` (ancestor count, root = 0) files under a
92
+ * native parent edge. A document at depth 0 has no parent at all; the native
93
+ * edge covers depths 1 .. `nativeDepth - 1` — exactly one level of sub-issues
94
+ * (nativeDepth 2) leaves depth 2 and below to the block.
95
+ */
96
+ export function parentIsNative(depth, resolved) {
97
+ return depth >= resolved.nativeFrom && depth <= resolved.nativeTo;
98
+ }
99
+ // ---------------------------------------------------------------------------
100
+ // The block carrier (the `labels` encoding's parent)
101
+ // ---------------------------------------------------------------------------
102
+ /**
103
+ * Build the managed-block entry carrying the degraded parent's **remote** id.
104
+ *
105
+ * The value is the remote id, not the local one, deliberately: the block must
106
+ * round-trip across boards. A fresh checkout pulling this remote has never
107
+ * seen the local id, but it resolves the remote id through the link store
108
+ * exactly as it resolves a native sub-issue parent. It is a `text` entry
109
+ * rather than an `id` link so the cell stays a plain token either way.
110
+ */
111
+ export function parentBlockEntry(parentRemoteId) {
112
+ return { name: PARENT_FIELD, kind: 'text', value: parentRemoteId };
113
+ }
114
+ /**
115
+ * Read the degraded parent's remote id back out of a remote body. Returns
116
+ * `undefined` when the body carries no managed block, when the block carries
117
+ * no `parent` row, or when a human left the cell empty — the caller then
118
+ * treats the issue as filed at the remote root.
119
+ */
120
+ export function parentRemoteIdFromBlock(body) {
121
+ const parsed = parseManagedBlock(body);
122
+ if (!parsed.found)
123
+ return undefined;
124
+ const cell = parsed.fields[PARENT_FIELD];
125
+ if (cell === undefined || cell === '')
126
+ return undefined;
127
+ return parseManagedId(cell);
128
+ }
129
+ //# sourceMappingURL=hierarchy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hierarchy.js","sourceRoot":"","sources":["../../src/remote/hierarchy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAIH,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AA8BvE,+EAA+E;AAC/E,MAAM,CAAC,MAAM,YAAY,GAAG,QAAQ,CAAC;AAwCrC,yDAAyD;AACzD,MAAM,UAAU,QAAQ,CAAC,QAA2B;IAClD,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;AAC7F,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAC5B,QAAqC,EACrC,QAAuC,EACvC,KAAa;IAEb,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACnE,4EAA4E;IAC5E,2EAA2E;IAC3E,iEAAiE;IACjE,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,MAAM,CAAC;IAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACrG,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACnD,MAAM,GAAG,GACP,SAAS,KAAK,MAAM;QAClB,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE;QACpE,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACxC,MAAM,SAAS,GAAG,KAAK,IAAI,GAAG,CAAC,UAAU,IAAI,KAAK,IAAI,GAAG,CAAC,QAAQ,CAAC;IACnE,OAAO,SAAS,KAAK,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACvD,CAAC;AAQD;;;;;;;;GAQG;AACH,MAAM,UAAU,wBAAwB,CACtC,YAA8E,EAC9E,SAAqB,EACrB,UAA4B,EAAE;IAE9B,MAAM,KAAK,GAAG,YAAY,CAAC,cAAc,CAAC;IAC1C,MAAM,IAAI,GAAsB,OAAO,CAAC,KAAK,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACxF,wEAAwE;IACxE,uEAAuE;IACvE,2DAA2D;IAC3D,MAAM,WAAW,GAAG,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvE,MAAM,MAAM,GAAoB,YAAY,CAAC,eAAe,IAAI,MAAM,CAAC;IAEvE,4EAA4E;IAC5E,8EAA8E;IAC9E,kDAAkD;IAClD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1C,MAAM,UAAU,GAAG,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,MAAM,QAAQ,GAAG,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IAEpD,MAAM,QAAQ,GAAoB,EAAE,CAAC;IACrC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACzD,IAAI,KAAK,IAAI,UAAU,IAAI,KAAK,IAAI,QAAQ;YAAE,SAAS;QACvD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACrC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AACvE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,QAA2B;IACvE,OAAO,KAAK,IAAI,QAAQ,CAAC,UAAU,IAAI,KAAK,IAAI,QAAQ,CAAC,QAAQ,CAAC;AACpE,CAAC;AAED,8EAA8E;AAC9E,qDAAqD;AACrD,8EAA8E;AAE9E;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAC,cAAsB;IAKrD,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;AACrE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,CAAC,MAAM,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IACpC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACzC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IACxD,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,145 @@
1
+ /**
2
+ * Remote sync layer.
3
+ *
4
+ * Knows how to mirror an `.lpm` board onto an external tracker and back. Sits
5
+ * above the engine, beside `src/sync`: it may import `src/core`, `src/shared`
6
+ * and `src/sync`, and nothing in `src/core` may import it.
7
+ *
8
+ * The *reasoning* behind the choices this folder makes — why the link store
9
+ * rather than a frontmatter field, why the base snapshot, the degradation
10
+ * ladder, pull-as-push, and the two-connector split — is the design record,
11
+ * `docs/remote-sync.md`. This comment and that document are the two things
12
+ * that keep a provider from growing reshaping logic.
13
+ *
14
+ * links.ts the correspondence store — which document is which remote issue
15
+ * managed-block.ts the rung-4 codec: write fields into the body idempotently
16
+ * and parse them back out (LP-276, LP-277)
17
+ * managed-comment.ts the rung-5 codec: the same block as a comment when the
18
+ * body is not writable (LP-278)
19
+ * remotes.ts declared remotes from config (LP-252)
20
+ * scope.ts which subtree a remote mirrors, and nothing else (LP-261)
21
+ * shape.ts hierarchy/type divergence report — reparent, retype, scope
22
+ * exit — reported, never silently applied (LP-368)
23
+ * lifecycle.ts the state of each correspondence (LP-361)
24
+ * adopt.ts adopt an existing remote issue into a document, and read
25
+ * the managed-block pairing a re-cloned board offers (LP-367)
26
+ * mapping.ts board vocabulary ↔ remote vocabulary (LP-362)
27
+ * attributes.ts attribute coercion, both directions (LP-270)
28
+ * accounts.ts resource ↔ account mapping, pools to a label (LP-271)
29
+ * periods.ts period ↔ container mapping (LP-272, LP-313)
30
+ * capabilities.ts what a provider can hold as data, plus probed cells (LP-274)
31
+ * ladder.ts the degradation ladder as a report: the rung each construct
32
+ * lands on, and why (LP-275)
33
+ * labels.ts label reconciliation: the claimed set, the push merge, and
34
+ * what `provision` creates (LP-308)
35
+ * ledger.ts which remote owns which document, derived from every link
36
+ * store — the one-remote-per-document rule. A push reports a
37
+ * document another remote holds (`skipped: owned_elsewhere`);
38
+ * an explicit link is refused.
39
+ * provider.ts the four-member shape every provider adapter conforms to
40
+ * transport/ the Connector contract that knows nothing about boards —
41
+ * REST, GraphQL and `gh` connectors (LP-293), plus the
42
+ * reliability decorators that slow a sync down instead of
43
+ * falling over: retry/backoff and the request budget
44
+ * (LP-297). Imported directly, never re-exported here: its
45
+ * `Connector` and `RemoteRequest` are transport vocabulary
46
+ * and would collide with the board-vocabulary ones in
47
+ * `provider.ts`.
48
+ * transport-error.ts the seam that wraps a transport `RemoteError` into a
49
+ * `BoardError` (LP-294).
50
+ * registry.ts provider name → implementation (LP-260)
51
+ * connection-catalogue.ts what connecting to each provider asks for —
52
+ * fields, credential keys, conditional keys — derived from
53
+ * the providers, for every front end that asks
54
+ * connection.ts connect, store a credential, change a connection — the
55
+ * refusals every caller without a terminal must share
56
+ * inspect.ts ask a remote about itself: reachability, discovery,
57
+ * vocabulary and prerequisites, as a report
58
+ * check.ts remote config as a check pass, composed by `lpm check` (LP-262)
59
+ * preflight.ts every unmappable value, collected before a push writes (LP-273)
60
+ * prerequisites.ts what the remote must already have for a push to land —
61
+ * labels, sprints, Project fields — created by the push itself
62
+ * plan.ts planPush / planPull — pure functions, no I/O (LP-280, LP-281)
63
+ * merge.ts the field-by-field three-way merge (LP-284)
64
+ * policy.ts conflict resolution by policy, per remote and per field (LP-286)
65
+ * resolutions.ts the pending decisions `lpm remote resolve` records (LP-287)
66
+ * audit.ts the sync audit log — one JSONL line per applied sync (LP-352)
67
+ * conflicts.ts the merge across a document: policy and resolutions applied (LP-287)
68
+ * render.ts a plan as a diff, for --dry-run and the web preview (LP-282)
69
+ * redact.ts the one place a secret value becomes `***` (LP-296)
70
+ * fixtures.ts record real traffic to fixtures, scrubbed, and replay it
71
+ * offline (LP-301)
72
+ * pull.ts the pull applier — applyChanges + link bookkeeping (LP-281)
73
+ * execute.ts push-side applier (LP-490)
74
+ * guard.ts the write-confirmation gate — first write, threshold, and the
75
+ * every-run delete gate (LP-350, LP-351)
76
+ * sync.ts the sync session — one remote, planned then rendered or
77
+ * applied, for `lpm remote push|pull|sync` (LP-341)
78
+ * scaffold.ts the mapping scaffold — draft a `mapping:` block from board
79
+ * config × capability descriptor (LP-369)
80
+ * fingerprint.ts mapping fingerprint — detect a mapping change before it
81
+ * manufactures phantom conflicts (LP-370)
82
+ * rebase.ts re-base a board onto a changed mapping as an explicit
83
+ * operation (LP-371)
84
+ *
85
+ * ## The check layering, decided
86
+ *
87
+ * Core's `validation/check.ts` may not import this folder, so `checkBoard`
88
+ * knows nothing about remotes — not even a dangling `scope`. All remote checks
89
+ * live in `check.ts` and are composed by the CLI (`lpm check` calls
90
+ * `checkBoard` then `checkRemoteConfiguration`). Keep it that way: a remote check added to core is the same layering
91
+ * mistake this boundary exists to prevent.
92
+ */
93
+ export * from './accounts.js';
94
+ export * from './adopt.js';
95
+ export * from './audit.js';
96
+ export * from './attributes.js';
97
+ export * from './capabilities.js';
98
+ export * from './check.js';
99
+ export * from './comments.js';
100
+ export * from './config-file.js';
101
+ export * from './conflicts.js';
102
+ export * from './coverage.js';
103
+ export * from './credentials.js';
104
+ export * from './execute.js';
105
+ export * from './fingerprint.js';
106
+ export * from './fixtures.js';
107
+ export * from './guard.js';
108
+ export * from './hierarchy.js';
109
+ export * from './ladder.js';
110
+ export * from './labels.js';
111
+ export * from './connection-catalogue.js';
112
+ export * from './connection.js';
113
+ export * from './inspect.js';
114
+ export * from './ledger.js';
115
+ export * from './lifecycle.js';
116
+ export * from './links.js';
117
+ export * from './managed-block.js';
118
+ export * from './managed-comment.js';
119
+ export * from './mapping.js';
120
+ export * from './merge.js';
121
+ export * from './periods.js';
122
+ export * from './plan.js';
123
+ export * from './policy.js';
124
+ export * from './preflight.js';
125
+ export * from './prerequisites.js';
126
+ export * from './provider.js';
127
+ export * from './provision.js';
128
+ export * from './pull.js';
129
+ export * from './rebase.js';
130
+ export * from './readiness.js';
131
+ export * from './reconcile.js';
132
+ export * from './redact.js';
133
+ export * from './registry.js';
134
+ export * from './remotes.js';
135
+ export * from './render.js';
136
+ export * from './report.js';
137
+ export * from './resolutions.js';
138
+ export * from './scaffold.js';
139
+ export * from './scope.js';
140
+ export * from './selection.js';
141
+ export * from './shape.js';
142
+ export * from './status.js';
143
+ export * from './vocabulary.js';
144
+ export * from './sync.js';
145
+ export * from './transport-error.js';