@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 @@
|
|
|
1
|
+
{"version":3,"file":"approvals.js","sourceRoot":"","sources":["../../../src/lib/oauth/approvals.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-approve ("don't ask again", spec 2026-10-06 "Auto-approve"; S7): a grant's standing payment
|
|
3
|
+
* authority, `mcp_standing`. AuthHub — and only AuthHub, on its own pages — sets it (with an
|
|
4
|
+
* approval, or a PUT) and revokes it; the oracle spends from it. A grant is one app on this oracle,
|
|
5
|
+
* so one standing covers every source the user submits for through that app — intended: the user
|
|
6
|
+
* set the limits for the app, not per source.
|
|
7
|
+
*
|
|
8
|
+
* Unlike a one-claim approval (`approvals.ts`, maxAmount EXACTLY the price), the delegation here
|
|
9
|
+
* covers many claims: its `maxAmount` must EQUAL `totalUpay`, each claim may cost at most
|
|
10
|
+
* `perClaimUpay`, and it must outlive `until` (AuthHub signs until + 30 d + 600 s, for review
|
|
11
|
+
* holds). The facilitator enforces the delegation's total as well, since spend counts across offers.
|
|
12
|
+
* The oracle holds the same bounds AuthHub does: a total of at most $100, an end at most 7 days out.
|
|
13
|
+
*
|
|
14
|
+
* Accounting (S3 review of #87): `totalUpay` is THIS auto-approve's total across every delegation
|
|
15
|
+
* AuthHub signs for it, so `spentUpay` is never reset — a PUT must leave `totalUpay ≥ spentUpay`,
|
|
16
|
+
* and what is left is `totalUpay − spentUpay`. Every spend is one `db.batch`: the request's lock
|
|
17
|
+
* row (`mcp_standing_spends`) and the conditional `spentUpay` update that lands only if that lock
|
|
18
|
+
* did, within the per-claim cap, the total, `until`, and the grant's daily cap summed over the lock
|
|
19
|
+
* rows — so concurrent submits can never exceed the total or the day's cap, and a retry of the same
|
|
20
|
+
* request never spends twice. A refund (proven nothing reserved) gives the price back and deletes
|
|
21
|
+
* the lock, in one batch. `mcp_standing_spends` is the grant's ONE day counter: it also holds the
|
|
22
|
+
* one-claim approvals' spends (`approvals.ts` `spendApproval`) and each answer's marker
|
|
23
|
+
* (`answer:<id>`, 0 upay), so the $20/day cap is atomic across both paths.
|
|
24
|
+
*/
|
|
25
|
+
import type { Database } from "../../db/client.js";
|
|
26
|
+
import { AppError } from "../errors.js";
|
|
27
|
+
import { type DelegationRefusal } from "./approvals.js";
|
|
28
|
+
/**
|
|
29
|
+
* Company authority D8 (F13): a standing approval leaves the user's spending authority on THIS
|
|
30
|
+
* operator's server, so only an oracle whose config says `allowStandingApprovals` (IXO's own) takes
|
|
31
|
+
* one. Off ⇒ none is set (`standingApprovalsOff`), none is read back (`GET` is 404), a standing
|
|
32
|
+
* already stored never pays — every submit falls to the user's approval of that one claim, and a
|
|
33
|
+
* card payment one parked for 3-D Secure is not resumed — and the housekeeping sweep deletes every
|
|
34
|
+
* stored one. Read per request — the config is the isolate's, and a redeploy that turns it off
|
|
35
|
+
* takes effect on the next submit.
|
|
36
|
+
*/
|
|
37
|
+
export declare const standingApprovalsAllowed: () => boolean;
|
|
38
|
+
export declare const standingApprovalsOff: () => AppError;
|
|
39
|
+
/** The limits AuthHub sends, upay strings and unix seconds — its wire shape. */
|
|
40
|
+
export interface StandingLimits {
|
|
41
|
+
perClaimUpay: string;
|
|
42
|
+
totalUpay: string;
|
|
43
|
+
until: number;
|
|
44
|
+
}
|
|
45
|
+
/** AuthHub's own bounds (`OAUTH_MAX_STANDING_UPAY`, 7 days), held here too. */
|
|
46
|
+
export declare const MAX_STANDING_UPAY = 100000000n;
|
|
47
|
+
/**
|
|
48
|
+
* Why `delegation` cannot be this grant's standing authority, or null. The one-claim checks
|
|
49
|
+
* (issuer, oracle, facilitator, unexpired) with `maxAmount` = `totalUpay`, plus the bounds — a
|
|
50
|
+
* per-claim cap within the total, a total of at most $100, `until` ahead and at most 7 days out,
|
|
51
|
+
* the delegation outliving it — and, with an approval, the claim's price within the per-claim cap.
|
|
52
|
+
*/
|
|
53
|
+
export declare function standingRefusal(delegation: string, limits: StandingLimits, expect: {
|
|
54
|
+
did: string;
|
|
55
|
+
oracleDid: string;
|
|
56
|
+
facilitatorDid: string;
|
|
57
|
+
claimUpay?: string;
|
|
58
|
+
}, now?: number): Promise<DelegationRefusal | null>;
|
|
59
|
+
/**
|
|
60
|
+
* Set the grant's standing authority, adding `spentUpay` (the approved claim's price with an
|
|
61
|
+
* approval, 0 for a PUT) to what it has spent — never resetting it. Refused (false) when the new
|
|
62
|
+
* total would not cover what is spent.
|
|
63
|
+
*/
|
|
64
|
+
export declare function setStanding(db: Database, grantId: string, did: string, limits: StandingLimits, delegation: string, spentUpay: number): Promise<boolean>;
|
|
65
|
+
/**
|
|
66
|
+
* Approve a pending approval AND, with limits, set the grant's standing — ONE batch in which the
|
|
67
|
+
* answer that wins is decided FIRST (S3 review of #90, A + B). Every answer, with limits or without,
|
|
68
|
+
* claims the approval's one marker row (`answer:<id>`, keyed by the PK, 0 upay, outside the day's
|
|
69
|
+
* count) carrying its own `answerId`; the marker lands only while the approval is still pending and
|
|
70
|
+
* unexpired and — with limits — only if the new total covers what this auto-approve has already
|
|
71
|
+
* spent plus this claim. The flip and the standing write both require THIS answer's marker. So:
|
|
72
|
+
* - two answers at once (twins, or one without limits racing one with): the PK lets exactly one
|
|
73
|
+
* marker in; the other answer changes nothing — no flip, no standing, no double count;
|
|
74
|
+
* - limits that would not cover what is spent: no marker, no flip — the approval stays pending
|
|
75
|
+
* and the answer is refused (`overSpent`), never "refused" while the claim went live.
|
|
76
|
+
* `approved` = this answer flipped it; `pending` = it is still pending (so a refusal, not a race).
|
|
77
|
+
*/
|
|
78
|
+
export declare function approveWithStanding(db: Database, approval: {
|
|
79
|
+
id: string;
|
|
80
|
+
grantId: string;
|
|
81
|
+
did: string;
|
|
82
|
+
delegation: string | null;
|
|
83
|
+
}, standing: {
|
|
84
|
+
limits: StandingLimits;
|
|
85
|
+
delegation: string;
|
|
86
|
+
spentUpay: number;
|
|
87
|
+
} | null, expiresAt: Date, now?: Date): Promise<{
|
|
88
|
+
approved: boolean;
|
|
89
|
+
pending: boolean;
|
|
90
|
+
}>;
|
|
91
|
+
/** The grant's live standing (unrevoked, before `until`), or undefined. */
|
|
92
|
+
export declare const liveStanding: (db: Database, grantId: string, now?: Date) => import("drizzle-orm/sqlite-core/query-builders/query").SQLiteRelationalQuery<"async", {
|
|
93
|
+
delegation: string | null;
|
|
94
|
+
did: string;
|
|
95
|
+
grantId: string;
|
|
96
|
+
perClaimUpay: number;
|
|
97
|
+
spentUpay: number;
|
|
98
|
+
totalUpay: number;
|
|
99
|
+
until: Date;
|
|
100
|
+
updatedAt: Date;
|
|
101
|
+
} | undefined>;
|
|
102
|
+
/** Whose grant this is, as far as this oracle has seen it: its standing, else an approval. */
|
|
103
|
+
export declare function grantDid(db: Database, grantId: string): Promise<string | undefined>;
|
|
104
|
+
/**
|
|
105
|
+
* Revoke: the row goes, delegation and all, and so does every standing delegation an approval of
|
|
106
|
+
* the grant still holds — an approve-with-limits claim, one parked for 3-D Secure — whichever
|
|
107
|
+
* delegation it was (a PUT may have replaced it since): expired if live, nulled if spent. A
|
|
108
|
+
* standing copy is told from a one-claim approval's own by its amount: a one-claim delegation is
|
|
109
|
+
* for exactly the claim's price (F1), a standing one for the total. A standing whose total equals
|
|
110
|
+
* that one price is indistinguishable and survives — benign (S3): it can pay at most the one claim
|
|
111
|
+
* the user just approved. `false` when the row is another user's. The read-then-batch window is
|
|
112
|
+
* tolerable: a spend racing a revoke can at most be one the user had already allowed.
|
|
113
|
+
*/
|
|
114
|
+
/**
|
|
115
|
+
* Whether an approval row's delegation is a copy of the grant's standing rather than the claim's
|
|
116
|
+
* own: a one-claim delegation is for exactly the claim's price (F1), a standing one for the total.
|
|
117
|
+
* One that does not parse is counted a copy — the side that never pays from it.
|
|
118
|
+
*/
|
|
119
|
+
export declare function isStandingCopy(delegation: string, maxAmountUpay: string): Promise<boolean>;
|
|
120
|
+
export declare function revokeStanding(db: Database, grantId: string, did: string): Promise<boolean>;
|
|
121
|
+
/**
|
|
122
|
+
* Take `upay` from the grant's standing for ONE request — one batch whose two statements test the
|
|
123
|
+
* SAME conditions: the request's lock row is written only if the price fits (per-claim, total,
|
|
124
|
+
* `until`, the grant's day), and the spend lands only if that lock is this attempt's. So nothing
|
|
125
|
+
* is written when it does not fit — no lock to clean up, whatever happens to the isolate.
|
|
126
|
+
* - `locked`: this request already spent (a retry): never spend or pay again;
|
|
127
|
+
* - null: it does not fit (or there is no live standing): ask the user;
|
|
128
|
+
* - else the delegation to pay with, what is left, and the lock's id (for a refund).
|
|
129
|
+
* An exhausted standing (`spentUpay` = `totalUpay`) or one past `until` approves nothing, free
|
|
130
|
+
* claims included.
|
|
131
|
+
*/
|
|
132
|
+
export declare function spendStanding(db: Database, spend: {
|
|
133
|
+
grantId: string;
|
|
134
|
+
did: string;
|
|
135
|
+
requestDigest: string;
|
|
136
|
+
upay: number;
|
|
137
|
+
}, now?: Date): Promise<{
|
|
138
|
+
delegation: string;
|
|
139
|
+
remainingUpay: number;
|
|
140
|
+
spendId: string;
|
|
141
|
+
} | "locked" | null>;
|
|
142
|
+
/**
|
|
143
|
+
* Proven nothing reserved: give `upay` back — to the delegation it was spent from only (a PUT in
|
|
144
|
+
* between keeps the count, conservatively) — and release THIS spend's lock, in one batch.
|
|
145
|
+
*/
|
|
146
|
+
export declare function refundStanding(db: Database, spend: {
|
|
147
|
+
grantId: string;
|
|
148
|
+
spendId: string;
|
|
149
|
+
delegation: string;
|
|
150
|
+
upay: number;
|
|
151
|
+
}): Promise<void>;
|
|
152
|
+
//# sourceMappingURL=standing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standing.d.ts","sourceRoot":"","sources":["../../../src/lib/oauth/standing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-approve ("don't ask again", spec 2026-10-06 "Auto-approve"; S7): a grant's standing payment
|
|
3
|
+
* authority, `mcp_standing`. AuthHub — and only AuthHub, on its own pages — sets it (with an
|
|
4
|
+
* approval, or a PUT) and revokes it; the oracle spends from it. A grant is one app on this oracle,
|
|
5
|
+
* so one standing covers every source the user submits for through that app — intended: the user
|
|
6
|
+
* set the limits for the app, not per source.
|
|
7
|
+
*
|
|
8
|
+
* Unlike a one-claim approval (`approvals.ts`, maxAmount EXACTLY the price), the delegation here
|
|
9
|
+
* covers many claims: its `maxAmount` must EQUAL `totalUpay`, each claim may cost at most
|
|
10
|
+
* `perClaimUpay`, and it must outlive `until` (AuthHub signs until + 30 d + 600 s, for review
|
|
11
|
+
* holds). The facilitator enforces the delegation's total as well, since spend counts across offers.
|
|
12
|
+
* The oracle holds the same bounds AuthHub does: a total of at most $100, an end at most 7 days out.
|
|
13
|
+
*
|
|
14
|
+
* Accounting (S3 review of #87): `totalUpay` is THIS auto-approve's total across every delegation
|
|
15
|
+
* AuthHub signs for it, so `spentUpay` is never reset — a PUT must leave `totalUpay ≥ spentUpay`,
|
|
16
|
+
* and what is left is `totalUpay − spentUpay`. Every spend is one `db.batch`: the request's lock
|
|
17
|
+
* row (`mcp_standing_spends`) and the conditional `spentUpay` update that lands only if that lock
|
|
18
|
+
* did, within the per-claim cap, the total, `until`, and the grant's daily cap summed over the lock
|
|
19
|
+
* rows — so concurrent submits can never exceed the total or the day's cap, and a retry of the same
|
|
20
|
+
* request never spends twice. A refund (proven nothing reserved) gives the price back and deletes
|
|
21
|
+
* the lock, in one batch. `mcp_standing_spends` is the grant's ONE day counter: it also holds the
|
|
22
|
+
* one-claim approvals' spends (`approvals.ts` `spendApproval`) and each answer's marker
|
|
23
|
+
* (`answer:<id>`, 0 upay), so the $20/day cap is atomic across both paths.
|
|
24
|
+
*/
|
|
25
|
+
import { parsePaymentDelegation } from "@ixo/x402-ixo-pay";
|
|
26
|
+
import { and, eq, gt, inArray, lte, sql } from "drizzle-orm";
|
|
27
|
+
import { mcpApprovals, mcpStanding, mcpStandingSpends } from "../../db/schema.js";
|
|
28
|
+
import { getOracle } from "../../oracle.js";
|
|
29
|
+
import { AppError } from "../errors.js";
|
|
30
|
+
import { delegationRefusal, GRANT_CAP_UPAY, spentToday } from "./approvals.js";
|
|
31
|
+
/**
|
|
32
|
+
* Company authority D8 (F13): a standing approval leaves the user's spending authority on THIS
|
|
33
|
+
* operator's server, so only an oracle whose config says `allowStandingApprovals` (IXO's own) takes
|
|
34
|
+
* one. Off ⇒ none is set (`standingApprovalsOff`), none is read back (`GET` is 404), a standing
|
|
35
|
+
* already stored never pays — every submit falls to the user's approval of that one claim, and a
|
|
36
|
+
* card payment one parked for 3-D Secure is not resumed — and the housekeeping sweep deletes every
|
|
37
|
+
* stored one. Read per request — the config is the isolate's, and a redeploy that turns it off
|
|
38
|
+
* takes effect on the next submit.
|
|
39
|
+
*/
|
|
40
|
+
export const standingApprovalsAllowed = () => getOracle().config.policies.allowStandingApprovals;
|
|
41
|
+
export const standingApprovalsOff = () => new AppError("This oracle does not accept auto-approve (standing approvals): the user approves each claim.", { code: "FORBIDDEN", details: { reason: "standing_approvals_off" } });
|
|
42
|
+
/** AuthHub's own bounds (`OAUTH_MAX_STANDING_UPAY`, 7 days), held here too. */
|
|
43
|
+
export const MAX_STANDING_UPAY = 100000000n;
|
|
44
|
+
const MAX_STANDING_SEC = 7 * 86_400;
|
|
45
|
+
/** Clock skew allowed on `until` against AuthHub's "at most 7 days". */
|
|
46
|
+
const UNTIL_SKEW_SEC = 300;
|
|
47
|
+
/**
|
|
48
|
+
* Why `delegation` cannot be this grant's standing authority, or null. The one-claim checks
|
|
49
|
+
* (issuer, oracle, facilitator, unexpired) with `maxAmount` = `totalUpay`, plus the bounds — a
|
|
50
|
+
* per-claim cap within the total, a total of at most $100, `until` ahead and at most 7 days out,
|
|
51
|
+
* the delegation outliving it — and, with an approval, the claim's price within the per-claim cap.
|
|
52
|
+
*/
|
|
53
|
+
export async function standingRefusal(delegation, limits, expect, now = Math.floor(Date.now() / 1000)) {
|
|
54
|
+
const per = BigInt(limits.perClaimUpay);
|
|
55
|
+
const total = BigInt(limits.totalUpay);
|
|
56
|
+
if (per <= 0n || per > total || total > MAX_STANDING_UPAY) {
|
|
57
|
+
return {
|
|
58
|
+
reason: "limits_invalid",
|
|
59
|
+
message: "the per-claim cap must be positive and within the total, and the total at most $100",
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
if (limits.until <= now || limits.until > now + MAX_STANDING_SEC + UNTIL_SKEW_SEC) {
|
|
63
|
+
return { reason: "limits_invalid", message: "it must end in the next 7 days" };
|
|
64
|
+
}
|
|
65
|
+
if (expect.claimUpay !== undefined && BigInt(expect.claimUpay) > per) {
|
|
66
|
+
return { reason: "limits_invalid", message: "this claim costs more than the per-claim cap" };
|
|
67
|
+
}
|
|
68
|
+
return delegationRefusal(delegation, { did: expect.did, maxAmountUpay: limits.totalUpay }, { ...expect, validUntil: limits.until }, now);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Set the grant's standing authority, adding `spentUpay` (the approved claim's price with an
|
|
72
|
+
* approval, 0 for a PUT) to what it has spent — never resetting it. Refused (false) when the new
|
|
73
|
+
* total would not cover what is spent.
|
|
74
|
+
*/
|
|
75
|
+
export async function setStanding(db, grantId, did, limits, delegation, spentUpay) {
|
|
76
|
+
const row = {
|
|
77
|
+
grantId,
|
|
78
|
+
did,
|
|
79
|
+
perClaimUpay: Number(limits.perClaimUpay),
|
|
80
|
+
totalUpay: Number(limits.totalUpay),
|
|
81
|
+
spentUpay,
|
|
82
|
+
until: new Date(limits.until * 1000),
|
|
83
|
+
delegation,
|
|
84
|
+
updatedAt: new Date(),
|
|
85
|
+
};
|
|
86
|
+
if (row.spentUpay > row.totalUpay)
|
|
87
|
+
return false;
|
|
88
|
+
const set = await db
|
|
89
|
+
.insert(mcpStanding)
|
|
90
|
+
.values(row)
|
|
91
|
+
.onConflictDoUpdate({
|
|
92
|
+
target: mcpStanding.grantId,
|
|
93
|
+
set: {
|
|
94
|
+
did: row.did,
|
|
95
|
+
perClaimUpay: row.perClaimUpay,
|
|
96
|
+
totalUpay: row.totalUpay,
|
|
97
|
+
until: row.until,
|
|
98
|
+
updatedAt: row.updatedAt,
|
|
99
|
+
spentUpay: sql `${mcpStanding.spentUpay} + ${spentUpay}`,
|
|
100
|
+
delegation,
|
|
101
|
+
},
|
|
102
|
+
setWhere: sql `${mcpStanding.spentUpay} + ${spentUpay} <= ${row.totalUpay}`,
|
|
103
|
+
})
|
|
104
|
+
.returning({ grantId: mcpStanding.grantId });
|
|
105
|
+
return set.length === 1;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Approve a pending approval AND, with limits, set the grant's standing — ONE batch in which the
|
|
109
|
+
* answer that wins is decided FIRST (S3 review of #90, A + B). Every answer, with limits or without,
|
|
110
|
+
* claims the approval's one marker row (`answer:<id>`, keyed by the PK, 0 upay, outside the day's
|
|
111
|
+
* count) carrying its own `answerId`; the marker lands only while the approval is still pending and
|
|
112
|
+
* unexpired and — with limits — only if the new total covers what this auto-approve has already
|
|
113
|
+
* spent plus this claim. The flip and the standing write both require THIS answer's marker. So:
|
|
114
|
+
* - two answers at once (twins, or one without limits racing one with): the PK lets exactly one
|
|
115
|
+
* marker in; the other answer changes nothing — no flip, no standing, no double count;
|
|
116
|
+
* - limits that would not cover what is spent: no marker, no flip — the approval stays pending
|
|
117
|
+
* and the answer is refused (`overSpent`), never "refused" while the claim went live.
|
|
118
|
+
* `approved` = this answer flipped it; `pending` = it is still pending (so a refusal, not a race).
|
|
119
|
+
*/
|
|
120
|
+
export async function approveWithStanding(db, approval, standing, expiresAt, now = new Date()) {
|
|
121
|
+
const answerId = crypto.randomUUID();
|
|
122
|
+
const markerKey = `answer:${approval.id}`;
|
|
123
|
+
const pending = and(eq(mcpApprovals.id, approval.id), eq(mcpApprovals.status, "pending"), gt(mcpApprovals.expiresAt, now));
|
|
124
|
+
// Exactly this answer's marker, looked up by the PK (grant, key) — never a scan by spendId.
|
|
125
|
+
const mine = sql `exists (select 1 from ${mcpStandingSpends} where ${mcpStandingSpends.grantId} = ${approval.grantId} and ${mcpStandingSpends.requestDigest} = ${markerKey} and ${mcpStandingSpends.spendId} = ${answerId})`;
|
|
126
|
+
const per = standing ? Number(standing.limits.perClaimUpay) : 0;
|
|
127
|
+
const total = standing ? Number(standing.limits.totalUpay) : 0;
|
|
128
|
+
const spentUpay = standing?.spentUpay ?? 0;
|
|
129
|
+
// B: the new total must cover what this auto-approve has spent plus this claim — else no marker.
|
|
130
|
+
const covers = standing
|
|
131
|
+
? sql `${spentUpay} <= ${total} and not exists (select 1 from ${mcpStanding} where ${mcpStanding.grantId} = ${approval.grantId} and ${mcpStanding.spentUpay} + ${spentUpay} > ${total})`
|
|
132
|
+
: sql `1`;
|
|
133
|
+
const marker = db
|
|
134
|
+
.insert(mcpStandingSpends)
|
|
135
|
+
.select(sql `select ${approval.grantId}, ${markerKey}, ${answerId}, 0, ${now.getTime()} where exists (select 1 from ${mcpApprovals} where ${pending}) and ${covers}`)
|
|
136
|
+
.onConflictDoNothing();
|
|
137
|
+
const flip = db
|
|
138
|
+
.update(mcpApprovals)
|
|
139
|
+
.set({ status: "approved", delegation: approval.delegation, expiresAt })
|
|
140
|
+
.where(and(pending, mine))
|
|
141
|
+
.returning({ id: mcpApprovals.id });
|
|
142
|
+
let flipped;
|
|
143
|
+
if (!standing) {
|
|
144
|
+
[, flipped] = await db.batch([marker, flip]);
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
const { limits, delegation } = standing;
|
|
148
|
+
const until = limits.until * 1000;
|
|
149
|
+
[, flipped] = await db.batch([
|
|
150
|
+
marker,
|
|
151
|
+
flip,
|
|
152
|
+
db
|
|
153
|
+
.insert(mcpStanding)
|
|
154
|
+
.select(sql `select ${approval.grantId}, ${approval.did}, ${per}, ${total}, ${spentUpay}, ${until}, ${delegation}, ${now.getTime()} where ${mine}`)
|
|
155
|
+
.onConflictDoUpdate({
|
|
156
|
+
target: mcpStanding.grantId,
|
|
157
|
+
set: {
|
|
158
|
+
did: approval.did,
|
|
159
|
+
perClaimUpay: per,
|
|
160
|
+
totalUpay: total,
|
|
161
|
+
until: new Date(until),
|
|
162
|
+
updatedAt: now,
|
|
163
|
+
spentUpay: sql `${mcpStanding.spentUpay} + ${spentUpay}`,
|
|
164
|
+
delegation,
|
|
165
|
+
},
|
|
166
|
+
// Already guaranteed by the marker's `covers`; kept so this write can never overspend.
|
|
167
|
+
setWhere: sql `${mcpStanding.spentUpay} + ${spentUpay} <= ${total}`,
|
|
168
|
+
}),
|
|
169
|
+
]);
|
|
170
|
+
}
|
|
171
|
+
if (flipped.length === 1)
|
|
172
|
+
return { approved: true, pending: false };
|
|
173
|
+
const still = await db.query.mcpApprovals.findFirst({ columns: { id: true }, where: pending });
|
|
174
|
+
return { approved: false, pending: still !== undefined };
|
|
175
|
+
}
|
|
176
|
+
/** The grant's live standing (unrevoked, before `until`), or undefined. */
|
|
177
|
+
export const liveStanding = (db, grantId, now = new Date()) => db.query.mcpStanding.findFirst({
|
|
178
|
+
where: and(eq(mcpStanding.grantId, grantId), gt(mcpStanding.until, now), sql `${mcpStanding.delegation} is not null`),
|
|
179
|
+
});
|
|
180
|
+
/** Whose grant this is, as far as this oracle has seen it: its standing, else an approval. */
|
|
181
|
+
export async function grantDid(db, grantId) {
|
|
182
|
+
const standing = await db.query.mcpStanding.findFirst({
|
|
183
|
+
columns: { did: true },
|
|
184
|
+
where: eq(mcpStanding.grantId, grantId),
|
|
185
|
+
});
|
|
186
|
+
if (standing)
|
|
187
|
+
return standing.did;
|
|
188
|
+
const approval = await db.query.mcpApprovals.findFirst({
|
|
189
|
+
columns: { did: true },
|
|
190
|
+
where: eq(mcpApprovals.grantId, grantId),
|
|
191
|
+
});
|
|
192
|
+
return approval?.did;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Revoke: the row goes, delegation and all, and so does every standing delegation an approval of
|
|
196
|
+
* the grant still holds — an approve-with-limits claim, one parked for 3-D Secure — whichever
|
|
197
|
+
* delegation it was (a PUT may have replaced it since): expired if live, nulled if spent. A
|
|
198
|
+
* standing copy is told from a one-claim approval's own by its amount: a one-claim delegation is
|
|
199
|
+
* for exactly the claim's price (F1), a standing one for the total. A standing whose total equals
|
|
200
|
+
* that one price is indistinguishable and survives — benign (S3): it can pay at most the one claim
|
|
201
|
+
* the user just approved. `false` when the row is another user's. The read-then-batch window is
|
|
202
|
+
* tolerable: a spend racing a revoke can at most be one the user had already allowed.
|
|
203
|
+
*/
|
|
204
|
+
/**
|
|
205
|
+
* Whether an approval row's delegation is a copy of the grant's standing rather than the claim's
|
|
206
|
+
* own: a one-claim delegation is for exactly the claim's price (F1), a standing one for the total.
|
|
207
|
+
* One that does not parse is counted a copy — the side that never pays from it.
|
|
208
|
+
*/
|
|
209
|
+
export async function isStandingCopy(delegation, maxAmountUpay) {
|
|
210
|
+
const parsed = await parsePaymentDelegation(delegation);
|
|
211
|
+
// Amounts compared as integers (as `delegationRefusal` does), never as strings.
|
|
212
|
+
return !parsed.ok || BigInt(parsed.delegation.maxAmount) !== BigInt(maxAmountUpay);
|
|
213
|
+
}
|
|
214
|
+
export async function revokeStanding(db, grantId, did) {
|
|
215
|
+
const row = await db.query.mcpStanding.findFirst({
|
|
216
|
+
columns: { did: true },
|
|
217
|
+
where: eq(mcpStanding.grantId, grantId),
|
|
218
|
+
});
|
|
219
|
+
if (row && row.did !== did)
|
|
220
|
+
return false;
|
|
221
|
+
const holding = await db.query.mcpApprovals.findMany({
|
|
222
|
+
columns: { id: true, status: true, delegation: true, maxAmountUpay: true },
|
|
223
|
+
where: and(eq(mcpApprovals.grantId, grantId), eq(mcpApprovals.did, did), inArray(mcpApprovals.status, ["approved", "awaiting_3ds", "used"]), sql `${mcpApprovals.delegation} is not null`),
|
|
224
|
+
});
|
|
225
|
+
const standingCopies = [];
|
|
226
|
+
for (const a of holding) {
|
|
227
|
+
if (await isStandingCopy(a.delegation, a.maxAmountUpay))
|
|
228
|
+
standingCopies.push(a.id);
|
|
229
|
+
}
|
|
230
|
+
const copies = and(eq(mcpApprovals.grantId, grantId), inArray(mcpApprovals.id, standingCopies));
|
|
231
|
+
await db.batch([
|
|
232
|
+
db.delete(mcpStanding).where(eq(mcpStanding.grantId, grantId)),
|
|
233
|
+
db
|
|
234
|
+
.update(mcpApprovals)
|
|
235
|
+
.set({ status: "expired", delegation: null })
|
|
236
|
+
.where(and(copies, inArray(mcpApprovals.status, ["approved", "awaiting_3ds"]))),
|
|
237
|
+
db.update(mcpApprovals).set({ delegation: null }).where(copies),
|
|
238
|
+
]);
|
|
239
|
+
return true;
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Take `upay` from the grant's standing for ONE request — one batch whose two statements test the
|
|
243
|
+
* SAME conditions: the request's lock row is written only if the price fits (per-claim, total,
|
|
244
|
+
* `until`, the grant's day), and the spend lands only if that lock is this attempt's. So nothing
|
|
245
|
+
* is written when it does not fit — no lock to clean up, whatever happens to the isolate.
|
|
246
|
+
* - `locked`: this request already spent (a retry): never spend or pay again;
|
|
247
|
+
* - null: it does not fit (or there is no live standing): ask the user;
|
|
248
|
+
* - else the delegation to pay with, what is left, and the lock's id (for a refund).
|
|
249
|
+
* An exhausted standing (`spentUpay` = `totalUpay`) or one past `until` approves nothing, free
|
|
250
|
+
* claims included.
|
|
251
|
+
*/
|
|
252
|
+
export async function spendStanding(db, spend, now = new Date()) {
|
|
253
|
+
const { grantId, did, requestDigest, upay } = spend;
|
|
254
|
+
const spendId = crypto.randomUUID();
|
|
255
|
+
const fits = sql `exists (select 1 from ${mcpStanding} where ${and(eq(mcpStanding.grantId, grantId), eq(mcpStanding.did, did), gt(mcpStanding.until, now), lte(sql `${upay}`, mcpStanding.perClaimUpay), sql `${mcpStanding.spentUpay} < ${mcpStanding.totalUpay}`, lte(sql `${mcpStanding.spentUpay} + ${upay}`, mcpStanding.totalUpay), sql `${mcpStanding.delegation} is not null`)}) and ${spentToday(grantId, now)} + ${upay} <= ${GRANT_CAP_UPAY}`;
|
|
256
|
+
const [, taken] = await db.batch([
|
|
257
|
+
db
|
|
258
|
+
.insert(mcpStandingSpends)
|
|
259
|
+
.select(sql `select ${grantId}, ${requestDigest}, ${spendId}, ${upay}, ${now.getTime()} where ${fits}`)
|
|
260
|
+
.onConflictDoNothing(),
|
|
261
|
+
db
|
|
262
|
+
.update(mcpStanding)
|
|
263
|
+
.set({ spentUpay: sql `${mcpStanding.spentUpay} + ${upay}` })
|
|
264
|
+
.where(and(eq(mcpStanding.grantId, grantId),
|
|
265
|
+
// Only if THIS attempt wrote the request's lock (which it did only if the price fit).
|
|
266
|
+
sql `exists (select 1 from ${mcpStandingSpends} where ${mcpStandingSpends.grantId} = ${grantId} and ${mcpStandingSpends.requestDigest} = ${requestDigest} and ${mcpStandingSpends.spendId} = ${spendId})`))
|
|
267
|
+
.returning({
|
|
268
|
+
delegation: mcpStanding.delegation,
|
|
269
|
+
totalUpay: mcpStanding.totalUpay,
|
|
270
|
+
spentUpay: mcpStanding.spentUpay,
|
|
271
|
+
}),
|
|
272
|
+
]);
|
|
273
|
+
const [row] = taken;
|
|
274
|
+
if (row?.delegation) {
|
|
275
|
+
return { delegation: row.delegation, remainingUpay: row.totalUpay - row.spentUpay, spendId };
|
|
276
|
+
}
|
|
277
|
+
const lock = await db.query.mcpStandingSpends.findFirst({
|
|
278
|
+
columns: { spendId: true },
|
|
279
|
+
where: and(eq(mcpStandingSpends.grantId, grantId), eq(mcpStandingSpends.requestDigest, requestDigest)),
|
|
280
|
+
});
|
|
281
|
+
return lock ? "locked" : null;
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Proven nothing reserved: give `upay` back — to the delegation it was spent from only (a PUT in
|
|
285
|
+
* between keeps the count, conservatively) — and release THIS spend's lock, in one batch.
|
|
286
|
+
*/
|
|
287
|
+
export async function refundStanding(db, spend) {
|
|
288
|
+
const { grantId, spendId, delegation, upay } = spend;
|
|
289
|
+
await db.batch([
|
|
290
|
+
db
|
|
291
|
+
.update(mcpStanding)
|
|
292
|
+
.set({ spentUpay: sql `${mcpStanding.spentUpay} - ${upay}` })
|
|
293
|
+
.where(and(eq(mcpStanding.grantId, grantId), eq(mcpStanding.delegation, delegation), sql `${mcpStanding.spentUpay} >= ${upay}`)),
|
|
294
|
+
db
|
|
295
|
+
.delete(mcpStandingSpends)
|
|
296
|
+
.where(and(eq(mcpStandingSpends.grantId, grantId), eq(mcpStandingSpends.spendId, spendId))),
|
|
297
|
+
]);
|
|
298
|
+
}
|
|
299
|
+
//# sourceMappingURL=standing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standing.js","sourceRoot":"","sources":["../../../src/lib/oauth/standing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAE7D,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAA0B,iBAAiB,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEpG;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAC;AAEjG,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,EAAE,CACvC,IAAI,QAAQ,CACV,8FAA8F,EAC9F,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,wBAAwB,EAAE,EAAE,CACrE,CAAC;AASJ,+EAA+E;AAC/E,MAAM,CAAC,MAAM,iBAAiB,GAAG,UAAY,CAAC;AAC9C,MAAM,gBAAgB,GAAG,CAAC,GAAG,MAAM,CAAC;AACpC,wEAAwE;AACxE,MAAM,cAAc,GAAG,GAAG,CAAC;AAE3B;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,UAAkB,EAClB,MAAsB,EACtB,MAAsF,EACtF,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;IAEnC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACvC,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,GAAG,KAAK,IAAI,KAAK,GAAG,iBAAiB,EAAE,CAAC;QAC1D,OAAO;YACL,MAAM,EAAE,gBAAgB;YACxB,OAAO,EACL,qFAAqF;SACxF,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,IAAI,GAAG,IAAI,MAAM,CAAC,KAAK,GAAG,GAAG,GAAG,gBAAgB,GAAG,cAAc,EAAE,CAAC;QAClF,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,gCAAgC,EAAE,CAAC;IACjF,CAAC;IACD,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,EAAE,CAAC;QACrE,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,8CAA8C,EAAE,CAAC;IAC/F,CAAC;IACD,OAAO,iBAAiB,CACtB,UAAU,EACV,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,aAAa,EAAE,MAAM,CAAC,SAAS,EAAE,EACpD,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,KAAK,EAAE,EACvC,GAAG,CACJ,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,EAAY,EACZ,OAAe,EACf,GAAW,EACX,MAAsB,EACtB,UAAkB,EAClB,SAAiB;IAEjB,MAAM,GAAG,GAAG;QACV,OAAO;QACP,GAAG;QACH,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;QACzC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;QACnC,SAAS;QACT,KAAK,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;QACpC,UAAU;QACV,SAAS,EAAE,IAAI,IAAI,EAAE;KACtB,CAAC;IACF,IAAI,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IAChD,MAAM,GAAG,GAAG,MAAM,EAAE;SACjB,MAAM,CAAC,WAAW,CAAC;SACnB,MAAM,CAAC,GAAG,CAAC;SACX,kBAAkB,CAAC;QAClB,MAAM,EAAE,WAAW,CAAC,OAAO;QAC3B,GAAG,EAAE;YACH,GAAG,EAAE,GAAG,CAAC,GAAG;YACZ,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,SAAS,EAAE,GAAG,CAAA,GAAG,WAAW,CAAC,SAAS,MAAM,SAAS,EAAE;YACvD,UAAU;SACX;QACD,QAAQ,EAAE,GAAG,CAAA,GAAG,WAAW,CAAC,SAAS,MAAM,SAAS,OAAO,GAAG,CAAC,SAAS,EAAE;KAC3E,CAAC;SACD,SAAS,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/C,OAAO,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,EAAY,EACZ,QAAiF,EACjF,QAAkF,EAClF,SAAe,EACf,GAAG,GAAG,IAAI,IAAI,EAAE;IAEhB,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;IACrC,MAAM,SAAS,GAAG,UAAU,QAAQ,CAAC,EAAE,EAAE,CAAC;IAC1C,MAAM,OAAO,GAAG,GAAG,CACjB,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,EAChC,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,EAClC,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,GAAG,CAAC,CAChC,CAAC;IACF,4FAA4F;IAC5F,MAAM,IAAI,GAAG,GAAG,CAAA,yBAAyB,iBAAiB,UAAU,iBAAiB,CAAC,OAAO,MAAM,QAAQ,CAAC,OAAO,QAAQ,iBAAiB,CAAC,aAAa,MAAM,SAAS,QAAQ,iBAAiB,CAAC,OAAO,MAAM,QAAQ,GAAG,CAAC;IAC5N,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,MAAM,SAAS,GAAG,QAAQ,EAAE,SAAS,IAAI,CAAC,CAAC;IAC3C,iGAAiG;IACjG,MAAM,MAAM,GAAG,QAAQ;QACrB,CAAC,CAAC,GAAG,CAAA,GAAG,SAAS,OAAO,KAAK,kCAAkC,WAAW,UAAU,WAAW,CAAC,OAAO,MAAM,QAAQ,CAAC,OAAO,QAAQ,WAAW,CAAC,SAAS,MAAM,SAAS,MAAM,KAAK,GAAG;QACvL,CAAC,CAAC,GAAG,CAAA,GAAG,CAAC;IACX,MAAM,MAAM,GAAG,EAAE;SACd,MAAM,CAAC,iBAAiB,CAAC;SACzB,MAAM,CACL,GAAG,CAAA,UAAU,QAAQ,CAAC,OAAO,KAAK,SAAS,KAAK,QAAQ,QAAQ,GAAG,CAAC,OAAO,EAAE,gCAAgC,YAAY,UAAU,OAAO,SAAS,MAAM,EAAE,CAC5J;SACA,mBAAmB,EAAE,CAAC;IACzB,MAAM,IAAI,GAAG,EAAE;SACZ,MAAM,CAAC,YAAY,CAAC;SACpB,GAAG,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,SAAS,EAAE,CAAC;SACvE,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;SACzB,SAAS,CAAC,EAAE,EAAE,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;IACtC,IAAI,OAAyB,CAAC;IAC9B,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,CAAC,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAC/C,CAAC;SAAM,CAAC;QACN,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,QAAQ,CAAC;QACxC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;QAClC,CAAC,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC;YAC3B,MAAM;YACN,IAAI;YACJ,EAAE;iBACC,MAAM,CAAC,WAAW,CAAC;iBACnB,MAAM,CACL,GAAG,CAAA,UAAU,QAAQ,CAAC,OAAO,KAAK,QAAQ,CAAC,GAAG,KAAK,GAAG,KAAK,KAAK,KAAK,SAAS,KAAK,KAAK,KAAK,UAAU,KAAK,GAAG,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAC1I;iBACA,kBAAkB,CAAC;gBAClB,MAAM,EAAE,WAAW,CAAC,OAAO;gBAC3B,GAAG,EAAE;oBACH,GAAG,EAAE,QAAQ,CAAC,GAAG;oBACjB,YAAY,EAAE,GAAG;oBACjB,SAAS,EAAE,KAAK;oBAChB,KAAK,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC;oBACtB,SAAS,EAAE,GAAG;oBACd,SAAS,EAAE,GAAG,CAAA,GAAG,WAAW,CAAC,SAAS,MAAM,SAAS,EAAE;oBACvD,UAAU;iBACX;gBACD,uFAAuF;gBACvF,QAAQ,EAAE,GAAG,CAAA,GAAG,WAAW,CAAC,SAAS,MAAM,SAAS,OAAO,KAAK,EAAE;aACnE,CAAC;SACL,CAAC,CAAC;IACL,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACpE,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IAC/F,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,KAAK,SAAS,EAAE,CAAC;AAC3D,CAAC;AAED,2EAA2E;AAC3E,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAAY,EAAE,OAAe,EAAE,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,CAC9E,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC;IAC7B,KAAK,EAAE,GAAG,CACR,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,EAChC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,EAC1B,GAAG,CAAA,GAAG,WAAW,CAAC,UAAU,cAAc,CAC3C;CACF,CAAC,CAAC;AAEL,8FAA8F;AAC9F,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,EAAY,EAAE,OAAe;IAC1D,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC;QACpD,OAAO,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;QACtB,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC;KACxC,CAAC,CAAC;IACH,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC,GAAG,CAAC;IAClC,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC;QACrD,OAAO,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;QACtB,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC;KACzC,CAAC,CAAC;IACH,OAAO,QAAQ,EAAE,GAAG,CAAC;AACvB,CAAC;AAED;;;;;;;;;GASG;AACH;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,UAAkB,EAAE,aAAqB;IAC5E,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,UAAU,CAAC,CAAC;IACxD,gFAAgF;IAChF,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,MAAM,CAAC,aAAa,CAAC,CAAC;AACrF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,EAAY,EAAE,OAAe,EAAE,GAAW;IAC7E,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC;QAC/C,OAAO,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;QACtB,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC;KACxC,CAAC,CAAC;IACH,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,KAAK,GAAG;QAAE,OAAO,KAAK,CAAC;IACzC,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC;QACnD,OAAO,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;QAC1E,KAAK,EAAE,GAAG,CACR,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,EACjC,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,EACzB,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC,EAClE,GAAG,CAAA,GAAG,YAAY,CAAC,UAAU,cAAc,CAC5C;KACF,CAAC,CAAC;IACH,MAAM,cAAc,GAAa,EAAE,CAAC;IACpC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,MAAM,cAAc,CAAC,CAAC,CAAC,UAAoB,EAAE,CAAC,CAAC,aAAa,CAAC;YAAE,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC/F,CAAC;IACD,MAAM,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC;IAChG,MAAM,EAAE,CAAC,KAAK,CAAC;QACb,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC9D,EAAE;aACC,MAAM,CAAC,YAAY,CAAC;aACpB,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;aAC5C,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;QACjF,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;KAChE,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,EAAY,EACZ,KAA4E,EAC5E,GAAG,GAAG,IAAI,IAAI,EAAE;IAEhB,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IACpD,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;IACpC,MAAM,IAAI,GAAG,GAAG,CAAA,yBAAyB,WAAW,UAAU,GAAG,CAC/D,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,EAChC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,EACxB,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,EAC1B,GAAG,CAAC,GAAG,CAAA,GAAG,IAAI,EAAE,EAAE,WAAW,CAAC,YAAY,CAAC,EAC3C,GAAG,CAAA,GAAG,WAAW,CAAC,SAAS,MAAM,WAAW,CAAC,SAAS,EAAE,EACxD,GAAG,CAAC,GAAG,CAAA,GAAG,WAAW,CAAC,SAAS,MAAM,IAAI,EAAE,EAAE,WAAW,CAAC,SAAS,CAAC,EACnE,GAAG,CAAA,GAAG,WAAW,CAAC,UAAU,cAAc,CAC3C,SAAS,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,IAAI,OAAO,cAAc,EAAE,CAAC;IACpE,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC;QAC/B,EAAE;aACC,MAAM,CAAC,iBAAiB,CAAC;aACzB,MAAM,CACL,GAAG,CAAA,UAAU,OAAO,KAAK,aAAa,KAAK,OAAO,KAAK,IAAI,KAAK,GAAG,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAC9F;aACA,mBAAmB,EAAE;QACxB,EAAE;aACC,MAAM,CAAC,WAAW,CAAC;aACnB,GAAG,CAAC,EAAE,SAAS,EAAE,GAAG,CAAA,GAAG,WAAW,CAAC,SAAS,MAAM,IAAI,EAAE,EAAE,CAAC;aAC3D,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC;QAChC,sFAAsF;QACtF,GAAG,CAAA,yBAAyB,iBAAiB,UAAU,iBAAiB,CAAC,OAAO,MAAM,OAAO,QAAQ,iBAAiB,CAAC,aAAa,MAAM,aAAa,QAAQ,iBAAiB,CAAC,OAAO,MAAM,OAAO,GAAG,CACzM,CACF;aACA,SAAS,CAAC;YACT,UAAU,EAAE,WAAW,CAAC,UAAU;YAClC,SAAS,EAAE,WAAW,CAAC,SAAS;YAChC,SAAS,EAAE,WAAW,CAAC,SAAS;SACjC,CAAC;KACL,CAAC,CAAC;IACH,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACpB,IAAI,GAAG,EAAE,UAAU,EAAE,CAAC;QACpB,OAAO,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC;IAC/F,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC;QACtD,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;QAC1B,KAAK,EAAE,GAAG,CACR,EAAE,CAAC,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,EACtC,EAAE,CAAC,iBAAiB,CAAC,aAAa,EAAE,aAAa,CAAC,CACnD;KACF,CAAC,CAAC;IACH,OAAO,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AAChC,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,EAAY,EACZ,KAA6E;IAE7E,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IACrD,MAAM,EAAE,CAAC,KAAK,CAAC;QACb,EAAE;aACC,MAAM,CAAC,WAAW,CAAC;aACnB,GAAG,CAAC,EAAE,SAAS,EAAE,GAAG,CAAA,GAAG,WAAW,CAAC,SAAS,MAAM,IAAI,EAAE,EAAE,CAAC;aAC3D,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,EAChC,EAAE,CAAC,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC,EACtC,GAAG,CAAA,GAAG,WAAW,CAAC,SAAS,OAAO,IAAI,EAAE,CACzC,CACF;QACH,EAAE;aACC,MAAM,CAAC,iBAAiB,CAAC;aACzB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;KAC9F,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP over OAuth, the oracle as RESOURCE SERVER (spec 2026-10-06 "Oracle side"; S3 review §4):
|
|
3
|
+
* the access token AuthHub mints for `/v1/mcp` and the discovery document that points a client at
|
|
4
|
+
* AuthHub. AuthHub is the one authorization server (`AUTH_HUB_URL`, network-defaulted); the
|
|
5
|
+
* oracle never sees a user's key, only this 5-minute JWT.
|
|
6
|
+
*
|
|
7
|
+
* A token is accepted only if EVERY one holds: EdDSA (no other `alg`, so no `none` and no HMAC
|
|
8
|
+
* confusion), `typ: at+jwt`, signed by a key in AuthHub's JWKS, `iss` exactly AuthHub, `aud`
|
|
9
|
+
* exactly THIS oracle's MCP URL (scheme, host and path — RFC 8707, so a token for one oracle is
|
|
10
|
+
* useless at another; one `aud`, never a list), unexpired within 60 s of skew, issued (`iat`) at
|
|
11
|
+
* most 10 minutes ago, and `sub` a `did:ixo` account. The JWKS is read through KV (`readCache`) and
|
|
12
|
+
* fetched only through `fetchClient`; a miss or a `kid` it does not list fetches it, at most once
|
|
13
|
+
* per REFETCH_MS per isolate, so neither junk `kid`s nor an outage turn into a stream of fetches.
|
|
14
|
+
*
|
|
15
|
+
* A token is accepted on `/v1/mcp` only (`routes/v1/mcp`): `/v1/api` never parses one.
|
|
16
|
+
*/
|
|
17
|
+
import type { Config } from "../../config.js";
|
|
18
|
+
import type { TraceContext } from "../tracing.js";
|
|
19
|
+
/** The scopes AuthHub grants (its plan, Global Constraints): exactly these two. */
|
|
20
|
+
export declare const OAUTH_SCOPES: readonly ["claims:write", "claims:read"];
|
|
21
|
+
export type OAuthScope = (typeof OAUTH_SCOPES)[number];
|
|
22
|
+
/** Who an OAuth access token says is calling, and through which app. */
|
|
23
|
+
export interface OAuthIdentity {
|
|
24
|
+
/** The user (`sub`), a `did:ixo` account. */
|
|
25
|
+
did: string;
|
|
26
|
+
clientId: string;
|
|
27
|
+
/** The app's registered name; `clientId` when the token carries none. */
|
|
28
|
+
clientName: string;
|
|
29
|
+
/** AuthHub's `verified`: every redirect URI the client registered is Claude's or ChatGPT's own
|
|
30
|
+
* callback, so only that app can hold the token. Exactly `true`, else false. */
|
|
31
|
+
clientVerified: boolean;
|
|
32
|
+
/** AuthHub's grant (`gid`): the unit a user revokes, and the rate-limit and spend-cap key. */
|
|
33
|
+
grantId: string;
|
|
34
|
+
scopes: readonly OAuthScope[];
|
|
35
|
+
}
|
|
36
|
+
/** The resource every token must be for: this oracle's MCP endpoint, exactly. */
|
|
37
|
+
export declare const mcpResource: (config: Pick<Config, "ORACLE_HOSTNAME">) => string;
|
|
38
|
+
/** RFC 9728's well-known location for that resource. */
|
|
39
|
+
export declare const prmUrl: (config: Pick<Config, "ORACLE_HOSTNAME">) => string;
|
|
40
|
+
/** AuthHub's `did:web` — the one invoker of the approvals back-channel. */
|
|
41
|
+
export declare const authHubDid: (config: Pick<Config, "AUTH_HUB_URL">) => string;
|
|
42
|
+
/** RFC 9728 protected-resource metadata for `/v1/mcp`. */
|
|
43
|
+
export declare const protectedResource: (config: Pick<Config, "ORACLE_HOSTNAME" | "AUTH_HUB_URL">) => {
|
|
44
|
+
resource: string;
|
|
45
|
+
authorization_servers: string[];
|
|
46
|
+
scopes_supported: ("claims:read" | "claims:write")[];
|
|
47
|
+
bearer_methods_supported: string[];
|
|
48
|
+
};
|
|
49
|
+
/** A bearer that is not ours to accept: the caller gets 401 and goes back through OAuth. */
|
|
50
|
+
export declare class InvalidToken extends Error {
|
|
51
|
+
}
|
|
52
|
+
/** Three base64url segments: the only bearer shape `/v1/mcp` treats as an OAuth token. */
|
|
53
|
+
export declare const looksLikeJwt: (token: string) => boolean;
|
|
54
|
+
export interface TokenDeps {
|
|
55
|
+
config: Pick<Config, "ORACLE_HOSTNAME" | "AUTH_HUB_URL">;
|
|
56
|
+
cache: KVNamespace;
|
|
57
|
+
trace?: TraceContext;
|
|
58
|
+
}
|
|
59
|
+
export declare function verifyAccessToken(deps: TokenDeps, token: string): Promise<OAuthIdentity>;
|
|
60
|
+
//# sourceMappingURL=token.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../src/lib/oauth/token.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AASH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAM3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,mFAAmF;AACnF,eAAO,MAAM,YAAY,YAAI,cAAc,EAAE,aAAa,CAAU,CAAC;AACrE,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD,wEAAwE;AACxE,MAAM,WAAW,aAAa;IAC5B,6CAA6C;IAC7C,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,UAAU,EAAE,MAAM,CAAC;IACnB;qFACiF;IACjF,cAAc,EAAE,OAAO,CAAC;IACxB,8FAA8F;IAC9F,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC;CAC/B;AAYD,iFAAiF;AACjF,eAAO,MAAM,WAAW,WAAY,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,KAAG,MAC1B,CAAC;AAE7C,wDAAwD;AACxD,eAAO,MAAM,MAAM,WAAY,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,KAAG,MACgB,CAAC;AAElF,2EAA2E;AAC3E,eAAO,MAAM,UAAU,WAAY,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,KAAG,MACrB,CAAC;AAE9C,0DAA0D;AAC1D,eAAO,MAAM,iBAAiB,WAAY,IAAI,CAAC,MAAM,EAAE,iBAAiB,GAAG,cAAc,CAAC;IACxF,QAAQ;IACR,qBAAqB;IACrB,gBAAgB;IAChB,wBAAwB;CACxB,CAAC;AAEH,4FAA4F;AAC5F,qBAAa,YAAa,SAAQ,KAAK;CAAG;AAE1C,0FAA0F;AAC1F,eAAO,MAAM,YAAY,UAAW,MAAM,KAAG,OACmB,CAAC;AAEjE,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,iBAAiB,GAAG,cAAc,CAAC,CAAC;IACzD,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAkC9F"}
|