@ixo/decision-oracle 0.0.0-stage → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +794 -2
- package/dist/act.d.ts +87 -0
- package/dist/act.d.ts.map +1 -0
- package/dist/act.js +20 -0
- package/dist/act.js.map +1 -0
- package/dist/app.d.ts +22 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +128 -0
- package/dist/app.js.map +1 -0
- package/dist/c2pa.wasm +0 -0
- package/dist/cli/commands/api.d.ts +50 -0
- package/dist/cli/commands/api.d.ts.map +1 -0
- package/dist/cli/commands/api.js +737 -0
- package/dist/cli/commands/api.js.map +1 -0
- package/dist/cli/commands/create-collection.d.ts +40 -0
- package/dist/cli/commands/create-collection.d.ts.map +1 -0
- package/dist/cli/commands/create-collection.js +318 -0
- package/dist/cli/commands/create-collection.js.map +1 -0
- package/dist/cli/commands/create-deed.d.ts +31 -0
- package/dist/cli/commands/create-deed.d.ts.map +1 -0
- package/dist/cli/commands/create-deed.js +208 -0
- package/dist/cli/commands/create-deed.js.map +1 -0
- package/dist/cli/commands/delegation.d.ts +26 -0
- package/dist/cli/commands/delegation.d.ts.map +1 -0
- package/dist/cli/commands/delegation.js +162 -0
- package/dist/cli/commands/delegation.js.map +1 -0
- package/dist/cli/commands/derive.d.ts +22 -0
- package/dist/cli/commands/derive.d.ts.map +1 -0
- package/dist/cli/commands/derive.js +53 -0
- package/dist/cli/commands/derive.js.map +1 -0
- package/dist/cli/commands/engine.d.ts +25 -0
- package/dist/cli/commands/engine.d.ts.map +1 -0
- package/dist/cli/commands/engine.js +107 -0
- package/dist/cli/commands/engine.js.map +1 -0
- package/dist/cli/commands/erase.d.ts +17 -0
- package/dist/cli/commands/erase.d.ts.map +1 -0
- package/dist/cli/commands/erase.js +117 -0
- package/dist/cli/commands/erase.js.map +1 -0
- package/dist/cli/commands/facts-run.d.ts +30 -0
- package/dist/cli/commands/facts-run.d.ts.map +1 -0
- package/dist/cli/commands/facts-run.js +409 -0
- package/dist/cli/commands/facts-run.js.map +1 -0
- package/dist/cli/commands/facts-scaffold.d.ts +22 -0
- package/dist/cli/commands/facts-scaffold.d.ts.map +1 -0
- package/dist/cli/commands/facts-scaffold.js +208 -0
- package/dist/cli/commands/facts-scaffold.js.map +1 -0
- package/dist/cli/commands/init.d.ts +18 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +34 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/login.d.ts +9 -0
- package/dist/cli/commands/login.d.ts.map +1 -0
- package/dist/cli/commands/login.js +16 -0
- package/dist/cli/commands/login.js.map +1 -0
- package/dist/cli/commands/logout.d.ts +10 -0
- package/dist/cli/commands/logout.d.ts.map +1 -0
- package/dist/cli/commands/logout.js +28 -0
- package/dist/cli/commands/logout.js.map +1 -0
- package/dist/cli/commands/manifest.d.ts +12 -0
- package/dist/cli/commands/manifest.d.ts.map +1 -0
- package/dist/cli/commands/manifest.js +48 -0
- package/dist/cli/commands/manifest.js.map +1 -0
- package/dist/cli/commands/oracle-init.d.ts +48 -0
- package/dist/cli/commands/oracle-init.d.ts.map +1 -0
- package/dist/cli/commands/oracle-init.js +1122 -0
- package/dist/cli/commands/oracle-init.js.map +1 -0
- package/dist/cli/commands/org.d.ts +28 -0
- package/dist/cli/commands/org.d.ts.map +1 -0
- package/dist/cli/commands/org.js +309 -0
- package/dist/cli/commands/org.js.map +1 -0
- package/dist/cli/commands/protocol-review.d.ts +20 -0
- package/dist/cli/commands/protocol-review.d.ts.map +1 -0
- package/dist/cli/commands/protocol-review.js +162 -0
- package/dist/cli/commands/protocol-review.js.map +1 -0
- package/dist/cli/commands/publish-protocol.d.ts +43 -0
- package/dist/cli/commands/publish-protocol.d.ts.map +1 -0
- package/dist/cli/commands/publish-protocol.js +345 -0
- package/dist/cli/commands/publish-protocol.js.map +1 -0
- package/dist/cli/commands/register.d.ts +16 -0
- package/dist/cli/commands/register.d.ts.map +1 -0
- package/dist/cli/commands/register.js +54 -0
- package/dist/cli/commands/register.js.map +1 -0
- package/dist/cli/commands/relink.d.ts +11 -0
- package/dist/cli/commands/relink.d.ts.map +1 -0
- package/dist/cli/commands/relink.js +36 -0
- package/dist/cli/commands/relink.js.map +1 -0
- package/dist/cli/commands/rubric-fetch-form.d.ts +16 -0
- package/dist/cli/commands/rubric-fetch-form.d.ts.map +1 -0
- package/dist/cli/commands/rubric-fetch-form.js +83 -0
- package/dist/cli/commands/rubric-fetch-form.js.map +1 -0
- package/dist/cli/commands/rubric-validate.d.ts +72 -0
- package/dist/cli/commands/rubric-validate.d.ts.map +1 -0
- package/dist/cli/commands/rubric-validate.js +163 -0
- package/dist/cli/commands/rubric-validate.js.map +1 -0
- package/dist/cli/commands/scan.d.ts +13 -0
- package/dist/cli/commands/scan.d.ts.map +1 -0
- package/dist/cli/commands/scan.js +39 -0
- package/dist/cli/commands/scan.js.map +1 -0
- package/dist/cli/commands/skills.d.ts +11 -0
- package/dist/cli/commands/skills.d.ts.map +1 -0
- package/dist/cli/commands/skills.js +19 -0
- package/dist/cli/commands/skills.js.map +1 -0
- package/dist/cli/commands/submit-claim.d.ts +25 -0
- package/dist/cli/commands/submit-claim.d.ts.map +1 -0
- package/dist/cli/commands/submit-claim.js +155 -0
- package/dist/cli/commands/submit-claim.js.map +1 -0
- package/dist/cli/index.d.ts +15 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +206 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/lib/agent-card-schema.d.ts +8 -0
- package/dist/cli/lib/agent-card-schema.d.ts.map +1 -0
- package/dist/cli/lib/agent-card-schema.js +169 -0
- package/dist/cli/lib/agent-card-schema.js.map +1 -0
- package/dist/cli/lib/ai-rest.d.ts +12 -0
- package/dist/cli/lib/ai-rest.d.ts.map +1 -0
- package/dist/cli/lib/ai-rest.js +36 -0
- package/dist/cli/lib/ai-rest.js.map +1 -0
- package/dist/cli/lib/args.d.ts +33 -0
- package/dist/cli/lib/args.d.ts.map +1 -0
- package/dist/cli/lib/args.js +24 -0
- package/dist/cli/lib/args.js.map +1 -0
- package/dist/cli/lib/authhub.d.ts +7 -0
- package/dist/cli/lib/authhub.d.ts.map +1 -0
- package/dist/cli/lib/authhub.js +210 -0
- package/dist/cli/lib/authhub.js.map +1 -0
- package/dist/cli/lib/chain.d.ts +264 -0
- package/dist/cli/lib/chain.d.ts.map +1 -0
- package/dist/cli/lib/chain.js +584 -0
- package/dist/cli/lib/chain.js.map +1 -0
- package/dist/cli/lib/devvars.d.ts +59 -0
- package/dist/cli/lib/devvars.d.ts.map +1 -0
- package/dist/cli/lib/devvars.js +206 -0
- package/dist/cli/lib/devvars.js.map +1 -0
- package/dist/cli/lib/engine.d.ts +54 -0
- package/dist/cli/lib/engine.d.ts.map +1 -0
- package/dist/cli/lib/engine.js +112 -0
- package/dist/cli/lib/engine.js.map +1 -0
- package/dist/cli/lib/identity-cards.d.ts +188 -0
- package/dist/cli/lib/identity-cards.d.ts.map +1 -0
- package/dist/cli/lib/identity-cards.js +261 -0
- package/dist/cli/lib/identity-cards.js.map +1 -0
- package/dist/cli/lib/matrix-account.d.ts +79 -0
- package/dist/cli/lib/matrix-account.d.ts.map +1 -0
- package/dist/cli/lib/matrix-account.js +228 -0
- package/dist/cli/lib/matrix-account.js.map +1 -0
- package/dist/cli/lib/oracle-account.d.ts +108 -0
- package/dist/cli/lib/oracle-account.d.ts.map +1 -0
- package/dist/cli/lib/oracle-account.js +207 -0
- package/dist/cli/lib/oracle-account.js.map +1 -0
- package/dist/cli/lib/project.d.ts +22 -0
- package/dist/cli/lib/project.d.ts.map +1 -0
- package/dist/cli/lib/project.js +62 -0
- package/dist/cli/lib/project.js.map +1 -0
- package/dist/cli/lib/session.d.ts +109 -0
- package/dist/cli/lib/session.d.ts.map +1 -0
- package/dist/cli/lib/session.js +354 -0
- package/dist/cli/lib/session.js.map +1 -0
- package/dist/cli/lib/workorder.d.ts +57 -0
- package/dist/cli/lib/workorder.d.ts.map +1 -0
- package/dist/cli/lib/workorder.js +101 -0
- package/dist/cli/lib/workorder.js.map +1 -0
- package/dist/config.d.ts +221 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +431 -0
- package/dist/config.js.map +1 -0
- package/dist/context.d.ts +88 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +9 -0
- package/dist/context.js.map +1 -0
- package/dist/contracts/api.d.ts +3367 -0
- package/dist/contracts/api.d.ts.map +1 -0
- package/dist/contracts/api.js +1303 -0
- package/dist/contracts/api.js.map +1 -0
- package/dist/contracts/capabilities.d.ts +126 -0
- package/dist/contracts/capabilities.d.ts.map +1 -0
- package/dist/contracts/capabilities.js +164 -0
- package/dist/contracts/capabilities.js.map +1 -0
- package/dist/contracts/claim-source.d.ts +98 -0
- package/dist/contracts/claim-source.d.ts.map +1 -0
- package/dist/contracts/claim-source.js +17 -0
- package/dist/contracts/claim-source.js.map +1 -0
- package/dist/contracts/errors.d.ts +150 -0
- package/dist/contracts/errors.d.ts.map +1 -0
- package/dist/contracts/errors.js +121 -0
- package/dist/contracts/errors.js.map +1 -0
- package/dist/contracts/index.d.ts +15 -0
- package/dist/contracts/index.d.ts.map +1 -0
- package/dist/contracts/index.js +11 -0
- package/dist/contracts/index.js.map +1 -0
- package/dist/contracts/payment-gate.d.ts +129 -0
- package/dist/contracts/payment-gate.d.ts.map +1 -0
- package/dist/contracts/payment-gate.js +24 -0
- package/dist/contracts/payment-gate.js.map +1 -0
- package/dist/contracts/start-api-claim.d.ts +90 -0
- package/dist/contracts/start-api-claim.d.ts.map +1 -0
- package/dist/contracts/start-api-claim.js +22 -0
- package/dist/contracts/start-api-claim.js.map +1 -0
- package/dist/contracts/webhooks.d.ts +1487 -0
- package/dist/contracts/webhooks.d.ts.map +1 -0
- package/dist/contracts/webhooks.js +71 -0
- package/dist/contracts/webhooks.js.map +1 -0
- package/dist/contracts/work-order.d.ts +29 -0
- package/dist/contracts/work-order.d.ts.map +1 -0
- package/dist/contracts/work-order.js +12 -0
- package/dist/contracts/work-order.js.map +1 -0
- package/dist/cron/ai-cost.d.ts +29 -0
- package/dist/cron/ai-cost.d.ts.map +1 -0
- package/dist/cron/ai-cost.js +80 -0
- package/dist/cron/ai-cost.js.map +1 -0
- package/dist/cron/api-lane.d.ts +39 -0
- package/dist/cron/api-lane.d.ts.map +1 -0
- package/dist/cron/api-lane.js +203 -0
- package/dist/cron/api-lane.js.map +1 -0
- package/dist/cron/backlog.d.ts +50 -0
- package/dist/cron/backlog.d.ts.map +1 -0
- package/dist/cron/backlog.js +115 -0
- package/dist/cron/backlog.js.map +1 -0
- package/dist/cron/billing.d.ts +11 -0
- package/dist/cron/billing.d.ts.map +1 -0
- package/dist/cron/billing.js +69 -0
- package/dist/cron/billing.js.map +1 -0
- package/dist/cron/collection.d.ts +50 -0
- package/dist/cron/collection.d.ts.map +1 -0
- package/dist/cron/collection.js +118 -0
- package/dist/cron/collection.js.map +1 -0
- package/dist/cron/funding.d.ts +16 -0
- package/dist/cron/funding.d.ts.map +1 -0
- package/dist/cron/funding.js +262 -0
- package/dist/cron/funding.js.map +1 -0
- package/dist/cron/payer-billing.d.ts +38 -0
- package/dist/cron/payer-billing.d.ts.map +1 -0
- package/dist/cron/payer-billing.js +119 -0
- package/dist/cron/payer-billing.js.map +1 -0
- package/dist/cron/scan.d.ts +43 -0
- package/dist/cron/scan.d.ts.map +1 -0
- package/dist/cron/scan.js +250 -0
- package/dist/cron/scan.js.map +1 -0
- package/dist/db/client.d.ts +14 -0
- package/dist/db/client.d.ts.map +1 -0
- package/dist/db/client.js +14 -0
- package/dist/db/client.js.map +1 -0
- package/dist/db/index.d.ts +7 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +7 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/schema.d.ts +6738 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +1433 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/define-oracle.d.ts +32 -0
- package/dist/define-oracle.d.ts.map +1 -0
- package/dist/define-oracle.js +80 -0
- package/dist/define-oracle.js.map +1 -0
- package/dist/dev-oracle.d.ts +9 -0
- package/dist/dev-oracle.d.ts.map +1 -0
- package/dist/dev-oracle.js +19 -0
- package/dist/dev-oracle.js.map +1 -0
- package/dist/dev-worker.d.ts +10 -0
- package/dist/dev-worker.d.ts.map +1 -0
- package/dist/dev-worker.js +12 -0
- package/dist/dev-worker.js.map +1 -0
- package/dist/env.d.ts +146 -0
- package/dist/env.d.ts.map +1 -0
- package/dist/env.js +10 -0
- package/dist/env.js.map +1 -0
- package/dist/facts/exif.d.ts +43 -0
- package/dist/facts/exif.d.ts.map +1 -0
- package/dist/facts/exif.js +224 -0
- package/dist/facts/exif.js.map +1 -0
- package/dist/facts/fact.d.ts +62 -0
- package/dist/facts/fact.d.ts.map +1 -0
- package/dist/facts/fact.js +105 -0
- package/dist/facts/fact.js.map +1 -0
- package/dist/facts/geo.d.ts +55 -0
- package/dist/facts/geo.d.ts.map +1 -0
- package/dist/facts/geo.js +267 -0
- package/dist/facts/geo.js.map +1 -0
- package/dist/facts/index.d.ts +31 -0
- package/dist/facts/index.d.ts.map +1 -0
- package/dist/facts/index.js +27 -0
- package/dist/facts/index.js.map +1 -0
- package/dist/facts/linked-doc.d.ts +60 -0
- package/dist/facts/linked-doc.d.ts.map +1 -0
- package/dist/facts/linked-doc.js +101 -0
- package/dist/facts/linked-doc.js.map +1 -0
- package/dist/facts/types.d.ts +278 -0
- package/dist/facts/types.d.ts.map +1 -0
- package/dist/facts/types.js +19 -0
- package/dist/facts/types.js.map +1 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/api-lane/accept.d.ts +29 -0
- package/dist/lib/api-lane/accept.d.ts.map +1 -0
- package/dist/lib/api-lane/accept.js +218 -0
- package/dist/lib/api-lane/accept.js.map +1 -0
- package/dist/lib/api-lane/claim-list.d.ts +44 -0
- package/dist/lib/api-lane/claim-list.d.ts.map +1 -0
- package/dist/lib/api-lane/claim-list.js +92 -0
- package/dist/lib/api-lane/claim-list.js.map +1 -0
- package/dist/lib/api-lane/company.d.ts +56 -0
- package/dist/lib/api-lane/company.d.ts.map +1 -0
- package/dist/lib/api-lane/company.js +103 -0
- package/dist/lib/api-lane/company.js.map +1 -0
- package/dist/lib/api-lane/events.d.ts +21 -0
- package/dist/lib/api-lane/events.d.ts.map +1 -0
- package/dist/lib/api-lane/events.js +111 -0
- package/dist/lib/api-lane/events.js.map +1 -0
- package/dist/lib/api-lane/ids.d.ts +39 -0
- package/dist/lib/api-lane/ids.d.ts.map +1 -0
- package/dist/lib/api-lane/ids.js +78 -0
- package/dist/lib/api-lane/ids.js.map +1 -0
- package/dist/lib/api-lane/index.d.ts +16 -0
- package/dist/lib/api-lane/index.d.ts.map +1 -0
- package/dist/lib/api-lane/index.js +16 -0
- package/dist/lib/api-lane/index.js.map +1 -0
- package/dist/lib/api-lane/linked.d.ts +264 -0
- package/dist/lib/api-lane/linked.d.ts.map +1 -0
- package/dist/lib/api-lane/linked.js +272 -0
- package/dist/lib/api-lane/linked.js.map +1 -0
- package/dist/lib/api-lane/media-type.d.ts +15 -0
- package/dist/lib/api-lane/media-type.d.ts.map +1 -0
- package/dist/lib/api-lane/media-type.js +73 -0
- package/dist/lib/api-lane/media-type.js.map +1 -0
- package/dist/lib/api-lane/member-emails.d.ts +83 -0
- package/dist/lib/api-lane/member-emails.d.ts.map +1 -0
- package/dist/lib/api-lane/member-emails.js +213 -0
- package/dist/lib/api-lane/member-emails.js.map +1 -0
- package/dist/lib/api-lane/members.d.ts +42 -0
- package/dist/lib/api-lane/members.d.ts.map +1 -0
- package/dist/lib/api-lane/members.js +75 -0
- package/dist/lib/api-lane/members.js.map +1 -0
- package/dist/lib/api-lane/notify.d.ts +47 -0
- package/dist/lib/api-lane/notify.d.ts.map +1 -0
- package/dist/lib/api-lane/notify.js +240 -0
- package/dist/lib/api-lane/notify.js.map +1 -0
- package/dist/lib/api-lane/pause.d.ts +41 -0
- package/dist/lib/api-lane/pause.d.ts.map +1 -0
- package/dist/lib/api-lane/pause.js +155 -0
- package/dist/lib/api-lane/pause.js.map +1 -0
- package/dist/lib/api-lane/record.d.ts +76 -0
- package/dist/lib/api-lane/record.d.ts.map +1 -0
- package/dist/lib/api-lane/record.js +337 -0
- package/dist/lib/api-lane/record.js.map +1 -0
- package/dist/lib/api-lane/retention.d.ts +43 -0
- package/dist/lib/api-lane/retention.d.ts.map +1 -0
- package/dist/lib/api-lane/retention.js +176 -0
- package/dist/lib/api-lane/retention.js.map +1 -0
- package/dist/lib/api-lane/review.d.ts +76 -0
- package/dist/lib/api-lane/review.d.ts.map +1 -0
- package/dist/lib/api-lane/review.js +355 -0
- package/dist/lib/api-lane/review.js.map +1 -0
- package/dist/lib/api-lane/reviewers.d.ts +109 -0
- package/dist/lib/api-lane/reviewers.d.ts.map +1 -0
- package/dist/lib/api-lane/reviewers.js +755 -0
- package/dist/lib/api-lane/reviewers.js.map +1 -0
- package/dist/lib/api-lane/source-delete.d.ts +16 -0
- package/dist/lib/api-lane/source-delete.d.ts.map +1 -0
- package/dist/lib/api-lane/source-delete.js +50 -0
- package/dist/lib/api-lane/source-delete.js.map +1 -0
- package/dist/lib/api-lane/source.d.ts +19 -0
- package/dist/lib/api-lane/source.d.ts.map +1 -0
- package/dist/lib/api-lane/source.js +226 -0
- package/dist/lib/api-lane/source.js.map +1 -0
- package/dist/lib/api-lane/submitter.d.ts +22 -0
- package/dist/lib/api-lane/submitter.d.ts.map +1 -0
- package/dist/lib/api-lane/submitter.js +34 -0
- package/dist/lib/api-lane/submitter.js.map +1 -0
- package/dist/lib/api-lane/timeline.d.ts +20 -0
- package/dist/lib/api-lane/timeline.d.ts.map +1 -0
- package/dist/lib/api-lane/timeline.js +23 -0
- package/dist/lib/api-lane/timeline.js.map +1 -0
- package/dist/lib/api-lane/webhook-crypto.d.ts +44 -0
- package/dist/lib/api-lane/webhook-crypto.d.ts.map +1 -0
- package/dist/lib/api-lane/webhook-crypto.js +103 -0
- package/dist/lib/api-lane/webhook-crypto.js.map +1 -0
- package/dist/lib/api-lane/webhooks.d.ts +117 -0
- package/dist/lib/api-lane/webhooks.d.ts.map +1 -0
- package/dist/lib/api-lane/webhooks.js +503 -0
- package/dist/lib/api-lane/webhooks.js.map +1 -0
- package/dist/lib/archive.d.ts +64 -0
- package/dist/lib/archive.d.ts.map +1 -0
- package/dist/lib/archive.js +305 -0
- package/dist/lib/archive.js.map +1 -0
- package/dist/lib/bech32.d.ts +8 -0
- package/dist/lib/bech32.d.ts.map +1 -0
- package/dist/lib/bech32.js +39 -0
- package/dist/lib/bech32.js.map +1 -0
- package/dist/lib/claim-erase.d.ts +22 -0
- package/dist/lib/claim-erase.d.ts.map +1 -0
- package/dist/lib/claim-erase.js +44 -0
- package/dist/lib/claim-erase.js.map +1 -0
- package/dist/lib/cursor.d.ts +11 -0
- package/dist/lib/cursor.d.ts.map +1 -0
- package/dist/lib/cursor.js +20 -0
- package/dist/lib/cursor.js.map +1 -0
- package/dist/lib/email/send.d.ts +43 -0
- package/dist/lib/email/send.d.ts.map +1 -0
- package/dist/lib/email/send.js +71 -0
- package/dist/lib/email/send.js.map +1 -0
- package/dist/lib/email/template.d.ts +217 -0
- package/dist/lib/email/template.d.ts.map +1 -0
- package/dist/lib/email/template.js +713 -0
- package/dist/lib/email/template.js.map +1 -0
- package/dist/lib/engine/adr36.d.ts +56 -0
- package/dist/lib/engine/adr36.d.ts.map +1 -0
- package/dist/lib/engine/adr36.js +76 -0
- package/dist/lib/engine/adr36.js.map +1 -0
- package/dist/lib/engine/client.d.ts +162 -0
- package/dist/lib/engine/client.d.ts.map +1 -0
- package/dist/lib/engine/client.js +473 -0
- package/dist/lib/engine/client.js.map +1 -0
- package/dist/lib/engine/types.d.ts +1356 -0
- package/dist/lib/engine/types.d.ts.map +1 -0
- package/dist/lib/engine/types.js +562 -0
- package/dist/lib/engine/types.js.map +1 -0
- package/dist/lib/errors.d.ts +73 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +96 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/facts/builder.d.ts +88 -0
- package/dist/lib/facts/builder.d.ts.map +1 -0
- package/dist/lib/facts/builder.js +239 -0
- package/dist/lib/facts/builder.js.map +1 -0
- package/dist/lib/facts/ctx.d.ts +34 -0
- package/dist/lib/facts/ctx.d.ts.map +1 -0
- package/dist/lib/facts/ctx.js +51 -0
- package/dist/lib/facts/ctx.js.map +1 -0
- package/dist/lib/facts/expected.d.ts +23 -0
- package/dist/lib/facts/expected.d.ts.map +1 -0
- package/dist/lib/facts/expected.js +16 -0
- package/dist/lib/facts/expected.js.map +1 -0
- package/dist/lib/facts/fact-cache.d.ts +469 -0
- package/dist/lib/facts/fact-cache.d.ts.map +1 -0
- package/dist/lib/facts/fact-cache.js +52 -0
- package/dist/lib/facts/fact-cache.js.map +1 -0
- package/dist/lib/facts/factset.d.ts +608 -0
- package/dist/lib/facts/factset.d.ts.map +1 -0
- package/dist/lib/facts/factset.js +226 -0
- package/dist/lib/facts/factset.js.map +1 -0
- package/dist/lib/facts/producer.d.ts +190 -0
- package/dist/lib/facts/producer.d.ts.map +1 -0
- package/dist/lib/facts/producer.js +15 -0
- package/dist/lib/facts/producer.js.map +1 -0
- package/dist/lib/facts/runner.d.ts +111 -0
- package/dist/lib/facts/runner.d.ts.map +1 -0
- package/dist/lib/facts/runner.js +438 -0
- package/dist/lib/facts/runner.js.map +1 -0
- package/dist/lib/facts/stock/ai-check.d.ts +100 -0
- package/dist/lib/facts/stock/ai-check.d.ts.map +1 -0
- package/dist/lib/facts/stock/ai-check.js +526 -0
- package/dist/lib/facts/stock/ai-check.js.map +1 -0
- package/dist/lib/facts/stock/ai-inputs.d.ts +104 -0
- package/dist/lib/facts/stock/ai-inputs.d.ts.map +1 -0
- package/dist/lib/facts/stock/ai-inputs.js +332 -0
- package/dist/lib/facts/stock/ai-inputs.js.map +1 -0
- package/dist/lib/facts/stock/ai-provider.d.ts +105 -0
- package/dist/lib/facts/stock/ai-provider.d.ts.map +1 -0
- package/dist/lib/facts/stock/ai-provider.js +250 -0
- package/dist/lib/facts/stock/ai-provider.js.map +1 -0
- package/dist/lib/facts/stock/ai-unique.d.ts +85 -0
- package/dist/lib/facts/stock/ai-unique.d.ts.map +1 -0
- package/dist/lib/facts/stock/ai-unique.js +208 -0
- package/dist/lib/facts/stock/ai-unique.js.map +1 -0
- package/dist/lib/facts/stock/archive.d.ts +63 -0
- package/dist/lib/facts/stock/archive.d.ts.map +1 -0
- package/dist/lib/facts/stock/archive.js +349 -0
- package/dist/lib/facts/stock/archive.js.map +1 -0
- package/dist/lib/facts/stock/c2pa-trust-list.d.ts +16 -0
- package/dist/lib/facts/stock/c2pa-trust-list.d.ts.map +1 -0
- package/dist/lib/facts/stock/c2pa-trust-list.js +637 -0
- package/dist/lib/facts/stock/c2pa-trust-list.js.map +1 -0
- package/dist/lib/facts/stock/c2pa.d.ts +56 -0
- package/dist/lib/facts/stock/c2pa.d.ts.map +1 -0
- package/dist/lib/facts/stock/c2pa.js +234 -0
- package/dist/lib/facts/stock/c2pa.js.map +1 -0
- package/dist/lib/facts/stock/call.d.ts +91 -0
- package/dist/lib/facts/stock/call.d.ts.map +1 -0
- package/dist/lib/facts/stock/call.js +281 -0
- package/dist/lib/facts/stock/call.js.map +1 -0
- package/dist/lib/facts/stock/capability.d.ts +39 -0
- package/dist/lib/facts/stock/capability.d.ts.map +1 -0
- package/dist/lib/facts/stock/capability.js +59 -0
- package/dist/lib/facts/stock/capability.js.map +1 -0
- package/dist/lib/facts/stock/ext-source.d.ts +51 -0
- package/dist/lib/facts/stock/ext-source.d.ts.map +1 -0
- package/dist/lib/facts/stock/ext-source.js +201 -0
- package/dist/lib/facts/stock/ext-source.js.map +1 -0
- package/dist/lib/facts/stock/frequency-fact.d.ts +59 -0
- package/dist/lib/facts/stock/frequency-fact.d.ts.map +1 -0
- package/dist/lib/facts/stock/frequency-fact.js +86 -0
- package/dist/lib/facts/stock/frequency-fact.js.map +1 -0
- package/dist/lib/facts/stock/frequency.d.ts +32 -0
- package/dist/lib/facts/stock/frequency.d.ts.map +1 -0
- package/dist/lib/facts/stock/frequency.js +48 -0
- package/dist/lib/facts/stock/frequency.js.map +1 -0
- package/dist/lib/facts/stock/index.d.ts +27 -0
- package/dist/lib/facts/stock/index.d.ts.map +1 -0
- package/dist/lib/facts/stock/index.js +28 -0
- package/dist/lib/facts/stock/index.js.map +1 -0
- package/dist/lib/facts/stock/normalize.d.ts +45 -0
- package/dist/lib/facts/stock/normalize.d.ts.map +1 -0
- package/dist/lib/facts/stock/normalize.js +135 -0
- package/dist/lib/facts/stock/normalize.js.map +1 -0
- package/dist/lib/facts/stock/phash.d.ts +55 -0
- package/dist/lib/facts/stock/phash.d.ts.map +1 -0
- package/dist/lib/facts/stock/phash.js +256 -0
- package/dist/lib/facts/stock/phash.js.map +1 -0
- package/dist/lib/facts/stock/rule-defaults.d.ts +72 -0
- package/dist/lib/facts/stock/rule-defaults.d.ts.map +1 -0
- package/dist/lib/facts/stock/rule-defaults.js +55 -0
- package/dist/lib/facts/stock/rule-defaults.js.map +1 -0
- package/dist/lib/facts/stock/send.d.ts +52 -0
- package/dist/lib/facts/stock/send.d.ts.map +1 -0
- package/dist/lib/facts/stock/send.js +148 -0
- package/dist/lib/facts/stock/send.js.map +1 -0
- package/dist/lib/facts/stock/unique-score.d.ts +138 -0
- package/dist/lib/facts/stock/unique-score.d.ts.map +1 -0
- package/dist/lib/facts/stock/unique-score.js +257 -0
- package/dist/lib/facts/stock/unique-score.js.map +1 -0
- package/dist/lib/facts/stock/unique-store.d.ts +420 -0
- package/dist/lib/facts/stock/unique-store.d.ts.map +1 -0
- package/dist/lib/facts/stock/unique-store.js +328 -0
- package/dist/lib/facts/stock/unique-store.js.map +1 -0
- package/dist/lib/facts/stock/unique.d.ts +35 -0
- package/dist/lib/facts/stock/unique.d.ts.map +1 -0
- package/dist/lib/facts/stock/unique.js +327 -0
- package/dist/lib/facts/stock/unique.js.map +1 -0
- package/dist/lib/facts/tools.d.ts +57 -0
- package/dist/lib/facts/tools.d.ts.map +1 -0
- package/dist/lib/facts/tools.js +325 -0
- package/dist/lib/facts/tools.js.map +1 -0
- package/dist/lib/facts/validate.d.ts +33 -0
- package/dist/lib/facts/validate.d.ts.map +1 -0
- package/dist/lib/facts/validate.js +137 -0
- package/dist/lib/facts/validate.js.map +1 -0
- package/dist/lib/hash.d.ts +44 -0
- package/dist/lib/hash.d.ts.map +1 -0
- package/dist/lib/hash.js +80 -0
- package/dist/lib/hash.js.map +1 -0
- package/dist/lib/http/client.d.ts +113 -0
- package/dist/lib/http/client.d.ts.map +1 -0
- package/dist/lib/http/client.js +330 -0
- package/dist/lib/http/client.js.map +1 -0
- package/dist/lib/ids.d.ts +17 -0
- package/dist/lib/ids.d.ts.map +1 -0
- package/dist/lib/ids.js +26 -0
- package/dist/lib/ids.js.map +1 -0
- package/dist/lib/ixo/attachments.d.ts +116 -0
- package/dist/lib/ixo/attachments.d.ts.map +1 -0
- package/dist/lib/ixo/attachments.js +290 -0
- package/dist/lib/ixo/attachments.js.map +1 -0
- package/dist/lib/ixo/authz.d.ts +40 -0
- package/dist/lib/ixo/authz.d.ts.map +1 -0
- package/dist/lib/ixo/authz.js +113 -0
- package/dist/lib/ixo/authz.js.map +1 -0
- package/dist/lib/ixo/blocksync/index.d.ts +90 -0
- package/dist/lib/ixo/blocksync/index.d.ts.map +1 -0
- package/dist/lib/ixo/blocksync/index.js +251 -0
- package/dist/lib/ixo/blocksync/index.js.map +1 -0
- package/dist/lib/ixo/blocksync/queries.d.ts +15 -0
- package/dist/lib/ixo/blocksync/queries.d.ts.map +1 -0
- package/dist/lib/ixo/blocksync/queries.js +144 -0
- package/dist/lib/ixo/blocksync/queries.js.map +1 -0
- package/dist/lib/ixo/blocksync/types.d.ts +184 -0
- package/dist/lib/ixo/blocksync/types.d.ts.map +1 -0
- package/dist/lib/ixo/blocksync/types.js +108 -0
- package/dist/lib/ixo/blocksync/types.js.map +1 -0
- package/dist/lib/ixo/cellnode.d.ts +35 -0
- package/dist/lib/ixo/cellnode.d.ts.map +1 -0
- package/dist/lib/ixo/cellnode.js +43 -0
- package/dist/lib/ixo/cellnode.js.map +1 -0
- package/dist/lib/ixo/chain-write.d.ts +130 -0
- package/dist/lib/ixo/chain-write.d.ts.map +1 -0
- package/dist/lib/ixo/chain-write.js +460 -0
- package/dist/lib/ixo/chain-write.js.map +1 -0
- package/dist/lib/ixo/chain.d.ts +1046 -0
- package/dist/lib/ixo/chain.d.ts.map +1 -0
- package/dist/lib/ixo/chain.js +279 -0
- package/dist/lib/ixo/chain.js.map +1 -0
- package/dist/lib/ixo/claim-bot.d.ts +49 -0
- package/dist/lib/ixo/claim-bot.d.ts.map +1 -0
- package/dist/lib/ixo/claim-bot.js +141 -0
- package/dist/lib/ixo/claim-bot.js.map +1 -0
- package/dist/lib/ixo/delegation-verify.d.ts +44 -0
- package/dist/lib/ixo/delegation-verify.d.ts.map +1 -0
- package/dist/lib/ixo/delegation-verify.js +101 -0
- package/dist/lib/ixo/delegation-verify.js.map +1 -0
- package/dist/lib/ixo/did.d.ts +13 -0
- package/dist/lib/ixo/did.d.ts.map +1 -0
- package/dist/lib/ixo/did.js +85 -0
- package/dist/lib/ixo/did.js.map +1 -0
- package/dist/lib/ixo/grant-chain.d.ts +55 -0
- package/dist/lib/ixo/grant-chain.d.ts.map +1 -0
- package/dist/lib/ixo/grant-chain.js +185 -0
- package/dist/lib/ixo/grant-chain.js.map +1 -0
- package/dist/lib/ixo/identity.d.ts +32 -0
- package/dist/lib/ixo/identity.d.ts.map +1 -0
- package/dist/lib/ixo/identity.js +104 -0
- package/dist/lib/ixo/identity.js.map +1 -0
- package/dist/lib/ixo/index.d.ts +118 -0
- package/dist/lib/ixo/index.d.ts.map +1 -0
- package/dist/lib/ixo/index.js +395 -0
- package/dist/lib/ixo/index.js.map +1 -0
- package/dist/lib/ixo/payment.d.ts +104 -0
- package/dist/lib/ixo/payment.d.ts.map +1 -0
- package/dist/lib/ixo/payment.js +136 -0
- package/dist/lib/ixo/payment.js.map +1 -0
- package/dist/lib/ixo/ucan-store.d.ts +30 -0
- package/dist/lib/ixo/ucan-store.d.ts.map +1 -0
- package/dist/lib/ixo/ucan-store.js +134 -0
- package/dist/lib/ixo/ucan-store.js.map +1 -0
- package/dist/lib/ixo/ucan.d.ts +96 -0
- package/dist/lib/ixo/ucan.d.ts.map +1 -0
- package/dist/lib/ixo/ucan.js +216 -0
- package/dist/lib/ixo/ucan.js.map +1 -0
- package/dist/lib/ixo/verified-read.d.ts +43 -0
- package/dist/lib/ixo/verified-read.d.ts.map +1 -0
- package/dist/lib/ixo/verified-read.js +73 -0
- package/dist/lib/ixo/verified-read.js.map +1 -0
- package/dist/lib/ixo/vfs.d.ts +27 -0
- package/dist/lib/ixo/vfs.d.ts.map +1 -0
- package/dist/lib/ixo/vfs.js +42 -0
- package/dist/lib/ixo/vfs.js.map +1 -0
- package/dist/lib/ixo/web-did.d.ts +7 -0
- package/dist/lib/ixo/web-did.d.ts.map +1 -0
- package/dist/lib/ixo/web-did.js +9 -0
- package/dist/lib/ixo/web-did.js.map +1 -0
- package/dist/lib/logger.d.ts +34 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +126 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/matrix/api.d.ts +57 -0
- package/dist/lib/matrix/api.d.ts.map +1 -0
- package/dist/lib/matrix/api.js +58 -0
- package/dist/lib/matrix/api.js.map +1 -0
- package/dist/lib/matrix/client.d.ts +41 -0
- package/dist/lib/matrix/client.d.ts.map +1 -0
- package/dist/lib/matrix/client.js +104 -0
- package/dist/lib/matrix/client.js.map +1 -0
- package/dist/lib/matrix/deliver.d.ts +224 -0
- package/dist/lib/matrix/deliver.d.ts.map +1 -0
- package/dist/lib/matrix/deliver.js +788 -0
- package/dist/lib/matrix/deliver.js.map +1 -0
- package/dist/lib/matrix/events.d.ts +114 -0
- package/dist/lib/matrix/events.d.ts.map +1 -0
- package/dist/lib/matrix/events.js +143 -0
- package/dist/lib/matrix/events.js.map +1 -0
- package/dist/lib/matrix/mxid.d.ts +24 -0
- package/dist/lib/matrix/mxid.d.ts.map +1 -0
- package/dist/lib/matrix/mxid.js +47 -0
- package/dist/lib/matrix/mxid.js.map +1 -0
- package/dist/lib/metrics.d.ts +105 -0
- package/dist/lib/metrics.d.ts.map +1 -0
- package/dist/lib/metrics.js +204 -0
- package/dist/lib/metrics.js.map +1 -0
- package/dist/lib/oauth/approvals.d.ts +160 -0
- package/dist/lib/oauth/approvals.d.ts.map +1 -0
- package/dist/lib/oauth/approvals.js +273 -0
- package/dist/lib/oauth/approvals.js.map +1 -0
- package/dist/lib/oauth/standing.d.ts +152 -0
- package/dist/lib/oauth/standing.d.ts.map +1 -0
- package/dist/lib/oauth/standing.js +299 -0
- package/dist/lib/oauth/standing.js.map +1 -0
- package/dist/lib/oauth/token.d.ts +60 -0
- package/dist/lib/oauth/token.d.ts.map +1 -0
- package/dist/lib/oauth/token.js +129 -0
- package/dist/lib/oauth/token.js.map +1 -0
- package/dist/lib/payments/extend.d.ts +42 -0
- package/dist/lib/payments/extend.d.ts.map +1 -0
- package/dist/lib/payments/extend.js +98 -0
- package/dist/lib/payments/extend.js.map +1 -0
- package/dist/lib/payments/facilitator.d.ts +220 -0
- package/dist/lib/payments/facilitator.d.ts.map +1 -0
- package/dist/lib/payments/facilitator.js +451 -0
- package/dist/lib/payments/facilitator.js.map +1 -0
- package/dist/lib/payments/gate.d.ts +207 -0
- package/dist/lib/payments/gate.d.ts.map +1 -0
- package/dist/lib/payments/gate.js +481 -0
- package/dist/lib/payments/gate.js.map +1 -0
- package/dist/lib/payments/header-seal.d.ts +33 -0
- package/dist/lib/payments/header-seal.d.ts.map +1 -0
- package/dist/lib/payments/header-seal.js +76 -0
- package/dist/lib/payments/header-seal.js.map +1 -0
- package/dist/lib/payments/index.d.ts +12 -0
- package/dist/lib/payments/index.d.ts.map +1 -0
- package/dist/lib/payments/index.js +11 -0
- package/dist/lib/payments/index.js.map +1 -0
- package/dist/lib/payments/price.d.ts +25 -0
- package/dist/lib/payments/price.d.ts.map +1 -0
- package/dist/lib/payments/price.js +43 -0
- package/dist/lib/payments/price.js.map +1 -0
- package/dist/lib/payments/reconcile.d.ts +77 -0
- package/dist/lib/payments/reconcile.d.ts.map +1 -0
- package/dist/lib/payments/reconcile.js +317 -0
- package/dist/lib/payments/reconcile.js.map +1 -0
- package/dist/lib/payments/refund.d.ts +34 -0
- package/dist/lib/payments/refund.d.ts.map +1 -0
- package/dist/lib/payments/refund.js +123 -0
- package/dist/lib/payments/refund.js.map +1 -0
- package/dist/lib/payments/review-billing.d.ts +222 -0
- package/dist/lib/payments/review-billing.d.ts.map +1 -0
- package/dist/lib/payments/review-billing.js +609 -0
- package/dist/lib/payments/review-billing.js.map +1 -0
- package/dist/lib/payments/settle.d.ts +44 -0
- package/dist/lib/payments/settle.d.ts.map +1 -0
- package/dist/lib/payments/settle.js +306 -0
- package/dist/lib/payments/settle.js.map +1 -0
- package/dist/lib/payments/terms.d.ts +27 -0
- package/dist/lib/payments/terms.d.ts.map +1 -0
- package/dist/lib/payments/terms.js +21 -0
- package/dist/lib/payments/terms.js.map +1 -0
- package/dist/lib/payouts.d.ts +20 -0
- package/dist/lib/payouts.d.ts.map +1 -0
- package/dist/lib/payouts.js +30 -0
- package/dist/lib/payouts.js.map +1 -0
- package/dist/lib/readiness.d.ts +42 -0
- package/dist/lib/readiness.d.ts.map +1 -0
- package/dist/lib/readiness.js +130 -0
- package/dist/lib/readiness.js.map +1 -0
- package/dist/lib/redact.d.ts +23 -0
- package/dist/lib/redact.d.ts.map +1 -0
- package/dist/lib/redact.js +67 -0
- package/dist/lib/redact.js.map +1 -0
- package/dist/lib/register.d.ts +85 -0
- package/dist/lib/register.d.ts.map +1 -0
- package/dist/lib/register.js +390 -0
- package/dist/lib/register.js.map +1 -0
- package/dist/lib/review/attestation.d.ts +92 -0
- package/dist/lib/review/attestation.d.ts.map +1 -0
- package/dist/lib/review/attestation.js +264 -0
- package/dist/lib/review/attestation.js.map +1 -0
- package/dist/lib/review/reviewer-grant.d.ts +146 -0
- package/dist/lib/review/reviewer-grant.d.ts.map +1 -0
- package/dist/lib/review/reviewer-grant.js +359 -0
- package/dist/lib/review/reviewer-grant.js.map +1 -0
- package/dist/lib/review/tasks.d.ts +18 -0
- package/dist/lib/review/tasks.d.ts.map +1 -0
- package/dist/lib/review/tasks.js +36 -0
- package/dist/lib/review/tasks.js.map +1 -0
- package/dist/lib/sentry.d.ts +89 -0
- package/dist/lib/sentry.d.ts.map +1 -0
- package/dist/lib/sentry.js +284 -0
- package/dist/lib/sentry.js.map +1 -0
- package/dist/lib/spans.d.ts +14 -0
- package/dist/lib/spans.d.ts.map +1 -0
- package/dist/lib/spans.js +28 -0
- package/dist/lib/spans.js.map +1 -0
- package/dist/lib/tracing.d.ts +31 -0
- package/dist/lib/tracing.d.ts.map +1 -0
- package/dist/lib/tracing.js +66 -0
- package/dist/lib/tracing.js.map +1 -0
- package/dist/lib/ttl-cache.d.ts +26 -0
- package/dist/lib/ttl-cache.d.ts.map +1 -0
- package/dist/lib/ttl-cache.js +61 -0
- package/dist/lib/ttl-cache.js.map +1 -0
- package/dist/lib/validator.d.ts +19 -0
- package/dist/lib/validator.d.ts.map +1 -0
- package/dist/lib/validator.js +32 -0
- package/dist/lib/validator.js.map +1 -0
- package/dist/lib/work-order/form.d.ts +40 -0
- package/dist/lib/work-order/form.d.ts.map +1 -0
- package/dist/lib/work-order/form.js +316 -0
- package/dist/lib/work-order/form.js.map +1 -0
- package/dist/lib/work-order/index.d.ts +20 -0
- package/dist/lib/work-order/index.d.ts.map +1 -0
- package/dist/lib/work-order/index.js +66 -0
- package/dist/lib/work-order/index.js.map +1 -0
- package/dist/middleware/api/audit.d.ts +9 -0
- package/dist/middleware/api/audit.d.ts.map +1 -0
- package/dist/middleware/api/audit.js +38 -0
- package/dist/middleware/api/audit.js.map +1 -0
- package/dist/middleware/api/auth.d.ts +29 -0
- package/dist/middleware/api/auth.d.ts.map +1 -0
- package/dist/middleware/api/auth.js +105 -0
- package/dist/middleware/api/auth.js.map +1 -0
- package/dist/middleware/api/console.d.ts +92 -0
- package/dist/middleware/api/console.d.ts.map +1 -0
- package/dist/middleware/api/console.js +446 -0
- package/dist/middleware/api/console.js.map +1 -0
- package/dist/middleware/api/errors.d.ts +48 -0
- package/dist/middleware/api/errors.d.ts.map +1 -0
- package/dist/middleware/api/errors.js +133 -0
- package/dist/middleware/api/errors.js.map +1 -0
- package/dist/middleware/api/idempotency.d.ts +23 -0
- package/dist/middleware/api/idempotency.d.ts.map +1 -0
- package/dist/middleware/api/idempotency.js +158 -0
- package/dist/middleware/api/idempotency.js.map +1 -0
- package/dist/middleware/api/keys.d.ts +14 -0
- package/dist/middleware/api/keys.d.ts.map +1 -0
- package/dist/middleware/api/keys.js +66 -0
- package/dist/middleware/api/keys.js.map +1 -0
- package/dist/middleware/api/membership.d.ts +32 -0
- package/dist/middleware/api/membership.d.ts.map +1 -0
- package/dist/middleware/api/membership.js +48 -0
- package/dist/middleware/api/membership.js.map +1 -0
- package/dist/middleware/api/oauth.d.ts +28 -0
- package/dist/middleware/api/oauth.d.ts.map +1 -0
- package/dist/middleware/api/oauth.js +109 -0
- package/dist/middleware/api/oauth.js.map +1 -0
- package/dist/middleware/api/rate-limit.d.ts +23 -0
- package/dist/middleware/api/rate-limit.d.ts.map +1 -0
- package/dist/middleware/api/rate-limit.js +70 -0
- package/dist/middleware/api/rate-limit.js.map +1 -0
- package/dist/middleware/api/types.d.ts +92 -0
- package/dist/middleware/api/types.d.ts.map +1 -0
- package/dist/middleware/api/types.js +7 -0
- package/dist/middleware/api/types.js.map +1 -0
- package/dist/middleware/api/wait.d.ts +21 -0
- package/dist/middleware/api/wait.d.ts.map +1 -0
- package/dist/middleware/api/wait.js +85 -0
- package/dist/middleware/api/wait.js.map +1 -0
- package/dist/middleware/capability.d.ts +32 -0
- package/dist/middleware/capability.d.ts.map +1 -0
- package/dist/middleware/capability.js +113 -0
- package/dist/middleware/capability.js.map +1 -0
- package/dist/middleware/database.d.ts +14 -0
- package/dist/middleware/database.d.ts.map +1 -0
- package/dist/middleware/database.js +18 -0
- package/dist/middleware/database.js.map +1 -0
- package/dist/middleware/error-handler.d.ts +13 -0
- package/dist/middleware/error-handler.d.ts.map +1 -0
- package/dist/middleware/error-handler.js +127 -0
- package/dist/middleware/error-handler.js.map +1 -0
- package/dist/middleware/observability.d.ts +32 -0
- package/dist/middleware/observability.d.ts.map +1 -0
- package/dist/middleware/observability.js +134 -0
- package/dist/middleware/observability.js.map +1 -0
- package/dist/middleware/rate-limit.d.ts +16 -0
- package/dist/middleware/rate-limit.d.ts.map +1 -0
- package/dist/middleware/rate-limit.js +56 -0
- package/dist/middleware/rate-limit.js.map +1 -0
- package/dist/middleware/ucan-auth.d.ts +39 -0
- package/dist/middleware/ucan-auth.d.ts.map +1 -0
- package/dist/middleware/ucan-auth.js +278 -0
- package/dist/middleware/ucan-auth.js.map +1 -0
- package/dist/networks.d.ts +34 -0
- package/dist/networks.d.ts.map +1 -0
- package/dist/networks.js +49 -0
- package/dist/networks.js.map +1 -0
- package/dist/oracle.d.ts +193 -0
- package/dist/oracle.d.ts.map +1 -0
- package/dist/oracle.js +245 -0
- package/dist/oracle.js.map +1 -0
- package/dist/routes/health.d.ts +16 -0
- package/dist/routes/health.d.ts.map +1 -0
- package/dist/routes/health.js +29 -0
- package/dist/routes/health.js.map +1 -0
- package/dist/routes/v1/admin.d.ts +18 -0
- package/dist/routes/v1/admin.d.ts.map +1 -0
- package/dist/routes/v1/admin.js +101 -0
- package/dist/routes/v1/admin.js.map +1 -0
- package/dist/routes/v1/api/admin-claims.d.ts +14 -0
- package/dist/routes/v1/api/admin-claims.d.ts.map +1 -0
- package/dist/routes/v1/api/admin-claims.js +82 -0
- package/dist/routes/v1/api/admin-claims.js.map +1 -0
- package/dist/routes/v1/api/admin-facilitator.d.ts +20 -0
- package/dist/routes/v1/api/admin-facilitator.d.ts.map +1 -0
- package/dist/routes/v1/api/admin-facilitator.js +64 -0
- package/dist/routes/v1/api/admin-facilitator.js.map +1 -0
- package/dist/routes/v1/api/admin.d.ts +9 -0
- package/dist/routes/v1/api/admin.d.ts.map +1 -0
- package/dist/routes/v1/api/admin.js +110 -0
- package/dist/routes/v1/api/admin.js.map +1 -0
- package/dist/routes/v1/api/audit.d.ts +8 -0
- package/dist/routes/v1/api/audit.d.ts.map +1 -0
- package/dist/routes/v1/api/audit.js +56 -0
- package/dist/routes/v1/api/audit.js.map +1 -0
- package/dist/routes/v1/api/batch.d.ts +17 -0
- package/dist/routes/v1/api/batch.d.ts.map +1 -0
- package/dist/routes/v1/api/batch.js +192 -0
- package/dist/routes/v1/api/batch.js.map +1 -0
- package/dist/routes/v1/api/claims-read.d.ts +43 -0
- package/dist/routes/v1/api/claims-read.d.ts.map +1 -0
- package/dist/routes/v1/api/claims-read.js +123 -0
- package/dist/routes/v1/api/claims-read.js.map +1 -0
- package/dist/routes/v1/api/claims.d.ts +131 -0
- package/dist/routes/v1/api/claims.d.ts.map +1 -0
- package/dist/routes/v1/api/claims.js +407 -0
- package/dist/routes/v1/api/claims.js.map +1 -0
- package/dist/routes/v1/api/collections-link.d.ts +14 -0
- package/dist/routes/v1/api/collections-link.d.ts.map +1 -0
- package/dist/routes/v1/api/collections-link.js +97 -0
- package/dist/routes/v1/api/collections-link.js.map +1 -0
- package/dist/routes/v1/api/export.d.ts +48 -0
- package/dist/routes/v1/api/export.d.ts.map +1 -0
- package/dist/routes/v1/api/export.js +251 -0
- package/dist/routes/v1/api/export.js.map +1 -0
- package/dist/routes/v1/api/index.d.ts +16 -0
- package/dist/routes/v1/api/index.d.ts.map +1 -0
- package/dist/routes/v1/api/index.js +68 -0
- package/dist/routes/v1/api/index.js.map +1 -0
- package/dist/routes/v1/api/keys.d.ts +9 -0
- package/dist/routes/v1/api/keys.d.ts.map +1 -0
- package/dist/routes/v1/api/keys.js +95 -0
- package/dist/routes/v1/api/keys.js.map +1 -0
- package/dist/routes/v1/api/me.d.ts +21 -0
- package/dist/routes/v1/api/me.d.ts.map +1 -0
- package/dist/routes/v1/api/me.js +122 -0
- package/dist/routes/v1/api/me.js.map +1 -0
- package/dist/routes/v1/api/members.d.ts +17 -0
- package/dist/routes/v1/api/members.d.ts.map +1 -0
- package/dist/routes/v1/api/members.js +406 -0
- package/dist/routes/v1/api/members.js.map +1 -0
- package/dist/routes/v1/api/meta.d.ts +12 -0
- package/dist/routes/v1/api/meta.d.ts.map +1 -0
- package/dist/routes/v1/api/meta.js +59 -0
- package/dist/routes/v1/api/meta.js.map +1 -0
- package/dist/routes/v1/api/openapi.gen.d.ts +2 -0
- package/dist/routes/v1/api/openapi.gen.d.ts.map +1 -0
- package/dist/routes/v1/api/openapi.gen.js +7 -0
- package/dist/routes/v1/api/openapi.gen.js.map +1 -0
- package/dist/routes/v1/api/protocols.d.ts +22 -0
- package/dist/routes/v1/api/protocols.d.ts.map +1 -0
- package/dist/routes/v1/api/protocols.js +153 -0
- package/dist/routes/v1/api/protocols.js.map +1 -0
- package/dist/routes/v1/api/review-billing.d.ts +18 -0
- package/dist/routes/v1/api/review-billing.d.ts.map +1 -0
- package/dist/routes/v1/api/review-billing.js +196 -0
- package/dist/routes/v1/api/review-billing.js.map +1 -0
- package/dist/routes/v1/api/review.d.ts +30 -0
- package/dist/routes/v1/api/review.d.ts.map +1 -0
- package/dist/routes/v1/api/review.js +302 -0
- package/dist/routes/v1/api/review.js.map +1 -0
- package/dist/routes/v1/api/sources.d.ts +10 -0
- package/dist/routes/v1/api/sources.d.ts.map +1 -0
- package/dist/routes/v1/api/sources.js +293 -0
- package/dist/routes/v1/api/sources.js.map +1 -0
- package/dist/routes/v1/api/uploads.d.ts +37 -0
- package/dist/routes/v1/api/uploads.d.ts.map +1 -0
- package/dist/routes/v1/api/uploads.js +414 -0
- package/dist/routes/v1/api/uploads.js.map +1 -0
- package/dist/routes/v1/api/views.d.ts +18 -0
- package/dist/routes/v1/api/views.d.ts.map +1 -0
- package/dist/routes/v1/api/views.js +95 -0
- package/dist/routes/v1/api/views.js.map +1 -0
- package/dist/routes/v1/api/webhooks.d.ts +14 -0
- package/dist/routes/v1/api/webhooks.d.ts.map +1 -0
- package/dist/routes/v1/api/webhooks.js +282 -0
- package/dist/routes/v1/api/webhooks.js.map +1 -0
- package/dist/routes/v1/api/work-orders.d.ts +45 -0
- package/dist/routes/v1/api/work-orders.d.ts.map +1 -0
- package/dist/routes/v1/api/work-orders.js +171 -0
- package/dist/routes/v1/api/work-orders.js.map +1 -0
- package/dist/routes/v1/claims.d.ts +21 -0
- package/dist/routes/v1/claims.d.ts.map +1 -0
- package/dist/routes/v1/claims.js +153 -0
- package/dist/routes/v1/claims.js.map +1 -0
- package/dist/routes/v1/collections.d.ts +45 -0
- package/dist/routes/v1/collections.d.ts.map +1 -0
- package/dist/routes/v1/collections.js +201 -0
- package/dist/routes/v1/collections.js.map +1 -0
- package/dist/routes/v1/index.d.ts +13 -0
- package/dist/routes/v1/index.d.ts.map +1 -0
- package/dist/routes/v1/index.js +41 -0
- package/dist/routes/v1/index.js.map +1 -0
- package/dist/routes/v1/info.d.ts +14 -0
- package/dist/routes/v1/info.d.ts.map +1 -0
- package/dist/routes/v1/info.js +75 -0
- package/dist/routes/v1/info.js.map +1 -0
- package/dist/routes/v1/mcp/index.d.ts +33 -0
- package/dist/routes/v1/mcp/index.d.ts.map +1 -0
- package/dist/routes/v1/mcp/index.js +252 -0
- package/dist/routes/v1/mcp/index.js.map +1 -0
- package/dist/routes/v1/mcp/oauth.d.ts +27 -0
- package/dist/routes/v1/mcp/oauth.d.ts.map +1 -0
- package/dist/routes/v1/mcp/oauth.js +500 -0
- package/dist/routes/v1/mcp/oauth.js.map +1 -0
- package/dist/routes/v1/mcp/tools.d.ts +71 -0
- package/dist/routes/v1/mcp/tools.d.ts.map +1 -0
- package/dist/routes/v1/mcp/tools.js +432 -0
- package/dist/routes/v1/mcp/tools.js.map +1 -0
- package/dist/routes/v1/mcp/ui.d.ts +45 -0
- package/dist/routes/v1/mcp/ui.d.ts.map +1 -0
- package/dist/routes/v1/mcp/ui.js +454 -0
- package/dist/routes/v1/mcp/ui.js.map +1 -0
- package/dist/routes/v1/oauth.d.ts +29 -0
- package/dist/routes/v1/oauth.d.ts.map +1 -0
- package/dist/routes/v1/oauth.js +256 -0
- package/dist/routes/v1/oauth.js.map +1 -0
- package/dist/routes/v1/reviewers.d.ts +22 -0
- package/dist/routes/v1/reviewers.d.ts.map +1 -0
- package/dist/routes/v1/reviewers.js +165 -0
- package/dist/routes/v1/reviewers.js.map +1 -0
- package/dist/routes/v1/reviews.d.ts +38 -0
- package/dist/routes/v1/reviews.d.ts.map +1 -0
- package/dist/routes/v1/reviews.js +234 -0
- package/dist/routes/v1/reviews.js.map +1 -0
- package/dist/routes/v1/shared.d.ts +586 -0
- package/dist/routes/v1/shared.d.ts.map +1 -0
- package/dist/routes/v1/shared.js +229 -0
- package/dist/routes/v1/shared.js.map +1 -0
- package/dist/routes/well-known.d.ts +15 -0
- package/dist/routes/well-known.d.ts.map +1 -0
- package/dist/routes/well-known.js +35 -0
- package/dist/routes/well-known.js.map +1 -0
- package/dist/runtime.d.ts +100 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +144 -0
- package/dist/runtime.js.map +1 -0
- package/dist/testing/fake-tools.d.ts +104 -0
- package/dist/testing/fake-tools.d.ts.map +1 -0
- package/dist/testing/fake-tools.js +213 -0
- package/dist/testing/fake-tools.js.map +1 -0
- package/dist/testing/index.d.ts +54 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +104 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/samples.d.ts +70 -0
- package/dist/testing/samples.d.ts.map +1 -0
- package/dist/testing/samples.js +92 -0
- package/dist/testing/samples.js.map +1 -0
- package/dist/workflows/claim-ingest.d.ts +250 -0
- package/dist/workflows/claim-ingest.d.ts.map +1 -0
- package/dist/workflows/claim-ingest.js +1020 -0
- package/dist/workflows/claim-ingest.js.map +1 -0
- package/dist/workflows/claim-source.d.ts +25 -0
- package/dist/workflows/claim-source.d.ts.map +1 -0
- package/dist/workflows/claim-source.js +107 -0
- package/dist/workflows/claim-source.js.map +1 -0
- package/dist/workflows/review-complete.d.ts +82 -0
- package/dist/workflows/review-complete.d.ts.map +1 -0
- package/dist/workflows/review-complete.js +455 -0
- package/dist/workflows/review-complete.js.map +1 -0
- package/dist/workflows/steps.d.ts +125 -0
- package/dist/workflows/steps.d.ts.map +1 -0
- package/dist/workflows/steps.js +325 -0
- package/dist/workflows/steps.js.map +1 -0
- package/docs/api.md +2595 -0
- package/docs/guide.md +1525 -0
- package/migrations/0000_init.sql +108 -0
- package/migrations/0001_review_attestation.sql +1 -0
- package/migrations/0002_decisions_facts.sql +1 -0
- package/migrations/0003_api_lane.sql +171 -0
- package/migrations/0004_api_v1_1.sql +19 -0
- package/migrations/0005_member_notify.sql +3 -0
- package/migrations/0006_source_collections.sql +16 -0
- package/migrations/0007_api_settlement.sql +27 -0
- package/migrations/0008_review_extend.sql +1 -0
- package/migrations/0009_card_refunds.sql +4 -0
- package/migrations/0010_even_scorpion.sql +16 -0
- package/migrations/0011_mcp_oauth.sql +27 -0
- package/migrations/0012_mcp_standing.sql +21 -0
- package/migrations/0013_unknown_krista_starr.sql +2 -0
- package/migrations/0014_last_carnage.sql +14 -0
- package/migrations/0015_company_authority.sql +26 -0
- package/migrations/0016_owner_only_links.sql +6 -0
- package/migrations/0017_organisations.sql +35 -0
- package/migrations/0018_remove_app_signed.sql +4 -0
- package/migrations/0019_submitted_via.sql +2 -0
- package/migrations/0020_drop_decision_to_pay.sql +4 -0
- package/migrations/0021_manual_erase.sql +25 -0
- package/migrations/0022_errored_facts.sql +1 -0
- package/migrations/0023_review_billing.sql +20 -0
- package/migrations/0024_pending_task_details.sql +1 -0
- package/migrations/meta/0000_snapshot.json +707 -0
- package/migrations/meta/0001_snapshot.json +714 -0
- package/migrations/meta/0002_snapshot.json +721 -0
- package/migrations/meta/0003_snapshot.json +1845 -0
- package/migrations/meta/0004_snapshot.json +1969 -0
- package/migrations/meta/0005_snapshot.json +1991 -0
- package/migrations/meta/0006_snapshot.json +2097 -0
- package/migrations/meta/0007_snapshot.json +2128 -0
- package/migrations/meta/0008_snapshot.json +2133 -0
- package/migrations/meta/0009_snapshot.json +2161 -0
- package/migrations/meta/0010_snapshot.json +2265 -0
- package/migrations/meta/0011_snapshot.json +2448 -0
- package/migrations/meta/0012_snapshot.json +2577 -0
- package/migrations/meta/0013_snapshot.json +2594 -0
- package/migrations/meta/0014_snapshot.json +2602 -0
- package/migrations/meta/0015_snapshot.json +2778 -0
- package/migrations/meta/0016_snapshot.json +2778 -0
- package/migrations/meta/0017_snapshot.json +2792 -0
- package/migrations/meta/0018_snapshot.json +2778 -0
- package/migrations/meta/0019_snapshot.json +2792 -0
- package/migrations/meta/0020_snapshot.json +2785 -0
- package/migrations/meta/0021_snapshot.json +2762 -0
- package/migrations/meta/0022_snapshot.json +2769 -0
- package/migrations/meta/0023_snapshot.json +2900 -0
- package/migrations/meta/0024_snapshot.json +2907 -0
- package/migrations/meta/_journal.json +181 -0
- package/openapi/decision-api.yaml +12204 -0
- package/package.json +121 -4
- package/skills/README.md +19 -0
- package/skills/add-openhands-support/SKILL.md +113 -0
- package/skills/create-collection/SKILL.md +199 -0
- package/skills/create-collection/reference/claims-stack.md +106 -0
- package/skills/create-collection/reference/collection.md +111 -0
- package/skills/create-oracle/SKILL.md +400 -0
- package/skills/create-rubric/SKILL.md +130 -0
- package/skills/create-rubric/reference/format-cheatsheet.md +186 -0
- package/skills/create-rubric/templates/claim-form.example.json +60 -0
- package/skills/decision-api-client/SKILL.md +236 -0
- package/skills/decision-api-oracle/SKILL.md +336 -0
- package/skills/publish-protocol/SKILL.md +151 -0
- package/skills/publish-protocol/reference/publishing.md +116 -0
- package/skills/reference/engine-contract.md +222 -0
- package/skills/write-facts/SKILL.md +221 -0
- package/skills/write-facts/reference/examples/http-vendor.ts +88 -0
- package/skills/write-facts/reference/examples/price-matches-agreement.ts +67 -0
- package/skills/write-facts/reference/facts-api.md +232 -0
- package/templates/project/.dev.vars.example +93 -0
- package/templates/project/.editorconfig +9 -0
- package/templates/project/CLAUDE.md +45 -0
- package/templates/project/README.md +199 -0
- package/templates/project/biome.json +37 -0
- package/templates/project/gitignore +29 -0
- package/templates/project/package.json +32 -0
- package/templates/project/src/facts/index.ts +19 -0
- package/templates/project/src/index.ts +25 -0
- package/templates/project/test/api-lane.test.ts +57 -0
- package/templates/project/test/facts.test.ts +14 -0
- package/templates/project/tsconfig.json +25 -0
- package/templates/project/vitest.config.ts +13 -0
- package/templates/project/wrangler.jsonc +446 -0
|
@@ -0,0 +1,455 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Review completion (README "How a claim flows" step 6): fold a human's answers into the SAME decision — the
|
|
3
|
+
* engine replays its frozen facts with one more fact (`POST /v1/reviews/:claimId`, docs/
|
|
4
|
+
* ENGINE-CONTRACT.md "Human review"), never a second evaluation — then act on the now-terminal
|
|
5
|
+
* verdict. One instance per claim (id = `reviewInstanceIdFor(claimId)`, lib/ids.ts), spawned by
|
|
6
|
+
* the review route:
|
|
7
|
+
* step "fold" → load the decision + the answers → RE-PULL the claim body → the engine
|
|
8
|
+
* folds them → the `decisions` row becomes the folded decision (new
|
|
9
|
+
* verdict, digest, receipt; `chainStatus` back to `pending`) and the
|
|
10
|
+
* review is stamped `foldedAt` — one atomic batch, so a retry can never
|
|
11
|
+
* see one without the other. Replayed after completion ⇒ a no-op: the
|
|
12
|
+
* folded row stands
|
|
13
|
+
* step "act" → the same act step as the ingest lane (workflows/steps.ts), fail-soft
|
|
14
|
+
* terminal catch → `claim_reviews.foldError` on the answer the fold read (surfaced by
|
|
15
|
+
* `GET /v1/reviews/:claimId`); the answers are KEPT — the reviewer's
|
|
16
|
+
* "try again" re-POSTs, which clears the error and re-spawns this
|
|
17
|
+
* workflow
|
|
18
|
+
*
|
|
19
|
+
* The re-pull is the contract's (docs/ENGINE-CONTRACT.md "Human review"): the engine's `decide()`
|
|
20
|
+
* reads the claim answers, which neither side persists, so the fold sends them again and the
|
|
21
|
+
* engine rebuilds its FactSet from the stored trace + `claim.answers`, refusing unless
|
|
22
|
+
* `factsDigest` matches. The same claim source as `evaluate` (chain: `pullClaim` — the VFS, the
|
|
23
|
+
* bot via the owner delegation, IPFS or a cellnode, every store but the bot CID-verified) returns
|
|
24
|
+
* the byte-identical body and the same `claimContent`, which every fold carries (company authority:
|
|
25
|
+
* the engine holds it to the decision's content) — and, as in `evaluate`, neither leaves the step:
|
|
26
|
+
* only the small fold summary is a step result.
|
|
27
|
+
*
|
|
28
|
+
* The engine's deterministic refusals — `STALE_REVIEW` (it no longer holds the digest the answers
|
|
29
|
+
* were folded against), `FACTS_MISMATCH` (the rebuilt digest ≠ the stored one: a bug on one side,
|
|
30
|
+
* a CID-addressed body cannot change), `REVIEW_INCOMPLETE` (its pending-task set ≠ the row's;
|
|
31
|
+
* `details.pendingTasks` names what is still owed), `CONTENT_MISMATCH` / `PAYLOAD_TOO_LARGE` (the
|
|
32
|
+
* content is not the decision's, or the body is over the engine's cap; `details.reason` goes into
|
|
33
|
+
* the text), a 400 (the engine's row is not pending), a
|
|
34
|
+
* 403/404 (the engine holds this claim under another oracle, or not at all) — are NonRetryable,
|
|
35
|
+
* logged, and surfaced as `foldError` as `CODE (details.reason): message`; the reviewer answers again against the
|
|
36
|
+
* current decision. A fail-closed pull (403/404) takes the same path through `stepError`; a
|
|
37
|
+
* transient one (503) is left to the runtime's retries — and so is a final fold answered without
|
|
38
|
+
* its receipt (`RECEIPT_MISSING`, steps.ts `requireReceipt`): never stamped, retried, paged once
|
|
39
|
+
* the retries run out.
|
|
40
|
+
*
|
|
41
|
+
* The reviewer's authority (company authority D2) is re-checked HERE, before the pull: the chain
|
|
42
|
+
* lane's gate (lib/review/reviewer-grant.ts) over the grant stored with the answer, so a revoke, a
|
|
43
|
+
* controller removed, or an evaluate grant given to the reviewer since the answer refuses the fold
|
|
44
|
+
* with no engine call — `foldError` `REVIEWER_GRANT_INVALID` / `REVIEWER_NOT_AUTHORIZED`, the
|
|
45
|
+
* engine's own codes; a chain or Blocksync blip (503) retries. An API claim's answer gets the
|
|
46
|
+
* same treatment from `recheckApiReviewer` (lib/api-lane/review.ts): a member whose role grant was
|
|
47
|
+
* revoked, narrowed or replaced, or a root no longer a controller, since the answer is refused the
|
|
48
|
+
* same way. The grant then rides the fold as its controller filed it (or as the API answer sent
|
|
49
|
+
* it), and the engine's own refusal of it (the same two codes) lands on
|
|
50
|
+
* `foldError` too.
|
|
51
|
+
*
|
|
52
|
+
* And the fold's own "no" that is not an error: the protocol's `#vct` drifted between the decision
|
|
53
|
+
* and the fold, so the pinned rubric no longer binds — a `200` with `decision.status = "unusable"`,
|
|
54
|
+
* FINAL on the engine (persisted, receipted). Recorded exactly as the evaluate step records an
|
|
55
|
+
* engine `unusable` (the folded row, its receipt, `foldedAt`), the collection pauses
|
|
56
|
+
* `rubric-unusable` (steps.ts `pauseUnusable`) and `act` skips the non-terminal verdict.
|
|
57
|
+
*/
|
|
58
|
+
import { WorkflowEntrypoint } from "cloudflare:workers";
|
|
59
|
+
import { NonRetryableError } from "cloudflare:workflows";
|
|
60
|
+
import * as Sentry from "@sentry/cloudflare";
|
|
61
|
+
import { and, eq, isNull, sql } from "drizzle-orm";
|
|
62
|
+
import { getDb } from "../db/client.js";
|
|
63
|
+
import { claimIngests, claimReviews, decisions } from "../db/schema.js";
|
|
64
|
+
import { recheckApiReviewer } from "../lib/api-lane/review.js";
|
|
65
|
+
import { archiveAnswer } from "../lib/archive.js";
|
|
66
|
+
import { createEngineClient } from "../lib/engine/client.js";
|
|
67
|
+
import { EngineError } from "../lib/engine/types.js";
|
|
68
|
+
import { AppError } from "../lib/errors.js";
|
|
69
|
+
import { finalVerdictUpdate, registryVerdictToken } from "../lib/facts/stock/unique-store.js";
|
|
70
|
+
import { depsFromEnv } from "../lib/ixo/index.js";
|
|
71
|
+
import { scopedStep, withMetrics } from "../lib/metrics.js";
|
|
72
|
+
import { settleClaim } from "../lib/payments/settle.js";
|
|
73
|
+
import { payoutRequestFor, payoutsConfigured } from "../lib/payouts.js";
|
|
74
|
+
import { checkReviewerGrant } from "../lib/review/reviewer-grant.js";
|
|
75
|
+
import { reportAlert, reportError } from "../lib/sentry.js";
|
|
76
|
+
import { getOracle } from "../oracle.js";
|
|
77
|
+
import { isChain, sourceFor } from "./claim-source.js";
|
|
78
|
+
import { actStep, erroredFactsOf, pauseUnusable, RECEIPT_MISSING, reasonOf, requireReceipt, stepError, } from "./steps.js";
|
|
79
|
+
/** `foldError` for an answer that arrived while an earlier answer's fold failed (terminal catch). */
|
|
80
|
+
const RETRY_ANSWER = "RETRY_ANSWER: your answer arrived while an earlier attempt to apply a review failed — send your answer again to apply it";
|
|
81
|
+
export class ReviewComplete extends WorkflowEntrypoint {
|
|
82
|
+
async run(event, step) {
|
|
83
|
+
const deps = depsFromEnv(this.env, {
|
|
84
|
+
claimId: event.payload?.claimId,
|
|
85
|
+
instanceId: event.instanceId,
|
|
86
|
+
workflow: "review-complete",
|
|
87
|
+
});
|
|
88
|
+
// Ambient for the run AND inside every step callback (`scopedStep`), so the fetch client and
|
|
89
|
+
// the cache reads record into `deps.metrics`.
|
|
90
|
+
const scope = { metrics: deps.metrics, logger: deps.logger };
|
|
91
|
+
return withMetrics(scope, () => this.complete(event, scopedStep(step, scope, "review-complete"), deps));
|
|
92
|
+
}
|
|
93
|
+
async complete(event, step, deps) {
|
|
94
|
+
const claimId = event.payload?.claimId;
|
|
95
|
+
if (!claimId)
|
|
96
|
+
throw new NonRetryableError("Missing claimId param");
|
|
97
|
+
Sentry.setTags({ claimId, instanceId: event.instanceId, workflow: "review-complete" });
|
|
98
|
+
// The answer the fold read, by its `attestationJws` (an answer's identity — the fold marker is
|
|
99
|
+
// scoped the same way): the terminal catch writes `foldError` onto that answer only. A re-POST
|
|
100
|
+
// landing mid-fold replaces the row, and that newer answer must not inherit this attempt's
|
|
101
|
+
// failure — it would read as refused and never be folded. Absent until a fold read the row.
|
|
102
|
+
const seen = {};
|
|
103
|
+
try {
|
|
104
|
+
const folded = await step.do("fold",
|
|
105
|
+
// One pull + one engine round trip — no connectors, no model calls happen here.
|
|
106
|
+
{
|
|
107
|
+
retries: { limit: 5, delay: "10 seconds", backoff: "exponential" },
|
|
108
|
+
timeout: "2 minutes",
|
|
109
|
+
}, async () => {
|
|
110
|
+
try {
|
|
111
|
+
// The re-pull goes through the lane the claim came in by (§7.1).
|
|
112
|
+
const ingest = await getDb(this.env).query.claimIngests.findFirst({
|
|
113
|
+
columns: { lane: true },
|
|
114
|
+
where: eq(claimIngests.claimId, claimId),
|
|
115
|
+
});
|
|
116
|
+
const lane = ingest?.lane ?? "chain";
|
|
117
|
+
return {
|
|
118
|
+
...(await this.fold(deps, sourceFor(lane, this.env, deps), claimId, seen)),
|
|
119
|
+
lane,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
catch (err) {
|
|
123
|
+
throw stepError(err);
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
const source = sourceFor(folded.lane ?? "chain", this.env, deps);
|
|
127
|
+
// Only a `decided` fold can act (chain-write.ts step 1) — a fold-time `unusable` never does.
|
|
128
|
+
if (source.after.act && folded.status === "decided") {
|
|
129
|
+
await actStep(this.env, deps, step, {
|
|
130
|
+
claimId,
|
|
131
|
+
collectionId: folded.collectionId,
|
|
132
|
+
instanceId: event.instanceId,
|
|
133
|
+
workflow: "review-complete",
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
// The source's notify lane for the folded claim (chain: the `m.replace` edit that completes
|
|
137
|
+
// the review card sent at ingest time). Its own step, fail-soft like `act` above:
|
|
138
|
+
// self-contained (reads the folded decision + the answered review off the DB) and a no-op
|
|
139
|
+
// when there is nothing to tell (no token, no prior send, already edited).
|
|
140
|
+
try {
|
|
141
|
+
await step.do("notify-folded", {
|
|
142
|
+
retries: { limit: 3, delay: "5 seconds", backoff: "exponential" },
|
|
143
|
+
timeout: "1 minute",
|
|
144
|
+
}, () => source.after.notify(claimId));
|
|
145
|
+
}
|
|
146
|
+
catch (err) {
|
|
147
|
+
deps.logger.error("notify-folded.failed", { claimId, detail: String(err) });
|
|
148
|
+
reportError(err, { lane: "notify", step: "notify-folded", claimId });
|
|
149
|
+
}
|
|
150
|
+
// The lane rode the step result for the steps above; the run's result is unchanged by it.
|
|
151
|
+
const { lane: _lane, ...summary } = folded;
|
|
152
|
+
return { claimId, ...summary };
|
|
153
|
+
}
|
|
154
|
+
catch (err) {
|
|
155
|
+
// Terminal failure — say why on the review row (never over a completed fold) and rethrow so
|
|
156
|
+
// the instance shows Errored. Recovery is the same POST again. The reason belongs to the
|
|
157
|
+
// answer the fold read (`seen`); a newer answer re-POSTed mid-fold found this instance
|
|
158
|
+
// running, so its spawn did nothing and — now that the instance has errored — nothing will
|
|
159
|
+
// ever fold it. It gets `RETRY_ANSWER` instead: the re-POST it asks for restarts the
|
|
160
|
+
// instance. One statement, so the two rows can never be told different stories.
|
|
161
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
162
|
+
const foldError = seen.attestationJws === undefined
|
|
163
|
+
? message
|
|
164
|
+
: sql `case when ${claimReviews.attestationJws} is ${seen.attestationJws} then ${message} else ${RETRY_ANSWER} end`;
|
|
165
|
+
await getDb(this.env)
|
|
166
|
+
.update(claimReviews)
|
|
167
|
+
.set({ foldError })
|
|
168
|
+
.where(and(eq(claimReviews.claimId, claimId), isNull(claimReviews.foldedAt)))
|
|
169
|
+
.catch(() => { });
|
|
170
|
+
reportError(err, { lane: "review", step: "terminal", claimId, instanceId: event.instanceId });
|
|
171
|
+
// The retries ran out with the engine's fold still receipt-less — page it, like evaluate.
|
|
172
|
+
if (message.startsWith(RECEIPT_MISSING)) {
|
|
173
|
+
await reportAlert(deps, "engine.receipt-missing", { claimId, code: RECEIPT_MISSING }, `engine.receipt-missing:${claimId}`);
|
|
174
|
+
}
|
|
175
|
+
throw err;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
async fold(deps, source, claimId, seen) {
|
|
179
|
+
const db = getDb(this.env);
|
|
180
|
+
const [decision, review] = await Promise.all([
|
|
181
|
+
db.query.decisions.findFirst({ where: (t, { eq: eqOp }) => eqOp(t.claimId, claimId) }),
|
|
182
|
+
db.query.claimReviews.findFirst({ where: (t, { eq: eqOp }) => eqOp(t.claimId, claimId) }),
|
|
183
|
+
]);
|
|
184
|
+
if (!decision || !review) {
|
|
185
|
+
throw new NonRetryableError(`No pending review recorded for claim ${claimId}`);
|
|
186
|
+
}
|
|
187
|
+
seen.attestationJws = review.attestationJws;
|
|
188
|
+
// A replayed/duplicate instance after completion is a no-op — the folded decision stands.
|
|
189
|
+
if (review.foldedAt)
|
|
190
|
+
return summary(decision);
|
|
191
|
+
if (decision.status !== "pending_review" || !decision.resultDigest) {
|
|
192
|
+
throw new NonRetryableError(`Claim ${claimId} is not awaiting review (${decision.status})`);
|
|
193
|
+
}
|
|
194
|
+
// Every review answer is signed (routes/v1/reviews.ts), so a row without one was written by an
|
|
195
|
+
// older kit and can never fold: the engine requires the attestation too. Said HERE, loudly, on
|
|
196
|
+
// the review row — the reviewer answers again, signed, which is the only recovery.
|
|
197
|
+
if (!review.attestationJws) {
|
|
198
|
+
throw new NonRetryableError(`Review for ${claimId} carries no signed attestation — answer again with a signed review`);
|
|
199
|
+
}
|
|
200
|
+
// The reviewer's authority, NOW (header): the chain lane's gate, or the API lane's re-check of
|
|
201
|
+
// a member's live role grant / a root's controller standing (lib/api-lane/review.ts).
|
|
202
|
+
const reviewerGrant = await this.gate(deps, source, decision.collectionId, review);
|
|
203
|
+
const engine = createEngineClient({
|
|
204
|
+
config: deps.config,
|
|
205
|
+
logger: deps.logger,
|
|
206
|
+
trace: deps.trace,
|
|
207
|
+
cache: deps.cache,
|
|
208
|
+
});
|
|
209
|
+
// The body the engine needs back (header comment): the same source `evaluate` pulled through,
|
|
210
|
+
// verified, so these are the bytes `facts.answers` carried. `frozenAt` is deliberately not
|
|
211
|
+
// sent — the kit always freezes with `frozenAt === ctx.now` (builder.ts), which is exactly the
|
|
212
|
+
// engine's default (`trace.ctx.now`). A fail-closed pull throws out of the step (stepError).
|
|
213
|
+
const { content, ...pulled } = await source.pull(claimId);
|
|
214
|
+
// S16 — the same block the decide call sent (payouts design §4.7); resolved only when some
|
|
215
|
+
// protocol is configured, so a fold without payouts costs no extra read.
|
|
216
|
+
const payout = payoutsConfigured()
|
|
217
|
+
? payoutRequestFor(await source.protocolDid(decision.collectionId))
|
|
218
|
+
: undefined;
|
|
219
|
+
let response;
|
|
220
|
+
try {
|
|
221
|
+
response = await engine.review(claimId, {
|
|
222
|
+
answeredAgainst: decision.resultDigest,
|
|
223
|
+
answers: review.answers,
|
|
224
|
+
reviewerDid: review.reviewerDid,
|
|
225
|
+
// Verbatim — the signature is over exact bytes, and the engine verifies them again itself.
|
|
226
|
+
// An attestation error from the engine would therefore be a bug on one side (or a kit
|
|
227
|
+
// deployed ahead of its engine): it falls through the `switch` below to `default: throw
|
|
228
|
+
// err`, which the terminal catch pages.
|
|
229
|
+
attestation: review.attestationJws,
|
|
230
|
+
claim: { answers: pulled.body },
|
|
231
|
+
...(payout ? { payout } : {}),
|
|
232
|
+
claimContent: content,
|
|
233
|
+
// The CAR the gate just passed, as its controller filed it: the engine verifies it itself.
|
|
234
|
+
...(reviewerGrant ? { reviewerGrant } : {}),
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
catch (err) {
|
|
238
|
+
if (!(err instanceof EngineError))
|
|
239
|
+
throw err;
|
|
240
|
+
const scope = {
|
|
241
|
+
claimId,
|
|
242
|
+
collectionId: decision.collectionId,
|
|
243
|
+
answeredAgainst: decision.resultDigest,
|
|
244
|
+
requestId: err.requestId ?? null,
|
|
245
|
+
};
|
|
246
|
+
switch (err.code) {
|
|
247
|
+
case "STALE_REVIEW":
|
|
248
|
+
deps.logger.warn("review.stale", scope);
|
|
249
|
+
throw new NonRetryableError(`Review answers are stale — answer again: ${err.message}`);
|
|
250
|
+
case "FACTS_MISMATCH":
|
|
251
|
+
// A CID-addressed body cannot change, so this is a bug on one side (ours: the pulled
|
|
252
|
+
// body ≠ what the facts lane froze; theirs: the rebuild) — the terminal catch pages it.
|
|
253
|
+
deps.logger.error("review.facts-mismatch", scope);
|
|
254
|
+
throw new NonRetryableError(`FACTS_MISMATCH: ${err.message}`);
|
|
255
|
+
case "REVIEW_INCOMPLETE": {
|
|
256
|
+
// The route made the answers cover exactly the row's `pendingTasks`; the engine
|
|
257
|
+
// disagreeing means its pending set drifted from ours — the reviewer re-reads and
|
|
258
|
+
// answers. `details.pendingTasks` says what is still owed: on the review row, so the
|
|
259
|
+
// GET shows it.
|
|
260
|
+
const pending = pendingTasksOf(err.details);
|
|
261
|
+
deps.logger.error("review.incomplete", { ...scope, pendingTasks: pending });
|
|
262
|
+
throw new NonRetryableError(`REVIEW_INCOMPLETE: ${err.message}${pending.length > 0 ? ` (still pending: ${pending.join(", ")})` : ""}`);
|
|
263
|
+
}
|
|
264
|
+
case "CONTENT_MISMATCH":
|
|
265
|
+
case "PAYLOAD_TOO_LARGE": {
|
|
266
|
+
// Not the decision's content, or a body over the engine's cap: a fold never changes
|
|
267
|
+
// content, so no retry fixes it — on the review row with the engine's reason.
|
|
268
|
+
const reason = reasonOf(err.details);
|
|
269
|
+
deps.logger.error("review.content-refused", { ...scope, code: err.code, reason });
|
|
270
|
+
throw new NonRetryableError(refusal(err));
|
|
271
|
+
}
|
|
272
|
+
case "REVIEWER_GRANT_INVALID":
|
|
273
|
+
case "REVIEWER_NOT_AUTHORIZED": {
|
|
274
|
+
// The engine read the grant otherwise than our gate did (a root it no longer sees as a
|
|
275
|
+
// controller, an oracle it knows of): no retry changes it — the reviewer answers again
|
|
276
|
+
// with a grant from a current controller.
|
|
277
|
+
const reason = reasonOf(err.details);
|
|
278
|
+
deps.logger.warn("review.grant-refused", { ...scope, code: err.code, reason });
|
|
279
|
+
throw new NonRetryableError(refusal(err));
|
|
280
|
+
}
|
|
281
|
+
case "BAD_REQUEST":
|
|
282
|
+
// The engine's row is not pending (already final there) or the answers' values don't
|
|
283
|
+
// fit the rubric's tasks: nothing a retry changes — the reviewer re-reads the decision.
|
|
284
|
+
deps.logger.error("review.rejected", { ...scope, code: err.code });
|
|
285
|
+
throw new NonRetryableError(refusal(err));
|
|
286
|
+
case "FORBIDDEN":
|
|
287
|
+
case "NOT_FOUND":
|
|
288
|
+
// The engine holds this claim under a different oracle (403) or not at all (404) while
|
|
289
|
+
// we hold a pending decision for it — an identity/config fault worth paging, never a retry.
|
|
290
|
+
deps.logger.error("review.not-ours", { ...scope, code: err.code });
|
|
291
|
+
reportError(err, {
|
|
292
|
+
lane: "review",
|
|
293
|
+
step: "fold",
|
|
294
|
+
claimId,
|
|
295
|
+
collectionId: scope.collectionId,
|
|
296
|
+
});
|
|
297
|
+
throw new NonRetryableError(refusal(err));
|
|
298
|
+
default:
|
|
299
|
+
throw err;
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
// A fold is final, so its answer carries the receipt the fold minted: one without it is never
|
|
303
|
+
// stamped `foldedAt` — the retry re-POSTs the identical fold, and the engine's stored fold comes
|
|
304
|
+
// back with it (steps.ts `requireReceipt`).
|
|
305
|
+
requireReceipt(response, "fold");
|
|
306
|
+
const folded = {
|
|
307
|
+
verdict: response.decision.verdict,
|
|
308
|
+
status: response.decision.status,
|
|
309
|
+
resultDigest: response.resultDigest,
|
|
310
|
+
receiptCid: response.receipt?.cid ?? null,
|
|
311
|
+
receiptJws: response.receipt?.jws ?? null,
|
|
312
|
+
decision: response.decision,
|
|
313
|
+
explanation: response.explanation,
|
|
314
|
+
// The fold's answer names the same errored facts (they never move on a fold); an engine
|
|
315
|
+
// that sent none leaves the decide's list standing.
|
|
316
|
+
...(response.erroredFacts ? { erroredFacts: erroredFactsOf(response) } : {}),
|
|
317
|
+
// `facts` is deliberately NOT in this set: the fold replays the SAME frozen facts (the
|
|
318
|
+
// engine rebuilds the FactSet from its trace), so the row's copy — what the act policy reads
|
|
319
|
+
// at signing time — must survive the fold untouched.
|
|
320
|
+
// The folded verdict is a NEW thing to act on — whatever the pre-fold row said about delivery
|
|
321
|
+
// — unless the source never acts (the API lane, §7.1).
|
|
322
|
+
chainStatus: source.after.act ? "pending" : "skipped",
|
|
323
|
+
chainError: null,
|
|
324
|
+
};
|
|
325
|
+
// One atomic batch (schema.ts header): the decision, its fold marker and — the fold made it
|
|
326
|
+
// final — the verdict on the claim's duplicate registry rows (stock/unique-store.ts; a no-op
|
|
327
|
+
// for a rubric without `unique`) land together or not at all.
|
|
328
|
+
const token = registryVerdictToken(folded.status, folded.verdict);
|
|
329
|
+
// The fold marker lands only on the answer that was folded: an answer re-POSTed while this
|
|
330
|
+
// fold was in flight must not be stamped as the one the engine folded.
|
|
331
|
+
const [, stamped] = await db.batch([
|
|
332
|
+
db.update(decisions).set(folded).where(eq(decisions.claimId, claimId)),
|
|
333
|
+
db
|
|
334
|
+
.update(claimReviews)
|
|
335
|
+
.set({ foldedAt: new Date(), foldError: null })
|
|
336
|
+
.where(and(eq(claimReviews.claimId, claimId), eq(claimReviews.attestationJws, review.attestationJws)))
|
|
337
|
+
.returning({ claimId: claimReviews.claimId }),
|
|
338
|
+
...(token
|
|
339
|
+
? [finalVerdictUpdate(db, { collectionId: decision.collectionId, claimId, token })]
|
|
340
|
+
: []),
|
|
341
|
+
]);
|
|
342
|
+
// A `pending_review` decision has no receipt (ENGINE-CONTRACT): the fold mints it, so its
|
|
343
|
+
// reservation is settled here (payments spec §4 step 6) — an API claim's, or a chain claim's a
|
|
344
|
+
// per-review collection reserved — fail-soft, the reconcile re-settles a lost one.
|
|
345
|
+
if (folded.receiptJws && deps.config.X402_FACILITATOR_URL) {
|
|
346
|
+
await settleClaim({ ...deps, db }, claimId, folded.receiptJws);
|
|
347
|
+
}
|
|
348
|
+
if (stamped.length === 0) {
|
|
349
|
+
// A newer answer replaced the one folded: the decision is final on the folded one, so the
|
|
350
|
+
// newer answer can only be stale — say so on its row, where the GET shows it.
|
|
351
|
+
await db
|
|
352
|
+
.update(claimReviews)
|
|
353
|
+
.set({ foldError: "STALE_REVIEW: another answer was folded first — re-read the decision" })
|
|
354
|
+
.where(and(eq(claimReviews.claimId, claimId), isNull(claimReviews.foldedAt)));
|
|
355
|
+
deps.logger.warn("review.answer-replaced-during-fold", { claimId });
|
|
356
|
+
}
|
|
357
|
+
deps.metrics.count("review.folded", 1);
|
|
358
|
+
// The answer archive's `answer.json`, re-written with the folded decision (lib/archive.ts) —
|
|
359
|
+
// fail-soft, from the body this step re-pulled; nothing of it leaves the step.
|
|
360
|
+
if (this.env.ANSWERS_ARCHIVE) {
|
|
361
|
+
await archiveAnswer(this.env, deps, {
|
|
362
|
+
lane: source.lane,
|
|
363
|
+
claim: pulled,
|
|
364
|
+
content,
|
|
365
|
+
submitter: await source.submitterKey(pulled).catch(() => null),
|
|
366
|
+
response,
|
|
367
|
+
facts: decision.facts ?? null,
|
|
368
|
+
hooks: getOracle().config.archive,
|
|
369
|
+
reviewerDid: review.reviewerDid,
|
|
370
|
+
});
|
|
371
|
+
}
|
|
372
|
+
// A payout scope whose claim names no payee: folded, its receipt without a payment binding
|
|
373
|
+
// (ENGINE-CONTRACT "Payee").
|
|
374
|
+
if (response.decisionToPayRefused) {
|
|
375
|
+
deps.logger.warn("payout.refused", {
|
|
376
|
+
claimId,
|
|
377
|
+
collectionId: decision.collectionId,
|
|
378
|
+
code: response.decisionToPayRefused,
|
|
379
|
+
});
|
|
380
|
+
}
|
|
381
|
+
deps.logger.info("review.folded", {
|
|
382
|
+
claimId,
|
|
383
|
+
collectionId: decision.collectionId,
|
|
384
|
+
reviewerDid: review.reviewerDid,
|
|
385
|
+
status: folded.status,
|
|
386
|
+
verdict: folded.verdict,
|
|
387
|
+
resultDigest: folded.resultDigest,
|
|
388
|
+
receiptCid: folded.receiptCid,
|
|
389
|
+
traceId: response.traceId ?? null,
|
|
390
|
+
});
|
|
391
|
+
// `#vct` drifted since the decision (header): a final, receipted `unusable` for THIS claim —
|
|
392
|
+
// and the same answer for every other claim of the collection, exactly as at evaluate time.
|
|
393
|
+
if (response.decision.status === "unusable") {
|
|
394
|
+
await pauseUnusable(source, deps.logger, "review", {
|
|
395
|
+
claimId,
|
|
396
|
+
collectionId: decision.collectionId,
|
|
397
|
+
rubricId: decision.rubricId,
|
|
398
|
+
issues: response.decision.reasons,
|
|
399
|
+
receiptCid: folded.receiptCid,
|
|
400
|
+
});
|
|
401
|
+
}
|
|
402
|
+
return summary({ ...decision, ...folded });
|
|
403
|
+
}
|
|
404
|
+
/**
|
|
405
|
+
* The answer's grant as things stand now — a chain claim's against the chain
|
|
406
|
+
* (lib/review/reviewer-grant.ts), an API claim's against the source's members and controllers
|
|
407
|
+
* (`recheckApiReviewer`); answers the CAR the fold forwards. A refusal is the reviewer's to fix,
|
|
408
|
+
* so NonRetryable with the engine's code and nothing forwarded; a 503 propagates and retries.
|
|
409
|
+
*/
|
|
410
|
+
async gate(deps, source, collectionId, review) {
|
|
411
|
+
const db = getDb(this.env);
|
|
412
|
+
try {
|
|
413
|
+
if (!isChain(source)) {
|
|
414
|
+
return await recheckApiReviewer({ db, chain: { config: deps.config, trace: deps.trace } }, { scopeId: collectionId, ...review });
|
|
415
|
+
}
|
|
416
|
+
if (!review.reviewerGrant) {
|
|
417
|
+
throw new NonRetryableError("REVIEWER_GRANT_INVALID (absent): the answer carries no reviewer grant — answer again with the grant the collection's owner gave you");
|
|
418
|
+
}
|
|
419
|
+
const grant = await checkReviewerGrant({ config: deps.config, trace: deps.trace, db }, review.reviewerGrant, { collectionId, reviewerDid: review.reviewerDid });
|
|
420
|
+
return grant.delegation;
|
|
421
|
+
}
|
|
422
|
+
catch (err) {
|
|
423
|
+
if (!(err instanceof AppError) || err.status === 503)
|
|
424
|
+
throw err;
|
|
425
|
+
deps.logger.warn("review.grant-refused", {
|
|
426
|
+
claimId: review.claimId,
|
|
427
|
+
collectionId,
|
|
428
|
+
code: err.code,
|
|
429
|
+
reason: reasonOf(err.details),
|
|
430
|
+
});
|
|
431
|
+
throw new NonRetryableError(refusal(err));
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
/**
|
|
436
|
+
* `foldError` for a refusal, ours or the engine's: `CODE (reason): message` — `details.reason` (the
|
|
437
|
+
* CA4 vocabulary for grants) in the one place the Portal and the Console read it from either side.
|
|
438
|
+
*/
|
|
439
|
+
function refusal(err) {
|
|
440
|
+
const reason = reasonOf(err.details);
|
|
441
|
+
return `${err.code}${reason ? ` (${reason})` : ""}: ${err.message}`;
|
|
442
|
+
}
|
|
443
|
+
/** The 422's `details.pendingTasks` (contract "Human review"), or nothing if the engine sent none. */
|
|
444
|
+
function pendingTasksOf(details) {
|
|
445
|
+
const tasks = details?.pendingTasks;
|
|
446
|
+
return Array.isArray(tasks) ? tasks.filter((t) => typeof t === "string") : [];
|
|
447
|
+
}
|
|
448
|
+
const summary = (row) => ({
|
|
449
|
+
collectionId: row.collectionId,
|
|
450
|
+
status: row.status,
|
|
451
|
+
verdict: row.verdict,
|
|
452
|
+
resultDigest: row.resultDigest,
|
|
453
|
+
receiptCid: row.receiptCid,
|
|
454
|
+
});
|
|
455
|
+
//# sourceMappingURL=review-complete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-complete.js","sourceRoot":"","sources":["../../src/workflows/review-complete.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What the two workflows share (README "How a claim flows" step 6): the `act` step that follows a final decision
|
|
3
|
+
* — after `evaluate` in ClaimIngest, after `fold` in ReviewComplete — the one rule for turning a
|
|
4
|
+
* thrown error into "retry" vs "stop", and the pause that follows an `unusable` rubric (said at
|
|
5
|
+
* evaluate time or, when `#vct` drifted before the fold, at fold time).
|
|
6
|
+
*
|
|
7
|
+
* Also `pauseCollection`/`notifyCollectionResumed` — the collection-status side of the notice
|
|
8
|
+
* lane: a chat message in the collection's review room (Matrix, the PRIMARY channel) and its email
|
|
9
|
+
* twin, both from the ONE `Notice` (lib/email/template.ts). Told once PER COLLECTION (not per
|
|
10
|
+
* reason, and not pooled per owner — there is one `status` column and no shared
|
|
11
|
+
* subscription/payout account to group by), via an alternating marker on `matrix_deliveries`: a
|
|
12
|
+
* `notice_paused`/`notice_resumed` pair per collection, and a state is announced only when its own
|
|
13
|
+
* marker is not already the newer of the two. That one rule gives both properties needed: a step
|
|
14
|
+
* retry inside one pause re-sends nothing, and a pause that follows a recovery is a fresh notice
|
|
15
|
+
* rather than a silently suppressed one.
|
|
16
|
+
*/
|
|
17
|
+
import type { WorkflowStep } from "cloudflare:workers";
|
|
18
|
+
import type { Config } from "../config.js";
|
|
19
|
+
import type { ClaimSource } from "../contracts/index.js";
|
|
20
|
+
import { type Database } from "../db/client.js";
|
|
21
|
+
import type { OracleEnv } from "../env.js";
|
|
22
|
+
import { type AdminUnfundedDetail, type CollectionPausedReason } from "../lib/email/template.js";
|
|
23
|
+
import { type DecideResponse, type ErroredFact } from "../lib/engine/types.js";
|
|
24
|
+
import type { PullDeps } from "../lib/ixo/index.js";
|
|
25
|
+
import { type ChainWriteOutcome } from "../lib/ixo/chain-write.js";
|
|
26
|
+
import type { Logger } from "../lib/logger.js";
|
|
27
|
+
import type { Metrics } from "../lib/metrics.js";
|
|
28
|
+
import type { TraceContext } from "../lib/tracing.js";
|
|
29
|
+
/**
|
|
30
|
+
* Retry or stop? Transient trouble (a 503 from any lane, the engine's own `UNAVAILABLE`, its 429
|
|
31
|
+
* `RATE_LIMITED` throttle, anything unclassified) is left as-is so the runtime retries the step;
|
|
32
|
+
* every deterministic negative — a fail-closed 404/403 from the pull, a config or contract-drift
|
|
33
|
+
* 500, any other 4xx from the engine — is rethrown NonRetryable so a real "no" never burns the
|
|
34
|
+
* retry budget. `EngineError.retryable` is that line for the engine. A NonRetryableError passes
|
|
35
|
+
* through untouched.
|
|
36
|
+
*/
|
|
37
|
+
export declare function stepError(err: unknown): unknown;
|
|
38
|
+
/** The prefix of the error {@link requireReceipt} throws — how a terminal catch knows to page it. */
|
|
39
|
+
export declare const RECEIPT_MISSING = "RECEIPT_MISSING";
|
|
40
|
+
/**
|
|
41
|
+
* A final answer (`decided` / `unusable`) always carries its receipt (ENGINE-CONTRACT "Response"),
|
|
42
|
+
* and the receipt is the ONE credential act and the payout spend. One without it (the engine's
|
|
43
|
+
* mint failed) is never recorded — a receipt-less row is a payout nothing heals. Retryable
|
|
44
|
+
* instead: the step's retry asks again (the evaluate recovery's GET, a decide's or fold's identical
|
|
45
|
+
* re-POST), and the engine's stored row comes back with the receipt. `pending_review` has none by
|
|
46
|
+
* contract (the fold mints it).
|
|
47
|
+
*/
|
|
48
|
+
export declare function requireReceipt(answer: {
|
|
49
|
+
decision: {
|
|
50
|
+
status: string;
|
|
51
|
+
};
|
|
52
|
+
receipt: unknown;
|
|
53
|
+
}, what: "decision" | "fold"): void;
|
|
54
|
+
/**
|
|
55
|
+
* What the decision row keeps of the engine's `erroredFacts` (engine/types.ts): each detail capped
|
|
56
|
+
* (an older or looser engine is not trusted to have done it), null when the engine sent none or an
|
|
57
|
+
* empty list — so a clean decision and an older engine store the same nothing. Written in the same
|
|
58
|
+
* statement as the rest of the decision (record / fold); never logged.
|
|
59
|
+
*/
|
|
60
|
+
export declare function erroredFactsOf(answer: Pick<DecideResponse, "erroredFacts">): ErroredFact[] | null;
|
|
61
|
+
/** The engine's `details.reason` on a company-authority refusal — a check's name, never a value. */
|
|
62
|
+
export declare function reasonOf(details: unknown): string | null;
|
|
63
|
+
/**
|
|
64
|
+
* The rubric cannot be bound — said by the manifest before a producer ran, by the engine at decide
|
|
65
|
+
* time, or by the fold (the pinned rubric no longer binds against the live `#vct`) — and every
|
|
66
|
+
* other claim of the scope would be refused the same way until the catalog is fixed, so stop
|
|
67
|
+
* taking claims and say why (codes and paths, never answer values), through the claim's source
|
|
68
|
+
* (a chain collection or an API source, Go Prod §7.1). The scope's row stands (a chain collection
|
|
69
|
+
* keeps its delegation); `POST /v1/collections/:id/resume` lifts a collection's pause. Logged as
|
|
70
|
+
* `<lane>.rubric-unusable`.
|
|
71
|
+
*/
|
|
72
|
+
export declare function pauseUnusable(source: Pick<ClaimSource, "pause">, logger: Logger, lane: "evaluate" | "review", scope: {
|
|
73
|
+
claimId: string;
|
|
74
|
+
collectionId: string;
|
|
75
|
+
rubricId: string | null;
|
|
76
|
+
issues: unknown;
|
|
77
|
+
receiptCid?: string | null;
|
|
78
|
+
}): Promise<void>;
|
|
79
|
+
/**
|
|
80
|
+
* The engine's `402 INSUFFICIENT_CREDITS` — the oracle OWNER's credits, shared by every scope this
|
|
81
|
+
* oracle serves — so EVERY active collection AND every active API source pauses at once (not per
|
|
82
|
+
* claim source: seam header, src/contracts/claim-source.ts). `cron/billing.ts` resumes the
|
|
83
|
+
* collections when the engine's `/me` says ok (sources: `cron/api-lane.ts`).
|
|
84
|
+
*/
|
|
85
|
+
export declare function pauseForEngineCredits(db: Database, deps: CollectionNoticeDeps): Promise<void>;
|
|
86
|
+
export interface CollectionNoticeDeps {
|
|
87
|
+
logger: Logger;
|
|
88
|
+
metrics: Metrics;
|
|
89
|
+
config: Config;
|
|
90
|
+
trace: TraceContext;
|
|
91
|
+
/** `env.CACHE_KV` — the Matrix identity guard's cache (lib/matrix/deliver.ts). */
|
|
92
|
+
cache: KVNamespace;
|
|
93
|
+
/** `env.EMAIL` — absent ⇒ the notice email lane no-ops (lib/email/send.ts). */
|
|
94
|
+
email?: SendEmail;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Pause a collection AND tell its owner once. Writes `status`/`pausedReason` unconditionally — a
|
|
98
|
+
* step retry, or a new reason landing while already paused (e.g. `engine-credits` after
|
|
99
|
+
* `rubric-unusable`), must still record the latest reason — then fires the paused notice, which is
|
|
100
|
+
* told-once per collection regardless (see the header comment on the alternating-marker rule).
|
|
101
|
+
* `detail` is the `admin-unfunded` notice's account + amount (lib/email/template.ts). `alert` false
|
|
102
|
+
* is for a caller that pages once for many rows (`pauseForEngineCredits`).
|
|
103
|
+
*/
|
|
104
|
+
export declare function pauseCollection(db: Database, deps: CollectionNoticeDeps, collectionId: string, reason: CollectionPausedReason, detail?: AdminUnfundedDetail, alert?: boolean): Promise<void>;
|
|
105
|
+
/**
|
|
106
|
+
* The resume twin. Does NOT write `status` — the caller (`routes/v1/collections.ts`'s pause/resume
|
|
107
|
+
* route and its re-register upsert, and `cron/billing.ts`'s `resumeEngineCredits`) has already
|
|
108
|
+
* flipped the row on a REAL paused→active transition, which is the only time any call site invokes
|
|
109
|
+
* this.
|
|
110
|
+
*/
|
|
111
|
+
export declare function notifyCollectionResumed(db: Database, deps: CollectionNoticeDeps, collectionId: string): Promise<void>;
|
|
112
|
+
/**
|
|
113
|
+
* Act on the claim's recorded decision (lib/ixo/chain-write.ts) as its own durable step. Delivery
|
|
114
|
+
* has its own state (`decisions.chainStatus`) and its own retries; a delivery failure NEVER fails
|
|
115
|
+
* the workflow — the decision is recorded, and an operator rerun re-enters delivery idempotently
|
|
116
|
+
* (the delivered-once guard). The swallow is reported: a decision that never reached the chain is
|
|
117
|
+
* otherwise invisible to everyone but this log line, and `withSentry` cannot see a caught throw.
|
|
118
|
+
*/
|
|
119
|
+
export declare function actStep(env: OracleEnv, deps: PullDeps, step: WorkflowStep, scope: {
|
|
120
|
+
claimId: string;
|
|
121
|
+
collectionId?: string;
|
|
122
|
+
instanceId: string;
|
|
123
|
+
workflow: string;
|
|
124
|
+
}): Promise<ChainWriteOutcome | "failed">;
|
|
125
|
+
//# sourceMappingURL=steps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"steps.d.ts","sourceRoot":"","sources":["../../src/workflows/steps.ts"],"names":[],"mappings":"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"}
|