@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.
- package/LICENSE +201 -0
- package/README.md +794 -2
- package/dist/act.d.ts +87 -0
- package/dist/act.d.ts.map +1 -0
- package/dist/act.js +20 -0
- package/dist/act.js.map +1 -0
- package/dist/app.d.ts +22 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +128 -0
- package/dist/app.js.map +1 -0
- package/dist/c2pa.wasm +0 -0
- package/dist/cli/commands/api.d.ts +50 -0
- package/dist/cli/commands/api.d.ts.map +1 -0
- package/dist/cli/commands/api.js +737 -0
- package/dist/cli/commands/api.js.map +1 -0
- package/dist/cli/commands/create-collection.d.ts +40 -0
- package/dist/cli/commands/create-collection.d.ts.map +1 -0
- package/dist/cli/commands/create-collection.js +318 -0
- package/dist/cli/commands/create-collection.js.map +1 -0
- package/dist/cli/commands/create-deed.d.ts +31 -0
- package/dist/cli/commands/create-deed.d.ts.map +1 -0
- package/dist/cli/commands/create-deed.js +208 -0
- package/dist/cli/commands/create-deed.js.map +1 -0
- package/dist/cli/commands/delegation.d.ts +26 -0
- package/dist/cli/commands/delegation.d.ts.map +1 -0
- package/dist/cli/commands/delegation.js +162 -0
- package/dist/cli/commands/delegation.js.map +1 -0
- package/dist/cli/commands/derive.d.ts +22 -0
- package/dist/cli/commands/derive.d.ts.map +1 -0
- package/dist/cli/commands/derive.js +53 -0
- package/dist/cli/commands/derive.js.map +1 -0
- package/dist/cli/commands/engine.d.ts +25 -0
- package/dist/cli/commands/engine.d.ts.map +1 -0
- package/dist/cli/commands/engine.js +107 -0
- package/dist/cli/commands/engine.js.map +1 -0
- package/dist/cli/commands/erase.d.ts +17 -0
- package/dist/cli/commands/erase.d.ts.map +1 -0
- package/dist/cli/commands/erase.js +117 -0
- package/dist/cli/commands/erase.js.map +1 -0
- package/dist/cli/commands/facts-run.d.ts +30 -0
- package/dist/cli/commands/facts-run.d.ts.map +1 -0
- package/dist/cli/commands/facts-run.js +409 -0
- package/dist/cli/commands/facts-run.js.map +1 -0
- package/dist/cli/commands/facts-scaffold.d.ts +22 -0
- package/dist/cli/commands/facts-scaffold.d.ts.map +1 -0
- package/dist/cli/commands/facts-scaffold.js +208 -0
- package/dist/cli/commands/facts-scaffold.js.map +1 -0
- package/dist/cli/commands/init.d.ts +18 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +34 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/login.d.ts +9 -0
- package/dist/cli/commands/login.d.ts.map +1 -0
- package/dist/cli/commands/login.js +16 -0
- package/dist/cli/commands/login.js.map +1 -0
- package/dist/cli/commands/logout.d.ts +10 -0
- package/dist/cli/commands/logout.d.ts.map +1 -0
- package/dist/cli/commands/logout.js +28 -0
- package/dist/cli/commands/logout.js.map +1 -0
- package/dist/cli/commands/manifest.d.ts +12 -0
- package/dist/cli/commands/manifest.d.ts.map +1 -0
- package/dist/cli/commands/manifest.js +48 -0
- package/dist/cli/commands/manifest.js.map +1 -0
- package/dist/cli/commands/oracle-init.d.ts +48 -0
- package/dist/cli/commands/oracle-init.d.ts.map +1 -0
- package/dist/cli/commands/oracle-init.js +1122 -0
- package/dist/cli/commands/oracle-init.js.map +1 -0
- package/dist/cli/commands/org.d.ts +28 -0
- package/dist/cli/commands/org.d.ts.map +1 -0
- package/dist/cli/commands/org.js +309 -0
- package/dist/cli/commands/org.js.map +1 -0
- package/dist/cli/commands/protocol-review.d.ts +20 -0
- package/dist/cli/commands/protocol-review.d.ts.map +1 -0
- package/dist/cli/commands/protocol-review.js +162 -0
- package/dist/cli/commands/protocol-review.js.map +1 -0
- package/dist/cli/commands/publish-protocol.d.ts +43 -0
- package/dist/cli/commands/publish-protocol.d.ts.map +1 -0
- package/dist/cli/commands/publish-protocol.js +345 -0
- package/dist/cli/commands/publish-protocol.js.map +1 -0
- package/dist/cli/commands/register.d.ts +16 -0
- package/dist/cli/commands/register.d.ts.map +1 -0
- package/dist/cli/commands/register.js +54 -0
- package/dist/cli/commands/register.js.map +1 -0
- package/dist/cli/commands/relink.d.ts +11 -0
- package/dist/cli/commands/relink.d.ts.map +1 -0
- package/dist/cli/commands/relink.js +36 -0
- package/dist/cli/commands/relink.js.map +1 -0
- package/dist/cli/commands/rubric-fetch-form.d.ts +16 -0
- package/dist/cli/commands/rubric-fetch-form.d.ts.map +1 -0
- package/dist/cli/commands/rubric-fetch-form.js +83 -0
- package/dist/cli/commands/rubric-fetch-form.js.map +1 -0
- package/dist/cli/commands/rubric-validate.d.ts +72 -0
- package/dist/cli/commands/rubric-validate.d.ts.map +1 -0
- package/dist/cli/commands/rubric-validate.js +163 -0
- package/dist/cli/commands/rubric-validate.js.map +1 -0
- package/dist/cli/commands/scan.d.ts +13 -0
- package/dist/cli/commands/scan.d.ts.map +1 -0
- package/dist/cli/commands/scan.js +39 -0
- package/dist/cli/commands/scan.js.map +1 -0
- package/dist/cli/commands/skills.d.ts +11 -0
- package/dist/cli/commands/skills.d.ts.map +1 -0
- package/dist/cli/commands/skills.js +19 -0
- package/dist/cli/commands/skills.js.map +1 -0
- package/dist/cli/commands/submit-claim.d.ts +25 -0
- package/dist/cli/commands/submit-claim.d.ts.map +1 -0
- package/dist/cli/commands/submit-claim.js +155 -0
- package/dist/cli/commands/submit-claim.js.map +1 -0
- package/dist/cli/index.d.ts +15 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +206 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/lib/agent-card-schema.d.ts +8 -0
- package/dist/cli/lib/agent-card-schema.d.ts.map +1 -0
- package/dist/cli/lib/agent-card-schema.js +169 -0
- package/dist/cli/lib/agent-card-schema.js.map +1 -0
- package/dist/cli/lib/ai-rest.d.ts +12 -0
- package/dist/cli/lib/ai-rest.d.ts.map +1 -0
- package/dist/cli/lib/ai-rest.js +36 -0
- package/dist/cli/lib/ai-rest.js.map +1 -0
- package/dist/cli/lib/args.d.ts +33 -0
- package/dist/cli/lib/args.d.ts.map +1 -0
- package/dist/cli/lib/args.js +24 -0
- package/dist/cli/lib/args.js.map +1 -0
- package/dist/cli/lib/authhub.d.ts +7 -0
- package/dist/cli/lib/authhub.d.ts.map +1 -0
- package/dist/cli/lib/authhub.js +210 -0
- package/dist/cli/lib/authhub.js.map +1 -0
- package/dist/cli/lib/chain.d.ts +264 -0
- package/dist/cli/lib/chain.d.ts.map +1 -0
- package/dist/cli/lib/chain.js +584 -0
- package/dist/cli/lib/chain.js.map +1 -0
- package/dist/cli/lib/devvars.d.ts +59 -0
- package/dist/cli/lib/devvars.d.ts.map +1 -0
- package/dist/cli/lib/devvars.js +206 -0
- package/dist/cli/lib/devvars.js.map +1 -0
- package/dist/cli/lib/engine.d.ts +54 -0
- package/dist/cli/lib/engine.d.ts.map +1 -0
- package/dist/cli/lib/engine.js +112 -0
- package/dist/cli/lib/engine.js.map +1 -0
- package/dist/cli/lib/identity-cards.d.ts +188 -0
- package/dist/cli/lib/identity-cards.d.ts.map +1 -0
- package/dist/cli/lib/identity-cards.js +261 -0
- package/dist/cli/lib/identity-cards.js.map +1 -0
- package/dist/cli/lib/matrix-account.d.ts +79 -0
- package/dist/cli/lib/matrix-account.d.ts.map +1 -0
- package/dist/cli/lib/matrix-account.js +228 -0
- package/dist/cli/lib/matrix-account.js.map +1 -0
- package/dist/cli/lib/oracle-account.d.ts +108 -0
- package/dist/cli/lib/oracle-account.d.ts.map +1 -0
- package/dist/cli/lib/oracle-account.js +207 -0
- package/dist/cli/lib/oracle-account.js.map +1 -0
- package/dist/cli/lib/project.d.ts +22 -0
- package/dist/cli/lib/project.d.ts.map +1 -0
- package/dist/cli/lib/project.js +62 -0
- package/dist/cli/lib/project.js.map +1 -0
- package/dist/cli/lib/session.d.ts +109 -0
- package/dist/cli/lib/session.d.ts.map +1 -0
- package/dist/cli/lib/session.js +354 -0
- package/dist/cli/lib/session.js.map +1 -0
- package/dist/cli/lib/workorder.d.ts +57 -0
- package/dist/cli/lib/workorder.d.ts.map +1 -0
- package/dist/cli/lib/workorder.js +101 -0
- package/dist/cli/lib/workorder.js.map +1 -0
- package/dist/config.d.ts +221 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +431 -0
- package/dist/config.js.map +1 -0
- package/dist/context.d.ts +88 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +9 -0
- package/dist/context.js.map +1 -0
- package/dist/contracts/api.d.ts +3367 -0
- package/dist/contracts/api.d.ts.map +1 -0
- package/dist/contracts/api.js +1303 -0
- package/dist/contracts/api.js.map +1 -0
- package/dist/contracts/capabilities.d.ts +126 -0
- package/dist/contracts/capabilities.d.ts.map +1 -0
- package/dist/contracts/capabilities.js +164 -0
- package/dist/contracts/capabilities.js.map +1 -0
- package/dist/contracts/claim-source.d.ts +98 -0
- package/dist/contracts/claim-source.d.ts.map +1 -0
- package/dist/contracts/claim-source.js +17 -0
- package/dist/contracts/claim-source.js.map +1 -0
- package/dist/contracts/errors.d.ts +150 -0
- package/dist/contracts/errors.d.ts.map +1 -0
- package/dist/contracts/errors.js +121 -0
- package/dist/contracts/errors.js.map +1 -0
- package/dist/contracts/index.d.ts +15 -0
- package/dist/contracts/index.d.ts.map +1 -0
- package/dist/contracts/index.js +11 -0
- package/dist/contracts/index.js.map +1 -0
- package/dist/contracts/payment-gate.d.ts +129 -0
- package/dist/contracts/payment-gate.d.ts.map +1 -0
- package/dist/contracts/payment-gate.js +24 -0
- package/dist/contracts/payment-gate.js.map +1 -0
- package/dist/contracts/start-api-claim.d.ts +90 -0
- package/dist/contracts/start-api-claim.d.ts.map +1 -0
- package/dist/contracts/start-api-claim.js +22 -0
- package/dist/contracts/start-api-claim.js.map +1 -0
- package/dist/contracts/webhooks.d.ts +1487 -0
- package/dist/contracts/webhooks.d.ts.map +1 -0
- package/dist/contracts/webhooks.js +71 -0
- package/dist/contracts/webhooks.js.map +1 -0
- package/dist/contracts/work-order.d.ts +29 -0
- package/dist/contracts/work-order.d.ts.map +1 -0
- package/dist/contracts/work-order.js +12 -0
- package/dist/contracts/work-order.js.map +1 -0
- package/dist/cron/ai-cost.d.ts +29 -0
- package/dist/cron/ai-cost.d.ts.map +1 -0
- package/dist/cron/ai-cost.js +80 -0
- package/dist/cron/ai-cost.js.map +1 -0
- package/dist/cron/api-lane.d.ts +39 -0
- package/dist/cron/api-lane.d.ts.map +1 -0
- package/dist/cron/api-lane.js +203 -0
- package/dist/cron/api-lane.js.map +1 -0
- package/dist/cron/backlog.d.ts +50 -0
- package/dist/cron/backlog.d.ts.map +1 -0
- package/dist/cron/backlog.js +115 -0
- package/dist/cron/backlog.js.map +1 -0
- package/dist/cron/billing.d.ts +11 -0
- package/dist/cron/billing.d.ts.map +1 -0
- package/dist/cron/billing.js +69 -0
- package/dist/cron/billing.js.map +1 -0
- package/dist/cron/collection.d.ts +50 -0
- package/dist/cron/collection.d.ts.map +1 -0
- package/dist/cron/collection.js +118 -0
- package/dist/cron/collection.js.map +1 -0
- package/dist/cron/funding.d.ts +16 -0
- package/dist/cron/funding.d.ts.map +1 -0
- package/dist/cron/funding.js +262 -0
- package/dist/cron/funding.js.map +1 -0
- package/dist/cron/payer-billing.d.ts +38 -0
- package/dist/cron/payer-billing.d.ts.map +1 -0
- package/dist/cron/payer-billing.js +119 -0
- package/dist/cron/payer-billing.js.map +1 -0
- package/dist/cron/scan.d.ts +43 -0
- package/dist/cron/scan.d.ts.map +1 -0
- package/dist/cron/scan.js +250 -0
- package/dist/cron/scan.js.map +1 -0
- package/dist/db/client.d.ts +14 -0
- package/dist/db/client.d.ts.map +1 -0
- package/dist/db/client.js +14 -0
- package/dist/db/client.js.map +1 -0
- package/dist/db/index.d.ts +7 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +7 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/schema.d.ts +6738 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +1433 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/define-oracle.d.ts +32 -0
- package/dist/define-oracle.d.ts.map +1 -0
- package/dist/define-oracle.js +80 -0
- package/dist/define-oracle.js.map +1 -0
- package/dist/dev-oracle.d.ts +9 -0
- package/dist/dev-oracle.d.ts.map +1 -0
- package/dist/dev-oracle.js +19 -0
- package/dist/dev-oracle.js.map +1 -0
- package/dist/dev-worker.d.ts +10 -0
- package/dist/dev-worker.d.ts.map +1 -0
- package/dist/dev-worker.js +12 -0
- package/dist/dev-worker.js.map +1 -0
- package/dist/env.d.ts +146 -0
- package/dist/env.d.ts.map +1 -0
- package/dist/env.js +10 -0
- package/dist/env.js.map +1 -0
- package/dist/facts/exif.d.ts +43 -0
- package/dist/facts/exif.d.ts.map +1 -0
- package/dist/facts/exif.js +224 -0
- package/dist/facts/exif.js.map +1 -0
- package/dist/facts/fact.d.ts +62 -0
- package/dist/facts/fact.d.ts.map +1 -0
- package/dist/facts/fact.js +105 -0
- package/dist/facts/fact.js.map +1 -0
- package/dist/facts/geo.d.ts +55 -0
- package/dist/facts/geo.d.ts.map +1 -0
- package/dist/facts/geo.js +267 -0
- package/dist/facts/geo.js.map +1 -0
- package/dist/facts/index.d.ts +31 -0
- package/dist/facts/index.d.ts.map +1 -0
- package/dist/facts/index.js +27 -0
- package/dist/facts/index.js.map +1 -0
- package/dist/facts/linked-doc.d.ts +60 -0
- package/dist/facts/linked-doc.d.ts.map +1 -0
- package/dist/facts/linked-doc.js +101 -0
- package/dist/facts/linked-doc.js.map +1 -0
- package/dist/facts/types.d.ts +278 -0
- package/dist/facts/types.d.ts.map +1 -0
- package/dist/facts/types.js +19 -0
- package/dist/facts/types.js.map +1 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/api-lane/accept.d.ts +29 -0
- package/dist/lib/api-lane/accept.d.ts.map +1 -0
- package/dist/lib/api-lane/accept.js +218 -0
- package/dist/lib/api-lane/accept.js.map +1 -0
- package/dist/lib/api-lane/claim-list.d.ts +44 -0
- package/dist/lib/api-lane/claim-list.d.ts.map +1 -0
- package/dist/lib/api-lane/claim-list.js +92 -0
- package/dist/lib/api-lane/claim-list.js.map +1 -0
- package/dist/lib/api-lane/company.d.ts +56 -0
- package/dist/lib/api-lane/company.d.ts.map +1 -0
- package/dist/lib/api-lane/company.js +103 -0
- package/dist/lib/api-lane/company.js.map +1 -0
- package/dist/lib/api-lane/events.d.ts +21 -0
- package/dist/lib/api-lane/events.d.ts.map +1 -0
- package/dist/lib/api-lane/events.js +111 -0
- package/dist/lib/api-lane/events.js.map +1 -0
- package/dist/lib/api-lane/ids.d.ts +39 -0
- package/dist/lib/api-lane/ids.d.ts.map +1 -0
- package/dist/lib/api-lane/ids.js +78 -0
- package/dist/lib/api-lane/ids.js.map +1 -0
- package/dist/lib/api-lane/index.d.ts +16 -0
- package/dist/lib/api-lane/index.d.ts.map +1 -0
- package/dist/lib/api-lane/index.js +16 -0
- package/dist/lib/api-lane/index.js.map +1 -0
- package/dist/lib/api-lane/linked.d.ts +264 -0
- package/dist/lib/api-lane/linked.d.ts.map +1 -0
- package/dist/lib/api-lane/linked.js +272 -0
- package/dist/lib/api-lane/linked.js.map +1 -0
- package/dist/lib/api-lane/media-type.d.ts +15 -0
- package/dist/lib/api-lane/media-type.d.ts.map +1 -0
- package/dist/lib/api-lane/media-type.js +73 -0
- package/dist/lib/api-lane/media-type.js.map +1 -0
- package/dist/lib/api-lane/member-emails.d.ts +83 -0
- package/dist/lib/api-lane/member-emails.d.ts.map +1 -0
- package/dist/lib/api-lane/member-emails.js +213 -0
- package/dist/lib/api-lane/member-emails.js.map +1 -0
- package/dist/lib/api-lane/members.d.ts +42 -0
- package/dist/lib/api-lane/members.d.ts.map +1 -0
- package/dist/lib/api-lane/members.js +75 -0
- package/dist/lib/api-lane/members.js.map +1 -0
- package/dist/lib/api-lane/notify.d.ts +47 -0
- package/dist/lib/api-lane/notify.d.ts.map +1 -0
- package/dist/lib/api-lane/notify.js +240 -0
- package/dist/lib/api-lane/notify.js.map +1 -0
- package/dist/lib/api-lane/pause.d.ts +41 -0
- package/dist/lib/api-lane/pause.d.ts.map +1 -0
- package/dist/lib/api-lane/pause.js +155 -0
- package/dist/lib/api-lane/pause.js.map +1 -0
- package/dist/lib/api-lane/record.d.ts +76 -0
- package/dist/lib/api-lane/record.d.ts.map +1 -0
- package/dist/lib/api-lane/record.js +337 -0
- package/dist/lib/api-lane/record.js.map +1 -0
- package/dist/lib/api-lane/retention.d.ts +43 -0
- package/dist/lib/api-lane/retention.d.ts.map +1 -0
- package/dist/lib/api-lane/retention.js +176 -0
- package/dist/lib/api-lane/retention.js.map +1 -0
- package/dist/lib/api-lane/review.d.ts +76 -0
- package/dist/lib/api-lane/review.d.ts.map +1 -0
- package/dist/lib/api-lane/review.js +355 -0
- package/dist/lib/api-lane/review.js.map +1 -0
- package/dist/lib/api-lane/reviewers.d.ts +109 -0
- package/dist/lib/api-lane/reviewers.d.ts.map +1 -0
- package/dist/lib/api-lane/reviewers.js +755 -0
- package/dist/lib/api-lane/reviewers.js.map +1 -0
- package/dist/lib/api-lane/source-delete.d.ts +16 -0
- package/dist/lib/api-lane/source-delete.d.ts.map +1 -0
- package/dist/lib/api-lane/source-delete.js +50 -0
- package/dist/lib/api-lane/source-delete.js.map +1 -0
- package/dist/lib/api-lane/source.d.ts +19 -0
- package/dist/lib/api-lane/source.d.ts.map +1 -0
- package/dist/lib/api-lane/source.js +226 -0
- package/dist/lib/api-lane/source.js.map +1 -0
- package/dist/lib/api-lane/submitter.d.ts +22 -0
- package/dist/lib/api-lane/submitter.d.ts.map +1 -0
- package/dist/lib/api-lane/submitter.js +34 -0
- package/dist/lib/api-lane/submitter.js.map +1 -0
- package/dist/lib/api-lane/timeline.d.ts +20 -0
- package/dist/lib/api-lane/timeline.d.ts.map +1 -0
- package/dist/lib/api-lane/timeline.js +23 -0
- package/dist/lib/api-lane/timeline.js.map +1 -0
- package/dist/lib/api-lane/webhook-crypto.d.ts +44 -0
- package/dist/lib/api-lane/webhook-crypto.d.ts.map +1 -0
- package/dist/lib/api-lane/webhook-crypto.js +103 -0
- package/dist/lib/api-lane/webhook-crypto.js.map +1 -0
- package/dist/lib/api-lane/webhooks.d.ts +117 -0
- package/dist/lib/api-lane/webhooks.d.ts.map +1 -0
- package/dist/lib/api-lane/webhooks.js +503 -0
- package/dist/lib/api-lane/webhooks.js.map +1 -0
- package/dist/lib/archive.d.ts +64 -0
- package/dist/lib/archive.d.ts.map +1 -0
- package/dist/lib/archive.js +305 -0
- package/dist/lib/archive.js.map +1 -0
- package/dist/lib/bech32.d.ts +8 -0
- package/dist/lib/bech32.d.ts.map +1 -0
- package/dist/lib/bech32.js +39 -0
- package/dist/lib/bech32.js.map +1 -0
- package/dist/lib/claim-erase.d.ts +22 -0
- package/dist/lib/claim-erase.d.ts.map +1 -0
- package/dist/lib/claim-erase.js +44 -0
- package/dist/lib/claim-erase.js.map +1 -0
- package/dist/lib/cursor.d.ts +11 -0
- package/dist/lib/cursor.d.ts.map +1 -0
- package/dist/lib/cursor.js +20 -0
- package/dist/lib/cursor.js.map +1 -0
- package/dist/lib/email/send.d.ts +43 -0
- package/dist/lib/email/send.d.ts.map +1 -0
- package/dist/lib/email/send.js +71 -0
- package/dist/lib/email/send.js.map +1 -0
- package/dist/lib/email/template.d.ts +217 -0
- package/dist/lib/email/template.d.ts.map +1 -0
- package/dist/lib/email/template.js +713 -0
- package/dist/lib/email/template.js.map +1 -0
- package/dist/lib/engine/adr36.d.ts +56 -0
- package/dist/lib/engine/adr36.d.ts.map +1 -0
- package/dist/lib/engine/adr36.js +76 -0
- package/dist/lib/engine/adr36.js.map +1 -0
- package/dist/lib/engine/client.d.ts +162 -0
- package/dist/lib/engine/client.d.ts.map +1 -0
- package/dist/lib/engine/client.js +473 -0
- package/dist/lib/engine/client.js.map +1 -0
- package/dist/lib/engine/types.d.ts +1356 -0
- package/dist/lib/engine/types.d.ts.map +1 -0
- package/dist/lib/engine/types.js +562 -0
- package/dist/lib/engine/types.js.map +1 -0
- package/dist/lib/errors.d.ts +73 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +96 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/facts/builder.d.ts +88 -0
- package/dist/lib/facts/builder.d.ts.map +1 -0
- package/dist/lib/facts/builder.js +239 -0
- package/dist/lib/facts/builder.js.map +1 -0
- package/dist/lib/facts/ctx.d.ts +34 -0
- package/dist/lib/facts/ctx.d.ts.map +1 -0
- package/dist/lib/facts/ctx.js +51 -0
- package/dist/lib/facts/ctx.js.map +1 -0
- package/dist/lib/facts/expected.d.ts +23 -0
- package/dist/lib/facts/expected.d.ts.map +1 -0
- package/dist/lib/facts/expected.js +16 -0
- package/dist/lib/facts/expected.js.map +1 -0
- package/dist/lib/facts/fact-cache.d.ts +469 -0
- package/dist/lib/facts/fact-cache.d.ts.map +1 -0
- package/dist/lib/facts/fact-cache.js +52 -0
- package/dist/lib/facts/fact-cache.js.map +1 -0
- package/dist/lib/facts/factset.d.ts +608 -0
- package/dist/lib/facts/factset.d.ts.map +1 -0
- package/dist/lib/facts/factset.js +226 -0
- package/dist/lib/facts/factset.js.map +1 -0
- package/dist/lib/facts/producer.d.ts +190 -0
- package/dist/lib/facts/producer.d.ts.map +1 -0
- package/dist/lib/facts/producer.js +15 -0
- package/dist/lib/facts/producer.js.map +1 -0
- package/dist/lib/facts/runner.d.ts +111 -0
- package/dist/lib/facts/runner.d.ts.map +1 -0
- package/dist/lib/facts/runner.js +438 -0
- package/dist/lib/facts/runner.js.map +1 -0
- package/dist/lib/facts/stock/ai-check.d.ts +100 -0
- package/dist/lib/facts/stock/ai-check.d.ts.map +1 -0
- package/dist/lib/facts/stock/ai-check.js +526 -0
- package/dist/lib/facts/stock/ai-check.js.map +1 -0
- package/dist/lib/facts/stock/ai-inputs.d.ts +104 -0
- package/dist/lib/facts/stock/ai-inputs.d.ts.map +1 -0
- package/dist/lib/facts/stock/ai-inputs.js +332 -0
- package/dist/lib/facts/stock/ai-inputs.js.map +1 -0
- package/dist/lib/facts/stock/ai-provider.d.ts +105 -0
- package/dist/lib/facts/stock/ai-provider.d.ts.map +1 -0
- package/dist/lib/facts/stock/ai-provider.js +250 -0
- package/dist/lib/facts/stock/ai-provider.js.map +1 -0
- package/dist/lib/facts/stock/ai-unique.d.ts +85 -0
- package/dist/lib/facts/stock/ai-unique.d.ts.map +1 -0
- package/dist/lib/facts/stock/ai-unique.js +208 -0
- package/dist/lib/facts/stock/ai-unique.js.map +1 -0
- package/dist/lib/facts/stock/archive.d.ts +63 -0
- package/dist/lib/facts/stock/archive.d.ts.map +1 -0
- package/dist/lib/facts/stock/archive.js +349 -0
- package/dist/lib/facts/stock/archive.js.map +1 -0
- package/dist/lib/facts/stock/c2pa-trust-list.d.ts +16 -0
- package/dist/lib/facts/stock/c2pa-trust-list.d.ts.map +1 -0
- package/dist/lib/facts/stock/c2pa-trust-list.js +637 -0
- package/dist/lib/facts/stock/c2pa-trust-list.js.map +1 -0
- package/dist/lib/facts/stock/c2pa.d.ts +56 -0
- package/dist/lib/facts/stock/c2pa.d.ts.map +1 -0
- package/dist/lib/facts/stock/c2pa.js +234 -0
- package/dist/lib/facts/stock/c2pa.js.map +1 -0
- package/dist/lib/facts/stock/call.d.ts +91 -0
- package/dist/lib/facts/stock/call.d.ts.map +1 -0
- package/dist/lib/facts/stock/call.js +281 -0
- package/dist/lib/facts/stock/call.js.map +1 -0
- package/dist/lib/facts/stock/capability.d.ts +39 -0
- package/dist/lib/facts/stock/capability.d.ts.map +1 -0
- package/dist/lib/facts/stock/capability.js +59 -0
- package/dist/lib/facts/stock/capability.js.map +1 -0
- package/dist/lib/facts/stock/ext-source.d.ts +51 -0
- package/dist/lib/facts/stock/ext-source.d.ts.map +1 -0
- package/dist/lib/facts/stock/ext-source.js +201 -0
- package/dist/lib/facts/stock/ext-source.js.map +1 -0
- package/dist/lib/facts/stock/frequency-fact.d.ts +59 -0
- package/dist/lib/facts/stock/frequency-fact.d.ts.map +1 -0
- package/dist/lib/facts/stock/frequency-fact.js +86 -0
- package/dist/lib/facts/stock/frequency-fact.js.map +1 -0
- package/dist/lib/facts/stock/frequency.d.ts +32 -0
- package/dist/lib/facts/stock/frequency.d.ts.map +1 -0
- package/dist/lib/facts/stock/frequency.js +48 -0
- package/dist/lib/facts/stock/frequency.js.map +1 -0
- package/dist/lib/facts/stock/index.d.ts +27 -0
- package/dist/lib/facts/stock/index.d.ts.map +1 -0
- package/dist/lib/facts/stock/index.js +28 -0
- package/dist/lib/facts/stock/index.js.map +1 -0
- package/dist/lib/facts/stock/normalize.d.ts +45 -0
- package/dist/lib/facts/stock/normalize.d.ts.map +1 -0
- package/dist/lib/facts/stock/normalize.js +135 -0
- package/dist/lib/facts/stock/normalize.js.map +1 -0
- package/dist/lib/facts/stock/phash.d.ts +55 -0
- package/dist/lib/facts/stock/phash.d.ts.map +1 -0
- package/dist/lib/facts/stock/phash.js +256 -0
- package/dist/lib/facts/stock/phash.js.map +1 -0
- package/dist/lib/facts/stock/rule-defaults.d.ts +72 -0
- package/dist/lib/facts/stock/rule-defaults.d.ts.map +1 -0
- package/dist/lib/facts/stock/rule-defaults.js +55 -0
- package/dist/lib/facts/stock/rule-defaults.js.map +1 -0
- package/dist/lib/facts/stock/send.d.ts +52 -0
- package/dist/lib/facts/stock/send.d.ts.map +1 -0
- package/dist/lib/facts/stock/send.js +148 -0
- package/dist/lib/facts/stock/send.js.map +1 -0
- package/dist/lib/facts/stock/unique-score.d.ts +138 -0
- package/dist/lib/facts/stock/unique-score.d.ts.map +1 -0
- package/dist/lib/facts/stock/unique-score.js +257 -0
- package/dist/lib/facts/stock/unique-score.js.map +1 -0
- package/dist/lib/facts/stock/unique-store.d.ts +420 -0
- package/dist/lib/facts/stock/unique-store.d.ts.map +1 -0
- package/dist/lib/facts/stock/unique-store.js +328 -0
- package/dist/lib/facts/stock/unique-store.js.map +1 -0
- package/dist/lib/facts/stock/unique.d.ts +35 -0
- package/dist/lib/facts/stock/unique.d.ts.map +1 -0
- package/dist/lib/facts/stock/unique.js +327 -0
- package/dist/lib/facts/stock/unique.js.map +1 -0
- package/dist/lib/facts/tools.d.ts +57 -0
- package/dist/lib/facts/tools.d.ts.map +1 -0
- package/dist/lib/facts/tools.js +325 -0
- package/dist/lib/facts/tools.js.map +1 -0
- package/dist/lib/facts/validate.d.ts +33 -0
- package/dist/lib/facts/validate.d.ts.map +1 -0
- package/dist/lib/facts/validate.js +137 -0
- package/dist/lib/facts/validate.js.map +1 -0
- package/dist/lib/hash.d.ts +44 -0
- package/dist/lib/hash.d.ts.map +1 -0
- package/dist/lib/hash.js +80 -0
- package/dist/lib/hash.js.map +1 -0
- package/dist/lib/http/client.d.ts +113 -0
- package/dist/lib/http/client.d.ts.map +1 -0
- package/dist/lib/http/client.js +330 -0
- package/dist/lib/http/client.js.map +1 -0
- package/dist/lib/ids.d.ts +17 -0
- package/dist/lib/ids.d.ts.map +1 -0
- package/dist/lib/ids.js +26 -0
- package/dist/lib/ids.js.map +1 -0
- package/dist/lib/ixo/attachments.d.ts +116 -0
- package/dist/lib/ixo/attachments.d.ts.map +1 -0
- package/dist/lib/ixo/attachments.js +290 -0
- package/dist/lib/ixo/attachments.js.map +1 -0
- package/dist/lib/ixo/authz.d.ts +40 -0
- package/dist/lib/ixo/authz.d.ts.map +1 -0
- package/dist/lib/ixo/authz.js +113 -0
- package/dist/lib/ixo/authz.js.map +1 -0
- package/dist/lib/ixo/blocksync/index.d.ts +90 -0
- package/dist/lib/ixo/blocksync/index.d.ts.map +1 -0
- package/dist/lib/ixo/blocksync/index.js +251 -0
- package/dist/lib/ixo/blocksync/index.js.map +1 -0
- package/dist/lib/ixo/blocksync/queries.d.ts +15 -0
- package/dist/lib/ixo/blocksync/queries.d.ts.map +1 -0
- package/dist/lib/ixo/blocksync/queries.js +144 -0
- package/dist/lib/ixo/blocksync/queries.js.map +1 -0
- package/dist/lib/ixo/blocksync/types.d.ts +184 -0
- package/dist/lib/ixo/blocksync/types.d.ts.map +1 -0
- package/dist/lib/ixo/blocksync/types.js +108 -0
- package/dist/lib/ixo/blocksync/types.js.map +1 -0
- package/dist/lib/ixo/cellnode.d.ts +35 -0
- package/dist/lib/ixo/cellnode.d.ts.map +1 -0
- package/dist/lib/ixo/cellnode.js +43 -0
- package/dist/lib/ixo/cellnode.js.map +1 -0
- package/dist/lib/ixo/chain-write.d.ts +130 -0
- package/dist/lib/ixo/chain-write.d.ts.map +1 -0
- package/dist/lib/ixo/chain-write.js +460 -0
- package/dist/lib/ixo/chain-write.js.map +1 -0
- package/dist/lib/ixo/chain.d.ts +1046 -0
- package/dist/lib/ixo/chain.d.ts.map +1 -0
- package/dist/lib/ixo/chain.js +279 -0
- package/dist/lib/ixo/chain.js.map +1 -0
- package/dist/lib/ixo/claim-bot.d.ts +49 -0
- package/dist/lib/ixo/claim-bot.d.ts.map +1 -0
- package/dist/lib/ixo/claim-bot.js +141 -0
- package/dist/lib/ixo/claim-bot.js.map +1 -0
- package/dist/lib/ixo/delegation-verify.d.ts +44 -0
- package/dist/lib/ixo/delegation-verify.d.ts.map +1 -0
- package/dist/lib/ixo/delegation-verify.js +101 -0
- package/dist/lib/ixo/delegation-verify.js.map +1 -0
- package/dist/lib/ixo/did.d.ts +13 -0
- package/dist/lib/ixo/did.d.ts.map +1 -0
- package/dist/lib/ixo/did.js +85 -0
- package/dist/lib/ixo/did.js.map +1 -0
- package/dist/lib/ixo/grant-chain.d.ts +55 -0
- package/dist/lib/ixo/grant-chain.d.ts.map +1 -0
- package/dist/lib/ixo/grant-chain.js +185 -0
- package/dist/lib/ixo/grant-chain.js.map +1 -0
- package/dist/lib/ixo/identity.d.ts +32 -0
- package/dist/lib/ixo/identity.d.ts.map +1 -0
- package/dist/lib/ixo/identity.js +104 -0
- package/dist/lib/ixo/identity.js.map +1 -0
- package/dist/lib/ixo/index.d.ts +118 -0
- package/dist/lib/ixo/index.d.ts.map +1 -0
- package/dist/lib/ixo/index.js +395 -0
- package/dist/lib/ixo/index.js.map +1 -0
- package/dist/lib/ixo/payment.d.ts +104 -0
- package/dist/lib/ixo/payment.d.ts.map +1 -0
- package/dist/lib/ixo/payment.js +136 -0
- package/dist/lib/ixo/payment.js.map +1 -0
- package/dist/lib/ixo/ucan-store.d.ts +30 -0
- package/dist/lib/ixo/ucan-store.d.ts.map +1 -0
- package/dist/lib/ixo/ucan-store.js +134 -0
- package/dist/lib/ixo/ucan-store.js.map +1 -0
- package/dist/lib/ixo/ucan.d.ts +96 -0
- package/dist/lib/ixo/ucan.d.ts.map +1 -0
- package/dist/lib/ixo/ucan.js +216 -0
- package/dist/lib/ixo/ucan.js.map +1 -0
- package/dist/lib/ixo/verified-read.d.ts +43 -0
- package/dist/lib/ixo/verified-read.d.ts.map +1 -0
- package/dist/lib/ixo/verified-read.js +73 -0
- package/dist/lib/ixo/verified-read.js.map +1 -0
- package/dist/lib/ixo/vfs.d.ts +27 -0
- package/dist/lib/ixo/vfs.d.ts.map +1 -0
- package/dist/lib/ixo/vfs.js +42 -0
- package/dist/lib/ixo/vfs.js.map +1 -0
- package/dist/lib/ixo/web-did.d.ts +7 -0
- package/dist/lib/ixo/web-did.d.ts.map +1 -0
- package/dist/lib/ixo/web-did.js +9 -0
- package/dist/lib/ixo/web-did.js.map +1 -0
- package/dist/lib/logger.d.ts +34 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +126 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/matrix/api.d.ts +57 -0
- package/dist/lib/matrix/api.d.ts.map +1 -0
- package/dist/lib/matrix/api.js +58 -0
- package/dist/lib/matrix/api.js.map +1 -0
- package/dist/lib/matrix/client.d.ts +41 -0
- package/dist/lib/matrix/client.d.ts.map +1 -0
- package/dist/lib/matrix/client.js +104 -0
- package/dist/lib/matrix/client.js.map +1 -0
- package/dist/lib/matrix/deliver.d.ts +224 -0
- package/dist/lib/matrix/deliver.d.ts.map +1 -0
- package/dist/lib/matrix/deliver.js +788 -0
- package/dist/lib/matrix/deliver.js.map +1 -0
- package/dist/lib/matrix/events.d.ts +114 -0
- package/dist/lib/matrix/events.d.ts.map +1 -0
- package/dist/lib/matrix/events.js +143 -0
- package/dist/lib/matrix/events.js.map +1 -0
- package/dist/lib/matrix/mxid.d.ts +24 -0
- package/dist/lib/matrix/mxid.d.ts.map +1 -0
- package/dist/lib/matrix/mxid.js +47 -0
- package/dist/lib/matrix/mxid.js.map +1 -0
- package/dist/lib/metrics.d.ts +105 -0
- package/dist/lib/metrics.d.ts.map +1 -0
- package/dist/lib/metrics.js +204 -0
- package/dist/lib/metrics.js.map +1 -0
- package/dist/lib/oauth/approvals.d.ts +160 -0
- package/dist/lib/oauth/approvals.d.ts.map +1 -0
- package/dist/lib/oauth/approvals.js +273 -0
- package/dist/lib/oauth/approvals.js.map +1 -0
- package/dist/lib/oauth/standing.d.ts +152 -0
- package/dist/lib/oauth/standing.d.ts.map +1 -0
- package/dist/lib/oauth/standing.js +299 -0
- package/dist/lib/oauth/standing.js.map +1 -0
- package/dist/lib/oauth/token.d.ts +60 -0
- package/dist/lib/oauth/token.d.ts.map +1 -0
- package/dist/lib/oauth/token.js +129 -0
- package/dist/lib/oauth/token.js.map +1 -0
- package/dist/lib/payments/extend.d.ts +42 -0
- package/dist/lib/payments/extend.d.ts.map +1 -0
- package/dist/lib/payments/extend.js +98 -0
- package/dist/lib/payments/extend.js.map +1 -0
- package/dist/lib/payments/facilitator.d.ts +220 -0
- package/dist/lib/payments/facilitator.d.ts.map +1 -0
- package/dist/lib/payments/facilitator.js +451 -0
- package/dist/lib/payments/facilitator.js.map +1 -0
- package/dist/lib/payments/gate.d.ts +207 -0
- package/dist/lib/payments/gate.d.ts.map +1 -0
- package/dist/lib/payments/gate.js +481 -0
- package/dist/lib/payments/gate.js.map +1 -0
- package/dist/lib/payments/header-seal.d.ts +33 -0
- package/dist/lib/payments/header-seal.d.ts.map +1 -0
- package/dist/lib/payments/header-seal.js +76 -0
- package/dist/lib/payments/header-seal.js.map +1 -0
- package/dist/lib/payments/index.d.ts +12 -0
- package/dist/lib/payments/index.d.ts.map +1 -0
- package/dist/lib/payments/index.js +11 -0
- package/dist/lib/payments/index.js.map +1 -0
- package/dist/lib/payments/price.d.ts +25 -0
- package/dist/lib/payments/price.d.ts.map +1 -0
- package/dist/lib/payments/price.js +43 -0
- package/dist/lib/payments/price.js.map +1 -0
- package/dist/lib/payments/reconcile.d.ts +77 -0
- package/dist/lib/payments/reconcile.d.ts.map +1 -0
- package/dist/lib/payments/reconcile.js +317 -0
- package/dist/lib/payments/reconcile.js.map +1 -0
- package/dist/lib/payments/refund.d.ts +34 -0
- package/dist/lib/payments/refund.d.ts.map +1 -0
- package/dist/lib/payments/refund.js +123 -0
- package/dist/lib/payments/refund.js.map +1 -0
- package/dist/lib/payments/review-billing.d.ts +222 -0
- package/dist/lib/payments/review-billing.d.ts.map +1 -0
- package/dist/lib/payments/review-billing.js +609 -0
- package/dist/lib/payments/review-billing.js.map +1 -0
- package/dist/lib/payments/settle.d.ts +44 -0
- package/dist/lib/payments/settle.d.ts.map +1 -0
- package/dist/lib/payments/settle.js +306 -0
- package/dist/lib/payments/settle.js.map +1 -0
- package/dist/lib/payments/terms.d.ts +27 -0
- package/dist/lib/payments/terms.d.ts.map +1 -0
- package/dist/lib/payments/terms.js +21 -0
- package/dist/lib/payments/terms.js.map +1 -0
- package/dist/lib/payouts.d.ts +20 -0
- package/dist/lib/payouts.d.ts.map +1 -0
- package/dist/lib/payouts.js +30 -0
- package/dist/lib/payouts.js.map +1 -0
- package/dist/lib/readiness.d.ts +42 -0
- package/dist/lib/readiness.d.ts.map +1 -0
- package/dist/lib/readiness.js +130 -0
- package/dist/lib/readiness.js.map +1 -0
- package/dist/lib/redact.d.ts +23 -0
- package/dist/lib/redact.d.ts.map +1 -0
- package/dist/lib/redact.js +67 -0
- package/dist/lib/redact.js.map +1 -0
- package/dist/lib/register.d.ts +85 -0
- package/dist/lib/register.d.ts.map +1 -0
- package/dist/lib/register.js +390 -0
- package/dist/lib/register.js.map +1 -0
- package/dist/lib/review/attestation.d.ts +92 -0
- package/dist/lib/review/attestation.d.ts.map +1 -0
- package/dist/lib/review/attestation.js +264 -0
- package/dist/lib/review/attestation.js.map +1 -0
- package/dist/lib/review/reviewer-grant.d.ts +146 -0
- package/dist/lib/review/reviewer-grant.d.ts.map +1 -0
- package/dist/lib/review/reviewer-grant.js +359 -0
- package/dist/lib/review/reviewer-grant.js.map +1 -0
- package/dist/lib/review/tasks.d.ts +18 -0
- package/dist/lib/review/tasks.d.ts.map +1 -0
- package/dist/lib/review/tasks.js +36 -0
- package/dist/lib/review/tasks.js.map +1 -0
- package/dist/lib/sentry.d.ts +89 -0
- package/dist/lib/sentry.d.ts.map +1 -0
- package/dist/lib/sentry.js +284 -0
- package/dist/lib/sentry.js.map +1 -0
- package/dist/lib/spans.d.ts +14 -0
- package/dist/lib/spans.d.ts.map +1 -0
- package/dist/lib/spans.js +28 -0
- package/dist/lib/spans.js.map +1 -0
- package/dist/lib/tracing.d.ts +31 -0
- package/dist/lib/tracing.d.ts.map +1 -0
- package/dist/lib/tracing.js +66 -0
- package/dist/lib/tracing.js.map +1 -0
- package/dist/lib/ttl-cache.d.ts +26 -0
- package/dist/lib/ttl-cache.d.ts.map +1 -0
- package/dist/lib/ttl-cache.js +61 -0
- package/dist/lib/ttl-cache.js.map +1 -0
- package/dist/lib/validator.d.ts +19 -0
- package/dist/lib/validator.d.ts.map +1 -0
- package/dist/lib/validator.js +32 -0
- package/dist/lib/validator.js.map +1 -0
- package/dist/lib/work-order/form.d.ts +40 -0
- package/dist/lib/work-order/form.d.ts.map +1 -0
- package/dist/lib/work-order/form.js +316 -0
- package/dist/lib/work-order/form.js.map +1 -0
- package/dist/lib/work-order/index.d.ts +20 -0
- package/dist/lib/work-order/index.d.ts.map +1 -0
- package/dist/lib/work-order/index.js +66 -0
- package/dist/lib/work-order/index.js.map +1 -0
- package/dist/middleware/api/audit.d.ts +9 -0
- package/dist/middleware/api/audit.d.ts.map +1 -0
- package/dist/middleware/api/audit.js +38 -0
- package/dist/middleware/api/audit.js.map +1 -0
- package/dist/middleware/api/auth.d.ts +29 -0
- package/dist/middleware/api/auth.d.ts.map +1 -0
- package/dist/middleware/api/auth.js +105 -0
- package/dist/middleware/api/auth.js.map +1 -0
- package/dist/middleware/api/console.d.ts +92 -0
- package/dist/middleware/api/console.d.ts.map +1 -0
- package/dist/middleware/api/console.js +446 -0
- package/dist/middleware/api/console.js.map +1 -0
- package/dist/middleware/api/errors.d.ts +48 -0
- package/dist/middleware/api/errors.d.ts.map +1 -0
- package/dist/middleware/api/errors.js +133 -0
- package/dist/middleware/api/errors.js.map +1 -0
- package/dist/middleware/api/idempotency.d.ts +23 -0
- package/dist/middleware/api/idempotency.d.ts.map +1 -0
- package/dist/middleware/api/idempotency.js +158 -0
- package/dist/middleware/api/idempotency.js.map +1 -0
- package/dist/middleware/api/keys.d.ts +14 -0
- package/dist/middleware/api/keys.d.ts.map +1 -0
- package/dist/middleware/api/keys.js +66 -0
- package/dist/middleware/api/keys.js.map +1 -0
- package/dist/middleware/api/membership.d.ts +32 -0
- package/dist/middleware/api/membership.d.ts.map +1 -0
- package/dist/middleware/api/membership.js +48 -0
- package/dist/middleware/api/membership.js.map +1 -0
- package/dist/middleware/api/oauth.d.ts +28 -0
- package/dist/middleware/api/oauth.d.ts.map +1 -0
- package/dist/middleware/api/oauth.js +109 -0
- package/dist/middleware/api/oauth.js.map +1 -0
- package/dist/middleware/api/rate-limit.d.ts +23 -0
- package/dist/middleware/api/rate-limit.d.ts.map +1 -0
- package/dist/middleware/api/rate-limit.js +70 -0
- package/dist/middleware/api/rate-limit.js.map +1 -0
- package/dist/middleware/api/types.d.ts +92 -0
- package/dist/middleware/api/types.d.ts.map +1 -0
- package/dist/middleware/api/types.js +7 -0
- package/dist/middleware/api/types.js.map +1 -0
- package/dist/middleware/api/wait.d.ts +21 -0
- package/dist/middleware/api/wait.d.ts.map +1 -0
- package/dist/middleware/api/wait.js +85 -0
- package/dist/middleware/api/wait.js.map +1 -0
- package/dist/middleware/capability.d.ts +32 -0
- package/dist/middleware/capability.d.ts.map +1 -0
- package/dist/middleware/capability.js +113 -0
- package/dist/middleware/capability.js.map +1 -0
- package/dist/middleware/database.d.ts +14 -0
- package/dist/middleware/database.d.ts.map +1 -0
- package/dist/middleware/database.js +18 -0
- package/dist/middleware/database.js.map +1 -0
- package/dist/middleware/error-handler.d.ts +13 -0
- package/dist/middleware/error-handler.d.ts.map +1 -0
- package/dist/middleware/error-handler.js +127 -0
- package/dist/middleware/error-handler.js.map +1 -0
- package/dist/middleware/observability.d.ts +32 -0
- package/dist/middleware/observability.d.ts.map +1 -0
- package/dist/middleware/observability.js +134 -0
- package/dist/middleware/observability.js.map +1 -0
- package/dist/middleware/rate-limit.d.ts +16 -0
- package/dist/middleware/rate-limit.d.ts.map +1 -0
- package/dist/middleware/rate-limit.js +56 -0
- package/dist/middleware/rate-limit.js.map +1 -0
- package/dist/middleware/ucan-auth.d.ts +39 -0
- package/dist/middleware/ucan-auth.d.ts.map +1 -0
- package/dist/middleware/ucan-auth.js +278 -0
- package/dist/middleware/ucan-auth.js.map +1 -0
- package/dist/networks.d.ts +34 -0
- package/dist/networks.d.ts.map +1 -0
- package/dist/networks.js +49 -0
- package/dist/networks.js.map +1 -0
- package/dist/oracle.d.ts +193 -0
- package/dist/oracle.d.ts.map +1 -0
- package/dist/oracle.js +245 -0
- package/dist/oracle.js.map +1 -0
- package/dist/routes/health.d.ts +16 -0
- package/dist/routes/health.d.ts.map +1 -0
- package/dist/routes/health.js +29 -0
- package/dist/routes/health.js.map +1 -0
- package/dist/routes/v1/admin.d.ts +18 -0
- package/dist/routes/v1/admin.d.ts.map +1 -0
- package/dist/routes/v1/admin.js +101 -0
- package/dist/routes/v1/admin.js.map +1 -0
- package/dist/routes/v1/api/admin-claims.d.ts +14 -0
- package/dist/routes/v1/api/admin-claims.d.ts.map +1 -0
- package/dist/routes/v1/api/admin-claims.js +82 -0
- package/dist/routes/v1/api/admin-claims.js.map +1 -0
- package/dist/routes/v1/api/admin-facilitator.d.ts +20 -0
- package/dist/routes/v1/api/admin-facilitator.d.ts.map +1 -0
- package/dist/routes/v1/api/admin-facilitator.js +64 -0
- package/dist/routes/v1/api/admin-facilitator.js.map +1 -0
- package/dist/routes/v1/api/admin.d.ts +9 -0
- package/dist/routes/v1/api/admin.d.ts.map +1 -0
- package/dist/routes/v1/api/admin.js +110 -0
- package/dist/routes/v1/api/admin.js.map +1 -0
- package/dist/routes/v1/api/audit.d.ts +8 -0
- package/dist/routes/v1/api/audit.d.ts.map +1 -0
- package/dist/routes/v1/api/audit.js +56 -0
- package/dist/routes/v1/api/audit.js.map +1 -0
- package/dist/routes/v1/api/batch.d.ts +17 -0
- package/dist/routes/v1/api/batch.d.ts.map +1 -0
- package/dist/routes/v1/api/batch.js +192 -0
- package/dist/routes/v1/api/batch.js.map +1 -0
- package/dist/routes/v1/api/claims-read.d.ts +43 -0
- package/dist/routes/v1/api/claims-read.d.ts.map +1 -0
- package/dist/routes/v1/api/claims-read.js +123 -0
- package/dist/routes/v1/api/claims-read.js.map +1 -0
- package/dist/routes/v1/api/claims.d.ts +131 -0
- package/dist/routes/v1/api/claims.d.ts.map +1 -0
- package/dist/routes/v1/api/claims.js +407 -0
- package/dist/routes/v1/api/claims.js.map +1 -0
- package/dist/routes/v1/api/collections-link.d.ts +14 -0
- package/dist/routes/v1/api/collections-link.d.ts.map +1 -0
- package/dist/routes/v1/api/collections-link.js +97 -0
- package/dist/routes/v1/api/collections-link.js.map +1 -0
- package/dist/routes/v1/api/export.d.ts +48 -0
- package/dist/routes/v1/api/export.d.ts.map +1 -0
- package/dist/routes/v1/api/export.js +251 -0
- package/dist/routes/v1/api/export.js.map +1 -0
- package/dist/routes/v1/api/index.d.ts +16 -0
- package/dist/routes/v1/api/index.d.ts.map +1 -0
- package/dist/routes/v1/api/index.js +68 -0
- package/dist/routes/v1/api/index.js.map +1 -0
- package/dist/routes/v1/api/keys.d.ts +9 -0
- package/dist/routes/v1/api/keys.d.ts.map +1 -0
- package/dist/routes/v1/api/keys.js +95 -0
- package/dist/routes/v1/api/keys.js.map +1 -0
- package/dist/routes/v1/api/me.d.ts +21 -0
- package/dist/routes/v1/api/me.d.ts.map +1 -0
- package/dist/routes/v1/api/me.js +122 -0
- package/dist/routes/v1/api/me.js.map +1 -0
- package/dist/routes/v1/api/members.d.ts +17 -0
- package/dist/routes/v1/api/members.d.ts.map +1 -0
- package/dist/routes/v1/api/members.js +406 -0
- package/dist/routes/v1/api/members.js.map +1 -0
- package/dist/routes/v1/api/meta.d.ts +12 -0
- package/dist/routes/v1/api/meta.d.ts.map +1 -0
- package/dist/routes/v1/api/meta.js +59 -0
- package/dist/routes/v1/api/meta.js.map +1 -0
- package/dist/routes/v1/api/openapi.gen.d.ts +2 -0
- package/dist/routes/v1/api/openapi.gen.d.ts.map +1 -0
- package/dist/routes/v1/api/openapi.gen.js +7 -0
- package/dist/routes/v1/api/openapi.gen.js.map +1 -0
- package/dist/routes/v1/api/protocols.d.ts +22 -0
- package/dist/routes/v1/api/protocols.d.ts.map +1 -0
- package/dist/routes/v1/api/protocols.js +153 -0
- package/dist/routes/v1/api/protocols.js.map +1 -0
- package/dist/routes/v1/api/review-billing.d.ts +18 -0
- package/dist/routes/v1/api/review-billing.d.ts.map +1 -0
- package/dist/routes/v1/api/review-billing.js +196 -0
- package/dist/routes/v1/api/review-billing.js.map +1 -0
- package/dist/routes/v1/api/review.d.ts +30 -0
- package/dist/routes/v1/api/review.d.ts.map +1 -0
- package/dist/routes/v1/api/review.js +302 -0
- package/dist/routes/v1/api/review.js.map +1 -0
- package/dist/routes/v1/api/sources.d.ts +10 -0
- package/dist/routes/v1/api/sources.d.ts.map +1 -0
- package/dist/routes/v1/api/sources.js +293 -0
- package/dist/routes/v1/api/sources.js.map +1 -0
- package/dist/routes/v1/api/uploads.d.ts +37 -0
- package/dist/routes/v1/api/uploads.d.ts.map +1 -0
- package/dist/routes/v1/api/uploads.js +414 -0
- package/dist/routes/v1/api/uploads.js.map +1 -0
- package/dist/routes/v1/api/views.d.ts +18 -0
- package/dist/routes/v1/api/views.d.ts.map +1 -0
- package/dist/routes/v1/api/views.js +95 -0
- package/dist/routes/v1/api/views.js.map +1 -0
- package/dist/routes/v1/api/webhooks.d.ts +14 -0
- package/dist/routes/v1/api/webhooks.d.ts.map +1 -0
- package/dist/routes/v1/api/webhooks.js +282 -0
- package/dist/routes/v1/api/webhooks.js.map +1 -0
- package/dist/routes/v1/api/work-orders.d.ts +45 -0
- package/dist/routes/v1/api/work-orders.d.ts.map +1 -0
- package/dist/routes/v1/api/work-orders.js +171 -0
- package/dist/routes/v1/api/work-orders.js.map +1 -0
- package/dist/routes/v1/claims.d.ts +21 -0
- package/dist/routes/v1/claims.d.ts.map +1 -0
- package/dist/routes/v1/claims.js +153 -0
- package/dist/routes/v1/claims.js.map +1 -0
- package/dist/routes/v1/collections.d.ts +45 -0
- package/dist/routes/v1/collections.d.ts.map +1 -0
- package/dist/routes/v1/collections.js +201 -0
- package/dist/routes/v1/collections.js.map +1 -0
- package/dist/routes/v1/index.d.ts +13 -0
- package/dist/routes/v1/index.d.ts.map +1 -0
- package/dist/routes/v1/index.js +41 -0
- package/dist/routes/v1/index.js.map +1 -0
- package/dist/routes/v1/info.d.ts +14 -0
- package/dist/routes/v1/info.d.ts.map +1 -0
- package/dist/routes/v1/info.js +75 -0
- package/dist/routes/v1/info.js.map +1 -0
- package/dist/routes/v1/mcp/index.d.ts +33 -0
- package/dist/routes/v1/mcp/index.d.ts.map +1 -0
- package/dist/routes/v1/mcp/index.js +252 -0
- package/dist/routes/v1/mcp/index.js.map +1 -0
- package/dist/routes/v1/mcp/oauth.d.ts +27 -0
- package/dist/routes/v1/mcp/oauth.d.ts.map +1 -0
- package/dist/routes/v1/mcp/oauth.js +500 -0
- package/dist/routes/v1/mcp/oauth.js.map +1 -0
- package/dist/routes/v1/mcp/tools.d.ts +71 -0
- package/dist/routes/v1/mcp/tools.d.ts.map +1 -0
- package/dist/routes/v1/mcp/tools.js +432 -0
- package/dist/routes/v1/mcp/tools.js.map +1 -0
- package/dist/routes/v1/mcp/ui.d.ts +45 -0
- package/dist/routes/v1/mcp/ui.d.ts.map +1 -0
- package/dist/routes/v1/mcp/ui.js +454 -0
- package/dist/routes/v1/mcp/ui.js.map +1 -0
- package/dist/routes/v1/oauth.d.ts +29 -0
- package/dist/routes/v1/oauth.d.ts.map +1 -0
- package/dist/routes/v1/oauth.js +256 -0
- package/dist/routes/v1/oauth.js.map +1 -0
- package/dist/routes/v1/reviewers.d.ts +22 -0
- package/dist/routes/v1/reviewers.d.ts.map +1 -0
- package/dist/routes/v1/reviewers.js +165 -0
- package/dist/routes/v1/reviewers.js.map +1 -0
- package/dist/routes/v1/reviews.d.ts +38 -0
- package/dist/routes/v1/reviews.d.ts.map +1 -0
- package/dist/routes/v1/reviews.js +234 -0
- package/dist/routes/v1/reviews.js.map +1 -0
- package/dist/routes/v1/shared.d.ts +586 -0
- package/dist/routes/v1/shared.d.ts.map +1 -0
- package/dist/routes/v1/shared.js +229 -0
- package/dist/routes/v1/shared.js.map +1 -0
- package/dist/routes/well-known.d.ts +15 -0
- package/dist/routes/well-known.d.ts.map +1 -0
- package/dist/routes/well-known.js +35 -0
- package/dist/routes/well-known.js.map +1 -0
- package/dist/runtime.d.ts +100 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +144 -0
- package/dist/runtime.js.map +1 -0
- package/dist/testing/fake-tools.d.ts +104 -0
- package/dist/testing/fake-tools.d.ts.map +1 -0
- package/dist/testing/fake-tools.js +213 -0
- package/dist/testing/fake-tools.js.map +1 -0
- package/dist/testing/index.d.ts +54 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +104 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/samples.d.ts +70 -0
- package/dist/testing/samples.d.ts.map +1 -0
- package/dist/testing/samples.js +92 -0
- package/dist/testing/samples.js.map +1 -0
- package/dist/workflows/claim-ingest.d.ts +250 -0
- package/dist/workflows/claim-ingest.d.ts.map +1 -0
- package/dist/workflows/claim-ingest.js +1020 -0
- package/dist/workflows/claim-ingest.js.map +1 -0
- package/dist/workflows/claim-source.d.ts +25 -0
- package/dist/workflows/claim-source.d.ts.map +1 -0
- package/dist/workflows/claim-source.js +107 -0
- package/dist/workflows/claim-source.js.map +1 -0
- package/dist/workflows/review-complete.d.ts +82 -0
- package/dist/workflows/review-complete.d.ts.map +1 -0
- package/dist/workflows/review-complete.js +455 -0
- package/dist/workflows/review-complete.js.map +1 -0
- package/dist/workflows/steps.d.ts +125 -0
- package/dist/workflows/steps.d.ts.map +1 -0
- package/dist/workflows/steps.js +325 -0
- package/dist/workflows/steps.js.map +1 -0
- package/docs/api.md +2595 -0
- package/docs/guide.md +1525 -0
- package/migrations/0000_init.sql +108 -0
- package/migrations/0001_review_attestation.sql +1 -0
- package/migrations/0002_decisions_facts.sql +1 -0
- package/migrations/0003_api_lane.sql +171 -0
- package/migrations/0004_api_v1_1.sql +19 -0
- package/migrations/0005_member_notify.sql +3 -0
- package/migrations/0006_source_collections.sql +16 -0
- package/migrations/0007_api_settlement.sql +27 -0
- package/migrations/0008_review_extend.sql +1 -0
- package/migrations/0009_card_refunds.sql +4 -0
- package/migrations/0010_even_scorpion.sql +16 -0
- package/migrations/0011_mcp_oauth.sql +27 -0
- package/migrations/0012_mcp_standing.sql +21 -0
- package/migrations/0013_unknown_krista_starr.sql +2 -0
- package/migrations/0014_last_carnage.sql +14 -0
- package/migrations/0015_company_authority.sql +26 -0
- package/migrations/0016_owner_only_links.sql +6 -0
- package/migrations/0017_organisations.sql +35 -0
- package/migrations/0018_remove_app_signed.sql +4 -0
- package/migrations/0019_submitted_via.sql +2 -0
- package/migrations/0020_drop_decision_to_pay.sql +4 -0
- package/migrations/0021_manual_erase.sql +25 -0
- package/migrations/0022_errored_facts.sql +1 -0
- package/migrations/0023_review_billing.sql +20 -0
- package/migrations/0024_pending_task_details.sql +1 -0
- package/migrations/meta/0000_snapshot.json +707 -0
- package/migrations/meta/0001_snapshot.json +714 -0
- package/migrations/meta/0002_snapshot.json +721 -0
- package/migrations/meta/0003_snapshot.json +1845 -0
- package/migrations/meta/0004_snapshot.json +1969 -0
- package/migrations/meta/0005_snapshot.json +1991 -0
- package/migrations/meta/0006_snapshot.json +2097 -0
- package/migrations/meta/0007_snapshot.json +2128 -0
- package/migrations/meta/0008_snapshot.json +2133 -0
- package/migrations/meta/0009_snapshot.json +2161 -0
- package/migrations/meta/0010_snapshot.json +2265 -0
- package/migrations/meta/0011_snapshot.json +2448 -0
- package/migrations/meta/0012_snapshot.json +2577 -0
- package/migrations/meta/0013_snapshot.json +2594 -0
- package/migrations/meta/0014_snapshot.json +2602 -0
- package/migrations/meta/0015_snapshot.json +2778 -0
- package/migrations/meta/0016_snapshot.json +2778 -0
- package/migrations/meta/0017_snapshot.json +2792 -0
- package/migrations/meta/0018_snapshot.json +2778 -0
- package/migrations/meta/0019_snapshot.json +2792 -0
- package/migrations/meta/0020_snapshot.json +2785 -0
- package/migrations/meta/0021_snapshot.json +2762 -0
- package/migrations/meta/0022_snapshot.json +2769 -0
- package/migrations/meta/0023_snapshot.json +2900 -0
- package/migrations/meta/0024_snapshot.json +2907 -0
- package/migrations/meta/_journal.json +181 -0
- package/openapi/decision-api.yaml +12204 -0
- package/package.json +123 -4
- package/skills/README.md +19 -0
- package/skills/add-openhands-support/SKILL.md +113 -0
- package/skills/create-collection/SKILL.md +199 -0
- package/skills/create-collection/reference/claims-stack.md +106 -0
- package/skills/create-collection/reference/collection.md +111 -0
- package/skills/create-oracle/SKILL.md +400 -0
- package/skills/create-rubric/SKILL.md +130 -0
- package/skills/create-rubric/reference/format-cheatsheet.md +186 -0
- package/skills/create-rubric/templates/claim-form.example.json +60 -0
- package/skills/decision-api-client/SKILL.md +236 -0
- package/skills/decision-api-oracle/SKILL.md +336 -0
- package/skills/publish-protocol/SKILL.md +151 -0
- package/skills/publish-protocol/reference/publishing.md +116 -0
- package/skills/reference/engine-contract.md +222 -0
- package/skills/write-facts/SKILL.md +221 -0
- package/skills/write-facts/reference/examples/http-vendor.ts +88 -0
- package/skills/write-facts/reference/examples/price-matches-agreement.ts +67 -0
- package/skills/write-facts/reference/facts-api.md +232 -0
- package/templates/project/.dev.vars.example +93 -0
- package/templates/project/.editorconfig +9 -0
- package/templates/project/CLAUDE.md +45 -0
- package/templates/project/README.md +199 -0
- package/templates/project/biome.json +37 -0
- package/templates/project/gitignore +29 -0
- package/templates/project/package.json +32 -0
- package/templates/project/src/facts/index.ts +19 -0
- package/templates/project/src/index.ts +25 -0
- package/templates/project/test/api-lane.test.ts +57 -0
- package/templates/project/test/facts.test.ts +14 -0
- package/templates/project/tsconfig.json +25 -0
- package/templates/project/vitest.config.ts +13 -0
- package/templates/project/wrangler.jsonc +446 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Decision API payments (payments spec §4, §13.4; Go Prod §11): the x402 `ixo-pay` gate the router
|
|
3
|
+
* calls (S3), settle on receipt the workflows call, and the payment crons.
|
|
4
|
+
*/
|
|
5
|
+
export { type ExtendOutcome, extendForReview, reservationExpiry } from "./extend.js";
|
|
6
|
+
export type { FacilitatorDeps } from "./facilitator.js";
|
|
7
|
+
export { createPaymentGate, decodeHeader, encodeHeader, type GateDeps } from "./gate.js";
|
|
8
|
+
export { publishedPrice } from "./price.js";
|
|
9
|
+
export { type ReconcileReport, reconcilePayments, watchBalances } from "./reconcile.js";
|
|
10
|
+
export { type RefundOutcome, refreshRefund } from "./refund.js";
|
|
11
|
+
export { paymentResponse, type SettleDeps, settleClaim } from "./settle.js";
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/payments/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,aAAa,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAClF,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,QAAQ,EAAE,MAAM,QAAQ,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,KAAK,eAAe,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACrF,OAAO,EAAE,KAAK,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,KAAK,UAAU,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Decision API payments (payments spec §4, §13.4; Go Prod §11): the x402 `ixo-pay` gate the router
|
|
3
|
+
* calls (S3), settle on receipt the workflows call, and the payment crons.
|
|
4
|
+
*/
|
|
5
|
+
export { extendForReview, reservationExpiry } from "./extend.js";
|
|
6
|
+
export { createPaymentGate, decodeHeader, encodeHeader } from "./gate.js";
|
|
7
|
+
export { publishedPrice } from "./price.js";
|
|
8
|
+
export { reconcilePayments, watchBalances } from "./reconcile.js";
|
|
9
|
+
export { refreshRefund } from "./refund.js";
|
|
10
|
+
export { paymentResponse, settleClaim } from "./settle.js";
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/payments/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAsB,eAAe,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAElF,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,YAAY,EAAiB,MAAM,QAAQ,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAwB,iBAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACrF,OAAO,EAAsB,aAAa,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAmB,WAAW,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The price this oracle PUBLISHES per protocol (payments spec §3.1, Go Prod §11.1): what every offer
|
|
3
|
+
* charges and what `GET /v1/api/protocols/:did` serves. The facilitator refuses an offer whose
|
|
4
|
+
* per-claim amount differs from the published one (`/offers` 422 `price_mismatch`), and the public
|
|
5
|
+
* route cannot see a source — so the charged price is a function of the protocol ALONE. There are
|
|
6
|
+
* no per-source prices (contracts v1.1): a partner who should not pay gets `billingMode: none`.
|
|
7
|
+
*
|
|
8
|
+
* 1 PAY = 1 USD = 1,000,000 upay, so one cent is 10,000 upay and 1 upay is 1 micro-USD.
|
|
9
|
+
*/
|
|
10
|
+
import type { Config } from "../../config.js";
|
|
11
|
+
import type { Price } from "../../contracts/index.js";
|
|
12
|
+
export declare const UPAY_PER_CENT = 10000;
|
|
13
|
+
/**
|
|
14
|
+
* The published price of one decision under `protocolDid` (§3.1), or null when this oracle
|
|
15
|
+
* publishes none for it — the route then serves `price: null`, which the facilitator reads as "not
|
|
16
|
+
* published", and the gate offers nothing (`gate.ts`). Resolution, protocol alone: the config's
|
|
17
|
+
* `pricing.api.byProtocol[protocolDid]`, then `pricing.api.amountMicroUsd`, then the
|
|
18
|
+
* `API_PRICE_USD_CENTS` var (× 10 000). `amountMicroUsd` and `amount` are the exact price;
|
|
19
|
+
* `amountCents` is the same price in cents — exact, because every price is a whole number of
|
|
20
|
+
* cents (`MicroUsdPrice` in oracle.ts; the var is whole cents by type).
|
|
21
|
+
*/
|
|
22
|
+
export declare function publishedPrice(config: Pick<Config, "API_PRICE_USD_CENTS">, protocolDid: string): Price | null;
|
|
23
|
+
/** upay base units → whole cents, rounded DOWN (a balance is never shown as more than it is). */
|
|
24
|
+
export declare const upayToCents: (upay: string) => number;
|
|
25
|
+
//# sourceMappingURL=price.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"price.d.ts","sourceRoot":"","sources":["../../../src/lib/payments/price.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAG7C,eAAO,MAAM,aAAa,QAAS,CAAC;AAEpC;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,qBAAqB,CAAC,EAC3C,WAAW,EAAE,MAAM,GAClB,KAAK,GAAG,IAAI,CAkBd;AAED,iGAAiG;AACjG,eAAO,MAAM,WAAW,SAAU,MAAM,KAAG,MAAsD,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The price this oracle PUBLISHES per protocol (payments spec §3.1, Go Prod §11.1): what every offer
|
|
3
|
+
* charges and what `GET /v1/api/protocols/:did` serves. The facilitator refuses an offer whose
|
|
4
|
+
* per-claim amount differs from the published one (`/offers` 422 `price_mismatch`), and the public
|
|
5
|
+
* route cannot see a source — so the charged price is a function of the protocol ALONE. There are
|
|
6
|
+
* no per-source prices (contracts v1.1): a partner who should not pay gets `billingMode: none`.
|
|
7
|
+
*
|
|
8
|
+
* 1 PAY = 1 USD = 1,000,000 upay, so one cent is 10,000 upay and 1 upay is 1 micro-USD.
|
|
9
|
+
*/
|
|
10
|
+
import { getOracle } from "../../oracle.js";
|
|
11
|
+
export const UPAY_PER_CENT = 10_000;
|
|
12
|
+
/**
|
|
13
|
+
* The published price of one decision under `protocolDid` (§3.1), or null when this oracle
|
|
14
|
+
* publishes none for it — the route then serves `price: null`, which the facilitator reads as "not
|
|
15
|
+
* published", and the gate offers nothing (`gate.ts`). Resolution, protocol alone: the config's
|
|
16
|
+
* `pricing.api.byProtocol[protocolDid]`, then `pricing.api.amountMicroUsd`, then the
|
|
17
|
+
* `API_PRICE_USD_CENTS` var (× 10 000). `amountMicroUsd` and `amount` are the exact price;
|
|
18
|
+
* `amountCents` is the same price in cents — exact, because every price is a whole number of
|
|
19
|
+
* cents (`MicroUsdPrice` in oracle.ts; the var is whole cents by type).
|
|
20
|
+
*/
|
|
21
|
+
export function publishedPrice(config, protocolDid) {
|
|
22
|
+
const api = getOracle().config.pricing.api;
|
|
23
|
+
const cents = config.API_PRICE_USD_CENTS;
|
|
24
|
+
const amountMicroUsd =
|
|
25
|
+
// Own keys only: an inherited name ("constructor") is not a protocol with a price.
|
|
26
|
+
(api?.byProtocol && Object.hasOwn(api.byProtocol, protocolDid)
|
|
27
|
+
? api.byProtocol[protocolDid]
|
|
28
|
+
: undefined) ??
|
|
29
|
+
api?.amountMicroUsd ??
|
|
30
|
+
(cents === undefined ? null : cents * UPAY_PER_CENT);
|
|
31
|
+
if (amountMicroUsd === null)
|
|
32
|
+
return null;
|
|
33
|
+
return {
|
|
34
|
+
amountMicroUsd,
|
|
35
|
+
amountCents: amountMicroUsd / UPAY_PER_CENT,
|
|
36
|
+
currency: "USD",
|
|
37
|
+
amount: String(amountMicroUsd),
|
|
38
|
+
asset: "upay",
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
/** upay base units → whole cents, rounded DOWN (a balance is never shown as more than it is). */
|
|
42
|
+
export const upayToCents = (upay) => Number(BigInt(upay) / BigInt(UPAY_PER_CENT));
|
|
43
|
+
//# sourceMappingURL=price.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"price.js","sourceRoot":"","sources":["../../../src/lib/payments/price.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC;AAEpC;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAC5B,MAA2C,EAC3C,WAAmB;IAEnB,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;IAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,mBAAmB,CAAC;IACzC,MAAM,cAAc;IAClB,mFAAmF;IACnF,CAAC,GAAG,EAAE,UAAU,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC;QAC5D,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC;QAC7B,CAAC,CAAC,SAAS,CAAC;QACd,GAAG,EAAE,cAAc;QACnB,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,aAAa,CAAC,CAAC;IACvD,IAAI,cAAc,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACzC,OAAO;QACL,cAAc;QACd,WAAW,EAAE,cAAc,GAAG,aAAa;QAC3C,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC;QAC9B,KAAK,EAAE,MAAM;KACd,CAAC;AACJ,CAAC;AAED,iGAAiG;AACjG,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The payment crons (Go Prod §7.3; payments spec §4 steps 6–7, §12), run from the API lane's
|
|
3
|
+
* five-minute tier (cron/api-lane.ts) whenever a facilitator is configured — NOT only while
|
|
4
|
+
* `API_PAYMENTS` is on: switching payments off stops new paid submits at the router, and must never
|
|
5
|
+
* strand a claim that is already reserved.
|
|
6
|
+
*
|
|
7
|
+
* `reconcilePayments` — every 5 minutes, bounded, idempotent, in this order:
|
|
8
|
+
* (c) first — a charge still `reserved` past its reservation's expiry whose claim has no receipt
|
|
9
|
+
* (it failed, or its review outlived the hold) ⇒ `released` (`reservation_expired`): the
|
|
10
|
+
* facilitator released it and nothing moved. The expiry is `reservationExpiresAt` once a
|
|
11
|
+
* review extended it (extend.ts), else the facilitator's TTL (24 h) — either + 10 min of
|
|
12
|
+
* slack. One bounded statement. It is our reckoning, not the facilitator's word: a receipt that comes
|
|
13
|
+
* later is still settled, and the facilitator's answer wins (settle.ts).
|
|
14
|
+
* (d) a charge `reserved`, never extended, whose claim waits on a review (`pending_review`) —
|
|
15
|
+
* the workflow's extend was lost ⇒ `extendForReview` again, while the 24 h hold still
|
|
16
|
+
* stands. A refusal leaves the row to its 24 h (a 422 marks it `extend_refused`, never asked
|
|
17
|
+
* again); every attempt touches the row, so a backlog rotates.
|
|
18
|
+
* (a) a charge `reserved` whose claim is still `queued` 2 minutes after accept — verified and
|
|
19
|
+
* recorded, but the start never happened (the request died, a start failed) ⇒
|
|
20
|
+
* `startApiClaims`, which is idempotent. Only while the reservation is surely alive
|
|
21
|
+
* (younger than 24 h − 10 min): a claim must never start on a lapsed reservation.
|
|
22
|
+
* (b) a decided claim with a receipt whose charge is still `reserved` (the workflow's settle was
|
|
23
|
+
* lost), `settled` (the minute's transfer has not paid it yet) or `released` by (c) ⇒
|
|
24
|
+
* `/settle` again with the IDENTICAL body (settle.ts) until `paid` with the transaction;
|
|
25
|
+
* `reservation_released` ⇒ `released`, a refused receipt ⇒ `failed`, neither retried.
|
|
26
|
+
* Oldest attempt first: every attempt — a skip included — touches the row, so a backlog
|
|
27
|
+
* rotates instead of starving. A `reserved` charge whose verified payment is gone (no header
|
|
28
|
+
* on the row nor in KV) ⇒ `failed` (`settlement_lost`), loudly, once past its reservation's
|
|
29
|
+
* expiry (24 h, or the review's extended one); a `settled` one is resolved by `GET /settlements/:id`, never failed.
|
|
30
|
+
* One `payments.reconcile.report` line with the counts.
|
|
31
|
+
*
|
|
32
|
+
* `watchBalances` — every 5 minutes: active sources with a refill floor, a page at a time (a KV
|
|
33
|
+
* cursor by sourceId, wrapping around), each owner's `upay` available against the floor; one
|
|
34
|
+
* `balance.low` webhook per crossing (`api_sources.balanceLowAt`), and an email to the source's
|
|
35
|
+
* `contactEmail` once per UTC day while the balance stays under the floor (member-emails.ts).
|
|
36
|
+
*
|
|
37
|
+
* Failures: per-call failures are logged and skipped, up to `FAILURE_BUDGET` per job per run; the
|
|
38
|
+
* balance watch stops at once on an unreachable facilitator (network, its did.json).
|
|
39
|
+
*/
|
|
40
|
+
import type { Database } from "../../db/client.js";
|
|
41
|
+
import type { OracleEnv } from "../../env.js";
|
|
42
|
+
import type { Metrics } from "../metrics.js";
|
|
43
|
+
import { type FacilitatorDeps } from "./facilitator.js";
|
|
44
|
+
export interface PaymentCronDeps extends FacilitatorDeps {
|
|
45
|
+
db: Database;
|
|
46
|
+
env: OracleEnv;
|
|
47
|
+
}
|
|
48
|
+
/** Charges per arm per run — the tick stays short whatever the backlog. */
|
|
49
|
+
export declare const RECONCILE_BATCH = 200;
|
|
50
|
+
export interface ReconcileReport {
|
|
51
|
+
/** (a) reserved claims started. */
|
|
52
|
+
restarted: number;
|
|
53
|
+
/** (b) `/settle` calls made, and what they came to. */
|
|
54
|
+
resettled: number;
|
|
55
|
+
paid: number;
|
|
56
|
+
pending: number;
|
|
57
|
+
released: number;
|
|
58
|
+
failed: number;
|
|
59
|
+
/** The verified payment gone: marked `failed` (`settlement_lost`). */
|
|
60
|
+
lost: number;
|
|
61
|
+
/** (c) reserved past the TTL with no receipt: marked `released`. */
|
|
62
|
+
expired: number;
|
|
63
|
+
/** (d) reviews whose lost extend was retried and held. */
|
|
64
|
+
extended: number;
|
|
65
|
+
/** (e) card charges asked about their refund (refund.ts), and how many are refunded. */
|
|
66
|
+
refundChecked: number;
|
|
67
|
+
refunded: number;
|
|
68
|
+
}
|
|
69
|
+
export declare function reconcilePayments(deps: PaymentCronDeps, now?: Date, opts?: {
|
|
70
|
+
batch?: number;
|
|
71
|
+
}): Promise<ReconcileReport>;
|
|
72
|
+
export declare function watchBalances(deps: FacilitatorDeps & {
|
|
73
|
+
db: Database;
|
|
74
|
+
metrics: Metrics;
|
|
75
|
+
email?: SendEmail;
|
|
76
|
+
}, now?: Date): Promise<void>;
|
|
77
|
+
//# sourceMappingURL=reconcile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reconcile.d.ts","sourceRoot":"","sources":["../../../src/lib/payments/reconcile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAM3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAG1C,OAAO,EAEL,KAAK,eAAe,EAErB,MAAM,eAAe,CAAC;AAKvB,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,EAAE,EAAE,QAAQ,CAAC;IACb,GAAG,EAAE,SAAS,CAAC;CAChB;AAED,2EAA2E;AAC3E,eAAO,MAAM,eAAe,MAAM,CAAC;AAYnC,MAAM,WAAW,eAAe;IAC9B,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,QAAQ,EAAE,MAAM,CAAC;IACjB,wFAAwF;IACxF,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAcD,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,eAAe,EACrB,GAAG,OAAa,EAChB,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC5B,OAAO,CAAC,eAAe,CAAC,CAwB1B;AAiND,wBAAsB,aAAa,CACjC,IAAI,EAAE,eAAe,GAAG;IAAE,EAAE,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,CAAA;CAAE,EAC7E,GAAG,OAAa,GACf,OAAO,CAAC,IAAI,CAAC,CAyEf"}
|
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The payment crons (Go Prod §7.3; payments spec §4 steps 6–7, §12), run from the API lane's
|
|
3
|
+
* five-minute tier (cron/api-lane.ts) whenever a facilitator is configured — NOT only while
|
|
4
|
+
* `API_PAYMENTS` is on: switching payments off stops new paid submits at the router, and must never
|
|
5
|
+
* strand a claim that is already reserved.
|
|
6
|
+
*
|
|
7
|
+
* `reconcilePayments` — every 5 minutes, bounded, idempotent, in this order:
|
|
8
|
+
* (c) first — a charge still `reserved` past its reservation's expiry whose claim has no receipt
|
|
9
|
+
* (it failed, or its review outlived the hold) ⇒ `released` (`reservation_expired`): the
|
|
10
|
+
* facilitator released it and nothing moved. The expiry is `reservationExpiresAt` once a
|
|
11
|
+
* review extended it (extend.ts), else the facilitator's TTL (24 h) — either + 10 min of
|
|
12
|
+
* slack. One bounded statement. It is our reckoning, not the facilitator's word: a receipt that comes
|
|
13
|
+
* later is still settled, and the facilitator's answer wins (settle.ts).
|
|
14
|
+
* (d) a charge `reserved`, never extended, whose claim waits on a review (`pending_review`) —
|
|
15
|
+
* the workflow's extend was lost ⇒ `extendForReview` again, while the 24 h hold still
|
|
16
|
+
* stands. A refusal leaves the row to its 24 h (a 422 marks it `extend_refused`, never asked
|
|
17
|
+
* again); every attempt touches the row, so a backlog rotates.
|
|
18
|
+
* (a) a charge `reserved` whose claim is still `queued` 2 minutes after accept — verified and
|
|
19
|
+
* recorded, but the start never happened (the request died, a start failed) ⇒
|
|
20
|
+
* `startApiClaims`, which is idempotent. Only while the reservation is surely alive
|
|
21
|
+
* (younger than 24 h − 10 min): a claim must never start on a lapsed reservation.
|
|
22
|
+
* (b) a decided claim with a receipt whose charge is still `reserved` (the workflow's settle was
|
|
23
|
+
* lost), `settled` (the minute's transfer has not paid it yet) or `released` by (c) ⇒
|
|
24
|
+
* `/settle` again with the IDENTICAL body (settle.ts) until `paid` with the transaction;
|
|
25
|
+
* `reservation_released` ⇒ `released`, a refused receipt ⇒ `failed`, neither retried.
|
|
26
|
+
* Oldest attempt first: every attempt — a skip included — touches the row, so a backlog
|
|
27
|
+
* rotates instead of starving. A `reserved` charge whose verified payment is gone (no header
|
|
28
|
+
* on the row nor in KV) ⇒ `failed` (`settlement_lost`), loudly, once past its reservation's
|
|
29
|
+
* expiry (24 h, or the review's extended one); a `settled` one is resolved by `GET /settlements/:id`, never failed.
|
|
30
|
+
* One `payments.reconcile.report` line with the counts.
|
|
31
|
+
*
|
|
32
|
+
* `watchBalances` — every 5 minutes: active sources with a refill floor, a page at a time (a KV
|
|
33
|
+
* cursor by sourceId, wrapping around), each owner's `upay` available against the floor; one
|
|
34
|
+
* `balance.low` webhook per crossing (`api_sources.balanceLowAt`), and an email to the source's
|
|
35
|
+
* `contactEmail` once per UTC day while the balance stays under the floor (member-emails.ts).
|
|
36
|
+
*
|
|
37
|
+
* Failures: per-call failures are logged and skipped, up to `FAILURE_BUDGET` per job per run; the
|
|
38
|
+
* balance watch stops at once on an unreachable facilitator (network, its did.json).
|
|
39
|
+
*/
|
|
40
|
+
import { and, asc, eq, exists, gt, inArray, isNotNull, isNull, lt, ne, not, or } from "drizzle-orm";
|
|
41
|
+
import { apiCharges, apiSources, claimIngests, decisions } from "../../db/schema.js";
|
|
42
|
+
import { startApiClaims } from "../api-lane/accept.js";
|
|
43
|
+
import { emailBalanceLow } from "../api-lane/member-emails.js";
|
|
44
|
+
import { DAY_MS } from "../api-lane/retention.js";
|
|
45
|
+
import { emitBalanceLow } from "../api-lane/webhooks.js";
|
|
46
|
+
import { reportAlert, reportError } from "../sentry.js";
|
|
47
|
+
import { EXTEND_REFUSED, extendForReview, reservationExpiry } from "./extend.js";
|
|
48
|
+
import { createFacilitatorClient, FacilitatorUnreachable, } from "./facilitator.js";
|
|
49
|
+
import { upayToCents } from "./price.js";
|
|
50
|
+
import { refreshRefunds } from "./refund.js";
|
|
51
|
+
import { EXPIRED, settleClaim } from "./settle.js";
|
|
52
|
+
/** Charges per arm per run — the tick stays short whatever the backlog. */
|
|
53
|
+
export const RECONCILE_BATCH = 200;
|
|
54
|
+
const WATCH_BATCH = 200;
|
|
55
|
+
const FAILURE_BUDGET = 5;
|
|
56
|
+
/** A start or a settle this young may still be in flight on its request or its workflow. */
|
|
57
|
+
const SETTLE_GRACE_MS = 2 * 60_000;
|
|
58
|
+
/** The facilitator's RESERVATION_TTL (24 h) ± slack: past the upper bound we call a reservation
|
|
59
|
+
* released; past the lower one we no longer start its claim. */
|
|
60
|
+
const RESERVATION_SLACK_MS = 10 * 60_000;
|
|
61
|
+
const RESERVATION_EXPIRED_MS = DAY_MS + RESERVATION_SLACK_MS;
|
|
62
|
+
const RESERVATION_ALIVE_MS = DAY_MS - RESERVATION_SLACK_MS;
|
|
63
|
+
const WATCH_CURSOR = "x402-balance-cursor";
|
|
64
|
+
/** A run's tolerance for per-call failures; false ⇒ stop the run. */
|
|
65
|
+
function failureBudget(logger, what) {
|
|
66
|
+
let left = FAILURE_BUDGET;
|
|
67
|
+
return (err, fields) => {
|
|
68
|
+
logger.warn(`payments.${what}-failed`, { ...fields, detail: String(err) });
|
|
69
|
+
reportError(err, { lane: "payments", step: what });
|
|
70
|
+
if (err instanceof FacilitatorUnreachable)
|
|
71
|
+
return false;
|
|
72
|
+
left -= 1;
|
|
73
|
+
return left > 0;
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
export async function reconcilePayments(deps, now = new Date(), opts = {}) {
|
|
77
|
+
const report = {
|
|
78
|
+
restarted: 0,
|
|
79
|
+
resettled: 0,
|
|
80
|
+
paid: 0,
|
|
81
|
+
pending: 0,
|
|
82
|
+
released: 0,
|
|
83
|
+
failed: 0,
|
|
84
|
+
lost: 0,
|
|
85
|
+
expired: 0,
|
|
86
|
+
extended: 0,
|
|
87
|
+
refundChecked: 0,
|
|
88
|
+
refunded: 0,
|
|
89
|
+
};
|
|
90
|
+
const batch = opts.batch ?? RECONCILE_BATCH;
|
|
91
|
+
await expireReservations(deps, now, report, batch);
|
|
92
|
+
await extendReviews(deps, now, report, batch);
|
|
93
|
+
await restartReserved(deps, now, report, batch);
|
|
94
|
+
await resettle(deps, now, report, batch);
|
|
95
|
+
const refunds = await refreshRefunds(deps, now);
|
|
96
|
+
report.refundChecked = refunds.checked;
|
|
97
|
+
report.refunded = refunds.refunded;
|
|
98
|
+
deps.logger.info("payments.reconcile.report", { ...report });
|
|
99
|
+
return report;
|
|
100
|
+
}
|
|
101
|
+
async function restartReserved(deps, now, report, batch) {
|
|
102
|
+
const rows = await deps.db
|
|
103
|
+
.select({ claimId: apiCharges.claimId })
|
|
104
|
+
.from(apiCharges)
|
|
105
|
+
.innerJoin(claimIngests, eq(claimIngests.claimId, apiCharges.claimId))
|
|
106
|
+
.where(and(eq(apiCharges.status, "reserved"), eq(claimIngests.status, "queued"),
|
|
107
|
+
// An API claim's: a chain claim (review billing) reserves inside its own run, and must
|
|
108
|
+
// never be started on the API lane.
|
|
109
|
+
eq(claimIngests.lane, "api"), lt(apiCharges.createdAt, new Date(now.getTime() - SETTLE_GRACE_MS)), gt(apiCharges.createdAt, new Date(now.getTime() - RESERVATION_ALIVE_MS))))
|
|
110
|
+
.orderBy(asc(apiCharges.createdAt))
|
|
111
|
+
.limit(batch);
|
|
112
|
+
if (rows.length === 0)
|
|
113
|
+
return;
|
|
114
|
+
const claimIds = rows.map((r) => r.claimId);
|
|
115
|
+
try {
|
|
116
|
+
await startApiClaims(deps.env, claimIds);
|
|
117
|
+
report.restarted += claimIds.length;
|
|
118
|
+
}
|
|
119
|
+
catch (err) {
|
|
120
|
+
// Retried by the next run: the rows are still reserved and queued.
|
|
121
|
+
deps.logger.error("payments.reconcile.start-failed", { claimIds, detail: String(err) });
|
|
122
|
+
// Paid for and not running: the next run retries it, but a start that keeps failing is a
|
|
123
|
+
// customer's money doing nothing — worth an issue, not only a log line.
|
|
124
|
+
reportError(err, {
|
|
125
|
+
lane: "payments",
|
|
126
|
+
step: "reconcile-start",
|
|
127
|
+
context: { claims: claimIds.length },
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
async function expireReservations(deps, now, report, batch) {
|
|
132
|
+
const { db } = deps;
|
|
133
|
+
const expired = await db
|
|
134
|
+
.update(apiCharges)
|
|
135
|
+
.set({ status: "released", error: EXPIRED })
|
|
136
|
+
.where(and(eq(apiCharges.status, "reserved"), inArray(apiCharges.claimId, db
|
|
137
|
+
.select({ claimId: apiCharges.claimId })
|
|
138
|
+
.from(apiCharges)
|
|
139
|
+
.where(and(eq(apiCharges.status, "reserved"), or(and(isNull(apiCharges.reservationExpiresAt), lt(apiCharges.createdAt, new Date(now.getTime() - RESERVATION_EXPIRED_MS))), lt(apiCharges.reservationExpiresAt, new Date(now.getTime() - RESERVATION_SLACK_MS))), not(exists(db
|
|
140
|
+
.select({ claimId: decisions.claimId })
|
|
141
|
+
.from(decisions)
|
|
142
|
+
.where(and(eq(decisions.claimId, apiCharges.claimId), isNotNull(decisions.receiptJws)))))))
|
|
143
|
+
.orderBy(asc(apiCharges.createdAt))
|
|
144
|
+
.limit(batch))))
|
|
145
|
+
.returning({ claimId: apiCharges.claimId });
|
|
146
|
+
report.expired += expired.length;
|
|
147
|
+
}
|
|
148
|
+
async function extendReviews(deps, now, report, batch) {
|
|
149
|
+
const { db } = deps;
|
|
150
|
+
const rows = await db
|
|
151
|
+
.select({ claimId: apiCharges.claimId })
|
|
152
|
+
.from(apiCharges)
|
|
153
|
+
.innerJoin(decisions, eq(decisions.claimId, apiCharges.claimId))
|
|
154
|
+
.where(and(eq(apiCharges.status, "reserved"), isNull(apiCharges.reservationExpiresAt),
|
|
155
|
+
// A 422 marked it (extend.ts): asking again changes nothing.
|
|
156
|
+
or(isNull(apiCharges.error), ne(apiCharges.error, EXTEND_REFUSED)), eq(decisions.status, "pending_review"),
|
|
157
|
+
// The workflow's own extend, right after the decision row: give it its moment.
|
|
158
|
+
lt(decisions.updatedAt, new Date(now.getTime() - SETTLE_GRACE_MS)),
|
|
159
|
+
// Past 24 h the facilitator has released it: nothing left to hold.
|
|
160
|
+
gt(apiCharges.createdAt, new Date(now.getTime() - DAY_MS))))
|
|
161
|
+
.orderBy(asc(apiCharges.updatedAt))
|
|
162
|
+
.limit(batch);
|
|
163
|
+
let left = FAILURE_BUDGET;
|
|
164
|
+
for (const { claimId } of rows) {
|
|
165
|
+
const out = await extendForReview(deps, claimId);
|
|
166
|
+
if (out.status === "extended") {
|
|
167
|
+
report.extended += 1;
|
|
168
|
+
continue;
|
|
169
|
+
}
|
|
170
|
+
// A refusal or an outage (extend.ts logged it): touched, so the walk moves past it.
|
|
171
|
+
await db.update(apiCharges).set({ updatedAt: now }).where(eq(apiCharges.claimId, claimId));
|
|
172
|
+
if (out.status === "skipped" && out.reason === "unavailable") {
|
|
173
|
+
left -= 1;
|
|
174
|
+
if (left <= 0)
|
|
175
|
+
break;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
async function resettle(deps, now, report, batch) {
|
|
180
|
+
const { db, logger } = deps;
|
|
181
|
+
const rows = await db
|
|
182
|
+
.select({
|
|
183
|
+
claimId: apiCharges.claimId,
|
|
184
|
+
createdAt: apiCharges.createdAt,
|
|
185
|
+
reservationExpiresAt: apiCharges.reservationExpiresAt,
|
|
186
|
+
receiptJws: decisions.receiptJws,
|
|
187
|
+
})
|
|
188
|
+
.from(apiCharges)
|
|
189
|
+
.innerJoin(decisions, eq(decisions.claimId, apiCharges.claimId))
|
|
190
|
+
.where(and(or(inArray(apiCharges.status, ["reserved", "settled"]), and(eq(apiCharges.status, "released"), eq(apiCharges.error, EXPIRED))), isNotNull(decisions.receiptJws),
|
|
191
|
+
// The workflow's own settle, right after the decision row: give it its moment.
|
|
192
|
+
lt(decisions.updatedAt, new Date(now.getTime() - SETTLE_GRACE_MS))))
|
|
193
|
+
.orderBy(asc(apiCharges.updatedAt))
|
|
194
|
+
.limit(batch);
|
|
195
|
+
let left = FAILURE_BUDGET;
|
|
196
|
+
// A skipped row is touched, so the oldest-first walk moves past it next run.
|
|
197
|
+
const touch = (claimId) => db.update(apiCharges).set({ updatedAt: now }).where(eq(apiCharges.claimId, claimId));
|
|
198
|
+
for (const row of rows) {
|
|
199
|
+
const out = await settleClaim(deps, row.claimId, row.receiptJws);
|
|
200
|
+
if (out.status === "skipped" && out.reason === "no_payment") {
|
|
201
|
+
// KV may lag or blip: only a reservation past its expiry (an extended one's) is truly lost. (A `settled` row is
|
|
202
|
+
// never here: settle.ts resolves it through `GET /settlements/:id`.)
|
|
203
|
+
if (reservationExpiry(row).getTime() > now.getTime()) {
|
|
204
|
+
await touch(row.claimId);
|
|
205
|
+
continue;
|
|
206
|
+
}
|
|
207
|
+
const lost = await db
|
|
208
|
+
.update(apiCharges)
|
|
209
|
+
.set({ status: "failed", error: "settlement_lost" })
|
|
210
|
+
.where(and(eq(apiCharges.claimId, row.claimId), eq(apiCharges.status, "reserved")))
|
|
211
|
+
.returning({ claimId: apiCharges.claimId });
|
|
212
|
+
if (lost.length > 0) {
|
|
213
|
+
logger.error("payments.settlement-lost", { claimId: row.claimId });
|
|
214
|
+
// A paid-for claim whose payment is gone (header above): a person has to look.
|
|
215
|
+
await reportAlert(deps, "payments.settlement-lost", { claimId: row.claimId });
|
|
216
|
+
report.lost += 1;
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
await touch(row.claimId);
|
|
220
|
+
}
|
|
221
|
+
continue;
|
|
222
|
+
}
|
|
223
|
+
if (out.status === "skipped") {
|
|
224
|
+
// An outage or an unexpected answer: settle.ts logged it.
|
|
225
|
+
await touch(row.claimId);
|
|
226
|
+
left -= 1;
|
|
227
|
+
if (left <= 0)
|
|
228
|
+
break;
|
|
229
|
+
continue;
|
|
230
|
+
}
|
|
231
|
+
report.resettled += 1;
|
|
232
|
+
if (out.status === "paid")
|
|
233
|
+
report.paid += 1;
|
|
234
|
+
else if (out.status === "settled")
|
|
235
|
+
report.pending += 1;
|
|
236
|
+
else if (out.status === "released")
|
|
237
|
+
report.released += 1;
|
|
238
|
+
else
|
|
239
|
+
report.failed += 1;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
export async function watchBalances(deps, now = new Date()) {
|
|
243
|
+
const { db, logger, cache } = deps;
|
|
244
|
+
const after = await cache.get(WATCH_CURSOR);
|
|
245
|
+
const sources = await db
|
|
246
|
+
.select({
|
|
247
|
+
sourceId: apiSources.sourceId,
|
|
248
|
+
name: apiSources.name,
|
|
249
|
+
contactEmail: apiSources.contactEmail,
|
|
250
|
+
ownerDid: apiSources.ownerDid,
|
|
251
|
+
floorCents: apiSources.refillFloorCents,
|
|
252
|
+
balanceLowAt: apiSources.balanceLowAt,
|
|
253
|
+
})
|
|
254
|
+
.from(apiSources)
|
|
255
|
+
.where(and(eq(apiSources.status, "active"), isNotNull(apiSources.refillFloorCents), after ? gt(apiSources.sourceId, after) : undefined))
|
|
256
|
+
.orderBy(asc(apiSources.sourceId))
|
|
257
|
+
.limit(WATCH_BATCH);
|
|
258
|
+
const facilitator = createFacilitatorClient(deps);
|
|
259
|
+
const keepGoing = failureBudget(logger, "balance");
|
|
260
|
+
for (const s of sources) {
|
|
261
|
+
const floorCents = s.floorCents;
|
|
262
|
+
let balanceCents;
|
|
263
|
+
try {
|
|
264
|
+
const available = await facilitator.availableUpay(s.ownerDid);
|
|
265
|
+
// Not yet a payer of this oracle: nothing to watch until its first paid claim.
|
|
266
|
+
if (available === null)
|
|
267
|
+
continue;
|
|
268
|
+
balanceCents = upayToCents(available);
|
|
269
|
+
}
|
|
270
|
+
catch (err) {
|
|
271
|
+
// Unreachable: this page again next run (the cursor has not moved).
|
|
272
|
+
if (!keepGoing(err, { sourceId: s.sourceId }))
|
|
273
|
+
return;
|
|
274
|
+
continue;
|
|
275
|
+
}
|
|
276
|
+
if (balanceCents < floorCents) {
|
|
277
|
+
const low = { balanceCents, floorCents, at: now };
|
|
278
|
+
if (s.balanceLowAt) {
|
|
279
|
+
// Still low: only the email repeats — today's key makes it one a UTC day, and a send that
|
|
280
|
+
// failed earlier today is taken over here. The webhook stays once per crossing.
|
|
281
|
+
if (s.contactEmail)
|
|
282
|
+
await emailBalanceLow(deps, s, low);
|
|
283
|
+
continue;
|
|
284
|
+
}
|
|
285
|
+
// The NULL guard makes the crossing one write, whoever else is watching.
|
|
286
|
+
const crossed = await db
|
|
287
|
+
.update(apiSources)
|
|
288
|
+
.set({ balanceLowAt: now })
|
|
289
|
+
.where(and(eq(apiSources.sourceId, s.sourceId), isNull(apiSources.balanceLowAt)))
|
|
290
|
+
.returning({ sourceId: apiSources.sourceId });
|
|
291
|
+
if (crossed.length > 0) {
|
|
292
|
+
await emitBalanceLow(db, {
|
|
293
|
+
sourceId: s.sourceId,
|
|
294
|
+
balanceCents,
|
|
295
|
+
floorCents,
|
|
296
|
+
crossedAt: now,
|
|
297
|
+
});
|
|
298
|
+
// Fail-soft (never throws): an email that did not land never holds up the watch.
|
|
299
|
+
await emailBalanceLow(deps, s, low);
|
|
300
|
+
logger.info("payments.balance-low", { sourceId: s.sourceId, balanceCents, floorCents });
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
else if (s.balanceLowAt) {
|
|
304
|
+
await db
|
|
305
|
+
.update(apiSources)
|
|
306
|
+
.set({ balanceLowAt: null })
|
|
307
|
+
.where(eq(apiSources.sourceId, s.sourceId));
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
// A short page wraps around to the first source next run.
|
|
311
|
+
const last = sources.at(-1);
|
|
312
|
+
if (last && sources.length === WATCH_BATCH)
|
|
313
|
+
await cache.put(WATCH_CURSOR, last.sourceId);
|
|
314
|
+
else
|
|
315
|
+
await cache.delete(WATCH_CURSOR);
|
|
316
|
+
}
|
|
317
|
+
//# sourceMappingURL=reconcile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reconcile.js","sourceRoot":"","sources":["../../../src/lib/payments/reconcile.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A card payment's refund on the claim's charge row (S3/S6: the console must not offer Refund
|
|
3
|
+
* twice). Read from the facilitator — `GET /v1/card/refunds/:claimId`, the Stripe refunds it has
|
|
4
|
+
* for the claim — never on the console's word. PAY has no refund: its transfer is final.
|
|
5
|
+
*
|
|
6
|
+
* - `refreshRefund`: one claim, now (S3's refresh route).
|
|
7
|
+
* - `refreshRefunds`: the reconcile's arm — card charges paid in the last REFUND_WINDOW_DAYS,
|
|
8
|
+
* each asked again at most every REFUND_RECHECK_MS, REFUND_BATCH per run; so a refund made
|
|
9
|
+
* anywhere (the console, the operator's Stripe dashboard, a dispute) lands unasked.
|
|
10
|
+
*
|
|
11
|
+
* `refunded` when what was refunded (succeeded + pending) covers the claim's own cents, else
|
|
12
|
+
* `partially_refunded`; nothing refunded (none, or a refund canceled or failed) is `paid` again.
|
|
13
|
+
*/
|
|
14
|
+
import type { SettleDeps } from "./settle.js";
|
|
15
|
+
/** A card payment can be refunded or disputed for months: Stripe's dispute window is 120 days. */
|
|
16
|
+
export declare const REFUND_WINDOW_DAYS = 120;
|
|
17
|
+
export declare const REFUND_RECHECK_MS: number;
|
|
18
|
+
export declare const REFUND_BATCH = 25;
|
|
19
|
+
export type RefundOutcome = {
|
|
20
|
+
status: "refunded" | "partially_refunded";
|
|
21
|
+
refundedAmountCents: number;
|
|
22
|
+
} | {
|
|
23
|
+
status: "paid";
|
|
24
|
+
} | {
|
|
25
|
+
status: "skipped";
|
|
26
|
+
reason: "no_charge" | "not_card" | "not_paid" | "unknown_to_facilitator";
|
|
27
|
+
};
|
|
28
|
+
export declare function refreshRefund(deps: SettleDeps, claimId: string, now?: Date): Promise<RefundOutcome>;
|
|
29
|
+
/** The reconcile's refund arm (see the top). Returns how many charges it asked about. */
|
|
30
|
+
export declare function refreshRefunds(deps: SettleDeps, now?: Date, batch?: number): Promise<{
|
|
31
|
+
checked: number;
|
|
32
|
+
refunded: number;
|
|
33
|
+
}>;
|
|
34
|
+
//# sourceMappingURL=refund.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refund.d.ts","sourceRoot":"","sources":["../../../src/lib/payments/refund.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAG3C,kGAAkG;AAClG,eAAO,MAAM,kBAAkB,MAAM,CAAC;AACtC,eAAO,MAAM,iBAAiB,QAAc,CAAC;AAC7C,eAAO,MAAM,YAAY,KAAK,CAAC;AAK/B,MAAM,MAAM,aAAa,GACrB;IAAE,MAAM,EAAE,UAAU,GAAG,oBAAoB,CAAC;IAAC,mBAAmB,EAAE,MAAM,CAAA;CAAE,GAC1E;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAClB;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,WAAW,GAAG,UAAU,GAAG,UAAU,GAAG,wBAAwB,CAAA;CAAE,CAAC;AAEpG,wBAAsB,aAAa,CACjC,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,MAAM,EACf,GAAG,OAAa,GACf,OAAO,CAAC,aAAa,CAAC,CAiExB;AAED,yFAAyF;AACzF,wBAAsB,cAAc,CAClC,IAAI,EAAE,UAAU,EAChB,GAAG,OAAa,EAChB,KAAK,SAAe,GACnB,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CA2ChD"}
|