approval-md 0.0.1 → 0.2.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 (722) hide show
  1. package/LICENSE +176 -0
  2. package/NOTICE +5 -0
  3. package/README.md +940 -4
  4. package/SPEC.md +476 -34
  5. package/cli.js +29 -3
  6. package/dist/src/adapters/agentmail.d.ts +426 -0
  7. package/dist/src/adapters/agentmail.js +1200 -0
  8. package/dist/src/adapters/agentmail.js.map +1 -0
  9. package/dist/src/adapters/conformance.d.ts +149 -0
  10. package/dist/src/adapters/conformance.js +461 -0
  11. package/dist/src/adapters/conformance.js.map +1 -0
  12. package/dist/src/adapters/contract.d.ts +628 -0
  13. package/dist/src/adapters/contract.js +1035 -0
  14. package/dist/src/adapters/contract.js.map +1 -0
  15. package/dist/src/adapters/email.d.ts +324 -0
  16. package/dist/src/adapters/email.js +749 -0
  17. package/dist/src/adapters/email.js.map +1 -0
  18. package/dist/src/adapters/env-passphrase.d.ts +93 -0
  19. package/dist/src/adapters/env-passphrase.js +132 -0
  20. package/dist/src/adapters/env-passphrase.js.map +1 -0
  21. package/dist/src/adapters/public.d.ts +11 -0
  22. package/dist/src/adapters/public.js +11 -0
  23. package/dist/src/adapters/public.js.map +1 -0
  24. package/dist/src/adapters/registry.d.ts +59 -0
  25. package/dist/src/adapters/registry.js +77 -0
  26. package/dist/src/adapters/registry.js.map +1 -0
  27. package/dist/src/adapters/smtp.d.ts +213 -0
  28. package/dist/src/adapters/smtp.js +499 -0
  29. package/dist/src/adapters/smtp.js.map +1 -0
  30. package/dist/src/adapters/vault-provider.d.ts +114 -0
  31. package/dist/src/adapters/vault-provider.js +161 -0
  32. package/dist/src/adapters/vault-provider.js.map +1 -0
  33. package/dist/src/adapters/zzz.d.ts +66 -0
  34. package/dist/src/adapters/zzz.js +299 -0
  35. package/dist/src/adapters/zzz.js.map +1 -0
  36. package/dist/src/channels/batch.d.ts +109 -0
  37. package/dist/src/channels/batch.js +121 -0
  38. package/dist/src/channels/batch.js.map +1 -0
  39. package/dist/src/channels/cli.d.ts +193 -0
  40. package/dist/src/channels/cli.js +468 -0
  41. package/dist/src/channels/cli.js.map +1 -0
  42. package/dist/src/channels/conformance.d.ts +92 -0
  43. package/dist/src/channels/conformance.js +445 -0
  44. package/dist/src/channels/conformance.js.map +1 -0
  45. package/dist/src/channels/contract.d.ts +623 -0
  46. package/dist/src/channels/contract.js +494 -0
  47. package/dist/src/channels/contract.js.map +1 -0
  48. package/dist/src/channels/payload-view.d.ts +35 -0
  49. package/dist/src/channels/payload-view.js +43 -0
  50. package/dist/src/channels/payload-view.js.map +1 -0
  51. package/dist/src/channels/render-queue.d.ts +149 -0
  52. package/dist/src/channels/render-queue.js +564 -0
  53. package/dist/src/channels/render-queue.js.map +1 -0
  54. package/dist/src/channels/tagging.d.ts +196 -0
  55. package/dist/src/channels/tagging.js +723 -0
  56. package/dist/src/channels/tagging.js.map +1 -0
  57. package/dist/src/channels/telegram.d.ts +1832 -0
  58. package/dist/src/channels/telegram.js +3190 -0
  59. package/dist/src/channels/telegram.js.map +1 -0
  60. package/dist/src/channels/web.d.ts +341 -0
  61. package/dist/src/channels/web.js +903 -0
  62. package/dist/src/channels/web.js.map +1 -0
  63. package/dist/src/cli/adapter.d.ts +90 -0
  64. package/dist/src/cli/adapter.js +288 -0
  65. package/dist/src/cli/adapter.js.map +1 -0
  66. package/dist/src/cli/amend.d.ts +59 -0
  67. package/dist/src/cli/amend.js +2171 -0
  68. package/dist/src/cli/amend.js.map +1 -0
  69. package/dist/src/cli/args.d.ts +43 -0
  70. package/dist/src/cli/args.js +86 -0
  71. package/dist/src/cli/args.js.map +1 -0
  72. package/dist/src/cli/attest.d.ts +41 -0
  73. package/dist/src/cli/attest.js +307 -0
  74. package/dist/src/cli/attest.js.map +1 -0
  75. package/dist/src/cli/audit-card.d.ts +62 -0
  76. package/dist/src/cli/audit-card.js +201 -0
  77. package/dist/src/cli/audit-card.js.map +1 -0
  78. package/dist/src/cli/audit.d.ts +59 -0
  79. package/dist/src/cli/audit.js +460 -0
  80. package/dist/src/cli/audit.js.map +1 -0
  81. package/dist/src/cli/channel-telegram.d.ts +806 -0
  82. package/dist/src/cli/channel-telegram.js +2063 -0
  83. package/dist/src/cli/channel-telegram.js.map +1 -0
  84. package/dist/src/cli/channel-web.d.ts +131 -0
  85. package/dist/src/cli/channel-web.js +357 -0
  86. package/dist/src/cli/channel-web.js.map +1 -0
  87. package/dist/src/cli/channel.d.ts +71 -0
  88. package/dist/src/cli/channel.js +438 -0
  89. package/dist/src/cli/channel.js.map +1 -0
  90. package/dist/src/cli/checkpoint-tap.d.ts +169 -0
  91. package/dist/src/cli/checkpoint-tap.js +238 -0
  92. package/dist/src/cli/checkpoint-tap.js.map +1 -0
  93. package/dist/src/cli/codex.d.ts +2 -0
  94. package/dist/src/cli/codex.js +172 -0
  95. package/dist/src/cli/codex.js.map +1 -0
  96. package/dist/src/cli/coverage.d.ts +61 -0
  97. package/dist/src/cli/coverage.js +343 -0
  98. package/dist/src/cli/coverage.js.map +1 -0
  99. package/dist/src/cli/daemon.d.ts +120 -0
  100. package/dist/src/cli/daemon.js +631 -0
  101. package/dist/src/cli/daemon.js.map +1 -0
  102. package/dist/src/cli/doctor.d.ts +129 -0
  103. package/dist/src/cli/doctor.js +2762 -0
  104. package/dist/src/cli/doctor.js.map +1 -0
  105. package/dist/src/cli/env.d.ts +65 -0
  106. package/dist/src/cli/env.js +302 -0
  107. package/dist/src/cli/env.js.map +1 -0
  108. package/dist/src/cli/execute.d.ts +202 -0
  109. package/dist/src/cli/execute.js +1682 -0
  110. package/dist/src/cli/execute.js.map +1 -0
  111. package/dist/src/cli/exit-codes.d.ts +73 -0
  112. package/dist/src/cli/exit-codes.js +82 -0
  113. package/dist/src/cli/exit-codes.js.map +1 -0
  114. package/dist/src/cli/feedback.d.ts +60 -0
  115. package/dist/src/cli/feedback.js +205 -0
  116. package/dist/src/cli/feedback.js.map +1 -0
  117. package/dist/src/cli/gate-window.d.ts +40 -0
  118. package/dist/src/cli/gate-window.js +294 -0
  119. package/dist/src/cli/gate-window.js.map +1 -0
  120. package/dist/src/cli/gate.d.ts +68 -0
  121. package/dist/src/cli/gate.js +557 -0
  122. package/dist/src/cli/gate.js.map +1 -0
  123. package/dist/src/cli/git-scope.d.ts +190 -0
  124. package/dist/src/cli/git-scope.js +295 -0
  125. package/dist/src/cli/git-scope.js.map +1 -0
  126. package/dist/src/cli/gloss-attach.d.ts +85 -0
  127. package/dist/src/cli/gloss-attach.js +107 -0
  128. package/dist/src/cli/gloss-attach.js.map +1 -0
  129. package/dist/src/cli/gloss-codex-child.d.ts +9 -0
  130. package/dist/src/cli/gloss-codex-child.js +149 -0
  131. package/dist/src/cli/gloss-codex-child.js.map +1 -0
  132. package/dist/src/cli/gloss-codex.d.ts +24 -0
  133. package/dist/src/cli/gloss-codex.js +255 -0
  134. package/dist/src/cli/gloss-codex.js.map +1 -0
  135. package/dist/src/cli/gloss-options.d.ts +42 -0
  136. package/dist/src/cli/gloss-options.js +79 -0
  137. package/dist/src/cli/gloss-options.js.map +1 -0
  138. package/dist/src/cli/gloss.d.ts +265 -0
  139. package/dist/src/cli/gloss.js +362 -0
  140. package/dist/src/cli/gloss.js.map +1 -0
  141. package/dist/src/cli/help.d.ts +103 -0
  142. package/dist/src/cli/help.js +2339 -0
  143. package/dist/src/cli/help.js.map +1 -0
  144. package/dist/src/cli/hook-codex.d.ts +78 -0
  145. package/dist/src/cli/hook-codex.js +167 -0
  146. package/dist/src/cli/hook-codex.js.map +1 -0
  147. package/dist/src/cli/hook.d.ts +331 -0
  148. package/dist/src/cli/hook.js +2849 -0
  149. package/dist/src/cli/hook.js.map +1 -0
  150. package/dist/src/cli/import.d.ts +35 -0
  151. package/dist/src/cli/import.js +175 -0
  152. package/dist/src/cli/import.js.map +1 -0
  153. package/dist/src/cli/init.d.ts +84 -0
  154. package/dist/src/cli/init.js +336 -0
  155. package/dist/src/cli/init.js.map +1 -0
  156. package/dist/src/cli/instructions.d.ts +23 -0
  157. package/dist/src/cli/instructions.js +262 -0
  158. package/dist/src/cli/instructions.js.map +1 -0
  159. package/dist/src/cli/journal.d.ts +41 -0
  160. package/dist/src/cli/journal.js +238 -0
  161. package/dist/src/cli/journal.js.map +1 -0
  162. package/dist/src/cli/log-advance.d.ts +287 -0
  163. package/dist/src/cli/log-advance.js +840 -0
  164. package/dist/src/cli/log-advance.js.map +1 -0
  165. package/dist/src/cli/log-anchor.d.ts +176 -0
  166. package/dist/src/cli/log-anchor.js +387 -0
  167. package/dist/src/cli/log-anchor.js.map +1 -0
  168. package/dist/src/cli/log-checkpoint.d.ts +22 -0
  169. package/dist/src/cli/log-checkpoint.js +128 -0
  170. package/dist/src/cli/log-checkpoint.js.map +1 -0
  171. package/dist/src/cli/log-sync.d.ts +243 -0
  172. package/dist/src/cli/log-sync.js +849 -0
  173. package/dist/src/cli/log-sync.js.map +1 -0
  174. package/dist/src/cli/log-verbs.d.ts +16 -0
  175. package/dist/src/cli/log-verbs.js +360 -0
  176. package/dist/src/cli/log-verbs.js.map +1 -0
  177. package/dist/src/cli/long-help.d.ts +70 -0
  178. package/dist/src/cli/long-help.js +148 -0
  179. package/dist/src/cli/long-help.js.map +1 -0
  180. package/dist/src/cli/main.d.ts +77 -0
  181. package/dist/src/cli/main.js +1206 -0
  182. package/dist/src/cli/main.js.map +1 -0
  183. package/dist/src/cli/mcp.d.ts +52 -0
  184. package/dist/src/cli/mcp.js +306 -0
  185. package/dist/src/cli/mcp.js.map +1 -0
  186. package/dist/src/cli/paths.d.ts +56 -0
  187. package/dist/src/cli/paths.js +79 -0
  188. package/dist/src/cli/paths.js.map +1 -0
  189. package/dist/src/cli/payload.d.ts +58 -0
  190. package/dist/src/cli/payload.js +253 -0
  191. package/dist/src/cli/payload.js.map +1 -0
  192. package/dist/src/cli/policy.d.ts +43 -0
  193. package/dist/src/cli/policy.js +229 -0
  194. package/dist/src/cli/policy.js.map +1 -0
  195. package/dist/src/cli/preflight.d.ts +363 -0
  196. package/dist/src/cli/preflight.js +1175 -0
  197. package/dist/src/cli/preflight.js.map +1 -0
  198. package/dist/src/cli/progress.d.ts +78 -0
  199. package/dist/src/cli/progress.js +112 -0
  200. package/dist/src/cli/progress.js.map +1 -0
  201. package/dist/src/cli/prompt.d.ts +209 -0
  202. package/dist/src/cli/prompt.js +312 -0
  203. package/dist/src/cli/prompt.js.map +1 -0
  204. package/dist/src/cli/quickstart.d.ts +46 -0
  205. package/dist/src/cli/quickstart.js +297 -0
  206. package/dist/src/cli/quickstart.js.map +1 -0
  207. package/dist/src/cli/records.d.ts +34 -0
  208. package/dist/src/cli/records.js +66 -0
  209. package/dist/src/cli/records.js.map +1 -0
  210. package/dist/src/cli/render.d.ts +22 -0
  211. package/dist/src/cli/render.js +132 -0
  212. package/dist/src/cli/render.js.map +1 -0
  213. package/dist/src/cli/sandbox.d.ts +51 -0
  214. package/dist/src/cli/sandbox.js +150 -0
  215. package/dist/src/cli/sandbox.js.map +1 -0
  216. package/dist/src/cli/scaffold.d.ts +79 -0
  217. package/dist/src/cli/scaffold.js +137 -0
  218. package/dist/src/cli/scaffold.js.map +1 -0
  219. package/dist/src/cli/setup-adapter.d.ts +137 -0
  220. package/dist/src/cli/setup-adapter.js +509 -0
  221. package/dist/src/cli/setup-adapter.js.map +1 -0
  222. package/dist/src/cli/setup-channel.d.ts +117 -0
  223. package/dist/src/cli/setup-channel.js +635 -0
  224. package/dist/src/cli/setup-channel.js.map +1 -0
  225. package/dist/src/cli/setup-checkpoint.d.ts +57 -0
  226. package/dist/src/cli/setup-checkpoint.js +196 -0
  227. package/dist/src/cli/setup-checkpoint.js.map +1 -0
  228. package/dist/src/cli/setup-common.d.ts +275 -0
  229. package/dist/src/cli/setup-common.js +376 -0
  230. package/dist/src/cli/setup-common.js.map +1 -0
  231. package/dist/src/cli/setup-flow.d.ts +287 -0
  232. package/dist/src/cli/setup-flow.js +476 -0
  233. package/dist/src/cli/setup-flow.js.map +1 -0
  234. package/dist/src/cli/setup-service.d.ts +96 -0
  235. package/dist/src/cli/setup-service.js +308 -0
  236. package/dist/src/cli/setup-service.js.map +1 -0
  237. package/dist/src/cli/setup.d.ts +202 -0
  238. package/dist/src/cli/setup.js +473 -0
  239. package/dist/src/cli/setup.js.map +1 -0
  240. package/dist/src/cli/style.d.ts +320 -0
  241. package/dist/src/cli/style.js +469 -0
  242. package/dist/src/cli/style.js.map +1 -0
  243. package/dist/src/cli/token.d.ts +39 -0
  244. package/dist/src/cli/token.js +274 -0
  245. package/dist/src/cli/token.js.map +1 -0
  246. package/dist/src/cli/up.d.ts +155 -0
  247. package/dist/src/cli/up.js +849 -0
  248. package/dist/src/cli/up.js.map +1 -0
  249. package/dist/src/cli/usage.d.ts +37 -0
  250. package/dist/src/cli/usage.js +91 -0
  251. package/dist/src/cli/usage.js.map +1 -0
  252. package/dist/src/cli/values.d.ts +40 -0
  253. package/dist/src/cli/values.js +189 -0
  254. package/dist/src/cli/values.js.map +1 -0
  255. package/dist/src/cli/vault.d.ts +59 -0
  256. package/dist/src/cli/vault.js +362 -0
  257. package/dist/src/cli/vault.js.map +1 -0
  258. package/dist/src/cli/verb-registry.d.ts +76 -0
  259. package/dist/src/cli/verb-registry.js +2341 -0
  260. package/dist/src/cli/verb-registry.js.map +1 -0
  261. package/dist/src/cli/wordmark.d.ts +31 -0
  262. package/dist/src/cli/wordmark.js +52 -0
  263. package/dist/src/cli/wordmark.js.map +1 -0
  264. package/dist/src/codex/doctor.d.ts +13 -0
  265. package/dist/src/codex/doctor.js +41 -0
  266. package/dist/src/codex/doctor.js.map +1 -0
  267. package/dist/src/codex/manifest.d.ts +49 -0
  268. package/dist/src/codex/manifest.js +103 -0
  269. package/dist/src/codex/manifest.js.map +1 -0
  270. package/dist/src/codex/templates.d.ts +41 -0
  271. package/dist/src/codex/templates.js +319 -0
  272. package/dist/src/codex/templates.js.map +1 -0
  273. package/dist/src/codex/trust.d.ts +19 -0
  274. package/dist/src/codex/trust.js +183 -0
  275. package/dist/src/codex/trust.js.map +1 -0
  276. package/dist/src/codex/workspace-plan.d.ts +131 -0
  277. package/dist/src/codex/workspace-plan.js +561 -0
  278. package/dist/src/codex/workspace-plan.js.map +1 -0
  279. package/dist/src/core/actor.d.ts +2 -0
  280. package/dist/src/core/actor.js +5 -0
  281. package/dist/src/core/actor.js.map +1 -0
  282. package/dist/src/core/advance-cycle.d.ts +170 -0
  283. package/dist/src/core/advance-cycle.js +200 -0
  284. package/dist/src/core/advance-cycle.js.map +1 -0
  285. package/dist/src/core/agents-md.d.ts +276 -0
  286. package/dist/src/core/agents-md.js +747 -0
  287. package/dist/src/core/agents-md.js.map +1 -0
  288. package/dist/src/core/apply-patch.d.ts +49 -0
  289. package/dist/src/core/apply-patch.js +266 -0
  290. package/dist/src/core/apply-patch.js.map +1 -0
  291. package/dist/src/core/attest.d.ts +420 -0
  292. package/dist/src/core/attest.js +589 -0
  293. package/dist/src/core/attest.js.map +1 -0
  294. package/dist/src/core/audit.d.ts +492 -0
  295. package/dist/src/core/audit.js +882 -0
  296. package/dist/src/core/audit.js.map +1 -0
  297. package/dist/src/core/budgets.d.ts +238 -0
  298. package/dist/src/core/budgets.js +449 -0
  299. package/dist/src/core/budgets.js.map +1 -0
  300. package/dist/src/core/checkpoint.d.ts +500 -0
  301. package/dist/src/core/checkpoint.js +738 -0
  302. package/dist/src/core/checkpoint.js.map +1 -0
  303. package/dist/src/core/child-env.d.ts +88 -0
  304. package/dist/src/core/child-env.js +86 -0
  305. package/dist/src/core/child-env.js.map +1 -0
  306. package/dist/src/core/clock.d.ts +52 -0
  307. package/dist/src/core/clock.js +43 -0
  308. package/dist/src/core/clock.js.map +1 -0
  309. package/dist/src/core/command-class.d.ts +543 -0
  310. package/dist/src/core/command-class.js +2356 -0
  311. package/dist/src/core/command-class.js.map +1 -0
  312. package/dist/src/core/coverage-sources/adapter.d.ts +40 -0
  313. package/dist/src/core/coverage-sources/adapter.js +71 -0
  314. package/dist/src/core/coverage-sources/adapter.js.map +1 -0
  315. package/dist/src/core/coverage-sources/gh.d.ts +48 -0
  316. package/dist/src/core/coverage-sources/gh.js +136 -0
  317. package/dist/src/core/coverage-sources/gh.js.map +1 -0
  318. package/dist/src/core/coverage-sources/git.d.ts +101 -0
  319. package/dist/src/core/coverage-sources/git.js +269 -0
  320. package/dist/src/core/coverage-sources/git.js.map +1 -0
  321. package/dist/src/core/coverage.d.ts +217 -0
  322. package/dist/src/core/coverage.js +337 -0
  323. package/dist/src/core/coverage.js.map +1 -0
  324. package/dist/src/core/credential-spec.d.ts +72 -0
  325. package/dist/src/core/credential-spec.js +23 -0
  326. package/dist/src/core/credential-spec.js.map +1 -0
  327. package/dist/src/core/dark-session.d.ts +331 -0
  328. package/dist/src/core/dark-session.js +714 -0
  329. package/dist/src/core/dark-session.js.map +1 -0
  330. package/dist/src/core/decision-refusal.d.ts +185 -0
  331. package/dist/src/core/decision-refusal.js +265 -0
  332. package/dist/src/core/decision-refusal.js.map +1 -0
  333. package/dist/src/core/env-file.d.ts +450 -0
  334. package/dist/src/core/env-file.js +837 -0
  335. package/dist/src/core/env-file.js.map +1 -0
  336. package/dist/src/core/execute.d.ts +858 -0
  337. package/dist/src/core/execute.js +1271 -0
  338. package/dist/src/core/execute.js.map +1 -0
  339. package/dist/src/core/frontmatter.d.ts +78 -0
  340. package/dist/src/core/frontmatter.js +100 -0
  341. package/dist/src/core/frontmatter.js.map +1 -0
  342. package/dist/src/core/gate-window.d.ts +312 -0
  343. package/dist/src/core/gate-window.js +506 -0
  344. package/dist/src/core/gate-window.js.map +1 -0
  345. package/dist/src/core/gate.d.ts +1364 -0
  346. package/dist/src/core/gate.js +3002 -0
  347. package/dist/src/core/gate.js.map +1 -0
  348. package/dist/src/core/git-run.d.ts +73 -0
  349. package/dist/src/core/git-run.js +93 -0
  350. package/dist/src/core/git-run.js.map +1 -0
  351. package/dist/src/core/harness-version.d.ts +157 -0
  352. package/dist/src/core/harness-version.js +211 -0
  353. package/dist/src/core/harness-version.js.map +1 -0
  354. package/dist/src/core/harness-wait.d.ts +55 -0
  355. package/dist/src/core/harness-wait.js +58 -0
  356. package/dist/src/core/harness-wait.js.map +1 -0
  357. package/dist/src/core/head-retry.d.ts +107 -0
  358. package/dist/src/core/head-retry.js +121 -0
  359. package/dist/src/core/head-retry.js.map +1 -0
  360. package/dist/src/core/instance.d.ts +253 -0
  361. package/dist/src/core/instance.js +319 -0
  362. package/dist/src/core/instance.js.map +1 -0
  363. package/dist/src/core/intake-limits.d.ts +247 -0
  364. package/dist/src/core/intake-limits.js +350 -0
  365. package/dist/src/core/intake-limits.js.map +1 -0
  366. package/dist/src/core/jcs.d.ts +52 -0
  367. package/dist/src/core/jcs.js +132 -0
  368. package/dist/src/core/jcs.js.map +1 -0
  369. package/dist/src/core/journal.d.ts +144 -0
  370. package/dist/src/core/journal.js +200 -0
  371. package/dist/src/core/journal.js.map +1 -0
  372. package/dist/src/core/live-draw.d.ts +436 -0
  373. package/dist/src/core/live-draw.js +703 -0
  374. package/dist/src/core/live-draw.js.map +1 -0
  375. package/dist/src/core/log-reconcile.d.ts +89 -0
  376. package/dist/src/core/log-reconcile.js +136 -0
  377. package/dist/src/core/log-reconcile.js.map +1 -0
  378. package/dist/src/core/log-subscribe.d.ts +36 -0
  379. package/dist/src/core/log-subscribe.js +162 -0
  380. package/dist/src/core/log-subscribe.js.map +1 -0
  381. package/dist/src/core/log.d.ts +278 -0
  382. package/dist/src/core/log.js +546 -0
  383. package/dist/src/core/log.js.map +1 -0
  384. package/dist/src/core/loop.d.ts +274 -0
  385. package/dist/src/core/loop.js +487 -0
  386. package/dist/src/core/loop.js.map +1 -0
  387. package/dist/src/core/md-fence.d.ts +41 -0
  388. package/dist/src/core/md-fence.js +74 -0
  389. package/dist/src/core/md-fence.js.map +1 -0
  390. package/dist/src/core/money.d.ts +147 -0
  391. package/dist/src/core/money.js +195 -0
  392. package/dist/src/core/money.js.map +1 -0
  393. package/dist/src/core/payload-census.d.ts +74 -0
  394. package/dist/src/core/payload-census.js +146 -0
  395. package/dist/src/core/payload-census.js.map +1 -0
  396. package/dist/src/core/payload-store.d.ts +175 -0
  397. package/dist/src/core/payload-store.js +340 -0
  398. package/dist/src/core/payload-store.js.map +1 -0
  399. package/dist/src/core/payload.d.ts +71 -0
  400. package/dist/src/core/payload.js +80 -0
  401. package/dist/src/core/payload.js.map +1 -0
  402. package/dist/src/core/policy-diff.d.ts +292 -0
  403. package/dist/src/core/policy-diff.js +588 -0
  404. package/dist/src/core/policy-diff.js.map +1 -0
  405. package/dist/src/core/policy-expectations.d.ts +199 -0
  406. package/dist/src/core/policy-expectations.js +394 -0
  407. package/dist/src/core/policy-expectations.js.map +1 -0
  408. package/dist/src/core/policy-explain.d.ts +150 -0
  409. package/dist/src/core/policy-explain.js +258 -0
  410. package/dist/src/core/policy-explain.js.map +1 -0
  411. package/dist/src/core/policy-load.d.ts +527 -0
  412. package/dist/src/core/policy-load.js +536 -0
  413. package/dist/src/core/policy-load.js.map +1 -0
  414. package/dist/src/core/policy-match.d.ts +281 -0
  415. package/dist/src/core/policy-match.js +478 -0
  416. package/dist/src/core/policy-match.js.map +1 -0
  417. package/dist/src/core/policy-proposal.d.ts +265 -0
  418. package/dist/src/core/policy-proposal.js +458 -0
  419. package/dist/src/core/policy-proposal.js.map +1 -0
  420. package/dist/src/core/prompt-layout.d.ts +221 -0
  421. package/dist/src/core/prompt-layout.js +422 -0
  422. package/dist/src/core/prompt-layout.js.map +1 -0
  423. package/dist/src/core/protected-path-guard.d.ts +453 -0
  424. package/dist/src/core/protected-path-guard.js +1566 -0
  425. package/dist/src/core/protected-path-guard.js.map +1 -0
  426. package/dist/src/core/registration.d.ts +25 -0
  427. package/dist/src/core/registration.js +39 -0
  428. package/dist/src/core/registration.js.map +1 -0
  429. package/dist/src/core/reindex.d.ts +99 -0
  430. package/dist/src/core/reindex.js +336 -0
  431. package/dist/src/core/reindex.js.map +1 -0
  432. package/dist/src/core/sampler.d.ts +313 -0
  433. package/dist/src/core/sampler.js +388 -0
  434. package/dist/src/core/sampler.js.map +1 -0
  435. package/dist/src/core/sandbox.d.ts +290 -0
  436. package/dist/src/core/sandbox.js +424 -0
  437. package/dist/src/core/sandbox.js.map +1 -0
  438. package/dist/src/core/seal.d.ts +165 -0
  439. package/dist/src/core/seal.js +290 -0
  440. package/dist/src/core/seal.js.map +1 -0
  441. package/dist/src/core/state.d.ts +505 -0
  442. package/dist/src/core/state.js +1009 -0
  443. package/dist/src/core/state.js.map +1 -0
  444. package/dist/src/core/task-file.d.ts +185 -0
  445. package/dist/src/core/task-file.js +464 -0
  446. package/dist/src/core/task-file.js.map +1 -0
  447. package/dist/src/core/telegram-config.d.ts +93 -0
  448. package/dist/src/core/telegram-config.js +114 -0
  449. package/dist/src/core/telegram-config.js.map +1 -0
  450. package/dist/src/core/token.d.ts +409 -0
  451. package/dist/src/core/token.js +561 -0
  452. package/dist/src/core/token.js.map +1 -0
  453. package/dist/src/core/validate.d.ts +138 -0
  454. package/dist/src/core/validate.js +0 -0
  455. package/dist/src/core/validate.js.map +1 -0
  456. package/dist/src/core/values.d.ts +137 -0
  457. package/dist/src/core/values.js +153 -0
  458. package/dist/src/core/values.js.map +1 -0
  459. package/dist/src/core/vault.d.ts +291 -0
  460. package/dist/src/core/vault.js +612 -0
  461. package/dist/src/core/vault.js.map +1 -0
  462. package/dist/src/core/verified-snapshot.d.ts +204 -0
  463. package/dist/src/core/verified-snapshot.js +506 -0
  464. package/dist/src/core/verified-snapshot.js.map +1 -0
  465. package/dist/src/core/verify.d.ts +336 -0
  466. package/dist/src/core/verify.js +549 -0
  467. package/dist/src/core/verify.js.map +1 -0
  468. package/dist/src/core/version.d.ts +8 -0
  469. package/dist/src/core/version.js +9 -0
  470. package/dist/src/core/version.js.map +1 -0
  471. package/dist/src/core/wysiwys.d.ts +370 -0
  472. package/dist/src/core/wysiwys.js +728 -0
  473. package/dist/src/core/wysiwys.js.map +1 -0
  474. package/dist/src/daemon/advance-child.d.ts +39 -0
  475. package/dist/src/daemon/advance-child.js +78 -0
  476. package/dist/src/daemon/advance-child.js.map +1 -0
  477. package/dist/src/daemon/advance.d.ts +466 -0
  478. package/dist/src/daemon/advance.js +849 -0
  479. package/dist/src/daemon/advance.js.map +1 -0
  480. package/dist/src/daemon/audit.d.ts +87 -0
  481. package/dist/src/daemon/audit.js +90 -0
  482. package/dist/src/daemon/audit.js.map +1 -0
  483. package/dist/src/daemon/daemon.d.ts +1180 -0
  484. package/dist/src/daemon/daemon.js +1988 -0
  485. package/dist/src/daemon/daemon.js.map +1 -0
  486. package/dist/src/daemon/dark-session.d.ts +64 -0
  487. package/dist/src/daemon/dark-session.js +119 -0
  488. package/dist/src/daemon/dark-session.js.map +1 -0
  489. package/dist/src/daemon/draw-child.d.ts +36 -0
  490. package/dist/src/daemon/draw-child.js +132 -0
  491. package/dist/src/daemon/draw-child.js.map +1 -0
  492. package/dist/src/daemon/draw.d.ts +154 -0
  493. package/dist/src/daemon/draw.js +458 -0
  494. package/dist/src/daemon/draw.js.map +1 -0
  495. package/dist/src/daemon/git-evidence.d.ts +173 -0
  496. package/dist/src/daemon/git-evidence.js +345 -0
  497. package/dist/src/daemon/git-evidence.js.map +1 -0
  498. package/dist/src/daemon/projection.d.ts +180 -0
  499. package/dist/src/daemon/projection.js +233 -0
  500. package/dist/src/daemon/projection.js.map +1 -0
  501. package/dist/src/daemon/prune.d.ts +207 -0
  502. package/dist/src/daemon/prune.js +376 -0
  503. package/dist/src/daemon/prune.js.map +1 -0
  504. package/dist/src/mcp/http.d.ts +113 -0
  505. package/dist/src/mcp/http.js +343 -0
  506. package/dist/src/mcp/http.js.map +1 -0
  507. package/dist/src/mcp/server.d.ts +265 -0
  508. package/dist/src/mcp/server.js +602 -0
  509. package/dist/src/mcp/server.js.map +1 -0
  510. package/docs/adapter-api.md +106 -0
  511. package/docs/cli-reference.md +5716 -0
  512. package/docs/codex-enforced-session.md +30 -0
  513. package/package.json +53 -4
  514. package/schema/.gitkeep +0 -0
  515. package/schema/LICENSE +117 -0
  516. package/schema/codex-instance.schema.json +82 -0
  517. package/schema/envelope.schema.json +137 -0
  518. package/schema/event.schema.json +1811 -0
  519. package/schema/fixtures/codex-instance/invalid/unpinned-codex-version.json +40 -0
  520. package/schema/fixtures/codex-instance/valid/canonical.json +40 -0
  521. package/schema/fixtures/envelope/invalid/action-missing-idempotency-key.json +15 -0
  522. package/schema/fixtures/envelope/invalid/action-unknown-class-format.json +14 -0
  523. package/schema/fixtures/envelope/invalid/confidence-out-of-range.json +11 -0
  524. package/schema/fixtures/envelope/invalid/est-cost-bare-number.json +14 -0
  525. package/schema/fixtures/envelope/invalid/est-cost-noncanonical-string.json +14 -0
  526. package/schema/fixtures/envelope/invalid/malformed-assignee.json +10 -0
  527. package/schema/fixtures/envelope/invalid/malformed-created-by.json +7 -0
  528. package/schema/fixtures/envelope/invalid/malformed-max-latency.json +11 -0
  529. package/schema/fixtures/envelope/invalid/malformed-payload-hash.json +14 -0
  530. package/schema/fixtures/envelope/invalid/max-cost-bare-number.json +11 -0
  531. package/schema/fixtures/envelope/invalid/missing-origin.json +3 -0
  532. package/schema/fixtures/envelope/invalid/negative-est-cost.json +14 -0
  533. package/schema/fixtures/envelope/invalid/unknown-state.json +7 -0
  534. package/schema/fixtures/envelope/invalid/unknown-top-level-field.json +8 -0
  535. package/schema/fixtures/envelope/valid/action-payload-hash.json +17 -0
  536. package/schema/fixtures/envelope/valid/actions-without-budget.json +18 -0
  537. package/schema/fixtures/envelope/valid/canonical.json +25 -0
  538. package/schema/fixtures/envelope/valid/minimal.json +7 -0
  539. package/schema/fixtures/envelope/valid/multi-action-executed.json +30 -0
  540. package/schema/fixtures/envelope/valid/record-write-stage.json +22 -0
  541. package/schema/fixtures/event/invalid/approval-granted-agent-actor.json +15 -0
  542. package/schema/fixtures/event/invalid/approval-granted-empty-batch-delivery-id.json +17 -0
  543. package/schema/fixtures/event/invalid/approval-granted-fifth-reaction.json +16 -0
  544. package/schema/fixtures/event/invalid/approval-granted-missing-actor.json +14 -0
  545. package/schema/fixtures/event/invalid/approval-requested-missing-action-key.json +14 -0
  546. package/schema/fixtures/event/invalid/approval-withdrawn-agent-policy-drift.json +15 -0
  547. package/schema/fixtures/event/invalid/approval-withdrawn-missing-reason.json +15 -0
  548. package/schema/fixtures/event/invalid/approval-withdrawn-system-actor.json +15 -0
  549. package/schema/fixtures/event/invalid/audit-decision-refused-human-actor.json +17 -0
  550. package/schema/fixtures/event/invalid/audit-decision-refused-missing-code.json +16 -0
  551. package/schema/fixtures/event/invalid/audit-reviewed-agent-actor.json +15 -0
  552. package/schema/fixtures/event/invalid/audit-reviewed-loved-no-note.json +16 -0
  553. package/schema/fixtures/event/invalid/audit-reviewed-system-actor.json +15 -0
  554. package/schema/fixtures/event/invalid/bad-actor-prefix.json +15 -0
  555. package/schema/fixtures/event/invalid/est-cost-bare-number.json +17 -0
  556. package/schema/fixtures/event/invalid/execution-completed-fabricated-exit-code.json +16 -0
  557. package/schema/fixtures/event/invalid/execution-completed-provider-ref-empty-id.json +18 -0
  558. package/schema/fixtures/event/invalid/execution-completed-provider-ref-extra-field.json +19 -0
  559. package/schema/fixtures/event/invalid/execution-completed-provider-ref-id-not-string.json +18 -0
  560. package/schema/fixtures/event/invalid/execution-completed-provider-ref-missing-adapter.json +17 -0
  561. package/schema/fixtures/event/invalid/execution-failed-open-reported-by.json +16 -0
  562. package/schema/fixtures/event/invalid/execution-indeterminate-open-reason.json +14 -0
  563. package/schema/fixtures/event/invalid/execution-reconciled-agent-actor.json +17 -0
  564. package/schema/fixtures/event/invalid/execution-started-negative-env-stripped.json +16 -0
  565. package/schema/fixtures/event/invalid/gate-bypassed-missing-opened-seq.json +15 -0
  566. package/schema/fixtures/event/invalid/gate-closed-non-integer-opened-seq.json +13 -0
  567. package/schema/fixtures/event/invalid/gate-opened-agent-actor.json +16 -0
  568. package/schema/fixtures/event/invalid/gate-organ-attested-absolute-path.json +14 -0
  569. package/schema/fixtures/event/invalid/gate-organ-attested-agent-actor.json +14 -0
  570. package/schema/fixtures/event/invalid/gate-organ-attested-missing-organ-path.json +13 -0
  571. package/schema/fixtures/event/invalid/harness-unknown-kind.json +18 -0
  572. package/schema/fixtures/event/invalid/harness-version-multiline.json +16 -0
  573. package/schema/fixtures/event/invalid/log-checkpoint-agent-actor.json +17 -0
  574. package/schema/fixtures/event/invalid/log-checkpoint-missing-signature.json +16 -0
  575. package/schema/fixtures/event/invalid/log-checkpoint-short-signed-hash.json +17 -0
  576. package/schema/fixtures/event/invalid/log-checkpoint-unknown-signature-alg.json +17 -0
  577. package/schema/fixtures/event/invalid/malformed-ts.json +15 -0
  578. package/schema/fixtures/event/invalid/missing-alg.json +14 -0
  579. package/schema/fixtures/event/invalid/missing-hash.json +14 -0
  580. package/schema/fixtures/event/invalid/non-integer-seq.json +15 -0
  581. package/schema/fixtures/event/invalid/payload-pruned-human-actor.json +14 -0
  582. package/schema/fixtures/event/invalid/payload-pruned-missing-hash.json +14 -0
  583. package/schema/fixtures/event/invalid/policy-declined-agent-actor.json +15 -0
  584. package/schema/fixtures/event/invalid/policy-proposed-missing-diff.json +19 -0
  585. package/schema/fixtures/event/invalid/policy-proposed-system-actor.json +26 -0
  586. package/schema/fixtures/event/invalid/short-hash.json +15 -0
  587. package/schema/fixtures/event/invalid/unknown-alg.json +15 -0
  588. package/schema/fixtures/event/invalid/unknown-event-type.json +15 -0
  589. package/schema/fixtures/event/invalid/unknown-top-level-field.json +16 -0
  590. package/schema/fixtures/event/valid/approval-expired.json +15 -0
  591. package/schema/fixtures/event/valid/approval-granted-batch.json +19 -0
  592. package/schema/fixtures/event/valid/approval-granted-reaction.json +16 -0
  593. package/schema/fixtures/event/valid/approval-granted.json +15 -0
  594. package/schema/fixtures/event/valid/approval-rejected.json +15 -0
  595. package/schema/fixtures/event/valid/approval-requested.json +19 -0
  596. package/schema/fixtures/event/valid/approval-revoked.json +15 -0
  597. package/schema/fixtures/event/valid/approval-withdrawn-policy-drift.json +17 -0
  598. package/schema/fixtures/event/valid/approval-withdrawn.json +16 -0
  599. package/schema/fixtures/event/valid/audit-decision-refused.json +20 -0
  600. package/schema/fixtures/event/valid/audit-reviewed-reaction.json +17 -0
  601. package/schema/fixtures/event/valid/audit-reviewed.json +15 -0
  602. package/schema/fixtures/event/valid/audit-sampled.json +14 -0
  603. package/schema/fixtures/event/valid/budget-exceeded.json +21 -0
  604. package/schema/fixtures/event/valid/envelope-drift.json +16 -0
  605. package/schema/fixtures/event/valid/execution-completed-harness-report.json +16 -0
  606. package/schema/fixtures/event/valid/execution-completed-provider-ref.json +18 -0
  607. package/schema/fixtures/event/valid/execution-completed.json +15 -0
  608. package/schema/fixtures/event/valid/execution-failed-harness-report.json +16 -0
  609. package/schema/fixtures/event/valid/execution-failed.json +15 -0
  610. package/schema/fixtures/event/valid/execution-indeterminate.json +15 -0
  611. package/schema/fixtures/event/valid/execution-reconciled.json +17 -0
  612. package/schema/fixtures/event/valid/execution-started-env-stripped.json +17 -0
  613. package/schema/fixtures/event/valid/execution-started.json +14 -0
  614. package/schema/fixtures/event/valid/gate-bypassed-harness-version.json +18 -0
  615. package/schema/fixtures/event/valid/gate-bypassed.json +19 -0
  616. package/schema/fixtures/event/valid/gate-closed.json +14 -0
  617. package/schema/fixtures/event/valid/gate-opened.json +16 -0
  618. package/schema/fixtures/event/valid/gate-organ-attested.json +14 -0
  619. package/schema/fixtures/event/valid/genesis-null-prev.json +14 -0
  620. package/schema/fixtures/event/valid/log-checkpoint.json +17 -0
  621. package/schema/fixtures/event/valid/payload-pruned-orphan.json +13 -0
  622. package/schema/fixtures/event/valid/payload-pruned.json +17 -0
  623. package/schema/fixtures/event/valid/policy-declined.json +16 -0
  624. package/schema/fixtures/event/valid/policy-proposed.json +35 -0
  625. package/schema/fixtures/event/valid/policy-updated.json +14 -0
  626. package/schema/fixtures/event/valid/reconciliation-required.json +18 -0
  627. package/schema/fixtures/event/valid/reconciliation-satisfied.json +17 -0
  628. package/schema/fixtures/event/valid/route-accepted.json +15 -0
  629. package/schema/fixtures/event/valid/route-proposed.json +16 -0
  630. package/schema/fixtures/event/valid/spec-example.json +15 -0
  631. package/schema/fixtures/event/valid/task-registered-harness-version.json +23 -0
  632. package/schema/fixtures/event/valid/task-registered.json +14 -0
  633. package/schema/fixtures/hash/known-answer-pre-121.json +74 -0
  634. package/schema/fixtures/hash/known-answer.json +74 -0
  635. package/schema/fixtures/policy/invalid/bad-approval-ttl.json +7 -0
  636. package/schema/fixtures/policy/invalid/bad-web-port.json +4 -0
  637. package/schema/fixtures/policy/invalid/checkpoint-key-not-base64.json +6 -0
  638. package/schema/fixtures/policy/invalid/class-rule-missing-autonomy.json +9 -0
  639. package/schema/fixtures/policy/invalid/empty-class-key.json +6 -0
  640. package/schema/fixtures/policy/invalid/live-rate-on-human-only.json +7 -0
  641. package/schema/fixtures/policy/invalid/malformed-class-key.json +6 -0
  642. package/schema/fixtures/policy/invalid/missing-version.json +8 -0
  643. package/schema/fixtures/policy/invalid/negative-limit.json +9 -0
  644. package/schema/fixtures/policy/invalid/non-numeric-limit.json +9 -0
  645. package/schema/fixtures/policy/invalid/non-positive-max-pending.json +9 -0
  646. package/schema/fixtures/policy/invalid/on-expiry-grant.json +8 -0
  647. package/schema/fixtures/policy/invalid/payload-retention-bare-number.json +4 -0
  648. package/schema/fixtures/policy/invalid/payload-retention-compound.json +4 -0
  649. package/schema/fixtures/policy/invalid/payload-retention-fractional.json +4 -0
  650. package/schema/fixtures/policy/invalid/payload-retention-zero.json +4 -0
  651. package/schema/fixtures/policy/invalid/protected-paths-escape.json +4 -0
  652. package/schema/fixtures/policy/invalid/protected-paths-glob.json +4 -0
  653. package/schema/fixtures/policy/invalid/retro-rate-on-human-only.json +7 -0
  654. package/schema/fixtures/policy/invalid/retro-rate-on-manual.json +7 -0
  655. package/schema/fixtures/policy/invalid/retro-rate-zero.json +7 -0
  656. package/schema/fixtures/policy/invalid/sample-rate-too-high.json +5 -0
  657. package/schema/fixtures/policy/invalid/sampling-secret-env-empty.json +7 -0
  658. package/schema/fixtures/policy/invalid/sampling-secret-env-not-string.json +6 -0
  659. package/schema/fixtures/policy/invalid/skew-tolerance-compound.json +6 -0
  660. package/schema/fixtures/policy/invalid/unknown-autonomy.json +7 -0
  661. package/schema/fixtures/policy/invalid/unknown-class-rule-key.json +6 -0
  662. package/schema/fixtures/policy/invalid/unknown-top-level-key.json +7 -0
  663. package/schema/fixtures/policy/invalid/vault-passphrase-env-empty.json +6 -0
  664. package/schema/fixtures/policy/invalid/vault-passphrase-literal.json +6 -0
  665. package/schema/fixtures/policy/invalid/version-not-string.json +4 -0
  666. package/schema/fixtures/policy/valid/canonical.json +47 -0
  667. package/schema/fixtures/policy/valid/checkpoint-keys.json +18 -0
  668. package/schema/fixtures/policy/valid/class-approvers-limits.json +25 -0
  669. package/schema/fixtures/policy/valid/class-retro-rate.json +17 -0
  670. package/schema/fixtures/policy/valid/global-budgets.json +19 -0
  671. package/schema/fixtures/policy/valid/human-only.json +9 -0
  672. package/schema/fixtures/policy/valid/minimal.json +6 -0
  673. package/schema/fixtures/policy/valid/protected-paths.json +10 -0
  674. package/schema/fixtures/policy/valid/record-namespace.json +13 -0
  675. package/schema/fixtures/policy/valid/request-volume-limits.json +26 -0
  676. package/schema/fixtures/policy/valid/retention-and-sampling-secret.json +16 -0
  677. package/schema/fixtures/policy/valid/skew-tolerance.json +15 -0
  678. package/schema/fixtures/policy/valid/vault-passphrase-env.json +14 -0
  679. package/schema/fixtures/policy/valid/wildcards.json +15 -0
  680. package/schema/fixtures/policy-md/invalid/alias-bomb.md +15 -0
  681. package/schema/fixtures/policy-md/invalid/no-fence.md +7 -0
  682. package/schema/fixtures/policy-md/invalid/protected-route-not-a-subclass.md +16 -0
  683. package/schema/fixtures/policy-md/invalid/schema-invalid-autonomy.md +16 -0
  684. package/schema/fixtures/policy-md/invalid/schema-invalid-read-proof.md +17 -0
  685. package/schema/fixtures/policy-md/invalid/two-fences.md +19 -0
  686. package/schema/fixtures/policy-md/invalid/unclosed-fence.md +11 -0
  687. package/schema/fixtures/policy-md/invalid/wrong-info-string.md +11 -0
  688. package/schema/fixtures/policy-md/invalid/yaml-syntax-error.md +13 -0
  689. package/schema/fixtures/policy-md/precedence/both/APPROVAL.md +7 -0
  690. package/schema/fixtures/policy-md/precedence/both/APPROVALS.md +7 -0
  691. package/schema/fixtures/policy-md/precedence/fallback-only/APPROVALS.md +7 -0
  692. package/schema/fixtures/policy-md/valid/canonical.md +50 -0
  693. package/schema/fixtures/policy-md/valid/daemon-read-proof.md +18 -0
  694. package/schema/fixtures/policy-md/valid/minimal.md +3 -0
  695. package/schema/fixtures/policy-md/valid/prose-lookalikes.md +54 -0
  696. package/schema/fixtures/policy-md/valid/routed-protected-paths.md +49 -0
  697. package/schema/fixtures/policy-md/valid/with-values.md +79 -0
  698. package/schema/fixtures/sample-record/invalid/bad-date-time.json +4 -0
  699. package/schema/fixtures/sample-record/invalid/missing-required-field.json +3 -0
  700. package/schema/fixtures/sample-record/invalid/unknown-top-level-field.json +5 -0
  701. package/schema/fixtures/sample-record/invalid/wrong-type.json +4 -0
  702. package/schema/fixtures/sample-record/valid/minimal.json +4 -0
  703. package/schema/fixtures/sample-record/valid/with-note.json +5 -0
  704. package/schema/fixtures/values/invalid/class-shaped.json +9 -0
  705. package/schema/fixtures/values/invalid/duplicate-entry.json +4 -0
  706. package/schema/fixtures/values/invalid/non-string-item.json +4 -0
  707. package/schema/fixtures/values/invalid/over-cap.json +26 -0
  708. package/schema/fixtures/values/invalid/unknown-key.json +5 -0
  709. package/schema/fixtures/values/invalid/version-string.json +1 -0
  710. package/schema/fixtures/values/valid/empty-lists.json +7 -0
  711. package/schema/fixtures/values/valid/full.json +20 -0
  712. package/schema/fixtures/values/valid/minimal.json +1 -0
  713. package/schema/fixtures/values-md/invalid/schema-invalid.md +62 -0
  714. package/schema/fixtures/values-md/invalid/two-blocks.md +69 -0
  715. package/schema/fixtures/values-md/invalid/unterminated.md +61 -0
  716. package/schema/fixtures/values-md/invalid/yaml-error.md +63 -0
  717. package/schema/fixtures/values-md/valid/absent.md +50 -0
  718. package/schema/fixtures/values-md/valid/with-values.md +79 -0
  719. package/schema/policy.schema.json +501 -0
  720. package/schema/sample-record.schema.json +26 -0
  721. package/schema/values.schema.json +55 -0
  722. package/templates/codex/README.md +9 -0
@@ -0,0 +1,506 @@
1
+ /**
2
+ * The verified-head snapshot (APRV-188): what a process that already walked the
3
+ * log publishes, so the next process does not have to walk it again.
4
+ *
5
+ * ## The cost this removes
6
+ *
7
+ * Every hook-gated tool call is a fresh process with an empty
8
+ * {@link VerifiedReadCache}, so it verifies the log from genesis before it may
9
+ * decide anything. APRV-186 and APRV-206 made that walk as cheap as a walk can
10
+ * be; what they could not change is that it is O(records) per gated command.
11
+ * Measured on this repository's shape at 10k records: 65 ms of the 371 ms a
12
+ * gated invocation costs, growing at 6.5 ms per thousand records, which is the
13
+ * term that turns into seconds as a log grows. The daemon, meanwhile, holds a
14
+ * warm cache and re-verifies only the tail on every tick. This module is how
15
+ * what it verified reaches the next hook process.
16
+ *
17
+ * ## Why a file and not a socket
18
+ *
19
+ * The hook's request path is synchronous end to end — `commandHook` returns an
20
+ * exit code, and the wait loop sleeps synchronously — so a `node:net` client
21
+ * could not be awaited from it, and a `spawnSync` helper to do the awaiting
22
+ * would cost more node startup (20-40 ms) than the walk it saves. A published
23
+ * file needs one `readFileSync`. It also spawns no child and opens no socket,
24
+ * so there is no environment to scrub (APRV-205) and no fd to leak.
25
+ *
26
+ * ## What a snapshot is, and what it is emphatically not
27
+ *
28
+ * It is an **endorsement of bytes**. It says: *the first `byte_length` bytes of
29
+ * this log, whose SHA-256 is this, verified clean, and they end at this head.*
30
+ * It carries no records, and a reader never learns anything from it that it
31
+ * cannot check against the log file in its own hands. A reader that cannot
32
+ * re-prove every one of those claims ignores the file and walks the log, which
33
+ * is the behaviour with no snapshot at all.
34
+ *
35
+ * ## Global invariant 1, "enforcement paths read only verified records"
36
+ *
37
+ * This is the invariant the module touches, so the argument is written out
38
+ * rather than assumed. The structure is APRV-43's, with the verifier in another
39
+ * process:
40
+ *
41
+ * - {@link admitSnapshot} hashes the prefix bytes **it read itself** and
42
+ * requires the digest the snapshot names. That is what makes "the bytes the
43
+ * publisher verified" and "the bytes on disk now" the same bytes; it is the
44
+ * identical proof the in-process cache pays on every cached read, and no
45
+ * amount of `stat` substitutes for it.
46
+ * - The reader parses the prefix lines itself and re-derives the head and the
47
+ * line count from its own parse. A snapshot naming a different head, or a
48
+ * different number of lines, is rejected by the reader's own arithmetic.
49
+ * - The reader then re-checks the chain links (`alg`, `seq` succession, `prev`
50
+ * linkage, hash shape) over those parsed records. This is a deliberate
51
+ * SUBSET of `core/verify.ts`'s ladder and never a replacement for it: it can
52
+ * only reject. `core/verify.ts` remains the one implementation of the
53
+ * verdict, and the appended tail beyond the prefix is walked by it in full.
54
+ * - What is therefore taken on the publisher's word is exactly two checks over
55
+ * bytes already proved identical: the `event` schema validation and the
56
+ * per-record hash recompute.
57
+ *
58
+ * **Why that residue is not a new capability.** A snapshot can only endorse
59
+ * bytes that are already in the log file. To exploit the residue an attacker
60
+ * must write `verified-head.json`, which sits in the same directory as
61
+ * `events.jsonl` under the same permissions — and the chain is unkeyed, so an
62
+ * attacker who can write that directory can simply recompute a self-consistent
63
+ * forged log, which passes a *cold* walk too. The snapshot grants nothing that
64
+ * write access to the log directory did not already grant. The ownership and
65
+ * permission checks in {@link readSnapshot} are what keep that sentence true
66
+ * under a loose umask: a snapshot any other user could have written is refused
67
+ * before it is read.
68
+ *
69
+ * Fail closed throughout. Every check here can only reject, every rejection
70
+ * falls back to the cold walk, and nothing in this module can turn a log that
71
+ * does not verify into a verdict — the reader either proves the prefix or walks
72
+ * it.
73
+ */
74
+ import { createHash } from "node:crypto";
75
+ import { chmodSync, openSync, readFileSync, readSync, realpathSync, renameSync, fstatSync, closeSync, unlinkSync, writeFileSync, } from "node:fs";
76
+ import { dirname, join, resolve } from "node:path";
77
+ /** The snapshot format version. A reader admits exactly this one. */
78
+ export const SNAPSHOT_VERSION = 1;
79
+ /** The hash scheme every record declares; a link check rejects anything else. */
80
+ const ALG = "sha256/jcs";
81
+ const NEWLINE = 0x0a;
82
+ const HEX64 = /^[0-9a-f]{64}$/u;
83
+ /**
84
+ * Where the snapshot for `logPath` lives: beside the log, named for what it is.
85
+ *
86
+ * Derived, never configured. One log has one snapshot, and a reader that had to
87
+ * be *told* where to look could be pointed at a snapshot for another log — a
88
+ * mistake the `log` field would catch and that this removes entirely.
89
+ */
90
+ export function snapshotPathFor(logPath) {
91
+ return join(dirname(resolve(logPath)), "verified-head.json");
92
+ }
93
+ function sha256(bytes) {
94
+ return createHash("sha256").update(bytes).digest("hex");
95
+ }
96
+ /**
97
+ * The identity of a path, for the "is this the same log" comparison.
98
+ *
99
+ * `realpath`, because the publisher and the reader routinely reach one log by
100
+ * two spellings: a daemon started in `/var/folders/...` and a hook whose `cwd`
101
+ * Node has already resolved to `/private/var/folders/...` are the same file, and
102
+ * comparing the spellings would refuse every snapshot on macOS's aliased temp
103
+ * directories, and anywhere a checkout sits behind a symlink. Both sides call
104
+ * this, so the aliases collapse together or not at all.
105
+ *
106
+ * A path that cannot be resolved (the file is gone) falls back to `resolve`,
107
+ * which can only make the comparison stricter.
108
+ */
109
+ function pathIdentity(path) {
110
+ try {
111
+ return realpathSync(resolve(path));
112
+ }
113
+ catch {
114
+ return resolve(path);
115
+ }
116
+ }
117
+ // ---------------------------------------------------------------------------
118
+ // Publishing
119
+ // ---------------------------------------------------------------------------
120
+ /**
121
+ * What this process last published for a log: the endorsement, not the file.
122
+ *
123
+ * A clean read of an unchanged log endorses the same bytes it endorsed last
124
+ * time, and writing that fact again is a rename into a directory the daemon
125
+ * itself watches — which schedules a tick, which reads, which publishes
126
+ * (APRV-211: measured at 18 ticks in 45 seconds with a ten-minute interval and
127
+ * no external writer). The memo is a **write suppressor and never an admission
128
+ * rule**: nothing is read from it, no reader is affected by it, and the worst a
129
+ * stale entry can do is leave a correct snapshot on disk unrewritten.
130
+ */
131
+ const published = new Map();
132
+ /** Forget what this process published. For tests, and for {@link clearSnapshot}. */
133
+ export function forgetPublishedSnapshots(logPath) {
134
+ if (logPath === undefined)
135
+ published.clear();
136
+ else
137
+ published.delete(pathIdentity(logPath));
138
+ }
139
+ /**
140
+ * Publish a snapshot for a log the caller has just verified clean.
141
+ *
142
+ * `raw` must be the exact bytes the caller verified, `sha256` their digest,
143
+ * `head` the head that walk produced and `lines` its record count: this function
144
+ * checks none of that and cannot — it is the caller's own verification being
145
+ * published. Every caller is therefore immediately after a `clean` verdict over
146
+ * these bytes. The digest is a parameter rather than a recomputation because the
147
+ * caller has just proved it (APRV-206's argument, and APRV-211's measurement:
148
+ * hashing megabytes twice per read was 45% of a tick).
149
+ *
150
+ * The write is atomic (a temp file in the same directory, then `rename`) so a
151
+ * reader never sees half a snapshot, and mode 0600 so the ownership argument in
152
+ * the module header holds. Any failure is swallowed: a snapshot is an
153
+ * optimization, and a daemon must not die because a cache file could not be
154
+ * written. The return value says whether it landed, for the tests and the
155
+ * doctor row; `false` also covers "these exact bytes are already published",
156
+ * which is a write skipped rather than a write that failed.
157
+ */
158
+ export function publishSnapshot(logPath, raw, digest, lines, head, schemaDir, now = () => new Date().toISOString()) {
159
+ return publishVerifiedPrefix(logPath, raw.length, raw.length > 0 && raw[raw.length - 1] === NEWLINE, digest, lines, head, schemaDir, now);
160
+ }
161
+ /**
162
+ * {@link publishSnapshot} for a caller that never held the whole file.
163
+ *
164
+ * The incremental read (APRV-217) reads the head line and the appended bytes
165
+ * and proves the digest from a carried hash state, so it has the two facts this
166
+ * function needs — how long the verified prefix is and whether it ends at a
167
+ * line boundary — without a buffer of the log to derive them from. Nothing else
168
+ * differs: the same suppression memo, the same atomic 0600 write, the same
169
+ * snapshot fields. `publishSnapshot` is this function with those two facts read
170
+ * off a buffer.
171
+ */
172
+ export function publishVerifiedPrefix(logPath, byteLength, endsWithNewline, digest, lines, head, schemaDir, now = () => new Date().toISOString()) {
173
+ // A prefix that does not end at a line boundary cannot be resumed from, so it
174
+ // is never published. In practice a clean log always ends with a newline.
175
+ if (byteLength === 0 || !endsWithNewline)
176
+ return false;
177
+ const identity = pathIdentity(logPath);
178
+ const last = published.get(identity);
179
+ if (last !== undefined && last.byteLength === byteLength && last.sha256 === digest)
180
+ return false;
181
+ const snapshot = {
182
+ v: SNAPSHOT_VERSION,
183
+ log: identity,
184
+ schema_dir: schemaDir === undefined ? "" : pathIdentity(schemaDir),
185
+ byte_length: byteLength,
186
+ sha256: digest,
187
+ lines,
188
+ head,
189
+ verified_at: now(),
190
+ pid: process.pid,
191
+ };
192
+ const target = snapshotPathFor(logPath);
193
+ const temp = `${target}.${String(process.pid)}.tmp`;
194
+ try {
195
+ writeFileSync(temp, `${JSON.stringify(snapshot)}\n`, { mode: 0o600 });
196
+ // Explicit, because `mode` on writeFileSync is masked by the umask and only
197
+ // applies when the file is created: a temp file left by a previous crash
198
+ // would otherwise keep whatever mode it had.
199
+ chmodSync(temp, 0o600);
200
+ renameSync(temp, target);
201
+ published.set(identity, { byteLength, sha256: digest });
202
+ return true;
203
+ }
204
+ catch {
205
+ try {
206
+ unlinkSync(temp);
207
+ }
208
+ catch {
209
+ // Nothing to clean up, or nothing we may clean up. Either way the
210
+ // snapshot simply does not exist, which every reader handles.
211
+ }
212
+ return false;
213
+ }
214
+ }
215
+ function reject(reason, detail) {
216
+ return { ok: false, reason, detail };
217
+ }
218
+ function isPositiveInt(value) {
219
+ return typeof value === "number" && Number.isSafeInteger(value) && value > 0;
220
+ }
221
+ /** Strict field-by-field validation. Anything unexpected is a rejection. */
222
+ function parseSnapshot(text) {
223
+ let parsed;
224
+ try {
225
+ parsed = JSON.parse(text);
226
+ }
227
+ catch (cause) {
228
+ return reject("malformed", cause instanceof Error ? cause.message : String(cause));
229
+ }
230
+ if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
231
+ return reject("malformed", "the snapshot is not a JSON object");
232
+ }
233
+ const raw = parsed;
234
+ if (raw["v"] !== SNAPSHOT_VERSION) {
235
+ return reject("version", `snapshot version ${JSON.stringify(raw["v"])} is not ${String(SNAPSHOT_VERSION)}`);
236
+ }
237
+ if (typeof raw["log"] !== "string" || raw["log"].length === 0) {
238
+ return reject("malformed", "log is missing or not a string");
239
+ }
240
+ if (typeof raw["schema_dir"] !== "string") {
241
+ return reject("malformed", "schema_dir is missing or not a string");
242
+ }
243
+ if (!isPositiveInt(raw["byte_length"])) {
244
+ return reject("malformed", "byte_length is missing or not a positive integer");
245
+ }
246
+ if (typeof raw["sha256"] !== "string" || !HEX64.test(raw["sha256"])) {
247
+ return reject("malformed", "sha256 is missing or not a 64-character hex digest");
248
+ }
249
+ if (!isPositiveInt(raw["lines"])) {
250
+ return reject("malformed", "lines is missing or not a positive integer");
251
+ }
252
+ const head = raw["head"];
253
+ if (typeof head !== "object" || head === null || Array.isArray(head)) {
254
+ return reject("malformed", "head is missing or not an object");
255
+ }
256
+ const headRecord = head;
257
+ if (!isPositiveInt(headRecord["seq"])) {
258
+ return reject("malformed", "head.seq is missing or not a positive integer");
259
+ }
260
+ if (typeof headRecord["hash"] !== "string" || !HEX64.test(headRecord["hash"])) {
261
+ return reject("malformed", "head.hash is missing or not a 64-character hex digest");
262
+ }
263
+ return {
264
+ ok: true,
265
+ snapshot: {
266
+ v: SNAPSHOT_VERSION,
267
+ log: raw["log"],
268
+ schema_dir: raw["schema_dir"],
269
+ byte_length: raw["byte_length"],
270
+ sha256: raw["sha256"],
271
+ lines: raw["lines"],
272
+ head: { seq: headRecord["seq"], hash: headRecord["hash"] },
273
+ verified_at: typeof raw["verified_at"] === "string" ? raw["verified_at"] : "",
274
+ pid: typeof raw["pid"] === "number" ? raw["pid"] : 0,
275
+ },
276
+ };
277
+ }
278
+ /**
279
+ * Read the snapshot for `logPath`, refusing one this user did not write.
280
+ *
281
+ * The ownership and permission checks are taken from the open file descriptor
282
+ * rather than from the path, so what is checked and what is read are the same
283
+ * inode: a snapshot swapped between the `stat` and the read cannot be admitted
284
+ * on the strength of the file that used to be there.
285
+ */
286
+ export function readSnapshot(logPath) {
287
+ const path = snapshotPathFor(logPath);
288
+ let fd;
289
+ try {
290
+ fd = openSync(path, "r");
291
+ }
292
+ catch (cause) {
293
+ const code = cause.code;
294
+ if (code === "ENOENT")
295
+ return reject("absent", `no snapshot at ${path}`);
296
+ return reject("unreadable", `snapshot ${path} could not be opened: ${String(code)}`);
297
+ }
298
+ try {
299
+ const stats = fstatSync(fd);
300
+ if (!stats.isFile())
301
+ return reject("not-a-file", `${path} is not a regular file`);
302
+ // Who wrote it. `process.geteuid` is absent on Windows, where the check
303
+ // cannot be made and the file is refused rather than trusted.
304
+ const euid = typeof process.geteuid === "function" ? process.geteuid() : null;
305
+ if (euid === null) {
306
+ return reject("foreign-owner", "file ownership cannot be established on this platform");
307
+ }
308
+ if (stats.uid !== euid) {
309
+ return reject("foreign-owner", `${path} is owned by uid ${String(stats.uid)}, not by this user (${String(euid)})`);
310
+ }
311
+ if ((stats.mode & 0o022) !== 0) {
312
+ return reject("loose-permissions", `${path} is writable by group or other (mode ${(stats.mode & 0o777).toString(8)})`);
313
+ }
314
+ // A snapshot is a few hundred bytes; a huge file here is not one.
315
+ if (stats.size > 64 * 1024) {
316
+ return reject("malformed", `${path} is ${String(stats.size)} bytes, far larger than a snapshot`);
317
+ }
318
+ const buffer = Buffer.allocUnsafe(stats.size);
319
+ let read = 0;
320
+ while (read < stats.size) {
321
+ const got = readSync(fd, buffer, read, stats.size - read, read);
322
+ if (got === 0)
323
+ break;
324
+ read += got;
325
+ }
326
+ if (read !== stats.size)
327
+ return reject("unreadable", `${path} ended early`);
328
+ return parseSnapshot(buffer.toString("utf8"));
329
+ }
330
+ catch (cause) {
331
+ return reject("unreadable", cause instanceof Error ? cause.message : String(cause));
332
+ }
333
+ finally {
334
+ try {
335
+ closeSync(fd);
336
+ }
337
+ catch {
338
+ // Already closed; nothing to release.
339
+ }
340
+ }
341
+ }
342
+ // ---------------------------------------------------------------------------
343
+ // Admission
344
+ // ---------------------------------------------------------------------------
345
+ /**
346
+ * The chain links, re-checked over records the reader parsed itself.
347
+ *
348
+ * A SUBSET of `core/verify.ts`'s ladder — `alg`, the shape of `hash`, `seq`
349
+ * succession from 1, and `prev` linkage — and never a substitute for it. It can
350
+ * only reject, it is not consulted for any verdict, and everything it does not
351
+ * check (the `event` schema, the per-record hash recompute) is the residue the
352
+ * module header accounts for. It costs about a millisecond at ten thousand
353
+ * records and turns a buggy or stale publisher into a fallback rather than into
354
+ * a bad read.
355
+ */
356
+ function linksHold(records, expected) {
357
+ let previousHash = null;
358
+ for (const [index, record] of records.entries()) {
359
+ const seq = index + 1;
360
+ const raw = record;
361
+ if (raw["alg"] !== ALG) {
362
+ return `record ${String(seq)} declares alg ${JSON.stringify(raw["alg"])}, not ${ALG}`;
363
+ }
364
+ if (typeof raw["hash"] !== "string" || !HEX64.test(raw["hash"])) {
365
+ return `record ${String(seq)} has no 64-character hex hash`;
366
+ }
367
+ if (raw["seq"] !== seq) {
368
+ return `record at position ${String(seq)} declares seq ${JSON.stringify(raw["seq"])}`;
369
+ }
370
+ const prev = raw["prev"];
371
+ if (previousHash === null) {
372
+ if (prev !== null)
373
+ return "the first record does not have a null prev";
374
+ }
375
+ else if (prev !== previousHash) {
376
+ return `record ${String(seq)} prev does not link to record ${String(seq - 1)}`;
377
+ }
378
+ previousHash = raw["hash"];
379
+ }
380
+ const last = records[records.length - 1];
381
+ if (last === undefined)
382
+ return "the prefix holds no records";
383
+ if (last.seq !== expected.seq || last.hash !== expected.hash) {
384
+ return `the prefix ends at seq ${String(last.seq)}, not at the claimed head seq ${String(expected.seq)}`;
385
+ }
386
+ return null;
387
+ }
388
+ /**
389
+ * Decide whether `snapshot` may stand for the first bytes of `raw`, and return
390
+ * the {@link VerifiedPrefix} a resumed walk chains onto when it may.
391
+ *
392
+ * `raw` is the caller's own read of the whole log. Every check below is made
393
+ * against those bytes; nothing is re-`stat`ed, re-read, or taken from the
394
+ * snapshot without being re-derived. The order is cheapest-first, but only the
395
+ * digest is load-bearing — everything before it rejects an obviously
396
+ * inapplicable snapshot without hashing megabytes, and everything after it
397
+ * re-derives from the reader's own parse what the snapshot merely claimed.
398
+ */
399
+ export function admitSnapshot(logPath, raw, snapshot, schemaDir) {
400
+ const identity = pathIdentity(logPath);
401
+ if (snapshot.log !== identity) {
402
+ return reject("other-log", `the snapshot describes ${snapshot.log}, not ${identity}`);
403
+ }
404
+ const schemaKey = schemaDir === undefined ? "" : pathIdentity(schemaDir);
405
+ if (snapshot.schema_dir !== schemaKey) {
406
+ return reject("other-schema-dir", `the snapshot was verified against schemas in ${JSON.stringify(snapshot.schema_dir)}, this read uses ${JSON.stringify(schemaKey)}`);
407
+ }
408
+ // The log is append-only: a file shorter than the endorsed prefix cannot
409
+ // contain it, and must be walked cold so the head reported is the file's own.
410
+ if (raw.length < snapshot.byte_length) {
411
+ return reject("shorter-file", `the log is ${String(raw.length)} bytes, shorter than the endorsed prefix of ${String(snapshot.byte_length)}`);
412
+ }
413
+ if (raw[snapshot.byte_length - 1] !== NEWLINE) {
414
+ return reject("not-line-aligned", "the endorsed prefix does not end at a line boundary");
415
+ }
416
+ // The proof.
417
+ const digest = sha256(raw.subarray(0, snapshot.byte_length));
418
+ if (digest !== snapshot.sha256) {
419
+ return reject("digest-mismatch", "the log's first bytes are not the bytes the snapshot endorses");
420
+ }
421
+ // Everything from here is re-derived from the reader's own parse of those
422
+ // bytes. A snapshot that lied about the head or the record count is caught
423
+ // here, by arithmetic, not by trust.
424
+ const text = Buffer.from(raw.buffer, raw.byteOffset, snapshot.byte_length).toString("utf8");
425
+ const records = [];
426
+ let start = 0;
427
+ for (;;) {
428
+ const newline = text.indexOf("\n", start);
429
+ if (newline < 0)
430
+ break;
431
+ const line = text.slice(start, newline);
432
+ start = newline + 1;
433
+ if (line.trim().length === 0)
434
+ return reject("malformed", "the endorsed prefix holds a blank line");
435
+ let value;
436
+ try {
437
+ value = JSON.parse(line);
438
+ }
439
+ catch (cause) {
440
+ return reject("malformed", `line ${String(records.length + 1)} of the endorsed prefix is not valid JSON: ${cause instanceof Error ? cause.message : String(cause)}`);
441
+ }
442
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
443
+ return reject("malformed", `line ${String(records.length + 1)} of the endorsed prefix is not a JSON object`);
444
+ }
445
+ records.push(value);
446
+ }
447
+ if (records.length !== snapshot.lines) {
448
+ return reject("line-count-mismatch", `the endorsed prefix holds ${String(records.length)} lines, not the ${String(snapshot.lines)} claimed`);
449
+ }
450
+ const broken = linksHold(records, snapshot.head);
451
+ if (broken !== null) {
452
+ // A head that does not match what the bytes say is the signature of a
453
+ // publisher serving something other than what it verified.
454
+ const reason = broken.includes("claimed head") ? "head-mismatch" : "chain-broken";
455
+ return reject(reason, broken);
456
+ }
457
+ return {
458
+ ok: true,
459
+ digest,
460
+ prefix: {
461
+ byteLength: snapshot.byte_length,
462
+ lines: snapshot.lines,
463
+ head: snapshot.head,
464
+ records,
465
+ },
466
+ };
467
+ }
468
+ /**
469
+ * {@link readSnapshot} then {@link admitSnapshot}: the whole path a reader takes.
470
+ *
471
+ * Returns the prefix to resume behind, or the reason there is none. Every reason
472
+ * means "walk the log", which is what the caller does with no snapshot at all.
473
+ */
474
+ export function snapshotPrefix(logPath, raw, schemaDir) {
475
+ const read = readSnapshot(logPath);
476
+ if (!read.ok)
477
+ return read;
478
+ return admitSnapshot(logPath, raw, read.snapshot, schemaDir);
479
+ }
480
+ /** Read the snapshot's own text, for the doctor row. Never throws. */
481
+ export function snapshotSummary(logPath) {
482
+ return readSnapshot(logPath);
483
+ }
484
+ /** Remove a snapshot. Used by tests and by anything that invalidates one. */
485
+ export function clearSnapshot(logPath) {
486
+ // The memo describes a file; removing the file removes what it described, and
487
+ // the next clean read must publish again rather than believe this process's
488
+ // own bookkeeping.
489
+ forgetPublishedSnapshots(logPath);
490
+ try {
491
+ unlinkSync(snapshotPathFor(logPath));
492
+ }
493
+ catch {
494
+ // Absent is the desired state.
495
+ }
496
+ }
497
+ /** Read the log's bytes, for callers that want the same view a reader admits. */
498
+ export function logBytes(logPath) {
499
+ try {
500
+ return readFileSync(logPath);
501
+ }
502
+ catch {
503
+ return null;
504
+ }
505
+ }
506
+ //# sourceMappingURL=verified-snapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verified-snapshot.js","sourceRoot":"","sources":["../../../src/core/verified-snapshot.ts"],"names":[],"mappings":"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"}