@ixo/decision-oracle 0.0.0-stage → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1118) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +794 -2
  3. package/dist/act.d.ts +87 -0
  4. package/dist/act.d.ts.map +1 -0
  5. package/dist/act.js +20 -0
  6. package/dist/act.js.map +1 -0
  7. package/dist/app.d.ts +22 -0
  8. package/dist/app.d.ts.map +1 -0
  9. package/dist/app.js +128 -0
  10. package/dist/app.js.map +1 -0
  11. package/dist/c2pa.wasm +0 -0
  12. package/dist/cli/commands/api.d.ts +50 -0
  13. package/dist/cli/commands/api.d.ts.map +1 -0
  14. package/dist/cli/commands/api.js +737 -0
  15. package/dist/cli/commands/api.js.map +1 -0
  16. package/dist/cli/commands/create-collection.d.ts +40 -0
  17. package/dist/cli/commands/create-collection.d.ts.map +1 -0
  18. package/dist/cli/commands/create-collection.js +318 -0
  19. package/dist/cli/commands/create-collection.js.map +1 -0
  20. package/dist/cli/commands/create-deed.d.ts +31 -0
  21. package/dist/cli/commands/create-deed.d.ts.map +1 -0
  22. package/dist/cli/commands/create-deed.js +208 -0
  23. package/dist/cli/commands/create-deed.js.map +1 -0
  24. package/dist/cli/commands/delegation.d.ts +26 -0
  25. package/dist/cli/commands/delegation.d.ts.map +1 -0
  26. package/dist/cli/commands/delegation.js +162 -0
  27. package/dist/cli/commands/delegation.js.map +1 -0
  28. package/dist/cli/commands/derive.d.ts +22 -0
  29. package/dist/cli/commands/derive.d.ts.map +1 -0
  30. package/dist/cli/commands/derive.js +53 -0
  31. package/dist/cli/commands/derive.js.map +1 -0
  32. package/dist/cli/commands/engine.d.ts +25 -0
  33. package/dist/cli/commands/engine.d.ts.map +1 -0
  34. package/dist/cli/commands/engine.js +107 -0
  35. package/dist/cli/commands/engine.js.map +1 -0
  36. package/dist/cli/commands/erase.d.ts +17 -0
  37. package/dist/cli/commands/erase.d.ts.map +1 -0
  38. package/dist/cli/commands/erase.js +117 -0
  39. package/dist/cli/commands/erase.js.map +1 -0
  40. package/dist/cli/commands/facts-run.d.ts +30 -0
  41. package/dist/cli/commands/facts-run.d.ts.map +1 -0
  42. package/dist/cli/commands/facts-run.js +409 -0
  43. package/dist/cli/commands/facts-run.js.map +1 -0
  44. package/dist/cli/commands/facts-scaffold.d.ts +22 -0
  45. package/dist/cli/commands/facts-scaffold.d.ts.map +1 -0
  46. package/dist/cli/commands/facts-scaffold.js +208 -0
  47. package/dist/cli/commands/facts-scaffold.js.map +1 -0
  48. package/dist/cli/commands/init.d.ts +18 -0
  49. package/dist/cli/commands/init.d.ts.map +1 -0
  50. package/dist/cli/commands/init.js +34 -0
  51. package/dist/cli/commands/init.js.map +1 -0
  52. package/dist/cli/commands/login.d.ts +9 -0
  53. package/dist/cli/commands/login.d.ts.map +1 -0
  54. package/dist/cli/commands/login.js +16 -0
  55. package/dist/cli/commands/login.js.map +1 -0
  56. package/dist/cli/commands/logout.d.ts +10 -0
  57. package/dist/cli/commands/logout.d.ts.map +1 -0
  58. package/dist/cli/commands/logout.js +28 -0
  59. package/dist/cli/commands/logout.js.map +1 -0
  60. package/dist/cli/commands/manifest.d.ts +12 -0
  61. package/dist/cli/commands/manifest.d.ts.map +1 -0
  62. package/dist/cli/commands/manifest.js +48 -0
  63. package/dist/cli/commands/manifest.js.map +1 -0
  64. package/dist/cli/commands/oracle-init.d.ts +48 -0
  65. package/dist/cli/commands/oracle-init.d.ts.map +1 -0
  66. package/dist/cli/commands/oracle-init.js +1122 -0
  67. package/dist/cli/commands/oracle-init.js.map +1 -0
  68. package/dist/cli/commands/org.d.ts +28 -0
  69. package/dist/cli/commands/org.d.ts.map +1 -0
  70. package/dist/cli/commands/org.js +309 -0
  71. package/dist/cli/commands/org.js.map +1 -0
  72. package/dist/cli/commands/protocol-review.d.ts +20 -0
  73. package/dist/cli/commands/protocol-review.d.ts.map +1 -0
  74. package/dist/cli/commands/protocol-review.js +162 -0
  75. package/dist/cli/commands/protocol-review.js.map +1 -0
  76. package/dist/cli/commands/publish-protocol.d.ts +43 -0
  77. package/dist/cli/commands/publish-protocol.d.ts.map +1 -0
  78. package/dist/cli/commands/publish-protocol.js +345 -0
  79. package/dist/cli/commands/publish-protocol.js.map +1 -0
  80. package/dist/cli/commands/register.d.ts +16 -0
  81. package/dist/cli/commands/register.d.ts.map +1 -0
  82. package/dist/cli/commands/register.js +54 -0
  83. package/dist/cli/commands/register.js.map +1 -0
  84. package/dist/cli/commands/relink.d.ts +11 -0
  85. package/dist/cli/commands/relink.d.ts.map +1 -0
  86. package/dist/cli/commands/relink.js +36 -0
  87. package/dist/cli/commands/relink.js.map +1 -0
  88. package/dist/cli/commands/rubric-fetch-form.d.ts +16 -0
  89. package/dist/cli/commands/rubric-fetch-form.d.ts.map +1 -0
  90. package/dist/cli/commands/rubric-fetch-form.js +83 -0
  91. package/dist/cli/commands/rubric-fetch-form.js.map +1 -0
  92. package/dist/cli/commands/rubric-validate.d.ts +72 -0
  93. package/dist/cli/commands/rubric-validate.d.ts.map +1 -0
  94. package/dist/cli/commands/rubric-validate.js +163 -0
  95. package/dist/cli/commands/rubric-validate.js.map +1 -0
  96. package/dist/cli/commands/scan.d.ts +13 -0
  97. package/dist/cli/commands/scan.d.ts.map +1 -0
  98. package/dist/cli/commands/scan.js +39 -0
  99. package/dist/cli/commands/scan.js.map +1 -0
  100. package/dist/cli/commands/skills.d.ts +11 -0
  101. package/dist/cli/commands/skills.d.ts.map +1 -0
  102. package/dist/cli/commands/skills.js +19 -0
  103. package/dist/cli/commands/skills.js.map +1 -0
  104. package/dist/cli/commands/submit-claim.d.ts +25 -0
  105. package/dist/cli/commands/submit-claim.d.ts.map +1 -0
  106. package/dist/cli/commands/submit-claim.js +155 -0
  107. package/dist/cli/commands/submit-claim.js.map +1 -0
  108. package/dist/cli/index.d.ts +15 -0
  109. package/dist/cli/index.d.ts.map +1 -0
  110. package/dist/cli/index.js +206 -0
  111. package/dist/cli/index.js.map +1 -0
  112. package/dist/cli/lib/agent-card-schema.d.ts +8 -0
  113. package/dist/cli/lib/agent-card-schema.d.ts.map +1 -0
  114. package/dist/cli/lib/agent-card-schema.js +169 -0
  115. package/dist/cli/lib/agent-card-schema.js.map +1 -0
  116. package/dist/cli/lib/ai-rest.d.ts +12 -0
  117. package/dist/cli/lib/ai-rest.d.ts.map +1 -0
  118. package/dist/cli/lib/ai-rest.js +36 -0
  119. package/dist/cli/lib/ai-rest.js.map +1 -0
  120. package/dist/cli/lib/args.d.ts +33 -0
  121. package/dist/cli/lib/args.d.ts.map +1 -0
  122. package/dist/cli/lib/args.js +24 -0
  123. package/dist/cli/lib/args.js.map +1 -0
  124. package/dist/cli/lib/authhub.d.ts +7 -0
  125. package/dist/cli/lib/authhub.d.ts.map +1 -0
  126. package/dist/cli/lib/authhub.js +210 -0
  127. package/dist/cli/lib/authhub.js.map +1 -0
  128. package/dist/cli/lib/chain.d.ts +264 -0
  129. package/dist/cli/lib/chain.d.ts.map +1 -0
  130. package/dist/cli/lib/chain.js +584 -0
  131. package/dist/cli/lib/chain.js.map +1 -0
  132. package/dist/cli/lib/devvars.d.ts +59 -0
  133. package/dist/cli/lib/devvars.d.ts.map +1 -0
  134. package/dist/cli/lib/devvars.js +206 -0
  135. package/dist/cli/lib/devvars.js.map +1 -0
  136. package/dist/cli/lib/engine.d.ts +54 -0
  137. package/dist/cli/lib/engine.d.ts.map +1 -0
  138. package/dist/cli/lib/engine.js +112 -0
  139. package/dist/cli/lib/engine.js.map +1 -0
  140. package/dist/cli/lib/identity-cards.d.ts +188 -0
  141. package/dist/cli/lib/identity-cards.d.ts.map +1 -0
  142. package/dist/cli/lib/identity-cards.js +261 -0
  143. package/dist/cli/lib/identity-cards.js.map +1 -0
  144. package/dist/cli/lib/matrix-account.d.ts +79 -0
  145. package/dist/cli/lib/matrix-account.d.ts.map +1 -0
  146. package/dist/cli/lib/matrix-account.js +228 -0
  147. package/dist/cli/lib/matrix-account.js.map +1 -0
  148. package/dist/cli/lib/oracle-account.d.ts +108 -0
  149. package/dist/cli/lib/oracle-account.d.ts.map +1 -0
  150. package/dist/cli/lib/oracle-account.js +207 -0
  151. package/dist/cli/lib/oracle-account.js.map +1 -0
  152. package/dist/cli/lib/project.d.ts +22 -0
  153. package/dist/cli/lib/project.d.ts.map +1 -0
  154. package/dist/cli/lib/project.js +62 -0
  155. package/dist/cli/lib/project.js.map +1 -0
  156. package/dist/cli/lib/session.d.ts +109 -0
  157. package/dist/cli/lib/session.d.ts.map +1 -0
  158. package/dist/cli/lib/session.js +354 -0
  159. package/dist/cli/lib/session.js.map +1 -0
  160. package/dist/cli/lib/workorder.d.ts +57 -0
  161. package/dist/cli/lib/workorder.d.ts.map +1 -0
  162. package/dist/cli/lib/workorder.js +101 -0
  163. package/dist/cli/lib/workorder.js.map +1 -0
  164. package/dist/config.d.ts +221 -0
  165. package/dist/config.d.ts.map +1 -0
  166. package/dist/config.js +431 -0
  167. package/dist/config.js.map +1 -0
  168. package/dist/context.d.ts +88 -0
  169. package/dist/context.d.ts.map +1 -0
  170. package/dist/context.js +9 -0
  171. package/dist/context.js.map +1 -0
  172. package/dist/contracts/api.d.ts +3367 -0
  173. package/dist/contracts/api.d.ts.map +1 -0
  174. package/dist/contracts/api.js +1303 -0
  175. package/dist/contracts/api.js.map +1 -0
  176. package/dist/contracts/capabilities.d.ts +126 -0
  177. package/dist/contracts/capabilities.d.ts.map +1 -0
  178. package/dist/contracts/capabilities.js +164 -0
  179. package/dist/contracts/capabilities.js.map +1 -0
  180. package/dist/contracts/claim-source.d.ts +98 -0
  181. package/dist/contracts/claim-source.d.ts.map +1 -0
  182. package/dist/contracts/claim-source.js +17 -0
  183. package/dist/contracts/claim-source.js.map +1 -0
  184. package/dist/contracts/errors.d.ts +150 -0
  185. package/dist/contracts/errors.d.ts.map +1 -0
  186. package/dist/contracts/errors.js +121 -0
  187. package/dist/contracts/errors.js.map +1 -0
  188. package/dist/contracts/index.d.ts +15 -0
  189. package/dist/contracts/index.d.ts.map +1 -0
  190. package/dist/contracts/index.js +11 -0
  191. package/dist/contracts/index.js.map +1 -0
  192. package/dist/contracts/payment-gate.d.ts +129 -0
  193. package/dist/contracts/payment-gate.d.ts.map +1 -0
  194. package/dist/contracts/payment-gate.js +24 -0
  195. package/dist/contracts/payment-gate.js.map +1 -0
  196. package/dist/contracts/start-api-claim.d.ts +90 -0
  197. package/dist/contracts/start-api-claim.d.ts.map +1 -0
  198. package/dist/contracts/start-api-claim.js +22 -0
  199. package/dist/contracts/start-api-claim.js.map +1 -0
  200. package/dist/contracts/webhooks.d.ts +1487 -0
  201. package/dist/contracts/webhooks.d.ts.map +1 -0
  202. package/dist/contracts/webhooks.js +71 -0
  203. package/dist/contracts/webhooks.js.map +1 -0
  204. package/dist/contracts/work-order.d.ts +29 -0
  205. package/dist/contracts/work-order.d.ts.map +1 -0
  206. package/dist/contracts/work-order.js +12 -0
  207. package/dist/contracts/work-order.js.map +1 -0
  208. package/dist/cron/ai-cost.d.ts +29 -0
  209. package/dist/cron/ai-cost.d.ts.map +1 -0
  210. package/dist/cron/ai-cost.js +80 -0
  211. package/dist/cron/ai-cost.js.map +1 -0
  212. package/dist/cron/api-lane.d.ts +39 -0
  213. package/dist/cron/api-lane.d.ts.map +1 -0
  214. package/dist/cron/api-lane.js +203 -0
  215. package/dist/cron/api-lane.js.map +1 -0
  216. package/dist/cron/backlog.d.ts +50 -0
  217. package/dist/cron/backlog.d.ts.map +1 -0
  218. package/dist/cron/backlog.js +115 -0
  219. package/dist/cron/backlog.js.map +1 -0
  220. package/dist/cron/billing.d.ts +11 -0
  221. package/dist/cron/billing.d.ts.map +1 -0
  222. package/dist/cron/billing.js +69 -0
  223. package/dist/cron/billing.js.map +1 -0
  224. package/dist/cron/collection.d.ts +50 -0
  225. package/dist/cron/collection.d.ts.map +1 -0
  226. package/dist/cron/collection.js +118 -0
  227. package/dist/cron/collection.js.map +1 -0
  228. package/dist/cron/funding.d.ts +16 -0
  229. package/dist/cron/funding.d.ts.map +1 -0
  230. package/dist/cron/funding.js +262 -0
  231. package/dist/cron/funding.js.map +1 -0
  232. package/dist/cron/payer-billing.d.ts +38 -0
  233. package/dist/cron/payer-billing.d.ts.map +1 -0
  234. package/dist/cron/payer-billing.js +119 -0
  235. package/dist/cron/payer-billing.js.map +1 -0
  236. package/dist/cron/scan.d.ts +43 -0
  237. package/dist/cron/scan.d.ts.map +1 -0
  238. package/dist/cron/scan.js +250 -0
  239. package/dist/cron/scan.js.map +1 -0
  240. package/dist/db/client.d.ts +14 -0
  241. package/dist/db/client.d.ts.map +1 -0
  242. package/dist/db/client.js +14 -0
  243. package/dist/db/client.js.map +1 -0
  244. package/dist/db/index.d.ts +7 -0
  245. package/dist/db/index.d.ts.map +1 -0
  246. package/dist/db/index.js +7 -0
  247. package/dist/db/index.js.map +1 -0
  248. package/dist/db/schema.d.ts +6738 -0
  249. package/dist/db/schema.d.ts.map +1 -0
  250. package/dist/db/schema.js +1433 -0
  251. package/dist/db/schema.js.map +1 -0
  252. package/dist/define-oracle.d.ts +32 -0
  253. package/dist/define-oracle.d.ts.map +1 -0
  254. package/dist/define-oracle.js +80 -0
  255. package/dist/define-oracle.js.map +1 -0
  256. package/dist/dev-oracle.d.ts +9 -0
  257. package/dist/dev-oracle.d.ts.map +1 -0
  258. package/dist/dev-oracle.js +19 -0
  259. package/dist/dev-oracle.js.map +1 -0
  260. package/dist/dev-worker.d.ts +10 -0
  261. package/dist/dev-worker.d.ts.map +1 -0
  262. package/dist/dev-worker.js +12 -0
  263. package/dist/dev-worker.js.map +1 -0
  264. package/dist/env.d.ts +146 -0
  265. package/dist/env.d.ts.map +1 -0
  266. package/dist/env.js +10 -0
  267. package/dist/env.js.map +1 -0
  268. package/dist/facts/exif.d.ts +43 -0
  269. package/dist/facts/exif.d.ts.map +1 -0
  270. package/dist/facts/exif.js +224 -0
  271. package/dist/facts/exif.js.map +1 -0
  272. package/dist/facts/fact.d.ts +62 -0
  273. package/dist/facts/fact.d.ts.map +1 -0
  274. package/dist/facts/fact.js +105 -0
  275. package/dist/facts/fact.js.map +1 -0
  276. package/dist/facts/geo.d.ts +55 -0
  277. package/dist/facts/geo.d.ts.map +1 -0
  278. package/dist/facts/geo.js +267 -0
  279. package/dist/facts/geo.js.map +1 -0
  280. package/dist/facts/index.d.ts +31 -0
  281. package/dist/facts/index.d.ts.map +1 -0
  282. package/dist/facts/index.js +27 -0
  283. package/dist/facts/index.js.map +1 -0
  284. package/dist/facts/linked-doc.d.ts +60 -0
  285. package/dist/facts/linked-doc.d.ts.map +1 -0
  286. package/dist/facts/linked-doc.js +101 -0
  287. package/dist/facts/linked-doc.js.map +1 -0
  288. package/dist/facts/types.d.ts +278 -0
  289. package/dist/facts/types.d.ts.map +1 -0
  290. package/dist/facts/types.js +19 -0
  291. package/dist/facts/types.js.map +1 -0
  292. package/dist/index.d.ts +25 -0
  293. package/dist/index.d.ts.map +1 -0
  294. package/dist/index.js +19 -0
  295. package/dist/index.js.map +1 -0
  296. package/dist/lib/api-lane/accept.d.ts +29 -0
  297. package/dist/lib/api-lane/accept.d.ts.map +1 -0
  298. package/dist/lib/api-lane/accept.js +218 -0
  299. package/dist/lib/api-lane/accept.js.map +1 -0
  300. package/dist/lib/api-lane/claim-list.d.ts +44 -0
  301. package/dist/lib/api-lane/claim-list.d.ts.map +1 -0
  302. package/dist/lib/api-lane/claim-list.js +92 -0
  303. package/dist/lib/api-lane/claim-list.js.map +1 -0
  304. package/dist/lib/api-lane/company.d.ts +56 -0
  305. package/dist/lib/api-lane/company.d.ts.map +1 -0
  306. package/dist/lib/api-lane/company.js +103 -0
  307. package/dist/lib/api-lane/company.js.map +1 -0
  308. package/dist/lib/api-lane/events.d.ts +21 -0
  309. package/dist/lib/api-lane/events.d.ts.map +1 -0
  310. package/dist/lib/api-lane/events.js +111 -0
  311. package/dist/lib/api-lane/events.js.map +1 -0
  312. package/dist/lib/api-lane/ids.d.ts +39 -0
  313. package/dist/lib/api-lane/ids.d.ts.map +1 -0
  314. package/dist/lib/api-lane/ids.js +78 -0
  315. package/dist/lib/api-lane/ids.js.map +1 -0
  316. package/dist/lib/api-lane/index.d.ts +16 -0
  317. package/dist/lib/api-lane/index.d.ts.map +1 -0
  318. package/dist/lib/api-lane/index.js +16 -0
  319. package/dist/lib/api-lane/index.js.map +1 -0
  320. package/dist/lib/api-lane/linked.d.ts +264 -0
  321. package/dist/lib/api-lane/linked.d.ts.map +1 -0
  322. package/dist/lib/api-lane/linked.js +272 -0
  323. package/dist/lib/api-lane/linked.js.map +1 -0
  324. package/dist/lib/api-lane/media-type.d.ts +15 -0
  325. package/dist/lib/api-lane/media-type.d.ts.map +1 -0
  326. package/dist/lib/api-lane/media-type.js +73 -0
  327. package/dist/lib/api-lane/media-type.js.map +1 -0
  328. package/dist/lib/api-lane/member-emails.d.ts +83 -0
  329. package/dist/lib/api-lane/member-emails.d.ts.map +1 -0
  330. package/dist/lib/api-lane/member-emails.js +213 -0
  331. package/dist/lib/api-lane/member-emails.js.map +1 -0
  332. package/dist/lib/api-lane/members.d.ts +42 -0
  333. package/dist/lib/api-lane/members.d.ts.map +1 -0
  334. package/dist/lib/api-lane/members.js +75 -0
  335. package/dist/lib/api-lane/members.js.map +1 -0
  336. package/dist/lib/api-lane/notify.d.ts +47 -0
  337. package/dist/lib/api-lane/notify.d.ts.map +1 -0
  338. package/dist/lib/api-lane/notify.js +240 -0
  339. package/dist/lib/api-lane/notify.js.map +1 -0
  340. package/dist/lib/api-lane/pause.d.ts +41 -0
  341. package/dist/lib/api-lane/pause.d.ts.map +1 -0
  342. package/dist/lib/api-lane/pause.js +155 -0
  343. package/dist/lib/api-lane/pause.js.map +1 -0
  344. package/dist/lib/api-lane/record.d.ts +76 -0
  345. package/dist/lib/api-lane/record.d.ts.map +1 -0
  346. package/dist/lib/api-lane/record.js +337 -0
  347. package/dist/lib/api-lane/record.js.map +1 -0
  348. package/dist/lib/api-lane/retention.d.ts +43 -0
  349. package/dist/lib/api-lane/retention.d.ts.map +1 -0
  350. package/dist/lib/api-lane/retention.js +176 -0
  351. package/dist/lib/api-lane/retention.js.map +1 -0
  352. package/dist/lib/api-lane/review.d.ts +76 -0
  353. package/dist/lib/api-lane/review.d.ts.map +1 -0
  354. package/dist/lib/api-lane/review.js +355 -0
  355. package/dist/lib/api-lane/review.js.map +1 -0
  356. package/dist/lib/api-lane/reviewers.d.ts +109 -0
  357. package/dist/lib/api-lane/reviewers.d.ts.map +1 -0
  358. package/dist/lib/api-lane/reviewers.js +755 -0
  359. package/dist/lib/api-lane/reviewers.js.map +1 -0
  360. package/dist/lib/api-lane/source-delete.d.ts +16 -0
  361. package/dist/lib/api-lane/source-delete.d.ts.map +1 -0
  362. package/dist/lib/api-lane/source-delete.js +50 -0
  363. package/dist/lib/api-lane/source-delete.js.map +1 -0
  364. package/dist/lib/api-lane/source.d.ts +19 -0
  365. package/dist/lib/api-lane/source.d.ts.map +1 -0
  366. package/dist/lib/api-lane/source.js +226 -0
  367. package/dist/lib/api-lane/source.js.map +1 -0
  368. package/dist/lib/api-lane/submitter.d.ts +22 -0
  369. package/dist/lib/api-lane/submitter.d.ts.map +1 -0
  370. package/dist/lib/api-lane/submitter.js +34 -0
  371. package/dist/lib/api-lane/submitter.js.map +1 -0
  372. package/dist/lib/api-lane/timeline.d.ts +20 -0
  373. package/dist/lib/api-lane/timeline.d.ts.map +1 -0
  374. package/dist/lib/api-lane/timeline.js +23 -0
  375. package/dist/lib/api-lane/timeline.js.map +1 -0
  376. package/dist/lib/api-lane/webhook-crypto.d.ts +44 -0
  377. package/dist/lib/api-lane/webhook-crypto.d.ts.map +1 -0
  378. package/dist/lib/api-lane/webhook-crypto.js +103 -0
  379. package/dist/lib/api-lane/webhook-crypto.js.map +1 -0
  380. package/dist/lib/api-lane/webhooks.d.ts +117 -0
  381. package/dist/lib/api-lane/webhooks.d.ts.map +1 -0
  382. package/dist/lib/api-lane/webhooks.js +503 -0
  383. package/dist/lib/api-lane/webhooks.js.map +1 -0
  384. package/dist/lib/archive.d.ts +64 -0
  385. package/dist/lib/archive.d.ts.map +1 -0
  386. package/dist/lib/archive.js +305 -0
  387. package/dist/lib/archive.js.map +1 -0
  388. package/dist/lib/bech32.d.ts +8 -0
  389. package/dist/lib/bech32.d.ts.map +1 -0
  390. package/dist/lib/bech32.js +39 -0
  391. package/dist/lib/bech32.js.map +1 -0
  392. package/dist/lib/claim-erase.d.ts +22 -0
  393. package/dist/lib/claim-erase.d.ts.map +1 -0
  394. package/dist/lib/claim-erase.js +44 -0
  395. package/dist/lib/claim-erase.js.map +1 -0
  396. package/dist/lib/cursor.d.ts +11 -0
  397. package/dist/lib/cursor.d.ts.map +1 -0
  398. package/dist/lib/cursor.js +20 -0
  399. package/dist/lib/cursor.js.map +1 -0
  400. package/dist/lib/email/send.d.ts +43 -0
  401. package/dist/lib/email/send.d.ts.map +1 -0
  402. package/dist/lib/email/send.js +71 -0
  403. package/dist/lib/email/send.js.map +1 -0
  404. package/dist/lib/email/template.d.ts +217 -0
  405. package/dist/lib/email/template.d.ts.map +1 -0
  406. package/dist/lib/email/template.js +713 -0
  407. package/dist/lib/email/template.js.map +1 -0
  408. package/dist/lib/engine/adr36.d.ts +56 -0
  409. package/dist/lib/engine/adr36.d.ts.map +1 -0
  410. package/dist/lib/engine/adr36.js +76 -0
  411. package/dist/lib/engine/adr36.js.map +1 -0
  412. package/dist/lib/engine/client.d.ts +162 -0
  413. package/dist/lib/engine/client.d.ts.map +1 -0
  414. package/dist/lib/engine/client.js +473 -0
  415. package/dist/lib/engine/client.js.map +1 -0
  416. package/dist/lib/engine/types.d.ts +1356 -0
  417. package/dist/lib/engine/types.d.ts.map +1 -0
  418. package/dist/lib/engine/types.js +562 -0
  419. package/dist/lib/engine/types.js.map +1 -0
  420. package/dist/lib/errors.d.ts +73 -0
  421. package/dist/lib/errors.d.ts.map +1 -0
  422. package/dist/lib/errors.js +96 -0
  423. package/dist/lib/errors.js.map +1 -0
  424. package/dist/lib/facts/builder.d.ts +88 -0
  425. package/dist/lib/facts/builder.d.ts.map +1 -0
  426. package/dist/lib/facts/builder.js +239 -0
  427. package/dist/lib/facts/builder.js.map +1 -0
  428. package/dist/lib/facts/ctx.d.ts +34 -0
  429. package/dist/lib/facts/ctx.d.ts.map +1 -0
  430. package/dist/lib/facts/ctx.js +51 -0
  431. package/dist/lib/facts/ctx.js.map +1 -0
  432. package/dist/lib/facts/expected.d.ts +23 -0
  433. package/dist/lib/facts/expected.d.ts.map +1 -0
  434. package/dist/lib/facts/expected.js +16 -0
  435. package/dist/lib/facts/expected.js.map +1 -0
  436. package/dist/lib/facts/fact-cache.d.ts +469 -0
  437. package/dist/lib/facts/fact-cache.d.ts.map +1 -0
  438. package/dist/lib/facts/fact-cache.js +52 -0
  439. package/dist/lib/facts/fact-cache.js.map +1 -0
  440. package/dist/lib/facts/factset.d.ts +608 -0
  441. package/dist/lib/facts/factset.d.ts.map +1 -0
  442. package/dist/lib/facts/factset.js +226 -0
  443. package/dist/lib/facts/factset.js.map +1 -0
  444. package/dist/lib/facts/producer.d.ts +190 -0
  445. package/dist/lib/facts/producer.d.ts.map +1 -0
  446. package/dist/lib/facts/producer.js +15 -0
  447. package/dist/lib/facts/producer.js.map +1 -0
  448. package/dist/lib/facts/runner.d.ts +111 -0
  449. package/dist/lib/facts/runner.d.ts.map +1 -0
  450. package/dist/lib/facts/runner.js +438 -0
  451. package/dist/lib/facts/runner.js.map +1 -0
  452. package/dist/lib/facts/stock/ai-check.d.ts +100 -0
  453. package/dist/lib/facts/stock/ai-check.d.ts.map +1 -0
  454. package/dist/lib/facts/stock/ai-check.js +526 -0
  455. package/dist/lib/facts/stock/ai-check.js.map +1 -0
  456. package/dist/lib/facts/stock/ai-inputs.d.ts +104 -0
  457. package/dist/lib/facts/stock/ai-inputs.d.ts.map +1 -0
  458. package/dist/lib/facts/stock/ai-inputs.js +332 -0
  459. package/dist/lib/facts/stock/ai-inputs.js.map +1 -0
  460. package/dist/lib/facts/stock/ai-provider.d.ts +105 -0
  461. package/dist/lib/facts/stock/ai-provider.d.ts.map +1 -0
  462. package/dist/lib/facts/stock/ai-provider.js +250 -0
  463. package/dist/lib/facts/stock/ai-provider.js.map +1 -0
  464. package/dist/lib/facts/stock/ai-unique.d.ts +85 -0
  465. package/dist/lib/facts/stock/ai-unique.d.ts.map +1 -0
  466. package/dist/lib/facts/stock/ai-unique.js +208 -0
  467. package/dist/lib/facts/stock/ai-unique.js.map +1 -0
  468. package/dist/lib/facts/stock/archive.d.ts +63 -0
  469. package/dist/lib/facts/stock/archive.d.ts.map +1 -0
  470. package/dist/lib/facts/stock/archive.js +349 -0
  471. package/dist/lib/facts/stock/archive.js.map +1 -0
  472. package/dist/lib/facts/stock/c2pa-trust-list.d.ts +16 -0
  473. package/dist/lib/facts/stock/c2pa-trust-list.d.ts.map +1 -0
  474. package/dist/lib/facts/stock/c2pa-trust-list.js +637 -0
  475. package/dist/lib/facts/stock/c2pa-trust-list.js.map +1 -0
  476. package/dist/lib/facts/stock/c2pa.d.ts +56 -0
  477. package/dist/lib/facts/stock/c2pa.d.ts.map +1 -0
  478. package/dist/lib/facts/stock/c2pa.js +234 -0
  479. package/dist/lib/facts/stock/c2pa.js.map +1 -0
  480. package/dist/lib/facts/stock/call.d.ts +91 -0
  481. package/dist/lib/facts/stock/call.d.ts.map +1 -0
  482. package/dist/lib/facts/stock/call.js +281 -0
  483. package/dist/lib/facts/stock/call.js.map +1 -0
  484. package/dist/lib/facts/stock/capability.d.ts +39 -0
  485. package/dist/lib/facts/stock/capability.d.ts.map +1 -0
  486. package/dist/lib/facts/stock/capability.js +59 -0
  487. package/dist/lib/facts/stock/capability.js.map +1 -0
  488. package/dist/lib/facts/stock/ext-source.d.ts +51 -0
  489. package/dist/lib/facts/stock/ext-source.d.ts.map +1 -0
  490. package/dist/lib/facts/stock/ext-source.js +201 -0
  491. package/dist/lib/facts/stock/ext-source.js.map +1 -0
  492. package/dist/lib/facts/stock/frequency-fact.d.ts +59 -0
  493. package/dist/lib/facts/stock/frequency-fact.d.ts.map +1 -0
  494. package/dist/lib/facts/stock/frequency-fact.js +86 -0
  495. package/dist/lib/facts/stock/frequency-fact.js.map +1 -0
  496. package/dist/lib/facts/stock/frequency.d.ts +32 -0
  497. package/dist/lib/facts/stock/frequency.d.ts.map +1 -0
  498. package/dist/lib/facts/stock/frequency.js +48 -0
  499. package/dist/lib/facts/stock/frequency.js.map +1 -0
  500. package/dist/lib/facts/stock/index.d.ts +27 -0
  501. package/dist/lib/facts/stock/index.d.ts.map +1 -0
  502. package/dist/lib/facts/stock/index.js +28 -0
  503. package/dist/lib/facts/stock/index.js.map +1 -0
  504. package/dist/lib/facts/stock/normalize.d.ts +45 -0
  505. package/dist/lib/facts/stock/normalize.d.ts.map +1 -0
  506. package/dist/lib/facts/stock/normalize.js +135 -0
  507. package/dist/lib/facts/stock/normalize.js.map +1 -0
  508. package/dist/lib/facts/stock/phash.d.ts +55 -0
  509. package/dist/lib/facts/stock/phash.d.ts.map +1 -0
  510. package/dist/lib/facts/stock/phash.js +256 -0
  511. package/dist/lib/facts/stock/phash.js.map +1 -0
  512. package/dist/lib/facts/stock/rule-defaults.d.ts +72 -0
  513. package/dist/lib/facts/stock/rule-defaults.d.ts.map +1 -0
  514. package/dist/lib/facts/stock/rule-defaults.js +55 -0
  515. package/dist/lib/facts/stock/rule-defaults.js.map +1 -0
  516. package/dist/lib/facts/stock/send.d.ts +52 -0
  517. package/dist/lib/facts/stock/send.d.ts.map +1 -0
  518. package/dist/lib/facts/stock/send.js +148 -0
  519. package/dist/lib/facts/stock/send.js.map +1 -0
  520. package/dist/lib/facts/stock/unique-score.d.ts +138 -0
  521. package/dist/lib/facts/stock/unique-score.d.ts.map +1 -0
  522. package/dist/lib/facts/stock/unique-score.js +257 -0
  523. package/dist/lib/facts/stock/unique-score.js.map +1 -0
  524. package/dist/lib/facts/stock/unique-store.d.ts +420 -0
  525. package/dist/lib/facts/stock/unique-store.d.ts.map +1 -0
  526. package/dist/lib/facts/stock/unique-store.js +328 -0
  527. package/dist/lib/facts/stock/unique-store.js.map +1 -0
  528. package/dist/lib/facts/stock/unique.d.ts +35 -0
  529. package/dist/lib/facts/stock/unique.d.ts.map +1 -0
  530. package/dist/lib/facts/stock/unique.js +327 -0
  531. package/dist/lib/facts/stock/unique.js.map +1 -0
  532. package/dist/lib/facts/tools.d.ts +57 -0
  533. package/dist/lib/facts/tools.d.ts.map +1 -0
  534. package/dist/lib/facts/tools.js +325 -0
  535. package/dist/lib/facts/tools.js.map +1 -0
  536. package/dist/lib/facts/validate.d.ts +33 -0
  537. package/dist/lib/facts/validate.d.ts.map +1 -0
  538. package/dist/lib/facts/validate.js +137 -0
  539. package/dist/lib/facts/validate.js.map +1 -0
  540. package/dist/lib/hash.d.ts +44 -0
  541. package/dist/lib/hash.d.ts.map +1 -0
  542. package/dist/lib/hash.js +80 -0
  543. package/dist/lib/hash.js.map +1 -0
  544. package/dist/lib/http/client.d.ts +113 -0
  545. package/dist/lib/http/client.d.ts.map +1 -0
  546. package/dist/lib/http/client.js +330 -0
  547. package/dist/lib/http/client.js.map +1 -0
  548. package/dist/lib/ids.d.ts +17 -0
  549. package/dist/lib/ids.d.ts.map +1 -0
  550. package/dist/lib/ids.js +26 -0
  551. package/dist/lib/ids.js.map +1 -0
  552. package/dist/lib/ixo/attachments.d.ts +116 -0
  553. package/dist/lib/ixo/attachments.d.ts.map +1 -0
  554. package/dist/lib/ixo/attachments.js +290 -0
  555. package/dist/lib/ixo/attachments.js.map +1 -0
  556. package/dist/lib/ixo/authz.d.ts +40 -0
  557. package/dist/lib/ixo/authz.d.ts.map +1 -0
  558. package/dist/lib/ixo/authz.js +113 -0
  559. package/dist/lib/ixo/authz.js.map +1 -0
  560. package/dist/lib/ixo/blocksync/index.d.ts +90 -0
  561. package/dist/lib/ixo/blocksync/index.d.ts.map +1 -0
  562. package/dist/lib/ixo/blocksync/index.js +251 -0
  563. package/dist/lib/ixo/blocksync/index.js.map +1 -0
  564. package/dist/lib/ixo/blocksync/queries.d.ts +15 -0
  565. package/dist/lib/ixo/blocksync/queries.d.ts.map +1 -0
  566. package/dist/lib/ixo/blocksync/queries.js +144 -0
  567. package/dist/lib/ixo/blocksync/queries.js.map +1 -0
  568. package/dist/lib/ixo/blocksync/types.d.ts +184 -0
  569. package/dist/lib/ixo/blocksync/types.d.ts.map +1 -0
  570. package/dist/lib/ixo/blocksync/types.js +108 -0
  571. package/dist/lib/ixo/blocksync/types.js.map +1 -0
  572. package/dist/lib/ixo/cellnode.d.ts +35 -0
  573. package/dist/lib/ixo/cellnode.d.ts.map +1 -0
  574. package/dist/lib/ixo/cellnode.js +43 -0
  575. package/dist/lib/ixo/cellnode.js.map +1 -0
  576. package/dist/lib/ixo/chain-write.d.ts +130 -0
  577. package/dist/lib/ixo/chain-write.d.ts.map +1 -0
  578. package/dist/lib/ixo/chain-write.js +460 -0
  579. package/dist/lib/ixo/chain-write.js.map +1 -0
  580. package/dist/lib/ixo/chain.d.ts +1046 -0
  581. package/dist/lib/ixo/chain.d.ts.map +1 -0
  582. package/dist/lib/ixo/chain.js +279 -0
  583. package/dist/lib/ixo/chain.js.map +1 -0
  584. package/dist/lib/ixo/claim-bot.d.ts +49 -0
  585. package/dist/lib/ixo/claim-bot.d.ts.map +1 -0
  586. package/dist/lib/ixo/claim-bot.js +141 -0
  587. package/dist/lib/ixo/claim-bot.js.map +1 -0
  588. package/dist/lib/ixo/delegation-verify.d.ts +44 -0
  589. package/dist/lib/ixo/delegation-verify.d.ts.map +1 -0
  590. package/dist/lib/ixo/delegation-verify.js +101 -0
  591. package/dist/lib/ixo/delegation-verify.js.map +1 -0
  592. package/dist/lib/ixo/did.d.ts +13 -0
  593. package/dist/lib/ixo/did.d.ts.map +1 -0
  594. package/dist/lib/ixo/did.js +85 -0
  595. package/dist/lib/ixo/did.js.map +1 -0
  596. package/dist/lib/ixo/grant-chain.d.ts +55 -0
  597. package/dist/lib/ixo/grant-chain.d.ts.map +1 -0
  598. package/dist/lib/ixo/grant-chain.js +185 -0
  599. package/dist/lib/ixo/grant-chain.js.map +1 -0
  600. package/dist/lib/ixo/identity.d.ts +32 -0
  601. package/dist/lib/ixo/identity.d.ts.map +1 -0
  602. package/dist/lib/ixo/identity.js +104 -0
  603. package/dist/lib/ixo/identity.js.map +1 -0
  604. package/dist/lib/ixo/index.d.ts +118 -0
  605. package/dist/lib/ixo/index.d.ts.map +1 -0
  606. package/dist/lib/ixo/index.js +395 -0
  607. package/dist/lib/ixo/index.js.map +1 -0
  608. package/dist/lib/ixo/payment.d.ts +104 -0
  609. package/dist/lib/ixo/payment.d.ts.map +1 -0
  610. package/dist/lib/ixo/payment.js +136 -0
  611. package/dist/lib/ixo/payment.js.map +1 -0
  612. package/dist/lib/ixo/ucan-store.d.ts +30 -0
  613. package/dist/lib/ixo/ucan-store.d.ts.map +1 -0
  614. package/dist/lib/ixo/ucan-store.js +134 -0
  615. package/dist/lib/ixo/ucan-store.js.map +1 -0
  616. package/dist/lib/ixo/ucan.d.ts +96 -0
  617. package/dist/lib/ixo/ucan.d.ts.map +1 -0
  618. package/dist/lib/ixo/ucan.js +216 -0
  619. package/dist/lib/ixo/ucan.js.map +1 -0
  620. package/dist/lib/ixo/verified-read.d.ts +43 -0
  621. package/dist/lib/ixo/verified-read.d.ts.map +1 -0
  622. package/dist/lib/ixo/verified-read.js +73 -0
  623. package/dist/lib/ixo/verified-read.js.map +1 -0
  624. package/dist/lib/ixo/vfs.d.ts +27 -0
  625. package/dist/lib/ixo/vfs.d.ts.map +1 -0
  626. package/dist/lib/ixo/vfs.js +42 -0
  627. package/dist/lib/ixo/vfs.js.map +1 -0
  628. package/dist/lib/ixo/web-did.d.ts +7 -0
  629. package/dist/lib/ixo/web-did.d.ts.map +1 -0
  630. package/dist/lib/ixo/web-did.js +9 -0
  631. package/dist/lib/ixo/web-did.js.map +1 -0
  632. package/dist/lib/logger.d.ts +34 -0
  633. package/dist/lib/logger.d.ts.map +1 -0
  634. package/dist/lib/logger.js +126 -0
  635. package/dist/lib/logger.js.map +1 -0
  636. package/dist/lib/matrix/api.d.ts +57 -0
  637. package/dist/lib/matrix/api.d.ts.map +1 -0
  638. package/dist/lib/matrix/api.js +58 -0
  639. package/dist/lib/matrix/api.js.map +1 -0
  640. package/dist/lib/matrix/client.d.ts +41 -0
  641. package/dist/lib/matrix/client.d.ts.map +1 -0
  642. package/dist/lib/matrix/client.js +104 -0
  643. package/dist/lib/matrix/client.js.map +1 -0
  644. package/dist/lib/matrix/deliver.d.ts +224 -0
  645. package/dist/lib/matrix/deliver.d.ts.map +1 -0
  646. package/dist/lib/matrix/deliver.js +788 -0
  647. package/dist/lib/matrix/deliver.js.map +1 -0
  648. package/dist/lib/matrix/events.d.ts +114 -0
  649. package/dist/lib/matrix/events.d.ts.map +1 -0
  650. package/dist/lib/matrix/events.js +143 -0
  651. package/dist/lib/matrix/events.js.map +1 -0
  652. package/dist/lib/matrix/mxid.d.ts +24 -0
  653. package/dist/lib/matrix/mxid.d.ts.map +1 -0
  654. package/dist/lib/matrix/mxid.js +47 -0
  655. package/dist/lib/matrix/mxid.js.map +1 -0
  656. package/dist/lib/metrics.d.ts +105 -0
  657. package/dist/lib/metrics.d.ts.map +1 -0
  658. package/dist/lib/metrics.js +204 -0
  659. package/dist/lib/metrics.js.map +1 -0
  660. package/dist/lib/oauth/approvals.d.ts +160 -0
  661. package/dist/lib/oauth/approvals.d.ts.map +1 -0
  662. package/dist/lib/oauth/approvals.js +273 -0
  663. package/dist/lib/oauth/approvals.js.map +1 -0
  664. package/dist/lib/oauth/standing.d.ts +152 -0
  665. package/dist/lib/oauth/standing.d.ts.map +1 -0
  666. package/dist/lib/oauth/standing.js +299 -0
  667. package/dist/lib/oauth/standing.js.map +1 -0
  668. package/dist/lib/oauth/token.d.ts +60 -0
  669. package/dist/lib/oauth/token.d.ts.map +1 -0
  670. package/dist/lib/oauth/token.js +129 -0
  671. package/dist/lib/oauth/token.js.map +1 -0
  672. package/dist/lib/payments/extend.d.ts +42 -0
  673. package/dist/lib/payments/extend.d.ts.map +1 -0
  674. package/dist/lib/payments/extend.js +98 -0
  675. package/dist/lib/payments/extend.js.map +1 -0
  676. package/dist/lib/payments/facilitator.d.ts +220 -0
  677. package/dist/lib/payments/facilitator.d.ts.map +1 -0
  678. package/dist/lib/payments/facilitator.js +451 -0
  679. package/dist/lib/payments/facilitator.js.map +1 -0
  680. package/dist/lib/payments/gate.d.ts +207 -0
  681. package/dist/lib/payments/gate.d.ts.map +1 -0
  682. package/dist/lib/payments/gate.js +481 -0
  683. package/dist/lib/payments/gate.js.map +1 -0
  684. package/dist/lib/payments/header-seal.d.ts +33 -0
  685. package/dist/lib/payments/header-seal.d.ts.map +1 -0
  686. package/dist/lib/payments/header-seal.js +76 -0
  687. package/dist/lib/payments/header-seal.js.map +1 -0
  688. package/dist/lib/payments/index.d.ts +12 -0
  689. package/dist/lib/payments/index.d.ts.map +1 -0
  690. package/dist/lib/payments/index.js +11 -0
  691. package/dist/lib/payments/index.js.map +1 -0
  692. package/dist/lib/payments/price.d.ts +25 -0
  693. package/dist/lib/payments/price.d.ts.map +1 -0
  694. package/dist/lib/payments/price.js +43 -0
  695. package/dist/lib/payments/price.js.map +1 -0
  696. package/dist/lib/payments/reconcile.d.ts +77 -0
  697. package/dist/lib/payments/reconcile.d.ts.map +1 -0
  698. package/dist/lib/payments/reconcile.js +317 -0
  699. package/dist/lib/payments/reconcile.js.map +1 -0
  700. package/dist/lib/payments/refund.d.ts +34 -0
  701. package/dist/lib/payments/refund.d.ts.map +1 -0
  702. package/dist/lib/payments/refund.js +123 -0
  703. package/dist/lib/payments/refund.js.map +1 -0
  704. package/dist/lib/payments/review-billing.d.ts +222 -0
  705. package/dist/lib/payments/review-billing.d.ts.map +1 -0
  706. package/dist/lib/payments/review-billing.js +609 -0
  707. package/dist/lib/payments/review-billing.js.map +1 -0
  708. package/dist/lib/payments/settle.d.ts +44 -0
  709. package/dist/lib/payments/settle.d.ts.map +1 -0
  710. package/dist/lib/payments/settle.js +306 -0
  711. package/dist/lib/payments/settle.js.map +1 -0
  712. package/dist/lib/payments/terms.d.ts +27 -0
  713. package/dist/lib/payments/terms.d.ts.map +1 -0
  714. package/dist/lib/payments/terms.js +21 -0
  715. package/dist/lib/payments/terms.js.map +1 -0
  716. package/dist/lib/payouts.d.ts +20 -0
  717. package/dist/lib/payouts.d.ts.map +1 -0
  718. package/dist/lib/payouts.js +30 -0
  719. package/dist/lib/payouts.js.map +1 -0
  720. package/dist/lib/readiness.d.ts +42 -0
  721. package/dist/lib/readiness.d.ts.map +1 -0
  722. package/dist/lib/readiness.js +130 -0
  723. package/dist/lib/readiness.js.map +1 -0
  724. package/dist/lib/redact.d.ts +23 -0
  725. package/dist/lib/redact.d.ts.map +1 -0
  726. package/dist/lib/redact.js +67 -0
  727. package/dist/lib/redact.js.map +1 -0
  728. package/dist/lib/register.d.ts +85 -0
  729. package/dist/lib/register.d.ts.map +1 -0
  730. package/dist/lib/register.js +390 -0
  731. package/dist/lib/register.js.map +1 -0
  732. package/dist/lib/review/attestation.d.ts +92 -0
  733. package/dist/lib/review/attestation.d.ts.map +1 -0
  734. package/dist/lib/review/attestation.js +264 -0
  735. package/dist/lib/review/attestation.js.map +1 -0
  736. package/dist/lib/review/reviewer-grant.d.ts +146 -0
  737. package/dist/lib/review/reviewer-grant.d.ts.map +1 -0
  738. package/dist/lib/review/reviewer-grant.js +359 -0
  739. package/dist/lib/review/reviewer-grant.js.map +1 -0
  740. package/dist/lib/review/tasks.d.ts +18 -0
  741. package/dist/lib/review/tasks.d.ts.map +1 -0
  742. package/dist/lib/review/tasks.js +36 -0
  743. package/dist/lib/review/tasks.js.map +1 -0
  744. package/dist/lib/sentry.d.ts +89 -0
  745. package/dist/lib/sentry.d.ts.map +1 -0
  746. package/dist/lib/sentry.js +284 -0
  747. package/dist/lib/sentry.js.map +1 -0
  748. package/dist/lib/spans.d.ts +14 -0
  749. package/dist/lib/spans.d.ts.map +1 -0
  750. package/dist/lib/spans.js +28 -0
  751. package/dist/lib/spans.js.map +1 -0
  752. package/dist/lib/tracing.d.ts +31 -0
  753. package/dist/lib/tracing.d.ts.map +1 -0
  754. package/dist/lib/tracing.js +66 -0
  755. package/dist/lib/tracing.js.map +1 -0
  756. package/dist/lib/ttl-cache.d.ts +26 -0
  757. package/dist/lib/ttl-cache.d.ts.map +1 -0
  758. package/dist/lib/ttl-cache.js +61 -0
  759. package/dist/lib/ttl-cache.js.map +1 -0
  760. package/dist/lib/validator.d.ts +19 -0
  761. package/dist/lib/validator.d.ts.map +1 -0
  762. package/dist/lib/validator.js +32 -0
  763. package/dist/lib/validator.js.map +1 -0
  764. package/dist/lib/work-order/form.d.ts +40 -0
  765. package/dist/lib/work-order/form.d.ts.map +1 -0
  766. package/dist/lib/work-order/form.js +316 -0
  767. package/dist/lib/work-order/form.js.map +1 -0
  768. package/dist/lib/work-order/index.d.ts +20 -0
  769. package/dist/lib/work-order/index.d.ts.map +1 -0
  770. package/dist/lib/work-order/index.js +66 -0
  771. package/dist/lib/work-order/index.js.map +1 -0
  772. package/dist/middleware/api/audit.d.ts +9 -0
  773. package/dist/middleware/api/audit.d.ts.map +1 -0
  774. package/dist/middleware/api/audit.js +38 -0
  775. package/dist/middleware/api/audit.js.map +1 -0
  776. package/dist/middleware/api/auth.d.ts +29 -0
  777. package/dist/middleware/api/auth.d.ts.map +1 -0
  778. package/dist/middleware/api/auth.js +105 -0
  779. package/dist/middleware/api/auth.js.map +1 -0
  780. package/dist/middleware/api/console.d.ts +92 -0
  781. package/dist/middleware/api/console.d.ts.map +1 -0
  782. package/dist/middleware/api/console.js +446 -0
  783. package/dist/middleware/api/console.js.map +1 -0
  784. package/dist/middleware/api/errors.d.ts +48 -0
  785. package/dist/middleware/api/errors.d.ts.map +1 -0
  786. package/dist/middleware/api/errors.js +133 -0
  787. package/dist/middleware/api/errors.js.map +1 -0
  788. package/dist/middleware/api/idempotency.d.ts +23 -0
  789. package/dist/middleware/api/idempotency.d.ts.map +1 -0
  790. package/dist/middleware/api/idempotency.js +158 -0
  791. package/dist/middleware/api/idempotency.js.map +1 -0
  792. package/dist/middleware/api/keys.d.ts +14 -0
  793. package/dist/middleware/api/keys.d.ts.map +1 -0
  794. package/dist/middleware/api/keys.js +66 -0
  795. package/dist/middleware/api/keys.js.map +1 -0
  796. package/dist/middleware/api/membership.d.ts +32 -0
  797. package/dist/middleware/api/membership.d.ts.map +1 -0
  798. package/dist/middleware/api/membership.js +48 -0
  799. package/dist/middleware/api/membership.js.map +1 -0
  800. package/dist/middleware/api/oauth.d.ts +28 -0
  801. package/dist/middleware/api/oauth.d.ts.map +1 -0
  802. package/dist/middleware/api/oauth.js +109 -0
  803. package/dist/middleware/api/oauth.js.map +1 -0
  804. package/dist/middleware/api/rate-limit.d.ts +23 -0
  805. package/dist/middleware/api/rate-limit.d.ts.map +1 -0
  806. package/dist/middleware/api/rate-limit.js +70 -0
  807. package/dist/middleware/api/rate-limit.js.map +1 -0
  808. package/dist/middleware/api/types.d.ts +92 -0
  809. package/dist/middleware/api/types.d.ts.map +1 -0
  810. package/dist/middleware/api/types.js +7 -0
  811. package/dist/middleware/api/types.js.map +1 -0
  812. package/dist/middleware/api/wait.d.ts +21 -0
  813. package/dist/middleware/api/wait.d.ts.map +1 -0
  814. package/dist/middleware/api/wait.js +85 -0
  815. package/dist/middleware/api/wait.js.map +1 -0
  816. package/dist/middleware/capability.d.ts +32 -0
  817. package/dist/middleware/capability.d.ts.map +1 -0
  818. package/dist/middleware/capability.js +113 -0
  819. package/dist/middleware/capability.js.map +1 -0
  820. package/dist/middleware/database.d.ts +14 -0
  821. package/dist/middleware/database.d.ts.map +1 -0
  822. package/dist/middleware/database.js +18 -0
  823. package/dist/middleware/database.js.map +1 -0
  824. package/dist/middleware/error-handler.d.ts +13 -0
  825. package/dist/middleware/error-handler.d.ts.map +1 -0
  826. package/dist/middleware/error-handler.js +127 -0
  827. package/dist/middleware/error-handler.js.map +1 -0
  828. package/dist/middleware/observability.d.ts +32 -0
  829. package/dist/middleware/observability.d.ts.map +1 -0
  830. package/dist/middleware/observability.js +134 -0
  831. package/dist/middleware/observability.js.map +1 -0
  832. package/dist/middleware/rate-limit.d.ts +16 -0
  833. package/dist/middleware/rate-limit.d.ts.map +1 -0
  834. package/dist/middleware/rate-limit.js +56 -0
  835. package/dist/middleware/rate-limit.js.map +1 -0
  836. package/dist/middleware/ucan-auth.d.ts +39 -0
  837. package/dist/middleware/ucan-auth.d.ts.map +1 -0
  838. package/dist/middleware/ucan-auth.js +278 -0
  839. package/dist/middleware/ucan-auth.js.map +1 -0
  840. package/dist/networks.d.ts +34 -0
  841. package/dist/networks.d.ts.map +1 -0
  842. package/dist/networks.js +49 -0
  843. package/dist/networks.js.map +1 -0
  844. package/dist/oracle.d.ts +193 -0
  845. package/dist/oracle.d.ts.map +1 -0
  846. package/dist/oracle.js +245 -0
  847. package/dist/oracle.js.map +1 -0
  848. package/dist/routes/health.d.ts +16 -0
  849. package/dist/routes/health.d.ts.map +1 -0
  850. package/dist/routes/health.js +29 -0
  851. package/dist/routes/health.js.map +1 -0
  852. package/dist/routes/v1/admin.d.ts +18 -0
  853. package/dist/routes/v1/admin.d.ts.map +1 -0
  854. package/dist/routes/v1/admin.js +101 -0
  855. package/dist/routes/v1/admin.js.map +1 -0
  856. package/dist/routes/v1/api/admin-claims.d.ts +14 -0
  857. package/dist/routes/v1/api/admin-claims.d.ts.map +1 -0
  858. package/dist/routes/v1/api/admin-claims.js +82 -0
  859. package/dist/routes/v1/api/admin-claims.js.map +1 -0
  860. package/dist/routes/v1/api/admin-facilitator.d.ts +20 -0
  861. package/dist/routes/v1/api/admin-facilitator.d.ts.map +1 -0
  862. package/dist/routes/v1/api/admin-facilitator.js +64 -0
  863. package/dist/routes/v1/api/admin-facilitator.js.map +1 -0
  864. package/dist/routes/v1/api/admin.d.ts +9 -0
  865. package/dist/routes/v1/api/admin.d.ts.map +1 -0
  866. package/dist/routes/v1/api/admin.js +110 -0
  867. package/dist/routes/v1/api/admin.js.map +1 -0
  868. package/dist/routes/v1/api/audit.d.ts +8 -0
  869. package/dist/routes/v1/api/audit.d.ts.map +1 -0
  870. package/dist/routes/v1/api/audit.js +56 -0
  871. package/dist/routes/v1/api/audit.js.map +1 -0
  872. package/dist/routes/v1/api/batch.d.ts +17 -0
  873. package/dist/routes/v1/api/batch.d.ts.map +1 -0
  874. package/dist/routes/v1/api/batch.js +192 -0
  875. package/dist/routes/v1/api/batch.js.map +1 -0
  876. package/dist/routes/v1/api/claims-read.d.ts +43 -0
  877. package/dist/routes/v1/api/claims-read.d.ts.map +1 -0
  878. package/dist/routes/v1/api/claims-read.js +123 -0
  879. package/dist/routes/v1/api/claims-read.js.map +1 -0
  880. package/dist/routes/v1/api/claims.d.ts +131 -0
  881. package/dist/routes/v1/api/claims.d.ts.map +1 -0
  882. package/dist/routes/v1/api/claims.js +407 -0
  883. package/dist/routes/v1/api/claims.js.map +1 -0
  884. package/dist/routes/v1/api/collections-link.d.ts +14 -0
  885. package/dist/routes/v1/api/collections-link.d.ts.map +1 -0
  886. package/dist/routes/v1/api/collections-link.js +97 -0
  887. package/dist/routes/v1/api/collections-link.js.map +1 -0
  888. package/dist/routes/v1/api/export.d.ts +48 -0
  889. package/dist/routes/v1/api/export.d.ts.map +1 -0
  890. package/dist/routes/v1/api/export.js +251 -0
  891. package/dist/routes/v1/api/export.js.map +1 -0
  892. package/dist/routes/v1/api/index.d.ts +16 -0
  893. package/dist/routes/v1/api/index.d.ts.map +1 -0
  894. package/dist/routes/v1/api/index.js +68 -0
  895. package/dist/routes/v1/api/index.js.map +1 -0
  896. package/dist/routes/v1/api/keys.d.ts +9 -0
  897. package/dist/routes/v1/api/keys.d.ts.map +1 -0
  898. package/dist/routes/v1/api/keys.js +95 -0
  899. package/dist/routes/v1/api/keys.js.map +1 -0
  900. package/dist/routes/v1/api/me.d.ts +21 -0
  901. package/dist/routes/v1/api/me.d.ts.map +1 -0
  902. package/dist/routes/v1/api/me.js +122 -0
  903. package/dist/routes/v1/api/me.js.map +1 -0
  904. package/dist/routes/v1/api/members.d.ts +17 -0
  905. package/dist/routes/v1/api/members.d.ts.map +1 -0
  906. package/dist/routes/v1/api/members.js +406 -0
  907. package/dist/routes/v1/api/members.js.map +1 -0
  908. package/dist/routes/v1/api/meta.d.ts +12 -0
  909. package/dist/routes/v1/api/meta.d.ts.map +1 -0
  910. package/dist/routes/v1/api/meta.js +59 -0
  911. package/dist/routes/v1/api/meta.js.map +1 -0
  912. package/dist/routes/v1/api/openapi.gen.d.ts +2 -0
  913. package/dist/routes/v1/api/openapi.gen.d.ts.map +1 -0
  914. package/dist/routes/v1/api/openapi.gen.js +7 -0
  915. package/dist/routes/v1/api/openapi.gen.js.map +1 -0
  916. package/dist/routes/v1/api/protocols.d.ts +22 -0
  917. package/dist/routes/v1/api/protocols.d.ts.map +1 -0
  918. package/dist/routes/v1/api/protocols.js +153 -0
  919. package/dist/routes/v1/api/protocols.js.map +1 -0
  920. package/dist/routes/v1/api/review-billing.d.ts +18 -0
  921. package/dist/routes/v1/api/review-billing.d.ts.map +1 -0
  922. package/dist/routes/v1/api/review-billing.js +196 -0
  923. package/dist/routes/v1/api/review-billing.js.map +1 -0
  924. package/dist/routes/v1/api/review.d.ts +30 -0
  925. package/dist/routes/v1/api/review.d.ts.map +1 -0
  926. package/dist/routes/v1/api/review.js +302 -0
  927. package/dist/routes/v1/api/review.js.map +1 -0
  928. package/dist/routes/v1/api/sources.d.ts +10 -0
  929. package/dist/routes/v1/api/sources.d.ts.map +1 -0
  930. package/dist/routes/v1/api/sources.js +293 -0
  931. package/dist/routes/v1/api/sources.js.map +1 -0
  932. package/dist/routes/v1/api/uploads.d.ts +37 -0
  933. package/dist/routes/v1/api/uploads.d.ts.map +1 -0
  934. package/dist/routes/v1/api/uploads.js +414 -0
  935. package/dist/routes/v1/api/uploads.js.map +1 -0
  936. package/dist/routes/v1/api/views.d.ts +18 -0
  937. package/dist/routes/v1/api/views.d.ts.map +1 -0
  938. package/dist/routes/v1/api/views.js +95 -0
  939. package/dist/routes/v1/api/views.js.map +1 -0
  940. package/dist/routes/v1/api/webhooks.d.ts +14 -0
  941. package/dist/routes/v1/api/webhooks.d.ts.map +1 -0
  942. package/dist/routes/v1/api/webhooks.js +282 -0
  943. package/dist/routes/v1/api/webhooks.js.map +1 -0
  944. package/dist/routes/v1/api/work-orders.d.ts +45 -0
  945. package/dist/routes/v1/api/work-orders.d.ts.map +1 -0
  946. package/dist/routes/v1/api/work-orders.js +171 -0
  947. package/dist/routes/v1/api/work-orders.js.map +1 -0
  948. package/dist/routes/v1/claims.d.ts +21 -0
  949. package/dist/routes/v1/claims.d.ts.map +1 -0
  950. package/dist/routes/v1/claims.js +153 -0
  951. package/dist/routes/v1/claims.js.map +1 -0
  952. package/dist/routes/v1/collections.d.ts +45 -0
  953. package/dist/routes/v1/collections.d.ts.map +1 -0
  954. package/dist/routes/v1/collections.js +201 -0
  955. package/dist/routes/v1/collections.js.map +1 -0
  956. package/dist/routes/v1/index.d.ts +13 -0
  957. package/dist/routes/v1/index.d.ts.map +1 -0
  958. package/dist/routes/v1/index.js +41 -0
  959. package/dist/routes/v1/index.js.map +1 -0
  960. package/dist/routes/v1/info.d.ts +14 -0
  961. package/dist/routes/v1/info.d.ts.map +1 -0
  962. package/dist/routes/v1/info.js +75 -0
  963. package/dist/routes/v1/info.js.map +1 -0
  964. package/dist/routes/v1/mcp/index.d.ts +33 -0
  965. package/dist/routes/v1/mcp/index.d.ts.map +1 -0
  966. package/dist/routes/v1/mcp/index.js +252 -0
  967. package/dist/routes/v1/mcp/index.js.map +1 -0
  968. package/dist/routes/v1/mcp/oauth.d.ts +27 -0
  969. package/dist/routes/v1/mcp/oauth.d.ts.map +1 -0
  970. package/dist/routes/v1/mcp/oauth.js +500 -0
  971. package/dist/routes/v1/mcp/oauth.js.map +1 -0
  972. package/dist/routes/v1/mcp/tools.d.ts +71 -0
  973. package/dist/routes/v1/mcp/tools.d.ts.map +1 -0
  974. package/dist/routes/v1/mcp/tools.js +432 -0
  975. package/dist/routes/v1/mcp/tools.js.map +1 -0
  976. package/dist/routes/v1/mcp/ui.d.ts +45 -0
  977. package/dist/routes/v1/mcp/ui.d.ts.map +1 -0
  978. package/dist/routes/v1/mcp/ui.js +454 -0
  979. package/dist/routes/v1/mcp/ui.js.map +1 -0
  980. package/dist/routes/v1/oauth.d.ts +29 -0
  981. package/dist/routes/v1/oauth.d.ts.map +1 -0
  982. package/dist/routes/v1/oauth.js +256 -0
  983. package/dist/routes/v1/oauth.js.map +1 -0
  984. package/dist/routes/v1/reviewers.d.ts +22 -0
  985. package/dist/routes/v1/reviewers.d.ts.map +1 -0
  986. package/dist/routes/v1/reviewers.js +165 -0
  987. package/dist/routes/v1/reviewers.js.map +1 -0
  988. package/dist/routes/v1/reviews.d.ts +38 -0
  989. package/dist/routes/v1/reviews.d.ts.map +1 -0
  990. package/dist/routes/v1/reviews.js +234 -0
  991. package/dist/routes/v1/reviews.js.map +1 -0
  992. package/dist/routes/v1/shared.d.ts +586 -0
  993. package/dist/routes/v1/shared.d.ts.map +1 -0
  994. package/dist/routes/v1/shared.js +229 -0
  995. package/dist/routes/v1/shared.js.map +1 -0
  996. package/dist/routes/well-known.d.ts +15 -0
  997. package/dist/routes/well-known.d.ts.map +1 -0
  998. package/dist/routes/well-known.js +35 -0
  999. package/dist/routes/well-known.js.map +1 -0
  1000. package/dist/runtime.d.ts +100 -0
  1001. package/dist/runtime.d.ts.map +1 -0
  1002. package/dist/runtime.js +144 -0
  1003. package/dist/runtime.js.map +1 -0
  1004. package/dist/testing/fake-tools.d.ts +104 -0
  1005. package/dist/testing/fake-tools.d.ts.map +1 -0
  1006. package/dist/testing/fake-tools.js +213 -0
  1007. package/dist/testing/fake-tools.js.map +1 -0
  1008. package/dist/testing/index.d.ts +54 -0
  1009. package/dist/testing/index.d.ts.map +1 -0
  1010. package/dist/testing/index.js +104 -0
  1011. package/dist/testing/index.js.map +1 -0
  1012. package/dist/testing/samples.d.ts +70 -0
  1013. package/dist/testing/samples.d.ts.map +1 -0
  1014. package/dist/testing/samples.js +92 -0
  1015. package/dist/testing/samples.js.map +1 -0
  1016. package/dist/workflows/claim-ingest.d.ts +250 -0
  1017. package/dist/workflows/claim-ingest.d.ts.map +1 -0
  1018. package/dist/workflows/claim-ingest.js +1020 -0
  1019. package/dist/workflows/claim-ingest.js.map +1 -0
  1020. package/dist/workflows/claim-source.d.ts +25 -0
  1021. package/dist/workflows/claim-source.d.ts.map +1 -0
  1022. package/dist/workflows/claim-source.js +107 -0
  1023. package/dist/workflows/claim-source.js.map +1 -0
  1024. package/dist/workflows/review-complete.d.ts +82 -0
  1025. package/dist/workflows/review-complete.d.ts.map +1 -0
  1026. package/dist/workflows/review-complete.js +455 -0
  1027. package/dist/workflows/review-complete.js.map +1 -0
  1028. package/dist/workflows/steps.d.ts +125 -0
  1029. package/dist/workflows/steps.d.ts.map +1 -0
  1030. package/dist/workflows/steps.js +325 -0
  1031. package/dist/workflows/steps.js.map +1 -0
  1032. package/docs/api.md +2595 -0
  1033. package/docs/guide.md +1525 -0
  1034. package/migrations/0000_init.sql +108 -0
  1035. package/migrations/0001_review_attestation.sql +1 -0
  1036. package/migrations/0002_decisions_facts.sql +1 -0
  1037. package/migrations/0003_api_lane.sql +171 -0
  1038. package/migrations/0004_api_v1_1.sql +19 -0
  1039. package/migrations/0005_member_notify.sql +3 -0
  1040. package/migrations/0006_source_collections.sql +16 -0
  1041. package/migrations/0007_api_settlement.sql +27 -0
  1042. package/migrations/0008_review_extend.sql +1 -0
  1043. package/migrations/0009_card_refunds.sql +4 -0
  1044. package/migrations/0010_even_scorpion.sql +16 -0
  1045. package/migrations/0011_mcp_oauth.sql +27 -0
  1046. package/migrations/0012_mcp_standing.sql +21 -0
  1047. package/migrations/0013_unknown_krista_starr.sql +2 -0
  1048. package/migrations/0014_last_carnage.sql +14 -0
  1049. package/migrations/0015_company_authority.sql +26 -0
  1050. package/migrations/0016_owner_only_links.sql +6 -0
  1051. package/migrations/0017_organisations.sql +35 -0
  1052. package/migrations/0018_remove_app_signed.sql +4 -0
  1053. package/migrations/0019_submitted_via.sql +2 -0
  1054. package/migrations/0020_drop_decision_to_pay.sql +4 -0
  1055. package/migrations/0021_manual_erase.sql +25 -0
  1056. package/migrations/0022_errored_facts.sql +1 -0
  1057. package/migrations/0023_review_billing.sql +20 -0
  1058. package/migrations/0024_pending_task_details.sql +1 -0
  1059. package/migrations/meta/0000_snapshot.json +707 -0
  1060. package/migrations/meta/0001_snapshot.json +714 -0
  1061. package/migrations/meta/0002_snapshot.json +721 -0
  1062. package/migrations/meta/0003_snapshot.json +1845 -0
  1063. package/migrations/meta/0004_snapshot.json +1969 -0
  1064. package/migrations/meta/0005_snapshot.json +1991 -0
  1065. package/migrations/meta/0006_snapshot.json +2097 -0
  1066. package/migrations/meta/0007_snapshot.json +2128 -0
  1067. package/migrations/meta/0008_snapshot.json +2133 -0
  1068. package/migrations/meta/0009_snapshot.json +2161 -0
  1069. package/migrations/meta/0010_snapshot.json +2265 -0
  1070. package/migrations/meta/0011_snapshot.json +2448 -0
  1071. package/migrations/meta/0012_snapshot.json +2577 -0
  1072. package/migrations/meta/0013_snapshot.json +2594 -0
  1073. package/migrations/meta/0014_snapshot.json +2602 -0
  1074. package/migrations/meta/0015_snapshot.json +2778 -0
  1075. package/migrations/meta/0016_snapshot.json +2778 -0
  1076. package/migrations/meta/0017_snapshot.json +2792 -0
  1077. package/migrations/meta/0018_snapshot.json +2778 -0
  1078. package/migrations/meta/0019_snapshot.json +2792 -0
  1079. package/migrations/meta/0020_snapshot.json +2785 -0
  1080. package/migrations/meta/0021_snapshot.json +2762 -0
  1081. package/migrations/meta/0022_snapshot.json +2769 -0
  1082. package/migrations/meta/0023_snapshot.json +2900 -0
  1083. package/migrations/meta/0024_snapshot.json +2907 -0
  1084. package/migrations/meta/_journal.json +181 -0
  1085. package/openapi/decision-api.yaml +12204 -0
  1086. package/package.json +123 -4
  1087. package/skills/README.md +19 -0
  1088. package/skills/add-openhands-support/SKILL.md +113 -0
  1089. package/skills/create-collection/SKILL.md +199 -0
  1090. package/skills/create-collection/reference/claims-stack.md +106 -0
  1091. package/skills/create-collection/reference/collection.md +111 -0
  1092. package/skills/create-oracle/SKILL.md +400 -0
  1093. package/skills/create-rubric/SKILL.md +130 -0
  1094. package/skills/create-rubric/reference/format-cheatsheet.md +186 -0
  1095. package/skills/create-rubric/templates/claim-form.example.json +60 -0
  1096. package/skills/decision-api-client/SKILL.md +236 -0
  1097. package/skills/decision-api-oracle/SKILL.md +336 -0
  1098. package/skills/publish-protocol/SKILL.md +151 -0
  1099. package/skills/publish-protocol/reference/publishing.md +116 -0
  1100. package/skills/reference/engine-contract.md +222 -0
  1101. package/skills/write-facts/SKILL.md +221 -0
  1102. package/skills/write-facts/reference/examples/http-vendor.ts +88 -0
  1103. package/skills/write-facts/reference/examples/price-matches-agreement.ts +67 -0
  1104. package/skills/write-facts/reference/facts-api.md +232 -0
  1105. package/templates/project/.dev.vars.example +93 -0
  1106. package/templates/project/.editorconfig +9 -0
  1107. package/templates/project/CLAUDE.md +45 -0
  1108. package/templates/project/README.md +199 -0
  1109. package/templates/project/biome.json +37 -0
  1110. package/templates/project/gitignore +29 -0
  1111. package/templates/project/package.json +32 -0
  1112. package/templates/project/src/facts/index.ts +19 -0
  1113. package/templates/project/src/index.ts +25 -0
  1114. package/templates/project/test/api-lane.test.ts +57 -0
  1115. package/templates/project/test/facts.test.ts +14 -0
  1116. package/templates/project/tsconfig.json +25 -0
  1117. package/templates/project/vitest.config.ts +13 -0
  1118. package/templates/project/wrangler.jsonc +446 -0
@@ -0,0 +1,52 @@
1
+ /**
2
+ * The stock producer's read of a `send` map (§A.14.2 / §A.15): keyed refs resolved to the values
3
+ * a source or a model is shown, literals passed through. Plain path reads over the claim body and
4
+ * the kit's ctx — no binder, no field kinds: the ENGINE binds the rubric to the live form; the
5
+ * stock producer only has to put the named answer in the payload.
6
+ *
7
+ * `~derived` refs are NOT resolved here: derived values are the
8
+ * engine's to compute, and this package carries no expression evaluator to compute them
9
+ * for a payload. A source that needs one is answered `status: "error"` by the stock lanes
10
+ * (../tools.ts) — a custom handler may compute it from the expression the manifest exposes
11
+ * (`derived[].expression`, expected.ts).
12
+ *
13
+ * NODE-SAFE, and it must stay that way: the facts runner imports this module, and the runner is
14
+ * what `@ixo/decision-oracle/facts` pulls into a provider's plain-node test suite. Types only.
15
+ */
16
+ import type { AiSendEntry } from "../../../facts/types.js";
17
+ import type { PulledClaim } from "../../ixo/index.js";
18
+ import type { ExpectedAi, SendMap } from "../expected.js";
19
+ import type { CtxFacts } from "../factset.js";
20
+ /**
21
+ * ctx token → value, the `send`-map read shape. Lives HERE, not in ctx.ts, because this module has
22
+ * to stay node-safe (the facts runner imports it) and ctx.ts reaches Blocksync; ctx.ts re-exports
23
+ * it so the resolver and its flattener still read as one thing.
24
+ */
25
+ export declare function flattenCtx(ctx: CtxFacts): Record<string, string | null>;
26
+ /**
27
+ * The top-level question name of a `$ref` (namespace prefix included), or undefined. The single
28
+ * shared extractor for attachment attribution (`attachment.question` matching) — an inline
29
+ * `[A-Za-z0-9_-]` regex here would silently TRUNCATE `$ixo:hiveId` to `ixo` and misattribute.
30
+ */
31
+ export declare function rootQuestionName(ref: string): string | undefined;
32
+ /**
33
+ * Resolve a `$field` path against the claim answers. `.seg` steps into objects, `[*]` fans out over
34
+ * an array — a ref containing `[*]` therefore resolves to an ARRAY of cell values (missing cells
35
+ * stay undefined inside it; a missing/non-array target fans to `[]`). A path that walks off the
36
+ * data resolves to undefined.
37
+ */
38
+ export declare function resolveFieldPath(answers: Record<string, unknown>, ref: string): unknown;
39
+ /** The `~derived` refs a `send` map names — what the stock producer cannot answer (header). */
40
+ export declare function derivedSendRefs(send: SendMap): string[];
41
+ /** Resolve a `send` map's declared refs against the claim body and the kit's ctx ($ / ctx only). */
42
+ export declare function resolveSendPayload(send: SendMap, answers: Record<string, unknown>, ctx: CtxFacts): Record<string, unknown>;
43
+ /**
44
+ * AI send entries keep their declared order: scalars ride the text lane; a `$ref` whose root
45
+ * question carries attachments rides the attachment lane ("AI checks the delivery photo") and is
46
+ * resolved to an image/document input by the connector — EVERY file on the question, not just the
47
+ * first: one `$deliverables` legitimately holds a source ZIP *and* a screenshot *and* a signed PDF,
48
+ * and a dropped one is a rule judged against evidence that was actually delivered (§6.1). Nothing
49
+ * attached ⇒ the answer itself (null when absent — absence is judged).
50
+ */
51
+ export declare function aiEntries(claim: PulledClaim, check: ExpectedAi, payload: Record<string, unknown>): AiSendEntry[];
52
+ //# sourceMappingURL=send.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../../../src/lib/facts/stock/send.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CASvE;AAqBD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEhE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAmBvF;AAcD,+FAA+F;AAC/F,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,EAAE,CAEvD;AAED,oGAAoG;AACpG,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,GAAG,EAAE,QAAQ,GACZ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAmBzB;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,WAAW,EAAE,CAef"}
@@ -0,0 +1,148 @@
1
+ /**
2
+ * The stock producer's read of a `send` map (§A.14.2 / §A.15): keyed refs resolved to the values
3
+ * a source or a model is shown, literals passed through. Plain path reads over the claim body and
4
+ * the kit's ctx — no binder, no field kinds: the ENGINE binds the rubric to the live form; the
5
+ * stock producer only has to put the named answer in the payload.
6
+ *
7
+ * `~derived` refs are NOT resolved here: derived values are the
8
+ * engine's to compute, and this package carries no expression evaluator to compute them
9
+ * for a payload. A source that needs one is answered `status: "error"` by the stock lanes
10
+ * (../tools.ts) — a custom handler may compute it from the expression the manifest exposes
11
+ * (`derived[].expression`, expected.ts).
12
+ *
13
+ * NODE-SAFE, and it must stay that way: the facts runner imports this module, and the runner is
14
+ * what `@ixo/decision-oracle/facts` pulls into a provider's plain-node test suite. Types only.
15
+ */
16
+ /**
17
+ * ctx token → value, the `send`-map read shape. Lives HERE, not in ctx.ts, because this module has
18
+ * to stay node-safe (the facts runner imports it) and ctx.ts reaches Blocksync; ctx.ts re-exports
19
+ * it so the resolver and its flattener still read as one thing.
20
+ */
21
+ export function flattenCtx(ctx) {
22
+ return {
23
+ "ctx.now": ctx.now,
24
+ "ctx.collection.startDate": ctx.collection.startDate,
25
+ "ctx.collection.endDate": ctx.collection.endDate,
26
+ "ctx.claim.submitter": ctx.claim.submitter,
27
+ "ctx.claim.submitterAddress": ctx.claim.submitterAddress,
28
+ "ctx.claim.submissionDate": ctx.claim.submissionDate,
29
+ };
30
+ }
31
+ /**
32
+ * Form path segment (rubric-spec §A.3), copied verbatim from the engine's `schema.ts` — the kit
33
+ * carries no rubric schema (T8). A segment may carry ONE JSON-LD namespace prefix (`ixo:hiveId`,
34
+ * `schema:legalName`): IXO claim forms name their SurveyJS questions that way, and claim answers
35
+ * store those names verbatim. Colons appear nowhere else in the ref grammar, so it is unambiguous.
36
+ */
37
+ const NAME = "[A-Za-z0-9_-]+";
38
+ const FORM_SEGMENT = `${NAME}(?::${NAME})?`;
39
+ /**
40
+ * `$root(.seg|[*])*` with the root name captured (group 1) and the step tail (group 2). MUST stay
41
+ * the engine's FieldRef grammar — a `send` ref the engine's binder accepted but that fails to
42
+ * match here resolves to `undefined`, which reads as "missing" and fails closed. That silent
43
+ * divergence is exactly what the verbatim copy above prevents.
44
+ */
45
+ const FIELD_PATH_RE = new RegExp(`^\\$(${FORM_SEGMENT})((?:\\.${FORM_SEGMENT}|\\[\\*\\])*)$`);
46
+ const ROOT_QUESTION_RE = new RegExp(`^\\$(${FORM_SEGMENT})`);
47
+ /**
48
+ * The top-level question name of a `$ref` (namespace prefix included), or undefined. The single
49
+ * shared extractor for attachment attribution (`attachment.question` matching) — an inline
50
+ * `[A-Za-z0-9_-]` regex here would silently TRUNCATE `$ixo:hiveId` to `ixo` and misattribute.
51
+ */
52
+ export function rootQuestionName(ref) {
53
+ return ROOT_QUESTION_RE.exec(ref)?.[1];
54
+ }
55
+ /**
56
+ * Resolve a `$field` path against the claim answers. `.seg` steps into objects, `[*]` fans out over
57
+ * an array — a ref containing `[*]` therefore resolves to an ARRAY of cell values (missing cells
58
+ * stay undefined inside it; a missing/non-array target fans to `[]`). A path that walks off the
59
+ * data resolves to undefined.
60
+ */
61
+ export function resolveFieldPath(answers, ref) {
62
+ const m = FIELD_PATH_RE.exec(ref);
63
+ if (!m)
64
+ return undefined;
65
+ const steps = [];
66
+ const tail = m[2] ?? "";
67
+ const stepRe = new RegExp(`\\.(${FORM_SEGMENT})|(\\[\\*\\])`, "g");
68
+ for (let sm = stepRe.exec(tail); sm; sm = stepRe.exec(tail))
69
+ steps.push(sm[1] ?? "*");
70
+ const walk = (value, from) => {
71
+ if (from >= steps.length)
72
+ return value;
73
+ const step = steps[from];
74
+ if (step === "*") {
75
+ if (!Array.isArray(value))
76
+ return [];
77
+ return value.map((item) => walk(item, from + 1));
78
+ }
79
+ if (value === null || typeof value !== "object" || Array.isArray(value))
80
+ return undefined;
81
+ return walk(own(value, step), from + 1);
82
+ };
83
+ return walk(own(answers, m[1]), 0);
84
+ }
85
+ /**
86
+ * An OWN property, or undefined. The segment grammar admits `constructor` and `__proto__` like any
87
+ * other name, and a bare `obj[name]` answers those from the prototype chain — so a ref to a field
88
+ * the claim never carried resolved to `Object.prototype` (frozen into a `send` payload as `{}`) or
89
+ * a function, instead of to "missing". An answer is what the claim body holds, nothing it inherits.
90
+ */
91
+ function own(value, key) {
92
+ return value !== null && typeof value === "object" && Object.hasOwn(value, key)
93
+ ? value[key]
94
+ : undefined;
95
+ }
96
+ /** The `~derived` refs a `send` map names — what the stock producer cannot answer (header). */
97
+ export function derivedSendRefs(send) {
98
+ return Object.values(send).filter((v) => typeof v === "string" && v[0] === "~");
99
+ }
100
+ /** Resolve a `send` map's declared refs against the claim body and the kit's ctx ($ / ctx only). */
101
+ export function resolveSendPayload(send, answers, ctx) {
102
+ const ctxFlat = flattenCtx(ctx);
103
+ const out = {};
104
+ for (const [key, declared] of Object.entries(send)) {
105
+ if (typeof declared !== "string") {
106
+ out[key] = declared;
107
+ continue;
108
+ }
109
+ if (declared.startsWith("$")) {
110
+ out[key] = resolveFieldPath(answers, declared) ?? null;
111
+ }
112
+ else if (declared.startsWith("~")) {
113
+ out[key] = null; // unsupported (header) — the producer refuses the source before it gets here
114
+ }
115
+ else if (declared.startsWith("ctx.")) {
116
+ out[key] = ctxFlat[declared] ?? null;
117
+ }
118
+ else {
119
+ out[key] = declared; // a plain string literal
120
+ }
121
+ }
122
+ return out;
123
+ }
124
+ /**
125
+ * AI send entries keep their declared order: scalars ride the text lane; a `$ref` whose root
126
+ * question carries attachments rides the attachment lane ("AI checks the delivery photo") and is
127
+ * resolved to an image/document input by the connector — EVERY file on the question, not just the
128
+ * first: one `$deliverables` legitimately holds a source ZIP *and* a screenshot *and* a signed PDF,
129
+ * and a dropped one is a rule judged against evidence that was actually delivered (§6.1). Nothing
130
+ * attached ⇒ the answer itself (null when absent — absence is judged).
131
+ */
132
+ export function aiEntries(claim, check, payload) {
133
+ const entries = [];
134
+ for (const [key, declared] of Object.entries(check.send)) {
135
+ const root = typeof declared === "string" && declared.startsWith("$")
136
+ ? rootQuestionName(declared)
137
+ : undefined;
138
+ const attached = root ? claim.attachments.filter((a) => a.question === root) : [];
139
+ if (attached.length > 0) {
140
+ for (const attachment of attached)
141
+ entries.push({ kind: "attachment", key, attachment });
142
+ continue;
143
+ }
144
+ entries.push({ kind: "text", key, value: payload[key] });
145
+ }
146
+ return entries;
147
+ }
148
+ //# sourceMappingURL=send.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"send.js","sourceRoot":"","sources":["../../../../src/lib/facts/stock/send.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,138 @@
1
+ /**
2
+ * Pure duplicate scoring — spec §5 component table (numbers normative), §4 L3 asymmetry
3
+ * quadrant, §6 bands. `scoreUnique` turns the store's sibling rows + the resolve phase's
4
+ * similarity/AI inputs into the `UniqueFact` that freezes into the FactSet (`facts.unique`) —
5
+ * unique.ts resolves, the ENGINE's `decide()` reads only the band (its `uniqueFlagOf`; the rest
6
+ * rides its trace as the audit trail). PURE like a decide step: no I/O, no clock, no randomness;
7
+ * every scoreBps an integer (Math.round only). Duplicate detection is oracle-side, so this table
8
+ * (and the engine's reading of the band it produces) is the whole contract.
9
+ *
10
+ * Final score = MAX component across all candidates (explainable: `winner` names the component
11
+ * and candidate that carried it). With default thresholds only an exact same-claimant copy
12
+ * reaches the reject band — every cross-claimant and probabilistic signal lands in review,
13
+ * which is what defuses the front-run attack (spec §5).
14
+ *
15
+ * The table's one subtraction is §15.2's **bounded judge exoneration**: a confident "different
16
+ * events" judgement drops that pair's text-similarity component out of the MAX (still listed in
17
+ * `components` for audit). Bounded because a judge that can un-flag is a bypass surface — only
18
+ * `identity_fuzzy`, only below `rejectAtBps`, only for the candidate it actually examined.
19
+ */
20
+ import type { UniqueSiblings } from "./unique-store.js";
21
+ export type { CidHit, SiblingClaim, TrigramHit, UniqueSiblings } from "./unique-store.js";
22
+ export type UniqueBand = "pass" | "review" | "reject";
23
+ export type UniqueComponentKind = "exact_body" | "exact_body_cross_agent" | "cid_reuse" | "cid_reuse_cross_agent" | "phash_near" | "identity_fuzzy" | "evasion_asymmetry" | "ai_same_event";
24
+ export interface UniqueComponent {
25
+ kind: UniqueComponentKind;
26
+ scoreBps: number;
27
+ candidateClaimId: string;
28
+ detail: string;
29
+ /** §15.2 — the judge confidently said "different events" for this candidate, so the component
30
+ * is recorded for audit but does NOT compete for the winner. Only ever set on `identity_fuzzy`
31
+ * inside the review band; every evidence-backed lane is un-exonerable. */
32
+ exonerated?: true;
33
+ }
34
+ export interface UniqueCandidate {
35
+ claimId: string;
36
+ agentAddress: string | null;
37
+ finalVerdict: string | null;
38
+ sameAgent: boolean;
39
+ }
40
+ /**
41
+ * The full forensic fact — a superset of the wire minimum the engine validates (factset.ts
42
+ * `UniqueFact`: `ruleId`/`digest`/`scoreBps`/`band`); everything else rides `.loose()` into the
43
+ * engine's trace. A `type`, not an `interface`: the wire type is loose (index-signed), and only an
44
+ * object type alias is implicitly assignable to it (producer.ts `ProducedFacts.unique`).
45
+ */
46
+ export type UniqueFact = {
47
+ ruleId: string;
48
+ digest: string;
49
+ scoreBps: number;
50
+ band: UniqueBand;
51
+ winner: UniqueComponent | null;
52
+ components: UniqueComponent[];
53
+ candidates: UniqueCandidate[];
54
+ aiPairsJudged: number;
55
+ /** Σ of the judged pairs' OpenRouter `usage.cost` (T12b) — the resolve weave sets it whenever
56
+ * the judge ran (0 when the provider omitted usage); billing folds it into admin `costUsd`.
57
+ * Absent ⇒ the judge never ran (and on rows frozen before this field existed). */
58
+ aiCostUsd?: number;
59
+ /** T18 — the §7 judge's adjudication outcome, set by the resolve weave post-score (like
60
+ * aiCostUsd; scoring never sets it):
61
+ * "flagged" ≥1 valid judgement at/above the AI floor — an ai component exists;
62
+ * "cleared" ≥1 valid judgement, none at the floor (a parsed sameEvent:false IS valid);
63
+ * "failed" the §7 gate held but ZERO pairs returned a valid judgement — the adjudicator
64
+ * was unavailable, and decide() fails the pass band closed on it;
65
+ * "skipped" ai disabled, no qualifying candidate, or already ≥ rejectAtBps.
66
+ * Absent ⇒ a pre-T18 trace: decide() treats it as "skipped" (never a retroactive review). */
67
+ aiOutcome?: "flagged" | "cleared" | "failed" | "skipped";
68
+ /**
69
+ * The owner's own field names behind a `by` key ("Invoice", or several joined); absent ⇒
70
+ * whole-body mode. Only the SENTENCES read it — never a score. It exists because "identical
71
+ * canonical body" was a lie in `by` mode: the bodies differ (different names, different
72
+ * filenames) and only the key matched, so owners could not tell what the engine compared.
73
+ * Absent on every row frozen before this field, so their wording replays byte-identical.
74
+ */
75
+ keyFields?: string[];
76
+ /** T18 — one row per judged pair; `pairDegradedToText` marks a pair whose PRIOR-claim images
77
+ * could not be re-fetched, so it was judged text-only (recorded, never thrown). */
78
+ aiPairs?: Array<{
79
+ candidateClaimId: string;
80
+ /** A parsed, schema-shaped judge response came back — even sameEvent:false. */
81
+ valid: boolean;
82
+ confidence: number;
83
+ pairDegradedToText?: boolean;
84
+ }>;
85
+ /** Render counters, kept for the engine's trace shape: ALWAYS 0 in this kit — there is no
86
+ * Browser Run binding, so PDFs are never rendered (unique.ts). */
87
+ pdfPagesRendered: number;
88
+ pdfsScreened: number;
89
+ confusablesVersion: number;
90
+ };
91
+ export interface UniqueScoreInput {
92
+ ruleId: string;
93
+ digest: string;
94
+ agentAddress: string | null;
95
+ siblings: UniqueSiblings;
96
+ /**
97
+ * This claim's own attachment pHashes (resolve phase computed them; frozen thereafter), each
98
+ * tagged with the attachment's media type so the pair picks the right distance tier.
99
+ */
100
+ selfPhashes: Array<{
101
+ phash: string;
102
+ mediaType: string | null;
103
+ }>;
104
+ /** Present only when the rule declares `by` — enables the §4 L3 asymmetry quadrant. */
105
+ identity?: {
106
+ self: string;
107
+ residualSelf: string;
108
+ ofCandidate: Map<string, {
109
+ identity: string;
110
+ residual: string;
111
+ }>;
112
+ } | undefined;
113
+ /** Injected pure trigram sim; `null` ⇒ fall back to the store's whole-text similarity. */
114
+ trigramSim: (a: string, b: string) => number | null;
115
+ /** Gray-zone judge results (T8), confidence 0..1 — already gated + capped by §7. */
116
+ ai?: Array<{
117
+ candidateClaimId: string;
118
+ confidence: number;
119
+ }>;
120
+ /** §15.2 — candidateClaimIds the judge confidently cleared (resolve-side decides "confidently";
121
+ * scoring only applies the bounds). Absent ⇒ byte-identical output to before. */
122
+ exonerated?: ReadonlySet<string>;
123
+ thresholds: {
124
+ rejectAtBps: number;
125
+ reviewAtBps: number;
126
+ };
127
+ /** Field names behind `by` (facts.ts derives them); absent ⇒ whole-body mode. Sentences only. */
128
+ keyFields?: string[];
129
+ }
130
+ /** "Invoice" / "Invoice + Issue date" — the owner's words for what the L1 digest covered. */
131
+ export declare function keyLabel(keyFields: string[] | undefined): string | null;
132
+ /** Band cut: ≥ reject wins, then ≥ review; boundaries inclusive (spec §5 defaults 9000/5000). */
133
+ export declare function bandOf(scoreBps: number, t: {
134
+ rejectAtBps: number;
135
+ reviewAtBps: number;
136
+ }): UniqueBand;
137
+ export declare function scoreUnique(input: UniqueScoreInput): UniqueFact;
138
+ //# sourceMappingURL=unique-score.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unique-score.d.ts","sourceRoot":"","sources":["../../../../src/lib/facts/stock/unique-score.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,257 @@
1
+ /**
2
+ * Pure duplicate scoring — spec §5 component table (numbers normative), §4 L3 asymmetry
3
+ * quadrant, §6 bands. `scoreUnique` turns the store's sibling rows + the resolve phase's
4
+ * similarity/AI inputs into the `UniqueFact` that freezes into the FactSet (`facts.unique`) —
5
+ * unique.ts resolves, the ENGINE's `decide()` reads only the band (its `uniqueFlagOf`; the rest
6
+ * rides its trace as the audit trail). PURE like a decide step: no I/O, no clock, no randomness;
7
+ * every scoreBps an integer (Math.round only). Duplicate detection is oracle-side, so this table
8
+ * (and the engine's reading of the band it produces) is the whole contract.
9
+ *
10
+ * Final score = MAX component across all candidates (explainable: `winner` names the component
11
+ * and candidate that carried it). With default thresholds only an exact same-claimant copy
12
+ * reaches the reject band — every cross-claimant and probabilistic signal lands in review,
13
+ * which is what defuses the front-run attack (spec §5).
14
+ *
15
+ * The table's one subtraction is §15.2's **bounded judge exoneration**: a confident "different
16
+ * events" judgement drops that pair's text-similarity component out of the MAX (still listed in
17
+ * `components` for audit). Bounded because a judge that can un-flag is a bypass surface — only
18
+ * `identity_fuzzy`, only below `rejectAtBps`, only for the candidate it actually examined.
19
+ */
20
+ import { CONFUSABLES_VERSION } from "./normalize.js";
21
+ import { hamming, PHASH_NEAR } from "./phash.js";
22
+ /** "Invoice" / "Invoice + Issue date" — the owner's words for what the L1 digest covered. */
23
+ export function keyLabel(keyFields) {
24
+ return keyFields && keyFields.length > 0 ? keyFields.join(" + ") : null;
25
+ }
26
+ /** Band cut: ≥ reject wins, then ≥ review; boundaries inclusive (spec §5 defaults 9000/5000). */
27
+ export function bandOf(scoreBps, t) {
28
+ if (scoreBps >= t.rejectAtBps)
29
+ return "reject";
30
+ if (scoreBps >= t.reviewAtBps)
31
+ return "review";
32
+ return "pass";
33
+ }
34
+ // §5 component table — the fixed rows. Cross-agent exact body scores BELOW same-agent (a copy
35
+ // of someone else's claim is front-run-able, a human looks first); cross-agent CID scores
36
+ // ABOVE same-agent (T5c must-catch vs. a possibly-legit re-reference).
37
+ const EXACT_SAME_BPS = 10000;
38
+ const EXACT_CROSS_BPS = 8800;
39
+ const CID_CROSS_BPS = 8800;
40
+ const CID_SAME_BPS = 8500;
41
+ const PHASH_TIGHT = 6; // hamming ≤ 6 ⇒ 8500; ≤ PHASH_NEAR (10) ⇒ 7000
42
+ const PHASH_TIGHT_BPS = 8500;
43
+ const PHASH_NEAR_BPS = 7000;
44
+ /**
45
+ * Rendered-document tiers. A PDF page renders deterministically: the same
46
+ * file re-exported or re-scanned measured hamming 0–1 on real invoices, while two
47
+ * DIFFERENT invoices sharing one template measured 5 — inside the image tier, so the looser
48
+ * cutoffs scored unrelated documents at 8500. dHash on a text page mostly reads "where the dark
49
+ * bands sit", and every invoice from one template puts them in the same places. Photos keep the
50
+ * wide tiers: the same scene shot twice genuinely moves.
51
+ */
52
+ const PHASH_DOC_TIGHT = 2;
53
+ const PHASH_DOC_NEAR = 4;
54
+ const RENDERED_DOC_MIME = "application/pdf";
55
+ /** True when either side's hash came from a rendered document — the tighter cutoffs then apply. */
56
+ const isRenderedDoc = (mediaType) => (mediaType?.split(";")[0] ?? "").trim().toLowerCase() === RENDERED_DOC_MIME;
57
+ /** The §5 pHash tier for one pair, or null when the distance clears no tier. */
58
+ function phashTierBps(dist, renderedDoc) {
59
+ const tight = renderedDoc ? PHASH_DOC_TIGHT : PHASH_TIGHT;
60
+ const near = renderedDoc ? PHASH_DOC_NEAR : PHASH_NEAR;
61
+ if (dist <= tight)
62
+ return PHASH_TIGHT_BPS;
63
+ if (dist <= near)
64
+ return PHASH_NEAR_BPS;
65
+ return null;
66
+ }
67
+ /** Seam between the weak and review-band trigram maps — both formulas emit exactly 5000 here. */
68
+ const FUZZY_FLOOR = 0.85;
69
+ /** Owner directive: "score < 5% ⇒ it's a new claim". Any whole-text sim ≥ 0.50 records a visible
70
+ * score (500–5000 bps); only below this floor is "no duplicate" claimable. Same cutoff as the
71
+ * store's trigram shortlist, so every shortlisted candidate scores instead of silently passing. */
72
+ const WEAK_FLOOR = 0.5;
73
+ /** Below these floors a signal contributes nothing — "anything below the maps' floors passes". */
74
+ const RESIDUAL_MATCH = 0.9;
75
+ const AI_FLOOR = 0.7;
76
+ const clamp01 = (v) => Math.min(1, Math.max(0, v));
77
+ /** §5 linear maps — Math.round keeps every output an integer bps. */
78
+ const fuzzyBps = (s) => 5000 + Math.round(((clamp01(s) - 0.85) / 0.15) * 3500);
79
+ const weakBps = (s) => 500 + Math.round(((clamp01(s) - 0.5) / 0.35) * 4500);
80
+ const evasionBps = (r) => 8000 + Math.round(((clamp01(r) - 0.9) / 0.1) * 900);
81
+ const aiBps = (c) => 5000 + Math.round(((clamp01(c) - 0.7) / 0.3) * 3500);
82
+ export function scoreUnique(input) {
83
+ const components = [];
84
+ const candidates = [];
85
+ const seen = new Set();
86
+ // Unknown submitter on either side ⇒ NOT same-agent: the same-agent rows are the harsher
87
+ // (auto-reject-capable) ones, so identity uncertainty fails toward human review.
88
+ const isSameAgent = (addr) => input.agentAddress !== null && addr === input.agentAddress;
89
+ const addCandidate = (claimId, agentAddress, finalVerdict) => {
90
+ if (seen.has(claimId))
91
+ return;
92
+ seen.add(claimId);
93
+ candidates.push({ claimId, agentAddress, finalVerdict, sameAgent: isSameAgent(agentAddress) });
94
+ };
95
+ // L1 — exact digest siblings. The sentence names WHAT matched: the owner's `by` fields when the
96
+ // rule declared them (the bodies may differ wildly and still land here), the answers otherwise.
97
+ const key = keyLabel(input.keyFields);
98
+ const exactDetail = key ? `same ${key}` : "identical claim answers";
99
+ for (const s of input.siblings.exact) {
100
+ addCandidate(s.claimId, s.agentAddress, s.finalVerdict);
101
+ components.push(isSameAgent(s.agentAddress)
102
+ ? {
103
+ kind: "exact_body",
104
+ scoreBps: EXACT_SAME_BPS,
105
+ candidateClaimId: s.claimId,
106
+ detail: exactDetail,
107
+ }
108
+ : {
109
+ kind: "exact_body_cross_agent",
110
+ scoreBps: EXACT_CROSS_BPS,
111
+ candidateClaimId: s.claimId,
112
+ detail: `${exactDetail} (different submitter)`,
113
+ });
114
+ }
115
+ // L2 — attachment CID reuse (claimant-agnostic registry).
116
+ for (const h of input.siblings.cidHits) {
117
+ addCandidate(h.claimId, h.agentAddress, h.finalVerdict);
118
+ components.push(isSameAgent(h.agentAddress)
119
+ ? {
120
+ kind: "cid_reuse",
121
+ scoreBps: CID_SAME_BPS,
122
+ candidateClaimId: h.claimId,
123
+ detail: `same attachment ${h.cid}`,
124
+ }
125
+ : {
126
+ kind: "cid_reuse_cross_agent",
127
+ scoreBps: CID_CROSS_BPS,
128
+ candidateClaimId: h.claimId,
129
+ detail: `same attachment ${h.cid} (different submitter)`,
130
+ });
131
+ }
132
+ // L4 — pHash neighbors; hamming runs here in JS over the store's bounded pool. Scored PER PAIR,
133
+ // not per pool row: the tier depends on what BOTH hashes came from, so a photo-vs-photo pair and
134
+ // a page-vs-page pair against the same candidate can't share one cutoff. Best-scoring pair wins
135
+ // the row (ties break on the shorter distance).
136
+ for (const p of input.siblings.phashPool) {
137
+ const renderedPool = isRenderedDoc(p.mediaType);
138
+ let best = null;
139
+ for (const self of input.selfPhashes) {
140
+ const dist = hamming(self.phash, p.phash);
141
+ const scoreBps = phashTierBps(dist, renderedPool || isRenderedDoc(self.mediaType));
142
+ if (scoreBps === null)
143
+ continue;
144
+ if (best === null ||
145
+ scoreBps > best.scoreBps ||
146
+ (scoreBps === best.scoreBps && dist < best.dist)) {
147
+ best = { scoreBps, dist };
148
+ }
149
+ }
150
+ if (best === null)
151
+ continue;
152
+ addCandidate(p.claimId, p.agentAddress, null);
153
+ components.push({
154
+ kind: "phash_near",
155
+ scoreBps: best.scoreBps,
156
+ candidateClaimId: p.claimId,
157
+ detail: `attachment ${p.cid} pHash hamming ${best.dist}`,
158
+ });
159
+ }
160
+ // L3 — the trigram shortlist, read through the §4 L3 quadrant when the rule declared `by`.
161
+ for (const t of input.siblings.trigram) {
162
+ addCandidate(t.claimId, t.agentAddress, t.finalVerdict);
163
+ const overall = clamp01(t.similarity);
164
+ const cand = input.identity?.ofCandidate.get(t.claimId);
165
+ if (input.identity && cand) {
166
+ const idSim = clamp01(input.trigramSim(input.identity.self, cand.identity) ?? overall);
167
+ const resSim = clamp01(input.trigramSim(input.identity.residualSelf, cand.residual) ?? overall);
168
+ if (idSim < FUZZY_FLOOR && resSim >= RESIDUAL_MATCH) {
169
+ // The evasion cell: the identity key was edited while everything else still matches —
170
+ // the trap inverts, this scores ABOVE any identity-matching cell.
171
+ components.push({
172
+ kind: "evasion_asymmetry",
173
+ scoreBps: evasionBps(resSim),
174
+ candidateClaimId: t.claimId,
175
+ detail: `identity differs (sim ${idSim.toFixed(2)}) while residual matches (sim ${resSim.toFixed(2)})`,
176
+ });
177
+ continue;
178
+ }
179
+ if (idSim >= FUZZY_FLOOR) {
180
+ // Identity matches ⇒ tracks overall similarity, floored at the map base (5000): a
181
+ // matching key alone is review-worthy even when the residual was reworked (the
182
+ // "corrected resubmission" cell lands mid-band, never silently passes).
183
+ components.push({
184
+ kind: "identity_fuzzy",
185
+ scoreBps: fuzzyBps(Math.max(FUZZY_FLOOR, overall)),
186
+ candidateClaimId: t.claimId,
187
+ detail: `identity matches (sim ${idSim.toFixed(2)}), overall sim ${overall.toFixed(2)}`,
188
+ });
189
+ continue;
190
+ }
191
+ // Both differ ⇒ fall through to the whole-text map: identity keys are short strings,
192
+ // trigram on them is noisy — a high whole-body similarity still counts.
193
+ }
194
+ if (overall >= WEAK_FLOOR) {
195
+ components.push({
196
+ kind: "identity_fuzzy",
197
+ scoreBps: overall >= FUZZY_FLOOR ? fuzzyBps(overall) : weakBps(overall),
198
+ candidateClaimId: t.claimId,
199
+ detail: `text similarity ${overall.toFixed(2)}`,
200
+ });
201
+ }
202
+ }
203
+ // L5 — gray-zone AI judge results. Every judged pair bills (aiPairsJudged) even when the
204
+ // confidence lands below the floor and contributes no component.
205
+ for (const a of input.ai ?? []) {
206
+ addCandidate(a.candidateClaimId, null, null);
207
+ const conf = clamp01(a.confidence);
208
+ if (conf < AI_FLOOR)
209
+ continue;
210
+ components.push({
211
+ kind: "ai_same_event",
212
+ scoreBps: aiBps(conf),
213
+ candidateClaimId: a.candidateClaimId,
214
+ detail: `AI same-event confidence ${conf.toFixed(2)}`,
215
+ });
216
+ }
217
+ // §15.2 — bounded exoneration, applied AFTER every lane scored so no map above changes: a
218
+ // candidate the judge confidently cleared loses its text-similarity component only. The three
219
+ // bounds are the whole safety argument — an evidence lane (identical answers, a reused CID, a
220
+ // matching photo hash) is never argued away by a model, and a score already at `rejectAtBps` is
221
+ // never rescued (live only under a lowered threshold: the fuzzy map tops out at 8500).
222
+ if (input.exonerated !== undefined) {
223
+ for (const c of components) {
224
+ if (c.kind === "identity_fuzzy" &&
225
+ c.scoreBps < input.thresholds.rejectAtBps &&
226
+ input.exonerated.has(c.candidateClaimId)) {
227
+ c.exonerated = true;
228
+ }
229
+ }
230
+ }
231
+ // Max wins; ties keep the first-generated component (lane order above is fixed ⇒ stable).
232
+ // Exonerated components stay in `components` for the audit trail but are out of the running,
233
+ // so a fully-exonerated claim scores 0 and bands `pass`.
234
+ let winner = null;
235
+ for (const c of components) {
236
+ if (c.exonerated)
237
+ continue;
238
+ if (winner === null || c.scoreBps > winner.scoreBps)
239
+ winner = c;
240
+ }
241
+ const scoreBps = winner?.scoreBps ?? 0;
242
+ return {
243
+ ruleId: input.ruleId,
244
+ digest: input.digest,
245
+ scoreBps,
246
+ band: bandOf(scoreBps, input.thresholds),
247
+ winner,
248
+ components,
249
+ candidates,
250
+ aiPairsJudged: input.ai?.length ?? 0,
251
+ ...(input.keyFields ? { keyFields: input.keyFields } : {}),
252
+ pdfPagesRendered: 0,
253
+ pdfsScreened: 0,
254
+ confusablesVersion: CONFUSABLES_VERSION,
255
+ };
256
+ }
257
+ //# sourceMappingURL=unique-score.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unique-score.js","sourceRoot":"","sources":["../../../../src/lib/facts/stock/unique-score.ts"],"names":[],"mappings":"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"}