@ixo/decision-oracle 0.0.0-stage → 0.2.1

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 (1118) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +794 -2
  3. package/dist/act.d.ts +87 -0
  4. package/dist/act.d.ts.map +1 -0
  5. package/dist/act.js +20 -0
  6. package/dist/act.js.map +1 -0
  7. package/dist/app.d.ts +22 -0
  8. package/dist/app.d.ts.map +1 -0
  9. package/dist/app.js +128 -0
  10. package/dist/app.js.map +1 -0
  11. package/dist/c2pa.wasm +0 -0
  12. package/dist/cli/commands/api.d.ts +50 -0
  13. package/dist/cli/commands/api.d.ts.map +1 -0
  14. package/dist/cli/commands/api.js +737 -0
  15. package/dist/cli/commands/api.js.map +1 -0
  16. package/dist/cli/commands/create-collection.d.ts +40 -0
  17. package/dist/cli/commands/create-collection.d.ts.map +1 -0
  18. package/dist/cli/commands/create-collection.js +318 -0
  19. package/dist/cli/commands/create-collection.js.map +1 -0
  20. package/dist/cli/commands/create-deed.d.ts +31 -0
  21. package/dist/cli/commands/create-deed.d.ts.map +1 -0
  22. package/dist/cli/commands/create-deed.js +208 -0
  23. package/dist/cli/commands/create-deed.js.map +1 -0
  24. package/dist/cli/commands/delegation.d.ts +26 -0
  25. package/dist/cli/commands/delegation.d.ts.map +1 -0
  26. package/dist/cli/commands/delegation.js +162 -0
  27. package/dist/cli/commands/delegation.js.map +1 -0
  28. package/dist/cli/commands/derive.d.ts +22 -0
  29. package/dist/cli/commands/derive.d.ts.map +1 -0
  30. package/dist/cli/commands/derive.js +53 -0
  31. package/dist/cli/commands/derive.js.map +1 -0
  32. package/dist/cli/commands/engine.d.ts +25 -0
  33. package/dist/cli/commands/engine.d.ts.map +1 -0
  34. package/dist/cli/commands/engine.js +107 -0
  35. package/dist/cli/commands/engine.js.map +1 -0
  36. package/dist/cli/commands/erase.d.ts +17 -0
  37. package/dist/cli/commands/erase.d.ts.map +1 -0
  38. package/dist/cli/commands/erase.js +117 -0
  39. package/dist/cli/commands/erase.js.map +1 -0
  40. package/dist/cli/commands/facts-run.d.ts +30 -0
  41. package/dist/cli/commands/facts-run.d.ts.map +1 -0
  42. package/dist/cli/commands/facts-run.js +409 -0
  43. package/dist/cli/commands/facts-run.js.map +1 -0
  44. package/dist/cli/commands/facts-scaffold.d.ts +22 -0
  45. package/dist/cli/commands/facts-scaffold.d.ts.map +1 -0
  46. package/dist/cli/commands/facts-scaffold.js +208 -0
  47. package/dist/cli/commands/facts-scaffold.js.map +1 -0
  48. package/dist/cli/commands/init.d.ts +18 -0
  49. package/dist/cli/commands/init.d.ts.map +1 -0
  50. package/dist/cli/commands/init.js +34 -0
  51. package/dist/cli/commands/init.js.map +1 -0
  52. package/dist/cli/commands/login.d.ts +9 -0
  53. package/dist/cli/commands/login.d.ts.map +1 -0
  54. package/dist/cli/commands/login.js +16 -0
  55. package/dist/cli/commands/login.js.map +1 -0
  56. package/dist/cli/commands/logout.d.ts +10 -0
  57. package/dist/cli/commands/logout.d.ts.map +1 -0
  58. package/dist/cli/commands/logout.js +28 -0
  59. package/dist/cli/commands/logout.js.map +1 -0
  60. package/dist/cli/commands/manifest.d.ts +12 -0
  61. package/dist/cli/commands/manifest.d.ts.map +1 -0
  62. package/dist/cli/commands/manifest.js +48 -0
  63. package/dist/cli/commands/manifest.js.map +1 -0
  64. package/dist/cli/commands/oracle-init.d.ts +48 -0
  65. package/dist/cli/commands/oracle-init.d.ts.map +1 -0
  66. package/dist/cli/commands/oracle-init.js +1122 -0
  67. package/dist/cli/commands/oracle-init.js.map +1 -0
  68. package/dist/cli/commands/org.d.ts +28 -0
  69. package/dist/cli/commands/org.d.ts.map +1 -0
  70. package/dist/cli/commands/org.js +309 -0
  71. package/dist/cli/commands/org.js.map +1 -0
  72. package/dist/cli/commands/protocol-review.d.ts +20 -0
  73. package/dist/cli/commands/protocol-review.d.ts.map +1 -0
  74. package/dist/cli/commands/protocol-review.js +162 -0
  75. package/dist/cli/commands/protocol-review.js.map +1 -0
  76. package/dist/cli/commands/publish-protocol.d.ts +43 -0
  77. package/dist/cli/commands/publish-protocol.d.ts.map +1 -0
  78. package/dist/cli/commands/publish-protocol.js +345 -0
  79. package/dist/cli/commands/publish-protocol.js.map +1 -0
  80. package/dist/cli/commands/register.d.ts +16 -0
  81. package/dist/cli/commands/register.d.ts.map +1 -0
  82. package/dist/cli/commands/register.js +54 -0
  83. package/dist/cli/commands/register.js.map +1 -0
  84. package/dist/cli/commands/relink.d.ts +11 -0
  85. package/dist/cli/commands/relink.d.ts.map +1 -0
  86. package/dist/cli/commands/relink.js +36 -0
  87. package/dist/cli/commands/relink.js.map +1 -0
  88. package/dist/cli/commands/rubric-fetch-form.d.ts +16 -0
  89. package/dist/cli/commands/rubric-fetch-form.d.ts.map +1 -0
  90. package/dist/cli/commands/rubric-fetch-form.js +83 -0
  91. package/dist/cli/commands/rubric-fetch-form.js.map +1 -0
  92. package/dist/cli/commands/rubric-validate.d.ts +72 -0
  93. package/dist/cli/commands/rubric-validate.d.ts.map +1 -0
  94. package/dist/cli/commands/rubric-validate.js +163 -0
  95. package/dist/cli/commands/rubric-validate.js.map +1 -0
  96. package/dist/cli/commands/scan.d.ts +13 -0
  97. package/dist/cli/commands/scan.d.ts.map +1 -0
  98. package/dist/cli/commands/scan.js +39 -0
  99. package/dist/cli/commands/scan.js.map +1 -0
  100. package/dist/cli/commands/skills.d.ts +11 -0
  101. package/dist/cli/commands/skills.d.ts.map +1 -0
  102. package/dist/cli/commands/skills.js +19 -0
  103. package/dist/cli/commands/skills.js.map +1 -0
  104. package/dist/cli/commands/submit-claim.d.ts +25 -0
  105. package/dist/cli/commands/submit-claim.d.ts.map +1 -0
  106. package/dist/cli/commands/submit-claim.js +155 -0
  107. package/dist/cli/commands/submit-claim.js.map +1 -0
  108. package/dist/cli/index.d.ts +15 -0
  109. package/dist/cli/index.d.ts.map +1 -0
  110. package/dist/cli/index.js +206 -0
  111. package/dist/cli/index.js.map +1 -0
  112. package/dist/cli/lib/agent-card-schema.d.ts +8 -0
  113. package/dist/cli/lib/agent-card-schema.d.ts.map +1 -0
  114. package/dist/cli/lib/agent-card-schema.js +169 -0
  115. package/dist/cli/lib/agent-card-schema.js.map +1 -0
  116. package/dist/cli/lib/ai-rest.d.ts +12 -0
  117. package/dist/cli/lib/ai-rest.d.ts.map +1 -0
  118. package/dist/cli/lib/ai-rest.js +36 -0
  119. package/dist/cli/lib/ai-rest.js.map +1 -0
  120. package/dist/cli/lib/args.d.ts +33 -0
  121. package/dist/cli/lib/args.d.ts.map +1 -0
  122. package/dist/cli/lib/args.js +24 -0
  123. package/dist/cli/lib/args.js.map +1 -0
  124. package/dist/cli/lib/authhub.d.ts +7 -0
  125. package/dist/cli/lib/authhub.d.ts.map +1 -0
  126. package/dist/cli/lib/authhub.js +210 -0
  127. package/dist/cli/lib/authhub.js.map +1 -0
  128. package/dist/cli/lib/chain.d.ts +264 -0
  129. package/dist/cli/lib/chain.d.ts.map +1 -0
  130. package/dist/cli/lib/chain.js +584 -0
  131. package/dist/cli/lib/chain.js.map +1 -0
  132. package/dist/cli/lib/devvars.d.ts +59 -0
  133. package/dist/cli/lib/devvars.d.ts.map +1 -0
  134. package/dist/cli/lib/devvars.js +206 -0
  135. package/dist/cli/lib/devvars.js.map +1 -0
  136. package/dist/cli/lib/engine.d.ts +54 -0
  137. package/dist/cli/lib/engine.d.ts.map +1 -0
  138. package/dist/cli/lib/engine.js +112 -0
  139. package/dist/cli/lib/engine.js.map +1 -0
  140. package/dist/cli/lib/identity-cards.d.ts +188 -0
  141. package/dist/cli/lib/identity-cards.d.ts.map +1 -0
  142. package/dist/cli/lib/identity-cards.js +261 -0
  143. package/dist/cli/lib/identity-cards.js.map +1 -0
  144. package/dist/cli/lib/matrix-account.d.ts +79 -0
  145. package/dist/cli/lib/matrix-account.d.ts.map +1 -0
  146. package/dist/cli/lib/matrix-account.js +228 -0
  147. package/dist/cli/lib/matrix-account.js.map +1 -0
  148. package/dist/cli/lib/oracle-account.d.ts +108 -0
  149. package/dist/cli/lib/oracle-account.d.ts.map +1 -0
  150. package/dist/cli/lib/oracle-account.js +207 -0
  151. package/dist/cli/lib/oracle-account.js.map +1 -0
  152. package/dist/cli/lib/project.d.ts +22 -0
  153. package/dist/cli/lib/project.d.ts.map +1 -0
  154. package/dist/cli/lib/project.js +62 -0
  155. package/dist/cli/lib/project.js.map +1 -0
  156. package/dist/cli/lib/session.d.ts +109 -0
  157. package/dist/cli/lib/session.d.ts.map +1 -0
  158. package/dist/cli/lib/session.js +354 -0
  159. package/dist/cli/lib/session.js.map +1 -0
  160. package/dist/cli/lib/workorder.d.ts +57 -0
  161. package/dist/cli/lib/workorder.d.ts.map +1 -0
  162. package/dist/cli/lib/workorder.js +101 -0
  163. package/dist/cli/lib/workorder.js.map +1 -0
  164. package/dist/config.d.ts +221 -0
  165. package/dist/config.d.ts.map +1 -0
  166. package/dist/config.js +431 -0
  167. package/dist/config.js.map +1 -0
  168. package/dist/context.d.ts +88 -0
  169. package/dist/context.d.ts.map +1 -0
  170. package/dist/context.js +9 -0
  171. package/dist/context.js.map +1 -0
  172. package/dist/contracts/api.d.ts +3367 -0
  173. package/dist/contracts/api.d.ts.map +1 -0
  174. package/dist/contracts/api.js +1303 -0
  175. package/dist/contracts/api.js.map +1 -0
  176. package/dist/contracts/capabilities.d.ts +126 -0
  177. package/dist/contracts/capabilities.d.ts.map +1 -0
  178. package/dist/contracts/capabilities.js +164 -0
  179. package/dist/contracts/capabilities.js.map +1 -0
  180. package/dist/contracts/claim-source.d.ts +98 -0
  181. package/dist/contracts/claim-source.d.ts.map +1 -0
  182. package/dist/contracts/claim-source.js +17 -0
  183. package/dist/contracts/claim-source.js.map +1 -0
  184. package/dist/contracts/errors.d.ts +150 -0
  185. package/dist/contracts/errors.d.ts.map +1 -0
  186. package/dist/contracts/errors.js +121 -0
  187. package/dist/contracts/errors.js.map +1 -0
  188. package/dist/contracts/index.d.ts +15 -0
  189. package/dist/contracts/index.d.ts.map +1 -0
  190. package/dist/contracts/index.js +11 -0
  191. package/dist/contracts/index.js.map +1 -0
  192. package/dist/contracts/payment-gate.d.ts +129 -0
  193. package/dist/contracts/payment-gate.d.ts.map +1 -0
  194. package/dist/contracts/payment-gate.js +24 -0
  195. package/dist/contracts/payment-gate.js.map +1 -0
  196. package/dist/contracts/start-api-claim.d.ts +90 -0
  197. package/dist/contracts/start-api-claim.d.ts.map +1 -0
  198. package/dist/contracts/start-api-claim.js +22 -0
  199. package/dist/contracts/start-api-claim.js.map +1 -0
  200. package/dist/contracts/webhooks.d.ts +1487 -0
  201. package/dist/contracts/webhooks.d.ts.map +1 -0
  202. package/dist/contracts/webhooks.js +71 -0
  203. package/dist/contracts/webhooks.js.map +1 -0
  204. package/dist/contracts/work-order.d.ts +29 -0
  205. package/dist/contracts/work-order.d.ts.map +1 -0
  206. package/dist/contracts/work-order.js +12 -0
  207. package/dist/contracts/work-order.js.map +1 -0
  208. package/dist/cron/ai-cost.d.ts +29 -0
  209. package/dist/cron/ai-cost.d.ts.map +1 -0
  210. package/dist/cron/ai-cost.js +80 -0
  211. package/dist/cron/ai-cost.js.map +1 -0
  212. package/dist/cron/api-lane.d.ts +39 -0
  213. package/dist/cron/api-lane.d.ts.map +1 -0
  214. package/dist/cron/api-lane.js +203 -0
  215. package/dist/cron/api-lane.js.map +1 -0
  216. package/dist/cron/backlog.d.ts +50 -0
  217. package/dist/cron/backlog.d.ts.map +1 -0
  218. package/dist/cron/backlog.js +115 -0
  219. package/dist/cron/backlog.js.map +1 -0
  220. package/dist/cron/billing.d.ts +11 -0
  221. package/dist/cron/billing.d.ts.map +1 -0
  222. package/dist/cron/billing.js +69 -0
  223. package/dist/cron/billing.js.map +1 -0
  224. package/dist/cron/collection.d.ts +50 -0
  225. package/dist/cron/collection.d.ts.map +1 -0
  226. package/dist/cron/collection.js +118 -0
  227. package/dist/cron/collection.js.map +1 -0
  228. package/dist/cron/funding.d.ts +16 -0
  229. package/dist/cron/funding.d.ts.map +1 -0
  230. package/dist/cron/funding.js +262 -0
  231. package/dist/cron/funding.js.map +1 -0
  232. package/dist/cron/payer-billing.d.ts +38 -0
  233. package/dist/cron/payer-billing.d.ts.map +1 -0
  234. package/dist/cron/payer-billing.js +119 -0
  235. package/dist/cron/payer-billing.js.map +1 -0
  236. package/dist/cron/scan.d.ts +43 -0
  237. package/dist/cron/scan.d.ts.map +1 -0
  238. package/dist/cron/scan.js +250 -0
  239. package/dist/cron/scan.js.map +1 -0
  240. package/dist/db/client.d.ts +14 -0
  241. package/dist/db/client.d.ts.map +1 -0
  242. package/dist/db/client.js +14 -0
  243. package/dist/db/client.js.map +1 -0
  244. package/dist/db/index.d.ts +7 -0
  245. package/dist/db/index.d.ts.map +1 -0
  246. package/dist/db/index.js +7 -0
  247. package/dist/db/index.js.map +1 -0
  248. package/dist/db/schema.d.ts +6738 -0
  249. package/dist/db/schema.d.ts.map +1 -0
  250. package/dist/db/schema.js +1433 -0
  251. package/dist/db/schema.js.map +1 -0
  252. package/dist/define-oracle.d.ts +32 -0
  253. package/dist/define-oracle.d.ts.map +1 -0
  254. package/dist/define-oracle.js +80 -0
  255. package/dist/define-oracle.js.map +1 -0
  256. package/dist/dev-oracle.d.ts +9 -0
  257. package/dist/dev-oracle.d.ts.map +1 -0
  258. package/dist/dev-oracle.js +19 -0
  259. package/dist/dev-oracle.js.map +1 -0
  260. package/dist/dev-worker.d.ts +10 -0
  261. package/dist/dev-worker.d.ts.map +1 -0
  262. package/dist/dev-worker.js +12 -0
  263. package/dist/dev-worker.js.map +1 -0
  264. package/dist/env.d.ts +146 -0
  265. package/dist/env.d.ts.map +1 -0
  266. package/dist/env.js +10 -0
  267. package/dist/env.js.map +1 -0
  268. package/dist/facts/exif.d.ts +43 -0
  269. package/dist/facts/exif.d.ts.map +1 -0
  270. package/dist/facts/exif.js +224 -0
  271. package/dist/facts/exif.js.map +1 -0
  272. package/dist/facts/fact.d.ts +62 -0
  273. package/dist/facts/fact.d.ts.map +1 -0
  274. package/dist/facts/fact.js +105 -0
  275. package/dist/facts/fact.js.map +1 -0
  276. package/dist/facts/geo.d.ts +55 -0
  277. package/dist/facts/geo.d.ts.map +1 -0
  278. package/dist/facts/geo.js +267 -0
  279. package/dist/facts/geo.js.map +1 -0
  280. package/dist/facts/index.d.ts +31 -0
  281. package/dist/facts/index.d.ts.map +1 -0
  282. package/dist/facts/index.js +27 -0
  283. package/dist/facts/index.js.map +1 -0
  284. package/dist/facts/linked-doc.d.ts +60 -0
  285. package/dist/facts/linked-doc.d.ts.map +1 -0
  286. package/dist/facts/linked-doc.js +101 -0
  287. package/dist/facts/linked-doc.js.map +1 -0
  288. package/dist/facts/types.d.ts +278 -0
  289. package/dist/facts/types.d.ts.map +1 -0
  290. package/dist/facts/types.js +19 -0
  291. package/dist/facts/types.js.map +1 -0
  292. package/dist/index.d.ts +25 -0
  293. package/dist/index.d.ts.map +1 -0
  294. package/dist/index.js +19 -0
  295. package/dist/index.js.map +1 -0
  296. package/dist/lib/api-lane/accept.d.ts +29 -0
  297. package/dist/lib/api-lane/accept.d.ts.map +1 -0
  298. package/dist/lib/api-lane/accept.js +218 -0
  299. package/dist/lib/api-lane/accept.js.map +1 -0
  300. package/dist/lib/api-lane/claim-list.d.ts +44 -0
  301. package/dist/lib/api-lane/claim-list.d.ts.map +1 -0
  302. package/dist/lib/api-lane/claim-list.js +92 -0
  303. package/dist/lib/api-lane/claim-list.js.map +1 -0
  304. package/dist/lib/api-lane/company.d.ts +56 -0
  305. package/dist/lib/api-lane/company.d.ts.map +1 -0
  306. package/dist/lib/api-lane/company.js +103 -0
  307. package/dist/lib/api-lane/company.js.map +1 -0
  308. package/dist/lib/api-lane/events.d.ts +21 -0
  309. package/dist/lib/api-lane/events.d.ts.map +1 -0
  310. package/dist/lib/api-lane/events.js +111 -0
  311. package/dist/lib/api-lane/events.js.map +1 -0
  312. package/dist/lib/api-lane/ids.d.ts +39 -0
  313. package/dist/lib/api-lane/ids.d.ts.map +1 -0
  314. package/dist/lib/api-lane/ids.js +78 -0
  315. package/dist/lib/api-lane/ids.js.map +1 -0
  316. package/dist/lib/api-lane/index.d.ts +16 -0
  317. package/dist/lib/api-lane/index.d.ts.map +1 -0
  318. package/dist/lib/api-lane/index.js +16 -0
  319. package/dist/lib/api-lane/index.js.map +1 -0
  320. package/dist/lib/api-lane/linked.d.ts +264 -0
  321. package/dist/lib/api-lane/linked.d.ts.map +1 -0
  322. package/dist/lib/api-lane/linked.js +272 -0
  323. package/dist/lib/api-lane/linked.js.map +1 -0
  324. package/dist/lib/api-lane/media-type.d.ts +15 -0
  325. package/dist/lib/api-lane/media-type.d.ts.map +1 -0
  326. package/dist/lib/api-lane/media-type.js +73 -0
  327. package/dist/lib/api-lane/media-type.js.map +1 -0
  328. package/dist/lib/api-lane/member-emails.d.ts +83 -0
  329. package/dist/lib/api-lane/member-emails.d.ts.map +1 -0
  330. package/dist/lib/api-lane/member-emails.js +213 -0
  331. package/dist/lib/api-lane/member-emails.js.map +1 -0
  332. package/dist/lib/api-lane/members.d.ts +42 -0
  333. package/dist/lib/api-lane/members.d.ts.map +1 -0
  334. package/dist/lib/api-lane/members.js +75 -0
  335. package/dist/lib/api-lane/members.js.map +1 -0
  336. package/dist/lib/api-lane/notify.d.ts +47 -0
  337. package/dist/lib/api-lane/notify.d.ts.map +1 -0
  338. package/dist/lib/api-lane/notify.js +240 -0
  339. package/dist/lib/api-lane/notify.js.map +1 -0
  340. package/dist/lib/api-lane/pause.d.ts +41 -0
  341. package/dist/lib/api-lane/pause.d.ts.map +1 -0
  342. package/dist/lib/api-lane/pause.js +155 -0
  343. package/dist/lib/api-lane/pause.js.map +1 -0
  344. package/dist/lib/api-lane/record.d.ts +76 -0
  345. package/dist/lib/api-lane/record.d.ts.map +1 -0
  346. package/dist/lib/api-lane/record.js +337 -0
  347. package/dist/lib/api-lane/record.js.map +1 -0
  348. package/dist/lib/api-lane/retention.d.ts +43 -0
  349. package/dist/lib/api-lane/retention.d.ts.map +1 -0
  350. package/dist/lib/api-lane/retention.js +176 -0
  351. package/dist/lib/api-lane/retention.js.map +1 -0
  352. package/dist/lib/api-lane/review.d.ts +76 -0
  353. package/dist/lib/api-lane/review.d.ts.map +1 -0
  354. package/dist/lib/api-lane/review.js +355 -0
  355. package/dist/lib/api-lane/review.js.map +1 -0
  356. package/dist/lib/api-lane/reviewers.d.ts +109 -0
  357. package/dist/lib/api-lane/reviewers.d.ts.map +1 -0
  358. package/dist/lib/api-lane/reviewers.js +755 -0
  359. package/dist/lib/api-lane/reviewers.js.map +1 -0
  360. package/dist/lib/api-lane/source-delete.d.ts +16 -0
  361. package/dist/lib/api-lane/source-delete.d.ts.map +1 -0
  362. package/dist/lib/api-lane/source-delete.js +50 -0
  363. package/dist/lib/api-lane/source-delete.js.map +1 -0
  364. package/dist/lib/api-lane/source.d.ts +19 -0
  365. package/dist/lib/api-lane/source.d.ts.map +1 -0
  366. package/dist/lib/api-lane/source.js +226 -0
  367. package/dist/lib/api-lane/source.js.map +1 -0
  368. package/dist/lib/api-lane/submitter.d.ts +22 -0
  369. package/dist/lib/api-lane/submitter.d.ts.map +1 -0
  370. package/dist/lib/api-lane/submitter.js +34 -0
  371. package/dist/lib/api-lane/submitter.js.map +1 -0
  372. package/dist/lib/api-lane/timeline.d.ts +20 -0
  373. package/dist/lib/api-lane/timeline.d.ts.map +1 -0
  374. package/dist/lib/api-lane/timeline.js +23 -0
  375. package/dist/lib/api-lane/timeline.js.map +1 -0
  376. package/dist/lib/api-lane/webhook-crypto.d.ts +44 -0
  377. package/dist/lib/api-lane/webhook-crypto.d.ts.map +1 -0
  378. package/dist/lib/api-lane/webhook-crypto.js +103 -0
  379. package/dist/lib/api-lane/webhook-crypto.js.map +1 -0
  380. package/dist/lib/api-lane/webhooks.d.ts +117 -0
  381. package/dist/lib/api-lane/webhooks.d.ts.map +1 -0
  382. package/dist/lib/api-lane/webhooks.js +503 -0
  383. package/dist/lib/api-lane/webhooks.js.map +1 -0
  384. package/dist/lib/archive.d.ts +64 -0
  385. package/dist/lib/archive.d.ts.map +1 -0
  386. package/dist/lib/archive.js +305 -0
  387. package/dist/lib/archive.js.map +1 -0
  388. package/dist/lib/bech32.d.ts +8 -0
  389. package/dist/lib/bech32.d.ts.map +1 -0
  390. package/dist/lib/bech32.js +39 -0
  391. package/dist/lib/bech32.js.map +1 -0
  392. package/dist/lib/claim-erase.d.ts +22 -0
  393. package/dist/lib/claim-erase.d.ts.map +1 -0
  394. package/dist/lib/claim-erase.js +44 -0
  395. package/dist/lib/claim-erase.js.map +1 -0
  396. package/dist/lib/cursor.d.ts +11 -0
  397. package/dist/lib/cursor.d.ts.map +1 -0
  398. package/dist/lib/cursor.js +20 -0
  399. package/dist/lib/cursor.js.map +1 -0
  400. package/dist/lib/email/send.d.ts +43 -0
  401. package/dist/lib/email/send.d.ts.map +1 -0
  402. package/dist/lib/email/send.js +71 -0
  403. package/dist/lib/email/send.js.map +1 -0
  404. package/dist/lib/email/template.d.ts +217 -0
  405. package/dist/lib/email/template.d.ts.map +1 -0
  406. package/dist/lib/email/template.js +713 -0
  407. package/dist/lib/email/template.js.map +1 -0
  408. package/dist/lib/engine/adr36.d.ts +56 -0
  409. package/dist/lib/engine/adr36.d.ts.map +1 -0
  410. package/dist/lib/engine/adr36.js +76 -0
  411. package/dist/lib/engine/adr36.js.map +1 -0
  412. package/dist/lib/engine/client.d.ts +162 -0
  413. package/dist/lib/engine/client.d.ts.map +1 -0
  414. package/dist/lib/engine/client.js +473 -0
  415. package/dist/lib/engine/client.js.map +1 -0
  416. package/dist/lib/engine/types.d.ts +1356 -0
  417. package/dist/lib/engine/types.d.ts.map +1 -0
  418. package/dist/lib/engine/types.js +562 -0
  419. package/dist/lib/engine/types.js.map +1 -0
  420. package/dist/lib/errors.d.ts +73 -0
  421. package/dist/lib/errors.d.ts.map +1 -0
  422. package/dist/lib/errors.js +96 -0
  423. package/dist/lib/errors.js.map +1 -0
  424. package/dist/lib/facts/builder.d.ts +88 -0
  425. package/dist/lib/facts/builder.d.ts.map +1 -0
  426. package/dist/lib/facts/builder.js +239 -0
  427. package/dist/lib/facts/builder.js.map +1 -0
  428. package/dist/lib/facts/ctx.d.ts +34 -0
  429. package/dist/lib/facts/ctx.d.ts.map +1 -0
  430. package/dist/lib/facts/ctx.js +51 -0
  431. package/dist/lib/facts/ctx.js.map +1 -0
  432. package/dist/lib/facts/expected.d.ts +23 -0
  433. package/dist/lib/facts/expected.d.ts.map +1 -0
  434. package/dist/lib/facts/expected.js +16 -0
  435. package/dist/lib/facts/expected.js.map +1 -0
  436. package/dist/lib/facts/fact-cache.d.ts +469 -0
  437. package/dist/lib/facts/fact-cache.d.ts.map +1 -0
  438. package/dist/lib/facts/fact-cache.js +52 -0
  439. package/dist/lib/facts/fact-cache.js.map +1 -0
  440. package/dist/lib/facts/factset.d.ts +608 -0
  441. package/dist/lib/facts/factset.d.ts.map +1 -0
  442. package/dist/lib/facts/factset.js +226 -0
  443. package/dist/lib/facts/factset.js.map +1 -0
  444. package/dist/lib/facts/producer.d.ts +190 -0
  445. package/dist/lib/facts/producer.d.ts.map +1 -0
  446. package/dist/lib/facts/producer.js +15 -0
  447. package/dist/lib/facts/producer.js.map +1 -0
  448. package/dist/lib/facts/runner.d.ts +111 -0
  449. package/dist/lib/facts/runner.d.ts.map +1 -0
  450. package/dist/lib/facts/runner.js +438 -0
  451. package/dist/lib/facts/runner.js.map +1 -0
  452. package/dist/lib/facts/stock/ai-check.d.ts +100 -0
  453. package/dist/lib/facts/stock/ai-check.d.ts.map +1 -0
  454. package/dist/lib/facts/stock/ai-check.js +526 -0
  455. package/dist/lib/facts/stock/ai-check.js.map +1 -0
  456. package/dist/lib/facts/stock/ai-inputs.d.ts +104 -0
  457. package/dist/lib/facts/stock/ai-inputs.d.ts.map +1 -0
  458. package/dist/lib/facts/stock/ai-inputs.js +332 -0
  459. package/dist/lib/facts/stock/ai-inputs.js.map +1 -0
  460. package/dist/lib/facts/stock/ai-provider.d.ts +105 -0
  461. package/dist/lib/facts/stock/ai-provider.d.ts.map +1 -0
  462. package/dist/lib/facts/stock/ai-provider.js +250 -0
  463. package/dist/lib/facts/stock/ai-provider.js.map +1 -0
  464. package/dist/lib/facts/stock/ai-unique.d.ts +85 -0
  465. package/dist/lib/facts/stock/ai-unique.d.ts.map +1 -0
  466. package/dist/lib/facts/stock/ai-unique.js +208 -0
  467. package/dist/lib/facts/stock/ai-unique.js.map +1 -0
  468. package/dist/lib/facts/stock/archive.d.ts +63 -0
  469. package/dist/lib/facts/stock/archive.d.ts.map +1 -0
  470. package/dist/lib/facts/stock/archive.js +349 -0
  471. package/dist/lib/facts/stock/archive.js.map +1 -0
  472. package/dist/lib/facts/stock/c2pa-trust-list.d.ts +16 -0
  473. package/dist/lib/facts/stock/c2pa-trust-list.d.ts.map +1 -0
  474. package/dist/lib/facts/stock/c2pa-trust-list.js +637 -0
  475. package/dist/lib/facts/stock/c2pa-trust-list.js.map +1 -0
  476. package/dist/lib/facts/stock/c2pa.d.ts +56 -0
  477. package/dist/lib/facts/stock/c2pa.d.ts.map +1 -0
  478. package/dist/lib/facts/stock/c2pa.js +234 -0
  479. package/dist/lib/facts/stock/c2pa.js.map +1 -0
  480. package/dist/lib/facts/stock/call.d.ts +91 -0
  481. package/dist/lib/facts/stock/call.d.ts.map +1 -0
  482. package/dist/lib/facts/stock/call.js +281 -0
  483. package/dist/lib/facts/stock/call.js.map +1 -0
  484. package/dist/lib/facts/stock/capability.d.ts +39 -0
  485. package/dist/lib/facts/stock/capability.d.ts.map +1 -0
  486. package/dist/lib/facts/stock/capability.js +59 -0
  487. package/dist/lib/facts/stock/capability.js.map +1 -0
  488. package/dist/lib/facts/stock/ext-source.d.ts +51 -0
  489. package/dist/lib/facts/stock/ext-source.d.ts.map +1 -0
  490. package/dist/lib/facts/stock/ext-source.js +201 -0
  491. package/dist/lib/facts/stock/ext-source.js.map +1 -0
  492. package/dist/lib/facts/stock/frequency-fact.d.ts +59 -0
  493. package/dist/lib/facts/stock/frequency-fact.d.ts.map +1 -0
  494. package/dist/lib/facts/stock/frequency-fact.js +86 -0
  495. package/dist/lib/facts/stock/frequency-fact.js.map +1 -0
  496. package/dist/lib/facts/stock/frequency.d.ts +32 -0
  497. package/dist/lib/facts/stock/frequency.d.ts.map +1 -0
  498. package/dist/lib/facts/stock/frequency.js +48 -0
  499. package/dist/lib/facts/stock/frequency.js.map +1 -0
  500. package/dist/lib/facts/stock/index.d.ts +27 -0
  501. package/dist/lib/facts/stock/index.d.ts.map +1 -0
  502. package/dist/lib/facts/stock/index.js +28 -0
  503. package/dist/lib/facts/stock/index.js.map +1 -0
  504. package/dist/lib/facts/stock/normalize.d.ts +45 -0
  505. package/dist/lib/facts/stock/normalize.d.ts.map +1 -0
  506. package/dist/lib/facts/stock/normalize.js +135 -0
  507. package/dist/lib/facts/stock/normalize.js.map +1 -0
  508. package/dist/lib/facts/stock/phash.d.ts +55 -0
  509. package/dist/lib/facts/stock/phash.d.ts.map +1 -0
  510. package/dist/lib/facts/stock/phash.js +256 -0
  511. package/dist/lib/facts/stock/phash.js.map +1 -0
  512. package/dist/lib/facts/stock/rule-defaults.d.ts +72 -0
  513. package/dist/lib/facts/stock/rule-defaults.d.ts.map +1 -0
  514. package/dist/lib/facts/stock/rule-defaults.js +55 -0
  515. package/dist/lib/facts/stock/rule-defaults.js.map +1 -0
  516. package/dist/lib/facts/stock/send.d.ts +52 -0
  517. package/dist/lib/facts/stock/send.d.ts.map +1 -0
  518. package/dist/lib/facts/stock/send.js +148 -0
  519. package/dist/lib/facts/stock/send.js.map +1 -0
  520. package/dist/lib/facts/stock/unique-score.d.ts +138 -0
  521. package/dist/lib/facts/stock/unique-score.d.ts.map +1 -0
  522. package/dist/lib/facts/stock/unique-score.js +257 -0
  523. package/dist/lib/facts/stock/unique-score.js.map +1 -0
  524. package/dist/lib/facts/stock/unique-store.d.ts +420 -0
  525. package/dist/lib/facts/stock/unique-store.d.ts.map +1 -0
  526. package/dist/lib/facts/stock/unique-store.js +328 -0
  527. package/dist/lib/facts/stock/unique-store.js.map +1 -0
  528. package/dist/lib/facts/stock/unique.d.ts +35 -0
  529. package/dist/lib/facts/stock/unique.d.ts.map +1 -0
  530. package/dist/lib/facts/stock/unique.js +327 -0
  531. package/dist/lib/facts/stock/unique.js.map +1 -0
  532. package/dist/lib/facts/tools.d.ts +57 -0
  533. package/dist/lib/facts/tools.d.ts.map +1 -0
  534. package/dist/lib/facts/tools.js +325 -0
  535. package/dist/lib/facts/tools.js.map +1 -0
  536. package/dist/lib/facts/validate.d.ts +33 -0
  537. package/dist/lib/facts/validate.d.ts.map +1 -0
  538. package/dist/lib/facts/validate.js +137 -0
  539. package/dist/lib/facts/validate.js.map +1 -0
  540. package/dist/lib/hash.d.ts +44 -0
  541. package/dist/lib/hash.d.ts.map +1 -0
  542. package/dist/lib/hash.js +80 -0
  543. package/dist/lib/hash.js.map +1 -0
  544. package/dist/lib/http/client.d.ts +113 -0
  545. package/dist/lib/http/client.d.ts.map +1 -0
  546. package/dist/lib/http/client.js +330 -0
  547. package/dist/lib/http/client.js.map +1 -0
  548. package/dist/lib/ids.d.ts +17 -0
  549. package/dist/lib/ids.d.ts.map +1 -0
  550. package/dist/lib/ids.js +26 -0
  551. package/dist/lib/ids.js.map +1 -0
  552. package/dist/lib/ixo/attachments.d.ts +116 -0
  553. package/dist/lib/ixo/attachments.d.ts.map +1 -0
  554. package/dist/lib/ixo/attachments.js +290 -0
  555. package/dist/lib/ixo/attachments.js.map +1 -0
  556. package/dist/lib/ixo/authz.d.ts +40 -0
  557. package/dist/lib/ixo/authz.d.ts.map +1 -0
  558. package/dist/lib/ixo/authz.js +113 -0
  559. package/dist/lib/ixo/authz.js.map +1 -0
  560. package/dist/lib/ixo/blocksync/index.d.ts +90 -0
  561. package/dist/lib/ixo/blocksync/index.d.ts.map +1 -0
  562. package/dist/lib/ixo/blocksync/index.js +251 -0
  563. package/dist/lib/ixo/blocksync/index.js.map +1 -0
  564. package/dist/lib/ixo/blocksync/queries.d.ts +15 -0
  565. package/dist/lib/ixo/blocksync/queries.d.ts.map +1 -0
  566. package/dist/lib/ixo/blocksync/queries.js +144 -0
  567. package/dist/lib/ixo/blocksync/queries.js.map +1 -0
  568. package/dist/lib/ixo/blocksync/types.d.ts +184 -0
  569. package/dist/lib/ixo/blocksync/types.d.ts.map +1 -0
  570. package/dist/lib/ixo/blocksync/types.js +108 -0
  571. package/dist/lib/ixo/blocksync/types.js.map +1 -0
  572. package/dist/lib/ixo/cellnode.d.ts +35 -0
  573. package/dist/lib/ixo/cellnode.d.ts.map +1 -0
  574. package/dist/lib/ixo/cellnode.js +43 -0
  575. package/dist/lib/ixo/cellnode.js.map +1 -0
  576. package/dist/lib/ixo/chain-write.d.ts +130 -0
  577. package/dist/lib/ixo/chain-write.d.ts.map +1 -0
  578. package/dist/lib/ixo/chain-write.js +460 -0
  579. package/dist/lib/ixo/chain-write.js.map +1 -0
  580. package/dist/lib/ixo/chain.d.ts +1046 -0
  581. package/dist/lib/ixo/chain.d.ts.map +1 -0
  582. package/dist/lib/ixo/chain.js +279 -0
  583. package/dist/lib/ixo/chain.js.map +1 -0
  584. package/dist/lib/ixo/claim-bot.d.ts +49 -0
  585. package/dist/lib/ixo/claim-bot.d.ts.map +1 -0
  586. package/dist/lib/ixo/claim-bot.js +141 -0
  587. package/dist/lib/ixo/claim-bot.js.map +1 -0
  588. package/dist/lib/ixo/delegation-verify.d.ts +44 -0
  589. package/dist/lib/ixo/delegation-verify.d.ts.map +1 -0
  590. package/dist/lib/ixo/delegation-verify.js +101 -0
  591. package/dist/lib/ixo/delegation-verify.js.map +1 -0
  592. package/dist/lib/ixo/did.d.ts +13 -0
  593. package/dist/lib/ixo/did.d.ts.map +1 -0
  594. package/dist/lib/ixo/did.js +85 -0
  595. package/dist/lib/ixo/did.js.map +1 -0
  596. package/dist/lib/ixo/grant-chain.d.ts +55 -0
  597. package/dist/lib/ixo/grant-chain.d.ts.map +1 -0
  598. package/dist/lib/ixo/grant-chain.js +185 -0
  599. package/dist/lib/ixo/grant-chain.js.map +1 -0
  600. package/dist/lib/ixo/identity.d.ts +32 -0
  601. package/dist/lib/ixo/identity.d.ts.map +1 -0
  602. package/dist/lib/ixo/identity.js +104 -0
  603. package/dist/lib/ixo/identity.js.map +1 -0
  604. package/dist/lib/ixo/index.d.ts +118 -0
  605. package/dist/lib/ixo/index.d.ts.map +1 -0
  606. package/dist/lib/ixo/index.js +395 -0
  607. package/dist/lib/ixo/index.js.map +1 -0
  608. package/dist/lib/ixo/payment.d.ts +104 -0
  609. package/dist/lib/ixo/payment.d.ts.map +1 -0
  610. package/dist/lib/ixo/payment.js +136 -0
  611. package/dist/lib/ixo/payment.js.map +1 -0
  612. package/dist/lib/ixo/ucan-store.d.ts +30 -0
  613. package/dist/lib/ixo/ucan-store.d.ts.map +1 -0
  614. package/dist/lib/ixo/ucan-store.js +134 -0
  615. package/dist/lib/ixo/ucan-store.js.map +1 -0
  616. package/dist/lib/ixo/ucan.d.ts +96 -0
  617. package/dist/lib/ixo/ucan.d.ts.map +1 -0
  618. package/dist/lib/ixo/ucan.js +216 -0
  619. package/dist/lib/ixo/ucan.js.map +1 -0
  620. package/dist/lib/ixo/verified-read.d.ts +43 -0
  621. package/dist/lib/ixo/verified-read.d.ts.map +1 -0
  622. package/dist/lib/ixo/verified-read.js +73 -0
  623. package/dist/lib/ixo/verified-read.js.map +1 -0
  624. package/dist/lib/ixo/vfs.d.ts +27 -0
  625. package/dist/lib/ixo/vfs.d.ts.map +1 -0
  626. package/dist/lib/ixo/vfs.js +42 -0
  627. package/dist/lib/ixo/vfs.js.map +1 -0
  628. package/dist/lib/ixo/web-did.d.ts +7 -0
  629. package/dist/lib/ixo/web-did.d.ts.map +1 -0
  630. package/dist/lib/ixo/web-did.js +9 -0
  631. package/dist/lib/ixo/web-did.js.map +1 -0
  632. package/dist/lib/logger.d.ts +34 -0
  633. package/dist/lib/logger.d.ts.map +1 -0
  634. package/dist/lib/logger.js +126 -0
  635. package/dist/lib/logger.js.map +1 -0
  636. package/dist/lib/matrix/api.d.ts +57 -0
  637. package/dist/lib/matrix/api.d.ts.map +1 -0
  638. package/dist/lib/matrix/api.js +58 -0
  639. package/dist/lib/matrix/api.js.map +1 -0
  640. package/dist/lib/matrix/client.d.ts +41 -0
  641. package/dist/lib/matrix/client.d.ts.map +1 -0
  642. package/dist/lib/matrix/client.js +104 -0
  643. package/dist/lib/matrix/client.js.map +1 -0
  644. package/dist/lib/matrix/deliver.d.ts +224 -0
  645. package/dist/lib/matrix/deliver.d.ts.map +1 -0
  646. package/dist/lib/matrix/deliver.js +788 -0
  647. package/dist/lib/matrix/deliver.js.map +1 -0
  648. package/dist/lib/matrix/events.d.ts +114 -0
  649. package/dist/lib/matrix/events.d.ts.map +1 -0
  650. package/dist/lib/matrix/events.js +143 -0
  651. package/dist/lib/matrix/events.js.map +1 -0
  652. package/dist/lib/matrix/mxid.d.ts +24 -0
  653. package/dist/lib/matrix/mxid.d.ts.map +1 -0
  654. package/dist/lib/matrix/mxid.js +47 -0
  655. package/dist/lib/matrix/mxid.js.map +1 -0
  656. package/dist/lib/metrics.d.ts +105 -0
  657. package/dist/lib/metrics.d.ts.map +1 -0
  658. package/dist/lib/metrics.js +204 -0
  659. package/dist/lib/metrics.js.map +1 -0
  660. package/dist/lib/oauth/approvals.d.ts +160 -0
  661. package/dist/lib/oauth/approvals.d.ts.map +1 -0
  662. package/dist/lib/oauth/approvals.js +273 -0
  663. package/dist/lib/oauth/approvals.js.map +1 -0
  664. package/dist/lib/oauth/standing.d.ts +152 -0
  665. package/dist/lib/oauth/standing.d.ts.map +1 -0
  666. package/dist/lib/oauth/standing.js +299 -0
  667. package/dist/lib/oauth/standing.js.map +1 -0
  668. package/dist/lib/oauth/token.d.ts +60 -0
  669. package/dist/lib/oauth/token.d.ts.map +1 -0
  670. package/dist/lib/oauth/token.js +129 -0
  671. package/dist/lib/oauth/token.js.map +1 -0
  672. package/dist/lib/payments/extend.d.ts +42 -0
  673. package/dist/lib/payments/extend.d.ts.map +1 -0
  674. package/dist/lib/payments/extend.js +98 -0
  675. package/dist/lib/payments/extend.js.map +1 -0
  676. package/dist/lib/payments/facilitator.d.ts +220 -0
  677. package/dist/lib/payments/facilitator.d.ts.map +1 -0
  678. package/dist/lib/payments/facilitator.js +451 -0
  679. package/dist/lib/payments/facilitator.js.map +1 -0
  680. package/dist/lib/payments/gate.d.ts +207 -0
  681. package/dist/lib/payments/gate.d.ts.map +1 -0
  682. package/dist/lib/payments/gate.js +481 -0
  683. package/dist/lib/payments/gate.js.map +1 -0
  684. package/dist/lib/payments/header-seal.d.ts +33 -0
  685. package/dist/lib/payments/header-seal.d.ts.map +1 -0
  686. package/dist/lib/payments/header-seal.js +76 -0
  687. package/dist/lib/payments/header-seal.js.map +1 -0
  688. package/dist/lib/payments/index.d.ts +12 -0
  689. package/dist/lib/payments/index.d.ts.map +1 -0
  690. package/dist/lib/payments/index.js +11 -0
  691. package/dist/lib/payments/index.js.map +1 -0
  692. package/dist/lib/payments/price.d.ts +25 -0
  693. package/dist/lib/payments/price.d.ts.map +1 -0
  694. package/dist/lib/payments/price.js +43 -0
  695. package/dist/lib/payments/price.js.map +1 -0
  696. package/dist/lib/payments/reconcile.d.ts +77 -0
  697. package/dist/lib/payments/reconcile.d.ts.map +1 -0
  698. package/dist/lib/payments/reconcile.js +317 -0
  699. package/dist/lib/payments/reconcile.js.map +1 -0
  700. package/dist/lib/payments/refund.d.ts +34 -0
  701. package/dist/lib/payments/refund.d.ts.map +1 -0
  702. package/dist/lib/payments/refund.js +123 -0
  703. package/dist/lib/payments/refund.js.map +1 -0
  704. package/dist/lib/payments/review-billing.d.ts +222 -0
  705. package/dist/lib/payments/review-billing.d.ts.map +1 -0
  706. package/dist/lib/payments/review-billing.js +609 -0
  707. package/dist/lib/payments/review-billing.js.map +1 -0
  708. package/dist/lib/payments/settle.d.ts +44 -0
  709. package/dist/lib/payments/settle.d.ts.map +1 -0
  710. package/dist/lib/payments/settle.js +306 -0
  711. package/dist/lib/payments/settle.js.map +1 -0
  712. package/dist/lib/payments/terms.d.ts +27 -0
  713. package/dist/lib/payments/terms.d.ts.map +1 -0
  714. package/dist/lib/payments/terms.js +21 -0
  715. package/dist/lib/payments/terms.js.map +1 -0
  716. package/dist/lib/payouts.d.ts +20 -0
  717. package/dist/lib/payouts.d.ts.map +1 -0
  718. package/dist/lib/payouts.js +30 -0
  719. package/dist/lib/payouts.js.map +1 -0
  720. package/dist/lib/readiness.d.ts +42 -0
  721. package/dist/lib/readiness.d.ts.map +1 -0
  722. package/dist/lib/readiness.js +130 -0
  723. package/dist/lib/readiness.js.map +1 -0
  724. package/dist/lib/redact.d.ts +23 -0
  725. package/dist/lib/redact.d.ts.map +1 -0
  726. package/dist/lib/redact.js +67 -0
  727. package/dist/lib/redact.js.map +1 -0
  728. package/dist/lib/register.d.ts +85 -0
  729. package/dist/lib/register.d.ts.map +1 -0
  730. package/dist/lib/register.js +390 -0
  731. package/dist/lib/register.js.map +1 -0
  732. package/dist/lib/review/attestation.d.ts +92 -0
  733. package/dist/lib/review/attestation.d.ts.map +1 -0
  734. package/dist/lib/review/attestation.js +264 -0
  735. package/dist/lib/review/attestation.js.map +1 -0
  736. package/dist/lib/review/reviewer-grant.d.ts +146 -0
  737. package/dist/lib/review/reviewer-grant.d.ts.map +1 -0
  738. package/dist/lib/review/reviewer-grant.js +359 -0
  739. package/dist/lib/review/reviewer-grant.js.map +1 -0
  740. package/dist/lib/review/tasks.d.ts +18 -0
  741. package/dist/lib/review/tasks.d.ts.map +1 -0
  742. package/dist/lib/review/tasks.js +36 -0
  743. package/dist/lib/review/tasks.js.map +1 -0
  744. package/dist/lib/sentry.d.ts +89 -0
  745. package/dist/lib/sentry.d.ts.map +1 -0
  746. package/dist/lib/sentry.js +284 -0
  747. package/dist/lib/sentry.js.map +1 -0
  748. package/dist/lib/spans.d.ts +14 -0
  749. package/dist/lib/spans.d.ts.map +1 -0
  750. package/dist/lib/spans.js +28 -0
  751. package/dist/lib/spans.js.map +1 -0
  752. package/dist/lib/tracing.d.ts +31 -0
  753. package/dist/lib/tracing.d.ts.map +1 -0
  754. package/dist/lib/tracing.js +66 -0
  755. package/dist/lib/tracing.js.map +1 -0
  756. package/dist/lib/ttl-cache.d.ts +26 -0
  757. package/dist/lib/ttl-cache.d.ts.map +1 -0
  758. package/dist/lib/ttl-cache.js +61 -0
  759. package/dist/lib/ttl-cache.js.map +1 -0
  760. package/dist/lib/validator.d.ts +19 -0
  761. package/dist/lib/validator.d.ts.map +1 -0
  762. package/dist/lib/validator.js +32 -0
  763. package/dist/lib/validator.js.map +1 -0
  764. package/dist/lib/work-order/form.d.ts +40 -0
  765. package/dist/lib/work-order/form.d.ts.map +1 -0
  766. package/dist/lib/work-order/form.js +316 -0
  767. package/dist/lib/work-order/form.js.map +1 -0
  768. package/dist/lib/work-order/index.d.ts +20 -0
  769. package/dist/lib/work-order/index.d.ts.map +1 -0
  770. package/dist/lib/work-order/index.js +66 -0
  771. package/dist/lib/work-order/index.js.map +1 -0
  772. package/dist/middleware/api/audit.d.ts +9 -0
  773. package/dist/middleware/api/audit.d.ts.map +1 -0
  774. package/dist/middleware/api/audit.js +38 -0
  775. package/dist/middleware/api/audit.js.map +1 -0
  776. package/dist/middleware/api/auth.d.ts +29 -0
  777. package/dist/middleware/api/auth.d.ts.map +1 -0
  778. package/dist/middleware/api/auth.js +105 -0
  779. package/dist/middleware/api/auth.js.map +1 -0
  780. package/dist/middleware/api/console.d.ts +92 -0
  781. package/dist/middleware/api/console.d.ts.map +1 -0
  782. package/dist/middleware/api/console.js +446 -0
  783. package/dist/middleware/api/console.js.map +1 -0
  784. package/dist/middleware/api/errors.d.ts +48 -0
  785. package/dist/middleware/api/errors.d.ts.map +1 -0
  786. package/dist/middleware/api/errors.js +133 -0
  787. package/dist/middleware/api/errors.js.map +1 -0
  788. package/dist/middleware/api/idempotency.d.ts +23 -0
  789. package/dist/middleware/api/idempotency.d.ts.map +1 -0
  790. package/dist/middleware/api/idempotency.js +158 -0
  791. package/dist/middleware/api/idempotency.js.map +1 -0
  792. package/dist/middleware/api/keys.d.ts +14 -0
  793. package/dist/middleware/api/keys.d.ts.map +1 -0
  794. package/dist/middleware/api/keys.js +66 -0
  795. package/dist/middleware/api/keys.js.map +1 -0
  796. package/dist/middleware/api/membership.d.ts +32 -0
  797. package/dist/middleware/api/membership.d.ts.map +1 -0
  798. package/dist/middleware/api/membership.js +48 -0
  799. package/dist/middleware/api/membership.js.map +1 -0
  800. package/dist/middleware/api/oauth.d.ts +28 -0
  801. package/dist/middleware/api/oauth.d.ts.map +1 -0
  802. package/dist/middleware/api/oauth.js +109 -0
  803. package/dist/middleware/api/oauth.js.map +1 -0
  804. package/dist/middleware/api/rate-limit.d.ts +23 -0
  805. package/dist/middleware/api/rate-limit.d.ts.map +1 -0
  806. package/dist/middleware/api/rate-limit.js +70 -0
  807. package/dist/middleware/api/rate-limit.js.map +1 -0
  808. package/dist/middleware/api/types.d.ts +92 -0
  809. package/dist/middleware/api/types.d.ts.map +1 -0
  810. package/dist/middleware/api/types.js +7 -0
  811. package/dist/middleware/api/types.js.map +1 -0
  812. package/dist/middleware/api/wait.d.ts +21 -0
  813. package/dist/middleware/api/wait.d.ts.map +1 -0
  814. package/dist/middleware/api/wait.js +85 -0
  815. package/dist/middleware/api/wait.js.map +1 -0
  816. package/dist/middleware/capability.d.ts +32 -0
  817. package/dist/middleware/capability.d.ts.map +1 -0
  818. package/dist/middleware/capability.js +113 -0
  819. package/dist/middleware/capability.js.map +1 -0
  820. package/dist/middleware/database.d.ts +14 -0
  821. package/dist/middleware/database.d.ts.map +1 -0
  822. package/dist/middleware/database.js +18 -0
  823. package/dist/middleware/database.js.map +1 -0
  824. package/dist/middleware/error-handler.d.ts +13 -0
  825. package/dist/middleware/error-handler.d.ts.map +1 -0
  826. package/dist/middleware/error-handler.js +127 -0
  827. package/dist/middleware/error-handler.js.map +1 -0
  828. package/dist/middleware/observability.d.ts +32 -0
  829. package/dist/middleware/observability.d.ts.map +1 -0
  830. package/dist/middleware/observability.js +134 -0
  831. package/dist/middleware/observability.js.map +1 -0
  832. package/dist/middleware/rate-limit.d.ts +16 -0
  833. package/dist/middleware/rate-limit.d.ts.map +1 -0
  834. package/dist/middleware/rate-limit.js +56 -0
  835. package/dist/middleware/rate-limit.js.map +1 -0
  836. package/dist/middleware/ucan-auth.d.ts +39 -0
  837. package/dist/middleware/ucan-auth.d.ts.map +1 -0
  838. package/dist/middleware/ucan-auth.js +278 -0
  839. package/dist/middleware/ucan-auth.js.map +1 -0
  840. package/dist/networks.d.ts +34 -0
  841. package/dist/networks.d.ts.map +1 -0
  842. package/dist/networks.js +49 -0
  843. package/dist/networks.js.map +1 -0
  844. package/dist/oracle.d.ts +193 -0
  845. package/dist/oracle.d.ts.map +1 -0
  846. package/dist/oracle.js +245 -0
  847. package/dist/oracle.js.map +1 -0
  848. package/dist/routes/health.d.ts +16 -0
  849. package/dist/routes/health.d.ts.map +1 -0
  850. package/dist/routes/health.js +29 -0
  851. package/dist/routes/health.js.map +1 -0
  852. package/dist/routes/v1/admin.d.ts +18 -0
  853. package/dist/routes/v1/admin.d.ts.map +1 -0
  854. package/dist/routes/v1/admin.js +101 -0
  855. package/dist/routes/v1/admin.js.map +1 -0
  856. package/dist/routes/v1/api/admin-claims.d.ts +14 -0
  857. package/dist/routes/v1/api/admin-claims.d.ts.map +1 -0
  858. package/dist/routes/v1/api/admin-claims.js +82 -0
  859. package/dist/routes/v1/api/admin-claims.js.map +1 -0
  860. package/dist/routes/v1/api/admin-facilitator.d.ts +20 -0
  861. package/dist/routes/v1/api/admin-facilitator.d.ts.map +1 -0
  862. package/dist/routes/v1/api/admin-facilitator.js +64 -0
  863. package/dist/routes/v1/api/admin-facilitator.js.map +1 -0
  864. package/dist/routes/v1/api/admin.d.ts +9 -0
  865. package/dist/routes/v1/api/admin.d.ts.map +1 -0
  866. package/dist/routes/v1/api/admin.js +110 -0
  867. package/dist/routes/v1/api/admin.js.map +1 -0
  868. package/dist/routes/v1/api/audit.d.ts +8 -0
  869. package/dist/routes/v1/api/audit.d.ts.map +1 -0
  870. package/dist/routes/v1/api/audit.js +56 -0
  871. package/dist/routes/v1/api/audit.js.map +1 -0
  872. package/dist/routes/v1/api/batch.d.ts +17 -0
  873. package/dist/routes/v1/api/batch.d.ts.map +1 -0
  874. package/dist/routes/v1/api/batch.js +192 -0
  875. package/dist/routes/v1/api/batch.js.map +1 -0
  876. package/dist/routes/v1/api/claims-read.d.ts +43 -0
  877. package/dist/routes/v1/api/claims-read.d.ts.map +1 -0
  878. package/dist/routes/v1/api/claims-read.js +123 -0
  879. package/dist/routes/v1/api/claims-read.js.map +1 -0
  880. package/dist/routes/v1/api/claims.d.ts +131 -0
  881. package/dist/routes/v1/api/claims.d.ts.map +1 -0
  882. package/dist/routes/v1/api/claims.js +407 -0
  883. package/dist/routes/v1/api/claims.js.map +1 -0
  884. package/dist/routes/v1/api/collections-link.d.ts +14 -0
  885. package/dist/routes/v1/api/collections-link.d.ts.map +1 -0
  886. package/dist/routes/v1/api/collections-link.js +97 -0
  887. package/dist/routes/v1/api/collections-link.js.map +1 -0
  888. package/dist/routes/v1/api/export.d.ts +48 -0
  889. package/dist/routes/v1/api/export.d.ts.map +1 -0
  890. package/dist/routes/v1/api/export.js +251 -0
  891. package/dist/routes/v1/api/export.js.map +1 -0
  892. package/dist/routes/v1/api/index.d.ts +16 -0
  893. package/dist/routes/v1/api/index.d.ts.map +1 -0
  894. package/dist/routes/v1/api/index.js +68 -0
  895. package/dist/routes/v1/api/index.js.map +1 -0
  896. package/dist/routes/v1/api/keys.d.ts +9 -0
  897. package/dist/routes/v1/api/keys.d.ts.map +1 -0
  898. package/dist/routes/v1/api/keys.js +95 -0
  899. package/dist/routes/v1/api/keys.js.map +1 -0
  900. package/dist/routes/v1/api/me.d.ts +21 -0
  901. package/dist/routes/v1/api/me.d.ts.map +1 -0
  902. package/dist/routes/v1/api/me.js +122 -0
  903. package/dist/routes/v1/api/me.js.map +1 -0
  904. package/dist/routes/v1/api/members.d.ts +17 -0
  905. package/dist/routes/v1/api/members.d.ts.map +1 -0
  906. package/dist/routes/v1/api/members.js +406 -0
  907. package/dist/routes/v1/api/members.js.map +1 -0
  908. package/dist/routes/v1/api/meta.d.ts +12 -0
  909. package/dist/routes/v1/api/meta.d.ts.map +1 -0
  910. package/dist/routes/v1/api/meta.js +59 -0
  911. package/dist/routes/v1/api/meta.js.map +1 -0
  912. package/dist/routes/v1/api/openapi.gen.d.ts +2 -0
  913. package/dist/routes/v1/api/openapi.gen.d.ts.map +1 -0
  914. package/dist/routes/v1/api/openapi.gen.js +7 -0
  915. package/dist/routes/v1/api/openapi.gen.js.map +1 -0
  916. package/dist/routes/v1/api/protocols.d.ts +22 -0
  917. package/dist/routes/v1/api/protocols.d.ts.map +1 -0
  918. package/dist/routes/v1/api/protocols.js +153 -0
  919. package/dist/routes/v1/api/protocols.js.map +1 -0
  920. package/dist/routes/v1/api/review-billing.d.ts +18 -0
  921. package/dist/routes/v1/api/review-billing.d.ts.map +1 -0
  922. package/dist/routes/v1/api/review-billing.js +196 -0
  923. package/dist/routes/v1/api/review-billing.js.map +1 -0
  924. package/dist/routes/v1/api/review.d.ts +30 -0
  925. package/dist/routes/v1/api/review.d.ts.map +1 -0
  926. package/dist/routes/v1/api/review.js +302 -0
  927. package/dist/routes/v1/api/review.js.map +1 -0
  928. package/dist/routes/v1/api/sources.d.ts +10 -0
  929. package/dist/routes/v1/api/sources.d.ts.map +1 -0
  930. package/dist/routes/v1/api/sources.js +293 -0
  931. package/dist/routes/v1/api/sources.js.map +1 -0
  932. package/dist/routes/v1/api/uploads.d.ts +37 -0
  933. package/dist/routes/v1/api/uploads.d.ts.map +1 -0
  934. package/dist/routes/v1/api/uploads.js +414 -0
  935. package/dist/routes/v1/api/uploads.js.map +1 -0
  936. package/dist/routes/v1/api/views.d.ts +18 -0
  937. package/dist/routes/v1/api/views.d.ts.map +1 -0
  938. package/dist/routes/v1/api/views.js +95 -0
  939. package/dist/routes/v1/api/views.js.map +1 -0
  940. package/dist/routes/v1/api/webhooks.d.ts +14 -0
  941. package/dist/routes/v1/api/webhooks.d.ts.map +1 -0
  942. package/dist/routes/v1/api/webhooks.js +282 -0
  943. package/dist/routes/v1/api/webhooks.js.map +1 -0
  944. package/dist/routes/v1/api/work-orders.d.ts +45 -0
  945. package/dist/routes/v1/api/work-orders.d.ts.map +1 -0
  946. package/dist/routes/v1/api/work-orders.js +171 -0
  947. package/dist/routes/v1/api/work-orders.js.map +1 -0
  948. package/dist/routes/v1/claims.d.ts +21 -0
  949. package/dist/routes/v1/claims.d.ts.map +1 -0
  950. package/dist/routes/v1/claims.js +153 -0
  951. package/dist/routes/v1/claims.js.map +1 -0
  952. package/dist/routes/v1/collections.d.ts +45 -0
  953. package/dist/routes/v1/collections.d.ts.map +1 -0
  954. package/dist/routes/v1/collections.js +201 -0
  955. package/dist/routes/v1/collections.js.map +1 -0
  956. package/dist/routes/v1/index.d.ts +13 -0
  957. package/dist/routes/v1/index.d.ts.map +1 -0
  958. package/dist/routes/v1/index.js +41 -0
  959. package/dist/routes/v1/index.js.map +1 -0
  960. package/dist/routes/v1/info.d.ts +14 -0
  961. package/dist/routes/v1/info.d.ts.map +1 -0
  962. package/dist/routes/v1/info.js +75 -0
  963. package/dist/routes/v1/info.js.map +1 -0
  964. package/dist/routes/v1/mcp/index.d.ts +33 -0
  965. package/dist/routes/v1/mcp/index.d.ts.map +1 -0
  966. package/dist/routes/v1/mcp/index.js +252 -0
  967. package/dist/routes/v1/mcp/index.js.map +1 -0
  968. package/dist/routes/v1/mcp/oauth.d.ts +27 -0
  969. package/dist/routes/v1/mcp/oauth.d.ts.map +1 -0
  970. package/dist/routes/v1/mcp/oauth.js +500 -0
  971. package/dist/routes/v1/mcp/oauth.js.map +1 -0
  972. package/dist/routes/v1/mcp/tools.d.ts +71 -0
  973. package/dist/routes/v1/mcp/tools.d.ts.map +1 -0
  974. package/dist/routes/v1/mcp/tools.js +432 -0
  975. package/dist/routes/v1/mcp/tools.js.map +1 -0
  976. package/dist/routes/v1/mcp/ui.d.ts +45 -0
  977. package/dist/routes/v1/mcp/ui.d.ts.map +1 -0
  978. package/dist/routes/v1/mcp/ui.js +454 -0
  979. package/dist/routes/v1/mcp/ui.js.map +1 -0
  980. package/dist/routes/v1/oauth.d.ts +29 -0
  981. package/dist/routes/v1/oauth.d.ts.map +1 -0
  982. package/dist/routes/v1/oauth.js +256 -0
  983. package/dist/routes/v1/oauth.js.map +1 -0
  984. package/dist/routes/v1/reviewers.d.ts +22 -0
  985. package/dist/routes/v1/reviewers.d.ts.map +1 -0
  986. package/dist/routes/v1/reviewers.js +165 -0
  987. package/dist/routes/v1/reviewers.js.map +1 -0
  988. package/dist/routes/v1/reviews.d.ts +38 -0
  989. package/dist/routes/v1/reviews.d.ts.map +1 -0
  990. package/dist/routes/v1/reviews.js +234 -0
  991. package/dist/routes/v1/reviews.js.map +1 -0
  992. package/dist/routes/v1/shared.d.ts +586 -0
  993. package/dist/routes/v1/shared.d.ts.map +1 -0
  994. package/dist/routes/v1/shared.js +229 -0
  995. package/dist/routes/v1/shared.js.map +1 -0
  996. package/dist/routes/well-known.d.ts +15 -0
  997. package/dist/routes/well-known.d.ts.map +1 -0
  998. package/dist/routes/well-known.js +35 -0
  999. package/dist/routes/well-known.js.map +1 -0
  1000. package/dist/runtime.d.ts +100 -0
  1001. package/dist/runtime.d.ts.map +1 -0
  1002. package/dist/runtime.js +144 -0
  1003. package/dist/runtime.js.map +1 -0
  1004. package/dist/testing/fake-tools.d.ts +104 -0
  1005. package/dist/testing/fake-tools.d.ts.map +1 -0
  1006. package/dist/testing/fake-tools.js +213 -0
  1007. package/dist/testing/fake-tools.js.map +1 -0
  1008. package/dist/testing/index.d.ts +54 -0
  1009. package/dist/testing/index.d.ts.map +1 -0
  1010. package/dist/testing/index.js +104 -0
  1011. package/dist/testing/index.js.map +1 -0
  1012. package/dist/testing/samples.d.ts +70 -0
  1013. package/dist/testing/samples.d.ts.map +1 -0
  1014. package/dist/testing/samples.js +92 -0
  1015. package/dist/testing/samples.js.map +1 -0
  1016. package/dist/workflows/claim-ingest.d.ts +250 -0
  1017. package/dist/workflows/claim-ingest.d.ts.map +1 -0
  1018. package/dist/workflows/claim-ingest.js +1020 -0
  1019. package/dist/workflows/claim-ingest.js.map +1 -0
  1020. package/dist/workflows/claim-source.d.ts +25 -0
  1021. package/dist/workflows/claim-source.d.ts.map +1 -0
  1022. package/dist/workflows/claim-source.js +107 -0
  1023. package/dist/workflows/claim-source.js.map +1 -0
  1024. package/dist/workflows/review-complete.d.ts +82 -0
  1025. package/dist/workflows/review-complete.d.ts.map +1 -0
  1026. package/dist/workflows/review-complete.js +455 -0
  1027. package/dist/workflows/review-complete.js.map +1 -0
  1028. package/dist/workflows/steps.d.ts +125 -0
  1029. package/dist/workflows/steps.d.ts.map +1 -0
  1030. package/dist/workflows/steps.js +325 -0
  1031. package/dist/workflows/steps.js.map +1 -0
  1032. package/docs/api.md +2595 -0
  1033. package/docs/guide.md +1525 -0
  1034. package/migrations/0000_init.sql +108 -0
  1035. package/migrations/0001_review_attestation.sql +1 -0
  1036. package/migrations/0002_decisions_facts.sql +1 -0
  1037. package/migrations/0003_api_lane.sql +171 -0
  1038. package/migrations/0004_api_v1_1.sql +19 -0
  1039. package/migrations/0005_member_notify.sql +3 -0
  1040. package/migrations/0006_source_collections.sql +16 -0
  1041. package/migrations/0007_api_settlement.sql +27 -0
  1042. package/migrations/0008_review_extend.sql +1 -0
  1043. package/migrations/0009_card_refunds.sql +4 -0
  1044. package/migrations/0010_even_scorpion.sql +16 -0
  1045. package/migrations/0011_mcp_oauth.sql +27 -0
  1046. package/migrations/0012_mcp_standing.sql +21 -0
  1047. package/migrations/0013_unknown_krista_starr.sql +2 -0
  1048. package/migrations/0014_last_carnage.sql +14 -0
  1049. package/migrations/0015_company_authority.sql +26 -0
  1050. package/migrations/0016_owner_only_links.sql +6 -0
  1051. package/migrations/0017_organisations.sql +35 -0
  1052. package/migrations/0018_remove_app_signed.sql +4 -0
  1053. package/migrations/0019_submitted_via.sql +2 -0
  1054. package/migrations/0020_drop_decision_to_pay.sql +4 -0
  1055. package/migrations/0021_manual_erase.sql +25 -0
  1056. package/migrations/0022_errored_facts.sql +1 -0
  1057. package/migrations/0023_review_billing.sql +20 -0
  1058. package/migrations/0024_pending_task_details.sql +1 -0
  1059. package/migrations/meta/0000_snapshot.json +707 -0
  1060. package/migrations/meta/0001_snapshot.json +714 -0
  1061. package/migrations/meta/0002_snapshot.json +721 -0
  1062. package/migrations/meta/0003_snapshot.json +1845 -0
  1063. package/migrations/meta/0004_snapshot.json +1969 -0
  1064. package/migrations/meta/0005_snapshot.json +1991 -0
  1065. package/migrations/meta/0006_snapshot.json +2097 -0
  1066. package/migrations/meta/0007_snapshot.json +2128 -0
  1067. package/migrations/meta/0008_snapshot.json +2133 -0
  1068. package/migrations/meta/0009_snapshot.json +2161 -0
  1069. package/migrations/meta/0010_snapshot.json +2265 -0
  1070. package/migrations/meta/0011_snapshot.json +2448 -0
  1071. package/migrations/meta/0012_snapshot.json +2577 -0
  1072. package/migrations/meta/0013_snapshot.json +2594 -0
  1073. package/migrations/meta/0014_snapshot.json +2602 -0
  1074. package/migrations/meta/0015_snapshot.json +2778 -0
  1075. package/migrations/meta/0016_snapshot.json +2778 -0
  1076. package/migrations/meta/0017_snapshot.json +2792 -0
  1077. package/migrations/meta/0018_snapshot.json +2778 -0
  1078. package/migrations/meta/0019_snapshot.json +2792 -0
  1079. package/migrations/meta/0020_snapshot.json +2785 -0
  1080. package/migrations/meta/0021_snapshot.json +2762 -0
  1081. package/migrations/meta/0022_snapshot.json +2769 -0
  1082. package/migrations/meta/0023_snapshot.json +2900 -0
  1083. package/migrations/meta/0024_snapshot.json +2907 -0
  1084. package/migrations/meta/_journal.json +181 -0
  1085. package/openapi/decision-api.yaml +12204 -0
  1086. package/package.json +123 -4
  1087. package/skills/README.md +19 -0
  1088. package/skills/add-openhands-support/SKILL.md +113 -0
  1089. package/skills/create-collection/SKILL.md +199 -0
  1090. package/skills/create-collection/reference/claims-stack.md +106 -0
  1091. package/skills/create-collection/reference/collection.md +111 -0
  1092. package/skills/create-oracle/SKILL.md +400 -0
  1093. package/skills/create-rubric/SKILL.md +130 -0
  1094. package/skills/create-rubric/reference/format-cheatsheet.md +186 -0
  1095. package/skills/create-rubric/templates/claim-form.example.json +60 -0
  1096. package/skills/decision-api-client/SKILL.md +236 -0
  1097. package/skills/decision-api-oracle/SKILL.md +336 -0
  1098. package/skills/publish-protocol/SKILL.md +151 -0
  1099. package/skills/publish-protocol/reference/publishing.md +116 -0
  1100. package/skills/reference/engine-contract.md +222 -0
  1101. package/skills/write-facts/SKILL.md +221 -0
  1102. package/skills/write-facts/reference/examples/http-vendor.ts +88 -0
  1103. package/skills/write-facts/reference/examples/price-matches-agreement.ts +67 -0
  1104. package/skills/write-facts/reference/facts-api.md +232 -0
  1105. package/templates/project/.dev.vars.example +93 -0
  1106. package/templates/project/.editorconfig +9 -0
  1107. package/templates/project/CLAUDE.md +45 -0
  1108. package/templates/project/README.md +199 -0
  1109. package/templates/project/biome.json +37 -0
  1110. package/templates/project/gitignore +29 -0
  1111. package/templates/project/package.json +32 -0
  1112. package/templates/project/src/facts/index.ts +19 -0
  1113. package/templates/project/src/index.ts +25 -0
  1114. package/templates/project/test/api-lane.test.ts +57 -0
  1115. package/templates/project/test/facts.test.ts +14 -0
  1116. package/templates/project/tsconfig.json +25 -0
  1117. package/templates/project/vitest.config.ts +13 -0
  1118. package/templates/project/wrangler.jsonc +446 -0
@@ -0,0 +1,713 @@
1
+ /**
2
+ * Notice copy — the chain lane's three (paused, resumed, review request), the member emails'
3
+ * six (invite, accepted, access granted, review needed / batched / reminder) and the source
4
+ * contact's low-balance notice.
5
+ *
6
+ * Ported STRUCTURE only from eval-engine's `lib/email/template.ts` (a ~56KB, multi-account console
7
+ * document): one internal `Notice` object per render → `render()` turns it into
8
+ * `{subject, html, text}` for email, and `chatBody()` turns the SAME object into a short plain-text
9
+ * twin for a chat surface — so a paused notice can never say something different in the two lanes.
10
+ * The kit doesn't have v1's owner-pooled subscription/payout accounts (billing is per-collection,
11
+ * one status column, not three account kinds), so the content itself is far smaller: no coin
12
+ * figures, no two-account panel, no dollar amounts — just what stopped, why, and where to look.
13
+ *
14
+ * Written for EMAIL: inline styles only (no external stylesheet — Gmail strips `<style>` blocks
15
+ * that aren't inlined onto the elements that need them), a real `text` twin for plain-text clients
16
+ * and spam filters, and no images (nothing to block, nothing to alt).
17
+ *
18
+ * What must never appear here: claim answers, files, the submitter, a key, or anything from the
19
+ * evaluation itself — a notice is delivery, not a claim payload (matches lib/matrix/events.ts's own
20
+ * rule). The member emails (invites, access, review requests — the member-emails spec) do carry
21
+ * people's names, and only through `untrusted()`.
22
+ *
23
+ * ALL copy and markup live in this file (member-emails spec, status line): a redesign of the look
24
+ * or the words touches nothing in the sending, batching or recipient code.
25
+ */
26
+ const REASON_COPY = {
27
+ "engine-credits": {
28
+ label: "the decision engine is out of credits",
29
+ body: "The decision engine account behind this collection has run out of credits, so we stopped evaluating new claims rather than run up a bill that hasn't been funded.",
30
+ },
31
+ "engine-no-grant": {
32
+ label: "our evaluation authorization was revoked",
33
+ body: "This oracle no longer holds an active EvaluateClaimAuthorization for this collection, so the chain will not accept a decision from it. Grant the authorization again, then re-register the collection to resume.",
34
+ },
35
+ "rubric-unusable": {
36
+ label: "the anchored rubric could not be used",
37
+ body: "The rubric anchored to this collection's protocol could not be resolved, or no longer matches its claim form, so every claim would be refused the same way. Fix the anchored rubric or claim form, then resume the collection.",
38
+ },
39
+ "payer-credits": {
40
+ label: "the organisation paying for reviews is out of credits",
41
+ body: "Reviews of this collection are paid per review from its organisation's credits, and the payment service refused the next one for want of credits (or of the permission to spend them). Top up the organisation's credits in the Decision Console and the oracle resumes on its own.",
42
+ },
43
+ "payer-delegation": {
44
+ label: "no one is set up to pay for its reviews",
45
+ body: "Reviews of this collection are paid per review by its organisation, and there is no usable review-billing permission on this oracle: none was stored, it expired or was used up, or it was signed by someone who no longer owns the organisation. The organisation's owner renews review billing in the Decision Console and the oracle resumes on its own.",
46
+ },
47
+ "oracle-plan": {
48
+ // Never sent (an IXO condition, paged instead); the copy is here for the type's sake.
49
+ label: "this oracle's plan does not cover per-review billing",
50
+ body: "The payment service no longer lets this oracle bill reviews per review. IXO has been told and reviews resume on their own once it is fixed.",
51
+ },
52
+ "admin-unfunded": {
53
+ label: "its admin account can't pay evaluations",
54
+ // The generic fallback only — `adminUnfundedParagraphs` names the account and the amount.
55
+ body: "The collection's admin account cannot pay what the chain charges to deliver a decision, so decisions are being recorded but cannot be delivered on chain. Top up the admin account and the oracle resumes on its own.",
56
+ },
57
+ };
58
+ function adminUnfundedParagraphs(detail) {
59
+ const { adminAddress, verdict, required, balance } = detail;
60
+ const needs = required.length > 0
61
+ ? required.map((coin) => `${coin.amount} ${coin.denom}`).join(" + ")
62
+ : "an unknown amount";
63
+ const legs = verdict === "approve" ? "approval" : "rejection";
64
+ const what = verdict === "approve"
65
+ ? "the evaluation payment, plus the approval payment unless an escrow holds it"
66
+ : "the evaluation payment plus the rejection payment";
67
+ const holds = balance === undefined
68
+ ? "less than that"
69
+ : balance.amount === "0" && required.length <= 1
70
+ ? "nothing"
71
+ : `${balance.amount} ${balance.denom}`;
72
+ return [
73
+ `Delivering this claim's ${legs} on chain needs ${needs} from the collection's admin account ${adminAddress} (${what}), which currently holds ${holds}. Decisions are being recorded but cannot be delivered on chain until it is topped up.`,
74
+ "Top up the admin account and the oracle resumes on its own within a minute — you'll get a second notice when it's back.",
75
+ ];
76
+ }
77
+ /**
78
+ * V1's `portalActionUrl` had a double-slash bug (`.replace(/\/+$/, "") + "//wallet"` — two slashes
79
+ * before the path). Fixed here: strip trailing slashes on the base exactly once, then join with
80
+ * exactly one leading slash.
81
+ */
82
+ export function portalCollectionUrl(config, collectionId) {
83
+ return `${config.PORTAL_BASE_URL.replace(/\/+$/, "")}/workspace/collections?collectionId=${encodeURIComponent(collectionId)}`;
84
+ }
85
+ function pausedNotice(input) {
86
+ const { collectionId, reason, actionUrl, detail } = input;
87
+ const { label, body } = REASON_COPY[reason];
88
+ return {
89
+ tone: "paused",
90
+ brand: input.brand,
91
+ subject: `Collection ${collectionId} paused — ${label}`,
92
+ headline: "We have paused evaluations for this collection",
93
+ paragraphs: reason === "admin-unfunded" && detail
94
+ ? adminUnfundedParagraphs(detail)
95
+ : [
96
+ body,
97
+ "Nothing has been lost and nothing has been rejected. Claims that come in while this is paused are kept and evaluated, oldest first, once it is resolved.",
98
+ ],
99
+ actionLabel: "View this collection",
100
+ actionUrl,
101
+ summary: `Collection ${collectionId} is paused: ${label}.`,
102
+ };
103
+ }
104
+ function resumedNotice(input) {
105
+ const { collectionId, actionUrl } = input;
106
+ return {
107
+ tone: "resumed",
108
+ brand: input.brand,
109
+ subject: `Collection ${collectionId} is evaluating again`,
110
+ headline: "You are all set — we are evaluating your claims again",
111
+ paragraphs: [
112
+ "Evaluations have resumed for this collection. Claims that came in while it was paused are being processed now, oldest first.",
113
+ "You do not need to do anything.",
114
+ ],
115
+ actionLabel: "View this collection",
116
+ actionUrl,
117
+ summary: `Collection ${collectionId} is evaluating again.`,
118
+ };
119
+ }
120
+ function reviewRequestNotice(input) {
121
+ const { claimId, collectionId, link } = input;
122
+ return {
123
+ tone: "review",
124
+ brand: input.brand,
125
+ subject: `A claim needs your review — collection ${collectionId}`,
126
+ headline: "A claim needs your review",
127
+ paragraphs: [
128
+ `A claim submitted to collection ${collectionId} needs your review before a decision can be finalized.`,
129
+ "Open it in the portal to answer.",
130
+ ],
131
+ actionLabel: "Review this claim",
132
+ actionUrl: link,
133
+ summary: `Claim ${claimId} in collection ${collectionId} needs your review.`,
134
+ };
135
+ }
136
+ // In a member context the `owner` role is a CO-owner: the source's real owner is never invited.
137
+ const ROLE_LABEL = {
138
+ owner: "Co-owner",
139
+ developer: "Developer",
140
+ reviewer: "Reviewer",
141
+ viewer: "Viewer",
142
+ submitter: "Submitter",
143
+ };
144
+ const ROLE_LINE = {
145
+ reviewer: "Reviewers answer the questions some claims need before their decision is final.",
146
+ developer: "Developers manage API keys, webhooks and claims.",
147
+ viewer: "Viewers can see claims, decisions and spending, but can't change anything.",
148
+ submitter: "Submitters file claims and their files, and see the decisions.",
149
+ owner: "Co-owners can do everything the owner can, including inviting other people.",
150
+ };
151
+ const NAME_MAX = 60;
152
+ /** Zero-width (U+200B–U+200F: ZWSP, ZWNJ, ZWJ, LRM, RLM), bidi embeddings/overrides/isolates, BOM. */
153
+ const INVISIBLE = /[\u200B-\u200F\u202A-\u202E\u2066-\u2069\uFEFF]/g;
154
+ /**
155
+ * §1.5: every source, protocol and person's name is user-supplied — one line, cut at 60 characters
156
+ * with `…`. Escaping stays where it always was (the renders `esc()` every value); a name only
157
+ * reaches a URL through `encodeURIComponent`, and today none does. Code points, not UTF-16 units,
158
+ * so the cut never splits a surrogate pair. Bidi overrides and zero-width characters go first: a
159
+ * name must not reorder the text around it ("…gnp.exe") or hide inside a look-alike.
160
+ */
161
+ function untrusted(value) {
162
+ const line = [...value.replace(INVISIBLE, "").replace(/\s+/g, " ").trim()];
163
+ return line.length > NAME_MAX ? `${line.slice(0, NAME_MAX).join("")}…` : line.join("");
164
+ }
165
+ const MONTHS = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
166
+ /** §1.6: `12 Oct 2026` — UTC, never relative ("in 3 days" is wrong by the time it is read). */
167
+ function fmtDate(at) {
168
+ return `${at.getUTCDate()} ${MONTHS[at.getUTCMonth()]} ${at.getUTCFullYear()}`;
169
+ }
170
+ /** §1.6: `12 Oct 2026, 14:05 UTC`. */
171
+ export function fmtTime(at) {
172
+ const hh = String(at.getUTCHours()).padStart(2, "0");
173
+ const mm = String(at.getUTCMinutes()).padStart(2, "0");
174
+ return `${fmtDate(at)}, ${hh}:${mm} UTC`;
175
+ }
176
+ /** §1.4: `apc_7f3a…9c1d` — the first 8 characters (prefix included), `…`, the last 4. */
177
+ function shortClaimId(claimId) {
178
+ return claimId.length > 13 ? `${claimId.slice(0, 8)}…${claimId.slice(-4)}` : claimId;
179
+ }
180
+ function plural(n, one, many) {
181
+ return `${n} ${n === 1 ? one : many}`;
182
+ }
183
+ /**
184
+ * The oracle's own API base as the console names it — `https://<ORACLE_HOSTNAME>`, `http` only for
185
+ * localhost (the CLI's `oracleUrlFor` rule), so a local console reaches a local `wrangler dev`.
186
+ */
187
+ export function oracleApiUrl(config) {
188
+ const host = config.ORACLE_HOSTNAME;
189
+ return `${/^(localhost|127\.0\.0\.1)(:|$)/.test(host) ? "http" : "https"}://${host}`;
190
+ }
191
+ /**
192
+ * `CONSOLE_URL` + a path + its query, the base's trailing slashes stripped once (the `//` bug
193
+ * above). The console is multi-oracle, so every link names WHICH oracle (`oracle=`, appended after
194
+ * the path's own params) and, for a source's pages, which source (`source=`, last) — else its
195
+ * `/invite` page would have to try a token on every oracle it lists. Every value is encoded.
196
+ */
197
+ function consoleLink(input, path, params, { source = true } = {}) {
198
+ const query = {
199
+ ...params,
200
+ oracle: input.oracleUrl,
201
+ ...(source ? { source: input.source.id } : {}),
202
+ };
203
+ const qs = Object.entries(query)
204
+ .map(([k, v]) => `${k}=${encodeURIComponent(v)}`)
205
+ .join("&");
206
+ return `${input.consoleUrl.replace(/\/+$/, "")}${path}?${qs}`;
207
+ }
208
+ /** The Protocols row, only when the grant is limited (`nb.protocols`). */
209
+ function protocolsRow(protocols) {
210
+ return protocols?.length
211
+ ? [{ label: "Protocols", value: protocols.map(untrusted).join(", ") }]
212
+ : [];
213
+ }
214
+ /** The Access until row, only when the grant has an expiry. */
215
+ function accessUntilRow(at) {
216
+ return at ? [{ label: "Access until", value: fmtDate(at) }] : [];
217
+ }
218
+ function inviteNotice(input) {
219
+ const source = untrusted(input.source.name);
220
+ const inviter = untrusted(input.inviter);
221
+ const role = ROLE_LABEL[input.role];
222
+ const expires = fmtDate(input.expiresAt);
223
+ return {
224
+ tone: "member",
225
+ brand: input.brand,
226
+ subject: `${inviter} invited you to ${source}`,
227
+ headline: `You've been invited to ${source}`,
228
+ paragraphs: [
229
+ `${inviter} added you to ${source} on the Decision Console as a ${role}. ${ROLE_LINE[input.role]}`,
230
+ "Sign in with your IXO account to accept. If you don't have one yet, you'll create it as you sign in.",
231
+ `After you accept, ${inviter} confirms your access, and we'll email you when it's ready.`,
232
+ ],
233
+ details: [
234
+ { label: "Source", value: source },
235
+ { label: "Role", value: role },
236
+ ...protocolsRow(input.protocols),
237
+ { label: "Invited by", value: inviter },
238
+ { label: "Expires", value: expires },
239
+ ],
240
+ actionLabel: "Accept invitation",
241
+ actionUrl: consoleLink(input, "/invite", { token: input.inviteToken },
242
+ // No `source=`: the token is what names it.
243
+ { source: false }),
244
+ summary: `Join as a ${role}. The invitation expires on ${expires}.`,
245
+ footer: `This invitation was sent to ${input.inviteeEmail}. If you weren't expecting it, you can ignore this email: nothing happens unless you accept. The link works once.`,
246
+ };
247
+ }
248
+ function inviteAcceptedNotice(input) {
249
+ const source = untrusted(input.source.name);
250
+ const member = untrusted(input.member);
251
+ return {
252
+ tone: "member",
253
+ brand: input.brand,
254
+ subject: `${member} accepted your invitation to ${source}`,
255
+ headline: `Approve ${member}'s access`,
256
+ paragraphs: [
257
+ `${member} accepted your invitation to ${source} and signed in as ${input.accountDid}. They can't see or do anything until you approve.`,
258
+ "Check this is the person you meant, then approve on the Team page. You'll confirm with your IXO account.",
259
+ ],
260
+ details: [
261
+ { label: "Invited", value: input.invitedEmail },
262
+ { label: "Signed in as", value: input.accountDid },
263
+ { label: "Role", value: ROLE_LABEL[input.role] },
264
+ ...protocolsRow(input.protocols),
265
+ ...accessUntilRow(input.accessUntil),
266
+ ],
267
+ actionLabel: "Review and approve",
268
+ actionUrl: consoleLink(input, "/team", { member: input.memberId }),
269
+ summary: "Approve their access so they can start.",
270
+ footer: `You're getting this because you invited ${input.invitedEmail} to ${source}.`,
271
+ };
272
+ }
273
+ function accessGrantedNotice(input) {
274
+ const source = untrusted(input.source.name);
275
+ const owner = untrusted(input.owner);
276
+ const role = ROLE_LABEL[input.role];
277
+ const reviewer = input.role === "reviewer";
278
+ return {
279
+ tone: "member",
280
+ brand: input.brand,
281
+ subject: `Your access to ${source} is ready`,
282
+ headline: `Your access to ${source} is ready`,
283
+ paragraphs: reviewer
284
+ ? [
285
+ `${owner} approved you as a ${role}.`,
286
+ "When a claim needs your review, we'll email you a link straight to it. Everything waiting for you is also in your review queue.",
287
+ "The first time you answer a review in a new browser, the console creates a signing key for you. It proves the answers are yours, and it takes a second.",
288
+ ]
289
+ : [`${owner} approved you as a ${role}.`, "Open the Decision Console to get started."],
290
+ details: [
291
+ { label: "Source", value: source },
292
+ { label: "Role", value: role },
293
+ ...protocolsRow(input.protocols),
294
+ ...accessUntilRow(input.accessUntil),
295
+ ],
296
+ actionLabel: reviewer ? "Open review queue" : "Open the Decision Console",
297
+ actionUrl: consoleLink(input, reviewer ? "/reviews" : "/", {}),
298
+ summary: `${owner} approved you as a ${role}.`,
299
+ footer: `You're getting this because ${owner} gave you access to ${source}.${input.accessUntil ? ` Your access ends on ${fmtDate(input.accessUntil)} unless they renew it.` : ""}`,
300
+ };
301
+ }
302
+ function reviewFooter(audience, source) {
303
+ if (audience === "contact")
304
+ return `You're getting this because you're the contact for ${source}.`;
305
+ const why = audience === "reviewer"
306
+ ? `you're a reviewer for ${source}`
307
+ : `you can review claims for ${source}`;
308
+ return `You're getting this because ${why}. You can turn these emails off in your console profile.`;
309
+ }
310
+ /** §6/§7: one row per claim, oldest first, at most 5, then `And {m} more`. */
311
+ const BATCH_ROWS = 5;
312
+ function oldestFirst(claims) {
313
+ return [...claims].sort((a, b) => a.waitingSince.getTime() - b.waitingSince.getTime());
314
+ }
315
+ function claimRows(sorted) {
316
+ const rows = sorted.slice(0, BATCH_ROWS).map((claim) => ({
317
+ label: untrusted(claim.protocol),
318
+ value: `${shortClaimId(claim.claimId)} · ${plural(claim.questions, "question", "questions")}${claim.answerBy ? ` · answer by ${fmtDate(claim.answerBy)}` : ""}`,
319
+ }));
320
+ const more = sorted.length - BATCH_ROWS;
321
+ return more > 0 ? [...rows, { label: `And ${more} more`, value: "in your review queue" }] : rows;
322
+ }
323
+ /**
324
+ * The payment deadline in plain words, for the earliest paid claim among `claims` — none has one ⇒
325
+ * no line at all, so an unpaid claim's copy is exactly what it was.
326
+ */
327
+ function answerByLine(claims) {
328
+ const deadlines = claims.flatMap((c) => (c.answerBy ? [c.answerBy.getTime()] : []));
329
+ if (deadlines.length === 0)
330
+ return [];
331
+ // To the minute: a hold that was not extended runs out 24 h after verify, the same day.
332
+ const by = fmtTime(new Date(Math.min(...deadlines)));
333
+ return [
334
+ claims.length === 1
335
+ ? `Answer by ${by}, or this claim can't be paid.`
336
+ : `The earliest deadline is ${by}; claims not answered by their date can't be paid.`,
337
+ ];
338
+ }
339
+ function reviewQueueUrl(input) {
340
+ return consoleLink(input, "/reviews", {});
341
+ }
342
+ function reviewNeededNotice(input) {
343
+ const source = untrusted(input.source.name);
344
+ const protocol = untrusted(input.claim.protocol);
345
+ const questions = plural(input.claim.questions, "question", "questions");
346
+ return {
347
+ tone: "review",
348
+ brand: input.brand,
349
+ subject: `Review needed: ${protocol} claim for ${source}`,
350
+ // The contact is told, not asked: they may not be a reviewer themselves.
351
+ headline: `A claim is waiting for ${input.audience === "contact" ? "a reviewer" : "your review"}`,
352
+ paragraphs: [
353
+ `A ${protocol} claim submitted to ${source} needs a reviewer's answers to ${questions} before its decision is final.`,
354
+ "The first reviewer to answer completes it. If someone has already answered, the link shows you the result.",
355
+ ...answerByLine([input.claim]),
356
+ ],
357
+ details: [
358
+ { label: "Claim", value: shortClaimId(input.claim.claimId) },
359
+ { label: "Protocol", value: protocol },
360
+ { label: "Questions", value: String(input.claim.questions) },
361
+ { label: "Waiting since", value: fmtTime(input.claim.waitingSince) },
362
+ ...(input.claim.answerBy
363
+ ? [{ label: "Answer by", value: fmtTime(input.claim.answerBy) }]
364
+ : []),
365
+ ],
366
+ actionLabel: "Review claim",
367
+ actionUrl: consoleLink(input, `/claims/${encodeURIComponent(input.claim.claimId)}`, {
368
+ review: "1",
369
+ }),
370
+ summary: `${questions} to answer before the decision is final.`,
371
+ footer: reviewFooter(input.audience, source),
372
+ };
373
+ }
374
+ function reviewBatchNotice(input) {
375
+ const source = untrusted(input.source.name);
376
+ const sorted = oldestFirst(input.claims);
377
+ const n = sorted.length;
378
+ const your = input.audience === "contact" ? "" : "your ";
379
+ return {
380
+ tone: "review",
381
+ brand: input.brand,
382
+ subject: `${n} claims need ${your}review for ${source}`,
383
+ headline: `${n} claims are waiting for ${input.audience === "contact" ? "a reviewer" : "your review"}`,
384
+ paragraphs: [
385
+ `${n} claims submitted to ${source} need a reviewer's answers before their decisions are final.`,
386
+ "The first reviewer to answer each one completes it.",
387
+ ...answerByLine(sorted),
388
+ ],
389
+ details: claimRows(sorted),
390
+ actionLabel: "Open review queue",
391
+ actionUrl: reviewQueueUrl(input),
392
+ summary: `The oldest has been waiting since ${fmtTime(sorted[0]?.waitingSince ?? new Date(0))}.`,
393
+ footer: reviewFooter(input.audience, source),
394
+ };
395
+ }
396
+ function reviewReminderNotice(input) {
397
+ const source = untrusted(input.source.name);
398
+ const sorted = oldestFirst(input.claims);
399
+ const n = sorted.length;
400
+ const one = n === 1;
401
+ const claims = plural(n, "claim", "claims");
402
+ const oldest = fmtDate(sorted[0]?.waitingSince ?? new Date(0));
403
+ return {
404
+ tone: "review",
405
+ brand: input.brand,
406
+ subject: `${input.days === 14 ? "Two weeks waiting" : "Still waiting"}: ${claims} ${one ? "needs" : "need"} review for ${source}`,
407
+ headline: `These claims have been waiting ${input.days === 14 ? "two weeks" : "3 days"}`,
408
+ paragraphs: [
409
+ `${claims} for ${source} ${one ? "has" : "have"} been waiting for a reviewer since ${oldest}. Until someone answers, ${one ? "its decision stays" : "their decisions stay"} pending and the submitter has no result.`,
410
+ ...answerByLine(sorted),
411
+ ],
412
+ details: claimRows(sorted),
413
+ actionLabel: "Open review queue",
414
+ actionUrl: reviewQueueUrl(input),
415
+ summary: "Until someone answers, the submitter has no decision.",
416
+ footer: reviewFooter(input.audience, source),
417
+ };
418
+ }
419
+ /** The Decision Console's "Pay for reviews" page (its `BILLING_HUB` tab). */
420
+ export const CONSOLE_REVIEW_BILLING_PATH = "/billing/reviews";
421
+ /** How to raise or renew review billing — the same words in both notices (owner, 2026-10-14). */
422
+ function raiseReviewBilling(input) {
423
+ const page = `${input.consoleUrl.replace(/\/+$/, "")}${CONSOLE_REVIEW_BILLING_PATH}`;
424
+ return `To raise it, any of three ways: ask Claude Code to run \`decision-oracle api review-billing enable --source ${input.source.id} --cap <PAY>\` (it shows a dry run first); use the OpenHands web app, signed in as the organisation's owner; or use the Decision Console's Pay for reviews tab: ${page}.`;
425
+ }
426
+ /** upay as PAY, exact and grouped: `1,234.5 PAY`. No float ever touches the amount. */
427
+ function fmtPay(upay) {
428
+ const n = BigInt(upay);
429
+ const fraction = (n % 1000000n).toString().padStart(6, "0").replace(/0+$/, "");
430
+ return `${(n / 1000000n).toLocaleString("en-US")}${fraction ? `.${fraction}` : ""} PAY`;
431
+ }
432
+ /** Whole cents as dollars: `$1,234.50`. The only place a money figure is formatted for a person. */
433
+ function fmtCents(cents) {
434
+ return (cents / 100).toLocaleString("en-US", { style: "currency", currency: "USD" });
435
+ }
436
+ function balanceLowNotice(input) {
437
+ const source = untrusted(input.source.name);
438
+ const balance = fmtCents(input.balanceCents);
439
+ const floor = fmtCents(input.floorCents);
440
+ return {
441
+ tone: "balance",
442
+ brand: input.brand,
443
+ subject: `Credits are running low for ${source}`,
444
+ headline: "Your credits are running low",
445
+ paragraphs: [
446
+ `The credits that pay for ${source}'s decisions are down to ${balance}, below the ${floor} you asked us to warn you at.`,
447
+ "When they run out, new claims need payment before they're accepted. Claims already accepted still finish.",
448
+ ],
449
+ details: [
450
+ { label: "Source", value: source },
451
+ { label: "Balance", value: balance },
452
+ { label: "Warn below", value: floor },
453
+ ],
454
+ actionLabel: "Add credits",
455
+ // §12.1: every top-up link is the console's Credits page — the 402 `fundingUrl`'s too.
456
+ actionUrl: `${input.consoleUrl.replace(/\/+$/, "")}/credits`,
457
+ summary: `${balance} left, below your ${floor} warning level.`,
458
+ footer: `You're getting this because this address is the contact for ${source}. We send it once a day while the balance stays below the level set on the source.`,
459
+ };
460
+ }
461
+ function reviewBillingExpiringNotice(input) {
462
+ const source = untrusted(input.source.name);
463
+ const day = input.expiresAt.toISOString().slice(0, 10);
464
+ const within = input.daysLeft === 7 ? "a week" : "a month";
465
+ return {
466
+ tone: "balance",
467
+ brand: input.brand,
468
+ subject: `Review billing for ${source} ends on ${day}`,
469
+ headline: `Review billing ends in under ${within}`,
470
+ paragraphs: [
471
+ `The permission that pays for reviews of ${source}'s collections from its credits ends on ${day}.`,
472
+ "After that, reviews of those collections pause until a new one is signed. Renew it before then and nothing stops.",
473
+ raiseReviewBilling(input).replace("To raise it", "To renew it"),
474
+ ],
475
+ details: [
476
+ { label: "Source", value: source },
477
+ { label: "Ends", value: day },
478
+ ],
479
+ actionLabel: "Renew review billing",
480
+ actionUrl: `${input.consoleUrl.replace(/\/+$/, "")}${CONSOLE_REVIEW_BILLING_PATH}`,
481
+ summary: `Review billing for ${source} ends on ${day}.`,
482
+ footer: `You're getting this because you signed ${source}'s review billing, or this address is its contact. We send it 30 and 7 days before the end.`,
483
+ };
484
+ }
485
+ function reviewBillingCapNotice(input) {
486
+ const source = untrusted(input.source.name);
487
+ const left = fmtPay(input.remainingUpay);
488
+ const cap = fmtPay(input.capUpay);
489
+ const reviews = input.reviewsLeft === null ? null : plural(input.reviewsLeft, "review", "reviews");
490
+ return {
491
+ tone: "balance",
492
+ brand: input.brand,
493
+ subject: `Review billing for ${source} has used ${input.percent}% of its limit`,
494
+ headline: `${input.percent}% of your review billing limit is used`,
495
+ paragraphs: [
496
+ `The permission that pays for reviews of ${source}'s collections has ${left} left of its ${cap} limit${reviews ? ` — about ${reviews} at the current price` : ""}.`,
497
+ "The limit counts everything it has ever paid and never resets. When it runs out, reviews of those collections pause until a higher limit is signed.",
498
+ `${raiseReviewBilling(input)} The new limit replaces this one.`,
499
+ ],
500
+ details: [
501
+ { label: "Source", value: source },
502
+ { label: "Left", value: left },
503
+ { label: "Limit", value: cap },
504
+ ...(reviews ? [{ label: "About", value: reviews }] : []),
505
+ ],
506
+ actionLabel: "Raise the limit",
507
+ actionUrl: `${input.consoleUrl.replace(/\/+$/, "")}${CONSOLE_REVIEW_BILLING_PATH}`,
508
+ summary: `${left} left of ${source}'s review billing limit.`,
509
+ footer: `You're getting this because you signed ${source}'s review billing, or this address is its contact. We send it once at 80% and once at 95% of each limit.`,
510
+ };
511
+ }
512
+ // --- HTML ----------------------------------------------------------------------------------------
513
+ function esc(value) {
514
+ return value
515
+ .replaceAll("&", "&amp;")
516
+ .replaceAll("<", "&lt;")
517
+ .replaceAll(">", "&gt;")
518
+ .replaceAll('"', "&quot;");
519
+ }
520
+ const SANS = `-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif`;
521
+ /** The chain lane's footer — the default when a notice sets none (member-emails §1.2). */
522
+ const CHAIN_FOOTER = "You are getting this because you have a claim collection registered with this evaluation oracle.";
523
+ /** The paragraphs with the callout slotted in after the one it qualifies — every render's order. */
524
+ function blocks(notice) {
525
+ const out = [];
526
+ notice.paragraphs.forEach((text, i) => {
527
+ out.push({ text });
528
+ if (notice.callout?.afterParagraph === i)
529
+ out.push({ text: notice.callout.text, callout: true });
530
+ });
531
+ return out;
532
+ }
533
+ function detailsHtml(details) {
534
+ const rows = details
535
+ .map((row, i) => {
536
+ const rule = i === 0 ? "" : "border-top:1px solid #e3e8ef;";
537
+ return `<tr><td valign="top" style="${rule}padding:9px 16px 9px 0;font:400 13px/1.45 ${SANS};color:#55606b;white-space:nowrap;">${esc(row.label)}</td><td valign="top" style="${rule}padding:9px 0;font:400 14px/1.45 ${SANS};color:#12161c;">${esc(row.value)}</td></tr>`;
538
+ })
539
+ .join("");
540
+ return `<table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0" style="margin:4px 0 18px;border-collapse:collapse;">${rows}</table>`;
541
+ }
542
+ function renderHtml(notice) {
543
+ const body = blocks(notice)
544
+ .map(({ text, callout }) => callout
545
+ ? `<table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0" style="margin:0 0 14px;"><tr><td bgcolor="#fff6e5" style="background:#fff6e5;border:1px solid #f1d9a6;border-radius:8px;padding:12px 14px;font:400 14px/1.55 ${SANS};color:#6b4600;">${esc(text)}</td></tr></table>`
546
+ : `<p style="margin:0 0 14px;font:400 15px/1.6 ${SANS};color:#12161c;">${esc(text)}</p>`)
547
+ .join("");
548
+ const details = notice.details?.length ? detailsHtml(notice.details) : "";
549
+ return `<!doctype html>
550
+ <html lang="en">
551
+ <head>
552
+ <meta charset="utf-8" />
553
+ <meta name="viewport" content="width=device-width,initial-scale=1" />
554
+ <meta name="color-scheme" content="light" />
555
+ <meta name="supported-color-schemes" content="light" />
556
+ <title>${esc(notice.subject)}</title>
557
+ </head>
558
+ <body bgcolor="#f6f8fa" style="margin:0;padding:0;width:100%;background:#f6f8fa;">
559
+ <div style="display:none;max-height:0;overflow:hidden;opacity:0;">${esc(notice.summary)}</div>
560
+ <table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0" bgcolor="#f6f8fa" style="background:#f6f8fa;">
561
+ <tr><td align="center" style="padding:32px 12px 40px;">
562
+ <table role="presentation" width="600" cellpadding="0" cellspacing="0" border="0" style="width:100%;max-width:600px;">
563
+ <tr><td style="padding:0 2px 16px;">
564
+ <span style="font:700 13px/1 ${SANS};letter-spacing:0.14em;text-transform:uppercase;color:#12161c;">${esc(notice.brand)}</span>
565
+ </td></tr>
566
+ <tr><td bgcolor="#ffffff" style="background:#ffffff;border:1px solid #e3e8ef;border-radius:12px;padding:30px 32px;">
567
+ <h1 style="margin:0 0 14px;font:700 22px/1.3 ${SANS};letter-spacing:-0.01em;color:#12161c;">${esc(notice.headline)}</h1>
568
+ ${body}${details}
569
+ <table role="presentation" cellpadding="0" cellspacing="0" border="0" style="margin-top:10px;"><tr>
570
+ <td bgcolor="#007c99" style="border-radius:8px;background:#007c99;">
571
+ <a href="${esc(notice.actionUrl)}" style="display:inline-block;padding:12px 22px;border-radius:8px;font:600 14px/1 ${SANS};color:#ffffff;text-decoration:none;">${esc(notice.actionLabel)}</a>
572
+ </td>
573
+ </tr></table>
574
+ <p style="margin:12px 0 0;font:400 12px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;color:#55606b;word-break:break-all;">${esc(notice.actionUrl)}</p>
575
+ </td></tr>
576
+ <tr><td style="padding:18px 6px 0;font:400 12px/1.6 ${SANS};color:#6b7681;">
577
+ ${esc(notice.footer ?? CHAIN_FOOTER)}
578
+ </td></tr>
579
+ </table>
580
+ </td></tr>
581
+ </table>
582
+ </body>
583
+ </html>`;
584
+ }
585
+ /** `Label: value`, one line each — the details block in every plain-text render. */
586
+ function detailLines(notice) {
587
+ return (notice.details ?? []).map((row) => `${row.label}: ${row.value}`);
588
+ }
589
+ function renderText(notice) {
590
+ const details = detailLines(notice);
591
+ return [
592
+ notice.headline,
593
+ "",
594
+ blocks(notice)
595
+ .map((b) => b.text)
596
+ .join("\n\n"),
597
+ "",
598
+ ...(details.length ? [...details, ""] : []),
599
+ `${notice.actionLabel}: ${notice.actionUrl}`,
600
+ "",
601
+ "—",
602
+ notice.footer ?? CHAIN_FOOTER,
603
+ ].join("\n");
604
+ }
605
+ function render(notice) {
606
+ return { subject: notice.subject, html: renderHtml(notice), text: renderText(notice) };
607
+ }
608
+ /**
609
+ * The legacy `.m.rule.roomnotif` push rule pings the WHOLE room when a plain `body` contains
610
+ * `@room` (case-insensitive glob) and the sender may notify — the oracle may. A user-supplied name
611
+ * must not do that, so the `@` becomes a fullwidth `@` (no zero-width trick: `untrusted()` strips
612
+ * those, and a reader copying the text gets what they see).
613
+ */
614
+ const ROOM_PING = /@(room)/gi;
615
+ /**
616
+ * The chat-surface twin — same content, condensed. `workflows/steps.ts` posts it into the
617
+ * collection's review room as the `m.room.message` `body` (Matrix is the PRIMARY channel; email is
618
+ * the twin), so a paused/resumed notice can never drift between the
619
+ * two lanes: both renders are provably built from ONE Notice. The details and the callout ride
620
+ * along (member-emails §1.9); the footer does not — a room post isn't addressed to one person.
621
+ */
622
+ function chatBody(notice) {
623
+ const details = detailLines(notice);
624
+ return [
625
+ notice.summary,
626
+ ...blocks(notice).map((b) => b.text),
627
+ ...(details.length ? [details.join("\n")] : []),
628
+ `${notice.actionLabel}: ${notice.actionUrl}`,
629
+ ]
630
+ .join("\n\n")
631
+ .replace(ROOM_PING, "@$1");
632
+ }
633
+ /**
634
+ * The `formatted_body` twin of `chatBody` — the Matrix HTML subset only (`p`, `strong`, `br`,
635
+ * `a`), no tables/bgcolor: the email `render()` markup is far too heavy for a chat bubble. The
636
+ * callout is a bold paragraph. Same escaping rule as the email: every interpolated value goes
637
+ * through `esc`.
638
+ */
639
+ function noticeHtml(notice) {
640
+ const paragraphs = blocks(notice)
641
+ .map(({ text, callout }) => callout ? `<p><strong>${esc(text)}</strong></p>` : `<p>${esc(text)}</p>`)
642
+ .join("");
643
+ const details = notice.details?.length
644
+ ? `<p>${notice.details.map((row) => `${esc(row.label)}: ${esc(row.value)}`).join("<br>")}</p>`
645
+ : "";
646
+ return `<p><strong>${esc(notice.summary)}</strong></p>${paragraphs}${details}<p><a href="${esc(notice.actionUrl)}">${esc(notice.actionLabel)}</a></p>`;
647
+ }
648
+ function chat(notice) {
649
+ return { body: chatBody(notice), formattedBody: noticeHtml(notice) };
650
+ }
651
+ // --- the exported renders --------------------------------------------------------------------------
652
+ export function renderPausedEmail(input) {
653
+ return render(pausedNotice(input));
654
+ }
655
+ export function pausedNoticeChat(input) {
656
+ return chatBody(pausedNotice(input));
657
+ }
658
+ export function pausedNoticeHtml(input) {
659
+ return noticeHtml(pausedNotice(input));
660
+ }
661
+ export function renderResumedEmail(input) {
662
+ return render(resumedNotice(input));
663
+ }
664
+ export function resumedNoticeChat(input) {
665
+ return chatBody(resumedNotice(input));
666
+ }
667
+ export function resumedNoticeHtml(input) {
668
+ return noticeHtml(resumedNotice(input));
669
+ }
670
+ export function renderReviewRequestEmail(input) {
671
+ return render(reviewRequestNotice(input));
672
+ }
673
+ export function reviewRequestNoticeChat(input) {
674
+ return chatBody(reviewRequestNotice(input));
675
+ }
676
+ export function renderInviteEmail(input) {
677
+ return render(inviteNotice(input));
678
+ }
679
+ export function renderInviteAcceptedEmail(input) {
680
+ return render(inviteAcceptedNotice(input));
681
+ }
682
+ export function renderAccessGrantedEmail(input) {
683
+ return render(accessGrantedNotice(input));
684
+ }
685
+ export function renderReviewNeededEmail(input) {
686
+ return render(reviewNeededNotice(input));
687
+ }
688
+ /** §1.9: the review room's post, from the SAME Notice as the email. */
689
+ export function reviewNeededChat(input) {
690
+ return chat(reviewNeededNotice(input));
691
+ }
692
+ export function renderReviewBatchEmail(input) {
693
+ return render(reviewBatchNotice(input));
694
+ }
695
+ export function reviewBatchChat(input) {
696
+ return chat(reviewBatchNotice(input));
697
+ }
698
+ export function renderReviewReminderEmail(input) {
699
+ return render(reviewReminderNotice(input));
700
+ }
701
+ export function reviewReminderChat(input) {
702
+ return chat(reviewReminderNotice(input));
703
+ }
704
+ export function renderBalanceLowEmail(input) {
705
+ return render(balanceLowNotice(input));
706
+ }
707
+ export function renderReviewBillingCapEmail(input) {
708
+ return render(reviewBillingCapNotice(input));
709
+ }
710
+ export function renderReviewBillingExpiringEmail(input) {
711
+ return render(reviewBillingExpiringNotice(input));
712
+ }
713
+ //# sourceMappingURL=template.js.map