@joshuafolkken/kit 1.1050.0 → 1.1128.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 (630) hide show
  1. package/.claude/settings.json +9 -8
  2. package/.claude/skills/epic-commands/SKILL.md +5 -7
  3. package/.claude/skills/workflow-commands/SKILL.md +20 -12
  4. package/.claude/skills/workflow-commands/background-commands.md +36 -84
  5. package/.claude/skills/workflow-commands/backlogrun-child.md +1 -1
  6. package/.claude/skills/workflow-commands/backlogrun-lanes.md +8 -6
  7. package/.claude/skills/workflow-commands/backlogrun-progress.md +30 -33
  8. package/.claude/skills/workflow-commands/backlogrun-steps.md +12 -12
  9. package/.claude/skills/workflow-commands/backlogrun.md +2 -2
  10. package/.claude/skills/workflow-commands/chain-rule.md +4 -2
  11. package/.claude/skills/workflow-commands/delegation.md +3 -3
  12. package/.claude/skills/workflow-commands/followup-reference.md +1 -1
  13. package/.claude/skills/workflow-commands/followup.md +7 -3
  14. package/.claude/skills/workflow-commands/fullrun-steps.md +3 -2
  15. package/.claude/skills/workflow-commands/fullrun.md +8 -6
  16. package/.claude/skills/workflow-commands/halfrun.md +19 -21
  17. package/.claude/skills/workflow-commands/issue-comments.md +1 -1
  18. package/.claude/skills/workflow-commands/issue-fold-existing.md +10 -10
  19. package/.claude/skills/workflow-commands/issue-scout.md +1 -1
  20. package/.claude/skills/workflow-commands/kickoff.md +9 -4
  21. package/.claude/skills/workflow-commands/latest-gate.md +8 -16
  22. package/.claude/skills/workflow-commands/needs-human-review.md +1 -1
  23. package/.claude/skills/workflow-commands/observation-filing.md +3 -3
  24. package/.claude/skills/workflow-commands/pre-gate-cut.md +4 -8
  25. package/.claude/skills/workflow-commands/prerequisite.md +1 -1
  26. package/.claude/skills/workflow-commands/prrun.md +36 -0
  27. package/.claude/skills/workflow-commands/retrospective.md +1 -1
  28. package/.claude/skills/workflow-commands/split-assessment.md +4 -18
  29. package/.claude/skills/workflow-commands/working-tree-hold.md +22 -2
  30. package/.codex/hooks.json +16 -20
  31. package/.github/actions/setup-node/action.yml +33 -0
  32. package/.github/actions/setup-pnpm/action.yml +93 -0
  33. package/.github/dependabot.yml +5 -1
  34. package/.github/workflows/auto-tag.yml +2 -3
  35. package/.github/workflows/ci.yml +31 -134
  36. package/.github/workflows/dependabot-auto-merge.yml +1 -0
  37. package/.github/workflows/pr-classification.yml +6 -44
  38. package/.github/workflows/production.yml +1 -0
  39. package/.github/workflows/publish.yml +43 -47
  40. package/.github/workflows/sonar-qube.yml +41 -4
  41. package/.pnpmfile.mjs +29 -0
  42. package/AGENTS.md +5 -2
  43. package/CLAUDE.md +33 -27
  44. package/GEMINI.md +5 -2
  45. package/README.md +66 -20
  46. package/SECURITY.md +37 -6
  47. package/cspell/index.yaml +6 -1
  48. package/dist/CLAUDE.basic.md +6 -6
  49. package/dist/CLAUDE.md +33 -27
  50. package/dist/CLAUDE.static.md +6 -6
  51. package/dist/config-merge/index.js +48 -12
  52. package/dist/hooks/batch-guard.js +4 -4
  53. package/dist/hooks/{chunk-7VPDUBRN.js → chunk-4JZDP5X5.js} +152 -155
  54. package/dist/hooks/{chunk-HJIISEAC.js → chunk-5SD2YM7Z.js} +5 -13
  55. package/dist/hooks/{chunk-NAS4C7GP.js → chunk-77J7IEQM.js} +2 -2
  56. package/dist/hooks/{chunk-DMQN45FN.js → chunk-7HVB7SZG.js} +3 -3
  57. package/dist/hooks/{chunk-RLDX5SOC.js → chunk-AIOIOMPX.js} +4413 -1970
  58. package/dist/hooks/{chunk-5BK3K7V4.js → chunk-M7QKEKWO.js} +873 -2049
  59. package/dist/hooks/{chunk-WQ4OSBSS.js → chunk-MKVGBQPA.js} +2 -2
  60. package/dist/hooks/{chunk-EJDX2TOB.js → chunk-NXYMNPUQ.js} +7 -88
  61. package/dist/hooks/{chunk-NJQOBE6L.js → chunk-QVLT52OV.js} +2 -7
  62. package/dist/hooks/{chunk-GQ7KP45M.js → chunk-XYUIQOW3.js} +2 -2
  63. package/dist/hooks/codex-hook-adapter.js +12 -48
  64. package/dist/hooks/duplicate-read-guard.js +5 -5
  65. package/dist/hooks/format-edited.js +2 -2
  66. package/dist/hooks/inputs.json +280 -0
  67. package/dist/hooks/investigation-guard.js +5 -5
  68. package/dist/hooks/pretool-guard.js +9 -9
  69. package/dist/hooks/session-lang.js +0 -1
  70. package/dist/hooks/stop-guard.js +192 -333
  71. package/dist/josh.js +240 -148
  72. package/dist/managed-marker/index.js +2 -1
  73. package/dist/version/index.js +70 -78
  74. package/eslint/rules/promise.js +5 -0
  75. package/eslint/rules/unicorn.js +3 -2
  76. package/package.json +26 -5
  77. package/pnpm-workspace.yaml +5 -7
  78. package/prompts/collaboration-workflow/glossary.md +17 -0
  79. package/prompts/collaboration-workflow/issue-citation.md +5 -5
  80. package/prompts/collaboration-workflow/issue-template.md +1 -1
  81. package/prompts/collaboration-workflow/operating-rules.md +5 -5
  82. package/prompts/collaboration-workflow/overview.md +13 -1
  83. package/prompts/collaboration-workflow/principles.md +9 -0
  84. package/prompts/collaboration-workflow/report-format.md +1 -1
  85. package/prompts/collaboration-workflow/residency.md +3 -3
  86. package/prompts/collaboration-workflow/rule-delivery.md +1 -1
  87. package/prompts/collaboration-workflow/turn-batching.md +3 -3
  88. package/prompts/collaboration-workflow/upstream-interrupt.md +1 -1
  89. package/prompts/collaboration-workflow/wip-cap.md +25 -22
  90. package/prompts/collaboration-workflow.md +6 -8
  91. package/prompts/review-rubric.md +1 -1
  92. package/prompts/review.md +3 -3
  93. package/prompts/sonar-hotspot-handling.md +11 -3
  94. package/prompts/testing-guide.md +3 -3
  95. package/scripts/adopt/adopt-toolkits.ts +0 -2
  96. package/scripts/adopt/adopt.ts +0 -2
  97. package/scripts/agent/agent-argv.ts +0 -2
  98. package/scripts/agent/agent-diagnostics.ts +1 -1
  99. package/scripts/agent/agent-role-profile.ts +0 -7
  100. package/scripts/agent/claude-agent-argv.ts +0 -2
  101. package/scripts/agent/codex-agent-argv.ts +1 -1
  102. package/scripts/agent/codex-hooks.ts +92 -0
  103. package/scripts/agent/interactive-ask.ts +1 -1
  104. package/scripts/auto-ok/auto-ok-cli.ts +6 -16
  105. package/scripts/backlog/backlog-arrival.ts +30 -10
  106. package/scripts/backlog/backlog-budget-cli.ts +15 -16
  107. package/scripts/backlog/backlog-budget.ts +0 -2
  108. package/scripts/backlog/backlog-defect-priority.ts +2 -2
  109. package/scripts/backlog/backlog-drive-cli.ts +10 -8
  110. package/scripts/backlog/backlog-drive-named-offer.ts +16 -3
  111. package/scripts/backlog/backlog-drive-named.ts +2 -1
  112. package/scripts/backlog/backlog-drive.ts +76 -16
  113. package/scripts/backlog/backlog-named.ts +0 -3
  114. package/scripts/backlog/backlog-next.ts +9 -15
  115. package/scripts/backlog/backlog-offer-cli.ts +6 -19
  116. package/scripts/backlog/backlog-plan-cli.ts +1 -7
  117. package/scripts/backlog/backlog-plan.ts +30 -19
  118. package/scripts/backlog/backlog-pool.ts +3 -6
  119. package/scripts/backlog/backlog-rank.ts +2 -2
  120. package/scripts/backlog/backlog-ready.ts +39 -10
  121. package/scripts/backlog/backlog-scope.ts +1 -3
  122. package/scripts/backlog/backlog-stalled-detect.ts +2 -2
  123. package/scripts/backlog/backlog-stalled.ts +0 -1
  124. package/scripts/backlog/backlog-waves.ts +5 -2
  125. package/scripts/behavior/behavior-cli.ts +1 -1
  126. package/scripts/build/build-codex-hooks.ts +26 -0
  127. package/scripts/build/build-hooks.ts +85 -9
  128. package/scripts/build/hook-bundle-stamp.ts +111 -0
  129. package/scripts/cases/cases-cli.ts +1 -1
  130. package/scripts/cases/cases-logic.ts +1 -1
  131. package/scripts/ci/composite-actions.ts +30 -0
  132. package/scripts/ci/pr-classification.ts +3 -3
  133. package/scripts/claude/workflow-destination.ts +10 -1
  134. package/scripts/clone/clone-fingerprint.ts +0 -1
  135. package/scripts/clone/clone-scan-cli.ts +1 -1
  136. package/scripts/clone/clone-scan.ts +1 -1
  137. package/scripts/config-merge/json-format.ts +0 -1
  138. package/scripts/config-merge/parse-jsonc.ts +33 -3
  139. package/scripts/config-merge/patch-json-key.ts +13 -6
  140. package/scripts/config-merge/patch-yaml-list.ts +1 -1
  141. package/scripts/cost-runtime/codex-usage.ts +2 -9
  142. package/scripts/cost-runtime/cost-attribute.ts +0 -1
  143. package/scripts/cost-runtime/cost-cli.ts +3 -10
  144. package/scripts/cost-runtime/cost-corpus.ts +0 -2
  145. package/scripts/cost-runtime/cost-format.ts +0 -3
  146. package/scripts/cost-runtime/cost-pricing.ts +0 -1
  147. package/scripts/cost-runtime/cost-tokens.ts +0 -1
  148. package/scripts/delegation/delegation-cli.ts +1 -1
  149. package/scripts/delegation/delegation-policy.ts +0 -1
  150. package/scripts/delegation/duplicate-read-guard.ts +0 -8
  151. package/scripts/delegation/fanout-cli.ts +1 -1
  152. package/scripts/delegation/fanout.ts +0 -2
  153. package/scripts/delegation/investigation-reads.ts +1 -164
  154. package/scripts/discovery/repo-map-logic.ts +0 -1
  155. package/scripts/discovery/repo-party-cli.ts +1 -1
  156. package/scripts/doctor/doctor-consumer.ts +6 -10
  157. package/scripts/doctor/doctor-io.ts +9 -13
  158. package/scripts/doctor/doctor-logic.ts +0 -4
  159. package/scripts/doctor/doctor.ts +14 -9
  160. package/scripts/document/backlogrun-parent-read-set.ts +12 -1
  161. package/scripts/document/document-byte-budget.ts +5 -5
  162. package/scripts/document/document-byte-check.ts +0 -1
  163. package/scripts/document/document-read-cli.ts +0 -2
  164. package/scripts/document/document-section-cli.ts +1 -1
  165. package/scripts/document/document-section.ts +0 -3
  166. package/scripts/document/edit-files-cli.ts +0 -1
  167. package/scripts/document/entry-read-budget.ts +21 -7
  168. package/scripts/document/entry-read-set.ts +32 -8
  169. package/scripts/document/lane-child-read-set.ts +8 -6
  170. package/scripts/document/read-files-cli.ts +0 -4
  171. package/scripts/document/read-set-cli.ts +0 -2
  172. package/scripts/document/read-set-point-of-use.ts +9 -3
  173. package/scripts/document/read-set-pricing.ts +0 -1
  174. package/scripts/document/read-set-trim.ts +4 -2
  175. package/scripts/epic/epic-add.ts +1 -1
  176. package/scripts/epic/epic-audit-cli.ts +1 -4
  177. package/scripts/epic/epic-audit-orphans.ts +1 -3
  178. package/scripts/epic/epic-audit-rationale.ts +0 -1
  179. package/scripts/epic/epic-audit-report.ts +0 -2
  180. package/scripts/epic/epic-audit.ts +8 -22
  181. package/scripts/epic/epic-bundle-cli.ts +1 -1
  182. package/scripts/epic/epic-bundle-evidence.ts +0 -1
  183. package/scripts/epic/epic-bundle-referenced.ts +1 -5
  184. package/scripts/epic/epic-bundle.ts +0 -4
  185. package/scripts/epic/epic-busy.ts +4 -5
  186. package/scripts/epic/epic-candidate-confirm.ts +0 -5
  187. package/scripts/epic/epic-classify.ts +2 -2
  188. package/scripts/epic/epic-cli-argv.ts +0 -1
  189. package/scripts/epic/epic-close-comment.ts +1 -1
  190. package/scripts/epic/epic-close.ts +5 -2
  191. package/scripts/epic/epic-cross-repo.ts +2 -4
  192. package/scripts/epic/epic-decision.ts +0 -1
  193. package/scripts/epic/epic-fetch.ts +2 -2
  194. package/scripts/epic/epic-index.ts +2 -3
  195. package/scripts/epic/epic-issue.ts +1 -15
  196. package/scripts/epic/epic-lane-offer.ts +9 -8
  197. package/scripts/epic/epic-nested.ts +1 -1
  198. package/scripts/epic/epic-next-read.ts +1 -3
  199. package/scripts/epic/epic-next-views.ts +0 -1
  200. package/scripts/epic/epic-next.ts +1 -10
  201. package/scripts/epic/epic-parse.ts +0 -1
  202. package/scripts/epic/epic-promote.ts +0 -9
  203. package/scripts/epic/epic-rank.ts +2 -2
  204. package/scripts/epic/epic-read.ts +1 -2
  205. package/scripts/epic/epic-reconcile.ts +1 -1
  206. package/scripts/epic/epic-reference.ts +1 -13
  207. package/scripts/epic/epic-relation-recheck.ts +1 -1
  208. package/scripts/epic/epic-relations.ts +1 -1
  209. package/scripts/epic/epic-remove.ts +1 -1
  210. package/scripts/epic/epic-report.ts +0 -1
  211. package/scripts/epic/epic-run.ts +2 -3
  212. package/scripts/epic/epic-shape.ts +1 -1
  213. package/scripts/epic/epic-solo-stale.ts +107 -0
  214. package/scripts/epic/epic-solo.ts +3 -2
  215. package/scripts/epic/epic-triage.ts +1 -1
  216. package/scripts/epic/epic-validate.ts +1 -1
  217. package/scripts/epic/epic.ts +1 -1
  218. package/scripts/exports/unused-members-cli.ts +53 -0
  219. package/scripts/{git → followup}/followup-issue-number.ts +1 -6
  220. package/scripts/{git → followup}/git-followup-cleanup.ts +2 -1
  221. package/scripts/{git → followup}/git-followup-finish.ts +1 -3
  222. package/scripts/{git → followup}/git-followup-flush.ts +2 -2
  223. package/scripts/{git → followup}/git-followup-issue-close.ts +2 -2
  224. package/scripts/{git → followup}/git-followup-label.ts +4 -4
  225. package/scripts/followup/git-followup-merged.ts +112 -0
  226. package/scripts/{git → followup}/git-followup-pending.ts +1 -1
  227. package/scripts/{git → followup}/git-followup-workflow.ts +19 -11
  228. package/scripts/{git → followup}/git-pr-followup-wrapup.ts +9 -3
  229. package/scripts/{git → followup}/git-pr-followup.ts +53 -16
  230. package/scripts/gate/core-budget.ts +3 -9
  231. package/scripts/gate/gate-plan.ts +7 -4
  232. package/scripts/gate/gate-report.ts +0 -6
  233. package/scripts/gate/gate-tree.ts +1 -1
  234. package/scripts/gate/pre-commit-type-check.ts +0 -6
  235. package/scripts/gate/project-checks.ts +7 -8
  236. package/scripts/gate/scoped-green.ts +0 -1
  237. package/scripts/gate/type-check-step.ts +1 -1
  238. package/scripts/gate/verification-gate.ts +0 -2
  239. package/scripts/gh/fix-gh-packages.ts +15 -12
  240. package/scripts/gh/gh-spawn.ts +2 -2
  241. package/scripts/{git → gh}/git-ai-review-scan.ts +1 -5
  242. package/scripts/{git → gh}/git-gh-check.ts +2 -1
  243. package/scripts/{git → gh}/git-gh-exec.ts +1 -1
  244. package/scripts/{git → gh}/git-gh-failure.ts +1 -1
  245. package/scripts/{git → gh}/git-gh-helpers.ts +0 -1
  246. package/scripts/{git → gh}/git-gh-issue-list.ts +13 -10
  247. package/scripts/{git → gh}/git-gh-issue-read.ts +1 -1
  248. package/scripts/{git → gh}/git-gh-issue-rest.ts +6 -3
  249. package/scripts/{git → gh}/git-gh-issue-write.ts +4 -1
  250. package/scripts/{git → gh}/git-gh-pr-auto-merge.ts +4 -1
  251. package/scripts/{git → gh}/git-gh-pr-read.ts +24 -0
  252. package/scripts/{git → gh}/git-gh-pr-rest.ts +5 -2
  253. package/scripts/{git → gh}/git-gh-pr-review.ts +2 -2
  254. package/scripts/{git → gh}/git-gh-pr-rollup.ts +1 -3
  255. package/scripts/{git → gh}/git-gh-pr.ts +3 -1
  256. package/scripts/{git → gh}/git-pr-ai-review.ts +2 -5
  257. package/scripts/{git → gh}/git-pr-checks-eval.ts +0 -10
  258. package/scripts/{git → gh}/git-pr-checks-parse.ts +4 -20
  259. package/scripts/{git → gh}/git-pr-checks.ts +2 -1
  260. package/scripts/{git → gh}/git-pr-coderabbit.ts +2 -5
  261. package/scripts/{git → gh}/git-pr-confirmation.ts +1 -3
  262. package/scripts/{git → gh}/git-pr-managed-config.ts +2 -3
  263. package/scripts/{git → gh}/git-pr.ts +3 -3
  264. package/scripts/git/changed-file-scope.ts +0 -1
  265. package/scripts/git/git-branch.ts +3 -6
  266. package/scripts/git/git-command.ts +6 -1
  267. package/scripts/git/git-commit.ts +1 -1
  268. package/scripts/git/git-common-directory.ts +80 -24
  269. package/scripts/git/git-error.ts +66 -9
  270. package/scripts/git/git-issue.ts +1 -1
  271. package/scripts/git/git-preflight.ts +2 -2
  272. package/scripts/git/git-prompt.ts +6 -31
  273. package/scripts/git/git-push.ts +1 -1
  274. package/scripts/git/git-spawn-sync.ts +65 -0
  275. package/scripts/git/git-spawn.ts +5 -4
  276. package/scripts/git/git-staging.ts +1 -0
  277. package/scripts/git/git-status.ts +1 -1
  278. package/scripts/git/git-workflow.ts +1 -1
  279. package/scripts/git/gone-branch.ts +1 -0
  280. package/scripts/git/listing-cutoff.ts +1 -1
  281. package/scripts/git/main-merge.ts +1 -1
  282. package/scripts/git/main-sync.ts +19 -1
  283. package/scripts/git/parse-json-array.ts +0 -3
  284. package/scripts/git/repository-lock.ts +16 -16
  285. package/scripts/git/{git-stash.ts → stash/git-stash.ts} +1 -1
  286. package/scripts/git/{stash-pop-args.ts → stash/stash-pop-args.ts} +2 -7
  287. package/scripts/git/{stash-pop-cli.ts → stash/stash-pop-cli.ts} +0 -1
  288. package/scripts/git/{stash-sweep-lock.ts → stash/stash-sweep-lock.ts} +3 -3
  289. package/scripts/hooks/codex-hook-adapter.ts +0 -1
  290. package/scripts/hooks/edited-cspell.ts +1 -1
  291. package/scripts/hooks/format-edited-file.ts +2 -0
  292. package/scripts/hooks/pre-push-unit.ts +0 -4
  293. package/scripts/hooks/pretool-guard.ts +22 -4
  294. package/scripts/hooks/reserved-run.ts +1 -1
  295. package/scripts/hooks/step-zero-notice.ts +76 -0
  296. package/scripts/hooks/stop-guard.ts +47 -21
  297. package/scripts/init/claude-plugin-config.ts +4 -5
  298. package/scripts/init/hook-command-rewrite.ts +16 -8
  299. package/scripts/init/hook-launch.ts +41 -15
  300. package/scripts/init/init-basic.ts +2 -5
  301. package/scripts/init/init-file-action.ts +54 -0
  302. package/scripts/init/init-logic-migrate.ts +35 -17
  303. package/scripts/init/init-logic-secretlint.ts +1 -1
  304. package/scripts/init/init-logic.ts +10 -19
  305. package/scripts/init/init.ts +11 -71
  306. package/scripts/init/kit-written-paths.ts +2 -0
  307. package/scripts/init/project-profile.ts +9 -17
  308. package/scripts/init/start-exec.ts +1 -1
  309. package/scripts/init/start-setup-pr.ts +6 -6
  310. package/scripts/init/start-steps.ts +3 -1
  311. package/scripts/issue/behavior-change-lint.ts +0 -1
  312. package/scripts/issue/defect-rate-cli.ts +64 -23
  313. package/scripts/issue/defect-rate.ts +1 -2
  314. package/scripts/{git → issue}/git-next-issues.ts +3 -3
  315. package/scripts/issue/issue-backlinks-cli.ts +1 -5
  316. package/scripts/issue/issue-backlinks.ts +7 -14
  317. package/scripts/issue/issue-cite-cli.ts +2 -6
  318. package/scripts/issue/issue-cite.ts +12 -8
  319. package/scripts/issue/issue-classification.ts +1 -9
  320. package/scripts/issue/issue-closing-pr.ts +4 -4
  321. package/scripts/issue/issue-comment-cli.ts +2 -2
  322. package/scripts/issue/issue-file-cli.ts +5 -5
  323. package/scripts/issue/issue-file.ts +7 -14
  324. package/scripts/issue/issue-fold-cli.ts +1 -1
  325. package/scripts/issue/issue-fold-existing-cli.ts +1 -1
  326. package/scripts/{git → issue}/issue-labels.ts +8 -0
  327. package/scripts/issue/issue-lint-cli.ts +1 -1
  328. package/scripts/issue/issue-merged.ts +2 -2
  329. package/scripts/{git → issue}/issue-rank.ts +1 -1
  330. package/scripts/issue/issue-read-cli.ts +8 -47
  331. package/scripts/issue/issue-read.ts +0 -2
  332. package/scripts/issue/issue-report-failures.ts +80 -0
  333. package/scripts/issue/issue-scout-cli.ts +1 -7
  334. package/scripts/issue/issue-scout-closed.ts +2 -2
  335. package/scripts/issue/issue-scout.ts +0 -2
  336. package/scripts/issue/issue-state-cli.ts +5 -46
  337. package/scripts/issue/issue-state.ts +1 -5
  338. package/scripts/issue/markdown-section.ts +21 -6
  339. package/scripts/issue/measure-rerun-cli.ts +74 -15
  340. package/scripts/issue/reproduction-measure.ts +1 -1
  341. package/scripts/josh/cli-body.ts +1 -1
  342. package/scripts/josh/file-map-stamp.ts +0 -3
  343. package/scripts/josh/josh-command-map.ts +2 -0
  344. package/scripts/josh/josh-commands-ai.ts +9 -102
  345. package/scripts/josh/josh-commands-backlog.ts +5 -1
  346. package/scripts/josh/josh-commands-development.ts +8 -1
  347. package/scripts/josh/josh-commands-issue.ts +2 -2
  348. package/scripts/josh/josh-commands-maintenance.ts +7 -0
  349. package/scripts/josh/josh-commands-project.ts +7 -1
  350. package/scripts/josh/josh-commands-run.ts +114 -0
  351. package/scripts/josh/josh-commands-versioning.ts +8 -0
  352. package/scripts/josh/josh-commands-workflow.ts +3 -3
  353. package/scripts/josh/path-decision.ts +0 -3
  354. package/scripts/josh/process-owner.ts +16 -0
  355. package/scripts/josh/run-github-prerequisite.ts +3 -6
  356. package/scripts/josh/session-language-cli.ts +0 -1
  357. package/scripts/lane/lane-await.ts +46 -19
  358. package/scripts/lane/lane-capacity.ts +6 -3
  359. package/scripts/lane/lane-child-invocation.ts +20 -7
  360. package/scripts/lane/lane-cli.ts +1 -4
  361. package/scripts/lane/lane-close.ts +5 -4
  362. package/scripts/lane/lane-dispatch.ts +3 -4
  363. package/scripts/lane/lane-environment.ts +0 -9
  364. package/scripts/lane/lane-handoff.ts +38 -0
  365. package/scripts/lane/lane-launch-cli.ts +31 -27
  366. package/scripts/lane/lane-open.ts +0 -3
  367. package/scripts/lane/lane-output.ts +0 -1
  368. package/scripts/lane/lane-registry.ts +9 -0
  369. package/scripts/lane/openai-lane-ship.ts +2 -0
  370. package/scripts/lane/openai-lane-supervisor-decision.ts +2 -1
  371. package/scripts/lane/openai-lane-supervisor.ts +6 -4
  372. package/scripts/lane/openai-review-broker.ts +7 -1
  373. package/scripts/lib/bounded-pool.ts +1 -0
  374. package/scripts/lib/cli-flags.ts +31 -2
  375. package/scripts/lib/error-message.ts +12 -1
  376. package/scripts/lib/json-value.ts +5 -4
  377. package/scripts/lib/poll.ts +3 -1
  378. package/scripts/lib/timed-fetch.ts +15 -0
  379. package/scripts/lib/timeouts.ts +13 -0
  380. package/scripts/{yaml → lib}/yaml-document.ts +3 -1
  381. package/scripts/{bytes → lines}/bytes-command.ts +0 -2
  382. package/scripts/lines/line-targets.ts +0 -11
  383. package/scripts/lines/lines-command.ts +5 -4
  384. package/scripts/lint/lint-related-scope.ts +0 -1
  385. package/scripts/lint/lint-related.ts +1 -1
  386. package/scripts/{git → notify}/telegram-notify.ts +2 -2
  387. package/scripts/{git → notify}/telegram-test.ts +4 -4
  388. package/scripts/observations/observation-ledger-home.ts +0 -1
  389. package/scripts/observations/observation-ledger-line.ts +0 -1
  390. package/scripts/observations/observation-ledger-migrate.ts +1 -1
  391. package/scripts/observations/observations-flush-landing.ts +3 -3
  392. package/scripts/observations/observations-flush.ts +2 -2
  393. package/scripts/overrides/lockfile-overrides.ts +1 -1
  394. package/scripts/overrides/overrides-logic.ts +1 -1
  395. package/scripts/package/package-scout-cli.ts +2 -7
  396. package/scripts/package/package-scout.ts +0 -2
  397. package/scripts/propagate/propagate-git-failure.ts +0 -1
  398. package/scripts/propagate/propagate-git.ts +3 -10
  399. package/scripts/propagate/propagate-publish.ts +2 -3
  400. package/scripts/propagate/propagate-run.ts +0 -2
  401. package/scripts/propagate/propagate-steps.ts +3 -5
  402. package/scripts/propagate/propagate-targets.ts +0 -4
  403. package/scripts/propagate/propagate.ts +0 -4
  404. package/scripts/refactor/import-graph.ts +0 -1
  405. package/scripts/refactor/refactor-lint.ts +0 -2
  406. package/scripts/refactor/refactor-scan.ts +2 -2
  407. package/scripts/refactor/refactor-targets.ts +0 -1
  408. package/scripts/registry-migration/migrate-logic.ts +28 -21
  409. package/scripts/registry-migration/migrate.ts +25 -14
  410. package/scripts/release/github-release-cli.ts +19 -6
  411. package/scripts/release/github-release-environment.ts +46 -0
  412. package/scripts/release/github-release.ts +151 -94
  413. package/scripts/release/release-history.ts +0 -1
  414. package/scripts/release/release-plan.ts +0 -1
  415. package/scripts/release/release-publish.ts +38 -5
  416. package/scripts/release/release-scope-cli.ts +1 -2
  417. package/scripts/release/release-tag.ts +2 -4
  418. package/scripts/release/release-worktree.ts +97 -2
  419. package/scripts/repo/auto-merge-setting-logic.ts +1 -4
  420. package/scripts/repo/repo-setting.ts +1 -1
  421. package/scripts/repo/repository-labels.ts +3 -3
  422. package/scripts/repo/required-checks-logic.ts +206 -0
  423. package/scripts/repo/required-checks-report.ts +71 -0
  424. package/scripts/repo/ruleset-check-cli.ts +53 -0
  425. package/scripts/repo/ruleset-check.ts +147 -0
  426. package/scripts/report/report-lint-cli.ts +0 -4
  427. package/scripts/review/disposition-cli.ts +1 -1
  428. package/scripts/review/live-evidence.ts +1 -1
  429. package/scripts/review/review-attest-cli.ts +0 -6
  430. package/scripts/review/review-attest.ts +4 -16
  431. package/scripts/review/review-brief-cli.ts +23 -6
  432. package/scripts/review/review-brief.ts +21 -8
  433. package/scripts/review/review-checkout.ts +3 -2
  434. package/scripts/review/review-diff-parts.ts +89 -0
  435. package/scripts/review/review-diff-write.ts +97 -0
  436. package/scripts/review/review-finding-ledger.ts +0 -1
  437. package/scripts/review/review-record-cli.ts +10 -17
  438. package/scripts/review/review-record.ts +0 -1
  439. package/scripts/review/review-round2-cli.ts +1 -1
  440. package/scripts/review/review-stamps.ts +0 -3
  441. package/scripts/review/review-tree.ts +14 -2
  442. package/scripts/rules/decision-oracle-stage.ts +18 -0
  443. package/scripts/rules/decision-oracle.ts +10 -7
  444. package/scripts/rules/delivered-rules.ts +9 -1
  445. package/scripts/rules/destructive-command.ts +119 -0
  446. package/scripts/rules/direct-filing.ts +1 -1
  447. package/scripts/rules/early-heartbeat.ts +4 -3
  448. package/scripts/rules/file-body.ts +0 -3
  449. package/scripts/rules/filing-cap.ts +0 -2
  450. package/scripts/rules/gh-api.ts +7 -2
  451. package/scripts/rules/git-argv.ts +18 -7
  452. package/scripts/rules/git-force.ts +0 -2
  453. package/scripts/rules/implementation-cut.ts +0 -1
  454. package/scripts/rules/index-guard.ts +71 -0
  455. package/scripts/rules/issue-citation.ts +50 -25
  456. package/scripts/rules/lane-background.ts +15 -7
  457. package/scripts/rules/lane-park.ts +22 -6
  458. package/scripts/rules/last-prompt.ts +1 -0
  459. package/scripts/rules/oracle-consulted.ts +1 -1
  460. package/scripts/rules/oracle-firing.ts +1 -0
  461. package/scripts/rules/oracle-list-cli.ts +0 -3
  462. package/scripts/rules/permission-guards.ts +14 -0
  463. package/scripts/rules/protected-files.ts +74 -0
  464. package/scripts/rules/reply-language.ts +1 -1
  465. package/scripts/rules/rule-body-guard.ts +0 -3
  466. package/scripts/rules/rule-value-cli.ts +0 -1
  467. package/scripts/rules/shell-body-trigger.ts +0 -1
  468. package/scripts/rules/shell-segments.ts +0 -1
  469. package/scripts/rules/stop-rules.ts +20 -9
  470. package/scripts/rules/tail-commands.ts +1 -1
  471. package/scripts/rules/test-declared-commit.ts +1 -1
  472. package/scripts/rules/third-party-write.ts +0 -1
  473. package/scripts/rules/worktree-guard.ts +26 -9
  474. package/scripts/run/run-carry-args.ts +8 -12
  475. package/scripts/run/run-carry-cli.ts +0 -2
  476. package/scripts/run/run-carry-stash.ts +2 -2
  477. package/scripts/run/run-carry-streak.ts +1 -1
  478. package/scripts/run/run-cut-args.ts +1 -6
  479. package/scripts/run/run-cut-cli.ts +0 -7
  480. package/scripts/run/run-cut.ts +8 -54
  481. package/scripts/run/run-ending-cli.ts +2 -6
  482. package/scripts/run/run-ending.ts +1 -4
  483. package/scripts/run/run-entry-cli.ts +133 -25
  484. package/scripts/run/run-entry-stop.ts +104 -0
  485. package/scripts/run/run-entry.ts +0 -1
  486. package/scripts/run/run-event-cli.ts +0 -2
  487. package/scripts/run/run-event-follow.ts +1 -0
  488. package/scripts/run/run-event-render.ts +1 -1
  489. package/scripts/run/run-event-scope.ts +53 -4
  490. package/scripts/run/run-event-stream-emit.ts +7 -2
  491. package/scripts/run/run-event-stream.ts +0 -3
  492. package/scripts/run/run-event-watch.ts +1 -0
  493. package/scripts/run/run-halfrun-resume.ts +20 -7
  494. package/scripts/run/run-headless.ts +2 -2
  495. package/scripts/run/run-hold-cli.ts +33 -10
  496. package/scripts/run/run-hold.ts +29 -6
  497. package/scripts/run/run-issue-number.ts +1 -1
  498. package/scripts/run/run-liveness-cli.ts +2 -6
  499. package/scripts/run/run-liveness.ts +2 -3
  500. package/scripts/run/run-merge-cli.ts +7 -23
  501. package/scripts/run/run-merge-steps.ts +5 -5
  502. package/scripts/run/run-merge.ts +1 -1
  503. package/scripts/run/run-next-cli.ts +1 -1
  504. package/scripts/run/run-parent-cut-hook.ts +4 -2
  505. package/scripts/run/run-preflight.ts +2 -9
  506. package/scripts/run/run-prep-cli.ts +6 -3
  507. package/scripts/run/run-prep-locate.ts +1 -1
  508. package/scripts/run/run-progress-args.ts +20 -4
  509. package/scripts/run/run-progress-cli.ts +35 -36
  510. package/scripts/run/run-progress-clock.ts +10 -35
  511. package/scripts/run/run-progress-config.ts +0 -4
  512. package/scripts/run/run-progress-read.ts +1 -2
  513. package/scripts/run/run-progress.ts +1 -2
  514. package/scripts/run/run-prrun-resume.ts +117 -0
  515. package/scripts/run/run-report-cli.ts +1 -2
  516. package/scripts/run/run-report.ts +0 -1
  517. package/scripts/run/run-retrospective.ts +1 -1
  518. package/scripts/run/run-review-cli.ts +0 -3
  519. package/scripts/run/run-review-steps.ts +2 -0
  520. package/scripts/run/run-review.ts +0 -2
  521. package/scripts/run/run-ship-cli.ts +29 -19
  522. package/scripts/run/run-ship-detach.ts +1 -0
  523. package/scripts/run/run-ship-next.ts +106 -0
  524. package/scripts/run/run-ship-preflight.ts +1 -1
  525. package/scripts/run/run-ship-probe.ts +4 -1
  526. package/scripts/run/run-ship-return.ts +8 -3
  527. package/scripts/run/run-ship-review-steps.ts +18 -4
  528. package/scripts/run/run-ship-review.ts +11 -0
  529. package/scripts/run/run-ship-scoped.ts +1 -0
  530. package/scripts/run/run-ship-steps.ts +1 -1
  531. package/scripts/run/run-ship.ts +0 -1
  532. package/scripts/run/run-stage-read.ts +62 -0
  533. package/scripts/run/run-stage.ts +160 -0
  534. package/scripts/run/run-status-cli.ts +3 -16
  535. package/scripts/run/run-step-cli.ts +21 -14
  536. package/scripts/run/run-step.ts +1 -1
  537. package/scripts/run/run-stop-notify.ts +1 -3
  538. package/scripts/run/run-stranded-cli.ts +0 -4
  539. package/scripts/run/run-stranded-detect.ts +2 -2
  540. package/scripts/run/run-tail-cli.ts +17 -11
  541. package/scripts/run/run-tail.ts +2 -0
  542. package/scripts/run/run-tidy-lanes.ts +6 -2
  543. package/scripts/run/run-tidy-stashes.ts +12 -12
  544. package/scripts/run/run-wake-cli.ts +4 -13
  545. package/scripts/run/run-wake-loop.ts +2 -2
  546. package/scripts/run/run-wake.ts +2 -4
  547. package/scripts/run/run-watcher-guard-cli.ts +0 -4
  548. package/scripts/run/run-watcher-guard.ts +18 -12
  549. package/scripts/run/run-watcher-hook.ts +1 -1
  550. package/scripts/safe-chain/ci-installer-pin.ts +11 -5
  551. package/scripts/safe-chain/pack-hook.ts +92 -0
  552. package/scripts/safe-chain/project-config.ts +1 -1
  553. package/scripts/security/security-audit-provision-logic.ts +0 -1
  554. package/scripts/security/security-audit-provision.ts +3 -2
  555. package/scripts/security/security-audit.ts +0 -1
  556. package/scripts/security/security-updates-logic.ts +0 -1
  557. package/scripts/sonar/sonar-hotspots-cli.ts +10 -52
  558. package/scripts/sonar/sonar-hotspots.ts +0 -1
  559. package/scripts/sonar/sonar-new-code-cli.ts +150 -0
  560. package/scripts/sonar/sonar-new-code.ts +79 -0
  561. package/scripts/sonar/sonar-project.ts +97 -0
  562. package/scripts/split/split-assess-cli.ts +1 -1
  563. package/scripts/split/split-assess.ts +2 -5
  564. package/scripts/sync/managed-config-scope-cli.ts +1 -1
  565. package/scripts/sync/skill-migration.ts +0 -1
  566. package/scripts/sync/sync-ai-files.ts +4 -0
  567. package/scripts/sync/sync-hook-safety.ts +2 -3
  568. package/scripts/sync/sync.ts +1 -8
  569. package/scripts/sync/template-source-logic.ts +0 -1
  570. package/scripts/sync/workflow-pin-logic.ts +16 -28
  571. package/scripts/test/test-declared-changed.ts +13 -16
  572. package/scripts/test/test-declared-logic.ts +0 -1
  573. package/scripts/test/test-declared.ts +3 -9
  574. package/scripts/test/test-red-commit.ts +2 -2
  575. package/scripts/test/test-red.ts +14 -7
  576. package/scripts/test/test-type-logic.ts +1 -1
  577. package/scripts/test/unit-worker-share.ts +7 -16
  578. package/scripts/time-runtime/time-batch-guard.ts +1 -2
  579. package/scripts/time-runtime/time-bundle-call.ts +0 -1
  580. package/scripts/time-runtime/time-bundles.ts +0 -4
  581. package/scripts/time-runtime/time-density-hook.ts +0 -2
  582. package/scripts/time-runtime/time-followup-stage.ts +1 -1
  583. package/scripts/time-runtime/time-format.ts +0 -73
  584. package/scripts/time-runtime/time-round-trips.ts +0 -4
  585. package/scripts/time-runtime/time-single-check.ts +1 -1
  586. package/scripts/time-runtime/time-spans.ts +1 -1
  587. package/scripts/time-runtime/time-transcript-line.ts +1 -2
  588. package/scripts/ui/ui-routes-cli.ts +0 -5
  589. package/scripts/ui/ui-routes.ts +0 -5
  590. package/scripts/version/effective-upstream.ts +2 -2
  591. package/scripts/version/latest-corepack.ts +7 -9
  592. package/scripts/version/latest-scope-cli.ts +0 -2
  593. package/scripts/version/latest-update.ts +0 -2
  594. package/scripts/version/npm-registry.ts +2 -2
  595. package/scripts/version/publishable-range-check.ts +1 -1
  596. package/scripts/version/release-hold.ts +0 -4
  597. package/scripts/version/running-binary.ts +2 -2
  598. package/scripts/version/version-check-logic.ts +0 -2
  599. package/scripts/version/version-commands.ts +11 -1
  600. package/scripts/version/version-remote.ts +3 -3
  601. package/scripts/version/version-targets.ts +4 -4
  602. package/templates/CLAUDE.basic.md +6 -6
  603. package/templates/sonar-project.properties +28 -1
  604. package/templates/workflows/ci.yml +16 -82
  605. package/templates/workflows/dependabot-auto-merge.yml +6 -3
  606. package/templates/workflows/github-release.yml +79 -0
  607. package/tsconfig.sonar.json +4 -22
  608. package/prompts/collaboration-workflow/cross-repo-epic.md +0 -5
  609. package/prompts/collaboration-workflow/epic-audit.md +0 -5
  610. package/prompts/collaboration-workflow/epic-bundle.md +0 -5
  611. package/scripts/init/plugin-install-hint.ts +0 -47
  612. package/scripts/version/parse-json.ts +0 -13
  613. /package/scripts/{git → followup}/git-followup-stages.ts +0 -0
  614. /package/scripts/{git → gh}/git-gh-api-path.ts +0 -0
  615. /package/scripts/{git → gh}/git-gh-command.ts +0 -0
  616. /package/scripts/{git → gh}/git-gh-issue.ts +0 -0
  617. /package/scripts/{git → gh}/git-gh-pr-snapshot.ts +0 -0
  618. /package/scripts/{git → gh}/git-gh-reachability.ts +0 -0
  619. /package/scripts/{git → gh}/git-gh-repo.ts +0 -0
  620. /package/scripts/{git → gh}/git-gh-rest-state.ts +0 -0
  621. /package/scripts/{git → gh}/git-pr-checks-watch.ts +0 -0
  622. /package/scripts/{git → gh}/git-pr-error.ts +0 -0
  623. /package/scripts/{git → gh}/git-pr-messages.ts +0 -0
  624. /package/scripts/{git → gh}/github-issue-url.ts +0 -0
  625. /package/scripts/git/{stash-orphans.ts → stash/stash-orphans.ts} +0 -0
  626. /package/scripts/{git → issue}/issue-reference.ts +0 -0
  627. /package/scripts/{git → lib}/animation-helpers.ts +0 -0
  628. /package/scripts/{git → lib}/git-animation.ts +0 -0
  629. /package/scripts/{git → notify}/git-notify.ts +0 -0
  630. /package/scripts/{git → notify}/telegram-test-logic.ts +0 -0
package/dist/josh.js CHANGED
@@ -4,6 +4,87 @@
4
4
  import { existsSync } from "node:fs";
5
5
  import path from "node:path";
6
6
 
7
+ // scripts/lib/spawn-exit.ts
8
+ var SPAWN_ERROR_EXIT_CODE = 2;
9
+ var SIGNAL_KILL_EXIT_CODE = 1;
10
+ function resolve_spawn_exit(executable, result) {
11
+ if (result.exitCode !== void 0) return result.exitCode;
12
+ if (result.isTerminated === true) return SIGNAL_KILL_EXIT_CODE;
13
+ console.error(`Failed to execute ${executable}: ${result.shortMessage ?? "spawn failed"}`);
14
+ return SPAWN_ERROR_EXIT_CODE;
15
+ }
16
+ function read_spawn_stdout(result) {
17
+ return result.stdout ?? "";
18
+ }
19
+ function read_spawn_stderr(result) {
20
+ return result.stderr ?? "";
21
+ }
22
+
23
+ // scripts/git/git-spawn-sync.ts
24
+ import { execaSync } from "execa";
25
+
26
+ // scripts/git/constants.ts
27
+ import { platform } from "node:os";
28
+ var GIT_COMMAND_UNIX = "/usr/bin/git";
29
+ function get_git_command() {
30
+ if (platform() === "win32") {
31
+ return String.raw`"C:\Program Files\Git\cmd\git.exe"`;
32
+ }
33
+ return GIT_COMMAND_UNIX;
34
+ }
35
+ function get_git_command_for_spawn() {
36
+ if (platform() === "win32") {
37
+ return String.raw`C:\Program Files\Git\cmd\git.exe`;
38
+ }
39
+ return GIT_COMMAND_UNIX;
40
+ }
41
+ var git_utilities = {
42
+ get_git_command,
43
+ get_git_command_for_spawn
44
+ };
45
+
46
+ // scripts/git/git-spawn-sync.ts
47
+ var GIT_TIMEOUT_MS = 1e4;
48
+ var SUCCESS_EXIT_CODE = 0;
49
+ var C_LOCALE = { LC_ALL: "C", LANGUAGE: "C" };
50
+ function run(args, options = {}) {
51
+ const result = execaSync(git_utilities.get_git_command_for_spawn(), args, {
52
+ ...options,
53
+ extendEnv: true,
54
+ reject: false,
55
+ timeout: options.timeout ?? GIT_TIMEOUT_MS
56
+ });
57
+ return {
58
+ exit_code: result.exitCode,
59
+ stdout: read_spawn_stdout(result),
60
+ stderr: read_spawn_stderr(result)
61
+ };
62
+ }
63
+ function read(args, options = {}) {
64
+ const result = run(args, options);
65
+ return result.exit_code === SUCCESS_EXIT_CODE ? result.stdout.trim() : void 0;
66
+ }
67
+ function origin_url(cwd) {
68
+ return read(["config", "--get", "remote.origin.url"], { cwd });
69
+ }
70
+ function toplevel(timeout = GIT_TIMEOUT_MS) {
71
+ return run(["rev-parse", "--show-toplevel"], { env: C_LOCALE, timeout });
72
+ }
73
+ var git_spawn_sync = { GIT_TIMEOUT_MS, C_LOCALE, run, read, origin_url, toplevel };
74
+
75
+ // scripts/lib/json-value.ts
76
+ function parse_or_undefined(text) {
77
+ try {
78
+ return JSON.parse(text);
79
+ } catch {
80
+ return void 0;
81
+ }
82
+ }
83
+ function is_record(value) {
84
+ return typeof value === "object" && value !== null && !Array.isArray(value);
85
+ }
86
+ var json_value = { parse_or_undefined, is_record };
87
+
7
88
  // scripts/lib/read-file.ts
8
89
  import { readFileSync } from "node:fs";
9
90
  var ABSENT_CODE = "ENOENT";
@@ -30,33 +111,10 @@ function read_if_readable(path5) {
30
111
  }
31
112
  var file_reader = { read_optional, read_file_or_empty, read_if_readable };
32
113
 
33
- // scripts/lib/spawn-exit.ts
34
- var SPAWN_ERROR_EXIT_CODE = 2;
35
- var SIGNAL_KILL_EXIT_CODE = 1;
36
- function resolve_spawn_exit(executable, result) {
37
- if (result.exitCode !== void 0) return result.exitCode;
38
- if (result.isTerminated === true) return SIGNAL_KILL_EXIT_CODE;
39
- console.error(`Failed to execute ${executable}: ${result.shortMessage ?? "spawn failed"}`);
40
- return SPAWN_ERROR_EXIT_CODE;
41
- }
42
- function read_spawn_stdout(result) {
43
- return result.stdout ?? "";
44
- }
45
-
46
114
  // scripts/version/kit-descriptor.ts
47
115
  var KIT_PACKAGE_NAME = "@joshuafolkken/kit";
48
116
 
49
- // scripts/version/parse-json.ts
50
- function safe_json_parse(raw) {
51
- try {
52
- return JSON.parse(raw);
53
- } catch {
54
- return void 0;
55
- }
56
- }
57
-
58
117
  // scripts/doctor/doctor-consumer.ts
59
- import { execaSync } from "execa";
60
118
  import { z } from "zod";
61
119
  var NODE_MODULES = "node_modules";
62
120
  var SETTINGS_PATH = path.join(".claude", "settings.json");
@@ -64,7 +122,7 @@ var CLAUDE_MD = "CLAUDE.md";
64
122
  var PLUGIN_ID = "kit@kit";
65
123
  var CLAUDE_MD_POINTER = `@${NODE_MODULES}/${KIT_PACKAGE_NAME}/dist/${CLAUDE_MD}`;
66
124
  var SECRETLINT_BIN = path.join(NODE_MODULES, ".bin", "secretlint");
67
- var GIT_TIMEOUT_MS = 2e3;
125
+ var GIT_TIMEOUT_MS2 = 2e3;
68
126
  var manifest_schema = z.object({
69
127
  name: z.string().optional(),
70
128
  dependencies: z.record(z.string(), z.string()).optional(),
@@ -79,7 +137,7 @@ var STATE_MISSING = "missing";
79
137
  function parse_manifest(root) {
80
138
  const content = file_reader.read_if_readable(path.join(root, "package.json"));
81
139
  if (content === void 0) return void 0;
82
- const parsed = manifest_schema.safeParse(safe_json_parse(content));
140
+ const parsed = manifest_schema.safeParse(json_value.parse_or_undefined(content));
83
141
  return parsed.success ? parsed.data : void 0;
84
142
  }
85
143
  function lists_kit_dependency(manifest) {
@@ -94,15 +152,13 @@ function is_kit_consumer(root) {
94
152
  function is_plugin_declared(root) {
95
153
  const content = file_reader.read_if_readable(path.join(root, SETTINGS_PATH));
96
154
  if (content === void 0) return false;
97
- const parsed = settings_schema.safeParse(safe_json_parse(content));
155
+ const parsed = settings_schema.safeParse(json_value.parse_or_undefined(content));
98
156
  return parsed.success && parsed.data.enabledPlugins?.[PLUGIN_ID] === true;
99
157
  }
100
158
  function configured_hooks_path(root) {
101
- const result = execaSync("git", ["-C", root, "config", "--get", "core.hooksPath"], {
102
- reject: false,
103
- timeout: GIT_TIMEOUT_MS
159
+ const value = git_spawn_sync.read(["-C", root, "config", "--get", "core.hooksPath"], {
160
+ timeout: GIT_TIMEOUT_MS2
104
161
  });
105
- const value = read_spawn_stdout(result).trim();
106
162
  return value === "" ? void 0 : value;
107
163
  }
108
164
  function claude_md_state(root) {
@@ -120,7 +176,7 @@ function status_line(is_ok, ok_text, warn_text) {
120
176
  function plugin_line(is_declared) {
121
177
  return status_line(
122
178
  is_declared,
123
- `kit plugin declared (run \`claude plugin install ${PLUGIN_ID}\` once if skills are missing)`,
179
+ "kit plugin declared (skills load in a trusted workspace; headless from its second session)",
124
180
  "kit plugin not declared in .claude/settings.json \u2014 run `pnpm josh sync`"
125
181
  );
126
182
  }
@@ -163,7 +219,6 @@ var doctor_consumer = {
163
219
  claude_md_line,
164
220
  claude_md_state,
165
221
  configured_hooks_path,
166
- consumer_setup_lines,
167
222
  hooks_path_line,
168
223
  is_kit_consumer,
169
224
  is_plugin_declared,
@@ -244,7 +299,7 @@ function resolve_package_bin(base_directory, package_name, bin_name) {
244
299
  }
245
300
 
246
301
  // scripts/josh/josh-logic.ts
247
- import { execaSync as execaSync3 } from "execa";
302
+ import { execaSync as execaSync2 } from "execa";
248
303
 
249
304
  // scripts/josh/command-suggest.ts
250
305
  var MAX_SUGGESTION_DISTANCE = 3;
@@ -344,7 +399,11 @@ var BACKLOG_COMMANDS = {
344
399
  script: "scripts/backlog/backlog-plan-cli.ts",
345
400
  description: "Print the whole backlog as a plan: ready now, waiting on what, waiting on a person, out of scope",
346
401
  category: "AI tools",
347
- reference: ["[issue...] [--only]", "automation", ["network"]]
402
+ reference: [
403
+ "[issue...] [--only] [--waves] [--exclude <n>[,<n>...]]",
404
+ "automation",
405
+ ["network"]
406
+ ]
348
407
  },
349
408
  "backlog:stalled": {
350
409
  script: "scripts/backlog/backlog-stalled-cli.ts",
@@ -435,7 +494,7 @@ var ISSUE_COMMANDS = {
435
494
  script: "scripts/issue/issue-scout-cli.ts",
436
495
  description: "Before filing: say whether an issue like this exists and which epic it belongs to",
437
496
  category: "AI tools",
438
- reference: ["<title> [--body <summary>]", "automation", ["network"]]
497
+ reference: ["<title> [--body <summary> | --body-file <path>]", "automation", ["network"]]
439
498
  },
440
499
  "defect:rate": {
441
500
  script: "scripts/issue/defect-rate-cli.ts",
@@ -453,7 +512,7 @@ var ISSUE_COMMANDS = {
453
512
  script: "scripts/issue/issue-fold-existing-cli.ts",
454
513
  description: "Assess whether a complete draft can join an unstarted issue",
455
514
  category: "AI tools",
456
- reference: ["<assessment.json>", "automation", ["none"]]
515
+ reference: ["<assessment.json> [--json]", "automation", ["none"]]
457
516
  },
458
517
  "issue:cite": {
459
518
  script: "scripts/issue/issue-cite-cli.ts",
@@ -541,6 +600,107 @@ var LANE_COMMANDS = {
541
600
  }
542
601
  };
543
602
 
603
+ // scripts/josh/josh-commands-run.ts
604
+ var RUN_HOLD_SCRIPT = "scripts/run/run-hold-cli.ts";
605
+ var RUN_COMMANDS = {
606
+ "run:hold": {
607
+ script: RUN_HOLD_SCRIPT,
608
+ description: "Claim this working tree for a run, or say which run already holds it",
609
+ category: "AI tools",
610
+ reference: ["[<issue> [--fullrun | --halfrun-stop | --prrun-stop]]", "automation", ["files"]]
611
+ },
612
+ "run:release": {
613
+ script: RUN_HOLD_SCRIPT,
614
+ description: "Release this working tree's run record",
615
+ category: "AI tools",
616
+ reference: ["[issue|--force]", "automation", ["files"]],
617
+ default_script_arguments: ["--release"]
618
+ },
619
+ "run:tidy": {
620
+ script: "scripts/run/run-tidy-cli.ts",
621
+ description: "Close merged lanes and drop stashes whose issues are all merged",
622
+ category: "AI tools",
623
+ reference: ["", "automation", ["git", "network", "files"]]
624
+ },
625
+ "run:carry": {
626
+ script: "scripts/run/run-carry-cli.ts",
627
+ description: "Carry one invocation\u2019s budget across its own session cuts",
628
+ category: "AI tools",
629
+ reference: ["<operation> [arguments...]", "automation", ["files"]]
630
+ },
631
+ "run:wake": {
632
+ script: "scripts/run/run-wake-cli.ts",
633
+ // `.env` rather than the ambient environment:
634
+ // the failure warning needs the Telegram credentials, the same
635
+ // reasons `notify` and `followup` carry these flags.
636
+ tsx_arguments: OPTIONAL_ENV_FILE_FLAGS,
637
+ description: "Wake the next session of a cut backlogrun from outside the conversation",
638
+ category: "AI tools",
639
+ reference: ["[options]", "automation", ["processes", "notifications"]]
640
+ },
641
+ "run:cut": {
642
+ script: "scripts/run/run-cut-cli.ts",
643
+ description: "Cut a lane child before the gate and resume a fresh process",
644
+ category: "AI tools",
645
+ reference: ["[--resume] <issue> [--impl] [--handoff <path>]", "automation", ["files"]]
646
+ },
647
+ "run:liveness": {
648
+ script: "scripts/run/run-liveness-cli.ts",
649
+ description: "Say whether a delegated unit is still working, or stopped without reporting",
650
+ category: "AI tools",
651
+ reference: ["<issue> --output <path> [options]", "automation", ["processes"]]
652
+ },
653
+ "run:ending": {
654
+ script: "scripts/run/run-ending-cli.ts",
655
+ description: "Classify how a dispatched lane child ended (merged, cut, abandoned, unreadable)",
656
+ category: "AI tools",
657
+ reference: ["<issue> --output <path> [--repo <owner/repo>]", "automation", ["network"]]
658
+ },
659
+ "run:progress": {
660
+ script: "scripts/run/run-progress-cli.ts",
661
+ description: "Report an unattended run\u2019s progress once it has gone quiet for an interval",
662
+ category: "AI tools",
663
+ reference: [
664
+ "[--once | --wait] [--interval <minutes>] [--hours <hours>] [--repo <owner/repo>] [--output <path>] | --mark | --path",
665
+ "automation",
666
+ ["files"]
667
+ ]
668
+ },
669
+ "run:prep": {
670
+ script: "scripts/run/run-prep-cli.ts",
671
+ description: "Bundle a run\u2019s pre-edit reads: body, comments, state, dependency scope",
672
+ category: "AI tools",
673
+ reference: ["<issue>", "automation", ["network"]]
674
+ },
675
+ // The entry sequence a lane opened on, folded into one call (joshuafolkken/kit#2372): claim the tree,
676
+ // read the budget, gather the issue reads and decide the pre-implementation step. `run:hold`,
677
+ // `cost --cut`, `run:prep` and `run:step` were four round trips re-billing a lane's full context each.
678
+ "run:entry": {
679
+ script: "scripts/run/run-entry-cli.ts",
680
+ description: "Open a run in one call: claim the tree, read the budget, bundle the reads, decide the pre-implementation step",
681
+ category: "AI tools",
682
+ reference: ["<issue> [--to <command>]", "automation", ["git", "network", "files"]]
683
+ },
684
+ "run:status": {
685
+ script: "scripts/run/run-status-cli.ts",
686
+ description: "Bundle a run\u2019s read-only status: issue state, cost verdict, carry counters",
687
+ category: "AI tools",
688
+ reference: ["<issue> [--repo <owner/repo>]", "automation", ["network"]]
689
+ },
690
+ "run:next": {
691
+ script: "scripts/run/run-next-cli.ts",
692
+ description: "Print the next step a fullrun takes, computed from the run\u2019s state",
693
+ category: "AI tools",
694
+ reference: ["<issue>", "automation", ["network"]]
695
+ },
696
+ "run:step": {
697
+ script: "scripts/run/run-step-cli.ts",
698
+ description: "Print the run\u2019s next single action, computed from the event stream, carry record and issue state",
699
+ category: "AI tools",
700
+ reference: ["<issue>", "automation", ["network", "files"]]
701
+ }
702
+ };
703
+
544
704
  // scripts/josh/josh-commands-split.ts
545
705
  var SPLIT_COMMANDS = {
546
706
  "split:assess": {
@@ -552,7 +712,6 @@ var SPLIT_COMMANDS = {
552
712
  };
553
713
 
554
714
  // scripts/josh/josh-commands-ai.ts
555
- var RUN_HOLD_SCRIPT = "scripts/run/run-hold-cli.ts";
556
715
  var ISSUE_WITH_OPTIONS2 = "<issue> [options]";
557
716
  var AI_COMMANDS = {
558
717
  ...ISSUE_COMMANDS,
@@ -563,7 +722,7 @@ var AI_COMMANDS = {
563
722
  reference: ["<keywords> [--size <n>]", "automation", ["network"]]
564
723
  },
565
724
  "stash:pop": {
566
- script: "scripts/git/stash-pop-cli.ts",
725
+ script: "scripts/git/stash/stash-pop-cli.ts",
567
726
  description: "Pop the stash matching this message, not whichever a shared stack has on top",
568
727
  category: "AI tools",
569
728
  reference: ["<message>", "automation", ["git"]]
@@ -578,7 +737,7 @@ var AI_COMMANDS = {
578
737
  script: "scripts/epic/epic-next.ts",
579
738
  description: "List an epic's runnable children, bundled per repository",
580
739
  category: "AI tools",
581
- reference: ["<epic>", "automation", ["network"]]
740
+ reference: ["<epic>... [--repo <owner/repo>] [--lanes]", "automation", ["network"]]
582
741
  },
583
742
  "epic:bundle": {
584
743
  script: "scripts/epic/epic-bundle-cli.ts",
@@ -607,9 +766,9 @@ var AI_COMMANDS = {
607
766
  ...BACKLOG_COMMANDS,
608
767
  cost: {
609
768
  script: "scripts/cost-runtime/cost-cli.ts",
610
- description: "Report a run's token and credit cost from Claude Code's session transcripts",
769
+ description: "Say whether the next turn of a run crosses the context-cut threshold (--cut) or a given tokens-per-request figure (--over)",
611
770
  category: "AI tools",
612
- reference: ["[--cut|--over]", "automation", ["none"]]
771
+ reference: ["(--cut | --over <tokens-per-request>) [--path <dir>]", "automation", ["none"]]
613
772
  },
614
773
  ...DOCUMENT_COMMANDS,
615
774
  time: {
@@ -673,98 +832,7 @@ var AI_COMMANDS = {
673
832
  category: "AI tools",
674
833
  reference: ["<unit-files> <unit-files> [<unit-files> \u2026]", "automation", ["none"]]
675
834
  },
676
- "run:hold": {
677
- script: RUN_HOLD_SCRIPT,
678
- description: "Claim this working tree for a run, or say which run already holds it",
679
- category: "AI tools",
680
- reference: ["[issue]", "automation", ["files"]]
681
- },
682
- "run:release": {
683
- script: RUN_HOLD_SCRIPT,
684
- description: "Release this working tree's run record",
685
- category: "AI tools",
686
- reference: ["[issue|--force]", "automation", ["files"]],
687
- default_script_arguments: ["--release"]
688
- },
689
- "run:tidy": {
690
- script: "scripts/run/run-tidy-cli.ts",
691
- description: "Close merged lanes and drop stashes whose issues are all merged",
692
- category: "AI tools",
693
- reference: ["", "automation", ["git", "network", "files"]]
694
- },
695
- "run:carry": {
696
- script: "scripts/run/run-carry-cli.ts",
697
- description: "Carry one invocation\u2019s budget across its own session cuts",
698
- category: "AI tools",
699
- reference: ["<operation> [arguments...]", "automation", ["files"]]
700
- },
701
- "run:wake": {
702
- script: "scripts/run/run-wake-cli.ts",
703
- // `.env` rather than the ambient environment:
704
- // the failure warning needs the Telegram credentials, the same
705
- // reasons `notify` and `followup` carry these flags.
706
- tsx_arguments: OPTIONAL_ENV_FILE_FLAGS,
707
- description: "Wake the next session of a cut backlogrun from outside the conversation",
708
- category: "AI tools",
709
- reference: ["[options]", "automation", ["processes", "notifications"]]
710
- },
711
- "run:cut": {
712
- script: "scripts/run/run-cut-cli.ts",
713
- description: "Cut a lane child before the gate and resume a fresh process",
714
- category: "AI tools",
715
- reference: ["[--resume] <issue> [--impl] [--handoff <path>]", "automation", ["files"]]
716
- },
717
- "run:liveness": {
718
- script: "scripts/run/run-liveness-cli.ts",
719
- description: "Say whether a delegated unit is still working, or stopped without reporting",
720
- category: "AI tools",
721
- reference: ["<issue> --output <path> [options]", "automation", ["processes"]]
722
- },
723
- "run:ending": {
724
- script: "scripts/run/run-ending-cli.ts",
725
- description: "Classify how a dispatched lane child ended (merged, cut, abandoned, unreadable)",
726
- category: "AI tools",
727
- reference: ["<issue> --output <path> [--repo <owner/repo>]", "automation", ["network"]]
728
- },
729
- "run:progress": {
730
- script: "scripts/run/run-progress-cli.ts",
731
- description: "Report an unattended run\u2019s progress once it has gone quiet for an interval",
732
- category: "AI tools",
733
- reference: ["[--wait|--mark]", "automation", ["files"]]
734
- },
735
- "run:prep": {
736
- script: "scripts/run/run-prep-cli.ts",
737
- description: "Bundle a run\u2019s pre-edit reads: body, comments, state, dependency scope",
738
- category: "AI tools",
739
- reference: ["<issue>", "automation", ["network"]]
740
- },
741
- // The entry sequence a lane opened on, folded into one call (joshuafolkken/kit#2372): claim the tree,
742
- // read the budget, gather the issue reads and decide the pre-implementation step. `run:hold`,
743
- // `cost --cut`, `run:prep` and `run:step` were four round trips re-billing a lane's full context each.
744
- "run:entry": {
745
- script: "scripts/run/run-entry-cli.ts",
746
- description: "Open a run in one call: claim the tree, read the budget, bundle the reads, decide the pre-implementation step",
747
- category: "AI tools",
748
- reference: ["<issue>", "automation", ["git", "network", "files"]]
749
- },
750
- "run:status": {
751
- script: "scripts/run/run-status-cli.ts",
752
- description: "Bundle a run\u2019s read-only status: issue state, cost verdict, carry counters",
753
- category: "AI tools",
754
- reference: ["<issue> [--repo <owner/repo>]", "automation", ["network"]]
755
- },
756
- "run:next": {
757
- script: "scripts/run/run-next-cli.ts",
758
- description: "Print the next step a fullrun takes, computed from the run\u2019s state",
759
- category: "AI tools",
760
- reference: ["<issue>", "automation", ["network"]]
761
- },
762
- "run:step": {
763
- script: "scripts/run/run-step-cli.ts",
764
- description: "Print the run\u2019s next single action, computed from the event stream, carry record and issue state",
765
- category: "AI tools",
766
- reference: ["<issue>", "automation", ["network", "files"]]
767
- },
835
+ ...RUN_COMMANDS,
768
836
  "repo:party": {
769
837
  script: "scripts/discovery/repo-party-cli.ts",
770
838
  description: "Say whether a repository is first-party or third-party by owner equality (computed, not judged)",
@@ -788,7 +856,7 @@ var AI_COMMANDS = {
788
856
  // `issue:cite` and `release:scope` were three round trips re-billing the run's full context each.
789
857
  "run:tail": {
790
858
  script: "scripts/run/run-tail-cli.ts",
791
- description: "Close a run in one call: commit the observation ledger, read the citations, decide the release scope",
859
+ description: "Close a run in one call: return to the default branch, commit the observation ledger, read the citations, decide the release scope",
792
860
  category: "AI tools",
793
861
  reference: ["[<issue> ...]", "automation", ["git", "network"]]
794
862
  },
@@ -801,7 +869,7 @@ var AI_COMMANDS = {
801
869
  description: "Ship a change in one call: gate, commit/push/PR, the CI-wait merge and the report bookkeeping, stopping at the first failed step",
802
870
  category: "AI tools",
803
871
  reference: [
804
- '"<title> #<N>" [<follow-up-N> ...] [--cite <N>] [--review] [--detach] [--notify-message <text> | --notify-message-file <path>] | --log <N>',
872
+ '"<title> #<N>" [<follow-up-N> ...] [--cite <N>] [--review] [--detach] [--body-file <path>] [--notify-message <text> | --notify-message-file <path>] | --log <N>',
805
873
  "automation",
806
874
  ["git", "network"]
807
875
  ]
@@ -911,7 +979,7 @@ var DEV_COMMANDS = {
911
979
  reference: ["", "automation", ["processes"]]
912
980
  },
913
981
  bytes: {
914
- script: "scripts/bytes/bytes-command.ts",
982
+ script: "scripts/lines/bytes-command.ts",
915
983
  description: "Print an agent-read document's byte size against its ceiling and the headroom left",
916
984
  category: "Development",
917
985
  reference: [REQUIRED_FILE_ARGUMENTS, "developer", ["none"]]
@@ -986,6 +1054,12 @@ var DEV_COMMANDS = {
986
1054
  category: "Development",
987
1055
  reference: ["", "developer", ["files"]]
988
1056
  },
1057
+ "exports:unused": {
1058
+ script: "scripts/exports/unused-members-cli.ts",
1059
+ description: "Report exported namespace members nothing reads (kit only; a consumer project skips it)",
1060
+ category: "Development",
1061
+ reference: ["", "developer", ["none"]]
1062
+ },
989
1063
  "test:unit": {
990
1064
  script: "scripts/test/test-unit-guard.ts",
991
1065
  description: "Run unit tests with Vitest (skips when Vitest is absent; fails when it has no tests)",
@@ -1126,6 +1200,12 @@ var MAINTENANCE_COMMANDS = {
1126
1200
  reference: ["[--fix]", "developer", ["files"]],
1127
1201
  tsx_arguments: OPTIONAL_ENV_FILE_FLAGS
1128
1202
  },
1203
+ "ruleset:check": {
1204
+ script: "scripts/repo/ruleset-check-cli.ts",
1205
+ description: "Check that the default branch requires every status check kit's workflows report (--apply adds the missing ones)",
1206
+ category: "Maintenance",
1207
+ reference: ["[--apply]", "maintainer", ["network"]]
1208
+ },
1129
1209
  overrides: {
1130
1210
  script: "scripts/overrides/overrides-check.ts",
1131
1211
  description: "Check pnpm overrides for drift",
@@ -1228,7 +1308,7 @@ var PROJECT_COMMANDS = {
1228
1308
  },
1229
1309
  "registry:migrate": {
1230
1310
  script: "scripts/registry-migration/migrate.ts",
1231
- description: "Migrate a kit-only project from GitHub Packages to public npm",
1311
+ description: "Migrate a project from GitHub Packages to public npm",
1232
1312
  category: "Project",
1233
1313
  reference: ["", "developer", ["files", "network", "processes"]]
1234
1314
  },
@@ -1244,6 +1324,12 @@ var PROJECT_COMMANDS = {
1244
1324
  category: "Project",
1245
1325
  reference: ["<PR>", "automation", ["network"]]
1246
1326
  },
1327
+ "sonar:new-code": {
1328
+ script: "scripts/sonar/sonar-new-code-cli.ts",
1329
+ description: "Fail when a pull request adds any new SonarCloud issue or duplicated block",
1330
+ category: "Project",
1331
+ reference: ["<PR>", "automation", ["network"]]
1332
+ },
1247
1333
  "ui:routes": {
1248
1334
  script: "scripts/ui/ui-routes-cli.ts",
1249
1335
  description: "List the screenshot-target routes the current change touches",
@@ -1309,6 +1395,14 @@ var VERSIONING_COMMANDS = {
1309
1395
  description: "Say whether a release is owed, from the unreleased merges on main",
1310
1396
  category: "Versioning",
1311
1397
  reference: ["[--json]", "automation", ["none"]]
1398
+ },
1399
+ // Run by the release workflows, kit's and the one sync distributes, after a tag has published
1400
+ // (joshuafolkken/kit#3007). Settings come from the environment, so the workflow decides them.
1401
+ "release:github": {
1402
+ script: "scripts/release/github-release-cli.ts",
1403
+ description: "Create the GitHub Release for a published tag, with generated notes",
1404
+ category: "Versioning",
1405
+ reference: ["", "automation", ["network", "release"]]
1312
1406
  }
1313
1407
  };
1314
1408
 
@@ -1346,7 +1440,7 @@ var WORKFLOW_COMMANDS = {
1346
1440
  // than dropped: `telegram_notify.send` now throws on missing credentials and on a failed send, so
1347
1441
  // `josh notify` exits non-zero instead of warning and answering 0.
1348
1442
  followup: {
1349
- script: "scripts/git/git-followup-workflow.ts",
1443
+ script: "scripts/followup/git-followup-workflow.ts",
1350
1444
  description: "Follow-up git workflow",
1351
1445
  category: "Workflow",
1352
1446
  reference: [
@@ -1357,7 +1451,7 @@ var WORKFLOW_COMMANDS = {
1357
1451
  tsx_arguments: OPTIONAL_ENV_FILE_FLAGS
1358
1452
  },
1359
1453
  notify: {
1360
- script: "scripts/git/telegram-test.ts",
1454
+ script: "scripts/notify/telegram-test.ts",
1361
1455
  description: "Send Telegram notification",
1362
1456
  category: "Workflow",
1363
1457
  reference: ["--task-type <type> --body <text>", "automation", ["notifications"]],
@@ -1400,7 +1494,7 @@ var WORKFLOW_COMMANDS = {
1400
1494
  script: "scripts/issue/measure-rerun-cli.ts",
1401
1495
  description: "Re-run a merged issue\u2019s baseline command and print the before/after pair",
1402
1496
  category: "Workflow",
1403
- reference: ["<path>", "automation", ["processes", "files"]]
1497
+ reference: ["<issue-number>", "automation", ["network", "processes", "files"]]
1404
1498
  },
1405
1499
  // A script rather than an `sh -c` chain, because it has a precondition to enforce: run inside a
1406
1500
  // linked work tree it would hijack the default branch from every other one (joshuafolkken/kit#1535).
@@ -1452,6 +1546,7 @@ var ALIASES = {
1452
1546
  f: "format",
1453
1547
  sd: "cspell:dot",
1454
1548
  bh: "behavior",
1549
+ eu: "exports:unused",
1455
1550
  t: "test",
1456
1551
  tu: "test:unit",
1457
1552
  tr: "test:related",
@@ -1474,6 +1569,7 @@ var ALIASES = {
1474
1569
  v: "version",
1475
1570
  r: "ranges",
1476
1571
  dr: "doctor",
1572
+ rc: "ruleset:check",
1477
1573
  pg: "propagate",
1478
1574
  ad: "adopt",
1479
1575
  ov: "overrides",
@@ -1657,7 +1753,6 @@ var repo_origin = {
1657
1753
  };
1658
1754
 
1659
1755
  // scripts/josh/run-github-prerequisite.ts
1660
- import { execaSync as execaSync2 } from "execa";
1661
1756
  var GITHUB_RUN_COMMANDS = /* @__PURE__ */ new Set([
1662
1757
  "run:entry",
1663
1758
  "run:prep",
@@ -1671,11 +1766,8 @@ function explanation(root, command) {
1671
1766
  if (!existsSync3(path3.join(root, ".git"))) {
1672
1767
  return `${command} requires Git and a GitHub origin. Run git init and add a GitHub origin first.`;
1673
1768
  }
1674
- const result = execaSync2("git", ["config", "--get", "remote.origin.url"], {
1675
- cwd: root,
1676
- reject: false
1677
- });
1678
- if (result.exitCode === 0 && repo_origin.parse_origin_url(result.stdout)) return void 0;
1769
+ const url = git_spawn_sync.origin_url(root);
1770
+ if (url !== void 0 && repo_origin.parse_origin_url(url)) return void 0;
1679
1771
  return `${command} requires a GitHub origin. Add an origin pointing to GitHub first.`;
1680
1772
  }
1681
1773
  var run_github_prerequisite = { explanation };
@@ -1778,7 +1870,7 @@ function should_use_shell(executable) {
1778
1870
  return process.platform === "win32" && executable !== process.execPath;
1779
1871
  }
1780
1872
  function spawn_script(tsx_executable, script_arguments) {
1781
- const result = execaSync3(tsx_executable, script_arguments, {
1873
+ const result = execaSync2(tsx_executable, script_arguments, {
1782
1874
  stdio: "inherit",
1783
1875
  shell: should_use_shell(tsx_executable),
1784
1876
  reject: false
@@ -1787,7 +1879,7 @@ function spawn_script(tsx_executable, script_arguments) {
1787
1879
  }
1788
1880
  function run_shell_command(shell, extra) {
1789
1881
  const [executable = "", ...rest_arguments] = shell;
1790
- const result = execaSync3(executable, [...rest_arguments, ...extra], {
1882
+ const result = execaSync2(executable, [...rest_arguments, ...extra], {
1791
1883
  stdio: "inherit",
1792
1884
  reject: false
1793
1885
  });
@@ -1,7 +1,8 @@
1
1
  // scripts/claude/workflow-destination.ts
2
2
  var WORKFLOW_DESTINATION_PATTERN = /(?:^|[/\\])\.github[/\\]workflows[/\\][^/\\]+\.ya?ml$/u;
3
+ var COMPOSITE_ACTION_DESTINATION_PATTERN = /(?:^|[/\\])\.github[/\\]actions[/\\][^/\\]+[/\\]action\.ya?ml$/u;
3
4
  function is_workflow_destination(destination) {
4
- return WORKFLOW_DESTINATION_PATTERN.test(destination);
5
+ return WORKFLOW_DESTINATION_PATTERN.test(destination) || COMPOSITE_ACTION_DESTINATION_PATTERN.test(destination);
5
6
  }
6
7
 
7
8
  // scripts/managed-marker/managed-marker-logic.ts