@joshuafolkken/kit 1.1784.0 → 1.2116.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 (690) hide show
  1. package/.claude/agents/reviewer-verification.md +19 -0
  2. package/.claude/agents/reviewer.md +19 -0
  3. package/.claude/settings.json +5 -6
  4. package/.claude/skills/dependency-update/SKILL.md +9 -10
  5. package/.claude/skills/workflow-commands/SKILL.md +6 -6
  6. package/.claude/skills/workflow-commands/background-commands.md +8 -5
  7. package/.claude/skills/workflow-commands/backlogrun-child.md +3 -1
  8. package/.claude/skills/workflow-commands/backlogrun-lanes.md +1 -1
  9. package/.claude/skills/workflow-commands/backlogrun-park.md +5 -2
  10. package/.claude/skills/workflow-commands/backlogrun-progress.md +2 -3
  11. package/.claude/skills/workflow-commands/backlogrun-recovery.md +1 -1
  12. package/.claude/skills/workflow-commands/backlogrun-steps.md +3 -2
  13. package/.claude/skills/workflow-commands/backlogrun.md +1 -1
  14. package/.claude/skills/workflow-commands/chain-rule.md +41 -32
  15. package/.claude/skills/workflow-commands/delegation.md +6 -6
  16. package/.claude/skills/workflow-commands/entry-sequence.md +2 -2
  17. package/.claude/skills/workflow-commands/followup.md +7 -5
  18. package/.claude/skills/workflow-commands/fullrun-steps.md +6 -6
  19. package/.claude/skills/workflow-commands/fullrun.md +1 -1
  20. package/.claude/skills/workflow-commands/issue-comments.md +9 -4
  21. package/.claude/skills/workflow-commands/issue-fold-existing.md +2 -1
  22. package/.claude/skills/workflow-commands/kickoff.md +2 -2
  23. package/.claude/skills/workflow-commands/observation-filing.md +1 -1
  24. package/.claude/skills/workflow-commands/observation-ledger.md +6 -4
  25. package/.claude/skills/workflow-commands/pre-gate-cut.md +9 -7
  26. package/.claude/skills/workflow-commands/prerequisite.md +3 -2
  27. package/.claude/skills/workflow-commands/retrospective.md +2 -2
  28. package/.claude/skills/workflow-commands/split-assessment.md +7 -5
  29. package/.codex/hooks.json +5 -5
  30. package/.github/actions/setup-pnpm/action.yml +9 -16
  31. package/.github/dependabot.yml +16 -0
  32. package/.github/workflows/auto-tag.yml +45 -0
  33. package/.github/workflows/ci.yml +155 -15
  34. package/.github/workflows/dependabot-auto-merge.yml +63 -4
  35. package/.github/workflows/production.yml +8 -0
  36. package/.github/workflows/publish.yml +60 -45
  37. package/.vscode/settings.json +19 -0
  38. package/CLAUDE.md +5 -12
  39. package/SECURITY.md +2 -2
  40. package/dist/CLAUDE.md +5 -12
  41. package/dist/commands/document-read-cli.js +2 -1
  42. package/dist/commands/document-section-main.js +2 -1
  43. package/dist/commands/read-set-cli.js +194 -134
  44. package/dist/commands/run-prep-main.js +9694 -10173
  45. package/dist/commands/run-step-cli.js +22138 -18285
  46. package/dist/hooks/audit-provision.js +23 -5
  47. package/dist/hooks/chunk-3GKE653K.js +6204 -0
  48. package/dist/hooks/chunk-45CJJOO7.js +1243 -0
  49. package/dist/hooks/{chunk-CWMBGKYW.js → chunk-5PM2JRGV.js} +2153 -856
  50. package/dist/hooks/{chunk-WR2KQAYZ.js → chunk-7SIUNQXK.js} +1207 -1470
  51. package/dist/hooks/{chunk-O2YBIDSI.js → chunk-CQD4LJE6.js} +1682 -1130
  52. package/dist/hooks/{chunk-VWWCFGWK.js → chunk-OPSRGWFU.js} +1 -1
  53. package/dist/hooks/{chunk-XGBNSWEI.js → chunk-UJ3FPMMM.js} +132 -49
  54. package/dist/hooks/chunk-VVNYJWEI.js +30 -0
  55. package/dist/hooks/chunk-Z6DQJKH3.js +2806 -0
  56. package/dist/hooks/codex-hook-adapter.js +8 -8
  57. package/dist/hooks/format-edited.js +4 -5
  58. package/dist/hooks/inputs.json +386 -360
  59. package/dist/hooks/pretool-guard.js +7 -6
  60. package/dist/hooks/session-lang.js +101 -258
  61. package/dist/hooks/stop-guard.js +1744 -2576
  62. package/dist/josh.js +7133 -6368
  63. package/dist/version/index.js +161 -1
  64. package/eslint/rules/comment-why-only.js +108 -0
  65. package/package.json +16 -9
  66. package/prompts/coding-standards.md +1 -1
  67. package/prompts/collaboration-workflow/file-edits.md +14 -11
  68. package/prompts/collaboration-workflow/issue-citation.md +0 -4
  69. package/prompts/collaboration-workflow/issue-template.md +40 -21
  70. package/prompts/collaboration-workflow/lane-instructions.md +3 -1
  71. package/prompts/collaboration-workflow/measurement.md +8 -1
  72. package/prompts/collaboration-workflow/operating-rules.md +11 -2
  73. package/prompts/collaboration-workflow/output-bounds.md +6 -2
  74. package/prompts/collaboration-workflow/plan-comment.md +1 -1
  75. package/prompts/collaboration-workflow/principles.md +9 -0
  76. package/prompts/collaboration-workflow/residency.md +3 -2
  77. package/prompts/collaboration-workflow/rule-delivery.md +13 -1
  78. package/prompts/collaboration-workflow/upstream-interrupt.md +2 -2
  79. package/prompts/collaboration-workflow/wip-cap.md +3 -1
  80. package/prompts/review-rubric.md +8 -0
  81. package/prompts/review.md +31 -22
  82. package/prompts/testing-guide.md +1 -0
  83. package/scripts/agent/agent-argv.ts +14 -16
  84. package/scripts/agent/agent-provider.ts +138 -0
  85. package/scripts/agent/agent-role-profile.ts +108 -156
  86. package/scripts/agent/agent-safe-text.ts +20 -5
  87. package/scripts/agent/api-usage-limit.ts +65 -0
  88. package/scripts/agent/claude-agent-argv.ts +19 -9
  89. package/scripts/agent/codex-agent-argv.ts +118 -22
  90. package/scripts/agent/usage-limit-reset.ts +179 -0
  91. package/scripts/auth/claude-token-output.ts +2 -2
  92. package/scripts/auto-ok/auto-ok-author.ts +53 -0
  93. package/scripts/auto-ok/auto-ok-cli.ts +20 -9
  94. package/scripts/backlog/backlog-defect-priority.ts +1 -1
  95. package/scripts/backlog/backlog-drive-cli.ts +6 -1
  96. package/scripts/backlog/backlog-drive-hold.ts +3 -3
  97. package/scripts/backlog/backlog-drive-idle.ts +10 -0
  98. package/scripts/backlog/backlog-drive-launch-pass.ts +90 -0
  99. package/scripts/backlog/backlog-drive-launch.ts +8 -2
  100. package/scripts/backlog/backlog-drive-named-offer.ts +73 -30
  101. package/scripts/backlog/backlog-drive-named.ts +28 -7
  102. package/scripts/backlog/backlog-drive-paused.ts +5 -4
  103. package/scripts/backlog/backlog-drive-restore.ts +11 -3
  104. package/scripts/backlog/backlog-drive.ts +21 -60
  105. package/scripts/backlog/backlog-gate-scope.ts +61 -0
  106. package/scripts/backlog/backlog-measure-close.ts +112 -0
  107. package/scripts/backlog/backlog-next.ts +39 -49
  108. package/scripts/backlog/backlog-occupied.ts +2 -2
  109. package/scripts/backlog/backlog-overlap.ts +42 -8
  110. package/scripts/backlog/backlog-plan-cli.ts +4 -1
  111. package/scripts/backlog/backlog-plan-comment.ts +81 -0
  112. package/scripts/backlog/backlog-plan-read.ts +19 -6
  113. package/scripts/backlog/backlog-pool.ts +50 -12
  114. package/scripts/backlog/backlog-rank.ts +60 -13
  115. package/scripts/backlog/backlog-stalled-detect.ts +2 -1
  116. package/scripts/backlog/backlog-waves.ts +17 -2
  117. package/scripts/backlog/backlogrun-launch.ts +7 -4
  118. package/scripts/cost-runtime/context-cut-payback.ts +27 -25
  119. package/scripts/cost-runtime/cost-cli.ts +37 -16
  120. package/scripts/cost-runtime/cost-pricing.ts +9 -0
  121. package/scripts/cost-runtime/cost-verdict.ts +4 -1
  122. package/scripts/delegation/delegation-policy.ts +2 -2
  123. package/scripts/delegation/duplicate-read-guard.ts +1 -0
  124. package/scripts/delegation/investigation-guard.ts +14 -2
  125. package/scripts/delegation/investigation-reads.ts +45 -23
  126. package/scripts/dependabot/dependabot-cooldown.ts +3 -2
  127. package/scripts/discovery/repo-party.ts +80 -20
  128. package/scripts/discovery/session-owner-pin.ts +51 -0
  129. package/scripts/document/capped-print.ts +1 -1
  130. package/scripts/document/command-reference-line-budget.ts +42 -0
  131. package/scripts/document/document-byte-budget.ts +17 -7
  132. package/scripts/document/document-checks.ts +20 -0
  133. package/scripts/document/document-ratchet-check.ts +101 -0
  134. package/scripts/document/document-section.ts +1 -0
  135. package/scripts/document/entry-read-budget.ts +7 -3
  136. package/scripts/document/issue-citation-budget.ts +94 -0
  137. package/scripts/epic/epic-cli-argv.ts +2 -2
  138. package/scripts/epic/epic-fetch.ts +4 -2
  139. package/scripts/epic/epic-graph.ts +7 -2
  140. package/scripts/epic/epic-issue.ts +3 -1
  141. package/scripts/epic/epic-rank.ts +5 -0
  142. package/scripts/exports/unused-members-check.ts +62 -0
  143. package/scripts/exports/unused-members-cli.ts +6 -51
  144. package/scripts/followup/followup-ci-path.ts +67 -0
  145. package/scripts/followup/followup-coderabbit-retrigger.ts +261 -0
  146. package/scripts/followup/followup-coderabbit-wait.ts +13 -10
  147. package/scripts/followup/followup-failed-tests.ts +160 -0
  148. package/scripts/followup/followup-job-needs.ts +100 -0
  149. package/scripts/followup/followup-job-rerun.ts +303 -0
  150. package/scripts/followup/followup-main-move.ts +113 -0
  151. package/scripts/followup/git-followup-finish.ts +43 -11
  152. package/scripts/followup/git-followup-pending.ts +3 -3
  153. package/scripts/followup/git-followup-stages.ts +41 -11
  154. package/scripts/followup/git-pr-followup-checks.ts +55 -16
  155. package/scripts/followup/git-pr-followup-wrapup.ts +24 -5
  156. package/scripts/followup/git-pr-followup.ts +62 -27
  157. package/scripts/fresh-machine/fresh-machine-script.ts +5 -9
  158. package/scripts/fresh-machine/specs/kit-test-backlogrun-python.json +2 -2
  159. package/scripts/fresh-machine/specs/kit-test-backlogrun.json +2 -2
  160. package/scripts/gate/busy-average.ts +34 -2
  161. package/scripts/gate/check-related-pinned.ts +43 -0
  162. package/scripts/gate/check-related-reuse.ts +64 -0
  163. package/scripts/gate/check-related-section.ts +57 -0
  164. package/scripts/gate/check-related-unplanned.ts +34 -0
  165. package/scripts/gate/check-related.ts +265 -0
  166. package/scripts/gate/command-memory.ts +1 -1
  167. package/scripts/gate/core-admission.ts +24 -6
  168. package/scripts/gate/core-budget-timing.ts +20 -6
  169. package/scripts/gate/core-budget.ts +40 -11
  170. package/scripts/gate/core-wait-record.ts +3 -2
  171. package/scripts/gate/core-wait.ts +25 -2
  172. package/scripts/gate/core-weights.ts +15 -7
  173. package/scripts/gate/gate-labels.ts +46 -0
  174. package/scripts/gate/gate-ledger.ts +14 -6
  175. package/scripts/gate/gate-plan.ts +103 -58
  176. package/scripts/gate/gate-report.ts +9 -7
  177. package/scripts/gate/gate-run-steps.ts +26 -3
  178. package/scripts/gate/gate-skip.ts +45 -6
  179. package/scripts/gate/gate-static-group.ts +60 -0
  180. package/scripts/gate/gate-steps.ts +2 -1
  181. package/scripts/gate/gate-tree.ts +4 -2
  182. package/scripts/gate/hook-gate-reuse.ts +19 -2
  183. package/scripts/gate/metrics-totals.ts +59 -0
  184. package/scripts/gate/scoped-green.ts +68 -15
  185. package/scripts/gate/since-green.ts +14 -6
  186. package/scripts/gate/structural-checks.ts +96 -0
  187. package/scripts/gate/verification-gate.ts +51 -16
  188. package/scripts/gate/verification-inputs.ts +21 -6
  189. package/scripts/gate/verification-tail.ts +52 -0
  190. package/scripts/gh/gh-author-association.ts +23 -2
  191. package/scripts/gh/git-ai-review-scan.ts +1 -1
  192. package/scripts/gh/git-gh-api-path.ts +12 -3
  193. package/scripts/gh/git-gh-comments-unreadable.ts +36 -0
  194. package/scripts/gh/git-gh-exec.ts +32 -2
  195. package/scripts/gh/git-gh-issue-read.ts +4 -2
  196. package/scripts/gh/git-gh-issue-rest.ts +1 -0
  197. package/scripts/gh/git-gh-issue-write.ts +8 -2
  198. package/scripts/gh/git-gh-issue.ts +12 -5
  199. package/scripts/gh/git-gh-pr-auto-merge.ts +13 -6
  200. package/scripts/gh/git-gh-pr-graphql-state.ts +56 -0
  201. package/scripts/gh/git-gh-pr-read.ts +74 -13
  202. package/scripts/gh/git-gh-pr-rest.ts +3 -1
  203. package/scripts/gh/git-gh-pr-snapshot.ts +22 -7
  204. package/scripts/gh/git-gh-pr-too-large.ts +20 -0
  205. package/scripts/gh/git-gh-pr.ts +21 -7
  206. package/scripts/gh/git-gh-retry.ts +141 -0
  207. package/scripts/gh/git-pr-ai-review.ts +15 -6
  208. package/scripts/gh/git-pr-checks-eval.ts +3 -0
  209. package/scripts/gh/git-pr-checks.ts +5 -5
  210. package/scripts/git/base-tree.ts +30 -0
  211. package/scripts/git/change-base.ts +4 -10
  212. package/scripts/git/changed-paths-sync.ts +63 -0
  213. package/scripts/git/changed-paths.ts +16 -1
  214. package/scripts/git/git-common-directory.ts +11 -1
  215. package/scripts/git/git-diff-reads.ts +66 -20
  216. package/scripts/git/git-error.ts +9 -2
  217. package/scripts/git/git-schemas.ts +13 -0
  218. package/scripts/git/git-worktree.ts +13 -0
  219. package/scripts/git/gone-branch.ts +4 -1
  220. package/scripts/git/main-merge-budget-conflict.ts +89 -0
  221. package/scripts/git/main-merge-guard.ts +55 -18
  222. package/scripts/git/main-merge-regenerate.ts +59 -25
  223. package/scripts/git/main-merge.ts +53 -5
  224. package/scripts/git/no-base-checkout.ts +127 -0
  225. package/scripts/git/stash/git-stash.ts +11 -2
  226. package/scripts/git/stash/stash-push-cli.ts +10 -0
  227. package/scripts/hooks/batch-guard.ts +40 -21
  228. package/scripts/hooks/edited-cspell.ts +37 -11
  229. package/scripts/hooks/format-edited-file.ts +22 -2
  230. package/scripts/hooks/lane-plan-guard.ts +50 -0
  231. package/scripts/hooks/pre-commit-lint-switch.ts +9 -0
  232. package/scripts/hooks/pre-commit-lint.ts +14 -1
  233. package/scripts/hooks/pre-push-related-switch.ts +10 -0
  234. package/scripts/hooks/pre-push-unit.ts +76 -10
  235. package/scripts/hooks/pretool-guard.ts +2 -0
  236. package/scripts/hooks/reserved-run.ts +14 -1
  237. package/scripts/hooks/run-hook.sh +23 -8
  238. package/scripts/hooks/step-zero-notice.ts +6 -1
  239. package/scripts/hooks/stop-actions.ts +3 -15
  240. package/scripts/hooks/stop-guard.ts +7 -6
  241. package/scripts/init/distributed-paths.ts +1 -0
  242. package/scripts/init/hook-command-rewrite.ts +5 -1
  243. package/scripts/init/hook-launch.ts +4 -2
  244. package/scripts/issue/aggregation-split.ts +52 -0
  245. package/scripts/issue/defect-origin-line.ts +19 -1
  246. package/scripts/issue/defect-rate-cli.ts +5 -102
  247. package/scripts/issue/defect-report.ts +4 -4
  248. package/scripts/issue/effect-audit-cli.ts +178 -0
  249. package/scripts/issue/effect-audit.ts +185 -0
  250. package/scripts/issue/expected-effect-lint.ts +64 -9
  251. package/scripts/issue/git-next-issues.ts +5 -0
  252. package/scripts/issue/issue-body-or-comment.ts +38 -4
  253. package/scripts/issue/issue-cite-cli.ts +1 -3
  254. package/scripts/issue/issue-classification.ts +1 -0
  255. package/scripts/issue/issue-closing-pr.ts +8 -1
  256. package/scripts/issue/issue-evidence-exit.ts +4 -2
  257. package/scripts/issue/issue-file-cap.ts +58 -0
  258. package/scripts/issue/issue-file-cli.ts +111 -38
  259. package/scripts/issue/issue-file-deferral.ts +52 -0
  260. package/scripts/issue/issue-file-fold.ts +29 -10
  261. package/scripts/issue/issue-file-interrupt.ts +85 -0
  262. package/scripts/issue/issue-file-lane-hint.ts +30 -0
  263. package/scripts/issue/issue-file.ts +43 -6
  264. package/scripts/issue/issue-labels.ts +19 -2
  265. package/scripts/issue/issue-lint-cli.ts +27 -2
  266. package/scripts/issue/issue-measured-cli.ts +13 -35
  267. package/scripts/issue/issue-measured-close.ts +58 -0
  268. package/scripts/issue/issue-not-before-label.ts +2 -2
  269. package/scripts/issue/issue-not-before.ts +4 -1
  270. package/scripts/issue/issue-priority-cli.ts +60 -0
  271. package/scripts/issue/issue-priority-raise.ts +55 -0
  272. package/scripts/issue/issue-priority.ts +174 -43
  273. package/scripts/issue/issue-rank.ts +21 -4
  274. package/scripts/issue/issue-read-cli.ts +32 -6
  275. package/scripts/issue/issue-read.ts +37 -12
  276. package/scripts/issue/issue-sample-gate.ts +95 -74
  277. package/scripts/issue/issue-sample-prime.ts +127 -0
  278. package/scripts/issue/issue-sample-required.ts +57 -0
  279. package/scripts/issue/issue-sample-source.ts +12 -11
  280. package/scripts/issue/issue-search.ts +124 -0
  281. package/scripts/issue/issue-state.ts +13 -1
  282. package/scripts/issue/issue-template-section.ts +43 -0
  283. package/scripts/issue/issue-watch-diff.ts +31 -1
  284. package/scripts/issue/issue-watch-hook.ts +11 -2
  285. package/scripts/issue/issue-watch.ts +55 -12
  286. package/scripts/issue/markdown-section.ts +1 -0
  287. package/scripts/issue/measure-declaration.ts +121 -0
  288. package/scripts/issue/measure-rerun-cli.ts +7 -70
  289. package/scripts/issue/plan-consumers-section.ts +22 -1
  290. package/scripts/issue/reproduction-measure.ts +3 -1
  291. package/scripts/issue/size-estimate.ts +90 -0
  292. package/scripts/issue/trusted-measure.ts +84 -0
  293. package/scripts/josh/command-usage.ts +3 -2
  294. package/scripts/josh/durable-state-migrate.ts +105 -0
  295. package/scripts/josh/durable-state.ts +112 -0
  296. package/scripts/josh/josh-aliases.ts +95 -0
  297. package/scripts/josh/josh-command-map.ts +1 -82
  298. package/scripts/josh/josh-commands-agent-hooks.ts +6 -6
  299. package/scripts/josh/josh-commands-ai.ts +5 -5
  300. package/scripts/josh/josh-commands-development.ts +59 -58
  301. package/scripts/josh/josh-commands-issue-write.ts +23 -4
  302. package/scripts/josh/josh-commands-issue.ts +32 -0
  303. package/scripts/josh/josh-commands-lane.ts +87 -4
  304. package/scripts/josh/josh-commands-lint.ts +16 -3
  305. package/scripts/josh/josh-commands-maintenance.ts +15 -0
  306. package/scripts/josh/josh-commands-review.ts +41 -6
  307. package/scripts/josh/josh-commands-ship.ts +56 -8
  308. package/scripts/josh/josh-commands-test-check.ts +80 -0
  309. package/scripts/josh/josh-commands-workflow.ts +1 -1
  310. package/scripts/josh/josh-environment-file.ts +43 -3
  311. package/scripts/josh/josh-in-process.ts +2 -2
  312. package/scripts/josh/josh-logic.ts +5 -3
  313. package/scripts/josh/josh-run.ts +19 -1
  314. package/scripts/josh/run-record-path.ts +15 -0
  315. package/scripts/josh/stamp-file.ts +11 -2
  316. package/scripts/lane/lane-adopt-cli.ts +98 -0
  317. package/scripts/lane/lane-adopt.ts +208 -0
  318. package/scripts/lane/lane-await.ts +5 -8
  319. package/scripts/lane/lane-baseline.ts +123 -0
  320. package/scripts/lane/lane-breakdown-cli.ts +64 -0
  321. package/scripts/lane/lane-breakdown-implement.ts +170 -0
  322. package/scripts/lane/lane-breakdown-laps.ts +107 -0
  323. package/scripts/lane/lane-breakdown-pinned.ts +76 -0
  324. package/scripts/lane/lane-breakdown-text.ts +145 -0
  325. package/scripts/lane/lane-breakdown.ts +239 -0
  326. package/scripts/lane/lane-check-stats.ts +29 -8
  327. package/scripts/lane/lane-child-invocation.ts +9 -2
  328. package/scripts/lane/lane-child-mark-keys.ts +12 -0
  329. package/scripts/lane/lane-child-marker.ts +20 -1
  330. package/scripts/lane/lane-ci-path-stats.ts +73 -0
  331. package/scripts/lane/lane-claim-stats.ts +84 -0
  332. package/scripts/lane/lane-close.ts +8 -3
  333. package/scripts/lane/lane-dispatch-log.ts +3 -3
  334. package/scripts/lane/lane-dispatch.ts +2 -2
  335. package/scripts/lane/lane-gap-stats.ts +7 -6
  336. package/scripts/lane/lane-guard-policy.ts +7 -1
  337. package/scripts/lane/lane-implement-stats.ts +207 -0
  338. package/scripts/lane/lane-implement-subagents.ts +90 -0
  339. package/scripts/lane/lane-investigation-switch.ts +16 -0
  340. package/scripts/lane/lane-ledger-kind.ts +31 -0
  341. package/scripts/lane/lane-ledger-schema-ship.ts +49 -0
  342. package/scripts/lane/lane-ledger-schema.ts +119 -36
  343. package/scripts/lane/lane-ledger-write.ts +257 -0
  344. package/scripts/lane/lane-ledger.ts +31 -177
  345. package/scripts/lane/lane-load.ts +1 -1
  346. package/scripts/lane/lane-measure-cli.ts +176 -59
  347. package/scripts/lane/lane-net-read.ts +44 -0
  348. package/scripts/lane/lane-net-time.ts +212 -0
  349. package/scripts/lane/lane-open.ts +16 -7
  350. package/scripts/lane/lane-output.ts +2 -4
  351. package/scripts/lane/lane-overrun-prompt.ts +147 -0
  352. package/scripts/lane/lane-overrun.ts +274 -0
  353. package/scripts/lane/lane-paths.ts +24 -1
  354. package/scripts/lane/lane-pause-cli.ts +4 -1
  355. package/scripts/lane/lane-paused-spans.ts +97 -0
  356. package/scripts/lane/lane-plan-check.ts +207 -0
  357. package/scripts/lane/lane-plan-cli.ts +41 -0
  358. package/scripts/lane/lane-plan.ts +144 -0
  359. package/scripts/lane/lane-registry.ts +14 -1
  360. package/scripts/lane/lane-relaunch.ts +1 -1
  361. package/scripts/lane/lane-round-one-stats.ts +51 -0
  362. package/scripts/lane/lane-sampler.ts +23 -4
  363. package/scripts/lane/lane-session-action.ts +93 -18
  364. package/scripts/lane/lane-session-broker.ts +49 -21
  365. package/scripts/lane/lane-session-reread-main.ts +14 -0
  366. package/scripts/lane/lane-session-reread.ts +51 -0
  367. package/scripts/lane/lane-ship-lap-stats.ts +74 -0
  368. package/scripts/lane/lane-sleep.ts +58 -0
  369. package/scripts/lane/lane-spent.ts +1 -1
  370. package/scripts/lane/lane-split-stats.ts +28 -0
  371. package/scripts/lane/lane-stage-stats.ts +13 -1
  372. package/scripts/lane/lane-state.ts +41 -9
  373. package/scripts/lane/lane-stats-tables.ts +58 -0
  374. package/scripts/lane/lane-stats.ts +21 -5
  375. package/scripts/lane/lane-stop-stats.ts +51 -19
  376. package/scripts/lane/lane-tail-stats.ts +32 -0
  377. package/scripts/lane/lane-transcript-calls.ts +67 -10
  378. package/scripts/lane/lane-transcript-stats.ts +44 -12
  379. package/scripts/lane/lane-value-cell.ts +72 -0
  380. package/scripts/lane/lane-value.ts +118 -0
  381. package/scripts/lane/lane-withdraw-closed.ts +124 -0
  382. package/scripts/lane/lane-withdraw.ts +108 -31
  383. package/scripts/lane/lane-yield.ts +85 -0
  384. package/scripts/lane/openai-lane-ship.ts +12 -11
  385. package/scripts/lane/openai-lane-supervisor-decision.ts +6 -8
  386. package/scripts/lane/openai-lane-supervisor-owner.ts +5 -8
  387. package/scripts/lane/openai-lane-supervisor.ts +5 -4
  388. package/scripts/lib/poll.ts +38 -9
  389. package/scripts/lib/settled-together.ts +10 -0
  390. package/scripts/lib/shell-quote.ts +21 -0
  391. package/scripts/lib/token-shape.ts +111 -0
  392. package/scripts/lint/eslint-daemon-sources.ts +79 -0
  393. package/scripts/lint/eslint-daemon.ts +45 -6
  394. package/scripts/lint/eslint-warm-cli.ts +7 -0
  395. package/scripts/lint/eslint-warm.ts +66 -0
  396. package/scripts/lint/import-graph.ts +141 -11
  397. package/scripts/lint/lint-gate-scope.ts +2 -2
  398. package/scripts/lint/lint-parallel.ts +54 -6
  399. package/scripts/lint/lint-related.ts +154 -33
  400. package/scripts/lint/rename-cli.ts +179 -0
  401. package/scripts/lint/rename-identifier.ts +192 -0
  402. package/scripts/lint/type-only-imports.ts +58 -0
  403. package/scripts/notify/telegram-notify.ts +12 -3
  404. package/scripts/observations/observation-record.ts +42 -16
  405. package/scripts/observations/observations-flush.ts +32 -9
  406. package/scripts/overrides/overrides-check.ts +9 -1
  407. package/scripts/release/release-approval-prune.ts +7 -1
  408. package/scripts/repo/required-checks-logic.ts +4 -1
  409. package/scripts/repo/ruleset-check.ts +4 -3
  410. package/scripts/report/markdown-shape.ts +28 -0
  411. package/scripts/report/report-format-reference.ts +15 -1
  412. package/scripts/report/report-labels.ts +12 -1
  413. package/scripts/report/report-lint-child-summary.ts +94 -0
  414. package/scripts/report/report-lint-cli.ts +26 -7
  415. package/scripts/report/report-lint.ts +2 -20
  416. package/scripts/review/prose-stale-cli.ts +88 -0
  417. package/scripts/review/prose-stale-scan.ts +152 -0
  418. package/scripts/review/review-attest.ts +73 -23
  419. package/scripts/review/review-brief-cli.ts +68 -19
  420. package/scripts/review/review-brief-paths.ts +22 -0
  421. package/scripts/review/review-brief.ts +14 -7
  422. package/scripts/review/review-comment-carry.ts +47 -0
  423. package/scripts/review/review-comment-round.ts +85 -22
  424. package/scripts/review/review-finding-ledger.ts +109 -7
  425. package/scripts/review/review-finding-text.ts +43 -0
  426. package/scripts/review/review-interaction.ts +11 -0
  427. package/scripts/review/review-lane-handover.ts +68 -0
  428. package/scripts/review/review-lint-cli.ts +57 -0
  429. package/scripts/review/review-lint-findings.ts +92 -0
  430. package/scripts/review/review-lint-sections.ts +80 -0
  431. package/scripts/review/review-lint.ts +221 -0
  432. package/scripts/review/review-prior-findings.ts +102 -0
  433. package/scripts/review/review-readers-scan.ts +4 -2
  434. package/scripts/review/review-record-cli.ts +177 -54
  435. package/scripts/review/review-record-code-round.ts +55 -0
  436. package/scripts/review/review-record-comment.ts +60 -0
  437. package/scripts/review/review-record-interaction.ts +35 -0
  438. package/scripts/review/review-record-pinned.ts +108 -0
  439. package/scripts/review/review-record.ts +25 -1
  440. package/scripts/review/review-reviewed-tree.ts +307 -0
  441. package/scripts/review/review-round-one-closure.ts +62 -0
  442. package/scripts/review/review-round-reuse.ts +106 -0
  443. package/scripts/review/review-round2-cli.ts +91 -29
  444. package/scripts/review/review-round2-skip-comment.ts +55 -0
  445. package/scripts/review/review-round2.ts +24 -8
  446. package/scripts/review/review-stamps.ts +7 -3
  447. package/scripts/review/review-stop-log.ts +20 -6
  448. package/scripts/review/review-stops-cli.ts +2 -1
  449. package/scripts/review/review-submit-cli.ts +101 -0
  450. package/scripts/rules/agent-model.ts +1 -1
  451. package/scripts/rules/bash-triggers.ts +3 -3
  452. package/scripts/rules/concise-reply.ts +88 -0
  453. package/scripts/rules/credential-body.ts +77 -0
  454. package/scripts/rules/decision-oracle.ts +1 -1
  455. package/scripts/rules/delivered-rules.ts +36 -17
  456. package/scripts/rules/destructive-command.ts +3 -11
  457. package/scripts/rules/direct-issue-comment.ts +34 -12
  458. package/scripts/rules/direct-issue-read.ts +191 -0
  459. package/scripts/rules/direct-pr-create.ts +4 -24
  460. package/scripts/rules/early-heartbeat.ts +2 -0
  461. package/scripts/rules/edit-tool.ts +27 -0
  462. package/scripts/rules/file-edit-rows.ts +17 -0
  463. package/scripts/rules/file-rewrite.ts +146 -0
  464. package/scripts/rules/firing-point.ts +3 -2
  465. package/scripts/rules/gh-api.ts +128 -7
  466. package/scripts/rules/gh-repo-selector.ts +84 -0
  467. package/scripts/rules/git-force.ts +2 -2
  468. package/scripts/rules/guard-remedy.ts +14 -5
  469. package/scripts/rules/implementation-cut.ts +61 -28
  470. package/scripts/rules/investigator-foreground.ts +231 -0
  471. package/scripts/rules/issue-citation.ts +15 -60
  472. package/scripts/rules/issue-comments.ts +9 -4
  473. package/scripts/rules/josh-git-bare.ts +1 -1
  474. package/scripts/rules/lane-background.ts +41 -13
  475. package/scripts/rules/lane-direct-tool.ts +107 -9
  476. package/scripts/rules/lane-interactive-ask.ts +4 -1
  477. package/scripts/rules/lane-park.ts +4 -2
  478. package/scripts/rules/lane-spilled-read.ts +90 -0
  479. package/scripts/rules/lane-split-park.ts +1 -1
  480. package/scripts/rules/lane-switch-main.ts +4 -4
  481. package/scripts/rules/last-prompt.ts +20 -47
  482. package/scripts/rules/oracle-consulted.ts +1 -1
  483. package/scripts/rules/permission-guards.ts +5 -1
  484. package/scripts/rules/piped-verification-shapes.ts +110 -0
  485. package/scripts/rules/piped-verification.ts +67 -17
  486. package/scripts/rules/poll-loop.ts +72 -9
  487. package/scripts/rules/pr-merge.ts +5 -5
  488. package/scripts/rules/pre-gate-cut.ts +3 -3
  489. package/scripts/rules/protected-files.ts +88 -24
  490. package/scripts/rules/reply-language.ts +3 -17
  491. package/scripts/rules/reply-prose.ts +34 -0
  492. package/scripts/rules/repo-admin.ts +132 -0
  493. package/scripts/rules/reviewer-foreground.ts +88 -0
  494. package/scripts/rules/round-one-check-related.ts +120 -0
  495. package/scripts/rules/rule-body-guard.ts +5 -15
  496. package/scripts/rules/rule-value-cache.ts +53 -5
  497. package/scripts/rules/rule-value-candidates.ts +84 -0
  498. package/scripts/rules/rule-value-cli.ts +59 -11
  499. package/scripts/rules/rule-value.ts +17 -4
  500. package/scripts/rules/run-tail-rule.ts +1 -1
  501. package/scripts/rules/sed-in-place.ts +196 -0
  502. package/scripts/rules/shell-segments.ts +10 -2
  503. package/scripts/rules/stop-rule-rows.ts +1 -13
  504. package/scripts/rules/stop-rules.ts +33 -58
  505. package/scripts/rules/test-declared-commit.ts +1 -1
  506. package/scripts/rules/third-party-write.ts +110 -23
  507. package/scripts/rules/timed-rerun.ts +1 -1
  508. package/scripts/rules/turn-filings.ts +90 -0
  509. package/scripts/rules/worktree-guard.ts +22 -7
  510. package/scripts/run/board/run-board-ending-reason.ts +6 -2
  511. package/scripts/run/board/run-board-fit.ts +24 -1
  512. package/scripts/run/board/run-board-found.ts +134 -0
  513. package/scripts/run/board/run-board-header.ts +8 -0
  514. package/scripts/run/board/run-board-labels.ts +11 -1
  515. package/scripts/run/board/run-board-lane-time.ts +1 -0
  516. package/scripts/run/board/run-board-link.ts +15 -2
  517. package/scripts/run/board/run-board-notes.ts +7 -1
  518. package/scripts/run/board/run-board-operation.ts +4 -2
  519. package/scripts/run/board/run-board-phase.ts +2 -5
  520. package/scripts/run/board/run-board-plan.ts +1 -1
  521. package/scripts/run/board/run-board-read.ts +46 -1
  522. package/scripts/run/board/run-board-reason.ts +20 -8
  523. package/scripts/run/board/run-board-render-checks.ts +3 -2
  524. package/scripts/run/board/run-board-render-drawn.ts +11 -0
  525. package/scripts/run/board/run-board-render-found.ts +157 -0
  526. package/scripts/run/board/run-board-render-lead.ts +9 -0
  527. package/scripts/run/board/run-board-render-legend.ts +19 -0
  528. package/scripts/run/board/run-board-render-tail.ts +1 -1
  529. package/scripts/run/board/run-board-render.ts +82 -18
  530. package/scripts/run/board/run-board-spin.ts +1 -3
  531. package/scripts/run/board/run-board-status.ts +2 -0
  532. package/scripts/run/board/run-board-tick.ts +39 -10
  533. package/scripts/run/carry/run-carry-ended.ts +3 -2
  534. package/scripts/run/carry/run-carry.ts +3 -2
  535. package/scripts/run/cut/run-cut-cli.ts +33 -133
  536. package/scripts/run/cut/run-cut-digest.ts +152 -0
  537. package/scripts/run/cut/run-cut-handoff.ts +52 -8
  538. package/scripts/run/cut/run-cut-report.ts +24 -3
  539. package/scripts/run/cut/run-cut-resume.ts +129 -0
  540. package/scripts/run/cut/run-cut-review.ts +105 -0
  541. package/scripts/run/cut/run-cut.ts +18 -7
  542. package/scripts/run/detached-launch.ts +1 -1
  543. package/scripts/run/entry/run-entry-cli.ts +88 -19
  544. package/scripts/run/entry/run-entry-spill.ts +83 -0
  545. package/scripts/run/entry/run-entry-stop.ts +5 -1
  546. package/scripts/run/entry/run-entry-trust.ts +91 -0
  547. package/scripts/run/event/run-event-baseline.ts +56 -0
  548. package/scripts/run/event/run-event-filed.ts +9 -3
  549. package/scripts/run/event/run-event-overrun.ts +197 -0
  550. package/scripts/run/event/run-event-render.ts +4 -0
  551. package/scripts/run/event/run-event-stream.ts +25 -3
  552. package/scripts/run/hold/run-stop-notify.ts +3 -8
  553. package/scripts/run/merge/run-merge-cap.ts +57 -0
  554. package/scripts/run/merge/run-merge-cli.ts +66 -23
  555. package/scripts/run/merge/run-merge-outcome.ts +2 -0
  556. package/scripts/run/merge/run-merge-ship.ts +13 -3
  557. package/scripts/run/merge/run-merge-signals.ts +40 -23
  558. package/scripts/run/merge/run-merge-steps.ts +56 -36
  559. package/scripts/run/merge/run-merge-usage-limit.ts +53 -0
  560. package/scripts/run/merge/run-merge-withdrawn.ts +53 -0
  561. package/scripts/run/merge/run-merge.ts +41 -14
  562. package/scripts/run/review/run-review-cli.ts +306 -20
  563. package/scripts/run/review/run-review-early-push.ts +121 -0
  564. package/scripts/run/review/run-review-join-read.ts +94 -0
  565. package/scripts/run/review/run-review-pinned-accepted.ts +126 -0
  566. package/scripts/run/review/run-review-pinned-join.ts +216 -0
  567. package/scripts/run/review/run-review-pinned-steps.ts +383 -0
  568. package/scripts/run/review/run-review-pinned-tree.ts +37 -0
  569. package/scripts/run/review/run-review-pinned.ts +53 -0
  570. package/scripts/run/review/run-review-steps.ts +70 -34
  571. package/scripts/run/review/run-review.ts +26 -6
  572. package/scripts/run/run-parent-cut-hook.ts +3 -4
  573. package/scripts/run/run-prep.ts +1 -0
  574. package/scripts/run/run-stage-read.ts +2 -6
  575. package/scripts/run/run-step-cli.ts +17 -5
  576. package/scripts/run/run-step-lane-plan.ts +27 -0
  577. package/scripts/run/run-step-section.ts +26 -7
  578. package/scripts/run/run-step.ts +5 -2
  579. package/scripts/run/ship/run-ship-args.ts +19 -0
  580. package/scripts/run/ship/run-ship-brokered-review.ts +106 -0
  581. package/scripts/run/ship/run-ship-cli.ts +131 -39
  582. package/scripts/run/ship/run-ship-conflict-probe.ts +59 -0
  583. package/scripts/run/ship/run-ship-detach.ts +10 -4
  584. package/scripts/run/ship/run-ship-handover.ts +106 -0
  585. package/scripts/run/ship/run-ship-infra-retry.ts +16 -1
  586. package/scripts/run/ship/run-ship-lap.ts +63 -0
  587. package/scripts/run/ship/run-ship-next.ts +27 -26
  588. package/scripts/run/ship/run-ship-overlap.ts +8 -3
  589. package/scripts/run/ship/run-ship-place.ts +9 -2
  590. package/scripts/run/ship/run-ship-planned.ts +92 -0
  591. package/scripts/run/ship/run-ship-pre-detach-pinned.ts +197 -0
  592. package/scripts/run/ship/run-ship-pre-detach-timed.ts +7 -8
  593. package/scripts/run/ship/run-ship-pre-detach.ts +77 -23
  594. package/scripts/run/ship/run-ship-preflight.ts +16 -4
  595. package/scripts/run/ship/run-ship-probe.ts +23 -9
  596. package/scripts/run/ship/run-ship-relaunch-cap.ts +43 -7
  597. package/scripts/run/ship/run-ship-relaunch.ts +51 -0
  598. package/scripts/run/ship/run-ship-return.ts +103 -29
  599. package/scripts/run/ship/run-ship-review-reason.ts +24 -0
  600. package/scripts/run/ship/run-ship-review-steps.ts +230 -59
  601. package/scripts/run/ship/run-ship-review.ts +171 -51
  602. package/scripts/run/ship/run-ship-reviewer.ts +138 -42
  603. package/scripts/run/ship/run-ship-scoped.ts +39 -10
  604. package/scripts/run/ship/run-ship-stage.ts +49 -13
  605. package/scripts/run/ship/run-ship-steps.ts +24 -4
  606. package/scripts/run/ship/run-ship-stop-cause.ts +43 -2
  607. package/scripts/run/ship/run-ship-stop-context.ts +50 -13
  608. package/scripts/run/ship/run-ship-sync.ts +171 -30
  609. package/scripts/run/ship/run-ship-synced-scope.ts +178 -0
  610. package/scripts/run/ship/run-ship-wait-cli.ts +145 -0
  611. package/scripts/run/ship/run-ship-waiter.ts +114 -0
  612. package/scripts/run/ship/run-ship.ts +16 -2
  613. package/scripts/run/wake/run-wake-caffeinate.ts +48 -0
  614. package/scripts/run/wake/run-wake-cli.ts +6 -113
  615. package/scripts/run/wake/run-wake-code.ts +53 -11
  616. package/scripts/run/wake/run-wake-driver.ts +5 -3
  617. package/scripts/run/wake/run-wake-finish.ts +137 -0
  618. package/scripts/run/wake/run-wake-loop.ts +5 -3
  619. package/scripts/run/wake/run-wake-ports.ts +11 -3
  620. package/scripts/run/wake/run-wake-session.ts +2 -0
  621. package/scripts/run/wake/run-wake.ts +3 -2
  622. package/scripts/safe-chain/ci-installer-pin.ts +49 -8
  623. package/scripts/safe-chain/project-config.ts +3 -2
  624. package/scripts/security/secretlint-scan.ts +42 -9
  625. package/scripts/security/security-audit-provision-main.ts +9 -1
  626. package/scripts/security/security-audit-provision.ts +1 -1
  627. package/scripts/security/security-audit.ts +21 -1
  628. package/scripts/security/sonar-file.ts +10 -5
  629. package/scripts/split/split-assess.ts +12 -3
  630. package/scripts/split/split-early-notice.ts +116 -0
  631. package/scripts/split/split-measure.ts +20 -2
  632. package/scripts/split/split-resolution.ts +107 -0
  633. package/scripts/test/direct-importers.ts +185 -0
  634. package/scripts/test/pure-files-entries.ts +83 -0
  635. package/scripts/test/related-heavy-tests.ts +81 -0
  636. package/scripts/test/test-no-base.ts +88 -0
  637. package/scripts/test/test-pinned-cache-logic.ts +363 -0
  638. package/scripts/test/test-pinned-cache.ts +337 -0
  639. package/scripts/test/test-pinned-emit.ts +49 -0
  640. package/scripts/test/test-pinned-functions.ts +116 -0
  641. package/scripts/test/test-pinned-ledger.ts +80 -0
  642. package/scripts/test/test-pinned-logic.ts +208 -20
  643. package/scripts/test/test-pinned-main.ts +84 -18
  644. package/scripts/test/test-pinned-pool.ts +73 -0
  645. package/scripts/test/test-pinned-probe.ts +254 -0
  646. package/scripts/test/test-pinned-prune-logic.ts +118 -0
  647. package/scripts/test/test-pinned-reach.ts +194 -0
  648. package/scripts/test/test-pinned-record.ts +196 -0
  649. package/scripts/test/test-pinned-rewire.ts +148 -0
  650. package/scripts/test/test-pinned-spawn.ts +81 -0
  651. package/scripts/test/test-pinned-stage.ts +70 -0
  652. package/scripts/test/test-pinned.ts +258 -47
  653. package/scripts/test/test-reach-cli.ts +61 -0
  654. package/scripts/test/test-read-map.ts +35 -11
  655. package/scripts/test/test-read-recording.ts +17 -5
  656. package/scripts/test/test-read-trace.ts +26 -8
  657. package/scripts/test/test-red-logic.ts +46 -7
  658. package/scripts/test/test-red.ts +34 -14
  659. package/scripts/test/test-related-claim.ts +37 -0
  660. package/scripts/test/test-related-main.ts +4 -1
  661. package/scripts/test/test-related-moved.ts +91 -0
  662. package/scripts/test/test-related-record.ts +43 -23
  663. package/scripts/test/test-related-scope.ts +99 -34
  664. package/scripts/test/test-related-synced.ts +135 -0
  665. package/scripts/test/test-related-touched.ts +84 -0
  666. package/scripts/test/test-related.ts +167 -83
  667. package/scripts/test/test-unit-guard.ts +28 -5
  668. package/scripts/test/unit-durations.ts +41 -0
  669. package/scripts/test/unit-worker-share.ts +5 -4
  670. package/scripts/test/vitest-cache-directory.ts +19 -0
  671. package/scripts/test/vitest-cli-excludes.ts +14 -0
  672. package/scripts/test/vitest-failure-summary.ts +111 -0
  673. package/scripts/test/whole-suite-files.ts +12 -1
  674. package/scripts/time-runtime/time-batch-guard.ts +42 -4
  675. package/scripts/time-runtime/time-bundle-call.ts +1 -1
  676. package/scripts/time-runtime/time-bundles.ts +36 -5
  677. package/scripts/time-runtime/time-markers.ts +2 -2
  678. package/scripts/time-runtime/time-search-call.ts +38 -0
  679. package/scripts/time-runtime/time-shell.ts +1 -1
  680. package/scripts/time-runtime/time-transcript-line.ts +17 -5
  681. package/scripts/version/development-engines-verdict.ts +124 -0
  682. package/scripts/version/latest-corepack.ts +2 -0
  683. package/templates/gitignore +2 -0
  684. package/templates/workflows/ci.yml +41 -0
  685. package/dist/hooks/chunk-AZX4FGQ3.js +0 -207
  686. package/dist/hooks/chunk-PT5R6UJD.js +0 -7131
  687. package/dist/hooks/chunk-TUIFS5E7.js +0 -72
  688. package/dist/hooks/chunk-YCDOIR3I.js +0 -3456
  689. package/scripts/cost-runtime/context-cut-threshold.ts +0 -11
  690. package/scripts/rules/filing-cap.ts +0 -139
@@ -256,6 +256,7 @@ function read_optional2(file_path) {
256
256
  }
257
257
  var document_section = {
258
258
  candidates,
259
+ fenced_flags,
259
260
  headings,
260
261
  read_optional: read_optional2,
261
262
  section,
@@ -339,7 +340,8 @@ var distributed_paths = {
339
340
  transform_distributed_paths,
340
341
  ensure_claude_md_import,
341
342
  remove_claude_md_import,
342
- CLAUDE_MD_IMPORT_LINE
343
+ CLAUDE_MD_IMPORT_LINE,
344
+ KIT_PACKAGE_PATH_PREFIX
343
345
  };
344
346
 
345
347
  // scripts/josh/package-directory.ts
@@ -492,9 +494,12 @@ function digest(content) {
492
494
  function account_key() {
493
495
  return String(process.getuid?.() ?? "");
494
496
  }
495
- function stamp_path(prefix, root = PACKAGE_DIR, suffix = STAMP_SUFFIX) {
497
+ function stamp_name(prefix, root = PACKAGE_DIR, suffix = STAMP_SUFFIX) {
496
498
  const key = digest(`${account_key()}${ACCOUNT_KEY_SEPARATOR}${root}`).slice(0, STAMP_KEY_LENGTH);
497
- return path5.join(PLATFORM_TEMP_ROOT, `${prefix}${key}${suffix}`);
499
+ return `${prefix}${key}${suffix}`;
500
+ }
501
+ function stamp_path(prefix, root = PACKAGE_DIR, suffix = STAMP_SUFFIX) {
502
+ return path5.join(PLATFORM_TEMP_ROOT, stamp_name(prefix, root, suffix));
498
503
  }
499
504
  function write_exclusively(target, content) {
500
505
  rmSync2(target, { force: true });
@@ -561,6 +566,7 @@ var stamp_file = {
561
566
  replace_stamp,
562
567
  replace_text_stamp,
563
568
  remove_stamp,
569
+ stamp_name,
564
570
  stamp_path,
565
571
  write_stamp,
566
572
  write_text_stamp
@@ -1062,6 +1068,9 @@ var lane_child_read_set = {
1062
1068
  costed: costed4
1063
1069
  };
1064
1070
 
1071
+ // scripts/agent/agent-role-profile.ts
1072
+ import { z as z2 } from "zod";
1073
+
1065
1074
  // scripts/josh/agent-session-environment.ts
1066
1075
  var SESSION_ID_KEY = "CLAUDE_CODE_SESSION_ID";
1067
1076
  var AGENT_PID_KEY = "CLAUDE_PID";
@@ -1145,15 +1154,87 @@ var agent_session_environment = {
1145
1154
  removed_proxy_environment
1146
1155
  };
1147
1156
 
1148
- // scripts/agent/agent-role-profile.ts
1157
+ // scripts/agent/agent-provider.ts
1149
1158
  import { z } from "zod";
1159
+ var EMPTY_LENGTH = 0;
1160
+ var PROVIDER_SCHEMA = z.enum(["anthropic", "openai"]);
1161
+ var ANTHROPIC_PROVIDER = "anthropic";
1162
+ var OPENAI_PROVIDER = "openai";
1163
+ var CODEX_SESSION_KEY = "CODEX_THREAD_ID";
1164
+ function trimmed(value) {
1165
+ const result = value?.trim();
1166
+ return result === void 0 || result.length === EMPTY_LENGTH ? void 0 : result;
1167
+ }
1168
+ function rejection(key, value, expected) {
1169
+ return { kind: "rejected", note: `${key}=${value} ${expected}, so the agent was not started` };
1170
+ }
1171
+ function has_session(environment, keys) {
1172
+ return keys.some((key) => trimmed(environment[key]) !== void 0);
1173
+ }
1174
+ var CONFLICTING_SESSIONS = {
1175
+ kind: "rejected",
1176
+ note: "both Codex and Claude Code sessions were detected"
1177
+ };
1178
+ var HANDED_PROVIDER_KEY = "JOSH_AGENT_PROVIDER";
1179
+ var DEFAULT_PROVIDER = {
1180
+ kind: "provider",
1181
+ provider: ANTHROPIC_PROVIDER,
1182
+ is_default: true
1183
+ };
1184
+ var DEFAULT_NOTICE = ` No agent session or ${HANDED_PROVIDER_KEY} was found, so the provider defaulted to ${ANTHROPIC_PROVIDER} (Claude Code).`;
1185
+ function handed_provider(environment) {
1186
+ const value = trimmed(environment[HANDED_PROVIDER_KEY]);
1187
+ if (value === void 0) return DEFAULT_PROVIDER;
1188
+ const parsed = PROVIDER_SCHEMA.safeParse(value);
1189
+ return parsed.success ? { kind: "provider", provider: parsed.data } : rejection(HANDED_PROVIDER_KEY, value, "is not an allowed provider");
1190
+ }
1191
+ function detected_provider(environment) {
1192
+ const has_codex = has_session(environment, [CODEX_SESSION_KEY]);
1193
+ const has_claude = has_session(environment, agent_session_environment.PARENT_SESSION_KEYS);
1194
+ if (has_codex === has_claude) return has_codex ? CONFLICTING_SESSIONS : void 0;
1195
+ return { kind: "provider", provider: has_codex ? OPENAI_PROVIDER : ANTHROPIC_PROVIDER };
1196
+ }
1197
+ function resolve_provider(environment = process.env) {
1198
+ return detected_provider(environment) ?? handed_provider(environment);
1199
+ }
1200
+ function default_notice(environment = process.env) {
1201
+ const selected = resolve_provider(environment);
1202
+ return selected.kind === "provider" && selected.is_default === true ? DEFAULT_NOTICE : "";
1203
+ }
1204
+ function warn_of_default(environment = process.env) {
1205
+ const notice = default_notice(environment).trim();
1206
+ if (notice !== "") console.error(notice);
1207
+ }
1208
+ function has_completion_callback(environment = process.env) {
1209
+ const selected = resolve_provider(environment);
1210
+ return selected.kind !== "provider" || selected.provider !== OPENAI_PROVIDER;
1211
+ }
1212
+ function handoff_environment(environment = process.env) {
1213
+ const selected = resolve_provider(environment);
1214
+ return selected.kind === "provider" ? { [HANDED_PROVIDER_KEY]: selected.provider } : {};
1215
+ }
1216
+ var agent_provider = {
1217
+ ANTHROPIC_PROVIDER,
1218
+ CODEX_SESSION_KEY,
1219
+ HANDED_PROVIDER_KEY,
1220
+ OPENAI_PROVIDER,
1221
+ PROVIDER_SCHEMA,
1222
+ default_notice,
1223
+ handoff_environment,
1224
+ has_completion_callback,
1225
+ rejection,
1226
+ resolve_provider,
1227
+ trimmed,
1228
+ warn_of_default
1229
+ };
1150
1230
 
1151
1231
  // scripts/agent/agent-safe-text.ts
1152
1232
  var FIRST_PRINTABLE_CODE = 32;
1153
1233
  var DELETE_CODE = 127;
1154
1234
  var FIRST_CODE_POINT = 0;
1155
- var EMPTY_LENGTH = 0;
1235
+ var EMPTY_LENGTH2 = 0;
1156
1236
  var MAX_VALUE_LENGTH = 4096;
1237
+ var MAX_PROMPT_LENGTH = 65536;
1157
1238
  var LINE_FEED = "\n";
1158
1239
  var SPACE = " ";
1159
1240
  function is_control_character(character) {
@@ -1169,16 +1250,16 @@ function is_never_allowed() {
1169
1250
  function is_refused(character, is_allowed) {
1170
1251
  return is_control_character(character) && !is_allowed(character);
1171
1252
  }
1172
- function is_safe_text(value, is_allowed) {
1173
- if (value.length === EMPTY_LENGTH || value.length > MAX_VALUE_LENGTH) return false;
1253
+ function is_safe_text(value, is_allowed, max_length) {
1254
+ if (value.length === EMPTY_LENGTH2 || value.length > max_length) return false;
1174
1255
  for (const character of value) if (is_refused(character, is_allowed)) return false;
1175
1256
  return true;
1176
1257
  }
1177
1258
  function is_safe_value(value) {
1178
- return is_safe_text(value, is_never_allowed);
1259
+ return is_safe_text(value, is_never_allowed, MAX_VALUE_LENGTH);
1179
1260
  }
1180
1261
  function is_safe_prompt(value) {
1181
- return is_safe_text(value, is_line_feed);
1262
+ return is_safe_text(value, is_line_feed, MAX_PROMPT_LENGTH);
1182
1263
  }
1183
1264
  function printable_character(character) {
1184
1265
  return is_refused(character, is_line_feed) ? SPACE : character;
@@ -1186,18 +1267,36 @@ function printable_character(character) {
1186
1267
  function printable(text) {
1187
1268
  return Array.from(text, printable_character).join("");
1188
1269
  }
1189
- var agent_safe_text = { MAX_VALUE_LENGTH, is_safe_prompt, is_safe_value, printable };
1270
+ var agent_safe_text = {
1271
+ MAX_PROMPT_LENGTH,
1272
+ MAX_VALUE_LENGTH,
1273
+ is_safe_prompt,
1274
+ is_safe_value,
1275
+ printable
1276
+ };
1190
1277
 
1191
1278
  // scripts/agent/agent-role-profile.ts
1192
- var EMPTY_LENGTH2 = 0;
1193
- var ROLE_SCHEMA = z.enum(["scheduler", "worker", "reviewer"]);
1194
- var PROVIDER_SCHEMA = z.enum(["anthropic", "openai"]);
1195
- var EFFORT_SCHEMA = z.enum(["low", "medium", "high", "xhigh", "max"]);
1196
- var PHASE_SCHEMA = z.enum(["implementation", "pre-gate"]);
1197
- var PROFILE_SCHEMA = z.object({
1198
- provider: PROVIDER_SCHEMA.default("anthropic"),
1279
+ var {
1280
+ ANTHROPIC_PROVIDER: ANTHROPIC_PROVIDER2,
1281
+ CODEX_SESSION_KEY: CODEX_SESSION_KEY2,
1282
+ HANDED_PROVIDER_KEY: HANDED_PROVIDER_KEY2,
1283
+ OPENAI_PROVIDER: OPENAI_PROVIDER2,
1284
+ PROVIDER_SCHEMA: PROVIDER_SCHEMA2,
1285
+ default_notice: default_notice2,
1286
+ handoff_environment: handoff_environment2,
1287
+ has_completion_callback: has_completion_callback2,
1288
+ rejection: rejection2,
1289
+ resolve_provider: resolve_provider2,
1290
+ trimmed: trimmed2,
1291
+ warn_of_default: warn_of_default2
1292
+ } = agent_provider;
1293
+ var ROLE_SCHEMA = z2.enum(["scheduler", "worker", "reviewer"]);
1294
+ var EFFORT_SCHEMA = z2.enum(["low", "medium", "high", "xhigh", "max"]);
1295
+ var PHASE_SCHEMA = z2.enum(["implementation", "pre-gate"]);
1296
+ var PROFILE_SCHEMA = z2.object({
1297
+ provider: PROVIDER_SCHEMA2.default("anthropic"),
1199
1298
  role: ROLE_SCHEMA,
1200
- model: z.string(),
1299
+ model: z2.string(),
1201
1300
  effort: EFFORT_SCHEMA
1202
1301
  });
1203
1302
  var SCHEDULER = "scheduler";
@@ -1205,37 +1304,29 @@ var WORKER = "worker";
1205
1304
  var REVIEWER = "reviewer";
1206
1305
  var IMPLEMENTATION_PHASE = "implementation";
1207
1306
  var PRE_GATE_PHASE = "pre-gate";
1208
- var ANTHROPIC_PROVIDER = "anthropic";
1209
- var OPENAI_PROVIDER = "openai";
1210
1307
  var OPENAI_MODEL = "gpt-6.1-sol";
1211
1308
  var ANTHROPIC_MODEL = "claude-opus-5-5";
1212
- var CODEX_SESSION_KEY = "CODEX_THREAD_ID";
1213
- var DEFAULT_PROFILES = {
1214
- scheduler: {
1215
- provider: ANTHROPIC_PROVIDER,
1216
- role: SCHEDULER,
1217
- model: ANTHROPIC_MODEL,
1218
- effort: "medium"
1219
- },
1220
- worker: { provider: ANTHROPIC_PROVIDER, role: WORKER, model: ANTHROPIC_MODEL, effort: "medium" },
1221
- reviewer: {
1222
- provider: ANTHROPIC_PROVIDER,
1223
- role: REVIEWER,
1224
- model: ANTHROPIC_MODEL,
1225
- effort: "high"
1226
- }
1227
- };
1228
- var OPENAI_PROFILES = {
1229
- scheduler: { provider: OPENAI_PROVIDER, role: SCHEDULER, model: OPENAI_MODEL, effort: "medium" },
1230
- worker: { provider: OPENAI_PROVIDER, role: WORKER, model: OPENAI_MODEL, effort: "medium" },
1231
- reviewer: { provider: OPENAI_PROVIDER, role: REVIEWER, model: OPENAI_MODEL, effort: "high" }
1232
- };
1309
+ var REVIEW_EFFORT = "medium";
1310
+ var VERIFICATION_EFFORT = "high";
1311
+ function role_profiles(provider, model) {
1312
+ return {
1313
+ scheduler: { provider, role: SCHEDULER, model, effort: "medium" },
1314
+ worker: { provider, role: WORKER, model, effort: "medium" },
1315
+ reviewer: { provider, role: REVIEWER, model, effort: REVIEW_EFFORT }
1316
+ };
1317
+ }
1318
+ var DEFAULT_PROFILES = role_profiles(ANTHROPIC_PROVIDER2, ANTHROPIC_MODEL);
1319
+ var OPENAI_PROFILES = role_profiles(OPENAI_PROVIDER2, OPENAI_MODEL);
1233
1320
  var PROVIDER_PROFILES = { anthropic: DEFAULT_PROFILES, openai: OPENAI_PROFILES };
1234
1321
  var FIRST_REVIEW_ROUND = 1;
1235
1322
  var VERIFICATION_MODEL = "claude-sonnet-5-5";
1236
1323
  var VERIFICATION_PROFILES = {
1237
- anthropic: { ...DEFAULT_PROFILES.reviewer, model: VERIFICATION_MODEL },
1238
- openai: OPENAI_PROFILES.reviewer
1324
+ anthropic: {
1325
+ ...DEFAULT_PROFILES.reviewer,
1326
+ model: VERIFICATION_MODEL,
1327
+ effort: VERIFICATION_EFFORT
1328
+ },
1329
+ openai: { ...OPENAI_PROFILES.reviewer, effort: VERIFICATION_EFFORT }
1239
1330
  };
1240
1331
  var VERIFICATION_KEYS = {
1241
1332
  model: "JOSH_REVIEWER_VERIFICATION_MODEL",
@@ -1245,6 +1336,9 @@ var SHIP_EFFORT = "low";
1245
1336
  var PHASE_EFFORT = {
1246
1337
  worker: { [PRE_GATE_PHASE]: SHIP_EFFORT }
1247
1338
  };
1339
+ var PHASE_MODEL_KEYS = {
1340
+ worker: { [PRE_GATE_PHASE]: "JOSH_WORKER_SHIP_MODEL" }
1341
+ };
1248
1342
  var ENV_KEYS = {
1249
1343
  scheduler: { model: "JOSH_SCHEDULER_MODEL", effort: "JOSH_SCHEDULER_EFFORT" },
1250
1344
  worker: { model: "JOSH_WORKER_MODEL", effort: "JOSH_WORKER_EFFORT" },
@@ -1252,10 +1346,6 @@ var ENV_KEYS = {
1252
1346
  };
1253
1347
  var LEGACY_WORKER_KEYS = { model: "JOSH_LANE_MODEL", effort: "JOSH_LANE_EFFORT" };
1254
1348
  var { MAX_VALUE_LENGTH: MAX_VALUE_LENGTH2, is_safe_prompt: is_safe_prompt2, is_safe_value: is_safe_value2, printable: printable2 } = agent_safe_text;
1255
- function trimmed(value) {
1256
- const result = value?.trim();
1257
- return result === void 0 || result.length === EMPTY_LENGTH2 ? void 0 : result;
1258
- }
1259
1349
  function is_verification(role, round) {
1260
1350
  return role === REVIEWER && round !== void 0 && round > FIRST_REVIEW_ROUND;
1261
1351
  }
@@ -1266,90 +1356,55 @@ function override_keys(role, field, round) {
1266
1356
  }
1267
1357
  function override_value(role, field, environment, round) {
1268
1358
  const keys = override_keys(role, field, round);
1269
- const key = keys.find((candidate) => trimmed(environment[candidate]) !== void 0);
1270
- return key === void 0 ? { key: keys[0], value: void 0 } : { key, value: trimmed(environment[key]) };
1359
+ const key = keys.find((candidate) => trimmed2(environment[candidate]) !== void 0);
1360
+ return key === void 0 ? { key: keys[0], value: void 0 } : { key, value: trimmed2(environment[key]) };
1271
1361
  }
1272
- function model_override(role, environment, provider, round) {
1273
- return provider === OPENAI_PROVIDER ? { key: ENV_KEYS[role].model, value: void 0 } : override_value(role, "model", environment, round);
1362
+ function phase_entry(table, role, phase) {
1363
+ const parsed = PHASE_SCHEMA.safeParse(phase);
1364
+ return parsed.success ? table[role]?.[parsed.data] : void 0;
1274
1365
  }
1275
- function rejection(key, value, expected) {
1276
- return { kind: "rejected", note: `${key}=${value} ${expected}, so the agent was not started` };
1366
+ function phase_model(role, provider, phase, environment) {
1367
+ const key = provider === OPENAI_PROVIDER2 ? void 0 : phase_entry(PHASE_MODEL_KEYS, role, phase);
1368
+ if (key === void 0) return void 0;
1369
+ const value = trimmed2(environment[key]);
1370
+ return value === void 0 ? void 0 : { key, value };
1371
+ }
1372
+ function model_override(role, environment, provider, stage) {
1373
+ const phased = phase_model(role, provider, stage.phase, environment);
1374
+ if (phased !== void 0) return phased;
1375
+ return provider === OPENAI_PROVIDER2 ? { key: ENV_KEYS[role].model, value: void 0 } : override_value(role, "model", environment, stage.round);
1277
1376
  }
1278
1377
  function resolved_effort(override, fallback) {
1279
1378
  const parsed = EFFORT_SCHEMA.safeParse(override.value ?? fallback);
1280
- return parsed.success ? { kind: "effort", effort: parsed.data } : rejection(override.key, override.value ?? "", "is not an allowed effort");
1281
- }
1282
- function has_session(environment, keys) {
1283
- return keys.some((key) => trimmed(environment[key]) !== void 0);
1284
- }
1285
- var CONFLICTING_SESSIONS = {
1286
- kind: "rejected",
1287
- note: "both Codex and Claude Code sessions were detected"
1288
- };
1289
- var HANDED_PROVIDER_KEY = "JOSH_AGENT_PROVIDER";
1290
- var DEFAULT_PROVIDER = {
1291
- kind: "provider",
1292
- provider: ANTHROPIC_PROVIDER,
1293
- is_default: true
1294
- };
1295
- var DEFAULT_NOTICE = ` No agent session or ${HANDED_PROVIDER_KEY} was found, so the provider defaulted to ${ANTHROPIC_PROVIDER} (Claude Code).`;
1296
- function handed_provider(environment) {
1297
- const value = trimmed(environment[HANDED_PROVIDER_KEY]);
1298
- if (value === void 0) return DEFAULT_PROVIDER;
1299
- const parsed = PROVIDER_SCHEMA.safeParse(value);
1300
- return parsed.success ? { kind: "provider", provider: parsed.data } : rejection(HANDED_PROVIDER_KEY, value, "is not an allowed provider");
1301
- }
1302
- function detected_provider(environment) {
1303
- const has_codex = has_session(environment, [CODEX_SESSION_KEY]);
1304
- const has_claude = has_session(environment, agent_session_environment.PARENT_SESSION_KEYS);
1305
- if (has_codex === has_claude) return has_codex ? CONFLICTING_SESSIONS : void 0;
1306
- return { kind: "provider", provider: has_codex ? OPENAI_PROVIDER : ANTHROPIC_PROVIDER };
1307
- }
1308
- function resolve_provider(environment = process.env) {
1309
- return detected_provider(environment) ?? handed_provider(environment);
1310
- }
1311
- function default_notice(environment = process.env) {
1312
- const selected = resolve_provider(environment);
1313
- return selected.kind === "provider" && selected.is_default === true ? DEFAULT_NOTICE : "";
1314
- }
1315
- function warn_of_default(environment = process.env) {
1316
- const notice = default_notice(environment).trim();
1317
- if (notice !== "") console.error(notice);
1318
- }
1319
- function has_completion_callback(environment = process.env) {
1320
- const selected = resolve_provider(environment);
1321
- return selected.kind !== "provider" || selected.provider !== OPENAI_PROVIDER;
1322
- }
1323
- function handoff_environment(environment = process.env) {
1324
- const selected = resolve_provider(environment);
1325
- return selected.kind === "provider" ? { [HANDED_PROVIDER_KEY]: selected.provider } : {};
1379
+ return parsed.success ? { kind: "effort", effort: parsed.data } : rejection2(override.key, override.value ?? "", "is not an allowed effort");
1326
1380
  }
1327
1381
  function validate(profile, model_key) {
1328
1382
  if (!is_safe_value2(profile.model)) {
1329
- return rejection(model_key, profile.model, "is not a safe model");
1383
+ return rejection2(model_key, profile.model, "is not a safe model");
1330
1384
  }
1331
1385
  return { kind: "profile", profile };
1332
1386
  }
1333
1387
  function phase_effort(role, phase, fallback) {
1334
- const parsed = PHASE_SCHEMA.safeParse(phase);
1335
- if (!parsed.success) return fallback;
1336
- return PHASE_EFFORT[role]?.[parsed.data] ?? fallback;
1388
+ return phase_entry(PHASE_EFFORT, role, phase) ?? fallback;
1337
1389
  }
1338
1390
  function overridden_effort(profile, phase, environment) {
1339
1391
  const parsed = EFFORT_SCHEMA.safeParse(override_value(profile.role, "effort", environment).value);
1340
1392
  return parsed.success ? parsed.data : phase_effort(profile.role, phase, profile.effort);
1341
1393
  }
1342
- function with_phase_effort(profile, phase, environment = process.env) {
1343
- return { ...profile, effort: overridden_effort(profile, phase, environment) };
1394
+ function with_phase(profile, phase, environment = process.env) {
1395
+ const effort = overridden_effort(profile, phase, environment);
1396
+ const model = phase_model(profile.role, profile.provider, phase, environment);
1397
+ if (model === void 0) return { kind: "profile", profile: { ...profile, effort } };
1398
+ return validate({ ...profile, model: model.value, effort }, model.key);
1344
1399
  }
1345
1400
  function stage_defaults(provider, role, round) {
1346
1401
  return is_verification(role, round) ? VERIFICATION_PROFILES[provider] : PROVIDER_PROFILES[provider][role];
1347
1402
  }
1348
1403
  function resolve_stage(role, environment, stage) {
1349
- const selected = resolve_provider(environment);
1404
+ const selected = resolve_provider2(environment);
1350
1405
  if (selected.kind === "rejected") return selected;
1351
1406
  const defaults = stage_defaults(selected.provider, role, stage.round);
1352
- const model = model_override(role, environment, selected.provider, stage.round);
1407
+ const model = model_override(role, environment, selected.provider, stage);
1353
1408
  const effort = override_value(role, "effort", environment, stage.round);
1354
1409
  const resolved = resolved_effort(effort, phase_effort(role, stage.phase, defaults.effort));
1355
1410
  if (resolved.kind === "rejected") return resolved;
@@ -1378,9 +1433,9 @@ function parse(value) {
1378
1433
  return parsed.success && is_safe_value2(parsed.data.model) ? parsed.data : void 0;
1379
1434
  }
1380
1435
  var agent_role_profile = {
1381
- CODEX_SESSION_KEY,
1436
+ CODEX_SESSION_KEY: CODEX_SESSION_KEY2,
1382
1437
  DEFAULT_PROFILES,
1383
- HANDED_PROVIDER_KEY,
1438
+ HANDED_PROVIDER_KEY: HANDED_PROVIDER_KEY2,
1384
1439
  IMPLEMENTATION_PHASE,
1385
1440
  MAX_VALUE_LENGTH: MAX_VALUE_LENGTH2,
1386
1441
  OPENAI_PROFILES,
@@ -1390,20 +1445,20 @@ var agent_role_profile = {
1390
1445
  SCHEDULER,
1391
1446
  VERIFICATION_PROFILES,
1392
1447
  WORKER,
1393
- default_notice,
1448
+ default_notice: default_notice2,
1394
1449
  describe,
1395
1450
  describe_review,
1396
- handoff_environment,
1397
- has_completion_callback,
1451
+ handoff_environment: handoff_environment2,
1452
+ has_completion_callback: has_completion_callback2,
1398
1453
  is_safe_prompt: is_safe_prompt2,
1399
1454
  is_safe_value: is_safe_value2,
1400
1455
  parse,
1401
1456
  printable: printable2,
1402
1457
  resolve,
1403
- resolve_provider,
1458
+ resolve_provider: resolve_provider2,
1404
1459
  resolve_review,
1405
- warn_of_default,
1406
- with_phase_effort
1460
+ warn_of_default: warn_of_default2,
1461
+ with_phase
1407
1462
  };
1408
1463
 
1409
1464
  // scripts/time-runtime/time-instant.ts
@@ -1415,30 +1470,30 @@ function parse_instant(raw) {
1415
1470
  var time_instant = { parse_instant };
1416
1471
 
1417
1472
  // scripts/cost-runtime/cost-usage.ts
1418
- import { z as z2 } from "zod";
1419
- var CACHE_CREATION_SCHEMA = z2.object({
1420
- ephemeral_1h_input_tokens: z2.number().nullish(),
1421
- ephemeral_5m_input_tokens: z2.number().nullish()
1473
+ import { z as z3 } from "zod";
1474
+ var CACHE_CREATION_SCHEMA = z3.object({
1475
+ ephemeral_1h_input_tokens: z3.number().nullish(),
1476
+ ephemeral_5m_input_tokens: z3.number().nullish()
1422
1477
  });
1423
- var USAGE_SCHEMA = z2.object({
1424
- input_tokens: z2.number(),
1425
- cache_creation_input_tokens: z2.number().nullish(),
1426
- cache_read_input_tokens: z2.number().nullish(),
1427
- output_tokens: z2.number(),
1428
- output_tokens_details: z2.object({ thinking_tokens: z2.number().nullish() }).nullish(),
1478
+ var USAGE_SCHEMA = z3.object({
1479
+ input_tokens: z3.number(),
1480
+ cache_creation_input_tokens: z3.number().nullish(),
1481
+ cache_read_input_tokens: z3.number().nullish(),
1482
+ output_tokens: z3.number(),
1483
+ output_tokens_details: z3.object({ thinking_tokens: z3.number().nullish() }).nullish(),
1429
1484
  cache_creation: CACHE_CREATION_SCHEMA.nullish()
1430
1485
  });
1431
- var MESSAGE_SCHEMA = z2.object({
1432
- id: z2.string().nullish(),
1433
- model: z2.string().nullish(),
1486
+ var MESSAGE_SCHEMA = z3.object({
1487
+ id: z3.string().nullish(),
1488
+ model: z3.string().nullish(),
1434
1489
  usage: USAGE_SCHEMA.nullish()
1435
1490
  });
1436
- var LINE_SCHEMA = z2.object({
1437
- type: z2.string(),
1438
- requestId: z2.string().nullish(),
1439
- uuid: z2.string().nullish(),
1440
- gitBranch: z2.string().nullish(),
1441
- timestamp: z2.string().nullish(),
1491
+ var LINE_SCHEMA = z3.object({
1492
+ type: z3.string(),
1493
+ requestId: z3.string().nullish(),
1494
+ uuid: z3.string().nullish(),
1495
+ gitBranch: z3.string().nullish(),
1496
+ timestamp: z3.string().nullish(),
1442
1497
  message: MESSAGE_SCHEMA.nullish()
1443
1498
  });
1444
1499
  var SYNTHETIC_MODEL = "<synthetic>";
@@ -1602,6 +1657,10 @@ function resolve_price(model) {
1602
1657
  function cache_read_multiplier(price) {
1603
1658
  return price.cache_read_multiplier ?? DEFAULT_CACHE_READ_MULTIPLIER;
1604
1659
  }
1660
+ function cache_read_multiplier_of(model) {
1661
+ const price = model === void 0 ? void 0 : resolve_price(model);
1662
+ return price === void 0 ? DEFAULT_CACHE_READ_MULTIPLIER : cache_read_multiplier(price);
1663
+ }
1605
1664
  function estimate_cost(totals, price) {
1606
1665
  const weighted_input = totals.input_tokens + totals.cache_write_5m_tokens * CACHE_WRITE_5M_MULTIPLIER + totals.cache_write_1h_tokens * CACHE_WRITE_1H_MULTIPLIER + totals.cache_read_tokens * cache_read_multiplier(price);
1607
1666
  return (weighted_input * price.input + totals.output_tokens * price.output) / TOKENS_PER_MILLION;
@@ -1658,6 +1717,7 @@ var cost_pricing = {
1658
1717
  DEFAULT_CACHE_READ_MULTIPLIER,
1659
1718
  LONG_PROMPT_THRESHOLD,
1660
1719
  resolve_price,
1720
+ cache_read_multiplier_of,
1661
1721
  estimate_cost,
1662
1722
  estimate_composition,
1663
1723
  cost_by_model,