@joshuafolkken/kit 1.1514.0 → 1.1784.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 (858) hide show
  1. package/.claude/agents/investigator.md +1 -1
  2. package/.claude/settings.json +5 -5
  3. package/.claude/skills/epic-commands/SKILL.md +26 -65
  4. package/.claude/skills/epic-commands/epic-bundle.md +3 -1
  5. package/.claude/skills/workflow-commands/SKILL.md +5 -5
  6. package/.claude/skills/workflow-commands/background-commands.md +5 -5
  7. package/.claude/skills/workflow-commands/backlogrun-child.md +10 -8
  8. package/.claude/skills/workflow-commands/backlogrun-handoff-report.md +7 -25
  9. package/.claude/skills/workflow-commands/backlogrun-lanes.md +17 -13
  10. package/.claude/skills/workflow-commands/backlogrun-park.md +14 -23
  11. package/.claude/skills/workflow-commands/backlogrun-progress.md +2 -2
  12. package/.claude/skills/workflow-commands/backlogrun-recovery.md +5 -5
  13. package/.claude/skills/workflow-commands/backlogrun-steps.md +10 -10
  14. package/.claude/skills/workflow-commands/backlogrun.md +1 -1
  15. package/.claude/skills/workflow-commands/chain-rule.md +13 -7
  16. package/.claude/skills/workflow-commands/delegation.md +6 -5
  17. package/.claude/skills/workflow-commands/entry-sequence.md +9 -9
  18. package/.claude/skills/workflow-commands/followup.md +9 -31
  19. package/.claude/skills/workflow-commands/fullrun-steps.md +36 -45
  20. package/.claude/skills/workflow-commands/fullrun.md +2 -2
  21. package/.claude/skills/workflow-commands/halfrun.md +17 -25
  22. package/.claude/skills/workflow-commands/issue-comments.md +16 -12
  23. package/.claude/skills/workflow-commands/issue-scout.md +2 -2
  24. package/.claude/skills/workflow-commands/kickoff.md +24 -23
  25. package/.claude/skills/workflow-commands/latest-gate.md +7 -12
  26. package/.claude/skills/workflow-commands/needs-human-review.md +9 -14
  27. package/.claude/skills/workflow-commands/observation-filing.md +4 -36
  28. package/.claude/skills/workflow-commands/observation-ledger.md +1 -1
  29. package/.claude/skills/workflow-commands/pre-gate-cut.md +13 -30
  30. package/.claude/skills/workflow-commands/prerequisite.md +10 -16
  31. package/.claude/skills/workflow-commands/progress-watcher.md +1 -1
  32. package/.claude/skills/workflow-commands/prrun.md +3 -7
  33. package/.claude/skills/workflow-commands/retrospective.md +1 -1
  34. package/.claude/skills/workflow-commands/split-assessment.md +13 -1
  35. package/.claude/skills/workflow-commands/working-tree-hold.md +9 -9
  36. package/.codex/hooks.json +5 -5
  37. package/.github/actions/setup-node/action.yml +9 -0
  38. package/.github/actions/setup-pnpm/action.yml +1 -1
  39. package/.github/dependabot.yml +16 -0
  40. package/.github/release.yml +0 -2
  41. package/.github/workflows/ci.yml +120 -10
  42. package/.github/workflows/publish.yml +8 -1
  43. package/.github/workflows/sonar-qube.yml +1 -0
  44. package/.prettierignore +2 -0
  45. package/.vscode/tasks.json +1 -2
  46. package/CLAUDE.md +3 -7
  47. package/README.md +4 -2
  48. package/SECURITY.md +1 -1
  49. package/dist/CLAUDE.md +3 -7
  50. package/dist/commands/document-read-cli.js +882 -0
  51. package/dist/commands/{document-section-cli.js → document-section-main.js} +79 -37
  52. package/dist/commands/read-set-cli.js +1867 -0
  53. package/dist/commands/run-prep-main.js +21653 -0
  54. package/dist/commands/run-step-cli.js +23880 -0
  55. package/dist/config-merge/index.js +5 -1
  56. package/dist/hooks/audit-provision.js +20 -35
  57. package/dist/hooks/{chunk-DGT54IH5.js → chunk-AZX4FGQ3.js} +63 -17
  58. package/dist/hooks/chunk-CWMBGKYW.js +6483 -0
  59. package/dist/hooks/chunk-O2YBIDSI.js +4306 -0
  60. package/dist/hooks/{chunk-TNUMY6NL.js → chunk-PT5R6UJD.js} +4193 -1900
  61. package/dist/hooks/chunk-TUIFS5E7.js +72 -0
  62. package/dist/hooks/{chunk-723HKZO5.js → chunk-VWWCFGWK.js} +1 -1
  63. package/dist/hooks/{chunk-APUO6U4J.js → chunk-WR2KQAYZ.js} +1843 -440
  64. package/dist/hooks/{chunk-O6GDRNJB.js → chunk-XGBNSWEI.js} +248 -46
  65. package/dist/hooks/chunk-YCDOIR3I.js +3456 -0
  66. package/dist/hooks/codex-hook-adapter.js +10 -22
  67. package/dist/hooks/format-edited.js +5 -6
  68. package/dist/hooks/inputs.json +443 -317
  69. package/dist/hooks/pretool-guard.js +7 -25
  70. package/dist/hooks/session-lang.js +44 -51
  71. package/dist/hooks/stop-guard.js +7716 -2187
  72. package/dist/josh.js +6002 -3583
  73. package/dist/self-sync-guard/index.js +74 -10
  74. package/dist/version/index.js +115 -406
  75. package/eslint/base.js +1 -1
  76. package/lefthook/base.yml +3 -1
  77. package/package.json +10 -48
  78. package/pnpm-workspace.yaml +4 -2
  79. package/prompts/coding-standards.md +1 -1
  80. package/prompts/collaboration-workflow/file-edits.md +1 -7
  81. package/prompts/collaboration-workflow/issue-citation.md +1 -1
  82. package/prompts/collaboration-workflow/issue-template.md +33 -16
  83. package/prompts/collaboration-workflow/lane-instructions.md +1 -2
  84. package/prompts/collaboration-workflow/measurement.md +37 -0
  85. package/prompts/collaboration-workflow/operating-rules.md +4 -6
  86. package/prompts/collaboration-workflow/output-bounds.md +2 -7
  87. package/prompts/collaboration-workflow/plan-comment.md +3 -42
  88. package/prompts/collaboration-workflow/principles.md +5 -0
  89. package/prompts/collaboration-workflow/report-format.md +31 -60
  90. package/prompts/collaboration-workflow/residency.md +2 -2
  91. package/prompts/collaboration-workflow/shell-body.md +6 -16
  92. package/prompts/collaboration-workflow/turn-batching.md +0 -2
  93. package/prompts/collaboration-workflow/upstream-interrupt.md +14 -4
  94. package/prompts/collaboration-workflow/wip-cap.md +1 -1
  95. package/prompts/collaboration-workflow.md +3 -7
  96. package/prompts/refactoring.md +1 -1
  97. package/prompts/review-rubric.md +1 -2
  98. package/prompts/review.md +41 -21
  99. package/prompts/testing-guide.md +8 -43
  100. package/scripts/agent/agent-event.ts +15 -15
  101. package/scripts/agent/agent-exit-record.ts +13 -1
  102. package/scripts/agent/api-auth.ts +41 -0
  103. package/scripts/agent/api-outage.ts +1 -1
  104. package/scripts/auto-ok/auto-ok-cli.ts +14 -16
  105. package/scripts/auto-ok/auto-ok-judge-read.ts +12 -3
  106. package/scripts/auto-ok/auto-ok-judge-write.ts +46 -19
  107. package/scripts/auto-ok/auto-ok-judge.ts +13 -2
  108. package/scripts/auto-ok/auto-ok-main.ts +17 -0
  109. package/scripts/backlog/backlog-arrival.ts +14 -3
  110. package/scripts/backlog/backlog-budget-cli.ts +7 -33
  111. package/scripts/backlog/backlog-budget-main.ts +16 -0
  112. package/scripts/backlog/backlog-budget.ts +2 -3
  113. package/scripts/backlog/backlog-defect-priority.ts +4 -3
  114. package/scripts/backlog/backlog-drive-adopt.ts +67 -0
  115. package/scripts/backlog/backlog-drive-args.ts +4 -5
  116. package/scripts/backlog/backlog-drive-cli.ts +113 -28
  117. package/scripts/backlog/backlog-drive-hold.ts +162 -0
  118. package/scripts/backlog/backlog-drive-idle.ts +151 -0
  119. package/scripts/backlog/backlog-drive-judge.ts +25 -0
  120. package/scripts/backlog/backlog-drive-memory.ts +126 -0
  121. package/scripts/backlog/backlog-drive-named-offer.ts +5 -10
  122. package/scripts/backlog/backlog-drive-named.ts +53 -6
  123. package/scripts/backlog/backlog-drive-offer-argv.ts +3 -8
  124. package/scripts/backlog/backlog-drive-paused.ts +169 -0
  125. package/scripts/backlog/backlog-drive-restore.ts +30 -7
  126. package/scripts/backlog/backlog-drive-seats.ts +18 -8
  127. package/scripts/backlog/backlog-drive-token-handling.ts +38 -0
  128. package/scripts/backlog/backlog-drive.ts +79 -75
  129. package/scripts/backlog/backlog-next-main.ts +16 -0
  130. package/scripts/backlog/backlog-next-shared.ts +73 -0
  131. package/scripts/backlog/backlog-next.ts +48 -16
  132. package/scripts/backlog/backlog-occupied.ts +52 -39
  133. package/scripts/backlog/backlog-offer-cli.ts +6 -21
  134. package/scripts/backlog/backlog-offer-exclude.ts +15 -0
  135. package/scripts/backlog/backlog-offer-main.ts +12 -0
  136. package/scripts/backlog/backlog-offer.ts +36 -3
  137. package/scripts/backlog/backlog-overlap.ts +22 -4
  138. package/scripts/backlog/backlog-plan-read.ts +6 -2
  139. package/scripts/backlog/backlog-plan.ts +18 -4
  140. package/scripts/backlog/backlog-pool.ts +10 -10
  141. package/scripts/backlog/backlog-rank.ts +10 -2
  142. package/scripts/backlog/backlog-ready.ts +112 -30
  143. package/scripts/backlog/backlog-stalled-detect.ts +109 -36
  144. package/scripts/backlog/backlog-stalled.ts +52 -16
  145. package/scripts/backlog/backlog-wait-cause.ts +86 -0
  146. package/scripts/backlog/backlog-waves.ts +39 -13
  147. package/scripts/backlog/backlogrun-args.ts +19 -7
  148. package/scripts/backlog/backlogrun-cli.ts +19 -5
  149. package/scripts/backlog/backlogrun-launch.ts +6 -0
  150. package/scripts/backlog/backlogrun-restart.ts +97 -0
  151. package/scripts/backlog/backlogrun-stop.ts +79 -7
  152. package/scripts/behavior/behavior-cli.ts +2 -2
  153. package/scripts/behavior/behavior-rules.ts +47 -24
  154. package/scripts/build/build-bin.ts +2 -16
  155. package/scripts/build/build-claude-md.ts +0 -7
  156. package/scripts/build/build-commands.ts +0 -13
  157. package/scripts/build/build-hooks.ts +49 -48
  158. package/scripts/build/hook-bundle-stamp.ts +29 -11
  159. package/scripts/build/local-bin.ts +1 -1
  160. package/scripts/cases/cases-cli.ts +25 -13
  161. package/scripts/cases/cases-interaction-scan.ts +134 -0
  162. package/scripts/cases/cases-interaction.ts +183 -0
  163. package/scripts/cases/cases-logic.ts +39 -6
  164. package/scripts/ci/pr-classification-main.ts +18 -0
  165. package/scripts/ci/pr-classification.ts +10 -17
  166. package/scripts/clone/clone-scan.ts +1 -1
  167. package/scripts/cost-runtime/cost-blocks.ts +22 -37
  168. package/scripts/cost-runtime/cost-cli.ts +31 -14
  169. package/scripts/cost-runtime/cost-main.ts +12 -0
  170. package/scripts/cost-runtime/cost-transcript.ts +1 -0
  171. package/scripts/delegation/delegation-policy.ts +17 -4
  172. package/scripts/delegation/duplicate-read-guard.ts +0 -8
  173. package/scripts/delegation/investigation-guard.ts +0 -8
  174. package/scripts/delegation/investigation-reads.ts +3 -4
  175. package/scripts/dependabot/dependabot-cooldown.ts +194 -0
  176. package/scripts/discovery/repo-discovery.ts +24 -6
  177. package/scripts/doctor/doctor-consumer.ts +2 -5
  178. package/scripts/document/document-byte-budget.ts +8 -6
  179. package/scripts/document/document-scan.ts +1 -1
  180. package/scripts/document/document-section-cli.ts +0 -8
  181. package/scripts/document/document-section-main.ts +12 -0
  182. package/scripts/epic/epic-audit-cli.ts +12 -6
  183. package/scripts/epic/epic-bundle-apply.ts +137 -0
  184. package/scripts/epic/epic-bundle-cli.ts +32 -121
  185. package/scripts/epic/epic-bundle-format.ts +116 -0
  186. package/scripts/epic/epic-bundle-main.ts +17 -0
  187. package/scripts/epic/epic-busy.ts +5 -12
  188. package/scripts/epic/epic-classify.ts +24 -15
  189. package/scripts/epic/epic-cli-argv.ts +31 -0
  190. package/scripts/epic/epic-cli-decide.ts +42 -0
  191. package/scripts/epic/epic-cli.ts +6 -38
  192. package/scripts/epic/epic-close.ts +112 -55
  193. package/scripts/epic/epic-cross-repo.ts +4 -7
  194. package/scripts/epic/epic-decide.ts +119 -0
  195. package/scripts/epic/epic-decision.ts +9 -0
  196. package/scripts/epic/epic-fetch.ts +4 -0
  197. package/scripts/epic/epic-graph.ts +2 -0
  198. package/scripts/epic/epic-issue.ts +5 -1
  199. package/scripts/epic/epic-label-age.ts +1 -1
  200. package/scripts/epic/epic-lane-offer.ts +39 -4
  201. package/scripts/epic/epic-next-main.ts +24 -0
  202. package/scripts/epic/epic-next.ts +6 -24
  203. package/scripts/epic/epic-outside-blocker.ts +6 -2
  204. package/scripts/epic/epic-parse.ts +9 -3
  205. package/scripts/epic/epic-read.ts +1 -0
  206. package/scripts/epic/epic-reconcile.ts +39 -0
  207. package/scripts/epic/epic-run.ts +10 -1
  208. package/scripts/epic/epic-solo.ts +50 -14
  209. package/scripts/epic/epic.ts +41 -7
  210. package/scripts/exports/unused-members-cli.ts +2 -2
  211. package/scripts/followup/followup-checks-event.ts +8 -3
  212. package/scripts/followup/followup-coderabbit-wait.ts +82 -0
  213. package/scripts/followup/followup-review-gates.ts +81 -0
  214. package/scripts/followup/git-followup-stages.ts +13 -3
  215. package/scripts/followup/git-followup-workflow.ts +19 -66
  216. package/scripts/followup/git-pr-followup-wrapup.ts +9 -14
  217. package/scripts/followup/git-pr-followup.ts +36 -8
  218. package/scripts/fresh-machine/fresh-machine-cli.ts +1 -1
  219. package/scripts/fresh-machine/fresh-machine-run.ts +8 -8
  220. package/scripts/fresh-machine/specs/kit-test-backlogrun.json +1 -1
  221. package/scripts/gate/busy-average.ts +58 -0
  222. package/scripts/gate/check-cpu.ts +60 -0
  223. package/scripts/gate/check-inputs.ts +39 -95
  224. package/scripts/gate/check-reuse.ts +33 -54
  225. package/scripts/gate/command-memory.ts +192 -0
  226. package/scripts/gate/core-admission.ts +218 -28
  227. package/scripts/gate/core-budget-timing.ts +37 -0
  228. package/scripts/gate/core-budget.ts +80 -98
  229. package/scripts/gate/core-wait-record.ts +48 -0
  230. package/scripts/gate/core-wait.ts +37 -5
  231. package/scripts/gate/core-weights.ts +86 -0
  232. package/scripts/gate/free-cores.ts +27 -4
  233. package/scripts/gate/gate-ledger.ts +32 -4
  234. package/scripts/gate/gate-plan.ts +41 -34
  235. package/scripts/gate/gate-report.ts +14 -2
  236. package/scripts/gate/gate-run-steps.ts +53 -8
  237. package/scripts/gate/gate-skip.ts +12 -2
  238. package/scripts/gate/gate-steps.ts +12 -1
  239. package/scripts/gate/input-fingerprint.ts +42 -0
  240. package/scripts/gate/machine-capacity.ts +65 -31
  241. package/scripts/gate/moved-paths.ts +67 -0
  242. package/scripts/gate/project-checks.ts +5 -12
  243. package/scripts/gate/scoped-green.ts +12 -8
  244. package/scripts/gate/since-green.ts +62 -0
  245. package/scripts/gate/toolchain-inputs.ts +115 -0
  246. package/scripts/gate/verification-gate.ts +27 -24
  247. package/scripts/gate/verification-inputs.ts +250 -0
  248. package/scripts/gh/gh-author-association.ts +96 -9
  249. package/scripts/gh/git-ai-review-scan.ts +4 -2
  250. package/scripts/gh/git-gh-api-path.ts +15 -0
  251. package/scripts/gh/git-gh-branch-rules.ts +73 -0
  252. package/scripts/gh/git-gh-conditional.ts +5 -2
  253. package/scripts/gh/git-gh-issue-read.ts +5 -1
  254. package/scripts/gh/git-gh-issue-write.ts +67 -29
  255. package/scripts/gh/git-gh-issue.ts +7 -3
  256. package/scripts/gh/git-gh-poll-read.ts +89 -0
  257. package/scripts/gh/git-gh-pr-auto-merge.ts +8 -3
  258. package/scripts/gh/git-gh-pr-rest.ts +1 -1
  259. package/scripts/gh/git-gh-pr-snapshot.ts +33 -20
  260. package/scripts/gh/git-gh-pr.ts +27 -15
  261. package/scripts/gh/git-pr-checks-eval.ts +39 -7
  262. package/scripts/gh/git-pr-checks-parse.ts +39 -9
  263. package/scripts/gh/git-pr-merge-checked.ts +80 -0
  264. package/scripts/git/base-tree.ts +19 -2
  265. package/scripts/git/changed-file-scope.ts +6 -4
  266. package/scripts/git/changed-paths.ts +18 -1
  267. package/scripts/git/git-diff-reads.ts +27 -2
  268. package/scripts/git/git-grep-hits.ts +85 -0
  269. package/scripts/git/git-location-environment.ts +1 -1
  270. package/scripts/git/git-merge-conflicts.ts +83 -0
  271. package/scripts/git/git-preflight.ts +37 -12
  272. package/scripts/git/git-push-transport.ts +1 -2
  273. package/scripts/git/git-schemas.ts +17 -7
  274. package/scripts/git/git-spawn.ts +1 -2
  275. package/scripts/git/git-status.ts +4 -4
  276. package/scripts/git/main-merge-main.ts +12 -0
  277. package/scripts/git/main-merge-regenerate.ts +2 -2
  278. package/scripts/git/main-merge.ts +25 -9
  279. package/scripts/git/main-sync-main.ts +12 -0
  280. package/scripts/git/main-sync.ts +0 -9
  281. package/scripts/git/stash/git-stash.ts +27 -4
  282. package/scripts/git/stash/{stash-pop-args.ts → stash-args.ts} +13 -10
  283. package/scripts/git/stash/stash-pop-cli.ts +6 -12
  284. package/scripts/git/stash/stash-pop-main.ts +12 -0
  285. package/scripts/git/stash/stash-push-cli.ts +76 -0
  286. package/scripts/git/stash/stash-push-main.ts +12 -0
  287. package/scripts/hooks/batch-guard.ts +0 -8
  288. package/scripts/hooks/check-commit-message-main.ts +8 -0
  289. package/scripts/hooks/check-commit-message.ts +4 -7
  290. package/scripts/hooks/format-edited-file.ts +8 -24
  291. package/scripts/hooks/pre-commit-lint.ts +30 -3
  292. package/scripts/hooks/pre-push-unit.ts +4 -2
  293. package/scripts/hooks/pretool-guard-cli.ts +1 -8
  294. package/scripts/hooks/pretool-guard.ts +32 -19
  295. package/scripts/hooks/reserved-run.ts +67 -9
  296. package/scripts/hooks/run-hook.sh +13 -4
  297. package/scripts/hooks/shell-rules-notice.ts +37 -0
  298. package/scripts/hooks/stop-actions.ts +2 -21
  299. package/scripts/hooks/stop-guard.ts +13 -9
  300. package/scripts/init/hook-command-rewrite.ts +19 -5
  301. package/scripts/init/hook-launch.ts +15 -17
  302. package/scripts/init/init-actions.ts +0 -6
  303. package/scripts/init/init-ai-copy.ts +10 -36
  304. package/scripts/init/init-bootstrap.ts +9 -8
  305. package/scripts/init/init-dry-run-report.ts +1 -1
  306. package/scripts/init/init-dry-run.ts +1 -1
  307. package/scripts/init/init-file-action.ts +7 -9
  308. package/scripts/init/init-logic-json-merge.ts +2 -2
  309. package/scripts/init/init-logic-migrate.ts +9 -82
  310. package/scripts/init/init-logic.ts +3 -2
  311. package/scripts/init/init-main.ts +12 -0
  312. package/scripts/init/init.ts +5 -12
  313. package/scripts/init/kit-development-versions.ts +3 -7
  314. package/scripts/init/kit-written-paths.ts +2 -2
  315. package/scripts/init/project-profile.ts +5 -4
  316. package/scripts/init/tsconfig-preset-migration.ts +2 -1
  317. package/scripts/init/vscode-tasks.ts +1 -1
  318. package/scripts/issue/defect-origin-cli.ts +106 -0
  319. package/scripts/issue/defect-origin-line.ts +60 -0
  320. package/scripts/issue/defect-origin-main.ts +11 -0
  321. package/scripts/issue/defect-origin.ts +114 -0
  322. package/scripts/issue/defect-rate-cli.ts +34 -78
  323. package/scripts/issue/defect-rate.ts +0 -16
  324. package/scripts/issue/defect-report-cli.ts +128 -0
  325. package/scripts/issue/defect-report-format.ts +56 -0
  326. package/scripts/issue/defect-report-main.ts +11 -0
  327. package/scripts/issue/defect-report.ts +160 -0
  328. package/scripts/issue/expected-effect-lint.ts +1 -0
  329. package/scripts/issue/issue-already-done-cli.ts +62 -0
  330. package/scripts/issue/issue-body-or-comment.ts +40 -0
  331. package/scripts/issue/issue-cite-cli.ts +0 -9
  332. package/scripts/issue/issue-cite-main.ts +12 -0
  333. package/scripts/issue/issue-classification.ts +12 -7
  334. package/scripts/issue/issue-comment-cli.ts +10 -24
  335. package/scripts/issue/issue-comment-main.ts +12 -0
  336. package/scripts/issue/issue-evidence-exit.ts +100 -0
  337. package/scripts/issue/issue-file-cli.ts +29 -7
  338. package/scripts/issue/issue-file.ts +19 -19
  339. package/scripts/issue/issue-fold-cli.ts +2 -11
  340. package/scripts/issue/issue-fold-main.ts +12 -0
  341. package/scripts/issue/issue-labels.ts +81 -90
  342. package/scripts/issue/issue-lint-cli.ts +2 -10
  343. package/scripts/issue/issue-lint-main.ts +12 -0
  344. package/scripts/issue/issue-measured-cli.ts +56 -0
  345. package/scripts/issue/issue-merged.ts +19 -2
  346. package/scripts/issue/issue-not-before-label.ts +135 -0
  347. package/scripts/issue/issue-not-before.ts +111 -0
  348. package/scripts/issue/issue-number-shape.ts +15 -1
  349. package/scripts/issue/issue-park.ts +28 -0
  350. package/scripts/issue/issue-plan-cli.ts +151 -0
  351. package/scripts/issue/issue-priority.ts +151 -0
  352. package/scripts/issue/issue-rank.ts +7 -1
  353. package/scripts/issue/issue-read-cli.ts +3 -10
  354. package/scripts/issue/issue-read-main.ts +12 -0
  355. package/scripts/issue/issue-read.ts +29 -5
  356. package/scripts/issue/issue-release-cli.ts +0 -10
  357. package/scripts/issue/issue-release-main.ts +13 -0
  358. package/scripts/issue/issue-release.ts +7 -12
  359. package/scripts/issue/issue-sample-gate.ts +192 -0
  360. package/scripts/issue/issue-sample-source.ts +76 -0
  361. package/scripts/issue/issue-scout-cli.ts +0 -11
  362. package/scripts/issue/issue-scout-main.ts +14 -0
  363. package/scripts/issue/issue-state-cli.ts +0 -10
  364. package/scripts/issue/issue-state-main.ts +12 -0
  365. package/scripts/issue/issue-watch-diff.ts +56 -15
  366. package/scripts/issue/issue-watch.ts +2 -1
  367. package/scripts/issue/issue-wip.ts +2 -7
  368. package/scripts/issue/measure-rerun-cli.ts +13 -8
  369. package/scripts/issue/plan-consumers-cli.ts +39 -0
  370. package/scripts/issue/plan-consumers-main.ts +11 -0
  371. package/scripts/issue/plan-consumers-section.ts +55 -0
  372. package/scripts/issue/plan-consumers.ts +127 -0
  373. package/scripts/josh/agent-session-environment.ts +1 -1
  374. package/scripts/josh/command-usage.ts +15 -43
  375. package/scripts/josh/file-map-stamp.ts +49 -16
  376. package/scripts/josh/hook-decision.ts +32 -20
  377. package/scripts/josh/josh-command-map.ts +4 -1
  378. package/scripts/josh/josh-command-types.ts +12 -6
  379. package/scripts/josh/josh-commands-agent-hooks.ts +83 -0
  380. package/scripts/josh/josh-commands-ai.ts +157 -158
  381. package/scripts/josh/josh-commands-backlog.ts +82 -16
  382. package/scripts/josh/josh-commands-clone.ts +1 -0
  383. package/scripts/josh/josh-commands-development.ts +111 -71
  384. package/scripts/josh/josh-commands-document.ts +43 -1
  385. package/scripts/josh/josh-commands-epic.ts +171 -0
  386. package/scripts/josh/josh-commands-hooks.ts +25 -2
  387. package/scripts/josh/josh-commands-issue-write.ts +181 -0
  388. package/scripts/josh/josh-commands-issue.ts +124 -24
  389. package/scripts/josh/josh-commands-lane.ts +103 -2
  390. package/scripts/josh/josh-commands-lint.ts +19 -8
  391. package/scripts/josh/josh-commands-maintenance.ts +112 -4
  392. package/scripts/josh/josh-commands-pause.ts +29 -0
  393. package/scripts/josh/josh-commands-progress.ts +87 -0
  394. package/scripts/josh/josh-commands-project.ts +138 -9
  395. package/scripts/josh/josh-commands-review.ts +124 -0
  396. package/scripts/josh/josh-commands-run.ts +211 -23
  397. package/scripts/josh/josh-commands-ship.ts +169 -0
  398. package/scripts/josh/josh-commands-split.ts +9 -0
  399. package/scripts/josh/josh-commands-versioning.ts +49 -2
  400. package/scripts/josh/josh-commands-workflow.ts +144 -6
  401. package/scripts/josh/josh-logic.ts +6 -13
  402. package/scripts/josh/package-directory.ts +2 -4
  403. package/scripts/josh/process-identity.ts +13 -4
  404. package/scripts/josh/session-language-cli.ts +4 -8
  405. package/scripts/josh/session-language-main.ts +13 -0
  406. package/scripts/josh/session-language.ts +6 -1
  407. package/scripts/josh/shared-cache.ts +90 -0
  408. package/scripts/josh/stamp-file.ts +9 -15
  409. package/scripts/lane/lane-await.ts +51 -12
  410. package/scripts/lane/lane-cache.ts +5 -30
  411. package/scripts/lane/lane-capacity.ts +14 -23
  412. package/scripts/lane/lane-check-stats.ts +62 -21
  413. package/scripts/lane/lane-child-invocation.ts +8 -0
  414. package/scripts/lane/lane-cli.ts +15 -5
  415. package/scripts/lane/lane-close.ts +86 -18
  416. package/scripts/lane/lane-core-wait-stats.ts +66 -0
  417. package/scripts/lane/lane-dispatch.ts +24 -3
  418. package/scripts/lane/lane-gap-stats.ts +156 -0
  419. package/scripts/lane/lane-handoff.ts +69 -1
  420. package/scripts/lane/lane-held-stats.ts +129 -0
  421. package/scripts/lane/lane-install.ts +4 -11
  422. package/scripts/lane/lane-launch-cli.ts +0 -9
  423. package/scripts/lane/lane-launch-main.ts +12 -0
  424. package/scripts/lane/lane-ledger-schema.ts +266 -0
  425. package/scripts/lane/lane-ledger.ts +92 -123
  426. package/scripts/lane/lane-limit-cli.ts +12 -1
  427. package/scripts/lane/lane-measure-cli.ts +57 -11
  428. package/scripts/lane/lane-open.ts +9 -1
  429. package/scripts/lane/lane-parked.ts +3 -3
  430. package/scripts/lane/lane-pause-cli.ts +130 -0
  431. package/scripts/lane/lane-pause.ts +158 -0
  432. package/scripts/lane/lane-process-table.ts +166 -0
  433. package/scripts/lane/lane-reap-settle.ts +124 -0
  434. package/scripts/lane/lane-reap.ts +50 -15
  435. package/scripts/lane/lane-registry.ts +24 -3
  436. package/scripts/lane/lane-residents.ts +162 -0
  437. package/scripts/lane/lane-restart.ts +22 -2
  438. package/scripts/lane/lane-round-two-stats.ts +49 -0
  439. package/scripts/lane/lane-sampler.ts +4 -0
  440. package/scripts/lane/lane-session-action.ts +19 -5
  441. package/scripts/lane/lane-session-broker.ts +102 -21
  442. package/scripts/lane/lane-snapshot-trace.ts +84 -0
  443. package/scripts/lane/lane-spans.ts +51 -0
  444. package/scripts/lane/lane-spent.ts +6 -3
  445. package/scripts/lane/lane-stage-stats.ts +7 -2
  446. package/scripts/lane/lane-state.ts +302 -0
  447. package/scripts/lane/lane-stats.ts +58 -4
  448. package/scripts/lane/lane-stop-stats.ts +113 -37
  449. package/scripts/lane/lane-test-related-stats.ts +127 -0
  450. package/scripts/lane/lane-transcript-calls.ts +145 -0
  451. package/scripts/lane/lane-transcript-stats.ts +168 -0
  452. package/scripts/lane/lane-vacant.ts +13 -3
  453. package/scripts/lane/lane-withdraw-cli.ts +5 -4
  454. package/scripts/lane/lane-withdraw.ts +50 -49
  455. package/scripts/lane/process-directories.ts +70 -0
  456. package/scripts/lane/process-lane-marks.ts +94 -0
  457. package/scripts/lib/atomic-write.ts +62 -0
  458. package/scripts/lib/buffered-process.ts +12 -5
  459. package/scripts/lib/cli-flags.ts +53 -0
  460. package/scripts/lib/figure-format.ts +63 -0
  461. package/scripts/lib/json-value.ts +9 -1
  462. package/scripts/lib/package-manifest.ts +35 -0
  463. package/scripts/lib/read-file.ts +3 -1
  464. package/scripts/lib/stamped-memo.ts +63 -0
  465. package/scripts/lib/stdout-on-stderr.ts +24 -0
  466. package/scripts/lib/timeouts.ts +9 -0
  467. package/scripts/lib/transcript-record.ts +91 -0
  468. package/scripts/lines/effective-limit.ts +1 -1
  469. package/scripts/lint/eslint-cache-dependencies.ts +145 -0
  470. package/scripts/lint/eslint-daemon.ts +265 -0
  471. package/scripts/lint/format.ts +11 -2
  472. package/scripts/lint/import-graph.ts +279 -0
  473. package/scripts/lint/lint-gate-scope.ts +102 -0
  474. package/scripts/lint/lint-parallel-main.ts +19 -0
  475. package/scripts/lint/lint-parallel.ts +62 -30
  476. package/scripts/lint/lint-related-scope.ts +30 -24
  477. package/scripts/lint/lint-related.ts +38 -6
  478. package/scripts/notify/confirmation-options.ts +1 -2
  479. package/scripts/notify/telegram-notify.ts +20 -20
  480. package/scripts/notify/telegram-test-logic.ts +0 -1
  481. package/scripts/notify/telegram-test-main.ts +8 -0
  482. package/scripts/notify/telegram-test.ts +2 -6
  483. package/scripts/observations/observation-ledger.ts +13 -0
  484. package/scripts/observations/observations-flush-landing.ts +5 -3
  485. package/scripts/observations/observations-flush.ts +6 -1
  486. package/scripts/overrides/overrides-check.ts +2 -5
  487. package/scripts/overrides/overrides-files.ts +2 -1
  488. package/scripts/overrides/overrides-logic.ts +3 -6
  489. package/scripts/package/verify-optional-eslint-install.ts +8 -6
  490. package/scripts/propagate/propagate-publish.ts +2 -7
  491. package/scripts/propagate/propagate-targets.ts +4 -12
  492. package/scripts/refactor/import-graph.ts +9 -7
  493. package/scripts/release/github-release-runs.ts +17 -6
  494. package/scripts/release/release-approval-prune.ts +18 -0
  495. package/scripts/release/release-history.ts +1 -3
  496. package/scripts/release/release-progress.ts +42 -22
  497. package/scripts/release/release-publish-run.ts +39 -0
  498. package/scripts/release/release-publish.ts +6 -6
  499. package/scripts/release/release-scope-cli.ts +0 -10
  500. package/scripts/release/release-scope-main.ts +12 -0
  501. package/scripts/repo/repo-setting.ts +3 -6
  502. package/scripts/repo/required-checks-logic.ts +6 -15
  503. package/scripts/report/report-format-reference.ts +2 -0
  504. package/scripts/report/report-labels.ts +155 -0
  505. package/scripts/report/report-lint-cli.ts +3 -0
  506. package/scripts/report/report-lint.ts +85 -110
  507. package/scripts/report/report-template-cli.ts +59 -0
  508. package/scripts/report/report-template.ts +112 -0
  509. package/scripts/review/acceptance-map.ts +1 -0
  510. package/scripts/review/removed-tests-check.ts +86 -0
  511. package/scripts/review/removed-tests.ts +149 -0
  512. package/scripts/review/review-brief-cli.ts +81 -15
  513. package/scripts/review/review-brief-main.ts +12 -0
  514. package/scripts/review/review-brief.ts +31 -3
  515. package/scripts/review/review-code-tree.ts +10 -6
  516. package/scripts/review/review-comment-round.ts +26 -8
  517. package/scripts/review/review-finding-ledger.ts +30 -15
  518. package/scripts/review/review-interaction.ts +94 -0
  519. package/scripts/review/review-readers-scan.ts +163 -0
  520. package/scripts/review/review-record-cli.ts +69 -30
  521. package/scripts/review/review-record-main.ts +12 -0
  522. package/scripts/review/review-round-one-blobs.ts +221 -0
  523. package/scripts/review/review-round2-cli.ts +49 -12
  524. package/scripts/review/review-round2.ts +80 -12
  525. package/scripts/review/review-stamps.ts +19 -1
  526. package/scripts/review/review-stop-log.ts +96 -0
  527. package/scripts/review/review-stops-cli.ts +85 -0
  528. package/scripts/review/review-tree.ts +6 -17
  529. package/scripts/review/review-untouched-readers.ts +146 -0
  530. package/scripts/review/test-titles.ts +118 -0
  531. package/scripts/rules/agent-model.ts +8 -0
  532. package/scripts/rules/bash-triggers.ts +46 -3
  533. package/scripts/rules/decision-oracle-batch.ts +9 -1
  534. package/scripts/rules/decision-oracle.ts +2 -2
  535. package/scripts/rules/delivered-rules.ts +80 -2
  536. package/scripts/rules/destructive-command.ts +8 -1
  537. package/scripts/rules/direct-filing.ts +10 -2
  538. package/scripts/rules/direct-issue-comment.ts +117 -0
  539. package/scripts/rules/direct-pr-create.ts +69 -3
  540. package/scripts/rules/early-heartbeat.ts +2 -1
  541. package/scripts/rules/file-body.ts +7 -0
  542. package/scripts/rules/filing-cap.ts +7 -0
  543. package/scripts/rules/git-argv.ts +72 -14
  544. package/scripts/rules/git-force.ts +12 -2
  545. package/scripts/rules/guard-remedy.ts +4 -0
  546. package/scripts/rules/implementation-cut-verdict.ts +1 -1
  547. package/scripts/rules/implementation-cut.ts +11 -3
  548. package/scripts/rules/index-guard.ts +8 -1
  549. package/scripts/rules/issue-comments.ts +9 -1
  550. package/scripts/rules/josh-git-bare.ts +7 -0
  551. package/scripts/rules/lane-background.ts +67 -25
  552. package/scripts/rules/lane-carry-conflict.ts +6 -0
  553. package/scripts/rules/lane-direct-tool.ts +74 -0
  554. package/scripts/rules/lane-interactive-ask.ts +9 -2
  555. package/scripts/rules/lane-park.ts +45 -23
  556. package/scripts/rules/lane-split-park.ts +10 -2
  557. package/scripts/rules/lane-switch-main.ts +7 -0
  558. package/scripts/rules/oracle-consulted.ts +10 -0
  559. package/scripts/rules/oracle-firing.ts +1 -0
  560. package/scripts/rules/permission-guards.ts +3 -0
  561. package/scripts/rules/piped-verification.ts +1 -1
  562. package/scripts/rules/poll-loop.ts +7 -0
  563. package/scripts/rules/pr-merge.ts +123 -0
  564. package/scripts/rules/protected-files.ts +32 -5
  565. package/scripts/rules/raw-field-body.ts +6 -0
  566. package/scripts/rules/rule-body-guard.ts +8 -0
  567. package/scripts/rules/rule-list.ts +9 -28
  568. package/scripts/rules/rule-value-cache.ts +4 -9
  569. package/scripts/rules/rule-value-cli.ts +51 -32
  570. package/scripts/rules/rule-value.ts +1 -1
  571. package/scripts/rules/shell-segments.ts +35 -0
  572. package/scripts/rules/stop-rule-rows.ts +64 -0
  573. package/scripts/rules/stop-rules.ts +3 -4
  574. package/scripts/rules/test-declared-commit.ts +11 -1
  575. package/scripts/rules/third-party-write.ts +7 -0
  576. package/scripts/rules/timed-rerun.ts +69 -0
  577. package/scripts/rules/worktree-guard.ts +13 -3
  578. package/scripts/run/board/run-board-app-name.ts +23 -0
  579. package/scripts/run/board/run-board-cli.ts +65 -32
  580. package/scripts/run/board/run-board-earlier.ts +94 -0
  581. package/scripts/run/board/run-board-ending-reason.ts +67 -0
  582. package/scripts/run/board/run-board-estimate-schedule.ts +103 -0
  583. package/scripts/run/board/run-board-estimate.ts +98 -0
  584. package/scripts/run/board/run-board-fit.ts +153 -36
  585. package/scripts/run/board/run-board-fold.ts +123 -0
  586. package/scripts/run/board/run-board-fresh.ts +2 -2
  587. package/scripts/run/board/run-board-gather-live.ts +29 -0
  588. package/scripts/run/board/run-board-gather-thread.ts +189 -0
  589. package/scripts/run/board/run-board-gather-worker.ts +29 -0
  590. package/scripts/run/board/run-board-gather.ts +187 -0
  591. package/scripts/run/board/run-board-github.ts +118 -38
  592. package/scripts/run/board/run-board-header.ts +82 -20
  593. package/scripts/run/board/run-board-keys.ts +58 -0
  594. package/scripts/run/board/run-board-kind.ts +20 -6
  595. package/scripts/run/board/run-board-labels.ts +116 -71
  596. package/scripts/run/board/run-board-lane-state.ts +109 -0
  597. package/scripts/run/board/run-board-lane-time.ts +122 -0
  598. package/scripts/run/board/run-board-layout.ts +239 -60
  599. package/scripts/run/board/run-board-length.ts +52 -0
  600. package/scripts/run/board/run-board-machine.ts +8 -4
  601. package/scripts/run/board/run-board-main.ts +12 -0
  602. package/scripts/run/board/run-board-notes.ts +52 -31
  603. package/scripts/run/board/run-board-now.ts +1 -1
  604. package/scripts/run/board/run-board-operation.ts +15 -33
  605. package/scripts/run/board/run-board-phase.ts +1 -1
  606. package/scripts/run/board/run-board-plan-shared.ts +115 -0
  607. package/scripts/run/board/run-board-plan.ts +55 -3
  608. package/scripts/run/board/run-board-planning.ts +45 -0
  609. package/scripts/run/board/run-board-priority.ts +44 -0
  610. package/scripts/run/board/run-board-process-groups.ts +195 -0
  611. package/scripts/run/board/run-board-read.ts +151 -27
  612. package/scripts/run/board/run-board-reason.ts +235 -51
  613. package/scripts/run/board/run-board-released.ts +35 -0
  614. package/scripts/run/board/run-board-render-checks.ts +39 -5
  615. package/scripts/run/board/run-board-render-condition.ts +96 -0
  616. package/scripts/run/board/run-board-render-drawn.ts +67 -0
  617. package/scripts/run/board/run-board-render-foot.ts +59 -0
  618. package/scripts/run/board/run-board-render-icon.ts +35 -0
  619. package/scripts/run/board/run-board-render-lanes.ts +145 -0
  620. package/scripts/run/board/run-board-render-lead.ts +80 -0
  621. package/scripts/run/board/run-board-render-legend.ts +117 -48
  622. package/scripts/run/board/run-board-render-notes.ts +156 -29
  623. package/scripts/run/board/run-board-render-processes.ts +196 -0
  624. package/scripts/run/board/run-board-render-section.ts +119 -0
  625. package/scripts/run/board/run-board-render-slot.ts +3 -36
  626. package/scripts/run/board/run-board-render-tail.ts +115 -48
  627. package/scripts/run/board/run-board-render-time.ts +56 -0
  628. package/scripts/run/board/run-board-render-title.ts +117 -24
  629. package/scripts/run/board/run-board-render-waits.ts +104 -20
  630. package/scripts/run/board/run-board-render.ts +207 -265
  631. package/scripts/run/board/run-board-roots.ts +54 -0
  632. package/scripts/run/board/run-board-row-yield.ts +9 -4
  633. package/scripts/run/board/run-board-setup.ts +1 -12
  634. package/scripts/run/board/run-board-snapshot.ts +111 -0
  635. package/scripts/run/board/run-board-spin.ts +2 -2
  636. package/scripts/run/board/run-board-state.ts +22 -33
  637. package/scripts/run/board/run-board-status.ts +147 -71
  638. package/scripts/run/board/run-board-thanks-read.ts +2 -2
  639. package/scripts/run/board/run-board-tick.ts +122 -107
  640. package/scripts/run/board/run-board-usage-board.ts +78 -0
  641. package/scripts/run/board/run-board-usage-lanes.ts +113 -0
  642. package/scripts/run/board/run-board-usage-listing.ts +93 -0
  643. package/scripts/run/board/run-board-usage-read.ts +120 -150
  644. package/scripts/run/board/run-board-usage-rusage.ts +19 -7
  645. package/scripts/run/board/run-board-usage-text.ts +139 -51
  646. package/scripts/run/board/run-board-usage-top.ts +102 -0
  647. package/scripts/run/board/run-board-usage.ts +89 -72
  648. package/scripts/run/board/run-board-usual.ts +20 -9
  649. package/scripts/run/carry/run-carry-args.ts +4 -7
  650. package/scripts/run/carry/run-carry-conversation.ts +1 -1
  651. package/scripts/run/carry/run-carry.ts +9 -4
  652. package/scripts/run/cut/run-cut-handoff.ts +2 -2
  653. package/scripts/run/event/run-event-cli.ts +1 -5
  654. package/scripts/run/event/run-event-filed.ts +12 -6
  655. package/scripts/run/event/run-event-follow.ts +2 -3
  656. package/scripts/run/event/run-event-render.ts +6 -10
  657. package/scripts/run/event/run-event-scope.ts +2 -2
  658. package/scripts/run/event/run-event-stream-emit.ts +82 -22
  659. package/scripts/run/event/run-event-stream.ts +34 -8
  660. package/scripts/run/hold/run-hold-adopt.ts +65 -0
  661. package/scripts/run/hold/run-hold-cli.ts +93 -22
  662. package/scripts/run/hold/run-hold-main.ts +12 -0
  663. package/scripts/run/hold/run-hold-member.ts +37 -0
  664. package/scripts/run/hold/run-stop-notify.ts +183 -0
  665. package/scripts/run/merge/run-merge-auth.ts +31 -0
  666. package/scripts/run/merge/run-merge-cli.ts +62 -48
  667. package/scripts/run/merge/run-merge-close.ts +74 -0
  668. package/scripts/run/merge/run-merge-collect.ts +6 -13
  669. package/scripts/run/merge/run-merge-driver.ts +71 -0
  670. package/scripts/run/merge/run-merge-main.ts +12 -0
  671. package/scripts/run/merge/run-merge-outcome.ts +23 -0
  672. package/scripts/run/merge/run-merge-restart.ts +39 -0
  673. package/scripts/run/merge/run-merge-ship.ts +20 -4
  674. package/scripts/run/merge/run-merge-signals.ts +33 -9
  675. package/scripts/run/merge/run-merge-steps.ts +120 -85
  676. package/scripts/run/merge/run-merge.ts +38 -37
  677. package/scripts/run/park/run-park-cli.ts +91 -0
  678. package/scripts/run/park/run-park.ts +88 -0
  679. package/scripts/run/park/run-stalled.ts +68 -0
  680. package/scripts/run/pause/run-pause-cli.ts +73 -0
  681. package/scripts/run/pause/run-pause.ts +251 -0
  682. package/scripts/run/progress/run-progress-cli.ts +4 -12
  683. package/scripts/run/progress/run-progress-clock.ts +1 -1
  684. package/scripts/run/progress/run-progress-config.ts +6 -14
  685. package/scripts/run/progress/run-progress-main.ts +12 -0
  686. package/scripts/run/progress/run-progress.ts +1 -4
  687. package/scripts/run/review/run-review.ts +2 -1
  688. package/scripts/run/run-ending.ts +1 -0
  689. package/scripts/run/run-invocation.ts +5 -6
  690. package/scripts/run/run-liveness-cli.ts +6 -8
  691. package/scripts/run/run-liveness.ts +60 -29
  692. package/scripts/run/run-next.ts +1 -1
  693. package/scripts/run/run-parent-cut-hook.ts +2 -2
  694. package/scripts/run/run-preflight.ts +18 -3
  695. package/scripts/run/run-prep-cli.ts +1 -10
  696. package/scripts/run/run-prep-locate.ts +7 -50
  697. package/scripts/run/run-prep-main.ts +12 -0
  698. package/scripts/run/run-prep.ts +6 -0
  699. package/scripts/run/run-report-cli.ts +101 -13
  700. package/scripts/run/run-report-handoff.ts +114 -0
  701. package/scripts/run/run-step.ts +1 -1
  702. package/scripts/run/run-stranded-detect.ts +13 -0
  703. package/scripts/run/run-watcher-guard-cli.ts +1 -1
  704. package/scripts/run/run-watcher-guard.ts +1 -1
  705. package/scripts/run/ship/run-ship-args.ts +121 -0
  706. package/scripts/run/ship/run-ship-body-draft.ts +110 -0
  707. package/scripts/run/ship/run-ship-cli.ts +63 -140
  708. package/scripts/run/ship/run-ship-detach.ts +19 -8
  709. package/scripts/run/ship/run-ship-infra-retry.ts +59 -0
  710. package/scripts/run/ship/run-ship-next.ts +18 -2
  711. package/scripts/run/ship/run-ship-overlap.ts +42 -5
  712. package/scripts/run/ship/run-ship-place.ts +96 -0
  713. package/scripts/run/ship/run-ship-pre-detach-timed.ts +43 -0
  714. package/scripts/run/ship/run-ship-pre-detach.ts +81 -24
  715. package/scripts/run/ship/run-ship-preflight.ts +137 -32
  716. package/scripts/run/ship/run-ship-probe.ts +11 -3
  717. package/scripts/run/ship/run-ship-relaunch-cap.ts +70 -0
  718. package/scripts/run/ship/run-ship-removed-rows.ts +61 -0
  719. package/scripts/run/ship/run-ship-return.ts +107 -23
  720. package/scripts/run/ship/run-ship-review-steps.ts +105 -151
  721. package/scripts/run/ship/run-ship-review.ts +73 -6
  722. package/scripts/run/ship/run-ship-reviewer.ts +207 -0
  723. package/scripts/run/ship/run-ship-stage.ts +55 -6
  724. package/scripts/run/ship/run-ship-steps.ts +46 -15
  725. package/scripts/run/ship/run-ship-stop-cause.ts +135 -0
  726. package/scripts/run/ship/run-ship-stop-text.ts +11 -6
  727. package/scripts/run/ship/run-ship-sync.ts +43 -6
  728. package/scripts/run/ship/run-ship.ts +30 -2
  729. package/scripts/run/tidy/run-tidy-cli.ts +0 -4
  730. package/scripts/run/tidy/run-tidy-lanes.ts +3 -0
  731. package/scripts/run/tidy/run-tidy-main.ts +8 -0
  732. package/scripts/run/wake/run-wake-cli.ts +119 -100
  733. package/scripts/run/wake/run-wake-code.ts +83 -0
  734. package/scripts/run/wake/run-wake-driver.ts +19 -8
  735. package/scripts/run/wake/run-wake-loop.ts +34 -3
  736. package/scripts/run/wake/run-wake-main.ts +13 -0
  737. package/scripts/run/wake/run-wake-ports.ts +90 -0
  738. package/scripts/run/wake/run-wake-takeover.ts +66 -0
  739. package/scripts/run/wake/run-wake.ts +2 -1
  740. package/scripts/safe-chain/pack-hook.ts +2 -2
  741. package/scripts/safe-chain/preinstall-command.ts +2 -1
  742. package/scripts/safe-chain/project-config.ts +3 -9
  743. package/scripts/security/security-audit-main.ts +8 -0
  744. package/scripts/security/security-audit-provision-logic.ts +0 -11
  745. package/scripts/security/security-audit-provision-main.ts +12 -0
  746. package/scripts/security/security-audit-provision.ts +11 -26
  747. package/scripts/security/security-audit.ts +6 -7
  748. package/scripts/self-sync-guard/self-sync-guard-logic.ts +6 -13
  749. package/scripts/split/split-assess-cli.ts +2 -2
  750. package/scripts/split/split-assess.ts +15 -0
  751. package/scripts/split/split-measure.ts +65 -0
  752. package/scripts/sync/claude-settings-merge.ts +8 -15
  753. package/scripts/sync/directory-copy-guard.ts +4 -9
  754. package/scripts/sync/file-content.ts +78 -8
  755. package/scripts/sync/sync-ai-files.ts +3 -5
  756. package/scripts/sync/sync-configs.ts +11 -23
  757. package/scripts/sync/sync-hook-safety.ts +4 -10
  758. package/scripts/sync/sync-main.ts +11 -0
  759. package/scripts/sync/sync.ts +25 -37
  760. package/scripts/test/test-declared-changed.ts +2 -2
  761. package/scripts/test/test-declared.ts +1 -1
  762. package/scripts/test/test-e2e-guard.ts +25 -1
  763. package/scripts/test/test-e2e-stamp.ts +38 -0
  764. package/scripts/test/test-pinned-logic.ts +145 -0
  765. package/scripts/test/test-pinned-main.ts +78 -0
  766. package/scripts/test/test-pinned.ts +100 -0
  767. package/scripts/test/test-read-map.ts +264 -0
  768. package/scripts/test/test-read-recording.ts +91 -0
  769. package/scripts/test/test-read-trace.ts +148 -0
  770. package/scripts/test/test-red-main.ts +12 -0
  771. package/scripts/test/test-red.ts +12 -30
  772. package/scripts/test/test-related-main.ts +18 -0
  773. package/scripts/test/test-related-record.ts +119 -0
  774. package/scripts/test/test-related-scope.ts +229 -43
  775. package/scripts/test/test-related.ts +300 -22
  776. package/scripts/test/test-unit-guard-main.ts +15 -0
  777. package/scripts/test/test-unit-guard.ts +42 -24
  778. package/scripts/test/unit-count-file.ts +37 -0
  779. package/scripts/test/unit-run-marker.ts +162 -0
  780. package/scripts/test/unit-setup-files.ts +51 -0
  781. package/scripts/test/unit-worker-share.ts +61 -149
  782. package/scripts/test/whole-suite-files.ts +63 -0
  783. package/scripts/time-runtime/time-background.ts +20 -2
  784. package/scripts/time-runtime/time-bundles.ts +4 -3
  785. package/scripts/time-runtime/time-density-hook.ts +8 -6
  786. package/scripts/time-runtime/time-followup-stage.ts +1 -3
  787. package/scripts/time-runtime/time-format.ts +5 -28
  788. package/scripts/time-runtime/time-markers.ts +10 -1
  789. package/scripts/time-runtime/time-shell.ts +97 -10
  790. package/scripts/time-runtime/time-transcript-line.ts +49 -62
  791. package/scripts/uninstall/uninstall.ts +1 -1
  792. package/scripts/version/bump-version-main.ts +12 -0
  793. package/scripts/version/bump-version.ts +25 -25
  794. package/scripts/version/effective-upstream.ts +6 -12
  795. package/scripts/version/latest-corepack.ts +17 -32
  796. package/scripts/version/latest-if-required-cli.ts +93 -0
  797. package/scripts/version/latest-lane-guard-main.ts +8 -0
  798. package/scripts/version/latest-lane-guard.ts +0 -4
  799. package/scripts/version/latest-scope-cli.ts +0 -9
  800. package/scripts/version/latest-scope-main.ts +12 -0
  801. package/scripts/version/latest-update.ts +5 -5
  802. package/scripts/version/npm-registry.ts +44 -6
  803. package/scripts/version/publishable-range-check.ts +5 -16
  804. package/scripts/version/release-age.ts +1 -1
  805. package/scripts/version/release-hold.ts +1 -1
  806. package/scripts/version/release-window.ts +38 -0
  807. package/scripts/version/running-binary.ts +1 -1
  808. package/scripts/version/safe-chain-version-update.ts +3 -8
  809. package/scripts/version/version-targets.ts +6 -28
  810. package/templates/dependabot.yml +29 -0
  811. package/templates/gitignore +4 -1
  812. package/templates/pnpm-workspace.basic.yaml +1 -1
  813. package/templates/sonar-project.properties +3 -2
  814. package/templates/workflows/ci.yml +12 -4
  815. package/templates/workflows/github-release.yml +4 -0
  816. package/tsconfig.sonar.json +1 -1
  817. package/.ncurc.json +0 -3
  818. package/dist/hooks/batch-guard.js +0 -29
  819. package/dist/hooks/chunk-4KKD2UTK.js +0 -66
  820. package/dist/hooks/chunk-6TS2JD6D.js +0 -237
  821. package/dist/hooks/chunk-7DSBJVFH.js +0 -50
  822. package/dist/hooks/chunk-A65Y4YOR.js +0 -79
  823. package/dist/hooks/chunk-CDY4NFQG.js +0 -15
  824. package/dist/hooks/chunk-EFXE6C37.js +0 -81
  825. package/dist/hooks/chunk-GP4IEC4O.js +0 -20
  826. package/dist/hooks/chunk-JP45SOCJ.js +0 -56
  827. package/dist/hooks/chunk-LAOV7NLM.js +0 -45
  828. package/dist/hooks/chunk-M4HGZV7U.js +0 -83
  829. package/dist/hooks/chunk-PF2NZL2A.js +0 -131
  830. package/dist/hooks/chunk-PTICX4OL.js +0 -358
  831. package/dist/hooks/chunk-RT27QRJW.js +0 -6247
  832. package/dist/hooks/chunk-SYOTDYCI.js +0 -3533
  833. package/dist/hooks/chunk-UPUZF3AN.js +0 -279
  834. package/dist/hooks/chunk-WK6SMBIC.js +0 -3180
  835. package/dist/hooks/duplicate-read-guard.js +0 -30
  836. package/dist/hooks/investigation-guard.js +0 -29
  837. package/scripts/backlog/backlog-stalled-cli.ts +0 -30
  838. package/scripts/cost-runtime/cost-format.ts +0 -29
  839. package/scripts/init/basic-path-migration.ts +0 -24
  840. package/scripts/issue/issue-backlinks-cli.ts +0 -93
  841. package/scripts/josh/josh-commands-guard.ts +0 -38
  842. package/scripts/josh/josh-usage-automation.ts +0 -121
  843. package/scripts/josh/josh-usage-backlog.ts +0 -180
  844. package/scripts/josh/josh-usage-developer.ts +0 -230
  845. package/scripts/josh/josh-usage-hooks.ts +0 -38
  846. package/scripts/josh/josh-usage-issue.ts +0 -205
  847. package/scripts/josh/josh-usage-review.ts +0 -101
  848. package/scripts/josh/josh-usage-run.ts +0 -252
  849. package/scripts/josh/josh-usage-session.ts +0 -238
  850. package/scripts/josh/josh-usage-workflow.ts +0 -212
  851. package/scripts/lint/cross-file-recheck.ts +0 -155
  852. package/scripts/registry-migration/migrate-logic.ts +0 -237
  853. package/scripts/registry-migration/migrate.ts +0 -292
  854. package/scripts/registry-migration/user-npmrc.ts +0 -15
  855. package/scripts/rules/rule-guard.ts +0 -23
  856. package/scripts/rules/rule-registry-rows.ts +0 -292
  857. package/scripts/rules/rule-registry.ts +0 -112
  858. package/scripts/run/run-stranded-cli.ts +0 -27
@@ -1,5 +1,8 @@
1
1
  import { OPTIONAL_ENV_FILE_FLAGS, type CommandEntry } from './josh-command-types'
2
2
 
3
+ const CHECK = '--check'
4
+ const JSON_FLAG = '--json'
5
+
3
6
  /* eslint-disable @typescript-eslint/naming-convention */
4
7
  const MAINTENANCE_COMMANDS: Record<string, CommandEntry> = {
5
8
  doctor: {
@@ -9,6 +12,21 @@ const MAINTENANCE_COMMANDS: Record<string, CommandEntry> = {
9
12
  category: 'Maintenance',
10
13
  reference: ['[--fix]', 'developer', ['files']],
11
14
  tsx_arguments: OPTIONAL_ENV_FILE_FLAGS,
15
+ usage: {
16
+ examples: [
17
+ { arguments: '', note: 'diagnose only' },
18
+ { arguments: '--fix', note: 'reclaim the global josh by removing a stale kit shim' },
19
+ { arguments: '--ports', note: 'also print the per-repository port-seed table' },
20
+ ],
21
+ flags: [
22
+ {
23
+ names: ['--fix'],
24
+ description:
25
+ 'remove a shadowing binary **only if it is a kit shim** (its body references `@joshuafolkken/kit` or the removed `install-bin` script); any other binary is left and reported for manual review. Also the one-shot recovery for an old project that re-created the global shim.',
26
+ },
27
+ { names: ['--ports'], description: 'additionally print the port-seed table (see below).' },
28
+ ],
29
+ },
12
30
  },
13
31
  'ruleset:check': {
14
32
  script: 'scripts/repo/ruleset-check-cli.ts',
@@ -16,30 +34,94 @@ const MAINTENANCE_COMMANDS: Record<string, CommandEntry> = {
16
34
  "Check that the default branch requires every status check kit's workflows report (--apply adds the missing ones)",
17
35
  category: 'Maintenance',
18
36
  reference: ['[--apply]', 'maintainer', ['network']],
37
+ usage: {
38
+ examples: [
39
+ { arguments: '', note: 'report only' },
40
+ { arguments: '--apply', note: 'add the missing checks to the existing rule' },
41
+ ],
42
+ flags: [
43
+ {
44
+ names: ['--apply'],
45
+ description:
46
+ "append the missing checks to the ruleset's required-checks rule (or to the branch protection's contexts). It never creates a ruleset: with none, create one under Settings → Rules → Rulesets, then rerun. Writing a repository setting needs admin access, so only this flag writes — `josh sync` and `josh doctor` never do.",
47
+ },
48
+ ],
49
+ },
19
50
  },
20
51
  overrides: {
21
52
  script: 'scripts/overrides/overrides-check.ts',
22
53
  description: 'Check pnpm overrides for drift',
23
54
  category: 'Maintenance',
24
55
  reference: ['[--save]', 'developer', ['files']],
56
+ usage: {
57
+ examples: [
58
+ { arguments: '', note: 'verify overrides unchanged' },
59
+ { arguments: '--save', note: 'snapshot current merged overrides' },
60
+ ],
61
+ flags: [
62
+ {
63
+ names: ['--save'],
64
+ description:
65
+ 'write the current merged overrides to `.overrides-snapshot.json` (gitignored); later runs compare against it and exit non-zero on any add, removal, or change.',
66
+ },
67
+ ],
68
+ },
25
69
  },
26
70
  audit: {
27
- script: 'scripts/security/security-audit.ts',
71
+ script: 'scripts/security/security-audit-main.ts',
28
72
  description: 'Run security audit',
29
73
  category: 'Maintenance',
30
74
  reference: ['', 'developer', ['processes']],
75
+ usage: { examples: [{ arguments: '' }] },
76
+ },
77
+ 'lockfile:policy': {
78
+ script: 'tools/security/lockfile-policy.ts',
79
+ description:
80
+ "Verify the lockfile against pnpm's supply-chain policy (minimumReleaseAge) when it or the policy moved from the merge-base",
81
+ category: 'Maintenance',
82
+ reference: ['', 'automation', ['network']],
83
+ is_kit_only: true,
84
+ usage: {
85
+ examples: [{ arguments: '', note: 'verify when the lockfile or its policy moved' }],
86
+ },
31
87
  },
32
88
  'audit:provision': {
33
- script: 'scripts/security/security-audit-provision.ts',
89
+ script: 'scripts/security/security-audit-provision-main.ts',
34
90
  description: 'Install the pinned osv-scanner when the audit cannot find one (no-op if present)',
35
91
  category: 'Maintenance',
36
92
  reference: ['', 'automation', ['files', 'network']],
93
+ usage: {
94
+ examples: [
95
+ { arguments: '', note: 'no-op if a scanner is already present' },
96
+ { arguments: '--force', note: 'ignore backoff, allow a longer download' },
97
+ ],
98
+ flags: [
99
+ {
100
+ names: ['--force'],
101
+ description:
102
+ 'ignore the 6-hour failure backoff and allow a longer download window; the command to run after fixing a network problem.',
103
+ },
104
+ ],
105
+ },
37
106
  },
38
107
  'reconcile-templates': {
39
108
  script: 'scripts/sync/reconcile-templates.ts',
40
109
  description: 'Record template source hashes (--check to verify drift)',
41
110
  category: 'Maintenance',
42
111
  reference: ['', 'maintainer', ['files']],
112
+ usage: {
113
+ examples: [
114
+ { arguments: '', note: 'regenerate copy templates + record tripwire hashes' },
115
+ { arguments: CHECK, note: 'verify templates are in sync; non-zero on drift' },
116
+ ],
117
+ flags: [
118
+ {
119
+ names: [CHECK],
120
+ description:
121
+ 'verify only; exits non-zero on drift. A pre-commit hook runs this when a tracked source or copy template is staged.',
122
+ },
123
+ ],
124
+ },
43
125
  },
44
126
  latest: {
45
127
  shell: [
@@ -51,9 +133,10 @@ const MAINTENANCE_COMMANDS: Record<string, CommandEntry> = {
51
133
  category: 'Maintenance',
52
134
  reference: ['', 'developer', ['files', 'network', 'processes']],
53
135
  argument_targets: ['latest:corepack', 'latest:update', 'audit'],
136
+ usage: { examples: [{ arguments: '', note: 'full update (update + audit + pnpm)' }] },
54
137
  },
55
138
  'latest:scope': {
56
- script: 'scripts/version/latest-scope-cli.ts',
139
+ script: 'scripts/version/latest-scope-main.ts',
57
140
  description:
58
141
  'Say whether this run has to update dependencies, from when josh latest last finished (--record notes a run)',
59
142
  category: 'Maintenance',
@@ -62,18 +145,42 @@ const MAINTENANCE_COMMANDS: Record<string, CommandEntry> = {
62
145
  // where the project keeps its settings — a variable that only works when exported from the
63
146
  // shell is one a user follows the documentation for and gets the default from, silently.
64
147
  tsx_arguments: OPTIONAL_ENV_FILE_FLAGS,
148
+ usage: {
149
+ examples: [
150
+ { arguments: '', note: 'required or skip, the reason on stderr' },
151
+ { arguments: '--record', note: 'note a finished josh latest run' },
152
+ { arguments: JSON_FLAG, note: 'the verdict and the reason as JSON' },
153
+ ],
154
+ flags: [
155
+ {
156
+ names: ['--record'],
157
+ description: 'write the completion record `josh latest` ends with.',
158
+ },
159
+ { names: [JSON_FLAG], description: 'emit the verdict and its reason as JSON.' },
160
+ ],
161
+ },
162
+ },
163
+ 'latest:if-required': {
164
+ script: 'scripts/version/latest-if-required-cli.ts',
165
+ description: 'Run josh latest only when latest:scope answers required, stashing around it',
166
+ category: 'Maintenance',
167
+ reference: ['', 'automation', ['files', 'network', 'processes']],
168
+ tsx_arguments: OPTIONAL_ENV_FILE_FLAGS,
169
+ usage: { examples: [{ arguments: '', note: 'stash, update, pop on required' }] },
65
170
  },
66
171
  'latest:guard': {
67
- script: 'scripts/version/latest-lane-guard.ts',
172
+ script: 'scripts/version/latest-lane-guard-main.ts',
68
173
  description: 'Refuse josh latest inside a lane (the update stamp is keyed to the project root)',
69
174
  category: 'Maintenance',
70
175
  reference: ['', 'automation', ['files']],
176
+ usage: { examples: [{ arguments: '', note: 'refuses inside a lane' }] },
71
177
  },
72
178
  'latest:corepack': {
73
179
  script: 'scripts/version/latest-corepack.ts',
74
180
  description: 'Update pnpm on the current major while preserving the integrity pin',
75
181
  category: 'Maintenance',
76
182
  reference: ['', 'developer', ['files', 'network']],
183
+ usage: { examples: [{ arguments: '', note: 'update pnpm only' }] },
77
184
  },
78
185
  'latest:update': {
79
186
  script: 'scripts/version/latest-update.ts',
@@ -83,6 +190,7 @@ const MAINTENANCE_COMMANDS: Record<string, CommandEntry> = {
83
190
  // `JOSH_PLAYWRIGHT_BROWSERS` widens the browsers a Playwright bump installs, and a project
84
191
  // keeps that setting in its `.env`.
85
192
  tsx_arguments: OPTIONAL_ENV_FILE_FLAGS,
193
+ usage: { examples: [{ arguments: '', note: 'update dependencies only' }] },
86
194
  },
87
195
  }
88
196
  /* eslint-enable @typescript-eslint/naming-convention */
@@ -0,0 +1,29 @@
1
+ import { OPTIONAL_ENV_FILE_FLAGS, type CommandEntry } from './josh-command-types'
2
+
3
+ // `run:pause`, split out of `josh-commands-run.ts` so that file stays under its 300-code-line limit,
4
+ // as `PROGRESS_COMMANDS` is. `RUN_COMMANDS` spreads this in after `run:release`, so the map keeps
5
+ // the order the run reads them in.
6
+
7
+ /* eslint-disable @typescript-eslint/naming-convention */
8
+ const PAUSE_COMMANDS: Record<string, CommandEntry> = {
9
+ 'run:pause': {
10
+ script: 'scripts/run/pause/run-pause-cli.ts',
11
+ description: 'Set a run aside while its prerequisite lands first',
12
+ category: 'AI tools',
13
+ // `run:release` underneath can send the stop confirmation.
14
+ tsx_arguments: OPTIONAL_ENV_FILE_FLAGS,
15
+ reference: ['<issue> --for <prerequisite>', 'automation', ['git', 'network', 'files']],
16
+ usage: {
17
+ examples: [{ arguments: '1091 --for 1102', note: 'pause 1091 until 1102 lands' }],
18
+ flags: [
19
+ {
20
+ names: ['--for <prerequisite>'],
21
+ description: 'the issue that has to land first; `<issue>` is recorded blocked by it.',
22
+ },
23
+ ],
24
+ },
25
+ },
26
+ }
27
+ /* eslint-enable @typescript-eslint/naming-convention */
28
+
29
+ export { PAUSE_COMMANDS }
@@ -0,0 +1,87 @@
1
+ import { OPTIONAL_ENV_FILE_FLAGS, type CommandEntry } from './josh-command-types'
2
+
3
+ // The run's progress and board commands, split out of `josh-commands-run.ts` when each command's
4
+ // usage moved onto its entry (#4185). `RUN_COMMANDS` spreads this in at the same place, so the map
5
+ // keeps its order.
6
+
7
+ /* eslint-disable @typescript-eslint/naming-convention */
8
+ const PROGRESS_COMMANDS: Record<string, CommandEntry> = {
9
+ 'run:progress': {
10
+ script: 'scripts/run/progress/run-progress-main.ts',
11
+ description: 'Report an unattended run’s progress once it has gone quiet for an interval',
12
+ category: 'AI tools',
13
+ reference: [
14
+ '[--once | --wait] [--interval <minutes>] [--hours <hours>] [--repo <owner/repo>] [--output <path>] | --mark | --path',
15
+ 'automation',
16
+ ['files'],
17
+ ],
18
+ usage: {
19
+ examples: [
20
+ { arguments: '--output <path>' },
21
+ { arguments: '--once', note: 'five labelled lines now, whatever the clock says' },
22
+ { arguments: '--interval 20 --repo joshuafolkken/app-kit --hours 4' },
23
+ ],
24
+ flags: [
25
+ {
26
+ names: ['--mark'],
27
+ description:
28
+ 'record that a real report happened without printing a line (keeps the last line for `run:wake --list`).',
29
+ },
30
+ {
31
+ names: ['--path'],
32
+ description:
33
+ 'print the ambient heartbeat log\'s path and exit. Every heartbeat line is mirrored there, so `tail -F "$(pnpm josh run:progress --path)"` follows the run across a `backlogrun` session cut. Reads no run state, so it answers in a lane child too.',
34
+ },
35
+ {
36
+ names: ['--interval <min>'],
37
+ description:
38
+ 'silence interval (default 20; also `JOSH_PROGRESS_INTERVAL_MINUTES`, then `josh.progress_interval_minutes`).',
39
+ },
40
+ {
41
+ names: ['--wait'],
42
+ description:
43
+ 'start once in the background: each report goes to the event stream and ambient log, never stdout; exits only on an arrival, `josh followup` ending the run, or `--hours`.',
44
+ },
45
+ {
46
+ names: ['--hours <n>'],
47
+ description: 'how long the watcher lives (default 8 with `--wait`, 1 otherwise).',
48
+ },
49
+ { names: ['--repo <owner/name>'], description: 'scopes the read.' },
50
+ ],
51
+ },
52
+ },
53
+ 'run:board': {
54
+ script: 'scripts/run/board/run-board-main.ts',
55
+ // `--every` pushes its frame as a Telegram, so the credentials come from `.env` as for `run:carry`.
56
+ tsx_arguments: OPTIONAL_ENV_FILE_FLAGS,
57
+ description: 'Draw a live board of the running backlogrun, redrawn every second',
58
+ category: 'AI tools',
59
+ reference: ['[--once | --chat | --every <minutes>]', 'automation', ['files', 'network']],
60
+ usage: {
61
+ examples: [
62
+ { arguments: '', note: 'redraw until interrupted' },
63
+ { arguments: '--once', note: 'one frame, then exit' },
64
+ { arguments: '--chat', note: 'one frame for a chat, recorded as a progress report' },
65
+ {
66
+ arguments: '--every 5',
67
+ note: 'the --chat frame as a 📊 Progress Telegram every 5 minutes, until the run ends',
68
+ },
69
+ ],
70
+ flags: [
71
+ {
72
+ names: ['--chat'],
73
+ description:
74
+ 'answers a `backlogrun` progress question: the frame `--once` draws, with only `🧠` on the machine line and no escapes; it records the report as `run:progress --mark` does.',
75
+ },
76
+ {
77
+ names: ['--every <minutes>'],
78
+ description:
79
+ 'sends the `--chat` frame as a `📊 Progress` Telegram now and every `<minutes>` until the run ends — only when a person asks for it.',
80
+ },
81
+ ],
82
+ },
83
+ },
84
+ }
85
+ /* eslint-enable @typescript-eslint/naming-convention */
86
+
87
+ export { PROGRESS_COMMANDS }
@@ -1,5 +1,13 @@
1
1
  import type { CommandEntry } from './josh-command-types'
2
2
 
3
+ const STAGED = '--staged'
4
+ const JSON_FLAG = '--json'
5
+ const BRANCH_DIFF = 'the branch diff'
6
+ const STAGED_DIFF = 'the staged diff instead'
7
+ const PR_NUMBER = '42'
8
+ const DRY_RUN = '--dry-run'
9
+ const SKIP_PUBLISH_WAIT = '--skip-publish-wait'
10
+
3
11
  // Command names are the CLI's, not TypeScript's: a scoped one carries a colon (`sync:scope`), which
4
12
  // no identifier format allows. The same disable sits at the top of `josh-commands-maintenance.ts`
5
13
  // for the same reason.
@@ -11,6 +19,7 @@ const PROJECT_COMMANDS: Record<string, CommandEntry> = {
11
19
  description: 'Show the project profile and the reason for it',
12
20
  category: 'Project',
13
21
  reference: [PROFILE_ARGUMENTS, 'developer', ['files']],
22
+ usage: { examples: [{ arguments: '' }] },
14
23
  },
15
24
  start: {
16
25
  script: 'scripts/init/start.ts',
@@ -21,13 +30,39 @@ const PROJECT_COMMANDS: Record<string, CommandEntry> = {
21
30
  'developer',
22
31
  ['files', 'git', 'network', 'processes'],
23
32
  ],
33
+ usage: {
34
+ examples: [
35
+ { arguments: '', note: 'asks for the profile and the repository' },
36
+ {
37
+ arguments: '--yes --github --profile basic',
38
+ note: 'unattended, including the GitHub repository',
39
+ },
40
+ ],
41
+ flags: [
42
+ { names: ['--profile basic|full'], description: 'the profile, without asking.' },
43
+ { names: ['--yes'], description: 'take the defaults — not consent to write to GitHub.' },
44
+ { names: ['--github'], description: 'create the GitHub repository and push `main`.' },
45
+ { names: ['--public'], description: 'create the repository public instead of private.' },
46
+ {
47
+ names: ['--init-command "<command>"'],
48
+ description: 'run this setup command in place of `josh init`.',
49
+ },
50
+ {
51
+ names: ['--push-preflight-command "<command>"'],
52
+ description:
53
+ 'a check run before the first step when the plan pushes; a failure stops the run before it writes anything.',
54
+ },
55
+ { names: ['--dry-run'], description: 'print the plan and change nothing.' },
56
+ ],
57
+ },
24
58
  },
25
59
  'dogfood:commit': {
26
- script: 'scripts/dogfood/dogfood-commit-cli.ts',
60
+ script: 'tools/dogfood/dogfood-commit-cli.ts',
27
61
  description: "Make the first commit of a dogfood run's own kit-test-* project",
28
62
  category: 'Project',
29
63
  reference: ['<dir>', 'automation', ['files', 'git']],
30
64
  is_kit_only: true,
65
+ usage: { examples: [{ arguments: '~/Development/kit-test-html-start' }] },
31
66
  },
32
67
  'fresh:run': {
33
68
  script: 'scripts/fresh-machine/fresh-machine-cli.ts',
@@ -39,6 +74,35 @@ const PROJECT_COMMANDS: Record<string, CommandEntry> = {
39
74
  'maintainer',
40
75
  ['files', 'network', 'processes'],
41
76
  ],
77
+ usage: {
78
+ examples: [
79
+ { arguments: '--list', note: "kit's six patterns" },
80
+ { arguments: 'kit-test-html-init', note: 'one pattern, the packed checkout' },
81
+ {
82
+ arguments: 'kit-test-html-start',
83
+ note: 'a GitHub pattern, the latest published version',
84
+ },
85
+ { arguments: '--spec fresh/html-init.json', note: 'a scenario another toolkit wrote' },
86
+ ],
87
+ flags: [
88
+ { names: ['--list'], description: 'print the pattern names and run nothing.' },
89
+ {
90
+ names: ['--spec <file.json>'],
91
+ description:
92
+ 'run the scenario in this file instead of a named pattern; the path is relative to the project root.',
93
+ },
94
+ {
95
+ names: ['--package-version <version>'],
96
+ description:
97
+ "the published version a `package_source: published` scenario installs. Default: the registry's latest version of the package the command is run from.",
98
+ },
99
+ {
100
+ names: ['--log-dir <dir>'],
101
+ description: 'where the log is written. Default: `.josh/tmp/fresh-machine`.',
102
+ },
103
+ { names: ['--rebuild'], description: 'build the machine image without the layer cache.' },
104
+ ],
105
+ },
42
106
  },
43
107
  'auth:setup': {
44
108
  script: 'scripts/auth/auth-setup-cli.ts',
@@ -46,9 +110,15 @@ const PROJECT_COMMANDS: Record<string, CommandEntry> = {
46
110
  'Save the long-lived Claude Code token `claude setup-token` prints in the macOS keychain, for josh fresh:run',
47
111
  category: 'Project',
48
112
  reference: ['[--check]', 'maintainer', ['network', 'processes']],
113
+ usage: {
114
+ examples: [
115
+ { arguments: '', note: 'sign in and save the token' },
116
+ { arguments: '--check', note: 'ok: … saved on <date>, or missing: … and exit 1' },
117
+ ],
118
+ },
49
119
  },
50
120
  init: {
51
- script: 'scripts/init/init.ts',
121
+ script: 'scripts/init/init-main.ts',
52
122
  description: 'Initialize config in a new project',
53
123
  category: 'Project',
54
124
  reference: [
@@ -56,30 +126,50 @@ const PROJECT_COMMANDS: Record<string, CommandEntry> = {
56
126
  'developer',
57
127
  ['files', 'network', 'processes'],
58
128
  ],
129
+ usage: {
130
+ examples: [
131
+ {
132
+ arguments: '',
133
+ note: 'create/merge config files, install and format (--no-install skips both, --dry-run only prints the plan)',
134
+ },
135
+ ],
136
+ },
59
137
  },
60
138
  sync: {
61
- script: 'scripts/sync/sync.ts',
139
+ script: 'scripts/sync/sync-main.ts',
62
140
  description: 'Sync config files',
63
141
  category: 'Project',
64
142
  reference: ['', 'developer', ['files']],
143
+ usage: { examples: [{ arguments: '', note: 'overwrite managed files' }] },
65
144
  },
66
145
  uninstall: {
67
146
  script: 'scripts/uninstall/uninstall.ts',
68
147
  description: 'Remove what kit added to a project and list what is left to review by hand',
69
148
  category: 'Project',
70
149
  reference: [`${PROFILE_ARGUMENTS} [--yes]`, 'developer', ['files', 'processes']],
71
- },
72
- 'registry:migrate': {
73
- script: 'scripts/registry-migration/migrate.ts',
74
- description: 'Migrate a project from GitHub Packages to public npm',
75
- category: 'Project',
76
- reference: ['', 'developer', ['files', 'network', 'processes']],
150
+ usage: {
151
+ examples: [
152
+ { arguments: '', note: 'show the plan, then ask' },
153
+ { arguments: '--yes', note: 'remove without asking' },
154
+ ],
155
+ },
77
156
  },
78
157
  'sync:scope': {
79
158
  script: 'scripts/sync/managed-config-scope-cli.ts',
80
159
  description: 'Say whether this change touches a file josh sync distributes',
81
160
  category: 'Project',
82
161
  reference: ['[--staged] [--json]', 'automation', ['none']],
162
+ usage: {
163
+ examples: [
164
+ { arguments: '', note: BRANCH_DIFF },
165
+ { arguments: STAGED, note: STAGED_DIFF },
166
+ { arguments: JSON_FLAG, note: '{"scope":"managed","reason":"..."}' },
167
+ ],
168
+ flags: [
169
+ { names: [STAGED], description: 'inspect the staged diff instead of the branch diff.' },
170
+ { names: [JSON_FLAG], description: 'emit `{"scope","reason"}` as JSON.' },
171
+ ],
172
+ },
83
173
  },
84
174
  'sonar:hotspots': {
85
175
  script: 'scripts/sonar/sonar-hotspots-cli.ts',
@@ -87,18 +177,26 @@ const PROJECT_COMMANDS: Record<string, CommandEntry> = {
87
177
  "Fetch SonarCloud hotspots on a pull request and print each one's Step B disposition",
88
178
  category: 'Project',
89
179
  reference: ['<PR>', 'automation', ['network']],
180
+ usage: { examples: [{ arguments: PR_NUMBER }] },
90
181
  },
91
182
  'sonar:new-code': {
92
183
  script: 'scripts/sonar/sonar-new-code-cli.ts',
93
184
  description: 'Fail when a pull request adds any new SonarCloud issue or duplicated block',
94
185
  category: 'Project',
95
186
  reference: ['<PR>', 'automation', ['network']],
187
+ usage: { examples: [{ arguments: PR_NUMBER }] },
96
188
  },
97
189
  'ui:routes': {
98
190
  script: 'scripts/ui/ui-routes-cli.ts',
99
191
  description: 'List the screenshot-target routes the current change touches',
100
192
  category: 'Project',
101
193
  reference: ['[--staged]', 'automation', ['none']],
194
+ usage: {
195
+ examples: [
196
+ { arguments: '', note: BRANCH_DIFF },
197
+ { arguments: STAGED, note: STAGED_DIFF },
198
+ ],
199
+ },
102
200
  },
103
201
  propagate: {
104
202
  script: 'scripts/propagate/propagate.ts',
@@ -109,12 +207,43 @@ const PROJECT_COMMANDS: Record<string, CommandEntry> = {
109
207
  'maintainer',
110
208
  ['files', 'network'],
111
209
  ],
210
+ usage: {
211
+ examples: [
212
+ { arguments: '' },
213
+ { arguments: DRY_RUN, note: 'report targets and steps, write nothing' },
214
+ { arguments: SKIP_PUBLISH_WAIT, note: 'release already known to be published' },
215
+ { arguments: '--target app-kit', note: 'carry the release into one consumer only' },
216
+ ],
217
+ flags: [
218
+ {
219
+ names: [DRY_RUN],
220
+ description:
221
+ 'report targets and steps without writing; skips the publish wait, opens no issues.',
222
+ },
223
+ {
224
+ names: [SKIP_PUBLISH_WAIT],
225
+ description: 'skip the registry poll for an already-published release.',
226
+ },
227
+ {
228
+ names: ['--target <repo>'],
229
+ description:
230
+ 'process only that consumer (`app-kit` or `joshuafolkken/app-kit`); the rest are reported `skipped` and left untouched. An unknown, ambiguous or non-dependent name fails before the publish wait, writing nothing.',
231
+ },
232
+ ],
233
+ },
112
234
  },
113
235
  adopt: {
114
236
  script: 'scripts/adopt/adopt.ts',
115
237
  description: 'Upgrade the @joshuafolkken toolkits and other dependencies here, open the PR',
116
238
  category: 'Project',
117
239
  reference: ['[--dry-run]', 'developer', ['files', 'git', 'network', 'processes']],
240
+ usage: {
241
+ examples: [
242
+ { arguments: '' },
243
+ { arguments: '--dry-run', note: 'report the steps without touching anything' },
244
+ ],
245
+ flags: [{ names: ['--dry-run'], description: 'report the plan without writing.' }],
246
+ },
118
247
  },
119
248
  }
120
249
 
@@ -0,0 +1,124 @@
1
+ import type { CommandEntry } from './josh-command-types'
2
+
3
+ const LEVEL_ONLY = '--level-only'
4
+ const CHECK = '--check'
5
+ const MACHINE_READABLE = 'the verdict and the reason, machine-readable'
6
+ const JSON_FLAG = '--json'
7
+ const ROUND_1_CLOSED = '--round-1-closed'
8
+
9
+ // The review and delegation commands, split out of `josh-commands-ai.ts` when each command's usage
10
+ // moved onto its entry (#4185). `AI_COMMANDS` spreads this in at the same place, so the map keeps its
11
+ // order.
12
+
13
+ /* eslint-disable @typescript-eslint/naming-convention */
14
+ const REVIEW_COMMANDS: Record<string, CommandEntry> = {
15
+ 'review:brief': {
16
+ script: 'scripts/review/review-brief-main.ts',
17
+ description:
18
+ 'Print the whole /code-review invocation: level, what the gate already proved, target (--level-only for the level alone)',
19
+ category: 'AI tools',
20
+ reference: [
21
+ '[--round <1|2>] | --interaction | --level-only [--staged] [--json]',
22
+ 'automation',
23
+ ['files'],
24
+ ],
25
+ usage: {
26
+ examples: [
27
+ { arguments: '', note: 'round 1' },
28
+ { arguments: '--round 2', note: 'verification pass, scoped to the fix delta' },
29
+ { arguments: '--interaction', note: 'the interaction review of a run-tooling change' },
30
+ { arguments: LEVEL_ONLY, note: 'the level alone (pre-commit review)' },
31
+ { arguments: '--level-only --json', note: 'level and reason, machine-readable' },
32
+ ],
33
+ flags: [
34
+ {
35
+ names: ['--round 2'],
36
+ description:
37
+ "target is round 1's fixes and nothing else (widened back to the whole change when the record's change base no longer matches).",
38
+ },
39
+ {
40
+ names: [LEVEL_ONLY],
41
+ description:
42
+ 'print the level alone (level to stdout, reason to stderr); bypasses the scoped-green refusal.',
43
+ },
44
+ {
45
+ names: ['--staged', '--json'],
46
+ description: 'the staged diff; machine-readable level and reason.',
47
+ },
48
+ ],
49
+ },
50
+ },
51
+ 'review:attest': {
52
+ script: 'scripts/review/review-attest-cli.ts',
53
+ description: 'Record, or verify, which checkout a /code-review actually read',
54
+ category: 'AI tools',
55
+ reference: ['<nonce> | --check', 'automation', ['files']],
56
+ usage: {
57
+ examples: [
58
+ { arguments: '<nonce>', note: 'run by the review, from the checkout it read' },
59
+ { arguments: CHECK, note: 'run by the run, before it acts on the review' },
60
+ ],
61
+ flags: [
62
+ { names: ['<nonce>'], description: 'attest the checkout the review read.' },
63
+ {
64
+ names: [CHECK],
65
+ description: 'verify before acting; `josh followup` asks again before merging.',
66
+ },
67
+ ],
68
+ },
69
+ },
70
+ 'review:round2': {
71
+ script: 'scripts/review/review-round2-cli.ts',
72
+ description: 'Say whether the second /code-review round is due, or may be skipped entirely',
73
+ category: 'AI tools',
74
+ reference: ['[--round-1-closed] [--json]', 'automation', ['none']],
75
+ usage: {
76
+ examples: [
77
+ { arguments: '', note: '→ required' },
78
+ { arguments: ROUND_1_CLOSED, note: '→ required | skip' },
79
+ { arguments: JSON_FLAG, note: MACHINE_READABLE },
80
+ ],
81
+ flags: [
82
+ {
83
+ names: [ROUND_1_CLOSED],
84
+ description:
85
+ 'the caller states every round-1 High/Medium finding closed and none was filed or deferred; its absence answers `required`.',
86
+ },
87
+ { names: [JSON_FLAG], description: 'machine-readable verdict and reason.' },
88
+ ],
89
+ },
90
+ },
91
+ delegate: {
92
+ script: 'scripts/delegation/delegation-cli.ts',
93
+ description: 'Say whether a run step may go to a cheaper execution tier',
94
+ category: 'AI tools',
95
+ reference: ['<step> | --list', 'automation', ['none']],
96
+ usage: {
97
+ examples: [
98
+ { arguments: 'gate-fix', note: '→ delegate' },
99
+ { arguments: 'review', note: '→ keep' },
100
+ { arguments: '--list', note: 'the enumeration, and what was rejected and why' },
101
+ ],
102
+ },
103
+ },
104
+ fanout: {
105
+ script: 'scripts/delegation/fanout-cli.ts',
106
+ description:
107
+ 'Say whether proposed implementation units are file-disjoint, so they may run in parallel',
108
+ category: 'AI tools',
109
+ reference: ['<unit-files> <unit-files> [<unit-files> …]', 'automation', ['none']],
110
+ usage: {
111
+ examples: [
112
+ { arguments: 'scripts/a.ts,scripts/a.test.ts scripts/b.ts', note: '→ parallel' },
113
+ {
114
+ arguments: 'scripts/a.ts,shared.ts scripts/b.ts,shared.ts',
115
+ note: '→ serial (units share shared.ts)',
116
+ },
117
+ { arguments: 'scripts/a.ts', note: '→ serial (fewer than two units)' },
118
+ ],
119
+ },
120
+ },
121
+ }
122
+ /* eslint-enable @typescript-eslint/naming-convention */
123
+
124
+ export { REVIEW_COMMANDS }