@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":"chain.d.ts","sourceRoot":"","sources":["../../../src/lib/ixo/chain.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The IXO chain SDK (`@ixo/impactxclient-sdk`), loaded LAZILY: the SDK drags in heavy proto/crypto
|
|
3
|
+
* deps, so it must never load on request paths that don't touch the chain — the dynamic import
|
|
4
|
+
* keeps cold starts cheap and pays only on first use (the supa-minting-worker pattern).
|
|
5
|
+
*
|
|
6
|
+
* `getQueryClient` memoizes one RPC query client per isolate — safe because the RPC transport is
|
|
7
|
+
* HTTP fetch-per-call (it holds no request-bound socket). `getOracleSigner` is the act
|
|
8
|
+
* lane: it memoizes ONLY the wallet (pure crypto) and builds the signing client + its
|
|
9
|
+
* SequenceManagerDO stub FRESH per call. Those two are I/O objects that Cloudflare forbids reusing
|
|
10
|
+
* across requests (workflow steps and cron ticks are separate contexts — reuse throws the
|
|
11
|
+
* "Cannot perform I/O on behalf of a different request / OutgoingFactory" error); the DO, NOT the
|
|
12
|
+
* client, carries the sequence across rebuilds (one instance per signer address, the
|
|
13
|
+
* subscriptions-api pattern), so concurrent workflow steps still never race a sequence — and a
|
|
14
|
+
* sequence-mismatch rejection heals per direction (`broadcastWithSequenceReset` below): a burned
|
|
15
|
+
* allocation resets the DO, a stale-chain-read one waits out the block, because the allocator has
|
|
16
|
+
* no failure feedback and a tx that dies before inclusion would otherwise poison every later
|
|
17
|
+
* broadcast.
|
|
18
|
+
*/
|
|
19
|
+
import { AppError } from "../errors.js";
|
|
20
|
+
import { currentMetrics } from "../metrics.js";
|
|
21
|
+
let sdkPromise = null;
|
|
22
|
+
/**
|
|
23
|
+
* workerd's `Buffer.prototype.utf8Write` mis-computes the default length for the
|
|
24
|
+
* `(string, offset)` call shape protobufjs's BufferWriter uses for strings ≥ 40 chars — it
|
|
25
|
+
* validates the string's byte length against the WHOLE buffer instead of the remainder after
|
|
26
|
+
* `offset`, so any string field ending exactly at the end of a message (e.g. the grantee address
|
|
27
|
+
* in a granteeGrants query) throws RangeError ERR_OUT_OF_RANGE instead of encoding.
|
|
28
|
+
*
|
|
29
|
+
* The patch must be PROTOTYPE-level: the SDK's telescope codegen (codegen/helpers.js) calls
|
|
30
|
+
* `_m0.configure()` at import time, which re-runs protobufjs's environment detection and resets
|
|
31
|
+
* every static (`Writer.create`, allocators) — clobbering any static patch. configure() never
|
|
32
|
+
* touches prototypes, so swapping `BufferWriter.prototype.string` for the base Writer's pure-JS
|
|
33
|
+
* UTF-8 encoder removes exactly the broken fast path and survives re-configuration, so the patch
|
|
34
|
+
* may run before or after the codegen import. Exported for the regression test.
|
|
35
|
+
*
|
|
36
|
+
* The prototype is reached THROUGH an SDK message's writer, never `import("protobufjs")`, so it
|
|
37
|
+
* is the copy the SDK encodes with even when a second copy is installed (CLAUDE.md gotcha
|
|
38
|
+
* "protobufjs is pinned to the SDK's exact version").
|
|
39
|
+
*/
|
|
40
|
+
export async function patchProtobufjsForWorkerd() {
|
|
41
|
+
const { QueryParamsRequest } = await import("@ixo/impactxclient-sdk/module/codegen/ixo/claims/v1beta1/query.js");
|
|
42
|
+
const writerProto = Object.getPrototypeOf(QueryParamsRequest.encode({}));
|
|
43
|
+
const baseProto = Object.getPrototypeOf(writerProto);
|
|
44
|
+
// A BufferWriter's parent is Writer; without a Buffer the SDK hands out a plain Writer (parent
|
|
45
|
+
// Object.prototype) — nothing to patch then.
|
|
46
|
+
if (typeof baseProto.string === "function")
|
|
47
|
+
writerProto.string = baseProto.string;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* The SDK surface this service actually uses, assembled from NARROW subpath modules.
|
|
51
|
+
*
|
|
52
|
+
* NOT `import("@ixo/impactxclient-sdk")`: a dynamic import of the barrel materializes the whole
|
|
53
|
+
* module namespace at runtime, so esbuild cannot drop a single export — destructuring the result
|
|
54
|
+
* changes nothing, because the namespace has to exist first. The package itself is perfectly
|
|
55
|
+
* shakeable (`sideEffects: false`, an ESM `module` build, subpath exports); the dynamic barrel
|
|
56
|
+
* import was the only thing defeating it. Measured with esbuild: barrel 8.94 MB raw / 0.99 MB
|
|
57
|
+
* gzip, this set 5.96 MB / 0.69 MB. (`codegen` alone is 8.36 MB — one message module is 0.27 MB.)
|
|
58
|
+
*
|
|
59
|
+
* A static named import would shake just as well, but is NOT an option here: it hoists above
|
|
60
|
+
* `patchProtobufjsForWorkerd()`, and the codegen calls `_m0.configure()` at import time — the
|
|
61
|
+
* exact race the patch exists to win. Dynamic + narrow keeps both properties.
|
|
62
|
+
*
|
|
63
|
+
* The returned shape MIRRORS the SDK's own namespaces so call sites read identically to the
|
|
64
|
+
* barrel. Needing a new message type means adding its codegen module here; typecheck catches a
|
|
65
|
+
* missing one at build time rather than at runtime.
|
|
66
|
+
*/
|
|
67
|
+
async function loadIxoSdk() {
|
|
68
|
+
const [queries, signing, cloudflare, claimsTx, claimsTypes, claimsAuthz, claimsQuery, authzTx, protoUtils,] = await Promise.all([
|
|
69
|
+
import("@ixo/impactxclient-sdk/queries"),
|
|
70
|
+
import("@ixo/impactxclient-sdk/module/stargate_client/customClient.js"),
|
|
71
|
+
import("@ixo/impactxclient-sdk/cloudflare"),
|
|
72
|
+
import("@ixo/impactxclient-sdk/module/codegen/ixo/claims/v1beta1/tx.js"),
|
|
73
|
+
import("@ixo/impactxclient-sdk/module/codegen/ixo/claims/v1beta1/claims.js"),
|
|
74
|
+
import("@ixo/impactxclient-sdk/module/codegen/ixo/claims/v1beta1/authz.js"),
|
|
75
|
+
import("@ixo/impactxclient-sdk/module/codegen/ixo/claims/v1beta1/query.js"),
|
|
76
|
+
import("@ixo/impactxclient-sdk/module/codegen/cosmos/authz/v1beta1/tx.js"),
|
|
77
|
+
import("@ixo/impactxclient-sdk/module/utils/proto.js"),
|
|
78
|
+
]);
|
|
79
|
+
return {
|
|
80
|
+
createQueryClient: queries.createQueryClient,
|
|
81
|
+
createSigningClient: signing.createSigningClient,
|
|
82
|
+
createDOStoreFunctions: cloudflare.createDOStoreFunctions,
|
|
83
|
+
ixo: { claims: { v1beta1: { ...claimsTx, ...claimsTypes, ...claimsAuthz, ...claimsQuery } } },
|
|
84
|
+
cosmos: { authz: { v1beta1: authzTx } },
|
|
85
|
+
utils: { proto: protoUtils },
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
export function getIxoSdk() {
|
|
89
|
+
sdkPromise ??= patchProtobufjsForWorkerd().then(loadIxoSdk);
|
|
90
|
+
return sdkPromise;
|
|
91
|
+
}
|
|
92
|
+
let queryClient = null;
|
|
93
|
+
let queryClientUrl = null;
|
|
94
|
+
/**
|
|
95
|
+
* One RPC query client per isolate. The RESOLVED client is memoized, never the promise — that
|
|
96
|
+
* distinction is the whole point, and it was learned the hard way:
|
|
97
|
+
*
|
|
98
|
+
* caching the in-flight promise meant a bootstrap whose creating context went away before it settled
|
|
99
|
+
* (a canceled request, a timed-out cron tick or workflow step) left a promise pending FOREVER. Every
|
|
100
|
+
* later caller in that isolate awaited it and hung — reproduced in workerd: no error, no log line,
|
|
101
|
+
* just a request that never returns. `.catch(() => null)` never fired, because the promise never
|
|
102
|
+
* rejected; it simply never settled. So "a failed connect resets so the next call retries" was true
|
|
103
|
+
* of rejection and silently untrue of cancellation.
|
|
104
|
+
*
|
|
105
|
+
* Awaiting per caller costs concurrent COLD callers one bootstrap each (~3 cheap fetches, cold
|
|
106
|
+
* isolate only). That is far cheaper than one permanently wedged isolate, and it also means a
|
|
107
|
+
* rejected bootstrap can never be fanned out to every concurrent reader at once.
|
|
108
|
+
*/
|
|
109
|
+
export async function getQueryClient(config) {
|
|
110
|
+
const rpcUrl = config.CHAIN_RPC_URL;
|
|
111
|
+
if (queryClient && queryClientUrl === rpcUrl)
|
|
112
|
+
return queryClient;
|
|
113
|
+
const sdk = await getIxoSdk();
|
|
114
|
+
const client = await sdk.createQueryClient(rpcUrl);
|
|
115
|
+
queryClient = client;
|
|
116
|
+
queryClientUrl = rpcUrl;
|
|
117
|
+
return client;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* `upstream` timing for one chain RPC call: the SDK's transport is not `fetchClient`, so its calls
|
|
121
|
+
* are timed here instead — op `rpc`, route the call name, status `-` (the SDK hides it), outcome
|
|
122
|
+
* `ok`/`error`. A rejection `answered` recognizes is the chain's own "no" (e.g. no grants as
|
|
123
|
+
* not-found), not a failed call: it stays `ok`; so does a broadcast the chain refused with a code.
|
|
124
|
+
*/
|
|
125
|
+
export async function timedRpc(call, run, answered = () => false) {
|
|
126
|
+
const started = Date.now();
|
|
127
|
+
let outcome = "ok";
|
|
128
|
+
try {
|
|
129
|
+
return await run();
|
|
130
|
+
}
|
|
131
|
+
catch (err) {
|
|
132
|
+
if (!answered(err))
|
|
133
|
+
outcome = "error";
|
|
134
|
+
throw err;
|
|
135
|
+
}
|
|
136
|
+
finally {
|
|
137
|
+
currentMetrics()?.timing("upstream", Date.now() - started, {
|
|
138
|
+
op: "rpc",
|
|
139
|
+
route: call,
|
|
140
|
+
status: "-",
|
|
141
|
+
outcome,
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* An account's SPENDABLE balance of one denom, as a BigInt of base units (`payment.ts`: chain
|
|
147
|
+
* amounts are integer strings, never Numbers). Spendable, not total — vesting/locked coins cannot
|
|
148
|
+
* pay `MsgEvaluateClaim`'s evaluation leg, and "spendable balance … is smaller than" is exactly
|
|
149
|
+
* what the chain says when it refuses. Absent denom ⇒ 0n. Chain trouble is 503 (fail loud).
|
|
150
|
+
*/
|
|
151
|
+
export async function getSpendableBalance(config, address, denom) {
|
|
152
|
+
const queryClient = await getQueryClient(config);
|
|
153
|
+
let balances;
|
|
154
|
+
try {
|
|
155
|
+
({ balances } = await timedRpc("balance", () => queryClient.cosmos.bank.v1beta1.spendableBalances({ address })));
|
|
156
|
+
}
|
|
157
|
+
catch (err) {
|
|
158
|
+
throw AppError.unavailable("Chain bank query failed", err);
|
|
159
|
+
}
|
|
160
|
+
return BigInt(balances.find((coin) => coin.denom === denom)?.amount ?? "0");
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Pure, exported for tests: a configured `ORACLE_ADDRESS` that isn't the mnemonic's own address
|
|
164
|
+
* is a misconfiguration that would sign as one identity while granting to another — fail loud.
|
|
165
|
+
*/
|
|
166
|
+
export function assertOracleAddress(config, derived) {
|
|
167
|
+
if (config.ORACLE_ADDRESS && config.ORACLE_ADDRESS !== derived) {
|
|
168
|
+
throw AppError.internal(`ORACLE_ADDRESS (${config.ORACLE_ADDRESS}) does not match the ORACLE_SECP_MNEMONIC wallet (${derived})`);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
// The wallet + its account is PURE crypto derived from the mnemonic — no I/O, so it is safe to
|
|
172
|
+
// memoize per isolate (keyed by mnemonic; a config change rebuilds). This is the ONLY thing the
|
|
173
|
+
// reference (supamoto feeClaims.evaluate) caches, and the only thing we cache in the submit lane.
|
|
174
|
+
let oracleWalletPromise = null;
|
|
175
|
+
let oracleWalletMnemonic = null;
|
|
176
|
+
function getOracleWallet(config) {
|
|
177
|
+
const mnemonic = config.ORACLE_SECP_MNEMONIC;
|
|
178
|
+
if (!mnemonic)
|
|
179
|
+
return Promise.reject(AppError.internal("ORACLE_SECP_MNEMONIC not configured"));
|
|
180
|
+
if (!oracleWalletPromise || oracleWalletMnemonic !== mnemonic) {
|
|
181
|
+
oracleWalletMnemonic = mnemonic;
|
|
182
|
+
oracleWalletPromise = (async () => {
|
|
183
|
+
const { DirectSecp256k1HdWallet } = await import("@cosmjs/proto-signing");
|
|
184
|
+
const wallet = await DirectSecp256k1HdWallet.fromMnemonic(mnemonic, { prefix: "ixo" });
|
|
185
|
+
const [account] = await wallet.getAccounts();
|
|
186
|
+
if (!account)
|
|
187
|
+
throw AppError.internal("ORACLE_SECP_MNEMONIC yielded no account");
|
|
188
|
+
assertOracleAddress(config, account.address);
|
|
189
|
+
return { address: account.address, wallet };
|
|
190
|
+
})();
|
|
191
|
+
oracleWalletPromise.catch(() => {
|
|
192
|
+
oracleWalletPromise = null;
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
return oracleWalletPromise;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* The chain's sequence-mismatch rejection, in either lane it surfaces: THROWN from simulate or
|
|
199
|
+
* CheckTx (the tx never entered the mempool — the user-visible "Query failed with (6)" /
|
|
200
|
+
* BroadcastTxError shapes), or carried in a failed DeliverTx's rawLog (raced in-block; the ante
|
|
201
|
+
* handler reverts, so the sequence was NOT consumed there either).
|
|
202
|
+
*/
|
|
203
|
+
export function isSequenceMismatch(err) {
|
|
204
|
+
const text = String(err).toLowerCase();
|
|
205
|
+
return text.includes("account sequence mismatch") || text.includes("incorrect account sequence");
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Which side of the counter a mismatch is on — the two directions need OPPOSITE heals. The text is
|
|
209
|
+
* `expected E, got G` where E is the chain's counter and G is what we signed with:
|
|
210
|
+
* - G > E ("ahead"): the DO burned numbers on txs that died before inclusion — reset heals it.
|
|
211
|
+
* - G < E ("behind"): we signed off a committed-state account read while our OWN previous tx was
|
|
212
|
+
* still in the mempool (`chainSequence` never includes pending txs, and the DO trusts it after
|
|
213
|
+
* its 7s staleness window). The DO's counter is fine; a reset would force the next allocation
|
|
214
|
+
* onto the same stale read. The heal is waiting out the block instead.
|
|
215
|
+
* `null` when the message doesn't carry the numbers — treated as ahead (today's conservative reset).
|
|
216
|
+
*/
|
|
217
|
+
function sequenceMismatchDirection(err) {
|
|
218
|
+
const m = String(err).match(/expected (\d+), got (\d+)/);
|
|
219
|
+
return m ? (Number(m[2]) > Number(m[1]) ? "ahead" : "behind") : null;
|
|
220
|
+
}
|
|
221
|
+
/** One ImpactHub block — how long a behind-mismatch waits for its in-flight tx to commit. */
|
|
222
|
+
const BLOCK_TIME_MS = 6_000;
|
|
223
|
+
/**
|
|
224
|
+
* Broadcast with the poisoned-counter heal. The SequenceManagerDO is advance-on-allocate with no
|
|
225
|
+
* failure feedback: a tx that dies before block inclusion (simulate, CheckTx, broadcast error)
|
|
226
|
+
* burns its number in the DO but never on chain, and under load the DO's 7s stale-resync cannot
|
|
227
|
+
* fire — every retry's allocation refreshes the staleness clock — so ONE failed write cascades
|
|
228
|
+
* into "expected N, got N+2" on every concurrent workflow. A mismatch is the moment the burn
|
|
229
|
+
* becomes visible: clear the counter via the DO's own POST /reset (the instance is per signer
|
|
230
|
+
* address, nothing else is touched) so the caller's workflow-step retry re-reads the chain
|
|
231
|
+
* sequence fresh. The reset is fail-soft — it must never mask the broadcast error, and the next
|
|
232
|
+
* mismatch would retry it anyway.
|
|
233
|
+
*
|
|
234
|
+
* A BEHIND mismatch (`got < expected`, see `sequenceMismatchDirection`) never resets: it sleeps
|
|
235
|
+
* one block so the in-flight tx commits, then rethrows — the workflow-step retry's fresh chain
|
|
236
|
+
* read is then correct, and if that tx already did this claim's job the caller's
|
|
237
|
+
* `isAlreadyLanded` path records it.
|
|
238
|
+
*/
|
|
239
|
+
export async function broadcastWithSequenceReset(stub, broadcast) {
|
|
240
|
+
const heal = (cause) => sequenceMismatchDirection(cause) === "behind"
|
|
241
|
+
? new Promise((r) => setTimeout(r, BLOCK_TIME_MS))
|
|
242
|
+
: stub.fetch(new Request("http://do/reset", { method: "POST" })).then(() => { }, () => { });
|
|
243
|
+
try {
|
|
244
|
+
const res = await broadcast();
|
|
245
|
+
if (res.code !== 0 && isSequenceMismatch(res.rawLog))
|
|
246
|
+
await heal(res.rawLog);
|
|
247
|
+
return res;
|
|
248
|
+
}
|
|
249
|
+
catch (err) {
|
|
250
|
+
if (isSequenceMismatch(err))
|
|
251
|
+
await heal(err);
|
|
252
|
+
throw err;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* This oracle's signing client for the act lane (README "How a claim flows" step 6). Callers gate on
|
|
257
|
+
* `config.ORACLE_SECP_MNEMONIC` BEFORE calling (the fail-safe skip is theirs); reaching here
|
|
258
|
+
* without it is a programmer error. Fee is `auto` off the fixed gas price — the subscriptions-api
|
|
259
|
+
* convention.
|
|
260
|
+
*
|
|
261
|
+
* Built FRESH per call: the SigningStargateClient (its RPC connection) and the SequenceManagerDO
|
|
262
|
+
* stub are I/O objects bound to the calling request/step, and Cloudflare rejects reusing them from
|
|
263
|
+
* a different request (the OutgoingFactory error). Only the wallet above is cached; sequence state
|
|
264
|
+
* lives in the DO, so rebuilding the client per call is the intended pattern (storeCloudflare docs).
|
|
265
|
+
*/
|
|
266
|
+
export async function getOracleSigner(config, sequenceManager) {
|
|
267
|
+
const { address, wallet } = await getOracleWallet(config);
|
|
268
|
+
const [sdk, { GasPrice }] = await Promise.all([getIxoSdk(), import("@cosmjs/stargate")]);
|
|
269
|
+
// One DO instance per signer address — the atomic sequence allocator. The stub is acquired in
|
|
270
|
+
// THIS context and used only here; it is never cached across requests.
|
|
271
|
+
const stub = sequenceManager.get(sequenceManager.idFromName(address));
|
|
272
|
+
const client = await sdk.createSigningClient(config.CHAIN_RPC_URL, wallet, false, { gasPrice: GasPrice.fromString("0.025uixo") }, sdk.createDOStoreFunctions(stub));
|
|
273
|
+
return {
|
|
274
|
+
address,
|
|
275
|
+
did: `did:ixo:${address}`,
|
|
276
|
+
signAndBroadcast: (msgs, memo) => timedRpc("broadcast", () => broadcastWithSequenceReset(stub, () => client.signAndBroadcast(address, msgs, "auto", memo))),
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
//# sourceMappingURL=chain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chain.js","sourceRoot":"","sources":["../../../src/lib/ixo/chain.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The claim bot — the DATA plane of a claim (§4 steps 2, 4, 5).
|
|
3
|
+
*
|
|
4
|
+
* URL resolution mirrors the portal EXACTLY (constants/matrix.ts, didMatrixBatcher.ts): entity DID
|
|
5
|
+
* → its MatrixHomeServer serviceEndpoint (default home server if it declares none) → normalize →
|
|
6
|
+
* `https://claim.bot.{domain}`. The body read is a hand-rolled `POST {bot}/action` `get-claim`
|
|
7
|
+
* (delegation-backed UCAN); attachments come back already DECRYPTED from `GET {bot}/media/...`
|
|
8
|
+
* (attachments.ts reads them on demand).
|
|
9
|
+
*/
|
|
10
|
+
import type { Config } from "../../config.js";
|
|
11
|
+
import type { Logger } from "../logger.js";
|
|
12
|
+
import type { TraceContext } from "../tracing.js";
|
|
13
|
+
export interface ClaimBotDeps {
|
|
14
|
+
config: Config;
|
|
15
|
+
trace: TraceContext;
|
|
16
|
+
cache: KVNamespace;
|
|
17
|
+
logger: Logger;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Normalize a Matrix home-server base URL (portal constants/matrix.ts): strip whitespace + stray
|
|
21
|
+
* CR/LF some on-chain serviceEndpoints carry, prepend https:// if bare, strip trailing slashes.
|
|
22
|
+
*/
|
|
23
|
+
export declare function normalizeMatrixHomeServerUrl(url: string | null | undefined): string;
|
|
24
|
+
/**
|
|
25
|
+
* Resolve the claim-bot base URL for a claim's entity DID, the full portal way (Step 2). Falls back
|
|
26
|
+
* to the network default home server when the entity declares no MatrixHomeServer — this default is
|
|
27
|
+
* the portal's own behavior, not a shortcut.
|
|
28
|
+
*/
|
|
29
|
+
export declare function resolveClaimBotUrl(deps: ClaimBotDeps, entityDid: string): Promise<string>;
|
|
30
|
+
/** The claim bot's did:web (the audience of our invocation), cached. */
|
|
31
|
+
export declare function getBotDid(deps: ClaimBotDeps, botUrl: string): Promise<string>;
|
|
32
|
+
/**
|
|
33
|
+
* Fetch and extract the claim body via `POST {bot}/action` `get-claim`. Returns the survey answers
|
|
34
|
+
* object (`data.identifier ? data : data.credentialSubject`, per portal + editor), or null when the
|
|
35
|
+
* collection room doesn't hold it (bot 404) — the puller then asks the next store. Fails closed
|
|
36
|
+
* otherwise: 401/403 → forbidden, 5xx/timeout → unavailable. The THIRD lane the puller tries, after
|
|
37
|
+
* the VFS claims lane and a VFS public copy (index.ts).
|
|
38
|
+
*/
|
|
39
|
+
export declare function getClaimBody(deps: ClaimBotDeps, botUrl: string, botToken: string, collectionId: string, claimId: string): Promise<Record<string, unknown> | null>;
|
|
40
|
+
/**
|
|
41
|
+
* A stored claim document → the answers the evaluator reads. The bot returns `data` verbatim as the
|
|
42
|
+
* submitting client saved it (bot handlers/claims.ts: `claimData = decryptedEvent.content?.data`),
|
|
43
|
+
* and the CID-verified stores serve the whole stored document (a cellnode the W3C VC) — so every
|
|
44
|
+
* lane hits the same two shapes. Some clients wrap
|
|
45
|
+
* the answers in a VC, so unwrap `credentialSubject` when it's there; otherwise the document IS the
|
|
46
|
+
* answers. Same read the portal does (`pages/domain/[entityDid]/claims/index.tsx`).
|
|
47
|
+
*/
|
|
48
|
+
export declare function unwrapClaimAnswers(vc: Record<string, unknown>): Record<string, unknown>;
|
|
49
|
+
//# sourceMappingURL=claim-bot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claim-bot.d.ts","sourceRoot":"","sources":["../../../src/lib/ixo/claim-bot.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAG3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI/C,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,YAAY,CAAC;IACpB,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAMnF;AAUD;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAY/F;AAED,wEAAwE;AACxE,wBAAgB,SAAS,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE7E;AAOD;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAsDzC;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAOvF"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The claim bot — the DATA plane of a claim (§4 steps 2, 4, 5).
|
|
3
|
+
*
|
|
4
|
+
* URL resolution mirrors the portal EXACTLY (constants/matrix.ts, didMatrixBatcher.ts): entity DID
|
|
5
|
+
* → its MatrixHomeServer serviceEndpoint (default home server if it declares none) → normalize →
|
|
6
|
+
* `https://claim.bot.{domain}`. The body read is a hand-rolled `POST {bot}/action` `get-claim`
|
|
7
|
+
* (delegation-backed UCAN); attachments come back already DECRYPTED from `GET {bot}/media/...`
|
|
8
|
+
* (attachments.ts reads them on demand).
|
|
9
|
+
*/
|
|
10
|
+
import { AppError } from "../errors.js";
|
|
11
|
+
import { fetchClient, MAX_JSON_DOC_BYTES, readCappedBytes } from "../http/client.js";
|
|
12
|
+
import { getMatrixHomeServerEndpoint } from "./blocksync/index.js";
|
|
13
|
+
import { resolveServiceDid } from "./did.js";
|
|
14
|
+
/**
|
|
15
|
+
* Normalize a Matrix home-server base URL (portal constants/matrix.ts): strip whitespace + stray
|
|
16
|
+
* CR/LF some on-chain serviceEndpoints carry, prepend https:// if bare, strip trailing slashes.
|
|
17
|
+
*/
|
|
18
|
+
export function normalizeMatrixHomeServerUrl(url) {
|
|
19
|
+
if (!url)
|
|
20
|
+
return "";
|
|
21
|
+
const trimmed = url.replace(/\s+/g, "");
|
|
22
|
+
if (trimmed === "")
|
|
23
|
+
return "";
|
|
24
|
+
const withProtocol = /^https?:\/\//.test(trimmed) ? trimmed : `https://${trimmed}`;
|
|
25
|
+
return withProtocol.replace(/\/+$/, "");
|
|
26
|
+
}
|
|
27
|
+
function extractDomain(url) {
|
|
28
|
+
try {
|
|
29
|
+
return new URL(url).hostname;
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return url.replace(/^https?:\/\//, "").split("/")[0] ?? url;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Resolve the claim-bot base URL for a claim's entity DID, the full portal way (Step 2). Falls back
|
|
37
|
+
* to the network default home server when the entity declares no MatrixHomeServer — this default is
|
|
38
|
+
* the portal's own behavior, not a shortcut.
|
|
39
|
+
*/
|
|
40
|
+
export async function resolveClaimBotUrl(deps, entityDid) {
|
|
41
|
+
if (deps.config.CLAIM_BOT_URL_OVERRIDE)
|
|
42
|
+
return deps.config.CLAIM_BOT_URL_OVERRIDE;
|
|
43
|
+
const endpoint = await getMatrixHomeServerEndpoint(deps, entityDid);
|
|
44
|
+
const homeServer = normalizeMatrixHomeServerUrl(endpoint) ||
|
|
45
|
+
normalizeMatrixHomeServerUrl(deps.config.MATRIX_HOMESERVER_URL);
|
|
46
|
+
if (!homeServer)
|
|
47
|
+
throw AppError.unavailable("No Matrix home server resolvable for entity");
|
|
48
|
+
const domain = extractDomain(homeServer);
|
|
49
|
+
const botUrl = `https://claim.bot.${domain}`;
|
|
50
|
+
deps.logger.debug("claim-bot.resolved", { entityDid, homeServer, botUrl });
|
|
51
|
+
return botUrl;
|
|
52
|
+
}
|
|
53
|
+
/** The claim bot's did:web (the audience of our invocation), cached. */
|
|
54
|
+
export function getBotDid(deps, botUrl) {
|
|
55
|
+
return resolveServiceDid(deps.trace, deps.cache, botUrl);
|
|
56
|
+
}
|
|
57
|
+
const UCAN_HEADERS = (token) => ({
|
|
58
|
+
authorization: `Bearer ${token}`,
|
|
59
|
+
"x-auth-type": "ucan",
|
|
60
|
+
});
|
|
61
|
+
/**
|
|
62
|
+
* Fetch and extract the claim body via `POST {bot}/action` `get-claim`. Returns the survey answers
|
|
63
|
+
* object (`data.identifier ? data : data.credentialSubject`, per portal + editor), or null when the
|
|
64
|
+
* collection room doesn't hold it (bot 404) — the puller then asks the next store. Fails closed
|
|
65
|
+
* otherwise: 401/403 → forbidden, 5xx/timeout → unavailable. The THIRD lane the puller tries, after
|
|
66
|
+
* the VFS claims lane and a VFS public copy (index.ts).
|
|
67
|
+
*/
|
|
68
|
+
export async function getClaimBody(deps, botUrl, botToken, collectionId, claimId) {
|
|
69
|
+
let res;
|
|
70
|
+
try {
|
|
71
|
+
// A POST in shape but a pure read in effect (`get-claim`) — safe to retry transient failures.
|
|
72
|
+
res = await fetchClient(`${botUrl}/action`, {
|
|
73
|
+
method: "POST",
|
|
74
|
+
trace: deps.trace,
|
|
75
|
+
attempts: 3,
|
|
76
|
+
headers: { "content-type": "application/json", ...UCAN_HEADERS(botToken) },
|
|
77
|
+
body: JSON.stringify({
|
|
78
|
+
action: "get-claim",
|
|
79
|
+
flags: { collection: collectionId, cid: claimId },
|
|
80
|
+
}),
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
catch (err) {
|
|
84
|
+
throw AppError.unavailable("Claim bot unreachable", err);
|
|
85
|
+
}
|
|
86
|
+
if (res.status === 404) {
|
|
87
|
+
await res.body?.cancel().catch(() => { });
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
if (!res.ok) {
|
|
91
|
+
// Discarded bodies pin one of the isolate's 6 open connections until GC.
|
|
92
|
+
await res.body?.cancel().catch(() => { });
|
|
93
|
+
if (res.status === 401 || res.status === 403) {
|
|
94
|
+
throw AppError.forbidden("Claim bot rejected the delegation (owner not room admin?)");
|
|
95
|
+
}
|
|
96
|
+
throw AppError.unavailable(`Claim bot returned ${res.status}`);
|
|
97
|
+
}
|
|
98
|
+
// The same cap the other body lanes read under (verified-read.ts) — the more so here: this host
|
|
99
|
+
// is derived from an on-chain `MatrixHomeServer` endpoint, so "the bot" is whoever the entity's
|
|
100
|
+
// author says it is. Oversize is deterministic, exactly as there: a body that IS here but cannot
|
|
101
|
+
// be a claim is never a fall-through to the next store.
|
|
102
|
+
let bytes;
|
|
103
|
+
try {
|
|
104
|
+
bytes = await readCappedBytes(res, MAX_JSON_DOC_BYTES);
|
|
105
|
+
}
|
|
106
|
+
catch (err) {
|
|
107
|
+
throw AppError.unavailable("Claim bot body read failed", err);
|
|
108
|
+
}
|
|
109
|
+
if (!bytes) {
|
|
110
|
+
throw AppError.notFound(`matrix body for ${claimId} exceeds the ${MAX_JSON_DOC_BYTES} B cap`);
|
|
111
|
+
}
|
|
112
|
+
let payload = null;
|
|
113
|
+
try {
|
|
114
|
+
payload = JSON.parse(new TextDecoder().decode(bytes));
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
/* not JSON — the bot holds nothing readable for this claim: a miss, as before */
|
|
118
|
+
}
|
|
119
|
+
const vc = payload?.data;
|
|
120
|
+
if (!vc || typeof vc !== "object")
|
|
121
|
+
return null;
|
|
122
|
+
return unwrapClaimAnswers(vc);
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* A stored claim document → the answers the evaluator reads. The bot returns `data` verbatim as the
|
|
126
|
+
* submitting client saved it (bot handlers/claims.ts: `claimData = decryptedEvent.content?.data`),
|
|
127
|
+
* and the CID-verified stores serve the whole stored document (a cellnode the W3C VC) — so every
|
|
128
|
+
* lane hits the same two shapes. Some clients wrap
|
|
129
|
+
* the answers in a VC, so unwrap `credentialSubject` when it's there; otherwise the document IS the
|
|
130
|
+
* answers. Same read the portal does (`pages/domain/[entityDid]/claims/index.tsx`).
|
|
131
|
+
*/
|
|
132
|
+
export function unwrapClaimAnswers(vc) {
|
|
133
|
+
if ("identifier" in vc)
|
|
134
|
+
return vc;
|
|
135
|
+
const credentialSubject = vc.credentialSubject;
|
|
136
|
+
if (credentialSubject && typeof credentialSubject === "object") {
|
|
137
|
+
return credentialSubject;
|
|
138
|
+
}
|
|
139
|
+
return vc;
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=claim-bot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claim-bot.js","sourceRoot":"","sources":["../../../src/lib/ixo/claim-bot.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Proving an owner→oracle delegation was SIGNED by the issuer it names.
|
|
3
|
+
*
|
|
4
|
+
* `parseDelegation` (ucanto's `extract`) decodes a CAR without checking its signature, and
|
|
5
|
+
* `verifyOwnerDelegation` (ucan.ts) compares only the fields the CAR itself claims — issuer,
|
|
6
|
+
* audience, resource, expiry. Without this check any holder of an evaluate grant on a collection
|
|
7
|
+
* (a competing oracle hired on it holds one by definition) could re-register it with a CAR naming
|
|
8
|
+
* the owner as issuer and signed by anyone: the forgery was stored, its `exp` (or none — valid
|
|
9
|
+
* forever, never refreshed from the UCAN Store) became the row's, and the claim bot refused every
|
|
10
|
+
* pull made under it, so a claim held only in Matrix failed for good.
|
|
11
|
+
*
|
|
12
|
+
* The signature is checked by `@ixo/ucan`'s own `validateDelegation` (`serverDid = ORACLE_DID`, the
|
|
13
|
+
* delegation's audience). The issuer's keys are resolved HERE (`resolveIssuerKeys`), through the ixo
|
|
14
|
+
* resolver on Blocksync over `fetchClient` (timeout, metrics), so its failure can be sorted before
|
|
15
|
+
* the validator sees it — by the SHAPE of Blocksync's answer, never by message text: a clean GraphQL
|
|
16
|
+
* answer with no document, or a document with no Ed25519 key, is as deterministic as a bad
|
|
17
|
+
* signature — a 400 (the store and pull paths read 400 as "skip this CAR", ucan-store.ts /
|
|
18
|
+
* lib/ixo/index.ts); an HTTP failure, a GraphQL `errors[]` or a throw is a 503 the caller retries. The validator then gets those keys through a closed resolver and makes no
|
|
19
|
+
* network call. An owner delegation is a root — the owner IS the issuer (`verifyOwnerDelegation`
|
|
20
|
+
* requires it): the portal signs it with `signerFromMnemonic(<user mnemonic>, did:ixo)`, the CLI
|
|
21
|
+
* with the AuthHub `edSigningMnemonic` — so the closed resolver answers for that one DID only.
|
|
22
|
+
*/
|
|
23
|
+
import type { Config } from "../../config.js";
|
|
24
|
+
import type { TraceContext } from "../tracing.js";
|
|
25
|
+
/** An issuer's published keys, as the resolver hands them to the validator. */
|
|
26
|
+
export type IssuerKeys = `did:key:${string}`[];
|
|
27
|
+
/**
|
|
28
|
+
* The `did:key`s `issuerDid` publishes on chain. 400 (`ISSUER_UNRESOLVABLE`) when Blocksync answered
|
|
29
|
+
* cleanly and the DID has no document or no Ed25519 key; 503 for anything else. Resolve once per
|
|
30
|
+
* caller and hand the keys to every CAR it verifies (ucan-store.ts tries several).
|
|
31
|
+
*/
|
|
32
|
+
export declare function resolveIssuerKeys(config: Config, issuerDid: string, trace?: TraceContext): Promise<IssuerKeys>;
|
|
33
|
+
/**
|
|
34
|
+
* Throw unless the CAR's signature verifies against a key `issuerDid` publishes on chain — 400 when
|
|
35
|
+
* it does not (`details.code` carries the validator's code), and `resolveIssuerKeys`' answers when
|
|
36
|
+
* the keys cannot be had. `keys` reuses a resolution already made for the same issuer. The CAR must
|
|
37
|
+
* be a ROOT: a proof inside it is signed by someone else, whom the closed resolver does not answer
|
|
38
|
+
* for, so it is refused like a bad signature.
|
|
39
|
+
*/
|
|
40
|
+
export declare function verifyDelegationSignature(config: Config, car: string, issuerDid: string, keys?: () => Promise<IssuerKeys>,
|
|
41
|
+
/** Whom the delegation must be addressed to: this oracle's `ORACLE_DID` unless said (a payment
|
|
42
|
+
* delegation is the facilitator's). */
|
|
43
|
+
audience?: string): Promise<void>;
|
|
44
|
+
//# sourceMappingURL=delegation-verify.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delegation-verify.d.ts","sourceRoot":"","sources":["../../../src/lib/ixo/delegation-verify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAG3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,+EAA+E;AAC/E,MAAM,MAAM,UAAU,GAAG,WAAW,MAAM,EAAE,EAAE,CAAC;AAK/C;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,YAAY,GACnB,OAAO,CAAC,UAAU,CAAC,CAyCrB;AAED;;;;;;GAMG;AACH,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC;AAChC;wCACwC;AACxC,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAwBf"}
|