@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,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typed application errors.
|
|
3
|
+
*
|
|
4
|
+
* Throw `AppError` (or one of its factories) anywhere in your logic. The global
|
|
5
|
+
* error handler maps it to a consistent JSON envelope, decides what is safe to
|
|
6
|
+
* expose to the client, and logs the rest. Unknown/unexpected throws are treated
|
|
7
|
+
* as 500s with their details hidden from clients.
|
|
8
|
+
*/
|
|
9
|
+
import type { ContentfulStatusCode } from "hono/utils/http-status";
|
|
10
|
+
export type ErrorCode = "BAD_REQUEST" | "UNAUTHORIZED" | "FORBIDDEN" | "NOT_FOUND" | "CONFLICT" | "PAYMENT_REQUIRED" | "VALIDATION" | "RATE_LIMITED" | "INTERNAL" | "UNAVAILABLE" | "ATTESTATION_INVALID"
|
|
11
|
+
/** The issuer publishes no such key — including a DID document that resolved and named no usable
|
|
12
|
+
* Ed25519 method. Deterministic: retrying cannot change it. */
|
|
13
|
+
| "ATTESTATION_KEY_UNKNOWN" | "ATTESTATION_ISSUER_MISMATCH" | "ATTESTATION_MISMATCH"
|
|
14
|
+
/** The reviewer's DID could not be RESOLVED (the source was unreachable) — transient, retryable. */
|
|
15
|
+
| "ATTESTATION_UNRESOLVABLE"
|
|
16
|
+
/** A review arrived with no `attestation`. Every review is a signed statement (owner ruling),
|
|
17
|
+
* so this is a malformed request, not a policy — there is no unsigned path to fall back to. */
|
|
18
|
+
| "ATTESTATION_REQUIRED"
|
|
19
|
+
/** Absent, malformed, mis-signed, out of its window, over 30 days, or the wrong resource/capability. */
|
|
20
|
+
| "REVIEWER_GRANT_INVALID"
|
|
21
|
+
/** Signed and well-formed, but its root is no current controller, it was revoked, or an oracle or
|
|
22
|
+
* an evaluator is in it. */
|
|
23
|
+
| "REVIEWER_NOT_AUTHORIZED";
|
|
24
|
+
export interface AppErrorOptions {
|
|
25
|
+
/** Machine-readable code returned to the client. */
|
|
26
|
+
code?: ErrorCode;
|
|
27
|
+
/** HTTP status. */
|
|
28
|
+
status?: ContentfulStatusCode;
|
|
29
|
+
/** Safe to return the message to the client? Defaults to true for <500. */
|
|
30
|
+
expose?: boolean;
|
|
31
|
+
/** Structured extra context (returned to client only when `expose`). */
|
|
32
|
+
details?: unknown;
|
|
33
|
+
/** Underlying error, preserved for logs. */
|
|
34
|
+
cause?: unknown;
|
|
35
|
+
/**
|
|
36
|
+
* An EXPECTED negative (e.g. the dashboard polling a claim the engine hasn't ingested yet):
|
|
37
|
+
* the response is unchanged, but the error handler logs at debug — silent in deployed envs
|
|
38
|
+
* (LOG_LEVEL info), still a breadcrumb in local dev. Routine states are not rejections.
|
|
39
|
+
*/
|
|
40
|
+
expected?: boolean;
|
|
41
|
+
}
|
|
42
|
+
export declare class AppError extends Error {
|
|
43
|
+
readonly code: ErrorCode;
|
|
44
|
+
readonly status: ContentfulStatusCode;
|
|
45
|
+
readonly expose: boolean;
|
|
46
|
+
readonly expected: boolean;
|
|
47
|
+
readonly details?: unknown;
|
|
48
|
+
constructor(message: string, options?: AppErrorOptions);
|
|
49
|
+
static badRequest(message?: string, details?: unknown): AppError;
|
|
50
|
+
static unauthorized(message?: string): AppError;
|
|
51
|
+
static forbidden(message?: string): AppError;
|
|
52
|
+
static notFound(message?: string, options?: Pick<AppErrorOptions, "expected">): AppError;
|
|
53
|
+
static conflict(message?: string, details?: unknown): AppError;
|
|
54
|
+
/** The caller must pay (or pay more) before the request can be honored — a register-time gate. */
|
|
55
|
+
static paymentRequired(message?: string, details?: unknown): AppError;
|
|
56
|
+
static validation(message?: string, details?: unknown): AppError;
|
|
57
|
+
static rateLimited(message?: string): AppError;
|
|
58
|
+
static internal(message?: string, cause?: unknown): AppError;
|
|
59
|
+
static unavailable(message?: string, cause?: unknown): AppError;
|
|
60
|
+
}
|
|
61
|
+
/** Wire-format error body. Stable shape across every error response. */
|
|
62
|
+
export interface ErrorBody {
|
|
63
|
+
error: {
|
|
64
|
+
code: ErrorCode;
|
|
65
|
+
message: string;
|
|
66
|
+
requestId: string;
|
|
67
|
+
details?: unknown;
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
/** The message of every request-schema refusal; `details.issues` names each field. */
|
|
71
|
+
export declare const VALIDATION_FAILED = "Some fields in the request are missing or invalid \u2014 details.issues lists each one.";
|
|
72
|
+
export declare function toErrorBody(err: AppError, requestId: string): ErrorBody;
|
|
73
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAEnE,MAAM,MAAM,SAAS,GACjB,aAAa,GACb,cAAc,GACd,WAAW,GACX,WAAW,GACX,UAAU,GACV,kBAAkB,GAClB,YAAY,GACZ,cAAc,GACd,UAAU,GACV,aAAa,GAGb,qBAAqB;AACvB;gEACgE;GAC9D,yBAAyB,GACzB,6BAA6B,GAC7B,sBAAsB;AACxB,oGAAoG;GAClG,0BAA0B;AAC5B;gGACgG;GAC9F,sBAAsB;AAExB,wGAAwG;GACtG,wBAAwB;AAC1B;6BAC6B;GAC3B,yBAAyB,CAAC;AAE9B,MAAM,WAAW,eAAe;IAC9B,oDAAoD;IACpD,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,mBAAmB;IACnB,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,2EAA2E;IAC3E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,wEAAwE;IACxE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAwBD,qBAAa,QAAS,SAAQ,KAAK;IACjC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAE3B,YAAY,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,EAQzD;IAED,MAAM,CAAC,UAAU,CAAC,OAAO,SAAgB,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,CAEtE;IAED,MAAM,CAAC,YAAY,CAAC,OAAO,SAAiB,GAAG,QAAQ,CAEtD;IAED,MAAM,CAAC,SAAS,CAAC,OAAO,SAAc,GAAG,QAAQ,CAEhD;IAED,MAAM,CAAC,QAAQ,CACb,OAAO,SAAc,EACrB,OAAO,GAAE,IAAI,CAAC,eAAe,EAAE,UAAU,CAAM,GAC9C,QAAQ,CAEV;IAED,MAAM,CAAC,QAAQ,CAAC,OAAO,SAAa,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,CAEjE;IAED,kGAAkG;IAClG,MAAM,CAAC,eAAe,CAAC,OAAO,SAAqB,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,CAEhF;IAED,MAAM,CAAC,UAAU,CAAC,OAAO,SAAsB,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,CAE5E;IAED,MAAM,CAAC,WAAW,CAAC,OAAO,SAAsB,GAAG,QAAQ,CAE1D;IAED,MAAM,CAAC,QAAQ,CAAC,OAAO,SAA0B,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,CAE5E;IAED,MAAM,CAAC,WAAW,CAAC,OAAO,SAAwB,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,CAE7E;CACF;AAED,wEAAwE;AACxE,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE;QACL,IAAI,EAAE,SAAS,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;CACH;AAED,sFAAsF;AACtF,eAAO,MAAM,iBAAiB,4FACwD,CAAC;AASvF,wBAAgB,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,CASvE"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typed application errors.
|
|
3
|
+
*
|
|
4
|
+
* Throw `AppError` (or one of its factories) anywhere in your logic. The global
|
|
5
|
+
* error handler maps it to a consistent JSON envelope, decides what is safe to
|
|
6
|
+
* expose to the client, and logs the rest. Unknown/unexpected throws are treated
|
|
7
|
+
* as 500s with their details hidden from clients.
|
|
8
|
+
*/
|
|
9
|
+
const DEFAULT_STATUS = {
|
|
10
|
+
BAD_REQUEST: 400,
|
|
11
|
+
UNAUTHORIZED: 401,
|
|
12
|
+
FORBIDDEN: 403,
|
|
13
|
+
NOT_FOUND: 404,
|
|
14
|
+
CONFLICT: 409,
|
|
15
|
+
PAYMENT_REQUIRED: 402,
|
|
16
|
+
VALIDATION: 400,
|
|
17
|
+
RATE_LIMITED: 429,
|
|
18
|
+
INTERNAL: 500,
|
|
19
|
+
UNAVAILABLE: 503,
|
|
20
|
+
ATTESTATION_INVALID: 400,
|
|
21
|
+
ATTESTATION_KEY_UNKNOWN: 400,
|
|
22
|
+
ATTESTATION_ISSUER_MISMATCH: 403,
|
|
23
|
+
ATTESTATION_MISMATCH: 400,
|
|
24
|
+
// Transient: the reviewer's DID could not be resolved. Retryable, never a pass.
|
|
25
|
+
ATTESTATION_UNRESOLVABLE: 503,
|
|
26
|
+
ATTESTATION_REQUIRED: 400,
|
|
27
|
+
REVIEWER_GRANT_INVALID: 400,
|
|
28
|
+
REVIEWER_NOT_AUTHORIZED: 403,
|
|
29
|
+
};
|
|
30
|
+
export class AppError extends Error {
|
|
31
|
+
code;
|
|
32
|
+
status;
|
|
33
|
+
expose;
|
|
34
|
+
expected;
|
|
35
|
+
details;
|
|
36
|
+
constructor(message, options = {}) {
|
|
37
|
+
super(message, options.cause !== undefined ? { cause: options.cause } : undefined);
|
|
38
|
+
this.name = "AppError";
|
|
39
|
+
this.code = options.code ?? "INTERNAL";
|
|
40
|
+
this.status = options.status ?? DEFAULT_STATUS[this.code];
|
|
41
|
+
this.expose = options.expose ?? this.status < 500;
|
|
42
|
+
this.expected = options.expected ?? false;
|
|
43
|
+
if (options.details !== undefined)
|
|
44
|
+
this.details = options.details;
|
|
45
|
+
}
|
|
46
|
+
static badRequest(message = "Bad request", details) {
|
|
47
|
+
return new AppError(message, { code: "BAD_REQUEST", details });
|
|
48
|
+
}
|
|
49
|
+
static unauthorized(message = "Unauthorized") {
|
|
50
|
+
return new AppError(message, { code: "UNAUTHORIZED" });
|
|
51
|
+
}
|
|
52
|
+
static forbidden(message = "Forbidden") {
|
|
53
|
+
return new AppError(message, { code: "FORBIDDEN" });
|
|
54
|
+
}
|
|
55
|
+
static notFound(message = "Not found", options = {}) {
|
|
56
|
+
return new AppError(message, { code: "NOT_FOUND", ...options });
|
|
57
|
+
}
|
|
58
|
+
static conflict(message = "Conflict", details) {
|
|
59
|
+
return new AppError(message, { code: "CONFLICT", details });
|
|
60
|
+
}
|
|
61
|
+
/** The caller must pay (or pay more) before the request can be honored — a register-time gate. */
|
|
62
|
+
static paymentRequired(message = "Payment required", details) {
|
|
63
|
+
return new AppError(message, { code: "PAYMENT_REQUIRED", details });
|
|
64
|
+
}
|
|
65
|
+
static validation(message = "Validation failed", details) {
|
|
66
|
+
return new AppError(message, { code: "VALIDATION", details });
|
|
67
|
+
}
|
|
68
|
+
static rateLimited(message = "Too many requests") {
|
|
69
|
+
return new AppError(message, { code: "RATE_LIMITED" });
|
|
70
|
+
}
|
|
71
|
+
static internal(message = "Internal server error", cause) {
|
|
72
|
+
return new AppError(message, { code: "INTERNAL", expose: false, cause });
|
|
73
|
+
}
|
|
74
|
+
static unavailable(message = "Service unavailable", cause) {
|
|
75
|
+
return new AppError(message, { code: "UNAVAILABLE", expose: false, cause });
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/** The message of every request-schema refusal; `details.issues` names each field. */
|
|
79
|
+
export const VALIDATION_FAILED = "Some fields in the request are missing or invalid — details.issues lists each one.";
|
|
80
|
+
/** What a 5xx whose details are hidden says instead: a person can act on it, never a leak. */
|
|
81
|
+
function hiddenMessage(status) {
|
|
82
|
+
return status === 503
|
|
83
|
+
? "This service is temporarily unavailable. Nothing was lost — retry in a moment."
|
|
84
|
+
: "Something went wrong on our side. It has been logged; retry in a moment, and quote the requestId if it keeps happening.";
|
|
85
|
+
}
|
|
86
|
+
export function toErrorBody(err, requestId) {
|
|
87
|
+
return {
|
|
88
|
+
error: {
|
|
89
|
+
code: err.code,
|
|
90
|
+
message: err.expose ? err.message : hiddenMessage(err.status),
|
|
91
|
+
requestId,
|
|
92
|
+
...(err.expose && err.details !== undefined ? { details: err.details } : {}),
|
|
93
|
+
},
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The facts builder — this oracle's resolve + FREEZE phase (README "How a claim flows" step 4). The rubric is the
|
|
3
|
+
* WORK ORDER, and the work order is the engine's MANIFEST (expected.ts): it names the `ext.<name>`
|
|
4
|
+
* / `ai.<name>` facts a producer must return, and the `unique` / `frequency` facts when it declares
|
|
5
|
+
* those rules — the ONLY oracle-specific content of a FactSet — and this module assembles
|
|
6
|
+
* everything else (`answers` = the claim body verbatim, `ctx` = one clock read, the attachment
|
|
7
|
+
* descriptors, `settings`) around that answer, holds it to the work order (validate.ts), and
|
|
8
|
+
* freezes a strict FactSet v1. It never decides — `POST /v1/decisions` on the
|
|
9
|
+
* engine does — and it never reads a rubric: the engine's binder resolves `#rub`
|
|
10
|
+
* + `#vct` and republishes what the rules want, so a rubric it cannot bind is `unusable` HERE,
|
|
11
|
+
* before a single source is called, and the workflow pauses the collection so a broken catalog
|
|
12
|
+
* entry costs nothing per claim.
|
|
13
|
+
*
|
|
14
|
+
* Order: manifest (engine, KV-cached) → ctx → producer (the oracle config's `facts`, else
|
|
15
|
+
* stock/) → validate → attachment size probes → FREEZE. After `buildFacts` returns there is no
|
|
16
|
+
* network, no clock, and no AI anywhere downstream — that boundary is the determinism/replay
|
|
17
|
+
* guarantee (evaluator-spec §1).
|
|
18
|
+
*
|
|
19
|
+
* Fail closed: a deterministic negative (an unusable manifest, facts that don't match the work
|
|
20
|
+
* order) is a recorded outcome; a transient failure (the engine's 503, Blocksync, media) THROWS so
|
|
21
|
+
* the workflow step retries. Never half-built.
|
|
22
|
+
*/
|
|
23
|
+
import type { Database } from "../../db/client.js";
|
|
24
|
+
import type { EngineClient } from "../engine/client.js";
|
|
25
|
+
import { type Manifest, type ManifestUnusable } from "../engine/types.js";
|
|
26
|
+
import type { PulledClaim } from "../ixo/index.js";
|
|
27
|
+
import { FactSetV1 } from "./factset.js";
|
|
28
|
+
import type { AiCall, ClaimScope, FactCache, FactsProducer, ProducerDeps } from "./producer.js";
|
|
29
|
+
/** A build's deps: the producer's, minus `ctx` (resolved here), plus the engine (the manifest read) and the producer itself (absent ⇒ stock). */
|
|
30
|
+
export interface BuildDeps extends Omit<ProducerDeps, "ctx" | "engine" | "factCache"> {
|
|
31
|
+
/** The engine client the step holds: the manifest is read here, the buyer statement by a producer. */
|
|
32
|
+
engine: Pick<EngineClient, "getManifest" | "getAgreement">;
|
|
33
|
+
/**
|
|
34
|
+
* The connector-result cache, opened per work order once the manifest names its `rubricId`
|
|
35
|
+
* (fact-cache.ts): a re-anchored rubric never reads the old one's answers.
|
|
36
|
+
*/
|
|
37
|
+
factCache?: (rubricId: string) => FactCache;
|
|
38
|
+
produceFacts?: FactsProducer;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* BuildDeps for a workflow step: the deps the pull lane already built, this claim's media auth, the
|
|
42
|
+
* engine client the step already holds, the step's D1 (the stock duplicate registries), the
|
|
43
|
+
* claim source's scope reads (window, frequency count), and the oracle's OWN policy + producer
|
|
44
|
+
* (`defineOracle`). Tests build BuildDeps by hand instead.
|
|
45
|
+
*/
|
|
46
|
+
export declare function factDeps(base: Pick<BuildDeps, "config" | "logger" | "trace" | "cache" | "metrics">, media: BuildDeps["media"], engine: BuildDeps["engine"], db: BuildDeps["db"], env: BuildDeps["env"], scope?: ClaimScope): BuildDeps;
|
|
47
|
+
export interface BuildInput {
|
|
48
|
+
claim: PulledClaim;
|
|
49
|
+
/** `collection.protocol` on Blocksync — the manifest is keyed by it (the workflow resolves it). */
|
|
50
|
+
protocolDid: string;
|
|
51
|
+
/** Already read (the re-pin path, workflows/claim-ingest.ts) — skips the engine read. */
|
|
52
|
+
manifest?: Manifest | ManifestUnusable;
|
|
53
|
+
}
|
|
54
|
+
export type BuildResult = {
|
|
55
|
+
ok: true;
|
|
56
|
+
rubricId: string;
|
|
57
|
+
/** The wire facts — what `POST /v1/decisions` receives, verbatim. */
|
|
58
|
+
facts: FactSetV1;
|
|
59
|
+
} | {
|
|
60
|
+
ok: false;
|
|
61
|
+
/**
|
|
62
|
+
* `rubric-unusable` — the engine cannot resolve or bind the protocol's rubric (no `#rub`,
|
|
63
|
+
* swapped bytes, a drifted `#vct`, …): its `issues` verbatim; recorded, never retried.
|
|
64
|
+
* `invalid-facts` — the producer's answer doesn't match the work order (validate.ts): our or
|
|
65
|
+
* the provider's bug, recorded AND surfaced loudly, never sent.
|
|
66
|
+
*/
|
|
67
|
+
reason: "rubric-unusable" | "invalid-facts";
|
|
68
|
+
/** Known once the manifest resolved — what the outcome is recorded against. */
|
|
69
|
+
rubricId?: string;
|
|
70
|
+
/** Codes, paths and messages only — the engine's bind issues or validate.ts's fact issues. */
|
|
71
|
+
issues: {
|
|
72
|
+
code: string;
|
|
73
|
+
path: string;
|
|
74
|
+
message: string;
|
|
75
|
+
}[];
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* manifest → ctx → produce → validate → FREEZE, for one pulled claim. Transient failures (the
|
|
79
|
+
* engine, blocksync, media) throw `unavailable` for the workflow to retry; everything
|
|
80
|
+
* deterministic comes back as a result the caller records.
|
|
81
|
+
*/
|
|
82
|
+
export declare function buildFacts(deps: BuildDeps, input: BuildInput): Promise<BuildResult>;
|
|
83
|
+
/**
|
|
84
|
+
* The build's AI Gateway calls → `ai_calls`, one batch. Fail-soft: the ledger is analytics, so
|
|
85
|
+
* a D1 blip here is a warning, never the reason a claim's evaluation retries.
|
|
86
|
+
*/
|
|
87
|
+
export declare function persistAiCalls(db: Database, claimId: string, calls: AiCall[], logger: ProducerDeps["logger"]): Promise<void>;
|
|
88
|
+
//# sourceMappingURL=builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../../src/lib/facts/builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAsB,KAAK,QAAQ,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAE3F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAK1C,OAAO,EAAuB,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,KAAK,EACV,MAAM,EAEN,UAAU,EACV,SAAS,EACT,aAAa,EAEb,YAAY,EACb,MAAM,YAAY,CAAC;AAKpB,iJAAiJ;AACjJ,MAAM,WAAW,SAAU,SAAQ,IAAI,CAAC,YAAY,EAAE,KAAK,GAAG,QAAQ,GAAG,WAAW,CAAC;IACnF,sGAAsG;IACtG,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,aAAa,GAAG,cAAc,CAAC,CAAC;IAC3D;;;OAGG;IACH,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,SAAS,CAAC;IAC5C,YAAY,CAAC,EAAE,aAAa,CAAC;CAC9B;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CACtB,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC,EAC1E,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,EACzB,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,EAC3B,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,EACnB,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC,EACrB,KAAK,CAAC,EAAE,UAAU,GACjB,SAAS,CAqBX;AAoBD,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,WAAW,CAAC;IACnB,mGAAmG;IACnG,WAAW,EAAE,MAAM,CAAC;IACpB,yFAAyF;IACzF,QAAQ,CAAC,EAAE,QAAQ,GAAG,gBAAgB,CAAC;CACxC;AAED,MAAM,MAAM,WAAW,GACnB;IACE,EAAE,EAAE,IAAI,CAAC;IACT,QAAQ,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,KAAK,EAAE,SAAS,CAAC;CAClB,GACD;IACE,EAAE,EAAE,KAAK,CAAC;IACV;;;;;OAKG;IACH,MAAM,EAAE,iBAAiB,GAAG,eAAe,CAAC;IAC5C,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8FAA8F;IAC9F,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC3D,CAAC;AAEN;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CA2HzF;AAID;;;GAGG;AACH,wBAAsB,cAAc,CAClC,EAAE,EAAE,QAAQ,EACZ,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EAAE,EACf,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,GAC7B,OAAO,CAAC,IAAI,CAAC,CAuBf"}
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The facts builder — this oracle's resolve + FREEZE phase (README "How a claim flows" step 4). The rubric is the
|
|
3
|
+
* WORK ORDER, and the work order is the engine's MANIFEST (expected.ts): it names the `ext.<name>`
|
|
4
|
+
* / `ai.<name>` facts a producer must return, and the `unique` / `frequency` facts when it declares
|
|
5
|
+
* those rules — the ONLY oracle-specific content of a FactSet — and this module assembles
|
|
6
|
+
* everything else (`answers` = the claim body verbatim, `ctx` = one clock read, the attachment
|
|
7
|
+
* descriptors, `settings`) around that answer, holds it to the work order (validate.ts), and
|
|
8
|
+
* freezes a strict FactSet v1. It never decides — `POST /v1/decisions` on the
|
|
9
|
+
* engine does — and it never reads a rubric: the engine's binder resolves `#rub`
|
|
10
|
+
* + `#vct` and republishes what the rules want, so a rubric it cannot bind is `unusable` HERE,
|
|
11
|
+
* before a single source is called, and the workflow pauses the collection so a broken catalog
|
|
12
|
+
* entry costs nothing per claim.
|
|
13
|
+
*
|
|
14
|
+
* Order: manifest (engine, KV-cached) → ctx → producer (the oracle config's `facts`, else
|
|
15
|
+
* stock/) → validate → attachment size probes → FREEZE. After `buildFacts` returns there is no
|
|
16
|
+
* network, no clock, and no AI anywhere downstream — that boundary is the determinism/replay
|
|
17
|
+
* guarantee (evaluator-spec §1).
|
|
18
|
+
*
|
|
19
|
+
* Fail closed: a deterministic negative (an unusable manifest, facts that don't match the work
|
|
20
|
+
* order) is a recorded outcome; a transient failure (the engine's 503, Blocksync, media) THROWS so
|
|
21
|
+
* the workflow step retries. Never half-built.
|
|
22
|
+
*/
|
|
23
|
+
import { aiCalls as aiCallsTable } from "../../db/schema.js";
|
|
24
|
+
import { getOracle } from "../../oracle.js";
|
|
25
|
+
import { isManifestUnusable } from "../engine/types.js";
|
|
26
|
+
import { AppError } from "../errors.js";
|
|
27
|
+
import { fetchAttachmentSize } from "../ixo/attachments.js";
|
|
28
|
+
import { inSpan } from "../spans.js";
|
|
29
|
+
import { resolveCtx } from "./ctx.js";
|
|
30
|
+
import { dbFactCache } from "./fact-cache.js";
|
|
31
|
+
import { FactSetV1 } from "./factset.js";
|
|
32
|
+
import { stockProducer } from "./stock/index.js";
|
|
33
|
+
import { rootQuestionName } from "./stock/send.js";
|
|
34
|
+
import { validateFacts } from "./validate.js";
|
|
35
|
+
/**
|
|
36
|
+
* BuildDeps for a workflow step: the deps the pull lane already built, this claim's media auth, the
|
|
37
|
+
* engine client the step already holds, the step's D1 (the stock duplicate registries), the
|
|
38
|
+
* claim source's scope reads (window, frequency count), and the oracle's OWN policy + producer
|
|
39
|
+
* (`defineOracle`). Tests build BuildDeps by hand instead.
|
|
40
|
+
*/
|
|
41
|
+
export function factDeps(base, media, engine, db, env, scope) {
|
|
42
|
+
const { allowAiChecks, allowImageChecks } = getOracle().config.policies;
|
|
43
|
+
return {
|
|
44
|
+
config: base.config,
|
|
45
|
+
logger: base.logger,
|
|
46
|
+
metrics: base.metrics,
|
|
47
|
+
span: inSpan,
|
|
48
|
+
trace: base.trace,
|
|
49
|
+
cache: base.cache,
|
|
50
|
+
media,
|
|
51
|
+
settings: { allowAiChecks, allowImageChecks },
|
|
52
|
+
produceFacts: getOracle().producer,
|
|
53
|
+
engine,
|
|
54
|
+
db,
|
|
55
|
+
// A provider's handler may reach for its own bindings (`tools.env`) — the step's env is the
|
|
56
|
+
// only place they exist.
|
|
57
|
+
env,
|
|
58
|
+
// The connector-result cache rides the same D1 — a crashed attempt's paid answers survive it.
|
|
59
|
+
factCache: db ? (rubricId) => dbFactCache(db, base.logger, rubricId) : undefined,
|
|
60
|
+
scope,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Root questions whose attachments need a byte size. The engine's `sizeProbes` (T10) names exactly
|
|
65
|
+
* the roots a `maxSizeMB` rule reads — BARE question names, what `attachments[].question` carries
|
|
66
|
+
* — so only those are probed. An older engine sends no `sizeProbes`: then every `file`-kind path
|
|
67
|
+
* the rubric reads at all is the bound (a size is probed wherever a rule could read it). An
|
|
68
|
+
* unprobeable size stays null either way, and the engine's null rule decides.
|
|
69
|
+
*/
|
|
70
|
+
function sizeProbeQuestions(manifest) {
|
|
71
|
+
if (manifest.sizeProbes)
|
|
72
|
+
return new Set(manifest.sizeProbes.map((p) => p.path));
|
|
73
|
+
const roots = new Set();
|
|
74
|
+
for (const field of manifest.fields) {
|
|
75
|
+
if (field.kind !== "file")
|
|
76
|
+
continue;
|
|
77
|
+
const root = rootQuestionName(field.path);
|
|
78
|
+
if (root)
|
|
79
|
+
roots.add(root);
|
|
80
|
+
}
|
|
81
|
+
return roots;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* manifest → ctx → produce → validate → FREEZE, for one pulled claim. Transient failures (the
|
|
85
|
+
* engine, blocksync, media) throw `unavailable` for the workflow to retry; everything
|
|
86
|
+
* deterministic comes back as a result the caller records.
|
|
87
|
+
*/
|
|
88
|
+
export async function buildFacts(deps, input) {
|
|
89
|
+
const { claim, protocolDid } = input;
|
|
90
|
+
const ids = { claimId: claim.claimId, collectionId: claim.collectionId };
|
|
91
|
+
// The work order, before anything is spent: the engine's binder has already resolved `#rub`,
|
|
92
|
+
// `#vct` and every ref, so a rubric it cannot bind is the outcome — not a producer run and not
|
|
93
|
+
// a decide call. The engine's 503 throws `unavailable` out of the client for the step to retry.
|
|
94
|
+
const manifest = input.manifest ?? (await deps.engine.getManifest(protocolDid));
|
|
95
|
+
if (isManifestUnusable(manifest)) {
|
|
96
|
+
deps.logger.warn("facts.rubric-unusable", { ...ids, protocolDid, issues: manifest.issues });
|
|
97
|
+
return { ok: false, reason: "rubric-unusable", issues: manifest.issues };
|
|
98
|
+
}
|
|
99
|
+
// Canonical lowercase (`^[0-9a-f]{64}$` is what the engine's `rubric.id` accepts): the engine
|
|
100
|
+
// lowercases on parse already; asserted here so the pin we send is the pin we compare against.
|
|
101
|
+
const rubricId = manifest.rubricId.toLowerCase();
|
|
102
|
+
deps.logger.info("facts.expected", {
|
|
103
|
+
...ids,
|
|
104
|
+
rubricId,
|
|
105
|
+
ext: Object.keys(manifest.ext),
|
|
106
|
+
ai: Object.keys(manifest.ai),
|
|
107
|
+
formDrifted: manifest.formProof.drifted,
|
|
108
|
+
});
|
|
109
|
+
// ctx FIRST — the build's one clock read (`frozenAt`) and the collection window, resolved before
|
|
110
|
+
// the producer so a transient Blocksync blip retries the step for free (no AI spent yet) and the
|
|
111
|
+
// producer's `send` payloads quote exactly the ctx the engine's rules will read (producer.ts).
|
|
112
|
+
const ctx = await resolveCtx(deps, {
|
|
113
|
+
collectionId: claim.collectionId,
|
|
114
|
+
submitter: claim.metadata.agentDid,
|
|
115
|
+
submitterAddress: claim.metadata.agentAddress,
|
|
116
|
+
submissionDate: claim.metadata.submissionDate,
|
|
117
|
+
useIntent: claim.metadata.payment.useIntent,
|
|
118
|
+
});
|
|
119
|
+
// PRODUCE — the provider's seam, else the stock producer (stock/). Whatever comes back is held
|
|
120
|
+
// to the work order before it is frozen: a mismatch is a producer bug, never a half-built FactSet
|
|
121
|
+
// and never something the engine is asked to judge.
|
|
122
|
+
const aiSpend = new Map();
|
|
123
|
+
const aiCalls = [];
|
|
124
|
+
const pdeps = {
|
|
125
|
+
config: deps.config,
|
|
126
|
+
logger: deps.logger,
|
|
127
|
+
metrics: deps.metrics,
|
|
128
|
+
span: deps.span,
|
|
129
|
+
protocolDid,
|
|
130
|
+
aiSpend,
|
|
131
|
+
aiCalls,
|
|
132
|
+
trace: deps.trace,
|
|
133
|
+
media: deps.media,
|
|
134
|
+
cache: deps.cache,
|
|
135
|
+
engine: deps.engine,
|
|
136
|
+
db: deps.db,
|
|
137
|
+
factCache: deps.factCache?.(rubricId),
|
|
138
|
+
env: deps.env,
|
|
139
|
+
scope: deps.scope,
|
|
140
|
+
settings: deps.settings,
|
|
141
|
+
finalAttempt: deps.finalAttempt,
|
|
142
|
+
ctx,
|
|
143
|
+
};
|
|
144
|
+
let produced;
|
|
145
|
+
try {
|
|
146
|
+
produced = await (deps.produceFacts ?? stockProducer)(claim, manifest, pdeps);
|
|
147
|
+
}
|
|
148
|
+
finally {
|
|
149
|
+
// Spent is spent — also when the producer then threw for a retry.
|
|
150
|
+
for (const [model, spent] of aiSpend) {
|
|
151
|
+
const tags = { op: model, id: protocolDid, outcome: deps.config.AI_PROVIDER };
|
|
152
|
+
deps.metrics?.count("ai.tokens", spent.promptTokens, { ...tags, route: "prompt" });
|
|
153
|
+
deps.metrics?.count("ai.tokens", spent.completionTokens, { ...tags, route: "completion" });
|
|
154
|
+
// The gateway's USD is not known yet — cron/ai-cost.ts emits it when the log has it.
|
|
155
|
+
if (spent.microUsd !== null)
|
|
156
|
+
deps.metrics?.count("ai.cost_micro_usd", spent.microUsd, tags);
|
|
157
|
+
}
|
|
158
|
+
// Spent is spent: the gateway calls land on the ledger even when the producer threw.
|
|
159
|
+
if (deps.db)
|
|
160
|
+
await persistAiCalls(deps.db, claim.claimId, aiCalls, deps.logger);
|
|
161
|
+
}
|
|
162
|
+
const valid = validateFacts(produced, manifest);
|
|
163
|
+
if (!valid.ok) {
|
|
164
|
+
deps.logger.error("facts.invalid", { ...ids, rubricId, issues: valid.issues });
|
|
165
|
+
return { ok: false, reason: "invalid-facts", rubricId, issues: valid.issues };
|
|
166
|
+
}
|
|
167
|
+
// Attachment facts: descriptors from the pull; sizes probed only where a `maxSizeMB` rule reads
|
|
168
|
+
// them. The probe runs with or without a media lane: a cellnode claim's https file answers are
|
|
169
|
+
// public URLs, and skipping them left every `maxSizeMB` gate on such a claim reading null.
|
|
170
|
+
const probes = sizeProbeQuestions(manifest);
|
|
171
|
+
const attachments = await Promise.all(claim.attachments.map(async (att) => {
|
|
172
|
+
let size = att.size ?? null;
|
|
173
|
+
if (size === null && probes.has(att.question)) {
|
|
174
|
+
size = await fetchAttachmentSize(deps, deps.media, att.url);
|
|
175
|
+
}
|
|
176
|
+
return {
|
|
177
|
+
question: att.question,
|
|
178
|
+
name: att.name,
|
|
179
|
+
mediaType: att.mediaType,
|
|
180
|
+
cid: att.cid ?? null,
|
|
181
|
+
size,
|
|
182
|
+
};
|
|
183
|
+
}));
|
|
184
|
+
// FREEZE — after this line, no network, no clock, no AI (§1). The strict parse is the wire
|
|
185
|
+
// contract asserted on OUR side: the ext/ai/unique/frequency lanes were validated above, so a
|
|
186
|
+
// failure here is the kit's own plumbing (ctx, attachments) and a loud bug, never a retry. The
|
|
187
|
+
// dup/rate facts ride only when produced — the key set IS the contract (an absent rule sends
|
|
188
|
+
// no key, never `undefined`).
|
|
189
|
+
let facts;
|
|
190
|
+
try {
|
|
191
|
+
facts = FactSetV1.parse({
|
|
192
|
+
version: 1,
|
|
193
|
+
frozenAt: ctx.now,
|
|
194
|
+
answers: claim.body,
|
|
195
|
+
attachments,
|
|
196
|
+
ctx,
|
|
197
|
+
ext: produced.ext,
|
|
198
|
+
ai: produced.ai,
|
|
199
|
+
...(produced.unique !== undefined ? { unique: produced.unique } : {}),
|
|
200
|
+
...(produced.frequency !== undefined ? { frequency: produced.frequency } : {}),
|
|
201
|
+
settings: deps.settings,
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
catch (err) {
|
|
205
|
+
throw AppError.internal("Built FactSet fails its own wire schema", err);
|
|
206
|
+
}
|
|
207
|
+
return { ok: true, rubricId, facts };
|
|
208
|
+
}
|
|
209
|
+
const AI_CALLS_PER_INSERT = 11;
|
|
210
|
+
/**
|
|
211
|
+
* The build's AI Gateway calls → `ai_calls`, one batch. Fail-soft: the ledger is analytics, so
|
|
212
|
+
* a D1 blip here is a warning, never the reason a claim's evaluation retries.
|
|
213
|
+
*/
|
|
214
|
+
export async function persistAiCalls(db, claimId, calls, logger) {
|
|
215
|
+
if (calls.length === 0)
|
|
216
|
+
return;
|
|
217
|
+
try {
|
|
218
|
+
// D1 caps a statement at 100 bound parameters and a row binds 9 — chunks of 11, one batch.
|
|
219
|
+
const rows = calls.map((c) => ({ ...c, claimId }));
|
|
220
|
+
const statements = [];
|
|
221
|
+
for (let i = 0; i < rows.length; i += AI_CALLS_PER_INSERT) {
|
|
222
|
+
statements.push(db
|
|
223
|
+
.insert(aiCallsTable)
|
|
224
|
+
.values(rows.slice(i, i + AI_CALLS_PER_INSERT))
|
|
225
|
+
.onConflictDoNothing());
|
|
226
|
+
}
|
|
227
|
+
const [first, ...rest] = statements;
|
|
228
|
+
if (first)
|
|
229
|
+
await db.batch([first, ...rest]);
|
|
230
|
+
}
|
|
231
|
+
catch (err) {
|
|
232
|
+
logger.warn("ai.calls.persist-failed", {
|
|
233
|
+
claimId,
|
|
234
|
+
count: calls.length,
|
|
235
|
+
detail: err instanceof Error ? err.message : String(err),
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
//# sourceMappingURL=builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../src/lib/facts/builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The kit's ctx — the "~free" facts (plan §9): ONE clock read, the collection window off Blocksync,
|
|
3
|
+
* and the claim's chain metadata. Assembled by the builder BEFORE the producer runs and handed to
|
|
4
|
+
* it read-only (producer.ts `deps.ctx`), so `frozenAt` is `ctx.now` and nothing downstream reads
|
|
5
|
+
* the clock again. Only `resolveCtx` touches the world; the pure ctx reader every send map goes
|
|
6
|
+
* through is `flattenCtx`, and it lives in stock/send.ts so the runner can stay node-safe.
|
|
7
|
+
*/
|
|
8
|
+
import { type BlocksyncDeps } from "../ixo/blocksync/index.js";
|
|
9
|
+
import type { CtxFacts } from "./factset.js";
|
|
10
|
+
import type { ClaimScope } from "./producer.js";
|
|
11
|
+
/**
|
|
12
|
+
* A Blocksync timestamp → the engine's `z.iso.datetime()` form (Z-suffixed; an offset form is
|
|
13
|
+
* rejected there). Lossless for an instant. Unparseable is a deterministic fault, not a retry.
|
|
14
|
+
*
|
|
15
|
+
* Blocksync returns these WITHOUT a zone suffix (`…T16:23:35.727`) and means UTC — but
|
|
16
|
+
* bare `new Date(...)` parses a suffix-less datetime as LOCAL time, which would shift window/
|
|
17
|
+
* notInFuture gate boundaries off UTC depending on where the isolate runs (mirrors frequency.ts's
|
|
18
|
+
* `parseUtc` guard).
|
|
19
|
+
*/
|
|
20
|
+
export declare function isoDate(value: string | null): string | null;
|
|
21
|
+
/**
|
|
22
|
+
* ctx resolver — one clock read + the collection window + claim metadata. The window is the claim
|
|
23
|
+
* source's (`scope`, Go Prod §7.1: null on the API lane), else the collection's on Blocksync.
|
|
24
|
+
*/
|
|
25
|
+
export declare function resolveCtx(deps: BlocksyncDeps & {
|
|
26
|
+
scope?: ClaimScope;
|
|
27
|
+
}, claim: {
|
|
28
|
+
collectionId: string;
|
|
29
|
+
submitter: string | null;
|
|
30
|
+
submitterAddress: string | null;
|
|
31
|
+
submissionDate: string | null;
|
|
32
|
+
useIntent?: boolean;
|
|
33
|
+
}): Promise<CtxFacts>;
|
|
34
|
+
//# sourceMappingURL=ctx.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ctx.d.ts","sourceRoot":"","sources":["../../../src/lib/facts/ctx.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,KAAK,aAAa,EAAiB,MAAM,kBAAkB,CAAC;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAO3D;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,aAAa,GAAG;IAAE,KAAK,CAAC,EAAE,UAAU,CAAA;CAAE,EAC5C,KAAK,EAAE;IACL,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,GACA,OAAO,CAAC,QAAQ,CAAC,CAiBnB"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The kit's ctx — the "~free" facts (plan §9): ONE clock read, the collection window off Blocksync,
|
|
3
|
+
* and the claim's chain metadata. Assembled by the builder BEFORE the producer runs and handed to
|
|
4
|
+
* it read-only (producer.ts `deps.ctx`), so `frozenAt` is `ctx.now` and nothing downstream reads
|
|
5
|
+
* the clock again. Only `resolveCtx` touches the world; the pure ctx reader every send map goes
|
|
6
|
+
* through is `flattenCtx`, and it lives in stock/send.ts so the runner can stay node-safe.
|
|
7
|
+
*/
|
|
8
|
+
import { AppError } from "../errors.js";
|
|
9
|
+
import { getCollection } from "../ixo/blocksync/index.js";
|
|
10
|
+
import { HAS_ZONE } from "./stock/frequency.js";
|
|
11
|
+
/**
|
|
12
|
+
* A Blocksync timestamp → the engine's `z.iso.datetime()` form (Z-suffixed; an offset form is
|
|
13
|
+
* rejected there). Lossless for an instant. Unparseable is a deterministic fault, not a retry.
|
|
14
|
+
*
|
|
15
|
+
* Blocksync returns these WITHOUT a zone suffix (`…T16:23:35.727`) and means UTC — but
|
|
16
|
+
* bare `new Date(...)` parses a suffix-less datetime as LOCAL time, which would shift window/
|
|
17
|
+
* notInFuture gate boundaries off UTC depending on where the isolate runs (mirrors frequency.ts's
|
|
18
|
+
* `parseUtc` guard).
|
|
19
|
+
*/
|
|
20
|
+
export function isoDate(value) {
|
|
21
|
+
if (value === null)
|
|
22
|
+
return null;
|
|
23
|
+
const pinned = value.includes("T") && !HAS_ZONE.test(value) ? `${value}Z` : value;
|
|
24
|
+
const at = new Date(pinned);
|
|
25
|
+
if (Number.isNaN(at.getTime()))
|
|
26
|
+
throw AppError.internal(`Unparseable date from Blocksync: ${value}`);
|
|
27
|
+
return at.toISOString();
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* ctx resolver — one clock read + the collection window + claim metadata. The window is the claim
|
|
31
|
+
* source's (`scope`, Go Prod §7.1: null on the API lane), else the collection's on Blocksync.
|
|
32
|
+
*/
|
|
33
|
+
export async function resolveCtx(deps, claim) {
|
|
34
|
+
const window = deps.scope
|
|
35
|
+
? await deps.scope.window(claim.collectionId)
|
|
36
|
+
: await getCollection(deps, claim.collectionId);
|
|
37
|
+
return {
|
|
38
|
+
now: new Date().toISOString(),
|
|
39
|
+
collection: {
|
|
40
|
+
startDate: isoDate(window?.startDate ?? null),
|
|
41
|
+
endDate: isoDate(window?.endDate ?? null),
|
|
42
|
+
},
|
|
43
|
+
claim: {
|
|
44
|
+
submitter: claim.submitter,
|
|
45
|
+
submitterAddress: claim.submitterAddress,
|
|
46
|
+
submissionDate: isoDate(claim.submissionDate),
|
|
47
|
+
useIntent: claim.useIntent === true,
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=ctx.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ctx.js","sourceRoot":"","sources":["../../../src/lib/facts/ctx.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAsB,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGrE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C;;;;;;;;GAQG;AACH,MAAM,UAAU,OAAO,CAAC,KAAoB;IAC1C,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;IAClF,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;QAC5B,MAAM,QAAQ,CAAC,QAAQ,CAAC,oCAAoC,KAAK,EAAE,CAAC,CAAC;IACvE,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC;AAC1B,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,IAA4C,EAC5C,KAMC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK;QACvB,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC;QAC7C,CAAC,CAAC,MAAM,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAClD,OAAO;QACL,GAAG,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC7B,UAAU,EAAE;YACV,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,IAAI,IAAI,CAAC;YAC7C,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,IAAI,IAAI,CAAC;SAC1C;QACD,KAAK,EAAE;YACL,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;YACxC,cAAc,EAAE,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC;YAC7C,SAAS,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI;SACpC;KACF,CAAC;AACJ,CAAC"}
|