@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,278 @@
|
|
|
1
|
+
export * from "./inviteMessages.js";
|
|
2
|
+
import { readVerificationProfile } from "../verification/profile.js";
|
|
3
|
+
export const HANDLE = /^[a-z][a-z0-9-]{2,29}$/;
|
|
4
|
+
/** Words that are pages of the site, or would read as somebody else. */
|
|
5
|
+
export const RESERVED_HANDLES = new Set([
|
|
6
|
+
"admin", "openhands", "ixo", "me", "board", "map", "ask", "asks", "opencall", "hands", "hand", "reviewers", "apps", "how", "connect",
|
|
7
|
+
"submit", "welcome", "youth", "api", "org", "help", "support", "staff", "official", "oracle", "checker", "agent", "agents", "new", "about"
|
|
8
|
+
]);
|
|
9
|
+
export const HAND_LIMITS = {
|
|
10
|
+
name: 80,
|
|
11
|
+
headline: 160,
|
|
12
|
+
about: 2000,
|
|
13
|
+
does: 6,
|
|
14
|
+
links: 6,
|
|
15
|
+
link: 2048,
|
|
16
|
+
rate: 1_000_000,
|
|
17
|
+
/* The CV (docs/verified-work-hands-page-brief.md §7). */
|
|
18
|
+
experience: 12,
|
|
19
|
+
skills: 20,
|
|
20
|
+
skill: 40,
|
|
21
|
+
languages: 8,
|
|
22
|
+
language: 40,
|
|
23
|
+
education: 6,
|
|
24
|
+
blocks: 6,
|
|
25
|
+
location: 80,
|
|
26
|
+
timezone: 64,
|
|
27
|
+
title: 120,
|
|
28
|
+
org: 120,
|
|
29
|
+
where: 80,
|
|
30
|
+
what: 600,
|
|
31
|
+
year: 4,
|
|
32
|
+
paragraphs: 8,
|
|
33
|
+
paragraph: 1500,
|
|
34
|
+
items: 6,
|
|
35
|
+
alt: 300,
|
|
36
|
+
caption: 300,
|
|
37
|
+
fileName: 120,
|
|
38
|
+
note: 300
|
|
39
|
+
};
|
|
40
|
+
export const DOES = ["look", "spot", "clean", "answer", "check", "make"];
|
|
41
|
+
export const RATE_UNITS = ["hour", "day", "deliverable"];
|
|
42
|
+
export const RATE_COINS = ["USDC", "IXO"];
|
|
43
|
+
export const AVAILABILITY = ["open", "busy", "closed"];
|
|
44
|
+
const oneLine = (value, max) => {
|
|
45
|
+
if (typeof value !== "string")
|
|
46
|
+
return null;
|
|
47
|
+
const folded = value.replace(/\s+/g, " ").trim();
|
|
48
|
+
return folded && folded.length <= max ? folded : null;
|
|
49
|
+
};
|
|
50
|
+
const https = (value) => {
|
|
51
|
+
if (typeof value !== "string" || value.length > HAND_LIMITS.link || !value.startsWith("https://"))
|
|
52
|
+
return false;
|
|
53
|
+
try {
|
|
54
|
+
return new URL(value).protocol === "https:";
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
/** A page off the wire, read field by field; a problem in words, or the page. Nothing is trimmed into shape silently but whitespace. */
|
|
61
|
+
export function readHandProfile(raw) {
|
|
62
|
+
const it = raw;
|
|
63
|
+
if (!it || typeof it !== "object")
|
|
64
|
+
return { problem: "a page is an object" };
|
|
65
|
+
const verification = readVerificationProfile(it);
|
|
66
|
+
if ("problem" in verification)
|
|
67
|
+
return verification;
|
|
68
|
+
if (it.v !== 1)
|
|
69
|
+
return { problem: "a page says v: 1" };
|
|
70
|
+
const handle = typeof it.handle === "string" ? it.handle.trim().toLowerCase() : "";
|
|
71
|
+
if (!HANDLE.test(handle))
|
|
72
|
+
return { problem: "the handle is lowercase letters, digits and dashes, 3 to 30 long, starting with a letter" };
|
|
73
|
+
if (RESERVED_HANDLES.has(handle))
|
|
74
|
+
return { problem: `"${handle}" is a page of the site, not a person` };
|
|
75
|
+
const name = oneLine(it.name, HAND_LIMITS.name);
|
|
76
|
+
if (!name)
|
|
77
|
+
return { problem: `a name, up to ${HAND_LIMITS.name} characters` };
|
|
78
|
+
const headline = it.headline === undefined || it.headline === null || it.headline === "" ? undefined : oneLine(it.headline, HAND_LIMITS.headline);
|
|
79
|
+
if (headline === null)
|
|
80
|
+
return { problem: `the headline is one line, up to ${HAND_LIMITS.headline} characters` };
|
|
81
|
+
let about;
|
|
82
|
+
if (it.about !== undefined && it.about !== null && it.about !== "") {
|
|
83
|
+
if (typeof it.about !== "string" || it.about.length > HAND_LIMITS.about)
|
|
84
|
+
return { problem: `about is up to ${HAND_LIMITS.about} characters` };
|
|
85
|
+
about = it.about.replace(/\r\n?/g, "\n").trim();
|
|
86
|
+
}
|
|
87
|
+
const does = Array.isArray(it.does) ? it.does : [];
|
|
88
|
+
if (does.length > HAND_LIMITS.does || !does.every((one) => DOES.includes(one)))
|
|
89
|
+
return { problem: `does is up to ${HAND_LIMITS.does} of ${DOES.join(", ")}` };
|
|
90
|
+
let rate = null;
|
|
91
|
+
if (it.rate !== undefined && it.rate !== null) {
|
|
92
|
+
const r = it.rate;
|
|
93
|
+
if (typeof r.amount !== "number" || !(r.amount > 0) || r.amount > HAND_LIMITS.rate)
|
|
94
|
+
return { problem: "the rate's amount is a number above 0" };
|
|
95
|
+
if (!RATE_UNITS.includes(r.unit))
|
|
96
|
+
return { problem: `the rate's unit is ${RATE_UNITS.join(", ")}` };
|
|
97
|
+
if (!RATE_COINS.includes(r.coin))
|
|
98
|
+
return { problem: `the rate's coin is ${RATE_COINS.join(" or ")}` };
|
|
99
|
+
rate = { amount: Math.round(r.amount * 100) / 100, unit: r.unit, coin: r.coin };
|
|
100
|
+
}
|
|
101
|
+
const links = Array.isArray(it.links) ? it.links : [];
|
|
102
|
+
if (links.length > HAND_LIMITS.links || !links.every(https))
|
|
103
|
+
return { problem: `links are up to ${HAND_LIMITS.links} https addresses` };
|
|
104
|
+
const availability = it.availability === undefined ? "open" : it.availability;
|
|
105
|
+
if (!AVAILABILITY.includes(availability))
|
|
106
|
+
return { problem: `availability is ${AVAILABILITY.join(", ")}` };
|
|
107
|
+
const invitable = it.invitable === undefined ? true : it.invitable;
|
|
108
|
+
if (typeof invitable !== "boolean")
|
|
109
|
+
return { problem: "invitable is true or false" };
|
|
110
|
+
/* The CV. Each field whole or refused with its name; an absent field is simply absent. */
|
|
111
|
+
const L = HAND_LIMITS;
|
|
112
|
+
const pictureUrl = (value, what) => (value === undefined || value === null || value === "" ? undefined : https(value) ? value : { problem: `${what} is an https address` });
|
|
113
|
+
const avatar = pictureUrl(it.avatar, "avatar");
|
|
114
|
+
if (avatar && typeof avatar === "object")
|
|
115
|
+
return avatar;
|
|
116
|
+
const banner = pictureUrl(it.banner, "banner");
|
|
117
|
+
if (banner && typeof banner === "object")
|
|
118
|
+
return banner;
|
|
119
|
+
const location = it.location === undefined || it.location === null || it.location === "" ? undefined : oneLine(it.location, L.location);
|
|
120
|
+
if (location === null)
|
|
121
|
+
return { problem: `location is one line, up to ${L.location} characters` };
|
|
122
|
+
const timezone = it.timezone === undefined || it.timezone === null || it.timezone === "" ? undefined : oneLine(it.timezone, L.timezone);
|
|
123
|
+
if (timezone === null || (timezone && !/^[A-Za-z_+\-\/0-9: ]{1,64}$/.test(timezone)))
|
|
124
|
+
return { problem: "timezone is an IANA name, e.g. Europe/Ljubljana, or UTC+2" };
|
|
125
|
+
const when = (value) => typeof value === "string" && /^\d{4}(-(0[1-9]|1[0-2]))?$/.test(value);
|
|
126
|
+
const experience = [];
|
|
127
|
+
if (it.experience !== undefined && it.experience !== null) {
|
|
128
|
+
if (!Array.isArray(it.experience) || it.experience.length > L.experience)
|
|
129
|
+
return { problem: `experience is up to ${L.experience} rows` };
|
|
130
|
+
for (const [at, raw] of it.experience.entries()) {
|
|
131
|
+
const title = oneLine(raw?.title, L.title);
|
|
132
|
+
const org = oneLine(raw?.org, L.org);
|
|
133
|
+
if (!title || !org)
|
|
134
|
+
return { problem: `experience row ${at + 1} needs a title and an org` };
|
|
135
|
+
if (!when(raw?.from))
|
|
136
|
+
return { problem: `experience row ${at + 1}: from is "YYYY" or "YYYY-MM"` };
|
|
137
|
+
if (!(raw?.to === null || raw?.to === undefined || raw?.to === "" || when(raw?.to)))
|
|
138
|
+
return { problem: `experience row ${at + 1}: to is "YYYY", "YYYY-MM", or null for now` };
|
|
139
|
+
const where = raw?.where === undefined || raw?.where === null || raw?.where === "" ? undefined : oneLine(raw.where, L.where);
|
|
140
|
+
if (where === null)
|
|
141
|
+
return { problem: `experience row ${at + 1}: where is one line` };
|
|
142
|
+
let what;
|
|
143
|
+
if (raw?.what !== undefined && raw?.what !== null && raw?.what !== "") {
|
|
144
|
+
if (typeof raw.what !== "string" || raw.what.length > L.what)
|
|
145
|
+
return { problem: `experience row ${at + 1}: what is up to ${L.what} characters` };
|
|
146
|
+
what = raw.what.replace(/\s+/g, " ").trim();
|
|
147
|
+
}
|
|
148
|
+
experience.push({ title, org, from: raw.from, to: when(raw?.to) ? raw.to : null, ...(where ? { where } : {}), ...(what ? { what } : {}) });
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
const words = (value, max, each, what) => {
|
|
152
|
+
if (value === undefined || value === null)
|
|
153
|
+
return [];
|
|
154
|
+
if (!Array.isArray(value) || value.length > max)
|
|
155
|
+
return { problem: `${what} is up to ${max} entries` };
|
|
156
|
+
const out = [];
|
|
157
|
+
for (const one of value) {
|
|
158
|
+
const line = oneLine(one, each);
|
|
159
|
+
if (!line)
|
|
160
|
+
return { problem: `${what}: each entry is one line, up to ${each} characters` };
|
|
161
|
+
out.push(line);
|
|
162
|
+
}
|
|
163
|
+
return [...new Set(out)];
|
|
164
|
+
};
|
|
165
|
+
const skills = words(it.skills, L.skills, L.skill, "skills");
|
|
166
|
+
if (!Array.isArray(skills))
|
|
167
|
+
return skills;
|
|
168
|
+
const languages = words(it.languages, L.languages, L.language, "languages");
|
|
169
|
+
if (!Array.isArray(languages))
|
|
170
|
+
return languages;
|
|
171
|
+
const education = [];
|
|
172
|
+
if (it.education !== undefined && it.education !== null) {
|
|
173
|
+
if (!Array.isArray(it.education) || it.education.length > L.education)
|
|
174
|
+
return { problem: `education is up to ${L.education} rows` };
|
|
175
|
+
for (const [at, raw] of it.education.entries()) {
|
|
176
|
+
const title = oneLine(raw?.title, L.title);
|
|
177
|
+
const org = oneLine(raw?.org, L.org);
|
|
178
|
+
if (!title || !org)
|
|
179
|
+
return { problem: `education row ${at + 1} needs a title and an org` };
|
|
180
|
+
if (!(raw?.year === undefined || raw?.year === null || raw?.year === "" || (typeof raw?.year === "string" && /^\d{4}$/.test(raw.year))))
|
|
181
|
+
return { problem: `education row ${at + 1}: year is "YYYY"` };
|
|
182
|
+
education.push({ title, org, ...(typeof raw?.year === "string" && raw.year ? { year: raw.year } : {}) });
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
const blocks = [];
|
|
186
|
+
if (it.blocks !== undefined && it.blocks !== null) {
|
|
187
|
+
if (!Array.isArray(it.blocks) || it.blocks.length > L.blocks)
|
|
188
|
+
return { problem: `blocks is up to ${L.blocks}` };
|
|
189
|
+
for (const [at, raw] of it.blocks.entries()) {
|
|
190
|
+
const block = readHandBlock(raw);
|
|
191
|
+
if ("problem" in block)
|
|
192
|
+
return { problem: `block ${at + 1}: ${block.problem}` };
|
|
193
|
+
blocks.push(block.block);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
return {
|
|
197
|
+
profile: {
|
|
198
|
+
v: 1,
|
|
199
|
+
handle,
|
|
200
|
+
name,
|
|
201
|
+
...(headline ? { headline } : {}),
|
|
202
|
+
...(about ? { about } : {}),
|
|
203
|
+
does: [...new Set(does)],
|
|
204
|
+
rate,
|
|
205
|
+
links: [...new Set(links)],
|
|
206
|
+
availability: availability,
|
|
207
|
+
invitable,
|
|
208
|
+
...(avatar ? { avatar } : {}),
|
|
209
|
+
...(banner ? { banner } : {}),
|
|
210
|
+
...(location ? { location } : {}),
|
|
211
|
+
...(timezone ? { timezone } : {}),
|
|
212
|
+
...(experience.length ? { experience } : {}),
|
|
213
|
+
...(skills.length ? { skills } : {}),
|
|
214
|
+
...(languages.length ? { languages } : {}),
|
|
215
|
+
...(education.length ? { education } : {}),
|
|
216
|
+
...(blocks.length ? { blocks } : {}),
|
|
217
|
+
...verification.data
|
|
218
|
+
}
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
/** One block of the page's canvas, read the way a call's is (terms.ts `blockOf`), for the three kinds a page may carry. */
|
|
222
|
+
export function readHandBlock(raw) {
|
|
223
|
+
const it = raw;
|
|
224
|
+
if (!it || typeof it !== "object")
|
|
225
|
+
return { problem: "a block is an object" };
|
|
226
|
+
const L = HAND_LIMITS;
|
|
227
|
+
switch (it.kind) {
|
|
228
|
+
case "story": {
|
|
229
|
+
if (!Array.isArray(it.paragraphs) || it.paragraphs.length === 0 || it.paragraphs.length > L.paragraphs)
|
|
230
|
+
return { problem: `a story is 1 to ${L.paragraphs} paragraphs` };
|
|
231
|
+
const paragraphs = [];
|
|
232
|
+
for (const one of it.paragraphs) {
|
|
233
|
+
const line = oneLine(one, L.paragraph);
|
|
234
|
+
if (!line)
|
|
235
|
+
return { problem: `a paragraph is one line, up to ${L.paragraph} characters` };
|
|
236
|
+
paragraphs.push(line);
|
|
237
|
+
}
|
|
238
|
+
return { block: { kind: "story", paragraphs } };
|
|
239
|
+
}
|
|
240
|
+
case "pictures": {
|
|
241
|
+
if (!Array.isArray(it.items) || it.items.length === 0 || it.items.length > L.items)
|
|
242
|
+
return { problem: `pictures are 1 to ${L.items}` };
|
|
243
|
+
const items = [];
|
|
244
|
+
for (const one of it.items) {
|
|
245
|
+
if (!https(one?.url))
|
|
246
|
+
return { problem: "a picture's url is an https address" };
|
|
247
|
+
const alt = oneLine(one?.alt, L.alt);
|
|
248
|
+
if (!alt)
|
|
249
|
+
return { problem: "a picture needs words (alt)" };
|
|
250
|
+
const caption = one?.caption === undefined || one?.caption === null || one?.caption === "" ? undefined : oneLine(one.caption, L.caption);
|
|
251
|
+
if (caption === null)
|
|
252
|
+
return { problem: "a caption is one line" };
|
|
253
|
+
items.push({ url: one.url, alt, ...(caption ? { caption } : {}) });
|
|
254
|
+
}
|
|
255
|
+
return { block: { kind: "pictures", items } };
|
|
256
|
+
}
|
|
257
|
+
case "files": {
|
|
258
|
+
if (!Array.isArray(it.items) || it.items.length === 0 || it.items.length > L.items)
|
|
259
|
+
return { problem: `files are 1 to ${L.items}` };
|
|
260
|
+
const items = [];
|
|
261
|
+
for (const one of it.items) {
|
|
262
|
+
if (!https(one?.url))
|
|
263
|
+
return { problem: "a file's url is an https address" };
|
|
264
|
+
const name = oneLine(one?.name, L.fileName);
|
|
265
|
+
if (!name)
|
|
266
|
+
return { problem: "a file needs a name" };
|
|
267
|
+
const note = one?.note === undefined || one?.note === null || one?.note === "" ? undefined : oneLine(one.note, L.note);
|
|
268
|
+
if (note === null)
|
|
269
|
+
return { problem: "a file's note is one line" };
|
|
270
|
+
items.push({ url: one.url, name, ...(note ? { note } : {}) });
|
|
271
|
+
}
|
|
272
|
+
return { block: { kind: "files", items } };
|
|
273
|
+
}
|
|
274
|
+
default:
|
|
275
|
+
return { problem: 'kind is "story", "pictures" or "files"' };
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
//# sourceMappingURL=inviteProof.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inviteProof.js","sourceRoot":"","sources":["../../../src/chain/inviteProof.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import type { Signer } from "./store.ts";
|
|
2
|
+
/**
|
|
3
|
+
* Private answers on the Vault's claims lane (docs/private-asks-vault-plan.md).
|
|
4
|
+
*
|
|
5
|
+
* A private ask's answer lives in `/.claims/<collectionId>/…` inside the ask's
|
|
6
|
+
* own entity namespace: never public, write-once, readable only by who the
|
|
7
|
+
* chain says (the author, the poster as controller, the checker). Every
|
|
8
|
+
* request carries a single-use invocation.
|
|
9
|
+
*
|
|
10
|
+
* Claude never holds the person's key. The person's browser signs Claude's
|
|
11
|
+
* `did:key` a **pass** for one ask (`signPass`: 1 hour to write, 24 hours to
|
|
12
|
+
* read, ended by expiry only), and Claude invokes under it (`laneInvocation`).
|
|
13
|
+
* The Vault sees the person as the actor and Claude as the invoker. The site,
|
|
14
|
+
* holding the person's own session key, needs no pass (`selfLaneInvocation`).
|
|
15
|
+
*
|
|
16
|
+
* `@ixo/ucan` is loaded on use, as in store.ts: no page pays for ucanto until
|
|
17
|
+
* it signs something.
|
|
18
|
+
*/
|
|
19
|
+
export type LaneAbility = "fs/write" | "fs/read";
|
|
20
|
+
/** Claude's own Ed25519 key, derived from its existing key file. Never written anywhere. */
|
|
21
|
+
export interface AgentKey {
|
|
22
|
+
did: `did:key:${string}`;
|
|
23
|
+
sign(bytes: Uint8Array): Promise<Uint8Array>;
|
|
24
|
+
/** The ucanto signer behind `sign`, for invocations. */
|
|
25
|
+
signer: import("@ixo/ucan").Signer;
|
|
26
|
+
}
|
|
27
|
+
export interface PassRequest {
|
|
28
|
+
/** The person's session signer (store.ts `signerFromSession`). */
|
|
29
|
+
signer: Signer;
|
|
30
|
+
personDid: string;
|
|
31
|
+
agentDid: string;
|
|
32
|
+
entityDid: string;
|
|
33
|
+
collectionId: string;
|
|
34
|
+
can: LaneAbility;
|
|
35
|
+
ttlSeconds: number;
|
|
36
|
+
/**
|
|
37
|
+
* Proofs the signer's own access rests on: an approver's share from the poster, so the chain runs
|
|
38
|
+
* poster → approver → Claude and the Vault sees the poster (the controller) as the actor.
|
|
39
|
+
*/
|
|
40
|
+
proofs?: string[];
|
|
41
|
+
}
|
|
42
|
+
export interface LaneInvocationRequest {
|
|
43
|
+
agent: AgentKey;
|
|
44
|
+
/** An encoded pass from `signPass`. */
|
|
45
|
+
pass: string;
|
|
46
|
+
vfsDid?: string;
|
|
47
|
+
entityDid: string;
|
|
48
|
+
collectionId: string;
|
|
49
|
+
can: LaneAbility;
|
|
50
|
+
ttlSeconds?: number;
|
|
51
|
+
}
|
|
52
|
+
export interface SelfLaneInvocationRequest {
|
|
53
|
+
signer: Signer;
|
|
54
|
+
/** An approver's share from the poster (`signShare`), when the signer reads by it. */
|
|
55
|
+
share?: string;
|
|
56
|
+
vfsDid?: string;
|
|
57
|
+
entityDid: string;
|
|
58
|
+
collectionId: string;
|
|
59
|
+
can: LaneAbility;
|
|
60
|
+
ttlSeconds?: number;
|
|
61
|
+
}
|
|
62
|
+
export interface LaneUpload {
|
|
63
|
+
bearer: string;
|
|
64
|
+
entityDid: string;
|
|
65
|
+
collectionId: string;
|
|
66
|
+
/** File name inside the ask's lane folder (may hold one `/`, e.g. `<address>/<file>`). */
|
|
67
|
+
name: string;
|
|
68
|
+
signal?: AbortSignal;
|
|
69
|
+
}
|
|
70
|
+
/** What a pass says, decoded: enough to tell whether it is the one this ask needs. */
|
|
71
|
+
export interface PassFacts {
|
|
72
|
+
issuer: string;
|
|
73
|
+
audience: string;
|
|
74
|
+
with: string;
|
|
75
|
+
can: string;
|
|
76
|
+
/** Seconds since the epoch; Infinity when the pass has none (refused by `passProblem`). */
|
|
77
|
+
expiration: number;
|
|
78
|
+
}
|
|
79
|
+
export declare const WRITE_PASS_SECONDS = 3600;
|
|
80
|
+
export declare const READ_PASS_SECONDS = 86400;
|
|
81
|
+
/** The engine binds claim content of at most 256 KiB. */
|
|
82
|
+
export declare const MAX_ENVELOPE_BYTES: number;
|
|
83
|
+
/** The Vault resource for one ask's lane. The entity must be lowercase (the Vault's scope rule). */
|
|
84
|
+
export declare const laneResource: (entityDid: string, collectionId: string) => string;
|
|
85
|
+
/**
|
|
86
|
+
* The lane folder is hidden in the entity namespace; a reader who is the entity's controller (the poster) only sees it
|
|
87
|
+
* when every link of the chain reveals it (Vault ucan.ts nb.hidden; auth.ts reveals it itself only for lane-grant
|
|
88
|
+
* readers). Harmless for everyone else.
|
|
89
|
+
*/
|
|
90
|
+
export declare const laneReveal: (collectionId: string) => {
|
|
91
|
+
hidden: string[];
|
|
92
|
+
};
|
|
93
|
+
export { isPrivateTerms } from "../rubric/share.ts";
|
|
94
|
+
/** Claude's did:key: the same mnemonic always gives the same key, so nothing new is stored. */
|
|
95
|
+
export declare function agentDidKey(mnemonic: string): Promise<AgentKey>;
|
|
96
|
+
/** The person signs Claude a pass for one ask's lane (browser side). */
|
|
97
|
+
export declare function signPass(request: PassRequest): Promise<string>;
|
|
98
|
+
/** The longest an approver's share lasts, whatever the ask's dates say. */
|
|
99
|
+
export declare const MAX_SHARE_SECONDS: number;
|
|
100
|
+
/**
|
|
101
|
+
* The poster lets an approver who is not the poster read one ask's private answers (read only), until the ask's end
|
|
102
|
+
* plus its review window, never more than 90 days. Signed in the poster's browser; the worker keeps it beside the ask.
|
|
103
|
+
*/
|
|
104
|
+
export declare function signShare(request: {
|
|
105
|
+
signer: Signer;
|
|
106
|
+
posterDid: string;
|
|
107
|
+
approverDid: string;
|
|
108
|
+
entityDid: string;
|
|
109
|
+
collectionId: string;
|
|
110
|
+
endsAt: number;
|
|
111
|
+
reviewSeconds?: number;
|
|
112
|
+
}): Promise<string>;
|
|
113
|
+
/** What a pass says, or null when it is not a pass at all. */
|
|
114
|
+
export declare function readPass(pass: string): Promise<PassFacts | null>;
|
|
115
|
+
/**
|
|
116
|
+
* Why this pass will not do for this ask, in plain words; null when it will.
|
|
117
|
+
* `minSeconds` is how long it must still last (an answer takes minutes).
|
|
118
|
+
*/
|
|
119
|
+
export declare function passProblem(pass: string, want: {
|
|
120
|
+
agentDid: string;
|
|
121
|
+
personDid?: string;
|
|
122
|
+
entityDid: string;
|
|
123
|
+
collectionId: string;
|
|
124
|
+
can: LaneAbility;
|
|
125
|
+
minSeconds?: number;
|
|
126
|
+
}): Promise<string | null>;
|
|
127
|
+
/** A single-use invocation by Claude under the person's pass: one per HTTP request. */
|
|
128
|
+
export declare function laneInvocation(request: LaneInvocationRequest): Promise<string>;
|
|
129
|
+
/** A single-use invocation signed by the person's own session key (the site): actor and invoker are the person. */
|
|
130
|
+
export declare function selfLaneInvocation(request: SelfLaneInvocationRequest): Promise<string>;
|
|
131
|
+
/** Where a lane file is read by CID, with a token (never a public link). */
|
|
132
|
+
export declare const laneCidUrl: (cid: string) => string;
|
|
133
|
+
/** The Vault's refusal, kept so a caller can tell "not yet allowed" (retry) from anything else. */
|
|
134
|
+
export declare class LaneRefused extends Error {
|
|
135
|
+
readonly status: number;
|
|
136
|
+
constructor(status: number, message: string);
|
|
137
|
+
}
|
|
138
|
+
/** Store bytes in the ask's lane. Never `public`: the Vault refuses that for the lane, and so does this. */
|
|
139
|
+
export declare function uploadToLane(bytes: Uint8Array | Blob | string, contentType: string, args: LaneUpload): Promise<{
|
|
140
|
+
cid: string;
|
|
141
|
+
url: string;
|
|
142
|
+
}>;
|
|
143
|
+
/** Read a lane file's bytes by CID. */
|
|
144
|
+
export declare function readFromLane(cid: string, args: {
|
|
145
|
+
bearer: string;
|
|
146
|
+
signal?: AbortSignal;
|
|
147
|
+
}): Promise<Uint8Array>;
|
|
148
|
+
//# sourceMappingURL=lane.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lane.d.ts","sourceRoot":"","sources":["../../../src/chain/lane.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAKzC;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC;AAEjD,4FAA4F;AAC5F,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,WAAW,MAAM,EAAE,CAAC;IACzB,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7C,wDAAwD;IACxD,MAAM,EAAE,OAAO,WAAW,EAAE,MAAM,CAAC;CACpC;AAED,MAAM,WAAW,WAAW;IAC1B,kEAAkE;IAClE,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,WAAW,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,QAAQ,CAAC;IAChB,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,WAAW,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,sFAAsF;IACtF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,WAAW,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,0FAA0F;IAC1F,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,sFAAsF;AACtF,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,2FAA2F;IAC3F,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,kBAAkB,OAAO,CAAC;AACvC,eAAO,MAAM,iBAAiB,QAAS,CAAC;AACxC,yDAAyD;AACzD,eAAO,MAAM,kBAAkB,QAAa,CAAC;AAM7C,oGAAoG;AACpG,eAAO,MAAM,YAAY,GAAI,WAAW,MAAM,EAAE,cAAc,MAAM,KAAG,MAA6E,CAAC;AAErJ;;;;GAIG;AACH,eAAO,MAAM,UAAU,GAAI,cAAc,MAAM,KAAG;IAAE,MAAM,EAAE,MAAM,EAAE,CAAA;CAAgD,CAAC;AAGrH,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,+FAA+F;AAC/F,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAIrE;AAED,wEAAwE;AACxE,wBAAsB,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAapE;AAED,2EAA2E;AAC3E,eAAO,MAAM,iBAAiB,QAAc,CAAC;AAE7C;;;GAGG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAerM;AAED,8DAA8D;AAC9D,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAUtE;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,WAAW,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7H,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAUxB;AAED,uFAAuF;AACvF,wBAAsB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,CAepF;AAED,mHAAmH;AACnH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,MAAM,CAAC,CAc5F;AAED,4EAA4E;AAC5E,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM,KAAG,MAA6C,CAAC;AAEvF,mGAAmG;AACnG,qBAAa,WAAY,SAAQ,KAAK;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBACZ,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAK5C;AAED,4GAA4G;AAC5G,wBAAsB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,GAAG,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAiBlJ;AAED,uCAAuC;AACvC,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAOnH"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { laneVfsUrl } from "../data/docUrls.js";
|
|
2
|
+
/** The lane Vault's did:web (the invocation audience), as `store.ts` derives it from the host. */
|
|
3
|
+
const networkVfsDid = () => `did:web:${new URL(laneVfsUrl()).host.replace(/:/g, "%3A")}`;
|
|
4
|
+
export const WRITE_PASS_SECONDS = 3600;
|
|
5
|
+
export const READ_PASS_SECONDS = 86_400;
|
|
6
|
+
/** The engine binds claim content of at most 256 KiB. */
|
|
7
|
+
export const MAX_ENVELOPE_BYTES = 256 * 1024;
|
|
8
|
+
/** One request's invocation: seconds, as `mintVfsBearer`. */
|
|
9
|
+
const INVOCATION_SECONDS = 300;
|
|
10
|
+
const now = () => Math.floor(Date.now() / 1000);
|
|
11
|
+
/** The Vault resource for one ask's lane. The entity must be lowercase (the Vault's scope rule). */
|
|
12
|
+
export const laneResource = (entityDid, collectionId) => `ixo:filesystem/${entityDid.toLowerCase()}/.claims/${collectionId}`;
|
|
13
|
+
/**
|
|
14
|
+
* The lane folder is hidden in the entity namespace; a reader who is the entity's controller (the poster) only sees it
|
|
15
|
+
* when every link of the chain reveals it (Vault ucan.ts nb.hidden; auth.ts reveals it itself only for lane-grant
|
|
16
|
+
* readers). Harmless for everyone else.
|
|
17
|
+
*/
|
|
18
|
+
export const laneReveal = (collectionId) => ({ hidden: [`/.claims/${collectionId}`] });
|
|
19
|
+
/* The rule lives beside the terms it reads (rubric/share.ts), where the posting path finds it without this module's imports. */
|
|
20
|
+
export { isPrivateTerms } from "../rubric/share.js";
|
|
21
|
+
/** Claude's did:key: the same mnemonic always gives the same key, so nothing new is stored. */
|
|
22
|
+
export async function agentDidKey(mnemonic) {
|
|
23
|
+
const { signerFromMnemonic } = await import("@ixo/ucan");
|
|
24
|
+
const { signer } = await signerFromMnemonic(mnemonic);
|
|
25
|
+
return { did: signer.did(), sign: async (bytes) => new Uint8Array((await signer.sign(bytes)).raw), signer };
|
|
26
|
+
}
|
|
27
|
+
/** The person signs Claude a pass for one ask's lane (browser side). */
|
|
28
|
+
export async function signPass(request) {
|
|
29
|
+
if (!(request.ttlSeconds > 0))
|
|
30
|
+
throw new Error("a pass needs an expiry");
|
|
31
|
+
const { signerFromMnemonic, createDelegation, serializeDelegation, parseDelegation } = await import("@ixo/ucan");
|
|
32
|
+
const { signer } = await signerFromMnemonic(request.signer.mnemonic, request.personDid);
|
|
33
|
+
const delegation = await createDelegation({
|
|
34
|
+
issuer: signer,
|
|
35
|
+
audience: request.agentDid,
|
|
36
|
+
capabilities: [{ with: laneResource(request.entityDid, request.collectionId), can: request.can, nb: laneReveal(request.collectionId) }],
|
|
37
|
+
expiration: now() + request.ttlSeconds,
|
|
38
|
+
...(request.proofs?.length ? { proofs: await Promise.all(request.proofs.map((one) => parseDelegation(one))) } : {}),
|
|
39
|
+
facts: [{ ask: request.collectionId, purpose: request.can === "fs/write" ? "answer" : "read", nonce: crypto.randomUUID() }]
|
|
40
|
+
});
|
|
41
|
+
return serializeDelegation(delegation);
|
|
42
|
+
}
|
|
43
|
+
/** The longest an approver's share lasts, whatever the ask's dates say. */
|
|
44
|
+
export const MAX_SHARE_SECONDS = 90 * 86_400;
|
|
45
|
+
/**
|
|
46
|
+
* The poster lets an approver who is not the poster read one ask's private answers (read only), until the ask's end
|
|
47
|
+
* plus its review window, never more than 90 days. Signed in the poster's browser; the worker keeps it beside the ask.
|
|
48
|
+
*/
|
|
49
|
+
export async function signShare(request) {
|
|
50
|
+
if (!request.approverDid.startsWith("did:ixo:"))
|
|
51
|
+
throw new Error("an approver is an account");
|
|
52
|
+
const { signerFromMnemonic, createDelegation, serializeDelegation } = await import("@ixo/ucan");
|
|
53
|
+
const { signer } = await signerFromMnemonic(request.signer.mnemonic, request.posterDid);
|
|
54
|
+
const expiration = Math.min(Math.floor(request.endsAt) + (request.reviewSeconds ?? 14 * 86_400), now() + MAX_SHARE_SECONDS);
|
|
55
|
+
if (expiration <= now())
|
|
56
|
+
throw new Error("the ask's review time is over");
|
|
57
|
+
return serializeDelegation(await createDelegation({
|
|
58
|
+
issuer: signer,
|
|
59
|
+
audience: request.approverDid,
|
|
60
|
+
capabilities: [{ with: laneResource(request.entityDid, request.collectionId), can: "fs/read", nb: laneReveal(request.collectionId) }],
|
|
61
|
+
expiration,
|
|
62
|
+
facts: [{ ask: request.collectionId, purpose: "approver", nonce: crypto.randomUUID() }]
|
|
63
|
+
}));
|
|
64
|
+
}
|
|
65
|
+
/** What a pass says, or null when it is not a pass at all. */
|
|
66
|
+
export async function readPass(pass) {
|
|
67
|
+
try {
|
|
68
|
+
const { parseDelegation } = await import("@ixo/ucan");
|
|
69
|
+
const delegation = await parseDelegation(pass);
|
|
70
|
+
const capability = delegation.capabilities[0];
|
|
71
|
+
if (!capability)
|
|
72
|
+
return null;
|
|
73
|
+
return { issuer: delegation.issuer.did(), audience: delegation.audience.did(), with: capability.with, can: capability.can, expiration: delegation.expiration };
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Why this pass will not do for this ask, in plain words; null when it will.
|
|
81
|
+
* `minSeconds` is how long it must still last (an answer takes minutes).
|
|
82
|
+
*/
|
|
83
|
+
export async function passProblem(pass, want) {
|
|
84
|
+
const facts = await readPass(pass);
|
|
85
|
+
if (!facts)
|
|
86
|
+
return "it could not be read";
|
|
87
|
+
if (facts.audience !== want.agentDid)
|
|
88
|
+
return "it was made for someone else";
|
|
89
|
+
if (want.personDid && facts.issuer !== want.personDid)
|
|
90
|
+
return "it was signed by another account";
|
|
91
|
+
if (facts.with !== laneResource(want.entityDid, want.collectionId))
|
|
92
|
+
return "it is for another ask";
|
|
93
|
+
/* A write pass reads too (the Vault's ability rule); a read pass never writes. */
|
|
94
|
+
if (!(facts.can === want.can || (facts.can === "fs/write" && want.can === "fs/read")))
|
|
95
|
+
return "it does not allow this";
|
|
96
|
+
if (!Number.isFinite(facts.expiration) || facts.expiration < now() + (want.minSeconds ?? 60))
|
|
97
|
+
return "it has run out";
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
/** A single-use invocation by Claude under the person's pass: one per HTTP request. */
|
|
101
|
+
export async function laneInvocation(request) {
|
|
102
|
+
const { createInvocation, parseDelegation, serializeInvocation } = await import("@ixo/ucan");
|
|
103
|
+
const pass = await parseDelegation(request.pass);
|
|
104
|
+
return serializeInvocation(await createInvocation({
|
|
105
|
+
issuer: request.agent.signer,
|
|
106
|
+
audience: request.vfsDid ?? networkVfsDid(),
|
|
107
|
+
capability: { with: laneResource(request.entityDid, request.collectionId), can: request.can, nb: laneReveal(request.collectionId) },
|
|
108
|
+
proofs: [pass],
|
|
109
|
+
/* Never outlives the pass: the Vault would refuse it anyway, and a clear expiry is easier to read. */
|
|
110
|
+
expiration: Math.min(now() + (request.ttlSeconds ?? INVOCATION_SECONDS), pass.expiration),
|
|
111
|
+
/* Two invocations in one second would otherwise share an address, and the Vault refuses a replay. */
|
|
112
|
+
facts: [{ nonce: crypto.randomUUID() }]
|
|
113
|
+
}));
|
|
114
|
+
}
|
|
115
|
+
/** A single-use invocation signed by the person's own session key (the site): actor and invoker are the person. */
|
|
116
|
+
export async function selfLaneInvocation(request) {
|
|
117
|
+
const { signerFromMnemonic, createInvocation, serializeInvocation, parseDelegation } = await import("@ixo/ucan");
|
|
118
|
+
const { signer } = await signerFromMnemonic(request.signer.mnemonic, `did:ixo:${request.signer.address}`);
|
|
119
|
+
const share = request.share ? await parseDelegation(request.share) : null;
|
|
120
|
+
return serializeInvocation(await createInvocation({
|
|
121
|
+
issuer: signer,
|
|
122
|
+
audience: request.vfsDid ?? networkVfsDid(),
|
|
123
|
+
capability: { with: laneResource(request.entityDid, request.collectionId), can: request.can, nb: laneReveal(request.collectionId) },
|
|
124
|
+
...(share ? { proofs: [share] } : {}),
|
|
125
|
+
expiration: Math.min(now() + (request.ttlSeconds ?? INVOCATION_SECONDS), share?.expiration ?? Infinity),
|
|
126
|
+
facts: [{ nonce: crypto.randomUUID() }]
|
|
127
|
+
}));
|
|
128
|
+
}
|
|
129
|
+
/** Where a lane file is read by CID, with a token (never a public link). */
|
|
130
|
+
export const laneCidUrl = (cid) => `${laneVfsUrl()}/api/fs/cid/${cid}`;
|
|
131
|
+
/** The Vault's refusal, kept so a caller can tell "not yet allowed" (retry) from anything else. */
|
|
132
|
+
export class LaneRefused extends Error {
|
|
133
|
+
status;
|
|
134
|
+
constructor(status, message) {
|
|
135
|
+
super(message);
|
|
136
|
+
this.status = status;
|
|
137
|
+
this.name = "LaneRefused";
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
/** Store bytes in the ask's lane. Never `public`: the Vault refuses that for the lane, and so does this. */
|
|
141
|
+
export async function uploadToLane(bytes, contentType, args) {
|
|
142
|
+
/* No dot-leading segment: `..` must never climb out of the ask's folder. */
|
|
143
|
+
if (!/^[A-Za-z0-9_-][A-Za-z0-9._-]*(\/[A-Za-z0-9_-][A-Za-z0-9._-]*)?$/.test(args.name))
|
|
144
|
+
throw new Error("bad lane file name");
|
|
145
|
+
const path = `/.claims/${args.collectionId}/${args.name}`;
|
|
146
|
+
const response = await fetch(`${laneVfsUrl()}/api/fs/files?path=${encodeURIComponent(path)}`, {
|
|
147
|
+
method: "POST",
|
|
148
|
+
headers: { authorization: `Bearer ${args.bearer}`, "content-type": contentType },
|
|
149
|
+
body: bytes,
|
|
150
|
+
signal: args.signal ?? AbortSignal.timeout(60_000)
|
|
151
|
+
});
|
|
152
|
+
if (!response.ok) {
|
|
153
|
+
const said = await response.text().catch(() => "");
|
|
154
|
+
throw new LaneRefused(response.status, `the private store refused the file (${response.status}${said ? `: ${said.slice(0, 160)}` : ""})`);
|
|
155
|
+
}
|
|
156
|
+
const meta = (await response.json());
|
|
157
|
+
if (typeof meta.cid !== "string" || !meta.cid)
|
|
158
|
+
throw new LaneRefused(502, "the private store gave no address for the file");
|
|
159
|
+
return { cid: meta.cid, url: laneCidUrl(meta.cid) };
|
|
160
|
+
}
|
|
161
|
+
/** Read a lane file's bytes by CID. */
|
|
162
|
+
export async function readFromLane(cid, args) {
|
|
163
|
+
const response = await fetch(laneCidUrl(cid), { headers: { authorization: `Bearer ${args.bearer}` }, signal: args.signal ?? AbortSignal.timeout(60_000) });
|
|
164
|
+
if (!response.ok) {
|
|
165
|
+
await response.body?.cancel().catch(() => undefined);
|
|
166
|
+
throw new LaneRefused(response.status, `the private store would not give the file (${response.status})`);
|
|
167
|
+
}
|
|
168
|
+
return new Uint8Array(await response.arrayBuffer());
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=lane.js.map
|