codebyplan 1.13.65 → 1.13.66

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 (293) hide show
  1. package/README.md +118 -75
  2. package/dist/__tests__/helpers.d.ts +22 -0
  3. package/dist/__tests__/helpers.d.ts.map +1 -0
  4. package/dist/ci-public.d.ts +20 -0
  5. package/dist/ci-public.d.ts.map +1 -0
  6. package/dist/ci.js +11 -2
  7. package/dist/cli/arch-map.d.ts +33 -0
  8. package/dist/cli/arch-map.d.ts.map +1 -0
  9. package/dist/cli/branch.d.ts +10 -0
  10. package/dist/cli/branch.d.ts.map +1 -0
  11. package/dist/cli/bump.d.ts +12 -0
  12. package/dist/cli/bump.d.ts.map +1 -0
  13. package/dist/cli/cd.d.ts +20 -0
  14. package/dist/cli/cd.d.ts.map +1 -0
  15. package/dist/cli/check.d.ts +30 -0
  16. package/dist/cli/check.d.ts.map +1 -0
  17. package/dist/cli/checkpoint.d.ts +17 -0
  18. package/dist/cli/checkpoint.d.ts.map +1 -0
  19. package/dist/cli/ci.d.ts +31 -0
  20. package/dist/cli/ci.d.ts.map +1 -0
  21. package/dist/cli/claude/__test-helpers__/expect-manifest.d.ts +7 -0
  22. package/dist/cli/claude/__test-helpers__/expect-manifest.d.ts.map +1 -0
  23. package/dist/cli/claude/__test-helpers__/tmp-fixture.d.ts +64 -0
  24. package/dist/cli/claude/__test-helpers__/tmp-fixture.d.ts.map +1 -0
  25. package/dist/cli/claude/audit-mode.d.ts +16 -0
  26. package/dist/cli/claude/audit-mode.d.ts.map +1 -0
  27. package/dist/cli/claude/generate.d.ts +23 -0
  28. package/dist/cli/claude/generate.d.ts.map +1 -0
  29. package/dist/cli/claude/install.d.ts +55 -0
  30. package/dist/cli/claude/install.d.ts.map +1 -0
  31. package/dist/cli/claude/migrate-memory.d.ts +117 -0
  32. package/dist/cli/claude/migrate-memory.d.ts.map +1 -0
  33. package/dist/cli/claude/readme.d.ts +28 -0
  34. package/dist/cli/claude/readme.d.ts.map +1 -0
  35. package/dist/cli/claude/status.d.ts +41 -0
  36. package/dist/cli/claude/status.d.ts.map +1 -0
  37. package/dist/cli/claude/uninstall.d.ts +21 -0
  38. package/dist/cli/claude/uninstall.d.ts.map +1 -0
  39. package/dist/cli/claude/update.d.ts +25 -0
  40. package/dist/cli/claude/update.d.ts.map +1 -0
  41. package/dist/cli/claude/verify-parity.d.ts +25 -0
  42. package/dist/cli/claude/verify-parity.d.ts.map +1 -0
  43. package/dist/cli/cleanup-plan-folders.d.ts +21 -0
  44. package/dist/cli/cleanup-plan-folders.d.ts.map +1 -0
  45. package/dist/cli/commit.d.ts +25 -0
  46. package/dist/cli/commit.d.ts.map +1 -0
  47. package/dist/cli/config.d.ts +50 -0
  48. package/dist/cli/config.d.ts.map +1 -0
  49. package/dist/cli/confirm.d.ts +9 -0
  50. package/dist/cli/confirm.d.ts.map +1 -0
  51. package/dist/cli/create-org.d.ts +9 -0
  52. package/dist/cli/create-org.d.ts.map +1 -0
  53. package/dist/cli/create-project.d.ts +10 -0
  54. package/dist/cli/create-project.d.ts.map +1 -0
  55. package/dist/cli/create-repo.d.ts +14 -0
  56. package/dist/cli/create-repo.d.ts.map +1 -0
  57. package/dist/cli/docs.d.ts +41 -0
  58. package/dist/cli/docs.d.ts.map +1 -0
  59. package/dist/cli/doctor.d.ts +17 -0
  60. package/dist/cli/doctor.d.ts.map +1 -0
  61. package/dist/cli/e2e/verify-round.d.ts +46 -0
  62. package/dist/cli/e2e/verify-round.d.ts.map +1 -0
  63. package/dist/cli/e2e.d.ts +11 -0
  64. package/dist/cli/e2e.d.ts.map +1 -0
  65. package/dist/cli/eslint.d.ts +20 -0
  66. package/dist/cli/eslint.d.ts.map +1 -0
  67. package/dist/cli/export-writer.d.ts +99 -0
  68. package/dist/cli/export-writer.d.ts.map +1 -0
  69. package/dist/cli/handoff.d.ts +13 -0
  70. package/dist/cli/handoff.d.ts.map +1 -0
  71. package/dist/cli/login.d.ts +10 -0
  72. package/dist/cli/login.d.ts.map +1 -0
  73. package/dist/cli/logout.d.ts +2 -0
  74. package/dist/cli/logout.d.ts.map +1 -0
  75. package/dist/cli/lsp.d.ts +16 -0
  76. package/dist/cli/lsp.d.ts.map +1 -0
  77. package/dist/cli/migration-collisions.d.ts +10 -0
  78. package/dist/cli/migration-collisions.d.ts.map +1 -0
  79. package/dist/cli/ports.d.ts +29 -0
  80. package/dist/cli/ports.d.ts.map +1 -0
  81. package/dist/cli/process-exit-signal.d.ts +24 -0
  82. package/dist/cli/process-exit-signal.d.ts.map +1 -0
  83. package/dist/cli/round.d.ts +79 -0
  84. package/dist/cli/round.d.ts.map +1 -0
  85. package/dist/cli/scaffold-publish-workflow.d.ts +16 -0
  86. package/dist/cli/scaffold-publish-workflow.d.ts.map +1 -0
  87. package/dist/cli/session/freshness-gate.d.ts +21 -0
  88. package/dist/cli/session/freshness-gate.d.ts.map +1 -0
  89. package/dist/cli/session/home-ff.d.ts +16 -0
  90. package/dist/cli/session/home-ff.d.ts.map +1 -0
  91. package/dist/cli/session/infra-files.d.ts +21 -0
  92. package/dist/cli/session/infra-files.d.ts.map +1 -0
  93. package/dist/cli/session/start.d.ts +70 -0
  94. package/dist/cli/session/start.d.ts.map +1 -0
  95. package/dist/cli/session.d.ts +17 -0
  96. package/dist/cli/session.d.ts.map +1 -0
  97. package/dist/cli/setup.d.ts +2 -0
  98. package/dist/cli/setup.d.ts.map +1 -0
  99. package/dist/cli/ship.d.ts +16 -0
  100. package/dist/cli/ship.d.ts.map +1 -0
  101. package/dist/cli/slug.d.ts +10 -0
  102. package/dist/cli/slug.d.ts.map +1 -0
  103. package/dist/cli/standalone-task.d.ts +31 -0
  104. package/dist/cli/standalone-task.d.ts.map +1 -0
  105. package/dist/cli/statusline.d.ts +10 -0
  106. package/dist/cli/statusline.d.ts.map +1 -0
  107. package/dist/cli/supabase/new-migration.d.ts +24 -0
  108. package/dist/cli/supabase/new-migration.d.ts.map +1 -0
  109. package/dist/cli/supabase/preview-check.d.ts +30 -0
  110. package/dist/cli/supabase/preview-check.d.ts.map +1 -0
  111. package/dist/cli/supabase/resolve-preview.d.ts +19 -0
  112. package/dist/cli/supabase/resolve-preview.d.ts.map +1 -0
  113. package/dist/cli/supabase/teardown-preview.d.ts +22 -0
  114. package/dist/cli/supabase/teardown-preview.d.ts.map +1 -0
  115. package/dist/cli/sync.d.ts +13 -0
  116. package/dist/cli/sync.d.ts.map +1 -0
  117. package/dist/cli/task.d.ts +17 -0
  118. package/dist/cli/task.d.ts.map +1 -0
  119. package/dist/cli/tech-stack.d.ts +11 -0
  120. package/dist/cli/tech-stack.d.ts.map +1 -0
  121. package/dist/cli/upgrade-auth.d.ts +2 -0
  122. package/dist/cli/upgrade-auth.d.ts.map +1 -0
  123. package/dist/cli/upload-e2e-images.d.ts +18 -0
  124. package/dist/cli/upload-e2e-images.d.ts.map +1 -0
  125. package/dist/cli/validate-waves.d.ts +22 -0
  126. package/dist/cli/validate-waves.d.ts.map +1 -0
  127. package/dist/cli/version-status.d.ts +42 -0
  128. package/dist/cli/version-status.d.ts.map +1 -0
  129. package/dist/cli/watch.d.ts +18 -0
  130. package/dist/cli/watch.d.ts.map +1 -0
  131. package/dist/cli/whoami.d.ts +5 -0
  132. package/dist/cli/whoami.d.ts.map +1 -0
  133. package/dist/cli/worktree/add.d.ts +81 -0
  134. package/dist/cli/worktree/add.d.ts.map +1 -0
  135. package/dist/cli/worktree/create.d.ts +46 -0
  136. package/dist/cli/worktree/create.d.ts.map +1 -0
  137. package/dist/cli/worktree/path.d.ts +19 -0
  138. package/dist/cli/worktree/path.d.ts.map +1 -0
  139. package/dist/cli/worktree/remove.d.ts +60 -0
  140. package/dist/cli/worktree/remove.d.ts.map +1 -0
  141. package/dist/cli/worktree.d.ts +15 -0
  142. package/dist/cli/worktree.d.ts.map +1 -0
  143. package/dist/cli.js +5613 -5328
  144. package/dist/dispatch.d.ts +64 -0
  145. package/dist/dispatch.d.ts.map +1 -0
  146. package/dist/index.d.ts +2 -0
  147. package/dist/index.d.ts.map +1 -0
  148. package/dist/lib/agents-generator.d.ts +42 -0
  149. package/dist/lib/agents-generator.d.ts.map +1 -0
  150. package/dist/lib/api.d.ts +54 -0
  151. package/dist/lib/api.d.ts.map +1 -0
  152. package/dist/lib/atomic-write.d.ts +27 -0
  153. package/dist/lib/atomic-write.d.ts.map +1 -0
  154. package/dist/lib/branch-checkout.d.ts +47 -0
  155. package/dist/lib/branch-checkout.d.ts.map +1 -0
  156. package/dist/lib/branch-port-resolver.d.ts +58 -0
  157. package/dist/lib/branch-port-resolver.d.ts.map +1 -0
  158. package/dist/lib/bump.d.ts +97 -0
  159. package/dist/lib/bump.d.ts.map +1 -0
  160. package/dist/lib/cd-init.d.ts +86 -0
  161. package/dist/lib/cd-init.d.ts.map +1 -0
  162. package/dist/lib/check-baseline.d.ts +91 -0
  163. package/dist/lib/check-baseline.d.ts.map +1 -0
  164. package/dist/lib/check.d.ts +178 -0
  165. package/dist/lib/check.d.ts.map +1 -0
  166. package/dist/lib/ci-init.d.ts +106 -0
  167. package/dist/lib/ci-init.d.ts.map +1 -0
  168. package/dist/lib/ci-resolve.d.ts +60 -0
  169. package/dist/lib/ci-resolve.d.ts.map +1 -0
  170. package/dist/lib/claude-mode-audit.d.ts +41 -0
  171. package/dist/lib/claude-mode-audit.d.ts.map +1 -0
  172. package/dist/lib/claude-plan.d.ts +34 -0
  173. package/dist/lib/claude-plan.d.ts.map +1 -0
  174. package/dist/lib/commit-scope.d.ts +21 -0
  175. package/dist/lib/commit-scope.d.ts.map +1 -0
  176. package/dist/lib/e2e.d.ts +157 -0
  177. package/dist/lib/e2e.d.ts.map +1 -0
  178. package/dist/lib/eslint-generator.d.ts +86 -0
  179. package/dist/lib/eslint-generator.d.ts.map +1 -0
  180. package/dist/lib/file-lock.d.ts +44 -0
  181. package/dist/lib/file-lock.d.ts.map +1 -0
  182. package/dist/lib/flags.d.ts +115 -0
  183. package/dist/lib/flags.d.ts.map +1 -0
  184. package/dist/lib/gh-required-checks.d.ts +76 -0
  185. package/dist/lib/gh-required-checks.d.ts.map +1 -0
  186. package/dist/lib/git-utils.d.ts +46 -0
  187. package/dist/lib/git-utils.d.ts.map +1 -0
  188. package/dist/lib/gitignore-block.d.ts +32 -0
  189. package/dist/lib/gitignore-block.d.ts.map +1 -0
  190. package/dist/lib/gitignore-detect.d.ts +117 -0
  191. package/dist/lib/gitignore-detect.d.ts.map +1 -0
  192. package/dist/lib/handoff-file.d.ts +63 -0
  193. package/dist/lib/handoff-file.d.ts.map +1 -0
  194. package/dist/lib/hash.d.ts +9 -0
  195. package/dist/lib/hash.d.ts.map +1 -0
  196. package/dist/lib/lsp-detect.d.ts +42 -0
  197. package/dist/lib/lsp-detect.d.ts.map +1 -0
  198. package/dist/lib/manifest.d.ts +88 -0
  199. package/dist/lib/manifest.d.ts.map +1 -0
  200. package/dist/lib/mcp-client.d.ts +39 -0
  201. package/dist/lib/mcp-client.d.ts.map +1 -0
  202. package/dist/lib/migrate-branch-model.d.ts +34 -0
  203. package/dist/lib/migrate-branch-model.d.ts.map +1 -0
  204. package/dist/lib/migrate-local-config.d.ts +39 -0
  205. package/dist/lib/migrate-local-config.d.ts.map +1 -0
  206. package/dist/lib/migration-collisions.d.ts +61 -0
  207. package/dist/lib/migration-collisions.d.ts.map +1 -0
  208. package/dist/lib/port-verify.d.ts +73 -0
  209. package/dist/lib/port-verify.d.ts.map +1 -0
  210. package/dist/lib/prompt.d.ts +41 -0
  211. package/dist/lib/prompt.d.ts.map +1 -0
  212. package/dist/lib/readme-generator.d.ts +108 -0
  213. package/dist/lib/readme-generator.d.ts.map +1 -0
  214. package/dist/lib/repo-reader.d.ts +59 -0
  215. package/dist/lib/repo-reader.d.ts.map +1 -0
  216. package/dist/lib/scaffold-cd-workflow.d.ts +48 -0
  217. package/dist/lib/scaffold-cd-workflow.d.ts.map +1 -0
  218. package/dist/lib/scaffold-ci-workflow.d.ts +83 -0
  219. package/dist/lib/scaffold-ci-workflow.d.ts.map +1 -0
  220. package/dist/lib/scaffold-publish-workflow.d.ts +48 -0
  221. package/dist/lib/scaffold-publish-workflow.d.ts.map +1 -0
  222. package/dist/lib/server-detect.d.ts +20 -0
  223. package/dist/lib/server-detect.d.ts.map +1 -0
  224. package/dist/lib/session.d.ts +371 -0
  225. package/dist/lib/session.d.ts.map +1 -0
  226. package/dist/lib/settings-merge.d.ts +268 -0
  227. package/dist/lib/settings-merge.d.ts.map +1 -0
  228. package/dist/lib/ship.d.ts +84 -0
  229. package/dist/lib/ship.d.ts.map +1 -0
  230. package/dist/lib/slug.d.ts +26 -0
  231. package/dist/lib/slug.d.ts.map +1 -0
  232. package/dist/lib/spawn.d.ts +12 -0
  233. package/dist/lib/spawn.d.ts.map +1 -0
  234. package/dist/lib/state-client.d.ts +54 -0
  235. package/dist/lib/state-client.d.ts.map +1 -0
  236. package/dist/lib/state-store.d.ts +153 -0
  237. package/dist/lib/state-store.d.ts.map +1 -0
  238. package/dist/lib/state-sync.d.ts +101 -0
  239. package/dist/lib/state-sync.d.ts.map +1 -0
  240. package/dist/lib/statusline-config.d.ts +55 -0
  241. package/dist/lib/statusline-config.d.ts.map +1 -0
  242. package/dist/lib/structure-generator.d.ts +63 -0
  243. package/dist/lib/structure-generator.d.ts.map +1 -0
  244. package/dist/lib/supabase.d.ts +87 -0
  245. package/dist/lib/supabase.d.ts.map +1 -0
  246. package/dist/lib/sync-approvals.d.ts +108 -0
  247. package/dist/lib/sync-approvals.d.ts.map +1 -0
  248. package/dist/lib/tech-detect.d.ts +77 -0
  249. package/dist/lib/tech-detect.d.ts.map +1 -0
  250. package/dist/lib/template-walker.d.ts +26 -0
  251. package/dist/lib/template-walker.d.ts.map +1 -0
  252. package/dist/lib/templates-dir.d.ts +25 -0
  253. package/dist/lib/templates-dir.d.ts.map +1 -0
  254. package/dist/lib/types.d.ts +843 -0
  255. package/dist/lib/types.d.ts.map +1 -0
  256. package/dist/lib/validate-waves.d.ts +38 -0
  257. package/dist/lib/validate-waves.d.ts.map +1 -0
  258. package/dist/lib/verify-parity.d.ts +154 -0
  259. package/dist/lib/verify-parity.d.ts.map +1 -0
  260. package/dist/lib/version.d.ts +3 -0
  261. package/dist/lib/version.d.ts.map +1 -0
  262. package/dist/lib/watch-daemon.d.ts +114 -0
  263. package/dist/lib/watch-daemon.d.ts.map +1 -0
  264. package/dist/lib/worktree.d.ts +56 -0
  265. package/dist/lib/worktree.d.ts.map +1 -0
  266. package/dist/oauth/browser.d.ts +8 -0
  267. package/dist/oauth/browser.d.ts.map +1 -0
  268. package/dist/oauth/client-registration.d.ts +16 -0
  269. package/dist/oauth/client-registration.d.ts.map +1 -0
  270. package/dist/oauth/device-flow.d.ts +40 -0
  271. package/dist/oauth/device-flow.d.ts.map +1 -0
  272. package/dist/oauth/jwt-decode.d.ts +10 -0
  273. package/dist/oauth/jwt-decode.d.ts.map +1 -0
  274. package/dist/oauth/keychain.d.ts +17 -0
  275. package/dist/oauth/keychain.d.ts.map +1 -0
  276. package/dist/oauth/token-refresh.d.ts +7 -0
  277. package/dist/oauth/token-refresh.d.ts.map +1 -0
  278. package/dist/oauth/types.d.ts +28 -0
  279. package/dist/oauth/types.d.ts.map +1 -0
  280. package/dist/oauth/urls.d.ts +16 -0
  281. package/dist/oauth/urls.d.ts.map +1 -0
  282. package/package.json +5 -6
  283. package/templates/agents/cbp-security-agent.md +0 -1
  284. package/templates/agents/cbp-stripe-agent.md +0 -1
  285. package/templates/agents/cbp-testing-qa-agent.md +0 -1
  286. package/templates/hooks/cbp-skill-context-guard.sh +0 -1
  287. package/templates/hooks/validate-structure-lib.sh +36 -9
  288. package/templates/skills/cbp-checkpoint-check/SKILL.md +0 -1
  289. package/templates/skills/cbp-clear-continue/SKILL.md +0 -1
  290. package/templates/skills/cbp-clear-prep/SKILL.md +0 -1
  291. package/templates/skills/cbp-setup-cd/SKILL.md +0 -1
  292. package/templates/skills/cbp-setup-ci/SKILL.md +0 -1
  293. package/templates/skills/cbp-stripe/SKILL.md +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify-round.d.ts","sourceRoot":"","sources":["../../../src/cli/e2e/verify-round.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,OAAO,EAAe,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAO1D,UAAU,YAAY;IACpB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,QAAQ;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACxD,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;AAMD,MAAM,WAAW,eAAe;IAC9B,6FAA6F;IAC7F,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrD,6EAA6E;IAC7E,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IAC1D,sDAAsD;IACtD,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAoBD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,iBAAiB,CAAC;CAC3B;AAMD,wBAAsB,OAAO,CAC3B,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC,CAwFf"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * CLI handler for `codebyplan e2e <subcommand>`.
3
+ *
4
+ * Two-level subcommand dispatcher — no Commander dependency.
5
+ * Mirrors the runWorktreeCommand shape from cli/worktree.ts.
6
+ *
7
+ * Subcommands:
8
+ * verify-round Verify the three E2E hard-fails for a completed round
9
+ */
10
+ export declare function runE2eCommand(args: string[]): Promise<number>;
11
+ //# sourceMappingURL=e2e.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"e2e.d.ts","sourceRoot":"","sources":["../../src/cli/e2e.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA2BnE"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * CLI eslint command — init ESLint configs.
3
+ *
4
+ * `codebyplan eslint init` — Detect tech stack, resolve presets, generate config, install deps
5
+ */
6
+ /**
7
+ * Auto-detect package-specific ESLint ignore patterns based on files present
8
+ * in the target directory. Returns a list of glob patterns to add to the
9
+ * generated config's `ignores:` array.
10
+ *
11
+ * Signals:
12
+ * - `esbuild.js` or `esbuild.<variant>.{mjs,cjs,js}` → add each filename
13
+ * - `vitest.config.{ts,mts,js,mjs}` → add matching filename
14
+ * - `vite.config.{ts,mts,js,mjs}` → add matching filename
15
+ * - `tauri.conf.json` → add `src-tauri` glob AND `.d.ts` glob
16
+ */
17
+ export declare function autoDetectIgnorePatterns(absPath: string): Promise<string[]>;
18
+ export declare function eslintInit(repoId: string, projectPath: string): Promise<void>;
19
+ export declare function runEslint(): Promise<void>;
20
+ //# sourceMappingURL=eslint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eslint.d.ts","sourceRoot":"","sources":["../../src/cli/eslint.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAqCH;;;;;;;;;;GAUG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,EAAE,CAAC,CAwDnB;AA+ED,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAuPf;AAMD,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAmB/C"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Shared export helper for checkpoint and standalone-task workflow data.
3
+ *
4
+ * This module is intentionally PURE — no process.exit, no process.argv reads,
5
+ * no side-effectful imports beyond node:fs. Every function takes explicit args
6
+ * and returns a value so it is straightforwardly unit-testable.
7
+ *
8
+ * Data sources:
9
+ * - Checkpoint: REST apiGet (GET /checkpoints/:id, GET /tasks?checkpoint_id=)
10
+ * - Rounds per task: MCP mcpCall('get_rounds', { task_id })
11
+ * - Standalone task: MCP mcpCall('get_standalone_tasks', { repo_id })
12
+ * - Standalone rounds: MCP mcpCall('get_standalone_rounds', { standalone_task_id })
13
+ *
14
+ * Export artifact layout (written by writeExportArtifacts):
15
+ * .codebyplan/exports/{N}/export.json — machine-readable
16
+ * .codebyplan/exports/{N}/summary.md — human-readable
17
+ *
18
+ * export.json schema (schema_version: 1):
19
+ * { schema_version, exported_at, checkpoint_id|standalone_task_id,
20
+ * number, title, status, completed_at, context, files_changed, qa,
21
+ * tasks: [{ id, number, title, status, completed_at, files_changed, qa,
22
+ * rounds: [{ id, number, status, files_changed, context }] }] }
23
+ */
24
+ export declare const EXPORT_SCHEMA_VERSION = 1;
25
+ export interface ExportRound {
26
+ id: string;
27
+ number: number;
28
+ status: string;
29
+ files_changed: unknown[];
30
+ context: unknown;
31
+ }
32
+ export interface ExportTask {
33
+ id: string;
34
+ number: number;
35
+ title: string | null;
36
+ status: string;
37
+ completed_at: string | null;
38
+ files_changed: unknown[];
39
+ qa: unknown;
40
+ rounds: ExportRound[];
41
+ }
42
+ export interface CheckpointExportData {
43
+ schema_version: typeof EXPORT_SCHEMA_VERSION;
44
+ exported_at: string;
45
+ checkpoint_id: string;
46
+ number: number;
47
+ /** Checkpoint sync_seq at export time — used as the stamp's OCC token. */
48
+ sync_seq?: number;
49
+ title: string | null;
50
+ status: string;
51
+ completed_at: string | null;
52
+ context: unknown;
53
+ files_changed: unknown[];
54
+ qa: unknown;
55
+ tasks: ExportTask[];
56
+ }
57
+ export interface StandaloneExportData {
58
+ schema_version: typeof EXPORT_SCHEMA_VERSION;
59
+ exported_at: string;
60
+ standalone_task_id: string;
61
+ number: number;
62
+ title: string;
63
+ status: string;
64
+ completed_at: string | null;
65
+ context: unknown;
66
+ files_changed: unknown[];
67
+ qa: unknown;
68
+ tasks: ExportTask[];
69
+ }
70
+ export type ExportData = CheckpointExportData | StandaloneExportData;
71
+ /**
72
+ * Fetch checkpoint + tasks + rounds from the API/MCP and assemble the export
73
+ * object. Does NOT write to disk.
74
+ *
75
+ * Transport:
76
+ * - Checkpoint: REST GET /checkpoints/:id
77
+ * - Tasks: REST GET /tasks?checkpoint_id= (the route exists and
78
+ * accepts this filter — verified against apps/web routes)
79
+ * - Rounds: MCP get_rounds({ task_id })
80
+ */
81
+ export declare function buildCheckpointExport(checkpointId: string): Promise<CheckpointExportData>;
82
+ /**
83
+ * Fetch standalone task + rounds from MCP and assemble the export object.
84
+ * Does NOT write to disk.
85
+ */
86
+ export declare function buildStandaloneExport(taskId: string, repoRoot: string, repoIdHint?: string): Promise<StandaloneExportData>;
87
+ /**
88
+ * Pure markdown renderer. No I/O.
89
+ */
90
+ export declare function renderSummaryMd(data: ExportData): string;
91
+ /**
92
+ * Write export.json and summary.md into outDir (created recursively).
93
+ * Returns the paths written.
94
+ */
95
+ export declare function writeExportArtifacts(outDir: string, exportData: ExportData, summaryMd: string): {
96
+ exportJsonPath: string;
97
+ summaryMdPath: string;
98
+ };
99
+ //# sourceMappingURL=export-writer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-writer.d.ts","sourceRoot":"","sources":["../../src/cli/export-writer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAWH,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAMvC,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,OAAO,EAAE,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,EAAE,OAAO,EAAE,CAAC;IACzB,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,OAAO,qBAAqB,CAAC;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,OAAO,EAAE,CAAC;IACzB,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,OAAO,qBAAqB,CAAC;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,OAAO,EAAE,CAAC;IACzB,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB;AAED,MAAM,MAAM,UAAU,GAAG,oBAAoB,GAAG,oBAAoB,CAAC;AAiDrE;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CACzC,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,oBAAoB,CAAC,CA2D/B;AAMD;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,oBAAoB,CAAC,CAgE/B;AAMD;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAsExD;AAMD;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,MAAM,GAChB;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CAcnD"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * CLI handler for `codebyplan handoff <subcommand>`.
3
+ *
4
+ * Two-level subcommand dispatcher — no Commander dependency.
5
+ * Subcommands:
6
+ * read --level <l> [--number N] [--task T] Print current content
7
+ * write --level <l> [--number N] [--task T] --content Replace content
8
+ * append --level <l> [--number N] [--task T] --content Append to existing
9
+ * clear --level <l> [--number N] [--task T] Empty + delete file
10
+ * status [--json] List non-empty handoffs
11
+ */
12
+ export declare function runHandoffCommand(args: string[]): Promise<void>;
13
+ //# sourceMappingURL=handoff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handoff.d.ts","sourceRoot":"","sources":["../../src/cli/handoff.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAgZH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsCrE"}
@@ -0,0 +1,10 @@
1
+ export declare function fetchEmail(accessToken: string): Promise<string | null>;
2
+ export interface LoginResult {
3
+ user_id: string;
4
+ email: string | null;
5
+ }
6
+ export interface LoginOptions {
7
+ admin?: boolean;
8
+ }
9
+ export declare function runLogin(options?: LoginOptions): Promise<LoginResult>;
10
+ //# sourceMappingURL=login.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/cli/login.ts"],"names":[],"mappings":"AAQA,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAe5E;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,QAAQ,CAC5B,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,WAAW,CAAC,CA0DtB"}
@@ -0,0 +1,2 @@
1
+ export declare function runLogout(): Promise<void>;
2
+ //# sourceMappingURL=logout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../src/cli/logout.ts"],"names":[],"mappings":"AAGA,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAI/C"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * CLI lsp command — detect tech stack, enable LSP plugins, install language servers.
3
+ *
4
+ * `codebyplan lsp` — Full mode: detect stack, update settings.local.json, install servers
5
+ * `codebyplan lsp --check` — Check mode: re-check binaries, prune resolved nudge files
6
+ *
7
+ * Unlike eslint/tech-stack, this command:
8
+ * - requires NO auth (no validateAuth, resolveConfig, apiGet, apiPost)
9
+ * - operates entirely locally: reads .codebyplan/lsp.json, .claude/settings.local.json
10
+ * - safe to run inside `codebyplan claude install` in OAuth-less environments
11
+ */
12
+ export declare function runLspFull(projectPath: string, opts?: {
13
+ dryRun?: boolean;
14
+ }): Promise<void>;
15
+ export declare function runLsp(): Promise<void>;
16
+ //# sourceMappingURL=lsp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lsp.d.ts","sourceRoot":"","sources":["../../src/cli/lsp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAwEH,wBAAsB,UAAU,CAC9B,WAAW,EAAE,MAAM,EACnB,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GAC9B,OAAO,CAAC,IAAI,CAAC,CA4Jf;AAqDD,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAiB5C"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * CLI entry point for `codebyplan migration-collisions`.
3
+ *
4
+ * Usage: codebyplan migration-collisions [--base <branch>] [--json]
5
+ *
6
+ * Output JSON: { base, collisions: [{ prefix, ours: string[], theirs: string[] }] }
7
+ * Exit: 0 always.
8
+ */
9
+ export declare function runMigrationCollisionsCommand(args: string[]): number;
10
+ //# sourceMappingURL=migration-collisions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration-collisions.d.ts","sourceRoot":"","sources":["../../src/cli/migration-collisions.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAyBpE"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * `codebyplan ports` — verify and optionally fix port allocations.
3
+ *
4
+ * Two additional local-config modes layer on top of the verify flow:
5
+ * --write-local Write this worktree's port allocations to the gitignored
6
+ * `.codebyplan/server.local.json` overlay (never the committed
7
+ * `server.json`). Reads from the DB via the shared resolver.
8
+ * --provision-e2e Copy the canonical E2E credentials from `apps/web/.env.local`
9
+ * into the gitignored `.codebyplan/e2e.env`. Purely local — no
10
+ * network, no API key required.
11
+ *
12
+ * Both are non-destructive: they touch ONLY the two gitignored overlay files and
13
+ * never write `server.json`, `git.json`, `repo.json`, `shipment.json`, or the
14
+ * legacy `.codebyplan.json` (avoiding the `codebyplan config` clobber footgun).
15
+ */
16
+ export declare function runPorts(): Promise<void>;
17
+ /**
18
+ * Parse a `.env`-style file into a key→value map.
19
+ * - Skips blank lines and `#` comment lines.
20
+ * - Splits on the FIRST `=` (so base64/`==`-padded values survive intact).
21
+ * - Quoted values: strips a single pair of matching surrounding quotes; any `#`
22
+ * inside the quotes is literal.
23
+ * - Unquoted values: a ` #` begins an inline comment (dotenv semantics) and is
24
+ * stripped, so `KEY=https://x # note` yields `https://x`.
25
+ *
26
+ * Exported for direct unit testing of the parsing edge cases.
27
+ */
28
+ export declare function parseEnvFile(raw: string): Record<string, string>;
29
+ //# sourceMappingURL=ports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ports.d.ts","sourceRoot":"","sources":["../../src/cli/ports.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAiDH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAqJ9C;AA8ID;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAwBhE"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Shared hook-safe sentinel used by hook-callable subcommands
3
+ * (version-status) to distinguish test-injected `process.exit` stubs from
4
+ * real unexpected errors.
5
+ *
6
+ * In production, `process.exit` terminates the process immediately. In test
7
+ * environments, the stubs throw a `ProcessExitSignal` instead. Each handler's
8
+ * outer `catch` re-throws `ProcessExitSignal` so the test sees the expected
9
+ * rejection rather than the catch-all masking an in-process exit.
10
+ *
11
+ * Single definition here preserves `instanceof` integrity across all consumers:
12
+ * the throw site (test stub) and the catch site (handler) must reference the
13
+ * exact same class constructor. A second copy in any file would break the check.
14
+ */
15
+ /**
16
+ * Sentinel thrown by test stubs for process.exit — distinguishes
17
+ * test-injected exits from real unexpected errors.
18
+ * @internal
19
+ */
20
+ export declare class ProcessExitSignal extends Error {
21
+ readonly code: number;
22
+ constructor(code: number);
23
+ }
24
+ //# sourceMappingURL=process-exit-signal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-exit-signal.d.ts","sourceRoot":"","sources":["../../src/cli/process-exit-signal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBACV,IAAI,EAAE,MAAM;CAKzB"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * CLI handler for `codebyplan round <subcommand>`.
3
+ *
4
+ * Two-level subcommand dispatcher — no Commander dependency.
5
+ * Subcommands:
6
+ * sync-approvals Sync git diff and approvals with round/task state
7
+ * add Create a new round (local-first + backend write-through)
8
+ * update Update a round (local-first + backend write-through)
9
+ * complete Complete a round (local-first + backend write-through)
10
+ */
11
+ import { type FilesChangedEntry } from "../lib/sync-approvals.js";
12
+ import { type Round } from "../lib/types.js";
13
+ type McpRound = Pick<Round, "id"> & {
14
+ files_changed?: FilesChangedEntry[];
15
+ context?: {
16
+ improve_round_findings?: unknown[];
17
+ outstanding_findings?: unknown[];
18
+ testing_qa_output?: {
19
+ totals?: {
20
+ hard_fail?: boolean;
21
+ };
22
+ };
23
+ };
24
+ };
25
+ /**
26
+ * Delay in milliseconds between retries. Exposed as a module-level constant
27
+ * so tests can override it to 0 for fast execution.
28
+ */
29
+ export declare let RETRY_DELAY_MS: number;
30
+ /**
31
+ * Maximum number of OCC conflict retries for update/complete write verbs.
32
+ * On a 409 the verb re-reads the fresh row, merges intent, and retries up to
33
+ * this many additional times before surfacing a conflict error to the user.
34
+ */
35
+ export declare const MAX_OCC_RETRIES = 3;
36
+ /**
37
+ * Override the retry delay (used in tests to avoid real sleeps).
38
+ */
39
+ export declare function setRetryDelayMs(ms: number): void;
40
+ /**
41
+ * Returns true for errors that are transient and safe to retry:
42
+ * - McpError with status 500-599 (gateway / server error)
43
+ * - McpError with no status whose message includes "network error"
44
+ * (AbortController timeout, fetch failure)
45
+ *
46
+ * Returns false for:
47
+ * - 4xx (incl. 401 auth failures) — non-transient, must not retry
48
+ * - Missing API key — config error, must not degrade
49
+ * - Non-McpError errors (git failures, JSON parse, etc.)
50
+ */
51
+ export declare function isTransientMcpError(err: unknown): boolean;
52
+ /**
53
+ * Fetches rounds for a task with up to 2 retry attempts on transient errors.
54
+ * On a transient error after all retries, re-throws the last error.
55
+ * On a non-transient error, re-throws immediately.
56
+ */
57
+ export declare function fetchRoundsWithRetry(taskId: string, options?: {
58
+ retries?: number;
59
+ delayMs?: number;
60
+ }): Promise<McpRound[]>;
61
+ export declare function runRoundCommand(args: string[]): Promise<void>;
62
+ export declare function runRoundAdd(args: string[]): Promise<void>;
63
+ export declare function runRoundUpdate(args: string[]): Promise<void>;
64
+ export declare function runRoundComplete(args: string[]): Promise<void>;
65
+ /**
66
+ * Canonical git-status invocation for sync-approvals.
67
+ *
68
+ * `--untracked-files=all` is REQUIRED: without it git collapses a brand-new
69
+ * untracked directory into a single `?? dir/` token. parseGitStatus correctly
70
+ * skips dir-slash tokens (they are not files), so every file nested inside a
71
+ * new untracked directory would be invisible to the diff merge and its
72
+ * existing DB row would be wrongly stale-marked (observed live, CHK-191
73
+ * TASK-5 R1). With `-uall`, untracked files always arrive as per-file
74
+ * `?? dir/file.ts` tokens. `-z` (NUL delimiting) must remain last.
75
+ */
76
+ export declare const GIT_STATUS_CMD = "git status --short --porcelain --untracked-files=all -z";
77
+ export declare function runRoundSyncApprovals(args: string[]): Promise<void>;
78
+ export {};
79
+ //# sourceMappingURL=round.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"round.d.ts","sourceRoot":"","sources":["../../src/cli/round.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAcH,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAuB,KAAK,KAAK,EAAa,MAAM,iBAAiB,CAAC;AAmC7E,KAAK,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG;IAClC,aAAa,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACpC,OAAO,CAAC,EAAE;QACR,sBAAsB,CAAC,EAAE,OAAO,EAAE,CAAC;QACnC,oBAAoB,CAAC,EAAE,OAAO,EAAE,CAAC;QACjC,iBAAiB,CAAC,EAAE;YAAE,MAAM,CAAC,EAAE;gBAAE,SAAS,CAAC,EAAE,OAAO,CAAA;aAAE,CAAA;SAAE,CAAC;KAC1D,CAAC;CACH,CAAC;AAMF;;;GAGG;AACH,eAAO,IAAI,cAAc,QAAQ,CAAC;AAElC;;;;GAIG;AACH,eAAO,MAAM,eAAe,IAAI,CAAC;AAEjC;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAEhD;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAOzD;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GACnD,OAAO,CAAC,QAAQ,EAAE,CAAC,CAoBrB;AAMD,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAqCnE;AAsCD,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoE/D;AAMD,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgLlE;AAMD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAyIpE;AAMD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,cAAc,4DACgC,CAAC;AAE5D,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA2LzE"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * CLI handler for `codebyplan scaffold-publish-workflow`.
3
+ *
4
+ * Reads `templates/github-workflows/publish.yml` from this package and writes
5
+ * it to `{projectDir}/.github/workflows/publish.yml`. Idempotent — running
6
+ * twice on an identical target returns a "skipped" result.
7
+ *
8
+ * Flags:
9
+ * --dry-run Compute the operation but do NOT write any files
10
+ * --force Overwrite an existing file that differs from the template
11
+ * --project-dir <p> Override the project root (default: cwd)
12
+ * --json Write structured JSON output to stdout
13
+ * --help Print this help and exit
14
+ */
15
+ export declare function runScaffoldPublishWorkflowCommand(args: string[]): Promise<void>;
16
+ //# sourceMappingURL=scaffold-publish-workflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaffold-publish-workflow.d.ts","sourceRoot":"","sources":["../../src/cli/scaffold-publish-workflow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAgDH,wBAAsB,iCAAiC,CACrD,IAAI,EAAE,MAAM,EAAE,GACb,OAAO,CAAC,IAAI,CAAC,CA+Bf"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * CLI entry point for `codebyplan session freshness-gate`.
3
+ *
4
+ * Usage: codebyplan session freshness-gate [--halt-on-update]
5
+ *
6
+ * Replicates cbp-session-start Step 1.6 version freshness check.
7
+ *
8
+ * Flags:
9
+ * --halt-on-update Set halt:true in output (session-start passes this;
10
+ * session-end does not).
11
+ *
12
+ * Output JSON:
13
+ * { result: 'skipped'|'guarded'|'up_to_date'|'updated'|'error', ... }
14
+ * Exit: 0 always — the result field carries the verdict; callers branch on it.
15
+ */
16
+ import { type FreshnessGateOpts } from "../../lib/session.js";
17
+ export interface FreshnessGateCliDeps extends FreshnessGateOpts {
18
+ cwd?: string;
19
+ }
20
+ export declare function freshnessGateCli(args: string[], deps?: FreshnessGateCliDeps): Promise<number>;
21
+ //# sourceMappingURL=freshness-gate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"freshness-gate.d.ts","sourceRoot":"","sources":["../../../src/cli/session/freshness-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE7E,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;IAC7D,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,GAAE,oBAAyB,GAC9B,OAAO,CAAC,MAAM,CAAC,CAWjB"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * CLI entry point for `codebyplan session home-ff`.
3
+ *
4
+ * Usage: codebyplan session home-ff
5
+ *
6
+ * Replicates cbp-session-start Step 1.4 / cbp-session-end fast-forward logic.
7
+ *
8
+ * Output JSON: { result: 'skipped'|'warn'|'fast_forwarded', reason?, warn? }
9
+ * Exit: 0 always — warn/skipped results are not errors; the skill branches on result.
10
+ */
11
+ import { type HomeFfOpts } from "../../lib/session.js";
12
+ export interface HomeFfCliDeps extends HomeFfOpts {
13
+ cwd?: string;
14
+ }
15
+ export declare function homeFfCli(_args: string[], deps?: HomeFfCliDeps): number;
16
+ //# sourceMappingURL=home-ff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"home-ff.d.ts","sourceRoot":"","sources":["../../../src/cli/session/home-ff.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAU,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAE/D,MAAM,WAAW,aAAc,SAAQ,UAAU;IAC/C,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,GAAE,aAAkB,GAAG,MAAM,CAI3E"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * CLI entry point for `codebyplan session infra-files`.
3
+ *
4
+ * Usage: codebyplan session infra-files [--task-files <csv>] [--json]
5
+ *
6
+ * Replicates cbp-session-start Step 5.7 infra-file set math.
7
+ *
8
+ * Flags:
9
+ * --task-files <csv> Comma-separated list of the active task's round files
10
+ * (primary deterministic mechanism; default empty).
11
+ * --json Accepted for forward compatibility; output is always JSON.
12
+ *
13
+ * Output JSON: { infra_files: string[], task_files: string[], note?: string }
14
+ * Exit: 0 always.
15
+ */
16
+ import { type InfraFilesOpts } from "../../lib/session.js";
17
+ export interface InfraFilesCliDeps extends InfraFilesOpts {
18
+ cwd?: string;
19
+ }
20
+ export declare function infraFilesCli(args: string[], deps?: InfraFilesCliDeps): Promise<number>;
21
+ //# sourceMappingURL=infra-files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"infra-files.d.ts","sourceRoot":"","sources":["../../../src/cli/session/infra-files.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEvE,MAAM,WAAW,iBAAkB,SAAQ,cAAc;IACvD,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,GAAE,iBAAsB,GAC3B,OAAO,CAAC,MAAM,CAAC,CA8BjB"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * CLI entry point for `codebyplan session start`.
3
+ *
4
+ * Orchestrates the deterministic steps of /cbp-session-start in ONE process
5
+ * and emits a single JSON envelope on stdout. Collapses ~13 Claude tool
6
+ * round-trips into 1.
7
+ *
8
+ * Steps (mirror SKILL ordering):
9
+ * 1. Resolve repo root + repo_id
10
+ * 2. resolveUserJson (codebyplan whoami --json → user_id)
11
+ * 3. freshnessGate — update_halt short-circuit (no activate, no create-log)
12
+ * 4. infraDriftNudge + archMapDriftNudge + lspNudge
13
+ * 5. Read previous session log (local-first; sync on miss)
14
+ * 6. probeHandoff (uses previous row BEFORE create-log overwrites it)
15
+ * 7. update-state activate (write-through)
16
+ * 8. create-log → session_log_id
17
+ * 9. infra-files set math (todos.json → task files → git delta)
18
+ * 10. get_checkpoints + partitionOwnership
19
+ * 11. computeNextAction + renderBlock → emit JSON envelope
20
+ *
21
+ * Exit: 0 always — failures are embedded in the envelope as null/empty fields.
22
+ * Output: exactly one JSON line on stdout.
23
+ */
24
+ import { freshnessGate, type ResolveUserJsonOpts, type InfraDriftNudgeOpts, type ArchMapDriftNudgeOpts, type LspNudgeOpts, type ProbeHandoffOpts, type InfraFilesOpts, type SessionLogRow } from "../../lib/session.js";
25
+ export interface SessionStartDeps {
26
+ /** cwd override — defaults to process.cwd() */
27
+ cwd?: string;
28
+ resolveRepo?: (cwd: string) => Promise<{
29
+ repoRoot: string;
30
+ repoId: string;
31
+ } | null>;
32
+ freshnessGate?: typeof freshnessGate;
33
+ resolveUserRunner?: ResolveUserJsonOpts["run"];
34
+ infraDriftRunner?: InfraDriftNudgeOpts["run"];
35
+ infraDriftExistsSync?: InfraDriftNudgeOpts["existsSync"];
36
+ archMapDriftRunner?: ArchMapDriftNudgeOpts["run"];
37
+ archMapDriftExistsSync?: ArchMapDriftNudgeOpts["existsSync"];
38
+ lspRunner?: LspNudgeOpts["run"];
39
+ readEntity?: ProbeHandoffOpts["readEntity"];
40
+ infraFilesRunner?: InfraFilesOpts["run"];
41
+ updateStateActivate?: (repoId: string, repoRoot: string) => Promise<void>;
42
+ createLog?: (repoId: string, repoRoot: string) => Promise<string | null>;
43
+ getCheckpoints?: (repoId: string) => Promise<Array<Record<string, unknown>>>;
44
+ readPreviousSession?: (repoRoot: string) => Promise<SessionLogRow | null>;
45
+ resolveTaskFiles?: (repoRoot: string) => Promise<string[]>;
46
+ runSync?: (cwd: string) => void;
47
+ }
48
+ /**
49
+ * Build the POST /session-logs body. The backend requires `session_date`
50
+ * (YYYY-MM-DD) and `day_number` (positive integer) in addition to `repo_id`;
51
+ * omitting them fails the create with "session_date is required". The session
52
+ * log is user-level (CHK-225 retired worktree_id from the create body — the
53
+ * controller keys ownership on the JWT user), so no worktree/user id is threaded
54
+ * here. Exported for unit testing of the field contract.
55
+ *
56
+ * claude_session_id is read from .codebyplan/state/session/session-id.json
57
+ * (written by the cbp-session-id-stamp.sh SessionStart hook). Non-fatal: the
58
+ * field is omitted when the file is absent or unparseable.
59
+ */
60
+ export declare function buildCreateLogBody(repoId: string, now?: Date, claudeSessionId?: string | null): Record<string, unknown>;
61
+ /**
62
+ * Fetch the repo's active checkpoints via the REST list endpoint. Uses the same
63
+ * auth-aware `apiGet` path as the rest of the CLI's reads — replaces an earlier
64
+ * `callMcpTool("get_checkpoints")` whose MCP-envelope parse silently fell back
65
+ * to `[]`, which made ownership always report 0/0. Exported for unit testing of
66
+ * the response-shape parse. Fail-safe: any error yields `[]`.
67
+ */
68
+ export declare function defaultGetCheckpoints(repoId: string): Promise<Array<Record<string, unknown>>>;
69
+ export declare function runSessionStartCli(_args: string[], deps?: SessionStartDeps): Promise<number>;
70
+ //# sourceMappingURL=start.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/cli/session/start.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAKH,OAAO,EACL,aAAa,EAUb,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EAEnB,KAAK,aAAa,EAEnB,MAAM,sBAAsB,CAAC;AA8B9B,MAAM,WAAW,gBAAgB;IAC/B,+CAA+C;IAC/C,GAAG,CAAC,EAAE,MAAM,CAAC;IAIb,WAAW,CAAC,EAAE,CACZ,GAAG,EAAE,MAAM,KACR,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IAG1D,aAAa,CAAC,EAAE,OAAO,aAAa,CAAC;IAGrC,iBAAiB,CAAC,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAG/C,gBAAgB,CAAC,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC9C,oBAAoB,CAAC,EAAE,mBAAmB,CAAC,YAAY,CAAC,CAAC;IAGzD,kBAAkB,CAAC,EAAE,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAClD,sBAAsB,CAAC,EAAE,qBAAqB,CAAC,YAAY,CAAC,CAAC;IAG7D,SAAS,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;IAGhC,UAAU,CAAC,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAG5C,gBAAgB,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;IAGzC,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1E,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAGzE,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAI7E,mBAAmB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IAG1E,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAG3D,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC;AAwED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,GAAG,GAAE,IAAiB,EACtB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,GAC9B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAezB;AAsDD;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAsBzC;AAyFD,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,MAAM,EAAE,EACf,IAAI,GAAE,gBAAqB,GAC1B,OAAO,CAAC,MAAM,CAAC,CAwPjB"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * CLI handler for `codebyplan session <subcommand>`.
3
+ *
4
+ * Implements local-first write semantics (same pattern as checkpoint.ts):
5
+ * 1. Snapshot current local file
6
+ * 2. Optimistic local write
7
+ * 3. Backend call via state-client
8
+ * 4a. Success: overwrite local from server response + update entity_hashes
9
+ * 4b. 4xx BackendError: restore snapshot + exit 1 with stderr message
10
+ * 4c. 5xx / network error: keep local + write _pending/<id>.json + exit 1
11
+ *
12
+ * Subcommands: create-log | update-log | update-state
13
+ *
14
+ * Uses parseFlagsFromArgs pattern (no Commander dependency).
15
+ */
16
+ export declare function runSessionCommand(args: string[]): Promise<void>;
17
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/cli/session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAqWH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuDrE"}
@@ -0,0 +1,2 @@
1
+ export declare function runSetup(): Promise<void>;
2
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"AA0JA,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAgN9C"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * CLI handler for `codebyplan ship`.
3
+ *
4
+ * Ships the current feat branch to the production base branch via PR.
5
+ * Mirrors the two-level dispatcher pattern from branch.ts.
6
+ *
7
+ * Flags:
8
+ * --dry-run Short-circuit before any mutating operations
9
+ * --json Write JSON result to stdout
10
+ * --keep-feat Do not delete the feat branch after merge
11
+ * --body-file <path> Path to a markdown file used as the PR body
12
+ * --timeout <secs> Max seconds to poll required checks (default: 600)
13
+ * --no-bump Skip automatic patch-version bump before push
14
+ */
15
+ export declare function runShipCommand(args: string[]): Promise<void>;
16
+ //# sourceMappingURL=ship.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ship.d.ts","sourceRoot":"","sources":["../../src/cli/ship.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AA4BH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CASlE"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * CLI entry point for `codebyplan slug`.
3
+ *
4
+ * Usage: codebyplan slug <title words...>
5
+ *
6
+ * Output: plain text — single slug line (no JSON; consumed via $(...) in shell).
7
+ * Exit: 0 on success, 1 on missing title.
8
+ */
9
+ export declare function runSlugCommand(args: string[]): number;
10
+ //# sourceMappingURL=slug.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slug.d.ts","sourceRoot":"","sources":["../../src/cli/slug.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAyBrD"}