@joshuafolkken/kit 1.1514.0 → 1.2114.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 (1176) hide show
  1. package/.claude/agents/investigator.md +1 -1
  2. package/.claude/agents/reviewer-verification.md +19 -0
  3. package/.claude/agents/reviewer.md +19 -0
  4. package/.claude/settings.json +5 -6
  5. package/.claude/skills/dependency-update/SKILL.md +9 -10
  6. package/.claude/skills/epic-commands/SKILL.md +26 -65
  7. package/.claude/skills/epic-commands/epic-bundle.md +3 -1
  8. package/.claude/skills/workflow-commands/SKILL.md +11 -11
  9. package/.claude/skills/workflow-commands/background-commands.md +13 -10
  10. package/.claude/skills/workflow-commands/backlogrun-child.md +12 -8
  11. package/.claude/skills/workflow-commands/backlogrun-handoff-report.md +7 -25
  12. package/.claude/skills/workflow-commands/backlogrun-lanes.md +18 -14
  13. package/.claude/skills/workflow-commands/backlogrun-park.md +18 -24
  14. package/.claude/skills/workflow-commands/backlogrun-progress.md +4 -5
  15. package/.claude/skills/workflow-commands/backlogrun-recovery.md +6 -6
  16. package/.claude/skills/workflow-commands/backlogrun-steps.md +12 -11
  17. package/.claude/skills/workflow-commands/backlogrun.md +1 -1
  18. package/.claude/skills/workflow-commands/chain-rule.md +43 -28
  19. package/.claude/skills/workflow-commands/delegation.md +11 -10
  20. package/.claude/skills/workflow-commands/entry-sequence.md +10 -10
  21. package/.claude/skills/workflow-commands/followup.md +16 -36
  22. package/.claude/skills/workflow-commands/fullrun-steps.md +38 -47
  23. package/.claude/skills/workflow-commands/fullrun.md +3 -3
  24. package/.claude/skills/workflow-commands/halfrun.md +17 -25
  25. package/.claude/skills/workflow-commands/issue-comments.md +25 -16
  26. package/.claude/skills/workflow-commands/issue-fold-existing.md +2 -1
  27. package/.claude/skills/workflow-commands/issue-scout.md +2 -2
  28. package/.claude/skills/workflow-commands/kickoff.md +24 -23
  29. package/.claude/skills/workflow-commands/latest-gate.md +7 -12
  30. package/.claude/skills/workflow-commands/needs-human-review.md +9 -14
  31. package/.claude/skills/workflow-commands/observation-filing.md +4 -36
  32. package/.claude/skills/workflow-commands/observation-ledger.md +6 -4
  33. package/.claude/skills/workflow-commands/pre-gate-cut.md +22 -37
  34. package/.claude/skills/workflow-commands/prerequisite.md +11 -16
  35. package/.claude/skills/workflow-commands/progress-watcher.md +1 -1
  36. package/.claude/skills/workflow-commands/prrun.md +3 -7
  37. package/.claude/skills/workflow-commands/retrospective.md +2 -2
  38. package/.claude/skills/workflow-commands/split-assessment.md +15 -1
  39. package/.claude/skills/workflow-commands/working-tree-hold.md +9 -9
  40. package/.codex/hooks.json +5 -5
  41. package/.github/actions/setup-node/action.yml +9 -0
  42. package/.github/actions/setup-pnpm/action.yml +10 -17
  43. package/.github/dependabot.yml +32 -0
  44. package/.github/release.yml +0 -2
  45. package/.github/workflows/auto-tag.yml +45 -0
  46. package/.github/workflows/ci.yml +267 -17
  47. package/.github/workflows/dependabot-auto-merge.yml +63 -4
  48. package/.github/workflows/production.yml +8 -0
  49. package/.github/workflows/publish.yml +67 -46
  50. package/.github/workflows/sonar-qube.yml +1 -0
  51. package/.prettierignore +2 -0
  52. package/.vscode/settings.json +19 -0
  53. package/.vscode/tasks.json +1 -2
  54. package/CLAUDE.md +7 -18
  55. package/README.md +4 -2
  56. package/SECURITY.md +3 -3
  57. package/dist/CLAUDE.md +7 -18
  58. package/dist/commands/document-read-cli.js +883 -0
  59. package/dist/commands/{document-section-cli.js → document-section-main.js} +81 -38
  60. package/dist/commands/read-set-cli.js +1927 -0
  61. package/dist/commands/run-prep-main.js +21174 -0
  62. package/dist/commands/run-step-cli.js +27733 -0
  63. package/dist/config-merge/index.js +5 -1
  64. package/dist/hooks/audit-provision.js +39 -36
  65. package/dist/hooks/chunk-3GKE653K.js +6204 -0
  66. package/dist/hooks/chunk-45CJJOO7.js +1243 -0
  67. package/dist/hooks/chunk-5PM2JRGV.js +7780 -0
  68. package/dist/hooks/chunk-7SIUNQXK.js +3591 -0
  69. package/dist/hooks/chunk-CQD4LJE6.js +4858 -0
  70. package/dist/hooks/{chunk-723HKZO5.js → chunk-OPSRGWFU.js} +1 -1
  71. package/dist/hooks/chunk-UJ3FPMMM.js +628 -0
  72. package/dist/hooks/chunk-VVNYJWEI.js +30 -0
  73. package/dist/hooks/chunk-Z6DQJKH3.js +2806 -0
  74. package/dist/hooks/codex-hook-adapter.js +10 -22
  75. package/dist/hooks/format-edited.js +4 -6
  76. package/dist/hooks/inputs.json +460 -308
  77. package/dist/hooks/pretool-guard.js +8 -25
  78. package/dist/hooks/session-lang.js +135 -299
  79. package/dist/hooks/stop-guard.js +6496 -1799
  80. package/dist/josh.js +7412 -4228
  81. package/dist/self-sync-guard/index.js +74 -10
  82. package/dist/version/index.js +276 -407
  83. package/eslint/base.js +1 -1
  84. package/eslint/rules/comment-why-only.js +108 -0
  85. package/lefthook/base.yml +3 -1
  86. package/package.json +23 -54
  87. package/pnpm-workspace.yaml +4 -2
  88. package/prompts/coding-standards.md +2 -2
  89. package/prompts/collaboration-workflow/file-edits.md +14 -17
  90. package/prompts/collaboration-workflow/issue-citation.md +0 -4
  91. package/prompts/collaboration-workflow/issue-template.md +54 -18
  92. package/prompts/collaboration-workflow/lane-instructions.md +3 -2
  93. package/prompts/collaboration-workflow/measurement.md +44 -0
  94. package/prompts/collaboration-workflow/operating-rules.md +15 -8
  95. package/prompts/collaboration-workflow/output-bounds.md +6 -7
  96. package/prompts/collaboration-workflow/plan-comment.md +3 -42
  97. package/prompts/collaboration-workflow/principles.md +14 -0
  98. package/prompts/collaboration-workflow/report-format.md +31 -60
  99. package/prompts/collaboration-workflow/residency.md +3 -2
  100. package/prompts/collaboration-workflow/rule-delivery.md +13 -1
  101. package/prompts/collaboration-workflow/shell-body.md +6 -16
  102. package/prompts/collaboration-workflow/turn-batching.md +0 -2
  103. package/prompts/collaboration-workflow/upstream-interrupt.md +15 -5
  104. package/prompts/collaboration-workflow/wip-cap.md +4 -2
  105. package/prompts/collaboration-workflow.md +3 -7
  106. package/prompts/refactoring.md +1 -1
  107. package/prompts/review-rubric.md +9 -2
  108. package/prompts/review.md +65 -36
  109. package/prompts/testing-guide.md +9 -43
  110. package/scripts/agent/agent-argv.ts +14 -16
  111. package/scripts/agent/agent-event.ts +15 -15
  112. package/scripts/agent/agent-exit-record.ts +13 -1
  113. package/scripts/agent/agent-provider.ts +138 -0
  114. package/scripts/agent/agent-role-profile.ts +108 -156
  115. package/scripts/agent/agent-safe-text.ts +20 -5
  116. package/scripts/agent/api-auth.ts +41 -0
  117. package/scripts/agent/api-outage.ts +1 -1
  118. package/scripts/agent/api-usage-limit.ts +65 -0
  119. package/scripts/agent/claude-agent-argv.ts +19 -9
  120. package/scripts/agent/codex-agent-argv.ts +118 -22
  121. package/scripts/agent/usage-limit-reset.ts +179 -0
  122. package/scripts/auth/claude-token-output.ts +2 -2
  123. package/scripts/auto-ok/auto-ok-author.ts +53 -0
  124. package/scripts/auto-ok/auto-ok-cli.ts +25 -16
  125. package/scripts/auto-ok/auto-ok-judge-read.ts +12 -3
  126. package/scripts/auto-ok/auto-ok-judge-write.ts +46 -19
  127. package/scripts/auto-ok/auto-ok-judge.ts +13 -2
  128. package/scripts/auto-ok/auto-ok-main.ts +17 -0
  129. package/scripts/backlog/backlog-arrival.ts +14 -3
  130. package/scripts/backlog/backlog-budget-cli.ts +7 -33
  131. package/scripts/backlog/backlog-budget-main.ts +16 -0
  132. package/scripts/backlog/backlog-budget.ts +2 -3
  133. package/scripts/backlog/backlog-defect-priority.ts +5 -4
  134. package/scripts/backlog/backlog-drive-adopt.ts +67 -0
  135. package/scripts/backlog/backlog-drive-args.ts +4 -5
  136. package/scripts/backlog/backlog-drive-cli.ts +118 -28
  137. package/scripts/backlog/backlog-drive-hold.ts +162 -0
  138. package/scripts/backlog/backlog-drive-idle.ts +161 -0
  139. package/scripts/backlog/backlog-drive-judge.ts +25 -0
  140. package/scripts/backlog/backlog-drive-launch-pass.ts +90 -0
  141. package/scripts/backlog/backlog-drive-launch.ts +8 -2
  142. package/scripts/backlog/backlog-drive-memory.ts +126 -0
  143. package/scripts/backlog/backlog-drive-named-offer.ts +73 -35
  144. package/scripts/backlog/backlog-drive-named.ts +81 -13
  145. package/scripts/backlog/backlog-drive-offer-argv.ts +3 -8
  146. package/scripts/backlog/backlog-drive-paused.ts +170 -0
  147. package/scripts/backlog/backlog-drive-restore.ts +39 -8
  148. package/scripts/backlog/backlog-drive-seats.ts +18 -8
  149. package/scripts/backlog/backlog-drive-token-handling.ts +38 -0
  150. package/scripts/backlog/backlog-drive.ts +96 -131
  151. package/scripts/backlog/backlog-gate-scope.ts +61 -0
  152. package/scripts/backlog/backlog-measure-close.ts +112 -0
  153. package/scripts/backlog/backlog-next-main.ts +16 -0
  154. package/scripts/backlog/backlog-next-shared.ts +73 -0
  155. package/scripts/backlog/backlog-next.ts +78 -56
  156. package/scripts/backlog/backlog-occupied.ts +52 -39
  157. package/scripts/backlog/backlog-offer-cli.ts +6 -21
  158. package/scripts/backlog/backlog-offer-exclude.ts +15 -0
  159. package/scripts/backlog/backlog-offer-main.ts +12 -0
  160. package/scripts/backlog/backlog-offer.ts +36 -3
  161. package/scripts/backlog/backlog-overlap.ts +62 -10
  162. package/scripts/backlog/backlog-plan-cli.ts +4 -1
  163. package/scripts/backlog/backlog-plan-comment.ts +81 -0
  164. package/scripts/backlog/backlog-plan-read.ts +22 -5
  165. package/scripts/backlog/backlog-plan.ts +18 -4
  166. package/scripts/backlog/backlog-pool.ts +60 -22
  167. package/scripts/backlog/backlog-rank.ts +70 -15
  168. package/scripts/backlog/backlog-ready.ts +112 -30
  169. package/scripts/backlog/backlog-stalled-detect.ts +110 -36
  170. package/scripts/backlog/backlog-stalled.ts +52 -16
  171. package/scripts/backlog/backlog-wait-cause.ts +86 -0
  172. package/scripts/backlog/backlog-waves.ts +56 -15
  173. package/scripts/backlog/backlogrun-args.ts +19 -7
  174. package/scripts/backlog/backlogrun-cli.ts +19 -5
  175. package/scripts/backlog/backlogrun-launch.ts +13 -4
  176. package/scripts/backlog/backlogrun-restart.ts +97 -0
  177. package/scripts/backlog/backlogrun-stop.ts +79 -7
  178. package/scripts/behavior/behavior-cli.ts +2 -2
  179. package/scripts/behavior/behavior-rules.ts +47 -24
  180. package/scripts/build/build-bin.ts +2 -16
  181. package/scripts/build/build-claude-md.ts +0 -7
  182. package/scripts/build/build-commands.ts +0 -13
  183. package/scripts/build/build-hooks.ts +49 -48
  184. package/scripts/build/hook-bundle-stamp.ts +29 -11
  185. package/scripts/build/local-bin.ts +1 -1
  186. package/scripts/cases/cases-cli.ts +25 -13
  187. package/scripts/cases/cases-interaction-scan.ts +134 -0
  188. package/scripts/cases/cases-interaction.ts +183 -0
  189. package/scripts/cases/cases-logic.ts +39 -6
  190. package/scripts/ci/pr-classification-main.ts +18 -0
  191. package/scripts/ci/pr-classification.ts +10 -17
  192. package/scripts/clone/clone-scan.ts +1 -1
  193. package/scripts/cost-runtime/context-cut-payback.ts +27 -25
  194. package/scripts/cost-runtime/cost-blocks.ts +22 -37
  195. package/scripts/cost-runtime/cost-cli.ts +67 -29
  196. package/scripts/cost-runtime/cost-main.ts +12 -0
  197. package/scripts/cost-runtime/cost-pricing.ts +9 -0
  198. package/scripts/cost-runtime/cost-transcript.ts +1 -0
  199. package/scripts/cost-runtime/cost-verdict.ts +4 -1
  200. package/scripts/delegation/delegation-policy.ts +18 -5
  201. package/scripts/delegation/duplicate-read-guard.ts +1 -8
  202. package/scripts/delegation/investigation-guard.ts +12 -8
  203. package/scripts/delegation/investigation-reads.ts +48 -27
  204. package/scripts/dependabot/dependabot-cooldown.ts +195 -0
  205. package/scripts/discovery/repo-discovery.ts +24 -6
  206. package/scripts/discovery/repo-party.ts +80 -20
  207. package/scripts/discovery/session-owner-pin.ts +51 -0
  208. package/scripts/doctor/doctor-consumer.ts +2 -5
  209. package/scripts/document/capped-print.ts +1 -1
  210. package/scripts/document/command-reference-line-budget.ts +42 -0
  211. package/scripts/document/document-byte-budget.ts +18 -6
  212. package/scripts/document/document-checks.ts +20 -0
  213. package/scripts/document/document-ratchet-check.ts +101 -0
  214. package/scripts/document/document-scan.ts +1 -1
  215. package/scripts/document/document-section-cli.ts +0 -8
  216. package/scripts/document/document-section-main.ts +12 -0
  217. package/scripts/document/document-section.ts +1 -0
  218. package/scripts/document/entry-read-budget.ts +7 -3
  219. package/scripts/document/issue-citation-budget.ts +94 -0
  220. package/scripts/epic/epic-audit-cli.ts +12 -6
  221. package/scripts/epic/epic-bundle-apply.ts +137 -0
  222. package/scripts/epic/epic-bundle-cli.ts +32 -121
  223. package/scripts/epic/epic-bundle-format.ts +116 -0
  224. package/scripts/epic/epic-bundle-main.ts +17 -0
  225. package/scripts/epic/epic-busy.ts +5 -12
  226. package/scripts/epic/epic-classify.ts +24 -15
  227. package/scripts/epic/epic-cli-argv.ts +33 -2
  228. package/scripts/epic/epic-cli-decide.ts +42 -0
  229. package/scripts/epic/epic-cli.ts +6 -38
  230. package/scripts/epic/epic-close.ts +112 -55
  231. package/scripts/epic/epic-cross-repo.ts +4 -7
  232. package/scripts/epic/epic-decide.ts +119 -0
  233. package/scripts/epic/epic-decision.ts +9 -0
  234. package/scripts/epic/epic-fetch.ts +6 -0
  235. package/scripts/epic/epic-graph.ts +8 -1
  236. package/scripts/epic/epic-issue.ts +8 -2
  237. package/scripts/epic/epic-label-age.ts +1 -1
  238. package/scripts/epic/epic-lane-offer.ts +39 -4
  239. package/scripts/epic/epic-next-main.ts +24 -0
  240. package/scripts/epic/epic-next.ts +6 -24
  241. package/scripts/epic/epic-outside-blocker.ts +6 -2
  242. package/scripts/epic/epic-parse.ts +9 -3
  243. package/scripts/epic/epic-rank.ts +5 -0
  244. package/scripts/epic/epic-read.ts +1 -0
  245. package/scripts/epic/epic-reconcile.ts +39 -0
  246. package/scripts/epic/epic-run.ts +10 -1
  247. package/scripts/epic/epic-solo.ts +50 -14
  248. package/scripts/epic/epic.ts +41 -7
  249. package/scripts/exports/unused-members-check.ts +62 -0
  250. package/scripts/exports/unused-members-cli.ts +6 -51
  251. package/scripts/followup/followup-checks-event.ts +8 -3
  252. package/scripts/followup/followup-ci-path.ts +67 -0
  253. package/scripts/followup/followup-coderabbit-retrigger.ts +261 -0
  254. package/scripts/followup/followup-coderabbit-wait.ts +85 -0
  255. package/scripts/followup/followup-failed-tests.ts +160 -0
  256. package/scripts/followup/followup-job-needs.ts +100 -0
  257. package/scripts/followup/followup-job-rerun.ts +303 -0
  258. package/scripts/followup/followup-main-move.ts +113 -0
  259. package/scripts/followup/followup-review-gates.ts +81 -0
  260. package/scripts/followup/git-followup-finish.ts +43 -11
  261. package/scripts/followup/git-followup-pending.ts +3 -3
  262. package/scripts/followup/git-followup-stages.ts +52 -12
  263. package/scripts/followup/git-followup-workflow.ts +19 -66
  264. package/scripts/followup/git-pr-followup-checks.ts +55 -16
  265. package/scripts/followup/git-pr-followup-wrapup.ts +32 -18
  266. package/scripts/followup/git-pr-followup.ts +96 -33
  267. package/scripts/fresh-machine/fresh-machine-cli.ts +1 -1
  268. package/scripts/fresh-machine/fresh-machine-run.ts +8 -8
  269. package/scripts/fresh-machine/fresh-machine-script.ts +5 -9
  270. package/scripts/fresh-machine/specs/kit-test-backlogrun-python.json +2 -2
  271. package/scripts/fresh-machine/specs/kit-test-backlogrun.json +3 -3
  272. package/scripts/gate/busy-average.ts +90 -0
  273. package/scripts/gate/check-cpu.ts +60 -0
  274. package/scripts/gate/check-inputs.ts +39 -95
  275. package/scripts/gate/check-related-pinned.ts +43 -0
  276. package/scripts/gate/check-related-reuse.ts +64 -0
  277. package/scripts/gate/check-related-section.ts +57 -0
  278. package/scripts/gate/check-related-unplanned.ts +34 -0
  279. package/scripts/gate/check-related.ts +265 -0
  280. package/scripts/gate/check-reuse.ts +33 -54
  281. package/scripts/gate/command-memory.ts +192 -0
  282. package/scripts/gate/core-admission.ts +236 -28
  283. package/scripts/gate/core-budget-timing.ts +51 -0
  284. package/scripts/gate/core-budget.ts +111 -100
  285. package/scripts/gate/core-wait-record.ts +49 -0
  286. package/scripts/gate/core-wait.ts +62 -7
  287. package/scripts/gate/core-weights.ts +94 -0
  288. package/scripts/gate/free-cores.ts +27 -4
  289. package/scripts/gate/gate-labels.ts +46 -0
  290. package/scripts/gate/gate-ledger.ts +44 -8
  291. package/scripts/gate/gate-plan.ts +130 -78
  292. package/scripts/gate/gate-report.ts +23 -9
  293. package/scripts/gate/gate-run-steps.ts +77 -9
  294. package/scripts/gate/gate-skip.ts +57 -8
  295. package/scripts/gate/gate-static-group.ts +60 -0
  296. package/scripts/gate/gate-steps.ts +14 -2
  297. package/scripts/gate/gate-tree.ts +4 -2
  298. package/scripts/gate/hook-gate-reuse.ts +19 -2
  299. package/scripts/gate/input-fingerprint.ts +42 -0
  300. package/scripts/gate/machine-capacity.ts +65 -31
  301. package/scripts/gate/metrics-totals.ts +59 -0
  302. package/scripts/gate/moved-paths.ts +67 -0
  303. package/scripts/gate/project-checks.ts +5 -12
  304. package/scripts/gate/scoped-green.ts +76 -19
  305. package/scripts/gate/since-green.ts +70 -0
  306. package/scripts/gate/structural-checks.ts +96 -0
  307. package/scripts/gate/toolchain-inputs.ts +115 -0
  308. package/scripts/gate/verification-gate.ts +70 -32
  309. package/scripts/gate/verification-inputs.ts +265 -0
  310. package/scripts/gate/verification-tail.ts +52 -0
  311. package/scripts/gh/gh-author-association.ts +117 -9
  312. package/scripts/gh/git-ai-review-scan.ts +5 -3
  313. package/scripts/gh/git-gh-api-path.ts +26 -2
  314. package/scripts/gh/git-gh-branch-rules.ts +73 -0
  315. package/scripts/gh/git-gh-comments-unreadable.ts +36 -0
  316. package/scripts/gh/git-gh-conditional.ts +5 -2
  317. package/scripts/gh/git-gh-exec.ts +32 -2
  318. package/scripts/gh/git-gh-issue-read.ts +7 -1
  319. package/scripts/gh/git-gh-issue-rest.ts +1 -0
  320. package/scripts/gh/git-gh-issue-write.ts +75 -31
  321. package/scripts/gh/git-gh-issue.ts +19 -8
  322. package/scripts/gh/git-gh-poll-read.ts +89 -0
  323. package/scripts/gh/git-gh-pr-auto-merge.ts +21 -9
  324. package/scripts/gh/git-gh-pr-graphql-state.ts +56 -0
  325. package/scripts/gh/git-gh-pr-read.ts +74 -13
  326. package/scripts/gh/git-gh-pr-rest.ts +4 -2
  327. package/scripts/gh/git-gh-pr-snapshot.ts +48 -20
  328. package/scripts/gh/git-gh-pr-too-large.ts +20 -0
  329. package/scripts/gh/git-gh-pr.ts +48 -22
  330. package/scripts/gh/git-gh-retry.ts +141 -0
  331. package/scripts/gh/git-pr-ai-review.ts +15 -6
  332. package/scripts/gh/git-pr-checks-eval.ts +42 -7
  333. package/scripts/gh/git-pr-checks-parse.ts +39 -9
  334. package/scripts/gh/git-pr-checks.ts +5 -5
  335. package/scripts/gh/git-pr-merge-checked.ts +80 -0
  336. package/scripts/git/base-tree.ts +49 -2
  337. package/scripts/git/change-base.ts +4 -10
  338. package/scripts/git/changed-file-scope.ts +6 -4
  339. package/scripts/git/changed-paths-sync.ts +63 -0
  340. package/scripts/git/changed-paths.ts +34 -2
  341. package/scripts/git/git-common-directory.ts +11 -1
  342. package/scripts/git/git-diff-reads.ts +91 -20
  343. package/scripts/git/git-error.ts +9 -2
  344. package/scripts/git/git-grep-hits.ts +85 -0
  345. package/scripts/git/git-location-environment.ts +1 -1
  346. package/scripts/git/git-merge-conflicts.ts +83 -0
  347. package/scripts/git/git-preflight.ts +37 -12
  348. package/scripts/git/git-push-transport.ts +1 -2
  349. package/scripts/git/git-schemas.ts +30 -7
  350. package/scripts/git/git-spawn.ts +1 -2
  351. package/scripts/git/git-status.ts +4 -4
  352. package/scripts/git/git-worktree.ts +13 -0
  353. package/scripts/git/gone-branch.ts +4 -1
  354. package/scripts/git/main-merge-budget-conflict.ts +89 -0
  355. package/scripts/git/main-merge-guard.ts +55 -18
  356. package/scripts/git/main-merge-main.ts +12 -0
  357. package/scripts/git/main-merge-regenerate.ts +59 -25
  358. package/scripts/git/main-merge.ts +77 -13
  359. package/scripts/git/main-sync-main.ts +12 -0
  360. package/scripts/git/main-sync.ts +0 -9
  361. package/scripts/git/no-base-checkout.ts +127 -0
  362. package/scripts/git/stash/git-stash.ts +38 -6
  363. package/scripts/git/stash/{stash-pop-args.ts → stash-args.ts} +13 -10
  364. package/scripts/git/stash/stash-pop-cli.ts +6 -12
  365. package/scripts/git/stash/stash-pop-main.ts +12 -0
  366. package/scripts/git/stash/stash-push-cli.ts +86 -0
  367. package/scripts/git/stash/stash-push-main.ts +12 -0
  368. package/scripts/hooks/batch-guard.ts +38 -27
  369. package/scripts/hooks/check-commit-message-main.ts +8 -0
  370. package/scripts/hooks/check-commit-message.ts +4 -7
  371. package/scripts/hooks/edited-cspell.ts +37 -11
  372. package/scripts/hooks/format-edited-file.ts +29 -25
  373. package/scripts/hooks/lane-plan-guard.ts +50 -0
  374. package/scripts/hooks/pre-commit-lint-switch.ts +9 -0
  375. package/scripts/hooks/pre-commit-lint.ts +44 -4
  376. package/scripts/hooks/pre-push-related-switch.ts +10 -0
  377. package/scripts/hooks/pre-push-unit.ts +77 -9
  378. package/scripts/hooks/pretool-guard-cli.ts +1 -8
  379. package/scripts/hooks/pretool-guard.ts +34 -19
  380. package/scripts/hooks/reserved-run.ts +81 -10
  381. package/scripts/hooks/run-hook.sh +30 -6
  382. package/scripts/hooks/shell-rules-notice.ts +37 -0
  383. package/scripts/hooks/step-zero-notice.ts +6 -1
  384. package/scripts/hooks/stop-actions.ts +5 -36
  385. package/scripts/hooks/stop-guard.ts +20 -15
  386. package/scripts/init/distributed-paths.ts +1 -0
  387. package/scripts/init/hook-command-rewrite.ts +23 -5
  388. package/scripts/init/hook-launch.ts +17 -17
  389. package/scripts/init/init-actions.ts +0 -6
  390. package/scripts/init/init-ai-copy.ts +10 -36
  391. package/scripts/init/init-bootstrap.ts +9 -8
  392. package/scripts/init/init-dry-run-report.ts +1 -1
  393. package/scripts/init/init-dry-run.ts +1 -1
  394. package/scripts/init/init-file-action.ts +7 -9
  395. package/scripts/init/init-logic-json-merge.ts +2 -2
  396. package/scripts/init/init-logic-migrate.ts +9 -82
  397. package/scripts/init/init-logic.ts +3 -2
  398. package/scripts/init/init-main.ts +12 -0
  399. package/scripts/init/init.ts +5 -12
  400. package/scripts/init/kit-development-versions.ts +3 -7
  401. package/scripts/init/kit-written-paths.ts +2 -2
  402. package/scripts/init/project-profile.ts +5 -4
  403. package/scripts/init/tsconfig-preset-migration.ts +2 -1
  404. package/scripts/init/vscode-tasks.ts +1 -1
  405. package/scripts/issue/aggregation-split.ts +52 -0
  406. package/scripts/issue/defect-origin-cli.ts +106 -0
  407. package/scripts/issue/defect-origin-line.ts +78 -0
  408. package/scripts/issue/defect-origin-main.ts +11 -0
  409. package/scripts/issue/defect-origin.ts +114 -0
  410. package/scripts/issue/defect-rate-cli.ts +38 -179
  411. package/scripts/issue/defect-rate.ts +0 -16
  412. package/scripts/issue/defect-report-cli.ts +128 -0
  413. package/scripts/issue/defect-report-format.ts +56 -0
  414. package/scripts/issue/defect-report-main.ts +11 -0
  415. package/scripts/issue/defect-report.ts +160 -0
  416. package/scripts/issue/effect-audit-cli.ts +178 -0
  417. package/scripts/issue/effect-audit.ts +185 -0
  418. package/scripts/issue/expected-effect-lint.ts +65 -9
  419. package/scripts/issue/git-next-issues.ts +5 -0
  420. package/scripts/issue/issue-already-done-cli.ts +62 -0
  421. package/scripts/issue/issue-body-or-comment.ts +74 -0
  422. package/scripts/issue/issue-cite-cli.ts +1 -12
  423. package/scripts/issue/issue-cite-main.ts +12 -0
  424. package/scripts/issue/issue-classification.ts +13 -7
  425. package/scripts/issue/issue-closing-pr.ts +8 -1
  426. package/scripts/issue/issue-comment-cli.ts +10 -24
  427. package/scripts/issue/issue-comment-main.ts +12 -0
  428. package/scripts/issue/issue-evidence-exit.ts +102 -0
  429. package/scripts/issue/issue-file-cap.ts +58 -0
  430. package/scripts/issue/issue-file-cli.ts +131 -36
  431. package/scripts/issue/issue-file-deferral.ts +52 -0
  432. package/scripts/issue/issue-file-fold.ts +29 -10
  433. package/scripts/issue/issue-file-interrupt.ts +85 -0
  434. package/scripts/issue/issue-file-lane-hint.ts +30 -0
  435. package/scripts/issue/issue-file.ts +56 -19
  436. package/scripts/issue/issue-fold-cli.ts +2 -11
  437. package/scripts/issue/issue-fold-main.ts +12 -0
  438. package/scripts/issue/issue-labels.ts +97 -89
  439. package/scripts/issue/issue-lint-cli.ts +29 -12
  440. package/scripts/issue/issue-lint-main.ts +12 -0
  441. package/scripts/issue/issue-measured-cli.ts +34 -0
  442. package/scripts/issue/issue-measured-close.ts +58 -0
  443. package/scripts/issue/issue-merged.ts +19 -2
  444. package/scripts/issue/issue-not-before-label.ts +135 -0
  445. package/scripts/issue/issue-not-before.ts +114 -0
  446. package/scripts/issue/issue-number-shape.ts +15 -1
  447. package/scripts/issue/issue-park.ts +28 -0
  448. package/scripts/issue/issue-plan-cli.ts +151 -0
  449. package/scripts/issue/issue-priority-cli.ts +60 -0
  450. package/scripts/issue/issue-priority-raise.ts +55 -0
  451. package/scripts/issue/issue-priority.ts +282 -0
  452. package/scripts/issue/issue-rank.ts +27 -4
  453. package/scripts/issue/issue-read-cli.ts +35 -16
  454. package/scripts/issue/issue-read-main.ts +12 -0
  455. package/scripts/issue/issue-read.ts +62 -13
  456. package/scripts/issue/issue-release-cli.ts +0 -10
  457. package/scripts/issue/issue-release-main.ts +13 -0
  458. package/scripts/issue/issue-release.ts +7 -12
  459. package/scripts/issue/issue-sample-gate.ts +213 -0
  460. package/scripts/issue/issue-sample-prime.ts +127 -0
  461. package/scripts/issue/issue-sample-required.ts +57 -0
  462. package/scripts/issue/issue-sample-source.ts +77 -0
  463. package/scripts/issue/issue-scout-cli.ts +0 -11
  464. package/scripts/issue/issue-scout-main.ts +14 -0
  465. package/scripts/issue/issue-search.ts +124 -0
  466. package/scripts/issue/issue-state-cli.ts +0 -10
  467. package/scripts/issue/issue-state-main.ts +12 -0
  468. package/scripts/issue/issue-state.ts +13 -1
  469. package/scripts/issue/issue-template-section.ts +43 -0
  470. package/scripts/issue/issue-watch-diff.ts +87 -16
  471. package/scripts/issue/issue-watch-hook.ts +11 -2
  472. package/scripts/issue/issue-watch.ts +55 -11
  473. package/scripts/issue/issue-wip.ts +2 -7
  474. package/scripts/issue/markdown-section.ts +1 -0
  475. package/scripts/issue/measure-declaration.ts +121 -0
  476. package/scripts/issue/measure-rerun-cli.ts +7 -65
  477. package/scripts/issue/plan-consumers-cli.ts +39 -0
  478. package/scripts/issue/plan-consumers-main.ts +11 -0
  479. package/scripts/issue/plan-consumers-section.ts +76 -0
  480. package/scripts/issue/plan-consumers.ts +127 -0
  481. package/scripts/issue/reproduction-measure.ts +3 -1
  482. package/scripts/issue/size-estimate.ts +90 -0
  483. package/scripts/issue/trusted-measure.ts +84 -0
  484. package/scripts/josh/agent-session-environment.ts +1 -1
  485. package/scripts/josh/command-usage.ts +17 -44
  486. package/scripts/josh/durable-state-migrate.ts +105 -0
  487. package/scripts/josh/durable-state.ts +112 -0
  488. package/scripts/josh/file-map-stamp.ts +49 -16
  489. package/scripts/josh/hook-decision.ts +32 -20
  490. package/scripts/josh/josh-aliases.ts +95 -0
  491. package/scripts/josh/josh-command-map.ts +1 -79
  492. package/scripts/josh/josh-command-types.ts +12 -6
  493. package/scripts/josh/josh-commands-agent-hooks.ts +83 -0
  494. package/scripts/josh/josh-commands-ai.ts +160 -161
  495. package/scripts/josh/josh-commands-backlog.ts +82 -16
  496. package/scripts/josh/josh-commands-clone.ts +1 -0
  497. package/scripts/josh/josh-commands-development.ts +142 -101
  498. package/scripts/josh/josh-commands-document.ts +43 -1
  499. package/scripts/josh/josh-commands-epic.ts +171 -0
  500. package/scripts/josh/josh-commands-hooks.ts +25 -2
  501. package/scripts/josh/josh-commands-issue-write.ts +200 -0
  502. package/scripts/josh/josh-commands-issue.ts +156 -24
  503. package/scripts/josh/josh-commands-lane.ts +187 -3
  504. package/scripts/josh/josh-commands-lint.ts +34 -10
  505. package/scripts/josh/josh-commands-maintenance.ts +127 -4
  506. package/scripts/josh/josh-commands-pause.ts +29 -0
  507. package/scripts/josh/josh-commands-progress.ts +87 -0
  508. package/scripts/josh/josh-commands-project.ts +138 -9
  509. package/scripts/josh/josh-commands-review.ts +159 -0
  510. package/scripts/josh/josh-commands-run.ts +211 -23
  511. package/scripts/josh/josh-commands-ship.ts +217 -0
  512. package/scripts/josh/josh-commands-split.ts +9 -0
  513. package/scripts/josh/josh-commands-test-check.ts +80 -0
  514. package/scripts/josh/josh-commands-versioning.ts +49 -2
  515. package/scripts/josh/josh-commands-workflow.ts +144 -6
  516. package/scripts/josh/josh-environment-file.ts +43 -3
  517. package/scripts/josh/josh-in-process.ts +2 -2
  518. package/scripts/josh/josh-logic.ts +11 -16
  519. package/scripts/josh/josh-run.ts +19 -1
  520. package/scripts/josh/package-directory.ts +2 -4
  521. package/scripts/josh/process-identity.ts +13 -4
  522. package/scripts/josh/run-record-path.ts +15 -0
  523. package/scripts/josh/session-language-cli.ts +4 -8
  524. package/scripts/josh/session-language-main.ts +13 -0
  525. package/scripts/josh/session-language.ts +6 -1
  526. package/scripts/josh/shared-cache.ts +90 -0
  527. package/scripts/josh/stamp-file.ts +20 -17
  528. package/scripts/lane/lane-adopt-cli.ts +98 -0
  529. package/scripts/lane/lane-adopt.ts +208 -0
  530. package/scripts/lane/lane-await.ts +56 -20
  531. package/scripts/lane/lane-baseline.ts +123 -0
  532. package/scripts/lane/lane-breakdown-cli.ts +64 -0
  533. package/scripts/lane/lane-breakdown-implement.ts +170 -0
  534. package/scripts/lane/lane-breakdown-laps.ts +107 -0
  535. package/scripts/lane/lane-breakdown-pinned.ts +76 -0
  536. package/scripts/lane/lane-breakdown-text.ts +145 -0
  537. package/scripts/lane/lane-breakdown.ts +239 -0
  538. package/scripts/lane/lane-cache.ts +5 -30
  539. package/scripts/lane/lane-capacity.ts +14 -23
  540. package/scripts/lane/lane-check-stats.ts +84 -22
  541. package/scripts/lane/lane-child-invocation.ts +17 -2
  542. package/scripts/lane/lane-child-mark-keys.ts +12 -0
  543. package/scripts/lane/lane-child-marker.ts +20 -1
  544. package/scripts/lane/lane-ci-path-stats.ts +73 -0
  545. package/scripts/lane/lane-claim-stats.ts +84 -0
  546. package/scripts/lane/lane-cli.ts +15 -5
  547. package/scripts/lane/lane-close.ts +91 -18
  548. package/scripts/lane/lane-core-wait-stats.ts +66 -0
  549. package/scripts/lane/lane-dispatch-log.ts +3 -3
  550. package/scripts/lane/lane-dispatch.ts +26 -5
  551. package/scripts/lane/lane-gap-stats.ts +157 -0
  552. package/scripts/lane/lane-guard-policy.ts +7 -1
  553. package/scripts/lane/lane-handoff.ts +69 -1
  554. package/scripts/lane/lane-held-stats.ts +129 -0
  555. package/scripts/lane/lane-implement-stats.ts +207 -0
  556. package/scripts/lane/lane-implement-subagents.ts +90 -0
  557. package/scripts/lane/lane-install.ts +4 -11
  558. package/scripts/lane/lane-investigation-switch.ts +16 -0
  559. package/scripts/lane/lane-launch-cli.ts +0 -9
  560. package/scripts/lane/lane-launch-main.ts +12 -0
  561. package/scripts/lane/lane-ledger-kind.ts +31 -0
  562. package/scripts/lane/lane-ledger-schema-ship.ts +49 -0
  563. package/scripts/lane/lane-ledger-schema.ts +349 -0
  564. package/scripts/lane/lane-ledger-write.ts +257 -0
  565. package/scripts/lane/lane-ledger.ts +56 -233
  566. package/scripts/lane/lane-limit-cli.ts +12 -1
  567. package/scripts/lane/lane-load.ts +1 -1
  568. package/scripts/lane/lane-measure-cli.ts +193 -30
  569. package/scripts/lane/lane-net-read.ts +44 -0
  570. package/scripts/lane/lane-net-time.ts +212 -0
  571. package/scripts/lane/lane-open.ts +25 -8
  572. package/scripts/lane/lane-output.ts +2 -4
  573. package/scripts/lane/lane-overrun-prompt.ts +147 -0
  574. package/scripts/lane/lane-overrun.ts +274 -0
  575. package/scripts/lane/lane-parked.ts +3 -3
  576. package/scripts/lane/lane-paths.ts +24 -1
  577. package/scripts/lane/lane-pause-cli.ts +133 -0
  578. package/scripts/lane/lane-pause.ts +158 -0
  579. package/scripts/lane/lane-paused-spans.ts +97 -0
  580. package/scripts/lane/lane-plan-check.ts +207 -0
  581. package/scripts/lane/lane-plan-cli.ts +41 -0
  582. package/scripts/lane/lane-plan.ts +144 -0
  583. package/scripts/lane/lane-process-table.ts +166 -0
  584. package/scripts/lane/lane-reap-settle.ts +124 -0
  585. package/scripts/lane/lane-reap.ts +50 -15
  586. package/scripts/lane/lane-registry.ts +38 -4
  587. package/scripts/lane/lane-relaunch.ts +1 -1
  588. package/scripts/lane/lane-residents.ts +162 -0
  589. package/scripts/lane/lane-restart.ts +22 -2
  590. package/scripts/lane/lane-round-one-stats.ts +51 -0
  591. package/scripts/lane/lane-round-two-stats.ts +49 -0
  592. package/scripts/lane/lane-sampler.ts +26 -3
  593. package/scripts/lane/lane-session-action.ts +112 -23
  594. package/scripts/lane/lane-session-broker.ts +146 -37
  595. package/scripts/lane/lane-session-reread-main.ts +14 -0
  596. package/scripts/lane/lane-session-reread.ts +51 -0
  597. package/scripts/lane/lane-ship-lap-stats.ts +74 -0
  598. package/scripts/lane/lane-sleep.ts +58 -0
  599. package/scripts/lane/lane-snapshot-trace.ts +84 -0
  600. package/scripts/lane/lane-spans.ts +51 -0
  601. package/scripts/lane/lane-spent.ts +7 -4
  602. package/scripts/lane/lane-split-stats.ts +28 -0
  603. package/scripts/lane/lane-stage-stats.ts +20 -3
  604. package/scripts/lane/lane-state.ts +334 -0
  605. package/scripts/lane/lane-stats-tables.ts +58 -0
  606. package/scripts/lane/lane-stats.ts +74 -4
  607. package/scripts/lane/lane-stop-stats.ts +145 -37
  608. package/scripts/lane/lane-tail-stats.ts +32 -0
  609. package/scripts/lane/lane-test-related-stats.ts +127 -0
  610. package/scripts/lane/lane-transcript-calls.ts +202 -0
  611. package/scripts/lane/lane-transcript-stats.ts +200 -0
  612. package/scripts/lane/lane-vacant.ts +13 -3
  613. package/scripts/lane/lane-value-cell.ts +72 -0
  614. package/scripts/lane/lane-value.ts +118 -0
  615. package/scripts/lane/lane-withdraw-cli.ts +5 -4
  616. package/scripts/lane/lane-withdraw-closed.ts +124 -0
  617. package/scripts/lane/lane-withdraw.ts +149 -71
  618. package/scripts/lane/lane-yield.ts +85 -0
  619. package/scripts/lane/openai-lane-ship.ts +12 -11
  620. package/scripts/lane/openai-lane-supervisor-decision.ts +6 -8
  621. package/scripts/lane/openai-lane-supervisor-owner.ts +5 -8
  622. package/scripts/lane/openai-lane-supervisor.ts +5 -4
  623. package/scripts/lane/process-directories.ts +70 -0
  624. package/scripts/lane/process-lane-marks.ts +94 -0
  625. package/scripts/lib/atomic-write.ts +62 -0
  626. package/scripts/lib/buffered-process.ts +12 -5
  627. package/scripts/lib/cli-flags.ts +53 -0
  628. package/scripts/lib/figure-format.ts +63 -0
  629. package/scripts/lib/json-value.ts +9 -1
  630. package/scripts/lib/package-manifest.ts +35 -0
  631. package/scripts/lib/poll.ts +38 -9
  632. package/scripts/lib/read-file.ts +3 -1
  633. package/scripts/lib/settled-together.ts +10 -0
  634. package/scripts/lib/shell-quote.ts +21 -0
  635. package/scripts/lib/stamped-memo.ts +63 -0
  636. package/scripts/lib/stdout-on-stderr.ts +24 -0
  637. package/scripts/lib/timeouts.ts +9 -0
  638. package/scripts/lib/token-shape.ts +111 -0
  639. package/scripts/lib/transcript-record.ts +91 -0
  640. package/scripts/lines/effective-limit.ts +1 -1
  641. package/scripts/lint/eslint-cache-dependencies.ts +145 -0
  642. package/scripts/lint/eslint-daemon-sources.ts +79 -0
  643. package/scripts/lint/eslint-daemon.ts +304 -0
  644. package/scripts/lint/eslint-warm-cli.ts +7 -0
  645. package/scripts/lint/eslint-warm.ts +66 -0
  646. package/scripts/lint/format.ts +11 -2
  647. package/scripts/lint/import-graph.ts +409 -0
  648. package/scripts/lint/lint-gate-scope.ts +102 -0
  649. package/scripts/lint/lint-parallel-main.ts +19 -0
  650. package/scripts/lint/lint-parallel.ts +113 -33
  651. package/scripts/lint/lint-related-scope.ts +30 -24
  652. package/scripts/lint/lint-related.ts +183 -30
  653. package/scripts/lint/rename-cli.ts +179 -0
  654. package/scripts/lint/rename-identifier.ts +192 -0
  655. package/scripts/lint/type-only-imports.ts +58 -0
  656. package/scripts/notify/confirmation-options.ts +1 -2
  657. package/scripts/notify/telegram-notify.ts +32 -23
  658. package/scripts/notify/telegram-test-logic.ts +0 -1
  659. package/scripts/notify/telegram-test-main.ts +8 -0
  660. package/scripts/notify/telegram-test.ts +2 -6
  661. package/scripts/observations/observation-ledger.ts +13 -0
  662. package/scripts/observations/observation-record.ts +42 -16
  663. package/scripts/observations/observations-flush-landing.ts +5 -3
  664. package/scripts/observations/observations-flush.ts +38 -10
  665. package/scripts/overrides/overrides-check.ts +11 -6
  666. package/scripts/overrides/overrides-files.ts +2 -1
  667. package/scripts/overrides/overrides-logic.ts +3 -6
  668. package/scripts/package/verify-optional-eslint-install.ts +8 -6
  669. package/scripts/propagate/propagate-publish.ts +2 -7
  670. package/scripts/propagate/propagate-targets.ts +4 -12
  671. package/scripts/refactor/import-graph.ts +9 -7
  672. package/scripts/release/github-release-runs.ts +17 -6
  673. package/scripts/release/release-approval-prune.ts +24 -0
  674. package/scripts/release/release-history.ts +1 -3
  675. package/scripts/release/release-progress.ts +42 -22
  676. package/scripts/release/release-publish-run.ts +39 -0
  677. package/scripts/release/release-publish.ts +6 -6
  678. package/scripts/release/release-scope-cli.ts +0 -10
  679. package/scripts/release/release-scope-main.ts +12 -0
  680. package/scripts/repo/repo-setting.ts +3 -6
  681. package/scripts/repo/required-checks-logic.ts +10 -16
  682. package/scripts/repo/ruleset-check.ts +4 -3
  683. package/scripts/report/markdown-shape.ts +28 -0
  684. package/scripts/report/report-format-reference.ts +17 -1
  685. package/scripts/report/report-labels.ts +166 -0
  686. package/scripts/report/report-lint-child-summary.ts +94 -0
  687. package/scripts/report/report-lint-cli.ts +29 -7
  688. package/scripts/report/report-lint.ts +85 -128
  689. package/scripts/report/report-template-cli.ts +59 -0
  690. package/scripts/report/report-template.ts +112 -0
  691. package/scripts/review/acceptance-map.ts +1 -0
  692. package/scripts/review/prose-stale-cli.ts +88 -0
  693. package/scripts/review/prose-stale-scan.ts +152 -0
  694. package/scripts/review/removed-tests-check.ts +86 -0
  695. package/scripts/review/removed-tests.ts +149 -0
  696. package/scripts/review/review-attest.ts +73 -23
  697. package/scripts/review/review-brief-cli.ts +138 -23
  698. package/scripts/review/review-brief-main.ts +12 -0
  699. package/scripts/review/review-brief-paths.ts +22 -0
  700. package/scripts/review/review-brief.ts +45 -10
  701. package/scripts/review/review-code-tree.ts +10 -6
  702. package/scripts/review/review-comment-carry.ts +47 -0
  703. package/scripts/review/review-comment-round.ts +111 -30
  704. package/scripts/review/review-finding-ledger.ts +135 -18
  705. package/scripts/review/review-finding-text.ts +43 -0
  706. package/scripts/review/review-interaction.ts +105 -0
  707. package/scripts/review/review-lane-handover.ts +68 -0
  708. package/scripts/review/review-lint-cli.ts +57 -0
  709. package/scripts/review/review-lint-findings.ts +92 -0
  710. package/scripts/review/review-lint-sections.ts +80 -0
  711. package/scripts/review/review-lint.ts +221 -0
  712. package/scripts/review/review-prior-findings.ts +102 -0
  713. package/scripts/review/review-readers-scan.ts +165 -0
  714. package/scripts/review/review-record-cli.ts +236 -74
  715. package/scripts/review/review-record-code-round.ts +55 -0
  716. package/scripts/review/review-record-comment.ts +60 -0
  717. package/scripts/review/review-record-interaction.ts +35 -0
  718. package/scripts/review/review-record-main.ts +12 -0
  719. package/scripts/review/review-record-pinned.ts +108 -0
  720. package/scripts/review/review-record.ts +25 -1
  721. package/scripts/review/review-reviewed-tree.ts +307 -0
  722. package/scripts/review/review-round-one-blobs.ts +221 -0
  723. package/scripts/review/review-round-one-closure.ts +62 -0
  724. package/scripts/review/review-round-reuse.ts +106 -0
  725. package/scripts/review/review-round2-cli.ts +135 -36
  726. package/scripts/review/review-round2-skip-comment.ts +55 -0
  727. package/scripts/review/review-round2.ts +103 -19
  728. package/scripts/review/review-stamps.ts +23 -1
  729. package/scripts/review/review-stop-log.ts +110 -0
  730. package/scripts/review/review-stops-cli.ts +86 -0
  731. package/scripts/review/review-submit-cli.ts +101 -0
  732. package/scripts/review/review-tree.ts +6 -17
  733. package/scripts/review/review-untouched-readers.ts +146 -0
  734. package/scripts/review/test-titles.ts +118 -0
  735. package/scripts/rules/agent-model.ts +9 -1
  736. package/scripts/rules/bash-triggers.ts +49 -6
  737. package/scripts/rules/concise-reply.ts +88 -0
  738. package/scripts/rules/credential-body.ts +77 -0
  739. package/scripts/rules/decision-oracle-batch.ts +9 -1
  740. package/scripts/rules/decision-oracle.ts +3 -3
  741. package/scripts/rules/delivered-rules.ts +115 -18
  742. package/scripts/rules/destructive-command.ts +11 -12
  743. package/scripts/rules/direct-filing.ts +10 -2
  744. package/scripts/rules/direct-issue-comment.ts +139 -0
  745. package/scripts/rules/direct-issue-read.ts +191 -0
  746. package/scripts/rules/direct-pr-create.ts +72 -26
  747. package/scripts/rules/early-heartbeat.ts +4 -1
  748. package/scripts/rules/edit-tool.ts +27 -0
  749. package/scripts/rules/file-body.ts +7 -0
  750. package/scripts/rules/file-edit-rows.ts +17 -0
  751. package/scripts/rules/file-rewrite.ts +146 -0
  752. package/scripts/rules/firing-point.ts +3 -2
  753. package/scripts/rules/gh-api.ts +128 -7
  754. package/scripts/rules/gh-repo-selector.ts +84 -0
  755. package/scripts/rules/git-argv.ts +72 -14
  756. package/scripts/rules/git-force.ts +14 -4
  757. package/scripts/rules/guard-remedy.ts +17 -4
  758. package/scripts/rules/implementation-cut-verdict.ts +1 -1
  759. package/scripts/rules/implementation-cut.ts +68 -27
  760. package/scripts/rules/index-guard.ts +8 -1
  761. package/scripts/rules/investigator-foreground.ts +231 -0
  762. package/scripts/rules/issue-citation.ts +15 -60
  763. package/scripts/rules/issue-comments.ts +18 -5
  764. package/scripts/rules/josh-git-bare.ts +7 -0
  765. package/scripts/rules/lane-background.ts +103 -33
  766. package/scripts/rules/lane-carry-conflict.ts +6 -0
  767. package/scripts/rules/lane-direct-tool.ts +172 -0
  768. package/scripts/rules/lane-interactive-ask.ts +12 -2
  769. package/scripts/rules/lane-park.ts +49 -25
  770. package/scripts/rules/lane-spilled-read.ts +90 -0
  771. package/scripts/rules/lane-split-park.ts +11 -3
  772. package/scripts/rules/lane-switch-main.ts +11 -4
  773. package/scripts/rules/last-prompt.ts +20 -47
  774. package/scripts/rules/oracle-consulted.ts +11 -1
  775. package/scripts/rules/oracle-firing.ts +1 -0
  776. package/scripts/rules/permission-guards.ts +7 -0
  777. package/scripts/rules/piped-verification-shapes.ts +110 -0
  778. package/scripts/rules/piped-verification.ts +68 -18
  779. package/scripts/rules/poll-loop.ts +78 -8
  780. package/scripts/rules/pr-merge.ts +123 -0
  781. package/scripts/rules/pre-gate-cut.ts +3 -3
  782. package/scripts/rules/protected-files.ts +113 -22
  783. package/scripts/rules/raw-field-body.ts +6 -0
  784. package/scripts/rules/reply-language.ts +3 -17
  785. package/scripts/rules/reply-prose.ts +34 -0
  786. package/scripts/rules/repo-admin.ts +132 -0
  787. package/scripts/rules/reviewer-foreground.ts +88 -0
  788. package/scripts/rules/round-one-check-related.ts +120 -0
  789. package/scripts/rules/rule-body-guard.ts +13 -15
  790. package/scripts/rules/rule-list.ts +9 -28
  791. package/scripts/rules/rule-value-cache.ts +57 -14
  792. package/scripts/rules/rule-value-candidates.ts +84 -0
  793. package/scripts/rules/rule-value-cli.ts +106 -39
  794. package/scripts/rules/rule-value.ts +18 -5
  795. package/scripts/rules/run-tail-rule.ts +1 -1
  796. package/scripts/rules/sed-in-place.ts +196 -0
  797. package/scripts/rules/shell-segments.ts +43 -0
  798. package/scripts/rules/stop-rule-rows.ts +52 -0
  799. package/scripts/rules/stop-rules.ts +36 -62
  800. package/scripts/rules/test-declared-commit.ts +11 -1
  801. package/scripts/rules/third-party-write.ts +115 -21
  802. package/scripts/rules/timed-rerun.ts +69 -0
  803. package/scripts/rules/turn-filings.ts +90 -0
  804. package/scripts/rules/worktree-guard.ts +32 -7
  805. package/scripts/run/board/run-board-app-name.ts +23 -0
  806. package/scripts/run/board/run-board-cli.ts +65 -32
  807. package/scripts/run/board/run-board-earlier.ts +94 -0
  808. package/scripts/run/board/run-board-ending-reason.ts +71 -0
  809. package/scripts/run/board/run-board-estimate-schedule.ts +103 -0
  810. package/scripts/run/board/run-board-estimate.ts +98 -0
  811. package/scripts/run/board/run-board-fit.ts +177 -37
  812. package/scripts/run/board/run-board-fold.ts +123 -0
  813. package/scripts/run/board/run-board-found.ts +134 -0
  814. package/scripts/run/board/run-board-fresh.ts +2 -2
  815. package/scripts/run/board/run-board-gather-live.ts +29 -0
  816. package/scripts/run/board/run-board-gather-thread.ts +189 -0
  817. package/scripts/run/board/run-board-gather-worker.ts +29 -0
  818. package/scripts/run/board/run-board-gather.ts +187 -0
  819. package/scripts/run/board/run-board-github.ts +118 -38
  820. package/scripts/run/board/run-board-header.ts +90 -20
  821. package/scripts/run/board/run-board-keys.ts +58 -0
  822. package/scripts/run/board/run-board-kind.ts +20 -6
  823. package/scripts/run/board/run-board-labels.ts +126 -71
  824. package/scripts/run/board/run-board-lane-state.ts +109 -0
  825. package/scripts/run/board/run-board-lane-time.ts +123 -0
  826. package/scripts/run/board/run-board-layout.ts +239 -60
  827. package/scripts/run/board/run-board-length.ts +52 -0
  828. package/scripts/run/board/run-board-link.ts +15 -2
  829. package/scripts/run/board/run-board-machine.ts +8 -4
  830. package/scripts/run/board/run-board-main.ts +12 -0
  831. package/scripts/run/board/run-board-notes.ts +59 -32
  832. package/scripts/run/board/run-board-now.ts +1 -1
  833. package/scripts/run/board/run-board-operation.ts +19 -35
  834. package/scripts/run/board/run-board-phase.ts +3 -6
  835. package/scripts/run/board/run-board-plan-shared.ts +115 -0
  836. package/scripts/run/board/run-board-plan.ts +56 -4
  837. package/scripts/run/board/run-board-planning.ts +45 -0
  838. package/scripts/run/board/run-board-priority.ts +44 -0
  839. package/scripts/run/board/run-board-process-groups.ts +195 -0
  840. package/scripts/run/board/run-board-read.ts +197 -28
  841. package/scripts/run/board/run-board-reason.ts +247 -51
  842. package/scripts/run/board/run-board-released.ts +35 -0
  843. package/scripts/run/board/run-board-render-checks.ts +42 -7
  844. package/scripts/run/board/run-board-render-condition.ts +96 -0
  845. package/scripts/run/board/run-board-render-drawn.ts +78 -0
  846. package/scripts/run/board/run-board-render-foot.ts +59 -0
  847. package/scripts/run/board/run-board-render-found.ts +157 -0
  848. package/scripts/run/board/run-board-render-icon.ts +35 -0
  849. package/scripts/run/board/run-board-render-lanes.ts +145 -0
  850. package/scripts/run/board/run-board-render-lead.ts +89 -0
  851. package/scripts/run/board/run-board-render-legend.ts +136 -48
  852. package/scripts/run/board/run-board-render-notes.ts +156 -29
  853. package/scripts/run/board/run-board-render-processes.ts +196 -0
  854. package/scripts/run/board/run-board-render-section.ts +119 -0
  855. package/scripts/run/board/run-board-render-slot.ts +3 -36
  856. package/scripts/run/board/run-board-render-tail.ts +115 -48
  857. package/scripts/run/board/run-board-render-time.ts +56 -0
  858. package/scripts/run/board/run-board-render-title.ts +117 -24
  859. package/scripts/run/board/run-board-render-waits.ts +104 -20
  860. package/scripts/run/board/run-board-render.ts +264 -258
  861. package/scripts/run/board/run-board-roots.ts +54 -0
  862. package/scripts/run/board/run-board-row-yield.ts +9 -4
  863. package/scripts/run/board/run-board-setup.ts +1 -12
  864. package/scripts/run/board/run-board-snapshot.ts +111 -0
  865. package/scripts/run/board/run-board-spin.ts +3 -5
  866. package/scripts/run/board/run-board-state.ts +22 -33
  867. package/scripts/run/board/run-board-status.ts +149 -71
  868. package/scripts/run/board/run-board-thanks-read.ts +2 -2
  869. package/scripts/run/board/run-board-tick.ts +158 -114
  870. package/scripts/run/board/run-board-usage-board.ts +78 -0
  871. package/scripts/run/board/run-board-usage-lanes.ts +113 -0
  872. package/scripts/run/board/run-board-usage-listing.ts +93 -0
  873. package/scripts/run/board/run-board-usage-read.ts +120 -150
  874. package/scripts/run/board/run-board-usage-rusage.ts +19 -7
  875. package/scripts/run/board/run-board-usage-text.ts +139 -51
  876. package/scripts/run/board/run-board-usage-top.ts +102 -0
  877. package/scripts/run/board/run-board-usage.ts +89 -72
  878. package/scripts/run/board/run-board-usual.ts +20 -9
  879. package/scripts/run/carry/run-carry-args.ts +4 -7
  880. package/scripts/run/carry/run-carry-conversation.ts +1 -1
  881. package/scripts/run/carry/run-carry-ended.ts +3 -2
  882. package/scripts/run/carry/run-carry.ts +12 -6
  883. package/scripts/run/cut/run-cut-cli.ts +33 -133
  884. package/scripts/run/cut/run-cut-digest.ts +152 -0
  885. package/scripts/run/cut/run-cut-handoff.ts +54 -10
  886. package/scripts/run/cut/run-cut-report.ts +24 -3
  887. package/scripts/run/cut/run-cut-resume.ts +129 -0
  888. package/scripts/run/cut/run-cut-review.ts +105 -0
  889. package/scripts/run/cut/run-cut.ts +18 -7
  890. package/scripts/run/detached-launch.ts +1 -1
  891. package/scripts/run/entry/run-entry-cli.ts +88 -19
  892. package/scripts/run/entry/run-entry-spill.ts +83 -0
  893. package/scripts/run/entry/run-entry-stop.ts +5 -1
  894. package/scripts/run/entry/run-entry-trust.ts +91 -0
  895. package/scripts/run/event/run-event-baseline.ts +56 -0
  896. package/scripts/run/event/run-event-cli.ts +1 -5
  897. package/scripts/run/event/run-event-filed.ts +18 -6
  898. package/scripts/run/event/run-event-follow.ts +2 -3
  899. package/scripts/run/event/run-event-overrun.ts +197 -0
  900. package/scripts/run/event/run-event-render.ts +10 -10
  901. package/scripts/run/event/run-event-scope.ts +2 -2
  902. package/scripts/run/event/run-event-stream-emit.ts +82 -22
  903. package/scripts/run/event/run-event-stream.ts +58 -10
  904. package/scripts/run/hold/run-hold-adopt.ts +65 -0
  905. package/scripts/run/hold/run-hold-cli.ts +93 -22
  906. package/scripts/run/hold/run-hold-main.ts +12 -0
  907. package/scripts/run/hold/run-hold-member.ts +37 -0
  908. package/scripts/run/hold/run-stop-notify.ts +178 -0
  909. package/scripts/run/merge/run-merge-auth.ts +31 -0
  910. package/scripts/run/merge/run-merge-cap.ts +57 -0
  911. package/scripts/run/merge/run-merge-cli.ts +119 -62
  912. package/scripts/run/merge/run-merge-close.ts +74 -0
  913. package/scripts/run/merge/run-merge-collect.ts +6 -13
  914. package/scripts/run/merge/run-merge-driver.ts +71 -0
  915. package/scripts/run/merge/run-merge-main.ts +12 -0
  916. package/scripts/run/merge/run-merge-outcome.ts +25 -0
  917. package/scripts/run/merge/run-merge-restart.ts +39 -0
  918. package/scripts/run/merge/run-merge-ship.ts +33 -7
  919. package/scripts/run/merge/run-merge-signals.ts +66 -25
  920. package/scripts/run/merge/run-merge-steps.ts +162 -107
  921. package/scripts/run/merge/run-merge-usage-limit.ts +53 -0
  922. package/scripts/run/merge/run-merge-withdrawn.ts +53 -0
  923. package/scripts/run/merge/run-merge.ts +76 -48
  924. package/scripts/run/park/run-park-cli.ts +91 -0
  925. package/scripts/run/park/run-park.ts +88 -0
  926. package/scripts/run/park/run-stalled.ts +68 -0
  927. package/scripts/run/pause/run-pause-cli.ts +73 -0
  928. package/scripts/run/pause/run-pause.ts +251 -0
  929. package/scripts/run/progress/run-progress-cli.ts +4 -12
  930. package/scripts/run/progress/run-progress-clock.ts +1 -1
  931. package/scripts/run/progress/run-progress-config.ts +6 -14
  932. package/scripts/run/progress/run-progress-main.ts +12 -0
  933. package/scripts/run/progress/run-progress.ts +1 -4
  934. package/scripts/run/review/run-review-cli.ts +306 -20
  935. package/scripts/run/review/run-review-early-push.ts +121 -0
  936. package/scripts/run/review/run-review-join-read.ts +94 -0
  937. package/scripts/run/review/run-review-pinned-accepted.ts +126 -0
  938. package/scripts/run/review/run-review-pinned-join.ts +216 -0
  939. package/scripts/run/review/run-review-pinned-steps.ts +383 -0
  940. package/scripts/run/review/run-review-pinned-tree.ts +37 -0
  941. package/scripts/run/review/run-review-pinned.ts +53 -0
  942. package/scripts/run/review/run-review-steps.ts +70 -34
  943. package/scripts/run/review/run-review.ts +28 -7
  944. package/scripts/run/run-ending.ts +1 -0
  945. package/scripts/run/run-invocation.ts +5 -6
  946. package/scripts/run/run-liveness-cli.ts +6 -8
  947. package/scripts/run/run-liveness.ts +60 -29
  948. package/scripts/run/run-next.ts +1 -1
  949. package/scripts/run/run-parent-cut-hook.ts +3 -4
  950. package/scripts/run/run-preflight.ts +18 -3
  951. package/scripts/run/run-prep-cli.ts +1 -10
  952. package/scripts/run/run-prep-locate.ts +7 -50
  953. package/scripts/run/run-prep-main.ts +12 -0
  954. package/scripts/run/run-prep.ts +7 -0
  955. package/scripts/run/run-report-cli.ts +101 -13
  956. package/scripts/run/run-report-handoff.ts +114 -0
  957. package/scripts/run/run-stage-read.ts +2 -6
  958. package/scripts/run/run-step-cli.ts +17 -5
  959. package/scripts/run/run-step-lane-plan.ts +27 -0
  960. package/scripts/run/run-step-section.ts +26 -7
  961. package/scripts/run/run-step.ts +6 -3
  962. package/scripts/run/run-stranded-detect.ts +13 -0
  963. package/scripts/run/run-watcher-guard-cli.ts +1 -1
  964. package/scripts/run/run-watcher-guard.ts +1 -1
  965. package/scripts/run/ship/run-ship-args.ts +140 -0
  966. package/scripts/run/ship/run-ship-body-draft.ts +110 -0
  967. package/scripts/run/ship/run-ship-brokered-review.ts +106 -0
  968. package/scripts/run/ship/run-ship-cli.ts +181 -166
  969. package/scripts/run/ship/run-ship-conflict-probe.ts +59 -0
  970. package/scripts/run/ship/run-ship-detach.ts +29 -12
  971. package/scripts/run/ship/run-ship-handover.ts +106 -0
  972. package/scripts/run/ship/run-ship-infra-retry.ts +74 -0
  973. package/scripts/run/ship/run-ship-lap.ts +63 -0
  974. package/scripts/run/ship/run-ship-next.ts +44 -27
  975. package/scripts/run/ship/run-ship-overlap.ts +49 -7
  976. package/scripts/run/ship/run-ship-place.ts +103 -0
  977. package/scripts/run/ship/run-ship-planned.ts +92 -0
  978. package/scripts/run/ship/run-ship-pre-detach-pinned.ts +197 -0
  979. package/scripts/run/ship/run-ship-pre-detach-timed.ts +42 -0
  980. package/scripts/run/ship/run-ship-pre-detach.ts +144 -33
  981. package/scripts/run/ship/run-ship-preflight.ts +150 -33
  982. package/scripts/run/ship/run-ship-probe.ts +28 -6
  983. package/scripts/run/ship/run-ship-relaunch-cap.ts +106 -0
  984. package/scripts/run/ship/run-ship-relaunch.ts +51 -0
  985. package/scripts/run/ship/run-ship-removed-rows.ts +61 -0
  986. package/scripts/run/ship/run-ship-return.ts +183 -25
  987. package/scripts/run/ship/run-ship-review-reason.ts +24 -0
  988. package/scripts/run/ship/run-ship-review-steps.ts +296 -171
  989. package/scripts/run/ship/run-ship-review.ts +222 -35
  990. package/scripts/run/ship/run-ship-reviewer.ts +303 -0
  991. package/scripts/run/ship/run-ship-scoped.ts +39 -10
  992. package/scripts/run/ship/run-ship-stage.ts +101 -16
  993. package/scripts/run/ship/run-ship-steps.ts +68 -17
  994. package/scripts/run/ship/run-ship-stop-cause.ts +176 -0
  995. package/scripts/run/ship/run-ship-stop-context.ts +50 -13
  996. package/scripts/run/ship/run-ship-stop-text.ts +11 -6
  997. package/scripts/run/ship/run-ship-sync.ts +212 -34
  998. package/scripts/run/ship/run-ship-synced-scope.ts +178 -0
  999. package/scripts/run/ship/run-ship-wait-cli.ts +145 -0
  1000. package/scripts/run/ship/run-ship-waiter.ts +114 -0
  1001. package/scripts/run/ship/run-ship.ts +44 -2
  1002. package/scripts/run/tidy/run-tidy-cli.ts +0 -4
  1003. package/scripts/run/tidy/run-tidy-lanes.ts +3 -0
  1004. package/scripts/run/tidy/run-tidy-main.ts +8 -0
  1005. package/scripts/run/wake/run-wake-caffeinate.ts +48 -0
  1006. package/scripts/run/wake/run-wake-cli.ts +121 -209
  1007. package/scripts/run/wake/run-wake-code.ts +125 -0
  1008. package/scripts/run/wake/run-wake-driver.ts +22 -9
  1009. package/scripts/run/wake/run-wake-finish.ts +137 -0
  1010. package/scripts/run/wake/run-wake-loop.ts +36 -3
  1011. package/scripts/run/wake/run-wake-main.ts +13 -0
  1012. package/scripts/run/wake/run-wake-ports.ts +98 -0
  1013. package/scripts/run/wake/run-wake-session.ts +2 -0
  1014. package/scripts/run/wake/run-wake-takeover.ts +66 -0
  1015. package/scripts/run/wake/run-wake.ts +5 -3
  1016. package/scripts/safe-chain/ci-installer-pin.ts +49 -8
  1017. package/scripts/safe-chain/pack-hook.ts +2 -2
  1018. package/scripts/safe-chain/preinstall-command.ts +2 -1
  1019. package/scripts/safe-chain/project-config.ts +6 -11
  1020. package/scripts/security/secretlint-scan.ts +42 -9
  1021. package/scripts/security/security-audit-main.ts +8 -0
  1022. package/scripts/security/security-audit-provision-logic.ts +0 -11
  1023. package/scripts/security/security-audit-provision-main.ts +20 -0
  1024. package/scripts/security/security-audit-provision.ts +12 -27
  1025. package/scripts/security/security-audit.ts +27 -8
  1026. package/scripts/security/sonar-file.ts +10 -5
  1027. package/scripts/self-sync-guard/self-sync-guard-logic.ts +6 -13
  1028. package/scripts/split/split-assess-cli.ts +2 -2
  1029. package/scripts/split/split-assess.ts +25 -1
  1030. package/scripts/split/split-early-notice.ts +116 -0
  1031. package/scripts/split/split-measure.ts +83 -0
  1032. package/scripts/split/split-resolution.ts +107 -0
  1033. package/scripts/sync/claude-settings-merge.ts +8 -15
  1034. package/scripts/sync/directory-copy-guard.ts +4 -9
  1035. package/scripts/sync/file-content.ts +78 -8
  1036. package/scripts/sync/sync-ai-files.ts +3 -5
  1037. package/scripts/sync/sync-configs.ts +11 -23
  1038. package/scripts/sync/sync-hook-safety.ts +4 -10
  1039. package/scripts/sync/sync-main.ts +11 -0
  1040. package/scripts/sync/sync.ts +25 -37
  1041. package/scripts/test/direct-importers.ts +185 -0
  1042. package/scripts/test/pure-files-entries.ts +83 -0
  1043. package/scripts/test/related-heavy-tests.ts +81 -0
  1044. package/scripts/test/test-declared-changed.ts +2 -2
  1045. package/scripts/test/test-declared.ts +1 -1
  1046. package/scripts/test/test-e2e-guard.ts +25 -1
  1047. package/scripts/test/test-e2e-stamp.ts +38 -0
  1048. package/scripts/test/test-no-base.ts +88 -0
  1049. package/scripts/test/test-pinned-cache-logic.ts +363 -0
  1050. package/scripts/test/test-pinned-cache.ts +337 -0
  1051. package/scripts/test/test-pinned-emit.ts +49 -0
  1052. package/scripts/test/test-pinned-functions.ts +116 -0
  1053. package/scripts/test/test-pinned-ledger.ts +80 -0
  1054. package/scripts/test/test-pinned-logic.ts +333 -0
  1055. package/scripts/test/test-pinned-main.ts +144 -0
  1056. package/scripts/test/test-pinned-pool.ts +73 -0
  1057. package/scripts/test/test-pinned-probe.ts +254 -0
  1058. package/scripts/test/test-pinned-prune-logic.ts +118 -0
  1059. package/scripts/test/test-pinned-reach.ts +194 -0
  1060. package/scripts/test/test-pinned-record.ts +196 -0
  1061. package/scripts/test/test-pinned-rewire.ts +148 -0
  1062. package/scripts/test/test-pinned-spawn.ts +81 -0
  1063. package/scripts/test/test-pinned-stage.ts +70 -0
  1064. package/scripts/test/test-pinned.ts +311 -0
  1065. package/scripts/test/test-reach-cli.ts +61 -0
  1066. package/scripts/test/test-read-map.ts +288 -0
  1067. package/scripts/test/test-read-recording.ts +103 -0
  1068. package/scripts/test/test-read-trace.ts +166 -0
  1069. package/scripts/test/test-red-logic.ts +46 -7
  1070. package/scripts/test/test-red-main.ts +12 -0
  1071. package/scripts/test/test-red.ts +39 -37
  1072. package/scripts/test/test-related-claim.ts +37 -0
  1073. package/scripts/test/test-related-main.ts +21 -0
  1074. package/scripts/test/test-related-moved.ts +91 -0
  1075. package/scripts/test/test-related-record.ts +139 -0
  1076. package/scripts/test/test-related-scope.ts +292 -41
  1077. package/scripts/test/test-related-synced.ts +135 -0
  1078. package/scripts/test/test-related-touched.ts +84 -0
  1079. package/scripts/test/test-related.ts +381 -19
  1080. package/scripts/test/test-unit-guard-main.ts +15 -0
  1081. package/scripts/test/test-unit-guard.ts +66 -25
  1082. package/scripts/test/unit-count-file.ts +37 -0
  1083. package/scripts/test/unit-durations.ts +41 -0
  1084. package/scripts/test/unit-run-marker.ts +162 -0
  1085. package/scripts/test/unit-setup-files.ts +51 -0
  1086. package/scripts/test/unit-worker-share.ts +64 -151
  1087. package/scripts/test/vitest-cache-directory.ts +19 -0
  1088. package/scripts/test/vitest-cli-excludes.ts +14 -0
  1089. package/scripts/test/vitest-failure-summary.ts +111 -0
  1090. package/scripts/test/whole-suite-files.ts +74 -0
  1091. package/scripts/time-runtime/time-background.ts +20 -2
  1092. package/scripts/time-runtime/time-batch-guard.ts +42 -4
  1093. package/scripts/time-runtime/time-bundle-call.ts +1 -1
  1094. package/scripts/time-runtime/time-bundles.ts +40 -8
  1095. package/scripts/time-runtime/time-density-hook.ts +8 -6
  1096. package/scripts/time-runtime/time-followup-stage.ts +1 -3
  1097. package/scripts/time-runtime/time-format.ts +5 -28
  1098. package/scripts/time-runtime/time-markers.ts +12 -3
  1099. package/scripts/time-runtime/time-search-call.ts +38 -0
  1100. package/scripts/time-runtime/time-shell.ts +98 -11
  1101. package/scripts/time-runtime/time-transcript-line.ts +65 -66
  1102. package/scripts/uninstall/uninstall.ts +1 -1
  1103. package/scripts/version/bump-version-main.ts +12 -0
  1104. package/scripts/version/bump-version.ts +25 -25
  1105. package/scripts/version/development-engines-verdict.ts +124 -0
  1106. package/scripts/version/effective-upstream.ts +6 -12
  1107. package/scripts/version/latest-corepack.ts +19 -32
  1108. package/scripts/version/latest-if-required-cli.ts +93 -0
  1109. package/scripts/version/latest-lane-guard-main.ts +8 -0
  1110. package/scripts/version/latest-lane-guard.ts +0 -4
  1111. package/scripts/version/latest-scope-cli.ts +0 -9
  1112. package/scripts/version/latest-scope-main.ts +12 -0
  1113. package/scripts/version/latest-update.ts +5 -5
  1114. package/scripts/version/npm-registry.ts +44 -6
  1115. package/scripts/version/publishable-range-check.ts +5 -16
  1116. package/scripts/version/release-age.ts +1 -1
  1117. package/scripts/version/release-hold.ts +1 -1
  1118. package/scripts/version/release-window.ts +38 -0
  1119. package/scripts/version/running-binary.ts +1 -1
  1120. package/scripts/version/safe-chain-version-update.ts +3 -8
  1121. package/scripts/version/version-targets.ts +6 -28
  1122. package/templates/dependabot.yml +29 -0
  1123. package/templates/gitignore +6 -1
  1124. package/templates/pnpm-workspace.basic.yaml +1 -1
  1125. package/templates/sonar-project.properties +3 -2
  1126. package/templates/workflows/ci.yml +53 -4
  1127. package/templates/workflows/github-release.yml +4 -0
  1128. package/tsconfig.sonar.json +1 -1
  1129. package/.ncurc.json +0 -3
  1130. package/dist/hooks/batch-guard.js +0 -29
  1131. package/dist/hooks/chunk-4KKD2UTK.js +0 -66
  1132. package/dist/hooks/chunk-6TS2JD6D.js +0 -237
  1133. package/dist/hooks/chunk-7DSBJVFH.js +0 -50
  1134. package/dist/hooks/chunk-A65Y4YOR.js +0 -79
  1135. package/dist/hooks/chunk-APUO6U4J.js +0 -2451
  1136. package/dist/hooks/chunk-CDY4NFQG.js +0 -15
  1137. package/dist/hooks/chunk-DGT54IH5.js +0 -161
  1138. package/dist/hooks/chunk-EFXE6C37.js +0 -81
  1139. package/dist/hooks/chunk-GP4IEC4O.js +0 -20
  1140. package/dist/hooks/chunk-JP45SOCJ.js +0 -56
  1141. package/dist/hooks/chunk-LAOV7NLM.js +0 -45
  1142. package/dist/hooks/chunk-M4HGZV7U.js +0 -83
  1143. package/dist/hooks/chunk-O6GDRNJB.js +0 -343
  1144. package/dist/hooks/chunk-PF2NZL2A.js +0 -131
  1145. package/dist/hooks/chunk-PTICX4OL.js +0 -358
  1146. package/dist/hooks/chunk-RT27QRJW.js +0 -6247
  1147. package/dist/hooks/chunk-SYOTDYCI.js +0 -3533
  1148. package/dist/hooks/chunk-TNUMY6NL.js +0 -4838
  1149. package/dist/hooks/chunk-UPUZF3AN.js +0 -279
  1150. package/dist/hooks/chunk-WK6SMBIC.js +0 -3180
  1151. package/dist/hooks/duplicate-read-guard.js +0 -30
  1152. package/dist/hooks/investigation-guard.js +0 -29
  1153. package/scripts/backlog/backlog-stalled-cli.ts +0 -30
  1154. package/scripts/cost-runtime/context-cut-threshold.ts +0 -11
  1155. package/scripts/cost-runtime/cost-format.ts +0 -29
  1156. package/scripts/init/basic-path-migration.ts +0 -24
  1157. package/scripts/issue/issue-backlinks-cli.ts +0 -93
  1158. package/scripts/josh/josh-commands-guard.ts +0 -38
  1159. package/scripts/josh/josh-usage-automation.ts +0 -121
  1160. package/scripts/josh/josh-usage-backlog.ts +0 -180
  1161. package/scripts/josh/josh-usage-developer.ts +0 -230
  1162. package/scripts/josh/josh-usage-hooks.ts +0 -38
  1163. package/scripts/josh/josh-usage-issue.ts +0 -205
  1164. package/scripts/josh/josh-usage-review.ts +0 -101
  1165. package/scripts/josh/josh-usage-run.ts +0 -252
  1166. package/scripts/josh/josh-usage-session.ts +0 -238
  1167. package/scripts/josh/josh-usage-workflow.ts +0 -212
  1168. package/scripts/lint/cross-file-recheck.ts +0 -155
  1169. package/scripts/registry-migration/migrate-logic.ts +0 -237
  1170. package/scripts/registry-migration/migrate.ts +0 -292
  1171. package/scripts/registry-migration/user-npmrc.ts +0 -15
  1172. package/scripts/rules/filing-cap.ts +0 -132
  1173. package/scripts/rules/rule-guard.ts +0 -23
  1174. package/scripts/rules/rule-registry-rows.ts +0 -292
  1175. package/scripts/rules/rule-registry.ts +0 -112
  1176. package/scripts/run/run-stranded-cli.ts +0 -27
@@ -62,9 +62,8 @@ function create_version_command_config(options) {
62
62
  }
63
63
 
64
64
  // scripts/version/effective-upstream.ts
65
- import { existsSync, readFileSync } from "node:fs";
66
65
  import { createRequire } from "node:module";
67
- import path2 from "node:path";
66
+ import path3 from "node:path";
68
67
 
69
68
  // scripts/lib/ancestor-directories.ts
70
69
  import path from "node:path";
@@ -83,6 +82,10 @@ function nearest(start_directory, is_match) {
83
82
  }
84
83
  var ancestor_directories = { list, nearest };
85
84
 
85
+ // scripts/lib/package-manifest.ts
86
+ import { readFileSync as readFileSync2 } from "node:fs";
87
+ import path2 from "node:path";
88
+
86
89
  // scripts/lib/json-value.ts
87
90
  function parse_or_undefined(text) {
88
91
  try {
@@ -97,10 +100,56 @@ function parse_with(text, schema) {
97
100
  const parsed = schema.safeParse(value);
98
101
  return parsed.success ? parsed.data : void 0;
99
102
  }
103
+ function parse_array(text) {
104
+ const value = parse_or_undefined(text);
105
+ return Array.isArray(value) ? value : void 0;
106
+ }
100
107
  function is_record(value) {
101
108
  return typeof value === "object" && value !== null && !Array.isArray(value);
102
109
  }
103
- var json_value = { parse_or_undefined, parse_with, is_record };
110
+ var json_value = { parse_or_undefined, parse_with, parse_array, is_record };
111
+
112
+ // scripts/lib/read-file.ts
113
+ import { readFileSync } from "node:fs";
114
+ var ABSENT_CODE = "ENOENT";
115
+ function is_absent(error) {
116
+ return error instanceof Error && "code" in error && error.code === ABSENT_CODE;
117
+ }
118
+ function read_optional(path7) {
119
+ try {
120
+ return readFileSync(path7, "utf8");
121
+ } catch (error) {
122
+ if (is_absent(error)) return void 0;
123
+ throw error;
124
+ }
125
+ }
126
+ function read_file_or_empty(path7) {
127
+ return read_optional(path7) ?? "";
128
+ }
129
+ function read_if_readable(path7) {
130
+ try {
131
+ return readFileSync(path7, "utf8");
132
+ } catch {
133
+ return void 0;
134
+ }
135
+ }
136
+ var file_reader = { is_absent, read_optional, read_file_or_empty, read_if_readable };
137
+
138
+ // scripts/lib/package-manifest.ts
139
+ var PACKAGE_JSON = "package.json";
140
+ function manifest_path(directory) {
141
+ return path2.join(directory, PACKAGE_JSON);
142
+ }
143
+ function read_manifest(directory, schema) {
144
+ const text = readFileSync2(manifest_path(directory), "utf8");
145
+ return schema.parse(JSON.parse(text));
146
+ }
147
+ function read_manifest_if_valid(directory, schema) {
148
+ const text = file_reader.read_if_readable(manifest_path(directory));
149
+ if (text === void 0) return void 0;
150
+ return json_value.parse_with(text, schema);
151
+ }
152
+ var package_manifest = { manifest_path, read_manifest, read_manifest_if_valid };
104
153
 
105
154
  // scripts/lib/schemas.ts
106
155
  import { z } from "zod";
@@ -135,18 +184,14 @@ var string_array_schema = z.array(z.string());
135
184
  var string_record_schema = z.record(z.string(), z.string());
136
185
 
137
186
  // scripts/version/effective-upstream.ts
138
- var PACKAGE_JSON = "package.json";
139
- function read_matching_version(manifest_path, package_name) {
140
- if (!existsSync(manifest_path)) return void 0;
141
- const parsed = package_named_version_schema.safeParse(
142
- json_value.parse_or_undefined(readFileSync(manifest_path, "utf8"))
143
- );
144
- if (!parsed.success || parsed.data.name !== package_name) return void 0;
145
- return parsed.data.version;
187
+ function read_matching_version(directory, package_name) {
188
+ const manifest = package_manifest.read_manifest_if_valid(directory, package_named_version_schema);
189
+ if (manifest?.name !== package_name) return void 0;
190
+ return manifest.version;
146
191
  }
147
192
  function walk_up_for_version(start_directory, package_name) {
148
193
  for (const directory of ancestor_directories.list(start_directory)) {
149
- const version = read_matching_version(path2.join(directory, PACKAGE_JSON), package_name);
194
+ const version = read_matching_version(directory, package_name);
150
195
  if (version !== void 0) return version;
151
196
  }
152
197
  return void 0;
@@ -161,10 +206,13 @@ function resolve_from_base(base_url, package_name, resolve_marker = package_name
161
206
  function resolve_effective_upstream_version(base_url, package_name, options = {}) {
162
207
  const resolved = resolve_from_base(base_url, package_name, options.resolve_marker);
163
208
  if (resolved === void 0) return void 0;
164
- return walk_up_for_version(path2.dirname(resolved), package_name);
209
+ return walk_up_for_version(path3.dirname(resolved), package_name);
165
210
  }
166
211
 
167
212
  // scripts/lib/timeouts.ts
213
+ var MS_PER_SECOND = 1e3;
214
+ var SECONDS_PER_MINUTE = 60;
215
+ var MS_PER_MINUTE = MS_PER_SECOND * SECONDS_PER_MINUTE;
168
216
  var FETCH_TIMEOUT_MS = 1e4;
169
217
  var COMMAND_TIMEOUT_MS = 3e4;
170
218
  var INSTALL_TIMEOUT_MS = 6e5;
@@ -173,8 +221,8 @@ var INSTALL_TIMEOUT_MS = 6e5;
173
221
  import { execaSync as execaSync4 } from "execa";
174
222
 
175
223
  // scripts/version/release-age.ts
176
- import { readFileSync as readFileSync2 } from "node:fs";
177
- import path3 from "node:path";
224
+ import { readFileSync as readFileSync3 } from "node:fs";
225
+ import path4 from "node:path";
178
226
 
179
227
  // scripts/lib/yaml-document.ts
180
228
  import { load, loadAll, YAMLException } from "js-yaml";
@@ -208,7 +256,6 @@ var NO_QUARANTINE_MINUTES = 0;
208
256
  var WORKSPACE_PATH = "pnpm-workspace.yaml";
209
257
  var workspace_age_schema = z2.object({ minimumReleaseAge: z2.number().int().nonnegative() });
210
258
  var release_times_schema = z2.record(z2.string(), z2.string());
211
- var MS_PER_MINUTE = 6e4;
212
259
  function parse_workspace(workspace_content) {
213
260
  try {
214
261
  return yaml_document.parse_yaml(workspace_content);
@@ -240,7 +287,7 @@ function select_aged_version(times, major, minimum_age_minutes, now_ms) {
240
287
  }
241
288
  function read_declared_minimum_release_age(workspace_path) {
242
289
  try {
243
- return parse_declared_minimum_release_age(readFileSync2(workspace_path, "utf8"));
290
+ return parse_declared_minimum_release_age(readFileSync3(workspace_path, "utf8"));
244
291
  } catch {
245
292
  return void 0;
246
293
  }
@@ -249,14 +296,14 @@ function read_minimum_release_age(workspace_path = WORKSPACE_PATH) {
249
296
  return read_declared_minimum_release_age(workspace_path) ?? NO_QUARANTINE_MINUTES;
250
297
  }
251
298
  function find_declared_minimum_release_age(start, boundary) {
252
- const declared = read_declared_minimum_release_age(path3.join(start, WORKSPACE_PATH));
299
+ const declared = read_declared_minimum_release_age(path4.join(start, WORKSPACE_PATH));
253
300
  if (declared !== void 0) return declared;
254
301
  if (start === boundary) return void 0;
255
- const parent = path3.dirname(start);
302
+ const parent = path4.dirname(start);
256
303
  return parent === start ? void 0 : find_declared_minimum_release_age(parent, boundary);
257
304
  }
258
305
  function read_nearest_minimum_release_age(start, boundary) {
259
- return find_declared_minimum_release_age(path3.resolve(start), boundary) ?? NO_QUARANTINE_MINUTES;
306
+ return find_declared_minimum_release_age(path4.resolve(start), boundary) ?? NO_QUARANTINE_MINUTES;
260
307
  }
261
308
  var release_age = {
262
309
  release_times_schema,
@@ -270,14 +317,13 @@ var release_age = {
270
317
  // scripts/version/release-hold.ts
271
318
  import semver2 from "semver";
272
319
  var MINUTES_PER_HOUR = 60;
273
- var MS_PER_MINUTE2 = 6e4;
274
320
  var HOLD_LABEL = "Held:";
275
321
  function is_latest_withheld(times, latest, minimum_age_minutes, now_ms) {
276
322
  const published_at = times[latest];
277
323
  if (published_at === void 0) return false;
278
324
  const published_ms = Date.parse(published_at);
279
325
  if (!Number.isFinite(published_ms)) return false;
280
- return published_ms > now_ms - minimum_age_minutes * MS_PER_MINUTE2;
326
+ return published_ms > now_ms - minimum_age_minutes * MS_PER_MINUTE;
281
327
  }
282
328
  function resolve_installable(times, latest, minimum_age_minutes, now_ms) {
283
329
  if (times === void 0 || !is_latest_withheld(times, latest, minimum_age_minutes, now_ms)) {
@@ -320,21 +366,20 @@ var release_hold = {
320
366
  };
321
367
 
322
368
  // scripts/version/running-binary.ts
323
- import { existsSync as existsSync2, readFileSync as readFileSync3 } from "node:fs";
324
- import path4 from "node:path";
325
- var PACKAGE_JSON2 = "package.json";
369
+ import { existsSync, readFileSync as readFileSync4 } from "node:fs";
370
+ import path5 from "node:path";
326
371
  var SCRIPT_DEPTH_FROM_ROOT = ["..", ".."];
327
372
  function resolve_self_package_path(self_directory) {
328
- return path4.join(self_directory, ...SCRIPT_DEPTH_FROM_ROOT, PACKAGE_JSON2);
373
+ return path5.join(self_directory, ...SCRIPT_DEPTH_FROM_ROOT, PACKAGE_JSON);
329
374
  }
330
375
  function running_package_directory(self_directory) {
331
- return path4.resolve(self_directory, ...SCRIPT_DEPTH_FROM_ROOT);
376
+ return path5.resolve(self_directory, ...SCRIPT_DEPTH_FROM_ROOT);
332
377
  }
333
378
  function read_running_version(self_directory) {
334
379
  const package_path = resolve_self_package_path(self_directory);
335
- if (!existsSync2(package_path)) return void 0;
380
+ if (!existsSync(package_path)) return void 0;
336
381
  const parsed = package_version_schema.safeParse(
337
- json_value.parse_or_undefined(readFileSync3(package_path, "utf8"))
382
+ json_value.parse_or_undefined(readFileSync4(package_path, "utf8"))
338
383
  );
339
384
  return parsed.success ? parsed.data.version : void 0;
340
385
  }
@@ -536,6 +581,11 @@ var version_check_logic = {
536
581
  };
537
582
 
538
583
  // scripts/git/git-execa-error.ts
584
+ function get_exit_code(error) {
585
+ if (typeof error !== "object" || error === null || !("exitCode" in error)) return void 0;
586
+ const { exitCode: exit_code } = error;
587
+ return typeof exit_code === "number" ? exit_code : void 0;
588
+ }
539
589
  function has_timed_out(error) {
540
590
  if (typeof error !== "object" || error === null || !("timedOut" in error)) return false;
541
591
  return error.timedOut === true;
@@ -636,6 +686,75 @@ function trace_swallowed(where, error) {
636
686
  }
637
687
  var error_text = { message_of, trace_swallowed };
638
688
 
689
+ // scripts/lib/token-shape.ts
690
+ var REDACTED = "[REDACTED]";
691
+ var GITHUB_RULE = "@secretlint/secretlint-rule-github";
692
+ var ANTHROPIC_OAUTH_TOKEN = /sk-ant-oat\d+-[\w-]+/u;
693
+ var SHAPES = [
694
+ {
695
+ name: "GitHub token",
696
+ pattern: new RegExp("(?<!\\p{L})(?:ghp|gho|ghu|ghs|ghr)_\\w{36}(?!\\w)", "u"),
697
+ secretlint: GITHUB_RULE
698
+ },
699
+ {
700
+ name: "GitHub App installation token",
701
+ pattern: new RegExp("(?<!\\p{L})ghs_\\d{1,20}_[\\w-]{1,1000}\\.[\\w-]{1,10000}\\.[\\w-]{1,1000}(?![\\w-])", "u"),
702
+ secretlint: GITHUB_RULE
703
+ },
704
+ {
705
+ name: "GitHub fine-grained token",
706
+ pattern: new RegExp("(?<!\\p{L})github_pat_\\w{82}(?!\\w)", "u"),
707
+ secretlint: GITHUB_RULE
708
+ },
709
+ {
710
+ name: "Slack token",
711
+ pattern: /\b(?:xoxb|xoxp|xapp|xoxa|xoxo|xoxr)-(?:\d-)?(?:[a-zA-Z0-9]{1,40}-)+[a-zA-Z0-9]{1,40}\b/u,
712
+ secretlint: "@secretlint/secretlint-rule-slack"
713
+ },
714
+ {
715
+ name: "Anthropic API key",
716
+ pattern: new RegExp("(?<!\\p{L})sk-ant-api0\\d-[\\w-]{90,128}AA(?![\\w-])", "u"),
717
+ secretlint: "@secretlint/secretlint-rule-anthropic"
718
+ },
719
+ { name: "Anthropic OAuth token", pattern: ANTHROPIC_OAUTH_TOKEN, secretlint: void 0 }
720
+ ];
721
+ var EVERY_SHAPE = new RegExp(SHAPES.map((shape) => shape.pattern.source).join("|"), "gu");
722
+ function find(text) {
723
+ return SHAPES.find((shape) => shape.pattern.test(text));
724
+ }
725
+ function holds(text) {
726
+ return SHAPES.some((shape) => shape.pattern.test(text));
727
+ }
728
+ function refuse(text, subject) {
729
+ const shape = find(text);
730
+ if (shape === void 0) return;
731
+ throw new Error(
732
+ `${subject} holds a ${shape.name}-shaped string, so it was not sent. Remove the credential and send it again.`
733
+ );
734
+ }
735
+ function redact(text) {
736
+ return text.replaceAll(EVERY_SHAPE, () => REDACTED);
737
+ }
738
+ function string_leaves(value) {
739
+ if (typeof value === "string") return [value];
740
+ if (typeof value !== "object" || value === null) return [];
741
+ return Object.values(value).flatMap((entry) => string_leaves(entry));
742
+ }
743
+ function decoded(body) {
744
+ const value = json_value.parse_or_undefined(body);
745
+ return value === void 0 ? body : string_leaves(value).join("\n");
746
+ }
747
+ var token_shape = {
748
+ ANTHROPIC_OAUTH_TOKEN,
749
+ REDACTED,
750
+ SHAPES,
751
+ decoded,
752
+ find,
753
+ holds,
754
+ refuse,
755
+ redact
756
+ };
757
+
639
758
  // scripts/gh/git-gh-exec.ts
640
759
  import { execa as execa2, execaSync } from "execa";
641
760
 
@@ -698,6 +817,78 @@ function failure_of(error) {
698
817
  }
699
818
  var gh_failure = { attach, classify_stdout, failure_of, parse_response_status };
700
819
 
820
+ // scripts/gh/git-gh-retry.ts
821
+ import { setTimeout as delay } from "node:timers/promises";
822
+ var FIRST_RETRY_DELAY_MS = 2e3;
823
+ var SECOND_RETRY_DELAY_MS = 5e3;
824
+ var RETRY_DELAYS_MS = [FIRST_RETRY_DELAY_MS, SECOND_RETRY_DELAY_MS];
825
+ var MAX_ATTEMPTS = RETRY_DELAYS_MS.length + 1;
826
+ var SERVER_ERROR_FLOOR = 500;
827
+ var GH_AUTH_REQUIRED_EXIT_CODE = 4;
828
+ var SPENT_NOTE = "gh: request failed transiently on every attempt";
829
+ var SUMMARY_STATUS_PATTERN = /\(HTTP (?<status>\d{3})\)/u;
830
+ var DEFAULT_HOOKS = {
831
+ wait: async (milliseconds) => {
832
+ await delay(milliseconds);
833
+ },
834
+ note: (text) => {
835
+ process.stderr.write(`${text}
836
+ `);
837
+ }
838
+ };
839
+ function summary_status(error) {
840
+ const { status } = SUMMARY_STATUS_PATTERN.exec(error.message)?.groups ?? {};
841
+ return status === void 0 ? void 0 : Number(status);
842
+ }
843
+ function has_answer(spawn_error) {
844
+ if (!(spawn_error instanceof Error) || !("stdout" in spawn_error)) return false;
845
+ return typeof spawn_error.stdout === "string" && spawn_error.stdout.trim().length > 0;
846
+ }
847
+ function is_transient_status(status, spawn_error) {
848
+ if (status === void 0) return !has_answer(spawn_error);
849
+ return status >= SERVER_ERROR_FLOOR;
850
+ }
851
+ function is_final_spawn(spawn_error) {
852
+ return has_timed_out(spawn_error) || get_exit_code(spawn_error) === GH_AUTH_REQUIRED_EXIT_CODE;
853
+ }
854
+ function is_transient(error) {
855
+ const failure = gh_failure.failure_of(error);
856
+ if (failure === void 0 || !(error instanceof Error)) return false;
857
+ const status = failure.status ?? summary_status(error);
858
+ return !is_final_spawn(error.cause) && is_transient_status(status, error.cause);
859
+ }
860
+ function first_line(error) {
861
+ return error_text.message_of(error).split("\n", 1)[0] ?? "";
862
+ }
863
+ function retry_note(error, attempt, wait_ms) {
864
+ const ordinal = `${String(attempt)}/${String(MAX_ATTEMPTS)}`;
865
+ return `gh: request failed transiently (attempt ${ordinal}: ${first_line(error)}) \u2014 retrying in ${String(wait_ms)} ms`;
866
+ }
867
+ function retry_delay(error, attempt) {
868
+ return is_transient(error) ? RETRY_DELAYS_MS[attempt - 1] : void 0;
869
+ }
870
+ function spent_note(message) {
871
+ return `${SPENT_NOTE} (${message})`;
872
+ }
873
+ function note_spent(error, attempt, hooks) {
874
+ if (attempt === MAX_ATTEMPTS && is_transient(error)) hooks.note(spent_note(first_line(error)));
875
+ }
876
+ async function with_retry(request, hooks = DEFAULT_HOOKS, attempt = 1) {
877
+ try {
878
+ return await request();
879
+ } catch (error) {
880
+ const wait_ms = retry_delay(error, attempt);
881
+ if (wait_ms === void 0) {
882
+ note_spent(error, attempt, hooks);
883
+ throw error;
884
+ }
885
+ hooks.note(retry_note(error, attempt, wait_ms));
886
+ await hooks.wait(wait_ms);
887
+ return await with_retry(request, hooks, attempt + 1);
888
+ }
889
+ }
890
+ var gh_retry = { MAX_ATTEMPTS, RETRY_DELAYS_MS, is_transient, spent_note, with_retry };
891
+
701
892
  // scripts/gh/git-gh-exec.ts
702
893
  var BODY_FROM_STDIN = "-";
703
894
  var GH_REQUEST_TIMEOUT_MS = 6e4;
@@ -764,20 +955,20 @@ function parse_status_line(output) {
764
955
  function status_of_failure(error) {
765
956
  return has_stdout_field(error) ? parse_status_line(error.stdout) : void 0;
766
957
  }
767
- async function exec_gh_api_status(path6, timeout_ms) {
958
+ async function exec_gh_api_status(path7, timeout_ms) {
768
959
  const options = to_spawn_options(timeout_ms);
769
960
  try {
770
961
  await check_gh_installed();
771
- const { stdout } = await execa2("gh", ["api", "--include", "--silent", path6], options);
962
+ const { stdout } = await execa2("gh", ["api", "--include", "--silent", path7], options);
772
963
  return parse_status_line(stdout);
773
964
  } catch (error) {
774
965
  return status_of_failure(error);
775
966
  }
776
967
  }
777
- function exec_gh_api_status_sync(path6, timeout_ms) {
968
+ function exec_gh_api_status_sync(path7, timeout_ms) {
778
969
  const options = to_spawn_options(timeout_ms);
779
970
  try {
780
- const { stdout } = execaSync("gh", ["api", "--include", "--silent", path6], options);
971
+ const { stdout } = execaSync("gh", ["api", "--include", "--silent", path7], options);
781
972
  return parse_status_line(stdout);
782
973
  } catch (error) {
783
974
  return status_of_failure(error);
@@ -788,13 +979,20 @@ var INPUT_FLAG = "--input";
788
979
  var PAGINATE_FLAG = "--paginate";
789
980
  var SLURP_FLAG = "--slurp";
790
981
  var JQ_FLAG = "--jq";
982
+ var ALLOW_ESCAPES_FLAG = "--allow-escape-sequences";
791
983
  function optional_flag(flag, value) {
792
984
  return value === void 0 ? [] : [flag, value];
793
985
  }
986
+ function refuse_credential_body(request) {
987
+ if (request.body !== void 0) {
988
+ token_shape.refuse(token_shape.decoded(request.body), `The gh api ${request.path} body`);
989
+ }
990
+ }
794
991
  function to_gh_api_args(request) {
795
992
  const body_args = request.body === void 0 ? [] : [INPUT_FLAG, BODY_FROM_STDIN];
796
993
  const paginate_args = request.should_paginate === true ? [PAGINATE_FLAG] : [];
797
994
  const slurp_args = request.should_slurp === true ? [SLURP_FLAG] : [];
995
+ const escape_args = request.should_allow_escapes === true ? [ALLOW_ESCAPES_FLAG] : [];
798
996
  return [
799
997
  "api",
800
998
  request.path,
@@ -802,10 +1000,11 @@ function to_gh_api_args(request) {
802
1000
  ...body_args,
803
1001
  ...paginate_args,
804
1002
  ...slurp_args,
1003
+ ...escape_args,
805
1004
  ...optional_flag(JQ_FLAG, request.jq_filter)
806
1005
  ];
807
1006
  }
808
- async function exec_gh_api(request) {
1007
+ async function send_gh_api(request) {
809
1008
  const args = to_gh_api_args(request);
810
1009
  if (request.body === void 0) {
811
1010
  return await exec_gh_command(args, request.timeout_ms, request.cwd);
@@ -817,7 +1016,13 @@ async function exec_gh_api(request) {
817
1016
  cwd: request.cwd
818
1017
  });
819
1018
  }
1019
+ async function exec_gh_api(request) {
1020
+ refuse_credential_body(request);
1021
+ if (request.should_retry === false) return await send_gh_api(request);
1022
+ return await gh_retry.with_retry(async () => await send_gh_api(request));
1023
+ }
820
1024
  function exec_gh_api_sync(request) {
1025
+ refuse_credential_body(request);
821
1026
  const body_option = request.body === void 0 ? {} : { input: request.body };
822
1027
  const options = { ...body_option, ...to_spawn_options(request.timeout_ms, request.cwd) };
823
1028
  try {
@@ -846,328 +1051,21 @@ var git_gh_exec = {
846
1051
  parse_status_line
847
1052
  };
848
1053
 
849
- // scripts/gh/fix-gh-packages-logic.ts
850
- import { loadAll as loadAll2 } from "js-yaml";
851
- import { z as z4 } from "zod";
852
- var GH_PACKAGES_HOST = "npm.pkg.github.com";
853
- var RESOLUTION_BLOCK = "\n resolution:\n";
854
- var INTEGRITY_PREFIX = " integrity: ";
855
- var TARBALL_PREFIX = " tarball: ";
856
- var FLOW_RESOLUTION_LINE_START = "\n resolution: {";
857
- var FLOW_TARBALL_KEY = ", tarball: ";
858
- var NPMRC_AUTH_TOKEN_PREFIX = `//${GH_PACKAGES_HOST}/:_authToken=`;
859
- var REGISTRY_KEY = ":registry=";
860
- var lockfile_resolution_schema = z4.looseObject({
861
- integrity: z4.string().optional(),
862
- tarball: z4.string().optional()
863
- });
864
- var lockfile_package_schema = z4.looseObject({
865
- resolution: lockfile_resolution_schema.optional()
866
- });
867
- var lockfile_document_schema = z4.looseObject({
868
- packages: z4.record(z4.string(), lockfile_package_schema).optional()
869
- });
870
- function parse_lockfile_packages(raw) {
871
- const merged = {};
872
- for (const document of loadAll2(raw)) {
873
- const { packages } = lockfile_document_schema.parse(document);
874
- if (packages !== void 0) Object.assign(merged, packages);
875
- }
876
- return merged;
877
- }
878
- function extract_gh_registry_scope(line) {
879
- const trimmed = line.trim();
880
- if (!trimmed.startsWith("@")) return void 0;
881
- const eq_index = trimmed.indexOf(REGISTRY_KEY);
882
- if (eq_index === -1) return void 0;
883
- const registry = trimmed.slice(eq_index + REGISTRY_KEY.length).trim().replace(/\/$/u, "");
884
- if (registry !== `https://${GH_PACKAGES_HOST}`) return void 0;
885
- return trimmed.slice(0, eq_index);
886
- }
887
- function parse_gh_scopes(npmrc) {
888
- const scopes = /* @__PURE__ */ new Set();
889
- for (const line of npmrc.split("\n")) {
890
- const scope = extract_gh_registry_scope(line);
891
- if (scope !== void 0) scopes.add(scope);
892
- }
893
- return scopes;
894
- }
895
- function extract_auth_token_from_line(line) {
896
- const trimmed = line.trim();
897
- if (!trimmed.startsWith(NPMRC_AUTH_TOKEN_PREFIX)) return void 0;
898
- const value = trimmed.slice(NPMRC_AUTH_TOKEN_PREFIX.length);
899
- if (value.startsWith("${") || value.length === 0) return void 0;
900
- return value;
901
- }
902
- function parse_npmrc_auth_token(npmrc) {
903
- for (const line of npmrc.split("\n")) {
904
- const token = extract_auth_token_from_line(line);
905
- if (token !== void 0) return token;
906
- }
907
- return void 0;
908
- }
909
- function scope_from_key(key) {
910
- return key.startsWith("@") ? key.split("/", 1)[0] ?? "" : "";
911
- }
912
- function has_tarball(entry) {
913
- return entry.resolution?.tarball !== void 0;
914
- }
915
- function package_path_from_key(key) {
916
- const start = key.startsWith("@") ? 1 : 0;
917
- const at_index = key.indexOf("@", start);
918
- return at_index === -1 ? key : key.slice(0, at_index);
919
- }
920
- function package_version_from_key(key) {
921
- const start = key.startsWith("@") ? 1 : 0;
922
- const at_index = key.indexOf("@", start);
923
- if (at_index === -1) return "";
924
- return key.slice(at_index + 1).split("(", 1)[0] ?? "";
925
- }
926
- function should_fix_tarball(key, entry, scopes) {
927
- if (has_tarball(entry)) return false;
928
- const scope = scope_from_key(key);
929
- return scope.length > 0 && scopes.has(scope);
930
- }
931
- function find_entry_start(content, package_key) {
932
- const single = content.indexOf(`
933
- '${package_key}':
934
- `);
935
- if (single !== -1) return single;
936
- return content.indexOf(`
937
- "${package_key}":
938
- `);
939
- }
940
- function find_entry_end(content, entry_start) {
941
- const next_match = /\n {2}['"]/u.exec(content.slice(entry_start + 1));
942
- return next_match === null ? content.length : entry_start + 1 + next_match.index;
943
- }
944
- function find_integrity_eol_in_entry(entry_content) {
945
- const resolution_pos = entry_content.indexOf(RESOLUTION_BLOCK);
946
- if (resolution_pos === -1) return -1;
947
- const integrity_pos = entry_content.indexOf(INTEGRITY_PREFIX, resolution_pos);
948
- if (integrity_pos === -1) return -1;
949
- return entry_content.indexOf("\n", integrity_pos);
950
- }
951
- function find_flow_resolution_brace(entry_content) {
952
- const pos = entry_content.indexOf(FLOW_RESOLUTION_LINE_START);
953
- if (pos === -1) return -1;
954
- const line_end = entry_content.indexOf("\n", pos + 1);
955
- const search_end = line_end === -1 ? entry_content.length : line_end;
956
- const brace = entry_content.lastIndexOf("}", search_end);
957
- if (brace <= pos) return -1;
958
- return brace;
959
- }
960
- function insert_expanded_tarball(content, entry_start, entry_end, tarball) {
961
- const entry_content = content.slice(entry_start, entry_end);
962
- const integrity_eol = find_integrity_eol_in_entry(entry_content);
963
- if (integrity_eol === -1) return void 0;
964
- if (entry_content.slice(integrity_eol + 1).startsWith(TARBALL_PREFIX)) return content;
965
- const patched = `${entry_content.slice(0, integrity_eol + 1)}${TARBALL_PREFIX}${tarball}
966
- ${entry_content.slice(integrity_eol + 1)}`;
967
- return content.slice(0, entry_start) + patched + content.slice(entry_end);
968
- }
969
- function insert_flow_tarball(content, entry_start, entry_end, tarball) {
970
- const entry_content = content.slice(entry_start, entry_end);
971
- const brace_pos = find_flow_resolution_brace(entry_content);
972
- if (brace_pos === -1) return void 0;
973
- const open_brace = entry_content.lastIndexOf("{", brace_pos);
974
- if (open_brace === -1) return void 0;
975
- const flow_body = entry_content.slice(open_brace + 1, brace_pos);
976
- if (/\btarball\s*:/u.test(flow_body)) return content;
977
- const patched = `${entry_content.slice(0, brace_pos)}${FLOW_TARBALL_KEY}${tarball}${entry_content.slice(brace_pos)}`;
978
- return content.slice(0, entry_start) + patched + content.slice(entry_end);
979
- }
980
- function insert_tarball_for_key(content, package_key, tarball) {
981
- const entry_start = find_entry_start(content, package_key);
982
- if (entry_start === -1) return content;
983
- const entry_end = find_entry_end(content, entry_start);
984
- return insert_expanded_tarball(content, entry_start, entry_end, tarball) ?? insert_flow_tarball(content, entry_start, entry_end, tarball) ?? content;
985
- }
986
- function patch_lockfile(content, patches) {
987
- let result = content;
988
- for (const [key, tarball] of patches) {
989
- result = insert_tarball_for_key(result, key, tarball);
990
- }
991
- return result;
992
- }
993
- function resolve_token(environment_token, npmrc_token, get_fallback_token) {
994
- if (environment_token !== void 0 && environment_token.length > 0) return environment_token;
995
- if (npmrc_token !== void 0) return npmrc_token;
996
- return get_fallback_token();
997
- }
998
- var fix_gh_packages_logic = {
999
- parse_gh_scopes,
1000
- parse_npmrc_auth_token,
1001
- parse_lockfile_packages,
1002
- package_path_from_key,
1003
- package_version_from_key,
1004
- needs_tarball_fix: should_fix_tarball,
1005
- insert_tarball_for_key,
1006
- patch_lockfile,
1007
- resolve_token
1008
- };
1009
-
1010
- // scripts/registry-migration/migrate-logic.ts
1011
- var SCOPE = "@joshuafolkken";
1012
- var REGISTRY_KEY2 = `${SCOPE}:registry`;
1013
- var PUBLIC_REGISTRY = "https://registry.npmjs.org/";
1014
- var GITHUB_REGISTRY = "https://npm.pkg.github.com/";
1015
- var MAPPING = `${REGISTRY_KEY2}=${PUBLIC_REGISTRY}`;
1016
- var REGISTRY_VALUE_INDEX = 1;
1017
- var SPLIT_LIMIT = 2;
1018
- function normalized_registry(value) {
1019
- let normalized = value.trim();
1020
- while (normalized.endsWith("/")) normalized = normalized.slice(0, -1);
1021
- return `${normalized}/`;
1022
- }
1023
- function mapping_lines(content) {
1024
- return content.split(/\r?\n/u).filter((line) => line.trimStart().startsWith(`${REGISTRY_KEY2}=`));
1025
- }
1026
- function registry_of(content) {
1027
- const lines = mapping_lines(content);
1028
- if (lines.length !== 1) return void 0;
1029
- return normalized_registry(lines[0]?.split("=", SPLIT_LIMIT)[REGISTRY_VALUE_INDEX] ?? "");
1030
- }
1031
- function scoped_packages(lockfile) {
1032
- const packages = fix_gh_packages_logic.parse_lockfile_packages(lockfile);
1033
- return Object.keys(packages).filter((key) => key.startsWith(`${SCOPE}/`)).map((key) => fix_gh_packages_logic.package_path_from_key(key)).filter((name, index, names) => names.indexOf(name) === index);
1034
- }
1035
- function scoped_versions(lockfile) {
1036
- const packages = fix_gh_packages_logic.parse_lockfile_packages(lockfile);
1037
- return Object.keys(packages).filter((key) => key.startsWith(`${SCOPE}/`)).map(
1038
- (key) => [
1039
- fix_gh_packages_logic.package_path_from_key(key),
1040
- fix_gh_packages_logic.package_version_from_key(key)
1041
- ]
1042
- );
1043
- }
1044
- function is_github_tarball(value) {
1045
- try {
1046
- const url = new URL(value);
1047
- return url.protocol === "https:" && url.hostname === "npm.pkg.github.com";
1048
- } catch {
1049
- return false;
1050
- }
1051
- }
1052
- function github_tarballs(lockfile) {
1053
- const packages = fix_gh_packages_logic.parse_lockfile_packages(lockfile);
1054
- return Object.entries(packages).filter(
1055
- ([key, entry]) => key.startsWith(`${SCOPE}/`) && entry.resolution?.tarball !== void 0 && is_github_tarball(entry.resolution.tarball)
1056
- ).map(([key]) => key);
1057
- }
1058
- function remove_flow_tarball(line) {
1059
- const marker = ", tarball: https://npm.pkg.github.com/";
1060
- const start = line.indexOf(marker);
1061
- if (start === -1) return line;
1062
- const end = line.indexOf("}", start);
1063
- if (end === -1) return line;
1064
- return `${line.slice(0, start)}${line.slice(end)}`;
1065
- }
1066
- function is_package_entry(line) {
1067
- return /^ {2}[^ ]/u.test(line);
1068
- }
1069
- function is_github_tarball_line(line) {
1070
- return line.trimStart().startsWith("tarball: https://npm.pkg.github.com/");
1071
- }
1072
- function package_id(key) {
1073
- const name = fix_gh_packages_logic.package_path_from_key(key);
1074
- return `${name}@${fix_gh_packages_logic.package_version_from_key(key)}`;
1075
- }
1076
- function clean_scoped_line(line, id, integrities) {
1077
- if (!id) return line;
1078
- if (is_github_tarball_line(line)) return void 0;
1079
- const cleaned = remove_flow_tarball(line);
1080
- const pair = integrities.get(id);
1081
- if (pair === void 0) return cleaned;
1082
- return cleaned.split(`integrity: ${pair[0]}`).join(`integrity: ${pair[1]}`);
1083
- }
1084
- function next_scoped_id(line, id) {
1085
- if (!is_package_entry(line)) return id;
1086
- const prefix = ` '${SCOPE}/`;
1087
- if (!line.startsWith(prefix)) return "";
1088
- return package_id(line.slice(" '".length).split("'", 1)[0] ?? "");
1089
- }
1090
- function integrity_pair(old_integrity, npm_integrity) {
1091
- if (old_integrity === void 0 || npm_integrity === void 0) return void 0;
1092
- return [old_integrity, npm_integrity];
1093
- }
1094
- function lock_integrities(lockfile, npm_integrities) {
1095
- const packages = fix_gh_packages_logic.parse_lockfile_packages(lockfile);
1096
- const pairs = /* @__PURE__ */ new Map();
1097
- const scoped_entries = Object.entries(packages).filter(([key]) => key.startsWith(`${SCOPE}/`));
1098
- for (const [key, entry] of scoped_entries) {
1099
- const id = package_id(key);
1100
- const pair = integrity_pair(entry.resolution?.integrity, npm_integrities.get(id));
1101
- if (pair !== void 0) pairs.set(id, pair);
1102
- }
1103
- return pairs;
1104
- }
1105
- function push_if_defined(lines, cleaned) {
1106
- if (cleaned !== void 0) lines.push(cleaned);
1107
- }
1108
- function rewrite_scoped_lockfile(lockfile, npm_integrities) {
1109
- let id = "";
1110
- const lines = [];
1111
- const integrities = lock_integrities(lockfile, npm_integrities);
1112
- for (const line of lockfile.split("\n")) {
1113
- id = next_scoped_id(line, id);
1114
- const cleaned = clean_scoped_line(line, id, integrities);
1115
- push_if_defined(lines, cleaned);
1116
- }
1117
- return lines.join("\n");
1118
- }
1119
- function append_mapping(content, eol) {
1120
- const separator = content && !content.endsWith("\n") ? eol : "";
1121
- return `${content}${separator}${MAPPING}${eol}`;
1122
- }
1123
- function replace_mapping(content) {
1124
- const lines = mapping_lines(content);
1125
- const eol = content.includes("\r\n") ? "\r\n" : "\n";
1126
- if (lines.length === 0) return append_mapping(content, eol);
1127
- return content.split(/\r?\n/u).map((line) => line === lines[0] ? MAPPING : line).join(eol);
1128
- }
1129
- function unsupported_registry(project_npmrc) {
1130
- const registry = registry_of(project_npmrc);
1131
- if (registry === void 0 || [GITHUB_REGISTRY, PUBLIC_REGISTRY].includes(registry)) {
1132
- return void 0;
1133
- }
1134
- return `unsupported project registry: ${registry}`;
1135
- }
1136
- function has_duplicate_mapping(project_npmrc, user_npmrc) {
1137
- return mapping_lines(project_npmrc).length > 1 || mapping_lines(user_npmrc).length > 1;
1138
- }
1139
- function previous_registry(project_npmrc, user_npmrc) {
1140
- return registry_of(project_npmrc) ?? registry_of(user_npmrc) ?? "default npm";
1141
- }
1142
- function plan(project_npmrc, user_npmrc, lockfile) {
1143
- const packages = scoped_packages(lockfile);
1144
- const blocked = [];
1145
- if (has_duplicate_mapping(project_npmrc, user_npmrc)) blocked.push("duplicate registry mappings");
1146
- const unsupported = unsupported_registry(project_npmrc);
1147
- if (unsupported !== void 0) blocked.push(unsupported);
1148
- const before = previous_registry(project_npmrc, user_npmrc);
1149
- const change = `${before} \u2192 ${PUBLIC_REGISTRY}`;
1150
- return { content: replace_mapping(project_npmrc), packages, blocked, change };
1151
- }
1152
- var migrate_logic = {
1153
- plan,
1154
- github_tarballs,
1155
- is_github_tarball,
1156
- rewrite_scoped_lockfile,
1157
- scoped_versions
1158
- };
1159
-
1160
1054
  // scripts/version/npm-registry.ts
1161
1055
  import { execaSync as execaSync2 } from "execa";
1162
1056
  import semver3 from "semver";
1163
- import { z as z5 } from "zod";
1164
- var PUBLIC_REGISTRY2 = "https://registry.npmjs.org";
1057
+ import { z as z4 } from "zod";
1058
+ var PUBLIC_REGISTRY = "https://registry.npmjs.org";
1165
1059
  var ABBREVIATED_ACCEPT = "application/vnd.npm.install-v1+json";
1166
1060
  var FULL_ACCEPT = "application/json";
1167
1061
  var SCOPE_SEPARATOR = "/";
1168
1062
  var ENCODED_SCOPE_SEPARATOR = "%2f";
1169
1063
  var SCOPE_PATTERN = /^@[^/]+(?=\/)/u;
1170
1064
  var SCOPE_REGISTRY_SUFFIX = ":registry";
1065
+ var GITHUB_REGISTRY_HOST = "npm.pkg.github.com";
1066
+ var PNPM = "pnpm";
1067
+ var JSON_FLAG = "--json";
1068
+ var FAILURE_EXIT_CODE = 1;
1171
1069
  var github_scopes = /* @__PURE__ */ new Map();
1172
1070
  var FETCH_SCRIPT = [
1173
1071
  "const [url, accept] = process.argv.slice(1)",
@@ -1175,11 +1073,11 @@ var FETCH_SCRIPT = [
1175
1073
  "if (!response.ok) process.exit(1)",
1176
1074
  "process.stdout.write(await response.text())"
1177
1075
  ].join("\n");
1178
- var version_schema = z5.string().refine((value) => semver3.valid(value) === value);
1179
- var latest_schema = z5.looseObject({ "dist-tags": z5.looseObject({ latest: version_schema }) });
1180
- var times_schema = z5.looseObject({ time: release_age.release_times_schema });
1076
+ var version_schema = z4.string().refine((value) => semver3.valid(value) === value);
1077
+ var latest_schema = z4.looseObject({ "dist-tags": z4.looseObject({ latest: version_schema }) });
1078
+ var times_schema = z4.looseObject({ time: release_age.release_times_schema });
1181
1079
  function packument_url(package_name) {
1182
- return `${PUBLIC_REGISTRY2}/${package_name.replace(SCOPE_SEPARATOR, () => ENCODED_SCOPE_SEPARATOR)}`;
1080
+ return `${PUBLIC_REGISTRY}/${package_name.replace(SCOPE_SEPARATOR, () => ENCODED_SCOPE_SEPARATOR)}`;
1183
1081
  }
1184
1082
  function read_packument(package_name, accept) {
1185
1083
  const result = execaSync2(
@@ -1190,14 +1088,22 @@ function read_packument(package_name, accept) {
1190
1088
  if (result.exitCode !== 0) return void 0;
1191
1089
  return json_value.parse_or_undefined(result.stdout);
1192
1090
  }
1091
+ function is_github_registry(value) {
1092
+ try {
1093
+ const url = new URL(value);
1094
+ return url.protocol === "https:" && url.hostname === GITHUB_REGISTRY_HOST;
1095
+ } catch {
1096
+ return false;
1097
+ }
1098
+ }
1193
1099
  function is_github_scope(scope) {
1194
1100
  const is_cached_github = github_scopes.get(scope);
1195
1101
  if (is_cached_github !== void 0) return is_cached_github;
1196
- const result = execaSync2("pnpm", ["config", "get", `${scope}${SCOPE_REGISTRY_SUFFIX}`], {
1102
+ const result = execaSync2(PNPM, ["config", "get", `${scope}${SCOPE_REGISTRY_SUFFIX}`], {
1197
1103
  reject: false,
1198
1104
  timeout: FETCH_TIMEOUT_MS
1199
1105
  });
1200
- const is_github = result.exitCode === 0 && migrate_logic.is_github_tarball(result.stdout.trim());
1106
+ const is_github = result.exitCode === 0 && is_github_registry(result.stdout.trim());
1201
1107
  github_scopes.set(scope, is_github);
1202
1108
  return is_github;
1203
1109
  }
@@ -1219,6 +1125,14 @@ function has_public_version(package_name, version) {
1219
1125
  const parsed = times_schema.safeParse(read_packument(package_name, FULL_ACCEPT));
1220
1126
  return parsed.success && parsed.data.time[version] !== void 0;
1221
1127
  }
1128
+ function view(spec, field, format = "text") {
1129
+ const format_arguments = format === "json" ? [JSON_FLAG] : [];
1130
+ const result = execaSync2(PNPM, ["view", spec, field, ...format_arguments], {
1131
+ reject: false,
1132
+ timeout: COMMAND_TIMEOUT_MS
1133
+ });
1134
+ return { exit_code: result.exitCode ?? FAILURE_EXIT_CODE, stdout: result.stdout };
1135
+ }
1222
1136
  function valid_version(value) {
1223
1137
  return version_schema.safeParse(value).success ? value : void 0;
1224
1138
  }
@@ -1227,7 +1141,8 @@ var npm_registry = {
1227
1141
  packument_url,
1228
1142
  read_latest,
1229
1143
  read_release_times,
1230
- valid_version
1144
+ valid_version,
1145
+ view
1231
1146
  };
1232
1147
 
1233
1148
  // scripts/version/version-remote.ts
@@ -1284,38 +1199,9 @@ function fetch_release_times(versions_endpoint, package_name) {
1284
1199
  }
1285
1200
 
1286
1201
  // scripts/version/version-targets.ts
1287
- import path5 from "node:path";
1288
-
1289
- // scripts/lib/read-file.ts
1290
- import { readFileSync as readFileSync4 } from "node:fs";
1291
- var ABSENT_CODE = "ENOENT";
1292
- function is_absent(error) {
1293
- return error instanceof Error && "code" in error && error.code === ABSENT_CODE;
1294
- }
1295
- function read_optional(path6) {
1296
- try {
1297
- return readFileSync4(path6, "utf8");
1298
- } catch (error) {
1299
- if (is_absent(error)) return void 0;
1300
- throw error;
1301
- }
1302
- }
1303
- function read_file_or_empty(path6) {
1304
- return read_optional(path6) ?? "";
1305
- }
1306
- function read_if_readable(path6) {
1307
- try {
1308
- return readFileSync4(path6, "utf8");
1309
- } catch {
1310
- return void 0;
1311
- }
1312
- }
1313
- var file_reader = { read_optional, read_file_or_empty, read_if_readable };
1314
-
1315
- // scripts/version/version-targets.ts
1202
+ import path6 from "node:path";
1316
1203
  import { execaSync as execaSync3 } from "execa";
1317
1204
  var NODE_MODULES2 = "node_modules";
1318
- var PACKAGE_JSON3 = "package.json";
1319
1205
  function build_pnpm_ls_arguments(package_name) {
1320
1206
  return ["ls", "-g", "--json", package_name];
1321
1207
  }
@@ -1324,44 +1210,27 @@ function parse_global_version(stdout, package_name) {
1324
1210
  if (!parsed.success) return void 0;
1325
1211
  return parsed.data[0]?.dependencies?.[package_name]?.version;
1326
1212
  }
1327
- function parse_project_version(raw) {
1328
- if (raw === void 0) return void 0;
1329
- const parsed = package_version_schema.safeParse(json_value.parse_or_undefined(raw));
1330
- return parsed.success ? parsed.data.version : void 0;
1331
- }
1332
1213
  function read_global_version(package_name) {
1333
1214
  const result = execaSync3("pnpm", build_pnpm_ls_arguments(package_name), { reject: false });
1334
1215
  return parse_global_version(result.stdout, package_name);
1335
1216
  }
1336
- function project_package_path(cwd, package_name) {
1337
- return path5.join(cwd, NODE_MODULES2, package_name, PACKAGE_JSON3);
1338
- }
1339
1217
  function read_project_version(cwd, package_name) {
1340
- const package_path = project_package_path(cwd, package_name);
1341
- const raw = file_reader.read_optional(package_path);
1342
- return parse_project_version(raw);
1218
+ const package_directory = path6.join(cwd, NODE_MODULES2, package_name);
1219
+ return package_manifest.read_manifest_if_valid(package_directory, package_version_schema)?.version;
1343
1220
  }
1344
1221
  function read_workspace_version(cwd) {
1345
- const package_path = path5.join(cwd, PACKAGE_JSON3);
1346
- const raw = file_reader.read_optional(package_path);
1347
- return parse_project_version(raw);
1222
+ return package_manifest.read_manifest_if_valid(cwd, package_version_schema)?.version;
1348
1223
  }
1349
1224
  var version_targets = {
1350
1225
  build_pnpm_ls_arguments,
1351
1226
  parse_global_version,
1352
- parse_project_version,
1353
1227
  read_global_version,
1354
1228
  read_project_version,
1355
- project_package_path,
1356
- read_workspace_version,
1357
- // The manifest's filename. Exported rather than re-declared in each of `josh release`'s two
1358
- // halves: the module that already owns "where the project's manifest is"
1359
- // is where the name belongs.
1360
- PACKAGE_JSON: PACKAGE_JSON3
1229
+ read_workspace_version
1361
1230
  };
1362
1231
 
1363
1232
  // scripts/version/version-commands.ts
1364
- var FAILURE_EXIT_CODE = 1;
1233
+ var FAILURE_EXIT_CODE2 = 1;
1365
1234
  var ALREADY_UP_TO_DATE = "Already up to date";
1366
1235
  var NO_QUARANTINE_MINUTES2 = 0;
1367
1236
  function read_release_hold(package_config, latest, versions) {
@@ -1455,7 +1324,7 @@ function run_upgrade_step(step) {
1455
1324
  reject: false,
1456
1325
  timeout: INSTALL_TIMEOUT_MS
1457
1326
  });
1458
- return result.exitCode ?? FAILURE_EXIT_CODE;
1327
+ return result.exitCode ?? FAILURE_EXIT_CODE2;
1459
1328
  }
1460
1329
  function run_upgrade_command(command) {
1461
1330
  for (const step of command.steps) {