@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,229 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What the v1 route files share: the gates every collection-scoped read/write runs, and the
|
|
3
|
+
* row → response projections (dates as ISO strings, and nothing that shouldn't leave).
|
|
4
|
+
*/
|
|
5
|
+
import { eq, getTableColumns, sql } from "drizzle-orm";
|
|
6
|
+
import { watchedCollections, } from "../../db/schema.js";
|
|
7
|
+
import { AppError } from "../../lib/errors.js";
|
|
8
|
+
import { hasEvaluateGrant } from "../../lib/ixo/authz.js";
|
|
9
|
+
import { getClaimById, getCollection, getEntityOwner } from "../../lib/ixo/blocksync/index.js";
|
|
10
|
+
import { readCache } from "../../lib/metrics.js";
|
|
11
|
+
import { liveReviewerGrants } from "../../lib/review/reviewer-grant.js";
|
|
12
|
+
/** How long the read gate trusts a chain-owner read (F2: ≤ 5 min, like the grant read beside it). */
|
|
13
|
+
const OWNER_CACHE_TTL_SEC = 300;
|
|
14
|
+
/** A claim's submitter never changes on chain, so its read is cached long (a portal polls it). */
|
|
15
|
+
const AGENT_CACHE_TTL_SEC = 86_400;
|
|
16
|
+
/**
|
|
17
|
+
* Who may READ (and scan) a watched collection — the same surface that may register it, as the
|
|
18
|
+
* chain says it is NOW (ownership review F2): the current chain owner (who pays the fees), or any
|
|
19
|
+
* holder of an active on-chain `EvaluateClaimAuthorization` for it (the portal's "Grant Role" flow —
|
|
20
|
+
* the enroller included, but only while it is still hired). Never the row's memory alone: an
|
|
21
|
+
* ex-owner or a revoked enroller reads nothing. `reviewers` also lets in a live reviewer of the
|
|
22
|
+
* collection (company authority D2) — on the claim and review reads they answer from, not on scan.
|
|
23
|
+
* `agentOf` lets in the named claim's own SUBMITTER (its on-chain agent) — on that one claim's
|
|
24
|
+
* record only, never the list, reviews, pause/resume or scan; `asAgent` says that is the only
|
|
25
|
+
* door that opened, so the route can keep others' answers back. It is tried last: the readers above
|
|
26
|
+
* never pay its Blocksync read, and an outage there is a 503, never a grant.
|
|
27
|
+
* The chain reads are KV-cached: a stale answer costs a reader five minutes, not a registration.
|
|
28
|
+
* 404 (not 403) when we don't watch it at all, on purpose: the portal needs to tell "not hired"
|
|
29
|
+
* apart from "no rights". Returns the gate's projection (callers need cursor/status).
|
|
30
|
+
*/
|
|
31
|
+
export async function assertCanRead(c, collectionId, opts = {}) {
|
|
32
|
+
const watched = await watchedOr404(c, collectionId);
|
|
33
|
+
const asAgent = await assertReader(c, watched, opts);
|
|
34
|
+
return { ...watched, asAgent };
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Who may PAUSE or RESUME a watched collection: the chain owner, an `ORACLE_ADMIN_DIDS` invoker, or the
|
|
38
|
+
* current enroller WHILE it still holds a live evaluate grant (a revoked enroller is no longer
|
|
39
|
+
* hired, whatever the row remembers). A plain grant holder may read it but not stall it or lift a
|
|
40
|
+
* stop — a competing oracle hired on the same collection holds a grant by definition, so either
|
|
41
|
+
* direction would hand it the collection. 404 unwatched, 403 otherwise. The owner is the row's
|
|
42
|
+
* `ownerDid` (the chain owner, resolved at register; an entity transfer needs a re-register), so
|
|
43
|
+
* this costs no chain read beyond the read gate's KV-cached grant read.
|
|
44
|
+
*/
|
|
45
|
+
export async function assertCanManage(c, collectionId) {
|
|
46
|
+
const { did, address } = c.get("principal");
|
|
47
|
+
const watched = await watchedOr404(c, collectionId);
|
|
48
|
+
// F2 residual: the owner is the row's `ownerDid` (as of register), not the chain owner now.
|
|
49
|
+
if (did === watched.ownerDid || c.get("config").ORACLE_ADMIN_DIDS.includes(did))
|
|
50
|
+
return watched;
|
|
51
|
+
const holds = await holdsGrant(c, address, collectionId);
|
|
52
|
+
if (holds && did === watched.enrolledByDid)
|
|
53
|
+
return watched;
|
|
54
|
+
if (!holds && did !== watched.enrolledByDid) {
|
|
55
|
+
throw AppError.forbidden("Evaluate rights on this collection are required to access it");
|
|
56
|
+
}
|
|
57
|
+
throw AppError.forbidden(`Only the owner of collection ${collectionId}, whoever registered it (while it holds an evaluate grant), or an operator may pause or resume it`);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Who may change a watched collection's SETTINGS (company authority D7) or erase its claims' data
|
|
61
|
+
* (F14): its CURRENT chain owner only — no enroller, grant holder or operator, since these are the
|
|
62
|
+
* owner's say over money and data on their collection. Read live off the chain (the collection's entity → its owner), never
|
|
63
|
+
* the row's `ownerDid`, which an entity transfer leaves stale until a re-register. 404 unwatched,
|
|
64
|
+
* 403 otherwise; chain trouble throws (a 503), never a silent "not the owner". Answers the owner's
|
|
65
|
+
* address too: a setting records who set it, so the act lane can tell when the owner has changed.
|
|
66
|
+
*/
|
|
67
|
+
export async function assertChainOwner(c, collectionId,
|
|
68
|
+
/** What the refusal says the owner alone may do. */
|
|
69
|
+
what = "change its settings") {
|
|
70
|
+
const watched = await watchedOr404(c, collectionId);
|
|
71
|
+
const deps = { config: c.get("config"), trace: c.get("trace") };
|
|
72
|
+
const collection = await getCollection(deps, collectionId);
|
|
73
|
+
const owner = collection?.entity ? await getEntityOwner(deps, collection.entity) : null;
|
|
74
|
+
if (!owner || owner !== c.get("principal").address) {
|
|
75
|
+
throw AppError.forbidden(`Only the owner of collection ${collectionId} on chain may ${what}`);
|
|
76
|
+
}
|
|
77
|
+
return { ...watched, owner };
|
|
78
|
+
}
|
|
79
|
+
const holdsGrant = (c, address, collectionId) => hasEvaluateGrant({ config: c.get("config"), trace: c.get("trace"), cache: c.env.CACHE_KV }, address, collectionId);
|
|
80
|
+
/**
|
|
81
|
+
* What the gates read off the row — never the whole row: it carries the owner's delegation CAR (up
|
|
82
|
+
* to 64 KB), which no identity or status check needs.
|
|
83
|
+
*/
|
|
84
|
+
const gateColumns = {
|
|
85
|
+
collectionId: watchedCollections.collectionId,
|
|
86
|
+
ownerDid: watchedCollections.ownerDid,
|
|
87
|
+
enrolledByDid: watchedCollections.enrolledByDid,
|
|
88
|
+
status: watchedCollections.status,
|
|
89
|
+
cursor: watchedCollections.cursor,
|
|
90
|
+
};
|
|
91
|
+
export async function watchedOr404(c, collectionId) {
|
|
92
|
+
const db = await c.var.db();
|
|
93
|
+
const [watched] = await db
|
|
94
|
+
.select(gateColumns)
|
|
95
|
+
.from(watchedCollections)
|
|
96
|
+
.where(eq(watchedCollections.collectionId, collectionId));
|
|
97
|
+
if (!watched) {
|
|
98
|
+
throw AppError.notFound(`Collection ${collectionId} is not watched by this oracle`);
|
|
99
|
+
}
|
|
100
|
+
return watched;
|
|
101
|
+
}
|
|
102
|
+
/** Throws unless the invoker may read; true when only `agentOf` let them in. */
|
|
103
|
+
async function assertReader(c, watched, { reviewers, agentOf }) {
|
|
104
|
+
const { did, address } = c.get("principal");
|
|
105
|
+
const { collectionId } = watched;
|
|
106
|
+
if (await holdsGrant(c, address, collectionId))
|
|
107
|
+
return false;
|
|
108
|
+
if ((await liveOwner(c, collectionId)) === address)
|
|
109
|
+
return false;
|
|
110
|
+
if (reviewers && (await isLiveReviewer(c, collectionId, did)))
|
|
111
|
+
return false;
|
|
112
|
+
if (agentOf && (await isClaimAgent(c, agentOf, collectionId)))
|
|
113
|
+
return true;
|
|
114
|
+
throw AppError.forbidden("Only the collection's owner, an evaluator it hired, or a reviewer it granted may access it");
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* The invoker submitted `claimId` to `collectionId` on chain — matched by EITHER the claim's
|
|
118
|
+
* Blocksync `agentDid` or its `agentAddress`. Neither `claim_ingests` nor `decisions` stores the
|
|
119
|
+
* agent (only the duplicate registries do, and only when a rubric declares `unique`), so this is one
|
|
120
|
+
* Blocksync read, KV-cached by claim since the submitter is immutable. The cache holds the claim's
|
|
121
|
+
* own collection, compared here at read time, so it never depends on the request that filled it. A
|
|
122
|
+
* claim Blocksync does not know is not cached: it may just not be indexed yet.
|
|
123
|
+
*/
|
|
124
|
+
async function isClaimAgent(c, claimId, collectionId) {
|
|
125
|
+
const key = `claim-agent:${claimId}`;
|
|
126
|
+
const cached = await readCache("claim-agent", () => c.env.CACHE_KV.get(key));
|
|
127
|
+
let agent = cached ? JSON.parse(cached) : null;
|
|
128
|
+
if (!agent) {
|
|
129
|
+
const claim = await getClaimById({ config: c.get("config"), trace: c.get("trace") }, claimId);
|
|
130
|
+
if (!claim)
|
|
131
|
+
return false;
|
|
132
|
+
agent = { collectionId: claim.collectionId, did: claim.agentDid, address: claim.agentAddress };
|
|
133
|
+
await c.env.CACHE_KV.put(key, JSON.stringify(agent), {
|
|
134
|
+
expirationTtl: AGENT_CACHE_TTL_SEC,
|
|
135
|
+
}).catch(() => { });
|
|
136
|
+
}
|
|
137
|
+
const { did, address } = c.get("principal");
|
|
138
|
+
return (agent.collectionId === collectionId &&
|
|
139
|
+
((!!agent.did && agent.did === did) || (!!agent.address && agent.address === address)));
|
|
140
|
+
}
|
|
141
|
+
/** The collection entity's owner address on chain, cached `OWNER_CACHE_TTL_SEC`; null = none. */
|
|
142
|
+
async function liveOwner(c, collectionId) {
|
|
143
|
+
const key = `owner:${collectionId}`;
|
|
144
|
+
const cached = await readCache("owner", () => c.env.CACHE_KV.get(key));
|
|
145
|
+
if (cached !== null)
|
|
146
|
+
return cached || null;
|
|
147
|
+
const deps = { config: c.get("config"), trace: c.get("trace") };
|
|
148
|
+
const collection = await getCollection(deps, collectionId);
|
|
149
|
+
const owner = collection?.entity ? await getEntityOwner(deps, collection.entity) : null;
|
|
150
|
+
await c.env.CACHE_KV.put(key, owner ?? "", { expirationTtl: OWNER_CACHE_TTL_SEC }).catch(() => { });
|
|
151
|
+
return owner;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* A grant to `did` on the collection that stands now (`liveReviewerGrants`): unrevoked, in its
|
|
155
|
+
* window, and from a root still controlling the collection's entity — read live, so a controller
|
|
156
|
+
* removed on chain takes their reviewers' reads with them at once. Blocksync down is a 503.
|
|
157
|
+
*/
|
|
158
|
+
async function isLiveReviewer(c, collectionId, did) {
|
|
159
|
+
const live = await liveReviewerGrants({ config: c.get("config"), trace: c.get("trace") }, await c.var.db(), collectionId, { memberDid: did });
|
|
160
|
+
return live.length > 0;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* The watched row as the API returns it, selected without the delegation CAR: the CAR never leaves
|
|
164
|
+
* (the read path is its only consumer), and `hasDelegation` + the expiry tell the owner everything
|
|
165
|
+
* they can act on — computed in SQL, so a list never loads a 64 KB column per row to test it.
|
|
166
|
+
*/
|
|
167
|
+
const { delegationCar, ...viewColumns } = getTableColumns(watchedCollections);
|
|
168
|
+
export const collectionColumns = {
|
|
169
|
+
...viewColumns,
|
|
170
|
+
hasDelegation: sql `${delegationCar} IS NOT NULL`.mapWith(Boolean),
|
|
171
|
+
};
|
|
172
|
+
/** A full row (the register route's) as a `CollectionView`. */
|
|
173
|
+
export function viewOf({ delegationCar: car, ...rest }) {
|
|
174
|
+
return { ...rest, hasDelegation: car !== null };
|
|
175
|
+
}
|
|
176
|
+
export function collectionBody(row) {
|
|
177
|
+
return {
|
|
178
|
+
...row,
|
|
179
|
+
delegationExpiresAt: row.delegationExpiresAt?.toISOString() ?? null,
|
|
180
|
+
lastScannedAt: row.lastScannedAt?.toISOString() ?? null,
|
|
181
|
+
createdAt: row.createdAt.toISOString(),
|
|
182
|
+
updatedAt: row.updatedAt.toISOString(),
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
export function ingestBody(row) {
|
|
186
|
+
return {
|
|
187
|
+
status: row.status,
|
|
188
|
+
instanceId: row.instanceId,
|
|
189
|
+
error: row.error,
|
|
190
|
+
createdAt: row.createdAt.toISOString(),
|
|
191
|
+
updatedAt: row.updatedAt.toISOString(),
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
/** The engine's answer verbatim — codes, scores and identifiers; the row never held answer values. */
|
|
195
|
+
export function decisionBody(row) {
|
|
196
|
+
return {
|
|
197
|
+
rubricId: row.rubricId,
|
|
198
|
+
factsDigest: row.factsDigest,
|
|
199
|
+
verdict: row.verdict,
|
|
200
|
+
status: row.status,
|
|
201
|
+
resultDigest: row.resultDigest,
|
|
202
|
+
receiptCid: row.receiptCid,
|
|
203
|
+
receiptJws: row.receiptJws,
|
|
204
|
+
decision: row.decision,
|
|
205
|
+
explanation: row.explanation,
|
|
206
|
+
chainStatus: row.chainStatus,
|
|
207
|
+
txHash: row.txHash,
|
|
208
|
+
chainError: row.chainError,
|
|
209
|
+
/** Which facts errored and why (engine `erroredFacts`) — null when none did. */
|
|
210
|
+
erroredFacts: row.erroredFacts,
|
|
211
|
+
createdAt: row.createdAt.toISOString(),
|
|
212
|
+
updatedAt: row.updatedAt.toISOString(),
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
export function reviewBody(row) {
|
|
216
|
+
return {
|
|
217
|
+
answers: row.answers,
|
|
218
|
+
reviewerDid: row.reviewerDid,
|
|
219
|
+
/** Whether `reviewerDid` is backed by the reviewer's own signature (design §B.3). The JWS
|
|
220
|
+
* itself never leaves: it carries the answer VALUES signed, and a read route has no business
|
|
221
|
+
* handing that to anyone who can read the collection. */
|
|
222
|
+
signed: row.attestationJws !== null,
|
|
223
|
+
answeredAt: row.answeredAt.toISOString(),
|
|
224
|
+
foldedAt: row.foldedAt?.toISOString() ?? null,
|
|
225
|
+
/** Why the fold did not land (e.g. the engine's STALE_REVIEW) — null until it fails, cleared by a re-POST. */
|
|
226
|
+
foldError: row.foldError,
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
//# sourceMappingURL=shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/routes/v1/shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `GET /.well-known/did.json` — this oracle's did:web document, so callers (the portal, the eval
|
|
3
|
+
* engine, every IXO service) can resolve the audience their invocations must target. Public. Derived
|
|
4
|
+
* from SERVICE_ED25519_MNEMONIC + ORACLE_HOSTNAME (memoized), exactly like the engine/store/bot
|
|
5
|
+
* serve theirs.
|
|
6
|
+
*
|
|
7
|
+
* `GET /.well-known/oauth-protected-resource/v1/mcp` — RFC 9728 metadata for the hosted MCP server
|
|
8
|
+
* (MCP over OAuth, spec 2026-10-06): an AI client that met `/v1/mcp`'s 401 reads it to find AuthHub.
|
|
9
|
+
* Public, cacheable, readable from any origin (AuthHub and the console fetch it); only with the API
|
|
10
|
+
* lane on, since `/v1/mcp` exists only then.
|
|
11
|
+
*/
|
|
12
|
+
import { Hono } from "hono";
|
|
13
|
+
import type { AppEnv } from "../context.js";
|
|
14
|
+
export declare const wellKnown: Hono<AppEnv, import("hono/types").BlankSchema, "/">;
|
|
15
|
+
//# sourceMappingURL=well-known.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"well-known.d.ts","sourceRoot":"","sources":["../../src/routes/well-known.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAKzC,eAAO,MAAM,SAAS,qDAAqB,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `GET /.well-known/did.json` — this oracle's did:web document, so callers (the portal, the eval
|
|
3
|
+
* engine, every IXO service) can resolve the audience their invocations must target. Public. Derived
|
|
4
|
+
* from SERVICE_ED25519_MNEMONIC + ORACLE_HOSTNAME (memoized), exactly like the engine/store/bot
|
|
5
|
+
* serve theirs.
|
|
6
|
+
*
|
|
7
|
+
* `GET /.well-known/oauth-protected-resource/v1/mcp` — RFC 9728 metadata for the hosted MCP server
|
|
8
|
+
* (MCP over OAuth, spec 2026-10-06): an AI client that met `/v1/mcp`'s 401 reads it to find AuthHub.
|
|
9
|
+
* Public, cacheable, readable from any origin (AuthHub and the console fetch it); only with the API
|
|
10
|
+
* lane on, since `/v1/mcp` exists only then.
|
|
11
|
+
*/
|
|
12
|
+
import { Hono } from "hono";
|
|
13
|
+
import { AppError } from "../lib/errors.js";
|
|
14
|
+
import { getDIDWeb } from "../lib/ixo/identity.js";
|
|
15
|
+
import { protectedResource } from "../lib/oauth/token.js";
|
|
16
|
+
export const wellKnown = new Hono();
|
|
17
|
+
wellKnown.get("/did.json", async (c) => {
|
|
18
|
+
const config = c.get("config");
|
|
19
|
+
if (!config.SERVICE_ED25519_MNEMONIC) {
|
|
20
|
+
throw AppError.internal("SERVICE_ED25519_MNEMONIC not configured");
|
|
21
|
+
}
|
|
22
|
+
const { didDocument } = await getDIDWeb(config.SERVICE_ED25519_MNEMONIC, config.ORACLE_HOSTNAME);
|
|
23
|
+
return c.json(didDocument);
|
|
24
|
+
});
|
|
25
|
+
wellKnown.get("/oauth-protected-resource/v1/mcp", (c) => {
|
|
26
|
+
const config = c.get("config");
|
|
27
|
+
if (!config.API_LANE)
|
|
28
|
+
throw AppError.notFound("No MCP server on this oracle");
|
|
29
|
+
// Any origin may read it, with no credentials — the app's CORS echoes allowed origins only.
|
|
30
|
+
c.header("Access-Control-Allow-Origin", "*");
|
|
31
|
+
c.res.headers.delete("Access-Control-Allow-Credentials");
|
|
32
|
+
c.header("Cache-Control", "public, max-age=300");
|
|
33
|
+
return c.json(protectedResource(config));
|
|
34
|
+
});
|
|
35
|
+
//# sourceMappingURL=well-known.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"well-known.js","sourceRoot":"","sources":["../../src/routes/well-known.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,IAAI,EAAU,CAAC;AAE5C,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IACrC,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC/B,IAAI,CAAC,MAAM,CAAC,wBAAwB,EAAE,CAAC;QACrC,MAAM,QAAQ,CAAC,QAAQ,CAAC,yCAAyC,CAAC,CAAC;IACrE,CAAC;IACD,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,wBAAwB,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;IACjG,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEH,SAAS,CAAC,GAAG,CAAC,kCAAkC,EAAE,CAAC,CAAC,EAAE,EAAE;IACtD,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC/B,IAAI,CAAC,MAAM,CAAC,QAAQ;QAAE,MAAM,QAAQ,CAAC,QAAQ,CAAC,8BAA8B,CAAC,CAAC;IAC9E,4FAA4F;IAC5F,CAAC,CAAC,MAAM,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;IAC7C,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,kCAAkC,CAAC,CAAC;IACzD,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE,qBAAqB,CAAC,CAAC;IACjD,OAAO,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;AAC3C,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@ixo/decision-oracle/runtime` — the WORKER-ONLY seam: what a provider calls from inside their own
|
|
3
|
+
* worker (a route, a queue consumer, their own cron, their own Workflow) when they need the kit to
|
|
4
|
+
* do something the lanes do not do by themselves.
|
|
5
|
+
*
|
|
6
|
+
* Separate from the package root because the root is what a provider's entry module imports and
|
|
7
|
+
* `/facts` is what their node test suite imports; this subpath pulls in D1, the signer and the
|
|
8
|
+
* sequence-manager DO, so it can only ever be loaded inside a Worker. It takes `env` rather than
|
|
9
|
+
* the kit's internal deps for the same reason `defineOracle()` takes a config: the worker's env is
|
|
10
|
+
* the only thing a provider has in their hand, and everything else — the config, the logger, the
|
|
11
|
+
* metrics, the trace, the database handle — is assembled from it here exactly as the cron does it
|
|
12
|
+
* (cron/scan.ts, cron/funding.ts).
|
|
13
|
+
*
|
|
14
|
+
* Four functions, today:
|
|
15
|
+
* - `signEvaluation` releases a decision the oracle's act policy (src/act.ts) held back.
|
|
16
|
+
* - `scanCollection` runs the cron's per-collection discovery pass on demand (a provider's own
|
|
17
|
+
* webhook, the moment a claim is submitted, with the cron itself as the backstop that still
|
|
18
|
+
* visits every collection on a schedule).
|
|
19
|
+
* - `registerCollection` runs the marketplace "hire" handshake (lib/register.ts,
|
|
20
|
+
* routes/v1/collections.ts) as a function rather than an HTTP route — for a provider's own
|
|
21
|
+
* Workflow that registers a collection AS the oracle's own principal (after minting its own
|
|
22
|
+
* evaluate grant), where there is no inbound request to authenticate or body to validate.
|
|
23
|
+
* - `broadcastAsOracle` signs and broadcasts arbitrary messages as this oracle's account
|
|
24
|
+
* (lib/ixo/chain.ts `getOracleSigner`) — for a provider composing its own `MsgExec` around
|
|
25
|
+
* kit-issued messages with the same sequence-managed signer the act lane uses.
|
|
26
|
+
*
|
|
27
|
+
* Also re-exports, verbatim, the chain/db plumbing a provider's own Workflow needs to build the
|
|
28
|
+
* inputs above (a query client, the D1 handle, the config, the schema) — the package's `exports`
|
|
29
|
+
* block only opens the root, `/facts` and this subpath, so a deep import is not an option.
|
|
30
|
+
*/
|
|
31
|
+
import type { WatchedCollection } from "./db/schema.js";
|
|
32
|
+
import type { OracleEnv } from "./env.js";
|
|
33
|
+
import { type ChainWriteOutcome } from "./lib/ixo/chain-write.js";
|
|
34
|
+
import { type RegisterInput } from "./lib/register.js";
|
|
35
|
+
export type { Config } from "./config.js";
|
|
36
|
+
export { loadConfig } from "./config.js";
|
|
37
|
+
export type { Database } from "./db/client.js";
|
|
38
|
+
export { getDb } from "./db/client.js";
|
|
39
|
+
export type { DecisionRow, WatchedCollection } from "./db/schema.js";
|
|
40
|
+
export { decisions, watchedCollections } from "./db/schema.js";
|
|
41
|
+
export { AppError } from "./lib/errors.js";
|
|
42
|
+
export type { BlocksyncDeps, CollectionNode } from "./lib/ixo/blocksync/index.js";
|
|
43
|
+
export { getCollection } from "./lib/ixo/blocksync/index.js";
|
|
44
|
+
export type { OracleSigner } from "./lib/ixo/chain.js";
|
|
45
|
+
export { getIxoSdk, getOracleSigner, getQueryClient } from "./lib/ixo/chain.js";
|
|
46
|
+
export type { ChainWriteOutcome } from "./lib/ixo/chain-write.js";
|
|
47
|
+
export type { RegisterInput } from "./lib/register.js";
|
|
48
|
+
/**
|
|
49
|
+
* Sign a decision the act policy `held` — the release pass (lib/ixo/chain-write.ts). `amount` is
|
|
50
|
+
* the payout to put on `MsgEvaluateClaim`, denom included: the provider owns that choice, which is
|
|
51
|
+
* the whole point of holding (a payout pooled across several claims). Omitted ⇒ the lane's own
|
|
52
|
+
* default (the claim's coins); ignored on an intent claim, where the escrow governs.
|
|
53
|
+
*
|
|
54
|
+
* Every guard of the lane still applies, so this is safe to call twice: an already-`submitted` row
|
|
55
|
+
* answers `"skipped"`, never a second signature.
|
|
56
|
+
*/
|
|
57
|
+
export declare function signEvaluation(env: OracleEnv, claimId: string, amount?: {
|
|
58
|
+
denom: string;
|
|
59
|
+
amount: string;
|
|
60
|
+
}): Promise<ChainWriteOutcome>;
|
|
61
|
+
/**
|
|
62
|
+
* Run the cron's per-collection discovery pass (cron/collection.ts `processCollection`) for ONE
|
|
63
|
+
* collection, right now — the webhook counterpart to `runCronTick` (cron/scan.ts), for a provider
|
|
64
|
+
* who wants to react to a submission immediately rather than wait for the collection's next turn
|
|
65
|
+
* in the tick's rotation. Builds its `CronCtx` with `cronContext(env)`, the SAME helper the tick
|
|
66
|
+
* itself uses, so the two share every dedupe/cursor rule: a webhook and the cron racing on one
|
|
67
|
+
* claim start it exactly once (`filterUnseen` in collection.ts, and `createBatch`'s own
|
|
68
|
+
* idempotency). Returns the number of instances started.
|
|
69
|
+
*
|
|
70
|
+
* Mirrors the HTTP nudge `POST /v1/collections/:collectionId/scan` (routes/v1/collections.ts) —
|
|
71
|
+
* same notFound/conflict semantics, without the UCAN read gate a route needs and a worker-internal
|
|
72
|
+
* caller doesn't.
|
|
73
|
+
*/
|
|
74
|
+
export declare function scanCollection(env: OracleEnv, collectionId: string): Promise<number>;
|
|
75
|
+
/**
|
|
76
|
+
* Register (or re-register) a collection with this oracle — the SAME four gates
|
|
77
|
+
* (WHO/HIRED/PROTOCOL/PAID), delegation resolution, upsert and paused→active notice
|
|
78
|
+
* `POST /v1/collections/register` runs (lib/register.ts, routes/v1/collections.ts), for a
|
|
79
|
+
* provider's own Workflow registering a collection AS the oracle's own principal (after minting
|
|
80
|
+
* its own evaluate grant) — there is no inbound request to authenticate or a body to validate.
|
|
81
|
+
*
|
|
82
|
+
* `input.cursor` is the one thing the HTTP route never exposes — see `RegisterInput` (lib/register.ts).
|
|
83
|
+
*/
|
|
84
|
+
export declare function registerCollection(env: OracleEnv, input: RegisterInput): Promise<WatchedCollection>;
|
|
85
|
+
/**
|
|
86
|
+
* Sign and broadcast arbitrary messages as THIS oracle's account (lib/ixo/chain.ts
|
|
87
|
+
* `getOracleSigner`) — the same sequence-managed signer the act lane uses, for a provider composing
|
|
88
|
+
* its own `MsgExec` around kit-issued messages. Unlike `signEvaluation`, this is a raw broadcast
|
|
89
|
+
* primitive, not a decision lane: it does NOT inspect `res.code` — a non-zero code is the caller's
|
|
90
|
+
* to interpret, for its own message.
|
|
91
|
+
*/
|
|
92
|
+
export declare function broadcastAsOracle(env: OracleEnv, msgs: readonly {
|
|
93
|
+
typeUrl: string;
|
|
94
|
+
value: unknown;
|
|
95
|
+
}[], memo?: string): Promise<{
|
|
96
|
+
code: number;
|
|
97
|
+
transactionHash: string;
|
|
98
|
+
rawLog?: string;
|
|
99
|
+
}>;
|
|
100
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAMH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,EACL,KAAK,iBAAiB,EAEvB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,KAAK,aAAa,EAEnB,MAAM,gBAAgB,CAAC;AAIxB,YAAY,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,YAAY,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAIpD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC7E,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,SAAS,EACd,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACzC,OAAO,CAAC,iBAAiB,CAAC,CA4B5B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAY1F;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,SAAS,EACd,KAAK,EAAE,aAAa,GACnB,OAAO,CAAC,iBAAiB,CAAC,CAO5B;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,SAAS,EACd,IAAI,EAAE,SAAS;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,EAAE,EACpD,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAOrE"}
|
package/dist/runtime.js
ADDED
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@ixo/decision-oracle/runtime` — the WORKER-ONLY seam: what a provider calls from inside their own
|
|
3
|
+
* worker (a route, a queue consumer, their own cron, their own Workflow) when they need the kit to
|
|
4
|
+
* do something the lanes do not do by themselves.
|
|
5
|
+
*
|
|
6
|
+
* Separate from the package root because the root is what a provider's entry module imports and
|
|
7
|
+
* `/facts` is what their node test suite imports; this subpath pulls in D1, the signer and the
|
|
8
|
+
* sequence-manager DO, so it can only ever be loaded inside a Worker. It takes `env` rather than
|
|
9
|
+
* the kit's internal deps for the same reason `defineOracle()` takes a config: the worker's env is
|
|
10
|
+
* the only thing a provider has in their hand, and everything else — the config, the logger, the
|
|
11
|
+
* metrics, the trace, the database handle — is assembled from it here exactly as the cron does it
|
|
12
|
+
* (cron/scan.ts, cron/funding.ts).
|
|
13
|
+
*
|
|
14
|
+
* Four functions, today:
|
|
15
|
+
* - `signEvaluation` releases a decision the oracle's act policy (src/act.ts) held back.
|
|
16
|
+
* - `scanCollection` runs the cron's per-collection discovery pass on demand (a provider's own
|
|
17
|
+
* webhook, the moment a claim is submitted, with the cron itself as the backstop that still
|
|
18
|
+
* visits every collection on a schedule).
|
|
19
|
+
* - `registerCollection` runs the marketplace "hire" handshake (lib/register.ts,
|
|
20
|
+
* routes/v1/collections.ts) as a function rather than an HTTP route — for a provider's own
|
|
21
|
+
* Workflow that registers a collection AS the oracle's own principal (after minting its own
|
|
22
|
+
* evaluate grant), where there is no inbound request to authenticate or body to validate.
|
|
23
|
+
* - `broadcastAsOracle` signs and broadcasts arbitrary messages as this oracle's account
|
|
24
|
+
* (lib/ixo/chain.ts `getOracleSigner`) — for a provider composing its own `MsgExec` around
|
|
25
|
+
* kit-issued messages with the same sequence-managed signer the act lane uses.
|
|
26
|
+
*
|
|
27
|
+
* Also re-exports, verbatim, the chain/db plumbing a provider's own Workflow needs to build the
|
|
28
|
+
* inputs above (a query client, the D1 handle, the config, the schema) — the package's `exports`
|
|
29
|
+
* block only opens the root, `/facts` and this subpath, so a deep import is not an option.
|
|
30
|
+
*/
|
|
31
|
+
import { loadConfig } from "./config.js";
|
|
32
|
+
import { processCollection } from "./cron/collection.js";
|
|
33
|
+
import { cronContext } from "./cron/scan.js";
|
|
34
|
+
import { getDb } from "./db/client.js";
|
|
35
|
+
import { AppError } from "./lib/errors.js";
|
|
36
|
+
import { getOracleSigner } from "./lib/ixo/chain.js";
|
|
37
|
+
import { signEvaluation as signEvaluationWithDeps, } from "./lib/ixo/chain-write.js";
|
|
38
|
+
import { createLogger } from "./lib/logger.js";
|
|
39
|
+
import { createMetrics } from "./lib/metrics.js";
|
|
40
|
+
import { registerCollection as registerCollectionWithDeps, } from "./lib/register.js";
|
|
41
|
+
import { generateTraceContext } from "./lib/tracing.js";
|
|
42
|
+
import { getOracle } from "./oracle.js";
|
|
43
|
+
export { loadConfig } from "./config.js";
|
|
44
|
+
export { getDb } from "./db/client.js";
|
|
45
|
+
export { decisions, watchedCollections } from "./db/schema.js";
|
|
46
|
+
export { AppError } from "./lib/errors.js";
|
|
47
|
+
export { getCollection } from "./lib/ixo/blocksync/index.js";
|
|
48
|
+
// --- plumbing, verbatim from the modules that assemble it, for a provider's own Workflow ---------
|
|
49
|
+
// No wrappers, no behaviour change — just what a deep import would have reached if the package's
|
|
50
|
+
// `exports` block allowed one.
|
|
51
|
+
export { getIxoSdk, getOracleSigner, getQueryClient } from "./lib/ixo/chain.js";
|
|
52
|
+
/**
|
|
53
|
+
* Sign a decision the act policy `held` — the release pass (lib/ixo/chain-write.ts). `amount` is
|
|
54
|
+
* the payout to put on `MsgEvaluateClaim`, denom included: the provider owns that choice, which is
|
|
55
|
+
* the whole point of holding (a payout pooled across several claims). Omitted ⇒ the lane's own
|
|
56
|
+
* default (the claim's coins); ignored on an intent claim, where the escrow governs.
|
|
57
|
+
*
|
|
58
|
+
* Every guard of the lane still applies, so this is safe to call twice: an already-`submitted` row
|
|
59
|
+
* answers `"skipped"`, never a second signature.
|
|
60
|
+
*/
|
|
61
|
+
export async function signEvaluation(env, claimId, amount) {
|
|
62
|
+
const config = loadConfig(env);
|
|
63
|
+
const trace = generateTraceContext();
|
|
64
|
+
const logger = createLogger({
|
|
65
|
+
level: config.LOG_LEVEL,
|
|
66
|
+
pretty: config.LOG_PRETTY,
|
|
67
|
+
base: {
|
|
68
|
+
service: config.SERVICE_NAME,
|
|
69
|
+
version: config.SERVICE_VERSION,
|
|
70
|
+
env: config.ENVIRONMENT,
|
|
71
|
+
traceId: trace.traceId,
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
return signEvaluationWithDeps({
|
|
75
|
+
config,
|
|
76
|
+
logger,
|
|
77
|
+
metrics: createMetrics(logger, { dataset: env.METRICS, network: config.IXO_NETWORK }),
|
|
78
|
+
trace,
|
|
79
|
+
db: getDb(env),
|
|
80
|
+
sequenceManager: env.SEQUENCE_MANAGER,
|
|
81
|
+
cache: env.CACHE_KV,
|
|
82
|
+
email: env.EMAIL,
|
|
83
|
+
env,
|
|
84
|
+
}, claimId, amount);
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Run the cron's per-collection discovery pass (cron/collection.ts `processCollection`) for ONE
|
|
88
|
+
* collection, right now — the webhook counterpart to `runCronTick` (cron/scan.ts), for a provider
|
|
89
|
+
* who wants to react to a submission immediately rather than wait for the collection's next turn
|
|
90
|
+
* in the tick's rotation. Builds its `CronCtx` with `cronContext(env)`, the SAME helper the tick
|
|
91
|
+
* itself uses, so the two share every dedupe/cursor rule: a webhook and the cron racing on one
|
|
92
|
+
* claim start it exactly once (`filterUnseen` in collection.ts, and `createBatch`'s own
|
|
93
|
+
* idempotency). Returns the number of instances started.
|
|
94
|
+
*
|
|
95
|
+
* Mirrors the HTTP nudge `POST /v1/collections/:collectionId/scan` (routes/v1/collections.ts) —
|
|
96
|
+
* same notFound/conflict semantics, without the UCAN read gate a route needs and a worker-internal
|
|
97
|
+
* caller doesn't.
|
|
98
|
+
*/
|
|
99
|
+
export async function scanCollection(env, collectionId) {
|
|
100
|
+
const ctx = cronContext(env);
|
|
101
|
+
const row = await ctx.db.query.watchedCollections.findFirst({
|
|
102
|
+
where: (t, { eq }) => eq(t.collectionId, collectionId),
|
|
103
|
+
});
|
|
104
|
+
if (!row) {
|
|
105
|
+
throw AppError.notFound(`Collection ${collectionId} is not registered with this oracle`);
|
|
106
|
+
}
|
|
107
|
+
if (row.status === "paused") {
|
|
108
|
+
throw AppError.conflict(`Collection ${collectionId} is paused — resume it first`);
|
|
109
|
+
}
|
|
110
|
+
return processCollection(ctx, { collectionId, cursor: row.cursor });
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Register (or re-register) a collection with this oracle — the SAME four gates
|
|
114
|
+
* (WHO/HIRED/PROTOCOL/PAID), delegation resolution, upsert and paused→active notice
|
|
115
|
+
* `POST /v1/collections/register` runs (lib/register.ts, routes/v1/collections.ts), for a
|
|
116
|
+
* provider's own Workflow registering a collection AS the oracle's own principal (after minting
|
|
117
|
+
* its own evaluate grant) — there is no inbound request to authenticate or a body to validate.
|
|
118
|
+
*
|
|
119
|
+
* `input.cursor` is the one thing the HTTP route never exposes — see `RegisterInput` (lib/register.ts).
|
|
120
|
+
*/
|
|
121
|
+
export async function registerCollection(env, input) {
|
|
122
|
+
const { db, logger, metrics, deps } = cronContext(env);
|
|
123
|
+
// `deps.config` is `BlocksyncDeps`' narrow slice (cron/collection.ts) — register needs the full
|
|
124
|
+
// `Config`, reloaded (cached — `cronContext` above already built it once) from `env`, the same
|
|
125
|
+
// widening `cron/scan.ts`'s `runCronTick` does for the tick size.
|
|
126
|
+
const config = loadConfig(env);
|
|
127
|
+
return registerCollectionWithDeps({ config, trace: deps.trace, logger, metrics, db, env }, input);
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Sign and broadcast arbitrary messages as THIS oracle's account (lib/ixo/chain.ts
|
|
131
|
+
* `getOracleSigner`) — the same sequence-managed signer the act lane uses, for a provider composing
|
|
132
|
+
* its own `MsgExec` around kit-issued messages. Unlike `signEvaluation`, this is a raw broadcast
|
|
133
|
+
* primitive, not a decision lane: it does NOT inspect `res.code` — a non-zero code is the caller's
|
|
134
|
+
* to interpret, for its own message.
|
|
135
|
+
*/
|
|
136
|
+
export async function broadcastAsOracle(env, msgs, memo) {
|
|
137
|
+
const config = loadConfig(env);
|
|
138
|
+
if (!config.ORACLE_SECP_MNEMONIC) {
|
|
139
|
+
throw AppError.unavailable("ORACLE_SECP_MNEMONIC not configured");
|
|
140
|
+
}
|
|
141
|
+
const signer = await getOracleSigner(config, env.SEQUENCE_MANAGER);
|
|
142
|
+
return signer.signAndBroadcast(msgs, memo ?? getOracle().config.name);
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|