@ixo/decision-oracle 0.0.0-stage → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +121 -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,390 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The register logic behind `POST /v1/collections/register` (routes/v1/collections.ts) AND the
|
|
3
|
+
* `registerCollection` runtime export (../runtime.ts) — one interface, two callers. The route is
|
|
4
|
+
* UCAN-guarded HTTP; a provider's own Workflow calls this directly when it registers a collection
|
|
5
|
+
* as the oracle's own principal (after minting its own evaluate grant), where there is no request
|
|
6
|
+
* to validate a body against and no `c.env` to read bindings off.
|
|
7
|
+
*
|
|
8
|
+
* The four gates (WHO/HIRED/PROTOCOL/PAID), the delegation resolution, the upsert and the
|
|
9
|
+
* paused→active notice are unchanged from the route's original body — see routes/v1/collections.ts'
|
|
10
|
+
* header comment for the enrollment rules this enforces. `RegisterCtx` is what either caller can
|
|
11
|
+
* assemble: the route from its request-scoped Hono context, the runtime from `env` via
|
|
12
|
+
* `cronContext`-style plumbing (cron/scan.ts).
|
|
13
|
+
*/
|
|
14
|
+
import { and, asc, eq, inArray, isNotNull, sql } from "drizzle-orm";
|
|
15
|
+
import { apiSources, watchedCollections } from "../db/schema.js";
|
|
16
|
+
import { effectivePricing, evaluationFeeFor, getOracle } from "../oracle.js";
|
|
17
|
+
import { notifyCollectionResumed } from "../workflows/steps.js";
|
|
18
|
+
import { hasUnlinkedActiveSource, linkCompanySources } from "./api-lane/linked.js";
|
|
19
|
+
import { createEngineClient } from "./engine/client.js";
|
|
20
|
+
import { EngineError } from "./engine/types.js";
|
|
21
|
+
import { AppError } from "./errors.js";
|
|
22
|
+
import { queryEvaluateGrant } from "./ixo/authz.js";
|
|
23
|
+
import { getCollection, getEntityOwner } from "./ixo/blocksync/index.js";
|
|
24
|
+
import { resolveIssuerKeys } from "./ixo/delegation-verify.js";
|
|
25
|
+
import { requireEvaluationPayment } from "./ixo/payment.js";
|
|
26
|
+
import { verifyOwnerDelegation } from "./ixo/ucan.js";
|
|
27
|
+
import { fetchOwnerDelegation } from "./ixo/ucan-store.js";
|
|
28
|
+
import { companyOf, creditsCover, PayerUnavailable, resolvePayer, reviewBillingActive, } from "./payments/review-billing.js";
|
|
29
|
+
/**
|
|
30
|
+
* The chain owner or the current enroller of a watched row — who may redirect its notices
|
|
31
|
+
* (re-register, below) and pause or resume it (routes/v1/shared.ts `assertCanManage`). A plain grant
|
|
32
|
+
* holder is neither: a competing oracle hired on the same collection holds a grant by definition.
|
|
33
|
+
*/
|
|
34
|
+
export function isOwnerOrEnroller(row, did) {
|
|
35
|
+
return did === row.ownerDid || did === row.enrolledByDid;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Register (or re-register) a collection with this oracle — the four gates, the delegation
|
|
39
|
+
* resolution, the upsert and the paused→active notice, in that order. See
|
|
40
|
+
* routes/v1/collections.ts for the WHO/HIRED/PROTOCOL/PAID rules this enforces; behaviour here is
|
|
41
|
+
* byte-for-byte what the route did before this function existed.
|
|
42
|
+
*/
|
|
43
|
+
export async function registerCollection(ctx, input) {
|
|
44
|
+
const { config, trace, logger, metrics, db, env } = ctx;
|
|
45
|
+
const { collectionId, principal, delegationCar, contactEmail, cursor } = input;
|
|
46
|
+
// Confirm the collection actually exists on-chain (clean 404 rather than watching a typo). Its
|
|
47
|
+
// `entity` resolves the owner, its `admin` is the grant's granter, its `payments` the fee.
|
|
48
|
+
const collection = await getCollection({ config, trace }, collectionId);
|
|
49
|
+
if (!collection) {
|
|
50
|
+
throw refusal("NOT_FOUND", "collection_not_found", `Collection ${collectionId} not found on-chain`);
|
|
51
|
+
}
|
|
52
|
+
// The chain owner — the wallet that created the deed entity — pays the evaluation fees and is
|
|
53
|
+
// the delegation root the pull path reads. Resolved ALWAYS (a grant holder registering on the
|
|
54
|
+
// owner's behalf must never become that root), and it is the chain's answer, not the caller's.
|
|
55
|
+
if (!collection.entity) {
|
|
56
|
+
throw refusal("FORBIDDEN", "owner_unresolvable", `Collection ${collectionId} has no entity on-chain — its owner cannot be resolved`);
|
|
57
|
+
}
|
|
58
|
+
const ownerAddress = await getEntityOwner({ config, trace }, collection.entity);
|
|
59
|
+
if (!ownerAddress) {
|
|
60
|
+
throw refusal("FORBIDDEN", "owner_unresolvable", `Entity ${collection.entity} not found on-chain — its owner cannot be resolved`);
|
|
61
|
+
}
|
|
62
|
+
const ownerDid = `did:ixo:${ownerAddress}`;
|
|
63
|
+
// 1 · WHO. The UNCACHED grant read on purpose: the portal grants and registers in one flow, and
|
|
64
|
+
// `hasEvaluateGrant` would pin a negative for 5 minutes — a refusal that outlives the grant it
|
|
65
|
+
// contradicts. Register is rare; freshness is what matters here. No admin ⇒ no grant can exist.
|
|
66
|
+
const holdsGrant = (address) => collection.admin
|
|
67
|
+
? queryEvaluateGrant(config, collection.admin, address, collectionId)
|
|
68
|
+
: Promise.resolve(false);
|
|
69
|
+
const callerIsOwner = principal.address === ownerAddress;
|
|
70
|
+
const callerIsOracle = principal.address === config.ORACLE_ADDRESS;
|
|
71
|
+
// The owner needs no grant. The oracle's OWN wallet always takes the read: its answer is also
|
|
72
|
+
// the hired check below, so the two gates collapse into one chain read for it.
|
|
73
|
+
const callerHolds = callerIsOwner && !callerIsOracle ? true : await holdsGrant(principal.address);
|
|
74
|
+
if (!callerIsOwner && !callerHolds) {
|
|
75
|
+
throw refusal("FORBIDDEN", "not_owner_or_grantee", `Only the owner of collection ${collectionId} or a holder of an active EvaluateClaimAuthorization for it may register it`);
|
|
76
|
+
}
|
|
77
|
+
// 2 · HIRED. Without this grant the oracle can never sign `MsgEvaluateClaim` — a watched row
|
|
78
|
+
// would only ever produce decisions the chain refuses.
|
|
79
|
+
const hired = callerIsOracle ? callerHolds : await holdsGrant(config.ORACLE_ADDRESS);
|
|
80
|
+
if (!hired) {
|
|
81
|
+
throw refusal("CONFLICT", "not_hired", `Grant EvaluateClaimAuthorization to ${config.ORACLE_ADDRESS} first`);
|
|
82
|
+
}
|
|
83
|
+
// 3 · PROTOCOL. Reuses `collection.protocol` resolved above — no second chain/Blocksync fetch.
|
|
84
|
+
// Empty `supportedProtocols` ⇒ no restriction (today's unconfigured default: evaluate whatever
|
|
85
|
+
// passes the money/grant gates, whatever protocol it's for). Checked before PAID: a
|
|
86
|
+
// wrong-protocol collection should
|
|
87
|
+
// hear "this oracle won't serve you" first, not be sent off to fix a payment that would never
|
|
88
|
+
// have mattered.
|
|
89
|
+
const { supportedProtocols, pricing } = getOracle().config;
|
|
90
|
+
if (supportedProtocols.length > 0 && !supportedProtocols.includes(collection.protocol ?? "")) {
|
|
91
|
+
throw refusal("CONFLICT", "unsupported_protocol", `This oracle does not support protocol ${collection.protocol ?? "(none)"} — supported: ${supportedProtocols.join(", ")}`);
|
|
92
|
+
}
|
|
93
|
+
// 4 · PAID. On EVERY (re-)register and before anything is written: a collection whose admin
|
|
94
|
+
// zeroed or re-denominated `Payments.evaluation` since the last register must not keep being
|
|
95
|
+
// evaluated for free. Live off blocksync, never a stored copy. `pricing.byProtocol` lets a
|
|
96
|
+
// specific protocol override the default fee (e.g. `minAmount: "0"` for a protocol whose income
|
|
97
|
+
// isn't the evaluation split) — resolved by the collection's own protocol first, falling back to
|
|
98
|
+
// `pricing.evaluation` for everything else.
|
|
99
|
+
// `effectivePricing`: the per-network EVALUATION_DENOM / EVALUATION_MIN_AMOUNT vars, when set,
|
|
100
|
+
// replace `pricing.evaluation` (config.ts; required on mainnet, so it is never a stand-in coin).
|
|
101
|
+
// The escrow gate below charges by it; per-review billing charges the published `pricing.api`.
|
|
102
|
+
const fee = evaluationFeeFor(effectivePricing(pricing, config), collection.protocol ?? "");
|
|
103
|
+
// Per-review billing (active by IXO's plan for the oracle, owner 2026-10-14): a collection whose company
|
|
104
|
+
// holds a live review-billing delegation is paid per review over x402 from the owner's credits —
|
|
105
|
+
// its evaluation leg may be empty (never escrowed, never billed twice). Who pays comes from the
|
|
106
|
+
// ENGINE's company answer: its blip or a `disputed` company is a 503 to retry, never a guess. With
|
|
107
|
+
// a payer, the register fails unless its credits cover one review now (402
|
|
108
|
+
// `insufficient_credits`); with none, the escrow gate stands — and a collection it refuses hears
|
|
109
|
+
// both ways in (402 `no_review_billing`).
|
|
110
|
+
const perReview = await reviewBillingActive({ config, trace, logger, cache: env.CACHE_KV });
|
|
111
|
+
const company = perReview
|
|
112
|
+
? await companyOf({ config, trace, logger, cache: env.CACHE_KV }, collectionId)
|
|
113
|
+
: undefined;
|
|
114
|
+
let billingSourceId = null;
|
|
115
|
+
let evaluation;
|
|
116
|
+
if (company !== undefined) {
|
|
117
|
+
const billingDeps = { config, trace, logger, cache: env.CACHE_KV, db };
|
|
118
|
+
const payer = await resolvePayer(billingDeps, company, collection.protocol ?? "");
|
|
119
|
+
if (!payer.ok && payer.why === "disputed") {
|
|
120
|
+
throw new PayerUnavailable("company_unavailable", `The decision engine names no single organisation for collection ${collectionId} (disputed), so who pays for its reviews is unknown; retry once it is settled.`);
|
|
121
|
+
}
|
|
122
|
+
if (payer.ok) {
|
|
123
|
+
if (!(await creditsCover(billingDeps, payer))) {
|
|
124
|
+
throw refusal("PAYMENT_REQUIRED", "insufficient_credits", `The organisation's credits do not cover one review (${payer.price.amount} upay). Top them up in the Decision Console, then register again.`, { price: payer.price, ...fundingUrl(config) });
|
|
125
|
+
}
|
|
126
|
+
billingSourceId = payer.source.sourceId;
|
|
127
|
+
// What the leg offers in the fee's denom (usually nothing): recorded, never required.
|
|
128
|
+
evaluation = requireEvaluationPayment({ denom: fee.denom, minAmount: "0" }, collection.payments);
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
try {
|
|
132
|
+
evaluation = requireEvaluationPayment(fee, collection.payments);
|
|
133
|
+
}
|
|
134
|
+
catch (err) {
|
|
135
|
+
if (!(err instanceof AppError) || err.code !== "PAYMENT_REQUIRED")
|
|
136
|
+
throw err;
|
|
137
|
+
logger.info("register.no-review-billing", { collectionId, detail: payer.detail });
|
|
138
|
+
throw refusal("PAYMENT_REQUIRED", "no_review_billing", `${err.message}. Or have the organisation's owner set up review billing on its Decision API source in the Decision Console (per-review billing from its credits), then register again.`, { ...err.details, ...fundingUrl(config) });
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
evaluation = requireEvaluationPayment(fee, collection.payments);
|
|
144
|
+
}
|
|
145
|
+
// Read BEFORE the upsert — the only way to tell "just registered a paused collection back to
|
|
146
|
+
// active" from "registered an already-active one again" (a notice fires only on a REAL
|
|
147
|
+
// paused→active flip), and who may change what on a re-register (below).
|
|
148
|
+
const prior = await db.query.watchedCollections.findFirst({
|
|
149
|
+
where: (t, { eq: eqOp }) => eqOp(t.collectionId, collectionId),
|
|
150
|
+
columns: { status: true, enrolledByDid: true, contactEmail: true },
|
|
151
|
+
});
|
|
152
|
+
// Any grant holder passes gate 1, and a competing oracle hired on the same collection holds a
|
|
153
|
+
// grant by definition. So on a RE-register only the chain owner or the current enroller may
|
|
154
|
+
// redirect the notices (`contactEmail`, and `enrolledByDid` — who may change it next) or lift a
|
|
155
|
+
// pause (an owner's, an operator's, `rubric-unusable`, `admin-unfunded`): were the enroller to
|
|
156
|
+
// move with every re-register, a stranger would become it on the first and redirect the notices
|
|
157
|
+
// on the second. Anyone else's re-register still refreshes the fee and delegation columns and
|
|
158
|
+
// leaves the enroller alone; asking for either change is a plain 403, never a silent ignore. A
|
|
159
|
+
// first registration sets both freely — that is the portal flow, and there is nothing to redirect.
|
|
160
|
+
// A non-owner enroller keeps these rights only while it still holds a live grant: here that is
|
|
161
|
+
// already proven, since gate 1 above refused any non-owner without one (uncached).
|
|
162
|
+
const mayChangeContact = !prior ||
|
|
163
|
+
callerIsOwner ||
|
|
164
|
+
isOwnerOrEnroller({ ownerDid, enrolledByDid: prior.enrolledByDid }, principal.did);
|
|
165
|
+
if (prior && !mayChangeContact) {
|
|
166
|
+
if (contactEmail !== undefined && (contactEmail || null) !== prior.contactEmail) {
|
|
167
|
+
throw refusal("FORBIDDEN", "contact_change_forbidden", `Only the owner of collection ${collectionId} or whoever registered it may change its contact email`);
|
|
168
|
+
}
|
|
169
|
+
if (prior.status === "paused") {
|
|
170
|
+
throw refusal("FORBIDDEN", "resume_forbidden", `Collection ${collectionId} is paused — only its owner or whoever registered it may resume it`);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
// The collection's COMPANY, as the engine derives it — asked ONCE and serving two things: with no
|
|
174
|
+
// contact sent and none on the row, the contact of the company's own Decision API source (so the
|
|
175
|
+
// chain-lane notices — pause / resume, `admin-unfunded`, review requests — reach someone), and
|
|
176
|
+
// the company links below. Asked only when one of them could use it: an explicit or stored
|
|
177
|
+
// contact is never touched, and a link is possible only while an active source is not yet linked.
|
|
178
|
+
const wantContact = contactEmail === undefined && !prior?.contactEmail;
|
|
179
|
+
// Per-review billing already asked (above): the same answer, never a second read.
|
|
180
|
+
const companyRead = company !== undefined
|
|
181
|
+
? company
|
|
182
|
+
: wantContact || (await hasUnlinkedActiveSource(db, collectionId))
|
|
183
|
+
? await readCompany(ctx, collectionId)
|
|
184
|
+
: undefined;
|
|
185
|
+
const orgContact = wantContact && companyRead ? await companyContact(db, companyRead) : null;
|
|
186
|
+
// Resolve the delegation to persist. A CAR in the body must PROVE it belongs here: issued by the
|
|
187
|
+
// OWNER (the delegation root — never the enroller), addressed to this oracle, scoped to the claim
|
|
188
|
+
// bot, unexpired — else 400. Without one we try the owner's store inbox (deposited moments ago in
|
|
189
|
+
// the same portal flow); a miss is non-fatal — registration stands, and the pull path refreshes
|
|
190
|
+
// from the store on demand, failing closed with a clear re-register error if nothing is ever
|
|
191
|
+
// deposited (lib/ixo/index.ts).
|
|
192
|
+
let stored = null;
|
|
193
|
+
if (delegationCar) {
|
|
194
|
+
stored = await verifyOwnerDelegation(config, delegationCar, ownerDid, () => resolveIssuerKeys(config, ownerDid, trace));
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
const found = await fetchOwnerDelegation({ config, trace, cache: env.CACHE_KV, logger }, ownerDid).catch(() => null);
|
|
198
|
+
if (found) {
|
|
199
|
+
stored = {
|
|
200
|
+
car: found.car,
|
|
201
|
+
expiresAt: found.expiresAt ? new Date(found.expiresAt * 1000) : null,
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
logger.warn("collection.registered-without-delegation", { collectionId, ownerDid });
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
// NB: `rubricId` is deliberately NOT written here — the pin may only come from a VERIFIED
|
|
209
|
+
// resolution, which is the workflow's evaluate step (claim-ingest.ts), never the register.
|
|
210
|
+
const watched = {
|
|
211
|
+
ownerDid,
|
|
212
|
+
// Moves only with a caller who may change the contact (above); a first insert always sets it.
|
|
213
|
+
...(mayChangeContact ? { enrolledByDid: principal.did } : {}),
|
|
214
|
+
protocolDid: collection.protocol ?? null,
|
|
215
|
+
// What the collection pays per evaluation, as just verified — the dashboard shows it.
|
|
216
|
+
evaluationDenom: evaluation.denom,
|
|
217
|
+
evaluationAmount: evaluation.amount,
|
|
218
|
+
// Who pays per review (null: the evaluation leg does) — decided by every register afresh.
|
|
219
|
+
billingSourceId,
|
|
220
|
+
// Only written when the caller sent the field; a sent empty string clears it.
|
|
221
|
+
...(contactEmail !== undefined ? { contactEmail: contactEmail || null } : {}),
|
|
222
|
+
// …or, with nothing sent and nothing stored, the org source's contact (above).
|
|
223
|
+
...(orgContact ? { contactEmail: orgContact } : {}),
|
|
224
|
+
// Only touch the delegation columns when we actually have one — never clobber a stored CAR.
|
|
225
|
+
...(stored ? { delegationCar: stored.car, delegationExpiresAt: stored.expiresAt } : {}),
|
|
226
|
+
};
|
|
227
|
+
// Cursor seeded on FIRST registration only (it's not in the conflict `set`, so a re-register can
|
|
228
|
+
// never rewind one the cron has advanced): absent ⇒ "now" (today's behaviour — a NULL cursor
|
|
229
|
+
// scans the collection from claim zero, blocksync CLAIMS_FROM_START, judging every claim that
|
|
230
|
+
// predates the hire); `null` explicitly ⇒ that same claim-zero scan; a caller-supplied string ⇒
|
|
231
|
+
// that watermark verbatim. The first real page rewrites it in blocksync's own timestamp format.
|
|
232
|
+
const seedCursor = cursor === undefined ? new Date().toISOString() : cursor;
|
|
233
|
+
// `status` / `pausedReason` are never in the conflict `set`: the `prior` read above is a snapshot,
|
|
234
|
+
// and the network steps since (the delegation, the store) leave a window in which an owner's
|
|
235
|
+
// `/pause`, `admin-unfunded`, `rubric-unusable` or `engine-credits` can land — a blanket
|
|
236
|
+
// `status: "active"` here would wipe it, for any grant holder looping re-register.
|
|
237
|
+
let [row] = await db
|
|
238
|
+
.insert(watchedCollections)
|
|
239
|
+
.values({ collectionId, cursor: seedCursor, enrolledByDid: principal.did, ...watched })
|
|
240
|
+
.onConflictDoUpdate({ target: watchedCollections.collectionId, set: watched })
|
|
241
|
+
.returning();
|
|
242
|
+
if (!row)
|
|
243
|
+
throw AppError.internal("Register upsert returned no row");
|
|
244
|
+
// Re-registering is the "change my mind" path: the owner's or the enroller's also resumes a
|
|
245
|
+
// paused collection (anyone else's never does) — a fresh register that passed the gates is the
|
|
246
|
+
// clearest "resume" there is (and, having just re-proven the oracle's grant, clears an engine
|
|
247
|
+
// `no-grant` pause; a credits pause is the operator's to lift, but resuming one collection early
|
|
248
|
+
// costs one retried claim, no more). Decided by the row AS IT IS NOW, in the one statement: a
|
|
249
|
+
// returned row is a REAL paused→active flip, which is what the notice below needs.
|
|
250
|
+
let resumed = false;
|
|
251
|
+
if (prior && mayChangeContact) {
|
|
252
|
+
const [flipped] = await db
|
|
253
|
+
.update(watchedCollections)
|
|
254
|
+
.set({ status: "active", pausedReason: null })
|
|
255
|
+
.where(and(eq(watchedCollections.collectionId, collectionId), eq(watchedCollections.status, "paused")))
|
|
256
|
+
.returning();
|
|
257
|
+
if (flipped) {
|
|
258
|
+
row = flipped;
|
|
259
|
+
resumed = true;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
// Link the collection to its company's active sources, so the org's reviewers see its chain
|
|
263
|
+
// claims in the console without a member linking it by hand (lib/api-lane/linked.ts). Only the
|
|
264
|
+
// engine's `ok` links; idempotent, so a re-register adds only what is missing.
|
|
265
|
+
const linkedSources = companyRead && collection.protocol
|
|
266
|
+
? await linkCompanySources(db, collectionId, collection.protocol, companyRead)
|
|
267
|
+
: [];
|
|
268
|
+
metrics.count("collection.registered");
|
|
269
|
+
logger.info("collection.registered", {
|
|
270
|
+
collectionId,
|
|
271
|
+
ownerDid,
|
|
272
|
+
enrolledByDid: row.enrolledByDid,
|
|
273
|
+
registeredByDid: principal.did,
|
|
274
|
+
evaluation,
|
|
275
|
+
delegationStored: !!stored,
|
|
276
|
+
reviewBilling: billingSourceId !== null,
|
|
277
|
+
contactFromOrgSource: !!orgContact,
|
|
278
|
+
linkedSources: linkedSources.length,
|
|
279
|
+
});
|
|
280
|
+
// A notice fires only on a REAL recovery (above). Fail-soft: a notice failure must never fail
|
|
281
|
+
// the register response.
|
|
282
|
+
if (resumed) {
|
|
283
|
+
await notifyCollectionResumed(db, { logger, metrics, config, trace, cache: env.CACHE_KV, email: env.EMAIL }, collectionId).catch((err) => logger.warn("collection.notice.failed", { collectionId, detail: String(err) }));
|
|
284
|
+
}
|
|
285
|
+
return row;
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* A register refusal with its stable machine code (`details.reason`), so a caller never matches a
|
|
289
|
+
* message: `collection_not_found` · `owner_unresolvable` · `not_owner_or_grantee` · `not_hired` ·
|
|
290
|
+
* `unsupported_protocol` · `evaluation_underpaid` (lib/ixo/payment.ts) · `no_review_billing` ·
|
|
291
|
+
* `insufficient_credits` · `contact_change_forbidden` · `resume_forbidden`, and the 503s
|
|
292
|
+
* `company_unavailable` / `credits_unavailable` (payments/review-billing.ts `PayerUnavailable`).
|
|
293
|
+
*/
|
|
294
|
+
function refusal(code, reason, message, details = {}) {
|
|
295
|
+
return new AppError(message, { code, details: { ...details, reason } });
|
|
296
|
+
}
|
|
297
|
+
/** Where a payer tops up: the Console's credits page. */
|
|
298
|
+
const fundingUrl = (config) => config.CONSOLE_URL ? { fundingUrl: `${config.CONSOLE_URL}/credits` } : {};
|
|
299
|
+
/**
|
|
300
|
+
* The collection's company, as the ENGINE derives it (contract "Company authority" → "Read it"):
|
|
301
|
+
* on a poster's deed it is the org linked to the deed both ways, not `collection.entity`, and only
|
|
302
|
+
* the engine resolves that. Null for a collection the engine does not know (404). `undefined` for
|
|
303
|
+
* any other engine trouble (its 503 while Blocksync is down, the network, a refusal) — never a
|
|
304
|
+
* failed hire: nothing is filled or linked, and a later register (or the backfill) does it.
|
|
305
|
+
*/
|
|
306
|
+
async function readCompany(ctx, collectionId) {
|
|
307
|
+
const { config, trace, logger, env } = ctx;
|
|
308
|
+
try {
|
|
309
|
+
return await createEngineClient({
|
|
310
|
+
config,
|
|
311
|
+
trace,
|
|
312
|
+
logger,
|
|
313
|
+
cache: env.CACHE_KV,
|
|
314
|
+
}).getCollectionCompany(collectionId);
|
|
315
|
+
}
|
|
316
|
+
catch (err) {
|
|
317
|
+
const { status, code } = err instanceof AppError || err instanceof EngineError ? err : {};
|
|
318
|
+
logger.warn("register.company-unavailable", { collectionId, status, code });
|
|
319
|
+
return undefined;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* The contact of the company's oldest active Decision API source. A `disputed` company has none.
|
|
324
|
+
* Oldest activation wins, so a re-run picks the same source; none (or API_LANE off — the table is
|
|
325
|
+
* empty) leaves it empty.
|
|
326
|
+
*/
|
|
327
|
+
async function companyContact(db, company) {
|
|
328
|
+
if (company.state !== "ok")
|
|
329
|
+
return null;
|
|
330
|
+
const [source] = await db
|
|
331
|
+
.select({ contactEmail: apiSources.contactEmail })
|
|
332
|
+
.from(apiSources)
|
|
333
|
+
.where(and(eq(apiSources.companyEntityDid, company.entityDid), eq(apiSources.status, "active"), isNotNull(apiSources.contactEmail)))
|
|
334
|
+
.orderBy(asc(sql `coalesce(${apiSources.activatedAt}, ${apiSources.createdAt})`), asc(apiSources.sourceId))
|
|
335
|
+
.limit(1);
|
|
336
|
+
return source?.contactEmail || null;
|
|
337
|
+
}
|
|
338
|
+
/** Collections one backfill call visits when it names none. */
|
|
339
|
+
export const RELINK_CAP = 100;
|
|
340
|
+
/**
|
|
341
|
+
* The backfill of register's company links for collections watched before it linked them
|
|
342
|
+
* (`POST /v1/admin/collections/relink`): per collection, the SAME engine read and the SAME
|
|
343
|
+
* `linkCompanySources` register runs, so a re-run is a no-op. `collectionIds` names them (an id
|
|
344
|
+
* this oracle does not watch is `not-watched`); absent ⇒ every watched collection, lowest id first,
|
|
345
|
+
* up to `RELINK_CAP` (`truncated` says more exist — name them). A collection with no unlinked
|
|
346
|
+
* active source is `unchanged` without an engine call.
|
|
347
|
+
*/
|
|
348
|
+
export async function relinkCollections(ctx, collectionIds) {
|
|
349
|
+
const { db } = ctx;
|
|
350
|
+
const rows = await db
|
|
351
|
+
.select({
|
|
352
|
+
collectionId: watchedCollections.collectionId,
|
|
353
|
+
protocolDid: watchedCollections.protocolDid,
|
|
354
|
+
})
|
|
355
|
+
.from(watchedCollections)
|
|
356
|
+
.where(collectionIds ? inArray(watchedCollections.collectionId, collectionIds) : undefined)
|
|
357
|
+
.orderBy(asc(watchedCollections.collectionId))
|
|
358
|
+
.limit(collectionIds ? collectionIds.length : RELINK_CAP + 1);
|
|
359
|
+
const truncated = !collectionIds && rows.length > RELINK_CAP;
|
|
360
|
+
const watched = new Map(rows.slice(0, RELINK_CAP).map((r) => [r.collectionId, r.protocolDid]));
|
|
361
|
+
const items = [];
|
|
362
|
+
for (const collectionId of collectionIds ?? [...watched.keys()]) {
|
|
363
|
+
const protocolDid = watched.get(collectionId);
|
|
364
|
+
const item = (outcome, linkedSources = []) => items.push({ collectionId, outcome, linkedSources });
|
|
365
|
+
if (protocolDid === undefined)
|
|
366
|
+
item("not-watched");
|
|
367
|
+
else if (!protocolDid || !(await hasUnlinkedActiveSource(db, collectionId)))
|
|
368
|
+
item("unchanged");
|
|
369
|
+
else {
|
|
370
|
+
const company = await readCompany(ctx, collectionId);
|
|
371
|
+
if (company === undefined)
|
|
372
|
+
item("unavailable");
|
|
373
|
+
else if (company === null)
|
|
374
|
+
item("no-company");
|
|
375
|
+
else if (company.state !== "ok")
|
|
376
|
+
item("disputed");
|
|
377
|
+
else {
|
|
378
|
+
const linked = await linkCompanySources(db, collectionId, protocolDid, company);
|
|
379
|
+
item(linked.length > 0 ? "linked" : "unchanged", linked);
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
ctx.logger.info("collection.relinked", {
|
|
384
|
+
visited: items.length,
|
|
385
|
+
linked: items.filter((i) => i.outcome === "linked").length,
|
|
386
|
+
truncated,
|
|
387
|
+
});
|
|
388
|
+
return { items, truncated };
|
|
389
|
+
}
|
|
390
|
+
//# sourceMappingURL=register.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/lib/register.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The reviewer's signed review attestation (design §B.3) — a small Verifiable Credential the
|
|
3
|
+
* REVIEWER issues with their own Ed25519 key (the same PIN-unlocked key their UCAN invocations are
|
|
4
|
+
* signed with), saying in their own name: "I, <did>, answered claim <claimId> at oracle
|
|
5
|
+
* <oracleDid> against evaluation <resultDigest> with these answers."
|
|
6
|
+
*
|
|
7
|
+
* A DELIBERATE MIRROR of the engine's `src/lib/receipt/attestation.ts`. There is no shared package
|
|
8
|
+
* between this kit and the engine — same posture as the rubric format — so the two copies are kept
|
|
9
|
+
* in lock-step by hand, and BOTH verify: the kit because it is the only party that sees the
|
|
10
|
+
* reviewer's UCAN invocation, the engine because it trusts nothing this kit asserts about the
|
|
11
|
+
* reviewer (§B.5). A change here needs the matching change there.
|
|
12
|
+
*
|
|
13
|
+
* Fail closed, at the first miss: every refusal carries its own code and nothing half-verified ever
|
|
14
|
+
* passes. The keys come from the SAME composite DID resolver `middleware/ucan-auth.ts` authenticates
|
|
15
|
+
* with, so an attestation can never verify against a key the UCAN layer would have rejected.
|
|
16
|
+
*/
|
|
17
|
+
import { z } from "zod";
|
|
18
|
+
import type { Config } from "../../config.js";
|
|
19
|
+
/**
|
|
20
|
+
* The attestation's JSON-LD context — a fixed CONSTANT on the namespace IXO operates, not a
|
|
21
|
+
* per-oracle URL: the same statement signed by two reviewers at two oracles must be the same
|
|
22
|
+
* vocabulary. Published as content in `ixofoundation/ns`; this kit never serves or resolves it.
|
|
23
|
+
*/
|
|
24
|
+
export declare const REVIEW_ATTESTATION_CONTEXT = "https://w3id.org/ixo/credentials/review-attestation/v1";
|
|
25
|
+
/** The compact JWS protected header. `kid` is the `did:key` FORM of the signing key (§B.2) — not a
|
|
26
|
+
* DID-document fragment — so the verifier's job is exactly one assertion: the chain publishes it. */
|
|
27
|
+
export declare const ReviewAttestationHeaderSchema: z.ZodObject<{
|
|
28
|
+
alg: z.ZodLiteral<"EdDSA">;
|
|
29
|
+
typ: z.ZodLiteral<"vc+jwt">;
|
|
30
|
+
cty: z.ZodLiteral<"vc">;
|
|
31
|
+
kid: z.ZodString;
|
|
32
|
+
}, z.core.$strict>;
|
|
33
|
+
export declare const ReviewAttestationSchema: z.ZodObject<{
|
|
34
|
+
"@context": z.ZodTuple<[z.ZodLiteral<"https://www.w3.org/ns/credentials/v2">, z.ZodString], null>;
|
|
35
|
+
id: z.ZodString;
|
|
36
|
+
type: z.ZodTuple<[z.ZodLiteral<"VerifiableCredential">, z.ZodLiteral<"ClaimReviewAttestation">], null>;
|
|
37
|
+
issuer: z.ZodString;
|
|
38
|
+
validFrom: z.ZodISODateTime;
|
|
39
|
+
credentialSubject: z.ZodObject<{
|
|
40
|
+
id: z.ZodString;
|
|
41
|
+
claimId: z.ZodString;
|
|
42
|
+
oracleDid: z.ZodString;
|
|
43
|
+
answeredAgainst: z.ZodString;
|
|
44
|
+
answers: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
|
|
45
|
+
}, z.core.$strict>;
|
|
46
|
+
}, z.core.$strict>;
|
|
47
|
+
export type ReviewAttestation = z.infer<typeof ReviewAttestationSchema>;
|
|
48
|
+
/** The five refusal codes, identical on the engine (docs/ENGINE-CONTRACT.md "Human review"). */
|
|
49
|
+
export type AttestationErrorCode = "ATTESTATION_INVALID" | "ATTESTATION_KEY_UNKNOWN" | "ATTESTATION_ISSUER_MISMATCH" | "ATTESTATION_MISMATCH" | "ATTESTATION_UNRESOLVABLE";
|
|
50
|
+
/** What the attestation must be bound to for this request — the replay bindings of §B.5. */
|
|
51
|
+
export interface ExpectedAttestation {
|
|
52
|
+
/** The authenticated reviewer: `principal.did`, never anything the body carries. */
|
|
53
|
+
issuer: string;
|
|
54
|
+
/** This oracle's own did:web — the UCAN audience the reviewer addressed. */
|
|
55
|
+
oracleDid: string;
|
|
56
|
+
claimId: string;
|
|
57
|
+
/** The `resultDigest` of the `pending_review` decision being answered. */
|
|
58
|
+
answeredAgainst: string;
|
|
59
|
+
answers: Record<string, boolean | string>;
|
|
60
|
+
}
|
|
61
|
+
export type VerifyAttestationResult =
|
|
62
|
+
/** `kid`: the did:key that signed — on the issuer's document (an API-lane root's self-grant must
|
|
63
|
+
* be signed by it too, lib/review/reviewer-grant.ts `parseSelfReviewGrant`). */
|
|
64
|
+
{
|
|
65
|
+
ok: true;
|
|
66
|
+
attestation: ReviewAttestation;
|
|
67
|
+
cid: string;
|
|
68
|
+
kid: string;
|
|
69
|
+
} | {
|
|
70
|
+
ok: false;
|
|
71
|
+
code: AttestationErrorCode;
|
|
72
|
+
failures: string[];
|
|
73
|
+
};
|
|
74
|
+
export declare const b64urlToText: (part: string) => string;
|
|
75
|
+
/** The raw 32-byte Ed25519 key inside a `did:key`, or null if it is not one (§B.4 step 2). */
|
|
76
|
+
export declare function ed25519KeyOf(kid: string): Uint8Array | null;
|
|
77
|
+
/**
|
|
78
|
+
* Does the compact JWS's signature verify under the raw Ed25519 key? A malformed JWS or key does
|
|
79
|
+
* not. Shared with the Decision API's reviewer-key proof (`routes/v1/api/members.ts`), whose
|
|
80
|
+
* payload is not an attestation but whose signature is checked the same way.
|
|
81
|
+
*/
|
|
82
|
+
export declare function ed25519JwsVerifies(publicKeyRaw: Uint8Array, jws: string): Promise<boolean>;
|
|
83
|
+
/**
|
|
84
|
+
* Verify one attestation against what this request binds it to. Order is the fail-closed order of
|
|
85
|
+
* §B.5 — shape, then the issuer we already know, then key, then signature, then the remaining
|
|
86
|
+
* bindings — so a refusal always names the FIRST thing that is wrong rather than the most
|
|
87
|
+
* convenient one, and a refusal we can make with no network costs no network.
|
|
88
|
+
*/
|
|
89
|
+
export declare function verifyReviewAttestation(deps: {
|
|
90
|
+
config: Config;
|
|
91
|
+
}, jws: string, expected: ExpectedAttestation): Promise<VerifyAttestationResult>;
|
|
92
|
+
//# sourceMappingURL=attestation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attestation.d.ts","sourceRoot":"","sources":["../../../src/lib/review/attestation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAG3C;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,2DAA2D,CAAC;AAEnG;sGACsG;AACtG,eAAO,MAAM,6BAA6B;;;;;kBAKxC,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;kBAkBlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,gGAAgG;AAChG,MAAM,MAAM,oBAAoB,GAC5B,qBAAqB,GACrB,yBAAyB,GACzB,6BAA6B,GAC7B,sBAAsB,GACtB,0BAA0B,CAAC;AAE/B,4FAA4F;AAC5F,MAAM,WAAW,mBAAmB;IAClC,oFAAoF;IACpF,MAAM,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC;CAC3C;AAED,MAAM,MAAM,uBAAuB;AACjC;iFACiF;AAC/E;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,WAAW,EAAE,iBAAiB,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GACtE;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,oBAAoB,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAmFlE,eAAO,MAAM,YAAY,SAAU,MAAM,KAAG,MAAuD,CAAC;AAEpG,8FAA8F;AAC9F,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAS3D;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,YAAY,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAoBhG;AAaD;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,EACxB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,mBAAmB,GAC5B,OAAO,CAAC,uBAAuB,CAAC,CAsFlC"}
|