@ixo/openhands-sdk 0.3.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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 +4 -1
- 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 +4 -3
- package/dist/cjs/campaign/pool.js.map +1 -1
- package/dist/cjs/campaign/record.d.ts.map +1 -1
- package/dist/cjs/campaign/record.js +1 -1
- package/dist/cjs/campaign/record.js.map +1 -1
- package/dist/cjs/campaign/spots.d.ts.map +1 -1
- package/dist/cjs/campaign/spots.js +10 -8
- package/dist/cjs/campaign/spots.js.map +1 -1
- package/dist/cjs/campaign/treasurySends.d.ts.map +1 -1
- package/dist/cjs/campaign/treasurySends.js +3 -3
- package/dist/cjs/campaign/treasurySends.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 +31 -2
- package/dist/cjs/chain/entityShape.d.ts.map +1 -1
- package/dist/cjs/chain/entityShape.js +71 -8
- 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 +53 -2
- package/dist/cjs/chain/money.d.ts.map +1 -1
- package/dist/cjs/chain/money.js +73 -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 +21 -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 +43 -2
- package/dist/cjs/data/install.d.ts.map +1 -1
- package/dist/cjs/data/install.js +60 -10
- 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 +5 -2
- 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 +4 -3
- package/dist/esm/campaign/pool.js.map +1 -1
- package/dist/esm/campaign/record.d.ts.map +1 -1
- package/dist/esm/campaign/record.js +2 -2
- package/dist/esm/campaign/record.js.map +1 -1
- package/dist/esm/campaign/spots.d.ts.map +1 -1
- package/dist/esm/campaign/spots.js +10 -8
- package/dist/esm/campaign/spots.js.map +1 -1
- package/dist/esm/campaign/treasurySends.d.ts.map +1 -1
- package/dist/esm/campaign/treasurySends.js +4 -4
- package/dist/esm/campaign/treasurySends.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 +31 -2
- package/dist/esm/chain/entityShape.d.ts.map +1 -1
- package/dist/esm/chain/entityShape.js +65 -7
- 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 +53 -2
- package/dist/esm/chain/money.d.ts.map +1 -1
- package/dist/esm/chain/money.js +63 -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 +43 -2
- package/dist/esm/data/install.d.ts.map +1 -1
- package/dist/esm/data/install.js +56 -9
- 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
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The claimant's "why", rebuilt from the PUBLIC engine receipt, for everyone the oracle's
|
|
3
|
+
* `/openhands/claims/:id/why` cannot answer: a passkey or guest claimant (no signing key), an MCP
|
|
4
|
+
* acting for a connected person, the hosted MCP. Same `Why` shape and the same rules as the
|
|
5
|
+
* oracle's mapper (openhands-oracle `src/openhands/explain.ts`), minus what only the oracle holds:
|
|
6
|
+
* the receipt carries codes, outcomes and scores, never the frozen facts, so there are no measured
|
|
7
|
+
* distances, no AI sentence and no time/place grade here.
|
|
8
|
+
*
|
|
9
|
+
* Worker-safe: only the rubric's own public sentences and fixed words reach a detail, scrubbed of
|
|
10
|
+
* identifiers; the rubric's AI instructions are never read, nor the receipt's payee, company,
|
|
11
|
+
* digests or trace. Duplicate-photo findings say only that the photo was used before.
|
|
12
|
+
* Pure: `chain/why.ts` fetches the receipt and the verified rubric and calls this.
|
|
13
|
+
*/
|
|
14
|
+
const str = (v) => (typeof v === "string" && v ? v : undefined);
|
|
15
|
+
const obj = (v) => (v && typeof v === "object" && !Array.isArray(v) ? v : undefined);
|
|
16
|
+
const list = (v) => (Array.isArray(v) ? v.map(obj).filter((x) => !!x) : []);
|
|
17
|
+
export const PENDING_WHY = { outcome: "pending", summary: "Not decided yet: the checks on your claim are still running.", reasons: [] };
|
|
18
|
+
/* ---- scrubbing: a rubric is public text, but a detail must never carry an identifier ---- */
|
|
19
|
+
const HIDDEN = "[hidden]";
|
|
20
|
+
const SCRUB = [
|
|
21
|
+
/\b(?:https?:\/\/|www\.)\S+/gi,
|
|
22
|
+
/[\w.+-]+@[\w-]+(?:\.[\w-]+)+/g,
|
|
23
|
+
/\bdid:[a-z0-9]+:[^\s,;)]+/gi,
|
|
24
|
+
/\bixo1[a-z0-9]{38,58}\b/g,
|
|
25
|
+
/\b(?:baf[a-z2-7]{20,}|[A-Za-z0-9]{30,})\b/g
|
|
26
|
+
];
|
|
27
|
+
const capped = (s, n = 160) => (s.length > n ? `${s.slice(0, n - 1).trimEnd()}…` : s);
|
|
28
|
+
export const scrub = (text, n = 280) => capped(SCRUB.reduce((out, re) => out.replace(re, HIDDEN), text).replace(/\s+/g, " ").trim(), n);
|
|
29
|
+
/* ---- labels, as the oracle words them ---- */
|
|
30
|
+
const FACT_LABELS = {
|
|
31
|
+
withinRadius: "Distance to the place",
|
|
32
|
+
withinAskRadius: "Distance to the boat",
|
|
33
|
+
located: "Location reported",
|
|
34
|
+
beforeAfter: "Before and after photos",
|
|
35
|
+
notAlreadyMapped: "Not already reported here",
|
|
36
|
+
cooldown: "Not reported here recently",
|
|
37
|
+
daylight: "Light matches the time",
|
|
38
|
+
weather: "Weather matches",
|
|
39
|
+
reMeasure: "Status re-measured",
|
|
40
|
+
openhandsSite: "Site marker",
|
|
41
|
+
notElsewhere: "Photo taken at the place",
|
|
42
|
+
notMarkedGenerated: "Photo not AI-generated",
|
|
43
|
+
photoShape: "Photo shape",
|
|
44
|
+
atPoint: "At the point",
|
|
45
|
+
mappedGrid: "Mapped area",
|
|
46
|
+
jobStillOpen: "Job still open",
|
|
47
|
+
freshPhoto: "Fresh after photo",
|
|
48
|
+
barnaclesGone: "Cleanliness",
|
|
49
|
+
sameBoat: "Same boat in both photos"
|
|
50
|
+
};
|
|
51
|
+
const humanise = (s) => s
|
|
52
|
+
.replace(/^\$/, "")
|
|
53
|
+
.replace(/([a-z])([A-Z])/g, "$1 $2")
|
|
54
|
+
.replace(/[._-]+/g, " ")
|
|
55
|
+
.trim()
|
|
56
|
+
.replace(/^./, (c) => c.toUpperCase())
|
|
57
|
+
.replace(/(?<=\s)([A-Z])(?=[a-z])/g, (c) => c.toLowerCase());
|
|
58
|
+
/** `SD-101-PHOTO` → "Photo", `OH-102-LENGTH` → "Length": the words a code carries when no rubric does. */
|
|
59
|
+
export function codeLabel(code) {
|
|
60
|
+
const words = /^[A-Z0-9]+-\d+-([A-Z0-9-]+)$/.exec(code)?.[1];
|
|
61
|
+
return words ? humanise(words.toLowerCase()) : humanise(code);
|
|
62
|
+
}
|
|
63
|
+
function leaves(node, out = []) {
|
|
64
|
+
if (Array.isArray(node))
|
|
65
|
+
for (const n of node)
|
|
66
|
+
leaves(n, out);
|
|
67
|
+
else if (node && typeof node === "object") {
|
|
68
|
+
const o = node;
|
|
69
|
+
if (typeof o.field === "string")
|
|
70
|
+
out.push(o);
|
|
71
|
+
for (const [k, v] of Object.entries(o))
|
|
72
|
+
if (k !== "value")
|
|
73
|
+
leaves(v, out);
|
|
74
|
+
}
|
|
75
|
+
return out;
|
|
76
|
+
}
|
|
77
|
+
/** The facts a condition reads, each once, with the `.score` it must reach where it compares one. */
|
|
78
|
+
function factRefs(...nodes) {
|
|
79
|
+
const refs = new Map();
|
|
80
|
+
for (const leaf of nodes.flatMap((n) => leaves(n))) {
|
|
81
|
+
const m = /^(ext|ai)\.([A-Za-z0-9_]+)\.(valid|score)$/.exec(leaf.field);
|
|
82
|
+
if (!m)
|
|
83
|
+
continue;
|
|
84
|
+
const key = `${m[1]}.${m[2]}`;
|
|
85
|
+
const ref = refs.get(key) ?? { lane: m[1], name: m[2] };
|
|
86
|
+
if (m[3] === "score" && typeof leaf.value === "number" && /^>=?$/.test(String(leaf.op)))
|
|
87
|
+
ref.threshold = Math.max(ref.threshold ?? 0, leaf.value);
|
|
88
|
+
refs.set(key, ref);
|
|
89
|
+
}
|
|
90
|
+
return [...refs.values()];
|
|
91
|
+
}
|
|
92
|
+
function factLabel(ref, rubricReason) {
|
|
93
|
+
const known = FACT_LABELS[ref.name] ?? FACT_LABELS[ref.name.replace(/\d+$/, "")];
|
|
94
|
+
if (known)
|
|
95
|
+
return known;
|
|
96
|
+
if (ref.lane === "ai" && rubricReason)
|
|
97
|
+
return capped(rubricReason);
|
|
98
|
+
return humanise(ref.name);
|
|
99
|
+
}
|
|
100
|
+
function fieldLabel(when, rubricReason) {
|
|
101
|
+
const ops = leaves(when);
|
|
102
|
+
const op = String(ops[0]?.op ?? "");
|
|
103
|
+
const fields = [...new Set(ops.map((l) => String(l.field)))];
|
|
104
|
+
const what = fields.length === 1 ? humanise(fields[0] ?? "") : "Files";
|
|
105
|
+
if (op === "present")
|
|
106
|
+
return `${what} handed in`;
|
|
107
|
+
if (op === "mediaTypeIn")
|
|
108
|
+
return `${what === "Files" ? "File" : what} type`;
|
|
109
|
+
if (op === "maxSizeMB")
|
|
110
|
+
return `${what === "Files" ? "File" : what} size`;
|
|
111
|
+
return rubricReason ? capped(rubricReason) : what;
|
|
112
|
+
}
|
|
113
|
+
function viewOf(doc) {
|
|
114
|
+
const rubric = obj(obj(doc)?.rubric);
|
|
115
|
+
if (!rubric)
|
|
116
|
+
return null;
|
|
117
|
+
const unique = obj(rubric.unique);
|
|
118
|
+
const frequency = obj(rubric.frequency);
|
|
119
|
+
return {
|
|
120
|
+
gates: list(rubric.gates).flatMap((g) => (str(g.code) ? [{ code: g.code, reason: str(g.reason), when: obj(g.when) }] : [])),
|
|
121
|
+
criteria: list(obj(rubric.scoring)?.criteria).flatMap((c) => str(c.code) ? [{ code: c.code, reason: str(c.reason), appliesWhen: obj(c.appliesWhen), score: obj(c.score) }] : []),
|
|
122
|
+
...(unique ? { unique: { label: str(unique.label) } } : {}),
|
|
123
|
+
...(frequency ? { frequency: { label: str(frequency.label), max: typeof frequency.max === "number" ? frequency.max : undefined, per: str(frequency.per) } } : {})
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
/* ---- the mapper ---- */
|
|
127
|
+
const GATE_RESULT = { passed: "pass", failed: "fail", unevaluated: "error" };
|
|
128
|
+
const UNCHECKED = "could not be checked automatically";
|
|
129
|
+
const sentence = (s) => (/[.!?…]$/.test(s) ? s : `${s}.`);
|
|
130
|
+
const fmt = (n) => n.toLocaleString("en-US", { maximumFractionDigits: 2 });
|
|
131
|
+
/** The receipt's evaluation block and its address: a bare v3 credential, the engine's `?format=json` wrapper, or a legacy v2 payload. */
|
|
132
|
+
function evaluationOf(doc) {
|
|
133
|
+
const outer = obj(doc);
|
|
134
|
+
const claimset = obj(outer?.payload) ?? outer;
|
|
135
|
+
const subject = obj(claimset?.credentialSubject);
|
|
136
|
+
const evaluation = obj(subject?.evaluation) ?? obj(claimset?.ixo);
|
|
137
|
+
return evaluation ? { evaluation, decision: obj(subject?.decision), cid: str(outer?.cid) } : null;
|
|
138
|
+
}
|
|
139
|
+
/** Where the receipt's rubric is anchored, and the id its bytes must hash to; null when it names none. */
|
|
140
|
+
export function receiptRubric(receipt) {
|
|
141
|
+
const evaluation = evaluationOf(receipt)?.evaluation;
|
|
142
|
+
const protocolDid = str(evaluation?.protocolDid);
|
|
143
|
+
const rubricId = str(obj(evaluation?.rubric)?.id);
|
|
144
|
+
return protocolDid && rubricId ? { protocolDid, rubricId } : null;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* The `Why` a receipt supports, or null for anything that is not an engine receipt. `rubric` is the
|
|
148
|
+
* protocol's `#rub` document with the id its bytes hash to; its words are used only when that id is
|
|
149
|
+
* the receipt's `rubric.id`, so a protocol re-anchored since never lends the wrong labels.
|
|
150
|
+
*/
|
|
151
|
+
export function whyFromReceipt(receipt, rubric) {
|
|
152
|
+
const found = evaluationOf(receipt);
|
|
153
|
+
if (!found)
|
|
154
|
+
return null;
|
|
155
|
+
const { evaluation, cid } = found;
|
|
156
|
+
const verdict = str(evaluation.verdict);
|
|
157
|
+
if (!verdict)
|
|
158
|
+
return null;
|
|
159
|
+
const receiptCid = cid ? { receiptCid: cid } : {};
|
|
160
|
+
if (evaluation.status === "unusable") {
|
|
161
|
+
return { ...PENDING_WHY, summary: "Not decided yet: your claim could not be checked automatically. Nothing is needed from you.", ...receiptCid };
|
|
162
|
+
}
|
|
163
|
+
const resOutcome = obj(evaluation.res)?.outcome;
|
|
164
|
+
const outcome = verdict === "review" || resOutcome === 5 ? "review" : verdict === "approve" || verdict === "partial" ? "approved" : verdict === "reject" ? "rejected" : "pending";
|
|
165
|
+
const rubricId = str(obj(evaluation.rubric)?.id);
|
|
166
|
+
const view = rubric && rubricId && rubric.id.toLowerCase() === rubricId.toLowerCase() ? viewOf(rubric.doc) : null;
|
|
167
|
+
/* "held for a person" only when one is: a check that could not run on a rejected claim was not held. */
|
|
168
|
+
const held = outcome === "review" ? `${UNCHECKED}: held for a person` : UNCHECKED;
|
|
169
|
+
const reasons = [];
|
|
170
|
+
const seen = new Set();
|
|
171
|
+
const covered = new Set();
|
|
172
|
+
const push = (r) => {
|
|
173
|
+
const clean = { ...r, label: scrub(r.label, 200), detail: scrub(r.detail) };
|
|
174
|
+
/* Said once: the same answer, or a bare pass/fail on a check already said (a criterion restating its gate). */
|
|
175
|
+
const key = `${clean.result}|${clean.label}`;
|
|
176
|
+
const bare = clean.detail === "Passed" || clean.detail === "Did not pass";
|
|
177
|
+
if (seen.has(`${key}|${clean.detail}`) || (bare && seen.has(key)))
|
|
178
|
+
return;
|
|
179
|
+
seen.add(key).add(`${key}|${clean.detail}`);
|
|
180
|
+
reasons.push(clean);
|
|
181
|
+
};
|
|
182
|
+
const special = (code, result) => {
|
|
183
|
+
if (code.startsWith("unique:")) {
|
|
184
|
+
push({ code: code.slice(7), label: view?.unique?.label ?? "Photo not used before", result, detail: result === "fail" ? "This photo was already used in another claim" : "Passed" });
|
|
185
|
+
return true;
|
|
186
|
+
}
|
|
187
|
+
if (code.startsWith("frequency:")) {
|
|
188
|
+
const f = view?.frequency;
|
|
189
|
+
push({
|
|
190
|
+
code: code.slice(10),
|
|
191
|
+
label: f?.label ?? "Claim limit",
|
|
192
|
+
result,
|
|
193
|
+
detail: result !== "fail" ? "Passed" : f?.max !== undefined && f.per ? `Limit reached: at most ${fmt(f.max)} claims a ${f.per}` : "Limit reached",
|
|
194
|
+
...(f?.max !== undefined ? { threshold: f.max } : {})
|
|
195
|
+
});
|
|
196
|
+
return true;
|
|
197
|
+
}
|
|
198
|
+
return false;
|
|
199
|
+
};
|
|
200
|
+
const checks = list(evaluation.checks);
|
|
201
|
+
const checkOf = (ref) => checks.find((c) => c.kind === ref.lane && c.name === ref.name);
|
|
202
|
+
/** One gate or criterion read through the single fact it tests (the oracle's `factReason`, without the fact). */
|
|
203
|
+
const throughFact = (code, result, ref, reason, criterion = false) => {
|
|
204
|
+
covered.add(`${ref.lane}.${ref.name}`);
|
|
205
|
+
const label = factLabel(ref, reason);
|
|
206
|
+
/* An ext score the receipt records (basis points, as the rubric compares it): said as the oracle says it. */
|
|
207
|
+
const scored = ref.lane === "ext" && ref.threshold !== undefined && (result === "pass" || result === "fail") ? Number(checkOf(ref)?.verdict) : NaN;
|
|
208
|
+
if (Number.isFinite(scored) && scored >= 0 && scored <= 10_000) {
|
|
209
|
+
const value = Math.round(scored / 100);
|
|
210
|
+
const threshold = Math.round(ref.threshold / 100);
|
|
211
|
+
return push({ code, label, result, detail: `${label}: ${value}% (needs ${threshold}%)`, value, threshold, unit: "%" });
|
|
212
|
+
}
|
|
213
|
+
push({ code, label, result, detail: result === "error" ? `${label}: ${held}` : result === "review" ? `${label}: a person is checking this` : result === "pass" ? "Passed" : criterion ? "Did not pass" : (reason ?? "Did not pass") });
|
|
214
|
+
};
|
|
215
|
+
for (const gate of list(evaluation.gates)) {
|
|
216
|
+
const code = str(gate.code);
|
|
217
|
+
const result = GATE_RESULT[String(gate.outcome)];
|
|
218
|
+
if (!code || !result || special(code, result))
|
|
219
|
+
continue;
|
|
220
|
+
const spec = view?.gates.find((g) => g.code === code);
|
|
221
|
+
const refs = factRefs(spec?.when);
|
|
222
|
+
if (refs.length === 1)
|
|
223
|
+
throughFact(code, result, refs[0], spec?.reason);
|
|
224
|
+
else {
|
|
225
|
+
const label = spec ? fieldLabel(spec.when, spec.reason) : codeLabel(code);
|
|
226
|
+
push({ code, label, result, detail: result === "pass" ? "Passed" : result === "fail" ? (spec?.reason ?? "Did not pass") : `${label}: ${held}` });
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
for (const c of list(evaluation.criteria)) {
|
|
230
|
+
const code = str(c.code);
|
|
231
|
+
if (!code)
|
|
232
|
+
continue;
|
|
233
|
+
/* A criterion still pending on a claim already decided waits on nobody: not said. */
|
|
234
|
+
const result = c.pending === true ? (outcome === "review" ? "review" : null) : typeof c.scoreBps !== "number" ? null : c.scoreBps >= 5000 ? "pass" : "fail";
|
|
235
|
+
if (!result)
|
|
236
|
+
continue;
|
|
237
|
+
const spec = view?.criteria.find((s) => s.code === code);
|
|
238
|
+
const refs = factRefs(spec?.appliesWhen, spec?.score);
|
|
239
|
+
if (refs.length === 1 && result !== "review")
|
|
240
|
+
throughFact(code, result, refs[0], spec?.reason, true);
|
|
241
|
+
else {
|
|
242
|
+
const label = spec?.reason ? capped(spec.reason) : codeLabel(code);
|
|
243
|
+
push({ code, label, result, detail: result === "review" ? "A person is checking this" : result === "pass" ? "Passed" : "Did not pass" });
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
/* A check no gate or criterion above spoke for, said only when it failed or could not run. */
|
|
247
|
+
for (const check of checks) {
|
|
248
|
+
const name = str(check.name);
|
|
249
|
+
const kind = str(check.kind);
|
|
250
|
+
if (!name || !kind)
|
|
251
|
+
continue;
|
|
252
|
+
const errored = check.status === "error";
|
|
253
|
+
const failed = check.verdict === "fail" || check.verdict === "false" || (kind === "frequency" && check.verdict !== "ok" && check.verdict !== "pass");
|
|
254
|
+
if (!errored && !failed)
|
|
255
|
+
continue;
|
|
256
|
+
const result = errored ? "error" : "fail";
|
|
257
|
+
if (kind === "unique" || kind === "frequency") {
|
|
258
|
+
special(name.includes(":") ? name : `${kind}:${name}`, result);
|
|
259
|
+
continue;
|
|
260
|
+
}
|
|
261
|
+
if ((kind !== "ai" && kind !== "ext") || covered.has(`${kind}.${name}`))
|
|
262
|
+
continue;
|
|
263
|
+
const ref = { lane: kind, name };
|
|
264
|
+
const spec = [...(view?.gates.map((g) => ({ reason: g.reason, refs: factRefs(g.when) })) ?? []), ...(view?.criteria.map((s) => ({ reason: s.reason, refs: factRefs(s.appliesWhen, s.score) })) ?? [])].find((one) => one.refs.some((r) => r.lane === kind && r.name === name));
|
|
265
|
+
throughFact(`${kind}.${name}`, result, ref, spec?.reason);
|
|
266
|
+
}
|
|
267
|
+
if (outcome === "review" && !reasons.some((r) => r.result === "error" || r.result === "review")) {
|
|
268
|
+
push({ code: "review", label: "Checked by a person", result: "review", detail: "A person is checking your claim" });
|
|
269
|
+
}
|
|
270
|
+
return { outcome, summary: summaryOf(outcome, verdict, reasons), reasons, ...receiptCid };
|
|
271
|
+
}
|
|
272
|
+
function summaryOf(outcome, verdict, reasons) {
|
|
273
|
+
if (outcome === "approved")
|
|
274
|
+
return verdict === "partial" ? "Approved in part: some checks fell short." : "Approved: every check passed.";
|
|
275
|
+
if (outcome === "rejected") {
|
|
276
|
+
const first = reasons.find((r) => r.result === "fail");
|
|
277
|
+
return first ? `Rejected. ${first.detail === "Did not pass" ? `${first.label} did not pass.` : sentence(first.detail)}` : "Rejected.";
|
|
278
|
+
}
|
|
279
|
+
if (outcome === "pending")
|
|
280
|
+
return PENDING_WHY.summary;
|
|
281
|
+
const held = reasons.find((r) => r.result === "error" || r.result === "review");
|
|
282
|
+
return held ? `Held for a person to check. ${sentence(held.result === "review" ? held.label : held.detail)}` : "Held for a person to check.";
|
|
283
|
+
}
|
|
284
|
+
//# sourceMappingURL=whyReceipt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"whyReceipt.js","sourceRoot":"","sources":["../../../src/data/whyReceipt.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,4 +28,13 @@ export declare function exifSegment(bytes: Uint8Array): Uint8Array | null;
|
|
|
28
28
|
* it meets. One photograph, one answer about where it was taken.
|
|
29
29
|
*/
|
|
30
30
|
export declare function withExifSegment(jpeg: Uint8Array, segment: Uint8Array): Uint8Array;
|
|
31
|
+
/**
|
|
32
|
+
* The same segment, saying Orientation = 1.
|
|
33
|
+
*
|
|
34
|
+
* After a canvas redraw the pixels already stand the right way up (the decode
|
|
35
|
+
* applies the tag), so carrying the camera's 6 or 8 makes every viewer turn
|
|
36
|
+
* the picture a second time. Same length, one value changed: every other tag,
|
|
37
|
+
* DateTimeOriginal and GPS included, stays byte for byte.
|
|
38
|
+
*/
|
|
39
|
+
export declare function uprightSegment(segment: Uint8Array): Uint8Array;
|
|
31
40
|
//# sourceMappingURL=exifcarry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exifcarry.d.ts","sourceRoot":"","sources":["../../../src/geo/exifcarry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,wEAAwE;AACxE,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI,CAiBhE;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,GAAG,UAAU,CAqBjF"}
|
|
1
|
+
{"version":3,"file":"exifcarry.d.ts","sourceRoot":"","sources":["../../../src/geo/exifcarry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,wEAAwE;AACxE,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI,CAiBhE;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,GAAG,UAAU,CAqBjF;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,UAAU,CAqB9D"}
|
|
@@ -74,4 +74,38 @@ export function withExifSegment(jpeg, segment) {
|
|
|
74
74
|
out.set(jpeg.slice(at), 2 + segment.length + kept.length);
|
|
75
75
|
return out;
|
|
76
76
|
}
|
|
77
|
+
/**
|
|
78
|
+
* The same segment, saying Orientation = 1.
|
|
79
|
+
*
|
|
80
|
+
* After a canvas redraw the pixels already stand the right way up (the decode
|
|
81
|
+
* applies the tag), so carrying the camera's 6 or 8 makes every viewer turn
|
|
82
|
+
* the picture a second time. Same length, one value changed: every other tag,
|
|
83
|
+
* DateTimeOriginal and GPS included, stays byte for byte.
|
|
84
|
+
*/
|
|
85
|
+
export function uprightSegment(segment) {
|
|
86
|
+
const out = segment.slice();
|
|
87
|
+
const tiff = 10;
|
|
88
|
+
if (out.length < tiff + 8)
|
|
89
|
+
return out;
|
|
90
|
+
const view = new DataView(out.buffer, out.byteOffset, out.byteLength);
|
|
91
|
+
const order = view.getUint16(tiff, false);
|
|
92
|
+
if (order !== 0x4949 && order !== 0x4d4d)
|
|
93
|
+
return out;
|
|
94
|
+
const little = order === 0x4949;
|
|
95
|
+
const ifd0 = tiff + view.getUint32(tiff + 4, little);
|
|
96
|
+
if (ifd0 + 2 > out.length)
|
|
97
|
+
return out;
|
|
98
|
+
const count = view.getUint16(ifd0, little);
|
|
99
|
+
for (let index = 0; index < count; index += 1) {
|
|
100
|
+
const entry = ifd0 + 2 + index * 12;
|
|
101
|
+
if (entry + 12 > out.length)
|
|
102
|
+
break;
|
|
103
|
+
/* SHORT, count 1: the value sits inline in the entry's first two bytes. */
|
|
104
|
+
if (view.getUint16(entry, little) === 0x0112 && view.getUint16(entry + 2, little) === 3) {
|
|
105
|
+
view.setUint16(entry + 8, 1, little);
|
|
106
|
+
break;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return out;
|
|
110
|
+
}
|
|
77
111
|
//# sourceMappingURL=exifcarry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exifcarry.js","sourceRoot":"","sources":["../../../src/geo/exifcarry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"exifcarry.js","sourceRoot":"","sources":["../../../src/geo/exifcarry.ts"],"names":[],"mappings":"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"}
|
|
@@ -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/esm/geo/geohash.js
CHANGED
|
@@ -36,8 +36,8 @@ export function geohashEncode(point, precision = 6) {
|
|
|
36
36
|
}
|
|
37
37
|
return hash;
|
|
38
38
|
}
|
|
39
|
-
/**
|
|
40
|
-
|
|
39
|
+
/** A cell's edges, [south, north] and [west, east], or null when the string is not a geohash. */
|
|
40
|
+
function geohashBounds(hash) {
|
|
41
41
|
if (!/^[0-9b-hjkmnp-z]{1,12}$/.test(hash))
|
|
42
42
|
return null;
|
|
43
43
|
let lat = [-90, 90];
|
|
@@ -55,6 +55,55 @@ export function geohashCentre(hash) {
|
|
|
55
55
|
even = !even;
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
|
-
return { lat
|
|
58
|
+
return { lat, lon };
|
|
59
|
+
}
|
|
60
|
+
/** The centre of a cell, or null when the string is not a geohash. */
|
|
61
|
+
export function geohashCentre(hash) {
|
|
62
|
+
const bounds = geohashBounds(hash);
|
|
63
|
+
return bounds && { lat: (bounds.lat[0] + bounds.lat[1]) / 2, lon: (bounds.lon[0] + bounds.lon[1]) / 2 };
|
|
64
|
+
}
|
|
65
|
+
const EARTH_RADIUS_M = 6_371_008.8;
|
|
66
|
+
const DEGREES = 180 / Math.PI;
|
|
67
|
+
const WORLD = [...BASE32];
|
|
68
|
+
/**
|
|
69
|
+
* The cells to look in for everything within `reachM` of a point: the cell
|
|
70
|
+
* the point falls in and its eight neighbours, at the finest precision (up to
|
|
71
|
+
* `maxPrecision`) whose cells are wider and taller than the reach there. A
|
|
72
|
+
* point within reach can then never fall outside the block, however near an
|
|
73
|
+
* edge of its own cell the point sits. Any cell of `maxPrecision` characters
|
|
74
|
+
* or fewer that holds such a point starts with one of the returned cells.
|
|
75
|
+
*
|
|
76
|
+
* A reach over a pole needs every longitude: the 32 one-character cells.
|
|
77
|
+
*/
|
|
78
|
+
export function geohashesAround(point, reachM, maxPrecision = 6) {
|
|
79
|
+
const angle = Math.max(0, reachM) / EARTH_RADIUS_M;
|
|
80
|
+
const latReach = angle * DEGREES;
|
|
81
|
+
/* Every point within reach lies at or below this latitude, so it bounds the longitude a reach can span (from the haversine formula). */
|
|
82
|
+
const poleward = Math.abs(point.lat) + latReach;
|
|
83
|
+
if (poleward >= 90)
|
|
84
|
+
return WORLD;
|
|
85
|
+
const sine = Math.sin(angle / 2) / Math.cos(poleward / DEGREES);
|
|
86
|
+
if (sine >= 1)
|
|
87
|
+
return WORLD;
|
|
88
|
+
const lonReach = 2 * Math.asin(sine) * DEGREES;
|
|
89
|
+
for (let precision = Math.min(Math.max(1, Math.floor(maxPrecision)), 12); precision >= 1; precision--) {
|
|
90
|
+
const height = 180 / 2 ** Math.floor((5 * precision) / 2);
|
|
91
|
+
const width = 360 / 2 ** Math.ceil((5 * precision) / 2);
|
|
92
|
+
if (height <= latReach || width <= lonReach)
|
|
93
|
+
continue;
|
|
94
|
+
const centre = geohashCentre(geohashEncode(point, precision));
|
|
95
|
+
const cells = new Set();
|
|
96
|
+
for (const dLat of [-1, 0, 1]) {
|
|
97
|
+
const lat = centre.lat + dLat * height;
|
|
98
|
+
if (lat <= -90 || lat >= 90)
|
|
99
|
+
continue;
|
|
100
|
+
for (const dLon of [-1, 0, 1]) {
|
|
101
|
+
const lon = ((((centre.lon + dLon * width + 180) % 360) + 360) % 360) - 180;
|
|
102
|
+
cells.add(geohashEncode({ lat, lon }, precision));
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return [...cells];
|
|
106
|
+
}
|
|
107
|
+
return WORLD;
|
|
59
108
|
}
|
|
60
109
|
//# sourceMappingURL=geohash.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geohash.js","sourceRoot":"","sources":["../../../src/geo/geohash.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,MAAM,GAAG,kCAAkC,CAAC;AAElD,6EAA6E;AAC7E,MAAM,UAAU,aAAa,CAAC,KAAe,EAAE,SAAS,GAAG,CAAC;IAC1D,IAAI,GAAG,GAAqB,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACtC,IAAI,GAAG,GAAqB,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxC,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,IAAI,IAAI,GAAG,IAAI,CAAC;IAChB,OAAO,IAAI,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;QAC3C,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC;YACjB,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YACnB,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YACb,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QACjB,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,CAAC;QACb,IAAI,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;YAChB,IAAI,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC;YACnB,GAAG,GAAG,CAAC,CAAC;YACR,EAAE,GAAG,CAAC,CAAC;QACT,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"geohash.js","sourceRoot":"","sources":["../../../src/geo/geohash.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,MAAM,GAAG,kCAAkC,CAAC;AAElD,6EAA6E;AAC7E,MAAM,UAAU,aAAa,CAAC,KAAe,EAAE,SAAS,GAAG,CAAC;IAC1D,IAAI,GAAG,GAAqB,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACtC,IAAI,GAAG,GAAqB,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxC,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,IAAI,IAAI,GAAG,IAAI,CAAC;IAChB,OAAO,IAAI,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;QAC3C,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC;YACjB,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YACnB,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YACb,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QACjB,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,CAAC;QACb,IAAI,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;YAChB,IAAI,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC;YACnB,GAAG,GAAG,CAAC,CAAC;YACR,EAAE,GAAG,CAAC,CAAC;QACT,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,iGAAiG;AACjG,SAAS,aAAa,CAAC,IAAY;IACjC,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACvD,IAAI,GAAG,GAAqB,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACtC,IAAI,GAAG,GAAqB,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxC,IAAI,IAAI,GAAG,IAAI,CAAC;IAChB,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YAC/B,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACtC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC;gBAAE,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;;gBACpC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;YACpB,IAAI,GAAG,CAAC,IAAI,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACtB,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACnC,OAAO,MAAM,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;AAC1G,CAAC;AAED,MAAM,cAAc,GAAG,WAAW,CAAC;AACnC,MAAM,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC;AAC9B,MAAM,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;AAE1B;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAAC,KAAe,EAAE,MAAc,EAAE,YAAY,GAAG,CAAC;IAC/E,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,cAAc,CAAC;IACnD,MAAM,QAAQ,GAAG,KAAK,GAAG,OAAO,CAAC;IACjC,wIAAwI;IACxI,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;IAChD,IAAI,QAAQ,IAAI,EAAE;QAAE,OAAO,KAAK,CAAC;IACjC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC;IAChE,IAAI,IAAI,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5B,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IAE/C,KAAK,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,SAAS,IAAI,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC;QACtG,MAAM,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1D,MAAM,KAAK,GAAG,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QACxD,IAAI,MAAM,IAAI,QAAQ,IAAI,KAAK,IAAI,QAAQ;YAAE,SAAS;QACtD,MAAM,MAAM,GAAG,aAAa,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,CAAE,CAAC;QAC/D,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;QAChC,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,GAAG,MAAM,CAAC;YACvC,IAAI,GAAG,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE;gBAAE,SAAS;YACtC,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBAC9B,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,GAAG,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;gBAC5E,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;QACD,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -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"}
|