@ixo/openhands-sdk 0.0.0-stage → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +245 -2
- package/dist/cjs/board.d.ts +20 -0
- package/dist/cjs/board.d.ts.map +1 -0
- package/dist/cjs/board.js +60 -0
- package/dist/cjs/board.js.map +1 -0
- package/dist/cjs/campaign/badges.d.ts +30 -0
- package/dist/cjs/campaign/badges.d.ts.map +1 -0
- package/dist/cjs/campaign/badges.js +69 -0
- package/dist/cjs/campaign/badges.js.map +1 -0
- package/dist/cjs/campaign/bands.d.ts +161 -0
- package/dist/cjs/campaign/bands.d.ts.map +1 -0
- package/dist/cjs/campaign/bands.js +186 -0
- package/dist/cjs/campaign/bands.js.map +1 -0
- package/dist/cjs/campaign/campaign.d.ts +50 -0
- package/dist/cjs/campaign/campaign.d.ts.map +1 -0
- package/dist/cjs/campaign/campaign.js +183 -0
- package/dist/cjs/campaign/campaign.js.map +1 -0
- package/dist/cjs/campaign/campaigns.d.ts +2 -0
- package/dist/cjs/campaign/campaigns.d.ts.map +1 -0
- package/dist/cjs/campaign/campaigns.js +37 -0
- package/dist/cjs/campaign/campaigns.js.map +1 -0
- package/dist/cjs/campaign/cleanable.d.ts +13 -0
- package/dist/cjs/campaign/cleanable.d.ts.map +1 -0
- package/dist/cjs/campaign/cleanable.js +6 -0
- package/dist/cjs/campaign/cleanable.js.map +1 -0
- package/dist/cjs/campaign/cleanup.d.ts +78 -0
- package/dist/cjs/campaign/cleanup.d.ts.map +1 -0
- package/dist/cjs/campaign/cleanup.js +132 -0
- package/dist/cjs/campaign/cleanup.js.map +1 -0
- package/dist/cjs/campaign/commit.d.ts +39 -0
- package/dist/cjs/campaign/commit.d.ts.map +1 -0
- package/dist/cjs/campaign/commit.js +43 -0
- package/dist/cjs/campaign/commit.js.map +1 -0
- package/dist/cjs/campaign/field.d.ts +50 -0
- package/dist/cjs/campaign/field.d.ts.map +1 -0
- package/dist/cjs/campaign/field.js +94 -0
- package/dist/cjs/campaign/field.js.map +1 -0
- package/dist/cjs/campaign/fold.d.ts +227 -0
- package/dist/cjs/campaign/fold.d.ts.map +1 -0
- package/dist/cjs/campaign/fold.js +459 -0
- package/dist/cjs/campaign/fold.js.map +1 -0
- package/dist/cjs/campaign/funding.d.ts +153 -0
- package/dist/cjs/campaign/funding.d.ts.map +1 -0
- package/dist/cjs/campaign/funding.js +168 -0
- package/dist/cjs/campaign/funding.js.map +1 -0
- package/dist/cjs/campaign/landing.d.ts +20 -0
- package/dist/cjs/campaign/landing.d.ts.map +1 -0
- package/dist/cjs/campaign/landing.js +54 -0
- package/dist/cjs/campaign/landing.js.map +1 -0
- package/dist/cjs/campaign/pledges.d.ts +237 -0
- package/dist/cjs/campaign/pledges.d.ts.map +1 -0
- package/dist/cjs/campaign/pledges.js +235 -0
- package/dist/cjs/campaign/pledges.js.map +1 -0
- package/dist/cjs/campaign/pledgesChain.d.ts +58 -0
- package/dist/cjs/campaign/pledgesChain.d.ts.map +1 -0
- package/dist/cjs/campaign/pledgesChain.js +102 -0
- package/dist/cjs/campaign/pledgesChain.js.map +1 -0
- package/dist/cjs/campaign/pool.d.ts +137 -0
- package/dist/cjs/campaign/pool.d.ts.map +1 -0
- package/dist/cjs/campaign/pool.js +237 -0
- package/dist/cjs/campaign/pool.js.map +1 -0
- package/dist/cjs/campaign/record.d.ts +115 -0
- package/dist/cjs/campaign/record.d.ts.map +1 -0
- package/dist/cjs/campaign/record.js +291 -0
- package/dist/cjs/campaign/record.js.map +1 -0
- package/dist/cjs/campaign/rule.d.ts +311 -0
- package/dist/cjs/campaign/rule.d.ts.map +1 -0
- package/dist/cjs/campaign/rule.js +210 -0
- package/dist/cjs/campaign/rule.js.map +1 -0
- package/dist/cjs/campaign/spot.d.ts +37 -0
- package/dist/cjs/campaign/spot.d.ts.map +1 -0
- package/dist/cjs/campaign/spot.js +170 -0
- package/dist/cjs/campaign/spot.js.map +1 -0
- package/dist/cjs/campaign/spots.d.ts +437 -0
- package/dist/cjs/campaign/spots.d.ts.map +1 -0
- package/dist/cjs/campaign/spots.js +790 -0
- package/dist/cjs/campaign/spots.js.map +1 -0
- package/dist/cjs/campaign/standings.d.ts +236 -0
- package/dist/cjs/campaign/standings.d.ts.map +1 -0
- package/dist/cjs/campaign/standings.js +372 -0
- package/dist/cjs/campaign/standings.js.map +1 -0
- package/dist/cjs/campaign/treasurySends.d.ts +116 -0
- package/dist/cjs/campaign/treasurySends.d.ts.map +1 -0
- package/dist/cjs/campaign/treasurySends.js +198 -0
- package/dist/cjs/campaign/treasurySends.js.map +1 -0
- package/dist/cjs/campaign.d.ts +29 -0
- package/dist/cjs/campaign.d.ts.map +1 -0
- package/dist/cjs/campaign.js +44 -0
- package/dist/cjs/campaign.js.map +1 -0
- package/dist/cjs/chain/account.d.ts +47 -0
- package/dist/cjs/chain/account.d.ts.map +1 -0
- package/dist/cjs/chain/account.js +196 -0
- package/dist/cjs/chain/account.js.map +1 -0
- package/dist/cjs/chain/accountProof.d.ts +135 -0
- package/dist/cjs/chain/accountProof.d.ts.map +1 -0
- package/dist/cjs/chain/accountProof.js +199 -0
- package/dist/cjs/chain/accountProof.js.map +1 -0
- package/dist/cjs/chain/allowance.d.ts +17 -0
- package/dist/cjs/chain/allowance.d.ts.map +1 -0
- package/dist/cjs/chain/allowance.js +81 -0
- package/dist/cjs/chain/allowance.js.map +1 -0
- package/dist/cjs/chain/allowanceRead.d.ts +2 -0
- package/dist/cjs/chain/allowanceRead.d.ts.map +1 -0
- package/dist/cjs/chain/allowanceRead.js +59 -0
- package/dist/cjs/chain/allowanceRead.js.map +1 -0
- package/dist/cjs/chain/ask.d.ts +211 -0
- package/dist/cjs/chain/ask.d.ts.map +1 -0
- package/dist/cjs/chain/ask.js +559 -0
- package/dist/cjs/chain/ask.js.map +1 -0
- package/dist/cjs/chain/bridge.d.ts +50 -0
- package/dist/cjs/chain/bridge.d.ts.map +1 -0
- package/dist/cjs/chain/bridge.js +82 -0
- package/dist/cjs/chain/bridge.js.map +1 -0
- package/dist/cjs/chain/broadcast.d.ts +40 -0
- package/dist/cjs/chain/broadcast.d.ts.map +1 -0
- package/dist/cjs/chain/broadcast.js +189 -0
- package/dist/cjs/chain/broadcast.js.map +1 -0
- package/dist/cjs/chain/delegate.d.ts +154 -0
- package/dist/cjs/chain/delegate.d.ts.map +1 -0
- package/dist/cjs/chain/delegate.js +245 -0
- package/dist/cjs/chain/delegate.js.map +1 -0
- package/dist/cjs/chain/encoding.d.ts +7 -0
- package/dist/cjs/chain/encoding.d.ts.map +1 -0
- package/dist/cjs/chain/encoding.js +29 -0
- package/dist/cjs/chain/encoding.js.map +1 -0
- package/dist/cjs/chain/env.d.ts +50 -0
- package/dist/cjs/chain/env.d.ts.map +1 -0
- package/dist/cjs/chain/env.js +89 -0
- package/dist/cjs/chain/env.js.map +1 -0
- package/dist/cjs/chain/gate.d.ts +12 -0
- package/dist/cjs/chain/gate.d.ts.map +1 -0
- package/dist/cjs/chain/gate.js +55 -0
- package/dist/cjs/chain/gate.js.map +1 -0
- package/dist/cjs/chain/grantPending.d.ts +31 -0
- package/dist/cjs/chain/grantPending.d.ts.map +1 -0
- package/dist/cjs/chain/grantPending.js +56 -0
- package/dist/cjs/chain/grantPending.js.map +1 -0
- package/dist/cjs/chain/guest.d.ts +97 -0
- package/dist/cjs/chain/guest.d.ts.map +1 -0
- package/dist/cjs/chain/guest.js +211 -0
- package/dist/cjs/chain/guest.js.map +1 -0
- package/dist/cjs/chain/iid.d.ts +26 -0
- package/dist/cjs/chain/iid.d.ts.map +1 -0
- package/dist/cjs/chain/iid.js +71 -0
- package/dist/cjs/chain/iid.js.map +1 -0
- package/dist/cjs/chain/money.d.ts +48 -0
- package/dist/cjs/chain/money.d.ts.map +1 -0
- package/dist/cjs/chain/money.js +72 -0
- package/dist/cjs/chain/money.js.map +1 -0
- package/dist/cjs/chain/oracle.d.ts +24 -0
- package/dist/cjs/chain/oracle.d.ts.map +1 -0
- package/dist/cjs/chain/oracle.js +46 -0
- package/dist/cjs/chain/oracle.js.map +1 -0
- package/dist/cjs/chain/pendingTransact.d.ts +31 -0
- package/dist/cjs/chain/pendingTransact.d.ts.map +1 -0
- package/dist/cjs/chain/pendingTransact.js +64 -0
- package/dist/cjs/chain/pendingTransact.js.map +1 -0
- package/dist/cjs/chain/query.d.ts +75 -0
- package/dist/cjs/chain/query.d.ts.map +1 -0
- package/dist/cjs/chain/query.js +171 -0
- package/dist/cjs/chain/query.js.map +1 -0
- package/dist/cjs/chain/send.d.ts +42 -0
- package/dist/cjs/chain/send.d.ts.map +1 -0
- package/dist/cjs/chain/send.js +54 -0
- package/dist/cjs/chain/send.js.map +1 -0
- package/dist/cjs/chain/session.d.ts +109 -0
- package/dist/cjs/chain/session.d.ts.map +1 -0
- package/dist/cjs/chain/session.js +145 -0
- package/dist/cjs/chain/session.js.map +1 -0
- package/dist/cjs/chain/signWith.d.ts +69 -0
- package/dist/cjs/chain/signWith.d.ts.map +1 -0
- package/dist/cjs/chain/signWith.js +277 -0
- package/dist/cjs/chain/signWith.js.map +1 -0
- package/dist/cjs/chain/signer.d.ts +38 -0
- package/dist/cjs/chain/signer.d.ts.map +1 -0
- package/dist/cjs/chain/signer.js +78 -0
- package/dist/cjs/chain/signer.js.map +1 -0
- package/dist/cjs/chain/signx.d.ts +233 -0
- package/dist/cjs/chain/signx.d.ts.map +1 -0
- package/dist/cjs/chain/signx.js +490 -0
- package/dist/cjs/chain/signx.js.map +1 -0
- package/dist/cjs/chain/sponsor.d.ts +2 -0
- package/dist/cjs/chain/sponsor.d.ts.map +1 -0
- package/dist/cjs/chain/sponsor.js +76 -0
- package/dist/cjs/chain/sponsor.js.map +1 -0
- package/dist/cjs/chain/store.d.ts +115 -0
- package/dist/cjs/chain/store.d.ts.map +1 -0
- package/dist/cjs/chain/store.js +212 -0
- package/dist/cjs/chain/store.js.map +1 -0
- package/dist/cjs/chain/subscription.d.ts +73 -0
- package/dist/cjs/chain/subscription.d.ts.map +1 -0
- package/dist/cjs/chain/subscription.js +248 -0
- package/dist/cjs/chain/subscription.js.map +1 -0
- package/dist/cjs/chain/takeBack.d.ts +114 -0
- package/dist/cjs/chain/takeBack.d.ts.map +1 -0
- package/dist/cjs/chain/takeBack.js +190 -0
- package/dist/cjs/chain/takeBack.js.map +1 -0
- package/dist/cjs/chain/union.d.ts +125 -0
- package/dist/cjs/chain/union.d.ts.map +1 -0
- package/dist/cjs/chain/union.js +338 -0
- package/dist/cjs/chain/union.js.map +1 -0
- package/dist/cjs/chain/webauthn.d.ts +22 -0
- package/dist/cjs/chain/webauthn.d.ts.map +1 -0
- package/dist/cjs/chain/webauthn.js +70 -0
- package/dist/cjs/chain/webauthn.js.map +1 -0
- package/dist/cjs/chain.d.ts +35 -0
- package/dist/cjs/chain.d.ts.map +1 -0
- package/dist/cjs/chain.js +119 -0
- package/dist/cjs/chain.js.map +1 -0
- package/dist/cjs/config.d.ts +120 -0
- package/dist/cjs/config.d.ts.map +1 -0
- package/dist/cjs/config.js +128 -0
- package/dist/cjs/config.js.map +1 -0
- package/dist/cjs/data/accept.d.ts +69 -0
- package/dist/cjs/data/accept.d.ts.map +1 -0
- package/dist/cjs/data/accept.js +192 -0
- package/dist/cjs/data/accept.js.map +1 -0
- package/dist/cjs/data/agent.d.ts +87 -0
- package/dist/cjs/data/agent.d.ts.map +1 -0
- package/dist/cjs/data/agent.js +112 -0
- package/dist/cjs/data/agent.js.map +1 -0
- package/dist/cjs/data/askFilter.d.ts +45 -0
- package/dist/cjs/data/askFilter.d.ts.map +1 -0
- package/dist/cjs/data/askFilter.js +53 -0
- package/dist/cjs/data/askFilter.js.map +1 -0
- package/dist/cjs/data/authenticators.d.ts +35 -0
- package/dist/cjs/data/authenticators.d.ts.map +1 -0
- package/dist/cjs/data/authenticators.js +76 -0
- package/dist/cjs/data/authenticators.js.map +1 -0
- package/dist/cjs/data/balance.d.ts +39 -0
- package/dist/cjs/data/balance.d.ts.map +1 -0
- package/dist/cjs/data/balance.js +119 -0
- package/dist/cjs/data/balance.js.map +1 -0
- package/dist/cjs/data/board/assemble.d.ts +140 -0
- package/dist/cjs/data/board/assemble.d.ts.map +1 -0
- package/dist/cjs/data/board/assemble.js +556 -0
- package/dist/cjs/data/board/assemble.js.map +1 -0
- package/dist/cjs/data/board/coverage.d.ts +112 -0
- package/dist/cjs/data/board/coverage.d.ts.map +1 -0
- package/dist/cjs/data/board/coverage.js +192 -0
- package/dist/cjs/data/board/coverage.js.map +1 -0
- package/dist/cjs/data/board/facts.d.ts +63 -0
- package/dist/cjs/data/board/facts.d.ts.map +1 -0
- package/dist/cjs/data/board/facts.js +137 -0
- package/dist/cjs/data/board/facts.js.map +1 -0
- package/dist/cjs/data/board/fixtures.d.ts +21 -0
- package/dist/cjs/data/board/fixtures.d.ts.map +1 -0
- package/dist/cjs/data/board/fixtures.js +46 -0
- package/dist/cjs/data/board/fixtures.js.map +1 -0
- package/dist/cjs/data/board/query.d.ts +12 -0
- package/dist/cjs/data/board/query.d.ts.map +1 -0
- package/dist/cjs/data/board/query.js +82 -0
- package/dist/cjs/data/board/query.js.map +1 -0
- package/dist/cjs/data/board/rank.d.ts +22 -0
- package/dist/cjs/data/board/rank.d.ts.map +1 -0
- package/dist/cjs/data/board/rank.js +51 -0
- package/dist/cjs/data/board/rank.js.map +1 -0
- package/dist/cjs/data/board/read.d.ts +102 -0
- package/dist/cjs/data/board/read.d.ts.map +1 -0
- package/dist/cjs/data/board/read.js +211 -0
- package/dist/cjs/data/board/read.js.map +1 -0
- package/dist/cjs/data/board/series.d.ts +50 -0
- package/dist/cjs/data/board/series.d.ts.map +1 -0
- package/dist/cjs/data/board/series.js +161 -0
- package/dist/cjs/data/board/series.js.map +1 -0
- package/dist/cjs/data/board/trust.d.ts +31 -0
- package/dist/cjs/data/board/trust.d.ts.map +1 -0
- package/dist/cjs/data/board/trust.js +53 -0
- package/dist/cjs/data/board/trust.js.map +1 -0
- package/dist/cjs/data/board/types.d.ts +338 -0
- package/dist/cjs/data/board/types.d.ts.map +1 -0
- package/dist/cjs/data/board/types.js +88 -0
- package/dist/cjs/data/board/types.js.map +1 -0
- package/dist/cjs/data/board/url.d.ts +22 -0
- package/dist/cjs/data/board/url.d.ts.map +1 -0
- package/dist/cjs/data/board/url.js +70 -0
- package/dist/cjs/data/board/url.js.map +1 -0
- package/dist/cjs/data/board/words.d.ts +25 -0
- package/dist/cjs/data/board/words.d.ts.map +1 -0
- package/dist/cjs/data/board/words.js +60 -0
- package/dist/cjs/data/board/words.js.map +1 -0
- package/dist/cjs/data/cid.d.ts +49 -0
- package/dist/cjs/data/cid.d.ts.map +1 -0
- package/dist/cjs/data/cid.js +91 -0
- package/dist/cjs/data/cid.js.map +1 -0
- package/dist/cjs/data/concurrency.d.ts +14 -0
- package/dist/cjs/data/concurrency.d.ts.map +1 -0
- package/dist/cjs/data/concurrency.js +32 -0
- package/dist/cjs/data/concurrency.js.map +1 -0
- package/dist/cjs/data/credentials.d.ts +28 -0
- package/dist/cjs/data/credentials.d.ts.map +1 -0
- package/dist/cjs/data/credentials.js +81 -0
- package/dist/cjs/data/credentials.js.map +1 -0
- package/dist/cjs/data/denoms.d.ts +11 -0
- package/dist/cjs/data/denoms.d.ts.map +1 -0
- package/dist/cjs/data/denoms.js +106 -0
- package/dist/cjs/data/denoms.js.map +1 -0
- package/dist/cjs/data/displayNames.d.ts +58 -0
- package/dist/cjs/data/displayNames.d.ts.map +1 -0
- package/dist/cjs/data/displayNames.js +99 -0
- package/dist/cjs/data/displayNames.js.map +1 -0
- package/dist/cjs/data/docPath.d.ts +28 -0
- package/dist/cjs/data/docPath.d.ts.map +1 -0
- package/dist/cjs/data/docPath.js +44 -0
- package/dist/cjs/data/docPath.js.map +1 -0
- package/dist/cjs/data/docUrls.d.ts +38 -0
- package/dist/cjs/data/docUrls.d.ts.map +1 -0
- package/dist/cjs/data/docUrls.js +70 -0
- package/dist/cjs/data/docUrls.js.map +1 -0
- package/dist/cjs/data/docs.d.ts +61 -0
- package/dist/cjs/data/docs.d.ts.map +1 -0
- package/dist/cjs/data/docs.js +199 -0
- package/dist/cjs/data/docs.js.map +1 -0
- package/dist/cjs/data/engine.d.ts +193 -0
- package/dist/cjs/data/engine.d.ts.map +1 -0
- package/dist/cjs/data/engine.js +411 -0
- package/dist/cjs/data/engine.js.map +1 -0
- package/dist/cjs/data/engineUrl.d.ts +19 -0
- package/dist/cjs/data/engineUrl.d.ts.map +1 -0
- package/dist/cjs/data/engineUrl.js +30 -0
- package/dist/cjs/data/engineUrl.js.map +1 -0
- package/dist/cjs/data/envelope.d.ts +69 -0
- package/dist/cjs/data/envelope.d.ts.map +1 -0
- package/dist/cjs/data/envelope.js +77 -0
- package/dist/cjs/data/envelope.js.map +1 -0
- package/dist/cjs/data/format.d.ts +122 -0
- package/dist/cjs/data/format.d.ts.map +1 -0
- package/dist/cjs/data/format.js +272 -0
- package/dist/cjs/data/format.js.map +1 -0
- package/dist/cjs/data/gql.d.ts +56 -0
- package/dist/cjs/data/gql.d.ts.map +1 -0
- package/dist/cjs/data/gql.js +109 -0
- package/dist/cjs/data/gql.js.map +1 -0
- package/dist/cjs/data/granters.d.ts +15 -0
- package/dist/cjs/data/granters.d.ts.map +1 -0
- package/dist/cjs/data/granters.js +76 -0
- package/dist/cjs/data/granters.js.map +1 -0
- package/dist/cjs/data/index.d.ts +18 -0
- package/dist/cjs/data/index.d.ts.map +1 -0
- package/dist/cjs/data/index.js +88 -0
- package/dist/cjs/data/index.js.map +1 -0
- package/dist/cjs/data/install.d.ts +124 -0
- package/dist/cjs/data/install.d.ts.map +1 -0
- package/dist/cjs/data/install.js +164 -0
- package/dist/cjs/data/install.js.map +1 -0
- package/dist/cjs/data/issueMessage.d.ts +20 -0
- package/dist/cjs/data/issueMessage.d.ts.map +1 -0
- package/dist/cjs/data/issueMessage.js +20 -0
- package/dist/cjs/data/issueMessage.js.map +1 -0
- package/dist/cjs/data/linked.d.ts +54 -0
- package/dist/cjs/data/linked.d.ts.map +1 -0
- package/dist/cjs/data/linked.js +142 -0
- package/dist/cjs/data/linked.js.map +1 -0
- package/dist/cjs/data/network.d.ts +21 -0
- package/dist/cjs/data/network.d.ts.map +1 -0
- package/dist/cjs/data/network.js +28 -0
- package/dist/cjs/data/network.js.map +1 -0
- package/dist/cjs/data/openness.d.ts +93 -0
- package/dist/cjs/data/openness.d.ts.map +1 -0
- package/dist/cjs/data/openness.js +145 -0
- package/dist/cjs/data/openness.js.map +1 -0
- package/dist/cjs/data/oracleInfo.d.ts +20 -0
- package/dist/cjs/data/oracleInfo.d.ts.map +1 -0
- package/dist/cjs/data/oracleInfo.js +38 -0
- package/dist/cjs/data/oracleInfo.js.map +1 -0
- package/dist/cjs/data/oracles.d.ts +44 -0
- package/dist/cjs/data/oracles.d.ts.map +1 -0
- package/dist/cjs/data/oracles.js +115 -0
- package/dist/cjs/data/oracles.js.map +1 -0
- package/dist/cjs/data/outbound.d.ts +50 -0
- package/dist/cjs/data/outbound.d.ts.map +1 -0
- package/dist/cjs/data/outbound.js +102 -0
- package/dist/cjs/data/outbound.js.map +1 -0
- package/dist/cjs/data/paged.d.ts +48 -0
- package/dist/cjs/data/paged.d.ts.map +1 -0
- package/dist/cjs/data/paged.js +81 -0
- package/dist/cjs/data/paged.js.map +1 -0
- package/dist/cjs/data/profiles.d.ts +3 -0
- package/dist/cjs/data/profiles.d.ts.map +1 -0
- package/dist/cjs/data/profiles.js +71 -0
- package/dist/cjs/data/profiles.js.map +1 -0
- package/dist/cjs/data/proof.d.ts +93 -0
- package/dist/cjs/data/proof.d.ts.map +1 -0
- package/dist/cjs/data/proof.js +166 -0
- package/dist/cjs/data/proof.js.map +1 -0
- package/dist/cjs/data/queue.d.ts +49 -0
- package/dist/cjs/data/queue.d.ts.map +1 -0
- package/dist/cjs/data/queue.js +118 -0
- package/dist/cjs/data/queue.js.map +1 -0
- package/dist/cjs/data/rates.d.ts +143 -0
- package/dist/cjs/data/rates.d.ts.map +1 -0
- package/dist/cjs/data/rates.js +265 -0
- package/dist/cjs/data/rates.js.map +1 -0
- package/dist/cjs/data/receipt.d.ts +207 -0
- package/dist/cjs/data/receipt.d.ts.map +1 -0
- package/dist/cjs/data/receipt.js +320 -0
- package/dist/cjs/data/receipt.js.map +1 -0
- package/dist/cjs/data/resources.d.ts +30 -0
- package/dist/cjs/data/resources.d.ts.map +1 -0
- package/dist/cjs/data/resources.js +29 -0
- package/dist/cjs/data/resources.js.map +1 -0
- package/dist/cjs/data/sametask.d.ts +35 -0
- package/dist/cjs/data/sametask.d.ts.map +1 -0
- package/dist/cjs/data/sametask.js +45 -0
- package/dist/cjs/data/sametask.js.map +1 -0
- package/dist/cjs/data/shortName.d.ts +52 -0
- package/dist/cjs/data/shortName.d.ts.map +1 -0
- package/dist/cjs/data/shortName.js +122 -0
- package/dist/cjs/data/shortName.js.map +1 -0
- package/dist/cjs/data/threads.d.ts +97 -0
- package/dist/cjs/data/threads.d.ts.map +1 -0
- package/dist/cjs/data/threads.js +214 -0
- package/dist/cjs/data/threads.js.map +1 -0
- package/dist/cjs/data/trace.d.ts +133 -0
- package/dist/cjs/data/trace.d.ts.map +1 -0
- package/dist/cjs/data/trace.js +125 -0
- package/dist/cjs/data/trace.js.map +1 -0
- package/dist/cjs/data/traceWords.d.ts +54 -0
- package/dist/cjs/data/traceWords.d.ts.map +1 -0
- package/dist/cjs/data/traceWords.js +192 -0
- package/dist/cjs/data/traceWords.js.map +1 -0
- package/dist/cjs/data/types.d.ts +50 -0
- package/dist/cjs/data/types.d.ts.map +1 -0
- package/dist/cjs/data/types.js +9 -0
- package/dist/cjs/data/types.js.map +1 -0
- package/dist/cjs/data/verdict.d.ts +37 -0
- package/dist/cjs/data/verdict.d.ts.map +1 -0
- package/dist/cjs/data/verdict.js +57 -0
- package/dist/cjs/data/verdict.js.map +1 -0
- package/dist/cjs/data/work.d.ts +46 -0
- package/dist/cjs/data/work.d.ts.map +1 -0
- package/dist/cjs/data/work.js +105 -0
- package/dist/cjs/data/work.js.map +1 -0
- package/dist/cjs/envRead.d.ts +15 -0
- package/dist/cjs/envRead.d.ts.map +1 -0
- package/dist/cjs/envRead.js +26 -0
- package/dist/cjs/envRead.js.map +1 -0
- package/dist/cjs/geo/box.d.ts +64 -0
- package/dist/cjs/geo/box.d.ts.map +1 -0
- package/dist/cjs/geo/box.js +97 -0
- package/dist/cjs/geo/box.js.map +1 -0
- package/dist/cjs/geo/exif.d.ts +20 -0
- package/dist/cjs/geo/exif.d.ts.map +1 -0
- package/dist/cjs/geo/exif.js +220 -0
- package/dist/cjs/geo/exif.js.map +1 -0
- package/dist/cjs/geo/exifcarry.d.ts +31 -0
- package/dist/cjs/geo/exifcarry.d.ts.map +1 -0
- package/dist/cjs/geo/exifcarry.js +81 -0
- package/dist/cjs/geo/exifcarry.js.map +1 -0
- package/dist/cjs/geo/exifnote.d.ts +86 -0
- package/dist/cjs/geo/exifnote.d.ts.map +1 -0
- package/dist/cjs/geo/exifnote.js +253 -0
- package/dist/cjs/geo/exifnote.js.map +1 -0
- package/dist/cjs/geo/mentions.d.ts +44 -0
- package/dist/cjs/geo/mentions.d.ts.map +1 -0
- package/dist/cjs/geo/mentions.js +199 -0
- package/dist/cjs/geo/mentions.js.map +1 -0
- package/dist/cjs/geo/osm.d.ts +112 -0
- package/dist/cjs/geo/osm.d.ts.map +1 -0
- package/dist/cjs/geo/osm.js +178 -0
- package/dist/cjs/geo/osm.js.map +1 -0
- package/dist/cjs/geo/place.d.ts +51 -0
- package/dist/cjs/geo/place.d.ts.map +1 -0
- package/dist/cjs/geo/place.js +106 -0
- package/dist/cjs/geo/place.js.map +1 -0
- package/dist/cjs/geo/search.d.ts +41 -0
- package/dist/cjs/geo/search.d.ts.map +1 -0
- package/dist/cjs/geo/search.js +187 -0
- package/dist/cjs/geo/search.js.map +1 -0
- package/dist/cjs/geo/sun.d.ts +39 -0
- package/dist/cjs/geo/sun.d.ts.map +1 -0
- package/dist/cjs/geo/sun.js +55 -0
- package/dist/cjs/geo/sun.js.map +1 -0
- package/dist/cjs/geo/tiles.d.ts +89 -0
- package/dist/cjs/geo/tiles.d.ts.map +1 -0
- package/dist/cjs/geo/tiles.js +146 -0
- package/dist/cjs/geo/tiles.js.map +1 -0
- package/dist/cjs/geo.d.ts +20 -0
- package/dist/cjs/geo.d.ts.map +1 -0
- package/dist/cjs/geo.js +35 -0
- package/dist/cjs/geo.js.map +1 -0
- package/dist/cjs/given.d.ts +15 -0
- package/dist/cjs/given.d.ts.map +1 -0
- package/dist/cjs/given.js +25 -0
- package/dist/cjs/given.js.map +1 -0
- package/dist/cjs/network.d.ts +23 -0
- package/dist/cjs/network.d.ts.map +1 -0
- package/dist/cjs/network.js +56 -0
- package/dist/cjs/network.js.map +1 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/protocol.d.ts +40 -0
- package/dist/cjs/protocol.d.ts.map +1 -0
- package/dist/cjs/protocol.js +54 -0
- package/dist/cjs/protocol.js.map +1 -0
- package/dist/cjs/rubric/bridge.d.ts +428 -0
- package/dist/cjs/rubric/bridge.d.ts.map +1 -0
- package/dist/cjs/rubric/bridge.js +917 -0
- package/dist/cjs/rubric/bridge.js.map +1 -0
- package/dist/cjs/rubric/call.d.ts +73 -0
- package/dist/cjs/rubric/call.d.ts.map +1 -0
- package/dist/cjs/rubric/call.js +132 -0
- package/dist/cjs/rubric/call.js.map +1 -0
- package/dist/cjs/rubric/card.d.ts +74 -0
- package/dist/cjs/rubric/card.d.ts.map +1 -0
- package/dist/cjs/rubric/card.js +45 -0
- package/dist/cjs/rubric/card.js.map +1 -0
- package/dist/cjs/rubric/chain.d.ts +44 -0
- package/dist/cjs/rubric/chain.d.ts.map +1 -0
- package/dist/cjs/rubric/chain.js +52 -0
- package/dist/cjs/rubric/chain.js.map +1 -0
- package/dist/cjs/rubric/claimForm.d.ts +142 -0
- package/dist/cjs/rubric/claimForm.d.ts.map +1 -0
- package/dist/cjs/rubric/claimForm.js +112 -0
- package/dist/cjs/rubric/claimForm.js.map +1 -0
- package/dist/cjs/rubric/claimFormResource.d.ts +34 -0
- package/dist/cjs/rubric/claimFormResource.d.ts.map +1 -0
- package/dist/cjs/rubric/claimFormResource.js +38 -0
- package/dist/cjs/rubric/claimFormResource.js.map +1 -0
- package/dist/cjs/rubric/compose.d.ts +99 -0
- package/dist/cjs/rubric/compose.d.ts.map +1 -0
- package/dist/cjs/rubric/compose.js +229 -0
- package/dist/cjs/rubric/compose.js.map +1 -0
- package/dist/cjs/rubric/confidence.d.ts +81 -0
- package/dist/cjs/rubric/confidence.d.ts.map +1 -0
- package/dist/cjs/rubric/confidence.js +87 -0
- package/dist/cjs/rubric/confidence.js.map +1 -0
- package/dist/cjs/rubric/draft.d.ts +224 -0
- package/dist/cjs/rubric/draft.d.ts.map +1 -0
- package/dist/cjs/rubric/draft.js +214 -0
- package/dist/cjs/rubric/draft.js.map +1 -0
- package/dist/cjs/rubric/gateMet.d.ts +46 -0
- package/dist/cjs/rubric/gateMet.d.ts.map +1 -0
- package/dist/cjs/rubric/gateMet.js +110 -0
- package/dist/cjs/rubric/gateMet.js.map +1 -0
- package/dist/cjs/rubric/leg.d.ts +106 -0
- package/dist/cjs/rubric/leg.d.ts.map +1 -0
- package/dist/cjs/rubric/leg.js +147 -0
- package/dist/cjs/rubric/leg.js.map +1 -0
- package/dist/cjs/rubric/publish.d.ts +39 -0
- package/dist/cjs/rubric/publish.d.ts.map +1 -0
- package/dist/cjs/rubric/publish.js +34 -0
- package/dist/cjs/rubric/publish.js.map +1 -0
- package/dist/cjs/rubric/reanchor.d.ts +79 -0
- package/dist/cjs/rubric/reanchor.d.ts.map +1 -0
- package/dist/cjs/rubric/reanchor.js +154 -0
- package/dist/cjs/rubric/reanchor.js.map +1 -0
- package/dist/cjs/rubric/receipt.d.ts +96 -0
- package/dist/cjs/rubric/receipt.d.ts.map +1 -0
- package/dist/cjs/rubric/receipt.js +28 -0
- package/dist/cjs/rubric/receipt.js.map +1 -0
- package/dist/cjs/rubric/roundTrips.d.ts +17 -0
- package/dist/cjs/rubric/roundTrips.d.ts.map +1 -0
- package/dist/cjs/rubric/roundTrips.js +24 -0
- package/dist/cjs/rubric/roundTrips.js.map +1 -0
- package/dist/cjs/rubric/terms.d.ts +611 -0
- package/dist/cjs/rubric/terms.d.ts.map +1 -0
- package/dist/cjs/rubric/terms.js +777 -0
- package/dist/cjs/rubric/terms.js.map +1 -0
- package/dist/cjs/rubric/wants.d.ts +36 -0
- package/dist/cjs/rubric/wants.d.ts.map +1 -0
- package/dist/cjs/rubric/wants.js +57 -0
- package/dist/cjs/rubric/wants.js.map +1 -0
- package/dist/cjs/rubric.d.ts +30 -0
- package/dist/cjs/rubric.d.ts.map +1 -0
- package/dist/cjs/rubric.js +71 -0
- package/dist/cjs/rubric.js.map +1 -0
- package/dist/cjs/udid/base58.d.ts +8 -0
- package/dist/cjs/udid/base58.d.ts.map +1 -0
- package/dist/cjs/udid/base58.js +57 -0
- package/dist/cjs/udid/base58.js.map +1 -0
- package/dist/cjs/udid/canonical.d.ts +17 -0
- package/dist/cjs/udid/canonical.d.ts.map +1 -0
- package/dist/cjs/udid/canonical.js +34 -0
- package/dist/cjs/udid/canonical.js.map +1 -0
- package/dist/cjs/udid/cid.d.ts +22 -0
- package/dist/cjs/udid/cid.d.ts.map +1 -0
- package/dist/cjs/udid/cid.js +54 -0
- package/dist/cjs/udid/cid.js.map +1 -0
- package/dist/cjs/udid/key.d.ts +41 -0
- package/dist/cjs/udid/key.d.ts.map +1 -0
- package/dist/cjs/udid/key.js +64 -0
- package/dist/cjs/udid/key.js.map +1 -0
- package/dist/cjs/udid/resolve.d.ts +56 -0
- package/dist/cjs/udid/resolve.d.ts.map +1 -0
- package/dist/cjs/udid/resolve.js +168 -0
- package/dist/cjs/udid/resolve.js.map +1 -0
- package/dist/cjs/udid/schema.d.ts +150 -0
- package/dist/cjs/udid/schema.d.ts.map +1 -0
- package/dist/cjs/udid/schema.js +155 -0
- package/dist/cjs/udid/schema.js.map +1 -0
- package/dist/cjs/udid/verify.d.ts +35 -0
- package/dist/cjs/udid/verify.d.ts.map +1 -0
- package/dist/cjs/udid/verify.js +97 -0
- package/dist/cjs/udid/verify.js.map +1 -0
- package/dist/cjs/udid/wrapper.d.ts +90 -0
- package/dist/cjs/udid/wrapper.d.ts.map +1 -0
- package/dist/cjs/udid/wrapper.js +41 -0
- package/dist/cjs/udid/wrapper.js.map +1 -0
- package/dist/cjs/udid.d.ts +17 -0
- package/dist/cjs/udid.d.ts.map +1 -0
- package/dist/cjs/udid.js +33 -0
- package/dist/cjs/udid.js.map +1 -0
- package/dist/esm/board.d.ts +20 -0
- package/dist/esm/board.d.ts.map +1 -0
- package/dist/esm/board.js +23 -0
- package/dist/esm/board.js.map +1 -0
- package/dist/esm/campaign/badges.d.ts +30 -0
- package/dist/esm/campaign/badges.d.ts.map +1 -0
- package/dist/esm/campaign/badges.js +65 -0
- package/dist/esm/campaign/badges.js.map +1 -0
- package/dist/esm/campaign/bands.d.ts +161 -0
- package/dist/esm/campaign/bands.d.ts.map +1 -0
- package/dist/esm/campaign/bands.js +176 -0
- package/dist/esm/campaign/bands.js.map +1 -0
- package/dist/esm/campaign/campaign.d.ts +50 -0
- package/dist/esm/campaign/campaign.d.ts.map +1 -0
- package/dist/esm/campaign/campaign.js +147 -0
- package/dist/esm/campaign/campaign.js.map +1 -0
- package/dist/esm/campaign/campaigns.d.ts +2 -0
- package/dist/esm/campaign/campaigns.d.ts.map +1 -0
- package/dist/esm/campaign/campaigns.js +34 -0
- package/dist/esm/campaign/campaigns.js.map +1 -0
- package/dist/esm/campaign/cleanable.d.ts +13 -0
- package/dist/esm/campaign/cleanable.d.ts.map +1 -0
- package/dist/esm/campaign/cleanable.js +2 -0
- package/dist/esm/campaign/cleanable.js.map +1 -0
- package/dist/esm/campaign/cleanup.d.ts +78 -0
- package/dist/esm/campaign/cleanup.d.ts.map +1 -0
- package/dist/esm/campaign/cleanup.js +129 -0
- package/dist/esm/campaign/cleanup.js.map +1 -0
- package/dist/esm/campaign/commit.d.ts +39 -0
- package/dist/esm/campaign/commit.d.ts.map +1 -0
- package/dist/esm/campaign/commit.js +37 -0
- package/dist/esm/campaign/commit.js.map +1 -0
- package/dist/esm/campaign/field.d.ts +50 -0
- package/dist/esm/campaign/field.d.ts.map +1 -0
- package/dist/esm/campaign/field.js +88 -0
- package/dist/esm/campaign/field.js.map +1 -0
- package/dist/esm/campaign/fold.d.ts +227 -0
- package/dist/esm/campaign/fold.d.ts.map +1 -0
- package/dist/esm/campaign/fold.js +403 -0
- package/dist/esm/campaign/fold.js.map +1 -0
- package/dist/esm/campaign/funding.d.ts +153 -0
- package/dist/esm/campaign/funding.d.ts.map +1 -0
- package/dist/esm/campaign/funding.js +160 -0
- package/dist/esm/campaign/funding.js.map +1 -0
- package/dist/esm/campaign/landing.d.ts +20 -0
- package/dist/esm/campaign/landing.d.ts.map +1 -0
- package/dist/esm/campaign/landing.js +49 -0
- package/dist/esm/campaign/landing.js.map +1 -0
- package/dist/esm/campaign/pledges.d.ts +237 -0
- package/dist/esm/campaign/pledges.d.ts.map +1 -0
- package/dist/esm/campaign/pledges.js +210 -0
- package/dist/esm/campaign/pledges.js.map +1 -0
- package/dist/esm/campaign/pledgesChain.d.ts +58 -0
- package/dist/esm/campaign/pledgesChain.d.ts.map +1 -0
- package/dist/esm/campaign/pledgesChain.js +96 -0
- package/dist/esm/campaign/pledgesChain.js.map +1 -0
- package/dist/esm/campaign/pool.d.ts +137 -0
- package/dist/esm/campaign/pool.d.ts.map +1 -0
- package/dist/esm/campaign/pool.js +194 -0
- package/dist/esm/campaign/pool.js.map +1 -0
- package/dist/esm/campaign/record.d.ts +115 -0
- package/dist/esm/campaign/record.d.ts.map +1 -0
- package/dist/esm/campaign/record.js +252 -0
- package/dist/esm/campaign/record.js.map +1 -0
- package/dist/esm/campaign/rule.d.ts +311 -0
- package/dist/esm/campaign/rule.d.ts.map +1 -0
- package/dist/esm/campaign/rule.js +197 -0
- package/dist/esm/campaign/rule.js.map +1 -0
- package/dist/esm/campaign/spot.d.ts +37 -0
- package/dist/esm/campaign/spot.d.ts.map +1 -0
- package/dist/esm/campaign/spot.js +167 -0
- package/dist/esm/campaign/spot.js.map +1 -0
- package/dist/esm/campaign/spots.d.ts +437 -0
- package/dist/esm/campaign/spots.d.ts.map +1 -0
- package/dist/esm/campaign/spots.js +735 -0
- package/dist/esm/campaign/spots.js.map +1 -0
- package/dist/esm/campaign/standings.d.ts +236 -0
- package/dist/esm/campaign/standings.d.ts.map +1 -0
- package/dist/esm/campaign/standings.js +357 -0
- package/dist/esm/campaign/standings.js.map +1 -0
- package/dist/esm/campaign/treasurySends.d.ts +116 -0
- package/dist/esm/campaign/treasurySends.d.ts.map +1 -0
- package/dist/esm/campaign/treasurySends.js +190 -0
- package/dist/esm/campaign/treasurySends.js.map +1 -0
- package/dist/esm/campaign.d.ts +29 -0
- package/dist/esm/campaign.d.ts.map +1 -0
- package/dist/esm/campaign.js +28 -0
- package/dist/esm/campaign.js.map +1 -0
- package/dist/esm/chain/account.d.ts +47 -0
- package/dist/esm/chain/account.d.ts.map +1 -0
- package/dist/esm/chain/account.js +156 -0
- package/dist/esm/chain/account.js.map +1 -0
- package/dist/esm/chain/accountProof.d.ts +135 -0
- package/dist/esm/chain/accountProof.d.ts.map +1 -0
- package/dist/esm/chain/accountProof.js +153 -0
- package/dist/esm/chain/accountProof.js.map +1 -0
- package/dist/esm/chain/allowance.d.ts +17 -0
- package/dist/esm/chain/allowance.d.ts.map +1 -0
- package/dist/esm/chain/allowance.js +74 -0
- package/dist/esm/chain/allowance.js.map +1 -0
- package/dist/esm/chain/allowanceRead.d.ts +2 -0
- package/dist/esm/chain/allowanceRead.d.ts.map +1 -0
- package/dist/esm/chain/allowanceRead.js +56 -0
- package/dist/esm/chain/allowanceRead.js.map +1 -0
- package/dist/esm/chain/ask.d.ts +211 -0
- package/dist/esm/chain/ask.d.ts.map +1 -0
- package/dist/esm/chain/ask.js +509 -0
- package/dist/esm/chain/ask.js.map +1 -0
- package/dist/esm/chain/bridge.d.ts +50 -0
- package/dist/esm/chain/bridge.d.ts.map +1 -0
- package/dist/esm/chain/bridge.js +78 -0
- package/dist/esm/chain/bridge.js.map +1 -0
- package/dist/esm/chain/broadcast.d.ts +40 -0
- package/dist/esm/chain/broadcast.d.ts.map +1 -0
- package/dist/esm/chain/broadcast.js +147 -0
- package/dist/esm/chain/broadcast.js.map +1 -0
- package/dist/esm/chain/delegate.d.ts +154 -0
- package/dist/esm/chain/delegate.d.ts.map +1 -0
- package/dist/esm/chain/delegate.js +230 -0
- package/dist/esm/chain/delegate.js.map +1 -0
- package/dist/esm/chain/encoding.d.ts +7 -0
- package/dist/esm/chain/encoding.d.ts.map +1 -0
- package/dist/esm/chain/encoding.js +22 -0
- package/dist/esm/chain/encoding.js.map +1 -0
- package/dist/esm/chain/env.d.ts +50 -0
- package/dist/esm/chain/env.d.ts.map +1 -0
- package/dist/esm/chain/env.js +83 -0
- package/dist/esm/chain/env.js.map +1 -0
- package/dist/esm/chain/gate.d.ts +12 -0
- package/dist/esm/chain/gate.d.ts.map +1 -0
- package/dist/esm/chain/gate.js +52 -0
- package/dist/esm/chain/gate.js.map +1 -0
- package/dist/esm/chain/grantPending.d.ts +31 -0
- package/dist/esm/chain/grantPending.d.ts.map +1 -0
- package/dist/esm/chain/grantPending.js +50 -0
- package/dist/esm/chain/grantPending.js.map +1 -0
- package/dist/esm/chain/guest.d.ts +97 -0
- package/dist/esm/chain/guest.d.ts.map +1 -0
- package/dist/esm/chain/guest.js +168 -0
- package/dist/esm/chain/guest.js.map +1 -0
- package/dist/esm/chain/iid.d.ts +26 -0
- package/dist/esm/chain/iid.d.ts.map +1 -0
- package/dist/esm/chain/iid.js +62 -0
- package/dist/esm/chain/iid.js.map +1 -0
- package/dist/esm/chain/money.d.ts +48 -0
- package/dist/esm/chain/money.d.ts.map +1 -0
- package/dist/esm/chain/money.js +65 -0
- package/dist/esm/chain/money.js.map +1 -0
- package/dist/esm/chain/oracle.d.ts +24 -0
- package/dist/esm/chain/oracle.d.ts.map +1 -0
- package/dist/esm/chain/oracle.js +41 -0
- package/dist/esm/chain/oracle.js.map +1 -0
- package/dist/esm/chain/pendingTransact.d.ts +31 -0
- package/dist/esm/chain/pendingTransact.d.ts.map +1 -0
- package/dist/esm/chain/pendingTransact.js +59 -0
- package/dist/esm/chain/pendingTransact.js.map +1 -0
- package/dist/esm/chain/query.d.ts +75 -0
- package/dist/esm/chain/query.d.ts.map +1 -0
- package/dist/esm/chain/query.js +160 -0
- package/dist/esm/chain/query.js.map +1 -0
- package/dist/esm/chain/send.d.ts +42 -0
- package/dist/esm/chain/send.d.ts.map +1 -0
- package/dist/esm/chain/send.js +48 -0
- package/dist/esm/chain/send.js.map +1 -0
- package/dist/esm/chain/session.d.ts +109 -0
- package/dist/esm/chain/session.d.ts.map +1 -0
- package/dist/esm/chain/session.js +133 -0
- package/dist/esm/chain/session.js.map +1 -0
- package/dist/esm/chain/signWith.d.ts +69 -0
- package/dist/esm/chain/signWith.d.ts.map +1 -0
- package/dist/esm/chain/signWith.js +238 -0
- package/dist/esm/chain/signWith.js.map +1 -0
- package/dist/esm/chain/signer.d.ts +38 -0
- package/dist/esm/chain/signer.d.ts.map +1 -0
- package/dist/esm/chain/signer.js +73 -0
- package/dist/esm/chain/signer.js.map +1 -0
- package/dist/esm/chain/signx.d.ts +233 -0
- package/dist/esm/chain/signx.d.ts.map +1 -0
- package/dist/esm/chain/signx.js +475 -0
- package/dist/esm/chain/signx.js.map +1 -0
- package/dist/esm/chain/sponsor.d.ts +2 -0
- package/dist/esm/chain/sponsor.d.ts.map +1 -0
- package/dist/esm/chain/sponsor.js +73 -0
- package/dist/esm/chain/sponsor.js.map +1 -0
- package/dist/esm/chain/store.d.ts +115 -0
- package/dist/esm/chain/store.d.ts.map +1 -0
- package/dist/esm/chain/store.js +164 -0
- package/dist/esm/chain/store.js.map +1 -0
- package/dist/esm/chain/subscription.d.ts +73 -0
- package/dist/esm/chain/subscription.d.ts.map +1 -0
- package/dist/esm/chain/subscription.js +206 -0
- package/dist/esm/chain/subscription.js.map +1 -0
- package/dist/esm/chain/takeBack.d.ts +114 -0
- package/dist/esm/chain/takeBack.d.ts.map +1 -0
- package/dist/esm/chain/takeBack.js +177 -0
- package/dist/esm/chain/takeBack.js.map +1 -0
- package/dist/esm/chain/union.d.ts +125 -0
- package/dist/esm/chain/union.d.ts.map +1 -0
- package/dist/esm/chain/union.js +295 -0
- package/dist/esm/chain/union.js.map +1 -0
- package/dist/esm/chain/webauthn.d.ts +22 -0
- package/dist/esm/chain/webauthn.d.ts.map +1 -0
- package/dist/esm/chain/webauthn.js +65 -0
- package/dist/esm/chain/webauthn.js.map +1 -0
- package/dist/esm/chain.d.ts +35 -0
- package/dist/esm/chain.d.ts.map +1 -0
- package/dist/esm/chain.js +50 -0
- package/dist/esm/chain.js.map +1 -0
- package/dist/esm/config.d.ts +120 -0
- package/dist/esm/config.d.ts.map +1 -0
- package/dist/esm/config.js +115 -0
- package/dist/esm/config.js.map +1 -0
- package/dist/esm/data/accept.d.ts +69 -0
- package/dist/esm/data/accept.d.ts.map +1 -0
- package/dist/esm/data/accept.js +151 -0
- package/dist/esm/data/accept.js.map +1 -0
- package/dist/esm/data/agent.d.ts +87 -0
- package/dist/esm/data/agent.d.ts.map +1 -0
- package/dist/esm/data/agent.js +108 -0
- package/dist/esm/data/agent.js.map +1 -0
- package/dist/esm/data/askFilter.d.ts +45 -0
- package/dist/esm/data/askFilter.d.ts.map +1 -0
- package/dist/esm/data/askFilter.js +45 -0
- package/dist/esm/data/askFilter.js.map +1 -0
- package/dist/esm/data/authenticators.d.ts +35 -0
- package/dist/esm/data/authenticators.d.ts.map +1 -0
- package/dist/esm/data/authenticators.js +71 -0
- package/dist/esm/data/authenticators.js.map +1 -0
- package/dist/esm/data/balance.d.ts +39 -0
- package/dist/esm/data/balance.d.ts.map +1 -0
- package/dist/esm/data/balance.js +111 -0
- package/dist/esm/data/balance.js.map +1 -0
- package/dist/esm/data/board/assemble.d.ts +140 -0
- package/dist/esm/data/board/assemble.d.ts.map +1 -0
- package/dist/esm/data/board/assemble.js +539 -0
- package/dist/esm/data/board/assemble.js.map +1 -0
- package/dist/esm/data/board/coverage.d.ts +112 -0
- package/dist/esm/data/board/coverage.d.ts.map +1 -0
- package/dist/esm/data/board/coverage.js +180 -0
- package/dist/esm/data/board/coverage.js.map +1 -0
- package/dist/esm/data/board/facts.d.ts +63 -0
- package/dist/esm/data/board/facts.d.ts.map +1 -0
- package/dist/esm/data/board/facts.js +127 -0
- package/dist/esm/data/board/facts.js.map +1 -0
- package/dist/esm/data/board/fixtures.d.ts +21 -0
- package/dist/esm/data/board/fixtures.d.ts.map +1 -0
- package/dist/esm/data/board/fixtures.js +40 -0
- package/dist/esm/data/board/fixtures.js.map +1 -0
- package/dist/esm/data/board/query.d.ts +12 -0
- package/dist/esm/data/board/query.d.ts.map +1 -0
- package/dist/esm/data/board/query.js +67 -0
- package/dist/esm/data/board/query.js.map +1 -0
- package/dist/esm/data/board/rank.d.ts +22 -0
- package/dist/esm/data/board/rank.d.ts.map +1 -0
- package/dist/esm/data/board/rank.js +45 -0
- package/dist/esm/data/board/rank.js.map +1 -0
- package/dist/esm/data/board/read.d.ts +102 -0
- package/dist/esm/data/board/read.d.ts.map +1 -0
- package/dist/esm/data/board/read.js +163 -0
- package/dist/esm/data/board/read.js.map +1 -0
- package/dist/esm/data/board/series.d.ts +50 -0
- package/dist/esm/data/board/series.d.ts.map +1 -0
- package/dist/esm/data/board/series.js +153 -0
- package/dist/esm/data/board/series.js.map +1 -0
- package/dist/esm/data/board/trust.d.ts +31 -0
- package/dist/esm/data/board/trust.d.ts.map +1 -0
- package/dist/esm/data/board/trust.js +47 -0
- package/dist/esm/data/board/trust.js.map +1 -0
- package/dist/esm/data/board/types.d.ts +338 -0
- package/dist/esm/data/board/types.d.ts.map +1 -0
- package/dist/esm/data/board/types.js +79 -0
- package/dist/esm/data/board/types.js.map +1 -0
- package/dist/esm/data/board/url.d.ts +22 -0
- package/dist/esm/data/board/url.d.ts.map +1 -0
- package/dist/esm/data/board/url.js +65 -0
- package/dist/esm/data/board/url.js.map +1 -0
- package/dist/esm/data/board/words.d.ts +25 -0
- package/dist/esm/data/board/words.d.ts.map +1 -0
- package/dist/esm/data/board/words.js +53 -0
- package/dist/esm/data/board/words.js.map +1 -0
- package/dist/esm/data/cid.d.ts +49 -0
- package/dist/esm/data/cid.d.ts.map +1 -0
- package/dist/esm/data/cid.js +82 -0
- package/dist/esm/data/cid.js.map +1 -0
- package/dist/esm/data/concurrency.d.ts +14 -0
- package/dist/esm/data/concurrency.d.ts.map +1 -0
- package/dist/esm/data/concurrency.js +29 -0
- package/dist/esm/data/concurrency.js.map +1 -0
- package/dist/esm/data/credentials.d.ts +28 -0
- package/dist/esm/data/credentials.d.ts.map +1 -0
- package/dist/esm/data/credentials.js +78 -0
- package/dist/esm/data/credentials.js.map +1 -0
- package/dist/esm/data/denoms.d.ts +11 -0
- package/dist/esm/data/denoms.d.ts.map +1 -0
- package/dist/esm/data/denoms.js +102 -0
- package/dist/esm/data/denoms.js.map +1 -0
- package/dist/esm/data/displayNames.d.ts +58 -0
- package/dist/esm/data/displayNames.d.ts.map +1 -0
- package/dist/esm/data/displayNames.js +94 -0
- package/dist/esm/data/displayNames.js.map +1 -0
- package/dist/esm/data/docPath.d.ts +28 -0
- package/dist/esm/data/docPath.d.ts.map +1 -0
- package/dist/esm/data/docPath.js +37 -0
- package/dist/esm/data/docPath.js.map +1 -0
- package/dist/esm/data/docUrls.d.ts +38 -0
- package/dist/esm/data/docUrls.d.ts.map +1 -0
- package/dist/esm/data/docUrls.js +46 -0
- package/dist/esm/data/docUrls.js.map +1 -0
- package/dist/esm/data/docs.d.ts +61 -0
- package/dist/esm/data/docs.d.ts.map +1 -0
- package/dist/esm/data/docs.js +177 -0
- package/dist/esm/data/docs.js.map +1 -0
- package/dist/esm/data/engine.d.ts +193 -0
- package/dist/esm/data/engine.d.ts.map +1 -0
- package/dist/esm/data/engine.js +362 -0
- package/dist/esm/data/engine.js.map +1 -0
- package/dist/esm/data/engineUrl.d.ts +19 -0
- package/dist/esm/data/engineUrl.d.ts.map +1 -0
- package/dist/esm/data/engineUrl.js +23 -0
- package/dist/esm/data/engineUrl.js.map +1 -0
- package/dist/esm/data/envelope.d.ts +69 -0
- package/dist/esm/data/envelope.d.ts.map +1 -0
- package/dist/esm/data/envelope.js +72 -0
- package/dist/esm/data/envelope.js.map +1 -0
- package/dist/esm/data/format.d.ts +122 -0
- package/dist/esm/data/format.d.ts.map +1 -0
- package/dist/esm/data/format.js +250 -0
- package/dist/esm/data/format.js.map +1 -0
- package/dist/esm/data/gql.d.ts +56 -0
- package/dist/esm/data/gql.d.ts.map +1 -0
- package/dist/esm/data/gql.js +100 -0
- package/dist/esm/data/gql.js.map +1 -0
- package/dist/esm/data/granters.d.ts +15 -0
- package/dist/esm/data/granters.d.ts.map +1 -0
- package/dist/esm/data/granters.js +71 -0
- package/dist/esm/data/granters.js.map +1 -0
- package/dist/esm/data/index.d.ts +18 -0
- package/dist/esm/data/index.d.ts.map +1 -0
- package/dist/esm/data/index.js +39 -0
- package/dist/esm/data/index.js.map +1 -0
- package/dist/esm/data/install.d.ts +124 -0
- package/dist/esm/data/install.d.ts.map +1 -0
- package/dist/esm/data/install.js +156 -0
- package/dist/esm/data/install.js.map +1 -0
- package/dist/esm/data/issueMessage.d.ts +20 -0
- package/dist/esm/data/issueMessage.d.ts.map +1 -0
- package/dist/esm/data/issueMessage.js +15 -0
- package/dist/esm/data/issueMessage.js.map +1 -0
- package/dist/esm/data/linked.d.ts +54 -0
- package/dist/esm/data/linked.d.ts.map +1 -0
- package/dist/esm/data/linked.js +136 -0
- package/dist/esm/data/linked.js.map +1 -0
- package/dist/esm/data/network.d.ts +21 -0
- package/dist/esm/data/network.d.ts.map +1 -0
- package/dist/esm/data/network.js +23 -0
- package/dist/esm/data/network.js.map +1 -0
- package/dist/esm/data/openness.d.ts +93 -0
- package/dist/esm/data/openness.d.ts.map +1 -0
- package/dist/esm/data/openness.js +140 -0
- package/dist/esm/data/openness.js.map +1 -0
- package/dist/esm/data/oracleInfo.d.ts +20 -0
- package/dist/esm/data/oracleInfo.d.ts.map +1 -0
- package/dist/esm/data/oracleInfo.js +35 -0
- package/dist/esm/data/oracleInfo.js.map +1 -0
- package/dist/esm/data/oracles.d.ts +44 -0
- package/dist/esm/data/oracles.d.ts.map +1 -0
- package/dist/esm/data/oracles.js +110 -0
- package/dist/esm/data/oracles.js.map +1 -0
- package/dist/esm/data/outbound.d.ts +50 -0
- package/dist/esm/data/outbound.d.ts.map +1 -0
- package/dist/esm/data/outbound.js +96 -0
- package/dist/esm/data/outbound.js.map +1 -0
- package/dist/esm/data/paged.d.ts +48 -0
- package/dist/esm/data/paged.d.ts.map +1 -0
- package/dist/esm/data/paged.js +75 -0
- package/dist/esm/data/paged.js.map +1 -0
- package/dist/esm/data/profiles.d.ts +3 -0
- package/dist/esm/data/profiles.d.ts.map +1 -0
- package/dist/esm/data/profiles.js +66 -0
- package/dist/esm/data/profiles.js.map +1 -0
- package/dist/esm/data/proof.d.ts +93 -0
- package/dist/esm/data/proof.d.ts.map +1 -0
- package/dist/esm/data/proof.js +128 -0
- package/dist/esm/data/proof.js.map +1 -0
- package/dist/esm/data/queue.d.ts +49 -0
- package/dist/esm/data/queue.d.ts.map +1 -0
- package/dist/esm/data/queue.js +115 -0
- package/dist/esm/data/queue.js.map +1 -0
- package/dist/esm/data/rates.d.ts +143 -0
- package/dist/esm/data/rates.d.ts.map +1 -0
- package/dist/esm/data/rates.js +249 -0
- package/dist/esm/data/rates.js.map +1 -0
- package/dist/esm/data/receipt.d.ts +207 -0
- package/dist/esm/data/receipt.d.ts.map +1 -0
- package/dist/esm/data/receipt.js +305 -0
- package/dist/esm/data/receipt.js.map +1 -0
- package/dist/esm/data/resources.d.ts +30 -0
- package/dist/esm/data/resources.d.ts.map +1 -0
- package/dist/esm/data/resources.js +24 -0
- package/dist/esm/data/resources.js.map +1 -0
- package/dist/esm/data/sametask.d.ts +35 -0
- package/dist/esm/data/sametask.d.ts.map +1 -0
- package/dist/esm/data/sametask.js +40 -0
- package/dist/esm/data/sametask.js.map +1 -0
- package/dist/esm/data/shortName.d.ts +52 -0
- package/dist/esm/data/shortName.d.ts.map +1 -0
- package/dist/esm/data/shortName.js +119 -0
- package/dist/esm/data/shortName.js.map +1 -0
- package/dist/esm/data/threads.d.ts +97 -0
- package/dist/esm/data/threads.d.ts.map +1 -0
- package/dist/esm/data/threads.js +177 -0
- package/dist/esm/data/threads.js.map +1 -0
- package/dist/esm/data/trace.d.ts +133 -0
- package/dist/esm/data/trace.d.ts.map +1 -0
- package/dist/esm/data/trace.js +122 -0
- package/dist/esm/data/trace.js.map +1 -0
- package/dist/esm/data/traceWords.d.ts +54 -0
- package/dist/esm/data/traceWords.d.ts.map +1 -0
- package/dist/esm/data/traceWords.js +178 -0
- package/dist/esm/data/traceWords.js.map +1 -0
- package/dist/esm/data/types.d.ts +50 -0
- package/dist/esm/data/types.d.ts.map +1 -0
- package/dist/esm/data/types.js +6 -0
- package/dist/esm/data/types.js.map +1 -0
- package/dist/esm/data/verdict.d.ts +37 -0
- package/dist/esm/data/verdict.d.ts.map +1 -0
- package/dist/esm/data/verdict.js +51 -0
- package/dist/esm/data/verdict.js.map +1 -0
- package/dist/esm/data/work.d.ts +46 -0
- package/dist/esm/data/work.d.ts.map +1 -0
- package/dist/esm/data/work.js +68 -0
- package/dist/esm/data/work.js.map +1 -0
- package/dist/esm/envRead.d.ts +15 -0
- package/dist/esm/envRead.d.ts.map +1 -0
- package/dist/esm/envRead.js +20 -0
- package/dist/esm/envRead.js.map +1 -0
- package/dist/esm/geo/box.d.ts +64 -0
- package/dist/esm/geo/box.d.ts.map +1 -0
- package/dist/esm/geo/box.js +85 -0
- package/dist/esm/geo/box.js.map +1 -0
- package/dist/esm/geo/exif.d.ts +20 -0
- package/dist/esm/geo/exif.d.ts.map +1 -0
- package/dist/esm/geo/exif.js +215 -0
- package/dist/esm/geo/exif.js.map +1 -0
- package/dist/esm/geo/exifcarry.d.ts +31 -0
- package/dist/esm/geo/exifcarry.d.ts.map +1 -0
- package/dist/esm/geo/exifcarry.js +77 -0
- package/dist/esm/geo/exifcarry.js.map +1 -0
- package/dist/esm/geo/exifnote.d.ts +86 -0
- package/dist/esm/geo/exifnote.d.ts.map +1 -0
- package/dist/esm/geo/exifnote.js +243 -0
- package/dist/esm/geo/exifnote.js.map +1 -0
- package/dist/esm/geo/mentions.d.ts +44 -0
- package/dist/esm/geo/mentions.d.ts.map +1 -0
- package/dist/esm/geo/mentions.js +190 -0
- package/dist/esm/geo/mentions.js.map +1 -0
- package/dist/esm/geo/osm.d.ts +112 -0
- package/dist/esm/geo/osm.d.ts.map +1 -0
- package/dist/esm/geo/osm.js +171 -0
- package/dist/esm/geo/osm.js.map +1 -0
- package/dist/esm/geo/place.d.ts +51 -0
- package/dist/esm/geo/place.d.ts.map +1 -0
- package/dist/esm/geo/place.js +99 -0
- package/dist/esm/geo/place.js.map +1 -0
- package/dist/esm/geo/search.d.ts +41 -0
- package/dist/esm/geo/search.d.ts.map +1 -0
- package/dist/esm/geo/search.js +182 -0
- package/dist/esm/geo/search.js.map +1 -0
- package/dist/esm/geo/sun.d.ts +39 -0
- package/dist/esm/geo/sun.d.ts.map +1 -0
- package/dist/esm/geo/sun.js +51 -0
- package/dist/esm/geo/sun.js.map +1 -0
- package/dist/esm/geo/tiles.d.ts +89 -0
- package/dist/esm/geo/tiles.d.ts.map +1 -0
- package/dist/esm/geo/tiles.js +136 -0
- package/dist/esm/geo/tiles.js.map +1 -0
- package/dist/esm/geo.d.ts +20 -0
- package/dist/esm/geo.d.ts.map +1 -0
- package/dist/esm/geo.js +19 -0
- package/dist/esm/geo.js.map +1 -0
- package/dist/esm/given.d.ts +15 -0
- package/dist/esm/given.d.ts.map +1 -0
- package/dist/esm/given.js +18 -0
- package/dist/esm/given.js.map +1 -0
- package/dist/esm/network.d.ts +23 -0
- package/dist/esm/network.d.ts.map +1 -0
- package/dist/esm/network.js +48 -0
- package/dist/esm/network.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/protocol.d.ts +40 -0
- package/dist/esm/protocol.d.ts.map +1 -0
- package/dist/esm/protocol.js +38 -0
- package/dist/esm/protocol.js.map +1 -0
- package/dist/esm/rubric/bridge.d.ts +428 -0
- package/dist/esm/rubric/bridge.d.ts.map +1 -0
- package/dist/esm/rubric/bridge.js +911 -0
- package/dist/esm/rubric/bridge.js.map +1 -0
- package/dist/esm/rubric/call.d.ts +73 -0
- package/dist/esm/rubric/call.d.ts.map +1 -0
- package/dist/esm/rubric/call.js +120 -0
- package/dist/esm/rubric/call.js.map +1 -0
- package/dist/esm/rubric/card.d.ts +74 -0
- package/dist/esm/rubric/card.d.ts.map +1 -0
- package/dist/esm/rubric/card.js +38 -0
- package/dist/esm/rubric/card.js.map +1 -0
- package/dist/esm/rubric/chain.d.ts +44 -0
- package/dist/esm/rubric/chain.d.ts.map +1 -0
- package/dist/esm/rubric/chain.js +49 -0
- package/dist/esm/rubric/chain.js.map +1 -0
- package/dist/esm/rubric/claimForm.d.ts +142 -0
- package/dist/esm/rubric/claimForm.d.ts.map +1 -0
- package/dist/esm/rubric/claimForm.js +109 -0
- package/dist/esm/rubric/claimForm.js.map +1 -0
- package/dist/esm/rubric/claimFormResource.d.ts +34 -0
- package/dist/esm/rubric/claimFormResource.d.ts.map +1 -0
- package/dist/esm/rubric/claimFormResource.js +33 -0
- package/dist/esm/rubric/claimFormResource.js.map +1 -0
- package/dist/esm/rubric/compose.d.ts +99 -0
- package/dist/esm/rubric/compose.d.ts.map +1 -0
- package/dist/esm/rubric/compose.js +225 -0
- package/dist/esm/rubric/compose.js.map +1 -0
- package/dist/esm/rubric/confidence.d.ts +81 -0
- package/dist/esm/rubric/confidence.d.ts.map +1 -0
- package/dist/esm/rubric/confidence.js +82 -0
- package/dist/esm/rubric/confidence.js.map +1 -0
- package/dist/esm/rubric/draft.d.ts +224 -0
- package/dist/esm/rubric/draft.d.ts.map +1 -0
- package/dist/esm/rubric/draft.js +206 -0
- package/dist/esm/rubric/draft.js.map +1 -0
- package/dist/esm/rubric/gateMet.d.ts +46 -0
- package/dist/esm/rubric/gateMet.d.ts.map +1 -0
- package/dist/esm/rubric/gateMet.js +104 -0
- package/dist/esm/rubric/gateMet.js.map +1 -0
- package/dist/esm/rubric/leg.d.ts +106 -0
- package/dist/esm/rubric/leg.d.ts.map +1 -0
- package/dist/esm/rubric/leg.js +138 -0
- package/dist/esm/rubric/leg.js.map +1 -0
- package/dist/esm/rubric/publish.d.ts +39 -0
- package/dist/esm/rubric/publish.d.ts.map +1 -0
- package/dist/esm/rubric/publish.js +29 -0
- package/dist/esm/rubric/publish.js.map +1 -0
- package/dist/esm/rubric/reanchor.d.ts +79 -0
- package/dist/esm/rubric/reanchor.d.ts.map +1 -0
- package/dist/esm/rubric/reanchor.js +146 -0
- package/dist/esm/rubric/reanchor.js.map +1 -0
- package/dist/esm/rubric/receipt.d.ts +96 -0
- package/dist/esm/rubric/receipt.d.ts.map +1 -0
- package/dist/esm/rubric/receipt.js +25 -0
- package/dist/esm/rubric/receipt.js.map +1 -0
- package/dist/esm/rubric/roundTrips.d.ts +17 -0
- package/dist/esm/rubric/roundTrips.d.ts.map +1 -0
- package/dist/esm/rubric/roundTrips.js +20 -0
- package/dist/esm/rubric/roundTrips.js.map +1 -0
- package/dist/esm/rubric/terms.d.ts +611 -0
- package/dist/esm/rubric/terms.d.ts.map +1 -0
- package/dist/esm/rubric/terms.js +755 -0
- package/dist/esm/rubric/terms.js.map +1 -0
- package/dist/esm/rubric/wants.d.ts +36 -0
- package/dist/esm/rubric/wants.d.ts.map +1 -0
- package/dist/esm/rubric/wants.js +52 -0
- package/dist/esm/rubric/wants.js.map +1 -0
- package/dist/esm/rubric.d.ts +30 -0
- package/dist/esm/rubric.d.ts.map +1 -0
- package/dist/esm/rubric.js +30 -0
- package/dist/esm/rubric.js.map +1 -0
- package/dist/esm/udid/base58.d.ts +8 -0
- package/dist/esm/udid/base58.d.ts.map +1 -0
- package/dist/esm/udid/base58.js +53 -0
- package/dist/esm/udid/base58.js.map +1 -0
- package/dist/esm/udid/canonical.d.ts +17 -0
- package/dist/esm/udid/canonical.d.ts.map +1 -0
- package/dist/esm/udid/canonical.js +28 -0
- package/dist/esm/udid/canonical.js.map +1 -0
- package/dist/esm/udid/cid.d.ts +22 -0
- package/dist/esm/udid/cid.d.ts.map +1 -0
- package/dist/esm/udid/cid.js +46 -0
- package/dist/esm/udid/cid.js.map +1 -0
- package/dist/esm/udid/key.d.ts +41 -0
- package/dist/esm/udid/key.d.ts.map +1 -0
- package/dist/esm/udid/key.js +58 -0
- package/dist/esm/udid/key.js.map +1 -0
- package/dist/esm/udid/resolve.d.ts +56 -0
- package/dist/esm/udid/resolve.d.ts.map +1 -0
- package/dist/esm/udid/resolve.js +162 -0
- package/dist/esm/udid/resolve.js.map +1 -0
- package/dist/esm/udid/schema.d.ts +150 -0
- package/dist/esm/udid/schema.d.ts.map +1 -0
- package/dist/esm/udid/schema.js +151 -0
- package/dist/esm/udid/schema.js.map +1 -0
- package/dist/esm/udid/verify.d.ts +35 -0
- package/dist/esm/udid/verify.d.ts.map +1 -0
- package/dist/esm/udid/verify.js +93 -0
- package/dist/esm/udid/verify.js.map +1 -0
- package/dist/esm/udid/wrapper.d.ts +90 -0
- package/dist/esm/udid/wrapper.d.ts.map +1 -0
- package/dist/esm/udid/wrapper.js +37 -0
- package/dist/esm/udid/wrapper.js.map +1 -0
- package/dist/esm/udid.d.ts +17 -0
- package/dist/esm/udid.d.ts.map +1 -0
- package/dist/esm/udid.js +17 -0
- package/dist/esm/udid.js.map +1 -0
- package/package.json +210 -4
|
@@ -0,0 +1,911 @@
|
|
|
1
|
+
import { CLAIM_KINDS, hostOf, normalizeTerms } from "./terms.js";
|
|
2
|
+
/**
|
|
3
|
+
* What every source and AI check says when it could not answer at all.
|
|
4
|
+
*
|
|
5
|
+
* Not `review`. The engine turns an errored fact with `onError: "review"`
|
|
6
|
+
* into verdict `review` — chain status 5, nothing signed until somebody
|
|
7
|
+
* looks — and nobody ever looks: there is no review screen, and the
|
|
8
|
+
* campaign's poster is a key with nobody behind it. A mainnet claim in
|
|
9
|
+
* collection 8253 sat exactly there, held for ever, because one oracle fact
|
|
10
|
+
* errored. `reject` is still never an approval (the engine lets an errored
|
|
11
|
+
* `reject` beat any other verdict), and a refused claimant reads that the
|
|
12
|
+
* check was unreachable and can submit again; a held one reads nothing.
|
|
13
|
+
*/
|
|
14
|
+
export const ON_ERROR = "reject";
|
|
15
|
+
/** The checker's own defaults (`services/worker-agent/src/config.ts`), carried over unchanged. */
|
|
16
|
+
export const DEFAULT_COOLDOWN = { meters: 150, days: 7 };
|
|
17
|
+
/**
|
|
18
|
+
* The name every source is declared under.
|
|
19
|
+
*
|
|
20
|
+
* The rubric format requires an `endpoint` and a `did:web` `audience` on
|
|
21
|
+
* every source, and hashes both into the rubric's id. Nothing ever calls
|
|
22
|
+
* them: the oracle answers by *name*, in-process. So they are one constant,
|
|
23
|
+
* agreed with the oracle, on a reserved domain that can never resolve.
|
|
24
|
+
*/
|
|
25
|
+
export const ORACLE_HOST = "oracle.openhands.invalid";
|
|
26
|
+
/**
|
|
27
|
+
* The document as bytes, and the name those bytes answer to.
|
|
28
|
+
*
|
|
29
|
+
* Their resolver fetches whatever the chain points at and requires
|
|
30
|
+
* `hex(sha256(the exact bytes served)) === the on-chain proof`, so the text
|
|
31
|
+
* returned here is the text that must be uploaded — hashing one serialization
|
|
32
|
+
* and uploading another is the one mistake that cannot be caught by reading
|
|
33
|
+
* the code.
|
|
34
|
+
*
|
|
35
|
+
* **Not a CID.** Our claim ids and terms are CIDv1, and the `#vct` proof is
|
|
36
|
+
* one too, but a rubric's proof is a bare hex sha256. Two conventions live on
|
|
37
|
+
* one entity because each side's reader demands its own.
|
|
38
|
+
*/
|
|
39
|
+
export async function rubricDocument(terms, binding, options = {}) {
|
|
40
|
+
const { envelope } = toEngineRubric(terms, binding, options);
|
|
41
|
+
const text = JSON.stringify(envelope);
|
|
42
|
+
const digest = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(text));
|
|
43
|
+
const proof = [...new Uint8Array(digest)].map((byte) => byte.toString(16).padStart(2, "0")).join("");
|
|
44
|
+
return { text, proof };
|
|
45
|
+
}
|
|
46
|
+
// ------------------------------------------------------------ the vocabulary
|
|
47
|
+
/**
|
|
48
|
+
* The names the oracle answers to, per gate. Exact: the oracle registers a
|
|
49
|
+
* handler per name (and per suffix, 2..5, for a rule that repeats within one
|
|
50
|
+
* rubric) and an unknown name falls through to the package's stock lanes,
|
|
51
|
+
* which know none of these.
|
|
52
|
+
*/
|
|
53
|
+
export const SOURCE_NAMES = {
|
|
54
|
+
"within-radius": "withinRadius",
|
|
55
|
+
located: "located",
|
|
56
|
+
"before-after": "beforeAfter",
|
|
57
|
+
"daylight-consistent": "daylight",
|
|
58
|
+
"weather-consistent": "weather",
|
|
59
|
+
"not-already-mapped": "notAlreadyMapped",
|
|
60
|
+
"re-measure": "reMeasure",
|
|
61
|
+
"at-registered-point": "atPoint",
|
|
62
|
+
"mapped-grid": "mappedGrid"
|
|
63
|
+
};
|
|
64
|
+
/** The cool-off source, emitted from the options rather than from a gate. */
|
|
65
|
+
export const COOLDOWN_SOURCE = "cooldown";
|
|
66
|
+
/** The marker source on a site ask, so the claim's `kind` is frozen on the receipt for the oracle's act policy. */
|
|
67
|
+
export const SITE_SOURCE = "openhandsSite";
|
|
68
|
+
/** The AI check, per judge criterion: `judge`, then `judge2..`. */
|
|
69
|
+
export const JUDGE_NAME = "judge";
|
|
70
|
+
/**
|
|
71
|
+
* Whether the photograph is evidence at all — asked of every photograph ask,
|
|
72
|
+
* by the bridge, whatever the terms say.
|
|
73
|
+
*
|
|
74
|
+
* **What bought it (mainnet, collections 8253 and 8231, September 2026).** An
|
|
75
|
+
* AI-generated square of an Italian piazza, reported as Giza, with a garbled
|
|
76
|
+
* burned-in timestamp and "Made with Google AI" in its own IPTC — approved,
|
|
77
|
+
* the judges at 98 and 99. One wallet photographing a computer monitor that
|
|
78
|
+
* was showing litter — moiré, a share icon, a mouse cursor in frame — approved
|
|
79
|
+
* five times, a cleanup's before and after shot fourteen seconds apart off the
|
|
80
|
+
* same screen among them. Paper balls on a tiled floor and a wrapper on
|
|
81
|
+
* somebody's carpet, approved as mapped messes. Every judge was right about
|
|
82
|
+
* the sentence it was given: the picture did show waste, the size was about a
|
|
83
|
+
* bagful, nobody's face was in it. No rule asked whether the picture was a
|
|
84
|
+
* photograph, and `JUDGE_GUIDANCE` told each judge that anything else wrong
|
|
85
|
+
* with the claim was not its to judge.
|
|
86
|
+
*
|
|
87
|
+
* Two facts the oracle reads off the file's own bytes, and one sentence a
|
|
88
|
+
* model rules on. They are rules "every ask of the shape carries" — like the
|
|
89
|
+
* cool-off and the duplicate rule — rather than criteria in the terms, for
|
|
90
|
+
* the reason those are: an ask already posted has its terms frozen, and a
|
|
91
|
+
* fake photograph is not something a poster should have to remember to
|
|
92
|
+
* forbid. `#rub` therefore says more than `#done` does, as it already did.
|
|
93
|
+
*
|
|
94
|
+
* Three refusals, all `invalid_evidence`:
|
|
95
|
+
*
|
|
96
|
+
* - `notMarkedGenerated` — the file itself (IPTC, XMP, trusted Content
|
|
97
|
+
* Credentials) says a generator made it. That is the file's own confession.
|
|
98
|
+
* - the authenticity judge (`realPhotoRule`) — the picture is of a screen, a
|
|
99
|
+
* print or a generator's work, or, where the ask is about waste on the
|
|
100
|
+
* ground, of somebody's floor.
|
|
101
|
+
* - `notElsewhere` — the photograph's EXIF GPS is farther than `meters` from
|
|
102
|
+
* the point the claim reported. A camera's last fix can be stale and a
|
|
103
|
+
* browser's point can come from a cell tower, which is what the width of
|
|
104
|
+
* `NOT_ELSEWHERE_FLOOR_METERS` is for: it forgives the instruments, so what
|
|
105
|
+
* is left to refuse is another town.
|
|
106
|
+
*
|
|
107
|
+
* **None of them holds a claim for a person, because there is no person.**
|
|
108
|
+
* `onFail: "review"` would give a claim verdict `review` — chain status 5,
|
|
109
|
+
* nothing signed until somebody looks — and nobody ever looks: there is no review screen, and the campaign's poster
|
|
110
|
+
* is a key with nobody behind it. A claimant who is refused reads why and can
|
|
111
|
+
* go and take the photograph again; one who is held reads nothing and waits
|
|
112
|
+
* for ever. So a screen that cannot be made wide enough to refuse on is not
|
|
113
|
+
* written at all, and each refusal's `reason` says what to do about it.
|
|
114
|
+
*/
|
|
115
|
+
export const PHOTO_CHECKS = {
|
|
116
|
+
notMarkedGenerated: "notMarkedGenerated",
|
|
117
|
+
notElsewhere: "notElsewhere"
|
|
118
|
+
};
|
|
119
|
+
/**
|
|
120
|
+
* How far a photograph's own GPS may sit from the point the claim reported.
|
|
121
|
+
*
|
|
122
|
+
* Not the place rule — `within-radius` is that, and it stays as tight as the
|
|
123
|
+
* poster made it. This compares two readings of the SAME moment that come
|
|
124
|
+
* from different instruments: the camera's EXIF fix, which can be minutes
|
|
125
|
+
* stale, and the browser's geolocation (`nowAndHere`), which falls back to
|
|
126
|
+
* wifi and cell towers when no satellite fix arrives inside its eight
|
|
127
|
+
* seconds. The two honestly differ by hundreds of metres. This is meant to
|
|
128
|
+
* catch another city, not another street, so an ask's own radius is used only
|
|
129
|
+
* when it is WIDER than this — a 150 m cleanup radius would refuse honest
|
|
130
|
+
* phones all day.
|
|
131
|
+
*/
|
|
132
|
+
export const NOT_ELSEWHERE_FLOOR_METERS = 1000;
|
|
133
|
+
/**
|
|
134
|
+
* The contract's ceiling on one name within one rubric: bare, then `2..5`.
|
|
135
|
+
*
|
|
136
|
+
* For an `ext` name it is a wall: the oracle registers exactly those handlers,
|
|
137
|
+
* and a sixth falls through to the stock lane and is POSTed to a host that can
|
|
138
|
+
* never resolve. The photograph screens are asked once per photograph and no
|
|
139
|
+
* claim carries more than two, so they sit under it by construction. For
|
|
140
|
+
* `judge` it is the contract's word rather than a wall — the stock judge
|
|
141
|
+
* answers whatever name a rubric declares — and the one judge the bridge adds
|
|
142
|
+
* of its own accord keeps to it: see where it is emitted.
|
|
143
|
+
*/
|
|
144
|
+
export const NAME_CEILING = 5;
|
|
145
|
+
/** The one duplicate rule every photo ask carries. */
|
|
146
|
+
export const UNIQUE_RULE_ID = "OH-DUP-1";
|
|
147
|
+
/**
|
|
148
|
+
* The `send` keys per name, in the order they are written — the contract's
|
|
149
|
+
* table, verbatim. `bridge.test.ts` asserts the emitted keys against this,
|
|
150
|
+
* and the oracle's tests assert its handlers against the same document.
|
|
151
|
+
*
|
|
152
|
+
* `judge` is the *plain photo* row. An AI check sends what the ask's shape
|
|
153
|
+
* actually carries, which is more than one photograph on a pair —
|
|
154
|
+
* `JUDGE_SEND_KEYS` below is that table, and the one `bridge.test.ts` checks
|
|
155
|
+
* a pair and a site against.
|
|
156
|
+
*/
|
|
157
|
+
export const SEND_KEYS = {
|
|
158
|
+
withinRadius: ["lat", "lon", "photo", "centerLat", "centerLon", "meters"],
|
|
159
|
+
located: ["lat", "lon", "photo"],
|
|
160
|
+
beforeAfter: ["before", "after", "meters"],
|
|
161
|
+
daylight: ["text", "at", "fallbackAt", "lat", "lon"],
|
|
162
|
+
weather: ["text", "at", "fallbackAt", "lat", "lon"],
|
|
163
|
+
notAlreadyMapped: ["lat", "lon", "meters"],
|
|
164
|
+
cooldown: ["lat", "lon", "meters", "days"],
|
|
165
|
+
reMeasure: ["url", "text"],
|
|
166
|
+
atPoint: ["lat", "lon", "points", "meters"],
|
|
167
|
+
mappedGrid: ["box", "tag", "minEdits", "minFeatures", "days"],
|
|
168
|
+
openhandsSite: ["kind", "lat", "lon"],
|
|
169
|
+
notElsewhere: ["lat", "lon", "photo", "meters"],
|
|
170
|
+
notMarkedGenerated: ["photo"],
|
|
171
|
+
judge: ["task", "text", "photo"]
|
|
172
|
+
};
|
|
173
|
+
/**
|
|
174
|
+
* What a judge is sent, per ask shape — the fix for the 1149 patch rejections.
|
|
175
|
+
*
|
|
176
|
+
* A patch claim on a site carries four files: the before, the after (which is
|
|
177
|
+
* also `$photo`), and the bags in `$extraFile`. Sending only `$photo` handed
|
|
178
|
+
* the model ONE image and asked it whether two photographs showed the same
|
|
179
|
+
* place — it answered, correctly, that it could not compare one photograph,
|
|
180
|
+
* and every honest patch was refused. So a pair ask sends the pair, an ask
|
|
181
|
+
* that expects a second file sends it as `bags`, and a site also says which
|
|
182
|
+
* `kind` of claim arrived, because the two kinds carry different evidence.
|
|
183
|
+
*
|
|
184
|
+
* The keys are the contract's (`facts-contract.md`, amended 2026-09-16), and
|
|
185
|
+
* the engine's own AI lane forwards every attachment a `send` names as its own
|
|
186
|
+
* labelled input — a file it cannot read arrives as a descriptor rather than
|
|
187
|
+
* vanishing (evaluator spec §6.1).
|
|
188
|
+
*/
|
|
189
|
+
export const JUDGE_SEND_KEYS = {
|
|
190
|
+
text: ["task", "text"],
|
|
191
|
+
photo: ["task", "text", "photo"],
|
|
192
|
+
pair: ["task", "text", "photo", "before", "after"],
|
|
193
|
+
"pair-with-bags": ["task", "text", "photo", "before", "after", "bags"],
|
|
194
|
+
site: ["task", "text", "photo", "before", "after", "bags", "kind"]
|
|
195
|
+
};
|
|
196
|
+
/**
|
|
197
|
+
* The sentence every judge on a site ask is told first.
|
|
198
|
+
*
|
|
199
|
+
* One rubric serves both kinds of claim (the chain allows exactly one), so a
|
|
200
|
+
* criterion written for a patch is also read against the site photograph and
|
|
201
|
+
* the other way round. Without this the site judge read "before, after and the
|
|
202
|
+
* bags" as a rule the wide shot had broken. It says what each kind carries and
|
|
203
|
+
* that only the kind in front of the model is being ruled on; `$kind` in the
|
|
204
|
+
* send map is where the model learns which one that is.
|
|
205
|
+
*/
|
|
206
|
+
export const SITE_KIND_PREAMBLE = 'A claim of kind "patch" carries a before photograph, an after photograph and a photograph of the bags; a claim of kind "site" carries one wide photograph of the whole area. Rule only on what this claim\'s kind carries.';
|
|
207
|
+
/**
|
|
208
|
+
* What every judge is told before the sentence it is ruling on.
|
|
209
|
+
*
|
|
210
|
+
* **The wrapper this sits inside is strict on purpose, and that is the
|
|
211
|
+
* problem.** The oracle's own prompt ends "Do not give benefit of the doubt.
|
|
212
|
+
* If a rule requires something and you cannot find it, that rule FAILS." That
|
|
213
|
+
* is the right posture for a rule about a fact and the wrong one for a
|
|
214
|
+
* judgement of degree: "the photograph supports the amount claimed" gets read
|
|
215
|
+
* as "prove the amount", and an honest phone photograph of a real pile proves
|
|
216
|
+
* nothing to that standard. Ask 43910 refused six of six real claims on
|
|
217
|
+
* testnet, one of them with nothing whatever wrong with it. This paragraph
|
|
218
|
+
* says what the evidence actually is — a phone, outdoors, one go — and which
|
|
219
|
+
* way doubt falls, so a rule of degree is read as one.
|
|
220
|
+
*
|
|
221
|
+
* **It cannot live in `criterion.text`, twice over.** That field is cut to 300
|
|
222
|
+
* characters by `parseTerms`, so a paragraph in it would arrive on the model's
|
|
223
|
+
* wire with its end chopped off; and `toEngineRubric` copies it verbatim into
|
|
224
|
+
* the reject gate's `reason`, which is the sentence a refused worker reads. A
|
|
225
|
+
* lecture on how to judge is not an explanation of why somebody was not paid.
|
|
226
|
+
* `instructions` is neither of those things: it is not part of the frozen
|
|
227
|
+
* terms, so it is not hashed on chain, and no worker ever sees it.
|
|
228
|
+
*
|
|
229
|
+
* **Its second half is about the refusal, not the verdict.** The model's own
|
|
230
|
+
* `reason` is the only per-claim explanation that ever reaches the person who
|
|
231
|
+
* did the work, and left to itself the model writes it to an auditor: "it
|
|
232
|
+
* therefore does not support the reported trailer-sized amount". Somebody who
|
|
233
|
+
* walked to a ditch and photographed it is owed a sentence they can act on —
|
|
234
|
+
* what was seen, what fell short, what would have been enough.
|
|
235
|
+
*
|
|
236
|
+
* The order of the last two matters. "Never list it as a failed rule" stays
|
|
237
|
+
* the final sentence, because that is the one protecting the verdict, and the
|
|
238
|
+
* instruction nearest the end is the one a model is least likely to drop.
|
|
239
|
+
*
|
|
240
|
+
* Validated by replaying 18 real claims — the real photographs, the real
|
|
241
|
+
* prompt: it was never once reported as a failed rule, and the verdicts moved
|
|
242
|
+
* from 13 of 18 to 16 of 18 agreeing with what a person would have decided.
|
|
243
|
+
*
|
|
244
|
+
* **Amended 2026-09-21, two clauses, after the fakes on 8253 and 8231**
|
|
245
|
+
* (`PHOTO_CHECKS` has the incident). Both were added, nothing was taken out,
|
|
246
|
+
* and neither has been replayed yet — the 18-claim replay above is of the
|
|
247
|
+
* paragraph before them, so replay before this is anchored on a live ask.
|
|
248
|
+
*
|
|
249
|
+
* - After "still evidence, so rule on what you can see in it": *"That is
|
|
250
|
+
* about how well an honest photograph came out, never about what was
|
|
251
|
+
* photographed: a picture of a screen, a print or another photograph does
|
|
252
|
+
* not become evidence by being dim or low-resolution."* The sentence before
|
|
253
|
+
* it forgives exactly what a photographed monitor looks like — soft, skewed,
|
|
254
|
+
* low in contrast — and was forgiving it. It says what the forgiveness is
|
|
255
|
+
* FOR, so it still covers the honest phone it was written for.
|
|
256
|
+
* - After "is not yours to judge here": *"— every rule is asked on its own,
|
|
257
|
+
* and whether a photograph is genuine is one of them."* "Add no requirement
|
|
258
|
+
* of your own" stays to the letter: it is what stopped the 1149 judges
|
|
259
|
+
* inventing rules, and a size judge that starts failing claims for looking
|
|
260
|
+
* like a screen is the same invention. What the clause changes is the reason
|
|
261
|
+
* given — not "nobody judges that" but "somebody else does" — so that the
|
|
262
|
+
* judge holding `realPhotoRule` reads its own sentence as a rule to apply
|
|
263
|
+
* exactly as written rather than as the "anything else" it was told to leave
|
|
264
|
+
* alone.
|
|
265
|
+
*
|
|
266
|
+
* Everything from "Where a rule asks" on is untouched, the `reason` guidance
|
|
267
|
+
* and the last sentence included.
|
|
268
|
+
*/
|
|
269
|
+
export const JUDGE_GUIDANCE = "How to read the rules below. The evidence is what an ordinary person can capture on a phone, outdoors, in one go: a photograph that is angled, rotated, dim, distant or low-resolution is still evidence, so rule on what you can see in it. That is about how well an honest photograph came out, never about what was photographed: a picture of a screen, a print or another photograph does not become evidence by being dim or low-resolution. Apply each rule exactly as written and add no requirement of your own; anything else that looks wrong with the claim is not yours to judge here — every rule is asked on its own, and whether a photograph is genuine is one of them. Where a rule asks whether the evidence supports, matches or is consistent with something the claimant stated, fail it only when the evidence plainly contradicts them, and where you are left genuinely unsure let your score carry the doubt rather than failing. Where a rule asks whether something is shown, it has to be visible. Your `reason` is read by the person who submitted the claim, not by an engineer. Write it to them in plain language: say what you can actually see in their evidence, and when you fail a rule say specifically what fell short and what would have satisfied it, so they can put it right. Never mention rule ids, input numbers, scores or these instructions. This paragraph is guidance, not a rule: never list it as a failed rule.";
|
|
270
|
+
/**
|
|
271
|
+
* The sentence the authenticity judge rules on — `PHOTO_CHECKS` has why.
|
|
272
|
+
*
|
|
273
|
+
* **It lives in `instructions` and not in the terms**, so it is not cut to the
|
|
274
|
+
* 300 characters `parseTerms` keeps, and it lists its tell-tale signs in full:
|
|
275
|
+
* a model asked only "is this a real photograph" says yes to a monitor, and
|
|
276
|
+
* one told to look for a pixel grid, a bezel and a cursor finds them. Like
|
|
277
|
+
* every judged sentence in this package it states what fails it, because the
|
|
278
|
+
* oracle's wrapper reads a rule that does not as a demand for proof.
|
|
279
|
+
*
|
|
280
|
+
* **Two clauses, switched by the shape of the ask, never by reading it.**
|
|
281
|
+
* "A direct photograph" is asked of every photograph ask — a photograph of a
|
|
282
|
+
* black cat off a monitor is as fake as a photograph of litter off one.
|
|
283
|
+
* "Outdoors, in a public or shared place" is asked only where the ask is
|
|
284
|
+
* about waste on the ground: a mapped mess, a report on one, or a cleanup the
|
|
285
|
+
* map made (`outdoorsAsk`). A composed ask to tidy a desk is a pair of
|
|
286
|
+
* photographs taken indoors, honestly.
|
|
287
|
+
*
|
|
288
|
+
* On a pair it speaks of every photograph, because the judge is sent every
|
|
289
|
+
* one the claim carries; the outdoors clause is about the ground being
|
|
290
|
+
* cleared, so the bags in a van and the load at a depot are not failed for
|
|
291
|
+
* having a roof over them.
|
|
292
|
+
*
|
|
293
|
+
* `rule` alone is the gate's `reason` — the sentence a refused worker reads.
|
|
294
|
+
* The list of signs is for the model.
|
|
295
|
+
*/
|
|
296
|
+
export function realPhotoRule(shape) {
|
|
297
|
+
const one = shape.pair ? "Every photograph" : "The photograph";
|
|
298
|
+
const it = shape.pair ? "any photograph" : "it";
|
|
299
|
+
const scene = shape.pair ? "the ground being cleared" : "the scene";
|
|
300
|
+
const rule = shape.outdoors
|
|
301
|
+
? shape.pair
|
|
302
|
+
? `${one} is a direct photograph of a real place, and ${scene} is outdoors in a street, verge, park, beach, watercourse, lot or other public or shared outdoor space.`
|
|
303
|
+
: `${one} is a direct photograph of a real place, taken outdoors in a street, verge, park, beach, watercourse, lot or other public or shared outdoor space.`
|
|
304
|
+
: `${one} is a direct photograph of a real scene.`;
|
|
305
|
+
const screen = `${it} is a picture of a screen, monitor, print or another photograph (look for a pixel grid or moiré bands, a bezel, glare on glass, a cursor, a browser or app interface, the perspective skew of a flat glowing rectangle)`;
|
|
306
|
+
const generated = `${shape.pair ? "any" : "it"} shows signs of being computer-generated (garbled or nonsensical lettering, signs, dates or timestamps; an artificial vignette or frame; impossible geometry)`;
|
|
307
|
+
const indoors = `${scene} is indoors or part of somebody's home — a household floor, table, balcony or room`;
|
|
308
|
+
const fails = shape.outdoors ? `Fail this if ${screen}, if ${generated}, or if ${indoors}.` : `Fail this if ${screen}, or if ${generated}.`;
|
|
309
|
+
return { rule, text: `${rule} ${fails}` };
|
|
310
|
+
}
|
|
311
|
+
/** Per attempt. Their ceiling is 30 s; the oracle answers in-process, so this is generous. */
|
|
312
|
+
const SOURCE_TIMEOUT_MS = 15_000;
|
|
313
|
+
/**
|
|
314
|
+
* How far apart a pair's two photographs may be taken. The gate carries no
|
|
315
|
+
* radius by design — the place is the ask's `within-radius` gate — so that
|
|
316
|
+
* gate's radius is used when the ask has one, and this when it does not.
|
|
317
|
+
*/
|
|
318
|
+
const DEFAULT_PAIR_METERS = 150;
|
|
319
|
+
// -------------------------------------------------------------- the fields
|
|
320
|
+
/**
|
|
321
|
+
* The claim form's file questions (claim form v3, plan D3). Each is a SurveyJS
|
|
322
|
+
* file answer — `[{name, type, content: "https://…"}]` — which is what lets
|
|
323
|
+
* `mediaTypeIn`, `maxSizeMB` and the duplicate lanes see the bytes. On a
|
|
324
|
+
* pair, `photo` is the after photograph, the same as `file`.
|
|
325
|
+
*/
|
|
326
|
+
const PHOTO = "$photo";
|
|
327
|
+
const BEFORE_PHOTO = "$beforePhoto";
|
|
328
|
+
const AFTER_PHOTO = "$afterPhoto";
|
|
329
|
+
const EXTRA_FILE = "$extraFile";
|
|
330
|
+
/** Which kind of claim arrived — `patch` or `site` on a shared site. */
|
|
331
|
+
const KIND = "$kind";
|
|
332
|
+
const TEXT = "$deliverable";
|
|
333
|
+
const LAT = "$location.lat";
|
|
334
|
+
const LON = "$location.lon";
|
|
335
|
+
const AT = "$location.at";
|
|
336
|
+
/** The engine's own token for when the claim was submitted — the fallback when no reading carries a time. */
|
|
337
|
+
const SUBMITTED_AT = "ctx.claim.submissionDate";
|
|
338
|
+
/** Which deliverables carry a photograph in `$photo`. */
|
|
339
|
+
const WITH_PHOTO = new Set(["photo", "photo-pair", "mess-report", "field-report", "file"]);
|
|
340
|
+
/**
|
|
341
|
+
* Which deliverables ARE a photograph. `file` rides in `$photo` too, and is a
|
|
342
|
+
* scan, a video or a PDF as often as a picture: asking whether a document is
|
|
343
|
+
* "a direct photograph of a real scene" would refuse every honest one. So the
|
|
344
|
+
* photograph screens are not asked of it.
|
|
345
|
+
*/
|
|
346
|
+
const PHOTOGRAPH = new Set(["photo", "photo-pair", "mess-report", "field-report"]);
|
|
347
|
+
/** The rules that make a claim report where it was — what `notElsewhere` compares the photograph against. */
|
|
348
|
+
const PLACE_GATES = new Set(["located", "within-radius", "not-already-mapped", "at-registered-point"]);
|
|
349
|
+
/** Long enough that no honest deliverable hits it; `lengthBetween` is inclusive. */
|
|
350
|
+
const LENGTH_CEILING = 1_000_000;
|
|
351
|
+
const MEGABYTE = 1_048_576;
|
|
352
|
+
/** Bytes as the MB their `maxSizeMB` reads, rounded up to a hundredth so a limit never tightens. */
|
|
353
|
+
const megabytes = (bytes) => Math.ceil((bytes / MEGABYTE) * 100) / 100;
|
|
354
|
+
const escapeRegex = (raw) => raw.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
355
|
+
/**
|
|
356
|
+
* A literal as a case-insensitive pattern, spelled out.
|
|
357
|
+
*
|
|
358
|
+
* Their `matches` compiles the pattern with no flags, and JavaScript has no
|
|
359
|
+
* inline `(?i)`, so case-insensitivity has to be written into the character
|
|
360
|
+
* classes. Our own gates all compare lowercased, so anything else would be a
|
|
361
|
+
* stricter rule than the poster agreed to.
|
|
362
|
+
*/
|
|
363
|
+
const insensitive = (literal) => [...literal].map((character) => (/[a-z]/i.test(character) ? `[${character.toLowerCase()}${character.toUpperCase()}]` : escapeRegex(character))).join("");
|
|
364
|
+
/**
|
|
365
|
+
* A string that must reach the oracle as itself.
|
|
366
|
+
*
|
|
367
|
+
* A `send` value that begins like a reference (`$`, `~`, `.`, `ctx.`, `ext.`,
|
|
368
|
+
* `ai.`) IS a reference to their binder, and an ask titled "$5 for a photo"
|
|
369
|
+
* would bind to a question that does not exist and take the rubric down. A
|
|
370
|
+
* literal that could be mistaken for one is prefixed with a word.
|
|
371
|
+
*/
|
|
372
|
+
const literal = (text) => (/^[$~.]|^(?:ctx|ext|ai)\./.test(text) ? `Text: ${text}` : text);
|
|
373
|
+
/** `OH-101-MENTIONS-URL` — their code grammar is `^[A-Z0-9]+-[0-9]+-[A-Z0-9-]+$`. */
|
|
374
|
+
const codeFor = (index, label) => `OH-${100 + index}-${label.toUpperCase().replace(/[^A-Z0-9]+/g, "-").replace(/^-|-$/g, "")}`;
|
|
375
|
+
const field = (name, op, value) => ({
|
|
376
|
+
"@type": "Condition",
|
|
377
|
+
field: name,
|
|
378
|
+
op,
|
|
379
|
+
...(value === undefined ? {} : { value })
|
|
380
|
+
});
|
|
381
|
+
/**
|
|
382
|
+
* The words our own `reports-status` accepts, as one pattern.
|
|
383
|
+
*
|
|
384
|
+
* `verdict.ts` accepts a three-digit code introduced by a status word, or any
|
|
385
|
+
* of the phrases that say the site never answered. The context words matter:
|
|
386
|
+
* a bare three-digit number would let "I checked 200 pages" pass as a status,
|
|
387
|
+
* and a rule looser than ours would approve work our own checker rejects.
|
|
388
|
+
*/
|
|
389
|
+
const STATUS_WORDS = ["status", "code", "http", "returned", "returns", "responded", "responds", "answered", "answers", "gave"];
|
|
390
|
+
const DOWN_WORDS = [
|
|
391
|
+
"did not answer",
|
|
392
|
+
"didn't answer",
|
|
393
|
+
"does not answer",
|
|
394
|
+
"no response",
|
|
395
|
+
"unreachable",
|
|
396
|
+
"timed out",
|
|
397
|
+
"timeout",
|
|
398
|
+
"could not connect",
|
|
399
|
+
"couldn't connect",
|
|
400
|
+
"connection refused",
|
|
401
|
+
"is down",
|
|
402
|
+
"not responding",
|
|
403
|
+
"never answered"
|
|
404
|
+
];
|
|
405
|
+
/* Bounded on both sides: the gap is capped so the pattern cannot backtrack,
|
|
406
|
+
which is also what keeps it inside their safe-regex subset. */
|
|
407
|
+
const statusPattern = () => [...STATUS_WORDS.map((word) => `${insensitive(word)}[^0-9]{0,16}[0-9]{3}`), ...DOWN_WORDS.map(insensitive)].join("|");
|
|
408
|
+
/** A native gate: the engine performs it itself. */
|
|
409
|
+
function nativeGate(gate, index) {
|
|
410
|
+
switch (gate.id) {
|
|
411
|
+
/* `present` is false for null, "" and [] — exactly our "there is a
|
|
412
|
+
deliverable", which trims first and asks for length. */
|
|
413
|
+
case "non-empty":
|
|
414
|
+
return { "@type": "Gate", code: codeFor(index, "present"), reason: "Nothing was handed over", when: field(TEXT, "present"), onFail: "reject", class: "insufficient_evidence" };
|
|
415
|
+
case "min-length":
|
|
416
|
+
return {
|
|
417
|
+
"@type": "Gate",
|
|
418
|
+
code: codeFor(index, "length"),
|
|
419
|
+
reason: `Shorter than the ${gate.chars} characters this ask asked for`,
|
|
420
|
+
when: field(TEXT, "lengthBetween", [gate.chars, LENGTH_CEILING]),
|
|
421
|
+
onFail: "reject",
|
|
422
|
+
class: "insufficient_evidence"
|
|
423
|
+
};
|
|
424
|
+
/* We match the host, not the whole URL — a worker who writes
|
|
425
|
+
`docs.ixo.world responded 200` has named it. */
|
|
426
|
+
case "mentions-url":
|
|
427
|
+
return {
|
|
428
|
+
"@type": "Gate",
|
|
429
|
+
code: codeFor(index, "names-site"),
|
|
430
|
+
reason: `Never names ${hostOf(gate.url)}`,
|
|
431
|
+
when: field(TEXT, "matches", insensitive(hostOf(gate.url))),
|
|
432
|
+
onFail: "reject",
|
|
433
|
+
class: "invalid_evidence"
|
|
434
|
+
};
|
|
435
|
+
case "reports-status":
|
|
436
|
+
return {
|
|
437
|
+
"@type": "Gate",
|
|
438
|
+
code: codeFor(index, "reports-status"),
|
|
439
|
+
reason: "States no status and no failure",
|
|
440
|
+
when: field(TEXT, "matches", statusPattern()),
|
|
441
|
+
onFail: "reject",
|
|
442
|
+
class: "insufficient_evidence"
|
|
443
|
+
};
|
|
444
|
+
case "mentions-terms":
|
|
445
|
+
return {
|
|
446
|
+
"@type": "Gate",
|
|
447
|
+
code: codeFor(index, "terms"),
|
|
448
|
+
reason: `Missing ${gate.terms.map((term) => `"${term}"`).join(", ")}`,
|
|
449
|
+
when: { "@type": "Condition", all: gate.terms.map((term) => field(TEXT, "matches", insensitive(term))) },
|
|
450
|
+
onFail: "reject",
|
|
451
|
+
class: "invalid_evidence"
|
|
452
|
+
};
|
|
453
|
+
/*
|
|
454
|
+
* Facts about the attached file, which the engine reads off the claim's
|
|
455
|
+
* SurveyJS file answer. `mediaTypeIn` takes MIME globs, so `image/*` is
|
|
456
|
+
* passed as it is; a missing attachment fails both, which is right — on a
|
|
457
|
+
* photo ask the photograph IS the work.
|
|
458
|
+
*/
|
|
459
|
+
case "file-type":
|
|
460
|
+
return {
|
|
461
|
+
"@type": "Gate",
|
|
462
|
+
code: codeFor(index, "file-type"),
|
|
463
|
+
reason: `The file handed over is not ${gate.accept}`,
|
|
464
|
+
when: field(PHOTO, "mediaTypeIn", [gate.accept]),
|
|
465
|
+
onFail: "reject",
|
|
466
|
+
class: "invalid_evidence"
|
|
467
|
+
};
|
|
468
|
+
case "max-bytes":
|
|
469
|
+
return {
|
|
470
|
+
"@type": "Gate",
|
|
471
|
+
code: codeFor(index, "file-size"),
|
|
472
|
+
reason: `The file handed over is larger than ${gate.bytes} bytes`,
|
|
473
|
+
when: field(PHOTO, "maxSizeMB", megabytes(gate.bytes)),
|
|
474
|
+
onFail: "reject",
|
|
475
|
+
class: "invalid_evidence"
|
|
476
|
+
};
|
|
477
|
+
/* The second file: it has to be there, and it has to fit. */
|
|
478
|
+
case "with-file":
|
|
479
|
+
return {
|
|
480
|
+
"@type": "Gate",
|
|
481
|
+
code: codeFor(index, "extra-file"),
|
|
482
|
+
reason: `No second file under ${gate.bytes} bytes came with it`,
|
|
483
|
+
when: { "@type": "Condition", all: [field(EXTRA_FILE, "present"), field(EXTRA_FILE, "maxSizeMB", megabytes(gate.bytes))] },
|
|
484
|
+
onFail: "reject",
|
|
485
|
+
class: "invalid_evidence"
|
|
486
|
+
};
|
|
487
|
+
default:
|
|
488
|
+
return null;
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
/**
|
|
492
|
+
* A sourced gate: the oracle answers it by name, with the rule's parameters
|
|
493
|
+
* sent as literals and the claim's fields sent as refs — the keys exactly as
|
|
494
|
+
* `SEND_KEYS` lists them. The `name` here is the bare vocabulary word; a
|
|
495
|
+
* suffix, when one is needed, is added once the whole rubric is known.
|
|
496
|
+
*/
|
|
497
|
+
function sourcedGate(gate, index, context) {
|
|
498
|
+
const name = SOURCE_NAMES[gate.id];
|
|
499
|
+
if (!name)
|
|
500
|
+
return null;
|
|
501
|
+
const reject = (label, reason, kind = "refuted") => ({ "@type": "Gate", code: codeFor(index, label), reason, onFail: "reject", class: kind });
|
|
502
|
+
switch (gate.id) {
|
|
503
|
+
case "within-radius":
|
|
504
|
+
return {
|
|
505
|
+
name,
|
|
506
|
+
send: { lat: LAT, lon: LON, photo: PHOTO, centerLat: gate.lat, centerLon: gate.lon, meters: gate.meters },
|
|
507
|
+
gate: reject("within-radius", `Not within ${gate.meters} m of ${gate.place || `${gate.lat}, ${gate.lon}`}`)
|
|
508
|
+
};
|
|
509
|
+
case "located":
|
|
510
|
+
return {
|
|
511
|
+
name,
|
|
512
|
+
send: { lat: LAT, lon: LON, photo: PHOTO },
|
|
513
|
+
gate: reject("located", "No location was reported", "insufficient_evidence")
|
|
514
|
+
};
|
|
515
|
+
case "before-after":
|
|
516
|
+
return {
|
|
517
|
+
name,
|
|
518
|
+
send: { before: BEFORE_PHOTO, after: AFTER_PHOTO, meters: context.radiusMeters ?? DEFAULT_PAIR_METERS },
|
|
519
|
+
gate: reject("before-after", "The two photographs are not of the same place, in that order")
|
|
520
|
+
};
|
|
521
|
+
case "daylight-consistent":
|
|
522
|
+
return {
|
|
523
|
+
name,
|
|
524
|
+
send: { text: TEXT, at: AT, fallbackAt: SUBMITTED_AT, lat: LAT, lon: LON },
|
|
525
|
+
gate: reject("daylight", "Describes light the sun could not have given at that place and time")
|
|
526
|
+
};
|
|
527
|
+
case "weather-consistent":
|
|
528
|
+
return {
|
|
529
|
+
name,
|
|
530
|
+
send: { text: TEXT, at: AT, fallbackAt: SUBMITTED_AT, lat: LAT, lon: LON },
|
|
531
|
+
gate: reject("weather", "Describes weather the archive did not record at that place and time")
|
|
532
|
+
};
|
|
533
|
+
case "not-already-mapped":
|
|
534
|
+
return {
|
|
535
|
+
name,
|
|
536
|
+
send: { lat: LAT, lon: LON, meters: gate.metres },
|
|
537
|
+
gate: reject("not-already-mapped", `Something approved on this ask is already within ${gate.metres} m`)
|
|
538
|
+
};
|
|
539
|
+
/* The URL is the ask's, not the claim's: the form carries none. */
|
|
540
|
+
case "re-measure":
|
|
541
|
+
return {
|
|
542
|
+
name,
|
|
543
|
+
send: { url: literal(gate.url), text: TEXT },
|
|
544
|
+
gate: reject("re-measure", `A fresh reading of ${hostOf(gate.url)} disagrees with the answer`)
|
|
545
|
+
};
|
|
546
|
+
/* Points as one JSON string: a `send` value is a string, a number or a
|
|
547
|
+
boolean, never a list, and the oracle parses it back. */
|
|
548
|
+
case "at-registered-point":
|
|
549
|
+
return {
|
|
550
|
+
name,
|
|
551
|
+
send: { lat: LAT, lon: LON, points: JSON.stringify(gate.points), meters: gate.metres },
|
|
552
|
+
gate: reject("at-point", `Not within ${gate.metres} m of any registered point`)
|
|
553
|
+
};
|
|
554
|
+
/* The box likewise: one JSON string, `{west, south, east, north}`. */
|
|
555
|
+
case "mapped-grid":
|
|
556
|
+
return {
|
|
557
|
+
name,
|
|
558
|
+
send: { box: JSON.stringify(gate.box), tag: gate.tag, minEdits: gate.minEdits, minFeatures: gate.minFeatures, days: gate.days },
|
|
559
|
+
gate: reject("mapped-grid", `Fewer than ${gate.minFeatures} ${gate.tag} features were mapped in ${gate.place || "the target area"}`)
|
|
560
|
+
};
|
|
561
|
+
default:
|
|
562
|
+
return null;
|
|
563
|
+
}
|
|
564
|
+
}
|
|
565
|
+
/**
|
|
566
|
+
* Is this ask about waste on the ground somewhere people share?
|
|
567
|
+
*
|
|
568
|
+
* Decided from what the terms ARE, never from their sentences: a mapped mess
|
|
569
|
+
* and a report on one by their deliverable, and a cleanup by what only the
|
|
570
|
+
* mess map writes into one — the pin it clears, a site, a disposal point.
|
|
571
|
+
* Anything else with a pair of photographs is somebody's own ask, and may
|
|
572
|
+
* honestly be indoors.
|
|
573
|
+
*/
|
|
574
|
+
const outdoorsAsk = (terms) => terms.deliverable.type === "mess-report" || terms.deliverable.type === "field-report" || terms.site === true || Boolean(terms.clears) || Boolean(terms.disposal);
|
|
575
|
+
const extRef = (name) => field(`ext.${name}.valid`, "isTrue");
|
|
576
|
+
/** `withinRadius`, `withinRadius2`, … — bare first, then a 2-based suffix, which is how the oracle registers handlers. */
|
|
577
|
+
const suffixed = (name, ordinal) => (ordinal === 1 ? name : `${name}${ordinal}`);
|
|
578
|
+
/**
|
|
579
|
+
* Terms → the engine's rubric.
|
|
580
|
+
*
|
|
581
|
+
* Never returns null and never leaves a rule out: every criterion is either a
|
|
582
|
+
* gate the engine runs or a source the oracle answers, and a gate that reads
|
|
583
|
+
* it. The judge criteria become AI checks; an `attest` criterion is refused
|
|
584
|
+
* (a term whose judge is the poster cannot be served by an oracle at all —
|
|
585
|
+
* `servableByOracle` says so before an ask is posted).
|
|
586
|
+
*/
|
|
587
|
+
export function toEngineRubric(terms, binding, options = {}) {
|
|
588
|
+
const normalized = normalizeTerms(terms);
|
|
589
|
+
const cooldown = options.cooldown === undefined ? DEFAULT_COOLDOWN : options.cooldown;
|
|
590
|
+
const withPhoto = WITH_PHOTO.has(normalized.deliverable.type);
|
|
591
|
+
const measure = (id) => {
|
|
592
|
+
for (const criterion of normalized.criteria)
|
|
593
|
+
if (criterion.kind === "measure" && criterion.gate.id === id)
|
|
594
|
+
return criterion.gate;
|
|
595
|
+
return null;
|
|
596
|
+
};
|
|
597
|
+
const radius = measure("within-radius");
|
|
598
|
+
const context = { radiusMeters: radius && radius.id === "within-radius" ? radius.meters : null };
|
|
599
|
+
/*
|
|
600
|
+
* What the judges are shown, decided once from the shape of the whole ask.
|
|
601
|
+
*
|
|
602
|
+
* A pair is an ask whose deliverable IS a pair, or one whose terms carry the
|
|
603
|
+
* `before-after` gate — the two travel together, and either alone still means
|
|
604
|
+
* two photographs exist. The bags ride along only where a second file is
|
|
605
|
+
* actually expected: a site (every patch hands one over) or a `with-file`
|
|
606
|
+
* gate that demands one. `kind` goes with the site preamble, and only there.
|
|
607
|
+
*/
|
|
608
|
+
const pair = normalized.deliverable.type === "photo-pair" || measure("before-after") !== null;
|
|
609
|
+
/* A site, a second file, or a disposal photograph: the bags ride beside the pair. */
|
|
610
|
+
const expectsExtra = normalized.site === true || measure("with-file") !== null || measure("at-registered-point") !== null;
|
|
611
|
+
const judgeSend = {
|
|
612
|
+
task: literal(normalized.task),
|
|
613
|
+
text: TEXT,
|
|
614
|
+
...(withPhoto ? { photo: PHOTO } : {}),
|
|
615
|
+
...(pair ? { before: BEFORE_PHOTO, after: AFTER_PHOTO } : {}),
|
|
616
|
+
...(pair && expectsExtra ? { bags: EXTRA_FILE } : {}),
|
|
617
|
+
...(normalized.site ? { kind: KIND } : {})
|
|
618
|
+
};
|
|
619
|
+
const gates = [];
|
|
620
|
+
const aiChecks = [];
|
|
621
|
+
/* Sources by bare name first; the suffix is decided once the count is known. */
|
|
622
|
+
const pending = [];
|
|
623
|
+
let judges = 0;
|
|
624
|
+
/* Always first, and always emitted: their gates run in document order and
|
|
625
|
+
every other rule reads the deliverable. It is also the one rule every ask
|
|
626
|
+
has. */
|
|
627
|
+
gates.push(nativeGate({ id: "non-empty" }, 0));
|
|
628
|
+
/*
|
|
629
|
+
* Which kind of claim this is — asked before anything that depends on it,
|
|
630
|
+
* and never itself conditional.
|
|
631
|
+
*
|
|
632
|
+
* The scopes below are `$kind == "patch"`, and their null rule (§A.5) makes
|
|
633
|
+
* a condition on a missing answer FALSE rather than an error: a claim that
|
|
634
|
+
* simply says nothing would skip the pair rules instead of failing them,
|
|
635
|
+
* and be approved on what was left without ever showing a before and an
|
|
636
|
+
* after. The oracle's act policy reads the same answer and an unknown kind
|
|
637
|
+
* is neither held nor released, so it would be signed as well. So the kind
|
|
638
|
+
* is a gate of its own, pinned to the vocabulary rather than to mere
|
|
639
|
+
* presence — a claim calling itself something we do not serve is no better
|
|
640
|
+
* than one that says nothing.
|
|
641
|
+
*/
|
|
642
|
+
if (normalized.site) {
|
|
643
|
+
gates.push({
|
|
644
|
+
"@type": "Gate",
|
|
645
|
+
code: codeFor(0, "kind"),
|
|
646
|
+
reason: "The claim does not say whether it is a patch or the whole site",
|
|
647
|
+
when: field(KIND, "in", [...CLAIM_KINDS]),
|
|
648
|
+
onFail: "reject",
|
|
649
|
+
class: "insufficient_evidence"
|
|
650
|
+
});
|
|
651
|
+
}
|
|
652
|
+
/* Where the refusals about the photograph itself go: after the two rules
|
|
653
|
+
every other rule leans on, before any rule about what the photograph
|
|
654
|
+
shows. "Is this evidence" is asked before "what is it evidence of". */
|
|
655
|
+
const authenticityAt = gates.length;
|
|
656
|
+
/*
|
|
657
|
+
* A rule that is only about one kind of claim, said as their condition.
|
|
658
|
+
*
|
|
659
|
+
* The criterion declares its own kind (`appliesTo`, written where the
|
|
660
|
+
* criterion is), so nothing here reads sentences or counts positions — a
|
|
661
|
+
* line a poster wrote carries no scope and is asked of every claim. And
|
|
662
|
+
* only on a site: anywhere else exactly one kind of claim can arrive, so a
|
|
663
|
+
* scope could only ever turn a rule off.
|
|
664
|
+
*/
|
|
665
|
+
const scopeOf = (criterion) => normalized.site && "appliesTo" in criterion && criterion.appliesTo ? { appliesWhen: field(KIND, "==", criterion.appliesTo) } : null;
|
|
666
|
+
normalized.criteria.forEach((criterion, position) => {
|
|
667
|
+
const index = position + 1;
|
|
668
|
+
const scope = scopeOf(criterion);
|
|
669
|
+
if (criterion.kind === "measure") {
|
|
670
|
+
if (criterion.gate.id === "non-empty")
|
|
671
|
+
return; // already emitted, and their codes must be unique
|
|
672
|
+
const native = nativeGate(criterion.gate, index);
|
|
673
|
+
if (native) {
|
|
674
|
+
gates.push({ ...native, ...scope });
|
|
675
|
+
return;
|
|
676
|
+
}
|
|
677
|
+
const sourced = sourcedGate(criterion.gate, index, context);
|
|
678
|
+
if (!sourced)
|
|
679
|
+
throw new Error(`the bridge does not know the "${String(criterion.gate.id)}" gate`);
|
|
680
|
+
pending.push(sourced);
|
|
681
|
+
/* In document order; the `when` is written once the source's final
|
|
682
|
+
name is known. */
|
|
683
|
+
gates.push({ ...sourced.gate, ...scope, when: extRef(sourced.name) });
|
|
684
|
+
return;
|
|
685
|
+
}
|
|
686
|
+
if (criterion.kind === "judge") {
|
|
687
|
+
/*
|
|
688
|
+
* Their AI check is the same shape as our judge criterion: a sentence
|
|
689
|
+
* ruled on, yes or no, with the answer frozen before any decision uses
|
|
690
|
+
* it. What we send is named fields, never the whole claim — the same
|
|
691
|
+
* rule our own judge followed, for the same injection reason. The task
|
|
692
|
+
* is a literal: a browser submission carries no `task` of its own.
|
|
693
|
+
*/
|
|
694
|
+
judges += 1;
|
|
695
|
+
const name = suffixed(JUDGE_NAME, judges);
|
|
696
|
+
aiChecks.push({
|
|
697
|
+
"@type": "AiCheck",
|
|
698
|
+
name,
|
|
699
|
+
send: { ...judgeSend },
|
|
700
|
+
/* The guidance first, always — see `JUDGE_GUIDANCE` for the six
|
|
701
|
+
rejections that bought it. Then, on a site only, what each kind of
|
|
702
|
+
claim carries (`SITE_KIND_PREAMBLE`). The criterion itself is last
|
|
703
|
+
and is the only one of the three that is a rule. */
|
|
704
|
+
instructions: normalized.site ? [JUDGE_GUIDANCE, SITE_KIND_PREAMBLE, criterion.text] : [JUDGE_GUIDANCE, criterion.text],
|
|
705
|
+
expect: "boolean",
|
|
706
|
+
onError: ON_ERROR
|
|
707
|
+
});
|
|
708
|
+
/*
|
|
709
|
+
* The scope rides on the GATE, never on the check: their `AiCheck` is a
|
|
710
|
+
* closed object with no `appliesWhen` (schema.ts), so a check carrying
|
|
711
|
+
* one would make the whole rubric unparseable. The consequence is that a
|
|
712
|
+
* skipped gate's answer is still asked for — their fact coverage refuses
|
|
713
|
+
* a decision when a declared check has no fact on the wire — so the
|
|
714
|
+
* model is still paid a fraction of a penny to rule on a sentence that
|
|
715
|
+
* cannot decide anything. Cheap, and honest: nothing here pretends the
|
|
716
|
+
* question was not asked.
|
|
717
|
+
*/
|
|
718
|
+
gates.push({
|
|
719
|
+
"@type": "Gate",
|
|
720
|
+
code: codeFor(index, "judged"),
|
|
721
|
+
reason: criterion.text,
|
|
722
|
+
...scope,
|
|
723
|
+
when: field(`ai.${name}.valid`, "isTrue"),
|
|
724
|
+
onFail: "reject",
|
|
725
|
+
class: "refuted"
|
|
726
|
+
});
|
|
727
|
+
return;
|
|
728
|
+
}
|
|
729
|
+
/* `attest` is the poster's own eye by construction, and there is no
|
|
730
|
+
poster in this loop. An ask carrying one is not served by the oracle,
|
|
731
|
+
so it gets no rubric — `servableByOracle` is where that is decided. */
|
|
732
|
+
throw new Error(`criterion ${criterion.id} is attested by the poster; an oracle cannot serve it`);
|
|
733
|
+
});
|
|
734
|
+
/*
|
|
735
|
+
* Rules the terms do not spell out but every ask of the shape carries.
|
|
736
|
+
* Their gate codes continue the criterion numbering so they stay unique.
|
|
737
|
+
*/
|
|
738
|
+
let extra = normalized.criteria.length;
|
|
739
|
+
const marker = (sourced) => {
|
|
740
|
+
pending.push(sourced);
|
|
741
|
+
gates.push({ ...sourced.gate, when: extRef(sourced.name) });
|
|
742
|
+
};
|
|
743
|
+
/* The cool-off, on an ordinary cleanup: not a site (patches are meant to
|
|
744
|
+
sit within metres of each other) and not a multi-spot ask (which already
|
|
745
|
+
says how far apart its spots must be). */
|
|
746
|
+
if (cooldown && measure("before-after") && !normalized.site && !measure("not-already-mapped")) {
|
|
747
|
+
extra += 1;
|
|
748
|
+
marker({
|
|
749
|
+
name: COOLDOWN_SOURCE,
|
|
750
|
+
send: { lat: LAT, lon: LON, meters: cooldown.meters, days: cooldown.days },
|
|
751
|
+
gate: { "@type": "Gate", code: codeFor(extra, "cooldown"), reason: `Somewhere within ${cooldown.meters} m was paid for in the last ${cooldown.days} days`, onFail: "reject", class: "refuted" }
|
|
752
|
+
});
|
|
753
|
+
}
|
|
754
|
+
/* The site marker: always answered yes; it exists so the claim's `kind`
|
|
755
|
+
is frozen on the receipt, where the oracle's act policy reads it to hold
|
|
756
|
+
a patch and release on the site claim. A gate reads it so the engine
|
|
757
|
+
resolves it. */
|
|
758
|
+
if (normalized.site) {
|
|
759
|
+
extra += 1;
|
|
760
|
+
marker({
|
|
761
|
+
name: SITE_SOURCE,
|
|
762
|
+
send: { kind: KIND, lat: LAT, lon: LON },
|
|
763
|
+
gate: { "@type": "Gate", code: codeFor(extra, "site"), reason: "The site marker could not be recorded", onFail: "reject", class: "insufficient_evidence" }
|
|
764
|
+
});
|
|
765
|
+
}
|
|
766
|
+
/*
|
|
767
|
+
* The photograph screens (`PHOTO_CHECKS`): on every ask whose deliverable is
|
|
768
|
+
* a photograph, whatever its terms say.
|
|
769
|
+
*
|
|
770
|
+
* **Which photographs.** `$photo` always — it is the one file every kind of
|
|
771
|
+
* claim carries. On a pair also `$beforePhoto`, numbered the way a repeated
|
|
772
|
+
* rule is (`notMarkedGenerated2`); `$afterPhoto` is `$photo` again and is
|
|
773
|
+
* not asked twice. NOT the before photograph on a site: the wide shot of a
|
|
774
|
+
* cleared site carries none, a fact about a missing file is an error rather
|
|
775
|
+
* than a no, and their `decide` refuses a claim for ANY errored source a
|
|
776
|
+
* rule names even when that rule's gate is skipped (S9 reads the rubric, not
|
|
777
|
+
* the outcome; `ON_ERROR` is `reject`) — so scoping the gate to a patch
|
|
778
|
+
* would not save the site claim, and every honest site shot would be
|
|
779
|
+
* refused. A patch's before photograph
|
|
780
|
+
* is still in front of the authenticity judge, which is sent everything.
|
|
781
|
+
* And not the second file, which is a document as often as a picture.
|
|
782
|
+
*
|
|
783
|
+
* **Where they sit.** All of them go in at `authenticityAt`, ahead of the
|
|
784
|
+
* terms' own rules: the first failed gate is terminal, so a claim that is
|
|
785
|
+
* not evidence at all is told that rather than which rule of the terms its
|
|
786
|
+
* picture happened to fail. Their codes continue the numbering after the
|
|
787
|
+
* cool-off and the marker, so no code an anchored rubric already carries
|
|
788
|
+
* changes its number.
|
|
789
|
+
*/
|
|
790
|
+
const screens = [];
|
|
791
|
+
if (PHOTOGRAPH.has(normalized.deliverable.type)) {
|
|
792
|
+
const photos = pair && !normalized.site ? [PHOTO, BEFORE_PHOTO] : [PHOTO];
|
|
793
|
+
const said = (photo) => (photos.length === 1 ? "The photograph" : photo === BEFORE_PHOTO ? "The before photograph" : "The after photograph");
|
|
794
|
+
const screened = (sourced) => {
|
|
795
|
+
pending.push(sourced);
|
|
796
|
+
screens.push({ ...sourced.gate, when: extRef(sourced.name) });
|
|
797
|
+
};
|
|
798
|
+
for (const photo of photos) {
|
|
799
|
+
extra += 1;
|
|
800
|
+
screened({
|
|
801
|
+
name: PHOTO_CHECKS.notMarkedGenerated,
|
|
802
|
+
send: { photo },
|
|
803
|
+
gate: { "@type": "Gate", code: codeFor(extra, "not-generated"), reason: `${said(photo)} says of itself that an AI generator made it`, onFail: "reject", class: "invalid_evidence" }
|
|
804
|
+
});
|
|
805
|
+
}
|
|
806
|
+
/*
|
|
807
|
+
* The model's half. Named AFTER the terms' own judges — `judge4` on the
|
|
808
|
+
* mapping ask — although it is written and ruled on first: the screens
|
|
809
|
+
* that explain a refusal (`wcd/lib/ruleKeys.ts`) read `judgeN` as the
|
|
810
|
+
* N-th judged criterion of the terms, and taking `judge` for a rule the
|
|
811
|
+
* terms do not carry would blame the size rule for a face. Every check
|
|
812
|
+
* runs before any gate is decided, so the order here buys no saving; it
|
|
813
|
+
* decides which refusal a claim that fails several is told about.
|
|
814
|
+
*
|
|
815
|
+
* At the contract's ceiling it is left out rather than named `judge6`: the
|
|
816
|
+
* poster's five sentences are the contract, and this is ours.
|
|
817
|
+
*/
|
|
818
|
+
const judged = normalized.criteria.filter((criterion) => criterion.kind === "judge").length;
|
|
819
|
+
if (judged < NAME_CEILING) {
|
|
820
|
+
const sentence = realPhotoRule({ pair, outdoors: outdoorsAsk(normalized) });
|
|
821
|
+
const name = suffixed(JUDGE_NAME, judged + 1);
|
|
822
|
+
extra += 1;
|
|
823
|
+
aiChecks.unshift({
|
|
824
|
+
"@type": "AiCheck",
|
|
825
|
+
name,
|
|
826
|
+
send: { ...judgeSend },
|
|
827
|
+
instructions: normalized.site ? [JUDGE_GUIDANCE, SITE_KIND_PREAMBLE, sentence.text] : [JUDGE_GUIDANCE, sentence.text],
|
|
828
|
+
expect: "boolean",
|
|
829
|
+
onError: ON_ERROR
|
|
830
|
+
});
|
|
831
|
+
screens.push({ "@type": "Gate", code: codeFor(extra, "real-photo"), reason: sentence.rule, when: field(`ai.${name}.valid`, "isTrue"), onFail: "reject", class: "invalid_evidence" });
|
|
832
|
+
}
|
|
833
|
+
/* Only where a rule makes the claim say where it was: an ask that never
|
|
834
|
+
asks has no reported point, the contract answers that with an error,
|
|
835
|
+
and an error is the outage path — every honest photograph of a black
|
|
836
|
+
cat, refused. The reason is the one a refused claimant reads,
|
|
837
|
+
so it ends with what to do. */
|
|
838
|
+
const placed = normalized.criteria.some((criterion) => criterion.kind === "measure" && PLACE_GATES.has(criterion.gate.id));
|
|
839
|
+
for (const photo of placed ? photos : []) {
|
|
840
|
+
extra += 1;
|
|
841
|
+
screened({
|
|
842
|
+
name: PHOTO_CHECKS.notElsewhere,
|
|
843
|
+
send: { lat: LAT, lon: LON, photo, meters: Math.max(context.radiusMeters ?? 0, NOT_ELSEWHERE_FLOOR_METERS) },
|
|
844
|
+
gate: {
|
|
845
|
+
"@type": "Gate",
|
|
846
|
+
code: codeFor(extra, "not-elsewhere"),
|
|
847
|
+
reason: `${said(photo)}'s own GPS puts it far from the place reported — take the photograph at the place you are reporting`,
|
|
848
|
+
onFail: "reject",
|
|
849
|
+
class: "invalid_evidence"
|
|
850
|
+
}
|
|
851
|
+
});
|
|
852
|
+
}
|
|
853
|
+
gates.splice(authenticityAt, 0, ...screens);
|
|
854
|
+
}
|
|
855
|
+
/*
|
|
856
|
+
* Names, finally. A vocabulary word is used bare the first time and with a
|
|
857
|
+
* suffix from 2 when the same rule repeats within one rubric —
|
|
858
|
+
* `withinRadius`, `withinRadius2` — which is how the oracle registers its
|
|
859
|
+
* handlers too. The gates that read them are patched by code.
|
|
860
|
+
*/
|
|
861
|
+
const seen = new Map();
|
|
862
|
+
const sources = pending.map((one) => {
|
|
863
|
+
const ordinal = (seen.get(one.name) ?? 0) + 1;
|
|
864
|
+
seen.set(one.name, ordinal);
|
|
865
|
+
const name = suffixed(one.name, ordinal);
|
|
866
|
+
const gate = gates.find((candidate) => candidate.code === one.gate.code);
|
|
867
|
+
if (gate)
|
|
868
|
+
gate.when = extRef(name);
|
|
869
|
+
return {
|
|
870
|
+
"@type": "ExternalSource",
|
|
871
|
+
name,
|
|
872
|
+
endpoint: `https://${ORACLE_HOST}/${name}`,
|
|
873
|
+
audience: `did:web:${ORACLE_HOST}`,
|
|
874
|
+
send: one.send,
|
|
875
|
+
expect: "boolean",
|
|
876
|
+
onError: ON_ERROR,
|
|
877
|
+
timeoutMs: SOURCE_TIMEOUT_MS
|
|
878
|
+
};
|
|
879
|
+
});
|
|
880
|
+
/* The same photograph, handed in twice, is paid once. Keyed by the
|
|
881
|
+
photograph; the attachment lanes (exact CID and near-duplicate) cover
|
|
882
|
+
every file on the claim regardless. One band: a near-certain duplicate
|
|
883
|
+
is refused, nothing is queued for a person. */
|
|
884
|
+
const unique = withPhoto
|
|
885
|
+
? {
|
|
886
|
+
"@type": "Unique",
|
|
887
|
+
id: UNIQUE_RULE_ID,
|
|
888
|
+
by: [PHOTO],
|
|
889
|
+
countPrior: ["approved"],
|
|
890
|
+
attachments: true,
|
|
891
|
+
ai: { enabled: false },
|
|
892
|
+
thresholds: { rejectAtBps: 9000, reviewAtBps: 9000 }
|
|
893
|
+
}
|
|
894
|
+
: null;
|
|
895
|
+
return {
|
|
896
|
+
envelope: {
|
|
897
|
+
"@context": { ixo: "https://w3id.org/ixo/ns/protocol/", "@id": "@type", type: "@type", "@protected": true },
|
|
898
|
+
type: "ixo:entity#rubric",
|
|
899
|
+
rubric: {
|
|
900
|
+
"@type": "Rubric",
|
|
901
|
+
title: normalized.task.slice(0, 120),
|
|
902
|
+
claimSchema: { "@type": "ClaimSchemaBinding", protocol: binding.protocol, resource: "#vct", proof: binding.proof },
|
|
903
|
+
...(sources.length > 0 ? { sources } : {}),
|
|
904
|
+
...(aiChecks.length > 0 ? { aiChecks } : {}),
|
|
905
|
+
...(unique ? { unique } : {}),
|
|
906
|
+
gates
|
|
907
|
+
}
|
|
908
|
+
}
|
|
909
|
+
};
|
|
910
|
+
}
|
|
911
|
+
//# sourceMappingURL=bridge.js.map
|