@lannguyensi/harness 0.63.0 → 1.0.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 (702) hide show
  1. package/CHANGELOG.md +90 -0
  2. package/README.md +46 -42
  3. package/dist/cli/add/index.js +17 -21
  4. package/dist/cli/add/index.js.map +1 -1
  5. package/dist/cli/adopt/derive.d.ts +2 -2
  6. package/dist/cli/adopt/derive.js +2 -19
  7. package/dist/cli/adopt/derive.js.map +1 -1
  8. package/dist/cli/adopt/index.d.ts +1 -1
  9. package/dist/cli/adopt/index.js +1 -12
  10. package/dist/cli/adopt/index.js.map +1 -1
  11. package/dist/cli/apply/apply.d.ts +20 -35
  12. package/dist/cli/apply/apply.js +61 -136
  13. package/dist/cli/apply/apply.js.map +1 -1
  14. package/dist/cli/apply/generate-codex-config.js +10 -58
  15. package/dist/cli/apply/generate-codex-config.js.map +1 -1
  16. package/dist/cli/apply/generate-memory-index.js +1 -2
  17. package/dist/cli/apply/generate-memory-index.js.map +1 -1
  18. package/dist/cli/apply/generate-opencode-config.d.ts +2 -10
  19. package/dist/cli/apply/generate-opencode-config.js +74 -113
  20. package/dist/cli/apply/generate-opencode-config.js.map +1 -1
  21. package/dist/cli/apply/generate-settings.d.ts +11 -64
  22. package/dist/cli/apply/generate-settings.js +27 -132
  23. package/dist/cli/apply/generate-settings.js.map +1 -1
  24. package/dist/cli/apply/index.d.ts +1 -1
  25. package/dist/cli/apply/index.js +1 -1
  26. package/dist/cli/apply/index.js.map +1 -1
  27. package/dist/cli/apply/install-codex-config.d.ts +153 -1
  28. package/dist/cli/apply/install-codex-config.js +445 -70
  29. package/dist/cli/apply/install-codex-config.js.map +1 -1
  30. package/dist/cli/apply/next-steps.d.ts +7 -0
  31. package/dist/cli/apply/next-steps.js +13 -1
  32. package/dist/cli/apply/next-steps.js.map +1 -1
  33. package/dist/cli/bounded-stdin.d.ts +0 -23
  34. package/dist/cli/bounded-stdin.js +2 -49
  35. package/dist/cli/bounded-stdin.js.map +1 -1
  36. package/dist/cli/describe.d.ts +1 -1
  37. package/dist/cli/describe.js +0 -3
  38. package/dist/cli/describe.js.map +1 -1
  39. package/dist/cli/diff/engine.d.ts +0 -11
  40. package/dist/cli/diff/engine.js +1 -17
  41. package/dist/cli/diff/engine.js.map +1 -1
  42. package/dist/cli/diff/index.js +14 -25
  43. package/dist/cli/diff/index.js.map +1 -1
  44. package/dist/cli/doctor/claude-mcp.d.ts +4 -19
  45. package/dist/cli/doctor/claude-mcp.js +11 -22
  46. package/dist/cli/doctor/claude-mcp.js.map +1 -1
  47. package/dist/cli/doctor/codex.d.ts +12 -14
  48. package/dist/cli/doctor/codex.js +31 -144
  49. package/dist/cli/doctor/codex.js.map +1 -1
  50. package/dist/cli/doctor/format.js +23 -338
  51. package/dist/cli/doctor/format.js.map +1 -1
  52. package/dist/cli/doctor/hook-liveness.d.ts +56 -0
  53. package/dist/cli/doctor/hook-liveness.js +455 -0
  54. package/dist/cli/doctor/hook-liveness.js.map +1 -0
  55. package/dist/cli/doctor/index.d.ts +13 -87
  56. package/dist/cli/doctor/index.js +57 -705
  57. package/dist/cli/doctor/index.js.map +1 -1
  58. package/dist/cli/doctor/opencode.d.ts +2 -1
  59. package/dist/cli/doctor/opencode.js.map +1 -1
  60. package/dist/cli/doctor/types.d.ts +21 -378
  61. package/dist/cli/doctor/types.js.map +1 -1
  62. package/dist/cli/drain-stdio.d.ts +31 -0
  63. package/dist/cli/drain-stdio.js +76 -0
  64. package/dist/cli/drain-stdio.js.map +1 -0
  65. package/dist/cli/export.d.ts +3 -1
  66. package/dist/cli/export.js +7 -16
  67. package/dist/cli/export.js.map +1 -1
  68. package/dist/cli/gate/codex-disable.d.ts +29 -0
  69. package/dist/cli/gate/codex-disable.js +195 -0
  70. package/dist/cli/gate/codex-disable.js.map +1 -0
  71. package/dist/cli/gate/codex-enable.d.ts +41 -0
  72. package/dist/cli/gate/codex-enable.js +127 -0
  73. package/dist/cli/gate/codex-enable.js.map +1 -0
  74. package/dist/cli/gate/codex-snapshot.d.ts +208 -0
  75. package/dist/cli/gate/codex-snapshot.js +402 -0
  76. package/dist/cli/gate/codex-snapshot.js.map +1 -0
  77. package/dist/cli/gate/disable.d.ts +9 -0
  78. package/dist/cli/gate/disable.js +263 -28
  79. package/dist/cli/gate/disable.js.map +1 -1
  80. package/dist/cli/gate/enable.d.ts +26 -6
  81. package/dist/cli/gate/enable.js +152 -80
  82. package/dist/cli/gate/enable.js.map +1 -1
  83. package/dist/cli/gate/link-chain.d.ts +53 -0
  84. package/dist/cli/gate/link-chain.js +122 -0
  85. package/dist/cli/gate/link-chain.js.map +1 -0
  86. package/dist/cli/gate/snapshot.d.ts +289 -12
  87. package/dist/cli/gate/snapshot.js +481 -22
  88. package/dist/cli/gate/snapshot.js.map +1 -1
  89. package/dist/cli/index.d.ts +0 -9
  90. package/dist/cli/index.js +15 -2607
  91. package/dist/cli/index.js.map +1 -1
  92. package/dist/cli/init/composer.d.ts +3 -6
  93. package/dist/cli/init/composer.js +6 -370
  94. package/dist/cli/init/composer.js.map +1 -1
  95. package/dist/cli/init/dependencies.d.ts +1 -2
  96. package/dist/cli/init/dependencies.js +4 -80
  97. package/dist/cli/init/dependencies.js.map +1 -1
  98. package/dist/cli/init/detect.js +5 -4
  99. package/dist/cli/init/detect.js.map +1 -1
  100. package/dist/cli/init/interactive.d.ts +1 -23
  101. package/dist/cli/init/interactive.js +33 -247
  102. package/dist/cli/init/interactive.js.map +1 -1
  103. package/dist/cli/init/profiles.d.ts +2 -2
  104. package/dist/cli/init/profiles.js +51 -243
  105. package/dist/cli/init/profiles.js.map +1 -1
  106. package/dist/cli/init/templates.d.ts +2 -37
  107. package/dist/cli/init/templates.js +25 -1237
  108. package/dist/cli/init/templates.js.map +1 -1
  109. package/dist/cli/list.d.ts +1 -1
  110. package/dist/cli/list.js +1 -38
  111. package/dist/cli/list.js.map +1 -1
  112. package/dist/cli/loader.d.ts +15 -1
  113. package/dist/cli/loader.js +56 -39
  114. package/dist/cli/loader.js.map +1 -1
  115. package/dist/cli/main.js +7 -2
  116. package/dist/cli/main.js.map +1 -1
  117. package/dist/cli/migrate-home/index.js +2 -2
  118. package/dist/cli/migrate-home/index.js.map +1 -1
  119. package/dist/cli/pack/add.js +1 -1
  120. package/dist/cli/pack/add.js.map +1 -1
  121. package/dist/cli/pack/hook-bootstrap.d.ts +5 -164
  122. package/dist/cli/pack/hook-bootstrap.js +15 -291
  123. package/dist/cli/pack/hook-bootstrap.js.map +1 -1
  124. package/dist/cli/pack/hook-branch-protection.d.ts +28 -21
  125. package/dist/cli/pack/hook-branch-protection.js +365 -340
  126. package/dist/cli/pack/hook-branch-protection.js.map +1 -1
  127. package/dist/cli/pack/index.d.ts +0 -1
  128. package/dist/cli/pack/index.js +0 -1
  129. package/dist/cli/pack/index.js.map +1 -1
  130. package/dist/cli/pack/list.js +1 -6
  131. package/dist/cli/pack/list.js.map +1 -1
  132. package/dist/cli/pack/mutate.d.ts +7 -9
  133. package/dist/cli/pack/mutate.js +6 -9
  134. package/dist/cli/pack/mutate.js.map +1 -1
  135. package/dist/cli/pack/reseed.d.ts +2 -2
  136. package/dist/cli/pack/reseed.js +16 -22
  137. package/dist/cli/pack/reseed.js.map +1 -1
  138. package/dist/cli/register-gate-group.d.ts +5 -0
  139. package/dist/cli/register-gate-group.js +348 -0
  140. package/dist/cli/register-gate-group.js.map +1 -0
  141. package/dist/cli/register-inspect-group.d.ts +6 -0
  142. package/dist/cli/register-inspect-group.js +189 -0
  143. package/dist/cli/register-inspect-group.js.map +1 -0
  144. package/dist/cli/register-operator-lifecycle.d.ts +5 -0
  145. package/dist/cli/register-operator-lifecycle.js +20 -0
  146. package/dist/cli/register-operator-lifecycle.js.map +1 -0
  147. package/dist/cli/register-pack-group.d.ts +5 -0
  148. package/dist/cli/register-pack-group.js +134 -0
  149. package/dist/cli/register-pack-group.js.map +1 -0
  150. package/dist/cli/register-setup-group.d.ts +5 -0
  151. package/dist/cli/register-setup-group.js +495 -0
  152. package/dist/cli/register-setup-group.js.map +1 -0
  153. package/dist/cli/remove/index.d.ts +0 -14
  154. package/dist/cli/remove/index.js +2 -115
  155. package/dist/cli/remove/index.js.map +1 -1
  156. package/dist/cli/remove/mutate.d.ts +0 -2
  157. package/dist/cli/remove/mutate.js +1 -19
  158. package/dist/cli/remove/mutate.js.map +1 -1
  159. package/dist/cli/remove/register.d.ts +5 -0
  160. package/dist/cli/remove/register.js +25 -0
  161. package/dist/cli/remove/register.js.map +1 -0
  162. package/dist/cli/shell-quote.d.ts +7 -0
  163. package/dist/cli/shell-quote.js +17 -0
  164. package/dist/cli/shell-quote.js.map +1 -0
  165. package/dist/cli/uninstall/index.d.ts +4 -2
  166. package/dist/cli/uninstall/index.js +15 -7
  167. package/dist/cli/uninstall/index.js.map +1 -1
  168. package/dist/cli/uninstall/register.d.ts +5 -0
  169. package/dist/cli/uninstall/register.js +171 -0
  170. package/dist/cli/uninstall/register.js.map +1 -0
  171. package/dist/cli/uninstall/snapshot.d.ts +15 -0
  172. package/dist/cli/uninstall/snapshot.js +38 -0
  173. package/dist/cli/uninstall/snapshot.js.map +1 -1
  174. package/dist/cli/validate/checks.d.ts +0 -77
  175. package/dist/cli/validate/checks.js +3 -1049
  176. package/dist/cli/validate/checks.js.map +1 -1
  177. package/dist/cli/validate/index.js +19 -15
  178. package/dist/cli/validate/index.js.map +1 -1
  179. package/dist/index.d.ts +0 -3
  180. package/dist/index.js +0 -3
  181. package/dist/index.js.map +1 -1
  182. package/dist/io/claude-mcp.d.ts +1 -1
  183. package/dist/io/claude-mcp.js +27 -14
  184. package/dist/io/claude-mcp.js.map +1 -1
  185. package/dist/io/harness-lock.js +2 -2
  186. package/dist/io/harness-lock.js.map +1 -1
  187. package/dist/io/lock.d.ts +0 -26
  188. package/dist/io/lock.js +10 -27
  189. package/dist/io/lock.js.map +1 -1
  190. package/dist/io/merge-settings.js +6 -4
  191. package/dist/io/merge-settings.js.map +1 -1
  192. package/dist/io/project-name.d.ts +22 -39
  193. package/dist/io/project-name.js +25 -42
  194. package/dist/io/project-name.js.map +1 -1
  195. package/dist/io/read-regular-file.d.ts +103 -40
  196. package/dist/io/read-regular-file.js +196 -35
  197. package/dist/io/read-regular-file.js.map +1 -1
  198. package/dist/io/restart-hints.js +3 -6
  199. package/dist/io/restart-hints.js.map +1 -1
  200. package/dist/io/version-compare.d.ts +1 -3
  201. package/dist/io/version-compare.js +1 -3
  202. package/dist/io/version-compare.js.map +1 -1
  203. package/dist/io/write-regular-file.d.ts +30 -0
  204. package/dist/io/write-regular-file.js +85 -0
  205. package/dist/io/write-regular-file.js.map +1 -0
  206. package/dist/overrides/index.d.ts +1 -0
  207. package/dist/overrides/index.js +1 -0
  208. package/dist/overrides/index.js.map +1 -1
  209. package/dist/overrides/merge-layers.d.ts +43 -0
  210. package/dist/overrides/merge-layers.js +76 -0
  211. package/dist/overrides/merge-layers.js.map +1 -0
  212. package/dist/overrides/merge.d.ts +16 -0
  213. package/dist/overrides/merge.js +21 -8
  214. package/dist/overrides/merge.js.map +1 -1
  215. package/dist/policy-packs/builtin/branch-protection-runtime.d.ts +4 -69
  216. package/dist/policy-packs/builtin/branch-protection-runtime.js +12 -84
  217. package/dist/policy-packs/builtin/branch-protection-runtime.js.map +1 -1
  218. package/dist/policy-packs/builtin/branch-protection.d.ts +7 -30
  219. package/dist/policy-packs/builtin/branch-protection.js +56 -89
  220. package/dist/policy-packs/builtin/branch-protection.js.map +1 -1
  221. package/dist/policy-packs/config-check.d.ts +7 -5
  222. package/dist/policy-packs/config-check.js +2 -2
  223. package/dist/policy-packs/config-check.js.map +1 -1
  224. package/dist/policy-packs/expand.d.ts +1 -3
  225. package/dist/policy-packs/expand.js +5 -42
  226. package/dist/policy-packs/expand.js.map +1 -1
  227. package/dist/policy-packs/index.d.ts +3 -3
  228. package/dist/policy-packs/index.js +2 -2
  229. package/dist/policy-packs/index.js.map +1 -1
  230. package/dist/policy-packs/registry.d.ts +9 -38
  231. package/dist/policy-packs/registry.js +5 -65
  232. package/dist/policy-packs/registry.js.map +1 -1
  233. package/dist/policy-packs/runtime.d.ts +0 -4
  234. package/dist/policy-packs/runtime.js +9 -22
  235. package/dist/policy-packs/runtime.js.map +1 -1
  236. package/dist/policy-packs/types.d.ts +0 -19
  237. package/dist/policy-packs/ux-compare.d.ts +1 -11
  238. package/dist/policy-packs/ux-compare.js +6 -42
  239. package/dist/policy-packs/ux-compare.js.map +1 -1
  240. package/dist/policy-packs/ux-drift-check.d.ts +5 -5
  241. package/dist/policy-packs/ux-drift-check.js +17 -22
  242. package/dist/policy-packs/ux-drift-check.js.map +1 -1
  243. package/dist/policy-packs/version-check.d.ts +5 -26
  244. package/dist/policy-packs/version-check.js +19 -74
  245. package/dist/policy-packs/version-check.js.map +1 -1
  246. package/dist/probes/memory.d.ts +1 -1
  247. package/dist/probes/memory.js +1 -1
  248. package/dist/probes/memory.js.map +1 -1
  249. package/dist/runtime/agent-facing.d.ts +9 -0
  250. package/dist/runtime/agent-facing.js +28 -14
  251. package/dist/runtime/agent-facing.js.map +1 -1
  252. package/dist/runtime/bounded-text.d.ts +15 -0
  253. package/dist/runtime/bounded-text.js +27 -0
  254. package/dist/runtime/bounded-text.js.map +1 -0
  255. package/dist/runtime/git-branch.d.ts +125 -0
  256. package/dist/runtime/git-branch.js +381 -0
  257. package/dist/runtime/git-branch.js.map +1 -0
  258. package/dist/runtime/hermetic-spawn-guard.d.ts +2 -2
  259. package/dist/runtime/hermetic-spawn-guard.js +24 -34
  260. package/dist/runtime/hermetic-spawn-guard.js.map +1 -1
  261. package/dist/runtime/home-dir.js +3 -2
  262. package/dist/runtime/home-dir.js.map +1 -1
  263. package/dist/runtime/tool-name-aliases.d.ts +0 -6
  264. package/dist/runtime/tool-name-aliases.js +5 -18
  265. package/dist/runtime/tool-name-aliases.js.map +1 -1
  266. package/dist/schema/grounding.d.ts +7 -54
  267. package/dist/schema/grounding.js +10 -12
  268. package/dist/schema/grounding.js.map +1 -1
  269. package/dist/schema/hooks.d.ts +39 -136
  270. package/dist/schema/hooks.js +3 -6
  271. package/dist/schema/hooks.js.map +1 -1
  272. package/dist/schema/index.d.ts +114 -3828
  273. package/dist/schema/index.js +41 -80
  274. package/dist/schema/index.js.map +1 -1
  275. package/dist/schema/memory.d.ts +54 -131
  276. package/dist/schema/memory.js +2 -2
  277. package/dist/schema/memory.js.map +1 -1
  278. package/dist/schema/policy-packs.d.ts +3 -45
  279. package/dist/schema/policy-packs.js +7 -13
  280. package/dist/schema/policy-packs.js.map +1 -1
  281. package/dist/schema/policy-ux.d.ts +7 -0
  282. package/dist/schema/policy-ux.js +18 -0
  283. package/dist/schema/policy-ux.js.map +1 -0
  284. package/dist/schema/removed-keys.d.ts +185 -0
  285. package/dist/schema/removed-keys.js +531 -0
  286. package/dist/schema/removed-keys.js.map +1 -0
  287. package/dist/schema/tools.d.ts +30 -268
  288. package/dist/schema/tools.js +4 -4
  289. package/dist/schema/tools.js.map +1 -1
  290. package/package.json +5 -16
  291. package/dist/cli/approve/branch-protection.d.ts +0 -69
  292. package/dist/cli/approve/branch-protection.js +0 -144
  293. package/dist/cli/approve/branch-protection.js.map +0 -1
  294. package/dist/cli/approve/risk.d.ts +0 -112
  295. package/dist/cli/approve/risk.js +0 -197
  296. package/dist/cli/approve/risk.js.map +0 -1
  297. package/dist/cli/approve/stdin-report.d.ts +0 -57
  298. package/dist/cli/approve/stdin-report.js +0 -145
  299. package/dist/cli/approve/stdin-report.js.map +0 -1
  300. package/dist/cli/approve/understanding.d.ts +0 -410
  301. package/dist/cli/approve/understanding.js +0 -996
  302. package/dist/cli/approve/understanding.js.map +0 -1
  303. package/dist/cli/audit.d.ts +0 -80
  304. package/dist/cli/audit.js +0 -252
  305. package/dist/cli/audit.js.map +0 -1
  306. package/dist/cli/delegate/index.d.ts +0 -76
  307. package/dist/cli/delegate/index.js +0 -443
  308. package/dist/cli/delegate/index.js.map +0 -1
  309. package/dist/cli/doctor/auto-approve-mode.d.ts +0 -37
  310. package/dist/cli/doctor/auto-approve-mode.js +0 -80
  311. package/dist/cli/doctor/auto-approve-mode.js.map +0 -1
  312. package/dist/cli/doctor/bypass-without-auto-approve.d.ts +0 -38
  313. package/dist/cli/doctor/bypass-without-auto-approve.js +0 -95
  314. package/dist/cli/doctor/bypass-without-auto-approve.js.map +0 -1
  315. package/dist/cli/doctor/codex-config-drift.d.ts +0 -28
  316. package/dist/cli/doctor/codex-config-drift.js +0 -240
  317. package/dist/cli/doctor/codex-config-drift.js.map +0 -1
  318. package/dist/cli/doctor/rogue-ledger.d.ts +0 -53
  319. package/dist/cli/doctor/rogue-ledger.js +0 -153
  320. package/dist/cli/doctor/rogue-ledger.js.map +0 -1
  321. package/dist/cli/doctor/session-start-preflight-setup-version.d.ts +0 -83
  322. package/dist/cli/doctor/session-start-preflight-setup-version.js +0 -114
  323. package/dist/cli/doctor/session-start-preflight-setup-version.js.map +0 -1
  324. package/dist/cli/doctor/settings-drift.d.ts +0 -25
  325. package/dist/cli/doctor/settings-drift.js +0 -213
  326. package/dist/cli/doctor/settings-drift.js.map +0 -1
  327. package/dist/cli/doctor/toolchain-parity.d.ts +0 -63
  328. package/dist/cli/doctor/toolchain-parity.js +0 -154
  329. package/dist/cli/doctor/toolchain-parity.js.map +0 -1
  330. package/dist/cli/doctor/ug-auto-approvals.d.ts +0 -40
  331. package/dist/cli/doctor/ug-auto-approvals.js +0 -91
  332. package/dist/cli/doctor/ug-auto-approvals.js.map +0 -1
  333. package/dist/cli/doctor/ug-delegations.d.ts +0 -26
  334. package/dist/cli/doctor/ug-delegations.js +0 -121
  335. package/dist/cli/doctor/ug-delegations.js.map +0 -1
  336. package/dist/cli/doctor/ug-inflight.d.ts +0 -35
  337. package/dist/cli/doctor/ug-inflight.js +0 -57
  338. package/dist/cli/doctor/ug-inflight.js.map +0 -1
  339. package/dist/cli/doctor/understanding-mode-env.d.ts +0 -51
  340. package/dist/cli/doctor/understanding-mode-env.js +0 -98
  341. package/dist/cli/doctor/understanding-mode-env.js.map +0 -1
  342. package/dist/cli/dry-run.d.ts +0 -46
  343. package/dist/cli/dry-run.js +0 -250
  344. package/dist/cli/dry-run.js.map +0 -1
  345. package/dist/cli/event-input.d.ts +0 -28
  346. package/dist/cli/event-input.js +0 -73
  347. package/dist/cli/event-input.js.map +0 -1
  348. package/dist/cli/explain-action.d.ts +0 -20
  349. package/dist/cli/explain-action.js +0 -27
  350. package/dist/cli/explain-action.js.map +0 -1
  351. package/dist/cli/explain-policy.d.ts +0 -135
  352. package/dist/cli/explain-policy.js +0 -266
  353. package/dist/cli/explain-policy.js.map +0 -1
  354. package/dist/cli/explain.d.ts +0 -31
  355. package/dist/cli/explain.js +0 -159
  356. package/dist/cli/explain.js.map +0 -1
  357. package/dist/cli/gc/index.d.ts +0 -63
  358. package/dist/cli/gc/index.js +0 -566
  359. package/dist/cli/gc/index.js.map +0 -1
  360. package/dist/cli/pack/approve-escape.d.ts +0 -19
  361. package/dist/cli/pack/approve-escape.js +0 -190
  362. package/dist/cli/pack/approve-escape.js.map +0 -1
  363. package/dist/cli/pack/auto-approve-path.d.ts +0 -146
  364. package/dist/cli/pack/auto-approve-path.js +0 -462
  365. package/dist/cli/pack/auto-approve-path.js.map +0 -1
  366. package/dist/cli/pack/hook-codex-post-tool-use.d.ts +0 -25
  367. package/dist/cli/pack/hook-codex-post-tool-use.js +0 -160
  368. package/dist/cli/pack/hook-codex-post-tool-use.js.map +0 -1
  369. package/dist/cli/pack/hook-codex-pre-tool-use.d.ts +0 -48
  370. package/dist/cli/pack/hook-codex-pre-tool-use.js +0 -474
  371. package/dist/cli/pack/hook-codex-pre-tool-use.js.map +0 -1
  372. package/dist/cli/pack/hook-codex-stop.d.ts +0 -35
  373. package/dist/cli/pack/hook-codex-stop.js +0 -329
  374. package/dist/cli/pack/hook-codex-stop.js.map +0 -1
  375. package/dist/cli/pack/hook-codex-user-prompt-submit.d.ts +0 -24
  376. package/dist/cli/pack/hook-codex-user-prompt-submit.js +0 -93
  377. package/dist/cli/pack/hook-codex-user-prompt-submit.js.map +0 -1
  378. package/dist/cli/pack/hook-post-merge-gate-record.d.ts +0 -37
  379. package/dist/cli/pack/hook-post-merge-gate-record.js +0 -190
  380. package/dist/cli/pack/hook-post-merge-gate-record.js.map +0 -1
  381. package/dist/cli/pack/hook-post-merge-gate.d.ts +0 -34
  382. package/dist/cli/pack/hook-post-merge-gate.js +0 -277
  383. package/dist/cli/pack/hook-post-merge-gate.js.map +0 -1
  384. package/dist/cli/pack/hook-post-tool-use.d.ts +0 -45
  385. package/dist/cli/pack/hook-post-tool-use.js +0 -137
  386. package/dist/cli/pack/hook-post-tool-use.js.map +0 -1
  387. package/dist/cli/pack/hook-pre-tool-use.d.ts +0 -92
  388. package/dist/cli/pack/hook-pre-tool-use.js +0 -1328
  389. package/dist/cli/pack/hook-pre-tool-use.js.map +0 -1
  390. package/dist/cli/pack/hook-runtime-reality.d.ts +0 -63
  391. package/dist/cli/pack/hook-runtime-reality.js +0 -210
  392. package/dist/cli/pack/hook-runtime-reality.js.map +0 -1
  393. package/dist/cli/pack/hook-solution-acceptance-writeguard.d.ts +0 -32
  394. package/dist/cli/pack/hook-solution-acceptance-writeguard.js +0 -337
  395. package/dist/cli/pack/hook-solution-acceptance-writeguard.js.map +0 -1
  396. package/dist/cli/pack/hook-solution-acceptance.d.ts +0 -157
  397. package/dist/cli/pack/hook-solution-acceptance.js +0 -530
  398. package/dist/cli/pack/hook-solution-acceptance.js.map +0 -1
  399. package/dist/cli/pack/hook-stay-in-scope.d.ts +0 -37
  400. package/dist/cli/pack/hook-stay-in-scope.js +0 -128
  401. package/dist/cli/pack/hook-stay-in-scope.js.map +0 -1
  402. package/dist/cli/pack/hook-subagent-start.d.ts +0 -23
  403. package/dist/cli/pack/hook-subagent-start.js +0 -88
  404. package/dist/cli/pack/hook-subagent-start.js.map +0 -1
  405. package/dist/cli/pack/hook-subagent-stop.d.ts +0 -19
  406. package/dist/cli/pack/hook-subagent-stop.js +0 -41
  407. package/dist/cli/pack/hook-subagent-stop.js.map +0 -1
  408. package/dist/cli/pack/hook-track-active-claim.d.ts +0 -27
  409. package/dist/cli/pack/hook-track-active-claim.js +0 -275
  410. package/dist/cli/pack/hook-track-active-claim.js.map +0 -1
  411. package/dist/cli/pack/transcript-report-scan.d.ts +0 -71
  412. package/dist/cli/pack/transcript-report-scan.js +0 -359
  413. package/dist/cli/pack/transcript-report-scan.js.map +0 -1
  414. package/dist/cli/pack/understanding-report-schema-hint.d.ts +0 -26
  415. package/dist/cli/pack/understanding-report-schema-hint.js +0 -120
  416. package/dist/cli/pack/understanding-report-schema-hint.js.map +0 -1
  417. package/dist/cli/pack/upgrade.d.ts +0 -32
  418. package/dist/cli/pack/upgrade.js +0 -273
  419. package/dist/cli/pack/upgrade.js.map +0 -1
  420. package/dist/cli/pause/index.d.ts +0 -113
  421. package/dist/cli/pause/index.js +0 -251
  422. package/dist/cli/pause/index.js.map +0 -1
  423. package/dist/cli/pause-check.d.ts +0 -22
  424. package/dist/cli/pause-check.js +0 -54
  425. package/dist/cli/pause-check.js.map +0 -1
  426. package/dist/cli/policy/intercept.d.ts +0 -233
  427. package/dist/cli/policy/intercept.js +0 -1020
  428. package/dist/cli/policy/intercept.js.map +0 -1
  429. package/dist/cli/policy/risk-envelope-enrichment.d.ts +0 -40
  430. package/dist/cli/policy/risk-envelope-enrichment.js +0 -108
  431. package/dist/cli/policy/risk-envelope-enrichment.js.map +0 -1
  432. package/dist/cli/record/index.d.ts +0 -81
  433. package/dist/cli/record/index.js +0 -348
  434. package/dist/cli/record/index.js.map +0 -1
  435. package/dist/cli/resolve-env.d.ts +0 -32
  436. package/dist/cli/resolve-env.js +0 -47
  437. package/dist/cli/resolve-env.js.map +0 -1
  438. package/dist/cli/session-export/index.d.ts +0 -46
  439. package/dist/cli/session-export/index.js +0 -169
  440. package/dist/cli/session-export/index.js.map +0 -1
  441. package/dist/cli/session-export/redact.d.ts +0 -22
  442. package/dist/cli/session-export/redact.js +0 -47
  443. package/dist/cli/session-export/redact.js.map +0 -1
  444. package/dist/cli/session-export/transcript.d.ts +0 -24
  445. package/dist/cli/session-export/transcript.js +0 -164
  446. package/dist/cli/session-export/transcript.js.map +0 -1
  447. package/dist/cli/session-start/branch-check.d.ts +0 -18
  448. package/dist/cli/session-start/branch-check.js +0 -140
  449. package/dist/cli/session-start/branch-check.js.map +0 -1
  450. package/dist/cli/session-start/index.d.ts +0 -121
  451. package/dist/cli/session-start/index.js +0 -591
  452. package/dist/cli/session-start/index.js.map +0 -1
  453. package/dist/cli/session-start/shared-options.d.ts +0 -103
  454. package/dist/cli/session-start/shared-options.js +0 -107
  455. package/dist/cli/session-start/shared-options.js.map +0 -1
  456. package/dist/cli/session-start/stale-base-check.d.ts +0 -46
  457. package/dist/cli/session-start/stale-base-check.js +0 -352
  458. package/dist/cli/session-start/stale-base-check.js.map +0 -1
  459. package/dist/cli/session-start/toolchain-parity.d.ts +0 -267
  460. package/dist/cli/session-start/toolchain-parity.js +0 -797
  461. package/dist/cli/session-start/toolchain-parity.js.map +0 -1
  462. package/dist/cli/smoke/assertions.d.ts +0 -46
  463. package/dist/cli/smoke/assertions.js +0 -170
  464. package/dist/cli/smoke/assertions.js.map +0 -1
  465. package/dist/cli/smoke/index.d.ts +0 -76
  466. package/dist/cli/smoke/index.js +0 -245
  467. package/dist/cli/smoke/index.js.map +0 -1
  468. package/dist/cli/smoke/runner.d.ts +0 -55
  469. package/dist/cli/smoke/runner.js +0 -134
  470. package/dist/cli/smoke/runner.js.map +0 -1
  471. package/dist/cli/smoke/stream-parser.d.ts +0 -65
  472. package/dist/cli/smoke/stream-parser.js +0 -115
  473. package/dist/cli/smoke/stream-parser.js.map +0 -1
  474. package/dist/cli/test-risk.d.ts +0 -26
  475. package/dist/cli/test-risk.js +0 -34
  476. package/dist/cli/test-risk.js.map +0 -1
  477. package/dist/io/display-path.d.ts +0 -11
  478. package/dist/io/display-path.js +0 -29
  479. package/dist/io/display-path.js.map +0 -1
  480. package/dist/io/duration.d.ts +0 -5
  481. package/dist/io/duration.js +0 -50
  482. package/dist/io/duration.js.map +0 -1
  483. package/dist/io/extract.d.ts +0 -79
  484. package/dist/io/extract.js +0 -226
  485. package/dist/io/extract.js.map +0 -1
  486. package/dist/io/ledger-record.d.ts +0 -83
  487. package/dist/io/ledger-record.js +0 -301
  488. package/dist/io/ledger-record.js.map +0 -1
  489. package/dist/io/read-json-dir-entries.d.ts +0 -36
  490. package/dist/io/read-json-dir-entries.js +0 -48
  491. package/dist/io/read-json-dir-entries.js.map +0 -1
  492. package/dist/io/safe-json-parse.d.ts +0 -5
  493. package/dist/io/safe-json-parse.js +0 -21
  494. package/dist/io/safe-json-parse.js.map +0 -1
  495. package/dist/policies/index.d.ts +0 -5
  496. package/dist/policies/index.js +0 -6
  497. package/dist/policies/index.js.map +0 -1
  498. package/dist/policies/ledger-client.d.ts +0 -113
  499. package/dist/policies/ledger-client.js +0 -500
  500. package/dist/policies/ledger-client.js.map +0 -1
  501. package/dist/policies/producers.d.ts +0 -12
  502. package/dist/policies/producers.js +0 -61
  503. package/dist/policies/producers.js.map +0 -1
  504. package/dist/policies/requires.d.ts +0 -75
  505. package/dist/policies/requires.js +0 -240
  506. package/dist/policies/requires.js.map +0 -1
  507. package/dist/policies/timestamp.d.ts +0 -14
  508. package/dist/policies/timestamp.js +0 -36
  509. package/dist/policies/timestamp.js.map +0 -1
  510. package/dist/policy-packs/builtin/permission-profiles.d.ts +0 -11
  511. package/dist/policy-packs/builtin/permission-profiles.js +0 -74
  512. package/dist/policy-packs/builtin/permission-profiles.js.map +0 -1
  513. package/dist/policy-packs/builtin/post-merge-gate-runtime.d.ts +0 -286
  514. package/dist/policy-packs/builtin/post-merge-gate-runtime.js +0 -397
  515. package/dist/policy-packs/builtin/post-merge-gate-runtime.js.map +0 -1
  516. package/dist/policy-packs/builtin/post-merge-gate.d.ts +0 -56
  517. package/dist/policy-packs/builtin/post-merge-gate.js +0 -347
  518. package/dist/policy-packs/builtin/post-merge-gate.js.map +0 -1
  519. package/dist/policy-packs/builtin/solution-acceptance-reconnect.d.ts +0 -50
  520. package/dist/policy-packs/builtin/solution-acceptance-reconnect.js +0 -151
  521. package/dist/policy-packs/builtin/solution-acceptance-reconnect.js.map +0 -1
  522. package/dist/policy-packs/builtin/solution-acceptance-runtime.d.ts +0 -323
  523. package/dist/policy-packs/builtin/solution-acceptance-runtime.js +0 -672
  524. package/dist/policy-packs/builtin/solution-acceptance-runtime.js.map +0 -1
  525. package/dist/policy-packs/builtin/solution-acceptance.d.ts +0 -45
  526. package/dist/policy-packs/builtin/solution-acceptance.js +0 -226
  527. package/dist/policy-packs/builtin/solution-acceptance.js.map +0 -1
  528. package/dist/policy-packs/builtin/understanding-before-execution/active-claim.d.ts +0 -25
  529. package/dist/policy-packs/builtin/understanding-before-execution/active-claim.js +0 -94
  530. package/dist/policy-packs/builtin/understanding-before-execution/active-claim.js.map +0 -1
  531. package/dist/policy-packs/builtin/understanding-before-execution/auto-approve-default.d.ts +0 -35
  532. package/dist/policy-packs/builtin/understanding-before-execution/auto-approve-default.js +0 -86
  533. package/dist/policy-packs/builtin/understanding-before-execution/auto-approve-default.js.map +0 -1
  534. package/dist/policy-packs/builtin/understanding-before-execution/auto-approve.d.ts +0 -210
  535. package/dist/policy-packs/builtin/understanding-before-execution/auto-approve.js +0 -361
  536. package/dist/policy-packs/builtin/understanding-before-execution/auto-approve.js.map +0 -1
  537. package/dist/policy-packs/builtin/understanding-before-execution/delegation-markers.d.ts +0 -304
  538. package/dist/policy-packs/builtin/understanding-before-execution/delegation-markers.js +0 -734
  539. package/dist/policy-packs/builtin/understanding-before-execution/delegation-markers.js.map +0 -1
  540. package/dist/policy-packs/builtin/understanding-before-execution/expiry-reason.d.ts +0 -36
  541. package/dist/policy-packs/builtin/understanding-before-execution/expiry-reason.js +0 -73
  542. package/dist/policy-packs/builtin/understanding-before-execution/expiry-reason.js.map +0 -1
  543. package/dist/policy-packs/builtin/understanding-before-execution/index.d.ts +0 -19
  544. package/dist/policy-packs/builtin/understanding-before-execution/index.js +0 -83
  545. package/dist/policy-packs/builtin/understanding-before-execution/index.js.map +0 -1
  546. package/dist/policy-packs/builtin/understanding-before-execution/inflight-records.d.ts +0 -135
  547. package/dist/policy-packs/builtin/understanding-before-execution/inflight-records.js +0 -618
  548. package/dist/policy-packs/builtin/understanding-before-execution/inflight-records.js.map +0 -1
  549. package/dist/policy-packs/builtin/understanding-before-execution/ledger.d.ts +0 -25
  550. package/dist/policy-packs/builtin/understanding-before-execution/ledger.js +0 -56
  551. package/dist/policy-packs/builtin/understanding-before-execution/ledger.js.map +0 -1
  552. package/dist/policy-packs/builtin/understanding-before-execution/lifecycle.d.ts +0 -20
  553. package/dist/policy-packs/builtin/understanding-before-execution/lifecycle.js +0 -93
  554. package/dist/policy-packs/builtin/understanding-before-execution/lifecycle.js.map +0 -1
  555. package/dist/policy-packs/builtin/understanding-before-execution/markers.d.ts +0 -126
  556. package/dist/policy-packs/builtin/understanding-before-execution/markers.js +0 -245
  557. package/dist/policy-packs/builtin/understanding-before-execution/markers.js.map +0 -1
  558. package/dist/policy-packs/builtin/understanding-before-execution/measured-permission-modes.d.ts +0 -29
  559. package/dist/policy-packs/builtin/understanding-before-execution/measured-permission-modes.js +0 -82
  560. package/dist/policy-packs/builtin/understanding-before-execution/measured-permission-modes.js.map +0 -1
  561. package/dist/policy-packs/builtin/understanding-before-execution/permission-mode-observations.d.ts +0 -71
  562. package/dist/policy-packs/builtin/understanding-before-execution/permission-mode-observations.js +0 -175
  563. package/dist/policy-packs/builtin/understanding-before-execution/permission-mode-observations.js.map +0 -1
  564. package/dist/policy-packs/builtin/understanding-before-execution/persisted-reports.d.ts +0 -620
  565. package/dist/policy-packs/builtin/understanding-before-execution/persisted-reports.js +0 -1047
  566. package/dist/policy-packs/builtin/understanding-before-execution/persisted-reports.js.map +0 -1
  567. package/dist/policy-packs/builtin/understanding-before-execution/post-tool-use-boundary.d.ts +0 -128
  568. package/dist/policy-packs/builtin/understanding-before-execution/post-tool-use-boundary.js +0 -213
  569. package/dist/policy-packs/builtin/understanding-before-execution/post-tool-use-boundary.js.map +0 -1
  570. package/dist/policy-packs/builtin/understanding-before-execution/stay-in-scope-config.d.ts +0 -129
  571. package/dist/policy-packs/builtin/understanding-before-execution/stay-in-scope-config.js +0 -166
  572. package/dist/policy-packs/builtin/understanding-before-execution/stay-in-scope-config.js.map +0 -1
  573. package/dist/policy-packs/builtin/understanding-before-execution/task-markers.d.ts +0 -164
  574. package/dist/policy-packs/builtin/understanding-before-execution/task-markers.js +0 -275
  575. package/dist/policy-packs/builtin/understanding-before-execution/task-markers.js.map +0 -1
  576. package/dist/policy-packs/builtin/understanding-before-execution-runtime.d.ts +0 -1
  577. package/dist/policy-packs/builtin/understanding-before-execution-runtime.js +0 -10
  578. package/dist/policy-packs/builtin/understanding-before-execution-runtime.js.map +0 -1
  579. package/dist/policy-packs/builtin/understanding-before-execution.d.ts +0 -526
  580. package/dist/policy-packs/builtin/understanding-before-execution.js +0 -1074
  581. package/dist/policy-packs/builtin/understanding-before-execution.js.map +0 -1
  582. package/dist/policy-packs/permission-translator.d.ts +0 -9
  583. package/dist/policy-packs/permission-translator.js +0 -76
  584. package/dist/policy-packs/permission-translator.js.map +0 -1
  585. package/dist/runtime/action-envelope.d.ts +0 -64
  586. package/dist/runtime/action-envelope.js +0 -46
  587. package/dist/runtime/action-envelope.js.map +0 -1
  588. package/dist/runtime/approval-signing.d.ts +0 -111
  589. package/dist/runtime/approval-signing.js +0 -384
  590. package/dist/runtime/approval-signing.js.map +0 -1
  591. package/dist/runtime/bash-match-facts.d.ts +0 -60
  592. package/dist/runtime/bash-match-facts.js +0 -196
  593. package/dist/runtime/bash-match-facts.js.map +0 -1
  594. package/dist/runtime/bash-match-registry.d.ts +0 -112
  595. package/dist/runtime/bash-match-registry.js +0 -406
  596. package/dist/runtime/bash-match-registry.js.map +0 -1
  597. package/dist/runtime/bash-prefix-parse.d.ts +0 -31
  598. package/dist/runtime/bash-prefix-parse.js +0 -576
  599. package/dist/runtime/bash-prefix-parse.js.map +0 -1
  600. package/dist/runtime/command-normalize.d.ts +0 -658
  601. package/dist/runtime/command-normalize.js +0 -2410
  602. package/dist/runtime/command-normalize.js.map +0 -1
  603. package/dist/runtime/deletion-target-resolve.d.ts +0 -28
  604. package/dist/runtime/deletion-target-resolve.js +0 -1078
  605. package/dist/runtime/deletion-target-resolve.js.map +0 -1
  606. package/dist/runtime/destructive-shell-floor.d.ts +0 -19
  607. package/dist/runtime/destructive-shell-floor.js +0 -611
  608. package/dist/runtime/destructive-shell-floor.js.map +0 -1
  609. package/dist/runtime/environment-resolver.d.ts +0 -36
  610. package/dist/runtime/environment-resolver.js +0 -138
  611. package/dist/runtime/environment-resolver.js.map +0 -1
  612. package/dist/runtime/git-context.d.ts +0 -201
  613. package/dist/runtime/git-context.js +0 -422
  614. package/dist/runtime/git-context.js.map +0 -1
  615. package/dist/runtime/index.d.ts +0 -12
  616. package/dist/runtime/index.js +0 -13
  617. package/dist/runtime/index.js.map +0 -1
  618. package/dist/runtime/intercept.d.ts +0 -494
  619. package/dist/runtime/intercept.js +0 -1313
  620. package/dist/runtime/intercept.js.map +0 -1
  621. package/dist/runtime/kube-context.d.ts +0 -16
  622. package/dist/runtime/kube-context.js +0 -63
  623. package/dist/runtime/kube-context.js.map +0 -1
  624. package/dist/runtime/kubectl-target-parse.d.ts +0 -31
  625. package/dist/runtime/kubectl-target-parse.js +0 -249
  626. package/dist/runtime/kubectl-target-parse.js.map +0 -1
  627. package/dist/runtime/ledger-add.d.ts +0 -16
  628. package/dist/runtime/ledger-add.js +0 -150
  629. package/dist/runtime/ledger-add.js.map +0 -1
  630. package/dist/runtime/ledger-writer.d.ts +0 -27
  631. package/dist/runtime/ledger-writer.js +0 -46
  632. package/dist/runtime/ledger-writer.js.map +0 -1
  633. package/dist/runtime/pause-sentinel.d.ts +0 -60
  634. package/dist/runtime/pause-sentinel.js +0 -156
  635. package/dist/runtime/pause-sentinel.js.map +0 -1
  636. package/dist/runtime/pending-approval.d.ts +0 -23
  637. package/dist/runtime/pending-approval.js +0 -67
  638. package/dist/runtime/pending-approval.js.map +0 -1
  639. package/dist/runtime/read-only-bash.d.ts +0 -141
  640. package/dist/runtime/read-only-bash.js +0 -2204
  641. package/dist/runtime/read-only-bash.js.map +0 -1
  642. package/dist/runtime/recovery-git-commit.d.ts +0 -22
  643. package/dist/runtime/recovery-git-commit.js +0 -284
  644. package/dist/runtime/recovery-git-commit.js.map +0 -1
  645. package/dist/runtime/reject-malformed-session-id.d.ts +0 -8
  646. package/dist/runtime/reject-malformed-session-id.js +0 -16
  647. package/dist/runtime/reject-malformed-session-id.js.map +0 -1
  648. package/dist/runtime/risk-classifier.d.ts +0 -38
  649. package/dist/runtime/risk-classifier.js +0 -311
  650. package/dist/runtime/risk-classifier.js.map +0 -1
  651. package/dist/runtime/session-id.d.ts +0 -113
  652. package/dist/runtime/session-id.js +0 -193
  653. package/dist/runtime/session-id.js.map +0 -1
  654. package/dist/runtime/shell-word.d.ts +0 -62
  655. package/dist/runtime/shell-word.js +0 -410
  656. package/dist/runtime/shell-word.js.map +0 -1
  657. package/dist/runtime/task-providers/agent-tasks.d.ts +0 -103
  658. package/dist/runtime/task-providers/agent-tasks.js +0 -245
  659. package/dist/runtime/task-providers/agent-tasks.js.map +0 -1
  660. package/dist/runtime/when-eval.d.ts +0 -62
  661. package/dist/runtime/when-eval.js +0 -212
  662. package/dist/runtime/when-eval.js.map +0 -1
  663. package/dist/runtime/workflow-policies.d.ts +0 -207
  664. package/dist/runtime/workflow-policies.js +0 -596
  665. package/dist/runtime/workflow-policies.js.map +0 -1
  666. package/dist/schema/audit.d.ts +0 -71
  667. package/dist/schema/audit.js +0 -32
  668. package/dist/schema/audit.js.map +0 -1
  669. package/dist/schema/doctor.d.ts +0 -25
  670. package/dist/schema/doctor.js +0 -23
  671. package/dist/schema/doctor.js.map +0 -1
  672. package/dist/schema/environments.d.ts +0 -215
  673. package/dist/schema/environments.js +0 -101
  674. package/dist/schema/environments.js.map +0 -1
  675. package/dist/schema/extract.d.ts +0 -9
  676. package/dist/schema/extract.js +0 -86
  677. package/dist/schema/extract.js.map +0 -1
  678. package/dist/schema/permission-profiles.d.ts +0 -2292
  679. package/dist/schema/permission-profiles.js +0 -60
  680. package/dist/schema/permission-profiles.js.map +0 -1
  681. package/dist/schema/policies.d.ts +0 -974
  682. package/dist/schema/policies.js +0 -298
  683. package/dist/schema/policies.js.map +0 -1
  684. package/dist/schema/requires.d.ts +0 -131
  685. package/dist/schema/requires.js +0 -88
  686. package/dist/schema/requires.js.map +0 -1
  687. package/dist/schema/risk.d.ts +0 -144
  688. package/dist/schema/risk.js +0 -194
  689. package/dist/schema/risk.js.map +0 -1
  690. package/dist/schema/session-start-preflight.d.ts +0 -10
  691. package/dist/schema/session-start-preflight.js +0 -106
  692. package/dist/schema/session-start-preflight.js.map +0 -1
  693. package/dist/schema/stale-base-check.d.ts +0 -18
  694. package/dist/schema/stale-base-check.js +0 -37
  695. package/dist/schema/stale-base-check.js.map +0 -1
  696. package/dist/schema/toolchain-parity.d.ts +0 -21
  697. package/dist/schema/toolchain-parity.js +0 -48
  698. package/dist/schema/toolchain-parity.js.map +0 -1
  699. package/dist/schema/workflows.d.ts +0 -519
  700. package/dist/schema/workflows.js +0 -81
  701. package/dist/schema/workflows.js.map +0 -1
  702. package/scripts/runtime-reality-docker-probe.mjs +0 -71
@@ -1,576 +0,0 @@
1
- // Risk Gate resolver input — Bash command-prefix parser.
2
- //
3
- // Three normal POSIX shell idioms slip past the production environment
4
- // resolver when only `process.env` and the hook's starting cwd (and, for
5
- // the branch, its current `.git/HEAD`) are inspected:
6
- //
7
- // DATABASE_URL=postgres://prod terraform destroy # inline env
8
- // cd /repos/prod-infra && terraform destroy # working-dir hop
9
- // git switch main && rm -rf node_modules && ... # branch hop
10
- //
11
- // The hook intercept sees Claude Code's process env and starting cwd, so
12
- // `env_var_patterns` and `branch_patterns` miss all three signals and the
13
- // gate silently treats a prod mutation as non-prod.
14
- //
15
- // This parser extracts the leading idioms from a Bash command string so
16
- // the resolver layer can merge them into its inputs before
17
- // `environments.resolvers[]` runs. Three POSIX forms are supported in v1
18
- // (kept narrow on purpose, see follow-up scope in the originating tasks):
19
- //
20
- // 1. Inline env: leading `\w+=value` tokens. A value is read as one
21
- // shell word (see `readWord`): unquoted text, backslash escapes,
22
- // single-quoted parts (literal) and double-quoted parts (literal, no
23
- // $ interpolation in v1) glued together up to unescaped whitespace,
24
- // so `VAR="say \"hi\""` is `say "hi"` and `VAR='it'\''s'` is `it's`
25
- // (task b093911d). NOT covered, pinned by tests: ANSI-C `$'...'`
26
- // (kept as the raw text, not decoded), `$VAR` / `$(...)` (kept as
27
- // literal text), and `;` / `&` inside an UNQUOTED value (they do not
28
- // end it).
29
- // 2. cd prefix: a single leading `cd <path> [&&|;] ...`. The path is
30
- // read as the same kind of shell word, ended at an unquoted `;` or
31
- // `&`. No `pushd`, no subshell `(cd X && ...)`, no `bash -c`.
32
- // 3. git branch switch: a single leading `git [-C <path>]
33
- // (switch|checkout) <branch> [&&|;] ...` (task 341e024b). The
34
- // `<branch>` must be a plain, literal token, unquoted OR quoted
35
- // (single- or double-quoted, surrounding quotes stripped — same
36
- // quoted-literal handling `cd`'s path token gets, task 341e024b fix
37
- // round 1: a quoted `"main"`/`'main'` used to read as the literal
38
- // 6-character string `"main"` including the quote characters,
39
- // which never matches a `branch_patterns` entry like `main` and so
40
- // silently defeated the gate). A `-`-prefixed first argument (`-`,
41
- // `--`, `-b`, ...; this is how `git checkout -- <path>`'s
42
- // file-restore form is excluded) or an unquoted `$VAR`/`${VAR}`
43
- // shell variable is left unresolved (`branchTarget: null`) rather
44
- // than guessed; a token that STARTS with a quote and carries an
45
- // unescaped `$` in a double-quoted part (`"release/$V"`) is treated
46
- // the same way (not guessed) since double quotes DO interpolate in
47
- // real bash and this parser does not evaluate the shell
48
- // environment. A token that does NOT start with a quote but carries
49
- // such a `$` mid-word (`release/"$V"`) is read raw, quotes included,
50
- // exactly as before the escape-aware reader: bash expands it, so the
51
- // branch is unknown, but the raw word still matches a glob like
52
- // `release/*` and the clauses behind it (a later `cd`, the kubectl
53
- // remainder) stay reachable. A single-quoted token is always taken
54
- // literally, since single quotes never interpolate. The optional
55
- // `-C <path>` is recognized so it does not block the match, but its
56
- // value is discarded: the ONLY thing this idiom feeds the resolver
57
- // is the branch name being switched TO (see
58
- // `src/cli/policy/intercept.ts`'s merge, which is upgrade-only —
59
- // unlike the `cd` merge below, a resolved branch target here can
60
- // only push the resolved environment to something MORE dangerous,
61
- // never less).
62
- //
63
- // LIMIT, stated so a maintainer does not over-trust this idiom's
64
- // coverage: only the FIRST leading branch switch is captured. A
65
- // chained `git switch dev && git switch main && rm ...` resolves
66
- // `branchTarget` as `dev`, never `main` — multi-switch parsing
67
- // (walking past the first `&&` to find a SECOND switch) is
68
- // deliberately not built; it would widen the parser's surface
69
- // toward the false-positive class task dbc6d303 already measured
70
- // (branch-shaped tokens picked up from further into a command that
71
- // is not actually a chained branch hop).
72
- //
73
- // The clauses may appear in any order relative to each other (`cd /x &&
74
- // VAR=v cmd`, `VAR=v cd /x && cmd`, `cd /x && git switch main && cmd`,
75
- // ...); the parser walks up to two passes before giving up.
76
- //
77
- // On a syntactically broken prefix (unterminated quote, missing `&&`
78
- // after `cd <path>` / a switch-or-checkout branch) the parser falls
79
- // through cleanly: the malformed prefix is not consumed, the
80
- // resolver-side fallback to process env / hook cwd holds. There are no
81
- // thrown errors from this module.
82
- //
83
- // ESCAPES VS FALL-THROUGH (task b093911d): for a gate that SEARCHES for
84
- // production indicators, falling through is not the safe direction, a
85
- // dropped `cd` target or env value hides the very signal being looked
86
- // for. So a quoted word is decoded the way bash reads it instead of
87
- // being abandoned when it contains a backslash. Two places keep the OLD
88
- // reading on purpose: a word whose quote only an escaped quote could
89
- // close (`VAR="abc\" cd /x && y`, an unterminated string for bash), where
90
- // the first matching quote ends the word, and a branch word that does not
91
- // start with a quote but has a `$` in a double-quoted part (form 3).
92
- //
93
- // ACCEPTANCE RULE (task b093911d): a reader that changes word boundaries
94
- // cannot promise "nothing extracted before is lost", so this change is
95
- // held to a signal-level rule instead, measured against the pre-change
96
- // parser: (i) no production signal (env value, branch, cd target,
97
- // kubectl remainder) that the old parser saw and this one does not, on a
98
- // named high-risk shape set (plain, quoted and escaped env values and cd
99
- // paths, literal, quoted and `release/"$V"` branches followed by a cd or
100
- // kubectl, `__proto__=`, the `'\''` idiom, `\"` in double quotes) and on
101
- // a replay of real agent commands; (ii) fewer missed signals than the old
102
- // parser on fixed-seed generated corpora with bash as referee, for env,
103
- // branch and cd from a non-prod cwd; (iii) every remaining new miss
104
- // belongs to a named residual class whose plain twin the old parser
105
- // already misses; (iv) the cd downgrades from a prod cwd are reported with
106
- // numbers. What was measured against that rule is in the CHANGELOG entry
107
- // and the pull request; the cd-target arms of
108
- // `scripts/measure-bash-prefix-parse.mjs` show no lost honest target
109
- // against master and the shipped release (11 of 17 arms prove nothing).
110
- // Known residuals, not covered. The old parser already gets the plain
111
- // twin of each of the first four wrong, so they are follow-up work for
112
- // the prefix walk; the last two are shapes outside the high-risk set,
113
- // pinned by tests:
114
- // - OPERATOR SWALLOWED BY AN ENV WORD: an inline env word that does not
115
- // start with a quote swallows unquoted `;`, `&`, `|` and `||` (the
116
- // plain `A=x|| cd /t && y` always has; an escape-led or mid-quote word
117
- // now does too, kept so `V=\"; W=/tmp cmd` still yields `W` and so a
118
- // clause bash runs after a short circuit is still reached). So a `cd`
119
- // or assignment behind the operator is read as a leading one: a
120
- // phantom `cd` bash never runs (`A=a\ b|| cd /t && y`), or a later
121
- // backgrounded assignment that overrides the value bash keeps
122
- // (`D=a"b c"; D=dev&T` reads `dev&T`, plain twin `D=x; D=dev&T`);
123
- // - PLAIN PATH ACROSS `|`: a plain `cd` path ends at whitespace, `;` or
124
- // `&` only, so `cd /srv/p|rod; T` reads `/srv/p|rod` where bash runs
125
- // `cd /srv/p` in a pipeline;
126
- // - FIRST CD ONLY, AND-LIST BACKGROUNDED: only the first leading `cd` is
127
- // read (a later `cd` wins in bash), and a `cd` in an and-list that a
128
- // later `&` backgrounds is read although bash runs it in a subshell;
129
- // - WORD FOLLOWED BY MORE WORDS: a cd or branch word with no `&&` / `;`
130
- // right behind it yields no clause, which now also covers an escaped
131
- // `;` inside the word (`git switch release/1.2\; cd dev && T` passes
132
- // `release/1.2;`, `cd`, `dev` to git), plain twin
133
- // `git switch release/1 checkout main && T`;
134
- // - a `cd` path or branch word that carries a quote or an escape and is
135
- // ended at an unquoted `|`, `<`, `>`, `(` or `)` (`cd /srv/p|ro"d"`)
136
- // rejects its clause and stops the prefix walk;
137
- // - ANSI-C `$'...'` and `$VAR` / `$(...)` are kept as raw text, so a
138
- // value glued to an unset variable (`D='o'$d`) reads `o$d`.
139
- // Because this reader now reads more quoted and escaped `cd` paths, the
140
- // first three classes also produce more cd DOWNGRADES from a prod cwd
141
- // than the old parser did (a non-prod `cd` that bash does not end in);
142
- // that trade is measured and accepted in the pull request.
143
- //
144
- // MEASUREMENT RULE (task 47297478): any claim about this parser's
145
- // CD-TARGET extraction versus another build (lost or gained `cdTarget`
146
- // values) must come from scripts/measure-bash-prefix-parse.mjs, the
147
- // per-arm-gated corpus with real bash as referee. Three consecutive
148
- // ad-hoc corpora in the b093911d run reported "0 lost" while being
149
- // structurally unable to report a loss; that tool's self-test rebuilds
150
- // exactly that failure and demands the gate catch it. The tool does NOT
151
- // measure `inlineEnv` or `branchTarget` extraction — claims about those
152
- // have no instrument yet and need their own measurement.
153
- /**
154
- * Parse leading inline-env and `cd <path>` idioms from a Bash command
155
- * string. Returns an empty `inlineEnv` and `cdTarget:null` when neither
156
- * idiom matches. Never throws.
157
- */
158
- export function parseBashPrefix(command) {
159
- if (typeof command !== "string" || command.length === 0) {
160
- return { inlineEnv: newEnvMap(), cdTarget: null, branchTarget: null, remainderStart: 0 };
161
- }
162
- const inlineEnv = newEnvMap();
163
- let cdTarget = null;
164
- let branchTarget = null;
165
- let cursor = 0;
166
- // Two passes catch e.g. `cd /x && VAR=v cmd`, `VAR=v cd /x && cmd`, and
167
- // `cd /x && git switch main && cmd` (the last resolves fully within a
168
- // single pass — cd then switch are tried back to back below — the
169
- // second pass just confirms nothing more is left to consume). A third
170
- // pass would only fire on a redundant prefix; bail to keep this
171
- // bounded.
172
- for (let pass = 0; pass < 2; pass++) {
173
- const before = cursor;
174
- cursor = consumeInlineEnv(command, cursor, inlineEnv);
175
- if (cdTarget === null) {
176
- const cd = consumeLeadingCd(command, cursor);
177
- if (cd !== null) {
178
- cdTarget = cd.path;
179
- cursor = cd.next;
180
- }
181
- }
182
- if (branchTarget === null) {
183
- const sw = consumeLeadingGitSwitch(command, cursor);
184
- if (sw !== null) {
185
- branchTarget = sw.branch;
186
- cursor = sw.next;
187
- }
188
- }
189
- if (cursor === before)
190
- break;
191
- }
192
- return { inlineEnv, cdTarget, branchTarget, remainderStart: cursor };
193
- }
194
- const WS = /\s/;
195
- const VAR_START = /[A-Za-z_]/;
196
- const VAR_CONT = /[A-Za-z0-9_]/;
197
- /**
198
- * The `inlineEnv` map. A null-prototype object, so an assignment to a
199
- * name that exists on `Object.prototype` is kept instead of lost:
200
- * `into["__proto__"] = value` on a plain `{}` runs the prototype
201
- * setter, which ignores a string, so `__proto__=/prod cd /x && ...`
202
- * used to drop the assignment without a trace. The same shape also
203
- * means a lookup of a name that was never assigned (`constructor`,
204
- * `toString`) reads as `undefined` instead of an inherited function.
205
- * Spreading it into a plain object (what the resolver does) creates
206
- * own data properties, `__proto__` included.
207
- */
208
- function newEnvMap() {
209
- return Object.create(null);
210
- }
211
- /** Unquoted, unescaped characters that end a word (see `readWord` for where the old reading is kept instead). */
212
- const WORD_STOPS = ";&|<>()";
213
- /** Extra word terminators of a plain inline env value (none) and of a plain `cd` path / branch token. */
214
- const ENV_PLAIN_STOPS = "";
215
- const PATH_PLAIN_STOPS = ";&";
216
- /**
217
- * Read one shell word starting at `start`, the way bash does: a run of
218
- * unquoted text, backslash escapes, single-quoted parts and double-quoted
219
- * parts, glued together until the first unquoted, unescaped whitespace
220
- * (task b093911d). `'it'\''s fine'` is therefore ONE word (`it's fine`),
221
- * and so is `"say \"hi\""`.
222
- *
223
- * - Outside quotes `\x` is the literal `x`; a backslash-newline pair
224
- * vanishes (line continuation); a backslash that ends the string is a
225
- * literal backslash (bash does the same for `bash -c 'VAR=a\'`).
226
- * - In single quotes nothing is special, a backslash included.
227
- * - In double quotes a backslash escapes only `"`, `\`, `$`, `` ` `` and
228
- * a newline; before any other character it stays a literal backslash.
229
- * `$VAR` / `$(...)` are NOT evaluated: they stay literal text (v1).
230
- * - An unquoted `$'...'` (ANSI-C quoting) is NOT decoded: the raw text
231
- * including its `$'` and `'` is kept, so the value is no worse than
232
- * before (explicitly not covered).
233
- *
234
- * Pre-existing behaviour that is kept to limit what the new reader can
235
- * lose (bash itself ends a word at every unquoted shell metacharacter;
236
- * this is not a no-loss guarantee, see the module doc's residuals):
237
- * - a word with no quote and no backslash in it is read exactly as
238
- * before (`readWordLegacy`): an inline env value ends at whitespace
239
- * only, so it swallows an unquoted `;`, `&`, `|`, ...; a `cd` path or
240
- * branch token (`plainStops` = `;&`) ends at whitespace or `;` / `&`;
241
- * - an inline env word that carries an escape or a mid-word quote but
242
- * does not START with a quote (`swallowOps`) keeps swallowing the
243
- * same operators, because the old reading did and a later assignment
244
- * behind them (`V=\"& W=/tmp cmd`) was extracted through it. That
245
- * includes `|` and `||`, so `A=a\ b|| cd /x && y` reads the `cd` like
246
- * the plain `A=x|| cd /x && y` always has (a known phantom, not
247
- * covered); ending the word at `||` was tried and lost honest clauses
248
- * that bash runs after the short circuit;
249
- * - a word that STARTS with a quote, and every `cd` / branch word, ends
250
- * at an unquoted, unescaped `;`, `&`, `|`, `<`, `>`, `(` or `)`, so
251
- * `A='a b'|| cd /x && y` ends the value at `||` and never reads the
252
- * `cd` behind a short-circuit or a pipe as a leading one (the old
253
- * reading also stopped right after the closing quote).
254
- *
255
- * Returns null when a quote has no closing quote. Never throws.
256
- */
257
- function readWord(s, start, plainStops, swallowOps) {
258
- let end = start;
259
- while (end < s.length && !WS.test(s[end]) && !plainStops.includes(s[end]))
260
- end++;
261
- if (!/['"\\]/.test(s.slice(start, end)))
262
- return readWordLegacy(s, start, plainStops);
263
- const swallow = swallowOps && s[start] !== "'" && s[start] !== '"';
264
- const stops = swallow ? "" : WORD_STOPS;
265
- let i = start;
266
- let value = "";
267
- let interpolates = false;
268
- while (i < s.length) {
269
- const c = s[i];
270
- if (WS.test(c) || stops.includes(c))
271
- break;
272
- if (c === "'") {
273
- const end = s.indexOf("'", i + 1);
274
- if (end < 0)
275
- return null;
276
- value += s.slice(i + 1, end);
277
- i = end + 1;
278
- }
279
- else if (c === '"') {
280
- i++;
281
- let closed = false;
282
- while (i < s.length) {
283
- const d = s[i];
284
- if (d === '"') {
285
- closed = true;
286
- i++;
287
- break;
288
- }
289
- if (d === "\\" && i + 1 < s.length) {
290
- const e = s[i + 1];
291
- if (e === '"' || e === "\\" || e === "$" || e === "`") {
292
- value += e;
293
- i += 2;
294
- continue;
295
- }
296
- if (e === "\n") {
297
- i += 2;
298
- continue;
299
- }
300
- }
301
- else if (d === "$") {
302
- interpolates = true;
303
- }
304
- value += d;
305
- i++;
306
- }
307
- if (!closed)
308
- return null;
309
- }
310
- else if (c === "\\") {
311
- if (i + 1 < s.length) {
312
- if (s[i + 1] !== "\n")
313
- value += s[i + 1];
314
- i += 2;
315
- }
316
- else {
317
- value += c;
318
- i++;
319
- }
320
- }
321
- else if (c === "$" && s[i + 1] === "'") {
322
- let j = i + 2;
323
- while (j < s.length && s[j] !== "'")
324
- j += s[j] === "\\" ? 2 : 1;
325
- if (j >= s.length)
326
- return null;
327
- value += s.slice(i, j + 1);
328
- i = j + 1;
329
- }
330
- else {
331
- value += c;
332
- i++;
333
- }
334
- }
335
- return { value, next: i, interpolates };
336
- }
337
- /**
338
- * The reading this module used before it knew about escapes: a word that
339
- * opens with a quote ends at the FIRST matching quote character, any
340
- * other word ends at whitespace (and at any character of `plainStops`).
341
- * Kept as the fall-back for a word `readWord` cannot terminate, so that
342
- * word still yields what the old reading yielded (`VAR="abc\" cd /x && y`
343
- * is an unterminated string for bash, but the old reading still yields
344
- * `VAR` and the `cd`). Null only for a quote with no closing quote at all.
345
- */
346
- function readWordLegacy(s, start, plainStops) {
347
- const first = s[start];
348
- if (first === "'" || first === '"') {
349
- const end = s.indexOf(first, start + 1);
350
- if (end < 0)
351
- return null;
352
- const value = s.slice(start + 1, end);
353
- return { value, next: end + 1, interpolates: first === '"' && value.includes("$") };
354
- }
355
- let i = start;
356
- while (i < s.length && !WS.test(s[i]) && !plainStops.includes(s[i]))
357
- i++;
358
- return { value: s.slice(start, i), next: i, interpolates: false };
359
- }
360
- /** `readWord`, else `readWordLegacy`; null only when no reading closes the quote. */
361
- function readWordOrLegacy(s, start, plainStops, swallowOps) {
362
- return readWord(s, start, plainStops, swallowOps) ?? readWordLegacy(s, start, plainStops);
363
- }
364
- function skipWs(s, i) {
365
- while (i < s.length && WS.test(s[i]))
366
- i++;
367
- return i;
368
- }
369
- /**
370
- * Consume zero or more leading `VAR=value` tokens. Each successful
371
- * consumption registers into `into`. Returns the cursor position after
372
- * the last consumed token, or the original cursor when nothing parsed
373
- * (so the caller can try another prefix kind).
374
- *
375
- * On a syntactically broken token (e.g. unterminated quote) the broken
376
- * token is NOT consumed and the function returns the cursor at the
377
- * start of that token, preserving the rest of the command for fallback.
378
- *
379
- * QUOTE-MODEL DIVERGENCE, recorded so the next change here starts from
380
- * the known state instead of rediscovering it (task 13e55484; updated
381
- * by task b093911d): `command-normalize.ts`'s
382
- * `consumeAssignment` is a SECOND quote model for the same leading
383
- * `VAR=value` construction. Both now handle backslash escapes (outside
384
- * single quotes) and chained quote runs (`'a b'"c d"`), but they stay
385
- * two separate implementations (not unified), and this function
386
- * extracts the VALUE (which the normaliser never needs). Neither model
387
- * handles ANSI-C `$'...'` escapes; the normaliser side carries a
388
- * one-directional guard so that divergence can only fall back to its
389
- * pre-continuation behaviour, never swallow a gated head token.
390
- */
391
- function consumeInlineEnv(s, start, into) {
392
- let i = skipWs(s, start);
393
- let lastGood = i;
394
- while (i < s.length) {
395
- const nameStart = i;
396
- if (!VAR_START.test(s[i]))
397
- break;
398
- i++;
399
- while (i < s.length && VAR_CONT.test(s[i]))
400
- i++;
401
- if (s[i] !== "=")
402
- break;
403
- const name = s.slice(nameStart, i);
404
- i++;
405
- // Read the value as one shell word: unquoted text, backslash escapes
406
- // and quoted parts glued together up to unescaped whitespace.
407
- const word = readWordOrLegacy(s, i, ENV_PLAIN_STOPS, true);
408
- if (word === null)
409
- return lastGood;
410
- const value = word.value;
411
- i = word.next;
412
- into[name] = value;
413
- i = skipWs(s, i);
414
- lastGood = i;
415
- }
416
- return lastGood;
417
- }
418
- /**
419
- * Consume a single leading `cd <path> [&&|;]` clause. Returns
420
- * `{path, next}` on success (where `next` is the cursor after the
421
- * separator), or null when the prefix does not match. A path that is
422
- * missing the trailing `&&` / `;` separator is treated as not-a-prefix
423
- * (the operator typed `cd <path>` and nothing else — no useful resolver
424
- * override).
425
- */
426
- function consumeLeadingCd(s, start) {
427
- let i = skipWs(s, start);
428
- // Match `cd` followed by whitespace; do NOT match `cd&&` or `cdx`.
429
- if (s[i] !== "c" || s[i + 1] !== "d")
430
- return null;
431
- if (i + 2 >= s.length || !WS.test(s[i + 2]))
432
- return null;
433
- i = skipWs(s, i + 2);
434
- // Path: one shell word (quotes, escapes and quote runs as in an env value).
435
- const word = readWordOrLegacy(s, i, PATH_PLAIN_STOPS, false);
436
- if (word === null)
437
- return null;
438
- const path = word.value;
439
- i = word.next;
440
- if (path.length === 0)
441
- return null;
442
- i = skipWs(s, i);
443
- if (s[i] === "&" && s[i + 1] === "&") {
444
- return { path, next: i + 2 };
445
- }
446
- if (s[i] === ";") {
447
- return { path, next: i + 1 };
448
- }
449
- return null;
450
- }
451
- /**
452
- * Match a literal keyword at `i` on a word boundary — immediately
453
- * followed by whitespace or end-of-string, never a partial-word match
454
- * (`"git"` must not match inside `"github"`, `"switch"` must not match
455
- * inside `"switching"`). Returns the cursor just past the keyword on
456
- * success, or null.
457
- */
458
- function matchKeyword(s, i, word) {
459
- if (s.slice(i, i + word.length) !== word)
460
- return null;
461
- const after = i + word.length;
462
- if (after < s.length && !WS.test(s[after]))
463
- return null;
464
- return after;
465
- }
466
- /**
467
- * Skip a single path token (quoted or unquoted) starting at `i`.
468
- * Returns the cursor just past it, or null on an unterminated quote or
469
- * an empty token. Reads the token with the same `readWordOrLegacy` rules
470
- * `consumeLeadingCd` uses for its path; this function's only caller
471
- * (`consumeLeadingGitSwitch`'s `-C <path>` skip) discards the value.
472
- */
473
- function skipPathToken(s, i) {
474
- const word = readWordOrLegacy(s, i, PATH_PLAIN_STOPS, false);
475
- return word !== null && word.next > i ? word.next : null;
476
- }
477
- /**
478
- * Consume a single leading `git [-C <path>] (switch|checkout) <branch>
479
- * [&&|;]` clause (task 341e024b). Returns `{branch, next}` on success,
480
- * or null when the prefix does not match — including these deliberate
481
- * exclusions, which return null WITHOUT guessing a branch:
482
- *
483
- * - A `-`-prefixed first argument after `switch`/`checkout` (`-`,
484
- * `--`, `-b`, `-c`, `-C`, `--force`, ...). This specifically covers
485
- * `git checkout -- <path>` (git's file-restore form — no branch is
486
- * switched at all) as one case of the general rule "a flag is not a
487
- * branch name", rather than special-casing `--` alone.
488
- * - An unquoted `$VAR` / `${VAR}` first argument: a shell variable,
489
- * not a literal branch name. Resolving it would require evaluating
490
- * the shell environment, which this parser does not do (see module
491
- * doc). A token that STARTS with a quote and carries an unescaped `$`
492
- * in a double-quoted part is excluded the same way (double quotes
493
- * interpolate in real bash); a single-quoted token is never excluded
494
- * on this basis (single quotes never interpolate, so its content is
495
- * always the literal branch name). A token that does not start with a
496
- * quote but has such a `$` mid-word (`release/"$V"`) is NOT excluded:
497
- * it is read raw (quotes kept) as before, so a glob like `release/*`
498
- * and the clauses behind it still resolve.
499
- * - A missing trailing `&&` / `;` separator, mirroring
500
- * `consumeLeadingCd`'s identical rule: `git switch main` alone, with
501
- * nothing following, has no "rest of command" for the branch
502
- * candidate to apply to.
503
- *
504
- * The branch token is read as ONE shell word, with the same rules as a
505
- * `cd` path (`readWordOrLegacy`, ended at whitespace / `;` / `&`): an
506
- * unquoted slashed name like `task/foo` or `release/1.2`, a quoted
507
- * literal with its quotes stripped (task 341e024b: a quote character
508
- * left inside the token would never match a plain `branch_patterns`
509
- * entry), and, since task b093911d, backslash escapes
510
- * and chained quote runs (`'it'\''s'`, `"ma\"in"`, `feat\ x`).
511
- *
512
- * The optional leading `-C <path>` is recognized so it does not block
513
- * the match, but its value is discarded — see the module doc's form 3
514
- * for why only the branch name matters to the caller.
515
- */
516
- function consumeLeadingGitSwitch(s, start) {
517
- let i = skipWs(s, start);
518
- const afterGit = matchKeyword(s, i, "git");
519
- if (afterGit === null)
520
- return null;
521
- i = skipWs(s, afterGit);
522
- const afterDashC = matchKeyword(s, i, "-C");
523
- if (afterDashC !== null) {
524
- i = skipWs(s, afterDashC);
525
- const skipped = skipPathToken(s, i);
526
- if (skipped === null)
527
- return null;
528
- i = skipWs(s, skipped);
529
- }
530
- let afterVerb = matchKeyword(s, i, "switch");
531
- if (afterVerb === null)
532
- afterVerb = matchKeyword(s, i, "checkout");
533
- if (afterVerb === null)
534
- return null;
535
- i = skipWs(s, afterVerb);
536
- if (i >= s.length)
537
- return null;
538
- // A `-`-prefixed or unquoted `$`-prefixed first argument is not a
539
- // plain branch name — do not guess (see doc comment above).
540
- if (s[i] === "-" || s[i] === "$")
541
- return null;
542
- // One shell word, quotes and escapes decoded like a `cd` path (task
543
- // 341e024b for the quote stripping, task b093911d for the escapes). A word with an UNESCAPED `$` inside double quotes is left
544
- // unresolved (real bash interpolates there; this parser does not
545
- // evaluate the shell environment); a single-quoted `$` and an escaped
546
- // `\$` are literal and kept.
547
- let word = readWordOrLegacy(s, i, PATH_PLAIN_STOPS, false);
548
- // A word that does NOT start with a quote but carries a `$` in a
549
- // double-quoted part (`release/"$V"`): bash expands it, so the branch
550
- // is unknown, but the pre-change reading kept the raw word (quotes
551
- // included, which still matches a glob such as `release/*`) and went on
552
- // to the clauses behind it (a later `cd`, the kubectl remainder). Fall
553
- // back to that reading instead of dropping them. A word that starts
554
- // with a double quote stays unresolved: the pre-change reading did the
555
- // same. One that starts with a single quote cannot be saved either: the
556
- // old reading ends it at the first closing quote, and a `$` part glued
557
- // behind it means the next character is neither whitespace nor `;` / `&`.
558
- if (word !== null && word.interpolates && s[i] !== '"') {
559
- word = readWordLegacy(s, i, PATH_PLAIN_STOPS);
560
- }
561
- if (word === null || word.interpolates)
562
- return null;
563
- const branch = word.value;
564
- if (branch.length === 0)
565
- return null;
566
- i = word.next;
567
- i = skipWs(s, i);
568
- if (s[i] === "&" && s[i + 1] === "&") {
569
- return { branch, next: i + 2 };
570
- }
571
- if (s[i] === ";") {
572
- return { branch, next: i + 1 };
573
- }
574
- return null;
575
- }
576
- //# sourceMappingURL=bash-prefix-parse.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bash-prefix-parse.js","sourceRoot":"","sources":["../../src/runtime/bash-prefix-parse.ts"],"names":[],"mappings":"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"}