@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,22 +1,11 @@
1
1
  import type { McpProbeResult } from "../../probes/mcp.js";
2
2
  import type { MemoryReport, StaleMemory } from "../../probes/memory.js";
3
3
  import type { Manifest } from "../../schema/index.js";
4
- import type { Diagnostic } from "../validate/types.js";
5
4
  import type { ClaudeMcpRegistrationSection } from "./claude-mcp.js";
6
5
  import type { CodexTargetReport } from "./codex.js";
7
6
  import type { OpencodeTargetReport } from "./opencode.js";
8
7
  import type { NpmBinReport } from "./npm-bin-path.js";
9
- import type { RogueLedgerDb } from "./rogue-ledger.js";
10
- import type { UnderstandingModeEnvDivergence } from "./understanding-mode-env.js";
11
- import type { ToolchainParitySection } from "./toolchain-parity.js";
12
- import type { UgAutoApprovalsSection } from "./ug-auto-approvals.js";
13
- import type { UgDelegationsSection } from "./ug-delegations.js";
14
- import type { UgInflightSection } from "./ug-inflight.js";
15
- import type { SettingsDriftSection } from "./settings-drift.js";
16
- import type { AutoApproveModeWarning } from "./auto-approve-mode.js";
17
- import type { BypassWithoutAutoApproveFinding } from "./bypass-without-auto-approve.js";
18
- import type { SessionStartPreflightSetupVersionFinding } from "./session-start-preflight-setup-version.js";
19
- import type { CodexConfigDriftSection } from "./codex-config-drift.js";
8
+ import type { HookLivenessSection } from "./hook-liveness.js";
20
9
  /**
21
10
  * Phase 6 #6 follow-up — doctor target identifier. Distinct from
22
11
  * `Runtime` (which gates `harness apply --runtime`): doctor only adds
@@ -78,11 +67,9 @@ export type HookVersionReport = {
78
67
  } | {
79
68
  status: "warn";
80
69
  /**
81
- * Which outcome the probe hit, mirroring `PolicyPackVersionGapKind`
82
- * (`src/policy-packs/version-check.ts`) so both hook-level and
83
- * pack-level gaps share one warning vocabulary. Required on
84
- * `warn`: every warn-producing branch of `checkHookVersion`
85
- * classifies its outcome, so there is no warn case without one.
70
+ * Which outcome the probe hit. Required on `warn`: every
71
+ * warn-producing branch of `checkHookVersion` classifies its
72
+ * outcome, so there is no warn case without one.
86
73
  */
87
74
  kind: "below_floor" | "probe_failed" | "parse_failed";
88
75
  /**
@@ -111,40 +98,6 @@ export interface HookEntryReport {
111
98
  message?: string;
112
99
  version?: HookVersionReport;
113
100
  }
114
- /**
115
- * A `block`-enforcement policy whose required ledger tag carries a
116
- * `within` freshness window, but no manifest hook produces that tag
117
- * AND the policy itself declares no `producers:` array. The gate will
118
- * wall off whatever it triggers on until the tag is supplied
119
- * out-of-band, with no in-manifest way to keep it satisfied or any
120
- * recovery path visible to the agent. Policies that document the
121
- * recovery in `producers:` (e.g. dogfood-before-release deliberately
122
- * wanting an operator-driven manual smoke summary) are NOT flagged
123
- * here, since that producer is the schema-blessed manual path. See
124
- * tasks ce50df99 (initial check) and f97e152f (producers-respect
125
- * refinement).
126
- */
127
- export interface PolicyProducerGap {
128
- /** The unresolved `requires.ledger_tag`, e.g. `preflight:${REPO}`. */
129
- ledgerTag: string;
130
- /** The `requires.within` window the tag must stay fresh inside. */
131
- within: string;
132
- }
133
- export interface PolicyEntryReport {
134
- name: string;
135
- schemaValid: boolean;
136
- caveat: string;
137
- /** Present when this policy has an unproduced freshness-gated tag. */
138
- producerGap?: PolicyProducerGap;
139
- /**
140
- * True when this policy object was derived from `workflows[]`
141
- * (`isDerivedPolicy`, F7, review round 2) rather than hand-authored
142
- * under `policies:`. Rendered as "(derived from workflows[])" so an
143
- * operator reading `harness doctor` output can tell provenance apart
144
- * without cross-referencing `workflows:` themselves.
145
- */
146
- derived?: boolean;
147
- }
148
101
  /**
149
102
  * A declared policy pack whose `source` or builtin name does not
150
103
  * resolve. The pack appears in `manifest.policy_packs[]` (so the
@@ -172,31 +125,27 @@ export interface PolicyPackUnresolved {
172
125
  */
173
126
  export interface PolicyPackConfigIssue {
174
127
  name: string;
175
- /** Dotted path inside `pack.config`, e.g. `mode`, `approval_lifecycle.mode`. */
128
+ /** Dotted path inside `pack.config`, e.g. `protected_branches`, `ux.cannot`. */
176
129
  configPath: string;
177
130
  message: string;
178
131
  }
179
132
  /**
180
- * Doctor surface for the pack-level `min_version` floor. Mirrors the
181
- * hook-level `HookEntryReport.version` shape so operators see a
182
- * consistent warning vocabulary regardless of which layer raised the
183
- * gap. Always warn-not-error: a below-floor pack still runs in degraded
184
- * mode; the operator just loses any feature gated on the newer release.
133
+ * Doctor surface for the pack-level `min_version` floor: a declared floor on
134
+ * a pack that has no version probe, so it cannot be enforced. Always
135
+ * warn-not-error.
185
136
  */
186
137
  export interface PolicyPackVersionGapReport {
187
138
  name: string;
188
139
  declaredMinVersion: string;
189
140
  /**
190
- * Numeric run only (never the prerelease or build suffix), so a
191
- * `below_floor` gap from a prerelease of the floor shows an
192
- * `actualVersion` equal to `declaredMinVersion`; `message` carries the
193
- * full probed token. Same trap as `HookVersionReport.actualVersion`.
141
+ * Always null: a builtin pack has no probe, so no installed version is
142
+ * known. Kept so the doctor JSON shape of `versionGaps` is unchanged.
194
143
  */
195
144
  actualVersion: string | null;
196
145
  message: string;
197
146
  }
198
147
  /**
199
- * A pack's declared `config.ux` / `config.producers` that textually
148
+ * A pack's declared `config.ux` that textually
200
149
  * diverges from the shipped builtin template for that pack (task
201
150
  * 68b9ad9c). Unlike `PolicyPackConfigIssue`, the value is still SCHEMA-
202
151
  * valid — the gap is that it teaches stale wording (e.g. a pre-fix
@@ -207,7 +156,7 @@ export interface PolicyPackVersionGapReport {
207
156
  */
208
157
  export interface PolicyPackUxDriftReport {
209
158
  name: string;
210
- /** Which sub-field(s) diverge: `ux`, `producers`, or both. */
159
+ /** Which sub-field(s) diverge (today only `ux`). */
211
160
  fields: string[];
212
161
  message: string;
213
162
  }
@@ -221,105 +170,16 @@ export interface PackExpansionRuntimeReport {
221
170
  /** Set when the last apply's `.last-apply` could not be read; names the file. */
222
171
  warning?: string;
223
172
  }
224
- /**
225
- * Doctor surface for the HOOK-level `min_version` floor on a
226
- * policy-pack-EXPANDED hook (task ab634898). Distinct from
227
- * `PolicyPackVersionGapReport` (the pack-level `policy_packs[].min_version`
228
- * floor, a different mechanism checked by `checkPolicyPackVersions`):
229
- * this covers an individual hook a builtin pack contributes, e.g.
230
- * understanding-before-execution's UserPromptSubmit/Stop hooks, each
231
- * declaring its own `min_version` + `version_command`
232
- * (`src/policy-packs/builtin/understanding-before-execution.ts`).
233
- * `expandPolicyPacks` produces the hooks Claude Code actually runs, but
234
- * `manifest.hooks[]` (what `HookEntryReport`/`checkHooks` walk) never
235
- * includes them, so without this section an operator below a pack
236
- * hook's floor saw a clean doctor report. Always warn, never error;
237
- * mirrors the manifest-hook floor (`HookVersionReport`) and the
238
- * pack-level floor. Empty array when every pack-expanded hook that
239
- * declares a floor meets it (or none declare one).
240
- */
241
- export interface PolicyPackHookVersionGapReport {
242
- /** The pack-expanded hook's name, e.g. `policy-pack:understanding-before-execution:user-prompt-submit`. */
243
- name: string;
244
- event: string;
245
- declaredMinVersion: string;
246
- /**
247
- * Which outcome the probe hit; mirrors `PolicyPackVersionGapKind`
248
- * (`src/policy-packs/version-check.ts`) so the hook-level and
249
- * pack-level sections classify gaps the same way instead of the
250
- * renderer having to regex `message` back apart.
251
- */
252
- kind: "below_floor" | "probe_failed" | "parse_failed";
253
- /** Parsed installed version when the probe succeeded; null for `probe_failed` / `parse_failed`, where it is unknown. */
254
- actualVersion: string | null;
255
- /** The `version_command` that was probed, e.g. `["understanding-gate", "--version"]`. */
256
- versionCommand: readonly string[];
257
- message: string;
258
- }
259
173
  export interface PolicyPacksSection {
260
174
  unresolved: PolicyPackUnresolved[];
261
175
  configIssues: PolicyPackConfigIssue[];
262
176
  versionGaps: PolicyPackVersionGapReport[];
263
177
  uxDrift: PolicyPackUxDriftReport[];
264
- solutionAcceptance: Diagnostic[];
265
- }
266
- export interface WorkflowEntryReport {
267
- name: string;
268
- steps: number;
269
- reviewSpawn: "required" | "optional" | "skip" | null;
270
- reviewTemplate: string | null;
271
- mergeGate: "solo" | "agent_tasks_label" | "none" | null;
272
- taskLabels: string[];
273
- }
274
- export interface WorkflowsSectionReport {
275
- declared: number;
276
- templates: number;
277
- entries: WorkflowEntryReport[];
278
- /**
279
- * `checkWorkflowGateWiring` errors (F3, review round 2, 99f47307 Slice
280
- * 1): a `spawn: "required"` review-then-merge workflow whose runtime
281
- * merge gate is not correctly wired (a missing evidence hook, or one
282
- * declared under the right name but the wrong trigger surface/command).
283
- * `harness doctor` previously imported checks selectively and never ran
284
- * this one, so it showed green on exactly this misconfiguration.
285
- * Delegates to the shared validate check, mirroring `templateDrift`.
286
- * Each rolls into `errorCount`.
287
- */
288
- errors: string[];
289
- /**
290
- * `checkWorkflowGateWeakOverlap` warnings (F1, review round 2): a
291
- * hand-authored policy sharing a derived gate's trigger surface but
292
- * weaker than it (does not suppress the derived gate, just worth
293
- * flagging). Each rolls into `warningCount`.
294
- */
295
- warnings: string[];
296
- }
297
- /**
298
- * Phase 7 #6 — Risk Gate wiring health. Reports whether the three Risk
299
- * Gate surfaces (`risk.classifiers[]`, `environments.resolvers[]`, and
300
- * policies carrying a `when:` block) compose coherently. The `warnings`
301
- * catch the inert / fail-closed misconfigurations: `when:`-policies with
302
- * no classifier (every action unclassified), `when:`-policies with no
303
- * resolver (every environment `unknown`), or classifiers / resolvers
304
- * declared but no policy consuming them. The per-decision audit log
305
- * lives in `harness audit` (`policy_decision` rows carry the classifier
306
- * + environment as of Phase 7 #5); doctor reports wiring, not history.
307
- */
308
- export interface RiskGateSection {
309
- /** Count of `risk.classifiers[]`. */
310
- classifiers: number;
311
- /** Count of `environments.resolvers[]`. */
312
- resolvers: number;
313
- /** Count of policies that declare a `when:` block. */
314
- whenPolicies: number;
315
- /** Coherence warnings; each rolls into the doctor `warningCount`. */
316
- warnings: string[];
317
178
  }
318
179
  /**
319
180
  * Grounding wiring health (task 129e1b94). Present only when the manifest
320
181
  * declares an enabled `tools.mcp[grounding-mcp]` entry — without one there
321
- * is no consumer to check (validate's checkPolicyGroundingMcp owns the
322
- * "policies without grounding-mcp" warning). Doctor verifies the projected
182
+ * is no consumer to check. Doctor verifies the projected
323
183
  * evidence-ledger path is usable and that an operator env override does
324
184
  * not silently diverge from `grounding.evidence_ledger.path`.
325
185
  */
@@ -333,66 +193,6 @@ export interface GroundingSection {
333
193
  /** Wiring warnings; each rolls into the doctor `warningCount`. */
334
194
  warnings: string[];
335
195
  }
336
- /**
337
- * Template-policy drift (task adf037c1). `errors` names shipped
338
- * `operator_only` (kill-switch / security) policies this installed
339
- * manifest either lacks entirely or carries in a DOWNGRADED (no longer
340
- * operator_only) shape — a defense an aged manifest never received or
341
- * silently weakened, since `harness apply` does not retroactively add or
342
- * repair default policies. Each rolls into `errorCount` (a real defense
343
- * gap, doctor-convention exit failure). `warnings` names stale
344
- * `doctor.ignore_template_drift` entries that match no shipped policy and
345
- * therefore suppress nothing; each rolls into `warningCount`. Names
346
- * acknowledged via a valid `doctor.ignore_template_drift` entry are
347
- * filtered out of `errors` upstream.
348
- */
349
- export interface TemplateDriftSection {
350
- /** Missing-or-downgraded shipped operator_only policies (each → errorCount). */
351
- errors: string[];
352
- /** Stale/typo'd ignore_template_drift entries that suppress nothing (each → warningCount). */
353
- warnings: string[];
354
- }
355
- /**
356
- * Trigger-boundary drift (task 037cfb7c, follow-up to adf037c1):
357
- * shipped-by-name `bash_match` triggers (hook-level `hooks[].bash_match`
358
- * or policy-level `policies[].trigger.bash_match`) missing a boundary
359
- * alternative the template has, or missing a boundary group entirely.
360
- * Rule and rationale live on `checkTriggerBoundaryDrift` in
361
- * `validate/checks.ts`; the measured incident that motivated this check
362
- * is in the `CHANGELOG.md:#0.49.0` entry for task 037cfb7c. Shape
363
- * mirrors `TemplateDriftSection` immediately above: every `error`
364
- * diagnostic rolls into `errorCount`, every `warning` diagnostic (none
365
- * emitted today; the field exists so a future non-error diagnostic from
366
- * `checkTriggerBoundaryDrift` surfaces here instead of being silently
367
- * dropped by `buildTriggerBoundaryDrift`) rolls into `warningCount`.
368
- * Always present; both arrays empty when every shipped-named trigger's
369
- * boundary covers the template's (or the manifest has none of those
370
- * triggers, or every drift is acknowledged via
371
- * doctor.ignore_template_drift).
372
- */
373
- export interface TriggerBoundaryDriftSection {
374
- /** Stale-boundary bash_match triggers, hook- or policy-level (each → errorCount). */
375
- errors: string[];
376
- /** Reserved for a future non-error diagnostic shape (each → warningCount); empty today. */
377
- warnings: string[];
378
- }
379
- /**
380
- * Hook-budget-vs-ledger-timeout margin (task d20a7e0c, follow-up to
381
- * f1aea826/7bf47554): blocking, ledger-consulting hooks (both directly
382
- * declared `harness policy intercept` hooks and enabled policy-pack
383
- * blockers) whose `budget_ms` does not clear
384
- * `requiredHookBudgetMs(health.timeout_ms)` — see
385
- * `checkHookBudgetLedgerMargin` in `validate/checks.ts` for the full
386
- * derivation. Every entry is a real fail-open gap (a merely SLOW ledger
387
- * can get the hook killed before it can write its fail-closed verdict),
388
- * so each rolls into `errorCount`, mirroring `templateDrift.errors`
389
- * above. Always present; empty when every such hook clears the margin
390
- * (or none exist, or grounding-mcp is not wired).
391
- */
392
- export interface HookBudgetLedgerMarginSection {
393
- /** Each entry names an under-budgeted hook; rolls into errorCount. */
394
- errors: string[];
395
- }
396
196
  export interface DoctorReport {
397
197
  manifestPath: string;
398
198
  manifestVersion: number;
@@ -408,109 +208,15 @@ export interface DoctorReport {
408
208
  * doctor / harness probes. See task 4ddd78ed.
409
209
  */
410
210
  npmGlobalBin?: NpmBinReport;
411
- /**
412
- * Understanding-gate mode env/config divergence (task 24abdecb).
413
- * Present only when `UNDERSTANDING_GATE_MODE` is set in the operator
414
- * environment AND diverges from
415
- * `policy_packs[understanding-before-execution].config.mode`. Always
416
- * advisory (rolls into `warningCount`, never `errorCount`) — see
417
- * `understanding-mode-env.ts` for the full rationale.
418
- */
419
- understandingModeEnv?: UnderstandingModeEnvDivergence;
420
- /**
421
- * Auto-approval listing + last-N metric (ADR
422
- * docs/decisions/2026-08-27-ug-auto-mode-approval.md slice 1,
423
- * agent-tasks 74b4b17d, "Audit and doctor"). Present only when the
424
- * `understanding-before-execution` pack is declared and enabled
425
- * (mirrors `understandingModeEnv`'s gate) — a manifest that never
426
- * uses the pack has no `.approvals/` markers this listing owns an
427
- * opinion about. Purely informational (`ℹ`); never rolls into
428
- * `warningCount`.
429
- */
430
- ugAutoApprovals?: UgAutoApprovalsSection;
431
- /**
432
- * Delegations-on-disk metric (same ADR, slice 3, "Audit and doctor",
433
- * agent-tasks 37ad0b05): `total`/`expired`/`unreadable` counts
434
- * from `harness.generated/.delegations/`, distinct from
435
- * `ugAutoApprovals` (which reads `.approvals/` only). Present only
436
- * when the `understanding-before-execution` pack is declared and
437
- * enabled (mirrors `ugAutoApprovals`'s gate). `delegationsDirPresent`
438
- * mirrors `ugAutoApprovals`'s `approvalsDirPresent`: the rendered line
439
- * stays silent when `.delegations/` does not exist at all, and shows
440
- * the zero-count line when it exists but is empty (both cases resolve
441
- * `total`/`expired`/`unreadable` to `0`). Informational (`ℹ`) unless
442
- * `unreadable > 0`, in which case it rolls one warning into
443
- * `warningCount`.
444
- */
445
- ugDelegations?: UgDelegationsSection;
446
- /**
447
- * In-flight subagent records (subagent-gate slice 1) from
448
- * `harness.generated/.inflight/`, distinct from both `ugDelegations`
449
- * (`.delegations/`) and `ugAutoApprovals` (`.approvals/`). Present
450
- * only when the `understanding-before-execution` pack is declared and
451
- * enabled (mirrors `ugDelegations`'s gate). `inflightDirPresent`
452
- * mirrors `ugDelegations`'s `delegationsDirPresent`: the rendered
453
- * line stays silent when `.inflight/` does not exist at all, and
454
- * shows the zero-count line when it exists but is empty. Purely
455
- * informational (`ℹ`) — an unreadable/skipped entry never rolls a
456
- * warning here, since a record aging out unread is exactly what
457
- * `harness gc` is for, not a signal of tampering.
458
- */
459
- ugInflight?: UgInflightSection;
460
- /**
461
- * `bypassPermissions` observed (hook-side, `.permission-mode-
462
- * observations/`) but `auto_approve` does not cover it (task 8f637efd,
463
- * "Amendment: install default"). Present only when the pack is
464
- * declared and enabled AND at least one qualifying observation exists
465
- * in the window; always a warning (`⚠`) when present, see
466
- * bypass-without-auto-approve.ts.
467
- */
468
- ugBypassWithoutAutoApprove?: BypassWithoutAutoApproveFinding;
469
- /**
470
- * `session_start_preflight.setup: true` against a `preflight` binary
471
- * below the build-capable release (task 6993d9b5). Present only when
472
- * `setup` is enabled AND the probed/parsed version is below
473
- * `SESSION_START_PREFLIGHT_SETUP_BUILD_MIN_VERSION` (or the probe
474
- * failed/could not be parsed); always a warning (`⚠`) when present,
475
- * see session-start-preflight-setup-version.ts.
476
- */
477
- sessionStartPreflightSetupVersion?: SessionStartPreflightSetupVersionFinding;
478
- /**
479
- * `auto_approve` configured without `mode: grill_me` (agent-tasks
480
- * abfad738, follow-up of ADR
481
- * docs/decisions/2026-08-27-ug-auto-mode-approval.md slice 1).
482
- * Present only when the pack is declared and enabled AND
483
- * `config.auto_approve` parses as a valid opt-in block. Always
484
- * advisory (rolls into `warningCount`, never `errorCount`). See
485
- * `auto-approve-mode.ts` for the full rationale.
486
- */
487
- ugAutoApproveMode?: AutoApproveModeWarning;
488
- /**
489
- * Settings-drift compensating control (same ADR, threat model (c)): a
490
- * `permissions.defaultMode` or hook entry present in a live Claude
491
- * Code settings file but absent from harness's own last-apply
492
- * snapshot. Present only when the understanding-gate pack is enabled
493
- * AND `harness apply` has run at least once for this manifest
494
- * (`harness.generated/` exists) — otherwise there is no baseline to
495
- * compare against and nothing to say. `warnings` roll into
496
- * `warningCount`; `notes` never do.
497
- */
498
- settingsDrift?: SettingsDriftSection;
499
- /**
500
- * Codex counterpart of `settingsDrift` (follow-up of slice 2 of the
501
- * same ADR, agent-tasks f59ea0eb): a live `approval_policy = "never"`
502
- * or full-access `default_permissions` selection in `$CODEX_HOME
503
- * /config.toml` or `<repo>/.codex/config.toml`. Present only when the
504
- * understanding-gate pack's `auto_approve.harnesses` lists `codex`;
505
- * a repo that never opted Codex into the auto path has no live signal
506
- * for this key to pre-set. Unlike `settingsDrift`, this always warns
507
- * while the key is present and the repo is opted in (not gated on
508
- * drift since the last apply); `warnings` roll into `warningCount`.
509
- */
510
- codexConfigDrift?: CodexConfigDriftSection;
511
211
  memory: MemoryReport;
512
212
  hooks: HookEntryReport[];
513
- policies: PolicyEntryReport[];
213
+ /**
214
+ * Generated hooks compared with the live runtime config (Claude Code
215
+ * `settings.json`, Codex `config.toml`). Missing or differing entries are
216
+ * errors, a gate disabled through `harness gate disable` is a warning, and
217
+ * extra live hooks are info only. See `hook-liveness.ts`.
218
+ */
219
+ hookLiveness?: HookLivenessSection;
514
220
  /**
515
221
  * Declared-but-not-live policy packs. Each entry is a pack the
516
222
  * operator listed in `policy_packs[]` whose `source` or builtin
@@ -518,15 +224,6 @@ export interface DoctorReport {
518
224
  * surfaced loudly here. Errors count toward `errorCount`.
519
225
  */
520
226
  policyPacks: PolicyPacksSection;
521
- /**
522
- * Hook-level `min_version` floors on policy-pack-expanded hooks (task
523
- * ab634898). See `PolicyPackHookVersionGapReport` for why this is
524
- * separate from both `hooks[].version` (manifest-declared hooks only)
525
- * and `policyPacks.versionGaps` (the pack-level floor). Always
526
- * present; empty when every pack-expanded hook that declares a floor
527
- * meets it.
528
- */
529
- policyPackHookVersions: PolicyPackHookVersionGapReport[];
530
227
  /**
531
228
  * The runtime policy packs were expanded against for the pack checks:
532
229
  * the one a plain `harness apply` would select (recorded in
@@ -534,31 +231,6 @@ export interface DoctorReport {
534
231
  * 04b8abcf). Always present.
535
232
  */
536
233
  packExpansionRuntime: PackExpansionRuntimeReport;
537
- workflows: WorkflowsSectionReport;
538
- /** Phase 7 #6 — Risk Gate wiring health (classifiers / resolvers / `when:`). */
539
- riskGate: RiskGateSection;
540
- /**
541
- * Template-policy drift (task adf037c1): shipped operator_only security
542
- * policies missing-or-downgraded in this installed manifest (`errors`)
543
- * and stale `doctor.ignore_template_drift` entries (`warnings`). Always
544
- * present; both arrays empty when the manifest carries every shipped
545
- * kill-switch policy in operator_only form (or has acknowledged the gap
546
- * via a valid doctor.ignore_template_drift entry).
547
- */
548
- templateDrift: TemplateDriftSection;
549
- /**
550
- * Trigger-boundary drift (task 037cfb7c). Always present; `errors`
551
- * empty when every shipped-named `bash_match` trigger's boundary
552
- * matches the template (or every drift is acknowledged via
553
- * doctor.ignore_template_drift).
554
- */
555
- triggerBoundaryDrift: TriggerBoundaryDriftSection;
556
- /**
557
- * Hook-budget-vs-ledger-timeout margin (task d20a7e0c). Always
558
- * present; `errors` empty when every blocking, ledger-consulting hook
559
- * clears the derived margin.
560
- */
561
- hookBudgetLedgerMargin: HookBudgetLedgerMarginSection;
562
234
  /**
563
235
  * Grounding wiring health (task 129e1b94). Absent when no enabled
564
236
  * grounding-mcp entry is declared.
@@ -573,17 +245,6 @@ export interface DoctorReport {
573
245
  * isn't further scoped by runtime.
574
246
  */
575
247
  claudeMcp?: ClaudeMcpRegistrationSection;
576
- /**
577
- * On-demand toolchain-parity comparison (task 13919613), reusing the
578
- * Collector/Comparator core from `harness session-start
579
- * toolchain-parity` (src/cli/doctor/toolchain-parity.ts). Present only
580
- * when `toolchain_parity.enabled` is true in the manifest — absent
581
- * otherwise, mirroring `grounding`'s "only when the feature is in use"
582
- * gating. Always read-only: never writes a snapshot file or a ledger
583
- * fact. Only `"drift"`-status peers roll into `warningCount`; the
584
- * section is never an `errorCount` source (advisory, not a gate).
585
- */
586
- toolchainParity?: ToolchainParitySection;
587
248
  /**
588
249
  * Phase 6 #6 follow-up: present when `--target codex` is passed.
589
250
  * Aggregates harness-side codex adapter health checks (binary
@@ -600,27 +261,9 @@ export interface DoctorReport {
600
261
  * warningCount, same as `codexTarget`.
601
262
  */
602
263
  opencodeTarget?: OpencodeTargetReport;
603
- /**
604
- * Leftover `<parent>/~/.evidence-ledger/ledger.db` files from the
605
- * literal-tilde `EVIDENCE_LEDGER_DB` env leak (agent-tasks/42d224a6,
606
- * harness PR #101). Always scanned; harmless when empty. Each entry
607
- * rolls into `warningCount`. The scan walks `$HOME`, `$HOME/git/*`
608
- * (one level deep), and `$PWD`; see `rogue-ledger.ts` for rationale.
609
- */
610
- rogueLedgerDbs: RogueLedgerDb[];
611
264
  errorCount: number;
612
265
  warningCount: number;
613
266
  }
614
267
  export type { NpmBinReport } from "./npm-bin-path.js";
615
- export type { SessionStartPreflightSetupVersionFinding } from "./session-start-preflight-setup-version.js";
616
268
  export type { ClaudeMcpRegistrationSection, ClaudeMcpEntryReport, } from "./claude-mcp.js";
617
- export type { UnderstandingModeEnvDivergence } from "./understanding-mode-env.js";
618
- export type { UgAutoApprovalsSection, AutoApprovalListingEntry, } from "./ug-auto-approvals.js";
619
- export type { UgDelegationsSection } from "./ug-delegations.js";
620
- export type { UgInflightSection } from "./ug-inflight.js";
621
- export type { AutoApproveModeWarning } from "./auto-approve-mode.js";
622
- export type { BypassWithoutAutoApproveFinding } from "./bypass-without-auto-approve.js";
623
- export type { SettingsDriftSection } from "./settings-drift.js";
624
- export type { CodexConfigDriftSection } from "./codex-config-drift.js";
625
- export type { ToolchainParitySection, ToolchainParityPeerReport, } from "./toolchain-parity.js";
626
- export type { Manifest, McpProbeResult, MemoryReport, StaleMemory, CodexTargetReport, RogueLedgerDb, };
269
+ export type { Manifest, McpProbeResult, MemoryReport, StaleMemory, CodexTargetReport, };
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/cli/doctor/types.ts"],"names":[],"mappings":"AAoBA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE,UAAU,CAAU,CAAC;AAGnE,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACxB,oBAA0C,CAAC,QAAQ,CAAC,KAAK,CAAC,CAC5D,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/cli/doctor/types.ts"],"names":[],"mappings":"AASA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE,UAAU,CAAU,CAAC;AAGnE,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACxB,oBAA0C,CAAC,QAAQ,CAAC,KAAK,CAAC,CAC5D,CAAC;AACJ,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * How long the process waits for stdout and stderr to accept what is queued
3
+ * before it exits anyway, in ms. A hook runs under a host budget and a hook
4
+ * killed at its budget counts as an allow, so the wait is short and fixed; a
5
+ * reader that is slower than this loses the tail, which is the lesser harm.
6
+ */
7
+ export declare const STDIO_DRAIN_TIMEOUT_MS = 500;
8
+ type FlushableStream = Pick<NodeJS.WriteStream, "write" | "destroyed" | "writable"> & Partial<Pick<NodeJS.WriteStream, "on">>;
9
+ /**
10
+ * Put a no-op 'error' listener on each stream, once. A write to a pipe whose
11
+ * reader has gone fails with EPIPE, and a stream with no listener turns that
12
+ * event into an uncaught exception: the process exits 1, which a hook host
13
+ * reads as allow. A hook calls this at its entry, before its first write, so
14
+ * an error emitted while the hook is still awaiting (git, for example) cannot
15
+ * change its exit code; drainStdio only covers errors emitted after the hook
16
+ * has settled. The decision is already made by the time a write fails, so the
17
+ * error carries nothing the caller could act on.
18
+ */
19
+ export declare function tolerateClosedStdio(streams?: readonly {
20
+ on?(event: "error", listener: () => void): unknown;
21
+ }[]): void;
22
+ /**
23
+ * Resolve once everything written to stdout and stderr so far has been handed
24
+ * to the OS, or after `timeoutMs`. `process.exit` drops writes still queued
25
+ * for a pipe whose reader is behind (macOS cuts at the 64 KiB pipe buffer),
26
+ * so the entry point awaits this before it exits. A stream whose reader has
27
+ * gone (EPIPE) counts as flushed and its error is swallowed, so the exit code
28
+ * is the one the caller passed.
29
+ */
30
+ export declare function drainStdio(timeoutMs?: number, streams?: readonly FlushableStream[]): Promise<void>;
31
+ export {};
@@ -0,0 +1,76 @@
1
+ /**
2
+ * How long the process waits for stdout and stderr to accept what is queued
3
+ * before it exits anyway, in ms. A hook runs under a host budget and a hook
4
+ * killed at its budget counts as an allow, so the wait is short and fixed; a
5
+ * reader that is slower than this loses the tail, which is the lesser harm.
6
+ */
7
+ export const STDIO_DRAIN_TIMEOUT_MS = 500;
8
+ function flushed(stream) {
9
+ return new Promise((resolve) => {
10
+ try {
11
+ // A write to a pipe whose reader has gone fails with EPIPE, and the
12
+ // stream emits that as an 'error' event. With no listener the event is
13
+ // an uncaught exception: the process exits 1, which a hook host reads
14
+ // as allow. The listener goes on before the empty write below, and it
15
+ // also catches an earlier write's error that is emitted after run() has
16
+ // settled. An error emitted while run() is still awaiting I/O (before
17
+ // drainStdio is called) is covered only for a stream that
18
+ // tolerateClosedStdio already gave a listener. A failed stream has
19
+ // nothing left to wait for, so the error also settles the flush,
20
+ // whether or not the stream calls the write callback. The exit code is
21
+ // already decided.
22
+ stream.on?.("error", () => resolve());
23
+ if (stream.destroyed || !stream.writable) {
24
+ resolve();
25
+ return;
26
+ }
27
+ // An empty write completes after every earlier write has, or with an
28
+ // error when the reader has gone; either way nothing is left to wait for.
29
+ stream.write("", () => resolve());
30
+ }
31
+ catch {
32
+ resolve();
33
+ }
34
+ });
35
+ }
36
+ const tolerated = new WeakSet();
37
+ /**
38
+ * Put a no-op 'error' listener on each stream, once. A write to a pipe whose
39
+ * reader has gone fails with EPIPE, and a stream with no listener turns that
40
+ * event into an uncaught exception: the process exits 1, which a hook host
41
+ * reads as allow. A hook calls this at its entry, before its first write, so
42
+ * an error emitted while the hook is still awaiting (git, for example) cannot
43
+ * change its exit code; drainStdio only covers errors emitted after the hook
44
+ * has settled. The decision is already made by the time a write fails, so the
45
+ * error carries nothing the caller could act on.
46
+ */
47
+ export function tolerateClosedStdio(streams = [process.stdout, process.stderr]) {
48
+ for (const stream of streams) {
49
+ if (typeof stream.on !== "function" || tolerated.has(stream))
50
+ continue;
51
+ tolerated.add(stream);
52
+ stream.on("error", () => undefined);
53
+ }
54
+ }
55
+ /**
56
+ * Resolve once everything written to stdout and stderr so far has been handed
57
+ * to the OS, or after `timeoutMs`. `process.exit` drops writes still queued
58
+ * for a pipe whose reader is behind (macOS cuts at the 64 KiB pipe buffer),
59
+ * so the entry point awaits this before it exits. A stream whose reader has
60
+ * gone (EPIPE) counts as flushed and its error is swallowed, so the exit code
61
+ * is the one the caller passed.
62
+ */
63
+ export async function drainStdio(timeoutMs = STDIO_DRAIN_TIMEOUT_MS, streams = [process.stdout, process.stderr]) {
64
+ let timer;
65
+ const limit = new Promise((resolve) => {
66
+ timer = setTimeout(resolve, timeoutMs);
67
+ });
68
+ try {
69
+ await Promise.race([Promise.all(streams.map(flushed)), limit]);
70
+ }
71
+ finally {
72
+ if (timer !== undefined)
73
+ clearTimeout(timer);
74
+ }
75
+ }
76
+ //# sourceMappingURL=drain-stdio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drain-stdio.js","sourceRoot":"","sources":["../../src/cli/drain-stdio.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAK1C,SAAS,OAAO,CAAC,MAAuB;IACtC,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QACnC,IAAI,CAAC;YACH,oEAAoE;YACpE,uEAAuE;YACvE,sEAAsE;YACtE,sEAAsE;YACtE,wEAAwE;YACxE,sEAAsE;YACtE,0DAA0D;YAC1D,mEAAmE;YACnE,iEAAiE;YACjE,uEAAuE;YACvE,mBAAmB;YACnB,MAAM,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YACtC,IAAI,MAAM,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACzC,OAAO,EAAE,CAAC;gBACV,OAAO;YACT,CAAC;YACD,qEAAqE;YACrE,0EAA0E;YAC1E,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;QACpC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,SAAS,GAAG,IAAI,OAAO,EAAU,CAAC;AAExC;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB,CACjC,UAA6E,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC;IAE7G,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,OAAO,MAAM,CAAC,EAAE,KAAK,UAAU,IAAI,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,SAAS;QACvE,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACtB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,YAAoB,sBAAsB,EAC1C,UAAsC,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC;IAEtE,IAAI,KAAiC,CAAC;IACtC,MAAM,KAAK,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAC1C,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IACH,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IACjE,CAAC;YAAS,CAAC;QACT,IAAI,KAAK,KAAK,SAAS;YAAE,YAAY,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC"}
@@ -10,6 +10,8 @@ export interface ExportResult {
10
10
  manifest: Manifest;
11
11
  sanitized: boolean;
12
12
  wroteTo: string | null;
13
+ /** Manifest posture warnings (removed keys, removed hook fields, removed packs, removed commands), one formatted line each; the CLI prints them on stderr. */
14
+ warnings: string[];
13
15
  }
14
16
  export declare const SANITIZE_FOOTER: string;
15
17
  export declare function exportManifest(opts?: ExportOptions): ExportResult;
@@ -17,7 +19,7 @@ export declare function exportManifest(opts?: ExportOptions): ExportResult;
17
19
  * Best-effort sanitiser. Walks the manifest, replaces `/home/<user>/...` paths
18
20
  * with `~/...` and redacts env values whose key looks credential-shaped. Does
19
21
  * NOT touch command:[] entries (they often contain absolute paths that are
20
- * intentional and not secret) and does NOT inspect policy ledger_tag values.
22
+ * intentional and not secret).
21
23
  */
22
24
  export declare function sanitize(value: unknown, homeDir: string): unknown;
23
25
  declare function isInsideEnvBlock(pathSegs: (string | number)[]): boolean;