@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,737 @@
1
+ /**
2
+ * `decision-oracle api …` — the Decision API lane's operator surface (go-prod spec §3.2, §12.2), for
3
+ * whoever runs an oracle with `API_LANE` on and has no console in front of it yet. Every call is a
4
+ * console invocation signed as the AuthHub session `decision-oracle login` saved: `{ with:
5
+ * ixo:oracle/<oracle did:web>, can: <the route's action> }` for the account and operator routes,
6
+ * `…/source/<id>` + `X-Source-Id` for a source's own (`middleware/api/console.ts`; the action is
7
+ * the route's `API_ACTIONS` entry, named by its op at each call), 120 s, audience read off the
8
+ * oracle's did.json. The session invokes as itself, with no grant — so on a source it must be a
9
+ * current controller (admin) of the source's organisation (D10); on `/admin` its DID must be in the
10
+ * oracle's `ORACLE_ADMIN_DIDS`.
11
+ *
12
+ * api source create --name <n> --contact <email> --entity <did:ixo:entity:…>
13
+ * add this oracle to an organisation you
14
+ * control (pending-link; secret shown once)
15
+ * api source link <sourceId> [--engine-url <url>] [--yes]
16
+ * finish it as the console's "Add oracle"
17
+ * does: sign the organisation's link, PUT
18
+ * it to the ENGINE (`company/link` on
19
+ * `ixo:eval-engine`), then the oracle's
20
+ * company sync → active
21
+ * api source delete <sourceId> [--yes] remove this oracle from the organisation:
22
+ * the source and every row off it (the
23
+ * undo for a wrong link; root only)
24
+ * api sources [--entity <did:ixo:entity:…>] the session's memberships on this oracle;
25
+ * with --entity, every source of an
26
+ * organisation it controls (pending too)
27
+ * api key create --source <id> --scopes <s,…> [--name <n>] [--max-spend-cents <n>]
28
+ * api keys --source <id>
29
+ * api key revoke --source <id> <prefix|masked key> [--grace-days <n>] [--yes]
30
+ * api admin sources
31
+ * api admin pause <sourceId> [--note <text>] [--yes]
32
+ * api admin resume <sourceId> [--yes]
33
+ * api admin protocols <sourceId> <did,…>|--none [--yes] replaces the allow-list whole
34
+ * api admin billing-mode <sourceId> x402|none [--yes] operator-only by design (§3.2)
35
+ * api review-billing enable --source <id> [--cap <PAY>] [--yes]
36
+ * "Pay for reviews" (contracts 1.22.0): the
37
+ * organisation's chain owner signs the x402
38
+ * payment delegation and stores it here
39
+ * api review-billing status --source <id>
40
+ * api review-billing disable --source <id> [--yes] drop it here, then revoke it in the UCAN store
41
+ *
42
+ * Common: `--kit <url>` (else the project's `ORACLE_HOSTNAME`), `--env-file`, `--network`
43
+ * (which saved session; else the project's `IXO_NETWORK`, else devnet), `--json` (the response body
44
+ * as the API answered it — stdout is that JSON and nothing else: a gate's plan goes to stderr, so a
45
+ * dry run under `--json` prints nothing on stdout). A refusal prints the §4.1 envelope's code,
46
+ * message and requestId and exits 1. Every write carries a fresh `Idempotency-Key`.
47
+ */
48
+ import process from "node:process";
49
+ import { oracleResource, sourceResource } from "../../contracts/capabilities.js";
50
+ import { NETWORKS } from "../../networks.js";
51
+ import { parse, UsageError } from "../lib/args.js";
52
+ import { confirm, fail, resolveEntity, resolveNetwork } from "../lib/chain.js";
53
+ import { loadProjectConfig, oracleUrlFor, readProjectEnv } from "../lib/devvars.js";
54
+ import { engineUrlFor } from "../lib/engine.js";
55
+ import { kitFetch, loadSession, sessionInvocation, signCompanyLink, } from "../lib/session.js";
56
+ const COMMON = {
57
+ kit: { type: "string" },
58
+ "env-file": { type: "string" },
59
+ network: { type: "string" },
60
+ json: { type: "boolean" },
61
+ yes: { type: "boolean" },
62
+ };
63
+ /**
64
+ * `review-billing enable`'s default lifetime cap, in PAY (1 PAY = 1 000 000 upay = $1): a sensible
65
+ * default the owner raises with `--cap` (owner, 2026-10-14 — about 2 000 reviews at 0.5 PAY), the
66
+ * same on every network. The delegation's `maxAmount` is cumulative over its whole life (the
67
+ * facilitator never refunds or resets it), so a raise is a new delegation that replaces this one.
68
+ */
69
+ const DEFAULT_CAP_PAY = "1000";
70
+ /** The delegation's life (S4, 2026-10-14): ~100 years. A standing authority, not a top-up; the
71
+ * cap is what bounds it, and `disable` (plus a revoke) is what ends it. */
72
+ const REVIEW_BILLING_LIFE_SEC = Math.round(100 * 365.25 * 86_400);
73
+ export const API_USAGE = `usage: decision-oracle api <subcommand> [options]
74
+
75
+ source create --name <n> --contact <email> --entity <did>
76
+ add this oracle to an organisation you control —
77
+ pending-link until its link syncs; secret shown ONCE
78
+ source link <sourceId> [--engine-url <url>] sign the organisation's link, store it at the
79
+ engine and sync it: pending-link → active
80
+ source delete <sourceId> remove this oracle from the organisation: the
81
+ source, its keys, members, webhooks and claims
82
+ sources [--entity <did>] the sources your login belongs to; with --entity,
83
+ every source of an organisation you control
84
+ (pending-link ones included)
85
+ key create --source <id> --scopes <s,…> [--name <n>] [--max-spend-cents <n>]
86
+ mint an API key — shown ONCE
87
+ keys --source <id> a source's keys, masked
88
+ key revoke --source <id> <prefix|masked key> [--grace-days <n>]
89
+ admin sources every source (your DID in ORACLE_ADMIN_DIDS)
90
+ admin pause <sourceId> [--note <text>]
91
+ admin resume <sourceId>
92
+ admin protocols <sourceId> <did,…>|--none replace a source's allowed protocols (--none: no
93
+ protocol at all)
94
+ admin billing-mode <sourceId> x402|none
95
+ review-billing enable --source <id> [--cap <PAY>]
96
+ "Pay for reviews": sign, as the organisation's
97
+ chain owner, a payment delegation for this oracle's
98
+ reviews (a lifetime cap, default ${DEFAULT_CAP_PAY} PAY;
99
+ ~100 years) and store it; enable again with a higher
100
+ --cap replaces it
101
+ review-billing status --source <id> the stored delegation: state, cap, spent, credits
102
+ review-billing disable --source <id> drop it here, then revoke it in the UCAN store
103
+
104
+ common: --kit <url> (else ORACLE_HOSTNAME from the project), --env-file <path>,
105
+ --network devnet|testnet|mainnet (else the project's IXO_NETWORK, else devnet), --json (the API's
106
+ answer, alone on stdout), --yes (a source link or delete, a key revoke, every admin change and a
107
+ review-billing enable or disable are dry runs without it)
108
+ `;
109
+ export async function run(argv) {
110
+ const [group, verb, ...rest] = argv;
111
+ if (group === "help" || group === "--help" || group === "-h") {
112
+ console.log(API_USAGE);
113
+ return 0;
114
+ }
115
+ // `api <group> <verb> --help`: that command's usage line(s) plus the common flags — parseArgs is
116
+ // strict, so without this a per-command `--help` dies as "Unknown option".
117
+ const isHelp = (arg) => arg === "--help" || arg === "-h";
118
+ if (isHelp(verb) || rest.some(isHelp)) {
119
+ const name = isHelp(verb) ? group : `${group} ${verb}`;
120
+ const lines = API_USAGE.split("\n");
121
+ const start = lines.findIndex((line) => line.trimStart().startsWith(`${name} `));
122
+ if (start === -1) {
123
+ console.log(API_USAGE);
124
+ return 0;
125
+ }
126
+ let end = start + 1;
127
+ while (end < lines.length && /^\s{10,}\S/.test(lines[end] ?? ""))
128
+ end++;
129
+ const common = lines.findIndex((line) => line.startsWith("common:"));
130
+ console.log([...lines.slice(start, end), "", ...(common === -1 ? [] : lines.slice(common))].join("\n"));
131
+ return 0;
132
+ }
133
+ switch (`${group} ${verb}`) {
134
+ case "source create":
135
+ return call(rest, { name: { type: "string" }, contact: { type: "string" }, entity: { type: "string" } }, sourceCreate);
136
+ case "source link":
137
+ return call(rest, { "engine-url": { type: "string" } }, sourceLink);
138
+ case "source delete":
139
+ return call(rest, {}, sourceDelete);
140
+ case "key create":
141
+ return call(rest, {
142
+ source: { type: "string" },
143
+ scopes: { type: "string" },
144
+ name: { type: "string" },
145
+ "max-spend-cents": { type: "string" },
146
+ }, keyCreate);
147
+ case "key revoke":
148
+ return call(rest, { source: { type: "string" }, "grace-days": { type: "string" } }, keyRevoke);
149
+ case "admin sources":
150
+ return call(rest, {}, adminSources);
151
+ case "admin pause":
152
+ return call(rest, { note: { type: "string" } }, adminPause);
153
+ case "admin resume":
154
+ return call(rest, {}, adminResume);
155
+ case "admin protocols":
156
+ return call(rest, { none: { type: "boolean" } }, adminProtocols);
157
+ case "admin billing-mode":
158
+ return call(rest, {}, adminBillingMode);
159
+ case "review-billing enable":
160
+ return call(rest, { source: { type: "string" }, cap: { type: "string" } }, reviewBillingEnable);
161
+ case "review-billing status":
162
+ return call(rest, { source: { type: "string" } }, reviewBillingStatus);
163
+ case "review-billing disable":
164
+ return call(rest, { source: { type: "string" } }, reviewBillingDisable);
165
+ }
166
+ // The two list verbs take no second word.
167
+ const tail = verb === undefined ? [] : [verb, ...rest];
168
+ if (group === "sources")
169
+ return call(tail, { entity: { type: "string" } }, sources);
170
+ if (group === "keys")
171
+ return call(tail, { source: { type: "string" } }, keys);
172
+ throw new UsageError(group === undefined
173
+ ? "api needs a subcommand (source create|sources|key create|keys|key revoke|admin …|review-billing …)"
174
+ : `unknown api subcommand: ${[group, verb].filter(Boolean).join(" ")}`);
175
+ }
176
+ // --- a source's own routes (the session must be a controller of its organisation) --------------
177
+ async function sourceCreate({ api, values, }) {
178
+ const name = required(values.name, "api source create needs --name <name>");
179
+ const contactEmail = required(values.contact, "api source create needs --contact <email>");
180
+ const entityDid = required(values.entity, "api source create needs --entity <did:ixo:entity:…> (the organisation you control)");
181
+ const body = await api("createSource", "POST", "/v1/api/sources", {
182
+ name,
183
+ contactEmail,
184
+ entityDid,
185
+ });
186
+ return out(body, [
187
+ `created ${sourceLine(body.source)}`,
188
+ "pending-link: it takes no claims or keys until the organisation's link is signed in the",
189
+ "Decision Console (which then syncs it), or with",
190
+ `\`decision-oracle api source link ${body.source.sourceId} --yes\`. Find it again with`,
191
+ `\`decision-oracle api sources --entity ${entityDid}\`.`,
192
+ "",
193
+ "webhook signing secret — shown ONCE, store it now (only a rotation gets you another):",
194
+ ` ${body.webhookSecret ?? "(not returned: an idempotent replay never repeats a secret)"}`,
195
+ ]);
196
+ }
197
+ /**
198
+ * The console's "Add oracle" steps 2 and 3 (eval-engine-dashboard `lib/addOracle.ts` `linkSource`)
199
+ * for a source `source create` left `pending-link`: the session — a current controller of the
200
+ * source's organisation — signs the `SourceCompanyLink`, PUTs it to the ENGINE, the link's one home
201
+ * (`PUT /v1/sources/:oracleDid/:sourceId/company`, `{ can: company/link, with: ixo:eval-engine }`),
202
+ * then asks the oracle to mirror it (`company/sync`) → `active`, or `disputed` when the engine
203
+ * holds another organisation's link. The organisation is the source's own (`GET /v1/api/me`), so
204
+ * the link can name no other. A source that is already linked is printed and left alone.
205
+ */
206
+ async function sourceLink({ api, values, positionals, gate, session, network, oracleUrl, }) {
207
+ const sourceId = required(positionals[0], "api source link needs <sourceId>");
208
+ const me = await api("getMe", "GET", "/v1/api/me", undefined, sourceId);
209
+ const source = me.source;
210
+ if (source.status !== "pending-link") {
211
+ return out({ source }, [
212
+ source.status === "disputed"
213
+ ? "disputed: the engine holds another organisation's link for this source. Delete it and add the oracle again."
214
+ : "already linked — nothing to do.",
215
+ sourceLine(source),
216
+ ]);
217
+ }
218
+ const entityDid = source.companyEntityDid;
219
+ const engineUrl = engineUrlFor({ network, engineUrl: values["engine-url"] });
220
+ gate(`link source ${sourceId} to its organisation`, [
221
+ `entity : ${entityDid}`,
222
+ `engine : ${engineUrl} (PUT …/company, company/link)`,
223
+ "then : the oracle's company sync",
224
+ ]);
225
+ const oracleDid = await fetch(`${oracleUrl}/.well-known/did.json`)
226
+ .then(async (res) => (await res.json()).id)
227
+ .catch(() => {
228
+ throw new Error(`no did.json at ${oracleUrl}`);
229
+ });
230
+ const link = await signCompanyLink(session, { entityDid, oracleDid, sourceId });
231
+ const { token } = await sessionInvocation(session, engineUrl, "engine", () => ({
232
+ can: "company/link",
233
+ with: "ixo:eval-engine",
234
+ }));
235
+ const path = `/v1/sources/${encodeURIComponent(oracleDid)}/${encodeURIComponent(sourceId)}/company`;
236
+ const res = await fetch(`${engineUrl}${path}`, {
237
+ method: "PUT",
238
+ headers: {
239
+ authorization: `Bearer ${token}`,
240
+ "x-auth-type": "ucan",
241
+ "content-type": "application/json",
242
+ },
243
+ body: JSON.stringify({ link }),
244
+ });
245
+ if (!res.ok) {
246
+ refused(res.status, `${engineUrl}${path}`, await res.text());
247
+ }
248
+ const synced = await api("syncSourceCompany", "POST", `/v1/api/sources/${encodeURIComponent(sourceId)}/company/sync`, undefined, sourceId);
249
+ const now = synced.source;
250
+ return out(synced, [
251
+ now.status === "active"
252
+ ? `linked ${sourceLine(now)}`
253
+ : `the oracle reads it as ${now.status}: ${sourceLine(now)}`,
254
+ ]);
255
+ }
256
+ /**
257
+ * `DELETE /v1/api/sources/:id` — the clean undo for a wrong organisation link (and the way out of
258
+ * `disputed`). Root only, like `source link`: a current controller of the source's organisation,
259
+ * no proof. The plan names what goes, read off `/me` first, so a dry run shows the source by name.
260
+ * Nothing on chain or at the engine changes.
261
+ */
262
+ async function sourceDelete({ api, positionals, gate }) {
263
+ const sourceId = required(positionals[0], "api source delete needs <sourceId>");
264
+ const source = (await api("getMe", "GET", "/v1/api/me", undefined, sourceId)).source;
265
+ gate(`DELETE source ${sourceId} and every row off it (keys, members, webhooks, claims)`, [
266
+ `name : ${source.name}`,
267
+ `status : ${source.status}`,
268
+ `entity : ${source.companyEntityDid}`,
269
+ ]);
270
+ const path = `/v1/api/sources/${encodeURIComponent(sourceId)}`;
271
+ await api("deleteSource", "DELETE", path, undefined, sourceId);
272
+ const raw = { deleted: true, sourceId };
273
+ return out(raw, [JSON.stringify(raw)]);
274
+ }
275
+ async function sources({ api, values }) {
276
+ if (values.entity) {
277
+ // A controller has no membership: its organisation's sources (pending-link ones included) are
278
+ // only here — the list a retry must read before it signs up a second source.
279
+ const items = await allPages(api, "listOrganisationSources", `/v1/api/organisations/${encodeURIComponent(values.entity)}/sources`);
280
+ return out({ items }, items.length === 0
281
+ ? ["no sources of this organisation on this oracle"]
282
+ : items.map(sourceLine));
283
+ }
284
+ const body = await api("listMySources", "GET", "/v1/api/sources");
285
+ const items = body.items;
286
+ return out(body, items.length === 0
287
+ ? [
288
+ "no memberships. A controller (admin) of an organisation is a member of none: list its",
289
+ "sources, pending-link ones included, with `decision-oracle api sources --entity <did:ixo:entity:…>`",
290
+ "before `decision-oracle api source create` adds another.",
291
+ ]
292
+ : items.map((m) => `${sourceLine(m.source)} role=${m.role} (${m.status})`));
293
+ }
294
+ /** Every page of a keyset-paged source list (100 a page): the cursor is followed to the end. */
295
+ async function allPages(api, op, path) {
296
+ const items = [];
297
+ let cursor = null;
298
+ do {
299
+ const page = await api(op, "GET", cursor ? `${path}?cursor=${encodeURIComponent(cursor)}` : path);
300
+ items.push(...page.items);
301
+ cursor = page.nextCursor ?? null;
302
+ } while (cursor);
303
+ return items;
304
+ }
305
+ async function keyCreate({ api, values, }) {
306
+ const sourceId = required(values.source, "api key create needs --source <id>");
307
+ const scopes = list(required(values.scopes, "api key create needs --scopes <scope,…>"));
308
+ const max = values["max-spend-cents"];
309
+ const body = await api("createApiKey", "POST", "/v1/api/keys", {
310
+ scopes,
311
+ ...(values.name ? { name: values.name } : {}),
312
+ ...(max !== undefined ? { maxSpendCentsPerDay: integer(max, "--max-spend-cents") } : {}),
313
+ }, sourceId);
314
+ return out(body, [
315
+ `created ${keyLine(body)}`,
316
+ "",
317
+ "API key — shown ONCE, store it now (the oracle keeps only its hash):",
318
+ ` ${body.key ?? "(not returned: an idempotent replay never repeats a key)"}`,
319
+ ]);
320
+ }
321
+ async function keys({ api, values }) {
322
+ const sourceId = required(values.source, "api keys needs --source <id>");
323
+ const body = await api("listApiKeys", "GET", "/v1/api/keys", undefined, sourceId);
324
+ const items = body.items;
325
+ return out(body, items.length === 0 ? ["no keys on this source"] : items.map(keyLine));
326
+ }
327
+ async function keyRevoke({ api, values, positionals, gate, }) {
328
+ const sourceId = required(values.source, "api key revoke needs --source <id>");
329
+ const prefix = keyPrefix(required(positionals[0], "api key revoke needs the key's <prefix> (or its masked form)"));
330
+ const graceDays = integer(values["grace-days"] ?? "0", "--grace-days");
331
+ gate(`revoke API key ${prefix}`, [
332
+ `source : ${sourceId}`,
333
+ `grace : ${graceDays > 0 ? `the key keeps working ${graceDays} day(s)` : "none — at once"}`,
334
+ ]);
335
+ const path = `/v1/api/keys/${encodeURIComponent(prefix)}?graceDays=${graceDays}`;
336
+ const body = await api("revokeApiKey", "DELETE", path, undefined, sourceId);
337
+ return out(body, [`revoked ${keyLine(body)}`]);
338
+ }
339
+ // --- the operator view (the session must be in the oracle's ORACLE_ADMIN_DIDS) ------------------------
340
+ const ADMIN = "/v1/api/admin/sources";
341
+ const adminPath = (sourceId, tail) => `${ADMIN}/${encodeURIComponent(sourceId)}/${tail}`;
342
+ const sourceOut = (body) => out(body, [sourceLine(body)]);
343
+ async function adminSources({ api }) {
344
+ const items = await allPages(api, "adminListSources", ADMIN);
345
+ return out({ items }, items.length === 0 ? ["no sources on this oracle"] : items.map(sourceLine));
346
+ }
347
+ async function adminPause({ api, values, positionals, gate }) {
348
+ const id = required(positionals[0], "api admin pause needs <sourceId>");
349
+ gate(`pause source ${id}`, values.note ? [`note : ${values.note}`] : []);
350
+ return sourceOut(await api("adminPauseSource", "POST", adminPath(id, "pause"), values.note ? { note: values.note } : {}));
351
+ }
352
+ async function adminResume({ api, positionals, gate }) {
353
+ const id = required(positionals[0], "api admin resume needs <sourceId>");
354
+ gate(`resume source ${id}`, []);
355
+ return sourceOut(await api("adminResumeSource", "POST", adminPath(id, "resume")));
356
+ }
357
+ async function adminProtocols({ api, values, positionals, gate }) {
358
+ const usage = "api admin protocols needs <sourceId> <did,…> (or --none)";
359
+ const id = required(positionals[0], usage);
360
+ // `--none` is the explicit empty list: the server takes `[]` as "nothing is allowed on this lane",
361
+ // which an empty positional could only say by accident.
362
+ if (values.none && positionals[1] !== undefined) {
363
+ throw new UsageError("api admin protocols takes <did,…> or --none, not both");
364
+ }
365
+ const dids = values.none ? [] : list(required(positionals[1], usage));
366
+ gate(`replace source ${id}'s allowed protocols`, dids.length === 0
367
+ ? ["protocols: NONE — the source can submit nothing"]
368
+ : dids.map((did) => `protocol: ${did}`));
369
+ const protocols = dids.map((protocolDid) => ({ protocolDid }));
370
+ return sourceOut(await api("adminSetSourceProtocols", "PUT", adminPath(id, "protocols"), { protocols }));
371
+ }
372
+ async function adminBillingMode({ api, positionals, gate }) {
373
+ const [id, billingMode] = positionals;
374
+ if (!id || (billingMode !== "x402" && billingMode !== "none")) {
375
+ throw new UsageError("api admin billing-mode needs <sourceId> x402|none");
376
+ }
377
+ gate(`set source ${id}'s billing mode`, [`mode : ${billingMode}`]);
378
+ return sourceOut(await api("adminSetSourceBillingMode", "PUT", adminPath(id, "billing-mode"), {
379
+ billingMode,
380
+ }));
381
+ }
382
+ // --- review billing ("Pay for reviews", contracts 1.22.0; routes/v1/api/review-billing.ts) -------
383
+ const REVIEW_BILLING = "/v1/api/source/review-billing";
384
+ /**
385
+ * The Decision Console's "Pay for reviews" from a terminal: the session — the organisation's
386
+ * CURRENT chain owner, since the facilitator debits the signer's own credits — signs one standing
387
+ * x402-ixo-pay payment delegation (`billing/pay` on `billing:decision-api`, `nb: { maxAmount, denom:
388
+ * upay, oracles: [this oracle] }`, to the facilitator's did:web, ~100 years) and PUTs it on the
389
+ * source. Everything the oracle would refuse for a reason the caller can fix is checked first —
390
+ * the oracle's plan (`/v1/info`), the source's billing mode, the owner on chain, the cap against the
391
+ * price — so a dry run is the whole answer; the oracle re-checks all of it, and the signature.
392
+ * The token is then deposited in the UCAN store (fail-soft): the store revokes by CID only a
393
+ * delegation it holds, and the oracle never hands the token back, so that is what lets `disable`
394
+ * revoke it.
395
+ */
396
+ async function reviewBillingEnable({ api, values, gate, session, network, oracleUrl, }) {
397
+ const sourceId = required(values.source, "api review-billing enable needs --source <id>");
398
+ const maxAmount = upayFromPay(values.cap ?? DEFAULT_CAP_PAY, "--cap");
399
+ const info = await oracleInfo(oracleUrl);
400
+ const billing = info.reviewBilling;
401
+ if (billing?.mode !== "x402") {
402
+ refuse(`this oracle does not bill reviews per review (its /v1/info reviewBilling.mode is ${billing?.mode ?? "absent"}): IXO switches that on in the oracle's plan. Until then its collections pay by an on-chain evaluation payment.`);
403
+ }
404
+ const price = billing.pricePerReview?.amount ??
405
+ refuse("this oracle publishes no per-review price, so it cannot bill reviews. Ask its operator.");
406
+ if (BigInt(maxAmount) < BigInt(price)) {
407
+ refuse(`--cap ${pay(maxAmount)} PAY is below the price of one review (${pay(price)} PAY).`);
408
+ }
409
+ const source = (await api("getMe", "GET", "/v1/api/me", undefined, sourceId)).source;
410
+ if (source.billingMode !== "x402") {
411
+ refuse(`source ${sourceId} is not billed (billing mode ${source.billingMode}), so it cannot pay for reviews. Ask the oracle's operator to bill it.`);
412
+ }
413
+ const entityDid = source.companyEntityDid ?? refuse(`source ${sourceId} is linked to no organisation.`);
414
+ const owner = (await resolveEntity(NETWORKS[network].blocksync, entityDid)).owner;
415
+ const ownerDid = owner ? `did:ixo:${owner}` : null;
416
+ if (ownerDid !== session.did) {
417
+ refuse(`you are not the organisation's owner on chain, so you cannot pay for its reviews: ${entityDid} is owned by ${ownerDid ?? "no account Blocksync knows"}, and you are logged in as ${session.did}. Reviews are charged to the signer's own credits, so the owner signs: log in as the owner (decision-oracle login) and run this again.`);
418
+ }
419
+ const facilitatorDid = `did:web:${new URL(NETWORKS[network].facilitator).host}`;
420
+ const expiration = Math.floor(Date.now() / 1000) + REVIEW_BILLING_LIFE_SEC;
421
+ gate(`pay for source ${sourceId}'s reviews from your credits (sign a payment delegation)`, [
422
+ `entity : ${entityDid} (you own it on chain)`,
423
+ `payer : ${session.did} — each review is charged to YOUR credits`,
424
+ `to : ${facilitatorDid} (billing/pay on billing:decision-api)`,
425
+ `bound : nb.oracles = ["${info.serviceDid}"] — only this oracle can charge it`,
426
+ `price : ${pay(price)} PAY a review`,
427
+ `cap : ${pay(maxAmount)} PAY (${maxAmount} upay), about ${BigInt(maxAmount) / BigInt(price)} review(s)`,
428
+ " a LIFETIME total: every review adds to what it has spent, and nothing is ever",
429
+ " refunded or reset. When it runs low, run enable again with a higher --cap: the new",
430
+ " delegation replaces this one and starts again from 0 spent.",
431
+ `expires : ${new Date(expiration * 1000).toISOString().slice(0, 10)} (~100 years)`,
432
+ `then : PUT ${REVIEW_BILLING}, then a copy to the UCAN store (so disable can revoke it)`,
433
+ ]);
434
+ const { signerFromMnemonic } = await import("@ixo/ucan");
435
+ const { buildPaymentDelegation } = await import("@ixo/x402-ixo-pay");
436
+ const { signer } = await signerFromMnemonic(session.edSigningMnemonic ?? fail("AuthHub session has no edSigningMnemonic — re-run login"), session.did);
437
+ const delegation = await buildPaymentDelegation({
438
+ issuer: signer,
439
+ facilitatorDid,
440
+ maxAmount,
441
+ expiration,
442
+ oracles: [info.serviceDid],
443
+ });
444
+ await api("setReviewBilling", "PUT", REVIEW_BILLING, { delegation }, sourceId);
445
+ const deposit = await storeCall(session, network, "store/add", "/api/delegations", {
446
+ token: delegation,
447
+ note: `review billing: source ${sourceId} on ${info.serviceDid}`,
448
+ });
449
+ const status = (await api("getReviewBilling", "GET", REVIEW_BILLING, undefined, sourceId));
450
+ return out(status, [
451
+ `review billing is on for source ${sourceId}`,
452
+ ...reviewBillingLines(status),
453
+ ...(deposit.ok
454
+ ? []
455
+ : [
456
+ `warning: the UCAN store did not take a copy (${deposit.detail}), so disable cannot`,
457
+ "revoke it there; disable still stops it here, and only this oracle can charge it.",
458
+ ]),
459
+ ]);
460
+ }
461
+ async function reviewBillingStatus({ find, values }) {
462
+ const sourceId = required(values.source, "api review-billing status needs --source <id>");
463
+ const status = (await find("getReviewBilling", REVIEW_BILLING, sourceId));
464
+ if (!status) {
465
+ return out(null, [
466
+ `source ${sourceId} holds no review-billing delegation (or this oracle does not bill reviews`,
467
+ `per review). Turn it on with: decision-oracle api review-billing enable --source ${sourceId}`,
468
+ ]);
469
+ }
470
+ return out(status, reviewBillingLines(status));
471
+ }
472
+ /**
473
+ * Drops the source's delegation (`DELETE`: this oracle stops charging it, and its collections'
474
+ * reviews pause), then revokes it in the UCAN store — the full stop the route's answer asks for,
475
+ * since the facilitator checks every payment delegation against the store's revocations. The store
476
+ * revokes by CID only a delegation it holds (`enable` deposits one) and only for an issuer in its
477
+ * chain, so one signed by someone else, or stored from the Console, is left for its signer to
478
+ * revoke, and the output says so. A revocation is permanent: enable signs a new delegation.
479
+ */
480
+ async function reviewBillingDisable({ api, find, values, gate, session, network, }) {
481
+ const sourceId = required(values.source, "api review-billing disable needs --source <id>");
482
+ const held = (await find("getReviewBilling", REVIEW_BILLING, sourceId));
483
+ if (!held) {
484
+ return out({ deleted: false, revoked: false }, [
485
+ `source ${sourceId} holds no review-billing delegation (or this oracle does not bill reviews`,
486
+ "per review): nothing to disable.",
487
+ ]);
488
+ }
489
+ const mine = held.payer === session.did;
490
+ gate(`stop paying for source ${sourceId}'s reviews`, [
491
+ `payer : ${held.payer}`,
492
+ `cid : ${held.delegationCid}`,
493
+ `spent : ${pay(held.spent)} of ${pay(held.maxAmount)} PAY`,
494
+ `then : DELETE ${REVIEW_BILLING}: this oracle stops charging it, and its`,
495
+ " collections' reviews pause until a delegation is stored again",
496
+ mine
497
+ ? "and : REVOKE it in the UCAN store, permanently (enable signs a new one)"
498
+ : `and : no revoke here: only its signer (${held.payer}) can revoke it`,
499
+ ]);
500
+ const deleted = await api("deleteReviewBilling", "DELETE", REVIEW_BILLING, undefined, sourceId);
501
+ const revoke = mine
502
+ ? await storeCall(session, network, "store/revoke", "/api/revocations", {
503
+ cid: held.delegationCid,
504
+ reason: `review billing disabled: source ${sourceId}`,
505
+ })
506
+ : null;
507
+ const lines = [`review billing is off for source ${sourceId}`];
508
+ if (revoke?.ok) {
509
+ lines.push(`revoked ${held.delegationCid} in the UCAN store`);
510
+ }
511
+ else {
512
+ lines.push(revoke === null
513
+ ? `not revoked: ${held.payer} signed it, not you.`
514
+ : revoke.status === 404
515
+ ? "not revoked: the UCAN store holds no copy (it was not stored by this CLI)."
516
+ : `not revoked: the UCAN store answered ${revoke.detail}.`, "It stays valid until it expires, but only this oracle can charge it and this oracle no", "longer holds it. For a full stop, its signer revokes it in the Decision Console.");
517
+ }
518
+ return out({ ...deleted, revoked: revoke?.ok === true, delegationCid: held.delegationCid }, lines);
519
+ }
520
+ /** The public `/v1/info`: whether this oracle bills reviews, at what price, and its did:web. */
521
+ async function oracleInfo(oracleUrl) {
522
+ const url = `${oracleUrl}/v1/info`;
523
+ const res = await fetch(url);
524
+ const text = await res.text();
525
+ if (!res.ok)
526
+ refused(res.status, url, text);
527
+ return JSON.parse(text);
528
+ }
529
+ /** One self-signed call to the network's UCAN store (`{ can, with: ixo:ucan-store }`, a fresh
530
+ * invocation each time: the store refuses a replay). Never throws — the caller says what a miss
531
+ * means. */
532
+ async function storeCall(session, network, can, path, body) {
533
+ const storeUrl = NETWORKS[network].ucanStore;
534
+ try {
535
+ const { token } = await sessionInvocation(session, storeUrl, "UCAN store", () => ({
536
+ can,
537
+ with: "ixo:ucan-store",
538
+ }));
539
+ const res = await fetch(`${storeUrl}${path}`, {
540
+ method: "POST",
541
+ headers: { authorization: `Bearer ${token}`, "content-type": "application/json" },
542
+ body: JSON.stringify(body),
543
+ });
544
+ const text = await res.text();
545
+ const message = jsonOrUndefined(text)?.message;
546
+ return {
547
+ ok: res.ok,
548
+ status: res.status,
549
+ detail: `${res.status} ${message ?? text.slice(0, 200)}`,
550
+ };
551
+ }
552
+ catch (err) {
553
+ return { ok: false, status: 0, detail: err instanceof Error ? err.message : String(err) };
554
+ }
555
+ }
556
+ function reviewBillingLines(b) {
557
+ const credits = b.credits
558
+ ? `${pay(b.credits.available)} PAY available`
559
+ : "not read yet (after the first review is reserved)";
560
+ const prices = b.pricePerReview.map((p) => `${pay(p.amount)} PAY (${p.protocolDid})`);
561
+ const paused = b.pausedCollections.map((p) => `${p.collectionId} ${p.reason} since ${p.since}`);
562
+ return [
563
+ `state : ${b.state}`,
564
+ `payer : ${b.payer}`,
565
+ `cap : ${pay(b.maxAmount)} PAY lifetime — spent ${pay(b.spent)}, remaining ${pay(b.remaining)}`,
566
+ `expires : ${b.expiresAt}`,
567
+ `credits : ${credits}`,
568
+ `price : ${prices.length === 0 ? "none published" : prices.join(", ")}`,
569
+ `paused : ${paused.length === 0 ? "none" : paused.join(", ")}`,
570
+ `cid : ${b.delegationCid}`,
571
+ ];
572
+ }
573
+ /** A PAY figure ("100", "12.5") → the upay integer string a delegation carries (1 PAY = 10^6). */
574
+ function upayFromPay(value, flag) {
575
+ const match = /^(\d+)(?:\.(\d{1,6}))?$/.exec(value.trim());
576
+ const upay = match
577
+ ? BigInt(match[1]) * 1000000n + BigInt((match[2] ?? "").padEnd(6, "0"))
578
+ : 0n;
579
+ if (upay <= 0n)
580
+ throw new UsageError(`${flag} must be a positive PAY amount, at most 6 decimals`);
581
+ return upay.toString();
582
+ }
583
+ /** upay → PAY for display, exact (no float). */
584
+ function pay(upay) {
585
+ const n = BigInt(upay);
586
+ const fraction = (n % 1000000n).toString().padStart(6, "0").replace(/0+$/, "");
587
+ return `${n / 1000000n}${fraction ? `.${fraction}` : ""}`;
588
+ }
589
+ // --- the shared plumbing ------------------------------------------------------------------------
590
+ /** The API refused; the envelope is already printed. Exit 1. */
591
+ class Refused extends Error {
592
+ }
593
+ /** A refusal of the CLI's own, before anything is signed: the reason on stderr, exit 1. */
594
+ function refuse(message) {
595
+ console.error(`error: ${message}`);
596
+ throw new Refused();
597
+ }
598
+ function jsonOrUndefined(text) {
599
+ try {
600
+ return JSON.parse(text);
601
+ }
602
+ catch {
603
+ return undefined;
604
+ }
605
+ }
606
+ /** Prints a refusal's §4.1 envelope — code, message, requestId (the engine answers the same
607
+ * shape) — or the status and the start of a body that is not one, and ends the command (exit 1). */
608
+ function refused(status, url, text) {
609
+ const err = jsonOrUndefined(text)?.error;
610
+ console.error(err?.code
611
+ ? `error: ${err.code} — ${err.message ?? ""}${err.requestId ? ` (requestId ${err.requestId})` : ""}`
612
+ : `error: ${status} from ${url}: ${text.slice(0, 200)}`);
613
+ throw new Refused();
614
+ }
615
+ /**
616
+ * Parses the common flags plus `options`, resolves the oracle URL and the session, runs `command`
617
+ * with an `api()` that signs each call as a console invocation and returns the 2xx body, and prints
618
+ * what it hands back. A refusal prints the §4.1 envelope — code, message, requestId — and exits 1.
619
+ */
620
+ async function call(argv, options, command) {
621
+ const { values, positionals } = parse(argv, { options: { ...COMMON, ...options } });
622
+ const flag = values.kit;
623
+ const envFile = values["env-file"];
624
+ // The raw project vars (no config validation) — only the network is read off them when `--kit`
625
+ // names the oracle. Without `--kit` the project must load as a Config, and when it does not, its
626
+ // own error (which var, where) is the answer — never "no project".
627
+ let vars;
628
+ try {
629
+ vars = readProjectEnv(process.cwd(), { envFile });
630
+ }
631
+ catch {
632
+ vars = undefined;
633
+ }
634
+ if (!flag && !vars) {
635
+ throw new UsageError("api needs --kit <url> (no project .dev.vars to read it from)");
636
+ }
637
+ const oracleUrl = oracleUrlFor({
638
+ kit: flag,
639
+ devVars: flag ? undefined : loadProjectConfig({ envFile }),
640
+ });
641
+ const network = resolveNetwork(values.network ?? vars?.IXO_NETWORK);
642
+ const session = await loadSession(network);
643
+ const request = async (op, method, path, payload, sourceId) => {
644
+ const { res } = await kitFetch(session, oracleUrl, path, {
645
+ method,
646
+ ...(payload !== undefined ? { body: JSON.stringify(payload) } : {}),
647
+ headers: {
648
+ ...(sourceId ? { "x-source-id": sourceId } : {}),
649
+ // A fresh key per write (§4.1): the same request re-sent after a lost answer is a replay,
650
+ // never a second source or key.
651
+ ...(method === "GET" ? {} : { "idempotency-key": crypto.randomUUID() }),
652
+ },
653
+ }, {
654
+ op,
655
+ resource: sourceId ? (oracleDid) => sourceResource(oracleDid, sourceId) : oracleResource,
656
+ });
657
+ return { status: res.status, ok: res.ok, text: await res.text() };
658
+ };
659
+ const body2xx = (path, { status, ok, text }) => {
660
+ if (!ok)
661
+ refused(status, `${oracleUrl}${path}`, text);
662
+ if (status === 204)
663
+ return {};
664
+ const body = jsonOrUndefined(text);
665
+ if (body === undefined || body === null || typeof body !== "object") {
666
+ throw new Error(`${oracleUrl}${path} answered ${status} with a non-JSON body`);
667
+ }
668
+ return body;
669
+ };
670
+ const api = async (op, method, path, payload, sourceId) => body2xx(path, await request(op, method, path, payload, sourceId));
671
+ const find = async (op, path, sourceId) => {
672
+ const answer = await request(op, "GET", path, undefined, sourceId);
673
+ return answer.status === 404 ? null : body2xx(path, answer);
674
+ };
675
+ const gate = (action, planLines) => confirm({ network, signer: session.did, action, lines: [`oracle : ${oracleUrl}`, ...planLines] }, values.yes === true, {
676
+ proceeding: "sending…",
677
+ ...(values.json ? { print: (line) => console.error(line) } : {}),
678
+ });
679
+ let result;
680
+ try {
681
+ result = await command({
682
+ api,
683
+ find,
684
+ values: values,
685
+ positionals,
686
+ gate,
687
+ session,
688
+ network,
689
+ oracleUrl,
690
+ });
691
+ }
692
+ catch (err) {
693
+ if (err instanceof Refused)
694
+ return 1;
695
+ throw err;
696
+ }
697
+ if (values.json)
698
+ console.log(JSON.stringify(result.raw, null, 2));
699
+ else
700
+ for (const line of result.text)
701
+ console.log(line);
702
+ return 0;
703
+ }
704
+ const out = (raw, text) => ({ raw, text });
705
+ function required(value, message) {
706
+ if (!value)
707
+ throw new UsageError(message);
708
+ return value;
709
+ }
710
+ const list = (value) => value
711
+ .split(",")
712
+ .map((s) => s.trim())
713
+ .filter(Boolean);
714
+ function integer(value, flag) {
715
+ if (!/^\d+$/.test(value))
716
+ throw new UsageError(`${flag} must be a whole number`);
717
+ return Number(value);
718
+ }
719
+ /** The 8-char lookup prefix out of a bare prefix, the masked form a listing prints
720
+ * (`eo_test_7f3a9c1d_…`) or a whole key — only the prefix ever leaves this function. */
721
+ function keyPrefix(value) {
722
+ const match = /^eo_(?:live|test)_([0-9a-z]{8})(?:_.*)?$/.exec(value) ?? /^([0-9a-z]{8})$/.exec(value);
723
+ if (!match?.[1]) {
724
+ throw new UsageError("api key revoke needs an 8-char key prefix, or the masked key (eo_…_<prefix>_…)");
725
+ }
726
+ return match[1];
727
+ }
728
+ function sourceLine(s) {
729
+ const status = s.status === "paused" ? `paused (${s.pausedReason})` : s.status;
730
+ return `${s.sourceId} "${s.name}" ${status} billing=${s.billingMode} protocols=${s.allowedProtocols.length} owner=${s.ownerDid}`;
731
+ }
732
+ function keyLine(k) {
733
+ const cap = k.maxSpendCentsPerDay === null ? "" : ` cap=${k.maxSpendCentsPerDay}¢/day`;
734
+ const revoked = k.revokedAt ? ` revoked=${k.revokedAt}` : "";
735
+ return `${k.masked} [${k.scopes.join(",")}]${k.name ? ` "${k.name}"` : ""}${cap} last used ${k.lastUsedAt ?? "never"}${revoked}`;
736
+ }
737
+ //# sourceMappingURL=api.js.map