@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,325 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `FactTools` — the kit's machinery handed to every handler, built per fact — plus the stock lanes
|
|
3
|
+
* and the ONE wiring both the stock producer and a provider's `defineFacts({...})` run through
|
|
4
|
+
* (`producerOf`). This is where the runner's abstract deps meet the runtime: it is the only module
|
|
5
|
+
* that turns a `FactTarget` into real HTTP, a real UCAN signature, a real model call.
|
|
6
|
+
*
|
|
7
|
+
* WORKERS-ONLY, deliberately: it reaches the UCAN signer, the C2PA WASM, the D1 registries and the
|
|
8
|
+
* engine client, none of which load in plain node. The `./facts` subpath (src/facts/*) and the
|
|
9
|
+
* runner must never import it — they take `tools` and `stock` as deps for exactly that reason, and
|
|
10
|
+
* `bun run test:node` is the tripwire. The import direction is: stock/index.ts, define-oracle.ts
|
|
11
|
+
* and builder.ts import THIS; nothing here imports them back.
|
|
12
|
+
*
|
|
13
|
+
* The tools are built per fact so `stock()` can mean "the stock lane for THIS fact": a handler
|
|
14
|
+
* wraps its own source or check (`const base = await tools.stock()`), falls back to it, or ignores
|
|
15
|
+
* it. Everything else is target-independent — the same batteries whichever fact is asking.
|
|
16
|
+
*/
|
|
17
|
+
import { defineFacts, isFactsConfig } from "../../facts/fact.js";
|
|
18
|
+
import { AppError } from "../errors.js";
|
|
19
|
+
import { assertPublicHttpUrl } from "../http/client.js";
|
|
20
|
+
import { fetchAttachmentBytes, fetchAttachmentSize } from "../ixo/attachments.js";
|
|
21
|
+
import { getClaimIntent, getEntityLinkedResources } from "../ixo/blocksync/index.js";
|
|
22
|
+
import { getQueryClient } from "../ixo/chain.js";
|
|
23
|
+
import { mintInvocation } from "../ixo/ucan.js";
|
|
24
|
+
import { buildAiInput, buildExtInput, factInputBase, normalizeAi, normalizeExt, runHandlers, } from "./runner.js";
|
|
25
|
+
import { judgeWithModel, MAX_AI_ATTACHMENT_BYTES, resolveAiCheck } from "./stock/ai-check.js";
|
|
26
|
+
import { readImageProvenance } from "./stock/c2pa.js";
|
|
27
|
+
import { jsonRequest, redactHeaders, redactUrl } from "./stock/call.js";
|
|
28
|
+
import { assertExternalCapability, DEFAULT_CAPABILITY, urlAudience } from "./stock/capability.js";
|
|
29
|
+
import { resolveExtSource } from "./stock/ext-source.js";
|
|
30
|
+
import { resolveFrequency } from "./stock/frequency.js";
|
|
31
|
+
import { aiEntries, resolveSendPayload } from "./stock/send.js";
|
|
32
|
+
import { resolveUnique } from "./stock/unique.js";
|
|
33
|
+
/** `tools.http.json` defaults — the ext connector's timeout and the shared 3-attempt budget. */
|
|
34
|
+
const HTTP_TIMEOUT_MS = 15_000;
|
|
35
|
+
const HTTP_ATTEMPTS = 3;
|
|
36
|
+
/** Single-use, short-lived: a handler's invocation is minted per call, never cached. */
|
|
37
|
+
const UCAN_TTL_SEC = 300;
|
|
38
|
+
/** The refusal for a `send` map these lanes cannot resolve — carries the rubric's onError. */
|
|
39
|
+
function derivedUnsupported(deps, kind, name, refs, onError) {
|
|
40
|
+
deps.logger.warn("stock.derived-unsupported", { kind, name, refs });
|
|
41
|
+
return {
|
|
42
|
+
status: "error",
|
|
43
|
+
onError,
|
|
44
|
+
detail: `derived refs unsupported by the stock producer: ${refs.join(", ")}`,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* The four stock lanes as handlers — thin adapters from the runner's input to each connector
|
|
49
|
+
* (stock/). `~derived` refs are the one thing they cannot answer: the ENGINE computes derived
|
|
50
|
+
* values, so a source or check naming one is an `error` fact, never a guess. A custom handler gets
|
|
51
|
+
* the refs as `input.unresolved` and may compute them from `manifest.derived`.
|
|
52
|
+
*/
|
|
53
|
+
export function stockLanes(pdeps) {
|
|
54
|
+
return {
|
|
55
|
+
ext: (input) => input.unresolved.length > 0
|
|
56
|
+
? derivedUnsupported(pdeps, "ext", input.name, input.unresolved, input.expected.onError)
|
|
57
|
+
: resolveExtSource({ claim: input.claim, name: input.name, source: input.expected, payload: input.send }, pdeps),
|
|
58
|
+
ai: (input) => input.unresolved.length > 0
|
|
59
|
+
? derivedUnsupported(pdeps, "ai", input.name, input.unresolved, input.check.onError)
|
|
60
|
+
: resolveAiCheck({ claim: input.claim, name: input.name, check: input.check, entries: input.inputs }, pdeps),
|
|
61
|
+
// The source names the submitter (an API claim has no agentAddress, but a `submitter`), so
|
|
62
|
+
// the same courier claiming the same order again is a same-agent match on both lanes.
|
|
63
|
+
unique: async (input) => resolveUnique(pdeps, {
|
|
64
|
+
rule: input.rule,
|
|
65
|
+
collectionId: input.claim.collectionId,
|
|
66
|
+
claimId: input.claim.claimId,
|
|
67
|
+
agentAddress: pdeps.scope
|
|
68
|
+
? await pdeps.scope.submitterKey(input.claim)
|
|
69
|
+
: input.claim.metadata.agentAddress,
|
|
70
|
+
body: input.claim.body,
|
|
71
|
+
attachments: input.claim.attachments,
|
|
72
|
+
}),
|
|
73
|
+
frequency: (input) => {
|
|
74
|
+
// The runner never routes a rule-less declaration here (it warns `stock.frequency-unrunnable`
|
|
75
|
+
// and omits the key); only a custom handler is handed one.
|
|
76
|
+
if (!input.rule)
|
|
77
|
+
throw AppError.internal("stock frequency lane reached without max/per");
|
|
78
|
+
// The source counts (Go Prod §7.1) — but only a claim that can have a submitter: a chain
|
|
79
|
+
// claim without an agent keeps the window-less `unresolved` fact it has always frozen (the
|
|
80
|
+
// factsDigest must not move); an API claim's submitter is the source's to find.
|
|
81
|
+
const { scope } = pdeps;
|
|
82
|
+
const { claim } = input;
|
|
83
|
+
return resolveFrequency(pdeps, {
|
|
84
|
+
rule: input.rule,
|
|
85
|
+
collectionId: claim.collectionId,
|
|
86
|
+
agentAddress: claim.metadata.agentAddress,
|
|
87
|
+
submissionDateISO: claim.metadata.submissionDate,
|
|
88
|
+
count: scope && (claim.metadata.agentAddress || claim.lane === "api")
|
|
89
|
+
? (from, to) => scope.countSubmissions(claim, from, to)
|
|
90
|
+
: undefined,
|
|
91
|
+
});
|
|
92
|
+
},
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* What to call the fact being answered, in a log line and in the AI idempotency key. A group is
|
|
97
|
+
* named by the names it answers, so two groups over one claim never share a key.
|
|
98
|
+
*/
|
|
99
|
+
function factTargetName(target) {
|
|
100
|
+
if (target.kind === "ext" || target.kind === "ai")
|
|
101
|
+
return target.name;
|
|
102
|
+
if (target.kind === "group")
|
|
103
|
+
return `group:${target.names.join("+")}`;
|
|
104
|
+
return target.kind;
|
|
105
|
+
}
|
|
106
|
+
/** The tools for ONE fact — `stock()` is that fact's lane; the rest is the kit's machinery. */
|
|
107
|
+
export function realTools(target, claim, manifest, pdeps, stock,
|
|
108
|
+
/** The build's shared agreement read (`producerOf`). Omitted ⇒ this fact's own, for a caller
|
|
109
|
+
* building tools outside a producer run. */
|
|
110
|
+
agreements = new Map()) {
|
|
111
|
+
const base = factInputBase(claim, manifest, pdeps);
|
|
112
|
+
/** The fact being answered — the AI idempotency key and every log line's `check`. */
|
|
113
|
+
const targetName = factTargetName(target);
|
|
114
|
+
// One line per fact, not per call: a handler that reads the agreement in a loop says it once.
|
|
115
|
+
let agreementWarned = false;
|
|
116
|
+
// Judgments are numbered per fact: OpenRouter's idempotency key is `${claimId}:${name}`, so two
|
|
117
|
+
// `judge()` calls under one name would collide on it and the second could be served the first's
|
|
118
|
+
// completion. The counter restarts with the tools, so a step retry replays the same keys.
|
|
119
|
+
let judgeCalls = 0;
|
|
120
|
+
/**
|
|
121
|
+
* One self-signed invocation for an external call. The developer's own capability — but never an
|
|
122
|
+
* IXO service's (stock/capability.ts): this token leaves for a third party, and those services
|
|
123
|
+
* take this did:web's word as the oracle's.
|
|
124
|
+
*/
|
|
125
|
+
const signFor = async (audience, capability = DEFAULT_CAPABILITY) => {
|
|
126
|
+
assertExternalCapability(capability);
|
|
127
|
+
const { token } = await mintInvocation(pdeps.config, {
|
|
128
|
+
audience,
|
|
129
|
+
// Zod widens {can,with} to string; the UCAN lib brands them — cast, as the connectors do.
|
|
130
|
+
capability: capability,
|
|
131
|
+
ttlSec: UCAN_TTL_SEC,
|
|
132
|
+
unique: true,
|
|
133
|
+
});
|
|
134
|
+
return { authorization: `Bearer ${token}`, "x-auth-type": "ucan" };
|
|
135
|
+
};
|
|
136
|
+
const tools = {
|
|
137
|
+
async stock() {
|
|
138
|
+
if (target.kind === "ext") {
|
|
139
|
+
const input = buildExtInput(base, target.name, target.expected);
|
|
140
|
+
return normalizeExt(await stock.ext(input, tools), target.expected.onError);
|
|
141
|
+
}
|
|
142
|
+
if (target.kind === "ai") {
|
|
143
|
+
const input = buildAiInput(base, target.name, target.check);
|
|
144
|
+
// The ONE narrowing in this file: `tools` is built once per fact and its `stock()` returns
|
|
145
|
+
// whichever lane the TARGET selects, which the base type can only spell as the union. Here
|
|
146
|
+
// the target is known to be `ai`, so these tools ARE `AiTools` — what an ai handler (stock
|
|
147
|
+
// or custom) is declared to take.
|
|
148
|
+
return normalizeAi(await stock.ai(input, tools), target.check.onError);
|
|
149
|
+
}
|
|
150
|
+
// A group answers several names at once, so `stock()` inside one could only mean "the stock
|
|
151
|
+
// lane for WHICH of them" — an ambiguity that would silently buy the wrong call. A grouped
|
|
152
|
+
// name's own lane is the group; leave a name out of the group to keep its stock lane.
|
|
153
|
+
if (target.kind === "group") {
|
|
154
|
+
throw AppError.internal(`tools.stock() has no answer inside ${factTargetName(target)}: a group replaces the stock lane for every name it answers, and stock() here names none of them`);
|
|
155
|
+
}
|
|
156
|
+
// The dup/rate lanes answer their own fact shape, not an ext/ai one — and a custom
|
|
157
|
+
// unique/frequency handler REPLACES its lane wholesale (the runner's `deps.stock.unique` /
|
|
158
|
+
// `deps.stock.frequency` are those lanes), so there is nothing here to wrap.
|
|
159
|
+
throw AppError.internal(`tools.stock() has no answer for the ${target.kind} rule: that lane's fact is not an ext/ai fact, and a custom ${target.kind} handler replaces the stock lane wholesale`);
|
|
160
|
+
},
|
|
161
|
+
http: {
|
|
162
|
+
async json(url, init = {}) {
|
|
163
|
+
let headers = init.headers ?? {};
|
|
164
|
+
try {
|
|
165
|
+
// A handler's URL often comes from a claim answer, so it gets the submitter-controlled
|
|
166
|
+
// treatment (http/client.ts): a refusal is an OUTCOME — the same shape an unreachable
|
|
167
|
+
// host produces — never a throw that costs the fact its own error handling.
|
|
168
|
+
assertPublicHttpUrl(url);
|
|
169
|
+
}
|
|
170
|
+
catch {
|
|
171
|
+
return {
|
|
172
|
+
ok: false,
|
|
173
|
+
status: null,
|
|
174
|
+
body: null,
|
|
175
|
+
transcript: {
|
|
176
|
+
request: {
|
|
177
|
+
url: redactUrl(url),
|
|
178
|
+
body: init.method === "POST" ? (init.body ?? null) : null,
|
|
179
|
+
headers: redactHeaders(headers),
|
|
180
|
+
},
|
|
181
|
+
response: null,
|
|
182
|
+
attempts: 0,
|
|
183
|
+
elapsedMs: 0,
|
|
184
|
+
},
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
if (init.ucan) {
|
|
188
|
+
// Bound to the URL actually fetched: the audience is never the caller's to name here.
|
|
189
|
+
const cap = init.ucan === true ? undefined : init.ucan.capability;
|
|
190
|
+
headers = { ...headers, ...(await signFor(urlAudience(url), cap)) };
|
|
191
|
+
}
|
|
192
|
+
const outcome = await jsonRequest(pdeps, {
|
|
193
|
+
url,
|
|
194
|
+
method: init.method ?? "GET",
|
|
195
|
+
headers,
|
|
196
|
+
body: init.body,
|
|
197
|
+
timeoutMs: init.timeoutMs ?? HTTP_TIMEOUT_MS,
|
|
198
|
+
attempts: init.attempts ?? HTTP_ATTEMPTS,
|
|
199
|
+
});
|
|
200
|
+
return { ...outcome, body: outcome.body };
|
|
201
|
+
},
|
|
202
|
+
ucanHeaders: (audience, capability) => signFor(audience, capability),
|
|
203
|
+
},
|
|
204
|
+
ai: {
|
|
205
|
+
judge: (instructions, inputs, opts = {}) => judgeWithModel({
|
|
206
|
+
claim,
|
|
207
|
+
name: `${targetName}#${++judgeCalls}`,
|
|
208
|
+
instructions,
|
|
209
|
+
// A handler answering an AI check inherits that check's fallback; anywhere else the
|
|
210
|
+
// safe default applies — a judgment that could not be made is never an approve.
|
|
211
|
+
onError: target.kind === "ai" ? target.check.onError : "review",
|
|
212
|
+
entries: inputs,
|
|
213
|
+
...(opts.model ? { model: opts.model } : {}),
|
|
214
|
+
}, pdeps),
|
|
215
|
+
inputsFor: (check) => aiEntries(claim, check, resolveSendPayload(check.send, claim.body, pdeps.ctx)),
|
|
216
|
+
},
|
|
217
|
+
attachments: {
|
|
218
|
+
on: (question) => claim.attachments.filter((att) => att.question === question),
|
|
219
|
+
bytes: (att, opts = {}) => fetchAttachmentBytes(pdeps, pdeps.media, att.url,
|
|
220
|
+
// The AI lane's own cap by default (ai-check.ts) — a handler asks for more explicitly.
|
|
221
|
+
opts.maxBytes ?? MAX_AI_ATTACHMENT_BYTES, opts.timeoutMs),
|
|
222
|
+
// No media lane (the cellnode claims) means nothing to probe — the null rule decides.
|
|
223
|
+
size: async (att) => fetchAttachmentSize(pdeps, pdeps.media, att.url),
|
|
224
|
+
},
|
|
225
|
+
c2pa: {
|
|
226
|
+
// `settings.allowImageChecks` gates the STOCK ai lane's provenance short-circuit, not this:
|
|
227
|
+
// a handler that screens an image is asking for the read, and gets it.
|
|
228
|
+
screen: (bytes, mediaType) => readImageProvenance({ logger: pdeps.logger, trace: pdeps.trace, cache: pdeps.cache }, bytes, mediaType),
|
|
229
|
+
},
|
|
230
|
+
chain: {
|
|
231
|
+
// The same blocksync read the kit's own lanes use, over the same retrying transport — so a
|
|
232
|
+
// handler gets the parsed shape and the loud drift/outage behaviour for free instead of
|
|
233
|
+
// POSTing GraphQL at `config.BLOCKSYNC_GRAPHQL_URL` itself (deep imports are blocked).
|
|
234
|
+
linkedResources: (entityDid) => getEntityLinkedResources(pdeps, entityDid),
|
|
235
|
+
// One filtered query, never a scan (blocksync/queries.ts CLAIM_INTENT) — which is the whole
|
|
236
|
+
// reason this lives here and not in a handler.
|
|
237
|
+
claimIntent: (params) => getClaimIntent(pdeps, params),
|
|
238
|
+
// Memoised per isolate inside chain.ts, behind the SDK's lazy import: a handler that never
|
|
239
|
+
// asks never loads the protos.
|
|
240
|
+
query: () => getQueryClient(pdeps.config),
|
|
241
|
+
},
|
|
242
|
+
// Deliberately NO try/catch around the engine read: `engine.getAgreement` already returns
|
|
243
|
+
// `null` for a real 404 (client.ts) — a genuine "no agreement on file" answer — so anything
|
|
244
|
+
// that reaches here as a THROW is trouble reading the engine, not an answer from it. Left to
|
|
245
|
+
// propagate, that lands in the runner's `detailForThrow` (facts/runner.ts), which rethrows a
|
|
246
|
+
// retryable `EngineError` (5xx / `UNAVAILABLE` / `RATE_LIMITED`) as `unavailable` so the
|
|
247
|
+
// workflow step retries instead of freezing an error fact (task-14, 2026-09-14 — the incident
|
|
248
|
+
// this fixed: a transient engine 5xx was frozen as `fact.error(...)` and held a claim for
|
|
249
|
+
// review it could never be re-run for, since claims are decided once). Wrapping this in a
|
|
250
|
+
// catch — even a well-meaning `catch { return null }` — would reintroduce exactly that bug, so
|
|
251
|
+
// don't.
|
|
252
|
+
async agreement(counterparty) {
|
|
253
|
+
if (!pdeps.engine) {
|
|
254
|
+
if (!agreementWarned) {
|
|
255
|
+
agreementWarned = true;
|
|
256
|
+
pdeps.logger.warn("facts.agreement-no-engine", { fact: targetName });
|
|
257
|
+
}
|
|
258
|
+
return null;
|
|
259
|
+
}
|
|
260
|
+
// OMITTED ⇒ the claim's own agent (the buyer statement's `counterparty`). An explicit
|
|
261
|
+
// `null` is a different question — the collection's own terms, no counterparty — and the
|
|
262
|
+
// engine client sends no `?counterparty=` for it, so it must not collapse into the default:
|
|
263
|
+
// the resolved value IS the cache key, so the two never share an entry.
|
|
264
|
+
const who = counterparty === undefined ? claim.metadata.agentAddress : counterparty;
|
|
265
|
+
const engine = pdeps.engine;
|
|
266
|
+
// The ONE read of the build, even when it fails: a rejected promise is memoized here just
|
|
267
|
+
// like a resolved one, so a second handler needing the same counterparty shares the SAME
|
|
268
|
+
// rejection (one engine ask, not a retry-storm inside the build) rather than re-asking — the
|
|
269
|
+
// workflow step retry is what re-asks, with a fresh build and a fresh map.
|
|
270
|
+
let read = agreements.get(who);
|
|
271
|
+
if (!read) {
|
|
272
|
+
read = engine.getAgreement(claim.collectionId, who);
|
|
273
|
+
agreements.set(who, read);
|
|
274
|
+
}
|
|
275
|
+
return read;
|
|
276
|
+
},
|
|
277
|
+
logger: pdeps.logger,
|
|
278
|
+
config: pdeps.config,
|
|
279
|
+
get env() {
|
|
280
|
+
// Absent only in tests and dry runs (producer.ts). Loud beats a handler reading a binding
|
|
281
|
+
// off `undefined` three lines later.
|
|
282
|
+
if (!pdeps.env)
|
|
283
|
+
throw AppError.internal("tools.env: this build carries no worker env");
|
|
284
|
+
return pdeps.env;
|
|
285
|
+
},
|
|
286
|
+
};
|
|
287
|
+
return tools;
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* The ONE producer wiring: a `defineFacts({...})` table (or nothing at all) becomes a producer that
|
|
291
|
+
* runs the runner with the real tools and the stock lanes as every unlisted name's default; a
|
|
292
|
+
* whole-producer function is returned untouched. Both `defineOracle({ facts })` (define-oracle.ts)
|
|
293
|
+
* and the stock producer (stock/index.ts) come through here, which is what makes the runner's
|
|
294
|
+
* guarantees identical for a provider's handler and for the stock lane.
|
|
295
|
+
*/
|
|
296
|
+
export function producerOf(facts,
|
|
297
|
+
/**
|
|
298
|
+
* Per-lane replacements for the STOCK defaults — what an unlisted name (and `tools.stock()`) runs
|
|
299
|
+
* instead. The oracle itself never passes any; the CLI's dry run (`facts run`) does, for the one
|
|
300
|
+
* lane it cannot honestly run off a laptop: `unique` reads this oracle's D1 registries. A
|
|
301
|
+
* whole-producer function ignores them — it owns its own wiring.
|
|
302
|
+
*/
|
|
303
|
+
stockOverrides) {
|
|
304
|
+
if (facts && !isFactsConfig(facts))
|
|
305
|
+
return facts;
|
|
306
|
+
const config = facts ?? defineFacts({});
|
|
307
|
+
return (claim, expected, pdeps) => {
|
|
308
|
+
const lanes = { ...stockLanes(pdeps), ...stockOverrides };
|
|
309
|
+
// One per BUILD, so every handler in it shares the agreement read (see `AgreementCache`).
|
|
310
|
+
const agreements = new Map();
|
|
311
|
+
return runHandlers(config, claim, expected, {
|
|
312
|
+
logger: pdeps.logger,
|
|
313
|
+
metrics: pdeps.metrics,
|
|
314
|
+
span: pdeps.span,
|
|
315
|
+
protocolDid: pdeps.protocolDid,
|
|
316
|
+
finalAttempt: pdeps.finalAttempt,
|
|
317
|
+
ctx: pdeps.ctx,
|
|
318
|
+
settings: pdeps.settings,
|
|
319
|
+
factCache: pdeps.factCache,
|
|
320
|
+
stock: lanes,
|
|
321
|
+
tools: (target) => realTools(target, claim, expected, pdeps, lanes, agreements),
|
|
322
|
+
});
|
|
323
|
+
};
|
|
324
|
+
}
|
|
325
|
+
//# sourceMappingURL=tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/lib/facts/tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hold a producer's answer to the work order (expected.ts — the engine's manifest) BEFORE it is
|
|
3
|
+
* frozen or sent. Mirrors
|
|
4
|
+
* the engine's fact-coverage check exactly — the engine would answer
|
|
5
|
+
* `unusable` (billed zero) to the same faults, but on our side each one is a producer bug worth
|
|
6
|
+
* surfacing loudly, so the kit refuses first: every declared name present as an `ok`/`error` fact,
|
|
7
|
+
* an `ok` value of the declared type (`boolean` ⇒ a JS boolean; `score` ⇒ an INTEGER 0..10000,
|
|
8
|
+
* never clamped), an `error` carrying the rubric's own `onError`, the wire shape itself, and NO
|
|
9
|
+
* undeclared names — the engine ignores an extra name, but a rule can never read it, so here it is
|
|
10
|
+
* a bug. The same rule for the oracle-side dup/rate facts: `unique` /
|
|
11
|
+
* `frequency` present iff the manifest declares the rule, of the wire shape the engine validates,
|
|
12
|
+
* naming the declared rule — a `frequency` declaration the manifest sent without `max`/`per`
|
|
13
|
+
* cannot be run by anyone, so its absence is refused with that message (our/the engine's bug).
|
|
14
|
+
*
|
|
15
|
+
* Issue codes match the engine's reason codes (`FACT_MISSING`, `FACT_KIND`) where both sides check
|
|
16
|
+
* the same thing, so logs read the same on both; the rest are ours. Pure.
|
|
17
|
+
*/
|
|
18
|
+
import type { ExpectedFacts } from "./expected.js";
|
|
19
|
+
import type { ProducedFacts } from "./producer.js";
|
|
20
|
+
export interface FactIssue {
|
|
21
|
+
code: "FACT_MISSING" | "FACT_EXTRA" | "FACT_KIND" | "FACT_ON_ERROR" | "FACT_SHAPE";
|
|
22
|
+
/** `/facts/ext/<name>` · `/facts/ai/<name>` · `/facts/unique` · `/facts/frequency` — the engine's own path convention. */
|
|
23
|
+
path: string;
|
|
24
|
+
message: string;
|
|
25
|
+
}
|
|
26
|
+
export type ValidateResult = {
|
|
27
|
+
ok: true;
|
|
28
|
+
} | {
|
|
29
|
+
ok: false;
|
|
30
|
+
issues: FactIssue[];
|
|
31
|
+
};
|
|
32
|
+
export declare function validateFacts(produced: ProducedFacts, expected: ExpectedFacts): ValidateResult;
|
|
33
|
+
//# sourceMappingURL=validate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/lib/facts/validate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,cAAc,GAAG,YAAY,GAAG,WAAW,GAAG,eAAe,GAAG,YAAY,CAAC;IACnF,0HAA0H;IAC1H,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,cAAc,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,SAAS,EAAE,CAAA;CAAE,CAAC;AAM/E,wBAAgB,aAAa,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,GAAG,cAAc,CA4I9F"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hold a producer's answer to the work order (expected.ts — the engine's manifest) BEFORE it is
|
|
3
|
+
* frozen or sent. Mirrors
|
|
4
|
+
* the engine's fact-coverage check exactly — the engine would answer
|
|
5
|
+
* `unusable` (billed zero) to the same faults, but on our side each one is a producer bug worth
|
|
6
|
+
* surfacing loudly, so the kit refuses first: every declared name present as an `ok`/`error` fact,
|
|
7
|
+
* an `ok` value of the declared type (`boolean` ⇒ a JS boolean; `score` ⇒ an INTEGER 0..10000,
|
|
8
|
+
* never clamped), an `error` carrying the rubric's own `onError`, the wire shape itself, and NO
|
|
9
|
+
* undeclared names — the engine ignores an extra name, but a rule can never read it, so here it is
|
|
10
|
+
* a bug. The same rule for the oracle-side dup/rate facts: `unique` /
|
|
11
|
+
* `frequency` present iff the manifest declares the rule, of the wire shape the engine validates,
|
|
12
|
+
* naming the declared rule — a `frequency` declaration the manifest sent without `max`/`per`
|
|
13
|
+
* cannot be run by anyone, so its absence is refused with that message (our/the engine's bug).
|
|
14
|
+
*
|
|
15
|
+
* Issue codes match the engine's reason codes (`FACT_MISSING`, `FACT_KIND`) where both sides check
|
|
16
|
+
* the same thing, so logs read the same on both; the rest are ours. Pure.
|
|
17
|
+
*/
|
|
18
|
+
import { AiFact, ExtFact, FrequencyFact, UniqueFact } from "./factset.js";
|
|
19
|
+
/** A Zod failure as one line — paths and messages only (identifiers, never values). */
|
|
20
|
+
const zodDetail = (issues) => issues.map((i) => `${i.path.join(".") || "(root)"}: ${i.message}`).join("; ");
|
|
21
|
+
export function validateFacts(produced, expected) {
|
|
22
|
+
const issues = [];
|
|
23
|
+
const issue = (code, path, message) => {
|
|
24
|
+
issues.push({ code, path, message });
|
|
25
|
+
};
|
|
26
|
+
// A custom producer is untyped at runtime — a missing/non-object lane is a shape fault, not a crash.
|
|
27
|
+
const lane = (kind) => {
|
|
28
|
+
const value = produced?.[kind];
|
|
29
|
+
if (value !== null && typeof value === "object" && !Array.isArray(value)) {
|
|
30
|
+
return value;
|
|
31
|
+
}
|
|
32
|
+
issue("FACT_SHAPE", `/facts/${kind}`, `expected an object of facts, got ${typeof value}`);
|
|
33
|
+
return {};
|
|
34
|
+
};
|
|
35
|
+
const ext = lane("ext");
|
|
36
|
+
const ai = lane("ai");
|
|
37
|
+
for (const [name, source] of Object.entries(expected.ext)) {
|
|
38
|
+
const path = `/facts/ext/${name}`;
|
|
39
|
+
if (!(name in ext)) {
|
|
40
|
+
issue("FACT_MISSING", path, `declared source '${name}' was not produced`);
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
const parsed = ExtFact.safeParse(ext[name]);
|
|
44
|
+
if (!parsed.success) {
|
|
45
|
+
issue("FACT_SHAPE", path, zodDetail(parsed.error.issues));
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
const fact = parsed.data;
|
|
49
|
+
if (fact.status === "error") {
|
|
50
|
+
if (fact.onError !== source.onError) {
|
|
51
|
+
issue("FACT_ON_ERROR", path, `error fact carries onError '${fact.onError}', the rubric declares '${source.onError}'`);
|
|
52
|
+
}
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
if (source.expect === "boolean" && typeof fact.value !== "boolean") {
|
|
56
|
+
issue("FACT_KIND", path, `expected a boolean value, got ${typeof fact.value}`);
|
|
57
|
+
}
|
|
58
|
+
else if (source.expect === "score" &&
|
|
59
|
+
(typeof fact.value !== "number" ||
|
|
60
|
+
!Number.isInteger(fact.value) ||
|
|
61
|
+
fact.value < 0 ||
|
|
62
|
+
fact.value > 10000)) {
|
|
63
|
+
issue("FACT_KIND", path, "expected an integer score between 0 and 10000");
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
for (const [name, check] of Object.entries(expected.ai)) {
|
|
67
|
+
const path = `/facts/ai/${name}`;
|
|
68
|
+
if (!(name in ai)) {
|
|
69
|
+
issue("FACT_MISSING", path, `declared AI check '${name}' was not produced`);
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
const parsed = AiFact.safeParse(ai[name]);
|
|
73
|
+
if (!parsed.success) {
|
|
74
|
+
issue("FACT_SHAPE", path, zodDetail(parsed.error.issues));
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
const fact = parsed.data;
|
|
78
|
+
if (fact.status === "error" && fact.onError !== check.onError) {
|
|
79
|
+
issue("FACT_ON_ERROR", path, `error fact carries onError '${fact.onError}', the rubric declares '${check.onError}'`);
|
|
80
|
+
}
|
|
81
|
+
// `expect` is boolean-only for AI checks and `AiFact` already types `value` as one.
|
|
82
|
+
}
|
|
83
|
+
for (const name of Object.keys(ext)) {
|
|
84
|
+
if (!(name in expected.ext)) {
|
|
85
|
+
issue("FACT_EXTRA", `/facts/ext/${name}`, `'${name}' is not a source the rubric declares`);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
for (const name of Object.keys(ai)) {
|
|
89
|
+
if (!(name in expected.ai)) {
|
|
90
|
+
issue("FACT_EXTRA", `/facts/ai/${name}`, `'${name}' is not an AI check the rubric declares`);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
// The dup/rate facts: one each, iff declared. `produced` is untyped at runtime (a custom
|
|
94
|
+
// producer), so both are read as unknown and parsed to the engine's wire shape.
|
|
95
|
+
const singles = produced;
|
|
96
|
+
if (expected.unique) {
|
|
97
|
+
const path = "/facts/unique";
|
|
98
|
+
const fact = singles.unique;
|
|
99
|
+
if (fact === undefined) {
|
|
100
|
+
issue("FACT_MISSING", path, `declared unique rule '${expected.unique.ruleId}' was not produced`);
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
const parsed = UniqueFact.safeParse(fact);
|
|
104
|
+
if (!parsed.success)
|
|
105
|
+
issue("FACT_SHAPE", path, zodDetail(parsed.error.issues));
|
|
106
|
+
else if (parsed.data.ruleId !== expected.unique.ruleId) {
|
|
107
|
+
issue("FACT_KIND", path, `unique fact names rule '${parsed.data.ruleId}', the manifest declares '${expected.unique.ruleId}'`);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
else if (singles.unique !== undefined) {
|
|
112
|
+
issue("FACT_EXTRA", "/facts/unique", "the rubric declares no unique rule");
|
|
113
|
+
}
|
|
114
|
+
if (expected.frequency) {
|
|
115
|
+
const path = "/facts/frequency";
|
|
116
|
+
const fact = singles.frequency;
|
|
117
|
+
const { ruleId, max, per } = expected.frequency;
|
|
118
|
+
if (fact === undefined) {
|
|
119
|
+
issue("FACT_MISSING", path, max === undefined || per === undefined
|
|
120
|
+
? "manifest lacks max/per"
|
|
121
|
+
: `declared frequency rule '${ruleId}' was not produced`);
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
const parsed = FrequencyFact.safeParse(fact);
|
|
125
|
+
if (!parsed.success)
|
|
126
|
+
issue("FACT_SHAPE", path, zodDetail(parsed.error.issues));
|
|
127
|
+
else if (parsed.data.ruleId !== ruleId) {
|
|
128
|
+
issue("FACT_KIND", path, `frequency fact names rule '${parsed.data.ruleId}', the manifest declares '${ruleId}'`);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
else if (singles.frequency !== undefined) {
|
|
133
|
+
issue("FACT_EXTRA", "/facts/frequency", "the rubric declares no frequency rule");
|
|
134
|
+
}
|
|
135
|
+
return issues.length === 0 ? { ok: true } : { ok: false, issues };
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/lib/facts/validate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic content hashing. `sha256Hex` is the one primitive several unrelated corners share —
|
|
3
|
+
* rubric ids (§A.10), UCAN token cache keys, claim workflow ids — so it lives in a neutral home
|
|
4
|
+
* rather than inside any one of them (e.g. rubric resolution should not reach into `ixo/ucan` for
|
|
5
|
+
* a hash). `cidForBytes` is the claim lane's content address, kept beside it for the same reason.
|
|
6
|
+
*/
|
|
7
|
+
import type { ApiClaimContent } from "./engine/types.js";
|
|
8
|
+
/** Hex SHA-256 of a string or raw bytes (cache keys, rubric ids — never for secrets in logs). */
|
|
9
|
+
export declare function sha256Hex(input: Uint8Array | string): Promise<string>;
|
|
10
|
+
/**
|
|
11
|
+
* Canonical JSON: recursively sorted keys, no whitespace — so the same value always serializes to
|
|
12
|
+
* the same bytes. Feeds `resultDigest = sha256(canonicalJson(decision + trace))` (evaluator §9),
|
|
13
|
+
* the same convention the editor uses to make a rubric's id stable.
|
|
14
|
+
*/
|
|
15
|
+
export declare function canonicalJson(value: unknown): string;
|
|
16
|
+
/**
|
|
17
|
+
* The Decision API claim's content id (contract "The claim content and `contentDigest`"): the SAME
|
|
18
|
+
* function the engine and the client SDK run, held to `test/fixtures/content-digest-vectors.json`.
|
|
19
|
+
* Not the idempotency `requestDigest` — that one covers the transport too. Key order is JavaScript's
|
|
20
|
+
* (integer-like keys first, ascending; then the rest by UTF-16 code unit): a non-JS implementation
|
|
21
|
+
* must reproduce it — the vectors pin it.
|
|
22
|
+
*/
|
|
23
|
+
export declare function contentDigest(content: ApiClaimContent): Promise<string>;
|
|
24
|
+
/**
|
|
25
|
+
* The claim lane's content address — CIDv1, `raw` codec (0x55), sha2-256, base32 (`bafkrei…`).
|
|
26
|
+
* A claim's id IS this CID of its stored body: `ixo-oracles-cli/src/utils/createCIDFromBase64.ts`
|
|
27
|
+
* builds exactly `CID.create(1, 0x55, sha256(bytes))`, and the Matrix claim bot's `generateCid`
|
|
28
|
+
* (`ipfs-only-hash` with `cidVersion:1, rawLeaves:true, leafType:'raw'`) produces the identical
|
|
29
|
+
* string up to its 256 KiB chunk size (beyond it the importer builds a dag-pb root, so a larger body
|
|
30
|
+
* never matches — ENGINE-CONTRACT treats it as unverifiable). The cellnode lane verifies a body against its claim id with
|
|
31
|
+
* this (ixo/cellnode.ts) — so it must be byte-identical to the fleet's, hence `multiformats`
|
|
32
|
+
* rather than a hand-rolled base32: a subtle encoder bug would only surface as every cellnode
|
|
33
|
+
* claim failing closed.
|
|
34
|
+
*
|
|
35
|
+
* NOT the rubric convention: the portal's `publicUploadToMatrix` returns a bare hex sha256 it
|
|
36
|
+
* calls a "simplified CID", which is why `rubricId` is hex.
|
|
37
|
+
*/
|
|
38
|
+
export declare function cidForBytes(bytes: Uint8Array): Promise<string>;
|
|
39
|
+
/** The same CID from a sha2-256 digest already computed — for bytes hashed incrementally as they
|
|
40
|
+
* stream (the data export, `routes/v1/api/export.ts`), never held whole. */
|
|
41
|
+
export declare function cidForSha256(digest: Uint8Array): string;
|
|
42
|
+
/** Chunked btoa — platform-native base64 without blowing the stack on a large attachment. */
|
|
43
|
+
export declare function base64Of(bytes: Uint8Array): string;
|
|
44
|
+
//# sourceMappingURL=hash.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../src/lib/hash.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD,iGAAiG;AACjG,wBAAsB,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAI3E;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEpD;AAeD;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAE7E;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAGpE;AAED;6EAC6E;AAC7E,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAEvD;AAED,6FAA6F;AAC7F,wBAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAOlD"}
|