@joshuafolkken/kit 1.1387.0 → 1.1453.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 (278) hide show
  1. package/.claude/skills/epic-commands/SKILL.md +1 -1
  2. package/.claude/skills/epic-commands/epic-bundle.md +5 -0
  3. package/.claude/skills/workflow-commands/backlogrun-lanes.md +5 -3
  4. package/.claude/skills/workflow-commands/backlogrun-park.md +2 -0
  5. package/.claude/skills/workflow-commands/backlogrun-steps.md +13 -10
  6. package/.claude/skills/workflow-commands/backlogrun.md +3 -2
  7. package/.claude/skills/workflow-commands/chain-rule.md +4 -2
  8. package/.claude/skills/workflow-commands/fullrun-steps.md +1 -1
  9. package/.claude/skills/workflow-commands/halfrun.md +1 -1
  10. package/.claude/skills/workflow-commands/issue-comments.md +6 -0
  11. package/.claude/skills/workflow-commands/kickoff.md +12 -13
  12. package/.claude/skills/workflow-commands/observation-filing.md +1 -1
  13. package/.claude/skills/workflow-commands/observation-ledger.md +3 -2
  14. package/.claude/skills/workflow-commands/pre-gate-cut.md +5 -3
  15. package/.claude/skills/workflow-commands/prerequisite.md +6 -0
  16. package/.claude/skills/workflow-commands/retrospective.md +5 -5
  17. package/.claude/skills/workflow-commands/split-assessment.md +2 -2
  18. package/README.md +27 -4
  19. package/dist/hooks/audit-provision.js +2 -2
  20. package/dist/hooks/batch-guard.js +7 -7
  21. package/dist/hooks/{chunk-2YSW3CXH.js → chunk-3C4XRYG6.js} +35 -11
  22. package/dist/hooks/{chunk-GJ7JPIHN.js → chunk-5C7L6FRC.js} +2704 -190
  23. package/dist/hooks/{chunk-FZ6FUSBM.js → chunk-723HKZO5.js} +1 -1
  24. package/dist/hooks/{chunk-STDSEPWU.js → chunk-D3NJXN5M.js} +4 -4
  25. package/dist/hooks/{chunk-NEC4AT4Z.js → chunk-DGT54IH5.js} +4 -0
  26. package/dist/hooks/{chunk-LMWBRJIP.js → chunk-EF5GQ6WS.js} +3 -3
  27. package/dist/hooks/{chunk-JBBMAPC4.js → chunk-IX6TTTI6.js} +4 -0
  28. package/dist/hooks/{chunk-IYVOLN6A.js → chunk-LBFYEOXJ.js} +3 -3
  29. package/dist/hooks/{chunk-SL4GQ2XP.js → chunk-MBJYQPEK.js} +106 -23
  30. package/dist/hooks/{chunk-WNFJLBXI.js → chunk-NO4AALP5.js} +3 -3
  31. package/dist/hooks/{chunk-J3KSS7II.js → chunk-OLMO72ON.js} +1 -1
  32. package/dist/hooks/{chunk-DCY2GWHC.js → chunk-SHYUQOIS.js} +5 -5
  33. package/dist/hooks/{chunk-EAQEGME7.js → chunk-UT7YC3N2.js} +1 -1
  34. package/dist/hooks/{chunk-EBSHN25W.js → chunk-W5ZKGTSY.js} +4 -4
  35. package/dist/hooks/{chunk-GNDJ7NJ7.js → chunk-Y3GKIKGW.js} +209 -56
  36. package/dist/hooks/{chunk-U32VSRNG.js → chunk-Z4XI7CZS.js} +89 -34
  37. package/dist/hooks/codex-hook-adapter.js +15 -15
  38. package/dist/hooks/duplicate-read-guard.js +8 -8
  39. package/dist/hooks/format-edited.js +5 -5
  40. package/dist/hooks/inputs.json +261 -201
  41. package/dist/hooks/investigation-guard.js +8 -8
  42. package/dist/hooks/pretool-guard.js +14 -14
  43. package/dist/hooks/session-lang.js +69 -16
  44. package/dist/hooks/stop-guard.js +13 -38
  45. package/dist/josh.js +95 -19
  46. package/package.json +4 -3
  47. package/prompts/collaboration-workflow/issue-template.md +10 -8
  48. package/prompts/review.md +30 -4
  49. package/scripts/agent/claude-agent-argv.ts +13 -1
  50. package/scripts/auth/auth-setup-cli.ts +101 -0
  51. package/scripts/auth/claude-token-output.ts +78 -0
  52. package/scripts/auth/claude-token.ts +68 -0
  53. package/scripts/auto-ok/auto-ok-judge-cli.ts +125 -0
  54. package/scripts/auto-ok/auto-ok-judge-read.ts +95 -0
  55. package/scripts/auto-ok/auto-ok-judge-write.ts +109 -0
  56. package/scripts/auto-ok/auto-ok-judge.ts +67 -0
  57. package/scripts/backlog/backlog-drive-cli.ts +14 -0
  58. package/scripts/backlog/backlog-drive-epic.ts +24 -8
  59. package/scripts/backlog/backlog-drive-launch.ts +3 -0
  60. package/scripts/backlog/backlog-drive-named-offer.ts +7 -2
  61. package/scripts/backlog/backlog-drive-named.ts +4 -2
  62. package/scripts/backlog/backlog-drive-unread.ts +56 -0
  63. package/scripts/backlog/backlog-drive.ts +38 -11
  64. package/scripts/backlog/backlog-overlap.ts +22 -5
  65. package/scripts/backlog/backlog-ready.ts +1 -3
  66. package/scripts/backlog/backlogrun-args.ts +13 -2
  67. package/scripts/backlog/backlogrun-cli.ts +91 -19
  68. package/scripts/backlog/backlogrun-launch.ts +24 -0
  69. package/scripts/backlog/backlogrun-replace.ts +166 -0
  70. package/scripts/backlog/backlogrun-stop.ts +178 -0
  71. package/scripts/behavior/behavior-cli.ts +6 -1
  72. package/scripts/doctor/doctor-io.ts +60 -9
  73. package/scripts/doctor/doctor.ts +20 -1
  74. package/scripts/document/document-byte-budget.ts +3 -3
  75. package/scripts/epic/epic-bundle-cli.ts +8 -8
  76. package/scripts/epic/epic-bundle-referenced.ts +2 -5
  77. package/scripts/epic/epic-bundle.ts +39 -4
  78. package/scripts/exports/unused-members-cli.ts +2 -1
  79. package/scripts/followup/followup-checks-event.ts +82 -0
  80. package/scripts/followup/git-followup-finish.ts +16 -2
  81. package/scripts/followup/git-followup-workflow.ts +5 -2
  82. package/scripts/followup/git-pr-followup-checks.ts +18 -4
  83. package/scripts/followup/git-pr-followup-wrapup.ts +5 -0
  84. package/scripts/followup/git-pr-followup.ts +4 -1
  85. package/scripts/fresh-machine/fresh-machine-cli.ts +204 -0
  86. package/scripts/fresh-machine/fresh-machine-docker.ts +65 -0
  87. package/scripts/fresh-machine/fresh-machine-image.ts +62 -0
  88. package/scripts/fresh-machine/fresh-machine-log.ts +61 -0
  89. package/scripts/fresh-machine/fresh-machine-patterns.ts +175 -0
  90. package/scripts/fresh-machine/fresh-machine-run.ts +215 -0
  91. package/scripts/fresh-machine/fresh-machine-script.ts +45 -0
  92. package/scripts/fresh-machine/fresh-machine-spec.ts +57 -0
  93. package/scripts/fresh-machine/specs/kit-test-backlogrun-python.json +34 -0
  94. package/scripts/fresh-machine/specs/kit-test-backlogrun.json +31 -0
  95. package/scripts/gate/gate-report.ts +70 -15
  96. package/scripts/gate/project-checks.ts +18 -4
  97. package/scripts/gate/scoped-green.ts +2 -1
  98. package/scripts/gate/verification-gate.ts +4 -3
  99. package/scripts/gh/gh-author-association.ts +14 -0
  100. package/scripts/gh/git-gh-conditional.ts +66 -0
  101. package/scripts/gh/git-gh-exec.ts +1 -1
  102. package/scripts/gh/git-gh-issue-read.ts +6 -3
  103. package/scripts/gh/git-gh-issue-rest.ts +1 -0
  104. package/scripts/gh/git-gh-issue-write.ts +5 -1
  105. package/scripts/gh/git-gh-issue.ts +13 -1
  106. package/scripts/gh/git-pr-checks-eval.ts +13 -0
  107. package/scripts/gh/git-pr-checks-parse.ts +8 -1
  108. package/scripts/gh/git-pr-checks-watch.ts +11 -4
  109. package/scripts/gh/git-pr-checks.ts +36 -2
  110. package/scripts/git/git-command.ts +16 -4
  111. package/scripts/git/git-schemas.ts +1 -0
  112. package/scripts/git/git-spawn-sync.ts +1 -1
  113. package/scripts/hooks/pretool-guard.ts +3 -1
  114. package/scripts/init/hook-command-rewrite.ts +31 -0
  115. package/scripts/init/init-actions.ts +7 -4
  116. package/scripts/init/init-ai-copy.ts +34 -11
  117. package/scripts/init/init-basic.ts +9 -4
  118. package/scripts/init/init-bootstrap.ts +6 -2
  119. package/scripts/init/init-dry-run-report.ts +150 -0
  120. package/scripts/init/init-dry-run.ts +189 -0
  121. package/scripts/init/init-install.ts +8 -1
  122. package/scripts/init/init-logic-toolchain.ts +76 -0
  123. package/scripts/init/init-logic.ts +2 -0
  124. package/scripts/init/init.ts +62 -42
  125. package/scripts/init/kit-setup-state.ts +11 -17
  126. package/scripts/init/own-formatter.ts +21 -0
  127. package/scripts/init/project-profile.ts +60 -12
  128. package/scripts/init/start-dry-run.ts +70 -0
  129. package/scripts/init/start-exec.ts +27 -1
  130. package/scripts/init/start-plan.ts +23 -3
  131. package/scripts/init/start-setup-pr.ts +13 -24
  132. package/scripts/init/start-steps.ts +62 -1
  133. package/scripts/init/start.ts +38 -17
  134. package/scripts/init/workflow-mark.ts +35 -0
  135. package/scripts/init/working-tree.ts +116 -0
  136. package/scripts/issue/issue-ack-cli.ts +84 -0
  137. package/scripts/issue/issue-auto-ok.ts +68 -99
  138. package/scripts/issue/issue-file-cli.ts +17 -17
  139. package/scripts/issue/issue-file.ts +1 -6
  140. package/scripts/issue/issue-labels.ts +46 -10
  141. package/scripts/issue/issue-release-cli.ts +69 -23
  142. package/scripts/issue/issue-release.ts +3 -1
  143. package/scripts/issue/issue-state-cli.ts +14 -4
  144. package/scripts/issue/issue-watch-diff.ts +152 -0
  145. package/scripts/issue/issue-watch-gate.ts +81 -0
  146. package/scripts/issue/issue-watch-hook.ts +54 -0
  147. package/scripts/issue/issue-watch.ts +240 -0
  148. package/scripts/issue/measure-rerun-cli.ts +3 -4
  149. package/scripts/josh/josh-command-map.ts +4 -0
  150. package/scripts/josh/josh-commands-ai.ts +11 -0
  151. package/scripts/josh/josh-commands-backlog.ts +2 -2
  152. package/scripts/josh/josh-commands-development.ts +1 -1
  153. package/scripts/josh/josh-commands-issue.ts +10 -3
  154. package/scripts/josh/josh-commands-lane.ts +11 -2
  155. package/scripts/josh/josh-commands-project.ts +26 -2
  156. package/scripts/josh/josh-verdict.ts +33 -4
  157. package/scripts/josh/process-identity.ts +32 -6
  158. package/scripts/lane/claude-lane-broker.ts +142 -0
  159. package/scripts/lane/lane-await.ts +6 -2
  160. package/scripts/lane/lane-broker-server.ts +69 -0
  161. package/scripts/lane/lane-cache.ts +37 -7
  162. package/scripts/lane/lane-capacity.ts +8 -6
  163. package/scripts/lane/lane-child-invocation.ts +1 -0
  164. package/scripts/lane/lane-cli.ts +15 -1
  165. package/scripts/lane/lane-close.ts +15 -6
  166. package/scripts/lane/lane-dispatch.ts +36 -10
  167. package/scripts/lane/lane-environment.ts +1 -1
  168. package/scripts/lane/lane-launch-cli.ts +13 -4
  169. package/scripts/lane/lane-ledger.ts +21 -3
  170. package/scripts/lane/lane-measure-cli.ts +10 -2
  171. package/scripts/lane/lane-open.ts +9 -1
  172. package/scripts/lane/lane-preserve.ts +49 -0
  173. package/scripts/lane/lane-reap.ts +20 -5
  174. package/scripts/lane/lane-registry.ts +6 -0
  175. package/scripts/lane/lane-restart-cli.ts +51 -0
  176. package/scripts/lane/lane-restart.ts +175 -0
  177. package/scripts/lane/lane-session-broker.ts +363 -0
  178. package/scripts/lane/lane-spent.ts +195 -0
  179. package/scripts/lane/lane-stage-stats.ts +27 -3
  180. package/scripts/lane/lane-stop-stats.ts +96 -0
  181. package/scripts/lane/openai-lane-supervisor.ts +2 -2
  182. package/scripts/lane/process-tools.ts +31 -0
  183. package/scripts/lib/buffered-process.ts +36 -2
  184. package/scripts/lib/pnpm-reach.ts +27 -0
  185. package/scripts/lib/status-icons.ts +5 -1
  186. package/scripts/lint/lint-parallel.ts +19 -2
  187. package/scripts/observations/observation-ledger-home.ts +1 -0
  188. package/scripts/observations/observation-ledger-migrate.ts +3 -15
  189. package/scripts/release/release-issue-close.ts +133 -0
  190. package/scripts/release/release-publish.ts +12 -1
  191. package/scripts/repo/repository-labels.ts +11 -1
  192. package/scripts/review/comment-ranges.ts +199 -0
  193. package/scripts/review/review-attest-cli.ts +21 -6
  194. package/scripts/review/review-brief-cli.ts +24 -7
  195. package/scripts/review/review-code-tree.ts +119 -0
  196. package/scripts/review/review-comment-round.ts +114 -0
  197. package/scripts/review/review-record-cli.ts +39 -17
  198. package/scripts/review/review-round2-cli.ts +16 -5
  199. package/scripts/review/review-round2.ts +30 -10
  200. package/scripts/review/review-stamps.ts +22 -1
  201. package/scripts/rules/implementation-cut.ts +3 -3
  202. package/scripts/rules/pre-gate-cut.ts +1 -1
  203. package/scripts/run/board/run-board-checks.ts +42 -0
  204. package/scripts/run/board/run-board-cli.ts +2 -0
  205. package/scripts/run/board/run-board-every.ts +3 -1
  206. package/scripts/run/board/run-board-fit.ts +16 -5
  207. package/scripts/run/board/run-board-fresh.ts +64 -0
  208. package/scripts/run/board/run-board-header.ts +129 -53
  209. package/scripts/run/board/run-board-labels.ts +47 -4
  210. package/scripts/run/board/run-board-lane-event.ts +66 -0
  211. package/scripts/run/board/run-board-layout.ts +57 -9
  212. package/scripts/run/board/run-board-now.ts +234 -0
  213. package/scripts/run/board/run-board-operation-read.ts +75 -0
  214. package/scripts/run/board/run-board-operation.ts +150 -0
  215. package/scripts/run/board/run-board-phase.ts +26 -1
  216. package/scripts/run/board/run-board-plan.ts +4 -6
  217. package/scripts/run/board/run-board-read.ts +49 -3
  218. package/scripts/run/board/run-board-reason.ts +124 -0
  219. package/scripts/run/board/run-board-render-checks.ts +55 -0
  220. package/scripts/run/board/run-board-render-legend.ts +12 -3
  221. package/scripts/run/board/run-board-render-slot.ts +2 -2
  222. package/scripts/run/board/run-board-render-tail.ts +128 -0
  223. package/scripts/run/board/run-board-render-thanks.ts +50 -0
  224. package/scripts/run/board/run-board-render-title.ts +58 -0
  225. package/scripts/run/board/run-board-render.ts +96 -80
  226. package/scripts/run/board/run-board-row-yield.ts +32 -0
  227. package/scripts/run/board/run-board-setup.ts +61 -13
  228. package/scripts/run/board/run-board-state.ts +10 -0
  229. package/scripts/run/board/run-board-status.ts +66 -7
  230. package/scripts/run/board/run-board-thanks-csv.ts +71 -0
  231. package/scripts/run/board/run-board-thanks-read.ts +112 -0
  232. package/scripts/run/board/run-board-thanks.ts +53 -0
  233. package/scripts/run/board/run-board-tick.ts +50 -21
  234. package/scripts/run/board/run-board-usual.ts +44 -0
  235. package/scripts/run/carry/run-carry-args.ts +9 -1
  236. package/scripts/run/carry/run-carry-cli.ts +2 -45
  237. package/scripts/run/carry/run-carry-end.ts +73 -0
  238. package/scripts/run/carry/run-carry.ts +8 -1
  239. package/scripts/run/entry/run-entry-cli.ts +5 -0
  240. package/scripts/run/event/run-event-checks.ts +54 -0
  241. package/scripts/run/event/run-event-render.ts +2 -0
  242. package/scripts/run/event/run-event-scope.ts +1 -0
  243. package/scripts/run/event/run-event-setup.ts +55 -11
  244. package/scripts/run/event/run-event-stream.ts +27 -11
  245. package/scripts/run/merge/run-merge-cli.ts +7 -4
  246. package/scripts/run/merge/run-merge-ship.ts +61 -0
  247. package/scripts/run/merge/run-merge-steps.ts +7 -14
  248. package/scripts/run/merge/run-merge-token.ts +16 -2
  249. package/scripts/run/run-headless.ts +1 -0
  250. package/scripts/run/run-step.ts +2 -0
  251. package/scripts/run/ship/run-ship-cli.ts +22 -2
  252. package/scripts/run/ship/run-ship-return.ts +31 -13
  253. package/scripts/run/ship/run-ship-review-steps.ts +17 -4
  254. package/scripts/run/ship/run-ship-stage.ts +1 -0
  255. package/scripts/run/wake/run-wake-await.ts +130 -0
  256. package/scripts/run/wake/run-wake-cli.ts +60 -71
  257. package/scripts/run/wake/run-wake-describe.ts +34 -2
  258. package/scripts/run/wake/run-wake-driver.ts +11 -4
  259. package/scripts/run/wake/run-wake-session.ts +20 -3
  260. package/scripts/run/wake/run-wake-stop.ts +37 -0
  261. package/scripts/run/wake/run-wake-supervise.ts +44 -0
  262. package/scripts/sync/claude-settings-merge.ts +144 -0
  263. package/scripts/sync/sync-ai-files.ts +28 -3
  264. package/scripts/sync/sync.ts +15 -0
  265. package/scripts/test/project-test-script.ts +73 -0
  266. package/scripts/test/skip-marker.ts +14 -1
  267. package/scripts/test/test-related.ts +3 -2
  268. package/scripts/test/test-unit-guard.ts +78 -14
  269. package/scripts/time-runtime/time-reported-failure.ts +11 -3
  270. package/scripts/uninstall/distributed-files.ts +92 -0
  271. package/scripts/uninstall/uninstall-plan.ts +119 -0
  272. package/scripts/uninstall/uninstall-report.ts +61 -0
  273. package/scripts/uninstall/uninstall.ts +206 -0
  274. package/templates/AGENTS.basic.md +4 -0
  275. package/templates/GEMINI.basic.md +6 -0
  276. package/dist/hooks/chunk-6V5OPIUU.js +0 -13
  277. package/scripts/lane/openai-review-broker.ts +0 -262
  278. package/scripts/run/board/run-board-track.ts +0 -22
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  FETCH_TIMEOUT_MS
3
- } from "./chunk-NEC4AT4Z.js";
3
+ } from "./chunk-DGT54IH5.js";
4
4
 
5
5
  // scripts/lib/timed-fetch.ts
6
6
  async function timed_fetch(url, init = {}, timeout_ms = FETCH_TIMEOUT_MS) {
@@ -1,18 +1,18 @@
1
1
  import {
2
2
  resolve_local_bin,
3
3
  resolve_package_bin
4
- } from "./chunk-JBBMAPC4.js";
4
+ } from "./chunk-IX6TTTI6.js";
5
5
  import {
6
6
  ESLINT_EDIT_CACHE_FLAGS,
7
7
  time_density_hook
8
- } from "./chunk-SL4GQ2XP.js";
8
+ } from "./chunk-MBJYQPEK.js";
9
9
  import {
10
10
  file_reader,
11
11
  json_value
12
- } from "./chunk-2YSW3CXH.js";
12
+ } from "./chunk-3C4XRYG6.js";
13
13
  import {
14
14
  HOOK_PROCESS_TIMEOUT_MS
15
- } from "./chunk-NEC4AT4Z.js";
15
+ } from "./chunk-DGT54IH5.js";
16
16
 
17
17
  // scripts/hooks/format-edited-file.ts
18
18
  import { existsSync as existsSync2 } from "node:fs";
@@ -3,6 +3,9 @@ import path from "node:path";
3
3
  import { fileURLToPath } from "node:url";
4
4
  var PACKAGE_DIR = path.join(path.dirname(fileURLToPath(import.meta.url)), "..", "..");
5
5
  var PROJECT_ROOT = process.cwd();
6
+ function package_path(relative_path) {
7
+ return path.join(PACKAGE_DIR, relative_path);
8
+ }
6
9
 
7
10
  // scripts/josh/stamp-file.ts
8
11
  import { createHash, randomUUID } from "node:crypto";
@@ -144,6 +147,7 @@ var SUITE_TIMEOUT_MS = 18e5;
144
147
 
145
148
  export {
146
149
  PROJECT_ROOT,
150
+ package_path,
147
151
  PLATFORM_TEMP_ROOT,
148
152
  platform_temporary,
149
153
  stamp_file,
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  lane_guard_policy
3
- } from "./chunk-EAQEGME7.js";
3
+ } from "./chunk-UT7YC3N2.js";
4
4
  import {
5
5
  hook_decision
6
- } from "./chunk-EBSHN25W.js";
6
+ } from "./chunk-W5ZKGTSY.js";
7
7
  import {
8
8
  time_batch_guard
9
- } from "./chunk-SL4GQ2XP.js";
9
+ } from "./chunk-MBJYQPEK.js";
10
10
 
11
11
  // scripts/hooks/batch-guard.ts
12
12
  import { text } from "node:stream/consumers";
@@ -85,6 +85,10 @@ function resolve_package_bin(base_directory, package_name, bin_name) {
85
85
 
86
86
  export {
87
87
  ancestor_directories,
88
+ vscode_settings_schema,
89
+ json_object_schema,
90
+ string_array_schema,
91
+ string_record_schema,
88
92
  resolve_local_bin,
89
93
  find_local_bin_upwards,
90
94
  resolve_package_bin
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  investigation_reads
3
- } from "./chunk-WNFJLBXI.js";
3
+ } from "./chunk-NO4AALP5.js";
4
4
  import {
5
5
  lane_guard_policy
6
- } from "./chunk-EAQEGME7.js";
6
+ } from "./chunk-UT7YC3N2.js";
7
7
  import {
8
8
  hook_decision
9
- } from "./chunk-EBSHN25W.js";
9
+ } from "./chunk-W5ZKGTSY.js";
10
10
 
11
11
  // scripts/delegation/investigation-guard.ts
12
12
  import { text } from "node:stream/consumers";
@@ -6,12 +6,12 @@ import {
6
6
  process_owner_schema,
7
7
  run_carry,
8
8
  time_instant
9
- } from "./chunk-2YSW3CXH.js";
9
+ } from "./chunk-3C4XRYG6.js";
10
10
  import {
11
11
  PLATFORM_TEMP_ROOT,
12
12
  PROBE_TIMEOUT_MS,
13
13
  stamp_file
14
- } from "./chunk-NEC4AT4Z.js";
14
+ } from "./chunk-DGT54IH5.js";
15
15
 
16
16
  // scripts/cost-runtime/cost-blocks.ts
17
17
  import { z } from "zod";
@@ -147,10 +147,10 @@ var BACKLOG_COMMANDS = {
147
147
  // Started from a terminal: the `backlogrun` keyword's launcher, and the board.
148
148
  backlogrun: {
149
149
  script: "scripts/backlog/backlogrun-cli.ts",
150
- description: "Start a backlogrun in the background and show its board; with one already running, only show the board",
150
+ description: "Start a backlogrun in the background and show its board; with one already running, only show the board, or replace it when it is idle and the invocation differs; --stop stops it",
151
151
  category: "AI tools",
152
152
  reference: [
153
- "[#<n>...] [--only] [--max <n>] [--idle <minutes>] [--agent claude|codex]",
153
+ "[<n>...] [--only] [--max <n>] [--idle <minutes>] [--agent claude|codex] | --stop",
154
154
  "developer",
155
155
  ["files", "network", "processes"]
156
156
  ]
@@ -260,6 +260,12 @@ var GUARD_COMMANDS = {
260
260
  // scripts/josh/josh-commands-issue.ts
261
261
  var ISSUES_WITH_REPO = "<issue...> [--repo <owner/repo>]";
262
262
  var ISSUE_COMMANDS = {
263
+ "issue:ack": {
264
+ script: "scripts/issue/issue-ack-cli.ts",
265
+ description: "Record that the run read a person's update to its issue, printing the update it acknowledges",
266
+ category: "AI tools",
267
+ reference: ["<issue>", "automation", ["network"]]
268
+ },
263
269
  "issue:read": {
264
270
  script: "scripts/issue/issue-read-cli.ts",
265
271
  description: "Print each issue's title, body and every comment on it, in one call",
@@ -313,16 +319,16 @@ var ISSUE_COMMANDS = {
313
319
  description: "File an Issue with every filing step: lint, Origin, fold, WIP cap, duplicate scout, labels, then epic:bundle",
314
320
  category: "AI tools",
315
321
  reference: [
316
- "<title> --body-file <path> --depth <0|1|2> [--route <route>] [--label <name>] [--repo <owner/repo>] [--distinct <N,\u2026>] [--over-cap] [--no-auto-ok] [--requested] [--release]",
322
+ "<title> --body-file <path> --depth <0|1|2> [--route <route>] [--label <name>] [--repo <owner/repo>] [--distinct <N,\u2026>] [--over-cap] [--no-auto-ok] [--release]",
317
323
  "automation",
318
324
  ["network"]
319
325
  ]
320
326
  },
321
327
  "issue:release": {
322
328
  script: "scripts/issue/issue-release-cli.ts",
323
- description: "Link an Issue to the repository's open release Issue as its blocker, filing one when none is open",
329
+ description: "Link an Issue to the repository's open release Issue as its blocker (or, with --wait, as waiting on it), filing one when none is open",
324
330
  category: "AI tools",
325
- reference: ["<issue>", "automation", ["network"]]
331
+ reference: ["<issue> [--wait]", "automation", ["network"]]
326
332
  }
327
333
  };
328
334
 
@@ -358,7 +364,7 @@ var LANE_COMMANDS = {
358
364
  },
359
365
  "lane:prune": {
360
366
  ...LANE_ARGUMENTS,
361
- description: "Close every lane an interruption left without its work tree, then sweep unregistered leftovers under the lanes root",
367
+ description: "Close every lane an interruption left without its work tree and every spent lane, then sweep unregistered leftovers under the lanes root",
362
368
  category: "AI tools",
363
369
  reference: ["", "automation", ["files", "git"]],
364
370
  default_script_arguments: ["prune"]
@@ -390,6 +396,14 @@ var LANE_COMMANDS = {
390
396
  category: "AI tools",
391
397
  reference: ["<issue> [--stash <message>]", "automation", ["files", "git", "processes"]]
392
398
  },
399
+ // `.env` is read for `JOSH_LANE_ROOT`, as every lane command reads it, so the lane is found.
400
+ "lane:restart": {
401
+ script: "scripts/lane/lane-restart-cli.ts",
402
+ tsx_arguments: OPTIONAL_ENV_FILE_FLAGS,
403
+ description: "Stop a running lane child, stash its uncommitted work and re-dispatch its issue in a fresh session \u2014 not counted as an outage or a failure",
404
+ category: "AI tools",
405
+ reference: ["<issue>", "developer", ["files", "git", "processes", "network"]]
406
+ },
393
407
  // A live run's lane limit: `.env` is read so the bare form reports the
394
408
  // `JOSH_LANE_LIMIT` a person set there when no override stands.
395
409
  "lane:limit": {
@@ -410,7 +424,7 @@ var LANE_COMMANDS = {
410
424
  },
411
425
  "lane:stats": {
412
426
  ...MEASURE_ARGUMENTS,
413
- description: "Print one table row of lane throughput, gate duration and machine load over a period, and the per-stage durations of a lane under it",
427
+ description: "Print one table row of lane throughput, gate duration and machine load over a period, the per-stage durations of a lane under it, and the wait after each ship stop reason under those",
414
428
  category: "AI tools",
415
429
  reference: ["--period <days> [--limit <lane-limit>]", "maintainer", ["none"]],
416
430
  default_script_arguments: ["stats"]
@@ -599,6 +613,16 @@ var AI_COMMANDS = {
599
613
  category: "AI tools",
600
614
  reference: ["[--exclude <n>[,<n>...]] [--label <name>]", "automation", ["network"]]
601
615
  },
616
+ "auto-ok:judge": {
617
+ script: "scripts/auto-ok/auto-ok-judge-cli.ts",
618
+ description: "List the open issues backlogrun owes an auto-ok judgement, or record one (--apply / --decline)",
619
+ category: "AI tools",
620
+ reference: [
621
+ "[--apply <n> (--lane | --solo) | --decline <n> --reason <text>]",
622
+ "automation",
623
+ ["network"]
624
+ ]
625
+ },
602
626
  ...BACKLOG_COMMANDS,
603
627
  cost: {
604
628
  script: "scripts/cost-runtime/cost-cli.ts",
@@ -1307,17 +1331,27 @@ import { availableParallelism as availableParallelism4 } from "node:os";
1307
1331
  // scripts/lib/status-icons.ts
1308
1332
  var FAIL_ICON = "\u2717";
1309
1333
  var PASS_ICON = "\u2714";
1310
- var status_icons = { FAIL_ICON, PASS_ICON };
1334
+ var WARN_ICON = "\u26A0";
1335
+ var status_icons = { FAIL_ICON, PASS_ICON, WARN_ICON };
1311
1336
 
1312
1337
  // scripts/josh/josh-verdict.ts
1313
- var { FAIL_ICON: FAIL_ICON2, PASS_ICON: PASS_ICON2 } = status_icons;
1338
+ var { FAIL_ICON: FAIL_ICON2, PASS_ICON: PASS_ICON2, WARN_ICON: WARN_ICON2 } = status_icons;
1314
1339
  var GATE_SUBJECT = "verification gate";
1315
1340
  var GATE_PASSED_PREFIX = `${PASS_ICON2} ${GATE_SUBJECT} passed`;
1316
1341
  var GATE_FAILED_PREFIX = `${FAIL_ICON2} ${GATE_SUBJECT} failed`;
1342
+ var GATE_UNVERIFIED_PREFIX = `${WARN_ICON2} ${GATE_SUBJECT} not verified`;
1317
1343
  var PASSED_VERDICT = "passed";
1318
1344
  var FAILED_VERDICT = "failed";
1319
- function format_gate_passed(step_count, total) {
1320
- return `${GATE_PASSED_PREFIX} (${step_count} checks) in ${total}.`;
1345
+ var UNVERIFIED_VERDICT = "unverified";
1346
+ function format_counts(counts) {
1347
+ if (counts.skipped === 0) return `${String(counts.ran)} checks`;
1348
+ return `${String(counts.ran)} ran, ${String(counts.skipped)} skipped`;
1349
+ }
1350
+ function format_gate_passed(counts, total) {
1351
+ return `${GATE_PASSED_PREFIX} (${format_counts(counts)}) in ${total}.`;
1352
+ }
1353
+ function format_gate_unverified(skipped, total) {
1354
+ return `${GATE_UNVERIFIED_PREFIX} (0 ran, ${String(skipped)} skipped) in ${total}.`;
1321
1355
  }
1322
1356
  function format_gate_failed(failed_labels, total) {
1323
1357
  return `${GATE_FAILED_PREFIX}: ${failed_labels} (${total})`;
@@ -1332,13 +1366,16 @@ function read_verdict(line) {
1332
1366
  const trimmed = line.trimStart();
1333
1367
  if (trimmed.startsWith(GATE_FAILED_PREFIX)) return FAILED_VERDICT;
1334
1368
  if (trimmed.startsWith(GATE_PASSED_PREFIX)) return PASSED_VERDICT;
1369
+ if (trimmed.startsWith(GATE_UNVERIFIED_PREFIX)) return UNVERIFIED_VERDICT;
1335
1370
  return void 0;
1336
1371
  }
1337
1372
  var josh_verdict = {
1338
1373
  PASSED_VERDICT,
1339
1374
  FAILED_VERDICT,
1375
+ UNVERIFIED_VERDICT,
1340
1376
  format_gate_passed,
1341
1377
  format_gate_failed,
1378
+ format_gate_unverified,
1342
1379
  GATE_OPENING_MARK,
1343
1380
  GATE_OPENING_PREFIX,
1344
1381
  is_gate_opening,
@@ -1671,7 +1708,7 @@ var DEV_COMMANDS = {
1671
1708
  },
1672
1709
  "test:unit": {
1673
1710
  script: "scripts/test/test-unit-guard.ts",
1674
- description: "Run unit tests with Vitest (skips when Vitest is absent; fails when it has no tests)",
1711
+ description: "Run unit tests with Vitest (without Vitest: a basic project runs its own test script, others skip; fails when Vitest has no tests)",
1675
1712
  category: "Development",
1676
1713
  reference: [FILTER_ARGUMENTS, "developer", ["processes"]],
1677
1714
  core_weight: gate_plan.direct_unit_weight,
@@ -1903,7 +1940,7 @@ var PROJECT_COMMANDS = {
1903
1940
  description: "Set a project up for the GitHub Issue workflow, from git init to the setup PR",
1904
1941
  category: "Project",
1905
1942
  reference: [
1906
- `${PROFILE_ARGUMENTS} [--yes] [--github] [--public] [--init-command <command>] [--push-preflight-command <command>]`,
1943
+ `${PROFILE_ARGUMENTS} [--yes] [--github] [--public] [--dry-run] [--init-command <command>] [--push-preflight-command <command>]`,
1907
1944
  "developer",
1908
1945
  ["files", "git", "network", "processes"]
1909
1946
  ]
@@ -1915,12 +1952,28 @@ var PROJECT_COMMANDS = {
1915
1952
  reference: ["<dir>", "automation", ["files", "git"]],
1916
1953
  is_kit_only: true
1917
1954
  },
1955
+ "fresh:run": {
1956
+ script: "scripts/fresh-machine/fresh-machine-cli.ts",
1957
+ description: "Run an install scenario in a Docker container of a machine with nothing installed, and keep the log",
1958
+ category: "Project",
1959
+ reference: [
1960
+ "<pattern> | --spec <file.json> [--package-version <version>] [--log-dir <dir>] [--rebuild] | --list",
1961
+ "maintainer",
1962
+ ["files", "network", "processes"]
1963
+ ]
1964
+ },
1965
+ "auth:setup": {
1966
+ script: "scripts/auth/auth-setup-cli.ts",
1967
+ description: "Save the long-lived Claude Code token `claude setup-token` prints in the macOS keychain, for josh fresh:run",
1968
+ category: "Project",
1969
+ reference: ["[--check]", "maintainer", ["network", "processes"]]
1970
+ },
1918
1971
  init: {
1919
1972
  script: "scripts/init/init.ts",
1920
1973
  description: "Initialize config in a new project",
1921
1974
  category: "Project",
1922
1975
  reference: [
1923
- `${PROFILE_ARGUMENTS} [--no-install]`,
1976
+ `${PROFILE_ARGUMENTS} [--no-install] [--dry-run]`,
1924
1977
  "developer",
1925
1978
  ["files", "network", "processes"]
1926
1979
  ]
@@ -1931,6 +1984,12 @@ var PROJECT_COMMANDS = {
1931
1984
  category: "Project",
1932
1985
  reference: ["", "developer", ["files"]]
1933
1986
  },
1987
+ uninstall: {
1988
+ script: "scripts/uninstall/uninstall.ts",
1989
+ description: "Remove what kit added to a project and list what is left to review by hand",
1990
+ category: "Project",
1991
+ reference: [`${PROFILE_ARGUMENTS} [--yes]`, "developer", ["files", "processes"]]
1992
+ },
1934
1993
  "registry:migrate": {
1935
1994
  script: "scripts/registry-migration/migrate.ts",
1936
1995
  description: "Migrate a project from GitHub Packages to public npm",
@@ -2184,6 +2243,7 @@ var ALIASES = {
2184
2243
  pf: "profile",
2185
2244
  st: "start",
2186
2245
  sy: "sync",
2246
+ un: "uninstall",
2187
2247
  rmi: "registry:migrate",
2188
2248
  g: "git",
2189
2249
  gp: "pr",
@@ -2209,9 +2269,12 @@ var ALIASES = {
2209
2269
  rvf: "review:findings",
2210
2270
  ruv: "rule:value",
2211
2271
  ev: "eval",
2272
+ fr: "fresh:run",
2273
+ as: "auth:setup",
2212
2274
  lsm: "lane:sample",
2213
2275
  lst: "lane:stats",
2214
2276
  lli: "lane:limit",
2277
+ lrs: "lane:restart",
2215
2278
  blr: "backlogrun"
2216
2279
  };
2217
2280
  function canonical_command(name) {
@@ -2444,7 +2507,8 @@ var rollup_item_schema = z3.looseObject({
2444
2507
  status: z3.string().optional(),
2445
2508
  conclusion: z3.string().optional(),
2446
2509
  name: z3.string().optional(),
2447
- context: z3.string().optional()
2510
+ context: z3.string().optional(),
2511
+ description: z3.string().nullish()
2448
2512
  });
2449
2513
  var pr_raw_schema = z3.object({
2450
2514
  statusCheckRollup: z3.array(rollup_item_schema).optional(),
@@ -2517,6 +2581,7 @@ var KEY_STATUS = "status";
2517
2581
  var KEY_CONCLUSION = "conclusion";
2518
2582
  var KEY_NAME = "name";
2519
2583
  var KEY_CONTEXT = "context";
2584
+ var KEY_DESCRIPTION = "description";
2520
2585
  function read_string(value) {
2521
2586
  if (typeof value !== "string") return void 0;
2522
2587
  const trimmed = value.trim();
@@ -2552,7 +2617,9 @@ function read_rollup_array(parsed) {
2552
2617
  function parse_rollup_item(item) {
2553
2618
  const name = read_string(item[KEY_NAME]) ?? read_string(item[KEY_CONTEXT]);
2554
2619
  if (name === void 0) return void 0;
2555
- return { name, status: parse_rollup_status(item) };
2620
+ const check = { name, status: parse_rollup_status(item) };
2621
+ const description = read_string(item[KEY_DESCRIPTION]);
2622
+ return description === void 0 ? check : { ...check, description };
2556
2623
  }
2557
2624
  function parse_rollup_checks(raw_json) {
2558
2625
  const parsed = json_value.parse_or_undefined(raw_json);
@@ -2693,7 +2760,8 @@ var KIND = {
2693
2760
  GATE: "gate",
2694
2761
  LOAD: "load",
2695
2762
  DISPATCH: "dispatch",
2696
- STAGE: "stage"
2763
+ STAGE: "stage",
2764
+ STOP: "stop"
2697
2765
  };
2698
2766
  var merge_schema = z4.object({ kind: z4.literal(KIND.MERGE), at: z4.string(), issue: z4.number() });
2699
2767
  var gate_schema = z4.object({
@@ -2728,12 +2796,19 @@ var stage_schema = z4.object({
2728
2796
  elapsed_ms: z4.number(),
2729
2797
  issue: z4.number().optional()
2730
2798
  });
2799
+ var stop_schema = z4.object({
2800
+ kind: z4.literal(KIND.STOP),
2801
+ at: z4.string(),
2802
+ issue: z4.number(),
2803
+ reason: z4.string()
2804
+ });
2731
2805
  var entry_schema = z4.discriminatedUnion("kind", [
2732
2806
  merge_schema,
2733
2807
  gate_schema,
2734
2808
  load_schema,
2735
2809
  dispatch_schema,
2736
- stage_schema
2810
+ stage_schema,
2811
+ stop_schema
2737
2812
  ]);
2738
2813
  function target_of(repository) {
2739
2814
  return stamp_file.stamp_path(LEDGER_PREFIX, repository, LEDGER_SUFFIX);
@@ -2779,6 +2854,9 @@ async function record_dispatch(issue, path4) {
2779
2854
  async function record_stage(stage, path4) {
2780
2855
  await record({ kind: KIND.STAGE, at: now_iso(), ...stage }, path4);
2781
2856
  }
2857
+ async function record_stop(stop, path4) {
2858
+ await record({ kind: KIND.STOP, at: now_iso(), ...stop }, path4);
2859
+ }
2782
2860
  function parse_line2(line) {
2783
2861
  return entry_schema.safeParse(json_value.parse_or_undefined(line)).data;
2784
2862
  }
@@ -2800,6 +2878,7 @@ var lane_ledger = {
2800
2878
  record_gate,
2801
2879
  record_merge,
2802
2880
  record_stage,
2881
+ record_stop,
2803
2882
  target,
2804
2883
  target_of
2805
2884
  };
@@ -2984,8 +3063,12 @@ function is_failure_line(line) {
2984
3063
  function is_failed_verdict(line) {
2985
3064
  return josh_verdict.read_verdict(line) === josh_verdict.FAILED_VERDICT;
2986
3065
  }
2987
- function is_passed_verdict(line) {
2988
- return josh_verdict.read_verdict(line) === josh_verdict.PASSED_VERDICT;
3066
+ var GREEN_VERDICTS = /* @__PURE__ */ new Set([
3067
+ josh_verdict.PASSED_VERDICT,
3068
+ josh_verdict.UNVERIFIED_VERDICT
3069
+ ]);
3070
+ function is_green_verdict(line) {
3071
+ return GREEN_VERDICTS.has(josh_verdict.read_verdict(line));
2989
3072
  }
2990
3073
  function new_scan() {
2991
3074
  return {
@@ -3009,7 +3092,7 @@ function note_failure(scan) {
3009
3092
  scan.has_failure_before_region = true;
3010
3093
  }
3011
3094
  function scan_line(scan, line) {
3012
- if (is_passed_verdict(line)) {
3095
+ if (is_green_verdict(line)) {
3013
3096
  close_region(scan);
3014
3097
  return;
3015
3098
  }
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  hook_decision
3
- } from "./chunk-EBSHN25W.js";
3
+ } from "./chunk-W5ZKGTSY.js";
4
4
  import {
5
5
  cost_blocks,
6
6
  time_batch_guard,
7
7
  time_bundle_call,
8
8
  time_shell,
9
9
  time_spans
10
- } from "./chunk-SL4GQ2XP.js";
10
+ } from "./chunk-MBJYQPEK.js";
11
11
  import {
12
12
  cost_transcript
13
- } from "./chunk-2YSW3CXH.js";
13
+ } from "./chunk-3C4XRYG6.js";
14
14
 
15
15
  // scripts/delegation/investigation-reads.ts
16
16
  import path2 from "node:path";
@@ -2,7 +2,7 @@ import {
2
2
  ENV_FILE_NAME,
3
3
  issue_number_shape,
4
4
  lane_paths
5
- } from "./chunk-2YSW3CXH.js";
5
+ } from "./chunk-3C4XRYG6.js";
6
6
 
7
7
  // scripts/josh/josh-environment-file.ts
8
8
  function load_environment_file() {
@@ -1,18 +1,18 @@
1
1
  import {
2
2
  investigation_reads
3
- } from "./chunk-WNFJLBXI.js";
3
+ } from "./chunk-NO4AALP5.js";
4
4
  import {
5
5
  lane_guard_policy
6
- } from "./chunk-EAQEGME7.js";
6
+ } from "./chunk-UT7YC3N2.js";
7
7
  import {
8
8
  hook_decision
9
- } from "./chunk-EBSHN25W.js";
9
+ } from "./chunk-W5ZKGTSY.js";
10
10
  import {
11
11
  time_spans
12
- } from "./chunk-SL4GQ2XP.js";
12
+ } from "./chunk-MBJYQPEK.js";
13
13
  import {
14
14
  json_value
15
- } from "./chunk-2YSW3CXH.js";
15
+ } from "./chunk-3C4XRYG6.js";
16
16
 
17
17
  // scripts/delegation/duplicate-read-guard.ts
18
18
  import { statSync } from "node:fs";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  lane_child_marker
3
- } from "./chunk-J3KSS7II.js";
3
+ } from "./chunk-OLMO72ON.js";
4
4
 
5
5
  // scripts/lane/lane-guard-policy.ts
6
6
  var DEFAULT_MODE = "refuse";
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  time_density_hook,
3
3
  time_hook_transcript
4
- } from "./chunk-SL4GQ2XP.js";
4
+ } from "./chunk-MBJYQPEK.js";
5
5
  import {
6
6
  josh_environment_file
7
- } from "./chunk-J3KSS7II.js";
7
+ } from "./chunk-OLMO72ON.js";
8
8
  import {
9
9
  json_value
10
- } from "./chunk-2YSW3CXH.js";
10
+ } from "./chunk-3C4XRYG6.js";
11
11
  import {
12
12
  stamp_file
13
- } from "./chunk-NEC4AT4Z.js";
13
+ } from "./chunk-DGT54IH5.js";
14
14
 
15
15
  // scripts/josh/hook-decision.ts
16
16
  import { z } from "zod";