@joshuafolkken/kit 1.872.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 (1108) hide show
  1. package/.claude/.claude-plugin/plugin.json +11 -0
  2. package/.claude/settings.json +110 -0
  3. package/.claude/skills/dependency-update/SKILL.md +76 -0
  4. package/.claude/skills/epic-commands/SKILL.md +463 -0
  5. package/.claude/skills/verify-ui/SKILL.md +96 -0
  6. package/.claude/skills/workflow-commands/SKILL.md +265 -0
  7. package/.claude/skills/workflow-commands/background-commands.md +130 -0
  8. package/.claude/skills/workflow-commands/backlogrun-child.md +364 -0
  9. package/.claude/skills/workflow-commands/backlogrun-lanes.md +345 -0
  10. package/.claude/skills/workflow-commands/backlogrun-park.md +179 -0
  11. package/.claude/skills/workflow-commands/backlogrun-progress.md +600 -0
  12. package/.claude/skills/workflow-commands/backlogrun-steps.md +604 -0
  13. package/.claude/skills/workflow-commands/backlogrun.md +109 -0
  14. package/.claude/skills/workflow-commands/chain-rule.md +98 -0
  15. package/.claude/skills/workflow-commands/delegation.md +52 -0
  16. package/.claude/skills/workflow-commands/followup-reference.md +118 -0
  17. package/.claude/skills/workflow-commands/followup.md +222 -0
  18. package/.claude/skills/workflow-commands/fullrun-steps.md +93 -0
  19. package/.claude/skills/workflow-commands/fullrun.md +82 -0
  20. package/.claude/skills/workflow-commands/halfrun.md +73 -0
  21. package/.claude/skills/workflow-commands/into-target.md +48 -0
  22. package/.claude/skills/workflow-commands/issue-comments.md +109 -0
  23. package/.claude/skills/workflow-commands/issue-fold-existing.md +27 -0
  24. package/.claude/skills/workflow-commands/issue-scout.md +45 -0
  25. package/.claude/skills/workflow-commands/kickoff.md +82 -0
  26. package/.claude/skills/workflow-commands/latest-gate.md +85 -0
  27. package/.claude/skills/workflow-commands/needs-human-review.md +64 -0
  28. package/.claude/skills/workflow-commands/observation-filing.md +349 -0
  29. package/.claude/skills/workflow-commands/pre-gate-cut.md +340 -0
  30. package/.claude/skills/workflow-commands/prerequisite.md +62 -0
  31. package/.claude/skills/workflow-commands/retrospective.md +81 -0
  32. package/.claude/skills/workflow-commands/rule-residency.md +267 -0
  33. package/.claude/skills/workflow-commands/split-assessment.md +130 -0
  34. package/.claude/skills/workflow-commands/target-repository.md +58 -0
  35. package/.claude/skills/workflow-commands/working-tree-hold.md +66 -0
  36. package/.claude-plugin/marketplace.json +15 -0
  37. package/.coderabbit.yaml +50 -0
  38. package/.codex/config.toml +8 -0
  39. package/.codex/hooks.json +71 -0
  40. package/.cursorrules +45 -0
  41. package/.gitattributes +7 -0
  42. package/.github/dependabot.yml +19 -0
  43. package/.github/pull_request_template.md +1 -0
  44. package/.github/release.yml +18 -0
  45. package/.github/workflows/auto-tag.yml +111 -0
  46. package/.github/workflows/ci.yml +681 -0
  47. package/.github/workflows/dependabot-auto-merge.yml +55 -0
  48. package/.github/workflows/production.yml +47 -0
  49. package/.github/workflows/publish.yml +39 -0
  50. package/.github/workflows/sonar-qube.yml +34 -0
  51. package/.mcp.json +8 -0
  52. package/.ncurc.json +3 -0
  53. package/.prettierignore +20 -0
  54. package/.vscode/extensions.json +21 -0
  55. package/.vscode/settings.json +41 -0
  56. package/AGENTS.md +29 -0
  57. package/CLAUDE.md +207 -0
  58. package/CODE_OF_CONDUCT.md +132 -0
  59. package/GEMINI.md +30 -0
  60. package/LICENSE +21 -0
  61. package/README.md +41 -0
  62. package/SECURITY.md +34 -0
  63. package/cspell/index.yaml +177 -0
  64. package/dist/CLAUDE.md +207 -0
  65. package/dist/config-merge/index.d.ts +29 -0
  66. package/dist/config-merge/index.js +459 -0
  67. package/dist/hooks/batch-guard.js +28 -0
  68. package/dist/hooks/chunk-25JL6FMS.js +4970 -0
  69. package/dist/hooks/chunk-2ANGT3XM.js +375 -0
  70. package/dist/hooks/chunk-2EI5GBSW.js +42 -0
  71. package/dist/hooks/chunk-2OT5XE2N.js +5014 -0
  72. package/dist/hooks/chunk-2RUPMGGV.js +137 -0
  73. package/dist/hooks/chunk-2XIGZQMQ.js +3299 -0
  74. package/dist/hooks/chunk-33ELOKEV.js +910 -0
  75. package/dist/hooks/chunk-33YRTKM7.js +230 -0
  76. package/dist/hooks/chunk-36JQU5NN.js +77 -0
  77. package/dist/hooks/chunk-3EJBTWVS.js +1769 -0
  78. package/dist/hooks/chunk-3FK5SFAC.js +432 -0
  79. package/dist/hooks/chunk-3PWPYDD2.js +240 -0
  80. package/dist/hooks/chunk-3TQU7TDH.js +375 -0
  81. package/dist/hooks/chunk-3TVLSFZ6.js +432 -0
  82. package/dist/hooks/chunk-3VXYCB4E.js +77 -0
  83. package/dist/hooks/chunk-44M6JXGV.js +3398 -0
  84. package/dist/hooks/chunk-46EEEHC3.js +240 -0
  85. package/dist/hooks/chunk-4A7UVP2P.js +364 -0
  86. package/dist/hooks/chunk-4LFQEZS4.js +137 -0
  87. package/dist/hooks/chunk-4OCX3V2T.js +469 -0
  88. package/dist/hooks/chunk-4OHA5DE7.js +49 -0
  89. package/dist/hooks/chunk-4PMDW3YD.js +68 -0
  90. package/dist/hooks/chunk-4QHBNAI4.js +68 -0
  91. package/dist/hooks/chunk-4SSB3FEE.js +3273 -0
  92. package/dist/hooks/chunk-5A2WQ2CQ.js +5390 -0
  93. package/dist/hooks/chunk-5EVA2JQB.js +5390 -0
  94. package/dist/hooks/chunk-5P7VF5VE.js +3230 -0
  95. package/dist/hooks/chunk-5QWJGGZP.js +49 -0
  96. package/dist/hooks/chunk-5U5EZYG6.js +77 -0
  97. package/dist/hooks/chunk-5VUUF3ZV.js +240 -0
  98. package/dist/hooks/chunk-5WA7UBT3.js +374 -0
  99. package/dist/hooks/chunk-6EBGRQ3Q.js +301 -0
  100. package/dist/hooks/chunk-6TVHWMD3.js +432 -0
  101. package/dist/hooks/chunk-6V5OPIUU.js +13 -0
  102. package/dist/hooks/chunk-6VAGLEMB.js +68 -0
  103. package/dist/hooks/chunk-75BTXKFJ.js +3424 -0
  104. package/dist/hooks/chunk-75RHN67S.js +137 -0
  105. package/dist/hooks/chunk-76KC3BDD.js +3414 -0
  106. package/dist/hooks/chunk-76SLS7CZ.js +898 -0
  107. package/dist/hooks/chunk-7DHZ4DWT.js +5015 -0
  108. package/dist/hooks/chunk-7INSJDGE.js +458 -0
  109. package/dist/hooks/chunk-7VJ4FTDX.js +268 -0
  110. package/dist/hooks/chunk-7XCYNHQK.js +77 -0
  111. package/dist/hooks/chunk-A5YJ3H7E.js +375 -0
  112. package/dist/hooks/chunk-AAEXXUUL.js +268 -0
  113. package/dist/hooks/chunk-ABVEVV2M.js +432 -0
  114. package/dist/hooks/chunk-ACN3YXFL.js +68 -0
  115. package/dist/hooks/chunk-AD3XE3QZ.js +397 -0
  116. package/dist/hooks/chunk-AENFZPZH.js +230 -0
  117. package/dist/hooks/chunk-AFKRFQ6W.js +68 -0
  118. package/dist/hooks/chunk-AHD5IPWI.js +375 -0
  119. package/dist/hooks/chunk-AMK5JGV7.js +77 -0
  120. package/dist/hooks/chunk-ARN7NCQI.js +425 -0
  121. package/dist/hooks/chunk-AUFY653N.js +3425 -0
  122. package/dist/hooks/chunk-AXQBNFEF.js +375 -0
  123. package/dist/hooks/chunk-AYC7R6U4.js +3316 -0
  124. package/dist/hooks/chunk-AYEA2FJ7.js +5015 -0
  125. package/dist/hooks/chunk-B2LIXYFL.js +77 -0
  126. package/dist/hooks/chunk-B4HPNY2I.js +375 -0
  127. package/dist/hooks/chunk-B4YNCUGB.js +469 -0
  128. package/dist/hooks/chunk-B57S3VWT.js +922 -0
  129. package/dist/hooks/chunk-BINZ3PLI.js +364 -0
  130. package/dist/hooks/chunk-BIWLABFK.js +432 -0
  131. package/dist/hooks/chunk-BODUSXKK.js +410 -0
  132. package/dist/hooks/chunk-BQBAT2YK.js +375 -0
  133. package/dist/hooks/chunk-BUJEBW75.js +391 -0
  134. package/dist/hooks/chunk-BVNWORKA.js +72 -0
  135. package/dist/hooks/chunk-BWI47LQS.js +5205 -0
  136. package/dist/hooks/chunk-C25HRMJX.js +137 -0
  137. package/dist/hooks/chunk-CBFZNC74.js +375 -0
  138. package/dist/hooks/chunk-CECYXS4Y.js +3424 -0
  139. package/dist/hooks/chunk-CELGUP5F.js +49 -0
  140. package/dist/hooks/chunk-CMHANU3F.js +3442 -0
  141. package/dist/hooks/chunk-CMN372LI.js +68 -0
  142. package/dist/hooks/chunk-CPGZLMMK.js +3299 -0
  143. package/dist/hooks/chunk-CTQKXDC7.js +268 -0
  144. package/dist/hooks/chunk-CYAT4RIT.js +68 -0
  145. package/dist/hooks/chunk-CYTWYCH2.js +5014 -0
  146. package/dist/hooks/chunk-CZSOLRBA.js +77 -0
  147. package/dist/hooks/chunk-D2PIDYJR.js +3438 -0
  148. package/dist/hooks/chunk-DE57HI6T.js +137 -0
  149. package/dist/hooks/chunk-DGXDGAPG.js +5306 -0
  150. package/dist/hooks/chunk-DNYRSYQG.js +5014 -0
  151. package/dist/hooks/chunk-DTAXH2A2.js +240 -0
  152. package/dist/hooks/chunk-E2IZUWI5.js +375 -0
  153. package/dist/hooks/chunk-E4L2K2BL.js +397 -0
  154. package/dist/hooks/chunk-E55NKX5F.js +68 -0
  155. package/dist/hooks/chunk-ECXVCCVD.js +3079 -0
  156. package/dist/hooks/chunk-EPHO443D.js +68 -0
  157. package/dist/hooks/chunk-EUFK2BI2.js +375 -0
  158. package/dist/hooks/chunk-EYCD5ZAV.js +137 -0
  159. package/dist/hooks/chunk-F2SDYJU4.js +240 -0
  160. package/dist/hooks/chunk-F4B5D5TF.js +68 -0
  161. package/dist/hooks/chunk-FGEO3NDX.js +432 -0
  162. package/dist/hooks/chunk-FJYI52RE.js +137 -0
  163. package/dist/hooks/chunk-FXAKJKTB.js +18 -0
  164. package/dist/hooks/chunk-FYTZHIY4.js +3085 -0
  165. package/dist/hooks/chunk-G7JL2A5K.js +375 -0
  166. package/dist/hooks/chunk-GA3ITDBW.js +42 -0
  167. package/dist/hooks/chunk-GDR4H4SV.js +469 -0
  168. package/dist/hooks/chunk-GFKDXPSM.js +2855 -0
  169. package/dist/hooks/chunk-GIMRTKFU.js +566 -0
  170. package/dist/hooks/chunk-GOPHRLGO.js +240 -0
  171. package/dist/hooks/chunk-GX4HO7SJ.js +230 -0
  172. package/dist/hooks/chunk-GXKKK23T.js +240 -0
  173. package/dist/hooks/chunk-GZ6FUVIK.js +566 -0
  174. package/dist/hooks/chunk-H5HPY5M5.js +2869 -0
  175. package/dist/hooks/chunk-HCF3OGEE.js +1829 -0
  176. package/dist/hooks/chunk-HDEXAOUM.js +469 -0
  177. package/dist/hooks/chunk-HM2TY3TN.js +469 -0
  178. package/dist/hooks/chunk-HOA7NXA2.js +55 -0
  179. package/dist/hooks/chunk-HOFEWH6H.js +240 -0
  180. package/dist/hooks/chunk-HUUI6S5J.js +2669 -0
  181. package/dist/hooks/chunk-I4D3NVUD.js +469 -0
  182. package/dist/hooks/chunk-I4Q6WAJE.js +68 -0
  183. package/dist/hooks/chunk-IB6N4CR2.js +432 -0
  184. package/dist/hooks/chunk-IFLDYJMD.js +469 -0
  185. package/dist/hooks/chunk-IGU466YD.js +77 -0
  186. package/dist/hooks/chunk-IJCQUHKY.js +375 -0
  187. package/dist/hooks/chunk-IKUMBDJB.js +230 -0
  188. package/dist/hooks/chunk-IM3BDIBJ.js +5005 -0
  189. package/dist/hooks/chunk-IMYMAODK.js +3431 -0
  190. package/dist/hooks/chunk-IN2ZVGXA.js +5005 -0
  191. package/dist/hooks/chunk-ITVJ2MKQ.js +18 -0
  192. package/dist/hooks/chunk-J5RIJYTM.js +2669 -0
  193. package/dist/hooks/chunk-JFLMH4K5.js +3460 -0
  194. package/dist/hooks/chunk-JR25IFML.js +77 -0
  195. package/dist/hooks/chunk-JT5AUXFI.js +432 -0
  196. package/dist/hooks/chunk-JY5YVN6N.js +3234 -0
  197. package/dist/hooks/chunk-K5Q4ETVI.js +391 -0
  198. package/dist/hooks/chunk-K67V2F24.js +137 -0
  199. package/dist/hooks/chunk-KABG6AEW.js +3460 -0
  200. package/dist/hooks/chunk-KATZESEC.js +3273 -0
  201. package/dist/hooks/chunk-KFH4H7W7.js +469 -0
  202. package/dist/hooks/chunk-KMUEI6RX.js +910 -0
  203. package/dist/hooks/chunk-KMV4OY77.js +3438 -0
  204. package/dist/hooks/chunk-KQAZNWEY.js +137 -0
  205. package/dist/hooks/chunk-KZZR6JER.js +5015 -0
  206. package/dist/hooks/chunk-LAR6DREP.js +77 -0
  207. package/dist/hooks/chunk-LNCJWEZD.js +5015 -0
  208. package/dist/hooks/chunk-LRYD2GLM.js +6 -0
  209. package/dist/hooks/chunk-LXBKYHDV.js +77 -0
  210. package/dist/hooks/chunk-LYLKIUNE.js +5024 -0
  211. package/dist/hooks/chunk-LZKCFOVC.js +432 -0
  212. package/dist/hooks/chunk-M4FCIYRI.js +77 -0
  213. package/dist/hooks/chunk-M5M7327Q.js +3425 -0
  214. package/dist/hooks/chunk-MF72MHSX.js +3455 -0
  215. package/dist/hooks/chunk-MK56LKDO.js +397 -0
  216. package/dist/hooks/chunk-N3MJADY7.js +240 -0
  217. package/dist/hooks/chunk-NFQSUDBN.js +458 -0
  218. package/dist/hooks/chunk-NHREKY45.js +137 -0
  219. package/dist/hooks/chunk-NP5TTAAW.js +375 -0
  220. package/dist/hooks/chunk-NQTLTKTJ.js +2993 -0
  221. package/dist/hooks/chunk-NVRCZPBZ.js +391 -0
  222. package/dist/hooks/chunk-O46HMMLJ.js +469 -0
  223. package/dist/hooks/chunk-OFJGH2L4.js +240 -0
  224. package/dist/hooks/chunk-OLFMCZH5.js +240 -0
  225. package/dist/hooks/chunk-OMCZS46I.js +49 -0
  226. package/dist/hooks/chunk-OQZEZW5G.js +469 -0
  227. package/dist/hooks/chunk-P2MDAT2Y.js +1897 -0
  228. package/dist/hooks/chunk-P3M2JJIF.js +68 -0
  229. package/dist/hooks/chunk-PDVHQITQ.js +3453 -0
  230. package/dist/hooks/chunk-PNT2AMDH.js +391 -0
  231. package/dist/hooks/chunk-PR2LVSY6.js +3445 -0
  232. package/dist/hooks/chunk-PRR5R4JK.js +137 -0
  233. package/dist/hooks/chunk-PXT44QVN.js +566 -0
  234. package/dist/hooks/chunk-PZLWJLAP.js +469 -0
  235. package/dist/hooks/chunk-Q2FEAZJ2.js +77 -0
  236. package/dist/hooks/chunk-Q32WETDO.js +3265 -0
  237. package/dist/hooks/chunk-Q45DUBLE.js +3600 -0
  238. package/dist/hooks/chunk-Q7NZSWQ5.js +240 -0
  239. package/dist/hooks/chunk-QH2JNAMK.js +3085 -0
  240. package/dist/hooks/chunk-QNNWYQ2R.js +375 -0
  241. package/dist/hooks/chunk-QPU5H2OS.js +68 -0
  242. package/dist/hooks/chunk-QRAHZ5TO.js +1829 -0
  243. package/dist/hooks/chunk-QUZ5HPIE.js +469 -0
  244. package/dist/hooks/chunk-QVCRG34O.js +2893 -0
  245. package/dist/hooks/chunk-R3MY4E3S.js +1675 -0
  246. package/dist/hooks/chunk-R6TXJJXP.js +77 -0
  247. package/dist/hooks/chunk-REJU6VT7.js +1829 -0
  248. package/dist/hooks/chunk-REQAQLRC.js +2993 -0
  249. package/dist/hooks/chunk-RFCXPAHH.js +391 -0
  250. package/dist/hooks/chunk-RHI6Y22X.js +137 -0
  251. package/dist/hooks/chunk-RKZVOBBS.js +469 -0
  252. package/dist/hooks/chunk-RL57TT2Y.js +566 -0
  253. package/dist/hooks/chunk-RORDOD4S.js +3321 -0
  254. package/dist/hooks/chunk-RZKYW5P2.js +77 -0
  255. package/dist/hooks/chunk-SJPJ6VSI.js +391 -0
  256. package/dist/hooks/chunk-SKSIJQQQ.js +432 -0
  257. package/dist/hooks/chunk-SSQDZKXG.js +268 -0
  258. package/dist/hooks/chunk-SSX23SJ2.js +89 -0
  259. package/dist/hooks/chunk-SYHFKE4C.js +77 -0
  260. package/dist/hooks/chunk-TCGNI2ZY.js +42 -0
  261. package/dist/hooks/chunk-TG3WXJF5.js +137 -0
  262. package/dist/hooks/chunk-TH7IJAY5.js +77 -0
  263. package/dist/hooks/chunk-TLZ27PCY.js +240 -0
  264. package/dist/hooks/chunk-U652FXTN.js +566 -0
  265. package/dist/hooks/chunk-UEK47YUF.js +268 -0
  266. package/dist/hooks/chunk-UIO45H3O.js +432 -0
  267. package/dist/hooks/chunk-UNLZEEVH.js +5005 -0
  268. package/dist/hooks/chunk-UNRVF3SZ.js +432 -0
  269. package/dist/hooks/chunk-USLFAFOI.js +3453 -0
  270. package/dist/hooks/chunk-VAEELMLL.js +442 -0
  271. package/dist/hooks/chunk-VALSWLDQ.js +3453 -0
  272. package/dist/hooks/chunk-VC5JEPNY.js +3398 -0
  273. package/dist/hooks/chunk-VEZVK6C7.js +230 -0
  274. package/dist/hooks/chunk-VK5JKFAR.js +49 -0
  275. package/dist/hooks/chunk-VNF2KP7Z.js +469 -0
  276. package/dist/hooks/chunk-VWWCUMW6.js +2669 -0
  277. package/dist/hooks/chunk-W4JARUQV.js +137 -0
  278. package/dist/hooks/chunk-WCYPBPJC.js +5014 -0
  279. package/dist/hooks/chunk-WEOBMNJG.js +2993 -0
  280. package/dist/hooks/chunk-WKJU3J5Y.js +5390 -0
  281. package/dist/hooks/chunk-WMN4TSVF.js +3299 -0
  282. package/dist/hooks/chunk-WNON54PT.js +3469 -0
  283. package/dist/hooks/chunk-WOVKBPPX.js +137 -0
  284. package/dist/hooks/chunk-WRVFORYJ.js +432 -0
  285. package/dist/hooks/chunk-WUBVYGQZ.js +240 -0
  286. package/dist/hooks/chunk-WWULTUOM.js +68 -0
  287. package/dist/hooks/chunk-WXHKKB45.js +4962 -0
  288. package/dist/hooks/chunk-XAI3YTHJ.js +469 -0
  289. package/dist/hooks/chunk-XFZH6JZJ.js +77 -0
  290. package/dist/hooks/chunk-XGPWX6IA.js +137 -0
  291. package/dist/hooks/chunk-XIXXIVGY.js +566 -0
  292. package/dist/hooks/chunk-XKDOYJGA.js +922 -0
  293. package/dist/hooks/chunk-YALTVBHM.js +432 -0
  294. package/dist/hooks/chunk-YEBEPBFK.js +5014 -0
  295. package/dist/hooks/chunk-YI2BQ3DK.js +3441 -0
  296. package/dist/hooks/chunk-YVNBCFGG.js +1829 -0
  297. package/dist/hooks/chunk-YXBN3RGG.js +432 -0
  298. package/dist/hooks/chunk-Z2OOJSW3.js +3163 -0
  299. package/dist/hooks/chunk-ZA3HVBOY.js +2644 -0
  300. package/dist/hooks/chunk-ZKID46U3.js +137 -0
  301. package/dist/hooks/chunk-ZPMU2JV6.js +49 -0
  302. package/dist/hooks/chunk-ZRKY4W7O.js +432 -0
  303. package/dist/hooks/chunk-ZTMRB7LJ.js +268 -0
  304. package/dist/hooks/chunk-ZVPPBQ3L.js +3413 -0
  305. package/dist/hooks/codex-hook-adapter.js +164 -0
  306. package/dist/hooks/duplicate-read-guard.js +29 -0
  307. package/dist/hooks/format-edited.js +37 -0
  308. package/dist/hooks/investigation-guard.js +31 -0
  309. package/dist/hooks/pretool-guard.js +21 -0
  310. package/dist/hooks/session-lang.js +34 -0
  311. package/dist/hooks/stop-guard.js +1597 -0
  312. package/dist/josh.js +1795 -0
  313. package/dist/managed-marker/index.d.ts +10 -0
  314. package/dist/managed-marker/index.js +32 -0
  315. package/dist/self-sync-guard/index.d.ts +10 -0
  316. package/dist/self-sync-guard/index.js +49 -0
  317. package/dist/version/index.d.ts +93 -0
  318. package/dist/version/index.js +1024 -0
  319. package/env/index.d.ts +7 -0
  320. package/env/index.js +62 -0
  321. package/eslint/base.js +233 -0
  322. package/eslint/checkout-rooted-parser.js +34 -0
  323. package/eslint/config-fingerprint.js +103 -0
  324. package/eslint/rules/code-quality.js +292 -0
  325. package/eslint/rules/english-only-prose.js +135 -0
  326. package/eslint/rules/formatting.js +44 -0
  327. package/eslint/rules/import.js +83 -0
  328. package/eslint/rules/namespace-object-export.js +107 -0
  329. package/eslint/rules/naming-convention.js +109 -0
  330. package/eslint/rules/promise.js +17 -0
  331. package/eslint/rules/sonarjs.js +45 -0
  332. package/eslint/rules/test-filename.js +91 -0
  333. package/eslint/rules/typescript.js +186 -0
  334. package/eslint/rules/unicorn.js +191 -0
  335. package/eslint/vanilla.js +1 -0
  336. package/evals/scenarios/consult-not-execute.json +20 -0
  337. package/evals/scenarios/no-implicit-workflow.json +26 -0
  338. package/evals/scenarios/overrides-both-locations.json +29 -0
  339. package/evals/scenarios/upstream-interrupt.json +23 -0
  340. package/evals/scenarios/workflow-skill-loaded.json +16 -0
  341. package/lefthook/base.yml +131 -0
  342. package/lefthook/vanilla.yml +7 -0
  343. package/package.json +169 -0
  344. package/playwright.config.ts +160 -0
  345. package/pnpm-workspace.yaml +41 -0
  346. package/ports/index.d.ts +17 -0
  347. package/ports/index.js +256 -0
  348. package/prettier/index.d.ts +3 -0
  349. package/prettier/index.js +31 -0
  350. package/prompts/agent-lint-protocol.json +79 -0
  351. package/prompts/agent-rules.md +63 -0
  352. package/prompts/coding-standards.md +382 -0
  353. package/prompts/collaboration-workflow/consultation-vs-execution.md +8 -0
  354. package/prompts/collaboration-workflow/cross-repo-epic.md +54 -0
  355. package/prompts/collaboration-workflow/distributed-docs.md +7 -0
  356. package/prompts/collaboration-workflow/durable-rules.md +24 -0
  357. package/prompts/collaboration-workflow/epic-audit.md +56 -0
  358. package/prompts/collaboration-workflow/epic-bundle.md +109 -0
  359. package/prompts/collaboration-workflow/file-edits.md +124 -0
  360. package/prompts/collaboration-workflow/gh-rest.md +57 -0
  361. package/prompts/collaboration-workflow/issue-citation.md +38 -0
  362. package/prompts/collaboration-workflow/issue-template.md +190 -0
  363. package/prompts/collaboration-workflow/latest-first.md +14 -0
  364. package/prompts/collaboration-workflow/no-clones.md +11 -0
  365. package/prompts/collaboration-workflow/operating-rules.md +123 -0
  366. package/prompts/collaboration-workflow/output-bounds.md +107 -0
  367. package/prompts/collaboration-workflow/overview.md +35 -0
  368. package/prompts/collaboration-workflow/plan-comment.md +85 -0
  369. package/prompts/collaboration-workflow/proposal-request.md +23 -0
  370. package/prompts/collaboration-workflow/report-format.md +206 -0
  371. package/prompts/collaboration-workflow/residency.md +94 -0
  372. package/prompts/collaboration-workflow/rule-delivery.md +146 -0
  373. package/prompts/collaboration-workflow/shell-body.md +82 -0
  374. package/prompts/collaboration-workflow/simplicity-first.md +9 -0
  375. package/prompts/collaboration-workflow/single-source-rules.md +13 -0
  376. package/prompts/collaboration-workflow/turn-batching.md +137 -0
  377. package/prompts/collaboration-workflow/upstream-interrupt.md +51 -0
  378. package/prompts/collaboration-workflow/wip-cap.md +118 -0
  379. package/prompts/collaboration-workflow.md +52 -0
  380. package/prompts/refactoring.md +103 -0
  381. package/prompts/review-rubric.md +338 -0
  382. package/prompts/review.md +217 -0
  383. package/prompts/sonar-hotspot-handling.md +77 -0
  384. package/prompts/testing-guide.md +277 -0
  385. package/scripts/adopt/adopt-logic.ts +107 -0
  386. package/scripts/adopt/adopt-toolkits.ts +181 -0
  387. package/scripts/adopt/adopt.ts +171 -0
  388. package/scripts/agent/agent-argv.ts +140 -0
  389. package/scripts/agent/agent-diagnostics.ts +120 -0
  390. package/scripts/agent/agent-event.ts +173 -0
  391. package/scripts/agent/agent-exit-record.ts +32 -0
  392. package/scripts/agent/agent-launch-environment.ts +71 -0
  393. package/scripts/agent/agent-role-profile.ts +329 -0
  394. package/scripts/agent/api-outage.ts +51 -0
  395. package/scripts/agent/claude-agent-argv.ts +151 -0
  396. package/scripts/agent/claude-result-event.ts +98 -0
  397. package/scripts/agent/codex-agent-argv.ts +94 -0
  398. package/scripts/agent/codex-home-source.ts +11 -0
  399. package/scripts/agent/interactive-ask.ts +91 -0
  400. package/scripts/auto-ok/auto-ok-cli.ts +516 -0
  401. package/scripts/backlog/backlog-arrival.ts +147 -0
  402. package/scripts/backlog/backlog-budget-cli.ts +220 -0
  403. package/scripts/backlog/backlog-budget.ts +284 -0
  404. package/scripts/backlog/backlog-defect-priority.ts +77 -0
  405. package/scripts/backlog/backlog-drive-cli.ts +377 -0
  406. package/scripts/backlog/backlog-drive-finish.ts +23 -0
  407. package/scripts/backlog/backlog-drive-named-offer.ts +81 -0
  408. package/scripts/backlog/backlog-drive-named.ts +101 -0
  409. package/scripts/backlog/backlog-drive-offer-argv.ts +29 -0
  410. package/scripts/backlog/backlog-drive-owner.ts +22 -0
  411. package/scripts/backlog/backlog-drive-restore.ts +67 -0
  412. package/scripts/backlog/backlog-drive.ts +322 -0
  413. package/scripts/backlog/backlog-named.ts +164 -0
  414. package/scripts/backlog/backlog-next.ts +376 -0
  415. package/scripts/backlog/backlog-offer-cli.ts +279 -0
  416. package/scripts/backlog/backlog-offer.ts +93 -0
  417. package/scripts/backlog/backlog-plan-cli.ts +235 -0
  418. package/scripts/backlog/backlog-plan.ts +231 -0
  419. package/scripts/backlog/backlog-pool.ts +322 -0
  420. package/scripts/backlog/backlog-ready.ts +146 -0
  421. package/scripts/backlog/backlog-scope.ts +144 -0
  422. package/scripts/backlog/backlog-stalled-cli.ts +30 -0
  423. package/scripts/backlog/backlog-stalled-detect.ts +143 -0
  424. package/scripts/backlog/backlog-stalled.ts +118 -0
  425. package/scripts/behavior/behavior-assertion.ts +87 -0
  426. package/scripts/behavior/behavior-cli.ts +88 -0
  427. package/scripts/behavior/behavior-rules.ts +128 -0
  428. package/scripts/build/build-bin.ts +36 -0
  429. package/scripts/build/build-claude-md.ts +42 -0
  430. package/scripts/build/build-config-merge.ts +26 -0
  431. package/scripts/build/build-hooks.ts +79 -0
  432. package/scripts/build/build-library.ts +83 -0
  433. package/scripts/build/build-managed-marker.ts +26 -0
  434. package/scripts/build/build-self-sync-guard.ts +26 -0
  435. package/scripts/build/build-version.ts +25 -0
  436. package/scripts/build/local-bin.ts +97 -0
  437. package/scripts/build/shim-shell.ts +25 -0
  438. package/scripts/bytes/bytes-command.ts +181 -0
  439. package/scripts/cases/cases-cli.ts +48 -0
  440. package/scripts/cases/cases-logic.ts +100 -0
  441. package/scripts/claude/skill-meta.ts +37 -0
  442. package/scripts/claude/workflow-destination.ts +13 -0
  443. package/scripts/clone/clone-aggregate.ts +76 -0
  444. package/scripts/clone/clone-fingerprint.ts +96 -0
  445. package/scripts/clone/clone-scan-cli.ts +39 -0
  446. package/scripts/clone/clone-scan.ts +158 -0
  447. package/scripts/config-merge/index.ts +19 -0
  448. package/scripts/config-merge/json-format.ts +128 -0
  449. package/scripts/config-merge/list-patch.ts +61 -0
  450. package/scripts/config-merge/parse-jsonc.ts +14 -0
  451. package/scripts/config-merge/patch-json-key.ts +439 -0
  452. package/scripts/config-merge/patch-json-list.ts +38 -0
  453. package/scripts/config-merge/patch-yaml-list.ts +107 -0
  454. package/scripts/cost-runtime/codex-usage.ts +119 -0
  455. package/scripts/cost-runtime/context-cut-payback.ts +77 -0
  456. package/scripts/cost-runtime/context-cut-threshold.ts +21 -0
  457. package/scripts/cost-runtime/cost-attribute.ts +168 -0
  458. package/scripts/cost-runtime/cost-blocks.ts +149 -0
  459. package/scripts/cost-runtime/cost-cli.ts +318 -0
  460. package/scripts/cost-runtime/cost-corpus.ts +278 -0
  461. package/scripts/cost-runtime/cost-format.ts +32 -0
  462. package/scripts/cost-runtime/cost-pricing.ts +176 -0
  463. package/scripts/cost-runtime/cost-tokens.ts +84 -0
  464. package/scripts/cost-runtime/cost-transcript.ts +531 -0
  465. package/scripts/cost-runtime/cost-usage.ts +287 -0
  466. package/scripts/cost-runtime/cost-verdict.ts +89 -0
  467. package/scripts/cost-runtime/own-session.ts +58 -0
  468. package/scripts/cost-runtime/transcript-cwd.ts +14 -0
  469. package/scripts/delegation/delegation-cli.ts +91 -0
  470. package/scripts/delegation/delegation-policy.ts +178 -0
  471. package/scripts/delegation/duplicate-read-guard.ts +244 -0
  472. package/scripts/delegation/fanout-cli.ts +61 -0
  473. package/scripts/delegation/fanout.ts +95 -0
  474. package/scripts/delegation/investigation-guard.ts +131 -0
  475. package/scripts/delegation/investigation-reads.ts +637 -0
  476. package/scripts/discovery/repo-discovery.ts +166 -0
  477. package/scripts/discovery/repo-map-logic.ts +102 -0
  478. package/scripts/discovery/repo-origin.ts +153 -0
  479. package/scripts/discovery/repo-party-cli.ts +69 -0
  480. package/scripts/discovery/repo-party.ts +46 -0
  481. package/scripts/doctor/doctor-consumer.ts +181 -0
  482. package/scripts/doctor/doctor-io.ts +210 -0
  483. package/scripts/doctor/doctor-logic.ts +122 -0
  484. package/scripts/doctor/doctor-ports.ts +117 -0
  485. package/scripts/doctor/doctor.ts +232 -0
  486. package/scripts/document/backlogrun-parent-read-set.ts +48 -0
  487. package/scripts/document/bash-output-cap.ts +45 -0
  488. package/scripts/document/document-byte-budget.ts +183 -0
  489. package/scripts/document/document-byte-check.ts +131 -0
  490. package/scripts/document/document-reachability.ts +131 -0
  491. package/scripts/document/document-read-cli.ts +82 -0
  492. package/scripts/document/document-scan.ts +108 -0
  493. package/scripts/document/document-section-cli.ts +101 -0
  494. package/scripts/document/document-section.ts +156 -0
  495. package/scripts/document/edit-files-cli.ts +280 -0
  496. package/scripts/document/entry-read-budget.ts +154 -0
  497. package/scripts/document/entry-read-set.ts +471 -0
  498. package/scripts/document/generate-catalog.ts +69 -0
  499. package/scripts/document/lane-child-read-set.ts +88 -0
  500. package/scripts/document/read-files-cli.ts +135 -0
  501. package/scripts/document/read-set-cli.ts +295 -0
  502. package/scripts/document/read-set-point-of-use.ts +89 -0
  503. package/scripts/document/read-set-pricing.ts +52 -0
  504. package/scripts/document/read-set-trim.ts +78 -0
  505. package/scripts/document/retired-phrases.ts +143 -0
  506. package/scripts/document/review-agent-type.ts +46 -0
  507. package/scripts/document/single-source.ts +73 -0
  508. package/scripts/epic/epic-audit-checks.ts +452 -0
  509. package/scripts/epic/epic-audit-cli.ts +374 -0
  510. package/scripts/epic/epic-audit-orphans.ts +142 -0
  511. package/scripts/epic/epic-audit-rationale.ts +191 -0
  512. package/scripts/epic/epic-audit-report.ts +101 -0
  513. package/scripts/epic/epic-audit.ts +240 -0
  514. package/scripts/epic/epic-bundle-cli.ts +472 -0
  515. package/scripts/epic/epic-bundle-evidence.ts +147 -0
  516. package/scripts/epic/epic-bundle-gaps.ts +86 -0
  517. package/scripts/epic/epic-bundle-referenced.ts +195 -0
  518. package/scripts/epic/epic-bundle.ts +309 -0
  519. package/scripts/epic/epic-busy.ts +204 -0
  520. package/scripts/epic/epic-candidate-confirm.ts +279 -0
  521. package/scripts/epic/epic-classify.ts +294 -0
  522. package/scripts/epic/epic-cross-repo.ts +366 -0
  523. package/scripts/epic/epic-fetch.ts +370 -0
  524. package/scripts/epic/epic-graph.ts +279 -0
  525. package/scripts/epic/epic-index.ts +209 -0
  526. package/scripts/epic/epic-issue.ts +172 -0
  527. package/scripts/epic/epic-lane-offer.ts +207 -0
  528. package/scripts/epic/epic-nested.ts +37 -0
  529. package/scripts/epic/epic-next-read.ts +141 -0
  530. package/scripts/epic/epic-next-views.ts +144 -0
  531. package/scripts/epic/epic-next.ts +477 -0
  532. package/scripts/epic/epic-outside-blocker.ts +113 -0
  533. package/scripts/epic/epic-relation-recheck.ts +108 -0
  534. package/scripts/epic/epic-report.ts +200 -0
  535. package/scripts/gate/core-budget.ts +292 -0
  536. package/scripts/gate/gate-log.ts +95 -0
  537. package/scripts/gate/gate-plan.ts +356 -0
  538. package/scripts/gate/gate-report.ts +207 -0
  539. package/scripts/gate/gate-skip.ts +123 -0
  540. package/scripts/gate/gate-tree.ts +49 -0
  541. package/scripts/gate/hook-gate-reuse.ts +130 -0
  542. package/scripts/gate/pre-commit-type-check.ts +187 -0
  543. package/scripts/gate/scoped-green.ts +260 -0
  544. package/scripts/gate/type-check-step.ts +90 -0
  545. package/scripts/gate/verification-gate.ts +531 -0
  546. package/scripts/gh/fix-gh-packages-logic.ts +232 -0
  547. package/scripts/gh/fix-gh-packages.ts +129 -0
  548. package/scripts/gh/gh-cli-token.ts +18 -0
  549. package/scripts/gh/gh-spawn.ts +44 -0
  550. package/scripts/git/animation-helpers.ts +81 -0
  551. package/scripts/git/change-base.ts +26 -0
  552. package/scripts/git/changed-file-scope.ts +209 -0
  553. package/scripts/git/changed-paths.ts +30 -0
  554. package/scripts/git/constants.ts +41 -0
  555. package/scripts/git/git-ai-review-scan.ts +154 -0
  556. package/scripts/git/git-animation.ts +41 -0
  557. package/scripts/git/git-branch.ts +127 -0
  558. package/scripts/git/git-command.ts +587 -0
  559. package/scripts/git/git-commit.ts +27 -0
  560. package/scripts/git/git-common-directory.ts +38 -0
  561. package/scripts/git/git-epic-add-body.ts +365 -0
  562. package/scripts/git/git-epic-add-plan.ts +421 -0
  563. package/scripts/git/git-epic-add.ts +249 -0
  564. package/scripts/git/git-epic-body.ts +150 -0
  565. package/scripts/git/git-epic-chains.ts +411 -0
  566. package/scripts/git/git-epic-close-comment.ts +199 -0
  567. package/scripts/git/git-epic-close.ts +393 -0
  568. package/scripts/git/git-epic-decision.ts +171 -0
  569. package/scripts/git/git-epic-parse.ts +351 -0
  570. package/scripts/git/git-epic-promote.ts +102 -0
  571. package/scripts/git/git-epic-read.ts +73 -0
  572. package/scripts/git/git-epic-reconcile.ts +246 -0
  573. package/scripts/git/git-epic-reference.ts +98 -0
  574. package/scripts/git/git-epic-relations.ts +78 -0
  575. package/scripts/git/git-epic-remove-plan.ts +152 -0
  576. package/scripts/git/git-epic-remove.ts +101 -0
  577. package/scripts/git/git-epic-run.ts +223 -0
  578. package/scripts/git/git-epic-sections.ts +98 -0
  579. package/scripts/git/git-epic-shape.ts +81 -0
  580. package/scripts/git/git-epic-validate.ts +155 -0
  581. package/scripts/git/git-error.ts +78 -0
  582. package/scripts/git/git-execa-error.ts +35 -0
  583. package/scripts/git/git-fixture-workspace.ts +88 -0
  584. package/scripts/git/git-followup-cleanup.ts +88 -0
  585. package/scripts/git/git-followup-flush.ts +63 -0
  586. package/scripts/git/git-followup-label.ts +67 -0
  587. package/scripts/git/git-followup-pending.ts +95 -0
  588. package/scripts/git/git-followup-stages.ts +149 -0
  589. package/scripts/git/git-gh-api-path.ts +118 -0
  590. package/scripts/git/git-gh-check.ts +21 -0
  591. package/scripts/git/git-gh-command.ts +17 -0
  592. package/scripts/git/git-gh-exec.ts +344 -0
  593. package/scripts/git/git-gh-failure.ts +103 -0
  594. package/scripts/git/git-gh-helpers.ts +44 -0
  595. package/scripts/git/git-gh-issue-list.ts +257 -0
  596. package/scripts/git/git-gh-issue-read.ts +457 -0
  597. package/scripts/git/git-gh-issue-rest.ts +238 -0
  598. package/scripts/git/git-gh-issue-write.ts +285 -0
  599. package/scripts/git/git-gh-issue.ts +161 -0
  600. package/scripts/git/git-gh-pr-auto-merge.ts +85 -0
  601. package/scripts/git/git-gh-pr-read.ts +322 -0
  602. package/scripts/git/git-gh-pr-rest.ts +172 -0
  603. package/scripts/git/git-gh-pr-review.ts +103 -0
  604. package/scripts/git/git-gh-pr-rollup.ts +91 -0
  605. package/scripts/git/git-gh-pr-snapshot.ts +138 -0
  606. package/scripts/git/git-gh-pr.ts +219 -0
  607. package/scripts/git/git-gh-reachability.ts +56 -0
  608. package/scripts/git/git-gh-repo.ts +37 -0
  609. package/scripts/git/git-gh-rest-state.ts +14 -0
  610. package/scripts/git/git-issue.ts +168 -0
  611. package/scripts/git/git-location-environment.ts +62 -0
  612. package/scripts/git/git-ls-remote.ts +28 -0
  613. package/scripts/git/git-next-issues.ts +98 -0
  614. package/scripts/git/git-notify.ts +104 -0
  615. package/scripts/git/git-pr-ai-review.ts +180 -0
  616. package/scripts/git/git-pr-checks-eval.ts +265 -0
  617. package/scripts/git/git-pr-checks-parse.ts +153 -0
  618. package/scripts/git/git-pr-checks-watch.ts +184 -0
  619. package/scripts/git/git-pr-checks.ts +387 -0
  620. package/scripts/git/git-pr-coderabbit.ts +129 -0
  621. package/scripts/git/git-pr-confirmation.ts +64 -0
  622. package/scripts/git/git-pr-error.ts +25 -0
  623. package/scripts/git/git-pr-followup-wrapup.ts +225 -0
  624. package/scripts/git/git-pr-followup.ts +436 -0
  625. package/scripts/git/git-pr-managed-config.ts +69 -0
  626. package/scripts/git/git-pr-messages.ts +37 -0
  627. package/scripts/git/git-pr.ts +181 -0
  628. package/scripts/git/git-prompt-display.ts +22 -0
  629. package/scripts/git/git-prompt.ts +207 -0
  630. package/scripts/git/git-push-transport.ts +173 -0
  631. package/scripts/git/git-push.ts +27 -0
  632. package/scripts/git/git-remote-branch.ts +40 -0
  633. package/scripts/git/git-spawn.ts +47 -0
  634. package/scripts/git/git-staging.ts +128 -0
  635. package/scripts/git/git-stash.ts +124 -0
  636. package/scripts/git/git-status.ts +198 -0
  637. package/scripts/git/git-worktree.ts +110 -0
  638. package/scripts/git/github-issue-url.ts +105 -0
  639. package/scripts/git/gone-branch.ts +113 -0
  640. package/scripts/git/issue-labels.ts +279 -0
  641. package/scripts/git/listing-cutoff.ts +51 -0
  642. package/scripts/git/main-merge-guard.ts +134 -0
  643. package/scripts/git/main-merge.ts +120 -0
  644. package/scripts/git/main-sync.ts +121 -0
  645. package/scripts/git/parse-json-array.ts +102 -0
  646. package/scripts/git/schemas.ts +166 -0
  647. package/scripts/git/stash-orphans.ts +91 -0
  648. package/scripts/git/stash-pop-args.ts +59 -0
  649. package/scripts/git/stash-pop-cli.ts +105 -0
  650. package/scripts/git/telegram-notify.ts +404 -0
  651. package/scripts/hooks/batch-guard.ts +144 -0
  652. package/scripts/hooks/check-commit-message.ts +134 -0
  653. package/scripts/hooks/codex-hook-adapter.ts +155 -0
  654. package/scripts/hooks/edited-cspell.ts +128 -0
  655. package/scripts/hooks/format-edited-file-fixtures.ts +109 -0
  656. package/scripts/hooks/format-edited-file.ts +510 -0
  657. package/scripts/hooks/format-rewrite-notice.ts +99 -0
  658. package/scripts/hooks/pre-push-unit.ts +146 -0
  659. package/scripts/hooks/pretool-guard.ts +96 -0
  660. package/scripts/hooks/prevent-main-commit.ts +38 -0
  661. package/scripts/hooks/prompt-hooks.ts +38 -0
  662. package/scripts/hooks/reserved-run.ts +90 -0
  663. package/scripts/hooks/stop-guard.ts +135 -0
  664. package/scripts/init/claude-plugin-config.ts +51 -0
  665. package/scripts/init/distributed-paths.ts +100 -0
  666. package/scripts/init/hook-command-rewrite.ts +85 -0
  667. package/scripts/init/hook-launch.ts +31 -0
  668. package/scripts/init/init-actions.ts +147 -0
  669. package/scripts/init/init-ai-copy.ts +235 -0
  670. package/scripts/init/init-copy-content.ts +50 -0
  671. package/scripts/init/init-logic-deploy-vps.ts +43 -0
  672. package/scripts/init/init-logic-json-merge.ts +340 -0
  673. package/scripts/init/init-logic-migrate.ts +62 -0
  674. package/scripts/init/init-logic-package-key-order.ts +50 -0
  675. package/scripts/init/init-logic-secretlint.ts +36 -0
  676. package/scripts/init/init-logic-sonar.ts +197 -0
  677. package/scripts/init/init-logic-templates.ts +142 -0
  678. package/scripts/init/init-logic-workspace.ts +59 -0
  679. package/scripts/init/init-logic-yaml-merge.ts +57 -0
  680. package/scripts/init/init-logic.ts +474 -0
  681. package/scripts/init/init-paths.ts +11 -0
  682. package/scripts/init/init-sonar.ts +32 -0
  683. package/scripts/init/init.ts +219 -0
  684. package/scripts/init/kit-base-preset.ts +60 -0
  685. package/scripts/init/plugin-install-hint.ts +47 -0
  686. package/scripts/init/tsconfig-preset-migration.ts +67 -0
  687. package/scripts/issue/baseline-measure.ts +105 -0
  688. package/scripts/issue/behavior-change-lint.ts +122 -0
  689. package/scripts/issue/defect-rate-cli.ts +167 -0
  690. package/scripts/issue/defect-rate.ts +145 -0
  691. package/scripts/issue/issue-backlinks-cli.ts +97 -0
  692. package/scripts/issue/issue-backlinks.ts +164 -0
  693. package/scripts/issue/issue-cite-cli.ts +158 -0
  694. package/scripts/issue/issue-cite.ts +102 -0
  695. package/scripts/issue/issue-comment-cli.ts +95 -0
  696. package/scripts/issue/issue-fold-cli.ts +104 -0
  697. package/scripts/issue/issue-fold-existing-cli.ts +81 -0
  698. package/scripts/issue/issue-fold-existing.ts +73 -0
  699. package/scripts/issue/issue-fold.ts +42 -0
  700. package/scripts/issue/issue-lint-cli.ts +60 -0
  701. package/scripts/issue/issue-lint.ts +26 -0
  702. package/scripts/issue/issue-logic.ts +50 -0
  703. package/scripts/issue/issue-read-cli.ts +190 -0
  704. package/scripts/issue/issue-read.ts +145 -0
  705. package/scripts/issue/issue-scout-cli.ts +482 -0
  706. package/scripts/issue/issue-scout.ts +244 -0
  707. package/scripts/issue/issue-state-cli.ts +260 -0
  708. package/scripts/issue/issue-state.ts +109 -0
  709. package/scripts/issue/markdown-section.ts +39 -0
  710. package/scripts/issue/measure-rerun-cli.ts +98 -0
  711. package/scripts/issue/reproduction-measure.ts +59 -0
  712. package/scripts/josh/__snapshots__/josh-command-map.test.ts.snap +1171 -0
  713. package/scripts/josh/agent-session-environment.ts +188 -0
  714. package/scripts/josh/cli-body.ts +96 -0
  715. package/scripts/josh/command-suggest.ts +57 -0
  716. package/scripts/josh/file-map-stamp.ts +264 -0
  717. package/scripts/josh/hook-decision.ts +479 -0
  718. package/scripts/josh/josh-command-map.ts +196 -0
  719. package/scripts/josh/josh-command-types.ts +226 -0
  720. package/scripts/josh/josh-commands-ai.ts +327 -0
  721. package/scripts/josh/josh-commands-backlog.ts +54 -0
  722. package/scripts/josh/josh-commands-clone.ts +18 -0
  723. package/scripts/josh/josh-commands-development.ts +206 -0
  724. package/scripts/josh/josh-commands-document.ts +45 -0
  725. package/scripts/josh/josh-commands-guard.ts +38 -0
  726. package/scripts/josh/josh-commands-hooks.ts +42 -0
  727. package/scripts/josh/josh-commands-issue.ts +69 -0
  728. package/scripts/josh/josh-commands-lane.ts +75 -0
  729. package/scripts/josh/josh-commands-lint.ts +37 -0
  730. package/scripts/josh/josh-commands-maintenance.ts +80 -0
  731. package/scripts/josh/josh-commands-project.ts +53 -0
  732. package/scripts/josh/josh-commands-split.ts +20 -0
  733. package/scripts/josh/josh-commands-versioning.ts +48 -0
  734. package/scripts/josh/josh-commands-workflow.ts +116 -0
  735. package/scripts/josh/josh-composite-arguments.ts +55 -0
  736. package/scripts/josh/josh-environment-file.ts +31 -0
  737. package/scripts/josh/josh-in-process.ts +80 -0
  738. package/scripts/josh/josh-logic.ts +308 -0
  739. package/scripts/josh/josh-run.ts +53 -0
  740. package/scripts/josh/josh-script-reader.ts +11 -0
  741. package/scripts/josh/josh-verdict.ts +111 -0
  742. package/scripts/josh/josh.ts +60 -0
  743. package/scripts/josh/kit-only.ts +33 -0
  744. package/scripts/josh/path-decision.ts +104 -0
  745. package/scripts/josh/platform-temporary.ts +66 -0
  746. package/scripts/josh/process-identity.ts +335 -0
  747. package/scripts/josh/session-language-cli.ts +51 -0
  748. package/scripts/josh/session-language.ts +30 -0
  749. package/scripts/josh/stamp-file.ts +194 -0
  750. package/scripts/lane/lane-await.ts +165 -0
  751. package/scripts/lane/lane-cache-run.ts +39 -0
  752. package/scripts/lane/lane-cache.ts +135 -0
  753. package/scripts/lane/lane-capacity.ts +69 -0
  754. package/scripts/lane/lane-child-invocation.ts +73 -0
  755. package/scripts/lane/lane-child-marker.ts +58 -0
  756. package/scripts/lane/lane-cli.ts +410 -0
  757. package/scripts/lane/lane-close.ts +197 -0
  758. package/scripts/lane/lane-dispatch-log.ts +13 -0
  759. package/scripts/lane/lane-dispatch.ts +458 -0
  760. package/scripts/lane/lane-environment.ts +253 -0
  761. package/scripts/lane/lane-guard-policy.ts +136 -0
  762. package/scripts/lane/lane-install.ts +94 -0
  763. package/scripts/lane/lane-launch-cli.ts +133 -0
  764. package/scripts/lane/lane-occupancy.ts +112 -0
  765. package/scripts/lane/lane-open.ts +275 -0
  766. package/scripts/lane/lane-output.ts +124 -0
  767. package/scripts/lane/lane-paths.ts +96 -0
  768. package/scripts/lane/lane-reap.ts +137 -0
  769. package/scripts/lane/lane-registry.ts +261 -0
  770. package/scripts/lane/lane-relaunch.ts +68 -0
  771. package/scripts/lane/lane-report.ts +95 -0
  772. package/scripts/lane/lane-resume.ts +61 -0
  773. package/scripts/lane/lane-seed.ts +44 -0
  774. package/scripts/lane/lane-start-point.ts +175 -0
  775. package/scripts/lane/openai-lane-supervisor-cli.ts +32 -0
  776. package/scripts/lane/openai-lane-supervisor-decision.ts +63 -0
  777. package/scripts/lane/openai-lane-supervisor.ts +337 -0
  778. package/scripts/lib/bounded-pool.ts +109 -0
  779. package/scripts/lib/buffered-process.ts +82 -0
  780. package/scripts/lib/caddy-logs.sh +45 -0
  781. package/scripts/lib/cli-flags.ts +19 -0
  782. package/scripts/lib/json-value.ts +24 -0
  783. package/scripts/lib/poll.ts +57 -0
  784. package/scripts/lib/read-file.ts +16 -0
  785. package/scripts/lib/schemas.ts +67 -0
  786. package/scripts/lib/spawn-exit.ts +45 -0
  787. package/scripts/lib/status-icons.ts +24 -0
  788. package/scripts/lines/effective-limit.ts +156 -0
  789. package/scripts/lines/line-budget.ts +404 -0
  790. package/scripts/lines/line-targets.ts +80 -0
  791. package/scripts/lines/lines-command.ts +174 -0
  792. package/scripts/lint/cspell-cached.ts +41 -0
  793. package/scripts/lint/lint-parallel.ts +72 -0
  794. package/scripts/lint/lint-related-scope.ts +128 -0
  795. package/scripts/lint/lint-related.ts +104 -0
  796. package/scripts/managed-marker/index.ts +5 -0
  797. package/scripts/managed-marker/managed-marker-logic.ts +67 -0
  798. package/scripts/observations/observation-ledger-home.ts +32 -0
  799. package/scripts/observations/observation-ledger-line.ts +93 -0
  800. package/scripts/observations/observation-ledger.ts +35 -0
  801. package/scripts/observations/observations-flush-cli.ts +42 -0
  802. package/scripts/observations/observations-flush-landing.ts +97 -0
  803. package/scripts/observations/observations-flush.ts +420 -0
  804. package/scripts/overrides/lockfile-overrides.ts +105 -0
  805. package/scripts/overrides/overrides-check.ts +84 -0
  806. package/scripts/overrides/overrides-files.ts +19 -0
  807. package/scripts/overrides/overrides-logic.ts +211 -0
  808. package/scripts/overrides/schemas.ts +49 -0
  809. package/scripts/package/package-scout-cli.ts +195 -0
  810. package/scripts/package/package-scout-format.ts +151 -0
  811. package/scripts/package/package-scout.ts +121 -0
  812. package/scripts/ports/port-command.ts +87 -0
  813. package/scripts/propagate/propagate-git-failure.ts +191 -0
  814. package/scripts/propagate/propagate-git.ts +224 -0
  815. package/scripts/propagate/propagate-publish.ts +181 -0
  816. package/scripts/propagate/propagate-run.ts +201 -0
  817. package/scripts/propagate/propagate-steps.ts +421 -0
  818. package/scripts/propagate/propagate-targets.ts +160 -0
  819. package/scripts/propagate/propagate.ts +216 -0
  820. package/scripts/refactor/import-graph.ts +187 -0
  821. package/scripts/refactor/refactor-lint.ts +250 -0
  822. package/scripts/refactor/refactor-scan-cli.ts +10 -0
  823. package/scripts/refactor/refactor-scan.ts +124 -0
  824. package/scripts/refactor/refactor-targets.ts +103 -0
  825. package/scripts/release/release-cli.ts +88 -0
  826. package/scripts/release/release-history.ts +132 -0
  827. package/scripts/release/release-plan.ts +130 -0
  828. package/scripts/release/release-publish.ts +152 -0
  829. package/scripts/release/release-scope-cli.ts +103 -0
  830. package/scripts/release/release-tag.ts +93 -0
  831. package/scripts/release/release-worktree.ts +71 -0
  832. package/scripts/repo/auto-merge-setting-logic.ts +100 -0
  833. package/scripts/repo/auto-merge-setting.ts +37 -0
  834. package/scripts/repo/repo-setting.ts +112 -0
  835. package/scripts/report/report-lint-cli.ts +49 -0
  836. package/scripts/report/report-lint.ts +250 -0
  837. package/scripts/retrospective/retrospective-cli.ts +97 -0
  838. package/scripts/retrospective/retrospective.ts +127 -0
  839. package/scripts/review/disposition-cli.ts +44 -0
  840. package/scripts/review/disposition-logic.ts +45 -0
  841. package/scripts/review/live-evidence.ts +62 -0
  842. package/scripts/review/review-attest-cli.ts +115 -0
  843. package/scripts/review/review-attest.ts +319 -0
  844. package/scripts/review/review-brief-cli.ts +290 -0
  845. package/scripts/review/review-brief.ts +440 -0
  846. package/scripts/review/review-checkout.ts +56 -0
  847. package/scripts/review/review-finding-ledger.ts +167 -0
  848. package/scripts/review/review-findings-cli.ts +57 -0
  849. package/scripts/review/review-level.ts +86 -0
  850. package/scripts/review/review-record-cli.ts +196 -0
  851. package/scripts/review/review-record.ts +74 -0
  852. package/scripts/review/review-round2-cli.ts +84 -0
  853. package/scripts/review/review-round2.ts +139 -0
  854. package/scripts/review/review-stamps.ts +113 -0
  855. package/scripts/review/review-tree.ts +58 -0
  856. package/scripts/rules/bash-triggers.ts +44 -0
  857. package/scripts/rules/decision-oracle.ts +342 -0
  858. package/scripts/rules/delivered-rules-harness.ts +72 -0
  859. package/scripts/rules/delivered-rules.ts +793 -0
  860. package/scripts/rules/early-heartbeat.ts +241 -0
  861. package/scripts/rules/file-body.ts +150 -0
  862. package/scripts/rules/filing-cap.ts +133 -0
  863. package/scripts/rules/filing-offer.ts +81 -0
  864. package/scripts/rules/firing-point.ts +63 -0
  865. package/scripts/rules/gh-api.ts +65 -0
  866. package/scripts/rules/git-argv.ts +129 -0
  867. package/scripts/rules/git-force.ts +104 -0
  868. package/scripts/rules/implementation-cut-verdict.ts +84 -0
  869. package/scripts/rules/implementation-cut.ts +202 -0
  870. package/scripts/rules/issue-citation.ts +242 -0
  871. package/scripts/rules/issue-fold.ts +73 -0
  872. package/scripts/rules/issue-scout.ts +64 -0
  873. package/scripts/rules/josh-git-bare.ts +80 -0
  874. package/scripts/rules/lane-carry-conflict.ts +96 -0
  875. package/scripts/rules/lane-interactive-ask.ts +71 -0
  876. package/scripts/rules/lane-park.ts +122 -0
  877. package/scripts/rules/lane-switch-main.ts +139 -0
  878. package/scripts/rules/oracle-consulted.ts +81 -0
  879. package/scripts/rules/oracle-firing.ts +151 -0
  880. package/scripts/rules/oracle-list-cli.ts +81 -0
  881. package/scripts/rules/piped-verification.ts +126 -0
  882. package/scripts/rules/poll-loop.ts +125 -0
  883. package/scripts/rules/pre-gate-cut.ts +207 -0
  884. package/scripts/rules/prior-comment-read.ts +106 -0
  885. package/scripts/rules/raw-field-body.ts +56 -0
  886. package/scripts/rules/reply-language.ts +116 -0
  887. package/scripts/rules/rule-body-guard.ts +206 -0
  888. package/scripts/rules/rule-guard.ts +23 -0
  889. package/scripts/rules/rule-value-cli.ts +129 -0
  890. package/scripts/rules/rule-value.ts +397 -0
  891. package/scripts/rules/run-tail.ts +178 -0
  892. package/scripts/rules/shell-body-trigger.ts +204 -0
  893. package/scripts/rules/shell-segments.ts +45 -0
  894. package/scripts/rules/stop-rules.ts +329 -0
  895. package/scripts/rules/tail-commands.ts +35 -0
  896. package/scripts/rules/test-declared-commit.ts +51 -0
  897. package/scripts/rules/third-party-write.ts +90 -0
  898. package/scripts/rules/top-level-scripts-guard.ts +47 -0
  899. package/scripts/rules/worktree-guard.ts +130 -0
  900. package/scripts/run/detached-launch.ts +360 -0
  901. package/scripts/run/run-carry-args.ts +264 -0
  902. package/scripts/run/run-carry-change.ts +69 -0
  903. package/scripts/run/run-carry-cli.ts +441 -0
  904. package/scripts/run/run-carry-flush.ts +63 -0
  905. package/scripts/run/run-carry-stash.ts +71 -0
  906. package/scripts/run/run-carry-streak.ts +113 -0
  907. package/scripts/run/run-carry.ts +550 -0
  908. package/scripts/run/run-cut-args.ts +132 -0
  909. package/scripts/run/run-cut-cli.ts +461 -0
  910. package/scripts/run/run-cut-handoff.ts +126 -0
  911. package/scripts/run/run-cut.ts +531 -0
  912. package/scripts/run/run-ending-cli.ts +111 -0
  913. package/scripts/run/run-ending.ts +239 -0
  914. package/scripts/run/run-entry-cli.ts +135 -0
  915. package/scripts/run/run-entry.ts +95 -0
  916. package/scripts/run/run-event-cli.ts +210 -0
  917. package/scripts/run/run-event-follow.ts +65 -0
  918. package/scripts/run/run-event-render.ts +75 -0
  919. package/scripts/run/run-event-scope.ts +127 -0
  920. package/scripts/run/run-event-stream-emit.ts +140 -0
  921. package/scripts/run/run-event-stream.ts +258 -0
  922. package/scripts/run/run-event-watch.ts +37 -0
  923. package/scripts/run/run-headless.ts +105 -0
  924. package/scripts/run/run-hold-cli.ts +310 -0
  925. package/scripts/run/run-hold.ts +264 -0
  926. package/scripts/run/run-invocation.ts +237 -0
  927. package/scripts/run/run-issue-number.ts +19 -0
  928. package/scripts/run/run-liveness-cli.ts +169 -0
  929. package/scripts/run/run-liveness.ts +424 -0
  930. package/scripts/run/run-merge-cli.ts +385 -0
  931. package/scripts/run/run-merge-steps.ts +326 -0
  932. package/scripts/run/run-merge.ts +158 -0
  933. package/scripts/run/run-next-cli.ts +48 -0
  934. package/scripts/run/run-next.ts +80 -0
  935. package/scripts/run/run-preflight.ts +337 -0
  936. package/scripts/run/run-prep-cli.ts +151 -0
  937. package/scripts/run/run-prep.ts +84 -0
  938. package/scripts/run/run-progress-args.ts +65 -0
  939. package/scripts/run/run-progress-cli.ts +508 -0
  940. package/scripts/run/run-progress-clock.ts +320 -0
  941. package/scripts/run/run-progress-config.ts +119 -0
  942. package/scripts/run/run-progress-read.ts +199 -0
  943. package/scripts/run/run-progress.ts +366 -0
  944. package/scripts/run/run-report-cli.ts +71 -0
  945. package/scripts/run/run-report.ts +78 -0
  946. package/scripts/run/run-review-cli.ts +130 -0
  947. package/scripts/run/run-review-steps.ts +161 -0
  948. package/scripts/run/run-review.ts +121 -0
  949. package/scripts/run/run-ship-cli.ts +431 -0
  950. package/scripts/run/run-ship-detach.ts +200 -0
  951. package/scripts/run/run-ship-probe.ts +103 -0
  952. package/scripts/run/run-ship-return.ts +75 -0
  953. package/scripts/run/run-ship-review-steps.ts +227 -0
  954. package/scripts/run/run-ship-review.ts +177 -0
  955. package/scripts/run/run-ship-stage.ts +150 -0
  956. package/scripts/run/run-ship.ts +78 -0
  957. package/scripts/run/run-status-cli.ts +175 -0
  958. package/scripts/run/run-status.ts +77 -0
  959. package/scripts/run/run-step-cli.ts +111 -0
  960. package/scripts/run/run-step.ts +292 -0
  961. package/scripts/run/run-stop-notify.ts +52 -0
  962. package/scripts/run/run-stranded-cli.ts +31 -0
  963. package/scripts/run/run-stranded-detect.ts +134 -0
  964. package/scripts/run/run-stranded.ts +120 -0
  965. package/scripts/run/run-tail-cli.ts +105 -0
  966. package/scripts/run/run-tail.ts +61 -0
  967. package/scripts/run/run-transcript.golden.txt +57 -0
  968. package/scripts/run/run-wake-cli.ts +428 -0
  969. package/scripts/run/run-wake-describe.ts +97 -0
  970. package/scripts/run/run-wake-driver.ts +80 -0
  971. package/scripts/run/run-wake-handoff.ts +29 -0
  972. package/scripts/run/run-wake-loop.ts +223 -0
  973. package/scripts/run/run-wake-session.ts +150 -0
  974. package/scripts/run/run-wake-work.ts +104 -0
  975. package/scripts/run/run-wake.ts +607 -0
  976. package/scripts/run/run-watcher-guard-cli.ts +37 -0
  977. package/scripts/run/run-watcher-guard.ts +59 -0
  978. package/scripts/run/run-watcher-hook.ts +86 -0
  979. package/scripts/security/secretlint-scan.ts +86 -0
  980. package/scripts/security/security-audit-logic.ts +51 -0
  981. package/scripts/security/security-audit-provision-logic.ts +217 -0
  982. package/scripts/security/security-audit-provision.ts +186 -0
  983. package/scripts/security/security-audit.ts +132 -0
  984. package/scripts/security/security-updates-logic.ts +131 -0
  985. package/scripts/security/security-updates.ts +38 -0
  986. package/scripts/security/sonar-file.ts +44 -0
  987. package/scripts/self-sync-guard/index.ts +5 -0
  988. package/scripts/self-sync-guard/self-sync-guard-logic.ts +98 -0
  989. package/scripts/self-sync-guard/self-sync-refusal.ts +22 -0
  990. package/scripts/sonar/sonar-hotspots-cli.ts +149 -0
  991. package/scripts/sonar/sonar-hotspots.ts +111 -0
  992. package/scripts/split/split-assess-cli.ts +52 -0
  993. package/scripts/split/split-assess.ts +124 -0
  994. package/scripts/sync/dependabot-pin-logic.ts +135 -0
  995. package/scripts/sync/directory-copy-guard.ts +187 -0
  996. package/scripts/sync/file-content.ts +49 -0
  997. package/scripts/sync/managed-config-scope-cli.ts +64 -0
  998. package/scripts/sync/managed-config-scope.ts +123 -0
  999. package/scripts/sync/plugin-skill-directories.ts +15 -0
  1000. package/scripts/sync/reconcile-templates.ts +53 -0
  1001. package/scripts/sync/removed-skill-manifest.ts +27 -0
  1002. package/scripts/sync/skill-migration.ts +192 -0
  1003. package/scripts/sync/sync-configs.ts +156 -0
  1004. package/scripts/sync/sync-hook-safety.ts +82 -0
  1005. package/scripts/sync/sync.ts +417 -0
  1006. package/scripts/sync/synced-paths.ts +52 -0
  1007. package/scripts/sync/template-source-logic.ts +122 -0
  1008. package/scripts/sync/workflow-pin-logic.ts +240 -0
  1009. package/scripts/test/classify-isolation.ts +149 -0
  1010. package/scripts/test/e2e-retry-check.ts +150 -0
  1011. package/scripts/test/http-fault-injection.ts +79 -0
  1012. package/scripts/test/josh-harness-environment.ts +260 -0
  1013. package/scripts/test/josh-harness.ts +96 -0
  1014. package/scripts/test/pilot-files.ts +457 -0
  1015. package/scripts/test/pilot-measure.ts +78 -0
  1016. package/scripts/test/test-declared-changed.ts +99 -0
  1017. package/scripts/test/test-declared-logic.ts +91 -0
  1018. package/scripts/test/test-declared-match.ts +106 -0
  1019. package/scripts/test/test-declared.ts +180 -0
  1020. package/scripts/test/test-e2e-guard.ts +86 -0
  1021. package/scripts/test/test-network-guard.ts +453 -0
  1022. package/scripts/test/test-red-commit.ts +51 -0
  1023. package/scripts/test/test-red-logic.ts +76 -0
  1024. package/scripts/test/test-red.ts +154 -0
  1025. package/scripts/test/test-related-scope.ts +115 -0
  1026. package/scripts/test/test-related.ts +73 -0
  1027. package/scripts/test/test-repository-guard.ts +317 -0
  1028. package/scripts/test/test-state-guard.ts +85 -0
  1029. package/scripts/test/test-stdout-guard.ts +54 -0
  1030. package/scripts/test/test-telegram-guard.ts +90 -0
  1031. package/scripts/test/test-type-logic.ts +31 -0
  1032. package/scripts/test/test-unit-guard.ts +185 -0
  1033. package/scripts/test/unit-guard-environment.ts +12 -0
  1034. package/scripts/test/unit-projects.ts +139 -0
  1035. package/scripts/test/unit-worker-share.ts +251 -0
  1036. package/scripts/test/vitest-include-globs.ts +12 -0
  1037. package/scripts/time-runtime/time-agent-bundles.ts +128 -0
  1038. package/scripts/time-runtime/time-background.ts +300 -0
  1039. package/scripts/time-runtime/time-batch-guard-fixtures.ts +66 -0
  1040. package/scripts/time-runtime/time-batch-guard.ts +529 -0
  1041. package/scripts/time-runtime/time-bundle-call.ts +575 -0
  1042. package/scripts/time-runtime/time-bundles.ts +536 -0
  1043. package/scripts/time-runtime/time-call-identity.ts +37 -0
  1044. package/scripts/time-runtime/time-command-key.ts +35 -0
  1045. package/scripts/time-runtime/time-density-hook.ts +166 -0
  1046. package/scripts/time-runtime/time-density.ts +147 -0
  1047. package/scripts/time-runtime/time-followup-stage.ts +107 -0
  1048. package/scripts/time-runtime/time-format.ts +186 -0
  1049. package/scripts/time-runtime/time-hook-transcript.ts +82 -0
  1050. package/scripts/time-runtime/time-instant.ts +20 -0
  1051. package/scripts/time-runtime/time-markers.ts +228 -0
  1052. package/scripts/time-runtime/time-phase-names.ts +123 -0
  1053. package/scripts/time-runtime/time-reported-failure.ts +227 -0
  1054. package/scripts/time-runtime/time-round-trips.ts +279 -0
  1055. package/scripts/time-runtime/time-shell.ts +286 -0
  1056. package/scripts/time-runtime/time-single-check.ts +65 -0
  1057. package/scripts/time-runtime/time-spans.ts +545 -0
  1058. package/scripts/time-runtime/time-transcript-line.ts +253 -0
  1059. package/scripts/time-runtime/time-writes.ts +71 -0
  1060. package/scripts/ui/ui-routes-cli.ts +122 -0
  1061. package/scripts/ui/ui-routes.ts +102 -0
  1062. package/scripts/version/bump-version.ts +71 -0
  1063. package/scripts/version/effective-upstream.ts +93 -0
  1064. package/scripts/version/index.ts +25 -0
  1065. package/scripts/version/kit-descriptor.ts +10 -0
  1066. package/scripts/version/kit-version-config.ts +30 -0
  1067. package/scripts/version/latest-corepack.ts +404 -0
  1068. package/scripts/version/latest-lane-guard.ts +49 -0
  1069. package/scripts/version/latest-regression.ts +93 -0
  1070. package/scripts/version/latest-scope-cli.ts +147 -0
  1071. package/scripts/version/latest-stamp.ts +107 -0
  1072. package/scripts/version/latest-update.ts +198 -0
  1073. package/scripts/version/package-manager-version.ts +95 -0
  1074. package/scripts/version/parse-json.ts +13 -0
  1075. package/scripts/version/preinstall-version-update.ts +84 -0
  1076. package/scripts/version/publishable-range-check.ts +74 -0
  1077. package/scripts/version/publishable-range.ts +123 -0
  1078. package/scripts/version/release-age.ts +146 -0
  1079. package/scripts/version/release-hold.ts +142 -0
  1080. package/scripts/version/running-binary.ts +42 -0
  1081. package/scripts/version/upgrade-command-guard.ts +49 -0
  1082. package/scripts/version/upgrade-shell-command.ts +30 -0
  1083. package/scripts/version/version-check-logic.ts +333 -0
  1084. package/scripts/version/version-check.ts +14 -0
  1085. package/scripts/version/version-command-config.ts +177 -0
  1086. package/scripts/version/version-commands.ts +296 -0
  1087. package/scripts/version/version-remote.ts +86 -0
  1088. package/scripts/version/version-targets.ts +81 -0
  1089. package/scripts/yaml/yaml-document.ts +46 -0
  1090. package/scripts-ai/completion-gate.ts +13 -0
  1091. package/scripts-ai/environment-loader.ts +9 -0
  1092. package/scripts-ai/epic-check.ts +34 -0
  1093. package/scripts-ai/epic-cli-argv.ts +77 -0
  1094. package/scripts-ai/epic-cli-remove.ts +71 -0
  1095. package/scripts-ai/epic-cli.ts +413 -0
  1096. package/scripts-ai/epic.ts +192 -0
  1097. package/scripts-ai/followup-issue-number.ts +31 -0
  1098. package/scripts-ai/git-followup-finish.ts +217 -0
  1099. package/scripts-ai/git-followup-workflow.ts +252 -0
  1100. package/scripts-ai/git-workflow.ts +246 -0
  1101. package/scripts-ai/telegram-test-logic.ts +88 -0
  1102. package/scripts-ai/telegram-test.ts +130 -0
  1103. package/templates/gitignore +76 -0
  1104. package/templates/sonar-project.properties +52 -0
  1105. package/templates/workflows/ci.yml +639 -0
  1106. package/templates/workflows/dependabot-auto-merge.yml +428 -0
  1107. package/tsconfig/base.json +50 -0
  1108. package/tsconfig.sonar.json +34 -0
@@ -0,0 +1,1024 @@
1
+ // scripts/version/kit-descriptor.ts
2
+ var KIT_PACKAGE_NAME = "@joshuafolkken/kit";
3
+ var kit_package_descriptor = { package_name: KIT_PACKAGE_NAME };
4
+
5
+ // scripts/version/version-command-config.ts
6
+ var NODE_MODULES = "node_modules";
7
+ var FIX_GH_PACKAGES_SCRIPT = "scripts/gh/fix-gh-packages.ts";
8
+ var SCOPED_PACKAGE_PATTERN = /^@(?<owner>[^/]+)\/(?<name>.+)$/u;
9
+ var FIX_GH_PACKAGES_PATH = `${NODE_MODULES}/${KIT_PACKAGE_NAME}/${FIX_GH_PACKAGES_SCRIPT}`;
10
+ function parse_scoped_package_name(package_name) {
11
+ const groups = SCOPED_PACKAGE_PATTERN.exec(package_name)?.groups;
12
+ const { owner, name } = groups ?? {};
13
+ if (owner === void 0 || name === void 0) return void 0;
14
+ return { owner, name };
15
+ }
16
+ function derive_versions_endpoint(package_name) {
17
+ const scoped = parse_scoped_package_name(package_name);
18
+ if (scoped === void 0) {
19
+ throw new Error(`Cannot derive a versions endpoint from unscoped package name: ${package_name}`);
20
+ }
21
+ return `/users/${scoped.owner}/packages/npm/${scoped.name}/versions?per_page=1`;
22
+ }
23
+ function pick_effective_hooks(descriptor) {
24
+ const hooks = {};
25
+ if (descriptor.resolve_effective_version !== void 0) {
26
+ hooks.resolve_effective_version = descriptor.resolve_effective_version;
27
+ }
28
+ if (descriptor.resolve_global_upgrade_command !== void 0) {
29
+ hooks.resolve_global_upgrade_command = descriptor.resolve_global_upgrade_command;
30
+ }
31
+ if (descriptor.is_global_upgrade_command_pinned !== void 0) {
32
+ hooks.is_global_upgrade_command_pinned = descriptor.is_global_upgrade_command_pinned;
33
+ }
34
+ return hooks;
35
+ }
36
+ function resolve_upstream(descriptor) {
37
+ return {
38
+ package_name: descriptor.package_name,
39
+ versions_endpoint: derive_versions_endpoint(descriptor.package_name),
40
+ fix_gh_packages_path: FIX_GH_PACKAGES_PATH,
41
+ ...pick_effective_hooks(descriptor)
42
+ };
43
+ }
44
+ function resolve_versions_endpoint(options) {
45
+ const { versions_endpoint, package_name } = options;
46
+ if (versions_endpoint === void 0) return derive_versions_endpoint(package_name);
47
+ if (versions_endpoint.trim() !== "") return versions_endpoint;
48
+ throw new Error(
49
+ `versions_endpoint for ${package_name} was set to an empty string; omit it to derive the endpoint or pass a non-empty value.`
50
+ );
51
+ }
52
+ function create_version_command_config(options) {
53
+ const config = {
54
+ package_name: options.package_name,
55
+ versions_endpoint: resolve_versions_endpoint(options),
56
+ fix_gh_packages_path: FIX_GH_PACKAGES_PATH,
57
+ upstreams: (options.upstreams ?? []).map((descriptor) => resolve_upstream(descriptor))
58
+ };
59
+ if (options.self_directory !== void 0) config.self_directory = options.self_directory;
60
+ if (options.resolve_warning !== void 0) config.resolve_warning = options.resolve_warning;
61
+ return config;
62
+ }
63
+
64
+ // scripts/version/effective-upstream.ts
65
+ import { existsSync, readFileSync } from "node:fs";
66
+ import { createRequire } from "node:module";
67
+ import path from "node:path";
68
+
69
+ // scripts/lib/schemas.ts
70
+ import { z } from "zod";
71
+ var overrides_snapshot_schema = z.record(z.string(), z.string());
72
+ var package_version_schema = z.object({ version: z.string() });
73
+ var package_named_version_schema = z.looseObject({ name: z.string(), version: z.string() });
74
+ var package_with_version_schema = z.looseObject({ version: z.string() });
75
+ var ls_global_dependency_schema = z.looseObject({ version: z.string() });
76
+ var ls_global_dependencies_schema = z.record(z.string(), ls_global_dependency_schema).optional();
77
+ var pnpm_ls_global_schema = z.array(
78
+ z.looseObject({
79
+ dependencies: ls_global_dependencies_schema
80
+ })
81
+ );
82
+ var vscode_settings_schema = z.record(z.string(), z.unknown());
83
+ var with_scripts_schema = z.looseObject({
84
+ scripts: z.record(z.string(), z.string()).optional()
85
+ });
86
+ var with_development_deps_schema = z.looseObject({
87
+ devDependencies: z.record(z.string(), z.string()).optional()
88
+ });
89
+ var with_package_manager_schema = z.looseObject({
90
+ packageManager: z.string().optional()
91
+ });
92
+ var with_development_engine_schema = z.looseObject({
93
+ devEngines: z.record(z.string(), z.unknown()).optional()
94
+ });
95
+ var bin_entry_schema = z.union([z.string(), z.record(z.string(), z.string())]).optional();
96
+ var package_bin_schema = z.looseObject({ bin: bin_entry_schema });
97
+ var json_object_schema = z.record(z.string(), z.unknown());
98
+ var string_array_schema = z.array(z.string());
99
+ var string_record_schema = z.record(z.string(), z.string());
100
+
101
+ // scripts/version/parse-json.ts
102
+ function safe_json_parse(raw) {
103
+ try {
104
+ return JSON.parse(raw);
105
+ } catch {
106
+ return void 0;
107
+ }
108
+ }
109
+
110
+ // scripts/version/effective-upstream.ts
111
+ var PACKAGE_JSON = "package.json";
112
+ var MAX_WALK_DEPTH = 64;
113
+ function read_matching_version(manifest_path, package_name) {
114
+ if (!existsSync(manifest_path)) return void 0;
115
+ const parsed = package_named_version_schema.safeParse(
116
+ safe_json_parse(readFileSync(manifest_path, "utf8"))
117
+ );
118
+ if (!parsed.success) return void 0;
119
+ if (parsed.data.name !== package_name) return void 0;
120
+ return parsed.data.version;
121
+ }
122
+ function ancestor_directories(start_directory) {
123
+ const directories = [];
124
+ let current = start_directory;
125
+ for (let depth = 0; depth < MAX_WALK_DEPTH; depth += 1) {
126
+ directories.push(current);
127
+ const parent = path.dirname(current);
128
+ if (parent === current) break;
129
+ current = parent;
130
+ }
131
+ return directories;
132
+ }
133
+ function walk_up_for_version(start_directory, package_name) {
134
+ for (const directory of ancestor_directories(start_directory)) {
135
+ const version = read_matching_version(path.join(directory, PACKAGE_JSON), package_name);
136
+ if (version !== void 0) return version;
137
+ }
138
+ return void 0;
139
+ }
140
+ function resolve_from_base(base_url, package_name, resolve_marker) {
141
+ try {
142
+ return createRequire(base_url).resolve(resolve_marker ?? package_name);
143
+ } catch {
144
+ return void 0;
145
+ }
146
+ }
147
+ function resolve_effective_upstream_version(base_url, package_name, options = {}) {
148
+ const resolved = resolve_from_base(base_url, package_name, options.resolve_marker);
149
+ if (resolved === void 0) return void 0;
150
+ return walk_up_for_version(path.dirname(resolved), package_name);
151
+ }
152
+
153
+ // scripts/version/version-commands.ts
154
+ import { execaSync as execaSync4 } from "execa";
155
+
156
+ // scripts/version/release-age.ts
157
+ import { readFileSync as readFileSync2 } from "node:fs";
158
+ import path2 from "node:path";
159
+ import semver from "semver";
160
+ import { z as z2 } from "zod";
161
+ var MINIMUM_RELEASE_AGE_RE = /^minimum-release-age\s*=\s*(\d+)\s*$/mu;
162
+ var NO_QUARANTINE_MINUTES = 0;
163
+ var NPMRC_PATH = ".npmrc";
164
+ var release_times_schema = z2.record(z2.string(), z2.string());
165
+ var MS_PER_MINUTE = 6e4;
166
+ function parse_minimum_release_age(npmrc_content) {
167
+ const raw = MINIMUM_RELEASE_AGE_RE.exec(npmrc_content)?.[1];
168
+ return raw === void 0 ? NO_QUARANTINE_MINUTES : Number(raw);
169
+ }
170
+ function is_on_major(version, major) {
171
+ return major === void 0 || String(semver.major(version)) === major;
172
+ }
173
+ function is_eligible(version, published_at, major, cutoff_ms) {
174
+ if (semver.valid(version) === null || semver.prerelease(version) !== null || !is_on_major(version, major)) {
175
+ return false;
176
+ }
177
+ const published_ms = Date.parse(published_at);
178
+ return Number.isFinite(published_ms) && published_ms <= cutoff_ms;
179
+ }
180
+ function select_aged_version(times, major, minimum_age_minutes, now_ms) {
181
+ const cutoff_ms = now_ms - minimum_age_minutes * MS_PER_MINUTE;
182
+ const eligible = Object.entries(times).filter(([version, published_at]) => is_eligible(version, published_at, major, cutoff_ms)).map(([version]) => version).toSorted(semver.rcompare);
183
+ return eligible[0];
184
+ }
185
+ function read_declared_minimum_release_age(npmrc_path) {
186
+ try {
187
+ const raw = MINIMUM_RELEASE_AGE_RE.exec(readFileSync2(npmrc_path, "utf8"))?.[1];
188
+ return raw === void 0 ? void 0 : Number(raw);
189
+ } catch {
190
+ return void 0;
191
+ }
192
+ }
193
+ function read_minimum_release_age(npmrc_path = NPMRC_PATH) {
194
+ return read_declared_minimum_release_age(npmrc_path) ?? NO_QUARANTINE_MINUTES;
195
+ }
196
+ function find_declared_minimum_release_age(start, boundary) {
197
+ const declared = read_declared_minimum_release_age(path2.join(start, NPMRC_PATH));
198
+ if (declared !== void 0) return declared;
199
+ if (start === boundary) return void 0;
200
+ const parent = path2.dirname(start);
201
+ return parent === start ? void 0 : find_declared_minimum_release_age(parent, boundary);
202
+ }
203
+ function read_nearest_minimum_release_age(start, boundary) {
204
+ return find_declared_minimum_release_age(path2.resolve(start), boundary) ?? NO_QUARANTINE_MINUTES;
205
+ }
206
+ var release_age = {
207
+ release_times_schema,
208
+ parse_minimum_release_age,
209
+ read_minimum_release_age,
210
+ read_nearest_minimum_release_age,
211
+ select_aged_version
212
+ };
213
+
214
+ // scripts/version/release-hold.ts
215
+ import semver2 from "semver";
216
+ var MINUTES_PER_HOUR = 60;
217
+ var MS_PER_MINUTE2 = 6e4;
218
+ var HOLD_LABEL = "Held:";
219
+ function is_latest_withheld(times, latest, minimum_age_minutes, now_ms) {
220
+ const published_at = times[latest];
221
+ if (published_at === void 0) return false;
222
+ const published_ms = Date.parse(published_at);
223
+ if (!Number.isFinite(published_ms)) return false;
224
+ return published_ms > now_ms - minimum_age_minutes * MS_PER_MINUTE2;
225
+ }
226
+ function resolve_installable(times, latest, minimum_age_minutes, now_ms) {
227
+ if (times === void 0) return void 0;
228
+ if (!is_latest_withheld(times, latest, minimum_age_minutes, now_ms)) return void 0;
229
+ const installable = release_age.select_aged_version(times, void 0, minimum_age_minutes, now_ms);
230
+ return installable === latest ? void 0 : installable;
231
+ }
232
+ function is_at_or_above(version, installable) {
233
+ if (semver2.valid(version) === null || semver2.valid(installable) === null) {
234
+ return version === installable;
235
+ }
236
+ return semver2.gte(version, installable);
237
+ }
238
+ function is_release_age_hold(version, latest, installable) {
239
+ if (version === void 0 || installable === void 0 || version === latest) return false;
240
+ return is_at_or_above(version, installable);
241
+ }
242
+ function format_window(minimum_age_minutes) {
243
+ if (minimum_age_minutes % MINUTES_PER_HOUR !== 0) return `${String(minimum_age_minutes)} min`;
244
+ return `${String(minimum_age_minutes / MINUTES_PER_HOUR)} h`;
245
+ }
246
+ function format_release_hold_note(version, latest, installable, minimum_age_minutes) {
247
+ const window = format_window(minimum_age_minutes);
248
+ const head = `${HOLD_LABEL} ${latest} is inside the ${window} minimum-release-age window`;
249
+ if (version !== installable) return `${head}; an unpinned resolve cannot reach it yet`;
250
+ return `${head}; an unpinned resolve lands on ${installable}`;
251
+ }
252
+ function build_release_hold_notes(version, latest, installable, minimum_age_minutes) {
253
+ if (version === void 0 || installable === void 0) return [];
254
+ if (!is_release_age_hold(version, latest, installable)) return [];
255
+ return [format_release_hold_note(version, latest, installable, minimum_age_minutes)];
256
+ }
257
+ var release_hold = {
258
+ HOLD_LABEL,
259
+ is_at_or_above,
260
+ is_latest_withheld,
261
+ resolve_installable,
262
+ is_release_age_hold,
263
+ format_window,
264
+ format_release_hold_note,
265
+ build_release_hold_notes
266
+ };
267
+
268
+ // scripts/version/running-binary.ts
269
+ import { existsSync as existsSync2, readFileSync as readFileSync3 } from "node:fs";
270
+ import path3 from "node:path";
271
+ var PACKAGE_JSON2 = "package.json";
272
+ var SCRIPT_DEPTH_FROM_ROOT = ["..", ".."];
273
+ function resolve_self_package_path(self_directory) {
274
+ return path3.join(self_directory, ...SCRIPT_DEPTH_FROM_ROOT, PACKAGE_JSON2);
275
+ }
276
+ function running_package_directory(self_directory) {
277
+ return path3.resolve(self_directory, ...SCRIPT_DEPTH_FROM_ROOT);
278
+ }
279
+ function read_running_version(self_directory) {
280
+ const package_path = resolve_self_package_path(self_directory);
281
+ if (!existsSync2(package_path)) return void 0;
282
+ const parsed = package_version_schema.safeParse(
283
+ safe_json_parse(readFileSync3(package_path, "utf8"))
284
+ );
285
+ return parsed.success ? parsed.data.version : void 0;
286
+ }
287
+ var running_binary = {
288
+ resolve_self_package_path,
289
+ running_package_directory,
290
+ read_running_version
291
+ };
292
+
293
+ // scripts/version/upgrade-command-guard.ts
294
+ var VERSION_PIN_PATTERN = /^(?<name>@[\w.-]+\/[\w.-]+|[\w.-]+)@(?<version>\d[\w.+-]*)$/u;
295
+ var WHITESPACE_PATTERN = /\s+/u;
296
+ function parse_version_pin(token) {
297
+ const { name, version } = VERSION_PIN_PATTERN.exec(token)?.groups ?? {};
298
+ if (name === void 0 || version === void 0) return void 0;
299
+ return { name, version };
300
+ }
301
+ function extract_version_pins(command) {
302
+ return command.split(WHITESPACE_PATTERN).flatMap((token) => parse_version_pin(token) ?? []);
303
+ }
304
+ function is_no_op_upgrade_command(command, installed) {
305
+ const pins = extract_version_pins(command);
306
+ if (pins.length === 0) return false;
307
+ return pins.every((pin) => installed.get(pin.name) === pin.version);
308
+ }
309
+
310
+ // scripts/version/upgrade-shell-command.ts
311
+ function update_scope_flag(is_local) {
312
+ return is_local ? "-D" : "-g";
313
+ }
314
+ function format_update_command(latest, is_local, config) {
315
+ return `pnpm add ${update_scope_flag(is_local)} ${config.package_name}@${latest}`;
316
+ }
317
+ function build_upgrade_shell_command(latest, is_local, config) {
318
+ const add_command = format_update_command(latest, is_local, config);
319
+ if (!is_local) return add_command;
320
+ return `${add_command} && node_modules/.bin/tsx ${config.fix_gh_packages_path}`;
321
+ }
322
+
323
+ // scripts/version/version-check-logic.ts
324
+ var NOT_INSTALLED = "not installed";
325
+ var GLOBAL_LABEL = "Global: ";
326
+ var PROJECT_LABEL = "Project: ";
327
+ var LATEST_LABEL = "Latest: ";
328
+ var RUNNING_LABEL = "Running:";
329
+ var NOTE_LABEL = "Note:";
330
+ var STATUS_PAD_WIDTH = 12;
331
+ function format_running_line(running) {
332
+ if (running === void 0) return [];
333
+ return [` ${RUNNING_LABEL} ${running.version.padEnd(STATUS_PAD_WIDTH)}(${running.path})`];
334
+ }
335
+ function is_target_stale(version, latest) {
336
+ return version !== void 0 && version !== latest;
337
+ }
338
+ function format_target_status(version, latest) {
339
+ if (version === void 0) return NOT_INSTALLED;
340
+ if (version === latest) return `${version.padEnd(STATUS_PAD_WIDTH)}\u2713`;
341
+ return `${version.padEnd(STATUS_PAD_WIDTH)}\u26A0 \u2192 ${latest}`;
342
+ }
343
+ function format_target_line(label, version, latest) {
344
+ return ` ${label} ${format_target_status(version, latest)}`;
345
+ }
346
+ function format_held_target_line(label, version, latest, hold) {
347
+ const notes = hold === void 0 ? [] : release_hold.build_release_hold_notes(
348
+ version,
349
+ latest,
350
+ hold.installable,
351
+ hold.minimum_age_minutes
352
+ );
353
+ return [format_target_line(label, version, latest), ...notes.map((note) => ` ${note}`)];
354
+ }
355
+ function format_upstream_global_line(report) {
356
+ if (report.effective === void 0) return [];
357
+ return format_held_target_line(GLOBAL_LABEL, report.effective.version, report.latest, report.hold);
358
+ }
359
+ function is_effective_stale(report) {
360
+ const { effective, latest } = report;
361
+ if (effective === void 0) return false;
362
+ return is_target_stale(effective.version, latest);
363
+ }
364
+ function resolve_effective_upgrade_hint(report) {
365
+ const command = report.effective?.upgrade_command;
366
+ if (command === void 0 || !is_effective_stale(report)) return void 0;
367
+ const installed = report.installed_versions;
368
+ return {
369
+ command,
370
+ is_no_op: installed !== void 0 && is_no_op_upgrade_command(command, installed)
371
+ };
372
+ }
373
+ function build_effective_upgrade_commands(report) {
374
+ const hint = resolve_effective_upgrade_hint(report);
375
+ if (hint === void 0 || hint.is_no_op) return [];
376
+ return [hint.command];
377
+ }
378
+ function build_effective_upgrade_notes(report) {
379
+ const hint = resolve_effective_upgrade_hint(report);
380
+ if (hint?.is_no_op !== true) return [];
381
+ return [
382
+ `${NOTE_LABEL} \`${hint.command}\` is already satisfied; it cannot upgrade ${report.config.package_name} to ${report.latest}`
383
+ ];
384
+ }
385
+ function build_upstream_upgrade_notes(reports) {
386
+ return reports.flatMap((report) => build_effective_upgrade_notes(report));
387
+ }
388
+ function format_upstream_lines(report) {
389
+ return [
390
+ "",
391
+ report.config.package_name,
392
+ ...format_upstream_global_line(report),
393
+ ...build_effective_upgrade_notes(report).map((note) => ` ${note}`),
394
+ format_target_line(PROJECT_LABEL, report.project_version, report.latest),
395
+ ` ${LATEST_LABEL} ${report.latest}`
396
+ ];
397
+ }
398
+ function unique_upgrade_commands(commands) {
399
+ return [...new Set(commands)];
400
+ }
401
+ function format_unchanged_outcome(report, version) {
402
+ const name = report.config.package_name;
403
+ return `${name}: still ${version} \u2014 the global upgrade command did not change it (latest ${report.latest})`;
404
+ }
405
+ function format_advanced_outcome(report, before, after) {
406
+ const name = report.config.package_name;
407
+ return `${name}: ${before} \u2192 ${after} \u2014 still behind latest ${report.latest}`;
408
+ }
409
+ function format_effective_outcome(report, after) {
410
+ const previous = report.effective?.version;
411
+ const before = previous ?? NOT_INSTALLED;
412
+ if (after === previous) return format_unchanged_outcome(report, before);
413
+ return format_advanced_outcome(report, before, after ?? NOT_INSTALLED);
414
+ }
415
+ function build_project_upgrade_commands(report) {
416
+ if (!is_target_stale(report.project_version, report.latest)) return [];
417
+ return [build_upgrade_shell_command(report.latest, true, report.config)];
418
+ }
419
+ function build_upstream_upgrade_commands(reports) {
420
+ return reports.flatMap((report) => [
421
+ ...build_effective_upgrade_commands(report),
422
+ ...build_project_upgrade_commands(report)
423
+ ]);
424
+ }
425
+ function build_dual_upgrade_commands(snapshot, config) {
426
+ const { global_version, project_version, latest } = snapshot;
427
+ const commands = [];
428
+ if (is_target_stale(global_version, latest)) {
429
+ commands.push(build_upgrade_shell_command(latest, false, config));
430
+ }
431
+ if (is_target_stale(project_version, latest)) {
432
+ commands.push(build_upgrade_shell_command(latest, true, config));
433
+ }
434
+ return commands;
435
+ }
436
+ function format_target_lines(snapshot) {
437
+ const { global_version, project_version, latest } = snapshot;
438
+ return [
439
+ format_target_line(GLOBAL_LABEL, global_version, latest),
440
+ format_target_line(PROJECT_LABEL, project_version, latest),
441
+ ` ${LATEST_LABEL} ${latest}`
442
+ ];
443
+ }
444
+ function format_dual_version_output(snapshot, config, extras = {}, upstreams = []) {
445
+ const lines = [
446
+ config.package_name,
447
+ ...format_target_lines(snapshot),
448
+ ...format_running_line(extras.running),
449
+ ...upstreams.flatMap((report) => format_upstream_lines(report))
450
+ ];
451
+ const hints = unique_upgrade_commands([
452
+ ...build_dual_upgrade_commands(snapshot, config),
453
+ ...build_upstream_upgrade_commands(upstreams)
454
+ ]).map((command) => `Run: ${command}`);
455
+ if (hints.length > 0) lines.push("", ...hints);
456
+ if (extras.warning !== void 0) lines.push("", extras.warning);
457
+ return lines.join("\n");
458
+ }
459
+ var version_check_logic = {
460
+ format_dual_version_output,
461
+ format_running_line,
462
+ format_upstream_lines,
463
+ format_upstream_global_line,
464
+ build_dual_upgrade_commands,
465
+ build_upstream_upgrade_commands,
466
+ build_upstream_upgrade_notes,
467
+ build_effective_upgrade_commands,
468
+ build_effective_upgrade_notes,
469
+ build_project_upgrade_commands,
470
+ format_update_command,
471
+ format_effective_outcome,
472
+ build_upgrade_shell_command,
473
+ unique_upgrade_commands
474
+ };
475
+
476
+ // scripts/josh/agent-session-environment.ts
477
+ var SESSION_ID_KEY = "CLAUDE_CODE_SESSION_ID";
478
+ var PARENT_SESSION_KEYS = [
479
+ "CLAUDE_CODE_MESSAGING_SOCKET",
480
+ "CLAUDE_CODE_MESSAGING_TOKEN",
481
+ SESSION_ID_KEY,
482
+ "CLAUDE_CODE_CHILD_SESSION"
483
+ ];
484
+ var PROXY_KEYS = [
485
+ "ALL_PROXY",
486
+ "HTTP_PROXY",
487
+ "HTTPS_PROXY",
488
+ "all_proxy",
489
+ "http_proxy",
490
+ "https_proxy",
491
+ "GLOBAL_AGENT_HTTP_PROXY",
492
+ "GLOBAL_AGENT_HTTPS_PROXY"
493
+ ];
494
+ var PROXY_CERTIFICATE_KEY = "NODE_EXTRA_CA_CERTS";
495
+ var LOOPBACK_HOSTS = ["localhost", "ip6-localhost", "[::1]"];
496
+ var LOOPBACK_PREFIX = "127.";
497
+ var NO_HOST = "";
498
+ function parsed_host(value) {
499
+ try {
500
+ return new URL(value).hostname;
501
+ } catch {
502
+ return NO_HOST;
503
+ }
504
+ }
505
+ function proxy_host(value) {
506
+ const direct = parsed_host(value);
507
+ return direct === NO_HOST ? parsed_host(`http://${value}`) : direct;
508
+ }
509
+ function is_loopback_host(host) {
510
+ return host.startsWith(LOOPBACK_PREFIX) || LOOPBACK_HOSTS.includes(host);
511
+ }
512
+ function is_loopback_proxy(value) {
513
+ if (value === void 0 || value === NO_HOST) return false;
514
+ return is_loopback_host(proxy_host(value));
515
+ }
516
+ function is_declared(value) {
517
+ return value !== void 0 && value !== NO_HOST;
518
+ }
519
+ function loopback_proxy_keys(source, is_removed = is_loopback_proxy) {
520
+ const declared = PROXY_KEYS.filter((key) => is_declared(source[key]));
521
+ const matched = declared.filter((key) => is_removed(source[key]));
522
+ const is_certificate_included = matched.length > 0 && matched.length === declared.length;
523
+ return is_certificate_included ? [...matched, PROXY_CERTIFICATE_KEY] : matched;
524
+ }
525
+ function to_removed(keys) {
526
+ return Object.fromEntries(keys.map((key) => [key, void 0]));
527
+ }
528
+ function removed_environment(source = process.env) {
529
+ return to_removed([...PARENT_SESSION_KEYS, ...loopback_proxy_keys(source)]);
530
+ }
531
+ var SCANNER_DIRECTORY = ".safe-chain";
532
+ var PATH_SEPARATOR = /[/\\]/u;
533
+ function is_scanner_certificate(value) {
534
+ return value?.split(PATH_SEPARATOR).includes(SCANNER_DIRECTORY) ?? false;
535
+ }
536
+ var SCANNER_PROXY_KEY = "HTTPS_PROXY";
537
+ function is_scanner_proxy(source) {
538
+ const scanner_proxy = source[SCANNER_PROXY_KEY];
539
+ return function is_match(value) {
540
+ return value === scanner_proxy && is_loopback_proxy(value);
541
+ };
542
+ }
543
+ function removed_proxy_environment(source = process.env) {
544
+ if (!is_scanner_certificate(source[PROXY_CERTIFICATE_KEY])) return {};
545
+ return to_removed(loopback_proxy_keys(source, is_scanner_proxy(source)));
546
+ }
547
+ var agent_session_environment = {
548
+ LOOPBACK_HOSTS,
549
+ PARENT_SESSION_KEYS,
550
+ PROXY_CERTIFICATE_KEY,
551
+ PROXY_KEYS,
552
+ SESSION_ID_KEY,
553
+ removed_environment,
554
+ removed_proxy_environment
555
+ };
556
+
557
+ // scripts/git/git-gh-exec.ts
558
+ import { execa as execa2, execaSync } from "execa";
559
+
560
+ // scripts/git/git-execa-error.ts
561
+ function has_timed_out(error) {
562
+ if (typeof error !== "object" || error === null || !("timedOut" in error)) return false;
563
+ return error.timedOut === true;
564
+ }
565
+
566
+ // scripts/git/git-gh-check.ts
567
+ import { execa } from "execa";
568
+ var GH_NOT_INSTALLED_MSG = "gh CLI is not installed. Install it from https://cli.github.com/";
569
+ var gh_check = {};
570
+ async function run_gh_check() {
571
+ try {
572
+ await execa("gh", ["--version"]);
573
+ } catch {
574
+ delete gh_check.promise;
575
+ throw new Error(GH_NOT_INSTALLED_MSG);
576
+ }
577
+ }
578
+ async function check_gh_installed() {
579
+ gh_check.promise ??= run_gh_check();
580
+ await gh_check.promise;
581
+ }
582
+
583
+ // scripts/git/git-gh-failure.ts
584
+ import { z as z3 } from "zod";
585
+
586
+ // scripts/git/parse-json-array.ts
587
+ var MALFORMED_JSON = /* @__PURE__ */ Symbol("malformed-json");
588
+ function parse_json_loose(raw_json) {
589
+ try {
590
+ return JSON.parse(raw_json);
591
+ } catch (error) {
592
+ if (error instanceof SyntaxError) return MALFORMED_JSON;
593
+ throw error;
594
+ }
595
+ }
596
+ function parse_json_array_or_undefined(raw_json, element_schema) {
597
+ const value = parse_json_loose(raw_json);
598
+ if (value === MALFORMED_JSON || !Array.isArray(value)) return void 0;
599
+ return element_schema.array().parse(value);
600
+ }
601
+ function read_json_listing(raw_json, element_schema) {
602
+ try {
603
+ const rows = parse_json_array_or_undefined(raw_json, element_schema);
604
+ return rows === void 0 ? { kind: "unreadable" } : { kind: "read", rows };
605
+ } catch {
606
+ return { kind: "unexpected_shape" };
607
+ }
608
+ }
609
+ function parse_json_array_safe(raw_json, element_schema) {
610
+ const value = parse_json_loose(raw_json);
611
+ if (value === MALFORMED_JSON) return [];
612
+ return element_schema.array().parse(value);
613
+ }
614
+ function parse_json_object_safe(raw_json, schema) {
615
+ const value = parse_json_loose(raw_json);
616
+ if (value === MALFORMED_JSON) return void 0;
617
+ return schema.parse(value);
618
+ }
619
+ var parse_json = {
620
+ parse_json_array_safe,
621
+ parse_json_array_or_undefined,
622
+ parse_json_object_safe,
623
+ read_json_listing
624
+ };
625
+
626
+ // scripts/git/git-gh-failure.ts
627
+ var error_document_schema = z3.object({ status: z3.union([z3.string(), z3.number()]).optional() }).catch({});
628
+ var GH_FAILURE_FIELD = "gh_failure";
629
+ function has_gh_failure(error) {
630
+ return error instanceof Error && Object.hasOwn(error, GH_FAILURE_FIELD);
631
+ }
632
+ function parse_response_status(stdout) {
633
+ const document = parse_json.parse_json_object_safe(stdout, error_document_schema);
634
+ if (document?.status === void 0) return void 0;
635
+ const status = Number(document.status);
636
+ return Number.isSafeInteger(status) ? status : void 0;
637
+ }
638
+ function classify_stdout(stdout) {
639
+ return { status: parse_response_status(stdout) };
640
+ }
641
+ function attach(error, failure) {
642
+ Object.defineProperty(error, GH_FAILURE_FIELD, {
643
+ value: failure,
644
+ enumerable: false,
645
+ configurable: true
646
+ });
647
+ return error;
648
+ }
649
+ function failure_of(error) {
650
+ return has_gh_failure(error) ? error.gh_failure : void 0;
651
+ }
652
+ var gh_failure = { attach, classify_stdout, failure_of, parse_response_status };
653
+
654
+ // scripts/git/git-gh-exec.ts
655
+ var BODY_FROM_STDIN = "-";
656
+ var GH_REQUEST_TIMEOUT_MS = 6e4;
657
+ function to_timeout_option(timeout_ms) {
658
+ return { timeout: timeout_ms ?? GH_REQUEST_TIMEOUT_MS };
659
+ }
660
+ function direct_environment() {
661
+ const removed = agent_session_environment.removed_proxy_environment();
662
+ return Object.keys(removed).length > 0 ? { env: removed } : {};
663
+ }
664
+ function to_spawn_options(timeout_ms) {
665
+ return { ...to_timeout_option(timeout_ms), ...direct_environment() };
666
+ }
667
+ var GH_REQUEST_TIMEOUT_MESSAGE = "gh request timed out";
668
+ function has_stderr_field(error) {
669
+ return error instanceof Error && "stderr" in error && typeof error.stderr === "string";
670
+ }
671
+ function has_stdout_field(error) {
672
+ return error instanceof Error && "stdout" in error && typeof error.stdout === "string";
673
+ }
674
+ function to_timeout_prefix(error) {
675
+ return has_timed_out(error) ? `${GH_REQUEST_TIMEOUT_MESSAGE}: ` : "";
676
+ }
677
+ function to_error_message(error) {
678
+ return error instanceof Error ? error.message : String(error);
679
+ }
680
+ function to_gh_error(error) {
681
+ const stderr = has_stderr_field(error) ? error.stderr.trim() : "";
682
+ const stdout = has_stdout_field(error) ? error.stdout.trim() : "";
683
+ const summary = stderr.length > 0 ? stderr : to_error_message(error);
684
+ const detail = stdout.length > 0 ? `${summary}
685
+ ${stdout}` : summary;
686
+ return gh_failure.attach(
687
+ new Error(`${to_timeout_prefix(error)}${detail}`, { cause: error }),
688
+ gh_failure.classify_stdout(stdout)
689
+ );
690
+ }
691
+ async function exec_gh_command(arguments_, timeout_ms) {
692
+ await check_gh_installed();
693
+ try {
694
+ const { stdout } = await execa2("gh", arguments_, to_spawn_options(timeout_ms));
695
+ return stdout.trimEnd();
696
+ } catch (error) {
697
+ throw to_gh_error(error);
698
+ }
699
+ }
700
+ async function exec_gh_command_with_stdin(input) {
701
+ await check_gh_installed();
702
+ const options = { input: input.stdin_body, ...to_spawn_options(input.timeout_ms) };
703
+ try {
704
+ const { stdout } = await execa2("gh", input.args, options);
705
+ return stdout.trimEnd();
706
+ } catch (error) {
707
+ throw to_gh_error(error);
708
+ }
709
+ }
710
+ var STATUS_LINE_PATTERN = /^HTTP\/[\d.]+ (?<status>\d{3})\b/u;
711
+ function parse_status_line(output) {
712
+ const { status } = STATUS_LINE_PATTERN.exec(output)?.groups ?? {};
713
+ return status === void 0 ? void 0 : Number(status);
714
+ }
715
+ async function exec_gh_api_status(path5, timeout_ms) {
716
+ const options = to_spawn_options(timeout_ms);
717
+ try {
718
+ await check_gh_installed();
719
+ const { stdout } = await execa2("gh", ["api", "--include", "--silent", path5], options);
720
+ return parse_status_line(stdout);
721
+ } catch (error) {
722
+ return has_stdout_field(error) ? parse_status_line(error.stdout) : void 0;
723
+ }
724
+ }
725
+ var METHOD_FLAG = "--method";
726
+ var INPUT_FLAG = "--input";
727
+ var PAGINATE_FLAG = "--paginate";
728
+ var SLURP_FLAG = "--slurp";
729
+ var JQ_FLAG = "--jq";
730
+ function optional_flag(flag, value) {
731
+ return value === void 0 ? [] : [flag, value];
732
+ }
733
+ function to_gh_api_args(request) {
734
+ const body_args = request.body === void 0 ? [] : [INPUT_FLAG, BODY_FROM_STDIN];
735
+ const paginate_args = request.should_paginate === true ? [PAGINATE_FLAG] : [];
736
+ const slurp_args = request.should_slurp === true ? [SLURP_FLAG] : [];
737
+ return [
738
+ "api",
739
+ request.path,
740
+ ...optional_flag(METHOD_FLAG, request.method),
741
+ ...body_args,
742
+ ...paginate_args,
743
+ ...slurp_args,
744
+ ...optional_flag(JQ_FLAG, request.jq_filter)
745
+ ];
746
+ }
747
+ async function exec_gh_api(request) {
748
+ const args = to_gh_api_args(request);
749
+ if (request.body === void 0) return await exec_gh_command(args, request.timeout_ms);
750
+ return await exec_gh_command_with_stdin({
751
+ args,
752
+ stdin_body: request.body,
753
+ timeout_ms: request.timeout_ms
754
+ });
755
+ }
756
+ function exec_gh_api_sync(request) {
757
+ const body_option = request.body === void 0 ? {} : { input: request.body };
758
+ const options = { ...body_option, ...to_spawn_options(request.timeout_ms) };
759
+ try {
760
+ const { stdout } = execaSync("gh", to_gh_api_args(request), options);
761
+ return stdout.trimEnd();
762
+ } catch (error) {
763
+ throw to_gh_error(error);
764
+ }
765
+ }
766
+ var git_gh_exec = {
767
+ direct_environment,
768
+ exec_gh_command,
769
+ exec_gh_command_with_stdin,
770
+ exec_gh_api,
771
+ exec_gh_api_sync,
772
+ exec_gh_api_status,
773
+ parse_status_line
774
+ };
775
+
776
+ // scripts/version/version-remote.ts
777
+ import { execaSync as execaSync2 } from "execa";
778
+ var GH_FAILURE_FALLBACK = "gh api failed";
779
+ var TIMES_PAGE_SIZE = 100;
780
+ var TIMES_JQ = "[.[] | {(.name): .created_at}] | add";
781
+ function require_endpoint(versions_endpoint, package_name) {
782
+ if (versions_endpoint !== void 0 && versions_endpoint.trim() !== "") return versions_endpoint;
783
+ throw new Error(
784
+ `Could not derive a versions endpoint for ${package_name}; check its version-command config.`
785
+ );
786
+ }
787
+ function describe_failure(result) {
788
+ const stderr = result.stderr.trim();
789
+ if (stderr !== "") return stderr;
790
+ return result.shortMessage ?? GH_FAILURE_FALLBACK;
791
+ }
792
+ function fetch_latest_version(versions_endpoint, package_name) {
793
+ const endpoint = require_endpoint(versions_endpoint, package_name);
794
+ const result = execaSync2("gh", ["api", endpoint, "--jq", ".[0].name"], {
795
+ ...git_gh_exec.direct_environment(),
796
+ reject: false
797
+ });
798
+ if (result.exitCode === 0) return result.stdout.trim();
799
+ throw new Error(
800
+ `Failed to fetch latest version for ${package_name} via ${endpoint}: ${describe_failure(result)}`
801
+ );
802
+ }
803
+ function with_page_size(endpoint, page_size) {
804
+ const separator = endpoint.indexOf("?");
805
+ const path_part = separator === -1 ? endpoint : endpoint.slice(0, separator);
806
+ const query = new URLSearchParams(separator === -1 ? "" : endpoint.slice(separator + 1));
807
+ query.set("per_page", String(page_size));
808
+ return `${path_part}?${query.toString()}`;
809
+ }
810
+ function fetch_release_times(versions_endpoint) {
811
+ if (versions_endpoint === void 0 || versions_endpoint.trim() === "") return void 0;
812
+ const endpoint = with_page_size(versions_endpoint, TIMES_PAGE_SIZE);
813
+ const result = execaSync2("gh", ["api", endpoint, "--jq", TIMES_JQ], {
814
+ ...git_gh_exec.direct_environment(),
815
+ reject: false
816
+ });
817
+ if (result.exitCode !== 0) return void 0;
818
+ const parsed = release_age.release_times_schema.safeParse(safe_json_parse(result.stdout));
819
+ return parsed.success ? parsed.data : void 0;
820
+ }
821
+
822
+ // scripts/version/version-targets.ts
823
+ import { existsSync as existsSync3, readFileSync as readFileSync4 } from "node:fs";
824
+ import path4 from "node:path";
825
+ import { execaSync as execaSync3 } from "execa";
826
+ var NODE_MODULES2 = "node_modules";
827
+ var PACKAGE_JSON3 = "package.json";
828
+ function build_pnpm_ls_arguments(package_name) {
829
+ return ["ls", "-g", "--json", package_name];
830
+ }
831
+ function parse_global_version(stdout, package_name) {
832
+ const parsed = pnpm_ls_global_schema.safeParse(safe_json_parse(stdout));
833
+ if (!parsed.success) return void 0;
834
+ return parsed.data[0]?.dependencies?.[package_name]?.version;
835
+ }
836
+ function parse_project_version(raw) {
837
+ if (raw === void 0) return void 0;
838
+ const parsed = package_version_schema.safeParse(safe_json_parse(raw));
839
+ return parsed.success ? parsed.data.version : void 0;
840
+ }
841
+ function read_global_version(package_name) {
842
+ const result = execaSync3("pnpm", build_pnpm_ls_arguments(package_name), { reject: false });
843
+ return parse_global_version(result.stdout, package_name);
844
+ }
845
+ function project_package_path(cwd, package_name) {
846
+ return path4.join(cwd, NODE_MODULES2, package_name, PACKAGE_JSON3);
847
+ }
848
+ function read_project_version(cwd, package_name) {
849
+ const package_path = project_package_path(cwd, package_name);
850
+ const raw = existsSync3(package_path) ? readFileSync4(package_path, "utf8") : void 0;
851
+ return parse_project_version(raw);
852
+ }
853
+ function read_workspace_version(cwd) {
854
+ const package_path = path4.join(cwd, PACKAGE_JSON3);
855
+ const raw = existsSync3(package_path) ? readFileSync4(package_path, "utf8") : void 0;
856
+ return parse_project_version(raw);
857
+ }
858
+ var version_targets = {
859
+ build_pnpm_ls_arguments,
860
+ parse_global_version,
861
+ parse_project_version,
862
+ read_global_version,
863
+ read_project_version,
864
+ project_package_path,
865
+ read_workspace_version,
866
+ // The manifest's filename. Exported rather than re-declared in each of `josh release`'s two
867
+ // halves (joshuafolkken/kit#1169): the module that already owns "where the project's manifest is"
868
+ // is where the name belongs.
869
+ PACKAGE_JSON: PACKAGE_JSON3
870
+ };
871
+
872
+ // scripts/version/version-commands.ts
873
+ var FAILURE_EXIT_CODE = 1;
874
+ var ALREADY_UP_TO_DATE = "Already up to date";
875
+ var NO_QUARANTINE_MINUTES2 = 0;
876
+ function read_release_hold(versions_endpoint, latest, versions) {
877
+ if (versions.every((version) => version === void 0 || version === latest)) return void 0;
878
+ const minimum_age_minutes = release_age.read_nearest_minimum_release_age(process.cwd());
879
+ if (minimum_age_minutes <= NO_QUARANTINE_MINUTES2) return void 0;
880
+ const installable = release_hold.resolve_installable(
881
+ fetch_release_times(versions_endpoint),
882
+ latest,
883
+ minimum_age_minutes,
884
+ Date.now()
885
+ );
886
+ if (installable === void 0) return void 0;
887
+ return { installable, minimum_age_minutes };
888
+ }
889
+ function read_snapshot(config) {
890
+ return {
891
+ global_version: version_targets.read_global_version(config.package_name),
892
+ project_version: version_targets.read_project_version(process.cwd(), config.package_name),
893
+ latest: fetch_latest_version(config.versions_endpoint, config.package_name)
894
+ };
895
+ }
896
+ function read_running_binary(self_directory) {
897
+ if (self_directory === void 0) return void 0;
898
+ const version = running_binary.read_running_version(self_directory);
899
+ if (version === void 0) return void 0;
900
+ return { version, path: running_binary.running_package_directory(self_directory) };
901
+ }
902
+ function build_extras(config) {
903
+ const extras = {};
904
+ const running = read_running_binary(config.self_directory);
905
+ if (running !== void 0) extras.running = running;
906
+ const warning = config.resolve_warning?.();
907
+ if (warning !== void 0) extras.warning = warning;
908
+ return extras;
909
+ }
910
+ function build_upstream_effective(upstream, context) {
911
+ const { resolve_effective_version, resolve_global_upgrade_command } = upstream;
912
+ if (resolve_effective_version === void 0) return void 0;
913
+ if (resolve_global_upgrade_command === void 0) return void 0;
914
+ return {
915
+ version: resolve_effective_version(context),
916
+ upgrade_command: resolve_global_upgrade_command(context)
917
+ };
918
+ }
919
+ function build_installed_versions(report, config, snapshot) {
920
+ return /* @__PURE__ */ new Map([
921
+ [config.package_name, snapshot.global_version],
922
+ [report.config.package_name, report.effective?.version]
923
+ ]);
924
+ }
925
+ function attach_upstream_effective(report, config, snapshot, upstream) {
926
+ const context = { latest: snapshot.latest, upstream_latest: report.latest };
927
+ const effective = build_upstream_effective(upstream, context);
928
+ if (effective === void 0) return;
929
+ report.effective = effective;
930
+ if (upstream.is_global_upgrade_command_pinned !== true) return;
931
+ report.installed_versions = build_installed_versions(report, config, snapshot);
932
+ }
933
+ function read_upstream_report(upstream, config, snapshot, is_hold_wanted) {
934
+ const latest = fetch_latest_version(upstream.versions_endpoint, upstream.package_name);
935
+ const project_version = version_targets.read_project_version(process.cwd(), upstream.package_name);
936
+ const report = { config: upstream, project_version, latest };
937
+ attach_upstream_effective(report, config, snapshot, upstream);
938
+ const hold = is_hold_wanted ? read_release_hold(upstream.versions_endpoint, latest, [report.effective?.version]) : void 0;
939
+ if (hold !== void 0) report.hold = hold;
940
+ return report;
941
+ }
942
+ function read_upstream_reports(config, snapshot, is_hold_wanted = false) {
943
+ return config.upstreams.map(
944
+ (upstream) => read_upstream_report(upstream, config, snapshot, is_hold_wanted)
945
+ );
946
+ }
947
+ function run_check(config) {
948
+ const snapshot = read_snapshot(config);
949
+ const upstream_reports = read_upstream_reports(config, snapshot, true);
950
+ console.info(
951
+ version_check_logic.format_dual_version_output(
952
+ snapshot,
953
+ config,
954
+ build_extras(config),
955
+ upstream_reports
956
+ )
957
+ );
958
+ }
959
+ function run_upgrade_command(command) {
960
+ const result = execaSync4("sh", ["-c", command], { stdio: "inherit", reject: false });
961
+ return result.exitCode ?? FAILURE_EXIT_CODE;
962
+ }
963
+ function run_all_upgrade_commands(commands) {
964
+ let exit_code = 0;
965
+ for (const command of commands) {
966
+ const code = run_upgrade_command(command);
967
+ if (code !== 0) exit_code = code;
968
+ }
969
+ return exit_code;
970
+ }
971
+ function build_idle_message(reports) {
972
+ const notes = version_check_logic.build_upstream_upgrade_notes(reports);
973
+ if (notes.length === 0) return ALREADY_UP_TO_DATE;
974
+ return notes.join("\n");
975
+ }
976
+ function describe_effective_outcome(upstream, report, snapshot) {
977
+ const { resolve_effective_version } = upstream;
978
+ if (resolve_effective_version === void 0 || report === void 0) return [];
979
+ if (version_check_logic.build_effective_upgrade_commands(report).length === 0) return [];
980
+ const after = resolve_effective_version({
981
+ latest: snapshot.latest,
982
+ upstream_latest: report.latest
983
+ });
984
+ if (after === report.latest) return [];
985
+ return [version_check_logic.format_effective_outcome(report, after)];
986
+ }
987
+ function report_effective_outcomes(config, snapshot, reports) {
988
+ const lines = config.upstreams.flatMap(
989
+ (upstream, index) => describe_effective_outcome(upstream, reports[index], snapshot)
990
+ );
991
+ if (lines.length > 0) console.info(lines.join("\n"));
992
+ }
993
+ function run_upgrade(config) {
994
+ const snapshot = read_snapshot(config);
995
+ const reports = read_upstream_reports(config, snapshot);
996
+ const commands = version_check_logic.unique_upgrade_commands([
997
+ ...version_check_logic.build_dual_upgrade_commands(snapshot, config),
998
+ ...version_check_logic.build_upstream_upgrade_commands(reports)
999
+ ]);
1000
+ if (commands.length === 0) {
1001
+ console.info(build_idle_message(reports));
1002
+ return 0;
1003
+ }
1004
+ const exit_code = run_all_upgrade_commands(commands);
1005
+ report_effective_outcomes(config, snapshot, reports);
1006
+ return exit_code;
1007
+ }
1008
+ var version_commands = {
1009
+ read_snapshot,
1010
+ read_upstream_reports,
1011
+ build_extras,
1012
+ run_check,
1013
+ run_upgrade,
1014
+ run_upgrade_command,
1015
+ run_all_upgrade_commands
1016
+ };
1017
+ export {
1018
+ KIT_PACKAGE_NAME,
1019
+ create_version_command_config,
1020
+ derive_versions_endpoint,
1021
+ kit_package_descriptor,
1022
+ resolve_effective_upstream_version,
1023
+ version_commands
1024
+ };