@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,409 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `decision-oracle facts run` — the handler dev loop: YOUR handlers, a claim file on disk, the LIVE work
|
|
3
|
+
* order, and nothing else. No chain write, no D1 row, no claim pulled from Matrix, and no credits
|
|
4
|
+
* spent on a decision — `--preview` asks the engine's dev route, which decides nothing and bills
|
|
5
|
+
* nothing.
|
|
6
|
+
*
|
|
7
|
+
* decision-oracle facts run --protocol <did> --claim <file> [--collection <id>] [--agent <address>]
|
|
8
|
+
* [--facts src/facts/index.ts] [--preview] [--no-ai] [--json]
|
|
9
|
+
* [--engine-url <url>] [--network devnet|testnet|mainnet] [--env-file <path>] [--env <name>]
|
|
10
|
+
*
|
|
11
|
+
* The claim file is either a FLAT answers object — the same file `submit-claim --answers` takes, so
|
|
12
|
+
* a protocol's `sample-claim.json` works as it stands — or the envelope
|
|
13
|
+
* `{ answers, attachments: [{ question, name, mediaType, path }] }` when a claim carries files.
|
|
14
|
+
* An attachment `path` is relative to the claim file itself and its bytes ride as `data:` URLs, so
|
|
15
|
+
* `tools.attachments.bytes()` works exactly as it does against Matrix, without the claim bot.
|
|
16
|
+
*
|
|
17
|
+
* What is REAL here: the manifest (read from the engine), the runner and its rules, the tools
|
|
18
|
+
* (HTTP, UCAN headers, `tools.ai.judge` against the configured AI provider — that one spends money), `validateFacts`
|
|
19
|
+
* and the frozen FactSet. What is not: `ctx` without `--collection` — its clock is the real one, so
|
|
20
|
+
* a date rule reads the instant it would in production, but the collection window and submission
|
|
21
|
+
* plane around it are a sample's empty ones; the stock `unique` lane, which reads this oracle's D1
|
|
22
|
+
* registries and is answered here by the fail-closed placeholder below (`uniqueNotRun`) so the rest
|
|
23
|
+
* of the run still happens; and C2PA provenance, which cannot instantiate its WASM outside a Worker
|
|
24
|
+
* — it reads as inconclusive here and is only ever screened for real in the deployed oracle.
|
|
25
|
+
*
|
|
26
|
+
* Exit codes: 0 every declared fact answered · 1 issues (or a failure worth fixing) · 2 the rubric
|
|
27
|
+
* is unusable · 64 usage, including a handlers module that exports no `facts`.
|
|
28
|
+
*/
|
|
29
|
+
import { readFileSync } from "node:fs";
|
|
30
|
+
import { dirname, resolve } from "node:path";
|
|
31
|
+
import process from "node:process";
|
|
32
|
+
import { pathToFileURL } from "node:url";
|
|
33
|
+
import { z } from "zod";
|
|
34
|
+
import { isFactsConfig } from "../../facts/fact.js";
|
|
35
|
+
import { isManifestUnusable } from "../../lib/engine/types.js";
|
|
36
|
+
import { AppError } from "../../lib/errors.js";
|
|
37
|
+
import { resolveCtx } from "../../lib/facts/ctx.js";
|
|
38
|
+
import { FactSetV1 } from "../../lib/facts/factset.js";
|
|
39
|
+
import { producerOf } from "../../lib/facts/tools.js";
|
|
40
|
+
import { validateFacts } from "../../lib/facts/validate.js";
|
|
41
|
+
import { createLogger } from "../../lib/logger.js";
|
|
42
|
+
import { generateTraceContext } from "../../lib/tracing.js";
|
|
43
|
+
import { sampleCtx } from "../../testing/samples.js";
|
|
44
|
+
import { restAiFromEnv } from "../lib/ai-rest.js";
|
|
45
|
+
import { parse, UsageError } from "../lib/args.js";
|
|
46
|
+
import { resolveNetwork } from "../lib/chain.js";
|
|
47
|
+
import { loadProjectConfig, oracleUrlFor, readProjectEnv } from "../lib/devvars.js";
|
|
48
|
+
import { cliEngine, describeError, engineUrlFor } from "../lib/engine.js";
|
|
49
|
+
/** The claim file, validated at the edge: a typo in it must name itself, not crash a handler. */
|
|
50
|
+
const Answers = z.record(z.string(), z.unknown());
|
|
51
|
+
const ClaimEnvelope = z.object({
|
|
52
|
+
answers: Answers,
|
|
53
|
+
attachments: z
|
|
54
|
+
.array(z.object({
|
|
55
|
+
/** The root question the file was answered on — what `tools.attachments.on()` filters by. */
|
|
56
|
+
question: z.string().min(1),
|
|
57
|
+
name: z.string().min(1),
|
|
58
|
+
mediaType: z.string().min(1),
|
|
59
|
+
/** Relative to the claim file's own directory. */
|
|
60
|
+
path: z.string().min(1),
|
|
61
|
+
}))
|
|
62
|
+
.optional(),
|
|
63
|
+
});
|
|
64
|
+
/**
|
|
65
|
+
* Either shape (header): an `answers` key holding an OBJECT is the envelope, anything else is a
|
|
66
|
+
* flat answers document. The heuristic is the whole rule — a claim form with its own `answers`
|
|
67
|
+
* question still reads flat unless that answer is itself an object, which no claim form produces.
|
|
68
|
+
*/
|
|
69
|
+
function readClaimFile(path) {
|
|
70
|
+
const doc = JSON.parse(readFileSync(path, "utf8"));
|
|
71
|
+
if (doc === null || typeof doc !== "object" || Array.isArray(doc)) {
|
|
72
|
+
throw new Error("expected a JSON object: the claim answers, or { answers, attachments }");
|
|
73
|
+
}
|
|
74
|
+
const answers = doc.answers;
|
|
75
|
+
return answers !== null && typeof answers === "object" && !Array.isArray(answers)
|
|
76
|
+
? ClaimEnvelope.parse(doc)
|
|
77
|
+
: { answers: Answers.parse(doc) };
|
|
78
|
+
}
|
|
79
|
+
/** The digest the placeholder below carries — nothing could mistake it for a real body digest. */
|
|
80
|
+
const UNIQUE_NOT_RUN = "cli:not-run";
|
|
81
|
+
/**
|
|
82
|
+
* The `unique` lane under the CLI. The stock one reads this oracle's D1 duplicate registries, which
|
|
83
|
+
* a laptop run has none of — and failing there showed a provider NOTHING: not one fact, no
|
|
84
|
+
* `validateFacts`, no preview, for any rubric with dup detection on. So the fact is produced,
|
|
85
|
+
* fail-closed and unmistakably labelled: band `review`, score 0, a digest no body could have. The
|
|
86
|
+
* engine then decides what it would for any unresolved duplicate check — review, never a pass — and
|
|
87
|
+
* the rest of the run reads normally. The real answer needs either a `facts.unique` handler or the
|
|
88
|
+
* deployed oracle.
|
|
89
|
+
*/
|
|
90
|
+
const uniqueNotRun = ({ rule }) => ({
|
|
91
|
+
ruleId: rule.id,
|
|
92
|
+
digest: UNIQUE_NOT_RUN,
|
|
93
|
+
scoreBps: 0,
|
|
94
|
+
band: "review",
|
|
95
|
+
detail: "unique lane not run under the CLI (needs the deployed oracle's D1)",
|
|
96
|
+
});
|
|
97
|
+
export async function run(argv) {
|
|
98
|
+
const { values } = parse(argv, {
|
|
99
|
+
options: {
|
|
100
|
+
protocol: { type: "string" },
|
|
101
|
+
claim: { type: "string" },
|
|
102
|
+
collection: { type: "string" },
|
|
103
|
+
agent: { type: "string" },
|
|
104
|
+
facts: { type: "string" },
|
|
105
|
+
preview: { type: "boolean" },
|
|
106
|
+
"no-ai": { type: "boolean" },
|
|
107
|
+
json: { type: "boolean" },
|
|
108
|
+
"engine-url": { type: "string" },
|
|
109
|
+
network: { type: "string" },
|
|
110
|
+
"env-file": { type: "string" },
|
|
111
|
+
env: { type: "string" },
|
|
112
|
+
},
|
|
113
|
+
});
|
|
114
|
+
const protocolDid = values.protocol;
|
|
115
|
+
const claimPath = values.claim;
|
|
116
|
+
if (!protocolDid || !claimPath) {
|
|
117
|
+
throw new UsageError("facts run needs --protocol <did> and --claim <file>");
|
|
118
|
+
}
|
|
119
|
+
// `--json` is a machine reading stdout: the report lines are suppressed, errors still go to stderr.
|
|
120
|
+
const say = (line) => {
|
|
121
|
+
if (!values.json)
|
|
122
|
+
console.log(line);
|
|
123
|
+
};
|
|
124
|
+
const cwd = process.cwd();
|
|
125
|
+
let config;
|
|
126
|
+
try {
|
|
127
|
+
config = loadProjectConfig({ envFile: values["env-file"], env: values.env });
|
|
128
|
+
}
|
|
129
|
+
catch (err) {
|
|
130
|
+
// One line naming the file or the missing var — a first run in a fresh project lands here.
|
|
131
|
+
console.error(err instanceof Error ? err.message : String(err));
|
|
132
|
+
return 1;
|
|
133
|
+
}
|
|
134
|
+
// The handlers and the claim BEFORE the network: a typo in either is worth failing on for free.
|
|
135
|
+
const factsPath = resolve(cwd, values.facts ?? "src/facts/index.ts");
|
|
136
|
+
let facts;
|
|
137
|
+
try {
|
|
138
|
+
const module = (await import(pathToFileURL(factsPath).href));
|
|
139
|
+
if (!isFactsConfig(module.facts)) {
|
|
140
|
+
console.error(`${factsPath}: export \`facts\` from \`defineFacts(...)\` — that is what runs`);
|
|
141
|
+
return 64;
|
|
142
|
+
}
|
|
143
|
+
facts = module.facts;
|
|
144
|
+
}
|
|
145
|
+
catch (err) {
|
|
146
|
+
console.error(`could not load ${factsPath}: ${err instanceof Error ? err.message : err}`);
|
|
147
|
+
return 64;
|
|
148
|
+
}
|
|
149
|
+
const claimFile = resolve(cwd, claimPath);
|
|
150
|
+
let attachments;
|
|
151
|
+
let answers;
|
|
152
|
+
try {
|
|
153
|
+
const doc = readClaimFile(claimFile);
|
|
154
|
+
answers = doc.answers;
|
|
155
|
+
attachments = (doc.attachments ?? []).map((att) => {
|
|
156
|
+
const bytes = readFileSync(resolve(dirname(claimFile), att.path));
|
|
157
|
+
return {
|
|
158
|
+
question: att.question,
|
|
159
|
+
name: att.name,
|
|
160
|
+
mediaType: att.mediaType,
|
|
161
|
+
// The bytes ARE the reference here (there is no bot to fetch them from), and every reader
|
|
162
|
+
// in the kit already understands a data: URL (lib/ixo/attachments.ts).
|
|
163
|
+
url: `data:${att.mediaType};base64,${Buffer.from(bytes).toString("base64")}`,
|
|
164
|
+
size: bytes.byteLength,
|
|
165
|
+
};
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
catch (err) {
|
|
169
|
+
console.error(`could not read ${claimFile}: ${err instanceof Error ? err.message : err}`);
|
|
170
|
+
return 64;
|
|
171
|
+
}
|
|
172
|
+
const engineUrl = engineUrlFor({
|
|
173
|
+
network: resolveNetwork(values.network),
|
|
174
|
+
engineUrl: values["engine-url"],
|
|
175
|
+
devVars: config,
|
|
176
|
+
});
|
|
177
|
+
const { config: pointed, engine } = cliEngine(config, engineUrl);
|
|
178
|
+
say(`${protocolDid} @ ${engineUrl}`);
|
|
179
|
+
let manifest;
|
|
180
|
+
try {
|
|
181
|
+
const resolved = await engine.getManifest(protocolDid);
|
|
182
|
+
if (isManifestUnusable(resolved)) {
|
|
183
|
+
console.error(`${protocolDid} — UNUSABLE; the engine cannot bind this protocol's rubric:`);
|
|
184
|
+
for (const issue of resolved.issues) {
|
|
185
|
+
console.error(` ${issue.code} ${issue.path}: ${issue.message}`);
|
|
186
|
+
}
|
|
187
|
+
return 2;
|
|
188
|
+
}
|
|
189
|
+
manifest = resolved;
|
|
190
|
+
}
|
|
191
|
+
catch (err) {
|
|
192
|
+
console.error(describeError(err));
|
|
193
|
+
return 1;
|
|
194
|
+
}
|
|
195
|
+
say(`rubricId ${manifest.rubricId}`);
|
|
196
|
+
const trace = generateTraceContext();
|
|
197
|
+
const claim = {
|
|
198
|
+
claimId: `preview-${Date.now()}`,
|
|
199
|
+
collectionId: values.collection ?? "0",
|
|
200
|
+
network: pointed.IXO_NETWORK,
|
|
201
|
+
// No store in a dry run — the cellnode posture (`media: null`); the lane is never read.
|
|
202
|
+
lane: "cellnode",
|
|
203
|
+
metadata: {
|
|
204
|
+
agentDid: null,
|
|
205
|
+
agentAddress: values.agent ?? null,
|
|
206
|
+
schemaType: null,
|
|
207
|
+
submissionDate: null,
|
|
208
|
+
amount: [],
|
|
209
|
+
payment: { useIntent: false, guaranteed: false, amount: [] },
|
|
210
|
+
evaluation: null,
|
|
211
|
+
},
|
|
212
|
+
body: answers,
|
|
213
|
+
attachments,
|
|
214
|
+
// No media store in a dry run: every attachment carries its own bytes.
|
|
215
|
+
media: null,
|
|
216
|
+
};
|
|
217
|
+
// The real collection window costs one Blocksync read and needs an id. Without one the clock is
|
|
218
|
+
// still NOW — a "claim is not in the future" rule has to be judged against the same instant the
|
|
219
|
+
// deployed oracle would freeze, not against `sampleCtx`'s fixed one, which quietly rewrites the
|
|
220
|
+
// answer — but the window and submission plane around it are the sample's empty ones.
|
|
221
|
+
let ctx;
|
|
222
|
+
if (values.collection) {
|
|
223
|
+
try {
|
|
224
|
+
ctx = await resolveCtx({ config: pointed, trace }, {
|
|
225
|
+
collectionId: values.collection,
|
|
226
|
+
submitter: null,
|
|
227
|
+
submitterAddress: claim.metadata.agentAddress,
|
|
228
|
+
submissionDate: null,
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
catch (err) {
|
|
232
|
+
console.error(describeError(err));
|
|
233
|
+
return 1;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
ctx = sampleCtx({ now: new Date().toISOString() });
|
|
238
|
+
say("ctx: clock is now, window is a sample — pass --collection <id> for the real window and " +
|
|
239
|
+
"submission plane");
|
|
240
|
+
}
|
|
241
|
+
const settings = { allowAiChecks: !values["no-ai"], allowImageChecks: !values["no-ai"] };
|
|
242
|
+
if (manifest.hasAiChecks && settings.allowImageChecks) {
|
|
243
|
+
say("c2pa: inconclusive under the CLI — image provenance is only screened in the deployed oracle");
|
|
244
|
+
}
|
|
245
|
+
// On the gateway there is no binding in a terminal — the REST stand-in speaks for it (ai-rest.ts),
|
|
246
|
+
// built once, at the first model call: a missing token is that call's error, not the run's.
|
|
247
|
+
const aiSpend = new Map();
|
|
248
|
+
let restAi;
|
|
249
|
+
const cliEnv = pointed.AI_PROVIDER === "cloudflare"
|
|
250
|
+
? {
|
|
251
|
+
get AI() {
|
|
252
|
+
restAi ??= restAiFromEnv({
|
|
253
|
+
...readProjectEnv(cwd, { envFile: values["env-file"], env: values.env }),
|
|
254
|
+
...process.env,
|
|
255
|
+
});
|
|
256
|
+
return restAi;
|
|
257
|
+
},
|
|
258
|
+
}
|
|
259
|
+
: undefined;
|
|
260
|
+
const deps = {
|
|
261
|
+
config: pointed,
|
|
262
|
+
// The connector's own lines are half the value of a dry run ("it did call your endpoint") —
|
|
263
|
+
// except under `--json`, where the only thing allowed on stdout is the JSON.
|
|
264
|
+
logger: createLogger({ level: values.json ? "error" : "info", pretty: true }),
|
|
265
|
+
trace,
|
|
266
|
+
media: null,
|
|
267
|
+
cache: undefined,
|
|
268
|
+
// The buyer statement a handler may read (`tools.agreement`) is an AUTHENTICATED, registered
|
|
269
|
+
// engine read (client.ts's `getAgreement` mints an invocation and runs the register handshake) —
|
|
270
|
+
// it needs `ORACLE_SECP_MNEMONIC`, `OWNER_DELEGATION_CAR` and an on-chain grant for this oracle,
|
|
271
|
+
// same as everything else this CLI does against a live engine.
|
|
272
|
+
engine,
|
|
273
|
+
db: undefined,
|
|
274
|
+
factCache: undefined,
|
|
275
|
+
env: cliEnv,
|
|
276
|
+
aiSpend,
|
|
277
|
+
settings,
|
|
278
|
+
ctx,
|
|
279
|
+
};
|
|
280
|
+
let produced;
|
|
281
|
+
try {
|
|
282
|
+
// The provider's own `unique` handler always wins; the placeholder stands in only for the stock
|
|
283
|
+
// lane this run cannot honestly execute (see `uniqueNotRun`).
|
|
284
|
+
const stock = manifest.unique && !facts.unique ? { unique: uniqueNotRun } : undefined;
|
|
285
|
+
produced = await producerOf(facts, stock)(claim, manifest, deps);
|
|
286
|
+
}
|
|
287
|
+
catch (err) {
|
|
288
|
+
// Whatever actually failed, named: a handler's `fact.retryLater(...)` arrives here as
|
|
289
|
+
// `unavailable` (runner.ts), and a rubric declaring `unique` must not make every such throw
|
|
290
|
+
// read as a D1 problem — the hint below is gated on the stock lane's OWN error, never on a proxy.
|
|
291
|
+
console.error(describeError(err));
|
|
292
|
+
if (err instanceof AppError && /ProducerDeps\.db/.test(err.message)) {
|
|
293
|
+
console.error("unique: stock lane needs D1 — write a facts.unique handler or test it in the deployed worker");
|
|
294
|
+
}
|
|
295
|
+
return 1;
|
|
296
|
+
}
|
|
297
|
+
for (const [name, answer] of Object.entries(produced.ext))
|
|
298
|
+
say(factLine("ext", name, answer));
|
|
299
|
+
for (const [name, answer] of Object.entries(produced.ai))
|
|
300
|
+
say(factLine("ai", name, answer));
|
|
301
|
+
// The run's model spend (the stock ai lane, `tools.ai.judge`): tokens always; USD when the provider
|
|
302
|
+
// says it at call time (OpenRouter) — the gateway keeps its own in its logs.
|
|
303
|
+
for (const [model, spent] of aiSpend) {
|
|
304
|
+
const usd = spent.microUsd === null
|
|
305
|
+
? "USD in the AI Gateway's logs"
|
|
306
|
+
: `$${(spent.microUsd / 1e6).toFixed(6)}`;
|
|
307
|
+
say(`AI spend: ${model} ${spent.promptTokens}+${spent.completionTokens} tokens — ${usd}`);
|
|
308
|
+
}
|
|
309
|
+
if (produced.unique) {
|
|
310
|
+
say(produced.unique.digest === UNIQUE_NOT_RUN
|
|
311
|
+
? "unique not run under the CLI → review (needs the deployed oracle's D1)"
|
|
312
|
+
: `unique ${produced.unique.band} ${produced.unique.scoreBps}bps (${produced.unique.ruleId})`);
|
|
313
|
+
}
|
|
314
|
+
if (produced.frequency) {
|
|
315
|
+
const f = produced.frequency;
|
|
316
|
+
say(`frequency ${f.count}/${f.max} per ${f.per ?? "?"} breach=${f.breach}`);
|
|
317
|
+
}
|
|
318
|
+
const valid = validateFacts(produced, manifest);
|
|
319
|
+
if (valid.ok) {
|
|
320
|
+
say("issues: none");
|
|
321
|
+
}
|
|
322
|
+
else {
|
|
323
|
+
// The same codes the engine would answer with — a fact that misses the work order is never sent.
|
|
324
|
+
console.error(`issues: ${valid.issues.length}`);
|
|
325
|
+
for (const issue of valid.issues)
|
|
326
|
+
console.error(` ${issue.code} ${issue.path}: ${issue.message}`);
|
|
327
|
+
}
|
|
328
|
+
if (values.preview && !valid.ok) {
|
|
329
|
+
// Never sent: the engine would refuse this FactSet for the same reasons, and a preview that
|
|
330
|
+
// "failed" on a fact the oracle never produced teaches the wrong lesson.
|
|
331
|
+
console.error("--preview skipped: fix the issues above first");
|
|
332
|
+
}
|
|
333
|
+
let decision = null;
|
|
334
|
+
if (values.preview && valid.ok) {
|
|
335
|
+
const frozen = freeze(produced, claim, ctx, settings);
|
|
336
|
+
const oracleUrl = oracleUrlFor({ devVars: pointed });
|
|
337
|
+
if (!(await didDocumentServed(oracleUrl))) {
|
|
338
|
+
console.error("start `bun run dev` first — the engine resolves your did:web from it");
|
|
339
|
+
return 1;
|
|
340
|
+
}
|
|
341
|
+
try {
|
|
342
|
+
decision = await engine.preview({
|
|
343
|
+
subject: {
|
|
344
|
+
kind: "claim",
|
|
345
|
+
claimId: claim.claimId,
|
|
346
|
+
collectionId: claim.collectionId,
|
|
347
|
+
protocolDid,
|
|
348
|
+
},
|
|
349
|
+
rubric: { id: manifest.rubricId },
|
|
350
|
+
facts: frozen,
|
|
351
|
+
});
|
|
352
|
+
}
|
|
353
|
+
catch (err) {
|
|
354
|
+
console.error(describeError(err));
|
|
355
|
+
return 1;
|
|
356
|
+
}
|
|
357
|
+
say(`decision: ${decision.decision.status} ${decision.decision.verdict} (${decision.decision.action}, total ${decision.decision.totalBps ?? "—"}bps)`);
|
|
358
|
+
for (const reason of decision.decision.reasons)
|
|
359
|
+
say(` ${reason.code}: ${reason.reason}`);
|
|
360
|
+
}
|
|
361
|
+
if (values.json) {
|
|
362
|
+
console.log(JSON.stringify({ ...produced, issues: valid.ok ? [] : valid.issues, decision: decision?.decision ?? null }, null, 2));
|
|
363
|
+
}
|
|
364
|
+
return valid.ok ? 0 : 1;
|
|
365
|
+
}
|
|
366
|
+
const factLine = (kind, name, answer) => answer.status === "ok"
|
|
367
|
+
? `${kind}.${name} ok ${JSON.stringify(answer.value)}${answer.reason ? ` — ${answer.reason}` : ""}`
|
|
368
|
+
: `${kind}.${name} error(${answer.onError}) ${answer.detail}`;
|
|
369
|
+
/** The wire FactSet, frozen exactly as lib/facts/builder.ts freezes one — the strict parse is the
|
|
370
|
+
* contract asserted on our side, so a dry run fails here rather than as a 400 from the engine. */
|
|
371
|
+
function freeze(produced, claim, ctx, settings) {
|
|
372
|
+
const attachments = claim.attachments.map((att) => ({
|
|
373
|
+
question: att.question,
|
|
374
|
+
name: att.name,
|
|
375
|
+
mediaType: att.mediaType,
|
|
376
|
+
cid: att.cid ?? null,
|
|
377
|
+
size: att.size ?? null,
|
|
378
|
+
}));
|
|
379
|
+
return FactSetV1.parse({
|
|
380
|
+
version: 1,
|
|
381
|
+
frozenAt: ctx.now,
|
|
382
|
+
answers: claim.body,
|
|
383
|
+
attachments,
|
|
384
|
+
ctx,
|
|
385
|
+
ext: produced.ext,
|
|
386
|
+
ai: produced.ai,
|
|
387
|
+
...(produced.unique !== undefined ? { unique: produced.unique } : {}),
|
|
388
|
+
...(produced.frequency !== undefined ? { frequency: produced.frequency } : {}),
|
|
389
|
+
settings,
|
|
390
|
+
});
|
|
391
|
+
}
|
|
392
|
+
/**
|
|
393
|
+
* Is this oracle's did:web actually being served? The engine verifies our invocation by fetching
|
|
394
|
+
* `/.well-known/did.json` from `ORACLE_HOSTNAME`, so a preview from a laptop with nothing running
|
|
395
|
+
* there fails on the ENGINE's side with an auth error that says nothing about the real cause.
|
|
396
|
+
*/
|
|
397
|
+
async function didDocumentServed(oracleUrl) {
|
|
398
|
+
try {
|
|
399
|
+
const res = await fetch(`${oracleUrl}/.well-known/did.json`, {
|
|
400
|
+
headers: { accept: "application/json" },
|
|
401
|
+
signal: AbortSignal.timeout(5000),
|
|
402
|
+
});
|
|
403
|
+
return res.ok;
|
|
404
|
+
}
|
|
405
|
+
catch {
|
|
406
|
+
return false;
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
//# sourceMappingURL=facts-run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"facts-run.js","sourceRoot":"","sources":["../../../src/cli/commands/facts-run.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,kBAAkB,EAAiB,MAAM,wBAAwB,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAQjD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAGzD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAEvE,iGAAiG;AACjG,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AAClD,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,OAAO,EAAE,OAAO;IAChB,WAAW,EAAE,CAAC;SACX,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;QACP,6FAA6F;QAC7F,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACvB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5B,kDAAkD;QAClD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;KACxB,CAAC,CACH;SACA,QAAQ,EAAE;CACd,CAAC,CAAC;AAEH;;;;GAIG;AACH,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,GAAG,GAAY,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5D,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;IAC5F,CAAC;IACD,MAAM,OAAO,GAAI,GAA6B,CAAC,OAAO,CAAC;IACvD,OAAO,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAC/E,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC;QAC1B,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;AACtC,CAAC;AAED,kGAAkG;AAClG,MAAM,cAAc,GAAG,aAAa,CAAC;AAErC;;;;;;;;GAQG;AACH,MAAM,YAAY,GAAkB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IACjD,MAAM,EAAE,IAAI,CAAC,EAAE;IACf,MAAM,EAAE,cAAc;IACtB,QAAQ,EAAE,CAAC;IACX,IAAI,EAAE,QAAQ;IACd,MAAM,EAAE,oEAAoE;CAC7E,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,IAAc;IACtC,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE;QAC7B,OAAO,EAAE;YACP,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC5B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC9B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;YAC5B,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;YAC5B,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;YACzB,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAChC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC3B,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC9B,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SACxB;KACF,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC;IACpC,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;IAC/B,IAAI,CAAC,WAAW,IAAI,CAAC,SAAS,EAAE,CAAC;QAC/B,MAAM,IAAI,UAAU,CAAC,qDAAqD,CAAC,CAAC;IAC9E,CAAC;IACD,oGAAoG;IACpG,MAAM,GAAG,GAAG,CAAC,IAAY,EAAQ,EAAE;QACjC,IAAI,CAAC,MAAM,CAAC,IAAI;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC,CAAC;IAEF,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,iBAAiB,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IAC/E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,2FAA2F;QAC3F,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,CAAC;IACX,CAAC;IAED,gGAAgG;IAChG,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,IAAI,oBAAoB,CAAC,CAAC;IACrE,IAAI,KAAkB,CAAC;IACvB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAwB,CAAC;QACpF,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,KAAK,CAAC,GAAG,SAAS,kEAAkE,CAAC,CAAC;YAC9F,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IACvB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,kBAAkB,SAAS,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1F,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC1C,IAAI,WAAyB,CAAC;IAC9B,IAAI,OAAgC,CAAC;IACrC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;QACrC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QACtB,WAAW,GAAG,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YAChD,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;YAClE,OAAO;gBACL,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACtB,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,0FAA0F;gBAC1F,uEAAuE;gBACvE,GAAG,EAAE,QAAQ,GAAG,CAAC,SAAS,WAAW,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;gBAC5E,IAAI,EAAE,KAAK,CAAC,UAAU;aACvB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,kBAAkB,SAAS,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1F,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,SAAS,GAAG,YAAY,CAAC;QAC7B,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC;QACvC,SAAS,EAAE,MAAM,CAAC,YAAY,CAAC;QAC/B,OAAO,EAAE,MAAM;KAChB,CAAC,CAAC;IACH,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACjE,GAAG,CAAC,GAAG,WAAW,MAAM,SAAS,EAAE,CAAC,CAAC;IAErC,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACvD,IAAI,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,KAAK,CAAC,GAAG,WAAW,6DAA6D,CAAC,CAAC;YAC3F,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACpC,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACnE,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC;QACD,QAAQ,GAAG,QAAQ,CAAC;IACtB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;QAClC,OAAO,CAAC,CAAC;IACX,CAAC;IACD,GAAG,CAAC,YAAY,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;IAErC,MAAM,KAAK,GAAG,oBAAoB,EAAE,CAAC;IACrC,MAAM,KAAK,GAAgB;QACzB,OAAO,EAAE,WAAW,IAAI,CAAC,GAAG,EAAE,EAAE;QAChC,YAAY,EAAE,MAAM,CAAC,UAAU,IAAI,GAAG;QACtC,OAAO,EAAE,OAAO,CAAC,WAAW;QAC5B,wFAAwF;QACxF,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE;YACR,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI;YAClC,UAAU,EAAE,IAAI;YAChB,cAAc,EAAE,IAAI;YACpB,MAAM,EAAE,EAAE;YACV,OAAO,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;YAC5D,UAAU,EAAE,IAAI;SACjB;QACD,IAAI,EAAE,OAAO;QACb,WAAW;QACX,uEAAuE;QACvE,KAAK,EAAE,IAAI;KACZ,CAAC;IAEF,gGAAgG;IAChG,gGAAgG;IAChG,gGAAgG;IAChG,sFAAsF;IACtF,IAAI,GAAa,CAAC;IAClB,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,UAAU,CACpB,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,EAC1B;gBACE,YAAY,EAAE,MAAM,CAAC,UAAU;gBAC/B,SAAS,EAAE,IAAI;gBACf,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,YAAY;gBAC7C,cAAc,EAAE,IAAI;aACrB,CACF,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;YAClC,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;SAAM,CAAC;QACN,GAAG,GAAG,SAAS,CAAC,EAAE,GAAG,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACnD,GAAG,CACD,yFAAyF;YACvF,kBAAkB,CACrB,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,EAAE,aAAa,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IACzF,IAAI,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,gBAAgB,EAAE,CAAC;QACtD,GAAG,CACD,6FAA6F,CAC9F,CAAC;IACJ,CAAC;IAED,mGAAmG;IACnG,4FAA4F;IAC5F,MAAM,OAAO,GAAY,IAAI,GAAG,EAAE,CAAC;IACnC,IAAI,MAAoC,CAAC;IACzC,MAAM,MAAM,GACV,OAAO,CAAC,WAAW,KAAK,YAAY;QAClC,CAAC,CAAE;YACC,IAAI,EAAE;gBACJ,MAAM,KAAK,aAAa,CAAC;oBACvB,GAAG,cAAc,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;oBACxE,GAAG,OAAO,CAAC,GAAG;iBACf,CAAC,CAAC;gBACH,OAAO,MAAM,CAAC;YAChB,CAAC;SACuB;QAC5B,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,IAAI,GAAiB;QACzB,MAAM,EAAE,OAAO;QACf,4FAA4F;QAC5F,6EAA6E;QAC7E,MAAM,EAAE,YAAY,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QAC7E,KAAK;QACL,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,SAAS;QAChB,6FAA6F;QAC7F,iGAAiG;QACjG,iGAAiG;QACjG,+DAA+D;QAC/D,MAAM;QACN,EAAE,EAAE,SAAS;QACb,SAAS,EAAE,SAAS;QACpB,GAAG,EAAE,MAAM;QACX,OAAO;QACP,QAAQ;QACR,GAAG;KACJ,CAAC;IAEF,IAAI,QAAuB,CAAC;IAC5B,IAAI,CAAC;QACH,gGAAgG;QAChG,8DAA8D;QAC9D,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACtF,QAAQ,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IACnE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,sFAAsF;QACtF,4FAA4F;QAC5F,kGAAkG;QAClG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;QAClC,IAAI,GAAG,YAAY,QAAQ,IAAI,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACpE,OAAO,CAAC,KAAK,CACX,8FAA8F,CAC/F,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9F,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5F,oGAAoG;IACpG,6EAA6E;IAC7E,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;QACrC,MAAM,GAAG,GACP,KAAK,CAAC,QAAQ,KAAK,IAAI;YACrB,CAAC,CAAC,8BAA8B;YAChC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9C,GAAG,CAAC,aAAa,KAAK,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,gBAAgB,aAAa,GAAG,EAAE,CAAC,CAAC;IAC5F,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACpB,GAAG,CACD,QAAQ,CAAC,MAAM,CAAC,MAAM,KAAK,cAAc;YACvC,CAAC,CAAC,yEAAyE;YAC3E,CAAC,CAAC,UAAU,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,CAAC,MAAM,CAAC,QAAQ,QAAQ,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAChG,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC;QAC7B,GAAG,CAAC,aAAa,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,GAAG,IAAI,GAAG,WAAW,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAChD,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC;QACb,GAAG,CAAC,cAAc,CAAC,CAAC;IACtB,CAAC;SAAM,CAAC;QACN,iGAAiG;QACjG,OAAO,CAAC,KAAK,CAAC,WAAW,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAChD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM;YAC9B,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;QAChC,4FAA4F;QAC5F,yEAAyE;QACzE,OAAO,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,QAAQ,GAAsD,IAAI,CAAC;IACvE,IAAI,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;QACtD,MAAM,SAAS,GAAG,YAAY,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QACrD,IAAI,CAAC,CAAC,MAAM,iBAAiB,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;YAC1C,OAAO,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAC;YACtF,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;gBAC9B,OAAO,EAAE;oBACP,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,YAAY,EAAE,KAAK,CAAC,YAAY;oBAChC,WAAW;iBACZ;gBACD,MAAM,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE;gBACjC,KAAK,EAAE,MAAM;aACd,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;YAClC,OAAO,CAAC,CAAC;QACX,CAAC;QACD,GAAG,CACD,aAAa,QAAQ,CAAC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,KAAK,QAAQ,CAAC,QAAQ,CAAC,MAAM,WAAW,QAAQ,CAAC,QAAQ,CAAC,QAAQ,IAAI,GAAG,MAAM,CAClJ,CAAC;QACF,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO;YAAE,GAAG,CAAC,KAAK,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CACZ,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,IAAI,IAAI,EAAE,EAC3F,IAAI,EACJ,CAAC,CACF,CACF,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,QAAQ,GAAG,CAAC,IAAkB,EAAE,IAAY,EAAE,MAAwB,EAAU,EAAE,CACtF,MAAM,CAAC,MAAM,KAAK,IAAI;IACpB,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;IACnG,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,UAAU,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;AAElE;mGACmG;AACnG,SAAS,MAAM,CACb,QAAuB,EACvB,KAAkB,EAClB,GAAa,EACb,QAAsB;IAEtB,MAAM,WAAW,GAAqB,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACpE,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI;QACpB,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI;KACvB,CAAC,CAAC,CAAC;IACJ,OAAO,SAAS,CAAC,KAAK,CAAC;QACrB,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,GAAG,CAAC,GAAG;QACjB,OAAO,EAAE,KAAK,CAAC,IAAI;QACnB,WAAW;QACX,GAAG;QACH,GAAG,EAAE,QAAQ,CAAC,GAAG;QACjB,EAAE,EAAE,QAAQ,CAAC,EAAE;QACf,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,GAAG,CAAC,QAAQ,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9E,QAAQ;KACT,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,iBAAiB,CAAC,SAAiB;IAChD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,SAAS,uBAAuB,EAAE;YAC3D,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;YACvC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;SAClC,CAAC,CAAC;QACH,OAAO,GAAG,CAAC,EAAE,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `decision-oracle facts scaffold <did>` — write a stub handler, and a test for it, for every name in a
|
|
3
|
+
* protocol's work order that needs one (`--all`: for every declared name). The classification is
|
|
4
|
+
* `protocol review`'s, shared through lib/workorder.ts.
|
|
5
|
+
*
|
|
6
|
+
* decision-oracle facts scaffold <protocol did> [--all] [--dir src/facts]
|
|
7
|
+
* [--engine-url <url>] [--network devnet|testnet|mainnet] [--env-file <path>]
|
|
8
|
+
*
|
|
9
|
+
* A stub is a VISIBLE error — `fact.error("not implemented: <name>")` — never `tools.stock()` and
|
|
10
|
+
* never a plausible-looking value. A forgotten stub must fail the fact (and, through the rubric's
|
|
11
|
+
* own `onError`, send the claim to review or reject); a forgotten stub that returned a pass would
|
|
12
|
+
* approve claims on evidence nobody ever produced. The generated test asserts exactly that error,
|
|
13
|
+
* so it goes red the moment someone implements the handler — which is the reminder to write the
|
|
14
|
+
* real test.
|
|
15
|
+
*
|
|
16
|
+
* Nothing is ever overwritten: a file that exists is reported as `skipped` and left alone.
|
|
17
|
+
*
|
|
18
|
+
* Exit codes: 0 written (or nothing to write) · 2 the rubric is unusable · 1 the engine refused the
|
|
19
|
+
* call or is unreachable · 64 usage.
|
|
20
|
+
*/
|
|
21
|
+
export declare function run(argv: string[]): Promise<number>;
|
|
22
|
+
//# sourceMappingURL=facts-scaffold.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"facts-scaffold.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/facts-scaffold.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAeH,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAgGzD"}
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `decision-oracle facts scaffold <did>` — write a stub handler, and a test for it, for every name in a
|
|
3
|
+
* protocol's work order that needs one (`--all`: for every declared name). The classification is
|
|
4
|
+
* `protocol review`'s, shared through lib/workorder.ts.
|
|
5
|
+
*
|
|
6
|
+
* decision-oracle facts scaffold <protocol did> [--all] [--dir src/facts]
|
|
7
|
+
* [--engine-url <url>] [--network devnet|testnet|mainnet] [--env-file <path>]
|
|
8
|
+
*
|
|
9
|
+
* A stub is a VISIBLE error — `fact.error("not implemented: <name>")` — never `tools.stock()` and
|
|
10
|
+
* never a plausible-looking value. A forgotten stub must fail the fact (and, through the rubric's
|
|
11
|
+
* own `onError`, send the claim to review or reject); a forgotten stub that returned a pass would
|
|
12
|
+
* approve claims on evidence nobody ever produced. The generated test asserts exactly that error,
|
|
13
|
+
* so it goes red the moment someone implements the handler — which is the reminder to write the
|
|
14
|
+
* real test.
|
|
15
|
+
*
|
|
16
|
+
* Nothing is ever overwritten: a file that exists is reported as `skipped` and left alone.
|
|
17
|
+
*
|
|
18
|
+
* Exit codes: 0 written (or nothing to write) · 2 the rubric is unusable · 1 the engine refused the
|
|
19
|
+
* call or is unreachable · 64 usage.
|
|
20
|
+
*/
|
|
21
|
+
import { existsSync, mkdirSync, writeFileSync } from "node:fs";
|
|
22
|
+
import { dirname, join, relative, resolve } from "node:path";
|
|
23
|
+
import process from "node:process";
|
|
24
|
+
import { isManifestUnusable } from "../../lib/engine/types.js";
|
|
25
|
+
import { parse, UsageError } from "../lib/args.js";
|
|
26
|
+
import { resolveNetwork } from "../lib/chain.js";
|
|
27
|
+
import { tryProjectConfig } from "../lib/devvars.js";
|
|
28
|
+
import { engineUrlFor, fetchManifest } from "../lib/engine.js";
|
|
29
|
+
import { classify } from "../lib/workorder.js";
|
|
30
|
+
/** Where the generated tests go — beside the provider's own, in the project's test tree. */
|
|
31
|
+
const TEST_DIR = "test/facts";
|
|
32
|
+
export async function run(argv) {
|
|
33
|
+
const { values, positionals } = parse(argv, {
|
|
34
|
+
options: {
|
|
35
|
+
all: { type: "boolean" },
|
|
36
|
+
dir: { type: "string" },
|
|
37
|
+
"engine-url": { type: "string" },
|
|
38
|
+
network: { type: "string" },
|
|
39
|
+
"env-file": { type: "string" },
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
const did = positionals[0];
|
|
43
|
+
if (!did)
|
|
44
|
+
throw new UsageError("facts scaffold needs a protocol did");
|
|
45
|
+
const engineUrl = engineUrlFor({
|
|
46
|
+
network: resolveNetwork(values.network),
|
|
47
|
+
engineUrl: values["engine-url"],
|
|
48
|
+
devVars: tryProjectConfig({ envFile: values["env-file"] }),
|
|
49
|
+
});
|
|
50
|
+
let manifest;
|
|
51
|
+
try {
|
|
52
|
+
manifest = await fetchManifest(engineUrl, did);
|
|
53
|
+
}
|
|
54
|
+
catch (err) {
|
|
55
|
+
console.error(err instanceof Error ? err.message : String(err));
|
|
56
|
+
return 1;
|
|
57
|
+
}
|
|
58
|
+
if (isManifestUnusable(manifest)) {
|
|
59
|
+
console.error(`${did} — UNUSABLE (${engineUrl}); nothing to scaffold:`);
|
|
60
|
+
for (const issue of manifest.issues) {
|
|
61
|
+
console.error(` ${issue.code} ${issue.path}: ${issue.message}`);
|
|
62
|
+
}
|
|
63
|
+
return 2;
|
|
64
|
+
}
|
|
65
|
+
const order = classify(manifest);
|
|
66
|
+
// A refused source (audience ≠ endpoint) is the rubric's to fix — never a stub (lib/workorder.ts).
|
|
67
|
+
const declared = [...order.ext, ...order.ai].filter((w) => !w.refused);
|
|
68
|
+
for (const name of order.refused) {
|
|
69
|
+
console.log(`skipping ${name} — refused: its audience is not its endpoint's did:web; fix the rubric`);
|
|
70
|
+
}
|
|
71
|
+
const wanted = values.all ? declared : declared.filter((w) => !w.stock);
|
|
72
|
+
console.log(`${did} @ ${engineUrl}`);
|
|
73
|
+
if (wanted.length === 0) {
|
|
74
|
+
console.log(declared.length === 0
|
|
75
|
+
? "no sources or AI checks declared — nothing to scaffold."
|
|
76
|
+
: "every declared name is stock-shaped — nothing to scaffold (--all writes a stub for each of them anyway).");
|
|
77
|
+
return 0;
|
|
78
|
+
}
|
|
79
|
+
const cwd = process.cwd();
|
|
80
|
+
const factsDir = resolve(cwd, values.dir ?? "src/facts");
|
|
81
|
+
const testsDir = resolve(cwd, TEST_DIR);
|
|
82
|
+
const written = [];
|
|
83
|
+
for (const work of wanted) {
|
|
84
|
+
// A fact name is a rubric author's string; only an identifier can be a `const` and an import.
|
|
85
|
+
if (!/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(work.name)) {
|
|
86
|
+
console.log(`cannot scaffold ${work.kind}.${work.name} — not a JavaScript identifier; write this handler by hand`);
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
// `work` was classified from THIS manifest, so its declaration is there — the cast is the index
|
|
90
|
+
// signature's, not a claim about the data.
|
|
91
|
+
const source = manifest.ext[work.name];
|
|
92
|
+
const check = manifest.ai[work.name];
|
|
93
|
+
const handlerPath = join(factsDir, `${work.name}.ts`);
|
|
94
|
+
// The test rides WITH its stub, never on its own: a handler someone already implemented would
|
|
95
|
+
// otherwise gain a test asserting it is not implemented, and turn a working project red.
|
|
96
|
+
if (!write(cwd, handlerPath, work.kind === "ext" ? extStub(work.name, source) : aiStub(work.name, check))) {
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
written.push(work);
|
|
100
|
+
// The generated test declares the same fact to `sampleManifest` — an `expect` for a source, the
|
|
101
|
+
// instructions for a check — so it runs the handler the way the work order will.
|
|
102
|
+
const importPath = importSpecifier(testsDir, handlerPath);
|
|
103
|
+
const declaration = work.kind === "ext"
|
|
104
|
+
? `{ expect: ${JSON.stringify(source.expect)} }`
|
|
105
|
+
: `{ instructions: ${JSON.stringify(check.instructions)} }`;
|
|
106
|
+
write(cwd, join(testsDir, `${work.name}.test.ts`), handlerTest(work, importPath, declaration));
|
|
107
|
+
}
|
|
108
|
+
if (written.length > 0)
|
|
109
|
+
console.log(`\nadd to ${relative(cwd, join(factsDir, "index.ts"))}:\n`);
|
|
110
|
+
for (const line of tableLines(written))
|
|
111
|
+
console.log(line ? ` ${line}` : "");
|
|
112
|
+
return 0;
|
|
113
|
+
}
|
|
114
|
+
/** Write unless it exists — a handler someone already wrote is never ours to replace. */
|
|
115
|
+
function write(cwd, path, body) {
|
|
116
|
+
const shown = relative(cwd, path);
|
|
117
|
+
if (existsSync(path)) {
|
|
118
|
+
console.log(`skipped ${shown} (already exists)`);
|
|
119
|
+
return false;
|
|
120
|
+
}
|
|
121
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
122
|
+
writeFileSync(path, body);
|
|
123
|
+
console.log(`wrote ${shown}`);
|
|
124
|
+
return true;
|
|
125
|
+
}
|
|
126
|
+
/** `../../src/facts/<name>` — how the generated test imports the handler beside it. */
|
|
127
|
+
function importSpecifier(fromDir, handlerPath) {
|
|
128
|
+
const rel = relative(fromDir, handlerPath.replace(/\.ts$/, "")).split("\\").join("/");
|
|
129
|
+
return rel.startsWith(".") ? rel : `./${rel}`;
|
|
130
|
+
}
|
|
131
|
+
function extStub(name, source) {
|
|
132
|
+
return `import { fact, type ExtHandler } from "@ixo/decision-oracle/facts";
|
|
133
|
+
/**
|
|
134
|
+
* \`${name}\` — ${source.expect} source, onError ${source.onError}. Declared send map: ${JSON.stringify(source.send)}.
|
|
135
|
+
* Endpoint the rubric declares: ${source.endpoint} (audience ${source.audience}).
|
|
136
|
+
* Replace the body below with the real read. Never return a guessed value: an unreachable or
|
|
137
|
+
* unknown answer is \`fact.error(...)\` (the rubric's own onError decides), a transient failure is
|
|
138
|
+
* \`throw fact.retryLater(...)\`.
|
|
139
|
+
*/
|
|
140
|
+
export const ${name}: ExtHandler = async (input, tools) => {
|
|
141
|
+
return fact.error("not implemented: ${name}");
|
|
142
|
+
};
|
|
143
|
+
`;
|
|
144
|
+
}
|
|
145
|
+
function aiStub(name, check) {
|
|
146
|
+
const instructions = check.instructions.map((line) => ` * - ${line}`).join("\n");
|
|
147
|
+
return `import { fact, type AiHandler } from "@ixo/decision-oracle/facts";
|
|
148
|
+
/**
|
|
149
|
+
* \`${name}\` — AI check, onError ${check.onError}. Declared send map: ${JSON.stringify(check.send)}.
|
|
150
|
+
* The instructions the rubric declares, ALL of which must hold for a \`true\` verdict:
|
|
151
|
+
${instructions}
|
|
152
|
+
* Replace the body below with the real judgment (\`tools.ai.judge\` runs the kit's own model call).
|
|
153
|
+
* Never return a guessed value: an unreachable or unknown answer is \`fact.error(...)\` (the rubric's
|
|
154
|
+
* own onError decides), a transient failure is \`throw fact.retryLater(...)\`.
|
|
155
|
+
*/
|
|
156
|
+
export const ${name}: AiHandler = async (input, tools) => {
|
|
157
|
+
return fact.error("not implemented: ${name}");
|
|
158
|
+
};
|
|
159
|
+
`;
|
|
160
|
+
}
|
|
161
|
+
/** The test that goes red the day the stub is implemented — the reminder to write the real one. */
|
|
162
|
+
function handlerTest(work, importPath, declaration) {
|
|
163
|
+
const { name, kind } = work;
|
|
164
|
+
return `import { defineFacts } from "@ixo/decision-oracle/facts";
|
|
165
|
+
import { fakeTools, runFacts, sampleClaim, sampleManifest } from "@ixo/decision-oracle/testing";
|
|
166
|
+
import { describe, expect, it } from "vitest";
|
|
167
|
+
import { ${name} } from "${importPath}";
|
|
168
|
+
|
|
169
|
+
describe("${name}", () => {
|
|
170
|
+
it("is not implemented yet — replace this with what the real handler must answer", async () => {
|
|
171
|
+
const out = await runFacts(defineFacts({ ${kind}: { ${name} } }), {
|
|
172
|
+
claim: sampleClaim({}),
|
|
173
|
+
manifest: sampleManifest({ ${kind}: { ${name}: ${declaration} } }),
|
|
174
|
+
tools: fakeTools(),
|
|
175
|
+
});
|
|
176
|
+
|
|
177
|
+
expect(out.${kind}.${name}).toMatchObject({
|
|
178
|
+
status: "error",
|
|
179
|
+
detail: "not implemented: ${name}",
|
|
180
|
+
});
|
|
181
|
+
});
|
|
182
|
+
});
|
|
183
|
+
`;
|
|
184
|
+
}
|
|
185
|
+
/** The `defineFacts` table the new handlers belong in — printed, never written: that file is the
|
|
186
|
+
* provider's, and it usually already holds handlers of their own. */
|
|
187
|
+
function tableLines(written) {
|
|
188
|
+
if (written.length === 0)
|
|
189
|
+
return [];
|
|
190
|
+
const names = (kind) => written
|
|
191
|
+
.filter((w) => w.kind === kind)
|
|
192
|
+
.map((w) => w.name)
|
|
193
|
+
.join(", ");
|
|
194
|
+
const lanes = ["ext", "ai"]
|
|
195
|
+
.filter((kind) => names(kind).length > 0)
|
|
196
|
+
.map((kind) => ` ${kind}: { ${names(kind)} },`);
|
|
197
|
+
return [
|
|
198
|
+
'import { defineFacts } from "@ixo/decision-oracle/facts";',
|
|
199
|
+
// The specifier is quoted with `JSON.stringify` rather than written inline so this generated
|
|
200
|
+
// line is not itself mistaken for an import of this file (scripts/build.ts rewrites those).
|
|
201
|
+
...written.map((w) => `import { ${w.name} } from ${JSON.stringify(`./${w.name}`)};`),
|
|
202
|
+
"",
|
|
203
|
+
"export const facts = defineFacts({",
|
|
204
|
+
...lanes,
|
|
205
|
+
"});",
|
|
206
|
+
];
|
|
207
|
+
}
|
|
208
|
+
//# sourceMappingURL=facts-scaffold.js.map
|