@joshuafolkken/kit 1.1010.0 → 1.1050.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 (350) hide show
  1. package/.claude/settings.json +1 -5
  2. package/.claude/skills/dependency-update/SKILL.md +6 -3
  3. package/.claude/skills/epic-commands/SKILL.md +46 -17
  4. package/.claude/skills/verify-ui/SKILL.md +1 -1
  5. package/.claude/skills/workflow-commands/SKILL.md +10 -25
  6. package/.claude/skills/workflow-commands/background-commands.md +1 -1
  7. package/.claude/skills/workflow-commands/backlogrun-child.md +6 -4
  8. package/.claude/skills/workflow-commands/backlogrun-lanes.md +1 -1
  9. package/.claude/skills/workflow-commands/backlogrun-park.md +6 -0
  10. package/.claude/skills/workflow-commands/backlogrun-progress.md +30 -36
  11. package/.claude/skills/workflow-commands/backlogrun-steps.md +16 -16
  12. package/.claude/skills/workflow-commands/backlogrun.md +3 -12
  13. package/.claude/skills/workflow-commands/chain-rule.md +2 -2
  14. package/.claude/skills/workflow-commands/followup-reference.md +2 -2
  15. package/.claude/skills/workflow-commands/fullrun-steps.md +4 -3
  16. package/.claude/skills/workflow-commands/fullrun.md +1 -1
  17. package/.claude/skills/workflow-commands/halfrun.md +2 -1
  18. package/.claude/skills/workflow-commands/into-target.md +1 -1
  19. package/.claude/skills/workflow-commands/issue-comments.md +1 -1
  20. package/.claude/skills/workflow-commands/observation-filing.md +80 -126
  21. package/.claude/skills/workflow-commands/pre-gate-cut.md +33 -36
  22. package/.claude/skills/workflow-commands/prerequisite.md +1 -1
  23. package/.claude/skills/workflow-commands/working-tree-hold.md +2 -2
  24. package/.codex/hooks.json +1 -5
  25. package/.github/workflows/auto-tag.yml +21 -0
  26. package/.github/workflows/publish.yml +9 -10
  27. package/.github/workflows/sonar-qube.yml +1 -1
  28. package/AGENTS.md +4 -25
  29. package/CLAUDE.md +24 -38
  30. package/GEMINI.md +4 -24
  31. package/README.md +22 -56
  32. package/dist/CLAUDE.md +24 -38
  33. package/dist/hooks/batch-guard.js +4 -4
  34. package/dist/hooks/{chunk-6PSTVOLH.js → chunk-5BK3K7V4.js} +114 -90
  35. package/dist/hooks/{chunk-PAXMLGSS.js → chunk-7VPDUBRN.js} +93 -175
  36. package/dist/hooks/{chunk-KPZN42RT.js → chunk-DMQN45FN.js} +3 -3
  37. package/dist/hooks/{chunk-WMIR5SNX.js → chunk-EJDX2TOB.js} +13 -3
  38. package/dist/hooks/{chunk-A2H5I2VD.js → chunk-GQ7KP45M.js} +2 -2
  39. package/dist/hooks/{chunk-4GDR2YTV.js → chunk-HJIISEAC.js} +4 -4
  40. package/dist/hooks/{chunk-AWTFKKFW.js → chunk-NAS4C7GP.js} +6 -33
  41. package/dist/hooks/{chunk-56LGMJJV.js → chunk-NJQOBE6L.js} +2 -2
  42. package/dist/hooks/{chunk-EZLHXKJ6.js → chunk-RLDX5SOC.js} +1222 -941
  43. package/dist/hooks/{chunk-GBJUERYK.js → chunk-WQ4OSBSS.js} +10 -3
  44. package/dist/hooks/codex-hook-adapter.js +10 -10
  45. package/dist/hooks/duplicate-read-guard.js +5 -5
  46. package/dist/hooks/format-edited.js +15 -34
  47. package/dist/hooks/investigation-guard.js +5 -5
  48. package/dist/hooks/pretool-guard.js +23 -16
  49. package/dist/hooks/stop-guard.js +21 -200
  50. package/dist/josh.js +42 -125
  51. package/dist/version/index.js +466 -42
  52. package/eslint/base.js +2 -11
  53. package/package.json +36 -10
  54. package/prompts/coding-standards.md +15 -290
  55. package/prompts/collaboration-workflow/cross-repo-epic.md +2 -51
  56. package/prompts/collaboration-workflow/epic-audit.md +2 -53
  57. package/prompts/collaboration-workflow/epic-bundle.md +2 -106
  58. package/prompts/collaboration-workflow/file-edits.md +6 -53
  59. package/prompts/collaboration-workflow/issue-template.md +4 -4
  60. package/prompts/collaboration-workflow/operating-rules.md +18 -75
  61. package/prompts/collaboration-workflow/principles.md +74 -0
  62. package/prompts/collaboration-workflow/residency.md +55 -15
  63. package/prompts/collaboration-workflow/rule-delivery.md +5 -46
  64. package/prompts/collaboration-workflow/shell-body.md +7 -9
  65. package/prompts/collaboration-workflow/turn-batching.md +21 -37
  66. package/prompts/collaboration-workflow/upstream-interrupt.md +1 -1
  67. package/prompts/collaboration-workflow/wip-cap.md +15 -18
  68. package/prompts/collaboration-workflow.md +22 -28
  69. package/prompts/sonar-hotspot-handling.md +1 -1
  70. package/scripts/adopt/adopt-logic.ts +2 -2
  71. package/scripts/adopt/adopt-toolkits.ts +3 -1
  72. package/scripts/adopt/adopt.ts +2 -2
  73. package/scripts/agent/agent-event.ts +2 -9
  74. package/scripts/agent/agent-exit-record.ts +2 -9
  75. package/scripts/auto-ok/auto-ok-cli.ts +9 -9
  76. package/scripts/backlog/backlog-budget-cli.ts +2 -6
  77. package/scripts/backlog/backlog-drive-cli.ts +20 -10
  78. package/scripts/backlog/backlog-drive.ts +50 -16
  79. package/scripts/backlog/backlog-next.ts +24 -8
  80. package/scripts/backlog/backlog-offer-cli.ts +6 -5
  81. package/scripts/backlog/backlog-plan-cli.ts +5 -1
  82. package/scripts/backlog/backlog-plan.ts +1 -1
  83. package/scripts/backlog/backlog-pool.ts +31 -11
  84. package/scripts/backlog/backlog-rank.ts +106 -0
  85. package/scripts/backlog/backlog-waves.ts +42 -29
  86. package/scripts/build/build-bin.ts +2 -1
  87. package/scripts/build/build-config-merge.ts +2 -1
  88. package/scripts/build/build-hooks.ts +31 -6
  89. package/scripts/build/build-managed-marker.ts +2 -1
  90. package/scripts/build/build-self-sync-guard.ts +2 -1
  91. package/scripts/build/build-version.ts +2 -1
  92. package/scripts/cases/cases-logic.ts +2 -6
  93. package/scripts/ci/pr-classification.ts +13 -11
  94. package/scripts/cost-runtime/cost-transcript.ts +4 -11
  95. package/scripts/delegation/delegation-policy.ts +11 -0
  96. package/scripts/doctor/doctor-consumer.ts +5 -12
  97. package/scripts/doctor/doctor-ports.ts +2 -2
  98. package/scripts/document/document-byte-budget.ts +13 -21
  99. package/scripts/document/document-section.ts +2 -6
  100. package/scripts/document/entry-read-budget.ts +6 -5
  101. package/scripts/{git/git-epic-add-body.ts → epic/epic-add-body.ts} +23 -23
  102. package/scripts/{git/git-epic-add-plan.ts → epic/epic-add-plan.ts} +23 -26
  103. package/scripts/{git/git-epic-add.ts → epic/epic-add.ts} +17 -17
  104. package/scripts/epic/epic-audit-cli.ts +4 -4
  105. package/scripts/epic/epic-audit-orphans.ts +2 -2
  106. package/scripts/epic/epic-audit-rationale.ts +1 -1
  107. package/scripts/epic/epic-audit.ts +1 -1
  108. package/scripts/{git/git-epic-body.ts → epic/epic-body.ts} +6 -6
  109. package/scripts/epic/epic-bundle-cli.ts +1 -1
  110. package/scripts/epic/epic-bundle.ts +2 -2
  111. package/scripts/epic/epic-candidate-confirm.ts +2 -1
  112. package/scripts/{git/git-epic-chains.ts → epic/epic-chains.ts} +4 -4
  113. package/{scripts-ai → scripts/epic}/epic-check.ts +5 -4
  114. package/{scripts-ai → scripts/epic}/epic-cli.ts +4 -4
  115. package/scripts/{git/git-epic-close-comment.ts → epic/epic-close-comment.ts} +9 -9
  116. package/scripts/{git/git-epic-close.ts → epic/epic-close.ts} +23 -19
  117. package/scripts/epic/epic-cross-repo.ts +21 -38
  118. package/scripts/{git/git-epic-decision.ts → epic/epic-decision.ts} +12 -14
  119. package/scripts/epic/epic-fetch.ts +3 -3
  120. package/scripts/epic/epic-graph.ts +3 -3
  121. package/scripts/epic/epic-index.ts +2 -2
  122. package/scripts/epic/epic-issue.ts +1 -1
  123. package/scripts/epic/epic-lane-offer.ts +11 -22
  124. package/scripts/epic/epic-next.ts +3 -3
  125. package/scripts/{git/git-epic-parse.ts → epic/epic-parse.ts} +3 -3
  126. package/scripts/{git/git-epic-promote.ts → epic/epic-promote.ts} +10 -10
  127. package/scripts/epic/epic-rank.ts +37 -0
  128. package/scripts/{git/git-epic-read.ts → epic/epic-read.ts} +9 -9
  129. package/scripts/{git/git-epic-reconcile.ts → epic/epic-reconcile.ts} +18 -20
  130. package/scripts/{git/git-epic-reference.ts → epic/epic-reference.ts} +4 -23
  131. package/scripts/epic/epic-relation-recheck.ts +4 -3
  132. package/scripts/{git/git-epic-relations.ts → epic/epic-relations.ts} +5 -5
  133. package/scripts/{git/git-epic-remove-plan.ts → epic/epic-remove-plan.ts} +17 -19
  134. package/scripts/{git/git-epic-remove.ts → epic/epic-remove.ts} +13 -13
  135. package/scripts/{git/git-epic-run.ts → epic/epic-run.ts} +27 -27
  136. package/scripts/{git/git-epic-sections.ts → epic/epic-sections.ts} +6 -6
  137. package/scripts/{git/git-epic-shape.ts → epic/epic-shape.ts} +7 -7
  138. package/scripts/epic/epic-solo.ts +29 -28
  139. package/scripts/{git/git-epic-validate.ts → epic/epic-validate.ts} +13 -13
  140. package/{scripts-ai → scripts/epic}/epic.ts +17 -16
  141. package/scripts/gh/fix-gh-packages.ts +2 -1
  142. package/scripts/gh/gh-spawn.ts +12 -10
  143. package/scripts/git/constants.ts +1 -1
  144. package/scripts/git/git-branch.ts +10 -1
  145. package/scripts/git/git-command.ts +2 -2
  146. package/scripts/git/git-error.ts +2 -5
  147. package/scripts/git/git-execa-error.ts +6 -1
  148. package/{scripts-ai → scripts/git}/git-followup-finish.ts +7 -7
  149. package/scripts/git/git-followup-flush.ts +74 -48
  150. package/scripts/git/git-followup-issue-close.ts +2 -2
  151. package/scripts/git/git-followup-label.ts +1 -1
  152. package/scripts/git/git-followup-pending.ts +1 -1
  153. package/{scripts-ai → scripts/git}/git-followup-workflow.ts +23 -11
  154. package/scripts/git/git-gh-exec.ts +85 -26
  155. package/scripts/git/git-gh-issue-read.ts +2 -2
  156. package/scripts/git/git-gh-issue-rest.ts +2 -2
  157. package/scripts/git/git-gh-issue-write.ts +6 -6
  158. package/scripts/git/git-gh-pr-read.ts +0 -21
  159. package/scripts/git/git-gh-pr.ts +2 -23
  160. package/scripts/git/git-next-issues.ts +34 -5
  161. package/scripts/git/git-pr-followup-wrapup.ts +2 -6
  162. package/scripts/git/git-preflight.ts +25 -10
  163. package/scripts/git/git-push-transport.ts +12 -69
  164. package/scripts/git/git-spawn.ts +79 -3
  165. package/scripts/git/git-ssh-keepalive.ts +74 -0
  166. package/scripts/git/git-staging.ts +21 -9
  167. package/{scripts-ai → scripts/git}/git-workflow.ts +11 -11
  168. package/scripts/git/github-issue-url.ts +1 -1
  169. package/scripts/git/gone-branch.ts +3 -2
  170. package/scripts/git/issue-labels.ts +13 -1
  171. package/scripts/git/issue-rank.ts +89 -0
  172. package/scripts/git/issue-reference.ts +19 -0
  173. package/scripts/git/main-merge.ts +2 -1
  174. package/scripts/git/main-sync.ts +3 -2
  175. package/scripts/git/schemas.ts +1 -1
  176. package/scripts/git/stash-pop-args.ts +7 -13
  177. package/scripts/git/stash-pop-cli.ts +2 -1
  178. package/{scripts-ai → scripts/git}/telegram-test-logic.ts +2 -2
  179. package/{scripts-ai → scripts/git}/telegram-test.ts +7 -7
  180. package/scripts/hooks/format-edited-cli.ts +15 -0
  181. package/scripts/hooks/format-edited-file.ts +2 -9
  182. package/scripts/hooks/format-rewrite-notice.ts +2 -8
  183. package/scripts/hooks/pretool-guard-cli.ts +21 -0
  184. package/scripts/hooks/pretool-guard.ts +14 -15
  185. package/scripts/init/init-ai-copy.ts +2 -5
  186. package/scripts/init/init.ts +8 -4
  187. package/scripts/init/start-exec.ts +7 -1
  188. package/scripts/init/start-plan.ts +18 -5
  189. package/scripts/init/start-setup-pr.ts +46 -19
  190. package/scripts/init/start-steps.ts +43 -10
  191. package/scripts/init/start.ts +42 -11
  192. package/scripts/issue/issue-cite.ts +19 -1
  193. package/scripts/issue/issue-comment-cli.ts +2 -1
  194. package/scripts/issue/issue-file-cli.ts +2 -1
  195. package/scripts/issue/issue-fold-cli.ts +9 -16
  196. package/scripts/issue/issue-scout-cli.ts +8 -13
  197. package/scripts/issue/measure-rerun-cli.ts +7 -6
  198. package/scripts/josh/josh-command-map.ts +0 -102
  199. package/scripts/josh/josh-commands-ai.ts +2 -2
  200. package/scripts/josh/josh-commands-backlog.ts +1 -1
  201. package/scripts/josh/josh-commands-development.ts +3 -3
  202. package/scripts/josh/josh-commands-project.ts +1 -1
  203. package/scripts/josh/josh-commands-workflow.ts +4 -4
  204. package/scripts/lane/lane-child-marker.ts +16 -2
  205. package/scripts/lane/lane-cli.ts +34 -15
  206. package/scripts/lane/lane-open.ts +3 -2
  207. package/scripts/lane/lane-registry.ts +3 -6
  208. package/scripts/lane/lane-report.ts +10 -4
  209. package/scripts/lib/cli-flags.ts +20 -2
  210. package/scripts/lib/error-message.ts +9 -0
  211. package/scripts/lib/read-file.ts +26 -2
  212. package/scripts/observations/observation-ledger-home.ts +98 -26
  213. package/scripts/observations/observation-ledger-migrate.ts +26 -21
  214. package/scripts/observations/observation-ledger-prepare.ts +10 -20
  215. package/scripts/observations/observation-ledger.ts +58 -25
  216. package/scripts/observations/observations-flush-cli.ts +6 -23
  217. package/scripts/observations/observations-flush-landing.ts +2 -1
  218. package/scripts/observations/observations-flush.ts +29 -20
  219. package/scripts/package/package-scout-cli.ts +8 -16
  220. package/scripts/ports/port-command.ts +2 -1
  221. package/scripts/propagate/propagate-plan.ts +185 -0
  222. package/scripts/propagate/propagate-publish.ts +6 -7
  223. package/scripts/propagate/propagate-run.ts +5 -1
  224. package/scripts/propagate/propagate-steps.ts +18 -2
  225. package/scripts/propagate/propagate-targets.ts +13 -2
  226. package/scripts/propagate/propagate.ts +63 -44
  227. package/scripts/refactor/import-graph.ts +2 -6
  228. package/scripts/registry-migration/migrate-logic.ts +1 -0
  229. package/scripts/registry-migration/migrate.ts +3 -2
  230. package/scripts/registry-migration/user-npmrc.ts +2 -2
  231. package/scripts/release/github-release.ts +1 -1
  232. package/scripts/release/release-cli.ts +2 -1
  233. package/scripts/repo/repo-setting.ts +10 -8
  234. package/scripts/review/review-attest.ts +44 -0
  235. package/scripts/review/review-brief-cli.ts +49 -2
  236. package/scripts/review/review-brief.ts +46 -1
  237. package/scripts/review/review-finding-ledger.ts +3 -3
  238. package/scripts/review/review-findings-cli.ts +4 -11
  239. package/scripts/review/review-record-cli.ts +14 -11
  240. package/scripts/review/review-record.ts +6 -16
  241. package/scripts/review/review-stamps.ts +7 -0
  242. package/scripts/rules/decision-oracle.ts +2 -2
  243. package/scripts/rules/implementation-cut.ts +1 -1
  244. package/scripts/rules/issue-fold.ts +1 -2
  245. package/scripts/rules/lane-carry-conflict.ts +1 -2
  246. package/scripts/rules/lane-park.ts +1 -2
  247. package/scripts/rules/pre-gate-cut.ts +2 -2
  248. package/scripts/rules/rule-body-guard.ts +2 -2
  249. package/scripts/rules/rule-value-cache.ts +99 -0
  250. package/scripts/rules/rule-value-cli.ts +10 -9
  251. package/scripts/rules/rule-value.ts +1 -1
  252. package/scripts/run/run-carry-args.ts +2 -6
  253. package/scripts/run/run-carry-cli.ts +5 -7
  254. package/scripts/run/run-cut-args.ts +7 -13
  255. package/scripts/run/run-ending-cli.ts +4 -7
  256. package/scripts/run/run-event-stream.ts +2 -5
  257. package/scripts/run/run-headless.ts +22 -6
  258. package/scripts/run/run-liveness-cli.ts +4 -7
  259. package/scripts/run/run-parent-cut-hook.ts +144 -0
  260. package/scripts/run/run-progress-args.ts +2 -6
  261. package/scripts/run/run-progress-cli.ts +2 -1
  262. package/scripts/run/run-progress-read.ts +2 -1
  263. package/scripts/run/run-progress.ts +21 -8
  264. package/scripts/run/run-ship-cli.ts +6 -74
  265. package/scripts/run/run-ship-preflight.ts +87 -0
  266. package/scripts/run/run-ship-review-steps.ts +5 -26
  267. package/scripts/run/run-ship-review.ts +9 -0
  268. package/scripts/run/run-ship-scoped.ts +44 -0
  269. package/scripts/run/run-ship-stage.ts +5 -1
  270. package/scripts/run/run-ship-steps.ts +105 -0
  271. package/scripts/run/run-ship.ts +2 -0
  272. package/scripts/run/run-tail-cli.ts +3 -3
  273. package/scripts/run/run-tidy-stashes.ts +7 -14
  274. package/scripts/run/run-wake-cli.ts +4 -8
  275. package/scripts/run/run-wake-describe.ts +19 -1
  276. package/scripts/run/run-wake-driver.ts +15 -2
  277. package/scripts/run/run-wake-session.ts +14 -4
  278. package/scripts/run/run-watcher-hook.ts +1 -1
  279. package/scripts/safe-chain/project-config.ts +3 -6
  280. package/scripts/security/security-audit-provision.ts +6 -7
  281. package/scripts/sonar/sonar-hotspots-cli.ts +2 -1
  282. package/scripts/sync/directory-copy-guard.ts +2 -1
  283. package/scripts/sync/sync-ai-files.ts +3 -3
  284. package/scripts/sync/template-source-logic.ts +3 -4
  285. package/scripts/test/e2e-retry-check.ts +3 -6
  286. package/scripts/time-runtime/time-bundle-call.ts +2 -2
  287. package/scripts/ui/ui-routes-cli.ts +3 -6
  288. package/scripts/version/bump-version.ts +2 -1
  289. package/scripts/version/npm-registry.ts +97 -0
  290. package/scripts/version/version-commands.ts +5 -4
  291. package/scripts/version/version-remote.ts +38 -33
  292. package/scripts/version/version-targets.ts +3 -3
  293. package/.claude/skills/workflow-commands/rule-residency.md +0 -267
  294. package/evals/scenarios/consult-not-execute.json +0 -20
  295. package/evals/scenarios/no-implicit-workflow.json +0 -26
  296. package/evals/scenarios/overrides-both-locations.json +0 -29
  297. package/evals/scenarios/upstream-interrupt.json +0 -23
  298. package/evals/scenarios/workflow-skill-loaded.json +0 -16
  299. package/prompts/agent-lint-protocol.json +0 -79
  300. package/prompts/agent-rules.md +0 -63
  301. package/prompts/collaboration-workflow/consultation-vs-execution.md +0 -8
  302. package/prompts/collaboration-workflow/distributed-docs.md +0 -7
  303. package/prompts/collaboration-workflow/durable-rules.md +0 -24
  304. package/prompts/collaboration-workflow/latest-first.md +0 -14
  305. package/prompts/collaboration-workflow/no-clones.md +0 -11
  306. package/prompts/collaboration-workflow/simplicity-first.md +0 -9
  307. package/prompts/collaboration-workflow/single-source-rules.md +0 -13
  308. package/scripts/build/shim-shell.ts +0 -25
  309. package/scripts/claude/skill-meta.ts +0 -37
  310. package/scripts/document/document-scan.ts +0 -108
  311. package/scripts/document/generate-catalog.ts +0 -69
  312. package/scripts/document/retired-phrases.ts +0 -143
  313. package/scripts/document/review-agent-type.ts +0 -46
  314. package/scripts/document/single-source.ts +0 -73
  315. package/scripts/git/git-fixture-workspace.ts +0 -88
  316. package/scripts/hooks/format-edited-file-fixtures.ts +0 -109
  317. package/scripts/hooks/prompt-hooks.ts +0 -38
  318. package/scripts/init/hook-command-bootstrap.ts +0 -83
  319. package/scripts/issue/issue-logic.ts +0 -50
  320. package/scripts/josh/__snapshots__/josh-command-map.test.ts.snap +0 -1227
  321. package/scripts/josh/josh-script-reader.ts +0 -11
  322. package/scripts/package/production-dependency-graph.ts +0 -68
  323. package/scripts/retrospective/retrospective-cli.ts +0 -97
  324. package/scripts/retrospective/retrospective.ts +0 -127
  325. package/scripts/rules/delivered-rules-harness.ts +0 -72
  326. package/scripts/rules/top-level-scripts-guard.ts +0 -47
  327. package/scripts/run/run-carry-flush.ts +0 -58
  328. package/scripts/run/run-transcript.golden.txt +0 -57
  329. package/scripts/run/run-wake-work.ts +0 -108
  330. package/scripts/sync/dependabot-pin-logic.ts +0 -135
  331. package/scripts/test/classify-isolation.ts +0 -149
  332. package/scripts/test/http-fault-injection.ts +0 -79
  333. package/scripts/test/josh-harness-environment.ts +0 -260
  334. package/scripts/test/josh-harness.ts +0 -96
  335. package/scripts/test/pilot-files.ts +0 -452
  336. package/scripts/test/pilot-measure.ts +0 -78
  337. package/scripts/test/test-network-guard.ts +0 -453
  338. package/scripts/test/test-repository-guard.ts +0 -317
  339. package/scripts/test/test-state-guard.ts +0 -85
  340. package/scripts/test/test-stdout-guard.ts +0 -54
  341. package/scripts/test/test-telegram-guard.ts +0 -90
  342. package/scripts/test/unit-guard-environment.ts +0 -12
  343. package/scripts/test/unit-projects.ts +0 -139
  344. package/scripts/test/vitest-include-globs.ts +0 -12
  345. package/scripts/time-runtime/time-batch-guard-fixtures.ts +0 -66
  346. package/scripts-ai/completion-gate.ts +0 -13
  347. package/scripts-ai/environment-loader.ts +0 -9
  348. /package/{scripts-ai → scripts/epic}/epic-cli-argv.ts +0 -0
  349. /package/{scripts-ai → scripts/epic}/epic-cli-remove.ts +0 -0
  350. /package/{scripts-ai → scripts/git}/followup-issue-number.ts +0 -0
@@ -3,7 +3,7 @@ import {
3
3
  stamp_file,
4
4
  time_density_hook,
5
5
  time_hook_transcript
6
- } from "./chunk-PAXMLGSS.js";
6
+ } from "./chunk-7VPDUBRN.js";
7
7
  import {
8
8
  josh_environment_file
9
9
  } from "./chunk-WPALEIRX.js";
@@ -218,9 +218,11 @@ var run_issue_number = { BAD_ISSUE_MESSAGE, ISSUE_NUMBER_PATTERN, require_issue_
218
218
 
219
219
  // scripts/lane/lane-child-marker.ts
220
220
  var KEY = "JOSH_LANE_CHILD";
221
+ var CACHE_TTL_KEY = "CLAUDE_CODE_PROMPT_CACHE_TTL";
222
+ var CACHE_TTL = "5m";
221
223
  function environment_for(issue) {
222
224
  run_issue_number.require_issue_number(issue);
223
- return { [KEY]: issue };
225
+ return { [KEY]: issue, [CACHE_TTL_KEY]: CACHE_TTL };
224
226
  }
225
227
  function marked_issue(source = process.env) {
226
228
  const value = source[KEY];
@@ -231,7 +233,12 @@ function is_child_of(directory, source = process.env) {
231
233
  const marked = marked_issue(source);
232
234
  return marked !== void 0 && marked === lane_paths.lane_issue_of(directory, { ...source });
233
235
  }
234
- var lane_child_marker = { KEY, env_for: environment_for, is_child_of, marked_issue };
236
+ var lane_child_marker = {
237
+ KEY,
238
+ env_for: environment_for,
239
+ is_child_of,
240
+ marked_issue
241
+ };
235
242
 
236
243
  export {
237
244
  hook_decision,
@@ -1,25 +1,25 @@
1
1
  #!/usr/bin/env tsx
2
2
  import {
3
3
  pretool_guard
4
- } from "./chunk-6PSTVOLH.js";
5
- import "./chunk-EZLHXKJ6.js";
4
+ } from "./chunk-5BK3K7V4.js";
5
+ import "./chunk-RLDX5SOC.js";
6
6
  import {
7
7
  build_envelope,
8
8
  compose_context,
9
9
  format_edited_payload
10
- } from "./chunk-AWTFKKFW.js";
10
+ } from "./chunk-NAS4C7GP.js";
11
11
  import "./chunk-3V37IID6.js";
12
- import "./chunk-A2H5I2VD.js";
13
- import "./chunk-KPZN42RT.js";
14
- import "./chunk-4GDR2YTV.js";
15
- import "./chunk-WMIR5SNX.js";
16
- import "./chunk-56LGMJJV.js";
12
+ import "./chunk-GQ7KP45M.js";
13
+ import "./chunk-DMQN45FN.js";
14
+ import "./chunk-HJIISEAC.js";
15
+ import "./chunk-EJDX2TOB.js";
16
+ import "./chunk-NJQOBE6L.js";
17
17
  import {
18
18
  hook_decision
19
- } from "./chunk-GBJUERYK.js";
19
+ } from "./chunk-WQ4OSBSS.js";
20
20
  import {
21
21
  time_density_hook
22
- } from "./chunk-PAXMLGSS.js";
22
+ } from "./chunk-7VPDUBRN.js";
23
23
  import "./chunk-WPALEIRX.js";
24
24
  import "./chunk-RKUAD3I6.js";
25
25
 
@@ -9,11 +9,11 @@ import {
9
9
  is_enabled,
10
10
  notice_refusal_path,
11
11
  refusal_path
12
- } from "./chunk-4GDR2YTV.js";
13
- import "./chunk-WMIR5SNX.js";
14
- import "./chunk-56LGMJJV.js";
15
- import "./chunk-GBJUERYK.js";
16
- import "./chunk-PAXMLGSS.js";
12
+ } from "./chunk-HJIISEAC.js";
13
+ import "./chunk-EJDX2TOB.js";
14
+ import "./chunk-NJQOBE6L.js";
15
+ import "./chunk-WQ4OSBSS.js";
16
+ import "./chunk-7VPDUBRN.js";
17
17
  import "./chunk-WPALEIRX.js";
18
18
  import "./chunk-RKUAD3I6.js";
19
19
  export {
@@ -1,38 +1,19 @@
1
1
  #!/usr/bin/env tsx
2
2
  import {
3
- ESLINT_DAEMON,
4
- MAX_DIAGNOSTIC_CHARS,
5
- PROCESS_TIMEOUT_MS,
6
- build_envelope,
7
- compose_context,
8
- density_envelope,
9
- format_edited_file,
10
- format_edited_payload,
11
- is_start_failure,
12
- parse_edited_path,
13
- plan_commands,
14
- plan_daemon_restart,
15
- relative_to_root,
16
- resolve_invocations,
17
- select_invocation
18
- } from "./chunk-AWTFKKFW.js";
3
+ report_no_payload,
4
+ run_hook
5
+ } from "./chunk-NAS4C7GP.js";
19
6
  import "./chunk-3V37IID6.js";
20
- import "./chunk-PAXMLGSS.js";
7
+ import "./chunk-7VPDUBRN.js";
21
8
  import "./chunk-RKUAD3I6.js";
22
- export {
23
- ESLINT_DAEMON,
24
- MAX_DIAGNOSTIC_CHARS,
25
- PROCESS_TIMEOUT_MS,
26
- build_envelope,
27
- compose_context,
28
- density_envelope,
29
- format_edited_file,
30
- format_edited_payload,
31
- is_start_failure,
32
- parse_edited_path,
33
- plan_commands,
34
- plan_daemon_restart,
35
- relative_to_root,
36
- resolve_invocations,
37
- select_invocation
38
- };
9
+
10
+ // scripts/hooks/format-edited-cli.ts
11
+ import { text } from "node:stream/consumers";
12
+ import { fileURLToPath } from "node:url";
13
+ if (process.argv[1] === fileURLToPath(import.meta.url)) {
14
+ if (process.stdin.isTTY) {
15
+ report_no_payload();
16
+ } else {
17
+ await run_hook(await text(process.stdin));
18
+ }
19
+ }
@@ -10,11 +10,11 @@ import {
10
10
  is_enabled,
11
11
  load_environment_file,
12
12
  refusal_path
13
- } from "./chunk-KPZN42RT.js";
14
- import "./chunk-WMIR5SNX.js";
15
- import "./chunk-56LGMJJV.js";
16
- import "./chunk-GBJUERYK.js";
17
- import "./chunk-PAXMLGSS.js";
13
+ } from "./chunk-DMQN45FN.js";
14
+ import "./chunk-EJDX2TOB.js";
15
+ import "./chunk-NJQOBE6L.js";
16
+ import "./chunk-WQ4OSBSS.js";
17
+ import "./chunk-7VPDUBRN.js";
18
18
  import "./chunk-WPALEIRX.js";
19
19
  import "./chunk-RKUAD3I6.js";
20
20
  export {
@@ -1,22 +1,29 @@
1
1
  #!/usr/bin/env tsx
2
2
  import {
3
- pretool_guard,
4
- pretool_outcome,
5
3
  pretool_outcome_async
6
- } from "./chunk-6PSTVOLH.js";
7
- import "./chunk-EZLHXKJ6.js";
4
+ } from "./chunk-5BK3K7V4.js";
5
+ import "./chunk-RLDX5SOC.js";
8
6
  import "./chunk-3V37IID6.js";
9
- import "./chunk-A2H5I2VD.js";
10
- import "./chunk-KPZN42RT.js";
11
- import "./chunk-4GDR2YTV.js";
12
- import "./chunk-WMIR5SNX.js";
13
- import "./chunk-56LGMJJV.js";
14
- import "./chunk-GBJUERYK.js";
15
- import "./chunk-PAXMLGSS.js";
7
+ import "./chunk-GQ7KP45M.js";
8
+ import "./chunk-DMQN45FN.js";
9
+ import "./chunk-HJIISEAC.js";
10
+ import "./chunk-EJDX2TOB.js";
11
+ import "./chunk-NJQOBE6L.js";
12
+ import {
13
+ hook_decision
14
+ } from "./chunk-WQ4OSBSS.js";
15
+ import "./chunk-7VPDUBRN.js";
16
16
  import "./chunk-WPALEIRX.js";
17
17
  import "./chunk-RKUAD3I6.js";
18
- export {
19
- pretool_guard,
20
- pretool_outcome,
21
- pretool_outcome_async
22
- };
18
+
19
+ // scripts/hooks/pretool-guard-cli.ts
20
+ import { text } from "node:stream/consumers";
21
+ import { fileURLToPath } from "node:url";
22
+ if (process.argv[1] === fileURLToPath(import.meta.url)) {
23
+ if (process.stdin.isTTY) hook_decision.report_no_payload("pretool:guard");
24
+ else {
25
+ const raw_payload = await text(process.stdin);
26
+ hook_decision.load_environment_file();
27
+ hook_decision.emit_outcome(await pretool_outcome_async(raw_payload));
28
+ }
29
+ }
@@ -8,25 +8,25 @@ import {
8
8
  git_gh_api_path,
9
9
  git_gh_exec,
10
10
  has_label_name,
11
+ issue_cite,
11
12
  lane_background,
12
- lane_child_invocation,
13
13
  lane_park,
14
14
  lane_registry,
15
15
  process_identity,
16
16
  repo_party,
17
17
  run_carry,
18
18
  run_cut,
19
+ run_headless,
19
20
  run_hold,
20
- run_invocation,
21
- run_watcher_guard
22
- } from "./chunk-EZLHXKJ6.js";
21
+ run_invocation
22
+ } from "./chunk-RLDX5SOC.js";
23
23
  import {
24
24
  session_language
25
25
  } from "./chunk-6V5OPIUU.js";
26
26
  import {
27
27
  hook_decision,
28
28
  lane_child_marker
29
- } from "./chunk-GBJUERYK.js";
29
+ } from "./chunk-WQ4OSBSS.js";
30
30
  import {
31
31
  PROJECT_ROOT,
32
32
  json_value,
@@ -34,7 +34,7 @@ import {
34
34
  time_density_hook,
35
35
  time_hook_transcript,
36
36
  time_reported_failure
37
- } from "./chunk-PAXMLGSS.js";
37
+ } from "./chunk-7VPDUBRN.js";
38
38
  import "./chunk-WPALEIRX.js";
39
39
  import "./chunk-RKUAD3I6.js";
40
40
 
@@ -78,8 +78,8 @@ function read_limit(raw) {
78
78
  }
79
79
  return { kind: "limit", limit: Number(trimmed) };
80
80
  }
81
- function lane_limit(environment2 = process.env) {
82
- return read_limit(environment2[LANE_LIMIT_KEY]);
81
+ function lane_limit(environment = process.env) {
82
+ return read_limit(environment[LANE_LIMIT_KEY]);
83
83
  }
84
84
  function free_lanes(limit, occupied) {
85
85
  return Math.max(NO_LANES, limit - occupied);
@@ -92,181 +92,6 @@ var lane_capacity = {
92
92
  free_lanes
93
93
  };
94
94
 
95
- // scripts/lane/lane-reap.ts
96
- import { execFileSync } from "node:child_process";
97
- var PGREP_COMMAND = "pgrep";
98
- var MATCH_FULL_COMMAND_LINE = "-f";
99
- var CHILDREN_OF_FLAG = "-P";
100
- var PS_COMMAND = "/bin/ps";
101
- var PARENT_FORMAT = ["-o", "ppid=", "-p"];
102
- var TERMINATE_SIGNAL = "SIGTERM";
103
- var PROBE_TIMEOUT_MS = 2e3;
104
- var LOWEST_CHILD_PID = 2;
105
- function parse_pids(printed) {
106
- return printed.split("\n").map((line) => Number(line.trim())).filter((pid) => Number.isSafeInteger(pid) && pid >= LOWEST_CHILD_PID);
107
- }
108
- function run_probe(command, args) {
109
- try {
110
- return execFileSync(command, [...args], {
111
- encoding: "utf8",
112
- timeout: PROBE_TIMEOUT_MS,
113
- stdio: ["ignore", "pipe", "ignore"]
114
- });
115
- } catch {
116
- return "";
117
- }
118
- }
119
- function parent_of(pid) {
120
- return parse_pids(run_probe(PS_COMMAND, [...PARENT_FORMAT, String(pid)]))[0];
121
- }
122
- function terminate(pid) {
123
- try {
124
- process.kill(pid, TERMINATE_SIGNAL);
125
- return true;
126
- } catch {
127
- return false;
128
- }
129
- }
130
- var SYSTEM_PROBES = {
131
- matching: (pattern) => parse_pids(run_probe(PGREP_COMMAND, [MATCH_FULL_COMMAND_LINE, pattern])),
132
- children_of: (pid) => parse_pids(run_probe(PGREP_COMMAND, [CHILDREN_OF_FLAG, String(pid)])),
133
- parent_of,
134
- terminate
135
- };
136
- function ancestry_of(pid, probes) {
137
- const ancestry = /* @__PURE__ */ new Set([pid]);
138
- let current = probes.parent_of(pid);
139
- while (current !== void 0 && !ancestry.has(current)) {
140
- ancestry.add(current);
141
- current = probes.parent_of(current);
142
- }
143
- return ancestry;
144
- }
145
- function own_ancestry(probes = SYSTEM_PROBES) {
146
- return ancestry_of(process.pid, probes);
147
- }
148
- function tree_of(roots, probes) {
149
- const tree = [];
150
- const pending = [...roots];
151
- let next = pending.shift();
152
- while (next !== void 0) {
153
- if (!tree.includes(next)) {
154
- tree.push(next);
155
- pending.push(...probes.children_of(next));
156
- }
157
- next = pending.shift();
158
- }
159
- return tree;
160
- }
161
- function reap_child(issue, probes = SYSTEM_PROBES) {
162
- const own = own_ancestry(probes);
163
- const pattern = lane_child_invocation.process_pattern(issue);
164
- const roots = probes.matching(pattern).filter((pid) => !own.has(pid));
165
- const doomed = tree_of(roots, probes).filter((pid) => !own.has(pid));
166
- return doomed.filter((pid) => probes.terminate(pid));
167
- }
168
- var lane_reap = {
169
- own_ancestry,
170
- parse_pids,
171
- reap_child
172
- };
173
-
174
- // scripts/run/run-headless.ts
175
- var HEADLESS_ENV_KEY = "JOSH_RUN_HEADLESS";
176
- var HEADLESS_VALUE = "1";
177
- function environment() {
178
- return { [HEADLESS_ENV_KEY]: HEADLESS_VALUE };
179
- }
180
- function is_headless(source = process.env) {
181
- return source[HEADLESS_ENV_KEY] === HEADLESS_VALUE;
182
- }
183
- function is_driving(read) {
184
- return read?.kind === "carried" && read.carry.is_handed_off !== true;
185
- }
186
- async function read_carry_here() {
187
- const repository = await run_carry.repository_directory();
188
- return repository === void 0 ? void 0 : run_carry.read_carry(run_carry.carry_path(repository));
189
- }
190
- async function must_keep_waiting(source = process.env) {
191
- const is_candidate = is_headless(source) && lane_child_marker.marked_issue(source) === void 0;
192
- if (!is_candidate || !await run_watcher_guard.has_lanes_in_flight()) return false;
193
- return is_driving(await read_carry_here());
194
- }
195
- async function current_carry() {
196
- const read = await read_carry_here();
197
- return read?.kind === "carried" ? read.carry : void 0;
198
- }
199
- function is_owned_here(carry, ancestry) {
200
- return carry.owner_pid !== void 0 && ancestry().has(carry.owner_pid);
201
- }
202
- function is_driven_here(read, ancestry) {
203
- if (read?.kind !== "carried" || !is_driving(read)) return false;
204
- return is_owned_here(read.carry, ancestry);
205
- }
206
- async function is_backlog_parent(source = process.env, ancestry = lane_reap.own_ancestry) {
207
- if (lane_child_marker.marked_issue(source) !== void 0) return false;
208
- return is_driven_here(await read_carry_here(), ancestry);
209
- }
210
- var run_headless = {
211
- HEADLESS_ENV_KEY,
212
- current_carry,
213
- environment,
214
- is_backlog_parent,
215
- is_headless,
216
- is_owned_here,
217
- must_keep_waiting
218
- };
219
-
220
- // scripts/issue/issue-cite.ts
221
- var GITHUB_URL_PREFIX = "https://github.com/";
222
- var ISSUE_PATH = "/issues/";
223
- var SUMMARY_SEPARATOR = " \u2014 ";
224
- var REPO_QUALIFIED = /^([^\s/#]+\/[^\s/#]+)#(\d+)$/u;
225
- var BARE_NUMBER = /^#?(\d+)$/u;
226
- function issue_url(slug, number) {
227
- return `${GITHUB_URL_PREFIX}${slug}${ISSUE_PATH}${number}`;
228
- }
229
- function citation_line(slug, number, summary) {
230
- return `[#${number}](${issue_url(slug, number)})${SUMMARY_SEPARATOR}${summary}`;
231
- }
232
- function qualified_target(token) {
233
- const match = REPO_QUALIFIED.exec(token);
234
- if (match === null) return void 0;
235
- const [, repo = "", number = ""] = match;
236
- return { number, repo };
237
- }
238
- function bare_target(token, default_repo) {
239
- const match = BARE_NUMBER.exec(token);
240
- if (match === null) return void 0;
241
- const [, number = ""] = match;
242
- return { number, repo: default_repo };
243
- }
244
- function parse_target(token, default_repo) {
245
- return qualified_target(token) ?? bare_target(token, default_repo);
246
- }
247
- function label(target) {
248
- return target.repo === void 0 ? `#${target.number}` : `${target.repo}#${target.number}`;
249
- }
250
- function missing_line(target) {
251
- return `\u2716 ${label(target)}: issue does not resolve \u2014 check the number and the repository`;
252
- }
253
- function unreadable_line(target) {
254
- return `\u2716 ${label(target)}: could not be read \u2014 a rate limit, expired auth, or a dropped connection`;
255
- }
256
- function no_repo_line(target) {
257
- return `\u2716 ${label(target)}: could not read this repository \u2014 check gh auth and the origin remote`;
258
- }
259
- var issue_cite = {
260
- SUMMARY_SEPARATOR,
261
- citation_line,
262
- issue_url,
263
- label,
264
- missing_line,
265
- no_repo_line,
266
- parse_target,
267
- unreadable_line
268
- };
269
-
270
95
  // scripts/rules/issue-citation.ts
271
96
  var ISSUE_NUMBER = /#\d+/gu;
272
97
  var REFERENCE_BOUNDARY = /[\s#()[\]<>|]/u;
@@ -488,11 +313,7 @@ function is_present(event) {
488
313
  return event !== void 0;
489
314
  }
490
315
  function parse_line(line) {
491
- try {
492
- return event_schema.safeParse(JSON.parse(line)).data;
493
- } catch {
494
- return void 0;
495
- }
316
+ return event_schema.safeParse(json_value.parse_or_undefined(line)).data;
496
317
  }
497
318
  function read_events(target) {
498
319
  const raw = stamp_file.read_stamp_text(target);
@@ -668,16 +489,16 @@ var backlog_ready = {
668
489
  };
669
490
 
670
491
  // scripts/gh/gh-spawn.ts
671
- import { execaSync } from "execa";
492
+ var NO_BUDGET = 0;
672
493
  function fetch_repo_name(timeout_ms) {
673
- const result = execaSync("gh", ["api", git_gh_api_path.repo_api_path(), "--jq", ".full_name"], {
674
- ...git_gh_exec.direct_environment(),
494
+ const stdout = git_gh_exec.read_gh_api_sync({
495
+ path: git_gh_api_path.repo_api_path(),
496
+ jq_filter: ".full_name",
675
497
  cwd: PROJECT_ROOT,
676
- reject: false,
677
- ...timeout_ms !== void 0 && { timeout: timeout_ms }
498
+ timeout_ms: timeout_ms ?? NO_BUDGET
678
499
  });
679
- if (result.exitCode !== 0 || !result.stdout) return void 0;
680
- return result.stdout.trim() || void 0;
500
+ const name = stdout?.trim();
501
+ return name === "" ? void 0 : name;
681
502
  }
682
503
  function get_repo_name_with_owner() {
683
504
  return fetch_repo_name(void 0);
@@ -746,9 +567,9 @@ function is_notify_disabled() {
746
567
  return parse_environment_string(process.env[NOTIFY_SWITCH_KEY]).toLowerCase() === NOTIFY_OFF_VALUE;
747
568
  }
748
569
  function build_header(task_type, repo_name) {
749
- const { icon, label: label2 } = TASK_DEFINITIONS[task_type];
750
- if (repo_name === void 0 || repo_name.length === 0) return `${icon} ${label2}`;
751
- return `${icon} ${repo_name}: ${label2}`;
570
+ const { icon, label } = TASK_DEFINITIONS[task_type];
571
+ if (repo_name === void 0 || repo_name.length === 0) return `${icon} ${label}`;
572
+ return `${icon} ${repo_name}: ${label}`;
752
573
  }
753
574
  function push_if_present(target, value) {
754
575
  if (value !== void 0 && value.length > 0) target.push(value);
@@ -758,8 +579,8 @@ function build_title_block(input) {
758
579
  push_if_present(lines, input.issue_title);
759
580
  return lines.join("\n");
760
581
  }
761
- function append_url(parts, label2, value) {
762
- if (value !== void 0 && value.length > 0) parts.push(`${label2}: ${value}`);
582
+ function append_url(parts, label, value) {
583
+ if (value !== void 0 && value.length > 0) parts.push(`${label}: ${value}`);
763
584
  }
764
585
  function build_url_parts(input) {
765
586
  const parts = [];