@ixo/decision-oracle 0.0.0-stage → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +794 -2
- package/dist/act.d.ts +87 -0
- package/dist/act.d.ts.map +1 -0
- package/dist/act.js +20 -0
- package/dist/act.js.map +1 -0
- package/dist/app.d.ts +22 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +128 -0
- package/dist/app.js.map +1 -0
- package/dist/c2pa.wasm +0 -0
- package/dist/cli/commands/api.d.ts +50 -0
- package/dist/cli/commands/api.d.ts.map +1 -0
- package/dist/cli/commands/api.js +737 -0
- package/dist/cli/commands/api.js.map +1 -0
- package/dist/cli/commands/create-collection.d.ts +40 -0
- package/dist/cli/commands/create-collection.d.ts.map +1 -0
- package/dist/cli/commands/create-collection.js +318 -0
- package/dist/cli/commands/create-collection.js.map +1 -0
- package/dist/cli/commands/create-deed.d.ts +31 -0
- package/dist/cli/commands/create-deed.d.ts.map +1 -0
- package/dist/cli/commands/create-deed.js +208 -0
- package/dist/cli/commands/create-deed.js.map +1 -0
- package/dist/cli/commands/delegation.d.ts +26 -0
- package/dist/cli/commands/delegation.d.ts.map +1 -0
- package/dist/cli/commands/delegation.js +162 -0
- package/dist/cli/commands/delegation.js.map +1 -0
- package/dist/cli/commands/derive.d.ts +22 -0
- package/dist/cli/commands/derive.d.ts.map +1 -0
- package/dist/cli/commands/derive.js +53 -0
- package/dist/cli/commands/derive.js.map +1 -0
- package/dist/cli/commands/engine.d.ts +25 -0
- package/dist/cli/commands/engine.d.ts.map +1 -0
- package/dist/cli/commands/engine.js +107 -0
- package/dist/cli/commands/engine.js.map +1 -0
- package/dist/cli/commands/erase.d.ts +17 -0
- package/dist/cli/commands/erase.d.ts.map +1 -0
- package/dist/cli/commands/erase.js +117 -0
- package/dist/cli/commands/erase.js.map +1 -0
- package/dist/cli/commands/facts-run.d.ts +30 -0
- package/dist/cli/commands/facts-run.d.ts.map +1 -0
- package/dist/cli/commands/facts-run.js +409 -0
- package/dist/cli/commands/facts-run.js.map +1 -0
- package/dist/cli/commands/facts-scaffold.d.ts +22 -0
- package/dist/cli/commands/facts-scaffold.d.ts.map +1 -0
- package/dist/cli/commands/facts-scaffold.js +208 -0
- package/dist/cli/commands/facts-scaffold.js.map +1 -0
- package/dist/cli/commands/init.d.ts +18 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +34 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/login.d.ts +9 -0
- package/dist/cli/commands/login.d.ts.map +1 -0
- package/dist/cli/commands/login.js +16 -0
- package/dist/cli/commands/login.js.map +1 -0
- package/dist/cli/commands/logout.d.ts +10 -0
- package/dist/cli/commands/logout.d.ts.map +1 -0
- package/dist/cli/commands/logout.js +28 -0
- package/dist/cli/commands/logout.js.map +1 -0
- package/dist/cli/commands/manifest.d.ts +12 -0
- package/dist/cli/commands/manifest.d.ts.map +1 -0
- package/dist/cli/commands/manifest.js +48 -0
- package/dist/cli/commands/manifest.js.map +1 -0
- package/dist/cli/commands/oracle-init.d.ts +48 -0
- package/dist/cli/commands/oracle-init.d.ts.map +1 -0
- package/dist/cli/commands/oracle-init.js +1122 -0
- package/dist/cli/commands/oracle-init.js.map +1 -0
- package/dist/cli/commands/org.d.ts +28 -0
- package/dist/cli/commands/org.d.ts.map +1 -0
- package/dist/cli/commands/org.js +309 -0
- package/dist/cli/commands/org.js.map +1 -0
- package/dist/cli/commands/protocol-review.d.ts +20 -0
- package/dist/cli/commands/protocol-review.d.ts.map +1 -0
- package/dist/cli/commands/protocol-review.js +162 -0
- package/dist/cli/commands/protocol-review.js.map +1 -0
- package/dist/cli/commands/publish-protocol.d.ts +43 -0
- package/dist/cli/commands/publish-protocol.d.ts.map +1 -0
- package/dist/cli/commands/publish-protocol.js +345 -0
- package/dist/cli/commands/publish-protocol.js.map +1 -0
- package/dist/cli/commands/register.d.ts +16 -0
- package/dist/cli/commands/register.d.ts.map +1 -0
- package/dist/cli/commands/register.js +54 -0
- package/dist/cli/commands/register.js.map +1 -0
- package/dist/cli/commands/relink.d.ts +11 -0
- package/dist/cli/commands/relink.d.ts.map +1 -0
- package/dist/cli/commands/relink.js +36 -0
- package/dist/cli/commands/relink.js.map +1 -0
- package/dist/cli/commands/rubric-fetch-form.d.ts +16 -0
- package/dist/cli/commands/rubric-fetch-form.d.ts.map +1 -0
- package/dist/cli/commands/rubric-fetch-form.js +83 -0
- package/dist/cli/commands/rubric-fetch-form.js.map +1 -0
- package/dist/cli/commands/rubric-validate.d.ts +72 -0
- package/dist/cli/commands/rubric-validate.d.ts.map +1 -0
- package/dist/cli/commands/rubric-validate.js +163 -0
- package/dist/cli/commands/rubric-validate.js.map +1 -0
- package/dist/cli/commands/scan.d.ts +13 -0
- package/dist/cli/commands/scan.d.ts.map +1 -0
- package/dist/cli/commands/scan.js +39 -0
- package/dist/cli/commands/scan.js.map +1 -0
- package/dist/cli/commands/skills.d.ts +11 -0
- package/dist/cli/commands/skills.d.ts.map +1 -0
- package/dist/cli/commands/skills.js +19 -0
- package/dist/cli/commands/skills.js.map +1 -0
- package/dist/cli/commands/submit-claim.d.ts +25 -0
- package/dist/cli/commands/submit-claim.d.ts.map +1 -0
- package/dist/cli/commands/submit-claim.js +155 -0
- package/dist/cli/commands/submit-claim.js.map +1 -0
- package/dist/cli/index.d.ts +15 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +206 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/lib/agent-card-schema.d.ts +8 -0
- package/dist/cli/lib/agent-card-schema.d.ts.map +1 -0
- package/dist/cli/lib/agent-card-schema.js +169 -0
- package/dist/cli/lib/agent-card-schema.js.map +1 -0
- package/dist/cli/lib/ai-rest.d.ts +12 -0
- package/dist/cli/lib/ai-rest.d.ts.map +1 -0
- package/dist/cli/lib/ai-rest.js +36 -0
- package/dist/cli/lib/ai-rest.js.map +1 -0
- package/dist/cli/lib/args.d.ts +33 -0
- package/dist/cli/lib/args.d.ts.map +1 -0
- package/dist/cli/lib/args.js +24 -0
- package/dist/cli/lib/args.js.map +1 -0
- package/dist/cli/lib/authhub.d.ts +7 -0
- package/dist/cli/lib/authhub.d.ts.map +1 -0
- package/dist/cli/lib/authhub.js +210 -0
- package/dist/cli/lib/authhub.js.map +1 -0
- package/dist/cli/lib/chain.d.ts +264 -0
- package/dist/cli/lib/chain.d.ts.map +1 -0
- package/dist/cli/lib/chain.js +584 -0
- package/dist/cli/lib/chain.js.map +1 -0
- package/dist/cli/lib/devvars.d.ts +59 -0
- package/dist/cli/lib/devvars.d.ts.map +1 -0
- package/dist/cli/lib/devvars.js +206 -0
- package/dist/cli/lib/devvars.js.map +1 -0
- package/dist/cli/lib/engine.d.ts +54 -0
- package/dist/cli/lib/engine.d.ts.map +1 -0
- package/dist/cli/lib/engine.js +112 -0
- package/dist/cli/lib/engine.js.map +1 -0
- package/dist/cli/lib/identity-cards.d.ts +188 -0
- package/dist/cli/lib/identity-cards.d.ts.map +1 -0
- package/dist/cli/lib/identity-cards.js +261 -0
- package/dist/cli/lib/identity-cards.js.map +1 -0
- package/dist/cli/lib/matrix-account.d.ts +79 -0
- package/dist/cli/lib/matrix-account.d.ts.map +1 -0
- package/dist/cli/lib/matrix-account.js +228 -0
- package/dist/cli/lib/matrix-account.js.map +1 -0
- package/dist/cli/lib/oracle-account.d.ts +108 -0
- package/dist/cli/lib/oracle-account.d.ts.map +1 -0
- package/dist/cli/lib/oracle-account.js +207 -0
- package/dist/cli/lib/oracle-account.js.map +1 -0
- package/dist/cli/lib/project.d.ts +22 -0
- package/dist/cli/lib/project.d.ts.map +1 -0
- package/dist/cli/lib/project.js +62 -0
- package/dist/cli/lib/project.js.map +1 -0
- package/dist/cli/lib/session.d.ts +109 -0
- package/dist/cli/lib/session.d.ts.map +1 -0
- package/dist/cli/lib/session.js +354 -0
- package/dist/cli/lib/session.js.map +1 -0
- package/dist/cli/lib/workorder.d.ts +57 -0
- package/dist/cli/lib/workorder.d.ts.map +1 -0
- package/dist/cli/lib/workorder.js +101 -0
- package/dist/cli/lib/workorder.js.map +1 -0
- package/dist/config.d.ts +221 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +431 -0
- package/dist/config.js.map +1 -0
- package/dist/context.d.ts +88 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +9 -0
- package/dist/context.js.map +1 -0
- package/dist/contracts/api.d.ts +3367 -0
- package/dist/contracts/api.d.ts.map +1 -0
- package/dist/contracts/api.js +1303 -0
- package/dist/contracts/api.js.map +1 -0
- package/dist/contracts/capabilities.d.ts +126 -0
- package/dist/contracts/capabilities.d.ts.map +1 -0
- package/dist/contracts/capabilities.js +164 -0
- package/dist/contracts/capabilities.js.map +1 -0
- package/dist/contracts/claim-source.d.ts +98 -0
- package/dist/contracts/claim-source.d.ts.map +1 -0
- package/dist/contracts/claim-source.js +17 -0
- package/dist/contracts/claim-source.js.map +1 -0
- package/dist/contracts/errors.d.ts +150 -0
- package/dist/contracts/errors.d.ts.map +1 -0
- package/dist/contracts/errors.js +121 -0
- package/dist/contracts/errors.js.map +1 -0
- package/dist/contracts/index.d.ts +15 -0
- package/dist/contracts/index.d.ts.map +1 -0
- package/dist/contracts/index.js +11 -0
- package/dist/contracts/index.js.map +1 -0
- package/dist/contracts/payment-gate.d.ts +129 -0
- package/dist/contracts/payment-gate.d.ts.map +1 -0
- package/dist/contracts/payment-gate.js +24 -0
- package/dist/contracts/payment-gate.js.map +1 -0
- package/dist/contracts/start-api-claim.d.ts +90 -0
- package/dist/contracts/start-api-claim.d.ts.map +1 -0
- package/dist/contracts/start-api-claim.js +22 -0
- package/dist/contracts/start-api-claim.js.map +1 -0
- package/dist/contracts/webhooks.d.ts +1487 -0
- package/dist/contracts/webhooks.d.ts.map +1 -0
- package/dist/contracts/webhooks.js +71 -0
- package/dist/contracts/webhooks.js.map +1 -0
- package/dist/contracts/work-order.d.ts +29 -0
- package/dist/contracts/work-order.d.ts.map +1 -0
- package/dist/contracts/work-order.js +12 -0
- package/dist/contracts/work-order.js.map +1 -0
- package/dist/cron/ai-cost.d.ts +29 -0
- package/dist/cron/ai-cost.d.ts.map +1 -0
- package/dist/cron/ai-cost.js +80 -0
- package/dist/cron/ai-cost.js.map +1 -0
- package/dist/cron/api-lane.d.ts +39 -0
- package/dist/cron/api-lane.d.ts.map +1 -0
- package/dist/cron/api-lane.js +203 -0
- package/dist/cron/api-lane.js.map +1 -0
- package/dist/cron/backlog.d.ts +50 -0
- package/dist/cron/backlog.d.ts.map +1 -0
- package/dist/cron/backlog.js +115 -0
- package/dist/cron/backlog.js.map +1 -0
- package/dist/cron/billing.d.ts +11 -0
- package/dist/cron/billing.d.ts.map +1 -0
- package/dist/cron/billing.js +69 -0
- package/dist/cron/billing.js.map +1 -0
- package/dist/cron/collection.d.ts +50 -0
- package/dist/cron/collection.d.ts.map +1 -0
- package/dist/cron/collection.js +118 -0
- package/dist/cron/collection.js.map +1 -0
- package/dist/cron/funding.d.ts +16 -0
- package/dist/cron/funding.d.ts.map +1 -0
- package/dist/cron/funding.js +262 -0
- package/dist/cron/funding.js.map +1 -0
- package/dist/cron/payer-billing.d.ts +38 -0
- package/dist/cron/payer-billing.d.ts.map +1 -0
- package/dist/cron/payer-billing.js +119 -0
- package/dist/cron/payer-billing.js.map +1 -0
- package/dist/cron/scan.d.ts +43 -0
- package/dist/cron/scan.d.ts.map +1 -0
- package/dist/cron/scan.js +250 -0
- package/dist/cron/scan.js.map +1 -0
- package/dist/db/client.d.ts +14 -0
- package/dist/db/client.d.ts.map +1 -0
- package/dist/db/client.js +14 -0
- package/dist/db/client.js.map +1 -0
- package/dist/db/index.d.ts +7 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +7 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/schema.d.ts +6738 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +1433 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/define-oracle.d.ts +32 -0
- package/dist/define-oracle.d.ts.map +1 -0
- package/dist/define-oracle.js +80 -0
- package/dist/define-oracle.js.map +1 -0
- package/dist/dev-oracle.d.ts +9 -0
- package/dist/dev-oracle.d.ts.map +1 -0
- package/dist/dev-oracle.js +19 -0
- package/dist/dev-oracle.js.map +1 -0
- package/dist/dev-worker.d.ts +10 -0
- package/dist/dev-worker.d.ts.map +1 -0
- package/dist/dev-worker.js +12 -0
- package/dist/dev-worker.js.map +1 -0
- package/dist/env.d.ts +146 -0
- package/dist/env.d.ts.map +1 -0
- package/dist/env.js +10 -0
- package/dist/env.js.map +1 -0
- package/dist/facts/exif.d.ts +43 -0
- package/dist/facts/exif.d.ts.map +1 -0
- package/dist/facts/exif.js +224 -0
- package/dist/facts/exif.js.map +1 -0
- package/dist/facts/fact.d.ts +62 -0
- package/dist/facts/fact.d.ts.map +1 -0
- package/dist/facts/fact.js +105 -0
- package/dist/facts/fact.js.map +1 -0
- package/dist/facts/geo.d.ts +55 -0
- package/dist/facts/geo.d.ts.map +1 -0
- package/dist/facts/geo.js +267 -0
- package/dist/facts/geo.js.map +1 -0
- package/dist/facts/index.d.ts +31 -0
- package/dist/facts/index.d.ts.map +1 -0
- package/dist/facts/index.js +27 -0
- package/dist/facts/index.js.map +1 -0
- package/dist/facts/linked-doc.d.ts +60 -0
- package/dist/facts/linked-doc.d.ts.map +1 -0
- package/dist/facts/linked-doc.js +101 -0
- package/dist/facts/linked-doc.js.map +1 -0
- package/dist/facts/types.d.ts +278 -0
- package/dist/facts/types.d.ts.map +1 -0
- package/dist/facts/types.js +19 -0
- package/dist/facts/types.js.map +1 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/api-lane/accept.d.ts +29 -0
- package/dist/lib/api-lane/accept.d.ts.map +1 -0
- package/dist/lib/api-lane/accept.js +218 -0
- package/dist/lib/api-lane/accept.js.map +1 -0
- package/dist/lib/api-lane/claim-list.d.ts +44 -0
- package/dist/lib/api-lane/claim-list.d.ts.map +1 -0
- package/dist/lib/api-lane/claim-list.js +92 -0
- package/dist/lib/api-lane/claim-list.js.map +1 -0
- package/dist/lib/api-lane/company.d.ts +56 -0
- package/dist/lib/api-lane/company.d.ts.map +1 -0
- package/dist/lib/api-lane/company.js +103 -0
- package/dist/lib/api-lane/company.js.map +1 -0
- package/dist/lib/api-lane/events.d.ts +21 -0
- package/dist/lib/api-lane/events.d.ts.map +1 -0
- package/dist/lib/api-lane/events.js +111 -0
- package/dist/lib/api-lane/events.js.map +1 -0
- package/dist/lib/api-lane/ids.d.ts +39 -0
- package/dist/lib/api-lane/ids.d.ts.map +1 -0
- package/dist/lib/api-lane/ids.js +78 -0
- package/dist/lib/api-lane/ids.js.map +1 -0
- package/dist/lib/api-lane/index.d.ts +16 -0
- package/dist/lib/api-lane/index.d.ts.map +1 -0
- package/dist/lib/api-lane/index.js +16 -0
- package/dist/lib/api-lane/index.js.map +1 -0
- package/dist/lib/api-lane/linked.d.ts +264 -0
- package/dist/lib/api-lane/linked.d.ts.map +1 -0
- package/dist/lib/api-lane/linked.js +272 -0
- package/dist/lib/api-lane/linked.js.map +1 -0
- package/dist/lib/api-lane/media-type.d.ts +15 -0
- package/dist/lib/api-lane/media-type.d.ts.map +1 -0
- package/dist/lib/api-lane/media-type.js +73 -0
- package/dist/lib/api-lane/media-type.js.map +1 -0
- package/dist/lib/api-lane/member-emails.d.ts +83 -0
- package/dist/lib/api-lane/member-emails.d.ts.map +1 -0
- package/dist/lib/api-lane/member-emails.js +213 -0
- package/dist/lib/api-lane/member-emails.js.map +1 -0
- package/dist/lib/api-lane/members.d.ts +42 -0
- package/dist/lib/api-lane/members.d.ts.map +1 -0
- package/dist/lib/api-lane/members.js +75 -0
- package/dist/lib/api-lane/members.js.map +1 -0
- package/dist/lib/api-lane/notify.d.ts +47 -0
- package/dist/lib/api-lane/notify.d.ts.map +1 -0
- package/dist/lib/api-lane/notify.js +240 -0
- package/dist/lib/api-lane/notify.js.map +1 -0
- package/dist/lib/api-lane/pause.d.ts +41 -0
- package/dist/lib/api-lane/pause.d.ts.map +1 -0
- package/dist/lib/api-lane/pause.js +155 -0
- package/dist/lib/api-lane/pause.js.map +1 -0
- package/dist/lib/api-lane/record.d.ts +76 -0
- package/dist/lib/api-lane/record.d.ts.map +1 -0
- package/dist/lib/api-lane/record.js +337 -0
- package/dist/lib/api-lane/record.js.map +1 -0
- package/dist/lib/api-lane/retention.d.ts +43 -0
- package/dist/lib/api-lane/retention.d.ts.map +1 -0
- package/dist/lib/api-lane/retention.js +176 -0
- package/dist/lib/api-lane/retention.js.map +1 -0
- package/dist/lib/api-lane/review.d.ts +76 -0
- package/dist/lib/api-lane/review.d.ts.map +1 -0
- package/dist/lib/api-lane/review.js +355 -0
- package/dist/lib/api-lane/review.js.map +1 -0
- package/dist/lib/api-lane/reviewers.d.ts +109 -0
- package/dist/lib/api-lane/reviewers.d.ts.map +1 -0
- package/dist/lib/api-lane/reviewers.js +755 -0
- package/dist/lib/api-lane/reviewers.js.map +1 -0
- package/dist/lib/api-lane/source-delete.d.ts +16 -0
- package/dist/lib/api-lane/source-delete.d.ts.map +1 -0
- package/dist/lib/api-lane/source-delete.js +50 -0
- package/dist/lib/api-lane/source-delete.js.map +1 -0
- package/dist/lib/api-lane/source.d.ts +19 -0
- package/dist/lib/api-lane/source.d.ts.map +1 -0
- package/dist/lib/api-lane/source.js +226 -0
- package/dist/lib/api-lane/source.js.map +1 -0
- package/dist/lib/api-lane/submitter.d.ts +22 -0
- package/dist/lib/api-lane/submitter.d.ts.map +1 -0
- package/dist/lib/api-lane/submitter.js +34 -0
- package/dist/lib/api-lane/submitter.js.map +1 -0
- package/dist/lib/api-lane/timeline.d.ts +20 -0
- package/dist/lib/api-lane/timeline.d.ts.map +1 -0
- package/dist/lib/api-lane/timeline.js +23 -0
- package/dist/lib/api-lane/timeline.js.map +1 -0
- package/dist/lib/api-lane/webhook-crypto.d.ts +44 -0
- package/dist/lib/api-lane/webhook-crypto.d.ts.map +1 -0
- package/dist/lib/api-lane/webhook-crypto.js +103 -0
- package/dist/lib/api-lane/webhook-crypto.js.map +1 -0
- package/dist/lib/api-lane/webhooks.d.ts +117 -0
- package/dist/lib/api-lane/webhooks.d.ts.map +1 -0
- package/dist/lib/api-lane/webhooks.js +503 -0
- package/dist/lib/api-lane/webhooks.js.map +1 -0
- package/dist/lib/archive.d.ts +64 -0
- package/dist/lib/archive.d.ts.map +1 -0
- package/dist/lib/archive.js +305 -0
- package/dist/lib/archive.js.map +1 -0
- package/dist/lib/bech32.d.ts +8 -0
- package/dist/lib/bech32.d.ts.map +1 -0
- package/dist/lib/bech32.js +39 -0
- package/dist/lib/bech32.js.map +1 -0
- package/dist/lib/claim-erase.d.ts +22 -0
- package/dist/lib/claim-erase.d.ts.map +1 -0
- package/dist/lib/claim-erase.js +44 -0
- package/dist/lib/claim-erase.js.map +1 -0
- package/dist/lib/cursor.d.ts +11 -0
- package/dist/lib/cursor.d.ts.map +1 -0
- package/dist/lib/cursor.js +20 -0
- package/dist/lib/cursor.js.map +1 -0
- package/dist/lib/email/send.d.ts +43 -0
- package/dist/lib/email/send.d.ts.map +1 -0
- package/dist/lib/email/send.js +71 -0
- package/dist/lib/email/send.js.map +1 -0
- package/dist/lib/email/template.d.ts +217 -0
- package/dist/lib/email/template.d.ts.map +1 -0
- package/dist/lib/email/template.js +713 -0
- package/dist/lib/email/template.js.map +1 -0
- package/dist/lib/engine/adr36.d.ts +56 -0
- package/dist/lib/engine/adr36.d.ts.map +1 -0
- package/dist/lib/engine/adr36.js +76 -0
- package/dist/lib/engine/adr36.js.map +1 -0
- package/dist/lib/engine/client.d.ts +162 -0
- package/dist/lib/engine/client.d.ts.map +1 -0
- package/dist/lib/engine/client.js +473 -0
- package/dist/lib/engine/client.js.map +1 -0
- package/dist/lib/engine/types.d.ts +1356 -0
- package/dist/lib/engine/types.d.ts.map +1 -0
- package/dist/lib/engine/types.js +562 -0
- package/dist/lib/engine/types.js.map +1 -0
- package/dist/lib/errors.d.ts +73 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +96 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/facts/builder.d.ts +88 -0
- package/dist/lib/facts/builder.d.ts.map +1 -0
- package/dist/lib/facts/builder.js +239 -0
- package/dist/lib/facts/builder.js.map +1 -0
- package/dist/lib/facts/ctx.d.ts +34 -0
- package/dist/lib/facts/ctx.d.ts.map +1 -0
- package/dist/lib/facts/ctx.js +51 -0
- package/dist/lib/facts/ctx.js.map +1 -0
- package/dist/lib/facts/expected.d.ts +23 -0
- package/dist/lib/facts/expected.d.ts.map +1 -0
- package/dist/lib/facts/expected.js +16 -0
- package/dist/lib/facts/expected.js.map +1 -0
- package/dist/lib/facts/fact-cache.d.ts +469 -0
- package/dist/lib/facts/fact-cache.d.ts.map +1 -0
- package/dist/lib/facts/fact-cache.js +52 -0
- package/dist/lib/facts/fact-cache.js.map +1 -0
- package/dist/lib/facts/factset.d.ts +608 -0
- package/dist/lib/facts/factset.d.ts.map +1 -0
- package/dist/lib/facts/factset.js +226 -0
- package/dist/lib/facts/factset.js.map +1 -0
- package/dist/lib/facts/producer.d.ts +190 -0
- package/dist/lib/facts/producer.d.ts.map +1 -0
- package/dist/lib/facts/producer.js +15 -0
- package/dist/lib/facts/producer.js.map +1 -0
- package/dist/lib/facts/runner.d.ts +111 -0
- package/dist/lib/facts/runner.d.ts.map +1 -0
- package/dist/lib/facts/runner.js +438 -0
- package/dist/lib/facts/runner.js.map +1 -0
- package/dist/lib/facts/stock/ai-check.d.ts +100 -0
- package/dist/lib/facts/stock/ai-check.d.ts.map +1 -0
- package/dist/lib/facts/stock/ai-check.js +526 -0
- package/dist/lib/facts/stock/ai-check.js.map +1 -0
- package/dist/lib/facts/stock/ai-inputs.d.ts +104 -0
- package/dist/lib/facts/stock/ai-inputs.d.ts.map +1 -0
- package/dist/lib/facts/stock/ai-inputs.js +332 -0
- package/dist/lib/facts/stock/ai-inputs.js.map +1 -0
- package/dist/lib/facts/stock/ai-provider.d.ts +105 -0
- package/dist/lib/facts/stock/ai-provider.d.ts.map +1 -0
- package/dist/lib/facts/stock/ai-provider.js +250 -0
- package/dist/lib/facts/stock/ai-provider.js.map +1 -0
- package/dist/lib/facts/stock/ai-unique.d.ts +85 -0
- package/dist/lib/facts/stock/ai-unique.d.ts.map +1 -0
- package/dist/lib/facts/stock/ai-unique.js +208 -0
- package/dist/lib/facts/stock/ai-unique.js.map +1 -0
- package/dist/lib/facts/stock/archive.d.ts +63 -0
- package/dist/lib/facts/stock/archive.d.ts.map +1 -0
- package/dist/lib/facts/stock/archive.js +349 -0
- package/dist/lib/facts/stock/archive.js.map +1 -0
- package/dist/lib/facts/stock/c2pa-trust-list.d.ts +16 -0
- package/dist/lib/facts/stock/c2pa-trust-list.d.ts.map +1 -0
- package/dist/lib/facts/stock/c2pa-trust-list.js +637 -0
- package/dist/lib/facts/stock/c2pa-trust-list.js.map +1 -0
- package/dist/lib/facts/stock/c2pa.d.ts +56 -0
- package/dist/lib/facts/stock/c2pa.d.ts.map +1 -0
- package/dist/lib/facts/stock/c2pa.js +234 -0
- package/dist/lib/facts/stock/c2pa.js.map +1 -0
- package/dist/lib/facts/stock/call.d.ts +91 -0
- package/dist/lib/facts/stock/call.d.ts.map +1 -0
- package/dist/lib/facts/stock/call.js +281 -0
- package/dist/lib/facts/stock/call.js.map +1 -0
- package/dist/lib/facts/stock/capability.d.ts +39 -0
- package/dist/lib/facts/stock/capability.d.ts.map +1 -0
- package/dist/lib/facts/stock/capability.js +59 -0
- package/dist/lib/facts/stock/capability.js.map +1 -0
- package/dist/lib/facts/stock/ext-source.d.ts +51 -0
- package/dist/lib/facts/stock/ext-source.d.ts.map +1 -0
- package/dist/lib/facts/stock/ext-source.js +201 -0
- package/dist/lib/facts/stock/ext-source.js.map +1 -0
- package/dist/lib/facts/stock/frequency-fact.d.ts +59 -0
- package/dist/lib/facts/stock/frequency-fact.d.ts.map +1 -0
- package/dist/lib/facts/stock/frequency-fact.js +86 -0
- package/dist/lib/facts/stock/frequency-fact.js.map +1 -0
- package/dist/lib/facts/stock/frequency.d.ts +32 -0
- package/dist/lib/facts/stock/frequency.d.ts.map +1 -0
- package/dist/lib/facts/stock/frequency.js +48 -0
- package/dist/lib/facts/stock/frequency.js.map +1 -0
- package/dist/lib/facts/stock/index.d.ts +27 -0
- package/dist/lib/facts/stock/index.d.ts.map +1 -0
- package/dist/lib/facts/stock/index.js +28 -0
- package/dist/lib/facts/stock/index.js.map +1 -0
- package/dist/lib/facts/stock/normalize.d.ts +45 -0
- package/dist/lib/facts/stock/normalize.d.ts.map +1 -0
- package/dist/lib/facts/stock/normalize.js +135 -0
- package/dist/lib/facts/stock/normalize.js.map +1 -0
- package/dist/lib/facts/stock/phash.d.ts +55 -0
- package/dist/lib/facts/stock/phash.d.ts.map +1 -0
- package/dist/lib/facts/stock/phash.js +256 -0
- package/dist/lib/facts/stock/phash.js.map +1 -0
- package/dist/lib/facts/stock/rule-defaults.d.ts +72 -0
- package/dist/lib/facts/stock/rule-defaults.d.ts.map +1 -0
- package/dist/lib/facts/stock/rule-defaults.js +55 -0
- package/dist/lib/facts/stock/rule-defaults.js.map +1 -0
- package/dist/lib/facts/stock/send.d.ts +52 -0
- package/dist/lib/facts/stock/send.d.ts.map +1 -0
- package/dist/lib/facts/stock/send.js +148 -0
- package/dist/lib/facts/stock/send.js.map +1 -0
- package/dist/lib/facts/stock/unique-score.d.ts +138 -0
- package/dist/lib/facts/stock/unique-score.d.ts.map +1 -0
- package/dist/lib/facts/stock/unique-score.js +257 -0
- package/dist/lib/facts/stock/unique-score.js.map +1 -0
- package/dist/lib/facts/stock/unique-store.d.ts +420 -0
- package/dist/lib/facts/stock/unique-store.d.ts.map +1 -0
- package/dist/lib/facts/stock/unique-store.js +328 -0
- package/dist/lib/facts/stock/unique-store.js.map +1 -0
- package/dist/lib/facts/stock/unique.d.ts +35 -0
- package/dist/lib/facts/stock/unique.d.ts.map +1 -0
- package/dist/lib/facts/stock/unique.js +327 -0
- package/dist/lib/facts/stock/unique.js.map +1 -0
- package/dist/lib/facts/tools.d.ts +57 -0
- package/dist/lib/facts/tools.d.ts.map +1 -0
- package/dist/lib/facts/tools.js +325 -0
- package/dist/lib/facts/tools.js.map +1 -0
- package/dist/lib/facts/validate.d.ts +33 -0
- package/dist/lib/facts/validate.d.ts.map +1 -0
- package/dist/lib/facts/validate.js +137 -0
- package/dist/lib/facts/validate.js.map +1 -0
- package/dist/lib/hash.d.ts +44 -0
- package/dist/lib/hash.d.ts.map +1 -0
- package/dist/lib/hash.js +80 -0
- package/dist/lib/hash.js.map +1 -0
- package/dist/lib/http/client.d.ts +113 -0
- package/dist/lib/http/client.d.ts.map +1 -0
- package/dist/lib/http/client.js +330 -0
- package/dist/lib/http/client.js.map +1 -0
- package/dist/lib/ids.d.ts +17 -0
- package/dist/lib/ids.d.ts.map +1 -0
- package/dist/lib/ids.js +26 -0
- package/dist/lib/ids.js.map +1 -0
- package/dist/lib/ixo/attachments.d.ts +116 -0
- package/dist/lib/ixo/attachments.d.ts.map +1 -0
- package/dist/lib/ixo/attachments.js +290 -0
- package/dist/lib/ixo/attachments.js.map +1 -0
- package/dist/lib/ixo/authz.d.ts +40 -0
- package/dist/lib/ixo/authz.d.ts.map +1 -0
- package/dist/lib/ixo/authz.js +113 -0
- package/dist/lib/ixo/authz.js.map +1 -0
- package/dist/lib/ixo/blocksync/index.d.ts +90 -0
- package/dist/lib/ixo/blocksync/index.d.ts.map +1 -0
- package/dist/lib/ixo/blocksync/index.js +251 -0
- package/dist/lib/ixo/blocksync/index.js.map +1 -0
- package/dist/lib/ixo/blocksync/queries.d.ts +15 -0
- package/dist/lib/ixo/blocksync/queries.d.ts.map +1 -0
- package/dist/lib/ixo/blocksync/queries.js +144 -0
- package/dist/lib/ixo/blocksync/queries.js.map +1 -0
- package/dist/lib/ixo/blocksync/types.d.ts +184 -0
- package/dist/lib/ixo/blocksync/types.d.ts.map +1 -0
- package/dist/lib/ixo/blocksync/types.js +108 -0
- package/dist/lib/ixo/blocksync/types.js.map +1 -0
- package/dist/lib/ixo/cellnode.d.ts +35 -0
- package/dist/lib/ixo/cellnode.d.ts.map +1 -0
- package/dist/lib/ixo/cellnode.js +43 -0
- package/dist/lib/ixo/cellnode.js.map +1 -0
- package/dist/lib/ixo/chain-write.d.ts +130 -0
- package/dist/lib/ixo/chain-write.d.ts.map +1 -0
- package/dist/lib/ixo/chain-write.js +460 -0
- package/dist/lib/ixo/chain-write.js.map +1 -0
- package/dist/lib/ixo/chain.d.ts +1046 -0
- package/dist/lib/ixo/chain.d.ts.map +1 -0
- package/dist/lib/ixo/chain.js +279 -0
- package/dist/lib/ixo/chain.js.map +1 -0
- package/dist/lib/ixo/claim-bot.d.ts +49 -0
- package/dist/lib/ixo/claim-bot.d.ts.map +1 -0
- package/dist/lib/ixo/claim-bot.js +141 -0
- package/dist/lib/ixo/claim-bot.js.map +1 -0
- package/dist/lib/ixo/delegation-verify.d.ts +44 -0
- package/dist/lib/ixo/delegation-verify.d.ts.map +1 -0
- package/dist/lib/ixo/delegation-verify.js +101 -0
- package/dist/lib/ixo/delegation-verify.js.map +1 -0
- package/dist/lib/ixo/did.d.ts +13 -0
- package/dist/lib/ixo/did.d.ts.map +1 -0
- package/dist/lib/ixo/did.js +85 -0
- package/dist/lib/ixo/did.js.map +1 -0
- package/dist/lib/ixo/grant-chain.d.ts +55 -0
- package/dist/lib/ixo/grant-chain.d.ts.map +1 -0
- package/dist/lib/ixo/grant-chain.js +185 -0
- package/dist/lib/ixo/grant-chain.js.map +1 -0
- package/dist/lib/ixo/identity.d.ts +32 -0
- package/dist/lib/ixo/identity.d.ts.map +1 -0
- package/dist/lib/ixo/identity.js +104 -0
- package/dist/lib/ixo/identity.js.map +1 -0
- package/dist/lib/ixo/index.d.ts +118 -0
- package/dist/lib/ixo/index.d.ts.map +1 -0
- package/dist/lib/ixo/index.js +395 -0
- package/dist/lib/ixo/index.js.map +1 -0
- package/dist/lib/ixo/payment.d.ts +104 -0
- package/dist/lib/ixo/payment.d.ts.map +1 -0
- package/dist/lib/ixo/payment.js +136 -0
- package/dist/lib/ixo/payment.js.map +1 -0
- package/dist/lib/ixo/ucan-store.d.ts +30 -0
- package/dist/lib/ixo/ucan-store.d.ts.map +1 -0
- package/dist/lib/ixo/ucan-store.js +134 -0
- package/dist/lib/ixo/ucan-store.js.map +1 -0
- package/dist/lib/ixo/ucan.d.ts +96 -0
- package/dist/lib/ixo/ucan.d.ts.map +1 -0
- package/dist/lib/ixo/ucan.js +216 -0
- package/dist/lib/ixo/ucan.js.map +1 -0
- package/dist/lib/ixo/verified-read.d.ts +43 -0
- package/dist/lib/ixo/verified-read.d.ts.map +1 -0
- package/dist/lib/ixo/verified-read.js +73 -0
- package/dist/lib/ixo/verified-read.js.map +1 -0
- package/dist/lib/ixo/vfs.d.ts +27 -0
- package/dist/lib/ixo/vfs.d.ts.map +1 -0
- package/dist/lib/ixo/vfs.js +42 -0
- package/dist/lib/ixo/vfs.js.map +1 -0
- package/dist/lib/ixo/web-did.d.ts +7 -0
- package/dist/lib/ixo/web-did.d.ts.map +1 -0
- package/dist/lib/ixo/web-did.js +9 -0
- package/dist/lib/ixo/web-did.js.map +1 -0
- package/dist/lib/logger.d.ts +34 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +126 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/matrix/api.d.ts +57 -0
- package/dist/lib/matrix/api.d.ts.map +1 -0
- package/dist/lib/matrix/api.js +58 -0
- package/dist/lib/matrix/api.js.map +1 -0
- package/dist/lib/matrix/client.d.ts +41 -0
- package/dist/lib/matrix/client.d.ts.map +1 -0
- package/dist/lib/matrix/client.js +104 -0
- package/dist/lib/matrix/client.js.map +1 -0
- package/dist/lib/matrix/deliver.d.ts +224 -0
- package/dist/lib/matrix/deliver.d.ts.map +1 -0
- package/dist/lib/matrix/deliver.js +788 -0
- package/dist/lib/matrix/deliver.js.map +1 -0
- package/dist/lib/matrix/events.d.ts +114 -0
- package/dist/lib/matrix/events.d.ts.map +1 -0
- package/dist/lib/matrix/events.js +143 -0
- package/dist/lib/matrix/events.js.map +1 -0
- package/dist/lib/matrix/mxid.d.ts +24 -0
- package/dist/lib/matrix/mxid.d.ts.map +1 -0
- package/dist/lib/matrix/mxid.js +47 -0
- package/dist/lib/matrix/mxid.js.map +1 -0
- package/dist/lib/metrics.d.ts +105 -0
- package/dist/lib/metrics.d.ts.map +1 -0
- package/dist/lib/metrics.js +204 -0
- package/dist/lib/metrics.js.map +1 -0
- package/dist/lib/oauth/approvals.d.ts +160 -0
- package/dist/lib/oauth/approvals.d.ts.map +1 -0
- package/dist/lib/oauth/approvals.js +273 -0
- package/dist/lib/oauth/approvals.js.map +1 -0
- package/dist/lib/oauth/standing.d.ts +152 -0
- package/dist/lib/oauth/standing.d.ts.map +1 -0
- package/dist/lib/oauth/standing.js +299 -0
- package/dist/lib/oauth/standing.js.map +1 -0
- package/dist/lib/oauth/token.d.ts +60 -0
- package/dist/lib/oauth/token.d.ts.map +1 -0
- package/dist/lib/oauth/token.js +129 -0
- package/dist/lib/oauth/token.js.map +1 -0
- package/dist/lib/payments/extend.d.ts +42 -0
- package/dist/lib/payments/extend.d.ts.map +1 -0
- package/dist/lib/payments/extend.js +98 -0
- package/dist/lib/payments/extend.js.map +1 -0
- package/dist/lib/payments/facilitator.d.ts +220 -0
- package/dist/lib/payments/facilitator.d.ts.map +1 -0
- package/dist/lib/payments/facilitator.js +451 -0
- package/dist/lib/payments/facilitator.js.map +1 -0
- package/dist/lib/payments/gate.d.ts +207 -0
- package/dist/lib/payments/gate.d.ts.map +1 -0
- package/dist/lib/payments/gate.js +481 -0
- package/dist/lib/payments/gate.js.map +1 -0
- package/dist/lib/payments/header-seal.d.ts +33 -0
- package/dist/lib/payments/header-seal.d.ts.map +1 -0
- package/dist/lib/payments/header-seal.js +76 -0
- package/dist/lib/payments/header-seal.js.map +1 -0
- package/dist/lib/payments/index.d.ts +12 -0
- package/dist/lib/payments/index.d.ts.map +1 -0
- package/dist/lib/payments/index.js +11 -0
- package/dist/lib/payments/index.js.map +1 -0
- package/dist/lib/payments/price.d.ts +25 -0
- package/dist/lib/payments/price.d.ts.map +1 -0
- package/dist/lib/payments/price.js +43 -0
- package/dist/lib/payments/price.js.map +1 -0
- package/dist/lib/payments/reconcile.d.ts +77 -0
- package/dist/lib/payments/reconcile.d.ts.map +1 -0
- package/dist/lib/payments/reconcile.js +317 -0
- package/dist/lib/payments/reconcile.js.map +1 -0
- package/dist/lib/payments/refund.d.ts +34 -0
- package/dist/lib/payments/refund.d.ts.map +1 -0
- package/dist/lib/payments/refund.js +123 -0
- package/dist/lib/payments/refund.js.map +1 -0
- package/dist/lib/payments/review-billing.d.ts +222 -0
- package/dist/lib/payments/review-billing.d.ts.map +1 -0
- package/dist/lib/payments/review-billing.js +609 -0
- package/dist/lib/payments/review-billing.js.map +1 -0
- package/dist/lib/payments/settle.d.ts +44 -0
- package/dist/lib/payments/settle.d.ts.map +1 -0
- package/dist/lib/payments/settle.js +306 -0
- package/dist/lib/payments/settle.js.map +1 -0
- package/dist/lib/payments/terms.d.ts +27 -0
- package/dist/lib/payments/terms.d.ts.map +1 -0
- package/dist/lib/payments/terms.js +21 -0
- package/dist/lib/payments/terms.js.map +1 -0
- package/dist/lib/payouts.d.ts +20 -0
- package/dist/lib/payouts.d.ts.map +1 -0
- package/dist/lib/payouts.js +30 -0
- package/dist/lib/payouts.js.map +1 -0
- package/dist/lib/readiness.d.ts +42 -0
- package/dist/lib/readiness.d.ts.map +1 -0
- package/dist/lib/readiness.js +130 -0
- package/dist/lib/readiness.js.map +1 -0
- package/dist/lib/redact.d.ts +23 -0
- package/dist/lib/redact.d.ts.map +1 -0
- package/dist/lib/redact.js +67 -0
- package/dist/lib/redact.js.map +1 -0
- package/dist/lib/register.d.ts +85 -0
- package/dist/lib/register.d.ts.map +1 -0
- package/dist/lib/register.js +390 -0
- package/dist/lib/register.js.map +1 -0
- package/dist/lib/review/attestation.d.ts +92 -0
- package/dist/lib/review/attestation.d.ts.map +1 -0
- package/dist/lib/review/attestation.js +264 -0
- package/dist/lib/review/attestation.js.map +1 -0
- package/dist/lib/review/reviewer-grant.d.ts +146 -0
- package/dist/lib/review/reviewer-grant.d.ts.map +1 -0
- package/dist/lib/review/reviewer-grant.js +359 -0
- package/dist/lib/review/reviewer-grant.js.map +1 -0
- package/dist/lib/review/tasks.d.ts +18 -0
- package/dist/lib/review/tasks.d.ts.map +1 -0
- package/dist/lib/review/tasks.js +36 -0
- package/dist/lib/review/tasks.js.map +1 -0
- package/dist/lib/sentry.d.ts +89 -0
- package/dist/lib/sentry.d.ts.map +1 -0
- package/dist/lib/sentry.js +284 -0
- package/dist/lib/sentry.js.map +1 -0
- package/dist/lib/spans.d.ts +14 -0
- package/dist/lib/spans.d.ts.map +1 -0
- package/dist/lib/spans.js +28 -0
- package/dist/lib/spans.js.map +1 -0
- package/dist/lib/tracing.d.ts +31 -0
- package/dist/lib/tracing.d.ts.map +1 -0
- package/dist/lib/tracing.js +66 -0
- package/dist/lib/tracing.js.map +1 -0
- package/dist/lib/ttl-cache.d.ts +26 -0
- package/dist/lib/ttl-cache.d.ts.map +1 -0
- package/dist/lib/ttl-cache.js +61 -0
- package/dist/lib/ttl-cache.js.map +1 -0
- package/dist/lib/validator.d.ts +19 -0
- package/dist/lib/validator.d.ts.map +1 -0
- package/dist/lib/validator.js +32 -0
- package/dist/lib/validator.js.map +1 -0
- package/dist/lib/work-order/form.d.ts +40 -0
- package/dist/lib/work-order/form.d.ts.map +1 -0
- package/dist/lib/work-order/form.js +316 -0
- package/dist/lib/work-order/form.js.map +1 -0
- package/dist/lib/work-order/index.d.ts +20 -0
- package/dist/lib/work-order/index.d.ts.map +1 -0
- package/dist/lib/work-order/index.js +66 -0
- package/dist/lib/work-order/index.js.map +1 -0
- package/dist/middleware/api/audit.d.ts +9 -0
- package/dist/middleware/api/audit.d.ts.map +1 -0
- package/dist/middleware/api/audit.js +38 -0
- package/dist/middleware/api/audit.js.map +1 -0
- package/dist/middleware/api/auth.d.ts +29 -0
- package/dist/middleware/api/auth.d.ts.map +1 -0
- package/dist/middleware/api/auth.js +105 -0
- package/dist/middleware/api/auth.js.map +1 -0
- package/dist/middleware/api/console.d.ts +92 -0
- package/dist/middleware/api/console.d.ts.map +1 -0
- package/dist/middleware/api/console.js +446 -0
- package/dist/middleware/api/console.js.map +1 -0
- package/dist/middleware/api/errors.d.ts +48 -0
- package/dist/middleware/api/errors.d.ts.map +1 -0
- package/dist/middleware/api/errors.js +133 -0
- package/dist/middleware/api/errors.js.map +1 -0
- package/dist/middleware/api/idempotency.d.ts +23 -0
- package/dist/middleware/api/idempotency.d.ts.map +1 -0
- package/dist/middleware/api/idempotency.js +158 -0
- package/dist/middleware/api/idempotency.js.map +1 -0
- package/dist/middleware/api/keys.d.ts +14 -0
- package/dist/middleware/api/keys.d.ts.map +1 -0
- package/dist/middleware/api/keys.js +66 -0
- package/dist/middleware/api/keys.js.map +1 -0
- package/dist/middleware/api/membership.d.ts +32 -0
- package/dist/middleware/api/membership.d.ts.map +1 -0
- package/dist/middleware/api/membership.js +48 -0
- package/dist/middleware/api/membership.js.map +1 -0
- package/dist/middleware/api/oauth.d.ts +28 -0
- package/dist/middleware/api/oauth.d.ts.map +1 -0
- package/dist/middleware/api/oauth.js +109 -0
- package/dist/middleware/api/oauth.js.map +1 -0
- package/dist/middleware/api/rate-limit.d.ts +23 -0
- package/dist/middleware/api/rate-limit.d.ts.map +1 -0
- package/dist/middleware/api/rate-limit.js +70 -0
- package/dist/middleware/api/rate-limit.js.map +1 -0
- package/dist/middleware/api/types.d.ts +92 -0
- package/dist/middleware/api/types.d.ts.map +1 -0
- package/dist/middleware/api/types.js +7 -0
- package/dist/middleware/api/types.js.map +1 -0
- package/dist/middleware/api/wait.d.ts +21 -0
- package/dist/middleware/api/wait.d.ts.map +1 -0
- package/dist/middleware/api/wait.js +85 -0
- package/dist/middleware/api/wait.js.map +1 -0
- package/dist/middleware/capability.d.ts +32 -0
- package/dist/middleware/capability.d.ts.map +1 -0
- package/dist/middleware/capability.js +113 -0
- package/dist/middleware/capability.js.map +1 -0
- package/dist/middleware/database.d.ts +14 -0
- package/dist/middleware/database.d.ts.map +1 -0
- package/dist/middleware/database.js +18 -0
- package/dist/middleware/database.js.map +1 -0
- package/dist/middleware/error-handler.d.ts +13 -0
- package/dist/middleware/error-handler.d.ts.map +1 -0
- package/dist/middleware/error-handler.js +127 -0
- package/dist/middleware/error-handler.js.map +1 -0
- package/dist/middleware/observability.d.ts +32 -0
- package/dist/middleware/observability.d.ts.map +1 -0
- package/dist/middleware/observability.js +134 -0
- package/dist/middleware/observability.js.map +1 -0
- package/dist/middleware/rate-limit.d.ts +16 -0
- package/dist/middleware/rate-limit.d.ts.map +1 -0
- package/dist/middleware/rate-limit.js +56 -0
- package/dist/middleware/rate-limit.js.map +1 -0
- package/dist/middleware/ucan-auth.d.ts +39 -0
- package/dist/middleware/ucan-auth.d.ts.map +1 -0
- package/dist/middleware/ucan-auth.js +278 -0
- package/dist/middleware/ucan-auth.js.map +1 -0
- package/dist/networks.d.ts +34 -0
- package/dist/networks.d.ts.map +1 -0
- package/dist/networks.js +49 -0
- package/dist/networks.js.map +1 -0
- package/dist/oracle.d.ts +193 -0
- package/dist/oracle.d.ts.map +1 -0
- package/dist/oracle.js +245 -0
- package/dist/oracle.js.map +1 -0
- package/dist/routes/health.d.ts +16 -0
- package/dist/routes/health.d.ts.map +1 -0
- package/dist/routes/health.js +29 -0
- package/dist/routes/health.js.map +1 -0
- package/dist/routes/v1/admin.d.ts +18 -0
- package/dist/routes/v1/admin.d.ts.map +1 -0
- package/dist/routes/v1/admin.js +101 -0
- package/dist/routes/v1/admin.js.map +1 -0
- package/dist/routes/v1/api/admin-claims.d.ts +14 -0
- package/dist/routes/v1/api/admin-claims.d.ts.map +1 -0
- package/dist/routes/v1/api/admin-claims.js +82 -0
- package/dist/routes/v1/api/admin-claims.js.map +1 -0
- package/dist/routes/v1/api/admin-facilitator.d.ts +20 -0
- package/dist/routes/v1/api/admin-facilitator.d.ts.map +1 -0
- package/dist/routes/v1/api/admin-facilitator.js +64 -0
- package/dist/routes/v1/api/admin-facilitator.js.map +1 -0
- package/dist/routes/v1/api/admin.d.ts +9 -0
- package/dist/routes/v1/api/admin.d.ts.map +1 -0
- package/dist/routes/v1/api/admin.js +110 -0
- package/dist/routes/v1/api/admin.js.map +1 -0
- package/dist/routes/v1/api/audit.d.ts +8 -0
- package/dist/routes/v1/api/audit.d.ts.map +1 -0
- package/dist/routes/v1/api/audit.js +56 -0
- package/dist/routes/v1/api/audit.js.map +1 -0
- package/dist/routes/v1/api/batch.d.ts +17 -0
- package/dist/routes/v1/api/batch.d.ts.map +1 -0
- package/dist/routes/v1/api/batch.js +192 -0
- package/dist/routes/v1/api/batch.js.map +1 -0
- package/dist/routes/v1/api/claims-read.d.ts +43 -0
- package/dist/routes/v1/api/claims-read.d.ts.map +1 -0
- package/dist/routes/v1/api/claims-read.js +123 -0
- package/dist/routes/v1/api/claims-read.js.map +1 -0
- package/dist/routes/v1/api/claims.d.ts +131 -0
- package/dist/routes/v1/api/claims.d.ts.map +1 -0
- package/dist/routes/v1/api/claims.js +407 -0
- package/dist/routes/v1/api/claims.js.map +1 -0
- package/dist/routes/v1/api/collections-link.d.ts +14 -0
- package/dist/routes/v1/api/collections-link.d.ts.map +1 -0
- package/dist/routes/v1/api/collections-link.js +97 -0
- package/dist/routes/v1/api/collections-link.js.map +1 -0
- package/dist/routes/v1/api/export.d.ts +48 -0
- package/dist/routes/v1/api/export.d.ts.map +1 -0
- package/dist/routes/v1/api/export.js +251 -0
- package/dist/routes/v1/api/export.js.map +1 -0
- package/dist/routes/v1/api/index.d.ts +16 -0
- package/dist/routes/v1/api/index.d.ts.map +1 -0
- package/dist/routes/v1/api/index.js +68 -0
- package/dist/routes/v1/api/index.js.map +1 -0
- package/dist/routes/v1/api/keys.d.ts +9 -0
- package/dist/routes/v1/api/keys.d.ts.map +1 -0
- package/dist/routes/v1/api/keys.js +95 -0
- package/dist/routes/v1/api/keys.js.map +1 -0
- package/dist/routes/v1/api/me.d.ts +21 -0
- package/dist/routes/v1/api/me.d.ts.map +1 -0
- package/dist/routes/v1/api/me.js +122 -0
- package/dist/routes/v1/api/me.js.map +1 -0
- package/dist/routes/v1/api/members.d.ts +17 -0
- package/dist/routes/v1/api/members.d.ts.map +1 -0
- package/dist/routes/v1/api/members.js +406 -0
- package/dist/routes/v1/api/members.js.map +1 -0
- package/dist/routes/v1/api/meta.d.ts +12 -0
- package/dist/routes/v1/api/meta.d.ts.map +1 -0
- package/dist/routes/v1/api/meta.js +59 -0
- package/dist/routes/v1/api/meta.js.map +1 -0
- package/dist/routes/v1/api/openapi.gen.d.ts +2 -0
- package/dist/routes/v1/api/openapi.gen.d.ts.map +1 -0
- package/dist/routes/v1/api/openapi.gen.js +7 -0
- package/dist/routes/v1/api/openapi.gen.js.map +1 -0
- package/dist/routes/v1/api/protocols.d.ts +22 -0
- package/dist/routes/v1/api/protocols.d.ts.map +1 -0
- package/dist/routes/v1/api/protocols.js +153 -0
- package/dist/routes/v1/api/protocols.js.map +1 -0
- package/dist/routes/v1/api/review-billing.d.ts +18 -0
- package/dist/routes/v1/api/review-billing.d.ts.map +1 -0
- package/dist/routes/v1/api/review-billing.js +196 -0
- package/dist/routes/v1/api/review-billing.js.map +1 -0
- package/dist/routes/v1/api/review.d.ts +30 -0
- package/dist/routes/v1/api/review.d.ts.map +1 -0
- package/dist/routes/v1/api/review.js +302 -0
- package/dist/routes/v1/api/review.js.map +1 -0
- package/dist/routes/v1/api/sources.d.ts +10 -0
- package/dist/routes/v1/api/sources.d.ts.map +1 -0
- package/dist/routes/v1/api/sources.js +293 -0
- package/dist/routes/v1/api/sources.js.map +1 -0
- package/dist/routes/v1/api/uploads.d.ts +37 -0
- package/dist/routes/v1/api/uploads.d.ts.map +1 -0
- package/dist/routes/v1/api/uploads.js +414 -0
- package/dist/routes/v1/api/uploads.js.map +1 -0
- package/dist/routes/v1/api/views.d.ts +18 -0
- package/dist/routes/v1/api/views.d.ts.map +1 -0
- package/dist/routes/v1/api/views.js +95 -0
- package/dist/routes/v1/api/views.js.map +1 -0
- package/dist/routes/v1/api/webhooks.d.ts +14 -0
- package/dist/routes/v1/api/webhooks.d.ts.map +1 -0
- package/dist/routes/v1/api/webhooks.js +282 -0
- package/dist/routes/v1/api/webhooks.js.map +1 -0
- package/dist/routes/v1/api/work-orders.d.ts +45 -0
- package/dist/routes/v1/api/work-orders.d.ts.map +1 -0
- package/dist/routes/v1/api/work-orders.js +171 -0
- package/dist/routes/v1/api/work-orders.js.map +1 -0
- package/dist/routes/v1/claims.d.ts +21 -0
- package/dist/routes/v1/claims.d.ts.map +1 -0
- package/dist/routes/v1/claims.js +153 -0
- package/dist/routes/v1/claims.js.map +1 -0
- package/dist/routes/v1/collections.d.ts +45 -0
- package/dist/routes/v1/collections.d.ts.map +1 -0
- package/dist/routes/v1/collections.js +201 -0
- package/dist/routes/v1/collections.js.map +1 -0
- package/dist/routes/v1/index.d.ts +13 -0
- package/dist/routes/v1/index.d.ts.map +1 -0
- package/dist/routes/v1/index.js +41 -0
- package/dist/routes/v1/index.js.map +1 -0
- package/dist/routes/v1/info.d.ts +14 -0
- package/dist/routes/v1/info.d.ts.map +1 -0
- package/dist/routes/v1/info.js +75 -0
- package/dist/routes/v1/info.js.map +1 -0
- package/dist/routes/v1/mcp/index.d.ts +33 -0
- package/dist/routes/v1/mcp/index.d.ts.map +1 -0
- package/dist/routes/v1/mcp/index.js +252 -0
- package/dist/routes/v1/mcp/index.js.map +1 -0
- package/dist/routes/v1/mcp/oauth.d.ts +27 -0
- package/dist/routes/v1/mcp/oauth.d.ts.map +1 -0
- package/dist/routes/v1/mcp/oauth.js +500 -0
- package/dist/routes/v1/mcp/oauth.js.map +1 -0
- package/dist/routes/v1/mcp/tools.d.ts +71 -0
- package/dist/routes/v1/mcp/tools.d.ts.map +1 -0
- package/dist/routes/v1/mcp/tools.js +432 -0
- package/dist/routes/v1/mcp/tools.js.map +1 -0
- package/dist/routes/v1/mcp/ui.d.ts +45 -0
- package/dist/routes/v1/mcp/ui.d.ts.map +1 -0
- package/dist/routes/v1/mcp/ui.js +454 -0
- package/dist/routes/v1/mcp/ui.js.map +1 -0
- package/dist/routes/v1/oauth.d.ts +29 -0
- package/dist/routes/v1/oauth.d.ts.map +1 -0
- package/dist/routes/v1/oauth.js +256 -0
- package/dist/routes/v1/oauth.js.map +1 -0
- package/dist/routes/v1/reviewers.d.ts +22 -0
- package/dist/routes/v1/reviewers.d.ts.map +1 -0
- package/dist/routes/v1/reviewers.js +165 -0
- package/dist/routes/v1/reviewers.js.map +1 -0
- package/dist/routes/v1/reviews.d.ts +38 -0
- package/dist/routes/v1/reviews.d.ts.map +1 -0
- package/dist/routes/v1/reviews.js +234 -0
- package/dist/routes/v1/reviews.js.map +1 -0
- package/dist/routes/v1/shared.d.ts +586 -0
- package/dist/routes/v1/shared.d.ts.map +1 -0
- package/dist/routes/v1/shared.js +229 -0
- package/dist/routes/v1/shared.js.map +1 -0
- package/dist/routes/well-known.d.ts +15 -0
- package/dist/routes/well-known.d.ts.map +1 -0
- package/dist/routes/well-known.js +35 -0
- package/dist/routes/well-known.js.map +1 -0
- package/dist/runtime.d.ts +100 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +144 -0
- package/dist/runtime.js.map +1 -0
- package/dist/testing/fake-tools.d.ts +104 -0
- package/dist/testing/fake-tools.d.ts.map +1 -0
- package/dist/testing/fake-tools.js +213 -0
- package/dist/testing/fake-tools.js.map +1 -0
- package/dist/testing/index.d.ts +54 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +104 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/samples.d.ts +70 -0
- package/dist/testing/samples.d.ts.map +1 -0
- package/dist/testing/samples.js +92 -0
- package/dist/testing/samples.js.map +1 -0
- package/dist/workflows/claim-ingest.d.ts +250 -0
- package/dist/workflows/claim-ingest.d.ts.map +1 -0
- package/dist/workflows/claim-ingest.js +1020 -0
- package/dist/workflows/claim-ingest.js.map +1 -0
- package/dist/workflows/claim-source.d.ts +25 -0
- package/dist/workflows/claim-source.d.ts.map +1 -0
- package/dist/workflows/claim-source.js +107 -0
- package/dist/workflows/claim-source.js.map +1 -0
- package/dist/workflows/review-complete.d.ts +82 -0
- package/dist/workflows/review-complete.d.ts.map +1 -0
- package/dist/workflows/review-complete.js +455 -0
- package/dist/workflows/review-complete.js.map +1 -0
- package/dist/workflows/steps.d.ts +125 -0
- package/dist/workflows/steps.d.ts.map +1 -0
- package/dist/workflows/steps.js +325 -0
- package/dist/workflows/steps.js.map +1 -0
- package/docs/api.md +2595 -0
- package/docs/guide.md +1525 -0
- package/migrations/0000_init.sql +108 -0
- package/migrations/0001_review_attestation.sql +1 -0
- package/migrations/0002_decisions_facts.sql +1 -0
- package/migrations/0003_api_lane.sql +171 -0
- package/migrations/0004_api_v1_1.sql +19 -0
- package/migrations/0005_member_notify.sql +3 -0
- package/migrations/0006_source_collections.sql +16 -0
- package/migrations/0007_api_settlement.sql +27 -0
- package/migrations/0008_review_extend.sql +1 -0
- package/migrations/0009_card_refunds.sql +4 -0
- package/migrations/0010_even_scorpion.sql +16 -0
- package/migrations/0011_mcp_oauth.sql +27 -0
- package/migrations/0012_mcp_standing.sql +21 -0
- package/migrations/0013_unknown_krista_starr.sql +2 -0
- package/migrations/0014_last_carnage.sql +14 -0
- package/migrations/0015_company_authority.sql +26 -0
- package/migrations/0016_owner_only_links.sql +6 -0
- package/migrations/0017_organisations.sql +35 -0
- package/migrations/0018_remove_app_signed.sql +4 -0
- package/migrations/0019_submitted_via.sql +2 -0
- package/migrations/0020_drop_decision_to_pay.sql +4 -0
- package/migrations/0021_manual_erase.sql +25 -0
- package/migrations/0022_errored_facts.sql +1 -0
- package/migrations/0023_review_billing.sql +20 -0
- package/migrations/0024_pending_task_details.sql +1 -0
- package/migrations/meta/0000_snapshot.json +707 -0
- package/migrations/meta/0001_snapshot.json +714 -0
- package/migrations/meta/0002_snapshot.json +721 -0
- package/migrations/meta/0003_snapshot.json +1845 -0
- package/migrations/meta/0004_snapshot.json +1969 -0
- package/migrations/meta/0005_snapshot.json +1991 -0
- package/migrations/meta/0006_snapshot.json +2097 -0
- package/migrations/meta/0007_snapshot.json +2128 -0
- package/migrations/meta/0008_snapshot.json +2133 -0
- package/migrations/meta/0009_snapshot.json +2161 -0
- package/migrations/meta/0010_snapshot.json +2265 -0
- package/migrations/meta/0011_snapshot.json +2448 -0
- package/migrations/meta/0012_snapshot.json +2577 -0
- package/migrations/meta/0013_snapshot.json +2594 -0
- package/migrations/meta/0014_snapshot.json +2602 -0
- package/migrations/meta/0015_snapshot.json +2778 -0
- package/migrations/meta/0016_snapshot.json +2778 -0
- package/migrations/meta/0017_snapshot.json +2792 -0
- package/migrations/meta/0018_snapshot.json +2778 -0
- package/migrations/meta/0019_snapshot.json +2792 -0
- package/migrations/meta/0020_snapshot.json +2785 -0
- package/migrations/meta/0021_snapshot.json +2762 -0
- package/migrations/meta/0022_snapshot.json +2769 -0
- package/migrations/meta/0023_snapshot.json +2900 -0
- package/migrations/meta/0024_snapshot.json +2907 -0
- package/migrations/meta/_journal.json +181 -0
- package/openapi/decision-api.yaml +12204 -0
- package/package.json +121 -4
- package/skills/README.md +19 -0
- package/skills/add-openhands-support/SKILL.md +113 -0
- package/skills/create-collection/SKILL.md +199 -0
- package/skills/create-collection/reference/claims-stack.md +106 -0
- package/skills/create-collection/reference/collection.md +111 -0
- package/skills/create-oracle/SKILL.md +400 -0
- package/skills/create-rubric/SKILL.md +130 -0
- package/skills/create-rubric/reference/format-cheatsheet.md +186 -0
- package/skills/create-rubric/templates/claim-form.example.json +60 -0
- package/skills/decision-api-client/SKILL.md +236 -0
- package/skills/decision-api-oracle/SKILL.md +336 -0
- package/skills/publish-protocol/SKILL.md +151 -0
- package/skills/publish-protocol/reference/publishing.md +116 -0
- package/skills/reference/engine-contract.md +222 -0
- package/skills/write-facts/SKILL.md +221 -0
- package/skills/write-facts/reference/examples/http-vendor.ts +88 -0
- package/skills/write-facts/reference/examples/price-matches-agreement.ts +67 -0
- package/skills/write-facts/reference/facts-api.md +232 -0
- package/templates/project/.dev.vars.example +93 -0
- package/templates/project/.editorconfig +9 -0
- package/templates/project/CLAUDE.md +45 -0
- package/templates/project/README.md +199 -0
- package/templates/project/biome.json +37 -0
- package/templates/project/gitignore +29 -0
- package/templates/project/package.json +32 -0
- package/templates/project/src/facts/index.ts +19 -0
- package/templates/project/src/index.ts +25 -0
- package/templates/project/test/api-lane.test.ts +57 -0
- package/templates/project/test/facts.test.ts +14 -0
- package/templates/project/tsconfig.json +25 -0
- package/templates/project/vitest.config.ts +13 -0
- package/templates/project/wrangler.jsonc +446 -0
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The API lane's notify (Go Prod §7.1 `after.notify`, §5): what the claim's CURRENT state owes its
|
|
3
|
+
* timeline — `facts_produced` + `decided`, `review_required` (with the tasks as asked), `folded`,
|
|
4
|
+
* `unusable`, `failed` — and the `claim.*` webhook each is announced as (webhooks.ts). Read from the
|
|
5
|
+
* DB, never told by the caller, so the one function serves the
|
|
6
|
+
* ingest's notify step, the fold's, and the terminal catch; event ids are derived from what the
|
|
7
|
+
* event is about (ids.ts), so calling it again after a retry writes nothing new. A claim that
|
|
8
|
+
* waits for review also tells its reviewers (reviewers.ts: email + the source's Matrix room).
|
|
9
|
+
*
|
|
10
|
+
* And the one event no step owes: `review_expired` (`announceExpiredReviews`, the hourly pass) — a
|
|
11
|
+
* paid claim whose review closed unanswered at its `answerBy`.
|
|
12
|
+
*/
|
|
13
|
+
import { eq } from "drizzle-orm";
|
|
14
|
+
import { apiClaims, claimIngests, claimReviews, decisions, matrixDeliveries, } from "../../db/schema.js";
|
|
15
|
+
import { createEngineClient } from "../engine/client.js";
|
|
16
|
+
import { isManifestUnusable } from "../engine/types.js";
|
|
17
|
+
import { reviewTasks } from "../matrix/deliver.js";
|
|
18
|
+
import { parseApiScopeId } from "./ids.js";
|
|
19
|
+
import { claimErrorCode, claimRecord, decisionFailure } from "./record.js";
|
|
20
|
+
import { expiredReviews, notifyReviewers } from "./reviewers.js";
|
|
21
|
+
import { recordEvents } from "./timeline.js";
|
|
22
|
+
import { deliverAll, enqueueWebhook } from "./webhooks.js";
|
|
23
|
+
/** Timeline event type → the App. B webhook it is announced as (the same event id on both). */
|
|
24
|
+
const CLAIM_WEBHOOKS = {
|
|
25
|
+
accepted: "claim.accepted",
|
|
26
|
+
decided: "claim.decided",
|
|
27
|
+
review_required: "claim.review_required",
|
|
28
|
+
folded: "claim.folded",
|
|
29
|
+
unusable: "claim.unusable",
|
|
30
|
+
failed: "claim.failed",
|
|
31
|
+
review_expired: "claim.review_expired",
|
|
32
|
+
};
|
|
33
|
+
export async function notifyApiClaim(db, deps, claimId) {
|
|
34
|
+
const events = await claimStateEvents(db, deps, claimId);
|
|
35
|
+
const keys = await announce(db, events);
|
|
36
|
+
const last = events.at(-1);
|
|
37
|
+
// The first attempt inline — the §1.4 "within 60 s" is the notify step, not the next cron tick.
|
|
38
|
+
// Each attempt is its own ledger write, so a retried step re-posts only what is still owed.
|
|
39
|
+
await deliverAll({ db, config: deps.config, logger: deps.logger, metrics: deps.metrics, cache: deps.cache }, keys);
|
|
40
|
+
// The people too, not only the system (§10.1): fail-soft, and idempotent per (claim, member).
|
|
41
|
+
if (last?.type === "review_required")
|
|
42
|
+
await notifyReviewers({ ...deps, db }, claimId);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* A paid claim whose review passed its `answerBy` unanswered is closed unpaid: its record keeps the
|
|
46
|
+
* engine's `pending_review` (nothing was decided), so integrators are told instead — ONCE, a
|
|
47
|
+
* `review_expired` timeline row (`answerBy` only) announced as `claim.review_expired`. Stamped at
|
|
48
|
+
* the deadline, so a re-run lands on the same event; the `notice_review_expired:` marker, written
|
|
49
|
+
* last, is what keeps the pass off the claim. The webhook's first attempt is the minute tick's.
|
|
50
|
+
* The count announced.
|
|
51
|
+
*/
|
|
52
|
+
export async function announceExpiredReviews(db, now = new Date()) {
|
|
53
|
+
const claims = await expiredReviews(db, now);
|
|
54
|
+
for (const c of claims) {
|
|
55
|
+
const answerBy = c.answerBy;
|
|
56
|
+
await announce(db, [
|
|
57
|
+
{
|
|
58
|
+
key: `${c.claimId}:review_expired:`,
|
|
59
|
+
at: answerBy,
|
|
60
|
+
sourceId: c.sourceId,
|
|
61
|
+
claimId: c.claimId,
|
|
62
|
+
type: "review_expired",
|
|
63
|
+
data: { answerBy: answerBy.toISOString() },
|
|
64
|
+
},
|
|
65
|
+
]);
|
|
66
|
+
await db
|
|
67
|
+
.insert(matrixDeliveries)
|
|
68
|
+
.values({
|
|
69
|
+
dedupeKey: `notice_review_expired:${c.claimId}`,
|
|
70
|
+
kind: "notice_review_expired",
|
|
71
|
+
claimId: c.claimId,
|
|
72
|
+
sourceId: c.sourceId,
|
|
73
|
+
status: "sent",
|
|
74
|
+
attempts: 1,
|
|
75
|
+
})
|
|
76
|
+
.onConflictDoNothing();
|
|
77
|
+
}
|
|
78
|
+
return claims.length;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Write the claim's timeline events and enqueue the `claim.*` webhook each one is announced as,
|
|
82
|
+
* with the §4.4 record as it stands now as `data`; the delivery keys. The webhook's event id IS the
|
|
83
|
+
* timeline row's, so `Oracle-Event-Id` is stable across every retry and replay.
|
|
84
|
+
*/
|
|
85
|
+
export async function announce(db, events) {
|
|
86
|
+
const ids = await recordEvents(db, events);
|
|
87
|
+
const keys = [];
|
|
88
|
+
for (const [i, e] of events.entries()) {
|
|
89
|
+
const type = CLAIM_WEBHOOKS[e.type];
|
|
90
|
+
if (!type || !e.claimId)
|
|
91
|
+
continue;
|
|
92
|
+
const [record, claim] = await Promise.all([
|
|
93
|
+
claimRecord(db, e.claimId),
|
|
94
|
+
db.query.apiClaims.findFirst({
|
|
95
|
+
columns: { webhookUrl: true },
|
|
96
|
+
where: eq(apiClaims.claimId, e.claimId),
|
|
97
|
+
}),
|
|
98
|
+
]);
|
|
99
|
+
if (!record)
|
|
100
|
+
continue;
|
|
101
|
+
keys.push(...(await enqueueWebhook(db, {
|
|
102
|
+
eventId: ids[i],
|
|
103
|
+
type,
|
|
104
|
+
createdAt: e.at,
|
|
105
|
+
sourceId: e.sourceId,
|
|
106
|
+
claimId: e.claimId,
|
|
107
|
+
data: record,
|
|
108
|
+
claimWebhookUrl: claim?.webhookUrl ?? null,
|
|
109
|
+
})));
|
|
110
|
+
}
|
|
111
|
+
return keys;
|
|
112
|
+
}
|
|
113
|
+
async function claimStateEvents(db, deps, claimId) {
|
|
114
|
+
const [claim, ingest, decision, review] = await Promise.all([
|
|
115
|
+
db.query.apiClaims.findFirst({
|
|
116
|
+
columns: { sourceId: true, protocolDid: true, receivedAt: true, via: true },
|
|
117
|
+
where: eq(apiClaims.claimId, claimId),
|
|
118
|
+
}),
|
|
119
|
+
db.query.claimIngests.findFirst({ where: eq(claimIngests.claimId, claimId) }),
|
|
120
|
+
db.query.decisions.findFirst({ where: eq(decisions.claimId, claimId) }),
|
|
121
|
+
db.query.claimReviews.findFirst({ where: eq(claimReviews.claimId, claimId) }),
|
|
122
|
+
]);
|
|
123
|
+
if (!claim || !ingest)
|
|
124
|
+
return [];
|
|
125
|
+
const event = (type, key, at, data) => ({
|
|
126
|
+
key: `${claimId}:${type}:${key}`,
|
|
127
|
+
at,
|
|
128
|
+
sourceId: claim.sourceId,
|
|
129
|
+
claimId,
|
|
130
|
+
type,
|
|
131
|
+
data,
|
|
132
|
+
});
|
|
133
|
+
// Paid for and running (§5): the first thing every state owes, stamped when it was received.
|
|
134
|
+
const accepted = event("accepted", "", claim.receivedAt, {
|
|
135
|
+
protocolDid: claim.protocolDid,
|
|
136
|
+
...(claim.via ? { via: claim.via } : {}),
|
|
137
|
+
});
|
|
138
|
+
if (!decision) {
|
|
139
|
+
// The ledger's terminal failure with nothing recorded (the engine refused the facts, a body
|
|
140
|
+
// that no longer matches, the retry ladder ran out) — the code, never the stored message.
|
|
141
|
+
if (ingest.status !== "failed")
|
|
142
|
+
return [accepted];
|
|
143
|
+
const code = claimErrorCode(ingest.error, null);
|
|
144
|
+
return [accepted, event("failed", code, ingest.updatedAt, { code })];
|
|
145
|
+
}
|
|
146
|
+
const failed = decisionFailure(decision.status);
|
|
147
|
+
if (failed) {
|
|
148
|
+
return [accepted, event("failed", failed, decision.createdAt, { code: failed })];
|
|
149
|
+
}
|
|
150
|
+
const events = [accepted];
|
|
151
|
+
// Names only — the values are the answers' shadow and never leave the decision row. Stamped a
|
|
152
|
+
// millisecond before the decision it fed: ULID ids sort by time, and the timeline reads by id.
|
|
153
|
+
if (decision.facts) {
|
|
154
|
+
events.push(event("facts_produced", decision.factsDigest ?? "", new Date(decision.createdAt.getTime() - 1), {
|
|
155
|
+
ext: Object.keys(decision.facts.ext),
|
|
156
|
+
ai: Object.keys(decision.facts.ai),
|
|
157
|
+
...factCost(decision.facts),
|
|
158
|
+
}));
|
|
159
|
+
}
|
|
160
|
+
const summary = {
|
|
161
|
+
status: decision.status,
|
|
162
|
+
verdict: decision.verdict,
|
|
163
|
+
resultDigest: decision.resultDigest,
|
|
164
|
+
receiptCid: decision.receiptCid,
|
|
165
|
+
};
|
|
166
|
+
const folded = review?.foldedAt ?? null;
|
|
167
|
+
if (decision.status === "pending_review") {
|
|
168
|
+
events.push(event("review_required", decision.resultDigest ?? "", decision.createdAt, {
|
|
169
|
+
...summary,
|
|
170
|
+
pendingTasks: await pendingTasks(deps, decision),
|
|
171
|
+
}));
|
|
172
|
+
}
|
|
173
|
+
else if (decision.status === "unusable") {
|
|
174
|
+
events.push(event("unusable", decision.resultDigest ?? "", folded ?? decision.createdAt, {
|
|
175
|
+
...summary,
|
|
176
|
+
issues: decision.decision?.reasons ?? decision.explanation,
|
|
177
|
+
}));
|
|
178
|
+
}
|
|
179
|
+
else if (folded) {
|
|
180
|
+
events.push(event("folded", decision.resultDigest ?? "", folded, summary));
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
events.push(event("decided", decision.resultDigest ?? "", decision.createdAt, summary));
|
|
184
|
+
}
|
|
185
|
+
return events;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* The engine's pending task ids × the manifest's prompts and answer shapes, stored on the event at
|
|
189
|
+
* decision time so a later manifest change never rewrites what the reviewer was asked (§10).
|
|
190
|
+
*/
|
|
191
|
+
async function pendingTasks(deps, decision) {
|
|
192
|
+
const ids = decision.decision?.pendingTasks ?? [];
|
|
193
|
+
const scope = parseApiScopeId(decision.collectionId);
|
|
194
|
+
if (ids.length === 0 || !scope)
|
|
195
|
+
return reviewTasks(ids, undefined);
|
|
196
|
+
const engine = createEngineClient({
|
|
197
|
+
config: deps.config,
|
|
198
|
+
logger: deps.logger,
|
|
199
|
+
trace: deps.trace,
|
|
200
|
+
cache: deps.cache,
|
|
201
|
+
});
|
|
202
|
+
// The notify step is fail-soft: an engine blip here must not cost the customer their
|
|
203
|
+
// `review_required` altogether, so the bare task ids stand in (the Matrix lane's fallback).
|
|
204
|
+
const manifest = await engine.getManifest(scope.protocolDid).catch((err) => {
|
|
205
|
+
deps.logger.warn("api.review-tasks-unread", { claimId: decision.claimId, detail: String(err) });
|
|
206
|
+
return null;
|
|
207
|
+
});
|
|
208
|
+
return reviewTasks(ids, !manifest || isManifestUnusable(manifest) ? undefined : manifest.review);
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* What producing the facts cost (§9: per claim on its timeline, summed per protocol to price it):
|
|
212
|
+
* each fact's wall time (`elapsedMs`, retries and backoff included), and the AI spend OpenRouter
|
|
213
|
+
* reported, as integer micro-USD (no floats in money). Read off the transcripts frozen on the
|
|
214
|
+
* decision — timings and usage, never a value. Nothing when no fact kept a transcript (an erased
|
|
215
|
+
* claim's are stripped), so a missing cost never reads as a real zero. The same-event judge's spend
|
|
216
|
+
* lives on the `unique` fact, which the decision row does not keep: not counted here.
|
|
217
|
+
*/
|
|
218
|
+
export function factCost(facts) {
|
|
219
|
+
const durationsMs = {};
|
|
220
|
+
let costUsd = 0;
|
|
221
|
+
let seen = false;
|
|
222
|
+
for (const [plane, byName] of [
|
|
223
|
+
["ext", facts.ext],
|
|
224
|
+
["ai", facts.ai],
|
|
225
|
+
]) {
|
|
226
|
+
for (const [name, fact] of Object.entries(byName)) {
|
|
227
|
+
const transcript = fact?.transcript;
|
|
228
|
+
if (!transcript)
|
|
229
|
+
continue;
|
|
230
|
+
seen = true;
|
|
231
|
+
if (typeof transcript.elapsedMs === "number") {
|
|
232
|
+
durationsMs[`${plane}.${name}`] = transcript.elapsedMs;
|
|
233
|
+
}
|
|
234
|
+
if (typeof transcript.usage?.costUsd === "number")
|
|
235
|
+
costUsd += transcript.usage.costUsd;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
return seen ? { durationsMs, costMicroUsd: Math.round(costUsd * 1_000_000) } : {};
|
|
239
|
+
}
|
|
240
|
+
//# sourceMappingURL=notify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notify.js","sourceRoot":"","sources":["../../../src/lib/api-lane/notify.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pausing an API source (Go Prod §5): new submits answer `503 SOURCE_PAUSED { reason }`, in-flight
|
|
3
|
+
* claims finish. The API lane's twin of `pauseCollection` (workflows/steps.ts): the latest reason is
|
|
4
|
+
* always recorded, but only a real active → paused transition is announced — on the source's
|
|
5
|
+
* timeline and as the `source.paused` webhook (sent by the retry tick) — so a retried step tells
|
|
6
|
+
* nobody twice.
|
|
7
|
+
*/
|
|
8
|
+
import { type SourcePausedReason } from "../../contracts/index.js";
|
|
9
|
+
import type { Database } from "../../db/client.js";
|
|
10
|
+
import type { Logger } from "../logger.js";
|
|
11
|
+
import { type AlertDeps } from "../sentry.js";
|
|
12
|
+
/**
|
|
13
|
+
* Pause the source; true iff this call changed it (paused it, or changed why). The announcement is
|
|
14
|
+
* keyed by the row's own `updatedAt`, not the clock, and made whenever the source IS paused — so a
|
|
15
|
+
* step that died between the UPDATE and the enqueue re-announces the same event on its retry
|
|
16
|
+
* instead of losing it, and a new reason is a new event.
|
|
17
|
+
*/
|
|
18
|
+
export declare function pauseSource(db: Database, deps: AlertDeps, sourceId: string, reason: SourcePausedReason, issues?: unknown,
|
|
19
|
+
/** False for a caller that pages once for many sources (`pauseForEngineCredits`). */
|
|
20
|
+
alert?: boolean): Promise<boolean>;
|
|
21
|
+
/**
|
|
22
|
+
* `pauseSource`'s announcement half, for a source some UPDATE already paused: the timeline event and
|
|
23
|
+
* the `source.paused` webhook whenever the source IS paused (keyed by its `updatedAt`), and — when
|
|
24
|
+
* `changed` — the log line and, unless `alert` is false, the page. Returns `changed` as applied.
|
|
25
|
+
* `pauseForEngineCredits` (workflows/steps.ts) calls it for the ids its one bulk UPDATE returned.
|
|
26
|
+
*/
|
|
27
|
+
export declare function announceSourcePaused(db: Database, deps: AlertDeps, sourceId: string, reason: SourcePausedReason, issues: unknown, changed: boolean, alert?: boolean): Promise<boolean>;
|
|
28
|
+
/**
|
|
29
|
+
* The engine-credits resume for sources (§7.3 "resume"): the engine's `402` paused every active
|
|
30
|
+
* source; once its `/me` says `billingStatus: ok`, every source paused for THAT reason — never a
|
|
31
|
+
* rubric or an operator pause — comes back, and each announces `source.resumed` (keyed by the
|
|
32
|
+
* row's `updatedAt`, like the pause). The source ids resumed.
|
|
33
|
+
*/
|
|
34
|
+
export declare function resumeCreditPausedSources(db: Database, logger: Logger): Promise<string[]>;
|
|
35
|
+
/**
|
|
36
|
+
* The operator's resume (`POST /v1/api/admin/sources/:id/resume`): lifts ANY pause, the ones only a
|
|
37
|
+
* person can lift included. True iff this call changed it; only that transition is announced — an
|
|
38
|
+
* active source has nothing to resume, and the route's `Idempotency-Key` covers a client's retry.
|
|
39
|
+
*/
|
|
40
|
+
export declare function resumeSource(db: Database, logger: Logger, sourceId: string): Promise<boolean>;
|
|
41
|
+
//# sourceMappingURL=pause.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pause.d.ts","sourceRoot":"","sources":["../../../src/lib/api-lane/pause.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAmB,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC3E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,KAAK,SAAS,EAAe,MAAM,WAAW,CAAC;AAIxD;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,EAAE,EAAE,QAAQ,EACZ,IAAI,EAAE,SAAS,EACf,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,kBAAkB,EAC1B,MAAM,CAAC,EAAE,OAAO;AAChB,qFAAqF;AACrF,KAAK,UAAO,GACX,OAAO,CAAC,OAAO,CAAC,CA2BlB;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,QAAQ,EACZ,IAAI,EAAE,SAAS,EACf,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,kBAAkB,EAC1B,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,OAAO,EAChB,KAAK,UAAO,GACX,OAAO,CAAC,OAAO,CAAC,CA0ClB;AAED;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAa/F;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAChC,EAAE,EAAE,QAAQ,EACZ,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,OAAO,CAAC,CAkBlB"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pausing an API source (Go Prod §5): new submits answer `503 SOURCE_PAUSED { reason }`, in-flight
|
|
3
|
+
* claims finish. The API lane's twin of `pauseCollection` (workflows/steps.ts): the latest reason is
|
|
4
|
+
* always recorded, but only a real active → paused transition is announced — on the source's
|
|
5
|
+
* timeline and as the `source.paused` webhook (sent by the retry tick) — so a retried step tells
|
|
6
|
+
* nobody twice.
|
|
7
|
+
*/
|
|
8
|
+
import { and, eq, ne, notInArray } from "drizzle-orm";
|
|
9
|
+
import { SourceEventData } from "../../contracts/index.js";
|
|
10
|
+
import { apiSources } from "../../db/schema.js";
|
|
11
|
+
import { reportAlert } from "../sentry.js";
|
|
12
|
+
import { recordEvents } from "./timeline.js";
|
|
13
|
+
import { enqueueWebhook } from "./webhooks.js";
|
|
14
|
+
/**
|
|
15
|
+
* Pause the source; true iff this call changed it (paused it, or changed why). The announcement is
|
|
16
|
+
* keyed by the row's own `updatedAt`, not the clock, and made whenever the source IS paused — so a
|
|
17
|
+
* step that died between the UPDATE and the enqueue re-announces the same event on its retry
|
|
18
|
+
* instead of losing it, and a new reason is a new event.
|
|
19
|
+
*/
|
|
20
|
+
export async function pauseSource(db, deps, sourceId, reason, issues,
|
|
21
|
+
/** False for a caller that pages once for many sources (`pauseForEngineCredits`). */
|
|
22
|
+
alert = true) {
|
|
23
|
+
const where = eq(apiSources.sourceId, sourceId);
|
|
24
|
+
const [transition] = await db
|
|
25
|
+
.update(apiSources)
|
|
26
|
+
.set({ status: "paused", pausedReason: reason })
|
|
27
|
+
.where(and(where, eq(apiSources.status, "active")))
|
|
28
|
+
.returning({ sourceId: apiSources.sourceId });
|
|
29
|
+
// Already paused: record the latest reason — except that `engine-credits` never replaces a
|
|
30
|
+
// reason only a person can lift (a broken rubric, an operator's hand), or the credits cron's
|
|
31
|
+
// auto-resume would un-pause it.
|
|
32
|
+
const [changed] = transition
|
|
33
|
+
? [transition]
|
|
34
|
+
: await db
|
|
35
|
+
.update(apiSources)
|
|
36
|
+
.set({ pausedReason: reason })
|
|
37
|
+
.where(and(where, eq(apiSources.status, "paused"), ne(apiSources.pausedReason, reason), reason === "engine-credits"
|
|
38
|
+
? notInArray(apiSources.pausedReason, ["rubric-unusable", "operator"])
|
|
39
|
+
: undefined))
|
|
40
|
+
.returning({ sourceId: apiSources.sourceId });
|
|
41
|
+
return announceSourcePaused(db, deps, sourceId, reason, issues, !!changed, alert);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* `pauseSource`'s announcement half, for a source some UPDATE already paused: the timeline event and
|
|
45
|
+
* the `source.paused` webhook whenever the source IS paused (keyed by its `updatedAt`), and — when
|
|
46
|
+
* `changed` — the log line and, unless `alert` is false, the page. Returns `changed` as applied.
|
|
47
|
+
* `pauseForEngineCredits` (workflows/steps.ts) calls it for the ids its one bulk UPDATE returned.
|
|
48
|
+
*/
|
|
49
|
+
export async function announceSourcePaused(db, deps, sourceId, reason, issues, changed, alert = true) {
|
|
50
|
+
const row = await db.query.apiSources.findFirst({ where: eq(apiSources.sourceId, sourceId) });
|
|
51
|
+
if (row?.status !== "paused" || !row.pausedReason)
|
|
52
|
+
return false;
|
|
53
|
+
const at = row.updatedAt;
|
|
54
|
+
const [eventId] = await recordEvents(db, [
|
|
55
|
+
{
|
|
56
|
+
key: `${sourceId}:paused:${row.pausedReason}:${at.getTime()}`,
|
|
57
|
+
at,
|
|
58
|
+
sourceId,
|
|
59
|
+
claimId: null,
|
|
60
|
+
type: "source.paused",
|
|
61
|
+
data: { reason: row.pausedReason, ...(issues === undefined ? {} : { issues }) },
|
|
62
|
+
},
|
|
63
|
+
]);
|
|
64
|
+
// `source.paused` (App. B) — the engine's issues ride along only in the wire's shape.
|
|
65
|
+
const shaped = SourceEventData.shape.issues.safeParse(issues);
|
|
66
|
+
await enqueueWebhook(db, {
|
|
67
|
+
eventId: eventId,
|
|
68
|
+
type: "source.paused",
|
|
69
|
+
createdAt: at,
|
|
70
|
+
sourceId,
|
|
71
|
+
claimId: null,
|
|
72
|
+
data: {
|
|
73
|
+
sourceId,
|
|
74
|
+
status: "paused",
|
|
75
|
+
pausedReason: row.pausedReason,
|
|
76
|
+
...(shaped.success && shaped.data ? { issues: shaped.data } : {}),
|
|
77
|
+
},
|
|
78
|
+
});
|
|
79
|
+
if (changed) {
|
|
80
|
+
deps.logger.error("api.source-paused", { sourceId, reason, issues: issues ?? null });
|
|
81
|
+
// A paused source answers every submit 503 — a customer is down until someone acts.
|
|
82
|
+
if (alert) {
|
|
83
|
+
await reportAlert(deps, `api.source-paused.${reason}`, { sourceId, reason }, `api.source-paused.${reason}:${sourceId}`);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return changed;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* The engine-credits resume for sources (§7.3 "resume"): the engine's `402` paused every active
|
|
90
|
+
* source; once its `/me` says `billingStatus: ok`, every source paused for THAT reason — never a
|
|
91
|
+
* rubric or an operator pause — comes back, and each announces `source.resumed` (keyed by the
|
|
92
|
+
* row's `updatedAt`, like the pause). The source ids resumed.
|
|
93
|
+
*/
|
|
94
|
+
export async function resumeCreditPausedSources(db, logger) {
|
|
95
|
+
const rows = await db
|
|
96
|
+
.update(apiSources)
|
|
97
|
+
.set({ status: "active", pausedReason: null })
|
|
98
|
+
.where(and(eq(apiSources.status, "paused"), eq(apiSources.pausedReason, "engine-credits")))
|
|
99
|
+
.returning({ sourceId: apiSources.sourceId, updatedAt: apiSources.updatedAt });
|
|
100
|
+
for (const { sourceId, updatedAt } of rows) {
|
|
101
|
+
await announceResumed(db, sourceId, updatedAt, "engine-credits");
|
|
102
|
+
}
|
|
103
|
+
if (rows.length > 0) {
|
|
104
|
+
logger.info("api.sources-resumed", { sources: rows.map((r) => r.sourceId) });
|
|
105
|
+
}
|
|
106
|
+
return rows.map((r) => r.sourceId);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* The operator's resume (`POST /v1/api/admin/sources/:id/resume`): lifts ANY pause, the ones only a
|
|
110
|
+
* person can lift included. True iff this call changed it; only that transition is announced — an
|
|
111
|
+
* active source has nothing to resume, and the route's `Idempotency-Key` covers a client's retry.
|
|
112
|
+
*/
|
|
113
|
+
export async function resumeSource(db, logger, sourceId) {
|
|
114
|
+
const where = eq(apiSources.sourceId, sourceId);
|
|
115
|
+
// Read first: RETURNING shows the row after the UPDATE, and the event says which pause lifted.
|
|
116
|
+
const prior = await db.query.apiSources.findFirst({
|
|
117
|
+
columns: { status: true, pausedReason: true },
|
|
118
|
+
where,
|
|
119
|
+
});
|
|
120
|
+
if (prior?.status !== "paused")
|
|
121
|
+
return false;
|
|
122
|
+
const [row] = await db
|
|
123
|
+
.update(apiSources)
|
|
124
|
+
.set({ status: "active", pausedReason: null })
|
|
125
|
+
.where(and(where, eq(apiSources.status, "paused")))
|
|
126
|
+
.returning({ updatedAt: apiSources.updatedAt });
|
|
127
|
+
if (!row)
|
|
128
|
+
return false;
|
|
129
|
+
const reason = prior.pausedReason ?? "operator";
|
|
130
|
+
await announceResumed(db, sourceId, row.updatedAt, reason);
|
|
131
|
+
logger.info("api.source-resumed", { sourceId, reason });
|
|
132
|
+
return true;
|
|
133
|
+
}
|
|
134
|
+
/** `source.resumed` on the timeline and as the webhook, keyed by the row's `updatedAt`. */
|
|
135
|
+
async function announceResumed(db, sourceId, at, reason) {
|
|
136
|
+
const [eventId] = await recordEvents(db, [
|
|
137
|
+
{
|
|
138
|
+
key: `${sourceId}:resumed:${at.getTime()}`,
|
|
139
|
+
at,
|
|
140
|
+
sourceId,
|
|
141
|
+
claimId: null,
|
|
142
|
+
type: "source.resumed",
|
|
143
|
+
data: { reason },
|
|
144
|
+
},
|
|
145
|
+
]);
|
|
146
|
+
await enqueueWebhook(db, {
|
|
147
|
+
eventId: eventId,
|
|
148
|
+
type: "source.resumed",
|
|
149
|
+
createdAt: at,
|
|
150
|
+
sourceId,
|
|
151
|
+
claimId: null,
|
|
152
|
+
data: { sourceId, status: "active", pausedReason: null },
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=pause.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pause.js","sourceRoot":"","sources":["../../../src/lib/api-lane/pause.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The §4.4 claim record (Go Prod §4.4, §5, §10) — built ONE way for everyone who shows a claim: the
|
|
3
|
+
* `GET /v1/api/claims/:claimId` route, the sync 200, every `claim.*` webhook's `data`, the operator
|
|
4
|
+
* view and a source's linked collections. A second builder would drift, and the record is a
|
|
5
|
+
* published wire shape, so it is parsed with the contract's `ClaimRecord` before it leaves: a
|
|
6
|
+
* mismatch is a loud bug here, never a malformed response.
|
|
7
|
+
*
|
|
8
|
+
* Both lanes (contracts v1.2): an API claim is headed by its `api_claims` row; a chain claim (no
|
|
9
|
+
* such row, `claim_ingests.lane = chain`) by its ledger row and its watched collection's protocol.
|
|
10
|
+
* Everything after the head — status, decision, review, webhook, error — is the same mapping.
|
|
11
|
+
*
|
|
12
|
+
* NEVER the answers (§6.3): `api_claims.body` is not even read, and `error.message` is fixed text
|
|
13
|
+
* per code — the stored `claim_ingests.error` can echo a handler's or the engine's text, which can
|
|
14
|
+
* quote answer values.
|
|
15
|
+
*/
|
|
16
|
+
import { type ClaimErrorCode, ClaimRecord } from "../../contracts/api.js";
|
|
17
|
+
import type { Database } from "../../db/client.js";
|
|
18
|
+
import { type ApiClaim } from "../../db/schema.js";
|
|
19
|
+
/**
|
|
20
|
+
* The prefixes a deterministic failure's message starts with — written by the thrower (source.ts,
|
|
21
|
+
* the evaluate step), read back off `claim_ingests.error` by `claimErrorCode`. One list, so the two
|
|
22
|
+
* cannot drift.
|
|
23
|
+
*/
|
|
24
|
+
export declare const FAILURE: {
|
|
25
|
+
readonly bodyMismatch: "BODY_MISMATCH";
|
|
26
|
+
readonly bodyErased: "BODY_ERASED";
|
|
27
|
+
readonly contentMissing: "CONTENT_MISSING";
|
|
28
|
+
readonly uploadUnsupported: "UPLOAD_UNSUPPORTED";
|
|
29
|
+
readonly uploadMissing: "UPLOAD_MISSING";
|
|
30
|
+
readonly attachmentInvalid: "ATTACHMENT_INVALID";
|
|
31
|
+
readonly engineRejected: "Engine rejected the facts";
|
|
32
|
+
readonly engineConflict: "CONFLICT";
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* How long before the reservation runs out a paid review closes: after the answer, the fold and then
|
|
36
|
+
* the settle still have to reach the facilitator, and an unextended expiry is reckoned from our
|
|
37
|
+
* charge row's `createdAt`, written a moment AFTER the facilitator's verify started its clock.
|
|
38
|
+
*/
|
|
39
|
+
export declare const ANSWER_BY_MARGIN_MS: number;
|
|
40
|
+
/**
|
|
41
|
+
* A paid claim's review deadline — THE value the record, the reviewer view, the emails and the
|
|
42
|
+
* `REVIEW_EXPIRED` refusal all use: the reservation's expiry as payments reckons it, less the margin.
|
|
43
|
+
*/
|
|
44
|
+
export declare const answerByOf: (charge: {
|
|
45
|
+
createdAt: Date;
|
|
46
|
+
reservationExpiresAt: Date | null;
|
|
47
|
+
}) => Date;
|
|
48
|
+
/** One sentence per code — the only failure text a customer ever sees (see header). */
|
|
49
|
+
export declare const CLAIM_ERROR_MESSAGES: Record<ClaimErrorCode, string>;
|
|
50
|
+
export declare function claimRecord(db: Database, claimId: string, opts?: {
|
|
51
|
+
sourceId?: string;
|
|
52
|
+
}): Promise<ClaimRecord | null>;
|
|
53
|
+
/**
|
|
54
|
+
* The same record for many claims — a list page — in ONE read per table per 100 ids, never seven
|
|
55
|
+
* per claim. In the input order; an id that is neither an API claim nor a chain claim of a watched
|
|
56
|
+
* collection with a known protocol is skipped. `sourceId` stamps the chain claims of a page read
|
|
57
|
+
* through a source's linked collection (an API claim always carries its own).
|
|
58
|
+
*/
|
|
59
|
+
export declare function claimRecordsFor(db: Database, claimIds: readonly string[], opts?: {
|
|
60
|
+
sourceId?: string;
|
|
61
|
+
}): Promise<ClaimRecord[]>;
|
|
62
|
+
/** The two `api_claims` columns → `ClaimRecord.submittedVia`: a name always came with its flag
|
|
63
|
+
* (accept writes both), so the name alone says whether there is one. */
|
|
64
|
+
export declare const submittedViaOfRow: (row: Pick<ApiClaim, "submittedVia" | "submittedViaVerified">) => ClaimRecord["submittedVia"];
|
|
65
|
+
/**
|
|
66
|
+
* A `decisions` row that records why there is NO decision — the claim's failure, never a verdict:
|
|
67
|
+
* the facts lane's `invalid_facts`, or the engine refusing the content we sent (the oracle's side
|
|
68
|
+
* of the binding, so `engine_rejected`). Null for a row the engine decided.
|
|
69
|
+
*/
|
|
70
|
+
export declare function decisionFailure(status: string | null | undefined): ClaimErrorCode | null;
|
|
71
|
+
/**
|
|
72
|
+
* A failed claim's §5 code, read off the ledger's stored error by its known prefixes only — the one
|
|
73
|
+
* place it is decided, shared with the `failed` timeline event (notify.ts).
|
|
74
|
+
*/
|
|
75
|
+
export declare function claimErrorCode(ingestError: string | null, decisionStatus: string | null): ClaimErrorCode;
|
|
76
|
+
//# sourceMappingURL=record.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../../src/lib/api-lane/record.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EACL,KAAK,cAAc,EACnB,WAAW,EAKZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAEL,KAAK,QAAQ,EAcd,MAAM,iBAAiB,CAAC;AAKzB;;;;GAIG;AACH,eAAO,MAAM,OAAO;aAClB,YAAY,EAAE,eAAe;aAC7B,UAAU,EAAE,aAAa;aACzB,cAAc,EAAE,iBAAiB;aACjC,iBAAiB,EAAE,oBAAoB;aACvC,aAAa,EAAE,gBAAgB;aAC/B,iBAAiB,EAAE,oBAAoB;aACvC,cAAc,EAAE,2BAA2B;aAC3C,cAAc,EAAE,UAAU;CAClB,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,QAAa,CAAC;AAE9C;;;GAGG;AACH,eAAO,MAAM,UAAU,WAAY;IAAE,SAAS,EAAE,IAAI,CAAC;IAAC,oBAAoB,EAAE,IAAI,GAAG,IAAI,CAAA;CAAE,KAAG,IACvB,CAAC;AAEtE,uFAAuF;AACvF,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAQ/D,CAAC;AAEF,wBAAsB,WAAW,CAC/B,EAAE,EAAE,QAAQ,EACZ,OAAO,EAAE,MAAM,EACf,IAAI,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/B,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAE7B;AAaD;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,EAAE,EAAE,QAAQ,EACZ,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,IAAI,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/B,OAAO,CAAC,WAAW,EAAE,CAAC,CAuDxB;AA+CD;yEACyE;AACzE,eAAO,MAAM,iBAAiB,QACvB,IAAI,CAAC,QAAQ,EAAE,cAAc,GAAG,sBAAsB,CAAC,KAC3D,WAAW,CAAC,cAAc,CACsE,CAAC;AA4MpG;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,cAAc,GAAG,IAAI,CAIxF;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,EAC1B,cAAc,EAAE,MAAM,GAAG,IAAI,GAC5B,cAAc,CAWhB"}
|