@ixo/openhands-sdk 0.4.0 → 0.5.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.d.ts.map +1 -1
- package/dist/cjs/campaign/funding.js +1 -1
- package/dist/cjs/campaign/funding.js.map +1 -1
- package/dist/cjs/campaign/pool.js +3 -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/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/campaign/spots.js +4 -4
- 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 +17 -0
- package/dist/cjs/chain/ask.d.ts.map +1 -1
- package/dist/cjs/chain/ask.js +27 -10
- 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 +46 -3
- package/dist/cjs/chain/delegate.d.ts.map +1 -1
- package/dist/cjs/chain/delegate.js +68 -6
- package/dist/cjs/chain/delegate.js.map +1 -1
- package/dist/cjs/chain/entityShape.d.ts +6 -0
- package/dist/cjs/chain/entityShape.d.ts.map +1 -1
- package/dist/cjs/chain/entityShape.js +24 -4
- 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 +183 -0
- package/dist/cjs/chain/inviteMessages.d.ts.map +1 -0
- package/dist/cjs/chain/inviteMessages.js +289 -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 +12 -4
- package/dist/cjs/chain/money.d.ts.map +1 -1
- package/dist/cjs/chain/money.js +20 -7
- 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.js +1 -1
- 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.d.ts +2 -2
- package/dist/cjs/chain.d.ts.map +1 -1
- package/dist/cjs/chain.js +7 -2
- package/dist/cjs/chain.js.map +1 -1
- package/dist/cjs/config.d.ts +11 -2
- 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 +2 -0
- package/dist/cjs/data/board/facts.d.ts.map +1 -1
- package/dist/cjs/data/board/facts.js +2 -1
- package/dist/cjs/data/board/facts.js.map +1 -1
- package/dist/cjs/data/board/read.d.ts +27 -3
- package/dist/cjs/data/board/read.d.ts.map +1 -1
- package/dist/cjs/data/board/read.js +122 -8
- package/dist/cjs/data/board/read.js.map +1 -1
- package/dist/cjs/data/board/types.d.ts +77 -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 +2 -0
- package/dist/cjs/data/docUrls.d.ts.map +1 -1
- package/dist/cjs/data/docUrls.js +4 -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 +18 -0
- package/dist/cjs/data/format.d.ts.map +1 -1
- package/dist/cjs/data/format.js +32 -2
- 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 +63 -33
- package/dist/cjs/data/install.d.ts.map +1 -1
- package/dist/cjs/data/install.js +88 -45
- package/dist/cjs/data/install.js.map +1 -1
- package/dist/cjs/data/openness.d.ts +14 -1
- package/dist/cjs/data/openness.d.ts.map +1 -1
- package/dist/cjs/data/openness.js +14 -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/threads.d.ts +2 -0
- package/dist/cjs/data/threads.d.ts.map +1 -1
- package/dist/cjs/data/threads.js +3 -1
- package/dist/cjs/data/threads.js.map +1 -1
- package/dist/cjs/data/traceWords.js +1 -1
- 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/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 +24 -2
- package/dist/cjs/rubric/draft.js.map +1 -1
- 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 +384 -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 +76 -2
- package/dist/cjs/rubric/terms.d.ts.map +1 -1
- package/dist/cjs/rubric/terms.js +84 -4
- 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.d.ts.map +1 -1
- package/dist/esm/campaign/funding.js +2 -2
- package/dist/esm/campaign/funding.js.map +1 -1
- package/dist/esm/campaign/pool.js +3 -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/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/campaign/spots.js +4 -4
- 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 +17 -0
- package/dist/esm/chain/ask.d.ts.map +1 -1
- package/dist/esm/chain/ask.js +29 -12
- 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 +46 -3
- package/dist/esm/chain/delegate.d.ts.map +1 -1
- package/dist/esm/chain/delegate.js +60 -5
- package/dist/esm/chain/delegate.js.map +1 -1
- package/dist/esm/chain/entityShape.d.ts +6 -0
- package/dist/esm/chain/entityShape.d.ts.map +1 -1
- package/dist/esm/chain/entityShape.js +20 -3
- 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 +183 -0
- package/dist/esm/chain/inviteMessages.d.ts.map +1 -0
- package/dist/esm/chain/inviteMessages.js +246 -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 +12 -4
- package/dist/esm/chain/money.d.ts.map +1 -1
- package/dist/esm/chain/money.js +19 -7
- 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.js +1 -1
- 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.d.ts +2 -2
- package/dist/esm/chain.d.ts.map +1 -1
- package/dist/esm/chain.js +2 -2
- package/dist/esm/chain.js.map +1 -1
- package/dist/esm/config.d.ts +11 -2
- 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 +2 -0
- package/dist/esm/data/board/facts.d.ts.map +1 -1
- package/dist/esm/data/board/facts.js +2 -1
- package/dist/esm/data/board/facts.js.map +1 -1
- package/dist/esm/data/board/read.d.ts +27 -3
- package/dist/esm/data/board/read.d.ts.map +1 -1
- package/dist/esm/data/board/read.js +123 -10
- package/dist/esm/data/board/read.js.map +1 -1
- package/dist/esm/data/board/types.d.ts +77 -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 +2 -0
- package/dist/esm/data/docUrls.d.ts.map +1 -1
- package/dist/esm/data/docUrls.js +2 -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 +18 -0
- package/dist/esm/data/format.d.ts.map +1 -1
- package/dist/esm/data/format.js +28 -1
- 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 +63 -33
- package/dist/esm/data/install.d.ts.map +1 -1
- package/dist/esm/data/install.js +81 -44
- package/dist/esm/data/install.js.map +1 -1
- package/dist/esm/data/openness.d.ts +14 -1
- package/dist/esm/data/openness.d.ts.map +1 -1
- package/dist/esm/data/openness.js +14 -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/threads.d.ts +2 -0
- package/dist/esm/data/threads.d.ts.map +1 -1
- package/dist/esm/data/threads.js +3 -1
- package/dist/esm/data/threads.js.map +1 -1
- package/dist/esm/data/traceWords.js +1 -1
- 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/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 +23 -2
- package/dist/esm/rubric/draft.js.map +1 -1
- 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 +371 -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 +76 -2
- package/dist/esm/rubric/terms.d.ts.map +1 -1
- package/dist/esm/rubric/terms.js +78 -3
- 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,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.KEYWORD = exports.COLLECTION = exports.CARD_VERSION = exports.STUB = void 0;
|
|
4
|
+
exports.keywordsOf = keywordsOf;
|
|
5
|
+
exports.shareTags = shareTags;
|
|
6
|
+
exports.slugOf = slugOf;
|
|
7
|
+
exports.stubOf = stubOf;
|
|
8
|
+
exports.shareOrgs = shareOrgs;
|
|
9
|
+
exports.httpsOrigin = httpsOrigin;
|
|
10
|
+
exports.xml = xml;
|
|
11
|
+
exports.jsonLd = jsonLd;
|
|
12
|
+
exports.STUB = /^[a-f0-9]{12}$/;
|
|
13
|
+
exports.CARD_VERSION = /^[a-f0-9]{16}$/;
|
|
14
|
+
exports.COLLECTION = /^\d{1,12}$/;
|
|
15
|
+
exports.KEYWORD = /^[a-z0-9][a-z0-9-]{0,47}$/;
|
|
16
|
+
function keywordsOf(values) {
|
|
17
|
+
return [...new Set(values.map((value) => value.trim().toLowerCase().replace(/^#/, "")).filter((value) => exports.KEYWORD.test(value)))].sort().slice(0, 24);
|
|
18
|
+
}
|
|
19
|
+
const STOP_WORDS = new Set(["the", "and", "for", "this", "that", "with", "from", "your", "what", "into", "are", "you", "our", "has", "have", "which", "where", "who", "how", "its", "was", "were", "been", "any", "all", "can", "will", "about", "one"]);
|
|
20
|
+
/* An open call's or a plan's campaign is an internal handle (`call-qa-connect-1020`, `plan-…-f166`), not a topic. */
|
|
21
|
+
const INTERNAL_CAMPAIGN = /^(call|plan)-/;
|
|
22
|
+
/**
|
|
23
|
+
* An ask's tags, two ways. `tags` is the search index (`?tag=`/`?topic=`): every whole title word, its kind of
|
|
24
|
+
* work and its campaign. `topics` is what a reader sees (the `keywords` of a page, its feed categories): at most
|
|
25
|
+
* three, the campaign when it is a real one, then the title's longest whole words. Never a word cut short.
|
|
26
|
+
*/
|
|
27
|
+
function shareTags(kind, campaign, title) {
|
|
28
|
+
const words = title.normalize("NFKD").replace(/[\u0300-\u036f]/g, "").toLowerCase().split(/[^a-z0-9]+/).filter((word) => word.length > 2 && !STOP_WORDS.has(word));
|
|
29
|
+
const longest = [...new Set(words)].sort((a, b) => b.length - a.length);
|
|
30
|
+
const topics = [campaign && !INTERNAL_CAMPAIGN.test(campaign) ? campaign : "", ...longest, kind].filter((value) => exports.KEYWORD.test(value));
|
|
31
|
+
return { tags: keywordsOf([kind, campaign ?? "", ...words]), topics: [...new Set(topics)].slice(0, 3) };
|
|
32
|
+
}
|
|
33
|
+
function slugOf(title) {
|
|
34
|
+
return title.normalize("NFKD").replace(/[\u0300-\u036f]/g, "").toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "").slice(0, 56).replace(/-$/, "") || "openhands";
|
|
35
|
+
}
|
|
36
|
+
function stubOf(segment) {
|
|
37
|
+
const stub = segment.split("-").at(-1) ?? "";
|
|
38
|
+
return exports.STUB.test(stub) ? stub : null;
|
|
39
|
+
}
|
|
40
|
+
/** Hostnames come only from operator configuration, never request headers or submitted URLs. */
|
|
41
|
+
function shareOrgs(raw) {
|
|
42
|
+
if (!raw)
|
|
43
|
+
return [];
|
|
44
|
+
const parsed = JSON.parse(raw);
|
|
45
|
+
if (!Array.isArray(parsed))
|
|
46
|
+
throw new Error("SHARE_ORGS must be an array");
|
|
47
|
+
const keys = new Set();
|
|
48
|
+
const hosts = new Set();
|
|
49
|
+
const owners = new Set();
|
|
50
|
+
return parsed.map((item) => {
|
|
51
|
+
if (!item || !exports.KEYWORD.test(item.key) || typeof item.name !== "string" || !item.name.trim() || item.name.length > 80 || typeof item.owner !== "string" || !item.owner)
|
|
52
|
+
throw new Error("Invalid sharing organisation");
|
|
53
|
+
const host = item.host?.toLowerCase();
|
|
54
|
+
if (host && (!/^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z]{2,63}$/.test(host) || host.endsWith(".localhost")))
|
|
55
|
+
throw new Error("Invalid sharing hostname");
|
|
56
|
+
if (keys.has(item.key) || owners.has(item.owner) || (host && hosts.has(host)))
|
|
57
|
+
throw new Error("Duplicate sharing organisation");
|
|
58
|
+
keys.add(item.key);
|
|
59
|
+
owners.add(item.owner);
|
|
60
|
+
if (host)
|
|
61
|
+
hosts.add(host);
|
|
62
|
+
return { key: item.key, name: item.name.trim(), owner: item.owner, ...(host ? { host } : {}) };
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
function httpsOrigin(value) {
|
|
66
|
+
const url = new URL(value);
|
|
67
|
+
if (url.protocol !== "https:" || url.username || url.password || url.port || url.pathname !== "/" || url.search || url.hash)
|
|
68
|
+
throw new Error("Sharing requires a public HTTPS origin");
|
|
69
|
+
return url.origin;
|
|
70
|
+
}
|
|
71
|
+
function xml(value) {
|
|
72
|
+
// eslint-disable-next-line no-control-regex -- XML 1.0 forbids these; one in a chain title would break every subscriber's feed.
|
|
73
|
+
return value.replace(/[\u0000-\u0008\u000b\u000c\u000e-\u001f\ufffe\uffff]/g, "").replace(/[&<>"']/g, (char) => ({ "&": "&", "<": "<", ">": ">", '"': """, "'": "'" })[char]);
|
|
74
|
+
}
|
|
75
|
+
function jsonLd(spec) {
|
|
76
|
+
return {
|
|
77
|
+
"@context": "https://schema.org", "@type": "CreativeWork", "@id": spec.canonicalUrl,
|
|
78
|
+
identifier: spec.pageId, name: spec.title, description: spec.description, url: spec.canonicalUrl,
|
|
79
|
+
image: spec.imageUrl, keywords: spec.keywords, inLanguage: spec.locale.replace("_", "-"),
|
|
80
|
+
dateModified: spec.updatedAt, creativeWorkStatus: spec.status, isAccessibleForFree: true,
|
|
81
|
+
publisher: { "@type": "Organization", name: spec.brand.name },
|
|
82
|
+
...(spec.location ? { spatialCoverage: { "@type": "Place", name: spec.location.name, geo: { "@type": "GeoCoordinates", latitude: spec.location.latitude, longitude: spec.location.longitude } } } : {})
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=discovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../src/discovery.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/envRead.d.ts
CHANGED
|
@@ -11,5 +11,5 @@
|
|
|
11
11
|
* that is not Next, a Worker without nodejs_compat); Next provides `process`
|
|
12
12
|
* in client and edge bundles.
|
|
13
13
|
*/
|
|
14
|
-
export { firstSet, hasEnv, strictBase } from "./network.ts";
|
|
14
|
+
export { firstSet, hasEnv, scopedVar, strictBase } from "./network.ts";
|
|
15
15
|
//# sourceMappingURL=envRead.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"envRead.d.ts","sourceRoot":"","sources":["../../src/envRead.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAOH,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"envRead.d.ts","sourceRoot":"","sources":["../../src/envRead.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAOH,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/cjs/envRead.js
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* in client and edge bundles.
|
|
14
14
|
*/
|
|
15
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
-
exports.strictBase = exports.hasEnv = exports.firstSet = void 0;
|
|
16
|
+
exports.strictBase = exports.scopedVar = exports.hasEnv = exports.firstSet = void 0;
|
|
17
17
|
/* Implemented in `network.ts` (one shared module, one chunk); re-exported
|
|
18
18
|
here so accessors keep a name that says what they import. Kept as a
|
|
19
19
|
separate re-export on purpose: measured on the app build, importing the
|
|
@@ -22,5 +22,6 @@ exports.strictBase = exports.hasEnv = exports.firstSet = void 0;
|
|
|
22
22
|
var network_ts_1 = require("./network.js");
|
|
23
23
|
Object.defineProperty(exports, "firstSet", { enumerable: true, get: function () { return network_ts_1.firstSet; } });
|
|
24
24
|
Object.defineProperty(exports, "hasEnv", { enumerable: true, get: function () { return network_ts_1.hasEnv; } });
|
|
25
|
+
Object.defineProperty(exports, "scopedVar", { enumerable: true, get: function () { return network_ts_1.scopedVar; } });
|
|
25
26
|
Object.defineProperty(exports, "strictBase", { enumerable: true, get: function () { return network_ts_1.strictBase; } });
|
|
26
27
|
//# sourceMappingURL=envRead.js.map
|
package/dist/cjs/envRead.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"envRead.js","sourceRoot":"","sources":["../../src/envRead.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;AAEH;;;;4EAI4E;AAC5E,
|
|
1
|
+
{"version":3,"file":"envRead.js","sourceRoot":"","sources":["../../src/envRead.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;AAEH;;;;4EAI4E;AAC5E,2CAAuE;AAA9D,sGAAA,QAAQ,OAAA;AAAE,oGAAA,MAAM,OAAA;AAAE,uGAAA,SAAS,OAAA;AAAE,wGAAA,UAAU,OAAA"}
|
package/dist/cjs/given.d.ts
CHANGED
|
@@ -6,6 +6,20 @@
|
|
|
6
6
|
* every page's shared chunk.
|
|
7
7
|
*/
|
|
8
8
|
import type { OpenhandsConfig } from "./config.ts";
|
|
9
|
+
/**
|
|
10
|
+
* One call's own configuration, for a host that serves several networks from one process (the local MCP: one
|
|
11
|
+
* scope per tool call, held in its AsyncLocalStorage): the network, what was adopted for it on top of `given`,
|
|
12
|
+
* variables it holds in place of the environment's, and whether this process's environment describes it at all.
|
|
13
|
+
*/
|
|
14
|
+
export interface Scope {
|
|
15
|
+
network: string;
|
|
16
|
+
given: Partial<OpenhandsConfig>;
|
|
17
|
+
vars: Record<string, string>;
|
|
18
|
+
env: boolean;
|
|
19
|
+
}
|
|
20
|
+
/** Install the reader of the current scope (once, by the host that keeps one). */
|
|
21
|
+
export declare const setScope: (read: () => Scope | undefined) => void;
|
|
22
|
+
export declare const currentScope: () => Scope | undefined;
|
|
9
23
|
export declare const givenConfig: () => Partial<OpenhandsConfig>;
|
|
10
24
|
export declare const setGivenConfig: (next: Partial<OpenhandsConfig>) => void;
|
|
11
25
|
/** The current generation of the configuration; `config()` recomputes when it moves. */
|
package/dist/cjs/given.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"given.d.ts","sourceRoot":"","sources":["../../src/given.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AASnD,eAAO,MAAM,WAAW,QAAO,OAAO,CAAC,eAAe,
|
|
1
|
+
{"version":3,"file":"given.d.ts","sourceRoot":"","sources":["../../src/given.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AASnD;;;;GAIG;AACH,MAAM,WAAW,KAAK;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,GAAG,EAAE,OAAO,CAAC;CACd;AAED,kFAAkF;AAClF,eAAO,MAAM,QAAQ,GAAI,MAAM,MAAM,KAAK,GAAG,SAAS,KAAG,IAGxD,CAAC;AACF,eAAO,MAAM,YAAY,QAAO,KAAK,GAAG,SAAoB,CAAC;AAE7D,eAAO,MAAM,WAAW,QAAO,OAAO,CAAC,eAAe,CAGrD,CAAC;AACF,eAAO,MAAM,cAAc,GAAI,MAAM,OAAO,CAAC,eAAe,CAAC,KAAG,IAG/D,CAAC;AACF,wFAAwF;AACxF,eAAO,MAAM,YAAY,QAAO,MAAiB,CAAC;AAClD,qGAAqG;AACrG,eAAO,MAAM,eAAe,QAAO,IAElC,CAAC"}
|
package/dist/cjs/given.js
CHANGED
|
@@ -1,13 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.invalidateGiven = exports.givenVersion = exports.setGivenConfig = exports.givenConfig = void 0;
|
|
3
|
+
exports.invalidateGiven = exports.givenVersion = exports.setGivenConfig = exports.givenConfig = exports.currentScope = exports.setScope = void 0;
|
|
4
4
|
let given = {};
|
|
5
5
|
/* Bumped whenever what the accessors may see changes; `config()` keys its
|
|
6
6
|
memo on it, so a host that refreshes `process.env` (the Worker's `bindEnv`,
|
|
7
7
|
once per event) can drop that memo through this module alone, without
|
|
8
8
|
loading the resolver and every accessor behind it. */
|
|
9
9
|
let version = 0;
|
|
10
|
-
|
|
10
|
+
let scope = () => undefined;
|
|
11
|
+
/** Install the reader of the current scope (once, by the host that keeps one). */
|
|
12
|
+
const setScope = (read) => {
|
|
13
|
+
scope = read;
|
|
14
|
+
version += 1;
|
|
15
|
+
};
|
|
16
|
+
exports.setScope = setScope;
|
|
17
|
+
const currentScope = () => scope();
|
|
18
|
+
exports.currentScope = currentScope;
|
|
19
|
+
const givenConfig = () => {
|
|
20
|
+
const current = scope();
|
|
21
|
+
return current ? { ...given, ...current.given } : given;
|
|
22
|
+
};
|
|
11
23
|
exports.givenConfig = givenConfig;
|
|
12
24
|
const setGivenConfig = (next) => {
|
|
13
25
|
given = next;
|
package/dist/cjs/given.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"given.js","sourceRoot":"","sources":["../../src/given.ts"],"names":[],"mappings":";;;AASA,IAAI,KAAK,GAA6B,EAAE,CAAC;AACzC;;;wDAGwD;AACxD,IAAI,OAAO,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"given.js","sourceRoot":"","sources":["../../src/given.ts"],"names":[],"mappings":";;;AASA,IAAI,KAAK,GAA6B,EAAE,CAAC;AACzC;;;wDAGwD;AACxD,IAAI,OAAO,GAAG,CAAC,CAAC;AAahB,IAAI,KAAK,GAA4B,GAAG,EAAE,CAAC,SAAS,CAAC;AACrD,kFAAkF;AAC3E,MAAM,QAAQ,GAAG,CAAC,IAA6B,EAAQ,EAAE;IAC9D,KAAK,GAAG,IAAI,CAAC;IACb,OAAO,IAAI,CAAC,CAAC;AACf,CAAC,CAAC;AAHW,QAAA,QAAQ,YAGnB;AACK,MAAM,YAAY,GAAG,GAAsB,EAAE,CAAC,KAAK,EAAE,CAAC;AAAhD,QAAA,YAAY,gBAAoC;AAEtD,MAAM,WAAW,GAAG,GAA6B,EAAE;IACxD,MAAM,OAAO,GAAG,KAAK,EAAE,CAAC;IACxB,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AAC1D,CAAC,CAAC;AAHW,QAAA,WAAW,eAGtB;AACK,MAAM,cAAc,GAAG,CAAC,IAA8B,EAAQ,EAAE;IACrE,KAAK,GAAG,IAAI,CAAC;IACb,OAAO,IAAI,CAAC,CAAC;AACf,CAAC,CAAC;AAHW,QAAA,cAAc,kBAGzB;AACF,wFAAwF;AACjF,MAAM,YAAY,GAAG,GAAW,EAAE,CAAC,OAAO,CAAC;AAArC,QAAA,YAAY,gBAAyB;AAClD,qGAAqG;AAC9F,MAAM,eAAe,GAAG,GAAS,EAAE;IACxC,OAAO,IAAI,CAAC,CAAC;AACf,CAAC,CAAC;AAFW,QAAA,eAAe,mBAE1B"}
|
package/dist/cjs/network.d.ts
CHANGED
|
@@ -10,9 +10,11 @@
|
|
|
10
10
|
export declare const NETWORKS: readonly ["devnet", "testnet", "mainnet"];
|
|
11
11
|
export type Network = (typeof NETWORKS)[number];
|
|
12
12
|
export declare function chainNetwork(raw: string | undefined, source?: string): Network;
|
|
13
|
-
/** `configure({ network })`, else `NEXT_PUBLIC_CHAIN_NETWORK`, else testnet. Throws on anything else. */
|
|
13
|
+
/** The call's scope (`given.ts`), else `configure({ network })`, else `NEXT_PUBLIC_CHAIN_NETWORK`, else testnet. Throws on anything else. */
|
|
14
14
|
export declare function network(): Network;
|
|
15
15
|
export declare const hasEnv: () => boolean;
|
|
16
|
+
/** A variable the call's scope holds in place of the environment's (the local MCP's adopted claim form and billing switch). */
|
|
17
|
+
export declare const scopedVar: (name: string) => string | undefined;
|
|
16
18
|
export declare const firstSet: (...values: (string | undefined)[]) => string | undefined;
|
|
17
19
|
/**
|
|
18
20
|
* A count of base units, read strictly: a mis-set variable used to become NaN
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/network.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,eAAO,MAAM,QAAQ,2CAA4C,CAAC;AAClE,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,SAA8B,GAAG,OAAO,CAInG;AAED,
|
|
1
|
+
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/network.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,eAAO,MAAM,QAAQ,2CAA4C,CAAC;AAClE,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,SAA8B,GAAG,OAAO,CAInG;AAED,6IAA6I;AAC7I,wBAAgB,OAAO,IAAI,OAAO,CAMjC;AAYD,eAAO,MAAM,MAAM,QAAO,OAAkG,CAAC;AAE7H,+HAA+H;AAC/H,eAAO,MAAM,SAAS,GAAI,MAAM,MAAM,KAAG,MAAM,GAAG,SAAuC,CAAC;AAG1F,eAAO,MAAM,QAAQ,GAAI,GAAG,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,KAAG,MAAM,GAAG,SAAwE,CAAC;AAE/I;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAI5E"}
|
package/dist/cjs/network.js
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* documented default. Deliberately exact. Validated when read, never at import.
|
|
10
10
|
*/
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.firstSet = exports.hasEnv = exports.NETWORKS = void 0;
|
|
12
|
+
exports.firstSet = exports.scopedVar = exports.hasEnv = exports.NETWORKS = void 0;
|
|
13
13
|
exports.chainNetwork = chainNetwork;
|
|
14
14
|
exports.network = network;
|
|
15
15
|
exports.strictBase = strictBase;
|
|
@@ -22,8 +22,11 @@ function chainNetwork(raw, source = "NEXT_PUBLIC_CHAIN_NETWORK") {
|
|
|
22
22
|
return raw;
|
|
23
23
|
throw new Error(`${source} is ${JSON.stringify(raw)}; it must be one of ${exports.NETWORKS.join(", ")} (or unset for testnet)`);
|
|
24
24
|
}
|
|
25
|
-
/** `configure({ network })`, else `NEXT_PUBLIC_CHAIN_NETWORK`, else testnet. Throws on anything else. */
|
|
25
|
+
/** The call's scope (`given.ts`), else `configure({ network })`, else `NEXT_PUBLIC_CHAIN_NETWORK`, else testnet. Throws on anything else. */
|
|
26
26
|
function network() {
|
|
27
|
+
const scoped = (0, given_ts_1.currentScope)()?.network;
|
|
28
|
+
if (scoped !== undefined)
|
|
29
|
+
return chainNetwork(scoped, "the call's network");
|
|
27
30
|
const given = (0, given_ts_1.givenConfig)().network;
|
|
28
31
|
if (given !== undefined)
|
|
29
32
|
return chainNetwork(given, "configure({ network })");
|
|
@@ -37,8 +40,13 @@ function network() {
|
|
|
37
40
|
* lazily-loaded accessors import this module; first-load code (`docPath`,
|
|
38
41
|
* `engineUrl`, `askDenom`) needs only `given.ts`.
|
|
39
42
|
*/
|
|
40
|
-
|
|
43
|
+
/* In a scope for another network than the one this process's environment names, its overrides are not read:
|
|
44
|
+
they describe that other network. */
|
|
45
|
+
const hasEnv = () => typeof process !== "undefined" && Boolean(process.env) && (0, given_ts_1.currentScope)()?.env !== false;
|
|
41
46
|
exports.hasEnv = hasEnv;
|
|
47
|
+
/** A variable the call's scope holds in place of the environment's (the local MCP's adopted claim form and billing switch). */
|
|
48
|
+
const scopedVar = (name) => (0, given_ts_1.currentScope)()?.vars[name];
|
|
49
|
+
exports.scopedVar = scopedVar;
|
|
42
50
|
/* `||`, not `??`: an empty variable has always meant "unset" in this repo. */
|
|
43
51
|
const firstSet = (...values) => values.find((value) => value !== undefined && value !== "");
|
|
44
52
|
exports.firstSet = firstSet;
|
package/dist/cjs/network.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/network.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAOH,oCAIC;AAGD,
|
|
1
|
+
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/network.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAOH,oCAIC;AAGD,0BAMC;AAyBD,gCAIC;AA/CD,yCAAuD;AAE1C,QAAA,QAAQ,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAU,CAAC;AAGlE,SAAgB,YAAY,CAAC,GAAuB,EAAE,MAAM,GAAG,2BAA2B;IACxF,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IACtD,IAAK,gBAA8B,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,GAAc,CAAC;IACzE,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,uBAAuB,gBAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;AAC1H,CAAC;AAED,6IAA6I;AAC7I,SAAgB,OAAO;IACrB,MAAM,MAAM,GAAG,IAAA,uBAAY,GAAE,EAAE,OAAO,CAAC;IACvC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,YAAY,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IAC5E,MAAM,KAAK,GAAG,IAAA,sBAAW,GAAE,CAAC,OAAO,CAAC;IACpC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,YAAY,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC;IAC9E,OAAO,YAAY,CAAC,IAAA,cAAM,GAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AACpF,CAAC;AAED;;;;;;;GAOG;AACH;uCACuC;AAChC,MAAM,MAAM,GAAG,GAAY,EAAE,CAAC,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAA,uBAAY,GAAE,EAAE,GAAG,KAAK,KAAK,CAAC;AAAhH,QAAA,MAAM,UAA0G;AAE7H,+HAA+H;AACxH,MAAM,SAAS,GAAG,CAAC,IAAY,EAAsB,EAAE,CAAC,IAAA,uBAAY,GAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AAA7E,QAAA,SAAS,aAAoE;AAE1F,8EAA8E;AACvE,MAAM,QAAQ,GAAG,CAAC,GAAG,MAA8B,EAAsB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC;AAAlI,QAAA,QAAQ,YAA0H;AAE/I;;;;GAIG;AACH,SAAgB,UAAU,CAAC,GAAuB,EAAE,QAAgB;IAClE,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAC;IAC5D,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3B,OAAO,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;AACzE,CAAC"}
|
|
@@ -510,6 +510,14 @@ export declare function realPhotoRule(shape: {
|
|
|
510
510
|
* paragraph, because its judge is sent the file.
|
|
511
511
|
*/
|
|
512
512
|
export declare const guidanceFor: (type: AskTerms["deliverable"]["type"]) => string;
|
|
513
|
+
/**
|
|
514
|
+
* What an Expert Review's checks are told the ask is (`reviewRules`): its sentence, what is reviewed at which version,
|
|
515
|
+
* and the scenarios in order. The ask's sentence alone names neither, and "covers the scenarios" and "reviews this
|
|
516
|
+
* and not something else" cannot be ruled on without them. `where` stays out: it is for the specialist, not the check.
|
|
517
|
+
*/
|
|
518
|
+
export declare function reviewBrief(terms: AskTerms): string;
|
|
519
|
+
/** The claim-level task every approver ask carries (`approver`): without one a gate review ends UNDECIDED. */
|
|
520
|
+
export declare const APPROVE_TASK = "OH-RT-APPROVE";
|
|
513
521
|
/**
|
|
514
522
|
* Terms → the engine's rubric.
|
|
515
523
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../../src/rubric/bridge.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../../src/rubric/bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.guidanceFor = exports.TEXT_JUDGE_GUIDANCE = exports.JUDGE_GUIDANCE = exports.SITE_KIND_PREAMBLE = exports.JUDGE_SEND_KEYS = exports.SEND_KEYS = exports.UNIQUE_RULE_ID = exports.NAME_CEILING = exports.NOT_ELSEWHERE_FLOOR_METERS = exports.PERSON_CHECKS = exports.PHOTO_CHECKS = exports.JUDGE_NAME = exports.SITE_SOURCE = exports.WITHIN_ASK_RADIUS_SOURCE = exports.COOLDOWN_SOURCE = exports.SOURCE_NAMES = exports.ORACLE_HOST = exports.DEFAULT_COOLDOWN = exports.ON_ERROR = void 0;
|
|
3
|
+
exports.APPROVE_TASK = exports.guidanceFor = exports.TEXT_JUDGE_GUIDANCE = exports.JUDGE_GUIDANCE = exports.SITE_KIND_PREAMBLE = exports.JUDGE_SEND_KEYS = exports.SEND_KEYS = exports.UNIQUE_RULE_ID = exports.NAME_CEILING = exports.NOT_ELSEWHERE_FLOOR_METERS = exports.PERSON_CHECKS = exports.PHOTO_CHECKS = exports.JUDGE_NAME = exports.SITE_SOURCE = exports.WITHIN_ASK_RADIUS_SOURCE = exports.COOLDOWN_SOURCE = exports.SOURCE_NAMES = exports.ORACLE_HOST = exports.DEFAULT_COOLDOWN = exports.ON_ERROR = void 0;
|
|
4
4
|
exports.rubricDocument = rubricDocument;
|
|
5
5
|
exports.realPhotoRule = realPhotoRule;
|
|
6
|
+
exports.reviewBrief = reviewBrief;
|
|
6
7
|
exports.toEngineRubric = toEngineRubric;
|
|
8
|
+
const report_ts_1 = require("./report.js");
|
|
7
9
|
const terms_ts_1 = require("./terms.js");
|
|
8
10
|
/**
|
|
9
11
|
* What every source and AI check says when it could not answer at all.
|
|
@@ -417,6 +419,17 @@ const LENGTH_CEILING = 1_000_000;
|
|
|
417
419
|
const MEGABYTE = 1_048_576;
|
|
418
420
|
/** Bytes as the MB their `maxSizeMB` reads, rounded up to a hundredth so a limit never tightens. */
|
|
419
421
|
const megabytes = (bytes) => Math.ceil((bytes / MEGABYTE) * 100) / 100;
|
|
422
|
+
/**
|
|
423
|
+
* What an Expert Review's checks are told the ask is (`reviewRules`): its sentence, what is reviewed at which version,
|
|
424
|
+
* and the scenarios in order. The ask's sentence alone names neither, and "covers the scenarios" and "reviews this
|
|
425
|
+
* and not something else" cannot be ruled on without them. `where` stays out: it is for the specialist, not the check.
|
|
426
|
+
*/
|
|
427
|
+
function reviewBrief(terms) {
|
|
428
|
+
const subject = terms.call?.subject;
|
|
429
|
+
const what = subject ? ` It reviews ${subject.name}${subject.version ? ` version ${subject.version}` : ""}.` : "";
|
|
430
|
+
const scenarios = terms.call?.scenarios?.length ? ` The scenarios to try: ${terms.call.scenarios.map((one, index) => `${index + 1}. ${one}`).join(" ")}` : "";
|
|
431
|
+
return `${terms.task.replace(/[.\s]+$/, "")}.${what}${scenarios}`;
|
|
432
|
+
}
|
|
420
433
|
const escapeRegex = (raw) => raw.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
421
434
|
/**
|
|
422
435
|
* A literal as a case-insensitive pattern, spelled out.
|
|
@@ -471,6 +484,11 @@ const DOWN_WORDS = [
|
|
|
471
484
|
/* Bounded on both sides: the gap is capped so the pattern cannot backtrack,
|
|
472
485
|
which is also what keeps it inside their safe-regex subset. */
|
|
473
486
|
const statusPattern = () => [...STATUS_WORDS.map((word) => `${insensitive(word)}[^0-9]{0,16}[0-9]{3}`), ...DOWN_WORDS.map(insensitive)].join("|");
|
|
487
|
+
/** The claim-level task every approver ask carries (`approver`): without one a gate review ends UNDECIDED. */
|
|
488
|
+
exports.APPROVE_TASK = "OH-RT-APPROVE";
|
|
489
|
+
/** One Yes/No for the approver: Yes approves, No rejects. Shown beside the deliverable. */
|
|
490
|
+
/* The engine shows no option labels yet, so the prompt names the two answers in words. */
|
|
491
|
+
const personTask = (id, prompt, show) => ({ "@type": "ReviewTask", id, prompt: `${prompt} Yes approves, No turns it down.`, show, answer: { type: "boolean" }, map: { true: "approve", false: "reject" } });
|
|
474
492
|
/** A native gate: the engine performs it itself. */
|
|
475
493
|
function nativeGate(gate, index) {
|
|
476
494
|
switch (gate.id) {
|
|
@@ -684,8 +702,10 @@ function toEngineRubric(terms, binding, options = {}) {
|
|
|
684
702
|
const pair = normalized.deliverable.type === "photo-pair" || measure("before-after") !== null;
|
|
685
703
|
/* A site, a second file, or a disposal photograph: the bags ride beside the pair. */
|
|
686
704
|
const expectsExtra = normalized.site === true || measure("with-file") !== null || measure("at-registered-point") !== null;
|
|
705
|
+
/* An Expert Review under its own rules (reportLine.ts `v`): its checks rule on what was to be reviewed and on which scenarios. */
|
|
706
|
+
const reviewRules = normalized.report?.v === 2 && normalized.call?.kind === "review" && Boolean(normalized.approver);
|
|
687
707
|
const judgeSend = {
|
|
688
|
-
task: literal(options.task?.trim() || normalized.task),
|
|
708
|
+
task: literal(options.task?.trim() || (reviewRules ? reviewBrief(normalized) : normalized.task)),
|
|
689
709
|
text: TEXT,
|
|
690
710
|
...(withPhoto ? { photo: PHOTO } : {}),
|
|
691
711
|
...(pair ? { before: BEFORE_PHOTO, after: AFTER_PHOTO } : {}),
|
|
@@ -695,7 +715,12 @@ function toEngineRubric(terms, binding, options = {}) {
|
|
|
695
715
|
/* Read off the same shape as the send map, so the paragraph describes what the judge is actually given. */
|
|
696
716
|
const guidance = (0, exports.guidanceFor)(normalized.deliverable.type);
|
|
697
717
|
const gates = [];
|
|
718
|
+
/* The AI's gates that still refuse when a person gives the final OK (see where the approver's holds are written). */
|
|
719
|
+
const clearFailures = new Set();
|
|
698
720
|
let review = null;
|
|
721
|
+
/* The approver's lines, in criteria order; "Approve this answer?" is added after them. */
|
|
722
|
+
const personTasks = [];
|
|
723
|
+
const shown = withPhoto ? [PHOTO, TEXT] : [TEXT];
|
|
699
724
|
const aiChecks = [];
|
|
700
725
|
/* Sources by bare name first; the suffix is decided once the count is known. */
|
|
701
726
|
const pending = [];
|
|
@@ -800,7 +825,7 @@ function toEngineRubric(terms, binding, options = {}) {
|
|
|
800
825
|
* cannot decide anything. Cheap, and honest: nothing here pretends the
|
|
801
826
|
* question was not asked.
|
|
802
827
|
*/
|
|
803
|
-
|
|
828
|
+
const gate = {
|
|
804
829
|
"@type": "Gate",
|
|
805
830
|
code: codeFor(index, "judged"),
|
|
806
831
|
reason: criterion.text,
|
|
@@ -808,13 +833,18 @@ function toEngineRubric(terms, binding, options = {}) {
|
|
|
808
833
|
when: field(`ai.${name}.valid`, "isTrue"),
|
|
809
834
|
onFail: "reject",
|
|
810
835
|
class: "refuted"
|
|
811
|
-
}
|
|
836
|
+
};
|
|
837
|
+
gates.push(gate);
|
|
838
|
+
/* Under the review rules the report line is only the clear failure (no report, or one of something else): it refuses even with a person behind the ask. */
|
|
839
|
+
if (reviewRules && criterion.id === report_ts_1.REPORT_CHECK_ID)
|
|
840
|
+
clearFailures.add(gate);
|
|
812
841
|
return;
|
|
813
842
|
}
|
|
814
|
-
/* `attest` is
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
843
|
+
/* `attest` is a person's eye by construction. With an `approver` it is their Yes/No (a ReviewTask, below);
|
|
844
|
+
without one there is no person in this loop, so the ask gets no rubric — `servableByOracle` decides that. */
|
|
845
|
+
if (!normalized.approver)
|
|
846
|
+
throw new Error(`criterion ${criterion.id} is attested by the poster; an oracle cannot serve it`);
|
|
847
|
+
personTasks.push(personTask(`OH-RT-${index}`, criterion.text, shown));
|
|
818
848
|
});
|
|
819
849
|
/*
|
|
820
850
|
* Rules the terms do not spell out but every ask of the shape carries.
|
|
@@ -974,6 +1004,60 @@ function toEngineRubric(terms, binding, options = {}) {
|
|
|
974
1004
|
}
|
|
975
1005
|
}
|
|
976
1006
|
}
|
|
1007
|
+
/*
|
|
1008
|
+
* A report ask (`report`, rubric/report.ts): the answer is a structured report — its JSON as the words, every
|
|
1009
|
+
* section the shape and the poster require present — or a report attached as a PDF, which the AI's report line
|
|
1010
|
+
* (`withReport`) reads. Shape by machine here; how good it is stays with the AI line and the person.
|
|
1011
|
+
*/
|
|
1012
|
+
if (normalized.report) {
|
|
1013
|
+
extra += 1;
|
|
1014
|
+
/* `reportText` writes one order, kind first and sections last: a heading counts only after `"sections":{`. */
|
|
1015
|
+
const keys = [`^${escapeRegex(`{"kind":"${report_ts_1.REPORT_KIND}","summary":{`)}`, ...report_ts_1.REPORT_KEYS.slice(1).map((key) => escapeRegex(`,"${key}":[`)), ...normalized.report.sections.map((heading) => `${escapeRegex('"sections":{')}.*${escapeRegex(`${JSON.stringify(heading)}:"`)}`)];
|
|
1016
|
+
gates.push({
|
|
1017
|
+
"@type": "Gate",
|
|
1018
|
+
code: codeFor(extra, "report"),
|
|
1019
|
+
reason: "This ask wants a review report: hand in the structured report with every section it asks for, or attach the report as a PDF",
|
|
1020
|
+
when: { "@type": "Condition", any: [{ "@type": "Condition", all: keys.map((key) => field(TEXT, "matches", key)) }, field(PHOTO, "mediaTypeIn", ["application/pdf"])] },
|
|
1021
|
+
onFail: "reject",
|
|
1022
|
+
class: "insufficient_evidence"
|
|
1023
|
+
});
|
|
1024
|
+
/*
|
|
1025
|
+
* The review rules (reportLine.ts `v`), by machine where the words can be read: a written report with no evidence
|
|
1026
|
+
* at all is refused (a PDF carries its own), and one that states no limitations is the person's to weigh.
|
|
1027
|
+
*/
|
|
1028
|
+
if (reviewRules) {
|
|
1029
|
+
extra += 1;
|
|
1030
|
+
gates.push({
|
|
1031
|
+
"@type": "Gate",
|
|
1032
|
+
code: codeFor(extra, "report-evidence"),
|
|
1033
|
+
reason: "A review report needs its evidence: attach at least one screenshot, recording or trace and name it under a step's or a finding's evidence",
|
|
1034
|
+
when: { "@type": "Condition", any: [field(TEXT, "matches", escapeRegex('"evidence":["')), field(PHOTO, "mediaTypeIn", ["application/pdf"])] },
|
|
1035
|
+
onFail: "reject",
|
|
1036
|
+
class: "insufficient_evidence"
|
|
1037
|
+
});
|
|
1038
|
+
extra += 1;
|
|
1039
|
+
gates.push({
|
|
1040
|
+
"@type": "Gate",
|
|
1041
|
+
code: codeFor(extra, "report-limits"),
|
|
1042
|
+
reason: "The report states no limitations: say what could not be tested, or why the result may not hold",
|
|
1043
|
+
when: { "@type": "Condition", any: [field(TEXT, "matches", escapeRegex(',"limitations":["')), field(PHOTO, "mediaTypeIn", ["application/pdf"])] },
|
|
1044
|
+
onFail: "review",
|
|
1045
|
+
class: "insufficient_evidence"
|
|
1046
|
+
});
|
|
1047
|
+
}
|
|
1048
|
+
}
|
|
1049
|
+
/*
|
|
1050
|
+
* A person gives the final OK (`approver`): every claim the rules above let through is held for them. The gate
|
|
1051
|
+
* reads the deliverable gate 0 already required, as `empty`, so it always fails once reached, last, after every
|
|
1052
|
+
* `reject`. Its `review` ends UNDECIDED without a claim-level task (engine decide.ts), so one always rides:
|
|
1053
|
+
* "Approve this answer?", beside the poster's own lines. Any No rejects; all Yes approves.
|
|
1054
|
+
*/
|
|
1055
|
+
if (normalized.approver) {
|
|
1056
|
+
extra += 1;
|
|
1057
|
+
personTasks.push(personTask(exports.APPROVE_TASK, "Approve this answer?", shown));
|
|
1058
|
+
review = review ? { ...review, tasks: [...review.tasks, ...personTasks] } : { "@type": "HumanReview", assignTo: { role: "reviewer" }, slaHours: 48, onTimeout: "reject", tasks: personTasks };
|
|
1059
|
+
gates.push({ "@type": "Gate", code: codeFor(extra, "person"), reason: "A person gives final approval", when: { ...gates[0].when, op: "empty" }, onFail: "review", class: "requires_human_review" });
|
|
1060
|
+
}
|
|
977
1061
|
/*
|
|
978
1062
|
* Names, finally. A vocabulary word is used bare the first time and with a
|
|
979
1063
|
* suffix from 2 when the same rule repeats within one rubric —
|
|
@@ -999,6 +1083,21 @@ function toEngineRubric(terms, binding, options = {}) {
|
|
|
999
1083
|
timeoutMs: SOURCE_TIMEOUT_MS
|
|
1000
1084
|
};
|
|
1001
1085
|
});
|
|
1086
|
+
/*
|
|
1087
|
+
* A person gives the final OK: only a deterministic failure refuses on its own (the deliverable missing, a wrong file
|
|
1088
|
+
* type or size, the report's shape, a duplicate). Anything a model or an outside check says, including that it could
|
|
1089
|
+
* not say, is the person's to weigh: those gates hold for review, and an errored check holds rather than refuses.
|
|
1090
|
+
*/
|
|
1091
|
+
if (normalized.approver) {
|
|
1092
|
+
const readsFacts = (gate) => /"field":"(ext|ai)\./.test(JSON.stringify(gate.when));
|
|
1093
|
+
for (const gate of gates)
|
|
1094
|
+
if (gate.onFail === "reject" && readsFacts(gate) && !clearFailures.has(gate))
|
|
1095
|
+
gate.onFail = "review";
|
|
1096
|
+
for (const source of sources)
|
|
1097
|
+
source.onError = "review";
|
|
1098
|
+
for (const check of aiChecks)
|
|
1099
|
+
check.onError = "review";
|
|
1100
|
+
}
|
|
1002
1101
|
/* The same photograph, handed in twice, is paid once. Keyed by the
|
|
1003
1102
|
photograph; the attachment lanes (exact CID and near-duplicate) cover
|
|
1004
1103
|
every file on the claim regardless. One band: a near-certain duplicate
|