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,362 @@
1
+ /**
2
+ * The model gloss: one sentence saying what a payload does, attached to a
3
+ * prompt at render time and to nothing else (APRV-144, APRV-164).
4
+ *
5
+ * The observed complaint (Carter, 2026-08-25): "the claimed isn't very useful —
6
+ * I mostly see the path, not a readable claim of what is happening". The
7
+ * deterministic half of the answer is `channels/payload-view.ts`'s command
8
+ * breakdown, which is derived from the classifier's own parse and is COMPUTED.
9
+ * This is the other half, and it is the opposite kind of thing: a sentence from
10
+ * a language model, which no party vouches for and which the runtime must
11
+ * therefore treat as decoration.
12
+ *
13
+ * Four properties hold the design together, and every one of them is about
14
+ * keeping a model out of the decision.
15
+ *
16
+ * **The gate never sees it.** This runs in the LISTENER, at the moment a
17
+ * message is about to be sent, on a `ChannelRequest` the tagger has already
18
+ * finished building. The payload hash covers the bytes and not this; the log
19
+ * records the approval lifecycle and not this; a restart forgets it. Nothing
20
+ * here writes anything anywhere.
21
+ *
22
+ * **It is never load-bearing.** No code path branches on the content of a
23
+ * gloss. The only thing that turns on it at all is whether one more line
24
+ * appears in the CLAIMED block, which is why every failure mode below resolves
25
+ * to ABSENCE rather than to a placeholder, an error line, or a retry: a prompt
26
+ * with no gloss is the prompt approval.md shipped for its whole life so far,
27
+ * and a listener that waited on a model would have made a language model part
28
+ * of the availability of the gate.
29
+ *
30
+ * **It fails toward absence, fast.** A hard timeout (default
31
+ * {@link GLOSS_TIMEOUT_MS}), a non-zero exit, empty output, a binary that is
32
+ * not installed, a spawn that throws: all `null`. The timeout is bounded on
33
+ * purpose — this sits in a dispatch cycle that an approver is waiting on — and
34
+ * since APRV-197 it is bounded by a MEASUREMENT rather than by a guess, because
35
+ * a ceiling the model cannot meet is not a fast failure, it is a feature that
36
+ * never runs. See {@link GLOSS_TIMEOUT_MS}. Absences are counted and reported
37
+ * by the caller (`cli/gloss-attach.ts`), so a ceiling that is wrong again
38
+ * announces itself instead of looking like silence.
39
+ *
40
+ * **Its output is untrusted text.** Whatever comes back is collapsed to a
41
+ * single line, capped at {@link GLOSS_MAX_CHARS}, and handed to the channel as
42
+ * a CLAIMED field, which means it goes through the same `escapeHtml` every
43
+ * other claimed value does. It is treated exactly like a summary an agent
44
+ * wrote, because that is precisely what it is a cousin of.
45
+ *
46
+ * The subprocess is injectable ({@link GlossRunner}) so the tests drive both
47
+ * branches without a model ever being invoked: the suite never spawns
48
+ * anything, and the default runner below is exercised only in production.
49
+ */
50
+ import { spawnSync } from "node:child_process";
51
+ import { childEnvironment } from "../core/child-env.js";
52
+ /**
53
+ * How long the subprocess gets before it is killed and the gloss is dropped.
54
+ *
55
+ * **Measured, not guessed (APRV-197).** APRV-144 chose 2s on the reasoning that
56
+ * "a slow reading aid is worse than no reading aid", which is true and was the
57
+ * wrong number: five fresh `claude -p --model haiku` spawns of this module's
58
+ * own command instruction, timed on the author's machine on 2026-09-01, came
59
+ * back in 10.2s, 11.3s, 13.5s, 14.6s and 14.9s. Every one of them would have
60
+ * been killed. The gloss was therefore not "occasionally absent"; it was
61
+ * absent every single time, and because absence is silent by design that was
62
+ * indistinguishable from the feature never having shipped — which is exactly
63
+ * how it was reported (Carter, 2026-09-01: "i thought we implemented a change
64
+ * so that the claim would be an llm summary").
65
+ *
66
+ * A pre-warm was the other option on the table and the measurement rules it
67
+ * out: the runs above were consecutive, so runs two through five were warm in
68
+ * every sense a second process can be (page cache, module cache), and they took
69
+ * 10s to 15s all the same. What is being waited on is inference, not start-up,
70
+ * and nothing a listener does once at boot shortens it.
71
+ *
72
+ * So the ceiling is set above the slowest observed run with headroom, and the
73
+ * price of that honesty is made explicit rather than hidden. A gloss is now
74
+ * asked for only under `--gloss` (on `channel cli`, `channel telegram listen`
75
+ * and `up` alike): an operator who wants the sentence spends the seconds
76
+ * knowingly, one who does not is never made to wait, and the reading aid that
77
+ * is always present is the deterministic `command_breakdown` the classifier
78
+ * derives from the same bytes for free.
79
+ */
80
+ export const GLOSS_TIMEOUT_MS = 20_000;
81
+ /** The most characters a gloss may occupy on the prompt. */
82
+ export const GLOSS_MAX_CHARS = 200;
83
+ /** Maximum length of an exact provider-supplied model identifier. */
84
+ export const GLOSS_MODEL_ID_MAX_CHARS = 100;
85
+ /**
86
+ * The model tier this spends: the cheap one.
87
+ *
88
+ * CLAUDE.md's model tiers put "cheap classification" on a `claude -p` haiku
89
+ * subprocess, and a one-sentence paraphrase of a command line is the cheapest
90
+ * kind of language task there is. Nothing about the prompt or the gate changes
91
+ * if the flag is unrecognised by the installed CLI: an unusable invocation
92
+ * exits non-zero and the gloss is absent.
93
+ */
94
+ export const GLOSS_MODEL = "haiku";
95
+ /**
96
+ * The historical author label for legacy string-valued test runners.
97
+ *
98
+ * Production runners return explicit provenance. Keeping this constant is a
99
+ * compatibility bridge for callers whose injected seam predates APRV-253; it
100
+ * must never be used to guess the provenance of a typed production result.
101
+ */
102
+ export const GLOSS_AUTHOR = `model:${GLOSS_MODEL}`;
103
+ /**
104
+ * The instruction the model is given.
105
+ *
106
+ * Deliberately narrow: describe, do not judge. A model asked whether a command
107
+ * is safe would produce a sentence an approver could read as a recommendation,
108
+ * and a recommendation from an unverified party sitting beside an Approve
109
+ * button is the failure this whole codebase is arranged to prevent. It is
110
+ * asked what the command DOES, and the answer is labelled as a model's on the
111
+ * line where it appears.
112
+ */
113
+ export const GLOSS_INSTRUCTION = [
114
+ "Describe, in one plain sentence under 25 words, what this shell command does.",
115
+ "Do not judge whether it is safe, do not recommend approving or rejecting it,",
116
+ "and do not add any preamble, quotes or formatting. Output the sentence only.",
117
+ ].join(" ");
118
+ /**
119
+ * The same instruction for a file change (APRV-164).
120
+ *
121
+ * A payload kind gets its own wording because "what this shell command does" is
122
+ * the wrong question to ask about a diff, and a model handed the wrong question
123
+ * answers a question nobody asked. The discipline is identical: describe the
124
+ * change, do not rate it, and above all do not say whether the edit looks
125
+ * correct — a judgement of a diff sitting beside an Approve button is the same
126
+ * failure as a judgement of a command.
127
+ */
128
+ export const GLOSS_EDIT_INSTRUCTION = [
129
+ "Describe, in one plain sentence under 25 words, what this file edit changes.",
130
+ "Do not judge whether it is safe or correct, do not recommend approving or rejecting it,",
131
+ "and do not add any preamble, quotes or formatting. Output the sentence only.",
132
+ ].join(" ");
133
+ /** The same instruction for an email (APRV-164): what it says, and to whom. */
134
+ export const GLOSS_EMAIL_INSTRUCTION = [
135
+ "Describe, in one plain sentence under 25 words, what this email says and to whom.",
136
+ "Do not judge whether it is safe, do not recommend approving or rejecting it,",
137
+ "and do not add any preamble, quotes or formatting. Output the sentence only.",
138
+ ].join(" ");
139
+ /**
140
+ * The most material a gloss may hand the subprocess.
141
+ *
142
+ * A whole-file `Write` payload is megabytes, and a reading aid must not turn a
143
+ * dispatch cycle into a megabyte of argv and a model reading it. The cap is on
144
+ * the INPUT only: {@link GLOSS_MAX_CHARS} still bounds what comes back.
145
+ */
146
+ export const GLOSS_MAX_INPUT_CHARS = 8_192;
147
+ /**
148
+ * What the model is told when the cap bit.
149
+ *
150
+ * Announced rather than silent, for the reason every other fold in this
151
+ * codebase is announced: a model describing a prefix as if it were the whole
152
+ * would produce a confident sentence about a change the approver is not being
153
+ * shown. The line is for the model; the approver's own evidence is the PAYLOAD
154
+ * block, which is never folded.
155
+ */
156
+ export const GLOSS_TRUNCATION_NOTE = "(input truncated; describe what is shown)";
157
+ /**
158
+ * One line, capped, or `null`.
159
+ *
160
+ * Newlines are stripped rather than escaped because the prompt renders this as
161
+ * a single bullet, and a multi-line value would break the one-fact-per-line
162
+ * shape the whole COMPUTED/CLAIMED split relies on to stay legible. Truncation
163
+ * is marked, for the same reason every other fold in this codebase is.
164
+ */
165
+ export function tidyGloss(raw) {
166
+ if (raw === null)
167
+ return null;
168
+ const collapsed = raw.replace(/\s+/gu, " ").trim();
169
+ if (collapsed.length === 0)
170
+ return null;
171
+ return collapsed.length <= GLOSS_MAX_CHARS
172
+ ? collapsed
173
+ : `${collapsed.slice(0, GLOSS_MAX_CHARS - 1)}…`;
174
+ }
175
+ /**
176
+ * Normalize a runner answer without inventing provenance.
177
+ *
178
+ * Objects with incomplete metadata fail toward absence. Raw strings take the
179
+ * one narrowly documented legacy path and retain the historical Haiku label.
180
+ */
181
+ export function tidyGlossResult(raw) {
182
+ if (typeof raw === "string" || raw === null) {
183
+ const text = tidyGloss(raw);
184
+ return text === null
185
+ ? null
186
+ : {
187
+ text,
188
+ provenance: { provider: "claude", requestedModel: GLOSS_MODEL },
189
+ legacy: true,
190
+ };
191
+ }
192
+ if (typeof raw !== "object" || raw === null)
193
+ return null;
194
+ const candidate = raw;
195
+ if (typeof candidate["text"] !== "string")
196
+ return null;
197
+ const provenanceValue = candidate["provenance"];
198
+ if (typeof provenanceValue !== "object" || provenanceValue === null)
199
+ return null;
200
+ const provenance = provenanceValue;
201
+ const requestedModel = normalizeGlossModelId(provenance["requestedModel"]);
202
+ const confirmedModel = provenance["confirmedModel"] === undefined
203
+ ? undefined
204
+ : normalizeGlossModelId(provenance["confirmedModel"]);
205
+ if ((provenance.provider !== "claude" && provenance.provider !== "codex") ||
206
+ requestedModel === null ||
207
+ (provenance["confirmedModel"] !== undefined && confirmedModel === null)) {
208
+ return null;
209
+ }
210
+ const text = tidyGloss(candidate["text"]);
211
+ if (text === null)
212
+ return null;
213
+ const normalizedProvenance = {
214
+ provider: provenance.provider,
215
+ requestedModel,
216
+ };
217
+ if (typeof confirmedModel === "string")
218
+ normalizedProvenance.confirmedModel = confirmedModel;
219
+ return { text, provenance: normalizedProvenance };
220
+ }
221
+ /** A bounded, single-line identifier, or `null` rather than a misleading fold. */
222
+ export function normalizeGlossModelId(raw) {
223
+ if (typeof raw !== "string")
224
+ return null;
225
+ const trimmed = raw.trim();
226
+ if (trimmed.length === 0 ||
227
+ trimmed.length > GLOSS_MODEL_ID_MAX_CHARS ||
228
+ !/^[\p{L}\p{N}][\p{L}\p{N}._:/+-]*$/u.test(trimmed)) {
229
+ return null;
230
+ }
231
+ return trimmed;
232
+ }
233
+ /**
234
+ * The claimed author rendered beside one gloss.
235
+ *
236
+ * Requested and confirmed identities are deliberately distinct. The default
237
+ * subprocess knows what it asked Claude for, but its plain stdout does not
238
+ * prove which model served the request, so it renders as requested.
239
+ */
240
+ export function glossAuthor(result) {
241
+ if (result.legacy === true)
242
+ return GLOSS_AUTHOR;
243
+ const { provider, requestedModel, confirmedModel } = result.provenance;
244
+ if (confirmedModel === undefined) {
245
+ return `model:${provider}/${requestedModel} (requested)`;
246
+ }
247
+ return confirmedModel === requestedModel
248
+ ? `model:${provider}/${confirmedModel} (confirmed)`
249
+ : `model:${provider}/${confirmedModel} (confirmed; requested:${requestedModel})`;
250
+ }
251
+ /**
252
+ * The production runner: `claude -p --model haiku`, with a hard timeout.
253
+ *
254
+ * `spawnSync` with no shell, in the manner of `cli/hook.ts`'s git calls: the
255
+ * prompt is an argument and never a string a shell re-parses. Every failure is
256
+ * a value rather than an exception — `spawnSync` reports a missing binary and a
257
+ * timeout kill on the result object, and both are simply "no gloss".
258
+ *
259
+ * **Starved, like a granted child (APRV-207).** The environment is built by
260
+ * APRV-205's scrub rather than inherited: this is a third-party CLI that talks
261
+ * to the network on every prompt render, spawned by the listener, which is the
262
+ * process holding the Telegram bot token and the vault passphrase. It has no
263
+ * use for either, and a gate that hands its own credentials to a convenience is
264
+ * a gate whose custody claim is decorative. No credential is DECLARED here,
265
+ * because a gloss is not a granted action and no adapter asked for one.
266
+ *
267
+ * What passes is what the scrub does not take: the model's own auth
268
+ * (`ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, `CLAUDE_CODE_OAUTH_TOKEN`,
269
+ * `ANTHROPIC_BASE_URL`, `ANTHROPIC_MODEL` and kin), `PATH`, `HOME`, `TMPDIR`
270
+ * and the locale. None of them is under the gate's credential-bearing prefixes,
271
+ * so none of them needs a list of its own: a second list here is a second list
272
+ * to drift, and the CLI's ability to reach its own model is not this gate's
273
+ * secret to keep.
274
+ *
275
+ * `passphraseEnv` is the name the policy's `vault.passphrase_env` gives, for
276
+ * the deployment that renamed it out from under the prefixes. Omitted, the
277
+ * default (`APPROVAL_VAULT_PASSPHRASE`) is removed by the prefix rule anyway.
278
+ */
279
+ export function spawnGloss(prompt, passphraseEnv = null, model = GLOSS_MODEL) {
280
+ const requestedModel = normalizeGlossModelId(model);
281
+ if (requestedModel === null)
282
+ return null;
283
+ let result;
284
+ try {
285
+ result = spawnSync("claude", ["-p", "--model", requestedModel, prompt], {
286
+ encoding: "utf8",
287
+ env: childEnvironment({ passphraseEnv }).env,
288
+ timeout: GLOSS_TIMEOUT_MS,
289
+ killSignal: "SIGKILL",
290
+ // A sentence is a few hundred bytes. A model that decides to emit a
291
+ // megabyte is a model whose answer is dropped rather than buffered.
292
+ maxBuffer: 64 * 1024,
293
+ });
294
+ }
295
+ catch {
296
+ return null;
297
+ }
298
+ if (result.error !== undefined || result.status !== 0)
299
+ return null;
300
+ return typeof result.stdout === "string"
301
+ ? {
302
+ text: result.stdout,
303
+ provenance: { provider: "claude", requestedModel },
304
+ }
305
+ : null;
306
+ }
307
+ /**
308
+ * {@link spawnGloss} bound to one policy's passphrase variable (APRV-207).
309
+ *
310
+ * The verbs that wire a runner (`channel cli`, `channel telegram listen`, `up`)
311
+ * have a policy load in hand already, and this is the only thing the scrub
312
+ * needs from it. A runner is still a `(prompt) => string | null`, so nothing
313
+ * downstream learns that a policy exists.
314
+ */
315
+ export function glossRunnerFor(passphraseEnv, model = GLOSS_MODEL) {
316
+ return (prompt) => spawnGloss(prompt, passphraseEnv, model);
317
+ }
318
+ /**
319
+ * `material`, capped at {@link GLOSS_MAX_INPUT_CHARS} and marked when it was.
320
+ *
321
+ * The marker precedes the material rather than trailing it, so a model reading
322
+ * a long prefix meets the caveat before the text it is about to describe.
323
+ */
324
+ export function glossPrompt(instruction, material) {
325
+ return material.length <= GLOSS_MAX_INPUT_CHARS
326
+ ? `${instruction}\n\n${material}`
327
+ : `${instruction}\n\n${GLOSS_TRUNCATION_NOTE}\n\n${material.slice(0, GLOSS_MAX_INPUT_CHARS)}`;
328
+ }
329
+ /**
330
+ * A gloss for one payload's material, or `null`.
331
+ *
332
+ * The material is passed to the model as data inside the prompt. It is
333
+ * agent-authored text, and it is worth being explicit about what that does and
334
+ * does not mean here: a command (or a diff, or a body) crafted to talk the
335
+ * model into writing "harmless cleanup" gets that sentence onto the prompt,
336
+ * labelled `(model, unverified)`, next to a COMPUTED breakdown derived from the
337
+ * same bytes by code and a PAYLOAD block carrying the canonical rendering verbatim. It
338
+ * cannot change the class, the autonomy, the budget verdicts or the payload
339
+ * hash, because nothing downstream reads it. That is the whole reason this is
340
+ * allowed to exist on the prompt at all.
341
+ *
342
+ * The caller chooses the instruction, which is the only thing that varies by
343
+ * payload kind: the bounds, the failure modes and the author label are one
344
+ * pipeline for every kind (APRV-164).
345
+ */
346
+ export function glossFor(instruction, material, run = spawnGloss) {
347
+ if (material.trim().length === 0)
348
+ return null;
349
+ let raw;
350
+ try {
351
+ raw = run(glossPrompt(instruction, material));
352
+ return tidyGlossResult(raw);
353
+ }
354
+ catch {
355
+ // A runner is contracted not to throw; if one does anyway, the contract
356
+ // that matters (a gloss never breaks a dispatch cycle) is upheld here. The
357
+ // normalization stays inside this boundary because an injected object can
358
+ // throw from a property getter just as readily as the runner can throw.
359
+ return null;
360
+ }
361
+ }
362
+ //# sourceMappingURL=gloss.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gloss.js","sourceRoot":"","sources":["../../../src/cli/gloss.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Help text. SPEC.md §10.1 makes `--help` part of the interface rather than a
3
+ * courtesy: the CLI is how agents use this system, and an agent that has to
4
+ * guess an exit code or a JSON key is an agent that will guess wrong on the one
5
+ * invocation that mattered. Every command therefore documents its flags, its
6
+ * refusal codes and its exact `--json` shape.
7
+ *
8
+ * WHAT A PER-VERB HELP IS (APRV-91): the usage forms, a short paragraph of
9
+ * intent, the flags, the machine-facing contract (`--json` shape, refusal
10
+ * codes), and a two-line footer. What it is NOT is an essay. The frozen
11
+ * exit-code table is printed by `approval --help` and nowhere else, the
12
+ * cross-cutting stances (identity is declared not proved, a refusal is exit 1,
13
+ * a token is shown once, a channel is transport) are stated once at the root,
14
+ * and the long design rationale lives in `docs/cli-reference.md`, which every
15
+ * trimmed help points at by anchor. The prose was moved, not rewritten.
16
+ */
17
+ export declare const ROOT_HELP = "approval \u2014 human approval for agent actions (pre-release)\n\nUsage:\n approval log verify [--log <path>] [--json]\n approval log tail [--log <path>] [-n <count>] [--json]\n approval log export [--log <path>] [--json]\n approval log follow [--log <path>] [--from <seq>] [--cursor-hash <64hex>] --json\n approval instructions [--schemas] [--json]\n approval init [--dir <path>] [--json]\n approval quickstart [--dir <path>] [--api-base <url>] (interactive; no --json)\n approval policy check|test <class> [--reversible true|false] [--policy <path>] [--dir <path>] [--json]\n approval policy attest [--policy <path>] [--dir <path>] [--as human:<id>] [--json]\n approval policy amend [--policy <path>] [--dir <path>] [--log <path>]\n [--as human:<id>] [--require-load] [--dry-run] [--commit]\n [--yes] [--json]\n approval register <task-file> [--as <id>] [--log <path>] [--json]\n approval request <task> --action <key> [--as <id>] [--json]\n approval grant|reject|revoke <action-key> [--note <text>] [--as human:<id>] [--json]\n approval expire <action-key> [--json]\n approval token <action-key> [--policy <path>] [--dir <path>] [--json]\n approval consume <action-key> --token <t> [--payload-hash <64hex>]\n [--as <id>] [--json] (internal)\n approval run <action-key> [--token <t>] [--payload-hash <64hex>]\n [--as <id>] [--no-sandbox] [--json] -- <cmd\u2026>\n approval sandbox [--allow-loopback] [--log <path>] -- <cmd\u2026>\n approval adapter email <action-key> [--token <t>] --payload <file|->\n [--as <id>] [--vault <path>] [--timeout <ms>] [--json]\n approval adapter agentmail <action-key> [--token <t>] --payload <file|->\n [--as <id>] [--vault <path>] [--timeout <ms>] [--json]\n approval adapter zzz <action-key> [--token <t>] --payload <file|->\n [--as <id>] [--vault <path>] [--timeout <ms>] [--json]\n approval execution resolve <action-key> --outcome completed|failed\n --note \"<text>\" [--as human:<id>] [--json]\n approval execution reconcile <action-key>\n --resolution executed|not-executed\n --note \"<evidence>\" [--as human:<id>] [--json]\n approval audit list|review [<seq|action-key>] [--note \"<text>\"]\n [--as human:<id>] [--all] [--json]\n approval wait <task> --timeout <duration> [--interval <d>]\n [--withdraw-on-timeout] [--json]\n approval withdraw <task> --action <key> [--reason <r>] [--note \"<text>\"]\n [--as <id>] [--json]\n approval queue [--policy <path>] [--dir <path>] [--json]\n approval coverage [--base <ref>] [--head <ref>] [--since <duration>]\n [--source git,gh,agentmail] [--json]\n approval channel cli [--policy-dir <path>] [--payload-dir <path>]\n [--as human:<id>] [--interactive] [--json]\n approval channel web [--port <n>] [--payload-dir <path>] [--as human:<id>]\n [--policy <path>] [--dir <path>] [--log <path>] [--json]\n approval channel telegram listen|health [--once] [--as human:<id>] [--json]\n approval daemon run [--tasks <dir>] [--out <path>] [--interval <duration>]\n [--debounce <duration>] [--once] [--with-channels] [--json]\n approval up [--as human:<id>] [--port <n>] [--no-telegram] [--no-web]\n [--restart-backoff <d>] (plus every daemon run flag)\n approval setup service [--platform launchd|systemd] [--uninstall]\n [--label <name>] [--logs <dir>] [--env-file <path>]\n approval gate open|close|status [--for <d>] [--reason \"<t>\"] [--note \"<t>\"]\n [--as human:<id>] [--log <path>] [--json]\n (open: terminal only, no --json)\n approval status [--policy <path>] [--dir <path>] [--json]\n approval doctor [--log <path>] [--policy <path>] [--dir <path>]\n [--api-base <url>] [--json]\n approval payload hash <file|-> [--json]\n approval payload agentmail-draft <inbox-id> <draft-id> [--api-base <url>]\n [--json]\n approval journal write --message \"<text>\" | - [--task <id>] [--session <id>]\n [--as <id>] [--journal <dir>] [--json]\n approval journal read [--limit <n>] [--since <YYYY-MM-DD>] [--journal <dir>]\n [--json]\n approval values [--policy <path>] [--dir <path>] [--json]\n approval feedback [--task <id>] [--actor <agent id>] [--reaction <word>]\n [--source review|decision] [--since <YYYY-MM-DD>]\n [--limit <n>] [--log <path>] [--json]\n approval env [--check] [--policy <path>] [--dir <path>] [--log <path>]\n [--json]\n approval setup identity|vault|sampling|channel <name>|adapter <name>\n [--as human:<id>] [--api-base <url>] [--policy <path>]\n [--dir <path>] [--log <path>] (interactive; no --json)\n approval vault set <name> [--value-env <VAR>] [--as human:<id>] [--json]\n approval vault list|remove [<name>] [--as human:<id>] [--json]\n approval hook claude-code [--as agent:<id>] [--timeout <duration>]\n [--interval <d>] [--policy <path>] [--dir <path>]\n [--log <path>] (reads PreToolUse JSON)\n approval hook cursor [--as agent:<id>] [--timeout <duration>]\n [--interval <d>] [--policy <path>] [--dir <path>]\n [--log <path>] (reads preToolUse JSON)\n approval hook classify [--json] [--policy <path>] [--dir <path>] -- <command\u2026>\n approval import agents-md <file> [--out <path>] [--json]\n approval codex prepare|setup|doctor|start|serve (strict host workflow)\n approval mcp serve --as agent:<id> [--dir <path>] [--log <path>]\n [--policy <path>] (MCP over stdio; foreground)\n approval reindex [--log <path>] [--index <path>] [--force] [--json]\n approval render [--log <path>] [--out <path>] [--policy <path>]\n [--dir <path>] [--json]\n approval --help\n\nSet up \u2014 make this directory and this machine ready:\n init scaffold a working directory: APPROVAL.md (SPEC.md \u00A75.1's canonical\n policy, to be read and edited), the empty .approval/log/ directory,\n .approval/QUEUE.md in its empty state, and the .gitignore lines for\n the index, the vault, the environment source map and the\n atomic-write temp files. Appends\n nothing, attests nothing, overwrites nothing; a re-run writes\n nothing and reports what already exists\n quickstart ask three decisions, write a solo policy with the named human as\n its sole approver, configure identity and an optional Telegram\n channel, show the exact bytes, then require typed `understood`\n before attesting. HUMAN-ONLY and INTERACTIVE ONLY\n setup the WRITER for that file: \"setup identity|vault|sampling\" and\n \"setup channel <name>\" store each secret in the OS keystore and\n record where it lives, and \"setup adapter <name>\" fills the VAULT\n from the credential manifest the adapter itself declares, then\n proves it against the service without sending anything. The two\n nouns are SPEC.md \u00A74's: a channel holds no state and needs a\n transport credential, an adapter holds the credentials a side\n effect spends. INTERACTIVE ONLY \u2014 it refuses a\n non-terminal stdin and --json, and prints the exact commands to run\n instead, because a setup a pipe could drive would let a CI job\n declare a human identity. It appends nothing to the log, attests\n nothing, and never edits APPROVAL.md\n vault the encrypted credential store adapters read from (SPEC.md \u00A710.4).\n \"vault set|list|remove\" are HUMAN-ONLY; list shows NAMES and never\n values, and there is no \"vault get\" \u2014 a credential's only sanctioned\n journey is from .approval/vault.enc into an adapter, inside the\n verified execution window. The passphrase comes from the environment\n variable the policy NAMES (vault.passphrase_env), never from a flag\n env resolve .approval/env \u2014 the environment SOURCE MAP \u2014 and print an\n export block for your shell to evaluate. THE ONLY VERB THAT READS\n THAT FILE: no command loads it implicitly, because human identity is\n one of the variables it carries and a working-tree file any process\n read on its own would let anything able to write it act as you. The\n default output carries secrets by design; \"env --check\" prints a\n table with no values on any path\n policy explain what APPROVAL.md does with an action class (check | test),\n record a human's sign-off on the policy file (attest), or run the\n whole amendment ceremony \u2014 semantic diff, load advisory,\n attestation, and the two-file git commit \u2014 as one verb (amend)\n import \"import agents-md\" parses an AGENTS.md-style permissions section\n into DRAFT policy classes for a human to confirm (SPEC.md \u00A712). It\n prints; it never writes APPROVAL.md, never logs, never attests\n\nAsk \u2014 an agent declares an action and acts on the answer:\n instructions\n the full AGENT-FACING usage guide: what to declare before acting,\n the register -> request -> wait -> run sequence, what a refusal\n means, and the invariants an agent must not route around. With\n --schemas it prints the verb registry as JSON \u2014 purpose, input and\n output schemas, exit codes and the human-only marker for every verb\n \u2014 which is the same source the optional MCP wrapper (SPEC.md \u00A710.5)\n builds its tools from. Reads nothing, writes nothing\n register validate a task envelope and append task.registered\n request ask the gate to admit a declared action (manual classes append\n approval.requested; supervised/autonomous append nothing and\n proceed straight to execution, per amended SPEC.md \u00A76.3)\n token report whether a live single-use execution token exists for an\n action (the RAW token is printed once, by grant, and stored nowhere)\n consume spend a token and append execution.started (internal plumbing;\n \"approval run\" wraps it)\n run execute a command behind the gate: appends execution.started before\n spawning it, execution.completed/failed with the child's exit code\n after, and exits with that same code\n adapter execute an action through a side-effect adapter, the hard\n boundary of SPEC.md \u00A710.4. \"adapter email\" sends one RFC 5322\n message over SMTP for a communicate.email.external action: the\n credentials come from the vault inside the execution window, the\n payload is the bytes the declaration or grant bound to, and the\n runtime recomputes the hash, applies policy, and writes both\n execution events around the send. Manual and selected-live paths\n require --token; policy-authorized supervised/autonomous paths do\n not mint one. \"adapter agentmail\" serves the\n same class over the AgentMail API: a direct send, or the send of a\n draft the agent composed, refused if the draft changed after the\n snapshot a human approved\n wait block until a task's requests are decided; the exit code IS the\n decision (0 granted, 1 rejected/revoked/withdrawn, 3 expired, 6 timeout)\n withdraw take back your OWN pending request (timeout, cancelled, superseded);\n terminal, requester-only, and a late grant then authorizes nothing\n hook put the gate in front of an agent HARNESS. \"hook claude-code\" and\n \"hook cursor\" each read their harness's pre-tool event on stdin,\n classify the command or protected-path edit it is about to run,\n resolve the class against APPROVAL.md, and answer allow or deny \u2014\n waiting on a real approval decision when the class is manual. They\n never answer \"ask\": a decision taken outside the log is a decision\n nothing can audit. \"hook classify\" prints what the classifier makes\n of a command and touches nothing\n journal the one channel the gate does NOT stand in front of. \"journal write\"\n appends free text to a local file \u2014 ungated, unclassified, never\n approvable and never deniable, with no event in the log \u2014 so an\n agent can say \"I am complying and I think this is wrong\", \"this\n reads as odd to me\", or \"I am stuck\" even when it is complying\n perfectly. \"journal read\" is the human side, and it labels every\n entry as agent-authored DATA. Nothing written there changes any\n verdict, sampling probability or budget; it is signal for the\n operator, not a decision surface\n values the mirror of \"journal\", running the other way: the operator's own\n words, in the optional values block of APPROVAL.md. What they value\n in the work, what they want from an agent, and how they read and\n answer. It is GUIDANCE and never policy: it grants nothing, forbids\n nothing, and no enforcement path reads it. A file with no block says\n so in words, because \"nothing was declared\" and \"I did not look\" are\n different facts\n feedback the same channel in the other direction: what the OPERATOR said\n about the work. Lists the reactions and notes a person wrote on a\n grant or on a retrospective review, joined to the class, the task,\n the action key and the agent it was about. HUMAN-AUTHORED GUIDANCE\n and never policy \u2014 it grants nothing, forbids nothing, and changes\n no verdict, sampling probability or budget. Reads a verified log\n and writes nothing\n mcp \"mcp serve\" is the optional MCP wrapper of SPEC.md \u00A710.5: the same\n verbs as tools, over stdio, sharing the CLI's code paths. It is\n AGENT-FACING ONLY \u2014 grant, reject, revoke, attest, amend, vault,\n setup, audit review, expire, execution resolve|reconcile and the\n channels are not published, because an MCP client is an agent's\n harness and SPEC.md \u00A711 makes the agent the untrusted policy. It\n runs as ONE agent identity, fixed at startup, that nothing changes\n\nDecide \u2014 a human answers, and only a human can:\n queue the pending-decision INBOX: requests awaiting a human, inside their\n TTL. Nothing else \u2014 exit 0 always when the log could be read\n grant record a human approval (HUMAN-ONLY)\n reject record a human refusal (HUMAN-ONLY)\n revoke withdraw an unexecuted approval (HUMAN-ONLY)\n expire lapse a request whose TTL passed (system verb, actor system:gate)\n execution recovery verbs for executions the runtime could not close itself.\n \"execution resolve\" records the outcome a HUMAN OBSERVED for a\n dangling execution: mandatory --note, human-only, exit_code null,\n attested_by_human true. \"execution reconcile\" records what a human\n ESTABLISHED about an INDETERMINATE one \u2014 a side effect that was\n attempted and whose outcome nobody knows \u2014 from the relying party's\n evidence, naming the record it resolves and rewriting nothing.\n Neither requires attestation: both record a fact a human observed\n and exercise no policy authority\n audit \"audit list\" is the open sampled-audit backlog and \"audit review\" is\n the HUMAN-ONLY verb that closes one item of it. Sampling itself has\n no verb: the daemon selects supervised actions with an operator-held\n secret, because a caller who could sample could also decline to\n sample itself\n channel put pending requests in front of a human over the channel contract.\n \"channel cli\" renders the queue with [computed]/[claimed] markers and\n the full payload in delimiters, and with a terminal collects\n decisions through the same human-only gate as grant/reject.\n \"channel telegram listen\" delivers the queue to a Telegram chat on\n every poll cycle (including requests that arrive while it runs) and\n long-polls for Approve/Reject taps; config is environment-only\n (APPROVAL_TG_TOKEN, APPROVAL_TG_CHAT)\n\nInspect \u2014 what the log says, and whether anything needs repair:\n log inspect the append-only event log (verify | tail | export)\n status system HEALTH: attestation, dangling executions, budget headroom,\n the latest chain verdict, loop escalations. Exit 1 when any of\n those needs attention. queue is what a human must answer; status is\n what an operator must fix, and neither carries the other's content\n coverage what the witnesses this project does NOT write (git, gh, a\n provider's own record) say happened, joined to the verified log:\n per effect, the evidence seq or none. INFORMATIONAL \u2014 exit 0 with\n or without gaps, because a coverage measurement is not a verdict\n doctor is this ENVIRONMENT sane? build freshness, declared identity, policy\n attestation, chain health, the Telegram token, the web port \u2014 each\n with a concrete repair. status asks whether the SYSTEM needs\n attention; doctor asks whether the machine you are typing on can run\n the system at all. Appends nothing, sends nothing, repairs nothing\n render regenerate .approval/QUEUE.md, the READ-ONLY markdown queue\n projection (SPEC.md \u00A79.1): pending requests and the sampled-audit\n backlog, computed and claimed fields visibly distinguished. The\n screenshot, never the truth \u2014 editing it authorizes nothing\n reindex rebuild the SQLite index projection from the log\n payload \"payload hash\" prints the payload_hash of a JSON document (SHA-256\n over its RFC 8785 canonical serialization), the value a declaration\n carries and a grant binds to. Most flows never need it: \"request\n --payload\" hashes, verifies and stores the bytes in one step.\n \"payload agentmail-draft\" snapshots one AgentMail draft with the\n AGENT's key, so a human approves the words and not a draft id\n daemon \"daemon run\" is the watch loop of SPEC.md \u00A710.2, in the FOREGROUND:\n it records envelope.drift when a task file's state: contradicts the\n log, appends approval.expired for lapsed requests, writes the log's\n state back into the task files, regenerates QUEUE.md, and surfaces\n loop escalations. It holds no lock; backgrounding is the operator's\n business in v0.1\n up the AMBIENT RUNTIME: that same daemon loop plus every channel the\n policy configures, in ONE supervised foreground process. A channel\n whose credential is unset is not started and says so in doctor's\n vocabulary; a channel that falls over is restarted with a doubling\n backoff and the daemon loop carries on. \"approval setup service\"\n writes the launchd or systemd user unit that runs it at login\n\nDefaults:\n log .approval/log/events.jsonl (relative to the working directory)\n index .approval/index.sqlite\n queue .approval/QUEUE.md\n payloads .approval/payloads/<payload_hash>.json (the bytes a request bound\n to, written by request --payload; read by render and every channel,\n and re-hashed on every read)\n env .approval/env (the environment SOURCE MAP: KEY=keychain:<service> /\n secret-service:<label> / env: / a plaintext literal. Mode 0600, and read\n by exactly one command, \"approval env\". GITIGNORED by init)\n journal .approval-journal/YYYY-MM-DD.jsonl (the ungated free-text channel of\n \"journal write\". OUTSIDE the approval home on purpose: everything under\n .approval/ is the gate's own, and an outlet the gate could close is not\n an outlet. Nothing the runtime reads is ever stored there. Gitignored)\n vault .approval/vault.enc (AES-256-GCM over the named credentials; written\n only by \"vault set|remove\", read only by an adapter inside a verified\n token window. GITIGNORE IT \u2014 doctor fails if you have not)\n\nExit codes (frozen public API):\n 0 success\n 1 integrity failure (corrupt log)\n 2 usage error\n 3 torn tail\n 4 I/O error (unreadable/unwritable path; never reported as corruption)\n\nTwo codes are ADDITIONS to the table above, each emitted by exactly one verb:\n5 by \"approval run\" when no valid execution token was presented (nothing is\nappended), and 6 by \"approval wait\" on timeout. Nothing in 0\u20134 changed meaning.\nThis table is printed HERE and nowhere else; a verb's own --help names only the\ncodes that are peculiar to it.\n\nMachine-readable output: every command accepts --json and prints exactly one\nJSON object per invocation. Run \"approval <command> --help\" for that command's\nexact shape.\nWith --json, usage and I/O failures print {\"error\":{\"code\",\"message\"}} to\nstderr and nothing to stdout.\n\nThe stances every verb inherits, stated once:\n\n THE LOG IS APPEND-ONLY. \"policy attest\" and the gate verbs (register, request,\n grant, reject, revoke, expire) each append at most one event per invocation; a\n torn tail is reported, never repaired, and nothing ever rewrites a line.\n\n A GATE REFUSAL exits 1, NOT 2 \u2014 an illegal transition, an expired request, an\n unattested policy, a failed budget. The command was well-formed; the answer is\n no. With --json, error.code names the refusal, and retrying with different\n flags is the wrong repair.\n\n IDENTITY IS CONFIG-DECLARED (SPEC.md \u00A711). The actor comes from --as or\n APPROVAL_HUMAN and nothing authenticates it; the trust boundary is the local\n machine. What the log proves is that someone with local control acted, not\n who. grant, reject, revoke and every human-only verb require human:<id>;\n expire is the system verb and takes no identity.\n\n APPROVAL EVENTS ARE EXCLUSIVE TO THE MANUAL PATH (amended SPEC.md \u00A76.3). An\n action resolving to supervised or autonomous emits no approval.requested and\n no approval.granted: \"approval request\" appends nothing and reports\n proceed:true, and its authorization is the execution.started event. Do not\n wait for a grant that will never come.\n\n THE RAW EXECUTION TOKEN IS SHOWN ONCE, BY \"approval grant\". The log records\n only its SHA-256, so nothing can recover it \u2014 not \"approval token\", not the\n log, not the index. If it is lost, revoke the grant and request again.\n\n A CHANNEL IS TRANSPORT. It renders what the runtime derived and reports the\n gesture a human made; it decides nothing, holds no state, writes no log line\n and never sees a token. Every field it shows is marked [computed] (the runtime\n derived it) or [claimed] (the party under oversight wrote it), per SPEC.md \u00A79.\n\nThe reasoning behind each verb \u2014 threat models, the design points that surprise\npeople, the alternatives that were rejected \u2014 is in docs/cli-reference.md.";
18
+ export declare const INSTRUCTIONS_HELP: string;
19
+ export declare const LOG_HELP: string;
20
+ export declare const FOLLOW_HELP: string;
21
+ export declare const LOG_SYNC_HELP: string;
22
+ export declare const LOG_ADVANCE_HELP: string;
23
+ export declare const VERIFY_HELP: string;
24
+ export declare const LOG_CHECKPOINT_HELP: string;
25
+ export declare const TAIL_HELP: string;
26
+ export declare const EXPORT_HELP: string;
27
+ export declare const POLICY_HELP: string;
28
+ export declare const POLICY_CHECK_HELP: string;
29
+ export declare const POLICY_TEST_HELP: string;
30
+ export declare const POLICY_ATTEST_HELP: string;
31
+ export declare const POLICY_AMEND_HELP: string;
32
+ export declare const REGISTER_HELP: string;
33
+ export declare const REQUEST_HELP: string;
34
+ export declare const GRANT_HELP: string;
35
+ export declare const REJECT_HELP: string;
36
+ export declare const REVOKE_HELP: string;
37
+ export declare const WITHDRAW_HELP: string;
38
+ export declare const EXPIRE_HELP: string;
39
+ export declare const GATE_WINDOW_HELP: string;
40
+ export declare const REINDEX_HELP: string;
41
+ export declare const TOKEN_HELP: string;
42
+ export declare const CONSUME_HELP: string;
43
+ export declare const RUN_HELP: string;
44
+ export declare const SANDBOX_HELP: string;
45
+ export declare const WAIT_HELP: string;
46
+ export declare const QUEUE_HELP: string;
47
+ export declare const STATUS_HELP: string;
48
+ export declare const COVERAGE_HELP: string;
49
+ export declare const DOCTOR_HELP: string;
50
+ export declare const AUDIT_HELP: string;
51
+ export declare const AUDIT_LIST_HELP: string;
52
+ export declare const AUDIT_REVIEW_HELP: string;
53
+ export declare const AUDIT_OBLIGATIONS_HELP: string;
54
+ export declare const AUDIT_RECONCILE_HELP: string;
55
+ export declare const EXECUTION_HELP: string;
56
+ export declare const RESOLVE_HELP: string;
57
+ export declare const RECONCILE_HELP: string;
58
+ export declare const CHANNEL_HELP: string;
59
+ export declare const CHANNEL_CLI_HELP: string;
60
+ export declare const WEB_HELP: string;
61
+ export declare const INIT_HELP: string;
62
+ export declare const QUICKSTART_HELP: string;
63
+ export declare const HOOK_HELP: string;
64
+ export declare const IMPORT_HELP: string;
65
+ export declare const IMPORT_AGENTS_MD_HELP: string;
66
+ export declare const PAYLOAD_HELP: string;
67
+ export declare const PAYLOAD_HASH_HELP: string;
68
+ export declare const PAYLOAD_AGENTMAIL_DRAFT_HELP: string;
69
+ export declare const JOURNAL_HELP: string;
70
+ export declare const JOURNAL_WRITE_HELP: string;
71
+ export declare const JOURNAL_READ_HELP: string;
72
+ export declare const VALUES_HELP: string;
73
+ export declare const FEEDBACK_HELP: string;
74
+ export declare const RENDER_HELP: string;
75
+ export declare const TELEGRAM_HELP: string;
76
+ export declare const TELEGRAM_LISTEN_HELP: string;
77
+ export declare const TELEGRAM_HEALTH_HELP: string;
78
+ export declare const DAEMON_HELP: string;
79
+ export declare const DAEMON_RUN_HELP: string;
80
+ export declare const UP_HELP: string;
81
+ export declare const VAULT_HELP: string;
82
+ export declare const VAULT_SET_HELP: string;
83
+ export declare const VAULT_LIST_HELP: string;
84
+ export declare const VAULT_REMOVE_HELP: string;
85
+ export declare const ADAPTER_HELP: string;
86
+ export declare const ADAPTER_EMAIL_HELP: string;
87
+ export declare const ADAPTER_AGENTMAIL_HELP: string;
88
+ export declare const ADAPTER_ZZZ_HELP: string;
89
+ export declare const ENV_HELP: string;
90
+ export declare const SETUP_HELP: string;
91
+ export declare const SETUP_IDENTITY_HELP: string;
92
+ export declare const SETUP_VAULT_HELP: string;
93
+ export declare const SETUP_SAMPLING_HELP: string;
94
+ export declare const SETUP_CHECKPOINT_HELP: string;
95
+ export declare const SETUP_ADAPTER_HELP: string;
96
+ export declare const SETUP_ADAPTER_EMAIL_HELP: string;
97
+ export declare const SETUP_ADAPTER_AGENTMAIL_HELP: string;
98
+ export declare const SETUP_ADAPTER_ZZZ_HELP: string;
99
+ export declare const SETUP_CHANNEL_HELP: string;
100
+ export declare const SETUP_CHANNEL_TELEGRAM_HELP: string;
101
+ export declare const SETUP_SERVICE_HELP: string;
102
+ export declare const CODEX_HELP = "approval codex \u2014 prepare and inspect a constrained Codex host bundle (INERT)\n\nUsage:\n approval codex prepare --instance <id> --workspace <abs> --primary <abs>\n --install-root <abs> --output <new-dir> --codex <abs> --node <abs> [--json]\n approval codex setup --check <bundle-dir> [--json]\n approval codex doctor --strict --manifest <abs> [--json]\n approval codex start|serve --manifest <abs> [--json]\n\nprepare writes a fresh review bundle only. setup --check verifies its closed file\nset, hashes, manifest and generated templates. Neither installs a package, edits\nCodex configuration, creates principals, loads services, reads credentials, or\nchanges policy. doctor fails closed on unknown custody, executes no manifest\nbinary in this slice, and reports runtime versions as unchecked.\n\nstart and serve currently refuse with codex-not-ready. The policy-bound broker\nand confined runner arrive in APRV-325.2 and APRV-325.3. An npm or project\ninstallation alone is never reported as enforcement.\n\nexit codes: approval --help (1 means the strict boundary is absent or invalid)\nWith --json, usage and I/O failures print {\"error\":{\"code\",\"message\"}} to\nstderr and nothing to stdout.\nwhy: docs/cli-reference.md#constrained-codex-preparation";
103
+ export declare const MCP_HELP: string;