@lannguyensi/harness 0.64.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 (710) hide show
  1. package/CHANGELOG.md +64 -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 -345
  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 -713
  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 -387
  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 +9 -2131
  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 -245
  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/{delegate/register.d.ts → register-gate-group.d.ts} +1 -1
  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 +1 -1
  145. package/dist/cli/register-operator-lifecycle.js +3 -100
  146. package/dist/cli/register-operator-lifecycle.js.map +1 -1
  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-audit-group.d.ts → register-setup-group.d.ts} +1 -1
  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.js +2 -19
  160. package/dist/cli/remove/register.js.map +1 -1
  161. package/dist/cli/shell-quote.d.ts +7 -0
  162. package/dist/cli/shell-quote.js +17 -0
  163. package/dist/cli/shell-quote.js.map +1 -0
  164. package/dist/cli/uninstall/index.d.ts +4 -2
  165. package/dist/cli/uninstall/index.js +15 -7
  166. package/dist/cli/uninstall/index.js.map +1 -1
  167. package/dist/cli/uninstall/register.js +6 -4
  168. package/dist/cli/uninstall/register.js.map +1 -1
  169. package/dist/cli/uninstall/snapshot.d.ts +15 -0
  170. package/dist/cli/uninstall/snapshot.js +38 -0
  171. package/dist/cli/uninstall/snapshot.js.map +1 -1
  172. package/dist/cli/validate/checks.d.ts +0 -77
  173. package/dist/cli/validate/checks.js +3 -1049
  174. package/dist/cli/validate/checks.js.map +1 -1
  175. package/dist/cli/validate/index.js +19 -15
  176. package/dist/cli/validate/index.js.map +1 -1
  177. package/dist/index.d.ts +0 -3
  178. package/dist/index.js +0 -3
  179. package/dist/index.js.map +1 -1
  180. package/dist/io/claude-mcp.d.ts +1 -1
  181. package/dist/io/claude-mcp.js +27 -14
  182. package/dist/io/claude-mcp.js.map +1 -1
  183. package/dist/io/harness-lock.js +2 -2
  184. package/dist/io/harness-lock.js.map +1 -1
  185. package/dist/io/lock.d.ts +0 -26
  186. package/dist/io/lock.js +10 -27
  187. package/dist/io/lock.js.map +1 -1
  188. package/dist/io/merge-settings.js +6 -4
  189. package/dist/io/merge-settings.js.map +1 -1
  190. package/dist/io/project-name.d.ts +22 -39
  191. package/dist/io/project-name.js +25 -42
  192. package/dist/io/project-name.js.map +1 -1
  193. package/dist/io/read-regular-file.d.ts +103 -40
  194. package/dist/io/read-regular-file.js +196 -35
  195. package/dist/io/read-regular-file.js.map +1 -1
  196. package/dist/io/restart-hints.js +3 -6
  197. package/dist/io/restart-hints.js.map +1 -1
  198. package/dist/io/version-compare.d.ts +1 -3
  199. package/dist/io/version-compare.js +1 -3
  200. package/dist/io/version-compare.js.map +1 -1
  201. package/dist/io/write-regular-file.d.ts +30 -0
  202. package/dist/io/write-regular-file.js +85 -0
  203. package/dist/io/write-regular-file.js.map +1 -0
  204. package/dist/overrides/index.d.ts +1 -0
  205. package/dist/overrides/index.js +1 -0
  206. package/dist/overrides/index.js.map +1 -1
  207. package/dist/overrides/merge-layers.d.ts +43 -0
  208. package/dist/overrides/merge-layers.js +76 -0
  209. package/dist/overrides/merge-layers.js.map +1 -0
  210. package/dist/overrides/merge.d.ts +16 -0
  211. package/dist/overrides/merge.js +21 -8
  212. package/dist/overrides/merge.js.map +1 -1
  213. package/dist/policy-packs/builtin/branch-protection-runtime.d.ts +4 -69
  214. package/dist/policy-packs/builtin/branch-protection-runtime.js +12 -84
  215. package/dist/policy-packs/builtin/branch-protection-runtime.js.map +1 -1
  216. package/dist/policy-packs/builtin/branch-protection.d.ts +7 -30
  217. package/dist/policy-packs/builtin/branch-protection.js +56 -89
  218. package/dist/policy-packs/builtin/branch-protection.js.map +1 -1
  219. package/dist/policy-packs/config-check.d.ts +7 -5
  220. package/dist/policy-packs/config-check.js +2 -2
  221. package/dist/policy-packs/config-check.js.map +1 -1
  222. package/dist/policy-packs/expand.d.ts +1 -3
  223. package/dist/policy-packs/expand.js +5 -42
  224. package/dist/policy-packs/expand.js.map +1 -1
  225. package/dist/policy-packs/index.d.ts +3 -3
  226. package/dist/policy-packs/index.js +2 -2
  227. package/dist/policy-packs/index.js.map +1 -1
  228. package/dist/policy-packs/registry.d.ts +9 -38
  229. package/dist/policy-packs/registry.js +5 -65
  230. package/dist/policy-packs/registry.js.map +1 -1
  231. package/dist/policy-packs/runtime.d.ts +0 -4
  232. package/dist/policy-packs/runtime.js +9 -22
  233. package/dist/policy-packs/runtime.js.map +1 -1
  234. package/dist/policy-packs/types.d.ts +0 -19
  235. package/dist/policy-packs/ux-compare.d.ts +1 -11
  236. package/dist/policy-packs/ux-compare.js +6 -42
  237. package/dist/policy-packs/ux-compare.js.map +1 -1
  238. package/dist/policy-packs/ux-drift-check.d.ts +5 -5
  239. package/dist/policy-packs/ux-drift-check.js +17 -22
  240. package/dist/policy-packs/ux-drift-check.js.map +1 -1
  241. package/dist/policy-packs/version-check.d.ts +5 -26
  242. package/dist/policy-packs/version-check.js +19 -74
  243. package/dist/policy-packs/version-check.js.map +1 -1
  244. package/dist/probes/memory.d.ts +1 -1
  245. package/dist/probes/memory.js +1 -1
  246. package/dist/probes/memory.js.map +1 -1
  247. package/dist/runtime/agent-facing.d.ts +9 -0
  248. package/dist/runtime/agent-facing.js +28 -14
  249. package/dist/runtime/agent-facing.js.map +1 -1
  250. package/dist/runtime/bounded-text.d.ts +15 -0
  251. package/dist/runtime/bounded-text.js +27 -0
  252. package/dist/runtime/bounded-text.js.map +1 -0
  253. package/dist/runtime/git-branch.d.ts +125 -0
  254. package/dist/runtime/git-branch.js +381 -0
  255. package/dist/runtime/git-branch.js.map +1 -0
  256. package/dist/runtime/hermetic-spawn-guard.d.ts +2 -2
  257. package/dist/runtime/hermetic-spawn-guard.js +24 -34
  258. package/dist/runtime/hermetic-spawn-guard.js.map +1 -1
  259. package/dist/runtime/home-dir.js +3 -2
  260. package/dist/runtime/home-dir.js.map +1 -1
  261. package/dist/runtime/tool-name-aliases.d.ts +0 -6
  262. package/dist/runtime/tool-name-aliases.js +5 -18
  263. package/dist/runtime/tool-name-aliases.js.map +1 -1
  264. package/dist/schema/grounding.d.ts +7 -54
  265. package/dist/schema/grounding.js +10 -12
  266. package/dist/schema/grounding.js.map +1 -1
  267. package/dist/schema/hooks.d.ts +39 -136
  268. package/dist/schema/hooks.js +3 -6
  269. package/dist/schema/hooks.js.map +1 -1
  270. package/dist/schema/index.d.ts +114 -3828
  271. package/dist/schema/index.js +41 -80
  272. package/dist/schema/index.js.map +1 -1
  273. package/dist/schema/memory.d.ts +54 -131
  274. package/dist/schema/memory.js +2 -2
  275. package/dist/schema/memory.js.map +1 -1
  276. package/dist/schema/policy-packs.d.ts +3 -45
  277. package/dist/schema/policy-packs.js +7 -13
  278. package/dist/schema/policy-packs.js.map +1 -1
  279. package/dist/schema/policy-ux.d.ts +7 -0
  280. package/dist/schema/policy-ux.js +18 -0
  281. package/dist/schema/policy-ux.js.map +1 -0
  282. package/dist/schema/removed-keys.d.ts +185 -0
  283. package/dist/schema/removed-keys.js +531 -0
  284. package/dist/schema/removed-keys.js.map +1 -0
  285. package/dist/schema/tools.d.ts +30 -268
  286. package/dist/schema/tools.js +4 -4
  287. package/dist/schema/tools.js.map +1 -1
  288. package/package.json +5 -16
  289. package/dist/cli/approve/branch-protection.d.ts +0 -69
  290. package/dist/cli/approve/branch-protection.js +0 -144
  291. package/dist/cli/approve/branch-protection.js.map +0 -1
  292. package/dist/cli/approve/risk.d.ts +0 -112
  293. package/dist/cli/approve/risk.js +0 -197
  294. package/dist/cli/approve/risk.js.map +0 -1
  295. package/dist/cli/approve/stdin-report.d.ts +0 -57
  296. package/dist/cli/approve/stdin-report.js +0 -145
  297. package/dist/cli/approve/stdin-report.js.map +0 -1
  298. package/dist/cli/approve/understanding.d.ts +0 -410
  299. package/dist/cli/approve/understanding.js +0 -996
  300. package/dist/cli/approve/understanding.js.map +0 -1
  301. package/dist/cli/audit.d.ts +0 -80
  302. package/dist/cli/audit.js +0 -252
  303. package/dist/cli/audit.js.map +0 -1
  304. package/dist/cli/delegate/index.d.ts +0 -76
  305. package/dist/cli/delegate/index.js +0 -444
  306. package/dist/cli/delegate/index.js.map +0 -1
  307. package/dist/cli/delegate/register.js +0 -90
  308. package/dist/cli/delegate/register.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/expire-on-tool-match.d.ts +0 -15
  319. package/dist/cli/doctor/expire-on-tool-match.js +0 -58
  320. package/dist/cli/doctor/expire-on-tool-match.js.map +0 -1
  321. package/dist/cli/doctor/rogue-ledger.d.ts +0 -53
  322. package/dist/cli/doctor/rogue-ledger.js +0 -153
  323. package/dist/cli/doctor/rogue-ledger.js.map +0 -1
  324. package/dist/cli/doctor/session-start-preflight-setup-version.d.ts +0 -83
  325. package/dist/cli/doctor/session-start-preflight-setup-version.js +0 -114
  326. package/dist/cli/doctor/session-start-preflight-setup-version.js.map +0 -1
  327. package/dist/cli/doctor/settings-drift.d.ts +0 -25
  328. package/dist/cli/doctor/settings-drift.js +0 -213
  329. package/dist/cli/doctor/settings-drift.js.map +0 -1
  330. package/dist/cli/doctor/toolchain-parity.d.ts +0 -63
  331. package/dist/cli/doctor/toolchain-parity.js +0 -154
  332. package/dist/cli/doctor/toolchain-parity.js.map +0 -1
  333. package/dist/cli/doctor/ug-auto-approvals.d.ts +0 -40
  334. package/dist/cli/doctor/ug-auto-approvals.js +0 -91
  335. package/dist/cli/doctor/ug-auto-approvals.js.map +0 -1
  336. package/dist/cli/doctor/ug-delegations.d.ts +0 -26
  337. package/dist/cli/doctor/ug-delegations.js +0 -121
  338. package/dist/cli/doctor/ug-delegations.js.map +0 -1
  339. package/dist/cli/doctor/ug-inflight.d.ts +0 -35
  340. package/dist/cli/doctor/ug-inflight.js +0 -57
  341. package/dist/cli/doctor/ug-inflight.js.map +0 -1
  342. package/dist/cli/doctor/understanding-mode-env.d.ts +0 -51
  343. package/dist/cli/doctor/understanding-mode-env.js +0 -98
  344. package/dist/cli/doctor/understanding-mode-env.js.map +0 -1
  345. package/dist/cli/dry-run.d.ts +0 -58
  346. package/dist/cli/dry-run.js +0 -283
  347. package/dist/cli/dry-run.js.map +0 -1
  348. package/dist/cli/enriched-event.d.ts +0 -35
  349. package/dist/cli/enriched-event.js +0 -60
  350. package/dist/cli/enriched-event.js.map +0 -1
  351. package/dist/cli/event-input.d.ts +0 -28
  352. package/dist/cli/event-input.js +0 -73
  353. package/dist/cli/event-input.js.map +0 -1
  354. package/dist/cli/explain-action.d.ts +0 -25
  355. package/dist/cli/explain-action.js +0 -57
  356. package/dist/cli/explain-action.js.map +0 -1
  357. package/dist/cli/explain-policy.d.ts +0 -147
  358. package/dist/cli/explain-policy.js +0 -248
  359. package/dist/cli/explain-policy.js.map +0 -1
  360. package/dist/cli/explain.d.ts +0 -31
  361. package/dist/cli/explain.js +0 -159
  362. package/dist/cli/explain.js.map +0 -1
  363. package/dist/cli/gc/index.d.ts +0 -63
  364. package/dist/cli/gc/index.js +0 -566
  365. package/dist/cli/gc/index.js.map +0 -1
  366. package/dist/cli/pack/approve-escape.d.ts +0 -19
  367. package/dist/cli/pack/approve-escape.js +0 -190
  368. package/dist/cli/pack/approve-escape.js.map +0 -1
  369. package/dist/cli/pack/auto-approve-path.d.ts +0 -146
  370. package/dist/cli/pack/auto-approve-path.js +0 -462
  371. package/dist/cli/pack/auto-approve-path.js.map +0 -1
  372. package/dist/cli/pack/hook-codex-post-tool-use.d.ts +0 -25
  373. package/dist/cli/pack/hook-codex-post-tool-use.js +0 -160
  374. package/dist/cli/pack/hook-codex-post-tool-use.js.map +0 -1
  375. package/dist/cli/pack/hook-codex-pre-tool-use.d.ts +0 -48
  376. package/dist/cli/pack/hook-codex-pre-tool-use.js +0 -474
  377. package/dist/cli/pack/hook-codex-pre-tool-use.js.map +0 -1
  378. package/dist/cli/pack/hook-codex-stop.d.ts +0 -35
  379. package/dist/cli/pack/hook-codex-stop.js +0 -329
  380. package/dist/cli/pack/hook-codex-stop.js.map +0 -1
  381. package/dist/cli/pack/hook-codex-user-prompt-submit.d.ts +0 -24
  382. package/dist/cli/pack/hook-codex-user-prompt-submit.js +0 -93
  383. package/dist/cli/pack/hook-codex-user-prompt-submit.js.map +0 -1
  384. package/dist/cli/pack/hook-post-merge-gate-record.d.ts +0 -37
  385. package/dist/cli/pack/hook-post-merge-gate-record.js +0 -190
  386. package/dist/cli/pack/hook-post-merge-gate-record.js.map +0 -1
  387. package/dist/cli/pack/hook-post-merge-gate.d.ts +0 -34
  388. package/dist/cli/pack/hook-post-merge-gate.js +0 -277
  389. package/dist/cli/pack/hook-post-merge-gate.js.map +0 -1
  390. package/dist/cli/pack/hook-post-tool-use.d.ts +0 -45
  391. package/dist/cli/pack/hook-post-tool-use.js +0 -137
  392. package/dist/cli/pack/hook-post-tool-use.js.map +0 -1
  393. package/dist/cli/pack/hook-pre-tool-use.d.ts +0 -92
  394. package/dist/cli/pack/hook-pre-tool-use.js +0 -1328
  395. package/dist/cli/pack/hook-pre-tool-use.js.map +0 -1
  396. package/dist/cli/pack/hook-runtime-reality.d.ts +0 -63
  397. package/dist/cli/pack/hook-runtime-reality.js +0 -210
  398. package/dist/cli/pack/hook-runtime-reality.js.map +0 -1
  399. package/dist/cli/pack/hook-solution-acceptance-writeguard.d.ts +0 -32
  400. package/dist/cli/pack/hook-solution-acceptance-writeguard.js +0 -438
  401. package/dist/cli/pack/hook-solution-acceptance-writeguard.js.map +0 -1
  402. package/dist/cli/pack/hook-solution-acceptance.d.ts +0 -157
  403. package/dist/cli/pack/hook-solution-acceptance.js +0 -530
  404. package/dist/cli/pack/hook-solution-acceptance.js.map +0 -1
  405. package/dist/cli/pack/hook-stay-in-scope.d.ts +0 -37
  406. package/dist/cli/pack/hook-stay-in-scope.js +0 -128
  407. package/dist/cli/pack/hook-stay-in-scope.js.map +0 -1
  408. package/dist/cli/pack/hook-subagent-start.d.ts +0 -23
  409. package/dist/cli/pack/hook-subagent-start.js +0 -88
  410. package/dist/cli/pack/hook-subagent-start.js.map +0 -1
  411. package/dist/cli/pack/hook-subagent-stop.d.ts +0 -19
  412. package/dist/cli/pack/hook-subagent-stop.js +0 -41
  413. package/dist/cli/pack/hook-subagent-stop.js.map +0 -1
  414. package/dist/cli/pack/hook-track-active-claim.d.ts +0 -27
  415. package/dist/cli/pack/hook-track-active-claim.js +0 -275
  416. package/dist/cli/pack/hook-track-active-claim.js.map +0 -1
  417. package/dist/cli/pack/transcript-report-scan.d.ts +0 -71
  418. package/dist/cli/pack/transcript-report-scan.js +0 -359
  419. package/dist/cli/pack/transcript-report-scan.js.map +0 -1
  420. package/dist/cli/pack/understanding-report-schema-hint.d.ts +0 -26
  421. package/dist/cli/pack/understanding-report-schema-hint.js +0 -120
  422. package/dist/cli/pack/understanding-report-schema-hint.js.map +0 -1
  423. package/dist/cli/pack/upgrade.d.ts +0 -32
  424. package/dist/cli/pack/upgrade.js +0 -273
  425. package/dist/cli/pack/upgrade.js.map +0 -1
  426. package/dist/cli/pause/index.d.ts +0 -113
  427. package/dist/cli/pause/index.js +0 -251
  428. package/dist/cli/pause/index.js.map +0 -1
  429. package/dist/cli/pause-check.d.ts +0 -22
  430. package/dist/cli/pause-check.js +0 -54
  431. package/dist/cli/pause-check.js.map +0 -1
  432. package/dist/cli/policy/intercept.d.ts +0 -233
  433. package/dist/cli/policy/intercept.js +0 -1022
  434. package/dist/cli/policy/intercept.js.map +0 -1
  435. package/dist/cli/policy/risk-envelope-enrichment.d.ts +0 -40
  436. package/dist/cli/policy/risk-envelope-enrichment.js +0 -110
  437. package/dist/cli/policy/risk-envelope-enrichment.js.map +0 -1
  438. package/dist/cli/record/index.d.ts +0 -81
  439. package/dist/cli/record/index.js +0 -348
  440. package/dist/cli/record/index.js.map +0 -1
  441. package/dist/cli/register-audit-group.js +0 -91
  442. package/dist/cli/register-audit-group.js.map +0 -1
  443. package/dist/cli/resolve-env.d.ts +0 -32
  444. package/dist/cli/resolve-env.js +0 -46
  445. package/dist/cli/resolve-env.js.map +0 -1
  446. package/dist/cli/session-export/index.d.ts +0 -46
  447. package/dist/cli/session-export/index.js +0 -169
  448. package/dist/cli/session-export/index.js.map +0 -1
  449. package/dist/cli/session-export/redact.d.ts +0 -22
  450. package/dist/cli/session-export/redact.js +0 -47
  451. package/dist/cli/session-export/redact.js.map +0 -1
  452. package/dist/cli/session-export/transcript.d.ts +0 -24
  453. package/dist/cli/session-export/transcript.js +0 -164
  454. package/dist/cli/session-export/transcript.js.map +0 -1
  455. package/dist/cli/session-start/branch-check.d.ts +0 -18
  456. package/dist/cli/session-start/branch-check.js +0 -140
  457. package/dist/cli/session-start/branch-check.js.map +0 -1
  458. package/dist/cli/session-start/index.d.ts +0 -121
  459. package/dist/cli/session-start/index.js +0 -591
  460. package/dist/cli/session-start/index.js.map +0 -1
  461. package/dist/cli/session-start/shared-options.d.ts +0 -103
  462. package/dist/cli/session-start/shared-options.js +0 -107
  463. package/dist/cli/session-start/shared-options.js.map +0 -1
  464. package/dist/cli/session-start/stale-base-check.d.ts +0 -46
  465. package/dist/cli/session-start/stale-base-check.js +0 -352
  466. package/dist/cli/session-start/stale-base-check.js.map +0 -1
  467. package/dist/cli/session-start/toolchain-parity.d.ts +0 -267
  468. package/dist/cli/session-start/toolchain-parity.js +0 -797
  469. package/dist/cli/session-start/toolchain-parity.js.map +0 -1
  470. package/dist/cli/smoke/assertions.d.ts +0 -46
  471. package/dist/cli/smoke/assertions.js +0 -170
  472. package/dist/cli/smoke/assertions.js.map +0 -1
  473. package/dist/cli/smoke/index.d.ts +0 -76
  474. package/dist/cli/smoke/index.js +0 -245
  475. package/dist/cli/smoke/index.js.map +0 -1
  476. package/dist/cli/smoke/runner.d.ts +0 -55
  477. package/dist/cli/smoke/runner.js +0 -134
  478. package/dist/cli/smoke/runner.js.map +0 -1
  479. package/dist/cli/smoke/stream-parser.d.ts +0 -65
  480. package/dist/cli/smoke/stream-parser.js +0 -115
  481. package/dist/cli/smoke/stream-parser.js.map +0 -1
  482. package/dist/cli/test-risk.d.ts +0 -27
  483. package/dist/cli/test-risk.js +0 -38
  484. package/dist/cli/test-risk.js.map +0 -1
  485. package/dist/io/display-path.d.ts +0 -11
  486. package/dist/io/display-path.js +0 -29
  487. package/dist/io/display-path.js.map +0 -1
  488. package/dist/io/duration.d.ts +0 -5
  489. package/dist/io/duration.js +0 -50
  490. package/dist/io/duration.js.map +0 -1
  491. package/dist/io/extract.d.ts +0 -79
  492. package/dist/io/extract.js +0 -226
  493. package/dist/io/extract.js.map +0 -1
  494. package/dist/io/ledger-record.d.ts +0 -83
  495. package/dist/io/ledger-record.js +0 -301
  496. package/dist/io/ledger-record.js.map +0 -1
  497. package/dist/io/read-json-dir-entries.d.ts +0 -36
  498. package/dist/io/read-json-dir-entries.js +0 -48
  499. package/dist/io/read-json-dir-entries.js.map +0 -1
  500. package/dist/io/safe-json-parse.d.ts +0 -5
  501. package/dist/io/safe-json-parse.js +0 -21
  502. package/dist/io/safe-json-parse.js.map +0 -1
  503. package/dist/policies/index.d.ts +0 -5
  504. package/dist/policies/index.js +0 -6
  505. package/dist/policies/index.js.map +0 -1
  506. package/dist/policies/ledger-client.d.ts +0 -113
  507. package/dist/policies/ledger-client.js +0 -500
  508. package/dist/policies/ledger-client.js.map +0 -1
  509. package/dist/policies/producers.d.ts +0 -12
  510. package/dist/policies/producers.js +0 -61
  511. package/dist/policies/producers.js.map +0 -1
  512. package/dist/policies/requires.d.ts +0 -75
  513. package/dist/policies/requires.js +0 -240
  514. package/dist/policies/requires.js.map +0 -1
  515. package/dist/policies/timestamp.d.ts +0 -14
  516. package/dist/policies/timestamp.js +0 -36
  517. package/dist/policies/timestamp.js.map +0 -1
  518. package/dist/policy-packs/builtin/permission-profiles.d.ts +0 -11
  519. package/dist/policy-packs/builtin/permission-profiles.js +0 -74
  520. package/dist/policy-packs/builtin/permission-profiles.js.map +0 -1
  521. package/dist/policy-packs/builtin/post-merge-gate-runtime.d.ts +0 -286
  522. package/dist/policy-packs/builtin/post-merge-gate-runtime.js +0 -397
  523. package/dist/policy-packs/builtin/post-merge-gate-runtime.js.map +0 -1
  524. package/dist/policy-packs/builtin/post-merge-gate.d.ts +0 -56
  525. package/dist/policy-packs/builtin/post-merge-gate.js +0 -347
  526. package/dist/policy-packs/builtin/post-merge-gate.js.map +0 -1
  527. package/dist/policy-packs/builtin/solution-acceptance-reconnect.d.ts +0 -50
  528. package/dist/policy-packs/builtin/solution-acceptance-reconnect.js +0 -151
  529. package/dist/policy-packs/builtin/solution-acceptance-reconnect.js.map +0 -1
  530. package/dist/policy-packs/builtin/solution-acceptance-runtime.d.ts +0 -323
  531. package/dist/policy-packs/builtin/solution-acceptance-runtime.js +0 -672
  532. package/dist/policy-packs/builtin/solution-acceptance-runtime.js.map +0 -1
  533. package/dist/policy-packs/builtin/solution-acceptance.d.ts +0 -45
  534. package/dist/policy-packs/builtin/solution-acceptance.js +0 -226
  535. package/dist/policy-packs/builtin/solution-acceptance.js.map +0 -1
  536. package/dist/policy-packs/builtin/understanding-before-execution/active-claim.d.ts +0 -25
  537. package/dist/policy-packs/builtin/understanding-before-execution/active-claim.js +0 -94
  538. package/dist/policy-packs/builtin/understanding-before-execution/active-claim.js.map +0 -1
  539. package/dist/policy-packs/builtin/understanding-before-execution/auto-approve-default.d.ts +0 -35
  540. package/dist/policy-packs/builtin/understanding-before-execution/auto-approve-default.js +0 -86
  541. package/dist/policy-packs/builtin/understanding-before-execution/auto-approve-default.js.map +0 -1
  542. package/dist/policy-packs/builtin/understanding-before-execution/auto-approve.d.ts +0 -210
  543. package/dist/policy-packs/builtin/understanding-before-execution/auto-approve.js +0 -361
  544. package/dist/policy-packs/builtin/understanding-before-execution/auto-approve.js.map +0 -1
  545. package/dist/policy-packs/builtin/understanding-before-execution/delegation-markers.d.ts +0 -304
  546. package/dist/policy-packs/builtin/understanding-before-execution/delegation-markers.js +0 -734
  547. package/dist/policy-packs/builtin/understanding-before-execution/delegation-markers.js.map +0 -1
  548. package/dist/policy-packs/builtin/understanding-before-execution/expiry-reason.d.ts +0 -36
  549. package/dist/policy-packs/builtin/understanding-before-execution/expiry-reason.js +0 -73
  550. package/dist/policy-packs/builtin/understanding-before-execution/expiry-reason.js.map +0 -1
  551. package/dist/policy-packs/builtin/understanding-before-execution/index.d.ts +0 -19
  552. package/dist/policy-packs/builtin/understanding-before-execution/index.js +0 -83
  553. package/dist/policy-packs/builtin/understanding-before-execution/index.js.map +0 -1
  554. package/dist/policy-packs/builtin/understanding-before-execution/inflight-records.d.ts +0 -135
  555. package/dist/policy-packs/builtin/understanding-before-execution/inflight-records.js +0 -643
  556. package/dist/policy-packs/builtin/understanding-before-execution/inflight-records.js.map +0 -1
  557. package/dist/policy-packs/builtin/understanding-before-execution/ledger.d.ts +0 -25
  558. package/dist/policy-packs/builtin/understanding-before-execution/ledger.js +0 -56
  559. package/dist/policy-packs/builtin/understanding-before-execution/ledger.js.map +0 -1
  560. package/dist/policy-packs/builtin/understanding-before-execution/lifecycle.d.ts +0 -20
  561. package/dist/policy-packs/builtin/understanding-before-execution/lifecycle.js +0 -106
  562. package/dist/policy-packs/builtin/understanding-before-execution/lifecycle.js.map +0 -1
  563. package/dist/policy-packs/builtin/understanding-before-execution/markers.d.ts +0 -126
  564. package/dist/policy-packs/builtin/understanding-before-execution/markers.js +0 -245
  565. package/dist/policy-packs/builtin/understanding-before-execution/markers.js.map +0 -1
  566. package/dist/policy-packs/builtin/understanding-before-execution/measured-permission-modes.d.ts +0 -29
  567. package/dist/policy-packs/builtin/understanding-before-execution/measured-permission-modes.js +0 -82
  568. package/dist/policy-packs/builtin/understanding-before-execution/measured-permission-modes.js.map +0 -1
  569. package/dist/policy-packs/builtin/understanding-before-execution/permission-mode-observations.d.ts +0 -71
  570. package/dist/policy-packs/builtin/understanding-before-execution/permission-mode-observations.js +0 -175
  571. package/dist/policy-packs/builtin/understanding-before-execution/permission-mode-observations.js.map +0 -1
  572. package/dist/policy-packs/builtin/understanding-before-execution/persisted-reports.d.ts +0 -625
  573. package/dist/policy-packs/builtin/understanding-before-execution/persisted-reports.js +0 -1076
  574. package/dist/policy-packs/builtin/understanding-before-execution/persisted-reports.js.map +0 -1
  575. package/dist/policy-packs/builtin/understanding-before-execution/post-tool-use-boundary.d.ts +0 -128
  576. package/dist/policy-packs/builtin/understanding-before-execution/post-tool-use-boundary.js +0 -213
  577. package/dist/policy-packs/builtin/understanding-before-execution/post-tool-use-boundary.js.map +0 -1
  578. package/dist/policy-packs/builtin/understanding-before-execution/stay-in-scope-config.d.ts +0 -129
  579. package/dist/policy-packs/builtin/understanding-before-execution/stay-in-scope-config.js +0 -166
  580. package/dist/policy-packs/builtin/understanding-before-execution/stay-in-scope-config.js.map +0 -1
  581. package/dist/policy-packs/builtin/understanding-before-execution/task-markers.d.ts +0 -164
  582. package/dist/policy-packs/builtin/understanding-before-execution/task-markers.js +0 -275
  583. package/dist/policy-packs/builtin/understanding-before-execution/task-markers.js.map +0 -1
  584. package/dist/policy-packs/builtin/understanding-before-execution-runtime.d.ts +0 -1
  585. package/dist/policy-packs/builtin/understanding-before-execution-runtime.js +0 -10
  586. package/dist/policy-packs/builtin/understanding-before-execution-runtime.js.map +0 -1
  587. package/dist/policy-packs/builtin/understanding-before-execution.d.ts +0 -526
  588. package/dist/policy-packs/builtin/understanding-before-execution.js +0 -1078
  589. package/dist/policy-packs/builtin/understanding-before-execution.js.map +0 -1
  590. package/dist/policy-packs/permission-translator.d.ts +0 -9
  591. package/dist/policy-packs/permission-translator.js +0 -76
  592. package/dist/policy-packs/permission-translator.js.map +0 -1
  593. package/dist/runtime/action-envelope.d.ts +0 -64
  594. package/dist/runtime/action-envelope.js +0 -46
  595. package/dist/runtime/action-envelope.js.map +0 -1
  596. package/dist/runtime/approval-signing.d.ts +0 -111
  597. package/dist/runtime/approval-signing.js +0 -384
  598. package/dist/runtime/approval-signing.js.map +0 -1
  599. package/dist/runtime/bash-match-facts.d.ts +0 -60
  600. package/dist/runtime/bash-match-facts.js +0 -196
  601. package/dist/runtime/bash-match-facts.js.map +0 -1
  602. package/dist/runtime/bash-match-registry.d.ts +0 -112
  603. package/dist/runtime/bash-match-registry.js +0 -406
  604. package/dist/runtime/bash-match-registry.js.map +0 -1
  605. package/dist/runtime/bash-prefix-parse.d.ts +0 -31
  606. package/dist/runtime/bash-prefix-parse.js +0 -576
  607. package/dist/runtime/bash-prefix-parse.js.map +0 -1
  608. package/dist/runtime/command-normalize.d.ts +0 -658
  609. package/dist/runtime/command-normalize.js +0 -2410
  610. package/dist/runtime/command-normalize.js.map +0 -1
  611. package/dist/runtime/deletion-target-resolve.d.ts +0 -28
  612. package/dist/runtime/deletion-target-resolve.js +0 -1078
  613. package/dist/runtime/deletion-target-resolve.js.map +0 -1
  614. package/dist/runtime/destructive-shell-floor.d.ts +0 -19
  615. package/dist/runtime/destructive-shell-floor.js +0 -611
  616. package/dist/runtime/destructive-shell-floor.js.map +0 -1
  617. package/dist/runtime/environment-resolver.d.ts +0 -36
  618. package/dist/runtime/environment-resolver.js +0 -138
  619. package/dist/runtime/environment-resolver.js.map +0 -1
  620. package/dist/runtime/git-context.d.ts +0 -201
  621. package/dist/runtime/git-context.js +0 -422
  622. package/dist/runtime/git-context.js.map +0 -1
  623. package/dist/runtime/index.d.ts +0 -12
  624. package/dist/runtime/index.js +0 -13
  625. package/dist/runtime/index.js.map +0 -1
  626. package/dist/runtime/intercept.d.ts +0 -623
  627. package/dist/runtime/intercept.js +0 -1384
  628. package/dist/runtime/intercept.js.map +0 -1
  629. package/dist/runtime/kube-context.d.ts +0 -16
  630. package/dist/runtime/kube-context.js +0 -63
  631. package/dist/runtime/kube-context.js.map +0 -1
  632. package/dist/runtime/kubectl-target-parse.d.ts +0 -31
  633. package/dist/runtime/kubectl-target-parse.js +0 -249
  634. package/dist/runtime/kubectl-target-parse.js.map +0 -1
  635. package/dist/runtime/ledger-add.d.ts +0 -16
  636. package/dist/runtime/ledger-add.js +0 -150
  637. package/dist/runtime/ledger-add.js.map +0 -1
  638. package/dist/runtime/ledger-writer.d.ts +0 -27
  639. package/dist/runtime/ledger-writer.js +0 -46
  640. package/dist/runtime/ledger-writer.js.map +0 -1
  641. package/dist/runtime/pause-sentinel.d.ts +0 -60
  642. package/dist/runtime/pause-sentinel.js +0 -156
  643. package/dist/runtime/pause-sentinel.js.map +0 -1
  644. package/dist/runtime/pending-approval.d.ts +0 -23
  645. package/dist/runtime/pending-approval.js +0 -67
  646. package/dist/runtime/pending-approval.js.map +0 -1
  647. package/dist/runtime/read-only-bash.d.ts +0 -141
  648. package/dist/runtime/read-only-bash.js +0 -2204
  649. package/dist/runtime/read-only-bash.js.map +0 -1
  650. package/dist/runtime/recovery-git-commit.d.ts +0 -22
  651. package/dist/runtime/recovery-git-commit.js +0 -284
  652. package/dist/runtime/recovery-git-commit.js.map +0 -1
  653. package/dist/runtime/reject-malformed-session-id.d.ts +0 -8
  654. package/dist/runtime/reject-malformed-session-id.js +0 -16
  655. package/dist/runtime/reject-malformed-session-id.js.map +0 -1
  656. package/dist/runtime/risk-classifier.d.ts +0 -38
  657. package/dist/runtime/risk-classifier.js +0 -311
  658. package/dist/runtime/risk-classifier.js.map +0 -1
  659. package/dist/runtime/session-id.d.ts +0 -113
  660. package/dist/runtime/session-id.js +0 -193
  661. package/dist/runtime/session-id.js.map +0 -1
  662. package/dist/runtime/shell-word.d.ts +0 -62
  663. package/dist/runtime/shell-word.js +0 -410
  664. package/dist/runtime/shell-word.js.map +0 -1
  665. package/dist/runtime/task-providers/agent-tasks.d.ts +0 -105
  666. package/dist/runtime/task-providers/agent-tasks.js +0 -247
  667. package/dist/runtime/task-providers/agent-tasks.js.map +0 -1
  668. package/dist/runtime/when-eval.d.ts +0 -62
  669. package/dist/runtime/when-eval.js +0 -212
  670. package/dist/runtime/when-eval.js.map +0 -1
  671. package/dist/runtime/workflow-policies.d.ts +0 -207
  672. package/dist/runtime/workflow-policies.js +0 -596
  673. package/dist/runtime/workflow-policies.js.map +0 -1
  674. package/dist/schema/audit.d.ts +0 -71
  675. package/dist/schema/audit.js +0 -32
  676. package/dist/schema/audit.js.map +0 -1
  677. package/dist/schema/doctor.d.ts +0 -25
  678. package/dist/schema/doctor.js +0 -23
  679. package/dist/schema/doctor.js.map +0 -1
  680. package/dist/schema/environments.d.ts +0 -215
  681. package/dist/schema/environments.js +0 -101
  682. package/dist/schema/environments.js.map +0 -1
  683. package/dist/schema/extract.d.ts +0 -9
  684. package/dist/schema/extract.js +0 -86
  685. package/dist/schema/extract.js.map +0 -1
  686. package/dist/schema/permission-profiles.d.ts +0 -2292
  687. package/dist/schema/permission-profiles.js +0 -60
  688. package/dist/schema/permission-profiles.js.map +0 -1
  689. package/dist/schema/policies.d.ts +0 -974
  690. package/dist/schema/policies.js +0 -298
  691. package/dist/schema/policies.js.map +0 -1
  692. package/dist/schema/requires.d.ts +0 -131
  693. package/dist/schema/requires.js +0 -88
  694. package/dist/schema/requires.js.map +0 -1
  695. package/dist/schema/risk.d.ts +0 -144
  696. package/dist/schema/risk.js +0 -194
  697. package/dist/schema/risk.js.map +0 -1
  698. package/dist/schema/session-start-preflight.d.ts +0 -10
  699. package/dist/schema/session-start-preflight.js +0 -106
  700. package/dist/schema/session-start-preflight.js.map +0 -1
  701. package/dist/schema/stale-base-check.d.ts +0 -18
  702. package/dist/schema/stale-base-check.js +0 -37
  703. package/dist/schema/stale-base-check.js.map +0 -1
  704. package/dist/schema/toolchain-parity.d.ts +0 -21
  705. package/dist/schema/toolchain-parity.js +0 -48
  706. package/dist/schema/toolchain-parity.js.map +0 -1
  707. package/dist/schema/workflows.d.ts +0 -519
  708. package/dist/schema/workflows.js +0 -81
  709. package/dist/schema/workflows.js.map +0 -1
  710. package/scripts/runtime-reality-docker-probe.mjs +0 -71
@@ -1,23 +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 { ExpireOnToolMatchWarning } from "./expire-on-tool-match.js";
18
- import type { BypassWithoutAutoApproveFinding } from "./bypass-without-auto-approve.js";
19
- import type { SessionStartPreflightSetupVersionFinding } from "./session-start-preflight-setup-version.js";
20
- import type { CodexConfigDriftSection } from "./codex-config-drift.js";
8
+ import type { HookLivenessSection } from "./hook-liveness.js";
21
9
  /**
22
10
  * Phase 6 #6 follow-up — doctor target identifier. Distinct from
23
11
  * `Runtime` (which gates `harness apply --runtime`): doctor only adds
@@ -79,11 +67,9 @@ export type HookVersionReport = {
79
67
  } | {
80
68
  status: "warn";
81
69
  /**
82
- * Which outcome the probe hit, mirroring `PolicyPackVersionGapKind`
83
- * (`src/policy-packs/version-check.ts`) so both hook-level and
84
- * pack-level gaps share one warning vocabulary. Required on
85
- * `warn`: every warn-producing branch of `checkHookVersion`
86
- * 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.
87
73
  */
88
74
  kind: "below_floor" | "probe_failed" | "parse_failed";
89
75
  /**
@@ -112,40 +98,6 @@ export interface HookEntryReport {
112
98
  message?: string;
113
99
  version?: HookVersionReport;
114
100
  }
115
- /**
116
- * A `block`-enforcement policy whose required ledger tag carries a
117
- * `within` freshness window, but no manifest hook produces that tag
118
- * AND the policy itself declares no `producers:` array. The gate will
119
- * wall off whatever it triggers on until the tag is supplied
120
- * out-of-band, with no in-manifest way to keep it satisfied or any
121
- * recovery path visible to the agent. Policies that document the
122
- * recovery in `producers:` (e.g. dogfood-before-release deliberately
123
- * wanting an operator-driven manual smoke summary) are NOT flagged
124
- * here, since that producer is the schema-blessed manual path. See
125
- * tasks ce50df99 (initial check) and f97e152f (producers-respect
126
- * refinement).
127
- */
128
- export interface PolicyProducerGap {
129
- /** The unresolved `requires.ledger_tag`, e.g. `preflight:${REPO}`. */
130
- ledgerTag: string;
131
- /** The `requires.within` window the tag must stay fresh inside. */
132
- within: string;
133
- }
134
- export interface PolicyEntryReport {
135
- name: string;
136
- schemaValid: boolean;
137
- caveat: string;
138
- /** Present when this policy has an unproduced freshness-gated tag. */
139
- producerGap?: PolicyProducerGap;
140
- /**
141
- * True when this policy object was derived from `workflows[]`
142
- * (`isDerivedPolicy`, F7, review round 2) rather than hand-authored
143
- * under `policies:`. Rendered as "(derived from workflows[])" so an
144
- * operator reading `harness doctor` output can tell provenance apart
145
- * without cross-referencing `workflows:` themselves.
146
- */
147
- derived?: boolean;
148
- }
149
101
  /**
150
102
  * A declared policy pack whose `source` or builtin name does not
151
103
  * resolve. The pack appears in `manifest.policy_packs[]` (so the
@@ -173,31 +125,27 @@ export interface PolicyPackUnresolved {
173
125
  */
174
126
  export interface PolicyPackConfigIssue {
175
127
  name: string;
176
- /** Dotted path inside `pack.config`, e.g. `mode`, `approval_lifecycle.mode`. */
128
+ /** Dotted path inside `pack.config`, e.g. `protected_branches`, `ux.cannot`. */
177
129
  configPath: string;
178
130
  message: string;
179
131
  }
180
132
  /**
181
- * Doctor surface for the pack-level `min_version` floor. Mirrors the
182
- * hook-level `HookEntryReport.version` shape so operators see a
183
- * consistent warning vocabulary regardless of which layer raised the
184
- * gap. Always warn-not-error: a below-floor pack still runs in degraded
185
- * 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.
186
136
  */
187
137
  export interface PolicyPackVersionGapReport {
188
138
  name: string;
189
139
  declaredMinVersion: string;
190
140
  /**
191
- * Numeric run only (never the prerelease or build suffix), so a
192
- * `below_floor` gap from a prerelease of the floor shows an
193
- * `actualVersion` equal to `declaredMinVersion`; `message` carries the
194
- * 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.
195
143
  */
196
144
  actualVersion: string | null;
197
145
  message: string;
198
146
  }
199
147
  /**
200
- * A pack's declared `config.ux` / `config.producers` that textually
148
+ * A pack's declared `config.ux` that textually
201
149
  * diverges from the shipped builtin template for that pack (task
202
150
  * 68b9ad9c). Unlike `PolicyPackConfigIssue`, the value is still SCHEMA-
203
151
  * valid — the gap is that it teaches stale wording (e.g. a pre-fix
@@ -208,7 +156,7 @@ export interface PolicyPackVersionGapReport {
208
156
  */
209
157
  export interface PolicyPackUxDriftReport {
210
158
  name: string;
211
- /** Which sub-field(s) diverge: `ux`, `producers`, or both. */
159
+ /** Which sub-field(s) diverge (today only `ux`). */
212
160
  fields: string[];
213
161
  message: string;
214
162
  }
@@ -222,105 +170,16 @@ export interface PackExpansionRuntimeReport {
222
170
  /** Set when the last apply's `.last-apply` could not be read; names the file. */
223
171
  warning?: string;
224
172
  }
225
- /**
226
- * Doctor surface for the HOOK-level `min_version` floor on a
227
- * policy-pack-EXPANDED hook (task ab634898). Distinct from
228
- * `PolicyPackVersionGapReport` (the pack-level `policy_packs[].min_version`
229
- * floor, a different mechanism checked by `checkPolicyPackVersions`):
230
- * this covers an individual hook a builtin pack contributes, e.g.
231
- * understanding-before-execution's UserPromptSubmit/Stop hooks, each
232
- * declaring its own `min_version` + `version_command`
233
- * (`src/policy-packs/builtin/understanding-before-execution.ts`).
234
- * `expandPolicyPacks` produces the hooks Claude Code actually runs, but
235
- * `manifest.hooks[]` (what `HookEntryReport`/`checkHooks` walk) never
236
- * includes them, so without this section an operator below a pack
237
- * hook's floor saw a clean doctor report. Always warn, never error;
238
- * mirrors the manifest-hook floor (`HookVersionReport`) and the
239
- * pack-level floor. Empty array when every pack-expanded hook that
240
- * declares a floor meets it (or none declare one).
241
- */
242
- export interface PolicyPackHookVersionGapReport {
243
- /** The pack-expanded hook's name, e.g. `policy-pack:understanding-before-execution:user-prompt-submit`. */
244
- name: string;
245
- event: string;
246
- declaredMinVersion: string;
247
- /**
248
- * Which outcome the probe hit; mirrors `PolicyPackVersionGapKind`
249
- * (`src/policy-packs/version-check.ts`) so the hook-level and
250
- * pack-level sections classify gaps the same way instead of the
251
- * renderer having to regex `message` back apart.
252
- */
253
- kind: "below_floor" | "probe_failed" | "parse_failed";
254
- /** Parsed installed version when the probe succeeded; null for `probe_failed` / `parse_failed`, where it is unknown. */
255
- actualVersion: string | null;
256
- /** The `version_command` that was probed, e.g. `["understanding-gate", "--version"]`. */
257
- versionCommand: readonly string[];
258
- message: string;
259
- }
260
173
  export interface PolicyPacksSection {
261
174
  unresolved: PolicyPackUnresolved[];
262
175
  configIssues: PolicyPackConfigIssue[];
263
176
  versionGaps: PolicyPackVersionGapReport[];
264
177
  uxDrift: PolicyPackUxDriftReport[];
265
- solutionAcceptance: Diagnostic[];
266
- }
267
- export interface WorkflowEntryReport {
268
- name: string;
269
- steps: number;
270
- reviewSpawn: "required" | "optional" | "skip" | null;
271
- reviewTemplate: string | null;
272
- mergeGate: "solo" | "agent_tasks_label" | "none" | null;
273
- taskLabels: string[];
274
- }
275
- export interface WorkflowsSectionReport {
276
- declared: number;
277
- templates: number;
278
- entries: WorkflowEntryReport[];
279
- /**
280
- * `checkWorkflowGateWiring` errors (F3, review round 2, 99f47307 Slice
281
- * 1): a `spawn: "required"` review-then-merge workflow whose runtime
282
- * merge gate is not correctly wired (a missing evidence hook, or one
283
- * declared under the right name but the wrong trigger surface/command).
284
- * `harness doctor` previously imported checks selectively and never ran
285
- * this one, so it showed green on exactly this misconfiguration.
286
- * Delegates to the shared validate check, mirroring `templateDrift`.
287
- * Each rolls into `errorCount`.
288
- */
289
- errors: string[];
290
- /**
291
- * `checkWorkflowGateWeakOverlap` warnings (F1, review round 2): a
292
- * hand-authored policy sharing a derived gate's trigger surface but
293
- * weaker than it (does not suppress the derived gate, just worth
294
- * flagging). Each rolls into `warningCount`.
295
- */
296
- warnings: string[];
297
- }
298
- /**
299
- * Phase 7 #6 — Risk Gate wiring health. Reports whether the three Risk
300
- * Gate surfaces (`risk.classifiers[]`, `environments.resolvers[]`, and
301
- * policies carrying a `when:` block) compose coherently. The `warnings`
302
- * catch the inert / fail-closed misconfigurations: `when:`-policies with
303
- * no classifier (every action unclassified), `when:`-policies with no
304
- * resolver (every environment `unknown`), or classifiers / resolvers
305
- * declared but no policy consuming them. The per-decision audit log
306
- * lives in `harness audit` (`policy_decision` rows carry the classifier
307
- * + environment as of Phase 7 #5); doctor reports wiring, not history.
308
- */
309
- export interface RiskGateSection {
310
- /** Count of `risk.classifiers[]`. */
311
- classifiers: number;
312
- /** Count of `environments.resolvers[]`. */
313
- resolvers: number;
314
- /** Count of policies that declare a `when:` block. */
315
- whenPolicies: number;
316
- /** Coherence warnings; each rolls into the doctor `warningCount`. */
317
- warnings: string[];
318
178
  }
319
179
  /**
320
180
  * Grounding wiring health (task 129e1b94). Present only when the manifest
321
181
  * declares an enabled `tools.mcp[grounding-mcp]` entry — without one there
322
- * is no consumer to check (validate's checkPolicyGroundingMcp owns the
323
- * "policies without grounding-mcp" warning). Doctor verifies the projected
182
+ * is no consumer to check. Doctor verifies the projected
324
183
  * evidence-ledger path is usable and that an operator env override does
325
184
  * not silently diverge from `grounding.evidence_ledger.path`.
326
185
  */
@@ -334,66 +193,6 @@ export interface GroundingSection {
334
193
  /** Wiring warnings; each rolls into the doctor `warningCount`. */
335
194
  warnings: string[];
336
195
  }
337
- /**
338
- * Template-policy drift (task adf037c1). `errors` names shipped
339
- * `operator_only` (kill-switch / security) policies this installed
340
- * manifest either lacks entirely or carries in a DOWNGRADED (no longer
341
- * operator_only) shape — a defense an aged manifest never received or
342
- * silently weakened, since `harness apply` does not retroactively add or
343
- * repair default policies. Each rolls into `errorCount` (a real defense
344
- * gap, doctor-convention exit failure). `warnings` names stale
345
- * `doctor.ignore_template_drift` entries that match no shipped policy and
346
- * therefore suppress nothing; each rolls into `warningCount`. Names
347
- * acknowledged via a valid `doctor.ignore_template_drift` entry are
348
- * filtered out of `errors` upstream.
349
- */
350
- export interface TemplateDriftSection {
351
- /** Missing-or-downgraded shipped operator_only policies (each → errorCount). */
352
- errors: string[];
353
- /** Stale/typo'd ignore_template_drift entries that suppress nothing (each → warningCount). */
354
- warnings: string[];
355
- }
356
- /**
357
- * Trigger-boundary drift (task 037cfb7c, follow-up to adf037c1):
358
- * shipped-by-name `bash_match` triggers (hook-level `hooks[].bash_match`
359
- * or policy-level `policies[].trigger.bash_match`) missing a boundary
360
- * alternative the template has, or missing a boundary group entirely.
361
- * Rule and rationale live on `checkTriggerBoundaryDrift` in
362
- * `validate/checks.ts`; the measured incident that motivated this check
363
- * is in the `CHANGELOG.md:#0.49.0` entry for task 037cfb7c. Shape
364
- * mirrors `TemplateDriftSection` immediately above: every `error`
365
- * diagnostic rolls into `errorCount`, every `warning` diagnostic (none
366
- * emitted today; the field exists so a future non-error diagnostic from
367
- * `checkTriggerBoundaryDrift` surfaces here instead of being silently
368
- * dropped by `buildTriggerBoundaryDrift`) rolls into `warningCount`.
369
- * Always present; both arrays empty when every shipped-named trigger's
370
- * boundary covers the template's (or the manifest has none of those
371
- * triggers, or every drift is acknowledged via
372
- * doctor.ignore_template_drift).
373
- */
374
- export interface TriggerBoundaryDriftSection {
375
- /** Stale-boundary bash_match triggers, hook- or policy-level (each → errorCount). */
376
- errors: string[];
377
- /** Reserved for a future non-error diagnostic shape (each → warningCount); empty today. */
378
- warnings: string[];
379
- }
380
- /**
381
- * Hook-budget-vs-ledger-timeout margin (task d20a7e0c, follow-up to
382
- * f1aea826/7bf47554): blocking, ledger-consulting hooks (both directly
383
- * declared `harness policy intercept` hooks and enabled policy-pack
384
- * blockers) whose `budget_ms` does not clear
385
- * `requiredHookBudgetMs(health.timeout_ms)` — see
386
- * `checkHookBudgetLedgerMargin` in `validate/checks.ts` for the full
387
- * derivation. Every entry is a real fail-open gap (a merely SLOW ledger
388
- * can get the hook killed before it can write its fail-closed verdict),
389
- * so each rolls into `errorCount`, mirroring `templateDrift.errors`
390
- * above. Always present; empty when every such hook clears the margin
391
- * (or none exist, or grounding-mcp is not wired).
392
- */
393
- export interface HookBudgetLedgerMarginSection {
394
- /** Each entry names an under-budgeted hook; rolls into errorCount. */
395
- errors: string[];
396
- }
397
196
  export interface DoctorReport {
398
197
  manifestPath: string;
399
198
  manifestVersion: number;
@@ -409,116 +208,15 @@ export interface DoctorReport {
409
208
  * doctor / harness probes. See task 4ddd78ed.
410
209
  */
411
210
  npmGlobalBin?: NpmBinReport;
412
- /**
413
- * Understanding-gate mode env/config divergence (task 24abdecb).
414
- * Present only when `UNDERSTANDING_GATE_MODE` is set in the operator
415
- * environment AND diverges from
416
- * `policy_packs[understanding-before-execution].config.mode`. Always
417
- * advisory (rolls into `warningCount`, never `errorCount`) — see
418
- * `understanding-mode-env.ts` for the full rationale.
419
- */
420
- understandingModeEnv?: UnderstandingModeEnvDivergence;
421
- /**
422
- * Auto-approval listing + last-N metric (ADR
423
- * docs/decisions/2026-08-27-ug-auto-mode-approval.md slice 1,
424
- * agent-tasks 74b4b17d, "Audit and doctor"). Present only when the
425
- * `understanding-before-execution` pack is declared and enabled
426
- * (mirrors `understandingModeEnv`'s gate) — a manifest that never
427
- * uses the pack has no `.approvals/` markers this listing owns an
428
- * opinion about. Purely informational (`ℹ`); never rolls into
429
- * `warningCount`.
430
- */
431
- ugAutoApprovals?: UgAutoApprovalsSection;
432
- /**
433
- * Delegations-on-disk metric (same ADR, slice 3, "Audit and doctor",
434
- * agent-tasks 37ad0b05): `total`/`expired`/`unreadable` counts
435
- * from `harness.generated/.delegations/`, distinct from
436
- * `ugAutoApprovals` (which reads `.approvals/` only). Present only
437
- * when the `understanding-before-execution` pack is declared and
438
- * enabled (mirrors `ugAutoApprovals`'s gate). `delegationsDirPresent`
439
- * mirrors `ugAutoApprovals`'s `approvalsDirPresent`: the rendered line
440
- * stays silent when `.delegations/` does not exist at all, and shows
441
- * the zero-count line when it exists but is empty (both cases resolve
442
- * `total`/`expired`/`unreadable` to `0`). Informational (`ℹ`) unless
443
- * `unreadable > 0`, in which case it rolls one warning into
444
- * `warningCount`.
445
- */
446
- ugDelegations?: UgDelegationsSection;
447
- /**
448
- * In-flight subagent records (subagent-gate slice 1) from
449
- * `harness.generated/.inflight/`, distinct from both `ugDelegations`
450
- * (`.delegations/`) and `ugAutoApprovals` (`.approvals/`). Present
451
- * only when the `understanding-before-execution` pack is declared and
452
- * enabled (mirrors `ugDelegations`'s gate). `inflightDirPresent`
453
- * mirrors `ugDelegations`'s `delegationsDirPresent`: the rendered
454
- * line stays silent when `.inflight/` does not exist at all, and
455
- * shows the zero-count line when it exists but is empty. Purely
456
- * informational (`ℹ`) — an unreadable/skipped entry never rolls a
457
- * warning here, since a record aging out unread is exactly what
458
- * `harness gc` is for, not a signal of tampering.
459
- */
460
- ugInflight?: UgInflightSection;
461
- /**
462
- * `bypassPermissions` observed (hook-side, `.permission-mode-
463
- * observations/`) but `auto_approve` does not cover it (task 8f637efd,
464
- * "Amendment: install default"). Present only when the pack is
465
- * declared and enabled AND at least one qualifying observation exists
466
- * in the window; always a warning (`⚠`) when present, see
467
- * bypass-without-auto-approve.ts.
468
- */
469
- ugBypassWithoutAutoApprove?: BypassWithoutAutoApproveFinding;
470
- /**
471
- * `session_start_preflight.setup: true` against a `preflight` binary
472
- * below the build-capable release (task 6993d9b5). Present only when
473
- * `setup` is enabled AND the probed/parsed version is below
474
- * `SESSION_START_PREFLIGHT_SETUP_BUILD_MIN_VERSION` (or the probe
475
- * failed/could not be parsed); always a warning (`⚠`) when present,
476
- * see session-start-preflight-setup-version.ts.
477
- */
478
- sessionStartPreflightSetupVersion?: SessionStartPreflightSetupVersionFinding;
479
- /**
480
- * `auto_approve` configured without `mode: grill_me` (agent-tasks
481
- * abfad738, follow-up of ADR
482
- * docs/decisions/2026-08-27-ug-auto-mode-approval.md slice 1).
483
- * Present only when the pack is declared and enabled AND
484
- * `config.auto_approve` parses as a valid opt-in block. Always
485
- * advisory (rolls into `warningCount`, never `errorCount`). See
486
- * `auto-approve-mode.ts` for the full rationale.
487
- */
488
- ugAutoApproveMode?: AutoApproveModeWarning;
489
- /**
490
- * Explicit `approval_lifecycle.expire_on_tool_match` that lists
491
- * `task_finish` but not `task_merge` (task 0c6b2cb9). Always advisory
492
- * (rolls into `warningCount`, never `errorCount`). See
493
- * `expire-on-tool-match.ts`.
494
- */
495
- ugExpireOnToolMatch?: ExpireOnToolMatchWarning;
496
- /**
497
- * Settings-drift compensating control (same ADR, threat model (c)): a
498
- * `permissions.defaultMode` or hook entry present in a live Claude
499
- * Code settings file but absent from harness's own last-apply
500
- * snapshot. Present only when the understanding-gate pack is enabled
501
- * AND `harness apply` has run at least once for this manifest
502
- * (`harness.generated/` exists) — otherwise there is no baseline to
503
- * compare against and nothing to say. `warnings` roll into
504
- * `warningCount`; `notes` never do.
505
- */
506
- settingsDrift?: SettingsDriftSection;
507
- /**
508
- * Codex counterpart of `settingsDrift` (follow-up of slice 2 of the
509
- * same ADR, agent-tasks f59ea0eb): a live `approval_policy = "never"`
510
- * or full-access `default_permissions` selection in `$CODEX_HOME
511
- * /config.toml` or `<repo>/.codex/config.toml`. Present only when the
512
- * understanding-gate pack's `auto_approve.harnesses` lists `codex`;
513
- * a repo that never opted Codex into the auto path has no live signal
514
- * for this key to pre-set. Unlike `settingsDrift`, this always warns
515
- * while the key is present and the repo is opted in (not gated on
516
- * drift since the last apply); `warnings` roll into `warningCount`.
517
- */
518
- codexConfigDrift?: CodexConfigDriftSection;
519
211
  memory: MemoryReport;
520
212
  hooks: HookEntryReport[];
521
- 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;
522
220
  /**
523
221
  * Declared-but-not-live policy packs. Each entry is a pack the
524
222
  * operator listed in `policy_packs[]` whose `source` or builtin
@@ -526,15 +224,6 @@ export interface DoctorReport {
526
224
  * surfaced loudly here. Errors count toward `errorCount`.
527
225
  */
528
226
  policyPacks: PolicyPacksSection;
529
- /**
530
- * Hook-level `min_version` floors on policy-pack-expanded hooks (task
531
- * ab634898). See `PolicyPackHookVersionGapReport` for why this is
532
- * separate from both `hooks[].version` (manifest-declared hooks only)
533
- * and `policyPacks.versionGaps` (the pack-level floor). Always
534
- * present; empty when every pack-expanded hook that declares a floor
535
- * meets it.
536
- */
537
- policyPackHookVersions: PolicyPackHookVersionGapReport[];
538
227
  /**
539
228
  * The runtime policy packs were expanded against for the pack checks:
540
229
  * the one a plain `harness apply` would select (recorded in
@@ -542,31 +231,6 @@ export interface DoctorReport {
542
231
  * 04b8abcf). Always present.
543
232
  */
544
233
  packExpansionRuntime: PackExpansionRuntimeReport;
545
- workflows: WorkflowsSectionReport;
546
- /** Phase 7 #6 — Risk Gate wiring health (classifiers / resolvers / `when:`). */
547
- riskGate: RiskGateSection;
548
- /**
549
- * Template-policy drift (task adf037c1): shipped operator_only security
550
- * policies missing-or-downgraded in this installed manifest (`errors`)
551
- * and stale `doctor.ignore_template_drift` entries (`warnings`). Always
552
- * present; both arrays empty when the manifest carries every shipped
553
- * kill-switch policy in operator_only form (or has acknowledged the gap
554
- * via a valid doctor.ignore_template_drift entry).
555
- */
556
- templateDrift: TemplateDriftSection;
557
- /**
558
- * Trigger-boundary drift (task 037cfb7c). Always present; `errors`
559
- * empty when every shipped-named `bash_match` trigger's boundary
560
- * matches the template (or every drift is acknowledged via
561
- * doctor.ignore_template_drift).
562
- */
563
- triggerBoundaryDrift: TriggerBoundaryDriftSection;
564
- /**
565
- * Hook-budget-vs-ledger-timeout margin (task d20a7e0c). Always
566
- * present; `errors` empty when every blocking, ledger-consulting hook
567
- * clears the derived margin.
568
- */
569
- hookBudgetLedgerMargin: HookBudgetLedgerMarginSection;
570
234
  /**
571
235
  * Grounding wiring health (task 129e1b94). Absent when no enabled
572
236
  * grounding-mcp entry is declared.
@@ -581,17 +245,6 @@ export interface DoctorReport {
581
245
  * isn't further scoped by runtime.
582
246
  */
583
247
  claudeMcp?: ClaudeMcpRegistrationSection;
584
- /**
585
- * On-demand toolchain-parity comparison (task 13919613), reusing the
586
- * Collector/Comparator core from `harness session-start
587
- * toolchain-parity` (src/cli/doctor/toolchain-parity.ts). Present only
588
- * when `toolchain_parity.enabled` is true in the manifest — absent
589
- * otherwise, mirroring `grounding`'s "only when the feature is in use"
590
- * gating. Always read-only: never writes a snapshot file or a ledger
591
- * fact. Only `"drift"`-status peers roll into `warningCount`; the
592
- * section is never an `errorCount` source (advisory, not a gate).
593
- */
594
- toolchainParity?: ToolchainParitySection;
595
248
  /**
596
249
  * Phase 6 #6 follow-up: present when `--target codex` is passed.
597
250
  * Aggregates harness-side codex adapter health checks (binary
@@ -608,28 +261,9 @@ export interface DoctorReport {
608
261
  * warningCount, same as `codexTarget`.
609
262
  */
610
263
  opencodeTarget?: OpencodeTargetReport;
611
- /**
612
- * Leftover `<parent>/~/.evidence-ledger/ledger.db` files from the
613
- * literal-tilde `EVIDENCE_LEDGER_DB` env leak (agent-tasks/42d224a6,
614
- * harness PR #101). Always scanned; harmless when empty. Each entry
615
- * rolls into `warningCount`. The scan walks `$HOME`, `$HOME/git/*`
616
- * (one level deep), and `$PWD`; see `rogue-ledger.ts` for rationale.
617
- */
618
- rogueLedgerDbs: RogueLedgerDb[];
619
264
  errorCount: number;
620
265
  warningCount: number;
621
266
  }
622
267
  export type { NpmBinReport } from "./npm-bin-path.js";
623
- export type { SessionStartPreflightSetupVersionFinding } from "./session-start-preflight-setup-version.js";
624
268
  export type { ClaudeMcpRegistrationSection, ClaudeMcpEntryReport, } from "./claude-mcp.js";
625
- export type { UnderstandingModeEnvDivergence } from "./understanding-mode-env.js";
626
- export type { UgAutoApprovalsSection, AutoApprovalListingEntry, } from "./ug-auto-approvals.js";
627
- export type { UgDelegationsSection } from "./ug-delegations.js";
628
- export type { UgInflightSection } from "./ug-inflight.js";
629
- export type { AutoApproveModeWarning } from "./auto-approve-mode.js";
630
- export type { ExpireOnToolMatchWarning } from "./expire-on-tool-match.js";
631
- export type { BypassWithoutAutoApproveFinding } from "./bypass-without-auto-approve.js";
632
- export type { SettingsDriftSection } from "./settings-drift.js";
633
- export type { CodexConfigDriftSection } from "./codex-config-drift.js";
634
- export type { ToolchainParitySection, ToolchainParityPeerReport, } from "./toolchain-parity.js";
635
- 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":"AAqBA;;;;;;;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;