approval-md 0.2.0 → 0.4.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 (378) hide show
  1. package/README.md +85 -877
  2. package/SPEC.md +150 -19
  3. package/cli.js +66 -7
  4. package/dist/src/adapters/smtp.d.ts +18 -0
  5. package/dist/src/adapters/smtp.js +24 -3
  6. package/dist/src/adapters/smtp.js.map +1 -1
  7. package/dist/src/channels/contract.d.ts +53 -1
  8. package/dist/src/channels/contract.js +304 -7
  9. package/dist/src/channels/contract.js.map +1 -1
  10. package/dist/src/channels/relay-server.d.ts +90 -0
  11. package/dist/src/channels/relay-server.js +295 -0
  12. package/dist/src/channels/relay-server.js.map +1 -0
  13. package/dist/src/channels/relay.d.ts +273 -0
  14. package/dist/src/channels/relay.js +564 -0
  15. package/dist/src/channels/relay.js.map +1 -0
  16. package/dist/src/channels/tagging.js +6 -1
  17. package/dist/src/channels/tagging.js.map +1 -1
  18. package/dist/src/channels/telegram-webhook.d.ts +273 -0
  19. package/dist/src/channels/telegram-webhook.js +536 -0
  20. package/dist/src/channels/telegram-webhook.js.map +1 -0
  21. package/dist/src/channels/telegram.d.ts +394 -12
  22. package/dist/src/channels/telegram.js +621 -68
  23. package/dist/src/channels/telegram.js.map +1 -1
  24. package/dist/src/channels/web.d.ts +9 -0
  25. package/dist/src/channels/web.js +17 -0
  26. package/dist/src/channels/web.js.map +1 -1
  27. package/dist/src/cli/amend.js +564 -34
  28. package/dist/src/cli/amend.js.map +1 -1
  29. package/dist/src/cli/attest.d.ts +9 -0
  30. package/dist/src/cli/attest.js +177 -13
  31. package/dist/src/cli/attest.js.map +1 -1
  32. package/dist/src/cli/channel-relay.d.ts +108 -0
  33. package/dist/src/cli/channel-relay.js +334 -0
  34. package/dist/src/cli/channel-relay.js.map +1 -0
  35. package/dist/src/cli/channel-telegram-webhook.d.ts +273 -0
  36. package/dist/src/cli/channel-telegram-webhook.js +709 -0
  37. package/dist/src/cli/channel-telegram-webhook.js.map +1 -0
  38. package/dist/src/cli/channel-telegram.d.ts +347 -28
  39. package/dist/src/cli/channel-telegram.js +763 -28
  40. package/dist/src/cli/channel-telegram.js.map +1 -1
  41. package/dist/src/cli/channel.d.ts +10 -1
  42. package/dist/src/cli/channel.js +14 -1
  43. package/dist/src/cli/channel.js.map +1 -1
  44. package/dist/src/cli/codex-bridge.d.ts +819 -0
  45. package/dist/src/cli/codex-bridge.js +1607 -0
  46. package/dist/src/cli/codex-bridge.js.map +1 -0
  47. package/dist/src/cli/codex.d.ts +1 -1
  48. package/dist/src/cli/codex.js +304 -7
  49. package/dist/src/cli/codex.js.map +1 -1
  50. package/dist/src/cli/daemon.js +41 -6
  51. package/dist/src/cli/daemon.js.map +1 -1
  52. package/dist/src/cli/doctor.d.ts +63 -0
  53. package/dist/src/cli/doctor.js +1322 -122
  54. package/dist/src/cli/doctor.js.map +1 -1
  55. package/dist/src/cli/execute.d.ts +17 -1
  56. package/dist/src/cli/execute.js +366 -22
  57. package/dist/src/cli/execute.js.map +1 -1
  58. package/dist/src/cli/exit-codes.d.ts +12 -0
  59. package/dist/src/cli/exit-codes.js +13 -0
  60. package/dist/src/cli/exit-codes.js.map +1 -1
  61. package/dist/src/cli/gate.d.ts +2 -0
  62. package/dist/src/cli/gate.js +233 -2
  63. package/dist/src/cli/gate.js.map +1 -1
  64. package/dist/src/cli/help.d.ts +14 -2
  65. package/dist/src/cli/help.js +395 -82
  66. package/dist/src/cli/help.js.map +1 -1
  67. package/dist/src/cli/hook-codex.d.ts +49 -1
  68. package/dist/src/cli/hook-codex.js +60 -1
  69. package/dist/src/cli/hook-codex.js.map +1 -1
  70. package/dist/src/cli/hook.d.ts +828 -4
  71. package/dist/src/cli/hook.js +2972 -142
  72. package/dist/src/cli/hook.js.map +1 -1
  73. package/dist/src/cli/import.js +1 -1
  74. package/dist/src/cli/import.js.map +1 -1
  75. package/dist/src/cli/init.js +16 -7
  76. package/dist/src/cli/init.js.map +1 -1
  77. package/dist/src/cli/instructions.js +24 -3
  78. package/dist/src/cli/instructions.js.map +1 -1
  79. package/dist/src/cli/log-anchor.d.ts +55 -0
  80. package/dist/src/cli/log-anchor.js +199 -60
  81. package/dist/src/cli/log-anchor.js.map +1 -1
  82. package/dist/src/cli/main.d.ts +0 -12
  83. package/dist/src/cli/main.js +56 -3
  84. package/dist/src/cli/main.js.map +1 -1
  85. package/dist/src/cli/muse.d.ts +2 -0
  86. package/dist/src/cli/muse.js +62 -0
  87. package/dist/src/cli/muse.js.map +1 -0
  88. package/dist/src/cli/payload.js +79 -1
  89. package/dist/src/cli/payload.js.map +1 -1
  90. package/dist/src/cli/policy-apply.d.ts +195 -0
  91. package/dist/src/cli/policy-apply.js +573 -0
  92. package/dist/src/cli/policy-apply.js.map +1 -0
  93. package/dist/src/cli/policy.js +14 -1
  94. package/dist/src/cli/policy.js.map +1 -1
  95. package/dist/src/cli/preflight.d.ts +151 -13
  96. package/dist/src/cli/preflight.js +398 -41
  97. package/dist/src/cli/preflight.js.map +1 -1
  98. package/dist/src/cli/sandbox.js +17 -1
  99. package/dist/src/cli/sandbox.js.map +1 -1
  100. package/dist/src/cli/scaffold.d.ts +1 -1
  101. package/dist/src/cli/scaffold.js +7 -1
  102. package/dist/src/cli/scaffold.js.map +1 -1
  103. package/dist/src/cli/serve.d.ts +53 -0
  104. package/dist/src/cli/serve.js +270 -0
  105. package/dist/src/cli/serve.js.map +1 -0
  106. package/dist/src/cli/setup-channel.d.ts +9 -0
  107. package/dist/src/cli/setup-channel.js +28 -1
  108. package/dist/src/cli/setup-channel.js.map +1 -1
  109. package/dist/src/cli/setup-common.d.ts +3 -1
  110. package/dist/src/cli/setup-common.js +3 -2
  111. package/dist/src/cli/setup-common.js.map +1 -1
  112. package/dist/src/cli/setup.d.ts +2 -0
  113. package/dist/src/cli/setup.js +94 -2
  114. package/dist/src/cli/setup.js.map +1 -1
  115. package/dist/src/cli/up.js +134 -51
  116. package/dist/src/cli/up.js.map +1 -1
  117. package/dist/src/cli/values.js +3 -4
  118. package/dist/src/cli/values.js.map +1 -1
  119. package/dist/src/cli/verb-registry.d.ts +2 -0
  120. package/dist/src/cli/verb-registry.js +510 -47
  121. package/dist/src/cli/verb-registry.js.map +1 -1
  122. package/dist/src/cli/wordmark.d.ts +2 -2
  123. package/dist/src/cli/wordmark.js +2 -2
  124. package/dist/src/codex/broker.d.ts +229 -0
  125. package/dist/src/codex/broker.js +548 -0
  126. package/dist/src/codex/broker.js.map +1 -0
  127. package/dist/src/codex/runner.d.ts +178 -0
  128. package/dist/src/codex/runner.js +231 -0
  129. package/dist/src/codex/runner.js.map +1 -0
  130. package/dist/src/codex/serve.d.ts +56 -0
  131. package/dist/src/codex/serve.js +98 -0
  132. package/dist/src/codex/serve.js.map +1 -0
  133. package/dist/src/codex/workspace-commit.d.ts +219 -0
  134. package/dist/src/codex/workspace-commit.js +549 -0
  135. package/dist/src/codex/workspace-commit.js.map +1 -0
  136. package/dist/src/core/advance-cycle.d.ts +51 -0
  137. package/dist/src/core/advance-cycle.js +66 -2
  138. package/dist/src/core/advance-cycle.js.map +1 -1
  139. package/dist/src/core/agents-md.d.ts +20 -18
  140. package/dist/src/core/agents-md.js +33 -31
  141. package/dist/src/core/agents-md.js.map +1 -1
  142. package/dist/src/core/attest-bootstrap.d.ts +95 -0
  143. package/dist/src/core/attest-bootstrap.js +135 -0
  144. package/dist/src/core/attest-bootstrap.js.map +1 -0
  145. package/dist/src/core/attest.d.ts +234 -2
  146. package/dist/src/core/attest.js +342 -7
  147. package/dist/src/core/attest.js.map +1 -1
  148. package/dist/src/core/audit.d.ts +73 -3
  149. package/dist/src/core/audit.js +65 -5
  150. package/dist/src/core/audit.js.map +1 -1
  151. package/dist/src/core/channel-lease.d.ts +322 -0
  152. package/dist/src/core/channel-lease.js +663 -0
  153. package/dist/src/core/channel-lease.js.map +1 -0
  154. package/dist/src/core/channel-owner.d.ts +213 -0
  155. package/dist/src/core/channel-owner.js +358 -0
  156. package/dist/src/core/channel-owner.js.map +1 -0
  157. package/dist/src/core/command-class.d.ts +205 -0
  158. package/dist/src/core/command-class.js +1433 -28
  159. package/dist/src/core/command-class.js.map +1 -1
  160. package/dist/src/core/commit-guard.d.ts +272 -0
  161. package/dist/src/core/commit-guard.js +424 -0
  162. package/dist/src/core/commit-guard.js.map +1 -0
  163. package/dist/src/core/daemon-actor.d.ts +45 -0
  164. package/dist/src/core/daemon-actor.js +54 -0
  165. package/dist/src/core/daemon-actor.js.map +1 -0
  166. package/dist/src/core/daemon-host.d.ts +178 -0
  167. package/dist/src/core/daemon-host.js +228 -0
  168. package/dist/src/core/daemon-host.js.map +1 -0
  169. package/dist/src/core/daemon-identity.d.ts +238 -0
  170. package/dist/src/core/daemon-identity.js +252 -0
  171. package/dist/src/core/daemon-identity.js.map +1 -0
  172. package/dist/src/core/dark-session.d.ts +109 -8
  173. package/dist/src/core/dark-session.js +266 -82
  174. package/dist/src/core/dark-session.js.map +1 -1
  175. package/dist/src/core/decision-refusal.d.ts +23 -2
  176. package/dist/src/core/decision-refusal.js +24 -2
  177. package/dist/src/core/decision-refusal.js.map +1 -1
  178. package/dist/src/core/env-file.d.ts +5 -0
  179. package/dist/src/core/env-file.js +60 -1
  180. package/dist/src/core/env-file.js.map +1 -1
  181. package/dist/src/core/execute.d.ts +15 -2
  182. package/dist/src/core/execute.js +15 -2
  183. package/dist/src/core/execute.js.map +1 -1
  184. package/dist/src/core/gate.d.ts +392 -6
  185. package/dist/src/core/gate.js +852 -24
  186. package/dist/src/core/gate.js.map +1 -1
  187. package/dist/src/core/gesture-refusal.d.ts +166 -0
  188. package/dist/src/core/gesture-refusal.js +188 -0
  189. package/dist/src/core/gesture-refusal.js.map +1 -0
  190. package/dist/src/core/harness-version.d.ts +128 -4
  191. package/dist/src/core/harness-version.js +181 -12
  192. package/dist/src/core/harness-version.js.map +1 -1
  193. package/dist/src/core/harness-wait.d.ts +82 -3
  194. package/dist/src/core/harness-wait.js +89 -3
  195. package/dist/src/core/harness-wait.js.map +1 -1
  196. package/dist/src/core/instance.d.ts +59 -2
  197. package/dist/src/core/instance.js +113 -0
  198. package/dist/src/core/instance.js.map +1 -1
  199. package/dist/src/core/log-subscribe.d.ts +21 -0
  200. package/dist/src/core/log-subscribe.js +16 -6
  201. package/dist/src/core/log-subscribe.js.map +1 -1
  202. package/dist/src/core/log-write-layer.d.ts +55 -0
  203. package/dist/src/core/log-write-layer.js +91 -0
  204. package/dist/src/core/log-write-layer.js.map +1 -0
  205. package/dist/src/core/log.d.ts +89 -22
  206. package/dist/src/core/log.js +197 -19
  207. package/dist/src/core/log.js.map +1 -1
  208. package/dist/src/core/payload-census.d.ts +51 -0
  209. package/dist/src/core/payload-census.js +125 -2
  210. package/dist/src/core/payload-census.js.map +1 -1
  211. package/dist/src/core/payload-store.d.ts +31 -0
  212. package/dist/src/core/payload-store.js +113 -8
  213. package/dist/src/core/payload-store.js.map +1 -1
  214. package/dist/src/core/payload.d.ts +18 -3
  215. package/dist/src/core/payload.js +20 -4
  216. package/dist/src/core/payload.js.map +1 -1
  217. package/dist/src/core/policy-diff.d.ts +10 -0
  218. package/dist/src/core/policy-diff.js +10 -2
  219. package/dist/src/core/policy-diff.js.map +1 -1
  220. package/dist/src/core/policy-explain.d.ts +17 -1
  221. package/dist/src/core/policy-explain.js +48 -1
  222. package/dist/src/core/policy-explain.js.map +1 -1
  223. package/dist/src/core/policy-load.d.ts +65 -1
  224. package/dist/src/core/policy-load.js +21 -3
  225. package/dist/src/core/policy-load.js.map +1 -1
  226. package/dist/src/core/policy-match.d.ts +81 -0
  227. package/dist/src/core/policy-match.js +87 -0
  228. package/dist/src/core/policy-match.js.map +1 -1
  229. package/dist/src/core/policy-proposal.d.ts +75 -0
  230. package/dist/src/core/policy-proposal.js +110 -4
  231. package/dist/src/core/policy-proposal.js.map +1 -1
  232. package/dist/src/core/protected-path-guard.d.ts +117 -4
  233. package/dist/src/core/protected-path-guard.js +362 -48
  234. package/dist/src/core/protected-path-guard.js.map +1 -1
  235. package/dist/src/core/question-preempted.d.ts +141 -0
  236. package/dist/src/core/question-preempted.js +152 -0
  237. package/dist/src/core/question-preempted.js.map +1 -0
  238. package/dist/src/core/read-scope.d.ts +182 -0
  239. package/dist/src/core/read-scope.js +256 -0
  240. package/dist/src/core/read-scope.js.map +1 -0
  241. package/dist/src/core/run-payload.d.ts +160 -0
  242. package/dist/src/core/run-payload.js +304 -0
  243. package/dist/src/core/run-payload.js.map +1 -0
  244. package/dist/src/core/sandbox.d.ts +81 -0
  245. package/dist/src/core/sandbox.js +190 -1
  246. package/dist/src/core/sandbox.js.map +1 -1
  247. package/dist/src/core/sender-identity.d.ts +501 -0
  248. package/dist/src/core/sender-identity.js +609 -0
  249. package/dist/src/core/sender-identity.js.map +1 -0
  250. package/dist/src/core/shlex.d.ts +102 -0
  251. package/dist/src/core/shlex.js +159 -0
  252. package/dist/src/core/shlex.js.map +1 -0
  253. package/dist/src/core/state.d.ts +52 -1
  254. package/dist/src/core/state.js +52 -6
  255. package/dist/src/core/state.js.map +1 -1
  256. package/dist/src/core/telegram-config.d.ts +79 -0
  257. package/dist/src/core/telegram-config.js +108 -0
  258. package/dist/src/core/telegram-config.js.map +1 -1
  259. package/dist/src/core/values.d.ts +18 -8
  260. package/dist/src/core/values.js +36 -1
  261. package/dist/src/core/values.js.map +1 -1
  262. package/dist/src/core/verify.d.ts +23 -1
  263. package/dist/src/core/verify.js +20 -2
  264. package/dist/src/core/verify.js.map +1 -1
  265. package/dist/src/daemon/advance.d.ts +10 -0
  266. package/dist/src/daemon/advance.js +25 -4
  267. package/dist/src/daemon/advance.js.map +1 -1
  268. package/dist/src/daemon/audit.d.ts +80 -5
  269. package/dist/src/daemon/audit.js +126 -6
  270. package/dist/src/daemon/audit.js.map +1 -1
  271. package/dist/src/daemon/daemon.d.ts +174 -2
  272. package/dist/src/daemon/daemon.js +307 -7
  273. package/dist/src/daemon/daemon.js.map +1 -1
  274. package/dist/src/daemon/git-evidence.d.ts +2 -2
  275. package/dist/src/daemon/git-evidence.js +1 -1
  276. package/dist/src/daemon/projection.d.ts +13 -2
  277. package/dist/src/daemon/projection.js +39 -6
  278. package/dist/src/daemon/projection.js.map +1 -1
  279. package/dist/src/mcp/server.d.ts +39 -3
  280. package/dist/src/mcp/server.js +30 -3
  281. package/dist/src/mcp/server.js.map +1 -1
  282. package/dist/src/muse/server.d.ts +16 -0
  283. package/dist/src/muse/server.js +238 -0
  284. package/dist/src/muse/server.js.map +1 -0
  285. package/dist/src/serve/archive.d.ts +158 -0
  286. package/dist/src/serve/archive.js +354 -0
  287. package/dist/src/serve/archive.js.map +1 -0
  288. package/dist/src/serve/arguments.d.ts +93 -0
  289. package/dist/src/serve/arguments.js +228 -0
  290. package/dist/src/serve/arguments.js.map +1 -0
  291. package/dist/src/serve/credentials.d.ts +91 -0
  292. package/dist/src/serve/credentials.js +143 -0
  293. package/dist/src/serve/credentials.js.map +1 -0
  294. package/dist/src/serve/follow.d.ts +86 -0
  295. package/dist/src/serve/follow.js +101 -0
  296. package/dist/src/serve/follow.js.map +1 -0
  297. package/dist/src/serve/hook-thread.d.ts +134 -0
  298. package/dist/src/serve/hook-thread.js +333 -0
  299. package/dist/src/serve/hook-thread.js.map +1 -0
  300. package/dist/src/serve/hook-worker.d.ts +134 -0
  301. package/dist/src/serve/hook-worker.js +173 -0
  302. package/dist/src/serve/hook-worker.js.map +1 -0
  303. package/dist/src/serve/server.d.ts +412 -0
  304. package/dist/src/serve/server.js +1251 -0
  305. package/dist/src/serve/server.js.map +1 -0
  306. package/docs/README-extended.md +766 -0
  307. package/docs/cli-reference.md +2563 -73
  308. package/docs/codex-enforced-session.md +75 -2
  309. package/docs/codex-workspace-broker.md +118 -0
  310. package/package.json +6 -2
  311. package/schema/event.schema.json +595 -9
  312. package/schema/fixtures/event/invalid/approval-granted-sender-hashed-false.json +20 -0
  313. package/schema/fixtures/event/invalid/approval-granted-sender-hashed-raw-id.json +20 -0
  314. package/schema/fixtures/event/invalid/audit-gesture-refused-human-actor.json +16 -0
  315. package/schema/fixtures/event/invalid/audit-gesture-refused-no-actor-no-sender.json +15 -0
  316. package/schema/fixtures/event/invalid/audit-gesture-refused-unknown-gesture.json +16 -0
  317. package/schema/fixtures/event/invalid/audit-question-preempted-agent-actor.json +16 -0
  318. package/schema/fixtures/event/invalid/audit-question-preempted-no-question-id.json +16 -0
  319. package/schema/fixtures/event/invalid/audit-question-preempted-unknown-source.json +15 -0
  320. package/schema/fixtures/event/invalid/daemon-id-malformed.json +15 -0
  321. package/schema/fixtures/event/invalid/execution-started-truncated-policy-sha256.json +18 -0
  322. package/schema/fixtures/event/invalid/gate-path-signed-off-absolute-path.json +14 -0
  323. package/schema/fixtures/event/invalid/gate-path-signed-off-agent-actor.json +14 -0
  324. package/schema/fixtures/event/invalid/gate-path-signed-off-missing-path.json +13 -0
  325. package/schema/fixtures/event/invalid/harness-cap-at-margin.json +16 -0
  326. package/schema/fixtures/event/invalid/harness-cap-fractional.json +16 -0
  327. package/schema/fixtures/event/invalid/harness-cap-negative.json +16 -0
  328. package/schema/fixtures/event/invalid/harness-cap-string.json +16 -0
  329. package/schema/fixtures/event/invalid/harness-cap-without-harness-execution.json +16 -0
  330. package/schema/fixtures/event/invalid/harness-cap-zero.json +16 -0
  331. package/schema/fixtures/event/valid/approval-granted-sender-hashed.json +20 -0
  332. package/schema/fixtures/event/valid/approval-requested-harness-cap.json +18 -0
  333. package/schema/fixtures/event/valid/audit-gesture-refused-review-note.json +21 -0
  334. package/schema/fixtures/event/valid/audit-gesture-refused-sender-key-unavailable.json +19 -0
  335. package/schema/fixtures/event/valid/audit-gesture-refused.json +19 -0
  336. package/schema/fixtures/event/valid/audit-question-preempted-no-verdict.json +16 -0
  337. package/schema/fixtures/event/valid/audit-question-preempted.json +20 -0
  338. package/schema/fixtures/event/valid/daemon-identity-declared.json +17 -0
  339. package/schema/fixtures/event/valid/daemon-identity.json +15 -0
  340. package/schema/fixtures/event/valid/execution-started-policy-sha256.json +18 -0
  341. package/schema/fixtures/event/valid/gate-path-signed-off.json +14 -0
  342. package/schema/fixtures/event/valid/harness-kind-claude-code.json +23 -0
  343. package/schema/fixtures/event/valid/harness-kind-codex.json +23 -0
  344. package/schema/fixtures/event/valid/harness-kind-cursor.json +23 -0
  345. package/schema/fixtures/event/valid/harness-kind-grok.json +23 -0
  346. package/schema/fixtures/event/valid/harness-kind-hermes.json +23 -0
  347. package/schema/fixtures/event/valid/harness-kind-muse.json +23 -0
  348. package/schema/fixtures/policy/invalid/daemons-malformed-id.json +10 -0
  349. package/schema/fixtures/policy/invalid/senders-half-keyed.json +20 -0
  350. package/schema/fixtures/policy/valid/canonical.json +1 -1
  351. package/schema/fixtures/policy/valid/daemons-allowlist.json +19 -0
  352. package/schema/fixtures/policy/valid/senders-keyed.json +24 -0
  353. package/schema/fixtures/policy-md/invalid/schema-invalid-agent-may-request.md +21 -0
  354. package/schema/fixtures/policy-md/valid/agent-may-request.md +24 -0
  355. package/schema/fixtures/policy-md/valid/canonical.md +1 -1
  356. package/schema/fixtures/policy-md/valid/with-values.md +5 -7
  357. package/schema/fixtures/values/invalid/class-shaped.json +1 -1
  358. package/schema/fixtures/values/invalid/duplicate-entry.json +1 -1
  359. package/schema/fixtures/values/invalid/non-string-item.json +1 -1
  360. package/schema/fixtures/values/invalid/over-cap.json +1 -1
  361. package/schema/fixtures/values/invalid/unknown-key.json +1 -1
  362. package/schema/fixtures/values/invalid/version-float.json +1 -0
  363. package/schema/fixtures/values/invalid/version-integer.json +1 -0
  364. package/schema/fixtures/values/invalid/version-wrong-string.json +1 -0
  365. package/schema/fixtures/values/valid/empty-lists.json +2 -3
  366. package/schema/fixtures/values/valid/full.json +5 -7
  367. package/schema/fixtures/values/valid/minimal.json +1 -1
  368. package/schema/fixtures/values-md/invalid/schema-invalid.md +5 -3
  369. package/schema/fixtures/values-md/invalid/two-blocks.md +3 -3
  370. package/schema/fixtures/values-md/invalid/unterminated.md +2 -2
  371. package/schema/fixtures/values-md/invalid/version-1.md +69 -0
  372. package/schema/fixtures/values-md/invalid/version-unquoted.md +64 -0
  373. package/schema/fixtures/values-md/invalid/yaml-error.md +2 -2
  374. package/schema/fixtures/values-md/valid/absent.md +1 -1
  375. package/schema/fixtures/values-md/valid/with-values.md +5 -7
  376. package/schema/policy.schema.json +100 -4
  377. package/schema/values.schema.json +7 -11
  378. package/schema/fixtures/values/invalid/version-string.json +0 -1
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Shell word splitting and joining, for the one place this runtime reads a
3
+ * command as a RENDERING of an argv rather than as bytes it was handed
4
+ * (APRV-362).
5
+ *
6
+ * ## Why this exists at all
7
+ *
8
+ * Every harness hook is handed a command as a string, and the classifier reads
9
+ * that string. Codex's app-server is the exception: what it will execute is an
10
+ * argv, and the item-based API delivers that argv already joined into one
11
+ * string by `shlex_join` (`docs/codex-app-server-bridge.md`, question 1). A
12
+ * bridge that classified the joined string without ever naming the argv would
13
+ * be approving its own re-parse, and the gap between the two is where an
14
+ * approval could authorize words nobody read.
15
+ *
16
+ * So the bridge names the argv, and these functions are how. They are pure,
17
+ * total and exhaustively tested, which is what SPEC.md §11's deterministic-core
18
+ * rule asks of anything a decision rests on.
19
+ *
20
+ * ## The grammar, and why it is narrower than a shell's
21
+ *
22
+ * This is `shlex`, not a shell. It knows three things: runs of whitespace
23
+ * separate words, a single-quoted run is literal, and a backslash outside
24
+ * quotes makes the next character literal. It does NOT know operators: `>`,
25
+ * `|`, `&&` and `;` are ordinary characters in ordinary words. That is correct
26
+ * here, because what is being un-joined is an argv and an argv has no
27
+ * operators. The shell metacharacters in a real Codex call live INSIDE one word
28
+ * (`/bin/zsh -lc 'printf x > f'`), and the hook's own classifier is what reads
29
+ * that word as a script.
30
+ *
31
+ * A DOUBLE QUOTE outside a single-quoted run is refused rather than
32
+ * interpreted. A join never emits one: a word needing protection comes back
33
+ * single-quoted and a word not needing it comes back bare. So a bare `"` says
34
+ * the string was not produced by joining an argv, and this runtime will not
35
+ * guess whose escaping rules apply inside it. Refusing is the fail-closed
36
+ * direction and it costs nothing a real server sends.
37
+ *
38
+ * ## The round trip, and the one thing it does not claim
39
+ *
40
+ * {@link shlexJoin} quotes a word when, and only when, {@link shlexSplit} would
41
+ * otherwise read it as something else: an empty word, or one carrying
42
+ * whitespace, a quote or a backslash. That makes
43
+ * `shlexSplit(shlexJoin(argv)).argv` equal to `argv` for every argv, which is
44
+ * the property {@link shlexRoundTrips} states and the bridge checks before it
45
+ * binds either value.
46
+ *
47
+ * The converse is NOT claimed: `shlexJoin(shlexSplit(text).argv)` is a normal
48
+ * form of `text`, not `text` itself. A counterpart is free to quote more
49
+ * conservatively than this does (a join written for shell safety quotes `>` and
50
+ * `:`, which this one leaves bare), and byte equality with the received string
51
+ * would therefore mean pinning that counterpart's quoting predicate. This
52
+ * repository has no record of it and cannot acquire one here, so demanding
53
+ * equality would refuse traffic on a guess. What is demanded instead is
54
+ * {@link ShlexSplit.joinShaped}: words separated by exactly one space, which
55
+ * every join produces and which is checkable without knowing which characters
56
+ * it chose to quote. The bridge records the received string and the argv side
57
+ * by side so any remaining difference is visible rather than asserted away.
58
+ */
59
+ export type ShlexSplit = {
60
+ ok: true;
61
+ argv: string[];
62
+ /**
63
+ * Were the words separated by exactly one space each, with none before
64
+ * the first or after the last?
65
+ *
66
+ * True of every string a join produces. False says the string reached
67
+ * this runtime some other way, which is a fact about the counterpart
68
+ * rather than about the argv, and the caller decides what to do with it.
69
+ */
70
+ joinShaped: boolean;
71
+ } | {
72
+ ok: false;
73
+ reason: string;
74
+ };
75
+ /**
76
+ * Split a joined command string into the argv it renders.
77
+ *
78
+ * Refuses rather than guessing on the three shapes whose reading is not agreed:
79
+ * an unterminated single-quoted run, a trailing backslash with nothing to
80
+ * escape, and a double quote outside a quoted run (see the module header).
81
+ */
82
+ export declare function shlexSplit(text: string): ShlexSplit;
83
+ /**
84
+ * Render an argv as one command string that {@link shlexSplit} reads back as
85
+ * the same argv.
86
+ *
87
+ * Minimal quoting: a word is emitted bare unless it is empty or carries
88
+ * whitespace, a quote or a backslash, in which case it is single-quoted with
89
+ * the `'\''` idiom for an embedded quote. That idiom closes the run, escapes
90
+ * one quote and opens the next, which is three pieces of ONE word rather than
91
+ * three words, because nothing separates them.
92
+ */
93
+ export declare function shlexJoin(argv: readonly string[]): string;
94
+ /**
95
+ * Does `argv` survive a render-and-re-split cycle unchanged?
96
+ *
97
+ * True for every argv this module can render, and checked anyway at the one
98
+ * call site that binds an argv to an approval: a parser bug here would bind
99
+ * words nobody is going to run, and the cost of proving otherwise is one pass
100
+ * over a short string.
101
+ */
102
+ export declare function shlexRoundTrips(argv: readonly string[]): boolean;
@@ -0,0 +1,159 @@
1
+ /**
2
+ * Shell word splitting and joining, for the one place this runtime reads a
3
+ * command as a RENDERING of an argv rather than as bytes it was handed
4
+ * (APRV-362).
5
+ *
6
+ * ## Why this exists at all
7
+ *
8
+ * Every harness hook is handed a command as a string, and the classifier reads
9
+ * that string. Codex's app-server is the exception: what it will execute is an
10
+ * argv, and the item-based API delivers that argv already joined into one
11
+ * string by `shlex_join` (`docs/codex-app-server-bridge.md`, question 1). A
12
+ * bridge that classified the joined string without ever naming the argv would
13
+ * be approving its own re-parse, and the gap between the two is where an
14
+ * approval could authorize words nobody read.
15
+ *
16
+ * So the bridge names the argv, and these functions are how. They are pure,
17
+ * total and exhaustively tested, which is what SPEC.md §11's deterministic-core
18
+ * rule asks of anything a decision rests on.
19
+ *
20
+ * ## The grammar, and why it is narrower than a shell's
21
+ *
22
+ * This is `shlex`, not a shell. It knows three things: runs of whitespace
23
+ * separate words, a single-quoted run is literal, and a backslash outside
24
+ * quotes makes the next character literal. It does NOT know operators: `>`,
25
+ * `|`, `&&` and `;` are ordinary characters in ordinary words. That is correct
26
+ * here, because what is being un-joined is an argv and an argv has no
27
+ * operators. The shell metacharacters in a real Codex call live INSIDE one word
28
+ * (`/bin/zsh -lc 'printf x > f'`), and the hook's own classifier is what reads
29
+ * that word as a script.
30
+ *
31
+ * A DOUBLE QUOTE outside a single-quoted run is refused rather than
32
+ * interpreted. A join never emits one: a word needing protection comes back
33
+ * single-quoted and a word not needing it comes back bare. So a bare `"` says
34
+ * the string was not produced by joining an argv, and this runtime will not
35
+ * guess whose escaping rules apply inside it. Refusing is the fail-closed
36
+ * direction and it costs nothing a real server sends.
37
+ *
38
+ * ## The round trip, and the one thing it does not claim
39
+ *
40
+ * {@link shlexJoin} quotes a word when, and only when, {@link shlexSplit} would
41
+ * otherwise read it as something else: an empty word, or one carrying
42
+ * whitespace, a quote or a backslash. That makes
43
+ * `shlexSplit(shlexJoin(argv)).argv` equal to `argv` for every argv, which is
44
+ * the property {@link shlexRoundTrips} states and the bridge checks before it
45
+ * binds either value.
46
+ *
47
+ * The converse is NOT claimed: `shlexJoin(shlexSplit(text).argv)` is a normal
48
+ * form of `text`, not `text` itself. A counterpart is free to quote more
49
+ * conservatively than this does (a join written for shell safety quotes `>` and
50
+ * `:`, which this one leaves bare), and byte equality with the received string
51
+ * would therefore mean pinning that counterpart's quoting predicate. This
52
+ * repository has no record of it and cannot acquire one here, so demanding
53
+ * equality would refuse traffic on a guess. What is demanded instead is
54
+ * {@link ShlexSplit.joinShaped}: words separated by exactly one space, which
55
+ * every join produces and which is checkable without knowing which characters
56
+ * it chose to quote. The bridge records the received string and the argv side
57
+ * by side so any remaining difference is visible rather than asserted away.
58
+ */
59
+ /** Whitespace that separates words. Everything else is a word character. */
60
+ const SEPARATORS = new Set([" ", "\t", "\n", "\r", "\f", "\v"]);
61
+ /** A word must be quoted when a bare rendering would not read back as itself. */
62
+ const NEEDS_QUOTING = /[\s'"\\]/u;
63
+ /**
64
+ * Split a joined command string into the argv it renders.
65
+ *
66
+ * Refuses rather than guessing on the three shapes whose reading is not agreed:
67
+ * an unterminated single-quoted run, a trailing backslash with nothing to
68
+ * escape, and a double quote outside a quoted run (see the module header).
69
+ */
70
+ export function shlexSplit(text) {
71
+ const argv = [];
72
+ let word = "";
73
+ /** Distinct from `word.length > 0`: `''` is an empty word, not no word. */
74
+ let started = false;
75
+ let joinShaped = true;
76
+ let index = 0;
77
+ while (index < text.length) {
78
+ const char = text[index];
79
+ if (SEPARATORS.has(char)) {
80
+ // A separator before any word, one that is not a plain space, or a second
81
+ // one in a row: all three are shapes a join does not emit.
82
+ if (!started || char !== " " || SEPARATORS.has(text[index + 1] ?? ""))
83
+ joinShaped = false;
84
+ if (started) {
85
+ argv.push(word);
86
+ word = "";
87
+ started = false;
88
+ }
89
+ index += 1;
90
+ continue;
91
+ }
92
+ if (char === "'") {
93
+ const close = text.indexOf("'", index + 1);
94
+ if (close === -1) {
95
+ return {
96
+ ok: false,
97
+ reason: `a single-quoted run opened at offset ${String(index)} is never closed`,
98
+ };
99
+ }
100
+ word += text.slice(index + 1, close);
101
+ started = true;
102
+ index = close + 1;
103
+ continue;
104
+ }
105
+ if (char === '"') {
106
+ return {
107
+ ok: false,
108
+ reason: `a double quote at offset ${String(index)} is outside any quoted run, and a joined argv never carries one`,
109
+ };
110
+ }
111
+ if (char === "\\") {
112
+ if (index + 1 >= text.length) {
113
+ return { ok: false, reason: "the string ends in a backslash with nothing to escape" };
114
+ }
115
+ word += text[index + 1];
116
+ started = true;
117
+ index += 2;
118
+ continue;
119
+ }
120
+ word += char;
121
+ started = true;
122
+ index += 1;
123
+ }
124
+ if (started)
125
+ argv.push(word);
126
+ else if (text.length > 0)
127
+ joinShaped = false;
128
+ return { ok: true, argv, joinShaped };
129
+ }
130
+ /**
131
+ * Render an argv as one command string that {@link shlexSplit} reads back as
132
+ * the same argv.
133
+ *
134
+ * Minimal quoting: a word is emitted bare unless it is empty or carries
135
+ * whitespace, a quote or a backslash, in which case it is single-quoted with
136
+ * the `'\''` idiom for an embedded quote. That idiom closes the run, escapes
137
+ * one quote and opens the next, which is three pieces of ONE word rather than
138
+ * three words, because nothing separates them.
139
+ */
140
+ export function shlexJoin(argv) {
141
+ return argv
142
+ .map((word) => word.length > 0 && !NEEDS_QUOTING.test(word) ? word : `'${word.split("'").join("'\\''")}'`)
143
+ .join(" ");
144
+ }
145
+ /**
146
+ * Does `argv` survive a render-and-re-split cycle unchanged?
147
+ *
148
+ * True for every argv this module can render, and checked anyway at the one
149
+ * call site that binds an argv to an approval: a parser bug here would bind
150
+ * words nobody is going to run, and the cost of proving otherwise is one pass
151
+ * over a short string.
152
+ */
153
+ export function shlexRoundTrips(argv) {
154
+ const back = shlexSplit(shlexJoin(argv));
155
+ if (!back.ok || back.argv.length !== argv.length)
156
+ return false;
157
+ return back.argv.every((word, at) => word === argv[at]);
158
+ }
159
+ //# sourceMappingURL=shlex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shlex.js","sourceRoot":"","sources":["../../../src/core/shlex.ts"],"names":[],"mappings":"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"}
@@ -424,6 +424,27 @@ export interface DeclaredAction {
424
424
  * is, never less.
425
425
  */
426
426
  wait_until: string | null;
427
+ /**
428
+ * The harness's own ceiling on the hook process that opened this request, in
429
+ * milliseconds, or `null` (APRV-423).
430
+ *
431
+ * A BOUNDED INPUT rather than a deadline. The hook states the per-entry
432
+ * timeout its harness runs it under (Hermes caps an entry at 300 s; Claude
433
+ * Code kills the process at the `timeout` in its settings file), and the
434
+ * runtime takes the SHORTER of that minus a fixed margin and the policy's
435
+ * own `defaults.approval_ttl` — see `core/harness-wait.ts`'s
436
+ * `harnessCappedTtlMs`. Claimed, and on the ratchet's safe side for the same
437
+ * structural reason `execution` is: the minimum can only move the deadline
438
+ * EARLIER, so a requester that overstates its cap changes nothing and one
439
+ * that understates it gives itself less time, never more (SPEC.md §11.1
440
+ * invariant 4).
441
+ *
442
+ * A value that is not a positive integer reads as `null`, which is the
443
+ * pre-APRV-423 shape: the policy's TTL governs alone. That is the baseline
444
+ * rather than a reduction below it, and the write boundary refuses such a
445
+ * value anyway.
446
+ */
447
+ harness_cap_ms: number | null;
427
448
  /**
428
449
  * The SHA-256 of the attested policy in force when the runtime evaluated the
429
450
  * request (APRV-118, amended SPEC.md §5.2), or `null` for a record written
@@ -464,6 +485,16 @@ export interface RequestDerivation {
464
485
  expiredByEvent: boolean;
465
486
  /** The TTL lapsed by arithmetic, with no `approval.expired` record. */
466
487
  expiredLazily: boolean;
488
+ /**
489
+ * The window this cycle was actually judged by: the policy's TTL narrowed by
490
+ * the requesting hook's declared harness ceiling, or `null` when neither
491
+ * bounds it (APRV-423).
492
+ *
493
+ * Reported rather than left to be recomputed. A caller that wants to SAY the
494
+ * deadline (the hook's deny text, the expiry record, a channel's line) reads
495
+ * it from here, so the words and the verdict come from one derivation.
496
+ */
497
+ effectiveTtlMs: number | null;
467
498
  declared: DeclaredAction;
468
499
  execution: ExecutionFacts;
469
500
  }
@@ -496,10 +527,30 @@ export declare function payloadOf(record: EventRecord): Record<string, unknown>;
496
527
  * appended after a human's answer does not erase the answer; the gate refuses
497
528
  * to append one at all in that case.
498
529
  * - Expiry: an `approval.expired` record sets `expiredByEvent`. With no such
499
- * record, `ttlMs !== null` and `ts > requestTs + ttlMs` sets `expiredLazily`.
530
+ * record, the request lapses against the EFFECTIVE window — `ttlMs` narrowed
531
+ * by the declared harness ceiling (APRV-423, `core/harness-wait.ts`) — and
532
+ * `ts > requestTs + effectiveTtlMs` sets `expiredLazily`. The ceiling can
533
+ * only shorten that window, never lengthen it, so a request under a policy
534
+ * with no TTL is bounded exactly when the hook that opened it declared a
535
+ * ceiling and not otherwise.
500
536
  * Both yield `state: "expired"`. An unparseable `requestTs` or `ts` also
501
537
  * yields `expired`: liveness that cannot be demonstrated is not assumed. (The
502
538
  * event schema's `date-time` format makes that unreachable through the real
503
539
  * append path; it is a backstop, not a live branch.)
504
540
  */
505
541
  export declare function requestState(records: EventRecord[], actionKey: string, ts: string, ttlMs: number | null): RequestDerivation;
542
+ /**
543
+ * The instant this request lapses, ISO-8601, or `null` when nothing bounds it
544
+ * (APRV-423).
545
+ *
546
+ * The deadline in words, for the places that have to SAY it: the hook's deny
547
+ * text, the `approval.expired` payload's own account of the window it closed,
548
+ * and the line a channel renders on a phone. Derived from the same
549
+ * `effectiveTtlMs` the state above was derived from, so a message can never
550
+ * name a deadline the verdict beside it disagreed with.
551
+ *
552
+ * `null` for a request whose instant does not parse, because a deadline
553
+ * measured from an unreadable start is not a deadline — that request already
554
+ * reads `expired`, and the caller says so in those words instead.
555
+ */
556
+ export declare function requestExpiresAt(derivation: RequestDerivation): string | null;
@@ -124,6 +124,7 @@ import { createHash } from "node:crypto";
124
124
  import { closeSync, fstatSync, openSync, readFileSync, readSync, statSync } from "node:fs";
125
125
  import { resolve } from "node:path";
126
126
  import { isPolicySha256, POLICY_HASH_FIELD } from "./attest.js";
127
+ import { harnessCappedTtlMs } from "./harness-wait.js";
127
128
  import { onLogAppended } from "./log.js";
128
129
  import { normalizeUsd } from "./money.js";
129
130
  import { isPayloadHash } from "./payload.js";
@@ -827,6 +828,7 @@ function declaredFrom(record) {
827
828
  const hash = payload["payload_hash"];
828
829
  const execution = payload["execution"];
829
830
  const waitUntil = payload["wait_until"];
831
+ const capMs = payload["harness_cap_ms"];
830
832
  const policySha256 = payload[POLICY_HASH_FIELD];
831
833
  return {
832
834
  class: typeof cls === "string" ? cls : null,
@@ -839,6 +841,11 @@ function declaredFrom(record) {
839
841
  // understand must not change what the runtime does.
840
842
  execution: execution === "harness" ? "harness" : null,
841
843
  wait_until: typeof waitUntil === "string" && !Number.isNaN(Date.parse(waitUntil)) ? waitUntil : null,
844
+ // A positive integer or nothing (APRV-423). Zero, a fraction, a negative
845
+ // and a non-number all read as `null` — the policy TTL alone — because a
846
+ // cap this runtime cannot read is a cap it cannot subtract a margin from,
847
+ // and guessing one would be inventing a deadline for the requester.
848
+ harness_cap_ms: typeof capMs === "number" && Number.isInteger(capMs) && capMs > 0 ? capMs : null,
842
849
  // A malformed hash reads as `null`, which is the pre-APRV-118 shape: the
843
850
  // grant path then has nothing to compare and proceeds under the current
844
851
  // policy. Treating an unreadable value as a mismatch would let a corrupt
@@ -874,7 +881,12 @@ function declaredFrom(record) {
874
881
  * appended after a human's answer does not erase the answer; the gate refuses
875
882
  * to append one at all in that case.
876
883
  * - Expiry: an `approval.expired` record sets `expiredByEvent`. With no such
877
- * record, `ttlMs !== null` and `ts > requestTs + ttlMs` sets `expiredLazily`.
884
+ * record, the request lapses against the EFFECTIVE window — `ttlMs` narrowed
885
+ * by the declared harness ceiling (APRV-423, `core/harness-wait.ts`) — and
886
+ * `ts > requestTs + effectiveTtlMs` sets `expiredLazily`. The ceiling can
887
+ * only shorten that window, never lengthen it, so a request under a policy
888
+ * with no TTL is bounded exactly when the hook that opened it declared a
889
+ * ceiling and not otherwise.
878
890
  * Both yield `state: "expired"`. An unparseable `requestTs` or `ts` also
879
891
  * yields `expired`: liveness that cannot be demonstrated is not assumed. (The
880
892
  * event schema's `date-time` format makes that unreachable through the real
@@ -897,6 +909,7 @@ export function requestState(records, actionKey, ts, ttlMs) {
897
909
  payload_hash: null,
898
910
  execution: null,
899
911
  wait_until: null,
912
+ harness_cap_ms: null,
900
913
  policy_sha256: null,
901
914
  };
902
915
  const execution = { started: null, completed: null, failed: null };
@@ -963,16 +976,26 @@ export function requestState(records, actionKey, ts, ttlMs) {
963
976
  }
964
977
  let state;
965
978
  let expiredLazily = false;
979
+ // APRV-423. The window this cycle is judged by, which is the policy's TTL
980
+ // narrowed by whatever ceiling the requesting hook declared it runs under.
981
+ // Derived HERE, from the declaration this loop just read, so that every
982
+ // caller of this function — the gate's decide, the withdraw and expire
983
+ // verbs, the carry lookup, the daemon's sweep, the queue, the channels —
984
+ // reaches the same deadline without a second copy of the arithmetic. Two
985
+ // copies would be two answers to "has this lapsed", and the one that said
986
+ // "no" would be the one a late tap was recorded against.
987
+ const effectiveTtlMs = harnessCappedTtlMs(ttlMs, declared.harness_cap_ms);
966
988
  if (requestSeq === null) {
967
989
  state = "none";
968
990
  }
969
991
  else if (decision !== null) {
970
992
  state = decision;
971
993
  }
972
- else if (ttlMs === null) {
973
- // No `defaults.approval_ttl` means the policy declares no lapse. A request
974
- // stays live until a human decides it; inventing a default TTL here would
975
- // silently reject approvals a policy author never asked to expire.
994
+ else if (effectiveTtlMs === null) {
995
+ // No `defaults.approval_ttl` and no declared cap means nothing bounded this
996
+ // request. It stays live until a human decides it; inventing a default TTL
997
+ // here would silently reject approvals a policy author never asked to
998
+ // expire.
976
999
  state = "requested";
977
1000
  }
978
1001
  else {
@@ -982,7 +1005,7 @@ export function requestState(records, actionKey, ts, ttlMs) {
982
1005
  state = "expired";
983
1006
  expiredLazily = true;
984
1007
  }
985
- else if (now > requestedAt + ttlMs) {
1008
+ else if (now > requestedAt + effectiveTtlMs) {
986
1009
  state = "expired";
987
1010
  expiredLazily = true;
988
1011
  }
@@ -1002,8 +1025,31 @@ export function requestState(records, actionKey, ts, ttlMs) {
1002
1025
  decisionTs,
1003
1026
  expiredByEvent,
1004
1027
  expiredLazily,
1028
+ effectiveTtlMs,
1005
1029
  declared,
1006
1030
  execution,
1007
1031
  };
1008
1032
  }
1033
+ /**
1034
+ * The instant this request lapses, ISO-8601, or `null` when nothing bounds it
1035
+ * (APRV-423).
1036
+ *
1037
+ * The deadline in words, for the places that have to SAY it: the hook's deny
1038
+ * text, the `approval.expired` payload's own account of the window it closed,
1039
+ * and the line a channel renders on a phone. Derived from the same
1040
+ * `effectiveTtlMs` the state above was derived from, so a message can never
1041
+ * name a deadline the verdict beside it disagreed with.
1042
+ *
1043
+ * `null` for a request whose instant does not parse, because a deadline
1044
+ * measured from an unreadable start is not a deadline — that request already
1045
+ * reads `expired`, and the caller says so in those words instead.
1046
+ */
1047
+ export function requestExpiresAt(derivation) {
1048
+ if (derivation.effectiveTtlMs === null)
1049
+ return null;
1050
+ const requestedAt = Date.parse(derivation.requestTs ?? "");
1051
+ if (Number.isNaN(requestedAt))
1052
+ return null;
1053
+ return new Date(requestedAt + derivation.effectiveTtlMs).toISOString();
1054
+ }
1009
1055
  //# sourceMappingURL=state.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/core/state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/core/state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyHG;AAEH,OAAO,EAAE,UAAU,EAAa,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC3F,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAkC,MAAM,UAAU,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EACL,UAAU,EACV,iBAAiB,GAIlB,MAAM,aAAa,CAAC;AAmFrB;;;;;;;;;;;;;;GAcG;AACH,IAAI,aAAa,GAAG,KAAK,CAAC;AAE1B;;;;;;;;;;;;GAYG;AACH,IAAI,gBAAgB,GAAqB,IAAI,CAAC;AAE9C;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,KAAuB;IAClD,gBAAgB,GAAG,KAAK,CAAC;AAC3B,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,gBAAgB;IAC9B,OAAO,gBAAgB,IAAI,eAAe,CAAC;AAC7C,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,aAAa,GAAG,OAAO,CAAC;AAC1B,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,wBAAwB;IACtC,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAS,UAAU,CAAC,IAAwB,EAAE,OAAe;IAC3D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACtC,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,MAAM,CAAC,OAAsB;IAC3C,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACzC,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AACxE,CAAC;AAED,8EAA8E;AAC9E,0BAA0B;AAC1B,EAAE;AACF,2EAA2E;AAC3E,8EAA8E;AAC9E,4BAA4B;AAC5B,8EAA8E;AAE9E,MAAM,OAAO,GAAG,IAAI,CAAC;AAiCrB,8EAA8E;AAC9E,MAAM,CAAC,MAAM,0BAA0B,GAAG,EAAE,CAAC;AAE7C,+DAA+D;AAC/D,MAAM,CAAC,MAAM,6BAA6B,GAAG,MAAM,CAAC;AAWpD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAc,MAAM,CAAC,MAAM,CAAC;IACtD,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,0BAA0B;IACtC,OAAO,EAAE,6BAA6B;CACvC,CAAC,CAAC;AAEH;;;;;;;GAOG;AACH,IAAI,WAAW,GAAG,CAAC,CAAC;AAEpB,6EAA6E;AAC7E,MAAM,UAAU,eAAe;IAC7B,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,oBAAoB;IAClC,WAAW,GAAG,CAAC,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,MAAM,eAAe,GAAG,CAAC,CAAC;AAyD1B,SAAS,MAAM,CAAC,KAAiB;IAC/B,WAAW,IAAI,KAAK,CAAC,MAAM,CAAC;IAC5B,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED,yEAAyE;AACzE,SAAS,SAAS,CAAC,KAAiB;IAClC,WAAW,IAAI,KAAK,CAAC,MAAM,CAAC;IAC5B,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5C,CAAC;AAED,6EAA6E;AAC7E,SAAS,QAAQ,CAAC,KAAW,EAAE,KAAiB;IAC9C,WAAW,IAAI,KAAK,CAAC,MAAM,CAAC;IAC5B,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACpB,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,SAAS,cAAc,CAAC,KAAiB,EAAE,KAAgB,EAAE,GAAW;IACtE,IAAI,KAAK,CAAC,gBAAgB;QAAE,OAAO,IAAI,CAAC;IACxC,IAAI,KAAK,CAAC,SAAS,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC1C,4EAA4E;IAC5E,2EAA2E;IAC3E,0CAA0C;IAC1C,IAAI,KAAK,CAAC,qBAAqB,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IACrE,OAAO,GAAG,GAAG,KAAK,CAAC,iBAAiB,IAAI,KAAK,CAAC,OAAO,CAAC;AACxD,CAAC;AAED;;;GAGG;AACH,SAAS,WAAW,CAAC,EAAU,EAAE,IAAY,EAAE,QAAgB;IAC7D,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,OAAO,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC1B,IAAI,GAAW,CAAC;QAChB,IAAI,CAAC;YACH,GAAG,GAAG,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC,CAAC;QACtE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,GAAG,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QAC3B,IAAI,IAAI,GAAG,CAAC;IACd,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,UAAU,CAAC,KAAc;IAChC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO;IAClF,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACrB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,KAAgC,CAAC;QAAE,UAAU,CAAC,KAAK,CAAC,CAAC;AACzF,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,OAAO,iBAAiB;IACnB,QAAQ,GAAG,IAAI,GAAG,EAAsB,CAAC;IAClD,KAAK,GAAG,CAAC,CAAC;IACV,OAAO,GAAG,CAAC,CAAC;IACZ;;;;;OAKG;IACH,QAAQ,GAAG,CAAC,CAAC;IACb;;;;OAIG;IACH,aAAa,GAAG,CAAC,CAAC;IAElB,wEAAwE;IACxE,KAAK;QACH,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,gEAAgE;IAChE,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED;;;;;;OAMG;IACH,IAAI,KAAK;QACP,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,KAAK;YAChB,MAAM,EAAE,IAAI,CAAC,OAAO;YACpB,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,YAAY,EAAE,IAAI,CAAC,aAAa;SACjC,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,kBAAkB,CAAC,OAAe;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QAClD,IAAI,KAAK,KAAK,SAAS;YAAE,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC;IACzD,CAAC;IAED;;;;;OAKG;IACH,IAAI,CACF,OAAe,EACf,OAAsB,EACtB,QAAQ,GAAgB,EAAE,EAC1B,KAAK,GAAc,eAAe;QAElC,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAErC,4EAA4E;QAC5E,4EAA4E;QAC5E,0EAA0E;QAC1E,sEAAsE;QACtE,IACE,KAAK,CAAC,IAAI,KAAK,aAAa;YAC5B,KAAK,KAAK,SAAS;YACnB,KAAK,CAAC,SAAS,KAAK,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACvF,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EACzC,CAAC;YACD,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC3E,IAAI,WAAW,KAAK,IAAI;gBAAE,OAAO,WAAW,CAAC;QAC/C,CAAC;QAED,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC;IAED;;;;;;;OAOG;IACH,UAAU,CACR,OAAe,EACf,GAAW,EACX,OAAsB,EACtB,QAAqB,EACrB,IAAmB;QAEnB,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC;QAExB,IAAI,GAAW,CAAC;QAChB,IAAI,CAAC;YACH,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YACP,0EAA0E;YAC1E,0EAA0E;YAC1E,uEAAuE;YACvE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1B,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;YAClB,OAAO,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC;QACzB,IAAI,CAAC;YACH,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;QACtC,CAAC;QAAC,MAAM,CAAC;YACP,2EAA2E;QAC7E,CAAC;QAED,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACpF,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAE3F,yEAAyE;QACzE,0EAA0E;QAC1E,0EAA0E;QAC1E,mDAAmD;QACnD,IAAI,MAAM,GAAG,MAAM,CAAC;QACpB,4DAA4D;QAC5D,IAAI,YAAY,GAAkB,IAAI,CAAC;QACvC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1B,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;YAClB,IAAI,QAAQ,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;gBAC9B,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;gBACjE,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;oBAChB,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;oBACzB,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;oBACnB,uEAAuE;oBACvE,kEAAkE;oBAClE,kEAAkE;oBAClE,mEAAmE;oBACnE,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,CAAC,UAAU;wBAAE,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC;gBAChF,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QAC9F,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAE5D,sEAAsE;QACtE,2EAA2E;QAC3E,0EAA0E;QAC1E,6EAA6E;QAC7E,4EAA4E;QAC5E,2EAA2E;QAC3E,yDAAyD;QACzD,MAAM,KAAK,GACT,KAAK,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,CAAC,UAAU;YACvE,CAAC,CAAC,KAAK,CAAC,UAAU;YAClB,CAAC,CAAC,YAAY,CAAC;QAEnB,0EAA0E;QAC1E,yEAAyE;QACzE,2EAA2E;QAC3E,sEAAsE;QACtE,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC/B,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACtD,wEAAwE;YACxE,sEAAsE;YACtE,uEAAuE;YACvE,qEAAqE;YACrE,IAAI,OAAoB,CAAC;YACzB,IAAI,MAAc,CAAC;YACnB,IAAI,KAAK,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,CAAC,UAAU,EAAE,CAAC;gBAC9E,yEAAyE;gBACzE,qEAAqE;gBACrE,qEAAqE;gBACrE,iEAAiE;gBACjE,0DAA0D;gBAC1D,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC;gBAC1B,OAAO;oBACL,KAAK,CAAC,SAAS,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACxE,CAAC;iBAAM,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBAC1B,qEAAqE;gBACrE,qEAAqE;gBACrE,6BAA6B;gBAC7B,MAAM,GAAG,KAAK,CAAC;gBACf,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC;iBAAM,CAAC;gBACN,oEAAoE;gBACpE,6DAA6D;gBAC7D,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;gBACzB,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACxC,CAAC;YACD,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YACxE,0EAA0E;YAC1E,wEAAwE;YACxE,uDAAuD;YACvD,IAAI,QAAQ,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;gBAC9B,qBAAqB,CACnB,OAAO,EACP,GAAG,CAAC,MAAM,EACV,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,OAAO,EACjD,MAAM,EACN,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,IAAI,EACX,OAAO,CAAC,SAAS,CAClB,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;;;;;OAQG;IACH,SAAS,CACP,OAAe,EACf,GAAW,EACX,KAAiB,EACjB,OAAsB,EACtB,QAAqB;QAErB,IAAI,EAAU,CAAC;QACf,IAAI,CAAC;YACH,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC;YACH,IAAI,IAAY,CAAC;YACjB,IAAI,OAAe,CAAC;YACpB,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;gBAC5B,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;oBAAE,OAAO,IAAI,CAAC;gBACjC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;gBAClB,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;YAC1B,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,CAAC;YACd,CAAC;YAED,sEAAsE;YACtE,wEAAwE;YACxE,wEAAwE;YACxE,oDAAoD;YACpD,IAAI,IAAI,GAAG,KAAK,CAAC,UAAU;gBAAE,OAAO,IAAI,CAAC;YACzC,IAAI,IAAI,KAAK,KAAK,CAAC,UAAU,IAAI,OAAO,KAAK,KAAK,CAAC,OAAO;gBAAE,OAAO,IAAI,CAAC;YAExE,MAAM,WAAW,GAAG,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;YAChE,IAAI,WAAW,GAAG,CAAC,KAAK,KAAK,CAAC,UAAU;gBAAE,OAAO,IAAI,CAAC;YACtD,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAChE,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC;gBAAE,OAAO,IAAI,CAAC;YAClE,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,OAAO;gBAAE,OAAO,IAAI,CAAC;YAC7D,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;gBAAE,OAAO,IAAI,CAAC;YAEtF,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;YACzD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC;gBAAE,OAAO,IAAI,CAAC;YAE7E,qEAAqE;YACrE,wEAAwE;YACxE,0EAA0E;YAC1E,iDAAiD;YACjD,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YACvE,IAAI,KAAK,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC;YAChC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;gBAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAE1C,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;YAChB,MAAM,MAAM,GAAmB;gBAC7B,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,CAAC;YACF,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAC7E,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;YAC/B,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBACtD,uEAAuE;gBACvE,kEAAkE;gBAClE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC1B,OAAO,QAAQ,CAAC;YAClB,CAAC;YAED,wEAAwE;YACxE,uEAAuE;YACvE,4DAA4D;YAC5D,IAAI,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;YACxC,IAAI,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;YAC9B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;gBAChE,aAAa,GAAG,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;gBAC5C,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YACnE,CAAC;YAED,MAAM,OAAO,GAAG,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;YACtC,KAAK,MAAM,MAAM,IAAI,OAAO;gBAAE,UAAU,CAAC,MAAM,CAAC,CAAC;YACjD,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;gBACf,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,UAAU,EAAE,IAAI;gBAChB,KAAK,EAAE,MAAM,CAAC,OAAO;gBACrB,UAAU,EAAE,MAAM;gBAClB,aAAa;gBACb,QAAQ;gBACR,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,OAAO;gBACP,OAAO;gBACP,SAAS,EAAE,KAAK;gBAChB,sEAAsE;gBACtE,mDAAmD;gBACnD,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;gBAC1C,qBAAqB,EAAE,KAAK,CAAC,qBAAqB,GAAG,CAAC;gBACtD,gBAAgB,EAAE,KAAK;aACxB,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;gBAC9B,qBAAqB,CACnB,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,IAAI,EACX,OAAO,CAAC,SAAS,CAClB,CAAC;YACJ,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC;gBACH,SAAS,CAAC,EAAE,CAAC,CAAC;YAChB,CAAC;YAAC,MAAM,CAAC;gBACP,uEAAuE;YACzE,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,SAAS,CACP,GAAW,EACX,GAAW,EACX,SAAiB,EACjB,OAAe,EACf,QAAqB;IACrB;;;OAGG;IACH,WAA0B;IAC1B;;;OAGG;IACH,KAAkB;QAElB,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC/B,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACtD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1B,OAAO;QACT,CAAC;QAED,yEAAyE;QACzE,oDAAoD;QACpD,MAAM,aAAa,GAAG,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACnE,MAAM,OAAO,GAAG,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;QACtC,KAAK,MAAM,MAAM,IAAI,OAAO;YAAE,UAAU,CAAC,MAAM,CAAC,CAAC;QAEjD,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;YACf,SAAS;YACT,UAAU,EAAE,GAAG,CAAC,MAAM;YACtB,KAAK,EAAE,MAAM,CAAC,OAAO;YACrB,UAAU,EAAE,WAAW,IAAI,MAAM,CAAC,GAAG,CAAC;YACtC,aAAa;YACb,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAClE,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,OAAO;YACP,OAAO;YACP,SAAS,EAAE,KAAK;YAChB,sEAAsE;YACtE,0DAA0D;YAC1D,iBAAiB,EAAE,IAAI,CAAC,GAAG,EAAE;YAC7B,qBAAqB,EAAE,CAAC;YACxB,gBAAgB,EAAE,KAAK;SACxB,CAAC,CAAC;IACL,CAAC;IAED,8EAA8E;IAC9E,MAAM,CAAC,GAAW,EAAE,KAAiB;QACnC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,eAAe,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;YAC3C,IAAI,CAAC,MAAM,CAAC,IAAI;gBAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;CACF;AAED;;;;;;;GAOG;AACH,SAAS,cAAc,CACrB,KAAiB,EACjB,GAAW,EACX,SAAiB,EACjB,OAAe;IAEf,0EAA0E;IAC1E,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAE/C,6EAA6E;IAC7E,2EAA2E;IAC3E,IAAI,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAE/C,8EAA8E;IAC9E,uEAAuE;IACvE,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,CAAC,UAAU,IAAI,OAAO,KAAK,KAAK,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAE9E,8EAA8E;IAC9E,mCAAmC;IACnC,MAAM,WAAW,GAAG,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;IAChE,IAAI,WAAW,GAAG,CAAC,KAAK,KAAK,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IACtD,IAAI,GAAG,CAAC,WAAW,CAAC,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC;IAC9C,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAExF,gEAAgE;IAChE,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAEhF,OAAO;QACL,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,iBAAiB,EAAE,CAAC;AAExD;;;;;;;;;GASG;AACH,aAAa,CAAC,CAAC,OAAO,EAAE,EAAE;IACxB,gBAAgB,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC/C,CAAC,CAAC,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAAe,EACf,OAAO,GAAwB,EAAE;IAEjC,IAAI,CAAC;QACH,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACvD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC/C,CAAC;QACD,OAAO,UAAU,CACf,gBAAgB,EAChB,OAAO,OAAO,uBAAuB,YAAY,CAAC,KAAK,CAAC,EAAE,CAC3D,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,aAAa,EAAE,GAAG,OAAO,CAAC;IAC5F,MAAM,KAAK,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC;IACrE,0EAA0E;IAC1E,4EAA4E;IAC5E,gCAAgC;IAChC,MAAM,QAAQ,GACZ,KAAK,KAAK,IAAI;QACZ,CAAC,CAAC,iBAAiB,CAAC,OAAO,EAAE,aAAa,CAAC;QAC3C,CAAC,CAAC,KAAK,CAAC,IAAI,CACR,OAAO,EACP,aAAa,EACb;YACE,OAAO,EAAE,aAAa;YACtB,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;SAC9C,EACD,SAAS,IAAI,gBAAgB,IAAI,eAAe,CACjD,CAAC;IAER,QAAQ,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAC/B,KAAK,OAAO;YACV,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC7E,KAAK,WAAW;YACd,OAAO,UAAU,CACf,eAAe,EACf,OAAO,OAAO,kJAAkJ,CACjK,CAAC;QACJ,KAAK,SAAS;YACZ,OAAO,UAAU,CACf,aAAa,EACb,OAAO,OAAO,qBAAqB,QAAQ,CAAC,MAAM,CAAC,MAAM,GACvD,QAAQ,CAAC,MAAM,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,QAAQ,CAAC,MAAM,CAAC,WAAW,EACpF,MAAM,QAAQ,CAAC,MAAM,CAAC,OAAO,2FAA2F,CACzH,CAAC;IACN,CAAC;AACH,CAAC;AAwCD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,YAAY,CAAU,CAAC;AAIhF,uDAAuD;AACvD,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAK,gBAAsC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC9F,CAAC;AA8ID,6DAA6D;AAC7D,MAAM,UAAU,SAAS,CAAC,MAAmB;IAC3C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC/B,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;AACxE,CAAC;AAED,SAAS,YAAY,CAAC,MAAmB;IACvC,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IACrC,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACxC,MAAM,YAAY,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAChD,OAAO;QACL,KAAK,EAAE,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;QAC3C,YAAY,EAAE,YAAY,CAAC,IAAI,CAAC;QAChC,UAAU,EAAE,OAAO,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI;QAC/D,OAAO,EAAE,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;QACrD,YAAY,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;QAC/C,uEAAuE;QACvE,yEAAyE;QACzE,oDAAoD;QACpD,SAAS,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;QACrD,UAAU,EACR,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;QAC1F,yEAAyE;QACzE,yEAAyE;QACzE,0EAA0E;QAC1E,oEAAoE;QACpE,cAAc,EACZ,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;QAClF,yEAAyE;QACzE,wEAAwE;QACxE,yEAAyE;QACzE,sEAAsE;QACtE,+CAA+C;QAC/C,aAAa,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI;KAClE,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAM,UAAU,YAAY,CAC1B,OAAsB,EACtB,SAAiB,EACjB,EAAU,EACV,KAAoB;IAEpB,IAAI,IAAI,GAAkB,IAAI,CAAC;IAC/B,IAAI,UAAU,GAAkB,IAAI,CAAC;IACrC,IAAI,SAAS,GAAkB,IAAI,CAAC;IACpC,IAAI,YAAY,GAAkB,IAAI,CAAC;IACvC,IAAI,QAAQ,GAAkC,IAAI,CAAC;IACnD,IAAI,WAAW,GAAkB,IAAI,CAAC;IACtC,IAAI,UAAU,GAAkB,IAAI,CAAC;IACrC,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,IAAI,QAAQ,GAAmB;QAC7B,KAAK,EAAE,IAAI;QACX,YAAY,EAAE,IAAI;QAClB,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,IAAI;QACb,YAAY,EAAE,IAAI;QAClB,SAAS,EAAE,IAAI;QACf,UAAU,EAAE,IAAI;QAChB,cAAc,EAAE,IAAI;QACpB,aAAa,EAAE,IAAI;KACpB,CAAC;IACF,MAAM,SAAS,GAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAEnF,MAAM,MAAM,GAAG,CACb,MAAmB,EACnB,KAAiD,EAC3C,EAAE;QACR,IAAI,UAAU,KAAK,IAAI;YAAE,OAAO;QAChC,sEAAsE;QACtE,mEAAmE;QACnE,uEAAuE;QACvE,sEAAsE;QACtE,uEAAuE;QACvE,8EAA8E;QAC9E,IAAI,QAAQ,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO;QACrD,QAAQ,GAAG,KAAK,CAAC;QACjB,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC;QACzB,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC;QACvB,IAAI,KAAK,KAAK,SAAS;YAAE,cAAc,GAAG,IAAI,CAAC;IACjD,CAAC,CAAC;IAEF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS;YAAE,SAAS;QAC9C,QAAQ,MAAM,CAAC,KAAK,EAAE,CAAC;YACrB,KAAK,oBAAoB;gBACvB,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC;gBAC3B,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC;gBACxB,SAAS,GAAG,MAAM,CAAC,EAAE,CAAC;gBACtB,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC;gBAC5B,QAAQ,GAAG,IAAI,CAAC;gBAChB,WAAW,GAAG,IAAI,CAAC;gBACnB,UAAU,GAAG,IAAI,CAAC;gBAClB,cAAc,GAAG,KAAK,CAAC;gBACvB,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;gBAChC,MAAM;YACR,KAAK,kBAAkB;gBACrB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;gBAC1B,MAAM;YACR,KAAK,mBAAmB;gBACtB,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;gBAC3B,MAAM;YACR,KAAK,kBAAkB;gBACrB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;gBAC1B,MAAM;YACR,KAAK,kBAAkB;gBACrB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;gBAC1B,MAAM;YACR,KAAK,oBAAoB;gBACvB,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;gBAC5B,MAAM;YACR,KAAK,mBAAmB;gBACtB,SAAS,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC;gBAC/B,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC;gBAC3B,MAAM;YACR,KAAK,qBAAqB;gBACxB,SAAS,CAAC,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC;gBACjC,MAAM;YACR,KAAK,kBAAkB;gBACrB,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC;gBAC9B,MAAM;YACR;gBACE,MAAM;QACV,CAAC;IACH,CAAC;IAED,IAAI,KAAmB,CAAC;IACxB,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,0EAA0E;IAC1E,2EAA2E;IAC3E,wEAAwE;IACxE,uEAAuE;IACvE,yEAAyE;IACzE,yEAAyE;IACzE,0EAA0E;IAC1E,yDAAyD;IACzD,MAAM,cAAc,GAAG,kBAAkB,CAAC,KAAK,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;IAC1E,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACxB,KAAK,GAAG,MAAM,CAAC;IACjB,CAAC;SAAM,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QAC7B,KAAK,GAAG,QAAQ,CAAC;IACnB,CAAC;SAAM,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;QACnC,4EAA4E;QAC5E,2EAA2E;QAC3E,sEAAsE;QACtE,UAAU;QACV,KAAK,GAAG,WAAW,CAAC;IACtB,CAAC;SAAM,CAAC;QACN,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;QAChD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC3B,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YACnD,KAAK,GAAG,SAAS,CAAC;YAClB,aAAa,GAAG,IAAI,CAAC;QACvB,CAAC;aAAM,IAAI,GAAG,GAAG,WAAW,GAAG,cAAc,EAAE,CAAC;YAC9C,KAAK,GAAG,SAAS,CAAC;YAClB,aAAa,GAAG,IAAI,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,KAAK,GAAG,WAAW,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO;QACL,SAAS;QACT,KAAK;QACL,IAAI;QACJ,UAAU;QACV,SAAS;QACT,YAAY;QACZ,QAAQ;QACR,WAAW;QACX,UAAU;QACV,cAAc;QACd,aAAa;QACb,cAAc;QACd,QAAQ;QACR,SAAS;KACV,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAA6B;IAC5D,IAAI,UAAU,CAAC,cAAc,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACpD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IAC3D,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3C,OAAO,IAAI,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC;AACzE,CAAC"}
@@ -32,6 +32,85 @@ export declare const TELEGRAM_TOKEN_ENV = "APPROVAL_TG_TOKEN";
32
32
  * declares no `channels.telegram.chat_id_env`. Also a default.
33
33
  */
34
34
  export declare const TELEGRAM_CHAT_ENV = "APPROVAL_TG_CHAT";
35
+ /**
36
+ * The environment variable the webhook `secret_token` is read from (APRV-424).
37
+ *
38
+ * ## Why this one is conventional and the two above are declared
39
+ *
40
+ * `token_env` and `chat_id_env` are policy keys because a machine may run two
41
+ * gates against two bots, and the policy is where that pair is written down.
42
+ * This is not that kind of key, for two reasons and in that order:
43
+ *
44
+ * 1. `channels.telegram` in `schema/policy.schema.json` is
45
+ * `additionalProperties: false`, so declaring a name there is a schema
46
+ * amendment, which is its own task. A capability does not get to arrive by
47
+ * widening a validated document on the way past.
48
+ * 2. It is launch configuration in the sense of SPEC.md §11.1 invariant 7,
49
+ * which is where the precedent is: `APPROVAL_SENDER_KEY` (APRV-370) and
50
+ * `approval serve`'s two bearer credentials (APRV-421) are conventional
51
+ * names for the same reason. The host that launches one process per tenant
52
+ * sets it, exactly as it sets the bot token and the vault passphrase
53
+ * (`design/hosted-daemon-identity.md` §1.2), and two gates on one machine
54
+ * already have two environments rather than one.
55
+ *
56
+ * The VALUE never appears in a policy, a log, a record or a message. Telegram
57
+ * constrains it to 1-256 characters of `A-Z a-z 0-9 _ -`; the verb refuses
58
+ * anything outside that, and anything short enough to have been chosen by a
59
+ * person rather than generated.
60
+ */
61
+ export declare const TELEGRAM_WEBHOOK_SECRET_ENV = "APPROVAL_TG_WEBHOOK_SECRET";
62
+ /**
63
+ * One webhook URL, reduced so two spellings of one endpoint compare equal
64
+ * (APRV-424, review finding 6).
65
+ *
66
+ * The host is lowercased and one trailing slash is dropped from the path.
67
+ * Nothing more is attempted: `normaliseApiBase` in `core/channel-owner.ts`
68
+ * argues the same restraint, and the direction of the error matters here. Two
69
+ * spellings that compare UNEQUAL turn a restart into a refusal, which an
70
+ * operator clears with one flag; two that compare equal when they are
71
+ * different endpoints would let a second host quietly take a first host's
72
+ * taps, which nobody would see.
73
+ *
74
+ * The path's case is preserved, because a path is case-sensitive and a webhook
75
+ * path is often a random token.
76
+ *
77
+ * `null` for anything that is not a URL, so a caller compares two known URLs
78
+ * or refuses. A failed parse is never "equal to everything".
79
+ */
80
+ export declare function normaliseWebhookUrl(raw: string): string | null;
81
+ /**
82
+ * A webhook PATH as it may be printed (APRV-424, reviews 1 to 3).
83
+ *
84
+ * With two segments or more, the first is kept and the rest is replaced:
85
+ * `/hook/8Xk2-a-long-random-value` prints as `/hook/<path redacted>`, which is
86
+ * enough for an operator to recognise their own endpoint while the bearer half
87
+ * stays theirs. With exactly ONE segment the whole path is replaced, because a
88
+ * single-segment path is the shape a tunnel's own token takes
89
+ * (`https://host/8Xk2-a-long-random-value`) and keeping "the first segment"
90
+ * there would print the token itself (third review, finding 3).
91
+ *
92
+ * The operator loses nothing either way. They typed it into `--url`.
93
+ *
94
+ * The second review found the first version printing the SERVED path verbatim,
95
+ * on the argument that a path this process serves is a path the operator
96
+ * chose. That argument is right about the operator and wrong about everyone
97
+ * else who reads a terminal, a log aggregator or a pasted banner.
98
+ */
99
+ export declare function redactWebhookPath(path: string): string;
100
+ /**
101
+ * A webhook URL as it may be printed (APRV-424, review finding 10).
102
+ *
103
+ * The origin, which carries no userinfo by construction, plus
104
+ * {@link redactWebhookPath}'s reading of the path. Used by every line this
105
+ * runtime writes about a webhook url: the start-up banner, the
106
+ * `webhook_started` object, the registration refusal and the listener's
107
+ * `webhook-registered` message, whether the url is this process's own or
108
+ * another host's.
109
+ *
110
+ * A url carrying userinfo is refused at startup rather than printed; this is
111
+ * the belt on that brace, because the origin never contains it.
112
+ */
113
+ export declare function redactWebhookUrl(raw: string): string;
35
114
  /** The NAME of the variable this policy says the bot token lives in. */
36
115
  export declare function telegramTokenEnvFor(load: PolicyLoadResult): string;
37
116
  /** The NAME of the variable this policy says the approver chat id lives in. */