@ixo/decision-oracle 0.0.0-stage → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1117) hide show
  1. package/README.md +794 -2
  2. package/dist/act.d.ts +87 -0
  3. package/dist/act.d.ts.map +1 -0
  4. package/dist/act.js +20 -0
  5. package/dist/act.js.map +1 -0
  6. package/dist/app.d.ts +22 -0
  7. package/dist/app.d.ts.map +1 -0
  8. package/dist/app.js +128 -0
  9. package/dist/app.js.map +1 -0
  10. package/dist/c2pa.wasm +0 -0
  11. package/dist/cli/commands/api.d.ts +50 -0
  12. package/dist/cli/commands/api.d.ts.map +1 -0
  13. package/dist/cli/commands/api.js +737 -0
  14. package/dist/cli/commands/api.js.map +1 -0
  15. package/dist/cli/commands/create-collection.d.ts +40 -0
  16. package/dist/cli/commands/create-collection.d.ts.map +1 -0
  17. package/dist/cli/commands/create-collection.js +318 -0
  18. package/dist/cli/commands/create-collection.js.map +1 -0
  19. package/dist/cli/commands/create-deed.d.ts +31 -0
  20. package/dist/cli/commands/create-deed.d.ts.map +1 -0
  21. package/dist/cli/commands/create-deed.js +208 -0
  22. package/dist/cli/commands/create-deed.js.map +1 -0
  23. package/dist/cli/commands/delegation.d.ts +26 -0
  24. package/dist/cli/commands/delegation.d.ts.map +1 -0
  25. package/dist/cli/commands/delegation.js +162 -0
  26. package/dist/cli/commands/delegation.js.map +1 -0
  27. package/dist/cli/commands/derive.d.ts +22 -0
  28. package/dist/cli/commands/derive.d.ts.map +1 -0
  29. package/dist/cli/commands/derive.js +53 -0
  30. package/dist/cli/commands/derive.js.map +1 -0
  31. package/dist/cli/commands/engine.d.ts +25 -0
  32. package/dist/cli/commands/engine.d.ts.map +1 -0
  33. package/dist/cli/commands/engine.js +107 -0
  34. package/dist/cli/commands/engine.js.map +1 -0
  35. package/dist/cli/commands/erase.d.ts +17 -0
  36. package/dist/cli/commands/erase.d.ts.map +1 -0
  37. package/dist/cli/commands/erase.js +117 -0
  38. package/dist/cli/commands/erase.js.map +1 -0
  39. package/dist/cli/commands/facts-run.d.ts +30 -0
  40. package/dist/cli/commands/facts-run.d.ts.map +1 -0
  41. package/dist/cli/commands/facts-run.js +409 -0
  42. package/dist/cli/commands/facts-run.js.map +1 -0
  43. package/dist/cli/commands/facts-scaffold.d.ts +22 -0
  44. package/dist/cli/commands/facts-scaffold.d.ts.map +1 -0
  45. package/dist/cli/commands/facts-scaffold.js +208 -0
  46. package/dist/cli/commands/facts-scaffold.js.map +1 -0
  47. package/dist/cli/commands/init.d.ts +18 -0
  48. package/dist/cli/commands/init.d.ts.map +1 -0
  49. package/dist/cli/commands/init.js +34 -0
  50. package/dist/cli/commands/init.js.map +1 -0
  51. package/dist/cli/commands/login.d.ts +9 -0
  52. package/dist/cli/commands/login.d.ts.map +1 -0
  53. package/dist/cli/commands/login.js +16 -0
  54. package/dist/cli/commands/login.js.map +1 -0
  55. package/dist/cli/commands/logout.d.ts +10 -0
  56. package/dist/cli/commands/logout.d.ts.map +1 -0
  57. package/dist/cli/commands/logout.js +28 -0
  58. package/dist/cli/commands/logout.js.map +1 -0
  59. package/dist/cli/commands/manifest.d.ts +12 -0
  60. package/dist/cli/commands/manifest.d.ts.map +1 -0
  61. package/dist/cli/commands/manifest.js +48 -0
  62. package/dist/cli/commands/manifest.js.map +1 -0
  63. package/dist/cli/commands/oracle-init.d.ts +48 -0
  64. package/dist/cli/commands/oracle-init.d.ts.map +1 -0
  65. package/dist/cli/commands/oracle-init.js +1122 -0
  66. package/dist/cli/commands/oracle-init.js.map +1 -0
  67. package/dist/cli/commands/org.d.ts +28 -0
  68. package/dist/cli/commands/org.d.ts.map +1 -0
  69. package/dist/cli/commands/org.js +309 -0
  70. package/dist/cli/commands/org.js.map +1 -0
  71. package/dist/cli/commands/protocol-review.d.ts +20 -0
  72. package/dist/cli/commands/protocol-review.d.ts.map +1 -0
  73. package/dist/cli/commands/protocol-review.js +162 -0
  74. package/dist/cli/commands/protocol-review.js.map +1 -0
  75. package/dist/cli/commands/publish-protocol.d.ts +43 -0
  76. package/dist/cli/commands/publish-protocol.d.ts.map +1 -0
  77. package/dist/cli/commands/publish-protocol.js +345 -0
  78. package/dist/cli/commands/publish-protocol.js.map +1 -0
  79. package/dist/cli/commands/register.d.ts +16 -0
  80. package/dist/cli/commands/register.d.ts.map +1 -0
  81. package/dist/cli/commands/register.js +54 -0
  82. package/dist/cli/commands/register.js.map +1 -0
  83. package/dist/cli/commands/relink.d.ts +11 -0
  84. package/dist/cli/commands/relink.d.ts.map +1 -0
  85. package/dist/cli/commands/relink.js +36 -0
  86. package/dist/cli/commands/relink.js.map +1 -0
  87. package/dist/cli/commands/rubric-fetch-form.d.ts +16 -0
  88. package/dist/cli/commands/rubric-fetch-form.d.ts.map +1 -0
  89. package/dist/cli/commands/rubric-fetch-form.js +83 -0
  90. package/dist/cli/commands/rubric-fetch-form.js.map +1 -0
  91. package/dist/cli/commands/rubric-validate.d.ts +72 -0
  92. package/dist/cli/commands/rubric-validate.d.ts.map +1 -0
  93. package/dist/cli/commands/rubric-validate.js +163 -0
  94. package/dist/cli/commands/rubric-validate.js.map +1 -0
  95. package/dist/cli/commands/scan.d.ts +13 -0
  96. package/dist/cli/commands/scan.d.ts.map +1 -0
  97. package/dist/cli/commands/scan.js +39 -0
  98. package/dist/cli/commands/scan.js.map +1 -0
  99. package/dist/cli/commands/skills.d.ts +11 -0
  100. package/dist/cli/commands/skills.d.ts.map +1 -0
  101. package/dist/cli/commands/skills.js +19 -0
  102. package/dist/cli/commands/skills.js.map +1 -0
  103. package/dist/cli/commands/submit-claim.d.ts +25 -0
  104. package/dist/cli/commands/submit-claim.d.ts.map +1 -0
  105. package/dist/cli/commands/submit-claim.js +155 -0
  106. package/dist/cli/commands/submit-claim.js.map +1 -0
  107. package/dist/cli/index.d.ts +15 -0
  108. package/dist/cli/index.d.ts.map +1 -0
  109. package/dist/cli/index.js +206 -0
  110. package/dist/cli/index.js.map +1 -0
  111. package/dist/cli/lib/agent-card-schema.d.ts +8 -0
  112. package/dist/cli/lib/agent-card-schema.d.ts.map +1 -0
  113. package/dist/cli/lib/agent-card-schema.js +169 -0
  114. package/dist/cli/lib/agent-card-schema.js.map +1 -0
  115. package/dist/cli/lib/ai-rest.d.ts +12 -0
  116. package/dist/cli/lib/ai-rest.d.ts.map +1 -0
  117. package/dist/cli/lib/ai-rest.js +36 -0
  118. package/dist/cli/lib/ai-rest.js.map +1 -0
  119. package/dist/cli/lib/args.d.ts +33 -0
  120. package/dist/cli/lib/args.d.ts.map +1 -0
  121. package/dist/cli/lib/args.js +24 -0
  122. package/dist/cli/lib/args.js.map +1 -0
  123. package/dist/cli/lib/authhub.d.ts +7 -0
  124. package/dist/cli/lib/authhub.d.ts.map +1 -0
  125. package/dist/cli/lib/authhub.js +210 -0
  126. package/dist/cli/lib/authhub.js.map +1 -0
  127. package/dist/cli/lib/chain.d.ts +264 -0
  128. package/dist/cli/lib/chain.d.ts.map +1 -0
  129. package/dist/cli/lib/chain.js +584 -0
  130. package/dist/cli/lib/chain.js.map +1 -0
  131. package/dist/cli/lib/devvars.d.ts +59 -0
  132. package/dist/cli/lib/devvars.d.ts.map +1 -0
  133. package/dist/cli/lib/devvars.js +206 -0
  134. package/dist/cli/lib/devvars.js.map +1 -0
  135. package/dist/cli/lib/engine.d.ts +54 -0
  136. package/dist/cli/lib/engine.d.ts.map +1 -0
  137. package/dist/cli/lib/engine.js +112 -0
  138. package/dist/cli/lib/engine.js.map +1 -0
  139. package/dist/cli/lib/identity-cards.d.ts +188 -0
  140. package/dist/cli/lib/identity-cards.d.ts.map +1 -0
  141. package/dist/cli/lib/identity-cards.js +261 -0
  142. package/dist/cli/lib/identity-cards.js.map +1 -0
  143. package/dist/cli/lib/matrix-account.d.ts +79 -0
  144. package/dist/cli/lib/matrix-account.d.ts.map +1 -0
  145. package/dist/cli/lib/matrix-account.js +228 -0
  146. package/dist/cli/lib/matrix-account.js.map +1 -0
  147. package/dist/cli/lib/oracle-account.d.ts +108 -0
  148. package/dist/cli/lib/oracle-account.d.ts.map +1 -0
  149. package/dist/cli/lib/oracle-account.js +207 -0
  150. package/dist/cli/lib/oracle-account.js.map +1 -0
  151. package/dist/cli/lib/project.d.ts +22 -0
  152. package/dist/cli/lib/project.d.ts.map +1 -0
  153. package/dist/cli/lib/project.js +62 -0
  154. package/dist/cli/lib/project.js.map +1 -0
  155. package/dist/cli/lib/session.d.ts +109 -0
  156. package/dist/cli/lib/session.d.ts.map +1 -0
  157. package/dist/cli/lib/session.js +354 -0
  158. package/dist/cli/lib/session.js.map +1 -0
  159. package/dist/cli/lib/workorder.d.ts +57 -0
  160. package/dist/cli/lib/workorder.d.ts.map +1 -0
  161. package/dist/cli/lib/workorder.js +101 -0
  162. package/dist/cli/lib/workorder.js.map +1 -0
  163. package/dist/config.d.ts +221 -0
  164. package/dist/config.d.ts.map +1 -0
  165. package/dist/config.js +431 -0
  166. package/dist/config.js.map +1 -0
  167. package/dist/context.d.ts +88 -0
  168. package/dist/context.d.ts.map +1 -0
  169. package/dist/context.js +9 -0
  170. package/dist/context.js.map +1 -0
  171. package/dist/contracts/api.d.ts +3367 -0
  172. package/dist/contracts/api.d.ts.map +1 -0
  173. package/dist/contracts/api.js +1303 -0
  174. package/dist/contracts/api.js.map +1 -0
  175. package/dist/contracts/capabilities.d.ts +126 -0
  176. package/dist/contracts/capabilities.d.ts.map +1 -0
  177. package/dist/contracts/capabilities.js +164 -0
  178. package/dist/contracts/capabilities.js.map +1 -0
  179. package/dist/contracts/claim-source.d.ts +98 -0
  180. package/dist/contracts/claim-source.d.ts.map +1 -0
  181. package/dist/contracts/claim-source.js +17 -0
  182. package/dist/contracts/claim-source.js.map +1 -0
  183. package/dist/contracts/errors.d.ts +150 -0
  184. package/dist/contracts/errors.d.ts.map +1 -0
  185. package/dist/contracts/errors.js +121 -0
  186. package/dist/contracts/errors.js.map +1 -0
  187. package/dist/contracts/index.d.ts +15 -0
  188. package/dist/contracts/index.d.ts.map +1 -0
  189. package/dist/contracts/index.js +11 -0
  190. package/dist/contracts/index.js.map +1 -0
  191. package/dist/contracts/payment-gate.d.ts +129 -0
  192. package/dist/contracts/payment-gate.d.ts.map +1 -0
  193. package/dist/contracts/payment-gate.js +24 -0
  194. package/dist/contracts/payment-gate.js.map +1 -0
  195. package/dist/contracts/start-api-claim.d.ts +90 -0
  196. package/dist/contracts/start-api-claim.d.ts.map +1 -0
  197. package/dist/contracts/start-api-claim.js +22 -0
  198. package/dist/contracts/start-api-claim.js.map +1 -0
  199. package/dist/contracts/webhooks.d.ts +1487 -0
  200. package/dist/contracts/webhooks.d.ts.map +1 -0
  201. package/dist/contracts/webhooks.js +71 -0
  202. package/dist/contracts/webhooks.js.map +1 -0
  203. package/dist/contracts/work-order.d.ts +29 -0
  204. package/dist/contracts/work-order.d.ts.map +1 -0
  205. package/dist/contracts/work-order.js +12 -0
  206. package/dist/contracts/work-order.js.map +1 -0
  207. package/dist/cron/ai-cost.d.ts +29 -0
  208. package/dist/cron/ai-cost.d.ts.map +1 -0
  209. package/dist/cron/ai-cost.js +80 -0
  210. package/dist/cron/ai-cost.js.map +1 -0
  211. package/dist/cron/api-lane.d.ts +39 -0
  212. package/dist/cron/api-lane.d.ts.map +1 -0
  213. package/dist/cron/api-lane.js +203 -0
  214. package/dist/cron/api-lane.js.map +1 -0
  215. package/dist/cron/backlog.d.ts +50 -0
  216. package/dist/cron/backlog.d.ts.map +1 -0
  217. package/dist/cron/backlog.js +115 -0
  218. package/dist/cron/backlog.js.map +1 -0
  219. package/dist/cron/billing.d.ts +11 -0
  220. package/dist/cron/billing.d.ts.map +1 -0
  221. package/dist/cron/billing.js +69 -0
  222. package/dist/cron/billing.js.map +1 -0
  223. package/dist/cron/collection.d.ts +50 -0
  224. package/dist/cron/collection.d.ts.map +1 -0
  225. package/dist/cron/collection.js +118 -0
  226. package/dist/cron/collection.js.map +1 -0
  227. package/dist/cron/funding.d.ts +16 -0
  228. package/dist/cron/funding.d.ts.map +1 -0
  229. package/dist/cron/funding.js +262 -0
  230. package/dist/cron/funding.js.map +1 -0
  231. package/dist/cron/payer-billing.d.ts +38 -0
  232. package/dist/cron/payer-billing.d.ts.map +1 -0
  233. package/dist/cron/payer-billing.js +119 -0
  234. package/dist/cron/payer-billing.js.map +1 -0
  235. package/dist/cron/scan.d.ts +43 -0
  236. package/dist/cron/scan.d.ts.map +1 -0
  237. package/dist/cron/scan.js +250 -0
  238. package/dist/cron/scan.js.map +1 -0
  239. package/dist/db/client.d.ts +14 -0
  240. package/dist/db/client.d.ts.map +1 -0
  241. package/dist/db/client.js +14 -0
  242. package/dist/db/client.js.map +1 -0
  243. package/dist/db/index.d.ts +7 -0
  244. package/dist/db/index.d.ts.map +1 -0
  245. package/dist/db/index.js +7 -0
  246. package/dist/db/index.js.map +1 -0
  247. package/dist/db/schema.d.ts +6738 -0
  248. package/dist/db/schema.d.ts.map +1 -0
  249. package/dist/db/schema.js +1433 -0
  250. package/dist/db/schema.js.map +1 -0
  251. package/dist/define-oracle.d.ts +32 -0
  252. package/dist/define-oracle.d.ts.map +1 -0
  253. package/dist/define-oracle.js +80 -0
  254. package/dist/define-oracle.js.map +1 -0
  255. package/dist/dev-oracle.d.ts +9 -0
  256. package/dist/dev-oracle.d.ts.map +1 -0
  257. package/dist/dev-oracle.js +19 -0
  258. package/dist/dev-oracle.js.map +1 -0
  259. package/dist/dev-worker.d.ts +10 -0
  260. package/dist/dev-worker.d.ts.map +1 -0
  261. package/dist/dev-worker.js +12 -0
  262. package/dist/dev-worker.js.map +1 -0
  263. package/dist/env.d.ts +146 -0
  264. package/dist/env.d.ts.map +1 -0
  265. package/dist/env.js +10 -0
  266. package/dist/env.js.map +1 -0
  267. package/dist/facts/exif.d.ts +43 -0
  268. package/dist/facts/exif.d.ts.map +1 -0
  269. package/dist/facts/exif.js +224 -0
  270. package/dist/facts/exif.js.map +1 -0
  271. package/dist/facts/fact.d.ts +62 -0
  272. package/dist/facts/fact.d.ts.map +1 -0
  273. package/dist/facts/fact.js +105 -0
  274. package/dist/facts/fact.js.map +1 -0
  275. package/dist/facts/geo.d.ts +55 -0
  276. package/dist/facts/geo.d.ts.map +1 -0
  277. package/dist/facts/geo.js +267 -0
  278. package/dist/facts/geo.js.map +1 -0
  279. package/dist/facts/index.d.ts +31 -0
  280. package/dist/facts/index.d.ts.map +1 -0
  281. package/dist/facts/index.js +27 -0
  282. package/dist/facts/index.js.map +1 -0
  283. package/dist/facts/linked-doc.d.ts +60 -0
  284. package/dist/facts/linked-doc.d.ts.map +1 -0
  285. package/dist/facts/linked-doc.js +101 -0
  286. package/dist/facts/linked-doc.js.map +1 -0
  287. package/dist/facts/types.d.ts +278 -0
  288. package/dist/facts/types.d.ts.map +1 -0
  289. package/dist/facts/types.js +19 -0
  290. package/dist/facts/types.js.map +1 -0
  291. package/dist/index.d.ts +25 -0
  292. package/dist/index.d.ts.map +1 -0
  293. package/dist/index.js +19 -0
  294. package/dist/index.js.map +1 -0
  295. package/dist/lib/api-lane/accept.d.ts +29 -0
  296. package/dist/lib/api-lane/accept.d.ts.map +1 -0
  297. package/dist/lib/api-lane/accept.js +218 -0
  298. package/dist/lib/api-lane/accept.js.map +1 -0
  299. package/dist/lib/api-lane/claim-list.d.ts +44 -0
  300. package/dist/lib/api-lane/claim-list.d.ts.map +1 -0
  301. package/dist/lib/api-lane/claim-list.js +92 -0
  302. package/dist/lib/api-lane/claim-list.js.map +1 -0
  303. package/dist/lib/api-lane/company.d.ts +56 -0
  304. package/dist/lib/api-lane/company.d.ts.map +1 -0
  305. package/dist/lib/api-lane/company.js +103 -0
  306. package/dist/lib/api-lane/company.js.map +1 -0
  307. package/dist/lib/api-lane/events.d.ts +21 -0
  308. package/dist/lib/api-lane/events.d.ts.map +1 -0
  309. package/dist/lib/api-lane/events.js +111 -0
  310. package/dist/lib/api-lane/events.js.map +1 -0
  311. package/dist/lib/api-lane/ids.d.ts +39 -0
  312. package/dist/lib/api-lane/ids.d.ts.map +1 -0
  313. package/dist/lib/api-lane/ids.js +78 -0
  314. package/dist/lib/api-lane/ids.js.map +1 -0
  315. package/dist/lib/api-lane/index.d.ts +16 -0
  316. package/dist/lib/api-lane/index.d.ts.map +1 -0
  317. package/dist/lib/api-lane/index.js +16 -0
  318. package/dist/lib/api-lane/index.js.map +1 -0
  319. package/dist/lib/api-lane/linked.d.ts +264 -0
  320. package/dist/lib/api-lane/linked.d.ts.map +1 -0
  321. package/dist/lib/api-lane/linked.js +272 -0
  322. package/dist/lib/api-lane/linked.js.map +1 -0
  323. package/dist/lib/api-lane/media-type.d.ts +15 -0
  324. package/dist/lib/api-lane/media-type.d.ts.map +1 -0
  325. package/dist/lib/api-lane/media-type.js +73 -0
  326. package/dist/lib/api-lane/media-type.js.map +1 -0
  327. package/dist/lib/api-lane/member-emails.d.ts +83 -0
  328. package/dist/lib/api-lane/member-emails.d.ts.map +1 -0
  329. package/dist/lib/api-lane/member-emails.js +213 -0
  330. package/dist/lib/api-lane/member-emails.js.map +1 -0
  331. package/dist/lib/api-lane/members.d.ts +42 -0
  332. package/dist/lib/api-lane/members.d.ts.map +1 -0
  333. package/dist/lib/api-lane/members.js +75 -0
  334. package/dist/lib/api-lane/members.js.map +1 -0
  335. package/dist/lib/api-lane/notify.d.ts +47 -0
  336. package/dist/lib/api-lane/notify.d.ts.map +1 -0
  337. package/dist/lib/api-lane/notify.js +240 -0
  338. package/dist/lib/api-lane/notify.js.map +1 -0
  339. package/dist/lib/api-lane/pause.d.ts +41 -0
  340. package/dist/lib/api-lane/pause.d.ts.map +1 -0
  341. package/dist/lib/api-lane/pause.js +155 -0
  342. package/dist/lib/api-lane/pause.js.map +1 -0
  343. package/dist/lib/api-lane/record.d.ts +76 -0
  344. package/dist/lib/api-lane/record.d.ts.map +1 -0
  345. package/dist/lib/api-lane/record.js +337 -0
  346. package/dist/lib/api-lane/record.js.map +1 -0
  347. package/dist/lib/api-lane/retention.d.ts +43 -0
  348. package/dist/lib/api-lane/retention.d.ts.map +1 -0
  349. package/dist/lib/api-lane/retention.js +176 -0
  350. package/dist/lib/api-lane/retention.js.map +1 -0
  351. package/dist/lib/api-lane/review.d.ts +76 -0
  352. package/dist/lib/api-lane/review.d.ts.map +1 -0
  353. package/dist/lib/api-lane/review.js +355 -0
  354. package/dist/lib/api-lane/review.js.map +1 -0
  355. package/dist/lib/api-lane/reviewers.d.ts +109 -0
  356. package/dist/lib/api-lane/reviewers.d.ts.map +1 -0
  357. package/dist/lib/api-lane/reviewers.js +755 -0
  358. package/dist/lib/api-lane/reviewers.js.map +1 -0
  359. package/dist/lib/api-lane/source-delete.d.ts +16 -0
  360. package/dist/lib/api-lane/source-delete.d.ts.map +1 -0
  361. package/dist/lib/api-lane/source-delete.js +50 -0
  362. package/dist/lib/api-lane/source-delete.js.map +1 -0
  363. package/dist/lib/api-lane/source.d.ts +19 -0
  364. package/dist/lib/api-lane/source.d.ts.map +1 -0
  365. package/dist/lib/api-lane/source.js +226 -0
  366. package/dist/lib/api-lane/source.js.map +1 -0
  367. package/dist/lib/api-lane/submitter.d.ts +22 -0
  368. package/dist/lib/api-lane/submitter.d.ts.map +1 -0
  369. package/dist/lib/api-lane/submitter.js +34 -0
  370. package/dist/lib/api-lane/submitter.js.map +1 -0
  371. package/dist/lib/api-lane/timeline.d.ts +20 -0
  372. package/dist/lib/api-lane/timeline.d.ts.map +1 -0
  373. package/dist/lib/api-lane/timeline.js +23 -0
  374. package/dist/lib/api-lane/timeline.js.map +1 -0
  375. package/dist/lib/api-lane/webhook-crypto.d.ts +44 -0
  376. package/dist/lib/api-lane/webhook-crypto.d.ts.map +1 -0
  377. package/dist/lib/api-lane/webhook-crypto.js +103 -0
  378. package/dist/lib/api-lane/webhook-crypto.js.map +1 -0
  379. package/dist/lib/api-lane/webhooks.d.ts +117 -0
  380. package/dist/lib/api-lane/webhooks.d.ts.map +1 -0
  381. package/dist/lib/api-lane/webhooks.js +503 -0
  382. package/dist/lib/api-lane/webhooks.js.map +1 -0
  383. package/dist/lib/archive.d.ts +64 -0
  384. package/dist/lib/archive.d.ts.map +1 -0
  385. package/dist/lib/archive.js +305 -0
  386. package/dist/lib/archive.js.map +1 -0
  387. package/dist/lib/bech32.d.ts +8 -0
  388. package/dist/lib/bech32.d.ts.map +1 -0
  389. package/dist/lib/bech32.js +39 -0
  390. package/dist/lib/bech32.js.map +1 -0
  391. package/dist/lib/claim-erase.d.ts +22 -0
  392. package/dist/lib/claim-erase.d.ts.map +1 -0
  393. package/dist/lib/claim-erase.js +44 -0
  394. package/dist/lib/claim-erase.js.map +1 -0
  395. package/dist/lib/cursor.d.ts +11 -0
  396. package/dist/lib/cursor.d.ts.map +1 -0
  397. package/dist/lib/cursor.js +20 -0
  398. package/dist/lib/cursor.js.map +1 -0
  399. package/dist/lib/email/send.d.ts +43 -0
  400. package/dist/lib/email/send.d.ts.map +1 -0
  401. package/dist/lib/email/send.js +71 -0
  402. package/dist/lib/email/send.js.map +1 -0
  403. package/dist/lib/email/template.d.ts +217 -0
  404. package/dist/lib/email/template.d.ts.map +1 -0
  405. package/dist/lib/email/template.js +713 -0
  406. package/dist/lib/email/template.js.map +1 -0
  407. package/dist/lib/engine/adr36.d.ts +56 -0
  408. package/dist/lib/engine/adr36.d.ts.map +1 -0
  409. package/dist/lib/engine/adr36.js +76 -0
  410. package/dist/lib/engine/adr36.js.map +1 -0
  411. package/dist/lib/engine/client.d.ts +162 -0
  412. package/dist/lib/engine/client.d.ts.map +1 -0
  413. package/dist/lib/engine/client.js +473 -0
  414. package/dist/lib/engine/client.js.map +1 -0
  415. package/dist/lib/engine/types.d.ts +1356 -0
  416. package/dist/lib/engine/types.d.ts.map +1 -0
  417. package/dist/lib/engine/types.js +562 -0
  418. package/dist/lib/engine/types.js.map +1 -0
  419. package/dist/lib/errors.d.ts +73 -0
  420. package/dist/lib/errors.d.ts.map +1 -0
  421. package/dist/lib/errors.js +96 -0
  422. package/dist/lib/errors.js.map +1 -0
  423. package/dist/lib/facts/builder.d.ts +88 -0
  424. package/dist/lib/facts/builder.d.ts.map +1 -0
  425. package/dist/lib/facts/builder.js +239 -0
  426. package/dist/lib/facts/builder.js.map +1 -0
  427. package/dist/lib/facts/ctx.d.ts +34 -0
  428. package/dist/lib/facts/ctx.d.ts.map +1 -0
  429. package/dist/lib/facts/ctx.js +51 -0
  430. package/dist/lib/facts/ctx.js.map +1 -0
  431. package/dist/lib/facts/expected.d.ts +23 -0
  432. package/dist/lib/facts/expected.d.ts.map +1 -0
  433. package/dist/lib/facts/expected.js +16 -0
  434. package/dist/lib/facts/expected.js.map +1 -0
  435. package/dist/lib/facts/fact-cache.d.ts +469 -0
  436. package/dist/lib/facts/fact-cache.d.ts.map +1 -0
  437. package/dist/lib/facts/fact-cache.js +52 -0
  438. package/dist/lib/facts/fact-cache.js.map +1 -0
  439. package/dist/lib/facts/factset.d.ts +608 -0
  440. package/dist/lib/facts/factset.d.ts.map +1 -0
  441. package/dist/lib/facts/factset.js +226 -0
  442. package/dist/lib/facts/factset.js.map +1 -0
  443. package/dist/lib/facts/producer.d.ts +190 -0
  444. package/dist/lib/facts/producer.d.ts.map +1 -0
  445. package/dist/lib/facts/producer.js +15 -0
  446. package/dist/lib/facts/producer.js.map +1 -0
  447. package/dist/lib/facts/runner.d.ts +111 -0
  448. package/dist/lib/facts/runner.d.ts.map +1 -0
  449. package/dist/lib/facts/runner.js +438 -0
  450. package/dist/lib/facts/runner.js.map +1 -0
  451. package/dist/lib/facts/stock/ai-check.d.ts +100 -0
  452. package/dist/lib/facts/stock/ai-check.d.ts.map +1 -0
  453. package/dist/lib/facts/stock/ai-check.js +526 -0
  454. package/dist/lib/facts/stock/ai-check.js.map +1 -0
  455. package/dist/lib/facts/stock/ai-inputs.d.ts +104 -0
  456. package/dist/lib/facts/stock/ai-inputs.d.ts.map +1 -0
  457. package/dist/lib/facts/stock/ai-inputs.js +332 -0
  458. package/dist/lib/facts/stock/ai-inputs.js.map +1 -0
  459. package/dist/lib/facts/stock/ai-provider.d.ts +105 -0
  460. package/dist/lib/facts/stock/ai-provider.d.ts.map +1 -0
  461. package/dist/lib/facts/stock/ai-provider.js +250 -0
  462. package/dist/lib/facts/stock/ai-provider.js.map +1 -0
  463. package/dist/lib/facts/stock/ai-unique.d.ts +85 -0
  464. package/dist/lib/facts/stock/ai-unique.d.ts.map +1 -0
  465. package/dist/lib/facts/stock/ai-unique.js +208 -0
  466. package/dist/lib/facts/stock/ai-unique.js.map +1 -0
  467. package/dist/lib/facts/stock/archive.d.ts +63 -0
  468. package/dist/lib/facts/stock/archive.d.ts.map +1 -0
  469. package/dist/lib/facts/stock/archive.js +349 -0
  470. package/dist/lib/facts/stock/archive.js.map +1 -0
  471. package/dist/lib/facts/stock/c2pa-trust-list.d.ts +16 -0
  472. package/dist/lib/facts/stock/c2pa-trust-list.d.ts.map +1 -0
  473. package/dist/lib/facts/stock/c2pa-trust-list.js +637 -0
  474. package/dist/lib/facts/stock/c2pa-trust-list.js.map +1 -0
  475. package/dist/lib/facts/stock/c2pa.d.ts +56 -0
  476. package/dist/lib/facts/stock/c2pa.d.ts.map +1 -0
  477. package/dist/lib/facts/stock/c2pa.js +234 -0
  478. package/dist/lib/facts/stock/c2pa.js.map +1 -0
  479. package/dist/lib/facts/stock/call.d.ts +91 -0
  480. package/dist/lib/facts/stock/call.d.ts.map +1 -0
  481. package/dist/lib/facts/stock/call.js +281 -0
  482. package/dist/lib/facts/stock/call.js.map +1 -0
  483. package/dist/lib/facts/stock/capability.d.ts +39 -0
  484. package/dist/lib/facts/stock/capability.d.ts.map +1 -0
  485. package/dist/lib/facts/stock/capability.js +59 -0
  486. package/dist/lib/facts/stock/capability.js.map +1 -0
  487. package/dist/lib/facts/stock/ext-source.d.ts +51 -0
  488. package/dist/lib/facts/stock/ext-source.d.ts.map +1 -0
  489. package/dist/lib/facts/stock/ext-source.js +201 -0
  490. package/dist/lib/facts/stock/ext-source.js.map +1 -0
  491. package/dist/lib/facts/stock/frequency-fact.d.ts +59 -0
  492. package/dist/lib/facts/stock/frequency-fact.d.ts.map +1 -0
  493. package/dist/lib/facts/stock/frequency-fact.js +86 -0
  494. package/dist/lib/facts/stock/frequency-fact.js.map +1 -0
  495. package/dist/lib/facts/stock/frequency.d.ts +32 -0
  496. package/dist/lib/facts/stock/frequency.d.ts.map +1 -0
  497. package/dist/lib/facts/stock/frequency.js +48 -0
  498. package/dist/lib/facts/stock/frequency.js.map +1 -0
  499. package/dist/lib/facts/stock/index.d.ts +27 -0
  500. package/dist/lib/facts/stock/index.d.ts.map +1 -0
  501. package/dist/lib/facts/stock/index.js +28 -0
  502. package/dist/lib/facts/stock/index.js.map +1 -0
  503. package/dist/lib/facts/stock/normalize.d.ts +45 -0
  504. package/dist/lib/facts/stock/normalize.d.ts.map +1 -0
  505. package/dist/lib/facts/stock/normalize.js +135 -0
  506. package/dist/lib/facts/stock/normalize.js.map +1 -0
  507. package/dist/lib/facts/stock/phash.d.ts +55 -0
  508. package/dist/lib/facts/stock/phash.d.ts.map +1 -0
  509. package/dist/lib/facts/stock/phash.js +256 -0
  510. package/dist/lib/facts/stock/phash.js.map +1 -0
  511. package/dist/lib/facts/stock/rule-defaults.d.ts +72 -0
  512. package/dist/lib/facts/stock/rule-defaults.d.ts.map +1 -0
  513. package/dist/lib/facts/stock/rule-defaults.js +55 -0
  514. package/dist/lib/facts/stock/rule-defaults.js.map +1 -0
  515. package/dist/lib/facts/stock/send.d.ts +52 -0
  516. package/dist/lib/facts/stock/send.d.ts.map +1 -0
  517. package/dist/lib/facts/stock/send.js +148 -0
  518. package/dist/lib/facts/stock/send.js.map +1 -0
  519. package/dist/lib/facts/stock/unique-score.d.ts +138 -0
  520. package/dist/lib/facts/stock/unique-score.d.ts.map +1 -0
  521. package/dist/lib/facts/stock/unique-score.js +257 -0
  522. package/dist/lib/facts/stock/unique-score.js.map +1 -0
  523. package/dist/lib/facts/stock/unique-store.d.ts +420 -0
  524. package/dist/lib/facts/stock/unique-store.d.ts.map +1 -0
  525. package/dist/lib/facts/stock/unique-store.js +328 -0
  526. package/dist/lib/facts/stock/unique-store.js.map +1 -0
  527. package/dist/lib/facts/stock/unique.d.ts +35 -0
  528. package/dist/lib/facts/stock/unique.d.ts.map +1 -0
  529. package/dist/lib/facts/stock/unique.js +327 -0
  530. package/dist/lib/facts/stock/unique.js.map +1 -0
  531. package/dist/lib/facts/tools.d.ts +57 -0
  532. package/dist/lib/facts/tools.d.ts.map +1 -0
  533. package/dist/lib/facts/tools.js +325 -0
  534. package/dist/lib/facts/tools.js.map +1 -0
  535. package/dist/lib/facts/validate.d.ts +33 -0
  536. package/dist/lib/facts/validate.d.ts.map +1 -0
  537. package/dist/lib/facts/validate.js +137 -0
  538. package/dist/lib/facts/validate.js.map +1 -0
  539. package/dist/lib/hash.d.ts +44 -0
  540. package/dist/lib/hash.d.ts.map +1 -0
  541. package/dist/lib/hash.js +80 -0
  542. package/dist/lib/hash.js.map +1 -0
  543. package/dist/lib/http/client.d.ts +113 -0
  544. package/dist/lib/http/client.d.ts.map +1 -0
  545. package/dist/lib/http/client.js +330 -0
  546. package/dist/lib/http/client.js.map +1 -0
  547. package/dist/lib/ids.d.ts +17 -0
  548. package/dist/lib/ids.d.ts.map +1 -0
  549. package/dist/lib/ids.js +26 -0
  550. package/dist/lib/ids.js.map +1 -0
  551. package/dist/lib/ixo/attachments.d.ts +116 -0
  552. package/dist/lib/ixo/attachments.d.ts.map +1 -0
  553. package/dist/lib/ixo/attachments.js +290 -0
  554. package/dist/lib/ixo/attachments.js.map +1 -0
  555. package/dist/lib/ixo/authz.d.ts +40 -0
  556. package/dist/lib/ixo/authz.d.ts.map +1 -0
  557. package/dist/lib/ixo/authz.js +113 -0
  558. package/dist/lib/ixo/authz.js.map +1 -0
  559. package/dist/lib/ixo/blocksync/index.d.ts +90 -0
  560. package/dist/lib/ixo/blocksync/index.d.ts.map +1 -0
  561. package/dist/lib/ixo/blocksync/index.js +251 -0
  562. package/dist/lib/ixo/blocksync/index.js.map +1 -0
  563. package/dist/lib/ixo/blocksync/queries.d.ts +15 -0
  564. package/dist/lib/ixo/blocksync/queries.d.ts.map +1 -0
  565. package/dist/lib/ixo/blocksync/queries.js +144 -0
  566. package/dist/lib/ixo/blocksync/queries.js.map +1 -0
  567. package/dist/lib/ixo/blocksync/types.d.ts +184 -0
  568. package/dist/lib/ixo/blocksync/types.d.ts.map +1 -0
  569. package/dist/lib/ixo/blocksync/types.js +108 -0
  570. package/dist/lib/ixo/blocksync/types.js.map +1 -0
  571. package/dist/lib/ixo/cellnode.d.ts +35 -0
  572. package/dist/lib/ixo/cellnode.d.ts.map +1 -0
  573. package/dist/lib/ixo/cellnode.js +43 -0
  574. package/dist/lib/ixo/cellnode.js.map +1 -0
  575. package/dist/lib/ixo/chain-write.d.ts +130 -0
  576. package/dist/lib/ixo/chain-write.d.ts.map +1 -0
  577. package/dist/lib/ixo/chain-write.js +460 -0
  578. package/dist/lib/ixo/chain-write.js.map +1 -0
  579. package/dist/lib/ixo/chain.d.ts +1046 -0
  580. package/dist/lib/ixo/chain.d.ts.map +1 -0
  581. package/dist/lib/ixo/chain.js +279 -0
  582. package/dist/lib/ixo/chain.js.map +1 -0
  583. package/dist/lib/ixo/claim-bot.d.ts +49 -0
  584. package/dist/lib/ixo/claim-bot.d.ts.map +1 -0
  585. package/dist/lib/ixo/claim-bot.js +141 -0
  586. package/dist/lib/ixo/claim-bot.js.map +1 -0
  587. package/dist/lib/ixo/delegation-verify.d.ts +44 -0
  588. package/dist/lib/ixo/delegation-verify.d.ts.map +1 -0
  589. package/dist/lib/ixo/delegation-verify.js +101 -0
  590. package/dist/lib/ixo/delegation-verify.js.map +1 -0
  591. package/dist/lib/ixo/did.d.ts +13 -0
  592. package/dist/lib/ixo/did.d.ts.map +1 -0
  593. package/dist/lib/ixo/did.js +85 -0
  594. package/dist/lib/ixo/did.js.map +1 -0
  595. package/dist/lib/ixo/grant-chain.d.ts +55 -0
  596. package/dist/lib/ixo/grant-chain.d.ts.map +1 -0
  597. package/dist/lib/ixo/grant-chain.js +185 -0
  598. package/dist/lib/ixo/grant-chain.js.map +1 -0
  599. package/dist/lib/ixo/identity.d.ts +32 -0
  600. package/dist/lib/ixo/identity.d.ts.map +1 -0
  601. package/dist/lib/ixo/identity.js +104 -0
  602. package/dist/lib/ixo/identity.js.map +1 -0
  603. package/dist/lib/ixo/index.d.ts +118 -0
  604. package/dist/lib/ixo/index.d.ts.map +1 -0
  605. package/dist/lib/ixo/index.js +395 -0
  606. package/dist/lib/ixo/index.js.map +1 -0
  607. package/dist/lib/ixo/payment.d.ts +104 -0
  608. package/dist/lib/ixo/payment.d.ts.map +1 -0
  609. package/dist/lib/ixo/payment.js +136 -0
  610. package/dist/lib/ixo/payment.js.map +1 -0
  611. package/dist/lib/ixo/ucan-store.d.ts +30 -0
  612. package/dist/lib/ixo/ucan-store.d.ts.map +1 -0
  613. package/dist/lib/ixo/ucan-store.js +134 -0
  614. package/dist/lib/ixo/ucan-store.js.map +1 -0
  615. package/dist/lib/ixo/ucan.d.ts +96 -0
  616. package/dist/lib/ixo/ucan.d.ts.map +1 -0
  617. package/dist/lib/ixo/ucan.js +216 -0
  618. package/dist/lib/ixo/ucan.js.map +1 -0
  619. package/dist/lib/ixo/verified-read.d.ts +43 -0
  620. package/dist/lib/ixo/verified-read.d.ts.map +1 -0
  621. package/dist/lib/ixo/verified-read.js +73 -0
  622. package/dist/lib/ixo/verified-read.js.map +1 -0
  623. package/dist/lib/ixo/vfs.d.ts +27 -0
  624. package/dist/lib/ixo/vfs.d.ts.map +1 -0
  625. package/dist/lib/ixo/vfs.js +42 -0
  626. package/dist/lib/ixo/vfs.js.map +1 -0
  627. package/dist/lib/ixo/web-did.d.ts +7 -0
  628. package/dist/lib/ixo/web-did.d.ts.map +1 -0
  629. package/dist/lib/ixo/web-did.js +9 -0
  630. package/dist/lib/ixo/web-did.js.map +1 -0
  631. package/dist/lib/logger.d.ts +34 -0
  632. package/dist/lib/logger.d.ts.map +1 -0
  633. package/dist/lib/logger.js +126 -0
  634. package/dist/lib/logger.js.map +1 -0
  635. package/dist/lib/matrix/api.d.ts +57 -0
  636. package/dist/lib/matrix/api.d.ts.map +1 -0
  637. package/dist/lib/matrix/api.js +58 -0
  638. package/dist/lib/matrix/api.js.map +1 -0
  639. package/dist/lib/matrix/client.d.ts +41 -0
  640. package/dist/lib/matrix/client.d.ts.map +1 -0
  641. package/dist/lib/matrix/client.js +104 -0
  642. package/dist/lib/matrix/client.js.map +1 -0
  643. package/dist/lib/matrix/deliver.d.ts +224 -0
  644. package/dist/lib/matrix/deliver.d.ts.map +1 -0
  645. package/dist/lib/matrix/deliver.js +788 -0
  646. package/dist/lib/matrix/deliver.js.map +1 -0
  647. package/dist/lib/matrix/events.d.ts +114 -0
  648. package/dist/lib/matrix/events.d.ts.map +1 -0
  649. package/dist/lib/matrix/events.js +143 -0
  650. package/dist/lib/matrix/events.js.map +1 -0
  651. package/dist/lib/matrix/mxid.d.ts +24 -0
  652. package/dist/lib/matrix/mxid.d.ts.map +1 -0
  653. package/dist/lib/matrix/mxid.js +47 -0
  654. package/dist/lib/matrix/mxid.js.map +1 -0
  655. package/dist/lib/metrics.d.ts +105 -0
  656. package/dist/lib/metrics.d.ts.map +1 -0
  657. package/dist/lib/metrics.js +204 -0
  658. package/dist/lib/metrics.js.map +1 -0
  659. package/dist/lib/oauth/approvals.d.ts +160 -0
  660. package/dist/lib/oauth/approvals.d.ts.map +1 -0
  661. package/dist/lib/oauth/approvals.js +273 -0
  662. package/dist/lib/oauth/approvals.js.map +1 -0
  663. package/dist/lib/oauth/standing.d.ts +152 -0
  664. package/dist/lib/oauth/standing.d.ts.map +1 -0
  665. package/dist/lib/oauth/standing.js +299 -0
  666. package/dist/lib/oauth/standing.js.map +1 -0
  667. package/dist/lib/oauth/token.d.ts +60 -0
  668. package/dist/lib/oauth/token.d.ts.map +1 -0
  669. package/dist/lib/oauth/token.js +129 -0
  670. package/dist/lib/oauth/token.js.map +1 -0
  671. package/dist/lib/payments/extend.d.ts +42 -0
  672. package/dist/lib/payments/extend.d.ts.map +1 -0
  673. package/dist/lib/payments/extend.js +98 -0
  674. package/dist/lib/payments/extend.js.map +1 -0
  675. package/dist/lib/payments/facilitator.d.ts +220 -0
  676. package/dist/lib/payments/facilitator.d.ts.map +1 -0
  677. package/dist/lib/payments/facilitator.js +451 -0
  678. package/dist/lib/payments/facilitator.js.map +1 -0
  679. package/dist/lib/payments/gate.d.ts +207 -0
  680. package/dist/lib/payments/gate.d.ts.map +1 -0
  681. package/dist/lib/payments/gate.js +481 -0
  682. package/dist/lib/payments/gate.js.map +1 -0
  683. package/dist/lib/payments/header-seal.d.ts +33 -0
  684. package/dist/lib/payments/header-seal.d.ts.map +1 -0
  685. package/dist/lib/payments/header-seal.js +76 -0
  686. package/dist/lib/payments/header-seal.js.map +1 -0
  687. package/dist/lib/payments/index.d.ts +12 -0
  688. package/dist/lib/payments/index.d.ts.map +1 -0
  689. package/dist/lib/payments/index.js +11 -0
  690. package/dist/lib/payments/index.js.map +1 -0
  691. package/dist/lib/payments/price.d.ts +25 -0
  692. package/dist/lib/payments/price.d.ts.map +1 -0
  693. package/dist/lib/payments/price.js +43 -0
  694. package/dist/lib/payments/price.js.map +1 -0
  695. package/dist/lib/payments/reconcile.d.ts +77 -0
  696. package/dist/lib/payments/reconcile.d.ts.map +1 -0
  697. package/dist/lib/payments/reconcile.js +317 -0
  698. package/dist/lib/payments/reconcile.js.map +1 -0
  699. package/dist/lib/payments/refund.d.ts +34 -0
  700. package/dist/lib/payments/refund.d.ts.map +1 -0
  701. package/dist/lib/payments/refund.js +123 -0
  702. package/dist/lib/payments/refund.js.map +1 -0
  703. package/dist/lib/payments/review-billing.d.ts +222 -0
  704. package/dist/lib/payments/review-billing.d.ts.map +1 -0
  705. package/dist/lib/payments/review-billing.js +609 -0
  706. package/dist/lib/payments/review-billing.js.map +1 -0
  707. package/dist/lib/payments/settle.d.ts +44 -0
  708. package/dist/lib/payments/settle.d.ts.map +1 -0
  709. package/dist/lib/payments/settle.js +306 -0
  710. package/dist/lib/payments/settle.js.map +1 -0
  711. package/dist/lib/payments/terms.d.ts +27 -0
  712. package/dist/lib/payments/terms.d.ts.map +1 -0
  713. package/dist/lib/payments/terms.js +21 -0
  714. package/dist/lib/payments/terms.js.map +1 -0
  715. package/dist/lib/payouts.d.ts +20 -0
  716. package/dist/lib/payouts.d.ts.map +1 -0
  717. package/dist/lib/payouts.js +30 -0
  718. package/dist/lib/payouts.js.map +1 -0
  719. package/dist/lib/readiness.d.ts +42 -0
  720. package/dist/lib/readiness.d.ts.map +1 -0
  721. package/dist/lib/readiness.js +130 -0
  722. package/dist/lib/readiness.js.map +1 -0
  723. package/dist/lib/redact.d.ts +23 -0
  724. package/dist/lib/redact.d.ts.map +1 -0
  725. package/dist/lib/redact.js +67 -0
  726. package/dist/lib/redact.js.map +1 -0
  727. package/dist/lib/register.d.ts +85 -0
  728. package/dist/lib/register.d.ts.map +1 -0
  729. package/dist/lib/register.js +390 -0
  730. package/dist/lib/register.js.map +1 -0
  731. package/dist/lib/review/attestation.d.ts +92 -0
  732. package/dist/lib/review/attestation.d.ts.map +1 -0
  733. package/dist/lib/review/attestation.js +264 -0
  734. package/dist/lib/review/attestation.js.map +1 -0
  735. package/dist/lib/review/reviewer-grant.d.ts +146 -0
  736. package/dist/lib/review/reviewer-grant.d.ts.map +1 -0
  737. package/dist/lib/review/reviewer-grant.js +359 -0
  738. package/dist/lib/review/reviewer-grant.js.map +1 -0
  739. package/dist/lib/review/tasks.d.ts +18 -0
  740. package/dist/lib/review/tasks.d.ts.map +1 -0
  741. package/dist/lib/review/tasks.js +36 -0
  742. package/dist/lib/review/tasks.js.map +1 -0
  743. package/dist/lib/sentry.d.ts +89 -0
  744. package/dist/lib/sentry.d.ts.map +1 -0
  745. package/dist/lib/sentry.js +284 -0
  746. package/dist/lib/sentry.js.map +1 -0
  747. package/dist/lib/spans.d.ts +14 -0
  748. package/dist/lib/spans.d.ts.map +1 -0
  749. package/dist/lib/spans.js +28 -0
  750. package/dist/lib/spans.js.map +1 -0
  751. package/dist/lib/tracing.d.ts +31 -0
  752. package/dist/lib/tracing.d.ts.map +1 -0
  753. package/dist/lib/tracing.js +66 -0
  754. package/dist/lib/tracing.js.map +1 -0
  755. package/dist/lib/ttl-cache.d.ts +26 -0
  756. package/dist/lib/ttl-cache.d.ts.map +1 -0
  757. package/dist/lib/ttl-cache.js +61 -0
  758. package/dist/lib/ttl-cache.js.map +1 -0
  759. package/dist/lib/validator.d.ts +19 -0
  760. package/dist/lib/validator.d.ts.map +1 -0
  761. package/dist/lib/validator.js +32 -0
  762. package/dist/lib/validator.js.map +1 -0
  763. package/dist/lib/work-order/form.d.ts +40 -0
  764. package/dist/lib/work-order/form.d.ts.map +1 -0
  765. package/dist/lib/work-order/form.js +316 -0
  766. package/dist/lib/work-order/form.js.map +1 -0
  767. package/dist/lib/work-order/index.d.ts +20 -0
  768. package/dist/lib/work-order/index.d.ts.map +1 -0
  769. package/dist/lib/work-order/index.js +66 -0
  770. package/dist/lib/work-order/index.js.map +1 -0
  771. package/dist/middleware/api/audit.d.ts +9 -0
  772. package/dist/middleware/api/audit.d.ts.map +1 -0
  773. package/dist/middleware/api/audit.js +38 -0
  774. package/dist/middleware/api/audit.js.map +1 -0
  775. package/dist/middleware/api/auth.d.ts +29 -0
  776. package/dist/middleware/api/auth.d.ts.map +1 -0
  777. package/dist/middleware/api/auth.js +105 -0
  778. package/dist/middleware/api/auth.js.map +1 -0
  779. package/dist/middleware/api/console.d.ts +92 -0
  780. package/dist/middleware/api/console.d.ts.map +1 -0
  781. package/dist/middleware/api/console.js +446 -0
  782. package/dist/middleware/api/console.js.map +1 -0
  783. package/dist/middleware/api/errors.d.ts +48 -0
  784. package/dist/middleware/api/errors.d.ts.map +1 -0
  785. package/dist/middleware/api/errors.js +133 -0
  786. package/dist/middleware/api/errors.js.map +1 -0
  787. package/dist/middleware/api/idempotency.d.ts +23 -0
  788. package/dist/middleware/api/idempotency.d.ts.map +1 -0
  789. package/dist/middleware/api/idempotency.js +158 -0
  790. package/dist/middleware/api/idempotency.js.map +1 -0
  791. package/dist/middleware/api/keys.d.ts +14 -0
  792. package/dist/middleware/api/keys.d.ts.map +1 -0
  793. package/dist/middleware/api/keys.js +66 -0
  794. package/dist/middleware/api/keys.js.map +1 -0
  795. package/dist/middleware/api/membership.d.ts +32 -0
  796. package/dist/middleware/api/membership.d.ts.map +1 -0
  797. package/dist/middleware/api/membership.js +48 -0
  798. package/dist/middleware/api/membership.js.map +1 -0
  799. package/dist/middleware/api/oauth.d.ts +28 -0
  800. package/dist/middleware/api/oauth.d.ts.map +1 -0
  801. package/dist/middleware/api/oauth.js +109 -0
  802. package/dist/middleware/api/oauth.js.map +1 -0
  803. package/dist/middleware/api/rate-limit.d.ts +23 -0
  804. package/dist/middleware/api/rate-limit.d.ts.map +1 -0
  805. package/dist/middleware/api/rate-limit.js +70 -0
  806. package/dist/middleware/api/rate-limit.js.map +1 -0
  807. package/dist/middleware/api/types.d.ts +92 -0
  808. package/dist/middleware/api/types.d.ts.map +1 -0
  809. package/dist/middleware/api/types.js +7 -0
  810. package/dist/middleware/api/types.js.map +1 -0
  811. package/dist/middleware/api/wait.d.ts +21 -0
  812. package/dist/middleware/api/wait.d.ts.map +1 -0
  813. package/dist/middleware/api/wait.js +85 -0
  814. package/dist/middleware/api/wait.js.map +1 -0
  815. package/dist/middleware/capability.d.ts +32 -0
  816. package/dist/middleware/capability.d.ts.map +1 -0
  817. package/dist/middleware/capability.js +113 -0
  818. package/dist/middleware/capability.js.map +1 -0
  819. package/dist/middleware/database.d.ts +14 -0
  820. package/dist/middleware/database.d.ts.map +1 -0
  821. package/dist/middleware/database.js +18 -0
  822. package/dist/middleware/database.js.map +1 -0
  823. package/dist/middleware/error-handler.d.ts +13 -0
  824. package/dist/middleware/error-handler.d.ts.map +1 -0
  825. package/dist/middleware/error-handler.js +127 -0
  826. package/dist/middleware/error-handler.js.map +1 -0
  827. package/dist/middleware/observability.d.ts +32 -0
  828. package/dist/middleware/observability.d.ts.map +1 -0
  829. package/dist/middleware/observability.js +134 -0
  830. package/dist/middleware/observability.js.map +1 -0
  831. package/dist/middleware/rate-limit.d.ts +16 -0
  832. package/dist/middleware/rate-limit.d.ts.map +1 -0
  833. package/dist/middleware/rate-limit.js +56 -0
  834. package/dist/middleware/rate-limit.js.map +1 -0
  835. package/dist/middleware/ucan-auth.d.ts +39 -0
  836. package/dist/middleware/ucan-auth.d.ts.map +1 -0
  837. package/dist/middleware/ucan-auth.js +278 -0
  838. package/dist/middleware/ucan-auth.js.map +1 -0
  839. package/dist/networks.d.ts +34 -0
  840. package/dist/networks.d.ts.map +1 -0
  841. package/dist/networks.js +49 -0
  842. package/dist/networks.js.map +1 -0
  843. package/dist/oracle.d.ts +193 -0
  844. package/dist/oracle.d.ts.map +1 -0
  845. package/dist/oracle.js +245 -0
  846. package/dist/oracle.js.map +1 -0
  847. package/dist/routes/health.d.ts +16 -0
  848. package/dist/routes/health.d.ts.map +1 -0
  849. package/dist/routes/health.js +29 -0
  850. package/dist/routes/health.js.map +1 -0
  851. package/dist/routes/v1/admin.d.ts +18 -0
  852. package/dist/routes/v1/admin.d.ts.map +1 -0
  853. package/dist/routes/v1/admin.js +101 -0
  854. package/dist/routes/v1/admin.js.map +1 -0
  855. package/dist/routes/v1/api/admin-claims.d.ts +14 -0
  856. package/dist/routes/v1/api/admin-claims.d.ts.map +1 -0
  857. package/dist/routes/v1/api/admin-claims.js +82 -0
  858. package/dist/routes/v1/api/admin-claims.js.map +1 -0
  859. package/dist/routes/v1/api/admin-facilitator.d.ts +20 -0
  860. package/dist/routes/v1/api/admin-facilitator.d.ts.map +1 -0
  861. package/dist/routes/v1/api/admin-facilitator.js +64 -0
  862. package/dist/routes/v1/api/admin-facilitator.js.map +1 -0
  863. package/dist/routes/v1/api/admin.d.ts +9 -0
  864. package/dist/routes/v1/api/admin.d.ts.map +1 -0
  865. package/dist/routes/v1/api/admin.js +110 -0
  866. package/dist/routes/v1/api/admin.js.map +1 -0
  867. package/dist/routes/v1/api/audit.d.ts +8 -0
  868. package/dist/routes/v1/api/audit.d.ts.map +1 -0
  869. package/dist/routes/v1/api/audit.js +56 -0
  870. package/dist/routes/v1/api/audit.js.map +1 -0
  871. package/dist/routes/v1/api/batch.d.ts +17 -0
  872. package/dist/routes/v1/api/batch.d.ts.map +1 -0
  873. package/dist/routes/v1/api/batch.js +192 -0
  874. package/dist/routes/v1/api/batch.js.map +1 -0
  875. package/dist/routes/v1/api/claims-read.d.ts +43 -0
  876. package/dist/routes/v1/api/claims-read.d.ts.map +1 -0
  877. package/dist/routes/v1/api/claims-read.js +123 -0
  878. package/dist/routes/v1/api/claims-read.js.map +1 -0
  879. package/dist/routes/v1/api/claims.d.ts +131 -0
  880. package/dist/routes/v1/api/claims.d.ts.map +1 -0
  881. package/dist/routes/v1/api/claims.js +407 -0
  882. package/dist/routes/v1/api/claims.js.map +1 -0
  883. package/dist/routes/v1/api/collections-link.d.ts +14 -0
  884. package/dist/routes/v1/api/collections-link.d.ts.map +1 -0
  885. package/dist/routes/v1/api/collections-link.js +97 -0
  886. package/dist/routes/v1/api/collections-link.js.map +1 -0
  887. package/dist/routes/v1/api/export.d.ts +48 -0
  888. package/dist/routes/v1/api/export.d.ts.map +1 -0
  889. package/dist/routes/v1/api/export.js +251 -0
  890. package/dist/routes/v1/api/export.js.map +1 -0
  891. package/dist/routes/v1/api/index.d.ts +16 -0
  892. package/dist/routes/v1/api/index.d.ts.map +1 -0
  893. package/dist/routes/v1/api/index.js +68 -0
  894. package/dist/routes/v1/api/index.js.map +1 -0
  895. package/dist/routes/v1/api/keys.d.ts +9 -0
  896. package/dist/routes/v1/api/keys.d.ts.map +1 -0
  897. package/dist/routes/v1/api/keys.js +95 -0
  898. package/dist/routes/v1/api/keys.js.map +1 -0
  899. package/dist/routes/v1/api/me.d.ts +21 -0
  900. package/dist/routes/v1/api/me.d.ts.map +1 -0
  901. package/dist/routes/v1/api/me.js +122 -0
  902. package/dist/routes/v1/api/me.js.map +1 -0
  903. package/dist/routes/v1/api/members.d.ts +17 -0
  904. package/dist/routes/v1/api/members.d.ts.map +1 -0
  905. package/dist/routes/v1/api/members.js +406 -0
  906. package/dist/routes/v1/api/members.js.map +1 -0
  907. package/dist/routes/v1/api/meta.d.ts +12 -0
  908. package/dist/routes/v1/api/meta.d.ts.map +1 -0
  909. package/dist/routes/v1/api/meta.js +59 -0
  910. package/dist/routes/v1/api/meta.js.map +1 -0
  911. package/dist/routes/v1/api/openapi.gen.d.ts +2 -0
  912. package/dist/routes/v1/api/openapi.gen.d.ts.map +1 -0
  913. package/dist/routes/v1/api/openapi.gen.js +7 -0
  914. package/dist/routes/v1/api/openapi.gen.js.map +1 -0
  915. package/dist/routes/v1/api/protocols.d.ts +22 -0
  916. package/dist/routes/v1/api/protocols.d.ts.map +1 -0
  917. package/dist/routes/v1/api/protocols.js +153 -0
  918. package/dist/routes/v1/api/protocols.js.map +1 -0
  919. package/dist/routes/v1/api/review-billing.d.ts +18 -0
  920. package/dist/routes/v1/api/review-billing.d.ts.map +1 -0
  921. package/dist/routes/v1/api/review-billing.js +196 -0
  922. package/dist/routes/v1/api/review-billing.js.map +1 -0
  923. package/dist/routes/v1/api/review.d.ts +30 -0
  924. package/dist/routes/v1/api/review.d.ts.map +1 -0
  925. package/dist/routes/v1/api/review.js +302 -0
  926. package/dist/routes/v1/api/review.js.map +1 -0
  927. package/dist/routes/v1/api/sources.d.ts +10 -0
  928. package/dist/routes/v1/api/sources.d.ts.map +1 -0
  929. package/dist/routes/v1/api/sources.js +293 -0
  930. package/dist/routes/v1/api/sources.js.map +1 -0
  931. package/dist/routes/v1/api/uploads.d.ts +37 -0
  932. package/dist/routes/v1/api/uploads.d.ts.map +1 -0
  933. package/dist/routes/v1/api/uploads.js +414 -0
  934. package/dist/routes/v1/api/uploads.js.map +1 -0
  935. package/dist/routes/v1/api/views.d.ts +18 -0
  936. package/dist/routes/v1/api/views.d.ts.map +1 -0
  937. package/dist/routes/v1/api/views.js +95 -0
  938. package/dist/routes/v1/api/views.js.map +1 -0
  939. package/dist/routes/v1/api/webhooks.d.ts +14 -0
  940. package/dist/routes/v1/api/webhooks.d.ts.map +1 -0
  941. package/dist/routes/v1/api/webhooks.js +282 -0
  942. package/dist/routes/v1/api/webhooks.js.map +1 -0
  943. package/dist/routes/v1/api/work-orders.d.ts +45 -0
  944. package/dist/routes/v1/api/work-orders.d.ts.map +1 -0
  945. package/dist/routes/v1/api/work-orders.js +171 -0
  946. package/dist/routes/v1/api/work-orders.js.map +1 -0
  947. package/dist/routes/v1/claims.d.ts +21 -0
  948. package/dist/routes/v1/claims.d.ts.map +1 -0
  949. package/dist/routes/v1/claims.js +153 -0
  950. package/dist/routes/v1/claims.js.map +1 -0
  951. package/dist/routes/v1/collections.d.ts +45 -0
  952. package/dist/routes/v1/collections.d.ts.map +1 -0
  953. package/dist/routes/v1/collections.js +201 -0
  954. package/dist/routes/v1/collections.js.map +1 -0
  955. package/dist/routes/v1/index.d.ts +13 -0
  956. package/dist/routes/v1/index.d.ts.map +1 -0
  957. package/dist/routes/v1/index.js +41 -0
  958. package/dist/routes/v1/index.js.map +1 -0
  959. package/dist/routes/v1/info.d.ts +14 -0
  960. package/dist/routes/v1/info.d.ts.map +1 -0
  961. package/dist/routes/v1/info.js +75 -0
  962. package/dist/routes/v1/info.js.map +1 -0
  963. package/dist/routes/v1/mcp/index.d.ts +33 -0
  964. package/dist/routes/v1/mcp/index.d.ts.map +1 -0
  965. package/dist/routes/v1/mcp/index.js +252 -0
  966. package/dist/routes/v1/mcp/index.js.map +1 -0
  967. package/dist/routes/v1/mcp/oauth.d.ts +27 -0
  968. package/dist/routes/v1/mcp/oauth.d.ts.map +1 -0
  969. package/dist/routes/v1/mcp/oauth.js +500 -0
  970. package/dist/routes/v1/mcp/oauth.js.map +1 -0
  971. package/dist/routes/v1/mcp/tools.d.ts +71 -0
  972. package/dist/routes/v1/mcp/tools.d.ts.map +1 -0
  973. package/dist/routes/v1/mcp/tools.js +432 -0
  974. package/dist/routes/v1/mcp/tools.js.map +1 -0
  975. package/dist/routes/v1/mcp/ui.d.ts +45 -0
  976. package/dist/routes/v1/mcp/ui.d.ts.map +1 -0
  977. package/dist/routes/v1/mcp/ui.js +454 -0
  978. package/dist/routes/v1/mcp/ui.js.map +1 -0
  979. package/dist/routes/v1/oauth.d.ts +29 -0
  980. package/dist/routes/v1/oauth.d.ts.map +1 -0
  981. package/dist/routes/v1/oauth.js +256 -0
  982. package/dist/routes/v1/oauth.js.map +1 -0
  983. package/dist/routes/v1/reviewers.d.ts +22 -0
  984. package/dist/routes/v1/reviewers.d.ts.map +1 -0
  985. package/dist/routes/v1/reviewers.js +165 -0
  986. package/dist/routes/v1/reviewers.js.map +1 -0
  987. package/dist/routes/v1/reviews.d.ts +38 -0
  988. package/dist/routes/v1/reviews.d.ts.map +1 -0
  989. package/dist/routes/v1/reviews.js +234 -0
  990. package/dist/routes/v1/reviews.js.map +1 -0
  991. package/dist/routes/v1/shared.d.ts +586 -0
  992. package/dist/routes/v1/shared.d.ts.map +1 -0
  993. package/dist/routes/v1/shared.js +229 -0
  994. package/dist/routes/v1/shared.js.map +1 -0
  995. package/dist/routes/well-known.d.ts +15 -0
  996. package/dist/routes/well-known.d.ts.map +1 -0
  997. package/dist/routes/well-known.js +35 -0
  998. package/dist/routes/well-known.js.map +1 -0
  999. package/dist/runtime.d.ts +100 -0
  1000. package/dist/runtime.d.ts.map +1 -0
  1001. package/dist/runtime.js +144 -0
  1002. package/dist/runtime.js.map +1 -0
  1003. package/dist/testing/fake-tools.d.ts +104 -0
  1004. package/dist/testing/fake-tools.d.ts.map +1 -0
  1005. package/dist/testing/fake-tools.js +213 -0
  1006. package/dist/testing/fake-tools.js.map +1 -0
  1007. package/dist/testing/index.d.ts +54 -0
  1008. package/dist/testing/index.d.ts.map +1 -0
  1009. package/dist/testing/index.js +104 -0
  1010. package/dist/testing/index.js.map +1 -0
  1011. package/dist/testing/samples.d.ts +70 -0
  1012. package/dist/testing/samples.d.ts.map +1 -0
  1013. package/dist/testing/samples.js +92 -0
  1014. package/dist/testing/samples.js.map +1 -0
  1015. package/dist/workflows/claim-ingest.d.ts +250 -0
  1016. package/dist/workflows/claim-ingest.d.ts.map +1 -0
  1017. package/dist/workflows/claim-ingest.js +1020 -0
  1018. package/dist/workflows/claim-ingest.js.map +1 -0
  1019. package/dist/workflows/claim-source.d.ts +25 -0
  1020. package/dist/workflows/claim-source.d.ts.map +1 -0
  1021. package/dist/workflows/claim-source.js +107 -0
  1022. package/dist/workflows/claim-source.js.map +1 -0
  1023. package/dist/workflows/review-complete.d.ts +82 -0
  1024. package/dist/workflows/review-complete.d.ts.map +1 -0
  1025. package/dist/workflows/review-complete.js +455 -0
  1026. package/dist/workflows/review-complete.js.map +1 -0
  1027. package/dist/workflows/steps.d.ts +125 -0
  1028. package/dist/workflows/steps.d.ts.map +1 -0
  1029. package/dist/workflows/steps.js +325 -0
  1030. package/dist/workflows/steps.js.map +1 -0
  1031. package/docs/api.md +2595 -0
  1032. package/docs/guide.md +1525 -0
  1033. package/migrations/0000_init.sql +108 -0
  1034. package/migrations/0001_review_attestation.sql +1 -0
  1035. package/migrations/0002_decisions_facts.sql +1 -0
  1036. package/migrations/0003_api_lane.sql +171 -0
  1037. package/migrations/0004_api_v1_1.sql +19 -0
  1038. package/migrations/0005_member_notify.sql +3 -0
  1039. package/migrations/0006_source_collections.sql +16 -0
  1040. package/migrations/0007_api_settlement.sql +27 -0
  1041. package/migrations/0008_review_extend.sql +1 -0
  1042. package/migrations/0009_card_refunds.sql +4 -0
  1043. package/migrations/0010_even_scorpion.sql +16 -0
  1044. package/migrations/0011_mcp_oauth.sql +27 -0
  1045. package/migrations/0012_mcp_standing.sql +21 -0
  1046. package/migrations/0013_unknown_krista_starr.sql +2 -0
  1047. package/migrations/0014_last_carnage.sql +14 -0
  1048. package/migrations/0015_company_authority.sql +26 -0
  1049. package/migrations/0016_owner_only_links.sql +6 -0
  1050. package/migrations/0017_organisations.sql +35 -0
  1051. package/migrations/0018_remove_app_signed.sql +4 -0
  1052. package/migrations/0019_submitted_via.sql +2 -0
  1053. package/migrations/0020_drop_decision_to_pay.sql +4 -0
  1054. package/migrations/0021_manual_erase.sql +25 -0
  1055. package/migrations/0022_errored_facts.sql +1 -0
  1056. package/migrations/0023_review_billing.sql +20 -0
  1057. package/migrations/0024_pending_task_details.sql +1 -0
  1058. package/migrations/meta/0000_snapshot.json +707 -0
  1059. package/migrations/meta/0001_snapshot.json +714 -0
  1060. package/migrations/meta/0002_snapshot.json +721 -0
  1061. package/migrations/meta/0003_snapshot.json +1845 -0
  1062. package/migrations/meta/0004_snapshot.json +1969 -0
  1063. package/migrations/meta/0005_snapshot.json +1991 -0
  1064. package/migrations/meta/0006_snapshot.json +2097 -0
  1065. package/migrations/meta/0007_snapshot.json +2128 -0
  1066. package/migrations/meta/0008_snapshot.json +2133 -0
  1067. package/migrations/meta/0009_snapshot.json +2161 -0
  1068. package/migrations/meta/0010_snapshot.json +2265 -0
  1069. package/migrations/meta/0011_snapshot.json +2448 -0
  1070. package/migrations/meta/0012_snapshot.json +2577 -0
  1071. package/migrations/meta/0013_snapshot.json +2594 -0
  1072. package/migrations/meta/0014_snapshot.json +2602 -0
  1073. package/migrations/meta/0015_snapshot.json +2778 -0
  1074. package/migrations/meta/0016_snapshot.json +2778 -0
  1075. package/migrations/meta/0017_snapshot.json +2792 -0
  1076. package/migrations/meta/0018_snapshot.json +2778 -0
  1077. package/migrations/meta/0019_snapshot.json +2792 -0
  1078. package/migrations/meta/0020_snapshot.json +2785 -0
  1079. package/migrations/meta/0021_snapshot.json +2762 -0
  1080. package/migrations/meta/0022_snapshot.json +2769 -0
  1081. package/migrations/meta/0023_snapshot.json +2900 -0
  1082. package/migrations/meta/0024_snapshot.json +2907 -0
  1083. package/migrations/meta/_journal.json +181 -0
  1084. package/openapi/decision-api.yaml +12204 -0
  1085. package/package.json +121 -4
  1086. package/skills/README.md +19 -0
  1087. package/skills/add-openhands-support/SKILL.md +113 -0
  1088. package/skills/create-collection/SKILL.md +199 -0
  1089. package/skills/create-collection/reference/claims-stack.md +106 -0
  1090. package/skills/create-collection/reference/collection.md +111 -0
  1091. package/skills/create-oracle/SKILL.md +400 -0
  1092. package/skills/create-rubric/SKILL.md +130 -0
  1093. package/skills/create-rubric/reference/format-cheatsheet.md +186 -0
  1094. package/skills/create-rubric/templates/claim-form.example.json +60 -0
  1095. package/skills/decision-api-client/SKILL.md +236 -0
  1096. package/skills/decision-api-oracle/SKILL.md +336 -0
  1097. package/skills/publish-protocol/SKILL.md +151 -0
  1098. package/skills/publish-protocol/reference/publishing.md +116 -0
  1099. package/skills/reference/engine-contract.md +222 -0
  1100. package/skills/write-facts/SKILL.md +221 -0
  1101. package/skills/write-facts/reference/examples/http-vendor.ts +88 -0
  1102. package/skills/write-facts/reference/examples/price-matches-agreement.ts +67 -0
  1103. package/skills/write-facts/reference/facts-api.md +232 -0
  1104. package/templates/project/.dev.vars.example +93 -0
  1105. package/templates/project/.editorconfig +9 -0
  1106. package/templates/project/CLAUDE.md +45 -0
  1107. package/templates/project/README.md +199 -0
  1108. package/templates/project/biome.json +37 -0
  1109. package/templates/project/gitignore +29 -0
  1110. package/templates/project/package.json +32 -0
  1111. package/templates/project/src/facts/index.ts +19 -0
  1112. package/templates/project/src/index.ts +25 -0
  1113. package/templates/project/test/api-lane.test.ts +57 -0
  1114. package/templates/project/test/facts.test.ts +14 -0
  1115. package/templates/project/tsconfig.json +25 -0
  1116. package/templates/project/vitest.config.ts +13 -0
  1117. package/templates/project/wrangler.jsonc +446 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approvals.js","sourceRoot":"","sources":["../../../src/lib/oauth/approvals.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,152 @@
1
+ /**
2
+ * Auto-approve ("don't ask again", spec 2026-10-06 "Auto-approve"; S7): a grant's standing payment
3
+ * authority, `mcp_standing`. AuthHub — and only AuthHub, on its own pages — sets it (with an
4
+ * approval, or a PUT) and revokes it; the oracle spends from it. A grant is one app on this oracle,
5
+ * so one standing covers every source the user submits for through that app — intended: the user
6
+ * set the limits for the app, not per source.
7
+ *
8
+ * Unlike a one-claim approval (`approvals.ts`, maxAmount EXACTLY the price), the delegation here
9
+ * covers many claims: its `maxAmount` must EQUAL `totalUpay`, each claim may cost at most
10
+ * `perClaimUpay`, and it must outlive `until` (AuthHub signs until + 30 d + 600 s, for review
11
+ * holds). The facilitator enforces the delegation's total as well, since spend counts across offers.
12
+ * The oracle holds the same bounds AuthHub does: a total of at most $100, an end at most 7 days out.
13
+ *
14
+ * Accounting (S3 review of #87): `totalUpay` is THIS auto-approve's total across every delegation
15
+ * AuthHub signs for it, so `spentUpay` is never reset — a PUT must leave `totalUpay ≥ spentUpay`,
16
+ * and what is left is `totalUpay − spentUpay`. Every spend is one `db.batch`: the request's lock
17
+ * row (`mcp_standing_spends`) and the conditional `spentUpay` update that lands only if that lock
18
+ * did, within the per-claim cap, the total, `until`, and the grant's daily cap summed over the lock
19
+ * rows — so concurrent submits can never exceed the total or the day's cap, and a retry of the same
20
+ * request never spends twice. A refund (proven nothing reserved) gives the price back and deletes
21
+ * the lock, in one batch. `mcp_standing_spends` is the grant's ONE day counter: it also holds the
22
+ * one-claim approvals' spends (`approvals.ts` `spendApproval`) and each answer's marker
23
+ * (`answer:<id>`, 0 upay), so the $20/day cap is atomic across both paths.
24
+ */
25
+ import type { Database } from "../../db/client.js";
26
+ import { AppError } from "../errors.js";
27
+ import { type DelegationRefusal } from "./approvals.js";
28
+ /**
29
+ * Company authority D8 (F13): a standing approval leaves the user's spending authority on THIS
30
+ * operator's server, so only an oracle whose config says `allowStandingApprovals` (IXO's own) takes
31
+ * one. Off ⇒ none is set (`standingApprovalsOff`), none is read back (`GET` is 404), a standing
32
+ * already stored never pays — every submit falls to the user's approval of that one claim, and a
33
+ * card payment one parked for 3-D Secure is not resumed — and the housekeeping sweep deletes every
34
+ * stored one. Read per request — the config is the isolate's, and a redeploy that turns it off
35
+ * takes effect on the next submit.
36
+ */
37
+ export declare const standingApprovalsAllowed: () => boolean;
38
+ export declare const standingApprovalsOff: () => AppError;
39
+ /** The limits AuthHub sends, upay strings and unix seconds — its wire shape. */
40
+ export interface StandingLimits {
41
+ perClaimUpay: string;
42
+ totalUpay: string;
43
+ until: number;
44
+ }
45
+ /** AuthHub's own bounds (`OAUTH_MAX_STANDING_UPAY`, 7 days), held here too. */
46
+ export declare const MAX_STANDING_UPAY = 100000000n;
47
+ /**
48
+ * Why `delegation` cannot be this grant's standing authority, or null. The one-claim checks
49
+ * (issuer, oracle, facilitator, unexpired) with `maxAmount` = `totalUpay`, plus the bounds — a
50
+ * per-claim cap within the total, a total of at most $100, `until` ahead and at most 7 days out,
51
+ * the delegation outliving it — and, with an approval, the claim's price within the per-claim cap.
52
+ */
53
+ export declare function standingRefusal(delegation: string, limits: StandingLimits, expect: {
54
+ did: string;
55
+ oracleDid: string;
56
+ facilitatorDid: string;
57
+ claimUpay?: string;
58
+ }, now?: number): Promise<DelegationRefusal | null>;
59
+ /**
60
+ * Set the grant's standing authority, adding `spentUpay` (the approved claim's price with an
61
+ * approval, 0 for a PUT) to what it has spent — never resetting it. Refused (false) when the new
62
+ * total would not cover what is spent.
63
+ */
64
+ export declare function setStanding(db: Database, grantId: string, did: string, limits: StandingLimits, delegation: string, spentUpay: number): Promise<boolean>;
65
+ /**
66
+ * Approve a pending approval AND, with limits, set the grant's standing — ONE batch in which the
67
+ * answer that wins is decided FIRST (S3 review of #90, A + B). Every answer, with limits or without,
68
+ * claims the approval's one marker row (`answer:<id>`, keyed by the PK, 0 upay, outside the day's
69
+ * count) carrying its own `answerId`; the marker lands only while the approval is still pending and
70
+ * unexpired and — with limits — only if the new total covers what this auto-approve has already
71
+ * spent plus this claim. The flip and the standing write both require THIS answer's marker. So:
72
+ * - two answers at once (twins, or one without limits racing one with): the PK lets exactly one
73
+ * marker in; the other answer changes nothing — no flip, no standing, no double count;
74
+ * - limits that would not cover what is spent: no marker, no flip — the approval stays pending
75
+ * and the answer is refused (`overSpent`), never "refused" while the claim went live.
76
+ * `approved` = this answer flipped it; `pending` = it is still pending (so a refusal, not a race).
77
+ */
78
+ export declare function approveWithStanding(db: Database, approval: {
79
+ id: string;
80
+ grantId: string;
81
+ did: string;
82
+ delegation: string | null;
83
+ }, standing: {
84
+ limits: StandingLimits;
85
+ delegation: string;
86
+ spentUpay: number;
87
+ } | null, expiresAt: Date, now?: Date): Promise<{
88
+ approved: boolean;
89
+ pending: boolean;
90
+ }>;
91
+ /** The grant's live standing (unrevoked, before `until`), or undefined. */
92
+ export declare const liveStanding: (db: Database, grantId: string, now?: Date) => import("drizzle-orm/sqlite-core/query-builders/query").SQLiteRelationalQuery<"async", {
93
+ delegation: string | null;
94
+ did: string;
95
+ grantId: string;
96
+ perClaimUpay: number;
97
+ spentUpay: number;
98
+ totalUpay: number;
99
+ until: Date;
100
+ updatedAt: Date;
101
+ } | undefined>;
102
+ /** Whose grant this is, as far as this oracle has seen it: its standing, else an approval. */
103
+ export declare function grantDid(db: Database, grantId: string): Promise<string | undefined>;
104
+ /**
105
+ * Revoke: the row goes, delegation and all, and so does every standing delegation an approval of
106
+ * the grant still holds — an approve-with-limits claim, one parked for 3-D Secure — whichever
107
+ * delegation it was (a PUT may have replaced it since): expired if live, nulled if spent. A
108
+ * standing copy is told from a one-claim approval's own by its amount: a one-claim delegation is
109
+ * for exactly the claim's price (F1), a standing one for the total. A standing whose total equals
110
+ * that one price is indistinguishable and survives — benign (S3): it can pay at most the one claim
111
+ * the user just approved. `false` when the row is another user's. The read-then-batch window is
112
+ * tolerable: a spend racing a revoke can at most be one the user had already allowed.
113
+ */
114
+ /**
115
+ * Whether an approval row's delegation is a copy of the grant's standing rather than the claim's
116
+ * own: a one-claim delegation is for exactly the claim's price (F1), a standing one for the total.
117
+ * One that does not parse is counted a copy — the side that never pays from it.
118
+ */
119
+ export declare function isStandingCopy(delegation: string, maxAmountUpay: string): Promise<boolean>;
120
+ export declare function revokeStanding(db: Database, grantId: string, did: string): Promise<boolean>;
121
+ /**
122
+ * Take `upay` from the grant's standing for ONE request — one batch whose two statements test the
123
+ * SAME conditions: the request's lock row is written only if the price fits (per-claim, total,
124
+ * `until`, the grant's day), and the spend lands only if that lock is this attempt's. So nothing
125
+ * is written when it does not fit — no lock to clean up, whatever happens to the isolate.
126
+ * - `locked`: this request already spent (a retry): never spend or pay again;
127
+ * - null: it does not fit (or there is no live standing): ask the user;
128
+ * - else the delegation to pay with, what is left, and the lock's id (for a refund).
129
+ * An exhausted standing (`spentUpay` = `totalUpay`) or one past `until` approves nothing, free
130
+ * claims included.
131
+ */
132
+ export declare function spendStanding(db: Database, spend: {
133
+ grantId: string;
134
+ did: string;
135
+ requestDigest: string;
136
+ upay: number;
137
+ }, now?: Date): Promise<{
138
+ delegation: string;
139
+ remainingUpay: number;
140
+ spendId: string;
141
+ } | "locked" | null>;
142
+ /**
143
+ * Proven nothing reserved: give `upay` back — to the delegation it was spent from only (a PUT in
144
+ * between keeps the count, conservatively) — and release THIS spend's lock, in one batch.
145
+ */
146
+ export declare function refundStanding(db: Database, spend: {
147
+ grantId: string;
148
+ spendId: string;
149
+ delegation: string;
150
+ upay: number;
151
+ }): Promise<void>;
152
+ //# sourceMappingURL=standing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standing.d.ts","sourceRoot":"","sources":["../../../src/lib/oauth/standing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,299 @@
1
+ /**
2
+ * Auto-approve ("don't ask again", spec 2026-10-06 "Auto-approve"; S7): a grant's standing payment
3
+ * authority, `mcp_standing`. AuthHub — and only AuthHub, on its own pages — sets it (with an
4
+ * approval, or a PUT) and revokes it; the oracle spends from it. A grant is one app on this oracle,
5
+ * so one standing covers every source the user submits for through that app — intended: the user
6
+ * set the limits for the app, not per source.
7
+ *
8
+ * Unlike a one-claim approval (`approvals.ts`, maxAmount EXACTLY the price), the delegation here
9
+ * covers many claims: its `maxAmount` must EQUAL `totalUpay`, each claim may cost at most
10
+ * `perClaimUpay`, and it must outlive `until` (AuthHub signs until + 30 d + 600 s, for review
11
+ * holds). The facilitator enforces the delegation's total as well, since spend counts across offers.
12
+ * The oracle holds the same bounds AuthHub does: a total of at most $100, an end at most 7 days out.
13
+ *
14
+ * Accounting (S3 review of #87): `totalUpay` is THIS auto-approve's total across every delegation
15
+ * AuthHub signs for it, so `spentUpay` is never reset — a PUT must leave `totalUpay ≥ spentUpay`,
16
+ * and what is left is `totalUpay − spentUpay`. Every spend is one `db.batch`: the request's lock
17
+ * row (`mcp_standing_spends`) and the conditional `spentUpay` update that lands only if that lock
18
+ * did, within the per-claim cap, the total, `until`, and the grant's daily cap summed over the lock
19
+ * rows — so concurrent submits can never exceed the total or the day's cap, and a retry of the same
20
+ * request never spends twice. A refund (proven nothing reserved) gives the price back and deletes
21
+ * the lock, in one batch. `mcp_standing_spends` is the grant's ONE day counter: it also holds the
22
+ * one-claim approvals' spends (`approvals.ts` `spendApproval`) and each answer's marker
23
+ * (`answer:<id>`, 0 upay), so the $20/day cap is atomic across both paths.
24
+ */
25
+ import { parsePaymentDelegation } from "@ixo/x402-ixo-pay";
26
+ import { and, eq, gt, inArray, lte, sql } from "drizzle-orm";
27
+ import { mcpApprovals, mcpStanding, mcpStandingSpends } from "../../db/schema.js";
28
+ import { getOracle } from "../../oracle.js";
29
+ import { AppError } from "../errors.js";
30
+ import { delegationRefusal, GRANT_CAP_UPAY, spentToday } from "./approvals.js";
31
+ /**
32
+ * Company authority D8 (F13): a standing approval leaves the user's spending authority on THIS
33
+ * operator's server, so only an oracle whose config says `allowStandingApprovals` (IXO's own) takes
34
+ * one. Off ⇒ none is set (`standingApprovalsOff`), none is read back (`GET` is 404), a standing
35
+ * already stored never pays — every submit falls to the user's approval of that one claim, and a
36
+ * card payment one parked for 3-D Secure is not resumed — and the housekeeping sweep deletes every
37
+ * stored one. Read per request — the config is the isolate's, and a redeploy that turns it off
38
+ * takes effect on the next submit.
39
+ */
40
+ export const standingApprovalsAllowed = () => getOracle().config.policies.allowStandingApprovals;
41
+ export const standingApprovalsOff = () => new AppError("This oracle does not accept auto-approve (standing approvals): the user approves each claim.", { code: "FORBIDDEN", details: { reason: "standing_approvals_off" } });
42
+ /** AuthHub's own bounds (`OAUTH_MAX_STANDING_UPAY`, 7 days), held here too. */
43
+ export const MAX_STANDING_UPAY = 100000000n;
44
+ const MAX_STANDING_SEC = 7 * 86_400;
45
+ /** Clock skew allowed on `until` against AuthHub's "at most 7 days". */
46
+ const UNTIL_SKEW_SEC = 300;
47
+ /**
48
+ * Why `delegation` cannot be this grant's standing authority, or null. The one-claim checks
49
+ * (issuer, oracle, facilitator, unexpired) with `maxAmount` = `totalUpay`, plus the bounds — a
50
+ * per-claim cap within the total, a total of at most $100, `until` ahead and at most 7 days out,
51
+ * the delegation outliving it — and, with an approval, the claim's price within the per-claim cap.
52
+ */
53
+ export async function standingRefusal(delegation, limits, expect, now = Math.floor(Date.now() / 1000)) {
54
+ const per = BigInt(limits.perClaimUpay);
55
+ const total = BigInt(limits.totalUpay);
56
+ if (per <= 0n || per > total || total > MAX_STANDING_UPAY) {
57
+ return {
58
+ reason: "limits_invalid",
59
+ message: "the per-claim cap must be positive and within the total, and the total at most $100",
60
+ };
61
+ }
62
+ if (limits.until <= now || limits.until > now + MAX_STANDING_SEC + UNTIL_SKEW_SEC) {
63
+ return { reason: "limits_invalid", message: "it must end in the next 7 days" };
64
+ }
65
+ if (expect.claimUpay !== undefined && BigInt(expect.claimUpay) > per) {
66
+ return { reason: "limits_invalid", message: "this claim costs more than the per-claim cap" };
67
+ }
68
+ return delegationRefusal(delegation, { did: expect.did, maxAmountUpay: limits.totalUpay }, { ...expect, validUntil: limits.until }, now);
69
+ }
70
+ /**
71
+ * Set the grant's standing authority, adding `spentUpay` (the approved claim's price with an
72
+ * approval, 0 for a PUT) to what it has spent — never resetting it. Refused (false) when the new
73
+ * total would not cover what is spent.
74
+ */
75
+ export async function setStanding(db, grantId, did, limits, delegation, spentUpay) {
76
+ const row = {
77
+ grantId,
78
+ did,
79
+ perClaimUpay: Number(limits.perClaimUpay),
80
+ totalUpay: Number(limits.totalUpay),
81
+ spentUpay,
82
+ until: new Date(limits.until * 1000),
83
+ delegation,
84
+ updatedAt: new Date(),
85
+ };
86
+ if (row.spentUpay > row.totalUpay)
87
+ return false;
88
+ const set = await db
89
+ .insert(mcpStanding)
90
+ .values(row)
91
+ .onConflictDoUpdate({
92
+ target: mcpStanding.grantId,
93
+ set: {
94
+ did: row.did,
95
+ perClaimUpay: row.perClaimUpay,
96
+ totalUpay: row.totalUpay,
97
+ until: row.until,
98
+ updatedAt: row.updatedAt,
99
+ spentUpay: sql `${mcpStanding.spentUpay} + ${spentUpay}`,
100
+ delegation,
101
+ },
102
+ setWhere: sql `${mcpStanding.spentUpay} + ${spentUpay} <= ${row.totalUpay}`,
103
+ })
104
+ .returning({ grantId: mcpStanding.grantId });
105
+ return set.length === 1;
106
+ }
107
+ /**
108
+ * Approve a pending approval AND, with limits, set the grant's standing — ONE batch in which the
109
+ * answer that wins is decided FIRST (S3 review of #90, A + B). Every answer, with limits or without,
110
+ * claims the approval's one marker row (`answer:<id>`, keyed by the PK, 0 upay, outside the day's
111
+ * count) carrying its own `answerId`; the marker lands only while the approval is still pending and
112
+ * unexpired and — with limits — only if the new total covers what this auto-approve has already
113
+ * spent plus this claim. The flip and the standing write both require THIS answer's marker. So:
114
+ * - two answers at once (twins, or one without limits racing one with): the PK lets exactly one
115
+ * marker in; the other answer changes nothing — no flip, no standing, no double count;
116
+ * - limits that would not cover what is spent: no marker, no flip — the approval stays pending
117
+ * and the answer is refused (`overSpent`), never "refused" while the claim went live.
118
+ * `approved` = this answer flipped it; `pending` = it is still pending (so a refusal, not a race).
119
+ */
120
+ export async function approveWithStanding(db, approval, standing, expiresAt, now = new Date()) {
121
+ const answerId = crypto.randomUUID();
122
+ const markerKey = `answer:${approval.id}`;
123
+ const pending = and(eq(mcpApprovals.id, approval.id), eq(mcpApprovals.status, "pending"), gt(mcpApprovals.expiresAt, now));
124
+ // Exactly this answer's marker, looked up by the PK (grant, key) — never a scan by spendId.
125
+ const mine = sql `exists (select 1 from ${mcpStandingSpends} where ${mcpStandingSpends.grantId} = ${approval.grantId} and ${mcpStandingSpends.requestDigest} = ${markerKey} and ${mcpStandingSpends.spendId} = ${answerId})`;
126
+ const per = standing ? Number(standing.limits.perClaimUpay) : 0;
127
+ const total = standing ? Number(standing.limits.totalUpay) : 0;
128
+ const spentUpay = standing?.spentUpay ?? 0;
129
+ // B: the new total must cover what this auto-approve has spent plus this claim — else no marker.
130
+ const covers = standing
131
+ ? sql `${spentUpay} <= ${total} and not exists (select 1 from ${mcpStanding} where ${mcpStanding.grantId} = ${approval.grantId} and ${mcpStanding.spentUpay} + ${spentUpay} > ${total})`
132
+ : sql `1`;
133
+ const marker = db
134
+ .insert(mcpStandingSpends)
135
+ .select(sql `select ${approval.grantId}, ${markerKey}, ${answerId}, 0, ${now.getTime()} where exists (select 1 from ${mcpApprovals} where ${pending}) and ${covers}`)
136
+ .onConflictDoNothing();
137
+ const flip = db
138
+ .update(mcpApprovals)
139
+ .set({ status: "approved", delegation: approval.delegation, expiresAt })
140
+ .where(and(pending, mine))
141
+ .returning({ id: mcpApprovals.id });
142
+ let flipped;
143
+ if (!standing) {
144
+ [, flipped] = await db.batch([marker, flip]);
145
+ }
146
+ else {
147
+ const { limits, delegation } = standing;
148
+ const until = limits.until * 1000;
149
+ [, flipped] = await db.batch([
150
+ marker,
151
+ flip,
152
+ db
153
+ .insert(mcpStanding)
154
+ .select(sql `select ${approval.grantId}, ${approval.did}, ${per}, ${total}, ${spentUpay}, ${until}, ${delegation}, ${now.getTime()} where ${mine}`)
155
+ .onConflictDoUpdate({
156
+ target: mcpStanding.grantId,
157
+ set: {
158
+ did: approval.did,
159
+ perClaimUpay: per,
160
+ totalUpay: total,
161
+ until: new Date(until),
162
+ updatedAt: now,
163
+ spentUpay: sql `${mcpStanding.spentUpay} + ${spentUpay}`,
164
+ delegation,
165
+ },
166
+ // Already guaranteed by the marker's `covers`; kept so this write can never overspend.
167
+ setWhere: sql `${mcpStanding.spentUpay} + ${spentUpay} <= ${total}`,
168
+ }),
169
+ ]);
170
+ }
171
+ if (flipped.length === 1)
172
+ return { approved: true, pending: false };
173
+ const still = await db.query.mcpApprovals.findFirst({ columns: { id: true }, where: pending });
174
+ return { approved: false, pending: still !== undefined };
175
+ }
176
+ /** The grant's live standing (unrevoked, before `until`), or undefined. */
177
+ export const liveStanding = (db, grantId, now = new Date()) => db.query.mcpStanding.findFirst({
178
+ where: and(eq(mcpStanding.grantId, grantId), gt(mcpStanding.until, now), sql `${mcpStanding.delegation} is not null`),
179
+ });
180
+ /** Whose grant this is, as far as this oracle has seen it: its standing, else an approval. */
181
+ export async function grantDid(db, grantId) {
182
+ const standing = await db.query.mcpStanding.findFirst({
183
+ columns: { did: true },
184
+ where: eq(mcpStanding.grantId, grantId),
185
+ });
186
+ if (standing)
187
+ return standing.did;
188
+ const approval = await db.query.mcpApprovals.findFirst({
189
+ columns: { did: true },
190
+ where: eq(mcpApprovals.grantId, grantId),
191
+ });
192
+ return approval?.did;
193
+ }
194
+ /**
195
+ * Revoke: the row goes, delegation and all, and so does every standing delegation an approval of
196
+ * the grant still holds — an approve-with-limits claim, one parked for 3-D Secure — whichever
197
+ * delegation it was (a PUT may have replaced it since): expired if live, nulled if spent. A
198
+ * standing copy is told from a one-claim approval's own by its amount: a one-claim delegation is
199
+ * for exactly the claim's price (F1), a standing one for the total. A standing whose total equals
200
+ * that one price is indistinguishable and survives — benign (S3): it can pay at most the one claim
201
+ * the user just approved. `false` when the row is another user's. The read-then-batch window is
202
+ * tolerable: a spend racing a revoke can at most be one the user had already allowed.
203
+ */
204
+ /**
205
+ * Whether an approval row's delegation is a copy of the grant's standing rather than the claim's
206
+ * own: a one-claim delegation is for exactly the claim's price (F1), a standing one for the total.
207
+ * One that does not parse is counted a copy — the side that never pays from it.
208
+ */
209
+ export async function isStandingCopy(delegation, maxAmountUpay) {
210
+ const parsed = await parsePaymentDelegation(delegation);
211
+ // Amounts compared as integers (as `delegationRefusal` does), never as strings.
212
+ return !parsed.ok || BigInt(parsed.delegation.maxAmount) !== BigInt(maxAmountUpay);
213
+ }
214
+ export async function revokeStanding(db, grantId, did) {
215
+ const row = await db.query.mcpStanding.findFirst({
216
+ columns: { did: true },
217
+ where: eq(mcpStanding.grantId, grantId),
218
+ });
219
+ if (row && row.did !== did)
220
+ return false;
221
+ const holding = await db.query.mcpApprovals.findMany({
222
+ columns: { id: true, status: true, delegation: true, maxAmountUpay: true },
223
+ where: and(eq(mcpApprovals.grantId, grantId), eq(mcpApprovals.did, did), inArray(mcpApprovals.status, ["approved", "awaiting_3ds", "used"]), sql `${mcpApprovals.delegation} is not null`),
224
+ });
225
+ const standingCopies = [];
226
+ for (const a of holding) {
227
+ if (await isStandingCopy(a.delegation, a.maxAmountUpay))
228
+ standingCopies.push(a.id);
229
+ }
230
+ const copies = and(eq(mcpApprovals.grantId, grantId), inArray(mcpApprovals.id, standingCopies));
231
+ await db.batch([
232
+ db.delete(mcpStanding).where(eq(mcpStanding.grantId, grantId)),
233
+ db
234
+ .update(mcpApprovals)
235
+ .set({ status: "expired", delegation: null })
236
+ .where(and(copies, inArray(mcpApprovals.status, ["approved", "awaiting_3ds"]))),
237
+ db.update(mcpApprovals).set({ delegation: null }).where(copies),
238
+ ]);
239
+ return true;
240
+ }
241
+ /**
242
+ * Take `upay` from the grant's standing for ONE request — one batch whose two statements test the
243
+ * SAME conditions: the request's lock row is written only if the price fits (per-claim, total,
244
+ * `until`, the grant's day), and the spend lands only if that lock is this attempt's. So nothing
245
+ * is written when it does not fit — no lock to clean up, whatever happens to the isolate.
246
+ * - `locked`: this request already spent (a retry): never spend or pay again;
247
+ * - null: it does not fit (or there is no live standing): ask the user;
248
+ * - else the delegation to pay with, what is left, and the lock's id (for a refund).
249
+ * An exhausted standing (`spentUpay` = `totalUpay`) or one past `until` approves nothing, free
250
+ * claims included.
251
+ */
252
+ export async function spendStanding(db, spend, now = new Date()) {
253
+ const { grantId, did, requestDigest, upay } = spend;
254
+ const spendId = crypto.randomUUID();
255
+ const fits = sql `exists (select 1 from ${mcpStanding} where ${and(eq(mcpStanding.grantId, grantId), eq(mcpStanding.did, did), gt(mcpStanding.until, now), lte(sql `${upay}`, mcpStanding.perClaimUpay), sql `${mcpStanding.spentUpay} < ${mcpStanding.totalUpay}`, lte(sql `${mcpStanding.spentUpay} + ${upay}`, mcpStanding.totalUpay), sql `${mcpStanding.delegation} is not null`)}) and ${spentToday(grantId, now)} + ${upay} <= ${GRANT_CAP_UPAY}`;
256
+ const [, taken] = await db.batch([
257
+ db
258
+ .insert(mcpStandingSpends)
259
+ .select(sql `select ${grantId}, ${requestDigest}, ${spendId}, ${upay}, ${now.getTime()} where ${fits}`)
260
+ .onConflictDoNothing(),
261
+ db
262
+ .update(mcpStanding)
263
+ .set({ spentUpay: sql `${mcpStanding.spentUpay} + ${upay}` })
264
+ .where(and(eq(mcpStanding.grantId, grantId),
265
+ // Only if THIS attempt wrote the request's lock (which it did only if the price fit).
266
+ sql `exists (select 1 from ${mcpStandingSpends} where ${mcpStandingSpends.grantId} = ${grantId} and ${mcpStandingSpends.requestDigest} = ${requestDigest} and ${mcpStandingSpends.spendId} = ${spendId})`))
267
+ .returning({
268
+ delegation: mcpStanding.delegation,
269
+ totalUpay: mcpStanding.totalUpay,
270
+ spentUpay: mcpStanding.spentUpay,
271
+ }),
272
+ ]);
273
+ const [row] = taken;
274
+ if (row?.delegation) {
275
+ return { delegation: row.delegation, remainingUpay: row.totalUpay - row.spentUpay, spendId };
276
+ }
277
+ const lock = await db.query.mcpStandingSpends.findFirst({
278
+ columns: { spendId: true },
279
+ where: and(eq(mcpStandingSpends.grantId, grantId), eq(mcpStandingSpends.requestDigest, requestDigest)),
280
+ });
281
+ return lock ? "locked" : null;
282
+ }
283
+ /**
284
+ * Proven nothing reserved: give `upay` back — to the delegation it was spent from only (a PUT in
285
+ * between keeps the count, conservatively) — and release THIS spend's lock, in one batch.
286
+ */
287
+ export async function refundStanding(db, spend) {
288
+ const { grantId, spendId, delegation, upay } = spend;
289
+ await db.batch([
290
+ db
291
+ .update(mcpStanding)
292
+ .set({ spentUpay: sql `${mcpStanding.spentUpay} - ${upay}` })
293
+ .where(and(eq(mcpStanding.grantId, grantId), eq(mcpStanding.delegation, delegation), sql `${mcpStanding.spentUpay} >= ${upay}`)),
294
+ db
295
+ .delete(mcpStandingSpends)
296
+ .where(and(eq(mcpStandingSpends.grantId, grantId), eq(mcpStandingSpends.spendId, spendId))),
297
+ ]);
298
+ }
299
+ //# sourceMappingURL=standing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standing.js","sourceRoot":"","sources":["../../../src/lib/oauth/standing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * MCP over OAuth, the oracle as RESOURCE SERVER (spec 2026-10-06 "Oracle side"; S3 review §4):
3
+ * the access token AuthHub mints for `/v1/mcp` and the discovery document that points a client at
4
+ * AuthHub. AuthHub is the one authorization server (`AUTH_HUB_URL`, network-defaulted); the
5
+ * oracle never sees a user's key, only this 5-minute JWT.
6
+ *
7
+ * A token is accepted only if EVERY one holds: EdDSA (no other `alg`, so no `none` and no HMAC
8
+ * confusion), `typ: at+jwt`, signed by a key in AuthHub's JWKS, `iss` exactly AuthHub, `aud`
9
+ * exactly THIS oracle's MCP URL (scheme, host and path — RFC 8707, so a token for one oracle is
10
+ * useless at another; one `aud`, never a list), unexpired within 60 s of skew, issued (`iat`) at
11
+ * most 10 minutes ago, and `sub` a `did:ixo` account. The JWKS is read through KV (`readCache`) and
12
+ * fetched only through `fetchClient`; a miss or a `kid` it does not list fetches it, at most once
13
+ * per REFETCH_MS per isolate, so neither junk `kid`s nor an outage turn into a stream of fetches.
14
+ *
15
+ * A token is accepted on `/v1/mcp` only (`routes/v1/mcp`): `/v1/api` never parses one.
16
+ */
17
+ import type { Config } from "../../config.js";
18
+ import type { TraceContext } from "../tracing.js";
19
+ /** The scopes AuthHub grants (its plan, Global Constraints): exactly these two. */
20
+ export declare const OAUTH_SCOPES: readonly ["claims:write", "claims:read"];
21
+ export type OAuthScope = (typeof OAUTH_SCOPES)[number];
22
+ /** Who an OAuth access token says is calling, and through which app. */
23
+ export interface OAuthIdentity {
24
+ /** The user (`sub`), a `did:ixo` account. */
25
+ did: string;
26
+ clientId: string;
27
+ /** The app's registered name; `clientId` when the token carries none. */
28
+ clientName: string;
29
+ /** AuthHub's `verified`: every redirect URI the client registered is Claude's or ChatGPT's own
30
+ * callback, so only that app can hold the token. Exactly `true`, else false. */
31
+ clientVerified: boolean;
32
+ /** AuthHub's grant (`gid`): the unit a user revokes, and the rate-limit and spend-cap key. */
33
+ grantId: string;
34
+ scopes: readonly OAuthScope[];
35
+ }
36
+ /** The resource every token must be for: this oracle's MCP endpoint, exactly. */
37
+ export declare const mcpResource: (config: Pick<Config, "ORACLE_HOSTNAME">) => string;
38
+ /** RFC 9728's well-known location for that resource. */
39
+ export declare const prmUrl: (config: Pick<Config, "ORACLE_HOSTNAME">) => string;
40
+ /** AuthHub's `did:web` — the one invoker of the approvals back-channel. */
41
+ export declare const authHubDid: (config: Pick<Config, "AUTH_HUB_URL">) => string;
42
+ /** RFC 9728 protected-resource metadata for `/v1/mcp`. */
43
+ export declare const protectedResource: (config: Pick<Config, "ORACLE_HOSTNAME" | "AUTH_HUB_URL">) => {
44
+ resource: string;
45
+ authorization_servers: string[];
46
+ scopes_supported: ("claims:read" | "claims:write")[];
47
+ bearer_methods_supported: string[];
48
+ };
49
+ /** A bearer that is not ours to accept: the caller gets 401 and goes back through OAuth. */
50
+ export declare class InvalidToken extends Error {
51
+ }
52
+ /** Three base64url segments: the only bearer shape `/v1/mcp` treats as an OAuth token. */
53
+ export declare const looksLikeJwt: (token: string) => boolean;
54
+ export interface TokenDeps {
55
+ config: Pick<Config, "ORACLE_HOSTNAME" | "AUTH_HUB_URL">;
56
+ cache: KVNamespace;
57
+ trace?: TraceContext;
58
+ }
59
+ export declare function verifyAccessToken(deps: TokenDeps, token: string): Promise<OAuthIdentity>;
60
+ //# sourceMappingURL=token.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../src/lib/oauth/token.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AASH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAM3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,mFAAmF;AACnF,eAAO,MAAM,YAAY,YAAI,cAAc,EAAE,aAAa,CAAU,CAAC;AACrE,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD,wEAAwE;AACxE,MAAM,WAAW,aAAa;IAC5B,6CAA6C;IAC7C,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,UAAU,EAAE,MAAM,CAAC;IACnB;qFACiF;IACjF,cAAc,EAAE,OAAO,CAAC;IACxB,8FAA8F;IAC9F,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC;CAC/B;AAYD,iFAAiF;AACjF,eAAO,MAAM,WAAW,WAAY,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,KAAG,MAC1B,CAAC;AAE7C,wDAAwD;AACxD,eAAO,MAAM,MAAM,WAAY,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,KAAG,MACgB,CAAC;AAElF,2EAA2E;AAC3E,eAAO,MAAM,UAAU,WAAY,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,KAAG,MACrB,CAAC;AAE9C,0DAA0D;AAC1D,eAAO,MAAM,iBAAiB,WAAY,IAAI,CAAC,MAAM,EAAE,iBAAiB,GAAG,cAAc,CAAC;IACxF,QAAQ;IACR,qBAAqB;IACrB,gBAAgB;IAChB,wBAAwB;CACxB,CAAC;AAEH,4FAA4F;AAC5F,qBAAa,YAAa,SAAQ,KAAK;CAAG;AAE1C,0FAA0F;AAC1F,eAAO,MAAM,YAAY,UAAW,MAAM,KAAG,OACmB,CAAC;AAEjE,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,iBAAiB,GAAG,cAAc,CAAC,CAAC;IACzD,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAkC9F"}