@ixo/openhands-sdk 0.4.1 → 0.6.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/README.md +2 -2
- package/dist/cjs/campaign/cleanup.js +1 -1
- package/dist/cjs/campaign/cleanup.js.map +1 -1
- package/dist/cjs/campaign/funding.js +3 -3
- package/dist/cjs/campaign/funding.js.map +1 -1
- package/dist/cjs/campaign/spot.d.ts.map +1 -1
- package/dist/cjs/campaign/spot.js +2 -1
- package/dist/cjs/campaign/spot.js.map +1 -1
- package/dist/cjs/chain/ask.d.ts +72 -2
- package/dist/cjs/chain/ask.d.ts.map +1 -1
- package/dist/cjs/chain/ask.js +68 -34
- package/dist/cjs/chain/ask.js.map +1 -1
- package/dist/cjs/chain/broadcast.d.ts.map +1 -1
- package/dist/cjs/chain/broadcast.js +6 -4
- package/dist/cjs/chain/broadcast.js.map +1 -1
- package/dist/cjs/chain/claimVerdict.d.ts +26 -0
- package/dist/cjs/chain/claimVerdict.d.ts.map +1 -0
- package/dist/cjs/chain/claimVerdict.js +33 -0
- package/dist/cjs/chain/claimVerdict.js.map +1 -0
- package/dist/cjs/chain/delegate.d.ts +54 -13
- package/dist/cjs/chain/delegate.d.ts.map +1 -1
- package/dist/cjs/chain/delegate.js +77 -28
- package/dist/cjs/chain/delegate.js.map +1 -1
- package/dist/cjs/chain/entityShape.d.ts +2 -0
- package/dist/cjs/chain/entityShape.d.ts.map +1 -1
- package/dist/cjs/chain/entityShape.js +8 -1
- package/dist/cjs/chain/entityShape.js.map +1 -1
- package/dist/cjs/chain/env.d.ts +1 -0
- package/dist/cjs/chain/env.d.ts.map +1 -1
- package/dist/cjs/chain/env.js +9 -1
- package/dist/cjs/chain/env.js.map +1 -1
- package/dist/cjs/chain/inviteMessages.d.ts +224 -0
- package/dist/cjs/chain/inviteMessages.d.ts.map +1 -0
- package/dist/cjs/chain/inviteMessages.js +347 -0
- package/dist/cjs/chain/inviteMessages.js.map +1 -0
- package/dist/cjs/chain/inviteProof.d.ts +121 -0
- package/dist/cjs/chain/inviteProof.d.ts.map +1 -0
- package/dist/cjs/chain/inviteProof.js +297 -0
- package/dist/cjs/chain/inviteProof.js.map +1 -0
- package/dist/cjs/chain/lane.d.ts +148 -0
- package/dist/cjs/chain/lane.d.ts.map +1 -0
- package/dist/cjs/chain/lane.js +220 -0
- package/dist/cjs/chain/lane.js.map +1 -0
- package/dist/cjs/chain/money.d.ts +24 -17
- package/dist/cjs/chain/money.d.ts.map +1 -1
- package/dist/cjs/chain/money.js +28 -29
- package/dist/cjs/chain/money.js.map +1 -1
- package/dist/cjs/chain/oracle.d.ts +2 -0
- package/dist/cjs/chain/oracle.d.ts.map +1 -1
- package/dist/cjs/chain/oracle.js +1 -1
- package/dist/cjs/chain/oracle.js.map +1 -1
- package/dist/cjs/chain/orgReviewBilling.d.ts +1 -1
- package/dist/cjs/chain/orgReviewBilling.d.ts.map +1 -1
- package/dist/cjs/chain/orgReviewBilling.js +16 -15
- package/dist/cjs/chain/orgReviewBilling.js.map +1 -1
- package/dist/cjs/chain/payoutTerms.d.ts.map +1 -1
- package/dist/cjs/chain/payoutTerms.js +1 -1
- package/dist/cjs/chain/payoutTerms.js.map +1 -1
- package/dist/cjs/chain/personReview.d.ts +218 -0
- package/dist/cjs/chain/personReview.d.ts.map +1 -0
- package/dist/cjs/chain/personReview.js +379 -0
- package/dist/cjs/chain/personReview.js.map +1 -0
- package/dist/cjs/chain/postFee.d.ts +11 -0
- package/dist/cjs/chain/postFee.d.ts.map +1 -0
- package/dist/cjs/chain/postFee.js +14 -0
- package/dist/cjs/chain/postFee.js.map +1 -0
- package/dist/cjs/chain/query.d.ts +55 -2
- package/dist/cjs/chain/query.d.ts.map +1 -1
- package/dist/cjs/chain/query.js +144 -8
- package/dist/cjs/chain/query.js.map +1 -1
- package/dist/cjs/chain/reviewBilling.d.ts +3 -27
- package/dist/cjs/chain/reviewBilling.d.ts.map +1 -1
- package/dist/cjs/chain/reviewBilling.js +5 -112
- package/dist/cjs/chain/reviewBilling.js.map +1 -1
- package/dist/cjs/chain/rewardDenom.d.ts +6 -0
- package/dist/cjs/chain/rewardDenom.d.ts.map +1 -0
- package/dist/cjs/chain/rewardDenom.js +9 -0
- package/dist/cjs/chain/rewardDenom.js.map +1 -0
- package/dist/cjs/chain/sponsor.d.ts +1 -1
- package/dist/cjs/chain/sponsor.d.ts.map +1 -1
- package/dist/cjs/chain/sponsor.js +8 -4
- package/dist/cjs/chain/sponsor.js.map +1 -1
- package/dist/cjs/chain.d.ts +1 -1
- package/dist/cjs/chain.d.ts.map +1 -1
- package/dist/cjs/chain.js +5 -4
- package/dist/cjs/chain.js.map +1 -1
- package/dist/cjs/config.d.ts +12 -3
- package/dist/cjs/config.d.ts.map +1 -1
- package/dist/cjs/config.js +5 -1
- package/dist/cjs/config.js.map +1 -1
- package/dist/cjs/data/agent.d.ts +2 -0
- package/dist/cjs/data/agent.d.ts.map +1 -1
- package/dist/cjs/data/agent.js +1 -0
- package/dist/cjs/data/agent.js.map +1 -1
- package/dist/cjs/data/board/assemble.d.ts +7 -2
- package/dist/cjs/data/board/assemble.d.ts.map +1 -1
- package/dist/cjs/data/board/assemble.js +76 -10
- package/dist/cjs/data/board/assemble.js.map +1 -1
- package/dist/cjs/data/board/facts.d.ts +10 -0
- package/dist/cjs/data/board/facts.d.ts.map +1 -1
- package/dist/cjs/data/board/facts.js +14 -1
- package/dist/cjs/data/board/facts.js.map +1 -1
- package/dist/cjs/data/board/read.d.ts +46 -3
- package/dist/cjs/data/board/read.d.ts.map +1 -1
- package/dist/cjs/data/board/read.js +145 -9
- package/dist/cjs/data/board/read.js.map +1 -1
- package/dist/cjs/data/board/types.d.ts +82 -5
- package/dist/cjs/data/board/types.d.ts.map +1 -1
- package/dist/cjs/data/board/types.js +5 -3
- package/dist/cjs/data/board/types.js.map +1 -1
- package/dist/cjs/data/checkers.d.ts +169 -0
- package/dist/cjs/data/checkers.d.ts.map +1 -0
- package/dist/cjs/data/checkers.js +354 -0
- package/dist/cjs/data/checkers.js.map +1 -0
- package/dist/cjs/data/checkersRead.d.ts +58 -0
- package/dist/cjs/data/checkersRead.d.ts.map +1 -0
- package/dist/cjs/data/checkersRead.js +263 -0
- package/dist/cjs/data/checkersRead.js.map +1 -0
- package/dist/cjs/data/denoms.d.ts.map +1 -1
- package/dist/cjs/data/denoms.js +1 -0
- package/dist/cjs/data/denoms.js.map +1 -1
- package/dist/cjs/data/docUrls.d.ts +3 -0
- package/dist/cjs/data/docUrls.d.ts.map +1 -1
- package/dist/cjs/data/docUrls.js +12 -1
- package/dist/cjs/data/docUrls.js.map +1 -1
- package/dist/cjs/data/docs.d.ts +3 -1
- package/dist/cjs/data/docs.d.ts.map +1 -1
- package/dist/cjs/data/docs.js +15 -2
- package/dist/cjs/data/docs.js.map +1 -1
- package/dist/cjs/data/engine.d.ts.map +1 -1
- package/dist/cjs/data/engine.js +12 -5
- package/dist/cjs/data/engine.js.map +1 -1
- package/dist/cjs/data/engineUrl.js +1 -1
- package/dist/cjs/data/engineUrl.js.map +1 -1
- package/dist/cjs/data/envelope.d.ts +18 -0
- package/dist/cjs/data/envelope.d.ts.map +1 -1
- package/dist/cjs/data/envelope.js +16 -1
- package/dist/cjs/data/envelope.js.map +1 -1
- package/dist/cjs/data/format.d.ts +32 -10
- package/dist/cjs/data/format.d.ts.map +1 -1
- package/dist/cjs/data/format.js +62 -19
- package/dist/cjs/data/format.js.map +1 -1
- package/dist/cjs/data/index.d.ts +2 -2
- package/dist/cjs/data/index.d.ts.map +1 -1
- package/dist/cjs/data/index.js +2 -1
- package/dist/cjs/data/index.js.map +1 -1
- package/dist/cjs/data/install.d.ts +46 -49
- package/dist/cjs/data/install.d.ts.map +1 -1
- package/dist/cjs/data/install.js +62 -61
- package/dist/cjs/data/install.js.map +1 -1
- package/dist/cjs/data/money.d.ts +36 -0
- package/dist/cjs/data/money.d.ts.map +1 -0
- package/dist/cjs/data/money.js +95 -0
- package/dist/cjs/data/money.js.map +1 -0
- package/dist/cjs/data/openness.d.ts +17 -1
- package/dist/cjs/data/openness.d.ts.map +1 -1
- package/dist/cjs/data/openness.js +16 -26
- package/dist/cjs/data/openness.js.map +1 -1
- package/dist/cjs/data/queue.d.ts +26 -0
- package/dist/cjs/data/queue.d.ts.map +1 -1
- package/dist/cjs/data/queue.js +57 -12
- package/dist/cjs/data/queue.js.map +1 -1
- package/dist/cjs/data/receipt.d.ts +19 -0
- package/dist/cjs/data/receipt.d.ts.map +1 -1
- package/dist/cjs/data/receipt.js +22 -5
- package/dist/cjs/data/receipt.js.map +1 -1
- package/dist/cjs/data/sponsors.d.ts +94 -0
- package/dist/cjs/data/sponsors.d.ts.map +1 -0
- package/dist/cjs/data/sponsors.js +147 -0
- package/dist/cjs/data/sponsors.js.map +1 -0
- package/dist/cjs/data/threads.d.ts +4 -0
- package/dist/cjs/data/threads.d.ts.map +1 -1
- package/dist/cjs/data/threads.js +5 -1
- package/dist/cjs/data/threads.js.map +1 -1
- package/dist/cjs/data/traceWords.js +8 -8
- package/dist/cjs/data/traceWords.js.map +1 -1
- package/dist/cjs/data/types.d.ts +6 -1
- package/dist/cjs/data/types.d.ts.map +1 -1
- package/dist/cjs/data/types.js.map +1 -1
- package/dist/cjs/data/whyReceipt.d.ts.map +1 -1
- package/dist/cjs/data/whyReceipt.js +10 -1
- package/dist/cjs/data/whyReceipt.js.map +1 -1
- package/dist/cjs/data/work.d.ts +5 -0
- package/dist/cjs/data/work.d.ts.map +1 -1
- package/dist/cjs/data/work.js +11 -5
- package/dist/cjs/data/work.js.map +1 -1
- package/dist/cjs/discovery.d.ts +64 -0
- package/dist/cjs/discovery.d.ts.map +1 -0
- package/dist/cjs/discovery.js +85 -0
- package/dist/cjs/discovery.js.map +1 -0
- package/dist/cjs/envRead.d.ts +1 -1
- package/dist/cjs/envRead.d.ts.map +1 -1
- package/dist/cjs/envRead.js +2 -1
- package/dist/cjs/envRead.js.map +1 -1
- package/dist/cjs/given.d.ts +14 -0
- package/dist/cjs/given.d.ts.map +1 -1
- package/dist/cjs/given.js +14 -2
- package/dist/cjs/given.js.map +1 -1
- package/dist/cjs/network.d.ts +3 -1
- package/dist/cjs/network.d.ts.map +1 -1
- package/dist/cjs/network.js +11 -3
- package/dist/cjs/network.js.map +1 -1
- package/dist/cjs/rubric/bridge.d.ts +8 -0
- package/dist/cjs/rubric/bridge.d.ts.map +1 -1
- package/dist/cjs/rubric/bridge.js +107 -8
- package/dist/cjs/rubric/bridge.js.map +1 -1
- package/dist/cjs/rubric/call.d.ts +35 -8
- package/dist/cjs/rubric/call.d.ts.map +1 -1
- package/dist/cjs/rubric/call.js +62 -20
- package/dist/cjs/rubric/call.js.map +1 -1
- package/dist/cjs/rubric/callChecks.d.ts +14 -0
- package/dist/cjs/rubric/callChecks.d.ts.map +1 -0
- package/dist/cjs/rubric/callChecks.js +43 -0
- package/dist/cjs/rubric/callChecks.js.map +1 -0
- package/dist/cjs/rubric/callLimits.d.ts +28 -0
- package/dist/cjs/rubric/callLimits.d.ts.map +1 -0
- package/dist/cjs/rubric/callLimits.js +36 -0
- package/dist/cjs/rubric/callLimits.js.map +1 -0
- package/dist/cjs/rubric/callTag.d.ts +5 -0
- package/dist/cjs/rubric/callTag.d.ts.map +1 -0
- package/dist/cjs/rubric/callTag.js +17 -0
- package/dist/cjs/rubric/callTag.js.map +1 -0
- package/dist/cjs/rubric/compose.d.ts.map +1 -1
- package/dist/cjs/rubric/compose.js +5 -3
- package/dist/cjs/rubric/compose.js.map +1 -1
- package/dist/cjs/rubric/draft.d.ts +9 -1
- package/dist/cjs/rubric/draft.d.ts.map +1 -1
- package/dist/cjs/rubric/draft.js +25 -3
- package/dist/cjs/rubric/draft.js.map +1 -1
- package/dist/cjs/rubric/feeLine.d.ts +26 -0
- package/dist/cjs/rubric/feeLine.d.ts.map +1 -0
- package/dist/cjs/rubric/feeLine.js +46 -0
- package/dist/cjs/rubric/feeLine.js.map +1 -0
- package/dist/cjs/rubric/gateMet.d.ts +17 -0
- package/dist/cjs/rubric/gateMet.d.ts.map +1 -1
- package/dist/cjs/rubric/gateMet.js +36 -3
- package/dist/cjs/rubric/gateMet.js.map +1 -1
- package/dist/cjs/rubric/leg.js +3 -3
- package/dist/cjs/rubric/leg.js.map +1 -1
- package/dist/cjs/rubric/marketPlan.d.ts +2 -0
- package/dist/cjs/rubric/marketPlan.d.ts.map +1 -1
- package/dist/cjs/rubric/marketPlan.js.map +1 -1
- package/dist/cjs/rubric/planAsk.d.ts +23 -0
- package/dist/cjs/rubric/planAsk.d.ts.map +1 -0
- package/dist/cjs/rubric/planAsk.js +24 -0
- package/dist/cjs/rubric/planAsk.js.map +1 -0
- package/dist/cjs/rubric/report.d.ts +208 -0
- package/dist/cjs/rubric/report.d.ts.map +1 -0
- package/dist/cjs/rubric/report.js +411 -0
- package/dist/cjs/rubric/report.js.map +1 -0
- package/dist/cjs/rubric/reportLine.d.ts +31 -0
- package/dist/cjs/rubric/reportLine.d.ts.map +1 -0
- package/dist/cjs/rubric/reportLine.js +45 -0
- package/dist/cjs/rubric/reportLine.js.map +1 -0
- package/dist/cjs/rubric/reportTemplate.d.ts +30 -0
- package/dist/cjs/rubric/reportTemplate.d.ts.map +1 -0
- package/dist/cjs/rubric/reportTemplate.js +78 -0
- package/dist/cjs/rubric/reportTemplate.js.map +1 -0
- package/dist/cjs/rubric/share.d.ts +46 -0
- package/dist/cjs/rubric/share.d.ts.map +1 -0
- package/dist/cjs/rubric/share.js +65 -0
- package/dist/cjs/rubric/share.js.map +1 -0
- package/dist/cjs/rubric/terms.d.ts +89 -25
- package/dist/cjs/rubric/terms.d.ts.map +1 -1
- package/dist/cjs/rubric/terms.js +91 -29
- package/dist/cjs/rubric/terms.js.map +1 -1
- package/dist/cjs/verification/profile.d.ts +28 -0
- package/dist/cjs/verification/profile.d.ts.map +1 -0
- package/dist/cjs/verification/profile.js +126 -0
- package/dist/cjs/verification/profile.js.map +1 -0
- package/dist/cjs/verification/schema.d.ts +54 -0
- package/dist/cjs/verification/schema.d.ts.map +1 -0
- package/dist/cjs/verification/schema.js +49 -0
- package/dist/cjs/verification/schema.js.map +1 -0
- package/dist/esm/campaign/cleanup.js +1 -1
- package/dist/esm/campaign/cleanup.js.map +1 -1
- package/dist/esm/campaign/funding.js +3 -3
- package/dist/esm/campaign/funding.js.map +1 -1
- package/dist/esm/campaign/spot.d.ts.map +1 -1
- package/dist/esm/campaign/spot.js +2 -1
- package/dist/esm/campaign/spot.js.map +1 -1
- package/dist/esm/chain/ask.d.ts +72 -2
- package/dist/esm/chain/ask.d.ts.map +1 -1
- package/dist/esm/chain/ask.js +69 -36
- package/dist/esm/chain/ask.js.map +1 -1
- package/dist/esm/chain/broadcast.d.ts.map +1 -1
- package/dist/esm/chain/broadcast.js +7 -5
- package/dist/esm/chain/broadcast.js.map +1 -1
- package/dist/esm/chain/claimVerdict.d.ts +26 -0
- package/dist/esm/chain/claimVerdict.d.ts.map +1 -0
- package/dist/esm/chain/claimVerdict.js +30 -0
- package/dist/esm/chain/claimVerdict.js.map +1 -0
- package/dist/esm/chain/delegate.d.ts +54 -13
- package/dist/esm/chain/delegate.d.ts.map +1 -1
- package/dist/esm/chain/delegate.js +69 -27
- package/dist/esm/chain/delegate.js.map +1 -1
- package/dist/esm/chain/entityShape.d.ts +2 -0
- package/dist/esm/chain/entityShape.d.ts.map +1 -1
- package/dist/esm/chain/entityShape.js +6 -0
- package/dist/esm/chain/entityShape.js.map +1 -1
- package/dist/esm/chain/env.d.ts +1 -0
- package/dist/esm/chain/env.d.ts.map +1 -1
- package/dist/esm/chain/env.js +7 -0
- package/dist/esm/chain/env.js.map +1 -1
- package/dist/esm/chain/inviteMessages.d.ts +224 -0
- package/dist/esm/chain/inviteMessages.d.ts.map +1 -0
- package/dist/esm/chain/inviteMessages.js +296 -0
- package/dist/esm/chain/inviteMessages.js.map +1 -0
- package/dist/esm/chain/inviteProof.d.ts +121 -0
- package/dist/esm/chain/inviteProof.d.ts.map +1 -0
- package/dist/esm/chain/inviteProof.js +278 -0
- package/dist/esm/chain/inviteProof.js.map +1 -0
- package/dist/esm/chain/lane.d.ts +148 -0
- package/dist/esm/chain/lane.d.ts.map +1 -0
- package/dist/esm/chain/lane.js +170 -0
- package/dist/esm/chain/lane.js.map +1 -0
- package/dist/esm/chain/money.d.ts +24 -17
- package/dist/esm/chain/money.d.ts.map +1 -1
- package/dist/esm/chain/money.js +34 -25
- package/dist/esm/chain/money.js.map +1 -1
- package/dist/esm/chain/oracle.d.ts +2 -0
- package/dist/esm/chain/oracle.d.ts.map +1 -1
- package/dist/esm/chain/oracle.js +1 -1
- package/dist/esm/chain/oracle.js.map +1 -1
- package/dist/esm/chain/orgReviewBilling.d.ts +1 -1
- package/dist/esm/chain/orgReviewBilling.d.ts.map +1 -1
- package/dist/esm/chain/orgReviewBilling.js +16 -15
- package/dist/esm/chain/orgReviewBilling.js.map +1 -1
- package/dist/esm/chain/payoutTerms.d.ts.map +1 -1
- package/dist/esm/chain/payoutTerms.js +1 -1
- package/dist/esm/chain/payoutTerms.js.map +1 -1
- package/dist/esm/chain/personReview.d.ts +218 -0
- package/dist/esm/chain/personReview.d.ts.map +1 -0
- package/dist/esm/chain/personReview.js +322 -0
- package/dist/esm/chain/personReview.js.map +1 -0
- package/dist/esm/chain/postFee.d.ts +11 -0
- package/dist/esm/chain/postFee.d.ts.map +1 -0
- package/dist/esm/chain/postFee.js +11 -0
- package/dist/esm/chain/postFee.js.map +1 -0
- package/dist/esm/chain/query.d.ts +55 -2
- package/dist/esm/chain/query.d.ts.map +1 -1
- package/dist/esm/chain/query.js +136 -8
- package/dist/esm/chain/query.js.map +1 -1
- package/dist/esm/chain/reviewBilling.d.ts +3 -27
- package/dist/esm/chain/reviewBilling.d.ts.map +1 -1
- package/dist/esm/chain/reviewBilling.js +5 -108
- package/dist/esm/chain/reviewBilling.js.map +1 -1
- package/dist/esm/chain/rewardDenom.d.ts +6 -0
- package/dist/esm/chain/rewardDenom.d.ts.map +1 -0
- package/dist/esm/chain/rewardDenom.js +5 -0
- package/dist/esm/chain/rewardDenom.js.map +1 -0
- package/dist/esm/chain/sponsor.d.ts +1 -1
- package/dist/esm/chain/sponsor.d.ts.map +1 -1
- package/dist/esm/chain/sponsor.js +8 -4
- package/dist/esm/chain/sponsor.js.map +1 -1
- package/dist/esm/chain.d.ts +1 -1
- package/dist/esm/chain.d.ts.map +1 -1
- package/dist/esm/chain.js +1 -1
- package/dist/esm/chain.js.map +1 -1
- package/dist/esm/config.d.ts +12 -3
- package/dist/esm/config.d.ts.map +1 -1
- package/dist/esm/config.js +6 -2
- package/dist/esm/config.js.map +1 -1
- package/dist/esm/data/agent.d.ts +2 -0
- package/dist/esm/data/agent.d.ts.map +1 -1
- package/dist/esm/data/agent.js +1 -0
- package/dist/esm/data/agent.js.map +1 -1
- package/dist/esm/data/board/assemble.d.ts +7 -2
- package/dist/esm/data/board/assemble.d.ts.map +1 -1
- package/dist/esm/data/board/assemble.js +73 -9
- package/dist/esm/data/board/assemble.js.map +1 -1
- package/dist/esm/data/board/facts.d.ts +10 -0
- package/dist/esm/data/board/facts.d.ts.map +1 -1
- package/dist/esm/data/board/facts.js +13 -1
- package/dist/esm/data/board/facts.js.map +1 -1
- package/dist/esm/data/board/read.d.ts +46 -3
- package/dist/esm/data/board/read.d.ts.map +1 -1
- package/dist/esm/data/board/read.js +143 -10
- package/dist/esm/data/board/read.js.map +1 -1
- package/dist/esm/data/board/types.d.ts +82 -5
- package/dist/esm/data/board/types.d.ts.map +1 -1
- package/dist/esm/data/board/types.js +5 -3
- package/dist/esm/data/board/types.js.map +1 -1
- package/dist/esm/data/checkers.d.ts +169 -0
- package/dist/esm/data/checkers.d.ts.map +1 -0
- package/dist/esm/data/checkers.js +304 -0
- package/dist/esm/data/checkers.js.map +1 -0
- package/dist/esm/data/checkersRead.d.ts +58 -0
- package/dist/esm/data/checkersRead.d.ts.map +1 -0
- package/dist/esm/data/checkersRead.js +252 -0
- package/dist/esm/data/checkersRead.js.map +1 -0
- package/dist/esm/data/denoms.d.ts.map +1 -1
- package/dist/esm/data/denoms.js +1 -0
- package/dist/esm/data/denoms.js.map +1 -1
- package/dist/esm/data/docUrls.d.ts +3 -0
- package/dist/esm/data/docUrls.d.ts.map +1 -1
- package/dist/esm/data/docUrls.js +9 -0
- package/dist/esm/data/docUrls.js.map +1 -1
- package/dist/esm/data/docs.d.ts +3 -1
- package/dist/esm/data/docs.d.ts.map +1 -1
- package/dist/esm/data/docs.js +15 -2
- package/dist/esm/data/docs.js.map +1 -1
- package/dist/esm/data/engine.d.ts.map +1 -1
- package/dist/esm/data/engine.js +12 -5
- package/dist/esm/data/engine.js.map +1 -1
- package/dist/esm/data/engineUrl.js +2 -2
- package/dist/esm/data/engineUrl.js.map +1 -1
- package/dist/esm/data/envelope.d.ts +18 -0
- package/dist/esm/data/envelope.d.ts.map +1 -1
- package/dist/esm/data/envelope.js +14 -0
- package/dist/esm/data/envelope.js.map +1 -1
- package/dist/esm/data/format.d.ts +32 -10
- package/dist/esm/data/format.d.ts.map +1 -1
- package/dist/esm/data/format.js +58 -18
- package/dist/esm/data/format.js.map +1 -1
- package/dist/esm/data/index.d.ts +2 -2
- package/dist/esm/data/index.d.ts.map +1 -1
- package/dist/esm/data/index.js +1 -1
- package/dist/esm/data/index.js.map +1 -1
- package/dist/esm/data/install.d.ts +46 -49
- package/dist/esm/data/install.d.ts.map +1 -1
- package/dist/esm/data/install.js +58 -60
- package/dist/esm/data/install.js.map +1 -1
- package/dist/esm/data/money.d.ts +36 -0
- package/dist/esm/data/money.d.ts.map +1 -0
- package/dist/esm/data/money.js +90 -0
- package/dist/esm/data/money.js.map +1 -0
- package/dist/esm/data/openness.d.ts +17 -1
- package/dist/esm/data/openness.d.ts.map +1 -1
- package/dist/esm/data/openness.js +16 -26
- package/dist/esm/data/openness.js.map +1 -1
- package/dist/esm/data/queue.d.ts +26 -0
- package/dist/esm/data/queue.d.ts.map +1 -1
- package/dist/esm/data/queue.js +50 -9
- package/dist/esm/data/queue.js.map +1 -1
- package/dist/esm/data/receipt.d.ts +19 -0
- package/dist/esm/data/receipt.d.ts.map +1 -1
- package/dist/esm/data/receipt.js +20 -4
- package/dist/esm/data/receipt.js.map +1 -1
- package/dist/esm/data/sponsors.d.ts +94 -0
- package/dist/esm/data/sponsors.d.ts.map +1 -0
- package/dist/esm/data/sponsors.js +137 -0
- package/dist/esm/data/sponsors.js.map +1 -0
- package/dist/esm/data/threads.d.ts +4 -0
- package/dist/esm/data/threads.d.ts.map +1 -1
- package/dist/esm/data/threads.js +6 -2
- package/dist/esm/data/threads.js.map +1 -1
- package/dist/esm/data/traceWords.js +8 -8
- package/dist/esm/data/traceWords.js.map +1 -1
- package/dist/esm/data/types.d.ts +6 -1
- package/dist/esm/data/types.d.ts.map +1 -1
- package/dist/esm/data/types.js.map +1 -1
- package/dist/esm/data/whyReceipt.d.ts.map +1 -1
- package/dist/esm/data/whyReceipt.js +10 -1
- package/dist/esm/data/whyReceipt.js.map +1 -1
- package/dist/esm/data/work.d.ts +5 -0
- package/dist/esm/data/work.d.ts.map +1 -1
- package/dist/esm/data/work.js +11 -5
- package/dist/esm/data/work.js.map +1 -1
- package/dist/esm/discovery.d.ts +64 -0
- package/dist/esm/discovery.d.ts.map +1 -0
- package/dist/esm/discovery.js +74 -0
- package/dist/esm/discovery.js.map +1 -0
- package/dist/esm/envRead.d.ts +1 -1
- package/dist/esm/envRead.d.ts.map +1 -1
- package/dist/esm/envRead.js +1 -1
- package/dist/esm/envRead.js.map +1 -1
- package/dist/esm/given.d.ts +14 -0
- package/dist/esm/given.d.ts.map +1 -1
- package/dist/esm/given.js +11 -1
- package/dist/esm/given.js.map +1 -1
- package/dist/esm/network.d.ts +3 -1
- package/dist/esm/network.d.ts.map +1 -1
- package/dist/esm/network.js +10 -3
- package/dist/esm/network.js.map +1 -1
- package/dist/esm/rubric/bridge.d.ts +8 -0
- package/dist/esm/rubric/bridge.d.ts.map +1 -1
- package/dist/esm/rubric/bridge.js +105 -7
- package/dist/esm/rubric/bridge.js.map +1 -1
- package/dist/esm/rubric/call.d.ts +35 -8
- package/dist/esm/rubric/call.d.ts.map +1 -1
- package/dist/esm/rubric/call.js +57 -16
- package/dist/esm/rubric/call.js.map +1 -1
- package/dist/esm/rubric/callChecks.d.ts +14 -0
- package/dist/esm/rubric/callChecks.d.ts.map +1 -0
- package/dist/esm/rubric/callChecks.js +36 -0
- package/dist/esm/rubric/callChecks.js.map +1 -0
- package/dist/esm/rubric/callLimits.d.ts +28 -0
- package/dist/esm/rubric/callLimits.d.ts.map +1 -0
- package/dist/esm/rubric/callLimits.js +33 -0
- package/dist/esm/rubric/callLimits.js.map +1 -0
- package/dist/esm/rubric/callTag.d.ts +5 -0
- package/dist/esm/rubric/callTag.d.ts.map +1 -0
- package/dist/esm/rubric/callTag.js +12 -0
- package/dist/esm/rubric/callTag.js.map +1 -0
- package/dist/esm/rubric/compose.d.ts.map +1 -1
- package/dist/esm/rubric/compose.js +5 -3
- package/dist/esm/rubric/compose.js.map +1 -1
- package/dist/esm/rubric/draft.d.ts +9 -1
- package/dist/esm/rubric/draft.d.ts.map +1 -1
- package/dist/esm/rubric/draft.js +24 -3
- package/dist/esm/rubric/draft.js.map +1 -1
- package/dist/esm/rubric/feeLine.d.ts +26 -0
- package/dist/esm/rubric/feeLine.d.ts.map +1 -0
- package/dist/esm/rubric/feeLine.js +42 -0
- package/dist/esm/rubric/feeLine.js.map +1 -0
- package/dist/esm/rubric/gateMet.d.ts +17 -0
- package/dist/esm/rubric/gateMet.d.ts.map +1 -1
- package/dist/esm/rubric/gateMet.js +34 -2
- package/dist/esm/rubric/gateMet.js.map +1 -1
- package/dist/esm/rubric/leg.js +4 -4
- package/dist/esm/rubric/leg.js.map +1 -1
- package/dist/esm/rubric/marketPlan.d.ts +2 -0
- package/dist/esm/rubric/marketPlan.d.ts.map +1 -1
- package/dist/esm/rubric/marketPlan.js.map +1 -1
- package/dist/esm/rubric/planAsk.d.ts +23 -0
- package/dist/esm/rubric/planAsk.d.ts.map +1 -0
- package/dist/esm/rubric/planAsk.js +20 -0
- package/dist/esm/rubric/planAsk.js.map +1 -0
- package/dist/esm/rubric/report.d.ts +208 -0
- package/dist/esm/rubric/report.d.ts.map +1 -0
- package/dist/esm/rubric/report.js +398 -0
- package/dist/esm/rubric/report.js.map +1 -0
- package/dist/esm/rubric/reportLine.d.ts +31 -0
- package/dist/esm/rubric/reportLine.d.ts.map +1 -0
- package/dist/esm/rubric/reportLine.js +40 -0
- package/dist/esm/rubric/reportLine.js.map +1 -0
- package/dist/esm/rubric/reportTemplate.d.ts +30 -0
- package/dist/esm/rubric/reportTemplate.d.ts.map +1 -0
- package/dist/esm/rubric/reportTemplate.js +74 -0
- package/dist/esm/rubric/reportTemplate.js.map +1 -0
- package/dist/esm/rubric/share.d.ts +46 -0
- package/dist/esm/rubric/share.d.ts.map +1 -0
- package/dist/esm/rubric/share.js +58 -0
- package/dist/esm/rubric/share.js.map +1 -0
- package/dist/esm/rubric/terms.d.ts +89 -25
- package/dist/esm/rubric/terms.d.ts.map +1 -1
- package/dist/esm/rubric/terms.js +83 -25
- package/dist/esm/rubric/terms.js.map +1 -1
- package/dist/esm/verification/profile.d.ts +28 -0
- package/dist/esm/verification/profile.d.ts.map +1 -0
- package/dist/esm/verification/profile.js +122 -0
- package/dist/esm/verification/profile.js.map +1 -0
- package/dist/esm/verification/schema.d.ts +54 -0
- package/dist/esm/verification/schema.d.ts.map +1 -0
- package/dist/esm/verification/schema.js +46 -0
- package/dist/esm/verification/schema.js.map +1 -0
- package/package.json +22 -2
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The review report template a specialist sees before handing in an Expert Review (2026-10-26, the Asky Checker
|
|
3
|
+
* round): the same six checks the review is held to (`REVIEW_CHECKS`, written as rules in call.ts `REVIEW_LINES`,
|
|
4
|
+
* the report line and the bridge's machine gates), as the sections of one report.
|
|
5
|
+
*
|
|
6
|
+
* One source for every place that shows it — the Experts app's submit page, the MCP's submit and read guidance, and
|
|
7
|
+
* the asks plugin's `report` skill — so no two can drift. Each section names the `openhands-report/1` field it fills
|
|
8
|
+
* (report.ts), so the written report and the structured one are the same report. Plain strings, no imports: it rides
|
|
9
|
+
* into the browser.
|
|
10
|
+
*/
|
|
11
|
+
/** The six checks, in plain words: what the checker looks at, and what the person giving the final OK weighs. */
|
|
12
|
+
export const REVIEW_CHECKS = [
|
|
13
|
+
"It covers the ask's scenarios (or steps)",
|
|
14
|
+
"Every finding has evidence: a screenshot, recording or trace",
|
|
15
|
+
"Every problem says how to reproduce it",
|
|
16
|
+
"Every problem has a severity: blocker, major or minor",
|
|
17
|
+
"Every recommendation says what to change",
|
|
18
|
+
"The limitations are stated"
|
|
19
|
+
];
|
|
20
|
+
/** What is refused outright; everything else goes to the ask's owner for the final OK. */
|
|
21
|
+
export const REVIEW_REFUSED = "A report is turned down by the checker only when it is clearly not one: no report, a report of something other than this ask, or no evidence at all. Anything else goes to the ask's owner, who gives the final OK before you are paid.";
|
|
22
|
+
export const REVIEW_REPORT_SECTIONS = [
|
|
23
|
+
{
|
|
24
|
+
title: "What was tested",
|
|
25
|
+
field: "summary",
|
|
26
|
+
items: [
|
|
27
|
+
{ say: "The ask and what you reviewed", field: "summary.product" },
|
|
28
|
+
{ say: "The version or build", field: "summary.build" },
|
|
29
|
+
{ say: "Where: environment, URL, device, build", field: "summary.environment" },
|
|
30
|
+
{ say: "The scenarios you covered", field: "summary.scope" },
|
|
31
|
+
{ say: "The date", field: "summary.date" },
|
|
32
|
+
{ say: "The outcome, in one sentence", field: "summary.outcome" }
|
|
33
|
+
]
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
title: "Steps",
|
|
37
|
+
field: "steps",
|
|
38
|
+
items: [{ say: "One per scenario or step: what you did, what you expected, what you observed", field: "what, expected, observed" }, { say: "Its result: passed, failed, blocked or not tested", field: "result: passed, failed, blocked, not_tested" }]
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
title: "Findings",
|
|
42
|
+
field: "findings",
|
|
43
|
+
items: [
|
|
44
|
+
{ say: "Each problem: what happened", field: "title, observed, expected" },
|
|
45
|
+
{ say: "Its evidence: a screenshot, recording or trace, attached and named", field: "evidence" },
|
|
46
|
+
{ say: "How to reproduce it (a blocker you cannot reproduce says what is missing)", field: "how_to_reproduce, cannot_reproduce" },
|
|
47
|
+
{ say: "Its severity, blocker, major or minor, and why", field: "severity, severity_why" },
|
|
48
|
+
{ say: "Its impact on the person using it", field: "impact" }
|
|
49
|
+
]
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
title: "Recommendations",
|
|
53
|
+
field: "recommendations",
|
|
54
|
+
items: [{ say: "Each: what to change", field: "text" }, { say: "Its priority: high, medium or low", field: "priority" }, { say: "How to tell it is done", field: "done_when" }]
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
title: "Limitations",
|
|
58
|
+
field: "limitations",
|
|
59
|
+
items: [{ say: "What you could not test, and why the result may not hold", field: "limitations" }]
|
|
60
|
+
}
|
|
61
|
+
];
|
|
62
|
+
/** The template as plain text: headings and bullets, for the MCP's guidance and the plugin's skill. */
|
|
63
|
+
export function reviewReportTemplate(options = {}) {
|
|
64
|
+
return [
|
|
65
|
+
"Review report",
|
|
66
|
+
"",
|
|
67
|
+
...REVIEW_REPORT_SECTIONS.flatMap((section) => [`## ${section.title}`, ...section.items.map((item) => `- ${item.say}${options.fields && item.field ? ` (${item.field})` : ""}`), ""]),
|
|
68
|
+
"What the checker looks at:",
|
|
69
|
+
...REVIEW_CHECKS.map((check, index) => `${index + 1}. ${check}`),
|
|
70
|
+
"",
|
|
71
|
+
REVIEW_REFUSED
|
|
72
|
+
].join("\n");
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=reportTemplate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reportTemplate.js","sourceRoot":"","sources":["../../../src/rubric/reportTemplate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The network's share on private calls (docs/verified-work-fee-split-plan.md):
|
|
3
|
+
* which terms carry it, and the leg that leaves the quoted amount with the
|
|
4
|
+
* person after the chain's split.
|
|
5
|
+
*
|
|
6
|
+
* Its own module, with no imports, rather than inside `terms.ts`: the posting
|
|
7
|
+
* path (`chain/ask.ts`) asks it, and a page loads that path lazily. Were these
|
|
8
|
+
* lines in `terms.ts`, that lazy use would keep them in the vocabulary chunk
|
|
9
|
+
* every page's first load carries. `terms.ts` re-exports them, so readers
|
|
10
|
+
* import them from the terms like everything else.
|
|
11
|
+
*/
|
|
12
|
+
/** A private ask: by invitation or by application, and every review (a review is a hire by invitation). */
|
|
13
|
+
export declare function isPrivateTerms(terms: unknown): boolean;
|
|
14
|
+
/**
|
|
15
|
+
* A private call: by invitation or by application, and every review. Its
|
|
16
|
+
* approval leg carries the network's share — the chain's own split
|
|
17
|
+
* (`isOraclePayment`), never a fee of ours. A call open to anyone, and every
|
|
18
|
+
* ask that is not a call, public or private, carries none
|
|
19
|
+
* (docs/verified-work-fee-split-plan.md, D1).
|
|
20
|
+
*/
|
|
21
|
+
export declare const sharedCall: (terms: unknown) => boolean;
|
|
22
|
+
/** The chain's split of a shared approval, in whole percent: to the network (`params.ixoAccount`) and to the relayer node. */
|
|
23
|
+
export interface FeeSplit {
|
|
24
|
+
network: number;
|
|
25
|
+
node: number;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* The leg whose chain split leaves at least `net` with the person: the
|
|
29
|
+
* smallest that covers it at the split's full rate.
|
|
30
|
+
*
|
|
31
|
+
* The poster quotes what the person receives and the leg is grossed up to it
|
|
32
|
+
* (D2), so the share is added on top and never taken off an agreed rate. The
|
|
33
|
+
* chain truncates both shares and pays the dust to the receiver, so with
|
|
34
|
+
* `A = ceil(Q / (1 − r))` the person gets `A − floor(A·n) − floor(A·m) ≥ A(1 − r) ≥ Q`.
|
|
35
|
+
* Whole base units in, whole base units out, in integers (a float quotient a
|
|
36
|
+
* hair under its true value would short the person a unit); a 0/0 split is the
|
|
37
|
+
* quote itself.
|
|
38
|
+
*/
|
|
39
|
+
export declare const grossFor: (net: number, split: FeeSplit) => number;
|
|
40
|
+
/**
|
|
41
|
+
* What the person receives from a shared leg: the chain's own arithmetic —
|
|
42
|
+
* each share truncated, the receiver paid the rest — so a page can say the
|
|
43
|
+
* exact amount that lands rather than the quote it is at least.
|
|
44
|
+
*/
|
|
45
|
+
export declare const netOf: (leg: number, split: FeeSplit) => number;
|
|
46
|
+
//# sourceMappingURL=share.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"share.d.ts","sourceRoot":"","sources":["../../../src/rubric/share.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,2GAA2G;AAC3G,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAGtD;AAED;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,GAAI,OAAO,OAAO,KAAG,OAAmG,CAAC;AAEhJ,8HAA8H;AAC9H,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,QAAQ,GAAI,KAAK,MAAM,EAAE,OAAO,QAAQ,KAAG,MAQvD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,KAAK,GAAI,KAAK,MAAM,EAAE,OAAO,QAAQ,KAAG,MAIpD,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The network's share on private calls (docs/verified-work-fee-split-plan.md):
|
|
3
|
+
* which terms carry it, and the leg that leaves the quoted amount with the
|
|
4
|
+
* person after the chain's split.
|
|
5
|
+
*
|
|
6
|
+
* Its own module, with no imports, rather than inside `terms.ts`: the posting
|
|
7
|
+
* path (`chain/ask.ts`) asks it, and a page loads that path lazily. Were these
|
|
8
|
+
* lines in `terms.ts`, that lazy use would keep them in the vocabulary chunk
|
|
9
|
+
* every page's first load carries. `terms.ts` re-exports them, so readers
|
|
10
|
+
* import them from the terms like everything else.
|
|
11
|
+
*/
|
|
12
|
+
/** A private ask: by invitation or by application, and every review (a review is a hire by invitation). */
|
|
13
|
+
export function isPrivateTerms(terms) {
|
|
14
|
+
const doc = terms;
|
|
15
|
+
return doc?.access === "invite" || doc?.access === "apply" || doc?.call?.kind === "review";
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* A private call: by invitation or by application, and every review. Its
|
|
19
|
+
* approval leg carries the network's share — the chain's own split
|
|
20
|
+
* (`isOraclePayment`), never a fee of ours. A call open to anyone, and every
|
|
21
|
+
* ask that is not a call, public or private, carries none
|
|
22
|
+
* (docs/verified-work-fee-split-plan.md, D1).
|
|
23
|
+
*/
|
|
24
|
+
export const sharedCall = (terms) => Boolean(terms?.call) && isPrivateTerms(terms);
|
|
25
|
+
/**
|
|
26
|
+
* The leg whose chain split leaves at least `net` with the person: the
|
|
27
|
+
* smallest that covers it at the split's full rate.
|
|
28
|
+
*
|
|
29
|
+
* The poster quotes what the person receives and the leg is grossed up to it
|
|
30
|
+
* (D2), so the share is added on top and never taken off an agreed rate. The
|
|
31
|
+
* chain truncates both shares and pays the dust to the receiver, so with
|
|
32
|
+
* `A = ceil(Q / (1 − r))` the person gets `A − floor(A·n) − floor(A·m) ≥ A(1 − r) ≥ Q`.
|
|
33
|
+
* Whole base units in, whole base units out, in integers (a float quotient a
|
|
34
|
+
* hair under its true value would short the person a unit); a 0/0 split is the
|
|
35
|
+
* quote itself.
|
|
36
|
+
*/
|
|
37
|
+
export const grossFor = (net, split) => {
|
|
38
|
+
/* The rate in parts per million, rounded up: the chain's own percentages are decimals, and rounding them down could short the person. */
|
|
39
|
+
const PPM = 1000000n;
|
|
40
|
+
const rate = BigInt(Math.ceil((split.network + split.node) * 10_000));
|
|
41
|
+
if (rate <= 0n)
|
|
42
|
+
return net;
|
|
43
|
+
if (rate >= PPM)
|
|
44
|
+
throw new Error("the split leaves nothing for the person");
|
|
45
|
+
const keep = PPM - rate;
|
|
46
|
+
return Number((BigInt(net) * PPM + keep - 1n) / keep);
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* What the person receives from a shared leg: the chain's own arithmetic —
|
|
50
|
+
* each share truncated, the receiver paid the rest — so a page can say the
|
|
51
|
+
* exact amount that lands rather than the quote it is at least.
|
|
52
|
+
*/
|
|
53
|
+
export const netOf = (leg, split) => {
|
|
54
|
+
/* Each share in parts per million of the leg, truncated as the chain truncates it. */
|
|
55
|
+
const cut = (percent) => (BigInt(leg) * BigInt(Math.round(percent * 10_000))) / 1000000n;
|
|
56
|
+
return Number(BigInt(leg) - cut(split.network) - cut(split.node));
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=share.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"share.js","sourceRoot":"","sources":["../../../src/rubric/share.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,2GAA2G;AAC3G,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,MAAM,GAAG,GAAG,KAAkF,CAAC;IAC/F,OAAO,GAAG,EAAE,MAAM,KAAK,QAAQ,IAAI,GAAG,EAAE,MAAM,KAAK,OAAO,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,KAAK,QAAQ,CAAC;AAC7F,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAc,EAAW,EAAE,CAAC,OAAO,CAAE,KAA+C,EAAE,IAAI,CAAC,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC;AAQhJ;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,KAAe,EAAU,EAAE;IAC/D,yIAAyI;IACzI,MAAM,GAAG,GAAG,QAAU,CAAC;IACvB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IACtE,IAAI,IAAI,IAAI,EAAE;QAAE,OAAO,GAAG,CAAC;IAC3B,IAAI,IAAI,IAAI,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC5E,MAAM,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;IACxB,OAAO,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;AACxD,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,GAAW,EAAE,KAAe,EAAU,EAAE;IAC5D,sFAAsF;IACtF,MAAM,GAAG,GAAG,CAAC,OAAe,EAAU,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,QAAU,CAAC;IAC3G,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AACpE,CAAC,CAAC"}
|
|
@@ -8,7 +8,10 @@
|
|
|
8
8
|
* lived in ./verdict.ts until the oracle migration retired the in-repo checker;
|
|
9
9
|
* the receipt shape it wrote survives in ./receipt.ts for the readers.
|
|
10
10
|
*/
|
|
11
|
+
import { REPORT_CHECK_ID, type ReportRequirement } from "./report.ts";
|
|
11
12
|
import type { GeoBox } from "../geo/box.ts";
|
|
13
|
+
import { CALL_LIMITS } from "./callLimits.ts";
|
|
14
|
+
import type { FeeSplit } from "./share.ts";
|
|
12
15
|
export type SkillId = "url-check" | "read" | "write" | "answer";
|
|
13
16
|
export interface SkillMatch {
|
|
14
17
|
skill: SkillId;
|
|
@@ -334,6 +337,18 @@ export interface AskTerms {
|
|
|
334
337
|
* alone. Frozen at posting, like the campaign it sits beside.
|
|
335
338
|
*/
|
|
336
339
|
plan?: string;
|
|
340
|
+
/**
|
|
341
|
+
* Who may answer (docs/verified-work-private-calls-thinking.md, §5).
|
|
342
|
+
*
|
|
343
|
+
* Absent, anyone the gate admits — every ask before this field existed.
|
|
344
|
+
* `apply`: listed, but an answer needs the poster's yes first (an
|
|
345
|
+
* application the poster decides). `invite`: not listed, and only the
|
|
346
|
+
* addresses the poster invited — by link, by address or by their page —
|
|
347
|
+
* are admitted. The gate holds the list; the chain holds this word, frozen
|
|
348
|
+
* with the money like the campaign tag, so a call cannot quietly become
|
|
349
|
+
* public or private after the first entry.
|
|
350
|
+
*/
|
|
351
|
+
access?: AskAccess;
|
|
337
352
|
/**
|
|
338
353
|
* This ask is a site: cleared by several people, a patch at a time.
|
|
339
354
|
*
|
|
@@ -451,6 +466,17 @@ export interface AskTerms {
|
|
|
451
466
|
};
|
|
452
467
|
criteria: Criterion[];
|
|
453
468
|
judge: JudgeSpec;
|
|
469
|
+
/**
|
|
470
|
+
* The person who gives the final OK (an ixo1 address; the poster or anyone they name). The AI checks
|
|
471
|
+
* first and refuses what fails the basics; whatever passes is held at the oracle until this person
|
|
472
|
+
* answers the `attest` lines and "Approve this answer?" (the bridge's ReviewTasks). Absent: the AI decides.
|
|
473
|
+
*/
|
|
474
|
+
approver?: string;
|
|
475
|
+
/**
|
|
476
|
+
* The answer is a review report (`openhands-report/1`, rubric/report.ts), structured or attached as a PDF; `sections`
|
|
477
|
+
* are the poster's extra required headings. The bridge adds the shape check; `withReport` adds the AI's line.
|
|
478
|
+
*/
|
|
479
|
+
report?: ReportRequirement;
|
|
454
480
|
/**
|
|
455
481
|
* How the ask came: `"mcp"` when our MCP posted it for an agent
|
|
456
482
|
* (docs/verified-work-marketplace-volume-plan.md, D1). The board says so
|
|
@@ -509,17 +535,53 @@ export type CallBlock = {
|
|
|
509
535
|
};
|
|
510
536
|
export declare const CALL_LEGS: readonly ["entries", "prize", "runnersUp"];
|
|
511
537
|
export type CallLeg = (typeof CALL_LEGS)[number];
|
|
538
|
+
/** Who may answer an ask, when not everyone: by the poster's yes, or by the poster's list. */
|
|
539
|
+
export declare const ASK_ACCESS: readonly ["apply", "invite"];
|
|
540
|
+
export type AskAccess = (typeof ASK_ACCESS)[number];
|
|
541
|
+
/**
|
|
542
|
+
* What kind of call it is. Absent, a competition: the entries, the pick and
|
|
543
|
+
* the runners-up. `hire`: the entries alone — every entry that passes the
|
|
544
|
+
* lines is paid, up to the quota, and nobody is picked. "Hire five people at
|
|
545
|
+
* 20 USDC each for a review that passes the checks" is a hire.
|
|
546
|
+
*/
|
|
547
|
+
export type CallMode = "hire";
|
|
548
|
+
/**
|
|
549
|
+
* What kind of call this is, beyond its legs. `review`: a review of an app or
|
|
550
|
+
* an agent by specialists (the Expert Reviews world, docs/verified-work-expert-
|
|
551
|
+
* reviews-plan.md): always a hire, never open to anyone, its entries handed in
|
|
552
|
+
* as review reports. Absent: an open call as every call before it was.
|
|
553
|
+
*/
|
|
554
|
+
export type CallKind = "review";
|
|
555
|
+
/** What a review call reviews: the thing, its version, and where a specialist finds it. Private access goes in the invitation, never here. */
|
|
556
|
+
export interface CallSubject {
|
|
557
|
+
name: string;
|
|
558
|
+
version?: string;
|
|
559
|
+
where?: string;
|
|
560
|
+
}
|
|
561
|
+
/** The facilitator a pro ask was posted through, as the terms carry it: its slug in the registry, its name, its node on this network. */
|
|
562
|
+
export interface CallSponsor {
|
|
563
|
+
slug: string;
|
|
564
|
+
name: string;
|
|
565
|
+
node: string;
|
|
566
|
+
}
|
|
512
567
|
export interface CallTerms {
|
|
513
568
|
/** The call's own name, and its page's: `/opencall/<slug>`. */
|
|
514
569
|
slug: string;
|
|
515
570
|
leg: CallLeg;
|
|
571
|
+
/** `hire`: the entries leg is the whole call. Absent: a competition with a pick. */
|
|
572
|
+
mode?: CallMode;
|
|
573
|
+
/** `review`: specialists review the subject on the scenarios and hand in reports. */
|
|
574
|
+
kind?: CallKind;
|
|
575
|
+
subject?: CallSubject;
|
|
576
|
+
/** The scenarios a review tries, in order: one line each. */
|
|
577
|
+
scenarios?: string[];
|
|
516
578
|
title: string;
|
|
517
579
|
lede: string;
|
|
518
580
|
/** Who posts it, as they want to be named. */
|
|
519
581
|
poster: string;
|
|
520
582
|
/** What each judged line is worth towards the score, in criteria order. */
|
|
521
583
|
points: number[];
|
|
522
|
-
/** Whole PAY, for the page; the chain is the truth. */
|
|
584
|
+
/** Whole PAY, for the page; the chain is the truth. What each person receives: on a private call the leg is more (`share`). */
|
|
523
585
|
money: {
|
|
524
586
|
prize: number;
|
|
525
587
|
runnersN: number;
|
|
@@ -527,6 +589,22 @@ export interface CallTerms {
|
|
|
527
589
|
entryEach: number;
|
|
528
590
|
entryUpTo: number;
|
|
529
591
|
};
|
|
592
|
+
/**
|
|
593
|
+
* A private call only (`sharedCall`): the chain's split of its approval leg
|
|
594
|
+
* when it was posted, in percent — to the network and to the relayer node.
|
|
595
|
+
* The leg was grossed up so each person keeps `money` (`grossFor`); with
|
|
596
|
+
* this a reader can say the leg, the share and what lands without a chain
|
|
597
|
+
* read. Absent on every other call, and on every call posted before it.
|
|
598
|
+
*/
|
|
599
|
+
share?: FeeSplit;
|
|
600
|
+
/**
|
|
601
|
+
* A pro ask only: the facilitator the poster chose (code name `sponsor`),
|
|
602
|
+
* written into the terms so every
|
|
603
|
+
* reader names it without a registry read. `node` is the entity DID the
|
|
604
|
+
* ask's deed names as its relayer node, which earns the chain's node share.
|
|
605
|
+
* Absent on open calls, and on every call posted before it.
|
|
606
|
+
*/
|
|
607
|
+
sponsor?: CallSponsor;
|
|
530
608
|
/** ISO dates: entries close, the shortlist shows, the poster picks. */
|
|
531
609
|
closes: string;
|
|
532
610
|
drop: string;
|
|
@@ -539,30 +617,11 @@ export interface CallTerms {
|
|
|
539
617
|
};
|
|
540
618
|
blocks: CallBlock[];
|
|
541
619
|
}
|
|
542
|
-
|
|
620
|
+
export { grossFor, isPrivateTerms, netOf, sharedCall, type FeeSplit } from "./share.ts";
|
|
621
|
+
/** A call's slug: what its page and its tag are named by. A sponsor's registry slug has the same shape. */
|
|
543
622
|
export declare const CALL_SLUG: RegExp;
|
|
544
|
-
/** The limits a call is read with, and written to. */
|
|
545
|
-
export
|
|
546
|
-
readonly title: 160;
|
|
547
|
-
readonly lede: 500;
|
|
548
|
-
readonly poster: 80;
|
|
549
|
-
readonly blocks: 8;
|
|
550
|
-
readonly paragraphs: 8;
|
|
551
|
-
readonly paragraph: 1500;
|
|
552
|
-
readonly url: 2048;
|
|
553
|
-
readonly alt: 300;
|
|
554
|
-
readonly caption: 300;
|
|
555
|
-
readonly items: 6;
|
|
556
|
-
readonly steps: 8;
|
|
557
|
-
readonly stepTitle: 120;
|
|
558
|
-
readonly stepText: 300;
|
|
559
|
-
readonly source: 2000;
|
|
560
|
-
readonly csv: 4000;
|
|
561
|
-
readonly note: 300;
|
|
562
|
-
readonly name: 120;
|
|
563
|
-
readonly start: 1500;
|
|
564
|
-
readonly lines: 5;
|
|
565
|
-
};
|
|
623
|
+
/** The limits a call is read with, and written to: their own module (`callLimits.ts`), so a page that checks a call's words loads them without this vocabulary. */
|
|
624
|
+
export { CALL_LIMITS };
|
|
566
625
|
export declare const DEFAULT_CONFIDENCE = 0.7;
|
|
567
626
|
/**
|
|
568
627
|
* A distance as a person says it: metres up to a kilometre, kilometres past
|
|
@@ -579,7 +638,8 @@ export declare const askSentence: (terms: AskTerms) => string;
|
|
|
579
638
|
* An ask whose judge cannot rule on all of it is a trap: the chain allows
|
|
580
639
|
* exactly one verdict per claim, so there is no "the oracle does its half and
|
|
581
640
|
* the poster does the rest". Any `attest` criterion therefore forces the
|
|
582
|
-
* poster to hold the pen
|
|
641
|
+
* poster to hold the pen — unless the terms name an `approver`, whose answers
|
|
642
|
+
* the oracle folds into its one verdict.
|
|
583
643
|
*/
|
|
584
644
|
export declare const requiresPoster: (terms: AskTerms) => boolean;
|
|
585
645
|
/**
|
|
@@ -603,6 +663,10 @@ export declare function normalizeTerms(doc: DoneMeans | AskTerms): AskTerms;
|
|
|
603
663
|
export declare function callOf(raw: unknown): {
|
|
604
664
|
call: CallTerms;
|
|
605
665
|
} | null;
|
|
666
|
+
export { REPORT_CHECK_ID };
|
|
667
|
+
export declare function withReport<T extends AskTerms>(terms: T, sections: readonly string[], rules?: {
|
|
668
|
+
v: 2;
|
|
669
|
+
}): T;
|
|
606
670
|
export declare function parseTerms(value: unknown): AskTerms | null;
|
|
607
671
|
/**
|
|
608
672
|
* What an ask is asking for, read off its own sentence. The deliverable is
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terms.d.ts","sourceRoot":"","sources":["../../../src/rubric/terms.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"terms.d.ts","sourceRoot":"","sources":["../../../src/rubric/terms.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/rubric/terms.js
CHANGED
|
@@ -8,7 +8,11 @@
|
|
|
8
8
|
* lived in ./verdict.ts until the oracle migration retired the in-repo checker;
|
|
9
9
|
* the receipt shape it wrote survives in ./receipt.ts for the readers.
|
|
10
10
|
*/
|
|
11
|
+
/* Type only — erased at compile, so the geo package never reaches a browser
|
|
12
|
+
while a geo gate still describes itself in the terms a poster agreed to. */
|
|
13
|
+
import { REPORT_CHECK_ID, reportCheckText, requiredSections } from "./report.js";
|
|
11
14
|
import { surveyOptionsProblem } from "./survey.js";
|
|
15
|
+
import { CALL_LIMITS } from "./callLimits.js";
|
|
12
16
|
/** Evidence no text-only worker can produce: no camera, no hands, no address. */
|
|
13
17
|
const PHYSICAL = /\b(photo|photograph|picture|snap|image of|screenshot|screen shot|selfie|video|film|scan|handwritten|sticky note|poster|in person|visit|go to|walk|drive|deliver|pick up|drop off|knock|doorstep|on ?site|meet|queue|shelf|receipt)\b/i;
|
|
14
18
|
const URL_PATTERN = /\bhttps?:\/\/[^\s"'<>)]+|\b(?:[a-z0-9-]+\.)+(?:com|org|net|io|dev|app|earth|xyz|co|ai|me|so|sh|eu|uk|de)(?:\/[^\s"'<>)]*)?/i;
|
|
@@ -245,30 +249,16 @@ export const DELIVERABLE_TYPES = ["url", "text", "photo", "photo-pair", "mess-re
|
|
|
245
249
|
*/
|
|
246
250
|
export const CLAIM_KINDS = ["patch", "site"];
|
|
247
251
|
export const CALL_LEGS = ["entries", "prize", "runnersUp"];
|
|
248
|
-
/**
|
|
252
|
+
/** Who may answer an ask, when not everyone: by the poster's yes, or by the poster's list. */
|
|
253
|
+
export const ASK_ACCESS = ["apply", "invite"];
|
|
254
|
+
/* Who is private, which calls carry the network's share, and the leg that covers it: beside the terms, in a module of their own (share.ts says why). */
|
|
255
|
+
export { grossFor, isPrivateTerms, netOf, sharedCall } from "./share.js";
|
|
256
|
+
/** A call's slug: what its page and its tag are named by. A sponsor's registry slug has the same shape. */
|
|
249
257
|
export const CALL_SLUG = /^[a-z][a-z0-9-]{2,39}$/;
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
poster: 80,
|
|
255
|
-
blocks: 8,
|
|
256
|
-
paragraphs: 8,
|
|
257
|
-
paragraph: 1500,
|
|
258
|
-
url: 2048,
|
|
259
|
-
alt: 300,
|
|
260
|
-
caption: 300,
|
|
261
|
-
items: 6,
|
|
262
|
-
steps: 8,
|
|
263
|
-
stepTitle: 120,
|
|
264
|
-
stepText: 300,
|
|
265
|
-
source: 2000,
|
|
266
|
-
csv: 4000,
|
|
267
|
-
note: 300,
|
|
268
|
-
name: 120,
|
|
269
|
-
start: 1500,
|
|
270
|
-
lines: 5
|
|
271
|
-
};
|
|
258
|
+
/* An entity DID, as `chain/entityShape.ts` `isEntityDid` reads one; repeated so the vocabulary chunk loads no chain module. */
|
|
259
|
+
const ENTITY_DID = /^did:ixo:entity:[0-9a-f]{32}$/;
|
|
260
|
+
/** The limits a call is read with, and written to: their own module (`callLimits.ts`), so a page that checks a call's words loads them without this vocabulary. */
|
|
261
|
+
export { CALL_LIMITS };
|
|
272
262
|
export const DEFAULT_CONFIDENCE = 0.7;
|
|
273
263
|
/**
|
|
274
264
|
* A distance as a person says it: metres up to a kilometre, kilometres past
|
|
@@ -292,7 +282,8 @@ export const askSentence = (terms) => terms.criteria.map(criterionText).join("
|
|
|
292
282
|
* An ask whose judge cannot rule on all of it is a trap: the chain allows
|
|
293
283
|
* exactly one verdict per claim, so there is no "the oracle does its half and
|
|
294
284
|
* the poster does the rest". Any `attest` criterion therefore forces the
|
|
295
|
-
* poster to hold the pen
|
|
285
|
+
* poster to hold the pen — unless the terms name an `approver`, whose answers
|
|
286
|
+
* the oracle folds into its one verdict.
|
|
296
287
|
*/
|
|
297
288
|
export const requiresPoster = (terms) => terms.criteria.some((criterion) => criterion.kind === "attest");
|
|
298
289
|
/**
|
|
@@ -301,7 +292,7 @@ export const requiresPoster = (terms) => terms.criteria.some((criterion) => crit
|
|
|
301
292
|
* honesty the keyless worker already practises when a skill needs a brain.
|
|
302
293
|
*/
|
|
303
294
|
export function servableByOracle(terms, options) {
|
|
304
|
-
if (requiresPoster(terms))
|
|
295
|
+
if (requiresPoster(terms) && !terms.approver)
|
|
305
296
|
return { ok: false, reason: "has a requirement only a person can review" };
|
|
306
297
|
if (!options.canJudge && terms.criteria.some((criterion) => criterion.kind === "judge"))
|
|
307
298
|
return { ok: false, reason: "has requirements for AI review, but no model is configured" };
|
|
@@ -575,6 +566,14 @@ export function callOf(raw) {
|
|
|
575
566
|
return null;
|
|
576
567
|
if (!amount(money.prize) || !whole(money.runnersN, 0, 5) || !amount(money.runnersEach) || !amount(money.entryEach) || !whole(money.entryUpTo, 1, 10_000))
|
|
577
568
|
return null;
|
|
569
|
+
/* The split a private call was posted under: two percentages that left the person something, or the call does not read. */
|
|
570
|
+
const share = call.share;
|
|
571
|
+
if (share !== undefined && (!share || typeof share !== "object" || !nonNegative(share.network) || !nonNegative(share.node) || share.network + share.node >= 100))
|
|
572
|
+
return null;
|
|
573
|
+
/* The facilitator a pro ask names: a registry slug, a name, an entity DID, each whole or the call does not read. */
|
|
574
|
+
const sponsor = call.sponsor;
|
|
575
|
+
if (sponsor !== undefined && (!sponsor || typeof sponsor !== "object" || typeof sponsor.slug !== "string" || !CALL_SLUG.test(sponsor.slug) || !line(sponsor.name, L.sponsorName) || typeof sponsor.node !== "string" || !ENTITY_DID.test(sponsor.node)))
|
|
576
|
+
return null;
|
|
578
577
|
if (!date(call.closes) || !date(call.drop) || !date(call.pick))
|
|
579
578
|
return null;
|
|
580
579
|
let legs;
|
|
@@ -597,15 +596,42 @@ export function callOf(raw) {
|
|
|
597
596
|
const blocks = call.blocks.map(blockOf);
|
|
598
597
|
if (blocks.some((block) => block === null))
|
|
599
598
|
return null;
|
|
599
|
+
/* A review: the kind, what it reviews, and the scenarios, each read whole or the call does not read. A review is a hire by definition. */
|
|
600
|
+
let review = null;
|
|
601
|
+
if (call.kind !== undefined) {
|
|
602
|
+
if (call.kind !== "review" || call.mode !== "hire")
|
|
603
|
+
return null;
|
|
604
|
+
const subject = call.subject;
|
|
605
|
+
if (subject !== undefined) {
|
|
606
|
+
if (!subject || typeof subject !== "object" || !line(subject.name, L.subjectName))
|
|
607
|
+
return null;
|
|
608
|
+
if (subject.version !== undefined && !line(subject.version, L.version))
|
|
609
|
+
return null;
|
|
610
|
+
if (subject.where !== undefined && !line(subject.where, L.where))
|
|
611
|
+
return null;
|
|
612
|
+
}
|
|
613
|
+
if (call.scenarios !== undefined && (!Array.isArray(call.scenarios) || call.scenarios.length === 0 || call.scenarios.length > L.scenarios || !call.scenarios.every((one) => line(one, L.scenario))))
|
|
614
|
+
return null;
|
|
615
|
+
review = {
|
|
616
|
+
kind: "review",
|
|
617
|
+
...(subject ? { subject: { name: subject.name, ...(subject.version !== undefined ? { version: subject.version } : {}), ...(subject.where !== undefined ? { where: subject.where } : {}) } } : {}),
|
|
618
|
+
...(call.scenarios !== undefined ? { scenarios: [...call.scenarios] } : {})
|
|
619
|
+
};
|
|
620
|
+
}
|
|
600
621
|
return {
|
|
601
622
|
call: {
|
|
602
623
|
slug: call.slug,
|
|
603
624
|
leg: call.leg,
|
|
625
|
+
/* The one literal: anything else is a competition, as every call before it was. */
|
|
626
|
+
...(call.mode === "hire" ? { mode: "hire" } : {}),
|
|
627
|
+
...(review ?? {}),
|
|
604
628
|
title: call.title,
|
|
605
629
|
lede: call.lede,
|
|
606
630
|
poster: call.poster,
|
|
607
631
|
points: [...call.points],
|
|
608
632
|
money: { prize: money.prize, runnersN: money.runnersN, runnersEach: money.runnersEach, entryEach: money.entryEach, entryUpTo: money.entryUpTo },
|
|
633
|
+
...(share ? { share: { network: share.network, node: share.node } } : {}),
|
|
634
|
+
...(sponsor ? { sponsor: { slug: sponsor.slug, name: sponsor.name, node: sponsor.node } } : {}),
|
|
609
635
|
closes: call.closes,
|
|
610
636
|
drop: call.drop,
|
|
611
637
|
pick: call.pick,
|
|
@@ -633,6 +659,34 @@ function deliverableOf(deliverable) {
|
|
|
633
659
|
const { choices, ...rest } = deliverable;
|
|
634
660
|
return { ...rest, prompt: trim(deliverable.prompt, PROMPT_MAX), ...(choices !== undefined && surveyOptionsProblem(choices) === null ? { choices: choices.map((one) => one.trim()) } : {}) };
|
|
635
661
|
}
|
|
662
|
+
/** A report requirement as kept: named here or dropped here, like every other field. */
|
|
663
|
+
function reportOf(raw) {
|
|
664
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw))
|
|
665
|
+
return null;
|
|
666
|
+
const sections = requiredSections(raw.sections);
|
|
667
|
+
/* The one literal: the Expert Review rules (reportLine.ts `v`). Anything else is the rules every report ask had. */
|
|
668
|
+
return sections ? { report: { sections, ...(raw.v === 2 ? { v: 2 } : {}) } } : null;
|
|
669
|
+
}
|
|
670
|
+
export { REPORT_CHECK_ID };
|
|
671
|
+
/**
|
|
672
|
+
* Terms whose answer is a review report: the requirement, and the line the AI pre-checks it on (a structured report or
|
|
673
|
+
* a PDF, with the poster's sections). The structure itself the bridge checks by machine. Anything subjective stays
|
|
674
|
+
* with the person who gives the final OK.
|
|
675
|
+
*/
|
|
676
|
+
/** A web-page check's own gates. A report that names a site is a review, not a check that the page is up, so they go. */
|
|
677
|
+
const PAGE_CHECK_GATES = new Set(["mentions-url", "reports-status", "re-measure"]);
|
|
678
|
+
export function withReport(terms, sections, rules) {
|
|
679
|
+
const requirement = { sections: requiredSections([...sections]) ?? [], ...(rules ? { v: rules.v } : {}) };
|
|
680
|
+
const { via, ...rest } = terms;
|
|
681
|
+
const kept = terms.criteria.filter((criterion) => criterion.id !== REPORT_CHECK_ID && !(criterion.kind === "measure" && PAGE_CHECK_GATES.has(criterion.gate?.id ?? "")));
|
|
682
|
+
return {
|
|
683
|
+
...rest,
|
|
684
|
+
...(terms.deliverable.type === "url" ? { deliverable: { ...terms.deliverable, type: "file" } } : {}),
|
|
685
|
+
criteria: [...kept, { id: REPORT_CHECK_ID, kind: "judge", text: reportCheckText(requirement) }],
|
|
686
|
+
report: requirement,
|
|
687
|
+
...(via ? { via } : {})
|
|
688
|
+
};
|
|
689
|
+
}
|
|
636
690
|
export function parseTerms(value) {
|
|
637
691
|
const doc = value;
|
|
638
692
|
if (!doc || typeof doc !== "object")
|
|
@@ -677,6 +731,8 @@ export function parseTerms(value) {
|
|
|
677
731
|
...(typeof doc.series === "string" && /^[a-z0-9-]{1,64}$/.test(doc.series) ? { series: doc.series } : {}),
|
|
678
732
|
/* Named here or dropped here. Only a content address: the plan is a document, never a label. */
|
|
679
733
|
...(typeof doc.plan === "string" && /^baf[a-z2-7]{20,}$/.test(doc.plan) ? { plan: doc.plan } : {}),
|
|
734
|
+
/* Named here or dropped here: only the two words the gate knows. An unknown word is "anyone", never a door nobody defined. */
|
|
735
|
+
...(doc.access === "apply" || doc.access === "invite" ? { access: doc.access } : {}),
|
|
680
736
|
...(chainOf(doc.chain) ?? {}),
|
|
681
737
|
...(callOf(doc.call) ?? {}),
|
|
682
738
|
...(doc.followUp && Number(doc.followUp.days) > 0 && doc.followUp.pay
|
|
@@ -702,6 +758,8 @@ export function parseTerms(value) {
|
|
|
702
758
|
lost here, exactly as `campaign` and `followUp` were before it. */
|
|
703
759
|
...(doc.site === true ? { site: true } : {}),
|
|
704
760
|
...(disposalOf(doc.disposal) ?? {}),
|
|
761
|
+
...(typeof doc.approver === "string" && /^ixo1[a-z0-9]{38,64}$/.test(doc.approver) ? { approver: doc.approver } : {}),
|
|
762
|
+
...(reportOf(doc.report) ?? {}),
|
|
705
763
|
criteria: doc.criteria.slice(0, CRITERIA_MAX).map(readCriterion),
|
|
706
764
|
judge,
|
|
707
765
|
/* Named here or dropped here. The one literal: anything else is nobody's mark. */
|