@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,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The per-claim reads — where a claim got to (`claim_ingests`), what the engine decided
|
|
3
|
+
* (`decisions`), and any human answers (`claim_reviews`). UCAN-guarded like the rest of `/v1/*`;
|
|
4
|
+
* on top of that, READ access is the chain owner's or an evaluate-grant holder's (shared.ts
|
|
5
|
+
* `assertCanRead`), and one claim's record is also a live reviewer's of its collection (company
|
|
6
|
+
* authority D2: they answer from it) and its own submitter's (the claim's on-chain agent) — who
|
|
7
|
+
* sees the decision and its public receipt, but never the review's answers.
|
|
8
|
+
* Responses are straight selects — the `decision` json IS the API shape (codes, scores,
|
|
9
|
+
* identifiers; the row never held answer values).
|
|
10
|
+
*
|
|
11
|
+
* GET /v1/claims/:claimId — the full record (ingest ⟕ decision ⟕ review)
|
|
12
|
+
* GET /v1/claims?collectionId=… — summary list, newest first, keyset-paginated
|
|
13
|
+
* DELETE /v1/claims/:claimId/body — the collection's chain owner erases the claim's answer
|
|
14
|
+
* copies (company authority F14; lib/claim-erase.ts)
|
|
15
|
+
*
|
|
16
|
+
* The review lane (answering a `review` verdict) is `/v1/reviews/:claimId` (reviews.ts).
|
|
17
|
+
*/
|
|
18
|
+
import { and, desc, eq, lt, or } from "drizzle-orm";
|
|
19
|
+
import { Hono } from "hono";
|
|
20
|
+
import { z } from "zod";
|
|
21
|
+
import { claimIngests, decisions } from "../../db/schema.js";
|
|
22
|
+
import { eraseChainClaim } from "../../lib/claim-erase.js";
|
|
23
|
+
import { decodeCursor, encodeCursor } from "../../lib/cursor.js";
|
|
24
|
+
import { AppError } from "../../lib/errors.js";
|
|
25
|
+
import { validate } from "../../lib/validator.js";
|
|
26
|
+
import { assertCanRead, assertChainOwner, decisionBody, ingestBody, reviewBody } from "./shared.js";
|
|
27
|
+
export const claims = new Hono();
|
|
28
|
+
// Same garbage guard as the workflow: real claimIds are CIDs and Matrix event ids — anything
|
|
29
|
+
// printable-ASCII of sane length; the row lookup is the actual validation.
|
|
30
|
+
const ClaimParam = z.object({ claimId: z.string().regex(/^[\x21-\x7e]{1,512}$/) });
|
|
31
|
+
const ListQuery = z.object({
|
|
32
|
+
collectionId: z
|
|
33
|
+
.string()
|
|
34
|
+
.min(1)
|
|
35
|
+
.max(256)
|
|
36
|
+
.regex(/^[A-Za-z0-9._:-]+$/),
|
|
37
|
+
limit: z.coerce.number().int().min(1).max(500).default(100),
|
|
38
|
+
cursor: z.string().max(1024).optional(),
|
|
39
|
+
});
|
|
40
|
+
// --- GET /v1/claims?collectionId=… — the list view -----------------------------------------------
|
|
41
|
+
claims.get("/", validate("query", ListQuery), async (c) => {
|
|
42
|
+
const { collectionId, limit, cursor } = c.req.valid("query");
|
|
43
|
+
await assertCanRead(c, collectionId);
|
|
44
|
+
const after = cursor ? decodeCursor(cursor) : null;
|
|
45
|
+
const db = await c.var.db();
|
|
46
|
+
const rows = await db
|
|
47
|
+
.select({
|
|
48
|
+
claimId: claimIngests.claimId,
|
|
49
|
+
ingestStatus: claimIngests.status,
|
|
50
|
+
error: claimIngests.error,
|
|
51
|
+
createdAt: claimIngests.createdAt,
|
|
52
|
+
updatedAt: claimIngests.updatedAt,
|
|
53
|
+
verdict: decisions.verdict,
|
|
54
|
+
decisionStatus: decisions.status,
|
|
55
|
+
resultDigest: decisions.resultDigest,
|
|
56
|
+
receiptCid: decisions.receiptCid,
|
|
57
|
+
chainStatus: decisions.chainStatus,
|
|
58
|
+
txHash: decisions.txHash,
|
|
59
|
+
decidedAt: decisions.createdAt,
|
|
60
|
+
})
|
|
61
|
+
.from(claimIngests)
|
|
62
|
+
.leftJoin(decisions, eq(decisions.claimId, claimIngests.claimId))
|
|
63
|
+
.where(and(eq(claimIngests.collectionId, collectionId), after
|
|
64
|
+
? or(lt(claimIngests.createdAt, after.createdAt), and(eq(claimIngests.createdAt, after.createdAt), lt(claimIngests.claimId, after.claimId)))
|
|
65
|
+
: undefined))
|
|
66
|
+
.orderBy(desc(claimIngests.createdAt), desc(claimIngests.claimId))
|
|
67
|
+
.limit(limit + 1);
|
|
68
|
+
const page = rows.slice(0, limit);
|
|
69
|
+
const last = page.at(-1);
|
|
70
|
+
return c.json({
|
|
71
|
+
items: page.map((r) => ({
|
|
72
|
+
claimId: r.claimId,
|
|
73
|
+
ingestStatus: r.ingestStatus,
|
|
74
|
+
error: r.error,
|
|
75
|
+
createdAt: r.createdAt.toISOString(),
|
|
76
|
+
updatedAt: r.updatedAt.toISOString(),
|
|
77
|
+
// Null until the decide step has run (the decision row is left-joined).
|
|
78
|
+
verdict: r.verdict ?? null,
|
|
79
|
+
decisionStatus: r.decisionStatus ?? null,
|
|
80
|
+
resultDigest: r.resultDigest ?? null,
|
|
81
|
+
receiptCid: r.receiptCid ?? null,
|
|
82
|
+
chainStatus: r.chainStatus ?? null,
|
|
83
|
+
txHash: r.txHash ?? null,
|
|
84
|
+
decidedAt: r.decidedAt?.toISOString() ?? null,
|
|
85
|
+
})),
|
|
86
|
+
nextCursor: rows.length > limit && last ? encodeCursor(last.createdAt, last.claimId) : null,
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
// --- GET /v1/claims/:claimId — the full record ---------------------------------------------------
|
|
90
|
+
claims.get("/:claimId", validate("param", ClaimParam), async (c) => {
|
|
91
|
+
const { claimId } = c.req.valid("param");
|
|
92
|
+
const db = await c.var.db();
|
|
93
|
+
const [ingest, decision, review] = await Promise.all([
|
|
94
|
+
db.query.claimIngests.findFirst({ where: (t, { eq: eq_ }) => eq_(t.claimId, claimId) }),
|
|
95
|
+
db.query.decisions.findFirst({ where: (t, { eq: eq_ }) => eq_(t.claimId, claimId) }),
|
|
96
|
+
db.query.claimReviews.findFirst({ where: (t, { eq: eq_ }) => eq_(t.claimId, claimId) }),
|
|
97
|
+
]);
|
|
98
|
+
// The ingest row is the ledger: no row means "this oracle hasn't seen the claim". `expected`:
|
|
99
|
+
// the portal polls just-submitted claims before the cron ingests them — a breadcrumb, not a warn.
|
|
100
|
+
if (!ingest) {
|
|
101
|
+
throw AppError.notFound(`Oracle has not seen claim ${claimId}`, { expected: true });
|
|
102
|
+
}
|
|
103
|
+
const { asAgent } = await assertCanRead(c, ingest.collectionId, {
|
|
104
|
+
reviewers: true,
|
|
105
|
+
agentOf: claimId,
|
|
106
|
+
});
|
|
107
|
+
// The submitter sees the decision and its receipt — public by CID anyway, and the receipt names
|
|
108
|
+
// who reviewed — but never the review's ANSWERS, nor the internal failure text (RPC / admin
|
|
109
|
+
// detail) of the ingest, the chain write and the errored facts. `reviewerDid` is nulled for tidiness, not secrecy.
|
|
110
|
+
const ingestView = ingestBody(ingest);
|
|
111
|
+
const decisionView = decision ? decisionBody(decision) : null;
|
|
112
|
+
const reviewView = review ? reviewBody(review) : null;
|
|
113
|
+
return c.json({
|
|
114
|
+
claimId,
|
|
115
|
+
collectionId: ingest.collectionId,
|
|
116
|
+
ingest: asAgent ? { ...ingestView, error: null } : ingestView,
|
|
117
|
+
decision: decisionView && asAgent
|
|
118
|
+
? { ...decisionView, chainError: null, erroredFacts: null }
|
|
119
|
+
: decisionView,
|
|
120
|
+
review: reviewView && asAgent ? { ...reviewView, answers: null, reviewerDid: null } : reviewView,
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
// --- DELETE /v1/claims/:claimId/body — the owner's erase -----------------------------------------
|
|
124
|
+
/**
|
|
125
|
+
* The owner erases one claim's answer copies (company authority D12, F14): the fact transcripts and
|
|
126
|
+
* the registry text go (lib/claim-erase.ts). The oracle never erases chain-lane data on its own —
|
|
127
|
+
* this route is how an organisation deletes its own. The collection's CURRENT chain owner only, read
|
|
128
|
+
* live (`assertChainOwner`) — the enroller, grant holders and `ORACLE_ADMIN_DIDS` get 403: the data
|
|
129
|
+
* is the owner's. Idempotent: a second call is `204` again. A Decision API claim has its own route
|
|
130
|
+
* (`DELETE /v1/api/claims/:claimId/body`), so it is `404` here, as an unseen claim is. A claim still
|
|
131
|
+
* being decided (`queued` / `processing`) is `409`: its evaluate would write the transcripts and the
|
|
132
|
+
* registry text again after the erase (and a cleared fact cache would buy its handlers twice).
|
|
133
|
+
*/
|
|
134
|
+
claims.delete("/:claimId/body", validate("param", ClaimParam), async (c) => {
|
|
135
|
+
const { claimId } = c.req.valid("param");
|
|
136
|
+
const db = await c.var.db();
|
|
137
|
+
const ingest = await db.query.claimIngests.findFirst({
|
|
138
|
+
columns: { collectionId: true, lane: true, status: true },
|
|
139
|
+
where: (t, { eq: eq_ }) => eq_(t.claimId, claimId),
|
|
140
|
+
});
|
|
141
|
+
if (ingest?.lane !== "chain") {
|
|
142
|
+
throw AppError.notFound(`Oracle has not seen chain claim ${claimId}`);
|
|
143
|
+
}
|
|
144
|
+
await assertChainOwner(c, ingest.collectionId, "erase its claims' data");
|
|
145
|
+
if (ingest.status === "queued" || ingest.status === "processing") {
|
|
146
|
+
throw AppError.conflict(`Claim ${claimId} is still being decided; erase it once it's decided (GET /v1/claims/${claimId})`);
|
|
147
|
+
}
|
|
148
|
+
await eraseChainClaim(db, claimId);
|
|
149
|
+
c.get("metrics").count("claims.erased", 1, { op: "chain" });
|
|
150
|
+
c.get("logger").info("claims.erased", { claimId, collectionId: ingest.collectionId });
|
|
151
|
+
return c.body(null, 204);
|
|
152
|
+
});
|
|
153
|
+
//# sourceMappingURL=claims.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claims.js","sourceRoot":"","sources":["../../../src/routes/v1/claims.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The marketplace "hire" handshake (README "How a claim flows" step 1). UCAN-guarded. The
|
|
3
|
+
* enrollment rules: ANYONE holding evaluate rights on the collection may register it; the
|
|
4
|
+
* collection's OWNER is the one paying the evaluation fees; and the collection's on-chain
|
|
5
|
+
* evaluation payment must match what this oracle requires, because that payment is the only way
|
|
6
|
+
* the oracle gets paid.
|
|
7
|
+
*
|
|
8
|
+
* So four gates, in order:
|
|
9
|
+
* 1. WHO — the caller is the collection entity's owner (`claimCollection.entity` → `entity.owner`),
|
|
10
|
+
* or holds an active on-chain `EvaluateClaimAuthorization` for it (granter = the collection
|
|
11
|
+
* admin — the portal's "Grant Role" flow). One permission model, not two (lib/ixo/authz.ts).
|
|
12
|
+
* 2. HIRED — THIS oracle holds that same grant, or it can never sign `MsgEvaluateClaim` (409).
|
|
13
|
+
* 3. PROTOCOL — if the oracle config's `supportedProtocols` (the `GET /v1/info` listing) is non-empty,
|
|
14
|
+
* the collection's protocol DID must be in it (409): a provider that only advertises certain
|
|
15
|
+
* protocols must not silently start watching one it was never built to produce facts for.
|
|
16
|
+
* Checked BEFORE payment: a wrong-protocol collection should
|
|
17
|
+
* hear "this oracle won't serve you" first, not be sent off to fix a payment that would never
|
|
18
|
+
* have mattered.
|
|
19
|
+
* 4. PAID — `Payments.evaluation` is in the oracle's denom and ≥ its fee (the config's `pricing`,
|
|
20
|
+
* `pricing.byProtocol[protocol] ?? pricing.evaluation`; lib/ixo/payment.ts), else 402: the
|
|
21
|
+
* chain's 80/10/10 split of that coin is the oracle's income — a zero fee is the one legal
|
|
22
|
+
* exception, for a protocol whose income isn't that split.
|
|
23
|
+
*
|
|
24
|
+
* `ownerDid` on the row is ALWAYS the chain owner, never the enroller: the pull path reads the
|
|
25
|
+
* owner→oracle Matrix delegation keyed on it (lib/ixo/index.ts), and that delegation is the owner's
|
|
26
|
+
* to issue. The enroller is recorded beside it (`enrolledByDid`) for the read gate. We deliberately
|
|
27
|
+
* do NOT read ownership off `collection.admin`: on-chain, a collection's `admin` is the entity
|
|
28
|
+
* *account* address (a module-derived operating address), NOT the owner's wallet — see portal
|
|
29
|
+
* `useGrantAgentAndEvaluatorAuthZ.ts`, which threads `admin` and `ownerAddress` as distinct values.
|
|
30
|
+
*
|
|
31
|
+
* The delegation is persisted HERE so the read path needs zero UCAN-Store round trips: the body may
|
|
32
|
+
* carry the CAR directly (verified against the OWNER before we trust it), otherwise we fetch the
|
|
33
|
+
* owner's deposited delegation from the store once. Either way it lands on the row.
|
|
34
|
+
*
|
|
35
|
+
* POST /v1/collections/register { collectionId, delegationCar?, contactEmail? }
|
|
36
|
+
* GET /v1/collections the collections the caller owns or enrolled
|
|
37
|
+
* POST /v1/collections/:collectionId/pause owner / enroller / operator — the cron enqueues nothing
|
|
38
|
+
* POST /v1/collections/:collectionId/resume same gate
|
|
39
|
+
* POST /v1/collections/:collectionId/scan the read gate (+ grant holders) — discover + start NOW
|
|
40
|
+
* PATCH /v1/collections/:collectionId/settings the CURRENT chain owner only — `{ operatorAmounts }`
|
|
41
|
+
*/
|
|
42
|
+
import { Hono } from "hono";
|
|
43
|
+
import type { AppEnv } from "../../context.js";
|
|
44
|
+
export declare const collections: Hono<AppEnv, import("hono/types").BlankSchema, "/">;
|
|
45
|
+
//# sourceMappingURL=collections.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collections.d.ts","sourceRoot":"","sources":["../../../src/routes/v1/collections.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAGH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,KAAK,EAAc,MAAM,EAAE,MAAM,eAAe,CAAC;AAiBxD,eAAO,MAAM,WAAW,qDAAqB,CAAC"}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The marketplace "hire" handshake (README "How a claim flows" step 1). UCAN-guarded. The
|
|
3
|
+
* enrollment rules: ANYONE holding evaluate rights on the collection may register it; the
|
|
4
|
+
* collection's OWNER is the one paying the evaluation fees; and the collection's on-chain
|
|
5
|
+
* evaluation payment must match what this oracle requires, because that payment is the only way
|
|
6
|
+
* the oracle gets paid.
|
|
7
|
+
*
|
|
8
|
+
* So four gates, in order:
|
|
9
|
+
* 1. WHO — the caller is the collection entity's owner (`claimCollection.entity` → `entity.owner`),
|
|
10
|
+
* or holds an active on-chain `EvaluateClaimAuthorization` for it (granter = the collection
|
|
11
|
+
* admin — the portal's "Grant Role" flow). One permission model, not two (lib/ixo/authz.ts).
|
|
12
|
+
* 2. HIRED — THIS oracle holds that same grant, or it can never sign `MsgEvaluateClaim` (409).
|
|
13
|
+
* 3. PROTOCOL — if the oracle config's `supportedProtocols` (the `GET /v1/info` listing) is non-empty,
|
|
14
|
+
* the collection's protocol DID must be in it (409): a provider that only advertises certain
|
|
15
|
+
* protocols must not silently start watching one it was never built to produce facts for.
|
|
16
|
+
* Checked BEFORE payment: a wrong-protocol collection should
|
|
17
|
+
* hear "this oracle won't serve you" first, not be sent off to fix a payment that would never
|
|
18
|
+
* have mattered.
|
|
19
|
+
* 4. PAID — `Payments.evaluation` is in the oracle's denom and ≥ its fee (the config's `pricing`,
|
|
20
|
+
* `pricing.byProtocol[protocol] ?? pricing.evaluation`; lib/ixo/payment.ts), else 402: the
|
|
21
|
+
* chain's 80/10/10 split of that coin is the oracle's income — a zero fee is the one legal
|
|
22
|
+
* exception, for a protocol whose income isn't that split.
|
|
23
|
+
*
|
|
24
|
+
* `ownerDid` on the row is ALWAYS the chain owner, never the enroller: the pull path reads the
|
|
25
|
+
* owner→oracle Matrix delegation keyed on it (lib/ixo/index.ts), and that delegation is the owner's
|
|
26
|
+
* to issue. The enroller is recorded beside it (`enrolledByDid`) for the read gate. We deliberately
|
|
27
|
+
* do NOT read ownership off `collection.admin`: on-chain, a collection's `admin` is the entity
|
|
28
|
+
* *account* address (a module-derived operating address), NOT the owner's wallet — see portal
|
|
29
|
+
* `useGrantAgentAndEvaluatorAuthZ.ts`, which threads `admin` and `ownerAddress` as distinct values.
|
|
30
|
+
*
|
|
31
|
+
* The delegation is persisted HERE so the read path needs zero UCAN-Store round trips: the body may
|
|
32
|
+
* carry the CAR directly (verified against the OWNER before we trust it), otherwise we fetch the
|
|
33
|
+
* owner's deposited delegation from the store once. Either way it lands on the row.
|
|
34
|
+
*
|
|
35
|
+
* POST /v1/collections/register { collectionId, delegationCar?, contactEmail? }
|
|
36
|
+
* GET /v1/collections the collections the caller owns or enrolled
|
|
37
|
+
* POST /v1/collections/:collectionId/pause owner / enroller / operator — the cron enqueues nothing
|
|
38
|
+
* POST /v1/collections/:collectionId/resume same gate
|
|
39
|
+
* POST /v1/collections/:collectionId/scan the read gate (+ grant holders) — discover + start NOW
|
|
40
|
+
* PATCH /v1/collections/:collectionId/settings the CURRENT chain owner only — `{ operatorAmounts }`
|
|
41
|
+
*/
|
|
42
|
+
import { desc, eq, or } from "drizzle-orm";
|
|
43
|
+
import { Hono } from "hono";
|
|
44
|
+
import { z } from "zod";
|
|
45
|
+
import { processCollection } from "../../cron/collection.js";
|
|
46
|
+
import { watchedCollections } from "../../db/schema.js";
|
|
47
|
+
import { AppError } from "../../lib/errors.js";
|
|
48
|
+
import { operatorAmountsEffective } from "../../lib/ixo/chain-write.js";
|
|
49
|
+
import { registerCollection } from "../../lib/register.js";
|
|
50
|
+
import { validate } from "../../lib/validator.js";
|
|
51
|
+
import { notifyCollectionResumed } from "../../workflows/steps.js";
|
|
52
|
+
import { assertCanManage, assertCanRead, assertChainOwner, collectionBody, collectionColumns, viewOf, } from "./shared.js";
|
|
53
|
+
export const collections = new Hono();
|
|
54
|
+
const CollectionId = z
|
|
55
|
+
.string()
|
|
56
|
+
.min(1)
|
|
57
|
+
.max(256)
|
|
58
|
+
.regex(/^[A-Za-z0-9._:-]+$/);
|
|
59
|
+
const RegisterBody = z.object({
|
|
60
|
+
collectionId: CollectionId,
|
|
61
|
+
/** The owner→oracle delegation (base64 CAR). Optional: absent → fetched from the UCAN Store. */
|
|
62
|
+
delegationCar: z.string().min(1).max(65536).optional(),
|
|
63
|
+
/**
|
|
64
|
+
* Where the commissioner is reached (review requests, pauses). Client-supplied on purpose: it is
|
|
65
|
+
* the caller naming a notification address, not an authorization input. Absent leaves the stored
|
|
66
|
+
* address alone (re-register is the "change my mind" path); "" clears it. On a re-register only
|
|
67
|
+
* the chain owner or the current enroller may change it (lib/register.ts) — anyone else's is 403.
|
|
68
|
+
*/
|
|
69
|
+
contactEmail: z
|
|
70
|
+
.string()
|
|
71
|
+
.trim()
|
|
72
|
+
.max(254)
|
|
73
|
+
.pipe(z.union([z.email(), z.literal("")]))
|
|
74
|
+
.optional(),
|
|
75
|
+
});
|
|
76
|
+
const CollectionParam = z.object({ collectionId: CollectionId });
|
|
77
|
+
// The four gates (WHO/HIRED/PROTOCOL/PAID), the delegation resolution, the upsert and the
|
|
78
|
+
// paused→active notice all live in lib/register.ts, shared verbatim with the `registerCollection`
|
|
79
|
+
// runtime export (../../runtime.ts) that a provider's own Workflow calls directly. This route is a
|
|
80
|
+
// thin adapter: validate the body, build the ctx from the request, call, project the row. The body
|
|
81
|
+
// schema deliberately does not expose `cursor` — only the runtime export can seed one.
|
|
82
|
+
collections.post("/register", validate("json", RegisterBody), async (c) => {
|
|
83
|
+
const { collectionId, delegationCar, contactEmail } = c.req.valid("json");
|
|
84
|
+
const row = await registerCollection({
|
|
85
|
+
config: c.get("config"),
|
|
86
|
+
trace: c.get("trace"),
|
|
87
|
+
logger: c.get("logger"),
|
|
88
|
+
metrics: c.get("metrics"),
|
|
89
|
+
db: await c.var.db(),
|
|
90
|
+
env: c.env,
|
|
91
|
+
}, { collectionId, principal: c.get("principal"), delegationCar, contactEmail });
|
|
92
|
+
return c.json(collectionBody(viewOf(row)));
|
|
93
|
+
});
|
|
94
|
+
// --- GET /v1/collections — the collections the caller owns or enrolled --------------------------
|
|
95
|
+
collections.get("/", async (c) => {
|
|
96
|
+
const { did } = c.get("principal");
|
|
97
|
+
const db = await c.var.db();
|
|
98
|
+
// F2 residual: listed by the row's memory (ownerDid / enrolledByDid), not the chain's answer now.
|
|
99
|
+
const rows = await db
|
|
100
|
+
.select(collectionColumns)
|
|
101
|
+
.from(watchedCollections)
|
|
102
|
+
.where(or(eq(watchedCollections.ownerDid, did), eq(watchedCollections.enrolledByDid, did)))
|
|
103
|
+
.orderBy(desc(watchedCollections.createdAt));
|
|
104
|
+
return c.json({ items: rows.map(collectionBody) });
|
|
105
|
+
});
|
|
106
|
+
// --- pause / resume — owner, enroller or operator (shared.ts `assertCanManage`) ------------------
|
|
107
|
+
async function setStatus(c, collectionId, status) {
|
|
108
|
+
// Read BEFORE the write — the resume notice fires only on a REAL paused→active flip, never on an
|
|
109
|
+
// operator re-pausing an already-paused row or re-resuming an already-active one.
|
|
110
|
+
const watched = await assertCanManage(c, collectionId);
|
|
111
|
+
const db = await c.var.db();
|
|
112
|
+
const [row] = await db
|
|
113
|
+
.update(watchedCollections)
|
|
114
|
+
// An operator's pause has no engine reason; a resume clears whichever reason the engine set.
|
|
115
|
+
.set({ status, pausedReason: null })
|
|
116
|
+
.where(eq(watchedCollections.collectionId, collectionId))
|
|
117
|
+
.returning(collectionColumns);
|
|
118
|
+
if (!row)
|
|
119
|
+
throw AppError.internal("Status update returned no row");
|
|
120
|
+
const logger = c.get("logger");
|
|
121
|
+
logger.info(`collection.${status}`, { collectionId });
|
|
122
|
+
// Fail-soft: a notice failure must never fail the pause/resume response.
|
|
123
|
+
if (status === "active" && watched.status === "paused") {
|
|
124
|
+
await notifyCollectionResumed(db, {
|
|
125
|
+
logger,
|
|
126
|
+
metrics: c.get("metrics"),
|
|
127
|
+
config: c.get("config"),
|
|
128
|
+
trace: c.get("trace"),
|
|
129
|
+
cache: c.env.CACHE_KV,
|
|
130
|
+
email: c.env.EMAIL,
|
|
131
|
+
}, collectionId).catch((err) => logger.warn("collection.notice.failed", { collectionId, detail: String(err) }));
|
|
132
|
+
}
|
|
133
|
+
return c.json(collectionBody(row));
|
|
134
|
+
}
|
|
135
|
+
collections.post("/:collectionId/pause", validate("param", CollectionParam), (c) => setStatus(c, c.req.valid("param").collectionId, "paused"));
|
|
136
|
+
collections.post("/:collectionId/resume", validate("param", CollectionParam), (c) => setStatus(c, c.req.valid("param").collectionId, "active"));
|
|
137
|
+
// --- POST /v1/collections/:collectionId/scan — the nudge ------------------------------------------
|
|
138
|
+
/**
|
|
139
|
+
* Run the cron's per-collection pass for THIS collection right now (demo / "I just submitted,
|
|
140
|
+
* where is it?"). Exactly the tick's code path — same dedupe, same cursor rules — so an eager
|
|
141
|
+
* caller can never double-start a claim. Paused means "enqueue nothing" and the nudge honors it.
|
|
142
|
+
*/
|
|
143
|
+
collections.post("/:collectionId/scan", validate("param", CollectionParam), async (c) => {
|
|
144
|
+
const { collectionId } = c.req.valid("param");
|
|
145
|
+
const watched = await assertCanRead(c, collectionId);
|
|
146
|
+
if (watched.status !== "active") {
|
|
147
|
+
throw AppError.conflict(`Collection ${collectionId} is paused — resume it first`);
|
|
148
|
+
}
|
|
149
|
+
const started = await processCollection({
|
|
150
|
+
deps: { config: c.get("config"), trace: c.get("trace") },
|
|
151
|
+
db: await c.var.db(),
|
|
152
|
+
env: c.env,
|
|
153
|
+
logger: c.get("logger"),
|
|
154
|
+
metrics: c.get("metrics"),
|
|
155
|
+
}, { collectionId, cursor: watched.cursor });
|
|
156
|
+
return c.json({ started });
|
|
157
|
+
});
|
|
158
|
+
// --- GET /v1/collections/:collectionId/settings — the owner's say, as the act lane reads it -------
|
|
159
|
+
/**
|
|
160
|
+
* The settings for the Portal (S14): what the owner set, who set it, and whether it is in force NOW
|
|
161
|
+
* (`effective`) — computed by the act lane's own reading (`operatorAmountsEffective`) against the
|
|
162
|
+
* live owner, so the display can never say "allowed" while the lane pays its default. Same gate as
|
|
163
|
+
* the PATCH: the current chain owner only.
|
|
164
|
+
*/
|
|
165
|
+
collections.get("/:collectionId/settings", validate("param", CollectionParam), async (c) => {
|
|
166
|
+
const { collectionId } = c.req.valid("param");
|
|
167
|
+
const { owner } = await assertChainOwner(c, collectionId, "read its settings");
|
|
168
|
+
const db = await c.var.db();
|
|
169
|
+
const row = await db.query.watchedCollections.findFirst({
|
|
170
|
+
columns: { operatorAmounts: true, operatorAmountsBy: true },
|
|
171
|
+
where: eq(watchedCollections.collectionId, collectionId),
|
|
172
|
+
});
|
|
173
|
+
if (!row)
|
|
174
|
+
throw AppError.notFound(`Collection ${collectionId} is not watched by this oracle`);
|
|
175
|
+
return c.json({ ...row, effective: operatorAmountsEffective(row, owner) });
|
|
176
|
+
});
|
|
177
|
+
// --- PATCH /v1/collections/:collectionId/settings — the owner's say ------------------------------
|
|
178
|
+
/**
|
|
179
|
+
* What only the collection's owner decides (company authority D7). `operatorAmounts`: whether the
|
|
180
|
+
* act seam's on-chain amount may stand (`allowed`) or the lane pays its default (`off`, the
|
|
181
|
+
* default — chain-write.ts). The owner sets it on the oracle the collection hired, which is also
|
|
182
|
+
* where the act lane reads it — together with who set it (`operatorAmountsBy`), so an ownership
|
|
183
|
+
* transfer turns it off until the new owner says yes again.
|
|
184
|
+
*/
|
|
185
|
+
const SettingsBody = z.strictObject({ operatorAmounts: z.enum(["off", "allowed"]) });
|
|
186
|
+
collections.patch("/:collectionId/settings", validate("param", CollectionParam), validate("json", SettingsBody), async (c) => {
|
|
187
|
+
const { collectionId } = c.req.valid("param");
|
|
188
|
+
const { owner } = await assertChainOwner(c, collectionId);
|
|
189
|
+
const settings = c.req.valid("json");
|
|
190
|
+
const db = await c.var.db();
|
|
191
|
+
const [row] = await db
|
|
192
|
+
.update(watchedCollections)
|
|
193
|
+
.set({ ...settings, operatorAmountsBy: owner })
|
|
194
|
+
.where(eq(watchedCollections.collectionId, collectionId))
|
|
195
|
+
.returning(collectionColumns);
|
|
196
|
+
if (!row)
|
|
197
|
+
throw AppError.internal("Settings update returned no row");
|
|
198
|
+
c.get("logger").info("collection.settings", { collectionId, ...settings });
|
|
199
|
+
return c.json(collectionBody(row));
|
|
200
|
+
});
|
|
201
|
+
//# sourceMappingURL=collections.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collections.js","sourceRoot":"","sources":["../../../src/routes/v1/collections.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v1 API surface — collection registration (the marketplace "hire" handshake), the claim reads,
|
|
3
|
+
* the review lane, and the operator's status (`/v1/admin/status`, ORACLE_ADMIN_DIDS).
|
|
4
|
+
*
|
|
5
|
+
* Claim ingestion deliberately has NO public endpoint: the cron pull is the system of record (the
|
|
6
|
+
* chain is truth, so a pushed claimId adds nothing we'd trust), and operator recovery happens via
|
|
7
|
+
* workflow reruns in the Cloudflare dashboard. Status/tracking lives in the `claim_ingests`
|
|
8
|
+
* ledger — readable per claim via `/v1/claims`.
|
|
9
|
+
*/
|
|
10
|
+
import { Hono } from "hono";
|
|
11
|
+
import type { AppEnv } from "../../context.js";
|
|
12
|
+
export declare const v1: Hono<AppEnv, import("hono/types").BlankSchema, "/">;
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/routes/v1/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAW5C,eAAO,MAAM,EAAE,qDAAqB,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v1 API surface — collection registration (the marketplace "hire" handshake), the claim reads,
|
|
3
|
+
* the review lane, and the operator's status (`/v1/admin/status`, ORACLE_ADMIN_DIDS).
|
|
4
|
+
*
|
|
5
|
+
* Claim ingestion deliberately has NO public endpoint: the cron pull is the system of record (the
|
|
6
|
+
* chain is truth, so a pushed claimId adds nothing we'd trust), and operator recovery happens via
|
|
7
|
+
* workflow reruns in the Cloudflare dashboard. Status/tracking lives in the `claim_ingests`
|
|
8
|
+
* ledger — readable per claim via `/v1/claims`.
|
|
9
|
+
*/
|
|
10
|
+
import { Hono } from "hono";
|
|
11
|
+
import { except } from "hono/combine";
|
|
12
|
+
import { requireAction } from "../../middleware/capability.js";
|
|
13
|
+
import { ucanAuth } from "../../middleware/ucan-auth.js";
|
|
14
|
+
import { admin } from "./admin.js";
|
|
15
|
+
import { claims } from "./claims.js";
|
|
16
|
+
import { collections } from "./collections.js";
|
|
17
|
+
import { info } from "./info.js";
|
|
18
|
+
import { oauth } from "./oauth.js";
|
|
19
|
+
import { reviewers } from "./reviewers.js";
|
|
20
|
+
import { reviews } from "./reviews.js";
|
|
21
|
+
export const v1 = new Hono();
|
|
22
|
+
/**
|
|
23
|
+
* Secure by default: EVERY v1 route requires a UCAN unless it is on this explicit public list.
|
|
24
|
+
* A new route is authenticated the moment it mounts — making an endpoint public is a conscious,
|
|
25
|
+
* greppable decision here, never an omission in a route file.
|
|
26
|
+
*/
|
|
27
|
+
const PUBLIC_V1_PATHS = [
|
|
28
|
+
"/v1/info", // the marketplace listing — a portal must be able to read it before it holds any
|
|
29
|
+
// credential for the collection it wants this oracle to evaluate.
|
|
30
|
+
"/v1/api/*", // the Decision API lane: its own router, its own auth on every route (`access()`).
|
|
31
|
+
];
|
|
32
|
+
// Authenticate, then hold the invocation to the route's ONE action (`middleware/capability.ts`).
|
|
33
|
+
v1.use("*", except([...PUBLIC_V1_PATHS], ucanAuth, requireAction));
|
|
34
|
+
v1.route("/admin", admin);
|
|
35
|
+
v1.route("/claims", claims);
|
|
36
|
+
v1.route("/collections", collections);
|
|
37
|
+
v1.route("/collections", reviewers);
|
|
38
|
+
v1.route("/info", info);
|
|
39
|
+
v1.route("/oauth", oauth);
|
|
40
|
+
v1.route("/reviews", reviews);
|
|
41
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/routes/v1/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,IAAI,EAAU,CAAC;AAErC;;;;GAIG;AACH,MAAM,eAAe,GAAsB;IACzC,UAAU,EAAE,iFAAiF;IAC7F,kEAAkE;IAClE,WAAW,EAAE,mFAAmF;CACjG,CAAC;AACF,iGAAiG;AACjG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,eAAe,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;AAEnE,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC1B,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAC5B,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;AACtC,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;AACpC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACxB,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC1B,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `GET /v1/info` — the oracle's marketplace listing. Public, no
|
|
3
|
+
* ucanAuth: a portal shopping for an oracle has to be able to read this before it holds any
|
|
4
|
+
* credential for the collection it wants evaluated. The wire shape is FROZEN — a portal consumer
|
|
5
|
+
* is built against these exact field names; don't rename, nest, or omit any of them.
|
|
6
|
+
*
|
|
7
|
+
* `serviceDid` uses `oracleWebDid` (lib/ixo/ucan.ts) rather than `getDIDWeb` (lib/ixo/identity.ts):
|
|
8
|
+
* it's the same `did:web:<ORACLE_HOSTNAME>` string, but derived from the hostname alone, so this
|
|
9
|
+
* public route never depends on `SERVICE_ED25519_MNEMONIC` being configured.
|
|
10
|
+
*/
|
|
11
|
+
import { Hono } from "hono";
|
|
12
|
+
import type { AppEnv } from "../../context.js";
|
|
13
|
+
export declare const info: Hono<AppEnv, import("hono/types").BlankSchema, "/">;
|
|
14
|
+
//# sourceMappingURL=info.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../../src/routes/v1/info.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAK5C,eAAO,MAAM,IAAI,qDAAqB,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `GET /v1/info` — the oracle's marketplace listing. Public, no
|
|
3
|
+
* ucanAuth: a portal shopping for an oracle has to be able to read this before it holds any
|
|
4
|
+
* credential for the collection it wants evaluated. The wire shape is FROZEN — a portal consumer
|
|
5
|
+
* is built against these exact field names; don't rename, nest, or omit any of them.
|
|
6
|
+
*
|
|
7
|
+
* `serviceDid` uses `oracleWebDid` (lib/ixo/ucan.ts) rather than `getDIDWeb` (lib/ixo/identity.ts):
|
|
8
|
+
* it's the same `did:web:<ORACLE_HOSTNAME>` string, but derived from the hostname alone, so this
|
|
9
|
+
* public route never depends on `SERVICE_ED25519_MNEMONIC` being configured.
|
|
10
|
+
*/
|
|
11
|
+
import { Hono } from "hono";
|
|
12
|
+
import { oracleWebDid } from "../../lib/ixo/ucan.js";
|
|
13
|
+
import { advertisedPrice, reviewBillingActive } from "../../lib/payments/review-billing.js";
|
|
14
|
+
import { effectivePricing, getOracle } from "../../oracle.js";
|
|
15
|
+
export const info = new Hono();
|
|
16
|
+
/** Per review only while ACTIVE — IXO's plan for the oracle (review-billing.ts). */
|
|
17
|
+
async function reviewBillingInfo(deps) {
|
|
18
|
+
if (!(await reviewBillingActive(deps)))
|
|
19
|
+
return { mode: "escrow", pricePerReview: null };
|
|
20
|
+
const amount = advertisedPrice(deps.config);
|
|
21
|
+
return {
|
|
22
|
+
mode: "x402",
|
|
23
|
+
pricePerReview: amount === null ? null : { denom: "upay", amount },
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
info.get("/", async (c) => {
|
|
27
|
+
const config = c.get("config");
|
|
28
|
+
// `pricing` carries `evaluation` and, when configured, `byProtocol` (oracle.ts) — both served
|
|
29
|
+
// verbatim, so a per-protocol fee shows up here the moment it's set, with no route change.
|
|
30
|
+
const { name, description, supportedProtocols, pricing, payouts } = getOracle().config;
|
|
31
|
+
const { actSummary, ...policies } = getOracle().config.policies;
|
|
32
|
+
// A marketplace listing changes by a redeploy, not by the request — long enough to spare a
|
|
33
|
+
// crawler, short enough that a price/policy edit shows up within minutes.
|
|
34
|
+
c.header("cache-control", "public, max-age=300");
|
|
35
|
+
return c.json({
|
|
36
|
+
name,
|
|
37
|
+
description,
|
|
38
|
+
did: config.ORACLE_DID,
|
|
39
|
+
address: config.ORACLE_ADDRESS,
|
|
40
|
+
// The on-chain oracle ENTITY (`oracle init`), where a console reads the oracle's name and image
|
|
41
|
+
// (its domain card / `#pro` profile / `#acard`). Distinct from `did` (the runtime account).
|
|
42
|
+
entityDid: config.ORACLE_ENTITY_DID || null,
|
|
43
|
+
serviceDid: oracleWebDid(config),
|
|
44
|
+
supportedProtocols,
|
|
45
|
+
// What register charges by: `pricing.evaluation` replaced by the per-network vars when set.
|
|
46
|
+
pricing: effectivePricing(pricing, config),
|
|
47
|
+
policies,
|
|
48
|
+
// Where the operator's earnings land (payments spec §3.2) — read-only, set in the oracle's
|
|
49
|
+
// config. Public on purpose: every 402 already names the address as its `payTo`, and it is on
|
|
50
|
+
// chain anyway. (Not `payouts`: that now means a company paying its people.)
|
|
51
|
+
earnings: {
|
|
52
|
+
address: config.EARNINGS_ADDRESS ?? null,
|
|
53
|
+
baseWallet: config.EARNINGS_BASE_WALLET ?? null,
|
|
54
|
+
},
|
|
55
|
+
// How a payout amount is chosen, so a portal can show it before a company opts in: per
|
|
56
|
+
// protocol, the claim answer that holds the decision-to-pay amount and its currency
|
|
57
|
+
// (`payouts` in oracle.ts, verbatim; a protocol absent here gets no decision to pay), and the
|
|
58
|
+
// operator's own summary of its `act` amounts (null without an act policy or a summary).
|
|
59
|
+
payouts: {
|
|
60
|
+
decisionToPay: payouts ?? {},
|
|
61
|
+
operatorAmount: policies.act && actSummary ? { summary: actSummary } : null,
|
|
62
|
+
},
|
|
63
|
+
// How a collection pays for its reviews, so a poster knows what to fund: `x402` — per review,
|
|
64
|
+
// from the company's credits (IXO's plan for the oracle allows it; the collection's evaluation leg
|
|
65
|
+
// stays empty) — or `escrow`, the collection's on-chain evaluation payment (`pricing`).
|
|
66
|
+
// `pricePerReview` is the published per-review price, the Agent Card's.
|
|
67
|
+
reviewBilling: await reviewBillingInfo({
|
|
68
|
+
config,
|
|
69
|
+
logger: c.get("logger"),
|
|
70
|
+
trace: c.get("trace"),
|
|
71
|
+
cache: c.env.CACHE_KV,
|
|
72
|
+
}),
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
//# sourceMappingURL=info.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../../src/routes/v1/info.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACzF,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE3D,MAAM,CAAC,MAAM,IAAI,GAAG,IAAI,IAAI,EAAU,CAAC;AAEvC,oFAAoF;AACpF,KAAK,UAAU,iBAAiB,CAAC,IAA+C;IAC9E,IAAI,CAAC,CAAC,MAAM,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,QAAiB,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;IACjG,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5C,OAAO;QACL,IAAI,EAAE,MAAe;QACrB,cAAc,EAAE,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAe,EAAE,MAAM,EAAE;KAC5E,CAAC;AACJ,CAAC;AAED,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IACxB,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC/B,8FAA8F;IAC9F,2FAA2F;IAC3F,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,kBAAkB,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,CAAC,MAAM,CAAC;IACvF,MAAM,EAAE,UAAU,EAAE,GAAG,QAAQ,EAAE,GAAG,SAAS,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;IAChE,2FAA2F;IAC3F,0EAA0E;IAC1E,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE,qBAAqB,CAAC,CAAC;IACjD,OAAO,CAAC,CAAC,IAAI,CAAC;QACZ,IAAI;QACJ,WAAW;QACX,GAAG,EAAE,MAAM,CAAC,UAAU;QACtB,OAAO,EAAE,MAAM,CAAC,cAAc;QAC9B,gGAAgG;QAChG,4FAA4F;QAC5F,SAAS,EAAE,MAAM,CAAC,iBAAiB,IAAI,IAAI;QAC3C,UAAU,EAAE,YAAY,CAAC,MAAM,CAAC;QAChC,kBAAkB;QAClB,4FAA4F;QAC5F,OAAO,EAAE,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC;QAC1C,QAAQ;QACR,2FAA2F;QAC3F,8FAA8F;QAC9F,6EAA6E;QAC7E,QAAQ,EAAE;YACR,OAAO,EAAE,MAAM,CAAC,gBAAgB,IAAI,IAAI;YACxC,UAAU,EAAE,MAAM,CAAC,oBAAoB,IAAI,IAAI;SAChD;QACD,uFAAuF;QACvF,oFAAoF;QACpF,8FAA8F;QAC9F,yFAAyF;QACzF,OAAO,EAAE;YACP,aAAa,EAAE,OAAO,IAAI,EAAE;YAC5B,cAAc,EAAE,QAAQ,CAAC,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI;SAC5E;QACD,8FAA8F;QAC9F,mGAAmG;QACnG,wFAAwF;QACxF,wEAAwE;QACxE,aAAa,EAAE,MAAM,iBAAiB,CAAC;YACrC,MAAM;YACN,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;YACvB,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;YACrB,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ;SACtB,CAAC;KACH,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|