@joshuafolkken/kit 1.1178.0 → 1.1229.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 (425) hide show
  1. package/.claude/.claude-plugin/plugin.json +1 -1
  2. package/.claude/settings.json +2 -2
  3. package/.claude/skills/dependency-update/SKILL.md +4 -8
  4. package/.claude/skills/epic-commands/SKILL.md +2 -2
  5. package/.claude/skills/epic-commands/epic-bundle.md +1 -1
  6. package/.claude/skills/workflow-commands/SKILL.md +2 -4
  7. package/.claude/skills/workflow-commands/backlogrun-child.md +6 -4
  8. package/.claude/skills/workflow-commands/backlogrun-lanes.md +6 -2
  9. package/.claude/skills/workflow-commands/backlogrun-park.md +23 -2
  10. package/.claude/skills/workflow-commands/backlogrun-progress.md +7 -2
  11. package/.claude/skills/workflow-commands/backlogrun-recovery.md +4 -3
  12. package/.claude/skills/workflow-commands/backlogrun-steps.md +21 -13
  13. package/.claude/skills/workflow-commands/chain-rule.md +1 -1
  14. package/.claude/skills/workflow-commands/delegation.md +2 -2
  15. package/.claude/skills/workflow-commands/followup.md +5 -0
  16. package/.claude/skills/workflow-commands/fullrun-steps.md +1 -1
  17. package/.claude/skills/workflow-commands/halfrun.md +1 -1
  18. package/.claude/skills/workflow-commands/issue-scout.md +1 -1
  19. package/.claude/skills/workflow-commands/kickoff.md +1 -1
  20. package/.claude/skills/workflow-commands/observation-ledger.md +3 -3
  21. package/.claude/skills/workflow-commands/pre-gate-cut.md +6 -1
  22. package/.claude/skills/workflow-commands/prerequisite.md +2 -2
  23. package/.claude/skills/workflow-commands/progress-watcher.md +1 -1
  24. package/.claude/skills/workflow-commands/working-tree-hold.md +1 -1
  25. package/.codex/hooks.json +2 -2
  26. package/.cursorrules +6 -41
  27. package/.github/actions/setup-node/action.yml +1 -1
  28. package/.github/workflows/auto-tag.yml +3 -4
  29. package/.github/workflows/ci.yml +32 -31
  30. package/.github/workflows/dependabot-auto-merge.yml +13 -6
  31. package/.github/workflows/publish.yml +48 -4
  32. package/.github/workflows/sonar-qube.yml +3 -0
  33. package/.pnpmfile.mjs +4 -3
  34. package/.prettierignore +8 -2
  35. package/CLAUDE.md +18 -20
  36. package/README.md +26 -19
  37. package/SECURITY.md +15 -1
  38. package/dist/CLAUDE.md +18 -20
  39. package/dist/commands/document-section-cli.js +734 -0
  40. package/dist/hooks/audit-provision.js +346 -0
  41. package/dist/hooks/batch-guard.js +5 -4
  42. package/dist/hooks/{chunk-S6X6WYKR.js → chunk-55HHG5PX.js} +1210 -711
  43. package/dist/hooks/{chunk-ZAL3NRGL.js → chunk-5VMKCCC4.js} +25 -10
  44. package/dist/hooks/chunk-5VNDSNG3.js +12 -0
  45. package/dist/hooks/{chunk-32GQTL4F.js → chunk-6HJJXRBX.js} +4 -2
  46. package/dist/hooks/chunk-CDY4NFQG.js +15 -0
  47. package/dist/hooks/chunk-ELCN5LCH.js +135 -0
  48. package/dist/hooks/{chunk-VESKRQOF.js → chunk-F56MFS4B.js} +3 -3
  49. package/dist/hooks/{chunk-UAGLLIGZ.js → chunk-FIVDHQGT.js} +7 -6
  50. package/dist/hooks/{chunk-3V37IID6.js → chunk-JBBMAPC4.js} +23 -14
  51. package/dist/hooks/{chunk-G6KRCKEC.js → chunk-JUDKDCDP.js} +496 -378
  52. package/dist/hooks/{chunk-GDS5N2KB.js → chunk-NV2JRZZO.js} +718 -681
  53. package/dist/hooks/{chunk-VQLLNFNT.js → chunk-RNWHN5BP.js} +3 -3
  54. package/dist/hooks/{chunk-DO6NWWHU.js → chunk-TQNPDZNH.js} +4 -4
  55. package/dist/hooks/{chunk-I4XSL4TT.js → chunk-VC3PZPZO.js} +1 -1
  56. package/dist/hooks/codex-hook-adapter.js +14 -12
  57. package/dist/hooks/duplicate-read-guard.js +6 -5
  58. package/dist/hooks/format-edited.js +4 -3
  59. package/dist/hooks/inputs.json +217 -195
  60. package/dist/hooks/investigation-guard.js +6 -5
  61. package/dist/hooks/pretool-guard.js +12 -10
  62. package/dist/hooks/session-lang.js +2 -4
  63. package/dist/hooks/stop-guard.js +66 -58
  64. package/dist/josh.js +868 -74
  65. package/dist/version/index.d.ts +7 -2
  66. package/dist/version/index.js +152 -75
  67. package/eslint/base.js +23 -1
  68. package/eslint/rules/code-quality.js +3 -0
  69. package/eslint/rules/early-return-one-liner.js +98 -0
  70. package/eslint/rules/unicorn.js +16 -1
  71. package/package.json +7 -6
  72. package/pnpm-workspace.yaml +9 -4
  73. package/prettier/basic.d.ts +3 -1
  74. package/prettier/index.d.ts +3 -1
  75. package/prettier/static.d.ts +3 -1
  76. package/prompts/coding-standards.md +1 -1
  77. package/prompts/collaboration-workflow/file-edits.md +4 -4
  78. package/prompts/collaboration-workflow/glossary.md +1 -1
  79. package/prompts/collaboration-workflow/operating-rules.md +17 -9
  80. package/prompts/collaboration-workflow/overview.md +2 -2
  81. package/prompts/collaboration-workflow/principles.md +14 -12
  82. package/prompts/collaboration-workflow/report-format.md +1 -1
  83. package/prompts/collaboration-workflow/residency.md +1 -1
  84. package/prompts/collaboration-workflow/rule-delivery.md +6 -6
  85. package/prompts/collaboration-workflow/shell-body.md +6 -6
  86. package/prompts/collaboration-workflow/turn-batching.md +1 -1
  87. package/prompts/collaboration-workflow/upstream-interrupt.md +12 -2
  88. package/prompts/collaboration-workflow/wip-cap.md +10 -10
  89. package/prompts/review-rubric.md +1 -2
  90. package/prompts/review.md +1 -1
  91. package/scripts/agent/agent-headless.ts +29 -0
  92. package/scripts/agent/agent-launch-environment.ts +6 -2
  93. package/scripts/agent/codex-agent-argv.ts +2 -1
  94. package/scripts/auto-ok/auto-ok-cli.ts +1 -1
  95. package/scripts/backlog/backlog-arrival.ts +3 -3
  96. package/scripts/backlog/backlog-budget.ts +1 -1
  97. package/scripts/backlog/backlog-drive-args.ts +135 -0
  98. package/scripts/backlog/backlog-drive-cli.ts +11 -137
  99. package/scripts/backlog/backlog-drive-launch.ts +39 -0
  100. package/scripts/backlog/backlog-drive-named-offer.ts +3 -5
  101. package/scripts/backlog/backlog-drive-named.ts +3 -3
  102. package/scripts/backlog/backlog-drive-offer-argv.ts +1 -1
  103. package/scripts/backlog/backlog-drive-owner.ts +1 -1
  104. package/scripts/backlog/backlog-drive-restore.ts +1 -1
  105. package/scripts/backlog/backlog-drive-retrospective.ts +1 -1
  106. package/scripts/backlog/backlog-drive.ts +1 -1
  107. package/scripts/backlog/backlog-next.ts +16 -5
  108. package/scripts/backlog/backlog-offer-cli.ts +6 -6
  109. package/scripts/backlog/backlog-offer.ts +1 -1
  110. package/scripts/backlog/backlog-plan-cli.ts +1 -1
  111. package/scripts/backlog/backlog-pool.ts +57 -11
  112. package/scripts/backlog/backlog-ready.ts +1 -1
  113. package/scripts/backlog/backlog-scope.ts +1 -1
  114. package/scripts/backlog/backlog-stalled-detect.ts +2 -2
  115. package/scripts/backlog/backlog-stalled.ts +1 -1
  116. package/scripts/build/build-codex-hooks.ts +3 -1
  117. package/scripts/build/build-commands.ts +66 -0
  118. package/scripts/build/build-hooks.ts +2 -1
  119. package/scripts/build/build-library.ts +12 -3
  120. package/scripts/build/build.ts +70 -0
  121. package/scripts/build/local-bin.ts +3 -13
  122. package/scripts/delegation/investigation-reads.ts +3 -1
  123. package/scripts/discovery/repo-origin.ts +5 -5
  124. package/scripts/doctor/doctor-consumer.ts +2 -2
  125. package/scripts/doctor/doctor-io.ts +2 -3
  126. package/scripts/document/capped-print-part.ts +30 -0
  127. package/scripts/document/capped-print.ts +3 -4
  128. package/scripts/document/document-byte-budget.ts +11 -2
  129. package/scripts/document/document-scan.ts +117 -0
  130. package/scripts/document/document-section.ts +143 -16
  131. package/scripts/document/entry-read-budget.ts +5 -3
  132. package/scripts/document/entry-read-set.ts +10 -89
  133. package/scripts/document/read-set-cost.ts +98 -0
  134. package/scripts/epic/epic-add-body.ts +1 -0
  135. package/scripts/epic/epic-audit-checks.ts +1 -1
  136. package/scripts/epic/epic-audit-rationale.ts +4 -3
  137. package/scripts/epic/epic-bundle-cli.ts +14 -3
  138. package/scripts/epic/epic-bundle-poll.ts +41 -0
  139. package/scripts/epic/epic-busy.ts +1 -1
  140. package/scripts/epic/epic-candidate-confirm.ts +3 -2
  141. package/scripts/epic/epic-classify.ts +1 -1
  142. package/scripts/epic/epic-cli-argv.ts +78 -46
  143. package/scripts/epic/epic-cli-remove.ts +11 -19
  144. package/scripts/epic/epic-cli.ts +74 -73
  145. package/scripts/epic/epic-close-comment.ts +1 -1
  146. package/scripts/epic/epic-close.ts +1 -1
  147. package/scripts/epic/epic-cross-repo.ts +5 -5
  148. package/scripts/epic/epic-graph.ts +1 -1
  149. package/scripts/epic/epic-index.ts +1 -1
  150. package/scripts/epic/epic-issue.ts +2 -6
  151. package/scripts/epic/epic-lane-offer.ts +2 -2
  152. package/scripts/epic/epic-next.ts +29 -42
  153. package/scripts/epic/epic-solo-stale.ts +1 -1
  154. package/scripts/epic/epic-triage.ts +8 -4
  155. package/scripts/epic/epic-validate.ts +1 -1
  156. package/scripts/followup/git-followup-finish.ts +2 -2
  157. package/scripts/followup/git-followup-label.ts +2 -2
  158. package/scripts/followup/git-followup-merged.ts +2 -2
  159. package/scripts/followup/git-pr-followup-checks.ts +142 -0
  160. package/scripts/followup/git-pr-followup.ts +4 -129
  161. package/scripts/gate/core-budget.ts +69 -1
  162. package/scripts/gate/gate-plan.ts +47 -7
  163. package/scripts/gate/gate-skip.ts +38 -7
  164. package/scripts/gate/hook-gate-reuse.ts +12 -10
  165. package/scripts/gate/pre-commit-type-check.ts +4 -1
  166. package/scripts/gate/project-checks.ts +6 -9
  167. package/scripts/gate/type-check-step.ts +2 -3
  168. package/scripts/gate/verification-gate.ts +27 -8
  169. package/scripts/gh/git-gh-api-path.ts +2 -2
  170. package/scripts/gh/git-gh-issue-rest.ts +3 -3
  171. package/scripts/gh/git-gh-issue-write.ts +53 -7
  172. package/scripts/gh/git-gh-pr-read.ts +64 -19
  173. package/scripts/gh/git-gh-pr-rest.ts +1 -1
  174. package/scripts/gh/git-gh-pr.ts +5 -1
  175. package/scripts/gh/git-pr-ai-review.ts +1 -1
  176. package/scripts/gh/git-pr-checks-eval.ts +1 -3
  177. package/scripts/gh/git-pr-checks-parse.ts +1 -1
  178. package/scripts/gh/git-pr-checks-watch.ts +6 -5
  179. package/scripts/gh/git-pr-checks.ts +7 -5
  180. package/scripts/gh/git-pr-coderabbit.ts +1 -1
  181. package/scripts/gh/git-pr-error.ts +1 -3
  182. package/scripts/gh/git-pr.ts +9 -13
  183. package/scripts/gh/github-issue-url.ts +2 -2
  184. package/scripts/git/constants.ts +2 -6
  185. package/scripts/git/git-command.ts +20 -218
  186. package/scripts/git/git-diff-reads.ts +225 -0
  187. package/scripts/git/git-error.ts +4 -12
  188. package/scripts/git/git-pre-push-hook.ts +139 -0
  189. package/scripts/git/git-prompt.ts +2 -6
  190. package/scripts/git/git-spawn-sync.ts +3 -1
  191. package/scripts/git/git-spawn.ts +1 -1
  192. package/scripts/git/git-staging.ts +4 -6
  193. package/scripts/git/git-status.ts +3 -9
  194. package/scripts/hooks/codex-hook-adapter.ts +1 -1
  195. package/scripts/hooks/edited-cspell.ts +2 -4
  196. package/scripts/hooks/format-edited-file.ts +3 -12
  197. package/scripts/hooks/pre-push-unit.ts +31 -9
  198. package/scripts/hooks/reserved-run.ts +2 -2
  199. package/scripts/hooks/run-hook.sh +5 -4
  200. package/scripts/hooks/stop-guard.ts +5 -3
  201. package/scripts/init/init-actions.ts +0 -5
  202. package/scripts/init/init-ai-copy.ts +13 -2
  203. package/scripts/init/init-logic-json-merge.ts +19 -0
  204. package/scripts/init/init-logic-secretlint.ts +7 -7
  205. package/scripts/init/init-logic-workspace.ts +41 -2
  206. package/scripts/init/init-logic.ts +16 -26
  207. package/scripts/init/init.ts +5 -15
  208. package/scripts/init/initial-commit.ts +4 -4
  209. package/scripts/init/kit-development-versions.ts +40 -0
  210. package/scripts/init/kit-setup-state.ts +2 -2
  211. package/scripts/init/start-exec.ts +68 -19
  212. package/scripts/init/start-setup-pr.ts +9 -9
  213. package/scripts/init/start-steps.ts +6 -10
  214. package/scripts/issue/defect-rate-cli.ts +1 -1
  215. package/scripts/issue/git-next-issues.ts +1 -1
  216. package/scripts/issue/issue-auto-ok.ts +1 -1
  217. package/scripts/issue/issue-backlinks-cli.ts +2 -2
  218. package/scripts/issue/issue-backlinks.ts +9 -9
  219. package/scripts/issue/issue-comment-cli.ts +19 -13
  220. package/scripts/issue/issue-file-cli.ts +45 -18
  221. package/scripts/issue/issue-file.ts +24 -1
  222. package/scripts/issue/issue-scout-closed.ts +1 -1
  223. package/scripts/issue/issue-state-cli.ts +30 -74
  224. package/scripts/josh/josh-command-map.ts +2 -0
  225. package/scripts/josh/josh-command-types.ts +11 -0
  226. package/scripts/josh/josh-commands-ai.ts +4 -4
  227. package/scripts/josh/josh-commands-backlog.ts +4 -1
  228. package/scripts/josh/josh-commands-development.ts +10 -0
  229. package/scripts/josh/josh-commands-document.ts +1 -0
  230. package/scripts/josh/josh-commands-lane.ts +22 -0
  231. package/scripts/josh/josh-commands-maintenance.ts +4 -4
  232. package/scripts/josh/josh-commands-run.ts +12 -7
  233. package/scripts/josh/josh-in-process.ts +28 -9
  234. package/scripts/josh/josh-logic.ts +33 -15
  235. package/scripts/josh/process-identity.ts +1 -3
  236. package/scripts/josh/session-language-cli.ts +3 -4
  237. package/scripts/lane/lane-await.ts +5 -1
  238. package/scripts/lane/lane-child-invocation.ts +2 -2
  239. package/scripts/lane/lane-cli.ts +3 -3
  240. package/scripts/lane/lane-dispatch.ts +14 -10
  241. package/scripts/lane/lane-environment.ts +5 -1
  242. package/scripts/lane/lane-handoff.ts +1 -1
  243. package/scripts/lane/lane-install.ts +2 -13
  244. package/scripts/lane/lane-launch-cli.ts +15 -1
  245. package/scripts/lane/lane-ledger.ts +145 -0
  246. package/scripts/lane/lane-leftover.ts +1 -1
  247. package/scripts/lane/lane-load.ts +108 -0
  248. package/scripts/lane/lane-measure-cli.ts +149 -0
  249. package/scripts/lane/lane-occupancy.ts +3 -0
  250. package/scripts/lane/lane-reap.ts +1 -3
  251. package/scripts/lane/lane-relaunch.ts +1 -1
  252. package/scripts/lane/lane-stats.ts +224 -0
  253. package/scripts/lane/lane-vacant.ts +36 -0
  254. package/scripts/lane/openai-lane-ship.ts +2 -2
  255. package/scripts/lane/openai-lane-supervisor-owner.ts +180 -0
  256. package/scripts/lane/openai-lane-supervisor.ts +7 -165
  257. package/scripts/lane/openai-review-broker.ts +2 -4
  258. package/scripts/lib/ancestor-directories.ts +35 -0
  259. package/scripts/lib/animation-helpers.ts +2 -2
  260. package/scripts/lib/buffered-process.ts +3 -7
  261. package/scripts/lib/cli-flags.ts +71 -1
  262. package/scripts/lib/spawn-exit.ts +2 -2
  263. package/scripts/lib/timeouts.ts +35 -2
  264. package/scripts/lines/line-budget.ts +4 -6
  265. package/scripts/notify/telegram-test.ts +6 -0
  266. package/scripts/observations/observation-ledger-line.ts +6 -6
  267. package/scripts/observations/observation-ledger-migrate.ts +55 -4
  268. package/scripts/observations/observation-ledger.ts +26 -7
  269. package/scripts/overrides/lockfile-overrides.ts +1 -1
  270. package/scripts/overrides/overrides-logic.ts +1 -1
  271. package/scripts/propagate/propagate-git.ts +1 -1
  272. package/scripts/propagate/propagate-publish.ts +2 -2
  273. package/scripts/propagate/propagate-steps.ts +20 -15
  274. package/scripts/propagate/propagate.ts +36 -27
  275. package/scripts/refactor/import-graph.ts +18 -1
  276. package/scripts/refactor/refactor-lint.ts +4 -4
  277. package/scripts/repo/repository-labels.ts +2 -2
  278. package/scripts/repo/required-checks-logic.ts +1 -3
  279. package/scripts/review/live-evidence.ts +2 -4
  280. package/scripts/review/review-brief-cli.ts +1 -1
  281. package/scripts/review/review-finding-ledger.ts +1 -1
  282. package/scripts/review/review-findings-cli.ts +1 -3
  283. package/scripts/rules/decision-oracle-batch.ts +128 -0
  284. package/scripts/rules/decision-oracle-tokens.ts +21 -0
  285. package/scripts/rules/decision-oracle.ts +8 -120
  286. package/scripts/rules/delivered-rules.ts +26 -182
  287. package/scripts/rules/direct-filing.ts +1 -1
  288. package/scripts/rules/early-heartbeat.ts +3 -3
  289. package/scripts/rules/git-argv.ts +1 -1
  290. package/scripts/rules/git-force.ts +1 -1
  291. package/scripts/rules/implementation-cut.ts +2 -2
  292. package/scripts/rules/index-guard.ts +1 -1
  293. package/scripts/rules/issue-comments.ts +118 -0
  294. package/scripts/rules/{issue-fold.ts → issue-fold-rule.ts} +2 -2
  295. package/scripts/rules/lane-background.ts +2 -2
  296. package/scripts/rules/lane-park.ts +18 -0
  297. package/scripts/rules/lane-split-park.ts +128 -0
  298. package/scripts/rules/oracle-firing.ts +1 -1
  299. package/scripts/rules/poll-loop.ts +1 -1
  300. package/scripts/rules/pre-gate-cut.ts +1 -1
  301. package/scripts/rules/protected-files.ts +59 -4
  302. package/scripts/rules/{run-tail.ts → run-tail-rule.ts} +2 -2
  303. package/scripts/rules/shell-body-trigger.ts +1 -1
  304. package/scripts/rules/stop-rules.ts +18 -7
  305. package/scripts/rules/test-declared-commit.ts +4 -4
  306. package/scripts/rules/wip-cap.ts +63 -0
  307. package/scripts/run/{run-carry-args.ts → carry/run-carry-args.ts} +37 -13
  308. package/scripts/run/{run-carry-change.ts → carry/run-carry-change.ts} +29 -7
  309. package/scripts/run/{run-carry-cli.ts → carry/run-carry-cli.ts} +4 -6
  310. package/scripts/run/{run-carry.ts → carry/run-carry.ts} +1 -1
  311. package/scripts/run/{run-cut-args.ts → cut/run-cut-args.ts} +1 -1
  312. package/scripts/run/{run-cut-cli.ts → cut/run-cut-cli.ts} +2 -2
  313. package/scripts/run/{run-cut.ts → cut/run-cut.ts} +1 -1
  314. package/scripts/run/{run-entry-cli.ts → entry/run-entry-cli.ts} +11 -11
  315. package/scripts/run/{run-entry.ts → entry/run-entry.ts} +2 -2
  316. package/scripts/run/{run-event-scope.ts → event/run-event-scope.ts} +1 -1
  317. package/scripts/run/{run-event-stream-emit.ts → event/run-event-stream-emit.ts} +1 -1
  318. package/scripts/run/{run-event-stream.ts → event/run-event-stream.ts} +16 -2
  319. package/scripts/run/{run-hold-cli.ts → hold/run-hold-cli.ts} +5 -5
  320. package/scripts/run/{run-merge-cli.ts → merge/run-merge-cli.ts} +10 -5
  321. package/scripts/run/{run-merge-steps.ts → merge/run-merge-steps.ts} +53 -5
  322. package/scripts/run/{run-merge.ts → merge/run-merge.ts} +1 -1
  323. package/scripts/run/{run-progress-cli.ts → progress/run-progress-cli.ts} +1 -1
  324. package/scripts/run/{run-progress-config.ts → progress/run-progress-config.ts} +2 -17
  325. package/scripts/run/{run-progress-read.ts → progress/run-progress-read.ts} +5 -5
  326. package/scripts/run/{run-progress.ts → progress/run-progress.ts} +1 -1
  327. package/scripts/run/{run-review-steps.ts → review/run-review-steps.ts} +2 -3
  328. package/scripts/run/run-ending.ts +2 -2
  329. package/scripts/run/run-halfrun-resume.ts +6 -1
  330. package/scripts/run/run-headless.ts +1 -1
  331. package/scripts/run/run-invocation.ts +85 -84
  332. package/scripts/run/run-liveness.ts +1 -1
  333. package/scripts/run/run-parent-cut-hook.ts +1 -1
  334. package/scripts/run/run-preflight.ts +6 -6
  335. package/scripts/run/run-prep-cli.ts +1 -1
  336. package/scripts/run/run-prrun-resume.ts +1 -1
  337. package/scripts/run/run-report-cli.ts +4 -4
  338. package/scripts/run/run-report.ts +2 -2
  339. package/scripts/run/run-status-cli.ts +1 -1
  340. package/scripts/run/run-step-cli.ts +3 -3
  341. package/scripts/run/run-step.ts +2 -2
  342. package/scripts/run/run-stop-notify.ts +1 -1
  343. package/scripts/run/run-stranded-detect.ts +4 -4
  344. package/scripts/run/run-stranded.ts +2 -2
  345. package/scripts/run/run-watcher-guard-cli.ts +1 -1
  346. package/scripts/run/run-watcher-guard.ts +5 -3
  347. package/scripts/run/run-watcher-hook.ts +1 -1
  348. package/scripts/run/{run-ship-cli.ts → ship/run-ship-cli.ts} +2 -2
  349. package/scripts/run/{run-ship-detach.ts → ship/run-ship-detach.ts} +3 -3
  350. package/scripts/run/ship/run-ship-lock.ts +50 -0
  351. package/scripts/run/{run-ship-preflight.ts → ship/run-ship-preflight.ts} +6 -2
  352. package/scripts/run/{run-ship-probe.ts → ship/run-ship-probe.ts} +2 -2
  353. package/scripts/run/{run-ship-return.ts → ship/run-ship-return.ts} +4 -3
  354. package/scripts/run/{run-ship-review-steps.ts → ship/run-ship-review-steps.ts} +3 -3
  355. package/scripts/run/{run-ship-scoped.ts → ship/run-ship-scoped.ts} +10 -1
  356. package/scripts/run/{run-ship-steps.ts → ship/run-ship-steps.ts} +11 -12
  357. package/scripts/run/ship/run-ship-stop-text.ts +13 -0
  358. package/scripts/run/{run-ship-sync.ts → ship/run-ship-sync.ts} +25 -11
  359. package/scripts/run/{run-tidy-lanes.ts → tidy/run-tidy-lanes.ts} +1 -1
  360. package/scripts/run/{run-wake-cli.ts → wake/run-wake-cli.ts} +23 -8
  361. package/scripts/run/{run-wake-describe.ts → wake/run-wake-describe.ts} +3 -3
  362. package/scripts/run/{run-wake-driver.ts → wake/run-wake-driver.ts} +59 -8
  363. package/scripts/run/{run-wake-handoff.ts → wake/run-wake-handoff.ts} +1 -1
  364. package/scripts/run/{run-wake-loop.ts → wake/run-wake-loop.ts} +8 -2
  365. package/scripts/run/wake/run-wake-restart.ts +58 -0
  366. package/scripts/run/{run-wake-session.ts → wake/run-wake-session.ts} +3 -3
  367. package/scripts/run/{run-wake.ts → wake/run-wake.ts} +1 -1
  368. package/scripts/safe-chain/preinstall-command.ts +20 -21
  369. package/scripts/safe-chain/project-config.ts +19 -15
  370. package/scripts/sync/sync-ai-files.ts +1 -1
  371. package/scripts/sync/sync-configs.ts +2 -1
  372. package/scripts/sync/sync.ts +15 -2
  373. package/scripts/test/unit-worker-share.ts +1 -0
  374. package/scripts/time-runtime/time-background.ts +5 -1
  375. package/scripts/time-runtime/time-instant.ts +3 -1
  376. package/scripts/time-runtime/time-spans.ts +6 -139
  377. package/scripts/time-runtime/time-tool-call.ts +160 -0
  378. package/scripts/version/effective-upstream.ts +2 -20
  379. package/scripts/version/latest-corepack.ts +17 -17
  380. package/scripts/version/latest-regression.ts +1 -1
  381. package/scripts/version/latest-update.ts +4 -4
  382. package/scripts/version/npm-registry.ts +20 -5
  383. package/scripts/version/publishable-range-check.ts +2 -2
  384. package/scripts/version/publishable-range.ts +1 -1
  385. package/scripts/version/release-age.ts +48 -38
  386. package/scripts/version/release-hold.ts +1 -1
  387. package/scripts/version/safe-chain-version-update.ts +40 -0
  388. package/scripts/version/upgrade-shell-command.ts +48 -8
  389. package/scripts/version/version-check-logic.ts +23 -14
  390. package/scripts/version/version-commands.ts +23 -11
  391. package/scripts/version/version-remote.ts +28 -13
  392. package/templates/pnpm-workspace.basic.yaml +4 -0
  393. package/templates/workflows/dependabot-auto-merge.yml +5 -5
  394. package/templates/workflows/github-release.yml +2 -0
  395. package/scripts/build/build-config-merge.ts +0 -27
  396. package/scripts/build/build-managed-marker.ts +0 -27
  397. package/scripts/build/build-self-sync-guard.ts +0 -27
  398. package/scripts/build/build-version.ts +0 -26
  399. package/scripts/version/preinstall-version-update.ts +0 -86
  400. /package/scripts/git/{schemas.ts → git-schemas.ts} +0 -0
  401. /package/scripts/overrides/{schemas.ts → overrides-schemas.ts} +0 -0
  402. /package/scripts/run/{run-carry-conversation.ts → carry/run-carry-conversation.ts} +0 -0
  403. /package/scripts/run/{run-carry-reclaim.ts → carry/run-carry-reclaim.ts} +0 -0
  404. /package/scripts/run/{run-carry-stash.ts → carry/run-carry-stash.ts} +0 -0
  405. /package/scripts/run/{run-carry-streak.ts → carry/run-carry-streak.ts} +0 -0
  406. /package/scripts/run/{run-cut-handoff.ts → cut/run-cut-handoff.ts} +0 -0
  407. /package/scripts/run/{run-cut-report.ts → cut/run-cut-report.ts} +0 -0
  408. /package/scripts/run/{run-entry-stop.ts → entry/run-entry-stop.ts} +0 -0
  409. /package/scripts/run/{run-event-cli.ts → event/run-event-cli.ts} +0 -0
  410. /package/scripts/run/{run-event-follow.ts → event/run-event-follow.ts} +0 -0
  411. /package/scripts/run/{run-event-render.ts → event/run-event-render.ts} +0 -0
  412. /package/scripts/run/{run-event-watch.ts → event/run-event-watch.ts} +0 -0
  413. /package/scripts/run/{run-hold.ts → hold/run-hold.ts} +0 -0
  414. /package/scripts/run/{run-progress-args.ts → progress/run-progress-args.ts} +0 -0
  415. /package/scripts/run/{run-progress-clock.ts → progress/run-progress-clock.ts} +0 -0
  416. /package/scripts/run/{run-review-cli.ts → review/run-review-cli.ts} +0 -0
  417. /package/scripts/run/{run-review.ts → review/run-review.ts} +0 -0
  418. /package/scripts/run/{run-ship-next.ts → ship/run-ship-next.ts} +0 -0
  419. /package/scripts/run/{run-ship-pre-detach.ts → ship/run-ship-pre-detach.ts} +0 -0
  420. /package/scripts/run/{run-ship-review.ts → ship/run-ship-review.ts} +0 -0
  421. /package/scripts/run/{run-ship-stage.ts → ship/run-ship-stage.ts} +0 -0
  422. /package/scripts/run/{run-ship.ts → ship/run-ship.ts} +0 -0
  423. /package/scripts/run/{run-tidy-cli.ts → tidy/run-tidy-cli.ts} +0 -0
  424. /package/scripts/run/{run-tidy-stashes.ts → tidy/run-tidy-stashes.ts} +0 -0
  425. /package/scripts/run/{run-tidy.ts → tidy/run-tidy.ts} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  hook_decision
3
- } from "./chunk-32GQTL4F.js";
3
+ } from "./chunk-6HJJXRBX.js";
4
4
  import {
5
5
  cost_blocks,
6
6
  cost_transcript,
@@ -8,10 +8,25 @@ import {
8
8
  time_bundle_call,
9
9
  time_shell,
10
10
  time_spans
11
- } from "./chunk-S6X6WYKR.js";
11
+ } from "./chunk-55HHG5PX.js";
12
12
 
13
13
  // scripts/delegation/investigation-reads.ts
14
+ import path2 from "node:path";
15
+
16
+ // scripts/document/capped-print-part.ts
14
17
  import path from "node:path";
18
+ var DIRECTORY_PREFIX = "josh-capped-print-";
19
+ var PART_PREFIX = "part-";
20
+ var PART_SUFFIX = ".md";
21
+ var PART_PATTERN = /^part-[1-9]\d*\.md$/u;
22
+ function part_name(index) {
23
+ return `${PART_PREFIX}${String(index + 1)}${PART_SUFFIX}`;
24
+ }
25
+ function is_part_file(absolute) {
26
+ const parent = path.basename(path.dirname(absolute));
27
+ return parent.startsWith(DIRECTORY_PREFIX) && PART_PATTERN.test(path.basename(absolute));
28
+ }
29
+ var capped_print_part = { DIRECTORY_PREFIX, part_name, is_part_file };
15
30
 
16
31
  // scripts/delegation/delegation-policy.ts
17
32
  var DELEGATE_VERDICT = "delegate";
@@ -165,18 +180,18 @@ var INSTRUCTION_PATHS = ["prompts", ".claude/skills"];
165
180
  var INSTRUCTION_FILES = /* @__PURE__ */ new Set(["CLAUDE.md", "AGENTS.md", "GEMINI.md"]);
166
181
  var REPOSITORY_ROOT = process.cwd();
167
182
  function resolved(target) {
168
- return path.resolve(REPOSITORY_ROOT, target);
183
+ return path2.resolve(REPOSITORY_ROOT, target);
169
184
  }
170
185
  function repository_relative(absolute) {
171
- return path.relative(REPOSITORY_ROOT, absolute);
186
+ return path2.relative(REPOSITORY_ROOT, absolute);
172
187
  }
173
188
  function is_instruction_document(target) {
174
189
  const relative = repository_relative(resolved(target));
175
- const segments = relative.split(path.sep);
176
- return INSTRUCTION_FILES.has(segments.at(-1) ?? "") || INSTRUCTION_PATHS.some((prefix) => relative.startsWith(`${prefix}${path.sep}`));
190
+ const segments = relative.split(path2.sep);
191
+ return INSTRUCTION_FILES.has(segments.at(-1) ?? "") || INSTRUCTION_PATHS.some((prefix) => relative.startsWith(`${prefix}${path2.sep}`));
177
192
  }
178
193
  var SESSION_TEMP_SEGMENT = /^claude-\d+$/u;
179
- var SESSION_STATE_SEGMENTS = cost_transcript.TRANSCRIPT_ROOT.split(path.sep);
194
+ var SESSION_STATE_SEGMENTS = cost_transcript.TRANSCRIPT_ROOT.split(path2.sep);
180
195
  var HARNESS_OUTPUT_DIRECTORY = "tasks";
181
196
  var HARNESS_OUTPUT_EXTENSION = ".output";
182
197
  var FILE_SEGMENT_INDEX = -1;
@@ -192,9 +207,9 @@ function is_outside_repository(absolute) {
192
207
  }
193
208
  function is_session_artifact(target) {
194
209
  const absolute = resolved(target);
195
- const segments = absolute.split(path.sep);
210
+ const segments = absolute.split(path2.sep);
196
211
  if (!is_outside_repository(absolute)) return false;
197
- return segments.some((_segment, index) => has_state_root(segments, index)) || is_harness_output(segments);
212
+ return segments.some((_segment, index) => has_state_root(segments, index)) || is_harness_output(segments) || capped_print_part.is_part_file(absolute);
198
213
  }
199
214
  function is_subject_file(target) {
200
215
  return !is_instruction_document(target) && !is_session_artifact(target);
@@ -291,7 +306,7 @@ function is_rearmed(tally, refused_at_ms) {
291
306
  return is_at_threshold(tally.pending_since) || is_at_search_threshold(tally.searches_since);
292
307
  }
293
308
  function is_unit_transcript(transcript) {
294
- return transcript.split(path.sep).includes(cost_transcript.UNIT_DIRECTORY);
309
+ return transcript.split(path2.sep).includes(cost_transcript.UNIT_DIRECTORY);
295
310
  }
296
311
  function is_unit_run(run) {
297
312
  return run !== void 0 && is_unit_transcript(run.transcript);
@@ -0,0 +1,12 @@
1
+ import {
2
+ FETCH_TIMEOUT_MS
3
+ } from "./chunk-ELCN5LCH.js";
4
+
5
+ // scripts/lib/timed-fetch.ts
6
+ async function timed_fetch(url, init = {}, timeout_ms = FETCH_TIMEOUT_MS) {
7
+ return await fetch(url, { ...init, signal: AbortSignal.timeout(timeout_ms) });
8
+ }
9
+
10
+ export {
11
+ timed_fetch
12
+ };
@@ -1,12 +1,14 @@
1
1
  import {
2
2
  lane_paths,
3
- stamp_file,
4
3
  time_density_hook,
5
4
  time_hook_transcript
6
- } from "./chunk-S6X6WYKR.js";
5
+ } from "./chunk-55HHG5PX.js";
7
6
  import {
8
7
  josh_environment_file
9
8
  } from "./chunk-WPALEIRX.js";
9
+ import {
10
+ stamp_file
11
+ } from "./chunk-ELCN5LCH.js";
10
12
 
11
13
  // scripts/josh/hook-decision.ts
12
14
  import { z } from "zod";
@@ -0,0 +1,15 @@
1
+ // scripts/lib/error-message.ts
2
+ function message_of(error) {
3
+ return error instanceof Error ? error.message : String(error);
4
+ }
5
+ var DEBUG_ENV_KEY = "JOSH_DEBUG";
6
+ function trace_swallowed(where, error) {
7
+ if ((process.env[DEBUG_ENV_KEY] ?? "").trim() === "") return;
8
+ process.stderr.write(`josh debug: ${where}: ${message_of(error)}
9
+ `);
10
+ }
11
+ var error_text = { message_of, trace_swallowed };
12
+
13
+ export {
14
+ error_text
15
+ };
@@ -0,0 +1,135 @@
1
+ // scripts/init/init-paths.ts
2
+ import path from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ var PACKAGE_DIR = path.join(path.dirname(fileURLToPath(import.meta.url)), "..", "..");
5
+ var PROJECT_ROOT = process.cwd();
6
+
7
+ // scripts/josh/stamp-file.ts
8
+ import { createHash, randomUUID } from "node:crypto";
9
+ import { lstatSync, readFileSync, renameSync, rmSync, writeFileSync } from "node:fs";
10
+ import path2 from "node:path";
11
+
12
+ // scripts/josh/platform-temporary.ts
13
+ import { accessSync, constants } from "node:fs";
14
+ import { tmpdir } from "node:os";
15
+ var POSIX_TEMP_ROOT = "/tmp";
16
+ var WINDOWS_PLATFORM = "win32";
17
+ function is_writable_directory(directory) {
18
+ try {
19
+ accessSync(directory, constants.W_OK);
20
+ return true;
21
+ } catch {
22
+ return false;
23
+ }
24
+ }
25
+ function resolve_temporary_root(platform, can_write = is_writable_directory) {
26
+ if (platform === WINDOWS_PLATFORM) return tmpdir();
27
+ return can_write(POSIX_TEMP_ROOT) ? POSIX_TEMP_ROOT : tmpdir();
28
+ }
29
+ var TEMP_ROOT_KEY = "JOSH_TEMP_ROOT";
30
+ function temporary_root(override, platform) {
31
+ return override === void 0 || override === "" ? resolve_temporary_root(platform) : override;
32
+ }
33
+ var PLATFORM_TEMP_ROOT = temporary_root(process.env[TEMP_ROOT_KEY], process.platform);
34
+
35
+ // scripts/josh/stamp-file.ts
36
+ var HASH_ALGORITHM = "sha256";
37
+ var STAMP_SUFFIX = ".json";
38
+ var STAMP_KEY_LENGTH = 16;
39
+ var STAMP_FILE_MODE = 384;
40
+ var STAMP_WRITE_FLAG = "wx";
41
+ var STAMP_CREATE_FLAG = STAMP_WRITE_FLAG;
42
+ var EXISTS_ERROR_CODE = "EEXIST";
43
+ var ACCOUNT_KEY_SEPARATOR = ":";
44
+ function digest(content) {
45
+ return createHash(HASH_ALGORITHM).update(content).digest("hex");
46
+ }
47
+ function account_key() {
48
+ return String(process.getuid?.() ?? "");
49
+ }
50
+ function stamp_path(prefix, root = PACKAGE_DIR, suffix = STAMP_SUFFIX) {
51
+ const key = digest(`${account_key()}${ACCOUNT_KEY_SEPARATOR}${root}`).slice(0, STAMP_KEY_LENGTH);
52
+ return path2.join(PLATFORM_TEMP_ROOT, `${prefix}${key}${suffix}`);
53
+ }
54
+ function write_exclusively(target, content) {
55
+ rmSync(target, { force: true });
56
+ writeFileSync(target, content, { flag: STAMP_WRITE_FLAG, mode: STAMP_FILE_MODE });
57
+ return target;
58
+ }
59
+ function write_stamp(target, payload) {
60
+ return write_exclusively(target, JSON.stringify(payload));
61
+ }
62
+ function replace_stamp(target, payload) {
63
+ const temporary = `${target}.${String(process.pid)}.${randomUUID()}`;
64
+ try {
65
+ writeFileSync(temporary, JSON.stringify(payload), {
66
+ flag: STAMP_CREATE_FLAG,
67
+ mode: STAMP_FILE_MODE
68
+ });
69
+ renameSync(temporary, target);
70
+ return target;
71
+ } finally {
72
+ rmSync(temporary, { force: true });
73
+ }
74
+ }
75
+ function write_text_stamp(target, text) {
76
+ return write_exclusively(target, text);
77
+ }
78
+ function create_stamp(target, payload) {
79
+ try {
80
+ writeFileSync(target, JSON.stringify(payload), {
81
+ flag: STAMP_CREATE_FLAG,
82
+ mode: STAMP_FILE_MODE
83
+ });
84
+ return true;
85
+ } catch (error) {
86
+ if (error.code === EXISTS_ERROR_CODE) return false;
87
+ throw error;
88
+ }
89
+ }
90
+ function remove_stamp(target) {
91
+ rmSync(target, { force: true });
92
+ }
93
+ function is_own_regular_file(source) {
94
+ const stats = lstatSync(source);
95
+ if (!stats.isFile()) return false;
96
+ const uid = process.getuid?.();
97
+ return uid === void 0 || stats.uid === uid;
98
+ }
99
+ function read_stamp_text(source) {
100
+ try {
101
+ if (!is_own_regular_file(source)) return void 0;
102
+ return readFileSync(source, "utf8");
103
+ } catch {
104
+ return void 0;
105
+ }
106
+ }
107
+ var stamp_file = {
108
+ create_stamp,
109
+ digest,
110
+ is_own_regular_file,
111
+ read_stamp_text,
112
+ replace_stamp,
113
+ remove_stamp,
114
+ stamp_path,
115
+ write_stamp,
116
+ write_text_stamp
117
+ };
118
+
119
+ // scripts/lib/timeouts.ts
120
+ var PROBE_TIMEOUT_MS = 2e3;
121
+ var FETCH_TIMEOUT_MS = 1e4;
122
+ var GIT_TIMEOUT_MS = 1e4;
123
+ var HOOK_PROCESS_TIMEOUT_MS = 15e3;
124
+ var COMMAND_TIMEOUT_MS = 3e4;
125
+
126
+ export {
127
+ PROJECT_ROOT,
128
+ PLATFORM_TEMP_ROOT,
129
+ stamp_file,
130
+ PROBE_TIMEOUT_MS,
131
+ FETCH_TIMEOUT_MS,
132
+ GIT_TIMEOUT_MS,
133
+ HOOK_PROCESS_TIMEOUT_MS,
134
+ COMMAND_TIMEOUT_MS
135
+ };
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  investigation_reads
3
- } from "./chunk-ZAL3NRGL.js";
3
+ } from "./chunk-5VMKCCC4.js";
4
4
  import {
5
5
  lane_guard_policy
6
- } from "./chunk-I4XSL4TT.js";
6
+ } from "./chunk-VC3PZPZO.js";
7
7
  import {
8
8
  hook_decision
9
- } from "./chunk-32GQTL4F.js";
9
+ } from "./chunk-6HJJXRBX.js";
10
10
 
11
11
  // scripts/delegation/investigation-guard.ts
12
12
  import { text } from "node:stream/consumers";
@@ -1,12 +1,15 @@
1
1
  import {
2
2
  resolve_local_bin,
3
3
  resolve_package_bin
4
- } from "./chunk-3V37IID6.js";
4
+ } from "./chunk-JBBMAPC4.js";
5
5
  import {
6
6
  ESLINT_EDIT_CACHE_FLAGS,
7
7
  file_reader,
8
8
  time_density_hook
9
- } from "./chunk-S6X6WYKR.js";
9
+ } from "./chunk-55HHG5PX.js";
10
+ import {
11
+ HOOK_PROCESS_TIMEOUT_MS
12
+ } from "./chunk-ELCN5LCH.js";
10
13
 
11
14
  // scripts/hooks/format-edited-file.ts
12
15
  import { existsSync as existsSync2 } from "node:fs";
@@ -47,7 +50,6 @@ var CSPELL_ARGS = [
47
50
  "--no-summary"
48
51
  ];
49
52
  var PNPM = "pnpm";
50
- var PROCESS_TIMEOUT_MS = 15e3;
51
53
  var HEADER = "The edit hook found words cspell does not know; fix them or add them to `cspell.config.yaml` now rather than at the gate:";
52
54
  var MAX_DIAGNOSTIC_CHARS = 4e3;
53
55
  var TRUNCATION_NOTICE = "\n\u2026(unknown words truncated)";
@@ -64,7 +66,7 @@ async function run_cspell(file_path, project_root) {
64
66
  cwd: project_root,
65
67
  stdout: "pipe",
66
68
  stderr: "ignore",
67
- timeout: PROCESS_TIMEOUT_MS
69
+ timeout: HOOK_PROCESS_TIMEOUT_MS
68
70
  });
69
71
  return result.stdout;
70
72
  }
@@ -170,7 +172,6 @@ var ESLINT_DAEMON = "eslint_d";
170
172
  var DAEMON_RESTART = "restart";
171
173
  var ESLINT_CONFIG_DIR = "eslint";
172
174
  var ESLINT_CONFIG_ENTRY = /^eslint\.config\.[cm]?[jt]s$/u;
173
- var PROCESS_TIMEOUT_MS2 = 15e3;
174
175
  var DIAGNOSTIC_HEADER = "The edit hook could not auto-fix these lint problems; address them now rather than at the gate:";
175
176
  var MAX_DIAGNOSTIC_CHARS2 = 4e3;
176
177
  var DIAGNOSTIC_TRUNCATION_NOTICE = "\n\u2026(diagnostics truncated)";
@@ -255,7 +256,7 @@ async function spawn_invocation(invocation, project_root) {
255
256
  env: { ESLINT_D_MISS: "fail" },
256
257
  stdout: "pipe",
257
258
  stderr: "ignore",
258
- timeout: PROCESS_TIMEOUT_MS2
259
+ timeout: HOOK_PROCESS_TIMEOUT_MS
259
260
  });
260
261
  return { exit_code: result.exitCode ?? 1, stdout: result.stdout };
261
262
  }
@@ -1,7 +1,24 @@
1
1
  // scripts/build/local-bin.ts
2
2
  import { existsSync, readFileSync } from "node:fs";
3
3
  import { createRequire } from "node:module";
4
+ import path2 from "node:path";
5
+
6
+ // scripts/lib/ancestor-directories.ts
4
7
  import path from "node:path";
8
+ var MAX_DEPTH = 64;
9
+ function list(start_directory) {
10
+ const directories = [];
11
+ let current = path.resolve(start_directory);
12
+ while (directories.length < MAX_DEPTH && !directories.includes(current)) {
13
+ directories.push(current);
14
+ current = path.dirname(current);
15
+ }
16
+ return directories;
17
+ }
18
+ function nearest(start_directory, is_match) {
19
+ return list(start_directory).find((directory) => is_match(directory));
20
+ }
21
+ var ancestor_directories = { list, nearest };
5
22
 
6
23
  // scripts/lib/schemas.ts
7
24
  import { z } from "zod";
@@ -43,32 +60,23 @@ var WINDOWS_SHIM_SUFFIX = ".cmd";
43
60
  var PACKAGE_JSON = "package.json";
44
61
  function resolve_local_bin(project_root, bin_name) {
45
62
  const shim = process.platform === WINDOWS_PLATFORM ? `${bin_name}${WINDOWS_SHIM_SUFFIX}` : bin_name;
46
- return path.join(project_root, NODE_MODULES, BIN_DIR, shim);
47
- }
48
- function ancestor_directories(start_directory) {
49
- const directories = [];
50
- let current = start_directory;
51
- while (!directories.includes(current)) {
52
- directories.push(current);
53
- current = path.dirname(current);
54
- }
55
- return directories;
63
+ return path2.join(project_root, NODE_MODULES, BIN_DIR, shim);
56
64
  }
57
65
  function find_local_bin_upwards(start_directory, bin_name) {
58
- return ancestor_directories(start_directory).map((directory) => resolve_local_bin(directory, bin_name)).find((candidate) => existsSync(candidate));
66
+ return ancestor_directories.list(start_directory).map((directory) => resolve_local_bin(directory, bin_name)).find((candidate) => existsSync(candidate));
59
67
  }
60
68
  function read_bin_entry(manifest_path, package_name, bin_name) {
61
69
  const { bin } = package_bin_schema.parse(JSON.parse(readFileSync(manifest_path, "utf8")));
62
- if (typeof bin === "string") return bin_name === path.basename(package_name) ? bin : void 0;
70
+ if (typeof bin === "string") return bin_name === path2.basename(package_name) ? bin : void 0;
63
71
  return bin?.[bin_name];
64
72
  }
65
73
  function resolve_package_bin(base_directory, package_name, bin_name) {
66
74
  try {
67
- const resolve_from = createRequire(path.join(base_directory, PACKAGE_JSON));
75
+ const resolve_from = createRequire(path2.join(base_directory, PACKAGE_JSON));
68
76
  const manifest_path = resolve_from.resolve(`${package_name}/${PACKAGE_JSON}`);
69
77
  const bin_entry = read_bin_entry(manifest_path, package_name, bin_name);
70
78
  if (bin_entry === void 0) return void 0;
71
- const cli_entry = path.join(path.dirname(manifest_path), bin_entry);
79
+ const cli_entry = path2.join(path2.dirname(manifest_path), bin_entry);
72
80
  return existsSync(cli_entry) ? cli_entry : void 0;
73
81
  } catch {
74
82
  return void 0;
@@ -76,6 +84,7 @@ function resolve_package_bin(base_directory, package_name, bin_name) {
76
84
  }
77
85
 
78
86
  export {
87
+ ancestor_directories,
79
88
  resolve_local_bin,
80
89
  find_local_bin_upwards,
81
90
  resolve_package_bin