@ixo/openhands-sdk 0.3.0 → 0.4.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/dist/cjs/campaign/campaign.js +3 -2
- package/dist/cjs/campaign/campaign.js.map +1 -1
- package/dist/cjs/campaign/funding.d.ts.map +1 -1
- package/dist/cjs/campaign/funding.js +3 -0
- package/dist/cjs/campaign/funding.js.map +1 -1
- package/dist/cjs/campaign/pool.d.ts.map +1 -1
- package/dist/cjs/campaign/pool.js +2 -1
- package/dist/cjs/campaign/pool.js.map +1 -1
- package/dist/cjs/campaign/spots.d.ts.map +1 -1
- package/dist/cjs/campaign/spots.js +8 -6
- package/dist/cjs/campaign/spots.js.map +1 -1
- package/dist/cjs/chain/ask.d.ts +104 -14
- package/dist/cjs/chain/ask.d.ts.map +1 -1
- package/dist/cjs/chain/ask.js +151 -78
- package/dist/cjs/chain/ask.js.map +1 -1
- package/dist/cjs/chain/askImage.d.ts +19 -0
- package/dist/cjs/chain/askImage.d.ts.map +1 -0
- package/dist/cjs/chain/askImage.js +56 -0
- package/dist/cjs/chain/askImage.js.map +1 -0
- package/dist/cjs/chain/bridge.d.ts +7 -33
- package/dist/cjs/chain/bridge.d.ts.map +1 -1
- package/dist/cjs/chain/bridge.js +10 -25
- package/dist/cjs/chain/bridge.js.map +1 -1
- package/dist/cjs/chain/claimSubmit.d.ts +15 -0
- package/dist/cjs/chain/claimSubmit.d.ts.map +1 -0
- package/dist/cjs/chain/claimSubmit.js +14 -0
- package/dist/cjs/chain/claimSubmit.js.map +1 -0
- package/dist/cjs/chain/delegate.d.ts +52 -7
- package/dist/cjs/chain/delegate.d.ts.map +1 -1
- package/dist/cjs/chain/delegate.js +66 -14
- package/dist/cjs/chain/delegate.js.map +1 -1
- package/dist/cjs/chain/domainIndexer.d.ts +26 -0
- package/dist/cjs/chain/domainIndexer.d.ts.map +1 -0
- package/dist/cjs/chain/domainIndexer.js +51 -0
- package/dist/cjs/chain/domainIndexer.js.map +1 -0
- package/dist/cjs/chain/entityShape.d.ts +27 -2
- package/dist/cjs/chain/entityShape.d.ts.map +1 -1
- package/dist/cjs/chain/entityShape.js +57 -7
- package/dist/cjs/chain/entityShape.js.map +1 -1
- package/dist/cjs/chain/env.d.ts +33 -3
- package/dist/cjs/chain/env.d.ts.map +1 -1
- package/dist/cjs/chain/env.js +38 -6
- package/dist/cjs/chain/env.js.map +1 -1
- package/dist/cjs/chain/guest.d.ts +14 -0
- package/dist/cjs/chain/guest.d.ts.map +1 -1
- package/dist/cjs/chain/guest.js +9 -9
- package/dist/cjs/chain/guest.js.map +1 -1
- package/dist/cjs/chain/money.d.ts +47 -2
- package/dist/cjs/chain/money.d.ts.map +1 -1
- package/dist/cjs/chain/money.js +63 -6
- package/dist/cjs/chain/money.js.map +1 -1
- package/dist/cjs/chain/orgReviewBilling.d.ts +124 -0
- package/dist/cjs/chain/orgReviewBilling.d.ts.map +1 -0
- package/dist/cjs/chain/orgReviewBilling.js +290 -0
- package/dist/cjs/chain/orgReviewBilling.js.map +1 -0
- package/dist/cjs/chain/orgReviewBillingSign.d.ts +63 -0
- package/dist/cjs/chain/orgReviewBillingSign.d.ts.map +1 -0
- package/dist/cjs/chain/orgReviewBillingSign.js +166 -0
- package/dist/cjs/chain/orgReviewBillingSign.js.map +1 -0
- package/dist/cjs/chain/payoutSettings.d.ts +97 -0
- package/dist/cjs/chain/payoutSettings.d.ts.map +1 -0
- package/dist/cjs/chain/payoutSettings.js +123 -0
- package/dist/cjs/chain/payoutSettings.js.map +1 -0
- package/dist/cjs/chain/payoutTerms.d.ts +72 -0
- package/dist/cjs/chain/payoutTerms.d.ts.map +1 -0
- package/dist/cjs/chain/payoutTerms.js +141 -0
- package/dist/cjs/chain/payoutTerms.js.map +1 -0
- package/dist/cjs/chain/query.d.ts +14 -0
- package/dist/cjs/chain/query.d.ts.map +1 -1
- package/dist/cjs/chain/query.js +27 -0
- package/dist/cjs/chain/query.js.map +1 -1
- package/dist/cjs/chain/reviewBilling.d.ts +86 -0
- package/dist/cjs/chain/reviewBilling.d.ts.map +1 -0
- package/dist/cjs/chain/reviewBilling.js +265 -0
- package/dist/cjs/chain/reviewBilling.js.map +1 -0
- package/dist/cjs/chain/store.d.ts +7 -6
- package/dist/cjs/chain/store.d.ts.map +1 -1
- package/dist/cjs/chain/store.js +7 -6
- package/dist/cjs/chain/store.js.map +1 -1
- package/dist/cjs/chain/subscription.d.ts +0 -7
- package/dist/cjs/chain/subscription.d.ts.map +1 -1
- package/dist/cjs/chain/subscription.js +4 -47
- package/dist/cjs/chain/subscription.js.map +1 -1
- package/dist/cjs/chain/takeBack.d.ts +12 -0
- package/dist/cjs/chain/takeBack.d.ts.map +1 -1
- package/dist/cjs/chain/takeBack.js +24 -10
- package/dist/cjs/chain/takeBack.js.map +1 -1
- package/dist/cjs/chain/why.d.ts +44 -0
- package/dist/cjs/chain/why.d.ts.map +1 -0
- package/dist/cjs/chain/why.js +153 -0
- package/dist/cjs/chain/why.js.map +1 -0
- package/dist/cjs/chain/whyMint.d.ts +8 -0
- package/dist/cjs/chain/whyMint.d.ts.map +1 -0
- package/dist/cjs/chain/whyMint.js +53 -0
- package/dist/cjs/chain/whyMint.js.map +1 -0
- package/dist/cjs/chain.d.ts +8 -4
- package/dist/cjs/chain.d.ts.map +1 -1
- package/dist/cjs/chain.js +19 -9
- package/dist/cjs/chain.js.map +1 -1
- package/dist/cjs/config.d.ts +11 -5
- package/dist/cjs/config.d.ts.map +1 -1
- package/dist/cjs/config.js +2 -0
- package/dist/cjs/config.js.map +1 -1
- package/dist/cjs/data/askEntity.d.ts +40 -0
- package/dist/cjs/data/askEntity.d.ts.map +1 -0
- package/dist/cjs/data/askEntity.js +48 -0
- package/dist/cjs/data/askEntity.js.map +1 -0
- package/dist/cjs/data/askLinks.d.ts +6 -0
- package/dist/cjs/data/askLinks.d.ts.map +1 -0
- package/dist/cjs/data/askLinks.js +21 -0
- package/dist/cjs/data/askLinks.js.map +1 -0
- package/dist/cjs/data/board/assemble.d.ts.map +1 -1
- package/dist/cjs/data/board/assemble.js +15 -2
- package/dist/cjs/data/board/assemble.js.map +1 -1
- package/dist/cjs/data/board/facts.d.ts +11 -0
- package/dist/cjs/data/board/facts.d.ts.map +1 -1
- package/dist/cjs/data/board/facts.js +16 -0
- package/dist/cjs/data/board/facts.js.map +1 -1
- package/dist/cjs/data/board/read.d.ts.map +1 -1
- package/dist/cjs/data/board/read.js +2 -1
- package/dist/cjs/data/board/read.js.map +1 -1
- package/dist/cjs/data/board/types.d.ts +9 -0
- package/dist/cjs/data/board/types.d.ts.map +1 -1
- package/dist/cjs/data/board/types.js.map +1 -1
- package/dist/cjs/data/docs.d.ts +10 -2
- package/dist/cjs/data/docs.d.ts.map +1 -1
- package/dist/cjs/data/docs.js +43 -3
- package/dist/cjs/data/docs.js.map +1 -1
- package/dist/cjs/data/format.js +1 -1
- package/dist/cjs/data/format.js.map +1 -1
- package/dist/cjs/data/install.d.ts +8 -0
- package/dist/cjs/data/install.d.ts.map +1 -1
- package/dist/cjs/data/install.js +9 -1
- package/dist/cjs/data/install.js.map +1 -1
- package/dist/cjs/data/oracleInfo.d.ts +6 -1
- package/dist/cjs/data/oracleInfo.d.ts.map +1 -1
- package/dist/cjs/data/oracleInfo.js +22 -3
- package/dist/cjs/data/oracleInfo.js.map +1 -1
- package/dist/cjs/data/oracles.d.ts +62 -5
- package/dist/cjs/data/oracles.d.ts.map +1 -1
- package/dist/cjs/data/oracles.js +90 -11
- package/dist/cjs/data/oracles.js.map +1 -1
- package/dist/cjs/data/orgPayouts.d.ts +87 -0
- package/dist/cjs/data/orgPayouts.d.ts.map +1 -0
- package/dist/cjs/data/orgPayouts.js +183 -0
- package/dist/cjs/data/orgPayouts.js.map +1 -0
- package/dist/cjs/data/plans.d.ts +8 -0
- package/dist/cjs/data/plans.d.ts.map +1 -0
- package/dist/cjs/data/plans.js +12 -0
- package/dist/cjs/data/plans.js.map +1 -0
- package/dist/cjs/data/profiles.d.ts +20 -0
- package/dist/cjs/data/profiles.d.ts.map +1 -1
- package/dist/cjs/data/profiles.js +63 -4
- package/dist/cjs/data/profiles.js.map +1 -1
- package/dist/cjs/data/receipt.d.ts +7 -0
- package/dist/cjs/data/receipt.d.ts.map +1 -1
- package/dist/cjs/data/receipt.js +19 -4
- package/dist/cjs/data/receipt.js.map +1 -1
- package/dist/cjs/data/resources.d.ts +3 -0
- package/dist/cjs/data/resources.d.ts.map +1 -1
- package/dist/cjs/data/resources.js +4 -1
- package/dist/cjs/data/resources.js.map +1 -1
- package/dist/cjs/data/threads.d.ts +14 -0
- package/dist/cjs/data/threads.d.ts.map +1 -1
- package/dist/cjs/data/threads.js +32 -20
- package/dist/cjs/data/threads.js.map +1 -1
- package/dist/cjs/data/trace.d.ts +8 -0
- package/dist/cjs/data/trace.d.ts.map +1 -1
- package/dist/cjs/data/trace.js +1 -1
- package/dist/cjs/data/trace.js.map +1 -1
- package/dist/cjs/data/traceWords.d.ts +4 -1
- package/dist/cjs/data/traceWords.d.ts.map +1 -1
- package/dist/cjs/data/traceWords.js +8 -2
- package/dist/cjs/data/traceWords.js.map +1 -1
- package/dist/cjs/data/why.d.ts +38 -0
- package/dist/cjs/data/why.d.ts.map +1 -0
- package/dist/cjs/data/why.js +86 -0
- package/dist/cjs/data/why.js.map +1 -0
- package/dist/cjs/data/whyReceipt.d.ts +33 -0
- package/dist/cjs/data/whyReceipt.d.ts.map +1 -0
- package/dist/cjs/data/whyReceipt.js +291 -0
- package/dist/cjs/data/whyReceipt.js.map +1 -0
- package/dist/cjs/geo/exifcarry.d.ts +9 -0
- package/dist/cjs/geo/exifcarry.d.ts.map +1 -1
- package/dist/cjs/geo/exifcarry.js +35 -0
- package/dist/cjs/geo/exifcarry.js.map +1 -1
- package/dist/cjs/geo/geohash.d.ts +11 -0
- package/dist/cjs/geo/geohash.d.ts.map +1 -1
- package/dist/cjs/geo/geohash.js +53 -3
- package/dist/cjs/geo/geohash.js.map +1 -1
- package/dist/cjs/geo/provenance.d.ts +41 -0
- package/dist/cjs/geo/provenance.d.ts.map +1 -0
- package/dist/cjs/geo/provenance.js +134 -0
- package/dist/cjs/geo/provenance.js.map +1 -0
- package/dist/cjs/rubric/bridge.d.ts +98 -2
- package/dist/cjs/rubric/bridge.d.ts.map +1 -1
- package/dist/cjs/rubric/bridge.js +132 -15
- package/dist/cjs/rubric/bridge.js.map +1 -1
- package/dist/cjs/rubric/card.d.ts +28 -14
- package/dist/cjs/rubric/card.d.ts.map +1 -1
- package/dist/cjs/rubric/card.js +28 -7
- package/dist/cjs/rubric/card.js.map +1 -1
- package/dist/cjs/rubric/claimForm.d.ts +116 -0
- package/dist/cjs/rubric/claimForm.d.ts.map +1 -1
- package/dist/cjs/rubric/claimForm.js +12 -1
- package/dist/cjs/rubric/claimForm.js.map +1 -1
- package/dist/cjs/rubric/compose.d.ts +5 -0
- package/dist/cjs/rubric/compose.d.ts.map +1 -1
- package/dist/cjs/rubric/compose.js +9 -3
- package/dist/cjs/rubric/compose.js.map +1 -1
- package/dist/cjs/rubric/gateMet.d.ts.map +1 -1
- package/dist/cjs/rubric/gateMet.js +4 -2
- package/dist/cjs/rubric/gateMet.js.map +1 -1
- package/dist/cjs/rubric/leg.d.ts +2 -2
- package/dist/cjs/rubric/leg.d.ts.map +1 -1
- package/dist/cjs/rubric/leg.js +7 -5
- package/dist/cjs/rubric/leg.js.map +1 -1
- package/dist/cjs/rubric/marketPlan.d.ts +41 -3
- package/dist/cjs/rubric/marketPlan.d.ts.map +1 -1
- package/dist/cjs/rubric/marketPlan.js +110 -10
- package/dist/cjs/rubric/marketPlan.js.map +1 -1
- package/dist/cjs/rubric/observation.d.ts +56 -14
- package/dist/cjs/rubric/observation.d.ts.map +1 -1
- package/dist/cjs/rubric/observation.js +61 -11
- package/dist/cjs/rubric/observation.js.map +1 -1
- package/dist/cjs/rubric/survey.d.ts +65 -0
- package/dist/cjs/rubric/survey.d.ts.map +1 -0
- package/dist/cjs/rubric/survey.js +101 -0
- package/dist/cjs/rubric/survey.js.map +1 -0
- package/dist/cjs/rubric/terms.d.ts +7 -0
- package/dist/cjs/rubric/terms.d.ts.map +1 -1
- package/dist/cjs/rubric/terms.js +12 -1
- package/dist/cjs/rubric/terms.js.map +1 -1
- package/dist/cjs/rubric.d.ts +1 -1
- package/dist/cjs/rubric.d.ts.map +1 -1
- package/dist/cjs/rubric.js +4 -2
- package/dist/cjs/rubric.js.map +1 -1
- package/dist/esm/campaign/campaign.js +4 -3
- package/dist/esm/campaign/campaign.js.map +1 -1
- package/dist/esm/campaign/funding.d.ts.map +1 -1
- package/dist/esm/campaign/funding.js +3 -0
- package/dist/esm/campaign/funding.js.map +1 -1
- package/dist/esm/campaign/pool.d.ts.map +1 -1
- package/dist/esm/campaign/pool.js +2 -1
- package/dist/esm/campaign/pool.js.map +1 -1
- package/dist/esm/campaign/spots.d.ts.map +1 -1
- package/dist/esm/campaign/spots.js +8 -6
- package/dist/esm/campaign/spots.js.map +1 -1
- package/dist/esm/chain/ask.d.ts +104 -14
- package/dist/esm/chain/ask.d.ts.map +1 -1
- package/dist/esm/chain/ask.js +152 -80
- package/dist/esm/chain/ask.js.map +1 -1
- package/dist/esm/chain/askImage.d.ts +19 -0
- package/dist/esm/chain/askImage.d.ts.map +1 -0
- package/dist/esm/chain/askImage.js +50 -0
- package/dist/esm/chain/askImage.js.map +1 -0
- package/dist/esm/chain/bridge.d.ts +7 -33
- package/dist/esm/chain/bridge.d.ts.map +1 -1
- package/dist/esm/chain/bridge.js +10 -24
- package/dist/esm/chain/bridge.js.map +1 -1
- package/dist/esm/chain/claimSubmit.d.ts +15 -0
- package/dist/esm/chain/claimSubmit.d.ts.map +1 -0
- package/dist/esm/chain/claimSubmit.js +10 -0
- package/dist/esm/chain/claimSubmit.js.map +1 -0
- package/dist/esm/chain/delegate.d.ts +52 -7
- package/dist/esm/chain/delegate.d.ts.map +1 -1
- package/dist/esm/chain/delegate.js +64 -13
- package/dist/esm/chain/delegate.js.map +1 -1
- package/dist/esm/chain/domainIndexer.d.ts +26 -0
- package/dist/esm/chain/domainIndexer.d.ts.map +1 -0
- package/dist/esm/chain/domainIndexer.js +48 -0
- package/dist/esm/chain/domainIndexer.js.map +1 -0
- package/dist/esm/chain/entityShape.d.ts +27 -2
- package/dist/esm/chain/entityShape.d.ts.map +1 -1
- package/dist/esm/chain/entityShape.js +53 -6
- package/dist/esm/chain/entityShape.js.map +1 -1
- package/dist/esm/chain/env.d.ts +33 -3
- package/dist/esm/chain/env.d.ts.map +1 -1
- package/dist/esm/chain/env.js +33 -5
- package/dist/esm/chain/env.js.map +1 -1
- package/dist/esm/chain/guest.d.ts +14 -0
- package/dist/esm/chain/guest.d.ts.map +1 -1
- package/dist/esm/chain/guest.js +7 -8
- package/dist/esm/chain/guest.js.map +1 -1
- package/dist/esm/chain/money.d.ts +47 -2
- package/dist/esm/chain/money.d.ts.map +1 -1
- package/dist/esm/chain/money.js +54 -4
- package/dist/esm/chain/money.js.map +1 -1
- package/dist/esm/chain/orgReviewBilling.d.ts +124 -0
- package/dist/esm/chain/orgReviewBilling.d.ts.map +1 -0
- package/dist/esm/chain/orgReviewBilling.js +241 -0
- package/dist/esm/chain/orgReviewBilling.js.map +1 -0
- package/dist/esm/chain/orgReviewBillingSign.d.ts +63 -0
- package/dist/esm/chain/orgReviewBillingSign.d.ts.map +1 -0
- package/dist/esm/chain/orgReviewBillingSign.js +124 -0
- package/dist/esm/chain/orgReviewBillingSign.js.map +1 -0
- package/dist/esm/chain/payoutSettings.d.ts +97 -0
- package/dist/esm/chain/payoutSettings.d.ts.map +1 -0
- package/dist/esm/chain/payoutSettings.js +111 -0
- package/dist/esm/chain/payoutSettings.js.map +1 -0
- package/dist/esm/chain/payoutTerms.d.ts +72 -0
- package/dist/esm/chain/payoutTerms.d.ts.map +1 -0
- package/dist/esm/chain/payoutTerms.js +127 -0
- package/dist/esm/chain/payoutTerms.js.map +1 -0
- package/dist/esm/chain/query.d.ts +14 -0
- package/dist/esm/chain/query.d.ts.map +1 -1
- package/dist/esm/chain/query.js +25 -0
- package/dist/esm/chain/query.js.map +1 -1
- package/dist/esm/chain/reviewBilling.d.ts +86 -0
- package/dist/esm/chain/reviewBilling.d.ts.map +1 -0
- package/dist/esm/chain/reviewBilling.js +215 -0
- package/dist/esm/chain/reviewBilling.js.map +1 -0
- package/dist/esm/chain/store.d.ts +7 -6
- package/dist/esm/chain/store.d.ts.map +1 -1
- package/dist/esm/chain/store.js +7 -6
- package/dist/esm/chain/store.js.map +1 -1
- package/dist/esm/chain/subscription.d.ts +0 -7
- package/dist/esm/chain/subscription.d.ts.map +1 -1
- package/dist/esm/chain/subscription.js +4 -13
- package/dist/esm/chain/subscription.js.map +1 -1
- package/dist/esm/chain/takeBack.d.ts +12 -0
- package/dist/esm/chain/takeBack.d.ts.map +1 -1
- package/dist/esm/chain/takeBack.js +22 -9
- package/dist/esm/chain/takeBack.js.map +1 -1
- package/dist/esm/chain/why.d.ts +44 -0
- package/dist/esm/chain/why.d.ts.map +1 -0
- package/dist/esm/chain/why.js +111 -0
- package/dist/esm/chain/why.js.map +1 -0
- package/dist/esm/chain/whyMint.d.ts +8 -0
- package/dist/esm/chain/whyMint.d.ts.map +1 -0
- package/dist/esm/chain/whyMint.js +17 -0
- package/dist/esm/chain/whyMint.js.map +1 -0
- package/dist/esm/chain.d.ts +8 -4
- package/dist/esm/chain.d.ts.map +1 -1
- package/dist/esm/chain.js +9 -4
- package/dist/esm/chain.js.map +1 -1
- package/dist/esm/config.d.ts +11 -5
- package/dist/esm/config.d.ts.map +1 -1
- package/dist/esm/config.js +3 -1
- package/dist/esm/config.js.map +1 -1
- package/dist/esm/data/askEntity.d.ts +40 -0
- package/dist/esm/data/askEntity.d.ts.map +1 -0
- package/dist/esm/data/askEntity.js +41 -0
- package/dist/esm/data/askEntity.js.map +1 -0
- package/dist/esm/data/askLinks.d.ts +6 -0
- package/dist/esm/data/askLinks.d.ts.map +1 -0
- package/dist/esm/data/askLinks.js +16 -0
- package/dist/esm/data/askLinks.js.map +1 -0
- package/dist/esm/data/board/assemble.d.ts.map +1 -1
- package/dist/esm/data/board/assemble.js +15 -2
- package/dist/esm/data/board/assemble.js.map +1 -1
- package/dist/esm/data/board/facts.d.ts +11 -0
- package/dist/esm/data/board/facts.d.ts.map +1 -1
- package/dist/esm/data/board/facts.js +15 -0
- package/dist/esm/data/board/facts.js.map +1 -1
- package/dist/esm/data/board/read.d.ts.map +1 -1
- package/dist/esm/data/board/read.js +2 -1
- package/dist/esm/data/board/read.js.map +1 -1
- package/dist/esm/data/board/types.d.ts +9 -0
- package/dist/esm/data/board/types.d.ts.map +1 -1
- package/dist/esm/data/board/types.js.map +1 -1
- package/dist/esm/data/docs.d.ts +10 -2
- package/dist/esm/data/docs.d.ts.map +1 -1
- package/dist/esm/data/docs.js +43 -4
- package/dist/esm/data/docs.js.map +1 -1
- package/dist/esm/data/format.js +1 -1
- package/dist/esm/data/format.js.map +1 -1
- package/dist/esm/data/install.d.ts +8 -0
- package/dist/esm/data/install.d.ts.map +1 -1
- package/dist/esm/data/install.js +8 -0
- package/dist/esm/data/install.js.map +1 -1
- package/dist/esm/data/oracleInfo.d.ts +6 -1
- package/dist/esm/data/oracleInfo.d.ts.map +1 -1
- package/dist/esm/data/oracleInfo.js +22 -3
- package/dist/esm/data/oracleInfo.js.map +1 -1
- package/dist/esm/data/oracles.d.ts +62 -5
- package/dist/esm/data/oracles.d.ts.map +1 -1
- package/dist/esm/data/oracles.js +87 -12
- package/dist/esm/data/oracles.js.map +1 -1
- package/dist/esm/data/orgPayouts.d.ts +87 -0
- package/dist/esm/data/orgPayouts.d.ts.map +1 -0
- package/dist/esm/data/orgPayouts.js +170 -0
- package/dist/esm/data/orgPayouts.js.map +1 -0
- package/dist/esm/data/plans.d.ts +8 -0
- package/dist/esm/data/plans.d.ts.map +1 -0
- package/dist/esm/data/plans.js +8 -0
- package/dist/esm/data/plans.js.map +1 -0
- package/dist/esm/data/profiles.d.ts +20 -0
- package/dist/esm/data/profiles.d.ts.map +1 -1
- package/dist/esm/data/profiles.js +60 -4
- package/dist/esm/data/profiles.js.map +1 -1
- package/dist/esm/data/receipt.d.ts +7 -0
- package/dist/esm/data/receipt.d.ts.map +1 -1
- package/dist/esm/data/receipt.js +20 -5
- package/dist/esm/data/receipt.js.map +1 -1
- package/dist/esm/data/resources.d.ts +3 -0
- package/dist/esm/data/resources.d.ts.map +1 -1
- package/dist/esm/data/resources.js +2 -0
- package/dist/esm/data/resources.js.map +1 -1
- package/dist/esm/data/threads.d.ts +14 -0
- package/dist/esm/data/threads.d.ts.map +1 -1
- package/dist/esm/data/threads.js +32 -21
- package/dist/esm/data/threads.js.map +1 -1
- package/dist/esm/data/trace.d.ts +8 -0
- package/dist/esm/data/trace.d.ts.map +1 -1
- package/dist/esm/data/trace.js +1 -1
- package/dist/esm/data/trace.js.map +1 -1
- package/dist/esm/data/traceWords.d.ts +4 -1
- package/dist/esm/data/traceWords.d.ts.map +1 -1
- package/dist/esm/data/traceWords.js +8 -2
- package/dist/esm/data/traceWords.js.map +1 -1
- package/dist/esm/data/why.d.ts +38 -0
- package/dist/esm/data/why.d.ts.map +1 -0
- package/dist/esm/data/why.js +78 -0
- package/dist/esm/data/why.js.map +1 -0
- package/dist/esm/data/whyReceipt.d.ts +33 -0
- package/dist/esm/data/whyReceipt.d.ts.map +1 -0
- package/dist/esm/data/whyReceipt.js +284 -0
- package/dist/esm/data/whyReceipt.js.map +1 -0
- package/dist/esm/geo/exifcarry.d.ts +9 -0
- package/dist/esm/geo/exifcarry.d.ts.map +1 -1
- package/dist/esm/geo/exifcarry.js +34 -0
- package/dist/esm/geo/exifcarry.js.map +1 -1
- package/dist/esm/geo/geohash.d.ts +11 -0
- package/dist/esm/geo/geohash.d.ts.map +1 -1
- package/dist/esm/geo/geohash.js +52 -3
- package/dist/esm/geo/geohash.js.map +1 -1
- package/dist/esm/geo/provenance.d.ts +41 -0
- package/dist/esm/geo/provenance.d.ts.map +1 -0
- package/dist/esm/geo/provenance.js +129 -0
- package/dist/esm/geo/provenance.js.map +1 -0
- package/dist/esm/rubric/bridge.d.ts +98 -2
- package/dist/esm/rubric/bridge.d.ts.map +1 -1
- package/dist/esm/rubric/bridge.js +130 -14
- package/dist/esm/rubric/bridge.js.map +1 -1
- package/dist/esm/rubric/card.d.ts +28 -14
- package/dist/esm/rubric/card.d.ts.map +1 -1
- package/dist/esm/rubric/card.js +24 -5
- package/dist/esm/rubric/card.js.map +1 -1
- package/dist/esm/rubric/claimForm.d.ts +116 -0
- package/dist/esm/rubric/claimForm.d.ts.map +1 -1
- package/dist/esm/rubric/claimForm.js +11 -0
- package/dist/esm/rubric/claimForm.js.map +1 -1
- package/dist/esm/rubric/compose.d.ts +5 -0
- package/dist/esm/rubric/compose.d.ts.map +1 -1
- package/dist/esm/rubric/compose.js +7 -2
- package/dist/esm/rubric/compose.js.map +1 -1
- package/dist/esm/rubric/gateMet.d.ts.map +1 -1
- package/dist/esm/rubric/gateMet.js +4 -2
- package/dist/esm/rubric/gateMet.js.map +1 -1
- package/dist/esm/rubric/leg.d.ts +2 -2
- package/dist/esm/rubric/leg.d.ts.map +1 -1
- package/dist/esm/rubric/leg.js +7 -5
- package/dist/esm/rubric/leg.js.map +1 -1
- package/dist/esm/rubric/marketPlan.d.ts +41 -3
- package/dist/esm/rubric/marketPlan.d.ts.map +1 -1
- package/dist/esm/rubric/marketPlan.js +107 -9
- package/dist/esm/rubric/marketPlan.js.map +1 -1
- package/dist/esm/rubric/observation.d.ts +56 -14
- package/dist/esm/rubric/observation.d.ts.map +1 -1
- package/dist/esm/rubric/observation.js +61 -12
- package/dist/esm/rubric/observation.js.map +1 -1
- package/dist/esm/rubric/survey.d.ts +65 -0
- package/dist/esm/rubric/survey.d.ts.map +1 -0
- package/dist/esm/rubric/survey.js +94 -0
- package/dist/esm/rubric/survey.js.map +1 -0
- package/dist/esm/rubric/terms.d.ts +7 -0
- package/dist/esm/rubric/terms.d.ts.map +1 -1
- package/dist/esm/rubric/terms.js +12 -2
- package/dist/esm/rubric/terms.js.map +1 -1
- package/dist/esm/rubric.d.ts +1 -1
- package/dist/esm/rubric.d.ts.map +1 -1
- package/dist/esm/rubric.js +1 -1
- package/dist/esm/rubric.js.map +1 -1
- package/package.json +8 -2
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
23
|
exports.exifSegment = exifSegment;
|
|
24
24
|
exports.withExifSegment = withExifSegment;
|
|
25
|
+
exports.uprightSegment = uprightSegment;
|
|
25
26
|
/** The `FF E1 … Exif\0\0 …` segment, exactly as the camera wrote it. */
|
|
26
27
|
function exifSegment(bytes) {
|
|
27
28
|
if (bytes.length < 4 || bytes[0] !== 0xff || bytes[1] !== 0xd8)
|
|
@@ -78,4 +79,38 @@ function withExifSegment(jpeg, segment) {
|
|
|
78
79
|
out.set(jpeg.slice(at), 2 + segment.length + kept.length);
|
|
79
80
|
return out;
|
|
80
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* The same segment, saying Orientation = 1.
|
|
84
|
+
*
|
|
85
|
+
* After a canvas redraw the pixels already stand the right way up (the decode
|
|
86
|
+
* applies the tag), so carrying the camera's 6 or 8 makes every viewer turn
|
|
87
|
+
* the picture a second time. Same length, one value changed: every other tag,
|
|
88
|
+
* DateTimeOriginal and GPS included, stays byte for byte.
|
|
89
|
+
*/
|
|
90
|
+
function uprightSegment(segment) {
|
|
91
|
+
const out = segment.slice();
|
|
92
|
+
const tiff = 10;
|
|
93
|
+
if (out.length < tiff + 8)
|
|
94
|
+
return out;
|
|
95
|
+
const view = new DataView(out.buffer, out.byteOffset, out.byteLength);
|
|
96
|
+
const order = view.getUint16(tiff, false);
|
|
97
|
+
if (order !== 0x4949 && order !== 0x4d4d)
|
|
98
|
+
return out;
|
|
99
|
+
const little = order === 0x4949;
|
|
100
|
+
const ifd0 = tiff + view.getUint32(tiff + 4, little);
|
|
101
|
+
if (ifd0 + 2 > out.length)
|
|
102
|
+
return out;
|
|
103
|
+
const count = view.getUint16(ifd0, little);
|
|
104
|
+
for (let index = 0; index < count; index += 1) {
|
|
105
|
+
const entry = ifd0 + 2 + index * 12;
|
|
106
|
+
if (entry + 12 > out.length)
|
|
107
|
+
break;
|
|
108
|
+
/* SHORT, count 1: the value sits inline in the entry's first two bytes. */
|
|
109
|
+
if (view.getUint16(entry, little) === 0x0112 && view.getUint16(entry + 2, little) === 3) {
|
|
110
|
+
view.setUint16(entry + 8, 1, little);
|
|
111
|
+
break;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return out;
|
|
115
|
+
}
|
|
81
116
|
//# sourceMappingURL=exifcarry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exifcarry.js","sourceRoot":"","sources":["../../../src/geo/exifcarry.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;AAGH,kCAiBC;AASD,0CAqBC;
|
|
1
|
+
{"version":3,"file":"exifcarry.js","sourceRoot":"","sources":["../../../src/geo/exifcarry.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;AAGH,kCAiBC;AASD,0CAqBC;AAUD,wCAqBC;AA/ED,wEAAwE;AACxE,SAAgB,WAAW,CAAC,KAAiB;IAC3C,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC5E,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,OAAO,EAAE,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QAC9B,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QACpC,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,CAAE,CAAC;QAC9B,oEAAoE;QACpE,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QACjC,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAE,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,CAAE,CAAC;QACtD,IAAI,MAAM,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAC5B,IAAI,MAAM,KAAK,IAAI,IAAI,EAAE,GAAG,EAAE,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YAC/C,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC;YACpH,IAAI,MAAM;gBAAE,OAAO,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;QACtD,CAAC;QACD,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC;IACnB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,eAAe,CAAC,IAAgB,EAAE,OAAmB;IACnE,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAEzE,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,OAAO,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI;YAAE,MAAM;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAE,CAAC;QAC7B,IAAI,MAAM,KAAK,IAAI;YAAE,MAAM;QAC3B,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAE,CAAC;QACpD,IAAI,MAAM,GAAG,CAAC;YAAE,MAAM;QACtB,IAAI,MAAM,KAAK,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC/E,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC;IACnB,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC;IAClF,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACzB,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACpB,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACnD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1D,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,cAAc,CAAC,OAAmB;IAChD,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAC5B,MAAM,IAAI,GAAG,EAAE,CAAC;IAChB,IAAI,GAAG,CAAC,MAAM,GAAG,IAAI,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IACtC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;IACtE,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1C,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,GAAG,CAAC;IACrD,MAAM,MAAM,GAAG,KAAK,KAAK,MAAM,CAAC;IAChC,MAAM,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;IACrD,IAAI,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM;QAAE,OAAO,GAAG,CAAC;IACtC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC3C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;QACpC,IAAI,KAAK,GAAG,EAAE,GAAG,GAAG,CAAC,MAAM;YAAE,MAAM;QACnC,2EAA2E;QAC3E,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACxF,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;YACrC,MAAM;QACR,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -11,4 +11,15 @@ import type { GeoPoint } from "./box.ts";
|
|
|
11
11
|
export declare function geohashEncode(point: GeoPoint, precision?: number): string;
|
|
12
12
|
/** The centre of a cell, or null when the string is not a geohash. */
|
|
13
13
|
export declare function geohashCentre(hash: string): GeoPoint | null;
|
|
14
|
+
/**
|
|
15
|
+
* The cells to look in for everything within `reachM` of a point: the cell
|
|
16
|
+
* the point falls in and its eight neighbours, at the finest precision (up to
|
|
17
|
+
* `maxPrecision`) whose cells are wider and taller than the reach there. A
|
|
18
|
+
* point within reach can then never fall outside the block, however near an
|
|
19
|
+
* edge of its own cell the point sits. Any cell of `maxPrecision` characters
|
|
20
|
+
* or fewer that holds such a point starts with one of the returned cells.
|
|
21
|
+
*
|
|
22
|
+
* A reach over a pole needs every longitude: the 32 one-character cells.
|
|
23
|
+
*/
|
|
24
|
+
export declare function geohashesAround(point: GeoPoint, reachM: number, maxPrecision?: number): string[];
|
|
14
25
|
//# sourceMappingURL=geohash.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geohash.d.ts","sourceRoot":"","sources":["../../../src/geo/geohash.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAIzC,6EAA6E;AAC7E,wBAAgB,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,SAAI,GAAG,MAAM,CA0BpE;
|
|
1
|
+
{"version":3,"file":"geohash.d.ts","sourceRoot":"","sources":["../../../src/geo/geohash.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAIzC,6EAA6E;AAC7E,wBAAgB,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,SAAI,GAAG,MAAM,CA0BpE;AAqBD,sEAAsE;AACtE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAG3D;AAMD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,SAAI,GAAG,MAAM,EAAE,CA2B3F"}
|
package/dist/cjs/geo/geohash.js
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
11
|
exports.geohashEncode = geohashEncode;
|
|
12
12
|
exports.geohashCentre = geohashCentre;
|
|
13
|
+
exports.geohashesAround = geohashesAround;
|
|
13
14
|
const BASE32 = "0123456789bcdefghjkmnpqrstuvwxyz";
|
|
14
15
|
/** The cell a point falls in, `precision` characters long (6 by default). */
|
|
15
16
|
function geohashEncode(point, precision = 6) {
|
|
@@ -40,8 +41,8 @@ function geohashEncode(point, precision = 6) {
|
|
|
40
41
|
}
|
|
41
42
|
return hash;
|
|
42
43
|
}
|
|
43
|
-
/**
|
|
44
|
-
function
|
|
44
|
+
/** A cell's edges, [south, north] and [west, east], or null when the string is not a geohash. */
|
|
45
|
+
function geohashBounds(hash) {
|
|
45
46
|
if (!/^[0-9b-hjkmnp-z]{1,12}$/.test(hash))
|
|
46
47
|
return null;
|
|
47
48
|
let lat = [-90, 90];
|
|
@@ -59,6 +60,55 @@ function geohashCentre(hash) {
|
|
|
59
60
|
even = !even;
|
|
60
61
|
}
|
|
61
62
|
}
|
|
62
|
-
return { lat
|
|
63
|
+
return { lat, lon };
|
|
64
|
+
}
|
|
65
|
+
/** The centre of a cell, or null when the string is not a geohash. */
|
|
66
|
+
function geohashCentre(hash) {
|
|
67
|
+
const bounds = geohashBounds(hash);
|
|
68
|
+
return bounds && { lat: (bounds.lat[0] + bounds.lat[1]) / 2, lon: (bounds.lon[0] + bounds.lon[1]) / 2 };
|
|
69
|
+
}
|
|
70
|
+
const EARTH_RADIUS_M = 6_371_008.8;
|
|
71
|
+
const DEGREES = 180 / Math.PI;
|
|
72
|
+
const WORLD = [...BASE32];
|
|
73
|
+
/**
|
|
74
|
+
* The cells to look in for everything within `reachM` of a point: the cell
|
|
75
|
+
* the point falls in and its eight neighbours, at the finest precision (up to
|
|
76
|
+
* `maxPrecision`) whose cells are wider and taller than the reach there. A
|
|
77
|
+
* point within reach can then never fall outside the block, however near an
|
|
78
|
+
* edge of its own cell the point sits. Any cell of `maxPrecision` characters
|
|
79
|
+
* or fewer that holds such a point starts with one of the returned cells.
|
|
80
|
+
*
|
|
81
|
+
* A reach over a pole needs every longitude: the 32 one-character cells.
|
|
82
|
+
*/
|
|
83
|
+
function geohashesAround(point, reachM, maxPrecision = 6) {
|
|
84
|
+
const angle = Math.max(0, reachM) / EARTH_RADIUS_M;
|
|
85
|
+
const latReach = angle * DEGREES;
|
|
86
|
+
/* Every point within reach lies at or below this latitude, so it bounds the longitude a reach can span (from the haversine formula). */
|
|
87
|
+
const poleward = Math.abs(point.lat) + latReach;
|
|
88
|
+
if (poleward >= 90)
|
|
89
|
+
return WORLD;
|
|
90
|
+
const sine = Math.sin(angle / 2) / Math.cos(poleward / DEGREES);
|
|
91
|
+
if (sine >= 1)
|
|
92
|
+
return WORLD;
|
|
93
|
+
const lonReach = 2 * Math.asin(sine) * DEGREES;
|
|
94
|
+
for (let precision = Math.min(Math.max(1, Math.floor(maxPrecision)), 12); precision >= 1; precision--) {
|
|
95
|
+
const height = 180 / 2 ** Math.floor((5 * precision) / 2);
|
|
96
|
+
const width = 360 / 2 ** Math.ceil((5 * precision) / 2);
|
|
97
|
+
if (height <= latReach || width <= lonReach)
|
|
98
|
+
continue;
|
|
99
|
+
const centre = geohashCentre(geohashEncode(point, precision));
|
|
100
|
+
const cells = new Set();
|
|
101
|
+
for (const dLat of [-1, 0, 1]) {
|
|
102
|
+
const lat = centre.lat + dLat * height;
|
|
103
|
+
if (lat <= -90 || lat >= 90)
|
|
104
|
+
continue;
|
|
105
|
+
for (const dLon of [-1, 0, 1]) {
|
|
106
|
+
const lon = ((((centre.lon + dLon * width + 180) % 360) + 360) % 360) - 180;
|
|
107
|
+
cells.add(geohashEncode({ lat, lon }, precision));
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return [...cells];
|
|
111
|
+
}
|
|
112
|
+
return WORLD;
|
|
63
113
|
}
|
|
64
114
|
//# sourceMappingURL=geohash.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geohash.js","sourceRoot":"","sources":["../../../src/geo/geohash.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AAOH,sCA0BC;
|
|
1
|
+
{"version":3,"file":"geohash.js","sourceRoot":"","sources":["../../../src/geo/geohash.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a picture says about where it came from (an AI label: IPTC DigitalSourceType in its XMP; C2PA content
|
|
3
|
+
* credentials), and whether it is a photo the reviewer can read at all (JPEG or PNG, within its pixel cap).
|
|
4
|
+
*
|
|
5
|
+
* The answer page used to shrink a photograph by redrawing it on a canvas, and a generator's PNG, labelled
|
|
6
|
+
* `trainedAlgorithmicMedia` in its XMP and signed in a C2PA manifest, lost both: the reviewer's not-generated
|
|
7
|
+
* screen then passed it (Red Harbor demo, 2026-10-16). Evidence photos are now sent as they are (camera.ts). This
|
|
8
|
+
* reads what the original declares, for the page's early warning on a photo marked AI-generated (`markedAi`) and
|
|
9
|
+
* the provenance the evidence records. The oracle still decides.
|
|
10
|
+
*
|
|
11
|
+
* Pure byte reading, no decoder. PNG (iTXt XMP, caBX), JPEG (APP1 XMP, APP11 JUMBF) and WebP (`XMP `, `C2PA`).
|
|
12
|
+
* shortcut: a compressed PNG iTXt XMP is not inflated (generators write it plain); upgrade with DecompressionStream if one turns up.
|
|
13
|
+
*/
|
|
14
|
+
/** What the evidence document records. `sources` names where a label was found. */
|
|
15
|
+
export interface Provenance {
|
|
16
|
+
aiLabel: boolean;
|
|
17
|
+
sources: ("xmp" | "c2pa")[];
|
|
18
|
+
/** The IPTC digital source type that says a model made it, e.g. "trainedAlgorithmicMedia". */
|
|
19
|
+
digitalSourceType?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface Scanned {
|
|
22
|
+
/** Null when the picture says nothing about its source. */
|
|
23
|
+
provenance: Provenance | null;
|
|
24
|
+
/**
|
|
25
|
+
* The picture declares outright that a model made it: an IPTC DigitalSourceType of trainedAlgorithmicMedia,
|
|
26
|
+
* compositeSynthetic or algorithmicMedia, in its XMP or its C2PA manifest. The answer page stops such a photo
|
|
27
|
+
* before upload (UX only). C2PA presence alone never sets it: real cameras sign too.
|
|
28
|
+
*/
|
|
29
|
+
markedAi: boolean;
|
|
30
|
+
}
|
|
31
|
+
/** The oracle's limits on an evidence photo (S3, 2026-10-16): its AI judge skips anything over 10 MB, and it reads at most 40 MP of a PNG. */
|
|
32
|
+
export declare const EVIDENCE_MAX_BYTES = 10000000;
|
|
33
|
+
export declare const PNG_MAX_PIXELS = 40000000;
|
|
34
|
+
/**
|
|
35
|
+
* Why the reviewer could not read this photo, in plain words, or null. By its bytes, never its name: JPEG or PNG
|
|
36
|
+
* only, at most `maxBytes` (never above EVIDENCE_MAX_BYTES), and a PNG at most 40 MP (read from its IHDR).
|
|
37
|
+
*/
|
|
38
|
+
export declare function photoRefusal(bytes: Uint8Array, maxBytes?: number): string | null;
|
|
39
|
+
/** What a picture's own bytes say about its source. Never throws: a file it cannot read says nothing. */
|
|
40
|
+
export declare function scanProvenance(bytes: Uint8Array): Scanned;
|
|
41
|
+
//# sourceMappingURL=provenance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provenance.d.ts","sourceRoot":"","sources":["../../../src/geo/provenance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,mFAAmF;AACnF,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,CAAC,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC;IAC5B,8FAA8F;IAC9F,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,OAAO;IACtB,2DAA2D;IAC3D,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B;;;;OAIG;IACH,QAAQ,EAAE,OAAO,CAAC;CACnB;AAwBD,8IAA8I;AAC9I,eAAO,MAAM,kBAAkB,WAAa,CAAC;AAC7C,eAAO,MAAM,cAAc,WAAa,CAAC;AAEzC;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,GAAE,MAA2B,GAAG,MAAM,GAAG,IAAI,CAUpG;AAED,yGAAyG;AACzG,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAuDzD"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* What a picture says about where it came from (an AI label: IPTC DigitalSourceType in its XMP; C2PA content
|
|
4
|
+
* credentials), and whether it is a photo the reviewer can read at all (JPEG or PNG, within its pixel cap).
|
|
5
|
+
*
|
|
6
|
+
* The answer page used to shrink a photograph by redrawing it on a canvas, and a generator's PNG, labelled
|
|
7
|
+
* `trainedAlgorithmicMedia` in its XMP and signed in a C2PA manifest, lost both: the reviewer's not-generated
|
|
8
|
+
* screen then passed it (Red Harbor demo, 2026-10-16). Evidence photos are now sent as they are (camera.ts). This
|
|
9
|
+
* reads what the original declares, for the page's early warning on a photo marked AI-generated (`markedAi`) and
|
|
10
|
+
* the provenance the evidence records. The oracle still decides.
|
|
11
|
+
*
|
|
12
|
+
* Pure byte reading, no decoder. PNG (iTXt XMP, caBX), JPEG (APP1 XMP, APP11 JUMBF) and WebP (`XMP `, `C2PA`).
|
|
13
|
+
* shortcut: a compressed PNG iTXt XMP is not inflated (generators write it plain); upgrade with DecompressionStream if one turns up.
|
|
14
|
+
*/
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.PNG_MAX_PIXELS = exports.EVIDENCE_MAX_BYTES = void 0;
|
|
17
|
+
exports.photoRefusal = photoRefusal;
|
|
18
|
+
exports.scanProvenance = scanProvenance;
|
|
19
|
+
/** The IPTC digital source types that say a model made or composited the picture. */
|
|
20
|
+
const AI_SOURCE = /\b(trainedAlgorithmicMedia|compositeWithTrainedAlgorithmicMedia|compositeSynthetic|algorithmicMedia)\b/;
|
|
21
|
+
/** The ones the answer page refuses on sight (owner, 2026-10-16). */
|
|
22
|
+
const MARKED_AI = /\b(trainedAlgorithmicMedia|compositeSynthetic|algorithmicMedia)\b/;
|
|
23
|
+
const XMP_JPEG_HEADER = "http://ns.adobe.com/xap/1.0/\0";
|
|
24
|
+
const XMP_PNG_KEYWORD = "XML:com.adobe.xmp";
|
|
25
|
+
const latin1 = (bytes) => {
|
|
26
|
+
let out = "";
|
|
27
|
+
for (let at = 0; at < bytes.length; at += 8192)
|
|
28
|
+
out += String.fromCharCode(...bytes.subarray(at, at + 8192));
|
|
29
|
+
return out;
|
|
30
|
+
};
|
|
31
|
+
const startsWith = (bytes, at, text) => {
|
|
32
|
+
if (at + text.length > bytes.length)
|
|
33
|
+
return false;
|
|
34
|
+
for (let index = 0; index < text.length; index += 1)
|
|
35
|
+
if (bytes[at + index] !== text.charCodeAt(index))
|
|
36
|
+
return false;
|
|
37
|
+
return true;
|
|
38
|
+
};
|
|
39
|
+
const u32 = (bytes, at) => ((bytes[at] << 24) >>> 0) + (bytes[at + 1] << 16) + (bytes[at + 2] << 8) + bytes[at + 3];
|
|
40
|
+
const u32le = (bytes, at) => (bytes[at] | (bytes[at + 1] << 8) | (bytes[at + 2] << 16)) + bytes[at + 3] * 0x1000000;
|
|
41
|
+
const isPng = (bytes) => bytes.length > 8 && bytes[0] === 0x89 && startsWith(bytes, 1, "PNG");
|
|
42
|
+
const isJpeg = (bytes) => bytes.length > 4 && bytes[0] === 0xff && bytes[1] === 0xd8;
|
|
43
|
+
/** The oracle's limits on an evidence photo (S3, 2026-10-16): its AI judge skips anything over 10 MB, and it reads at most 40 MP of a PNG. */
|
|
44
|
+
exports.EVIDENCE_MAX_BYTES = 10_000_000;
|
|
45
|
+
exports.PNG_MAX_PIXELS = 40_000_000;
|
|
46
|
+
/**
|
|
47
|
+
* Why the reviewer could not read this photo, in plain words, or null. By its bytes, never its name: JPEG or PNG
|
|
48
|
+
* only, at most `maxBytes` (never above EVIDENCE_MAX_BYTES), and a PNG at most 40 MP (read from its IHDR).
|
|
49
|
+
*/
|
|
50
|
+
function photoRefusal(bytes, maxBytes = exports.EVIDENCE_MAX_BYTES) {
|
|
51
|
+
if (!isJpeg(bytes) && !isPng(bytes))
|
|
52
|
+
return "Please send a JPEG or PNG photo.";
|
|
53
|
+
const limit = Math.min(maxBytes, exports.EVIDENCE_MAX_BYTES);
|
|
54
|
+
const mb = (count) => (count / 1_000_000).toFixed(1).replace(/\.0$/, "");
|
|
55
|
+
if (bytes.length > limit)
|
|
56
|
+
return `This photo is too big to send (${mb(bytes.length)} MB; the limit is ${mb(limit)} MB). Take it again at a lower resolution, or pick a smaller photo.`;
|
|
57
|
+
if (isPng(bytes) && startsWith(bytes, 12, "IHDR")) {
|
|
58
|
+
const pixels = u32(bytes, 16) * u32(bytes, 20);
|
|
59
|
+
if (pixels > exports.PNG_MAX_PIXELS)
|
|
60
|
+
return `This photo has too many pixels to send (${Math.round(pixels / 1_000_000)} megapixels; the limit is 40). Take it again at a lower resolution, or pick a smaller photo.`;
|
|
61
|
+
}
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
/** What a picture's own bytes say about its source. Never throws: a file it cannot read says nothing. */
|
|
65
|
+
function scanProvenance(bytes) {
|
|
66
|
+
let xmp = null;
|
|
67
|
+
const c2pa = [];
|
|
68
|
+
try {
|
|
69
|
+
if (isPng(bytes)) {
|
|
70
|
+
for (let at = 8; at + 12 <= bytes.length;) {
|
|
71
|
+
const length = u32(bytes, at);
|
|
72
|
+
const data = bytes.subarray(at + 8, at + 8 + length);
|
|
73
|
+
if (startsWith(bytes, at + 4, "iTXt") && startsWith(data, 0, `${XMP_PNG_KEYWORD}\0`)) {
|
|
74
|
+
let cursor = XMP_PNG_KEYWORD.length + 1;
|
|
75
|
+
const compressed = data[cursor] === 1;
|
|
76
|
+
cursor += 2;
|
|
77
|
+
/* The language tag, then the translated keyword: both NUL-terminated. */
|
|
78
|
+
for (let nul = 0; nul < 2; nul += 1)
|
|
79
|
+
cursor = data.indexOf(0, cursor) + 1;
|
|
80
|
+
if (!compressed && cursor > 0)
|
|
81
|
+
xmp = data.subarray(cursor);
|
|
82
|
+
}
|
|
83
|
+
else if (startsWith(bytes, at + 4, "caBX"))
|
|
84
|
+
c2pa.push(data);
|
|
85
|
+
else if (startsWith(bytes, at + 4, "IEND"))
|
|
86
|
+
break;
|
|
87
|
+
at += 12 + length;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
else if (isJpeg(bytes)) {
|
|
91
|
+
for (let at = 2; at + 4 <= bytes.length && bytes[at] === 0xff;) {
|
|
92
|
+
const marker = bytes[at + 1];
|
|
93
|
+
/* Start of scan: the pixels begin and the metadata is behind us. */
|
|
94
|
+
if (marker === 0xda)
|
|
95
|
+
break;
|
|
96
|
+
const length = (bytes[at + 2] << 8) | bytes[at + 3];
|
|
97
|
+
if (length < 2)
|
|
98
|
+
break;
|
|
99
|
+
if (marker === 0xe1 && startsWith(bytes, at + 4, XMP_JPEG_HEADER))
|
|
100
|
+
xmp = bytes.subarray(at + 4 + XMP_JPEG_HEADER.length, at + 2 + length);
|
|
101
|
+
/* APP11, JPEG XT "JP": a JUMBF box, which C2PA uses. */
|
|
102
|
+
if (marker === 0xeb && startsWith(bytes, at + 4, "JP"))
|
|
103
|
+
c2pa.push(bytes.subarray(at, at + 2 + length));
|
|
104
|
+
at += 2 + length;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
else if (startsWith(bytes, 0, "RIFF") && startsWith(bytes, 8, "WEBP")) {
|
|
108
|
+
for (let at = 12; at + 8 <= bytes.length;) {
|
|
109
|
+
const size = u32le(bytes, at + 4);
|
|
110
|
+
const data = bytes.subarray(at + 8, at + 8 + size);
|
|
111
|
+
if (startsWith(bytes, at, "XMP "))
|
|
112
|
+
xmp = data;
|
|
113
|
+
if (startsWith(bytes, at, "C2PA"))
|
|
114
|
+
c2pa.push(data);
|
|
115
|
+
at += 8 + size + (size % 2);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
/* A truncated or odd file: whatever was read so far stands. */
|
|
121
|
+
}
|
|
122
|
+
const xmpText = xmp ? latin1(xmp) : "";
|
|
123
|
+
const labelledXmp = /DigitalSourceType/.test(xmpText);
|
|
124
|
+
const credentials = c2pa.map(latin1).filter((text) => text.includes("c2pa"));
|
|
125
|
+
const labelled = labelledXmp ? AI_SOURCE.exec(xmpText) : null;
|
|
126
|
+
const signed = credentials.map((text) => AI_SOURCE.exec(text)).find(Boolean) ?? null;
|
|
127
|
+
const sources = [...(labelledXmp ? ["xmp"] : []), ...(credentials.length ? ["c2pa"] : [])];
|
|
128
|
+
const type = (labelled ?? signed)?.[1];
|
|
129
|
+
return {
|
|
130
|
+
provenance: sources.length ? { aiLabel: Boolean(labelled || signed), sources, ...(type ? { digitalSourceType: type } : {}) } : null,
|
|
131
|
+
markedAi: (labelledXmp && MARKED_AI.test(xmpText)) || credentials.some((text) => MARKED_AI.test(text))
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=provenance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provenance.js","sourceRoot":"","sources":["../../../src/geo/provenance.ts"],"names":[],"mappings":"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"}
|
|
@@ -53,6 +53,23 @@ export interface BridgeOptions {
|
|
|
53
53
|
meters: number;
|
|
54
54
|
days: number;
|
|
55
55
|
} | null;
|
|
56
|
+
/**
|
|
57
|
+
* W7a: a CAMPAIGN rubric — one document for every ask in a campaign, so it
|
|
58
|
+
* carries no per-ask literal. The `within-radius` gate is emitted as the
|
|
59
|
+
* `withinAskRadius` source with only the claim's fields; the oracle resolves
|
|
60
|
+
* the pin itself from the claim's collection → its deed → `#done`. The judge
|
|
61
|
+
* is shown `task` below (the campaign's wording) instead of the ask's.
|
|
62
|
+
*/
|
|
63
|
+
pinFromAsk?: boolean;
|
|
64
|
+
/** The task the judges are shown, in place of the ask's own; the campaign's wording under `pinFromAsk`. */
|
|
65
|
+
task?: string;
|
|
66
|
+
/**
|
|
67
|
+
* A person stands behind the ask's reviews (an organisation's ask, its reviewers in the Console): then a photo
|
|
68
|
+
* with no camera data and no live capture is held for that person (the `cameraPhoto`/`liveCapture` gate) rather
|
|
69
|
+
* than ruled on by the screens alone. Never on a campaign rubric or an ask from a key with nobody behind it: a
|
|
70
|
+
* `review` there is held for ever (`ON_ERROR`).
|
|
71
|
+
*/
|
|
72
|
+
personReviews?: boolean;
|
|
56
73
|
}
|
|
57
74
|
/**
|
|
58
75
|
* What every source and AI check says when it could not answer at all.
|
|
@@ -177,8 +194,31 @@ export interface EngineRubric {
|
|
|
177
194
|
aiChecks?: EngineAiCheck[];
|
|
178
195
|
unique?: EngineUnique;
|
|
179
196
|
gates: EngineGate[];
|
|
197
|
+
review?: EngineReview;
|
|
180
198
|
};
|
|
181
199
|
}
|
|
200
|
+
/** A person's look, for a gate that fails to `review`: without a claim-level task the engine turns review into reject (S3). */
|
|
201
|
+
export interface EngineReview {
|
|
202
|
+
"@type": "HumanReview";
|
|
203
|
+
assignTo: {
|
|
204
|
+
role: "reviewer";
|
|
205
|
+
};
|
|
206
|
+
slaHours: number;
|
|
207
|
+
onTimeout: "reject";
|
|
208
|
+
tasks: {
|
|
209
|
+
"@type": "ReviewTask";
|
|
210
|
+
id: string;
|
|
211
|
+
prompt: string;
|
|
212
|
+
show: string[];
|
|
213
|
+
answer: {
|
|
214
|
+
type: "boolean";
|
|
215
|
+
};
|
|
216
|
+
map: {
|
|
217
|
+
true: "approve";
|
|
218
|
+
false: "reject";
|
|
219
|
+
};
|
|
220
|
+
}[];
|
|
221
|
+
}
|
|
182
222
|
/**
|
|
183
223
|
* The names the oracle answers to, per gate. Exact: the oracle registers a
|
|
184
224
|
* handler per name (and per suffix, 2..5, for a rule that repeats within one
|
|
@@ -198,6 +238,8 @@ export declare const SOURCE_NAMES: {
|
|
|
198
238
|
};
|
|
199
239
|
/** The cool-off source, emitted from the options rather than from a gate. */
|
|
200
240
|
export declare const COOLDOWN_SOURCE = "cooldown";
|
|
241
|
+
/** The pin-free radius source of a campaign rubric (W7a): the oracle reads the ask's point and radius from its deed's `#done`. */
|
|
242
|
+
export declare const WITHIN_ASK_RADIUS_SOURCE = "withinAskRadius";
|
|
201
243
|
/** The marker source on a site ask, so the claim's `kind` is frozen on the receipt for the oracle's act policy. */
|
|
202
244
|
export declare const SITE_SOURCE = "openhandsSite";
|
|
203
245
|
/** The AI check, per judge criterion: `judge`, then `judge2..`. */
|
|
@@ -251,6 +293,13 @@ export declare const PHOTO_CHECKS: {
|
|
|
251
293
|
readonly notMarkedGenerated: "notMarkedGenerated";
|
|
252
294
|
readonly notElsewhere: "notElsewhere";
|
|
253
295
|
};
|
|
296
|
+
/** The two facts of the camera-or-live gate, asked only where a person reviews (`personReviews`). */
|
|
297
|
+
export declare const PERSON_CHECKS: {
|
|
298
|
+
/** True when the file has EXIF Make/Model or a trusted C2PA camera capture (S3). */
|
|
299
|
+
readonly cameraPhoto: "cameraPhoto";
|
|
300
|
+
/** True when the evidence carries a valid live-capture stamp for the photo (app/lib/stamp.ts, S3). */
|
|
301
|
+
readonly liveCapture: "liveCapture";
|
|
302
|
+
};
|
|
254
303
|
/**
|
|
255
304
|
* How far a photograph's own GPS may sit from the point the claim reported.
|
|
256
305
|
*
|
|
@@ -379,8 +428,45 @@ export declare const SITE_KIND_PREAMBLE = "A claim of kind \"patch\" carries a b
|
|
|
379
428
|
*
|
|
380
429
|
* Everything from "Where a rule asks" on is untouched, the `reason` guidance
|
|
381
430
|
* and the last sentence included.
|
|
431
|
+
*
|
|
432
|
+
* **Only where the judge is sent a file** (`guidanceFor`). A typed answer is
|
|
433
|
+
* read under `TEXT_JUDGE_GUIDANCE` instead, which has the incident that
|
|
434
|
+
* bought it.
|
|
382
435
|
*/
|
|
383
436
|
export declare 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 \u2014 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.";
|
|
437
|
+
/**
|
|
438
|
+
* What a judge is told first when all it is sent is words — `JUDGE_GUIDANCE`
|
|
439
|
+
* for an ask whose deliverable is typed.
|
|
440
|
+
*
|
|
441
|
+
* **What bought it (testnet, 2026-10-15).** The same typed answer, "It's dry
|
|
442
|
+
* and the streetlights are working", to the same observation, "Look out of a
|
|
443
|
+
* window: is it raining or dry right now, and are the street lights on?",
|
|
444
|
+
* under the same judge sentence: ask #44040 passed the judge at 92, and ask
|
|
445
|
+
* #44041 failed it at 96 (`openai/gpt-5.6-luna`, R2). The receipt keeps only
|
|
446
|
+
* a digest of the model's reason, so why cannot be read. What is known is what
|
|
447
|
+
* both judges were given: `task` and `text` and nothing else, under a first
|
|
448
|
+
* instruction that "the evidence is what an ordinary person can capture on a
|
|
449
|
+
* phone, outdoors", that a photograph "is still evidence, so rule on what you
|
|
450
|
+
* can see in it", and that what a rule asks to be shown "has to be visible" —
|
|
451
|
+
* about a photograph neither of them had, inside the oracle's "if a rule
|
|
452
|
+
* requires something and you cannot find it, that rule FAILS". A plain answer
|
|
453
|
+
* became a coin toss.
|
|
454
|
+
*
|
|
455
|
+
* So it says what the evidence is — words, often one line, sometimes a page —
|
|
456
|
+
* and that no photograph or file is in front of the model, so nothing fails
|
|
457
|
+
* for not being shown. It reads an answer as its writer plainly meant it,
|
|
458
|
+
* because "working" for "on" is how people answer. Everything from "Apply each
|
|
459
|
+
* rule" on follows the photograph paragraph clause for clause with the
|
|
460
|
+
* evidence made the words — "plainly contradict", "has to be in the words",
|
|
461
|
+
* "what you read in their answer" — and the clause about whether a photograph
|
|
462
|
+
* is genuine left out, since none is. Those sentences were bought by the 1149
|
|
463
|
+
* rejections and ask 43910, and their point was never pictures. "Never list it
|
|
464
|
+
* as a failed rule" stays the last sentence, for the reason it is there.
|
|
465
|
+
*
|
|
466
|
+
* It carries no sentence about the place or the time: a typed ask may carry no
|
|
467
|
+
* place rule at all, and the ones that do ask it as a rule of their own.
|
|
468
|
+
*/
|
|
469
|
+
export declare const TEXT_JUDGE_GUIDANCE = "How to read the rules below. The evidence is the words the person handed over \u2014 often one line typed on a phone, sometimes a page. A short, informal or misspelt answer, or one in other words than the question's, still says what it says: read it as its writer plainly meant it, and rule on that. You are given the words alone, with no photograph or file to look at, so never fail a rule because something is not shown, pictured or proven beyond what the words say. 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 \u2014 every rule is asked on its own. Where a rule asks whether the answer supports, matches or is consistent with something the claimant stated, fail it only when the words plainly contradict them, and where you are left genuinely unsure let your score carry the doubt rather than failing. Where a rule asks whether something is said, it has to be in the words, in any wording. 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 read in their answer, 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.";
|
|
384
470
|
/**
|
|
385
471
|
* The sentence the authenticity judge rules on — `PHOTO_CHECKS` has why.
|
|
386
472
|
*
|
|
@@ -404,8 +490,8 @@ export declare const JUDGE_GUIDANCE = "How to read the rules below. The evidence
|
|
|
404
490
|
* cleared, so the bags in a van and the load at a depot are not failed for
|
|
405
491
|
* having a roof over them.
|
|
406
492
|
*
|
|
407
|
-
* `
|
|
408
|
-
*
|
|
493
|
+
* `refusal` is the gate's `reason`: the sentence a refused worker reads, worded as the failure with what to do
|
|
494
|
+
* (S3, 2026-10-17: the pass sentence on a reject read as a contradiction). `rule` and the list of signs are for the model.
|
|
409
495
|
*/
|
|
410
496
|
export declare function realPhotoRule(shape: {
|
|
411
497
|
pair: boolean;
|
|
@@ -413,7 +499,17 @@ export declare function realPhotoRule(shape: {
|
|
|
413
499
|
}): {
|
|
414
500
|
rule: string;
|
|
415
501
|
text: string;
|
|
502
|
+
refusal: string;
|
|
416
503
|
};
|
|
504
|
+
/**
|
|
505
|
+
* Which paragraph a judge is handed first: the one about what it is sent.
|
|
506
|
+
*
|
|
507
|
+
* Decided by the deliverable's shape — the same switch that puts `$photo` in
|
|
508
|
+
* the judge's `send` — and never by reading the ask: a question that mentions
|
|
509
|
+
* a photograph is still answered in words. A `file` keeps the photograph
|
|
510
|
+
* paragraph, because its judge is sent the file.
|
|
511
|
+
*/
|
|
512
|
+
export declare const guidanceFor: (type: AskTerms["deliverable"]["type"]) => string;
|
|
417
513
|
/**
|
|
418
514
|
* Terms → the engine's rubric.
|
|
419
515
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../../src/rubric/bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuC,KAAK,QAAQ,EAAkB,KAAK,SAAS,EAAa,MAAM,YAAY,CAAC;AAE3H;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,yFAAyF;AACzF,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,sEAAsE;AACtE,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../../src/rubric/bridge.ts"],"names":[],"mappings":"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"}
|