@opendatalabs/personal-server-ts-core 0.0.1-canary.00328bf
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/index.d.ts +408 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +1257 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/raw-envelope.d.ts +3 -0
- package/dist/api/raw-envelope.d.ts.map +1 -0
- package/dist/api/raw-envelope.js +215 -0
- package/dist/api/raw-envelope.js.map +1 -0
- package/dist/auth/index.d.ts +2 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +2 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/request.d.ts +28 -0
- package/dist/auth/request.d.ts.map +1 -0
- package/dist/auth/request.js +106 -0
- package/dist/auth/request.js.map +1 -0
- package/dist/client.d.ts +233 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +243 -0
- package/dist/client.js.map +1 -0
- package/dist/config/defaults.d.ts +12 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +12 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/index.d.ts +3 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +3 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/paths.d.ts +9 -0
- package/dist/config/paths.d.ts.map +1 -0
- package/dist/config/paths.js +14 -0
- package/dist/config/paths.js.map +1 -0
- package/dist/contracts/access-logs.d.ts +8 -0
- package/dist/contracts/access-logs.d.ts.map +1 -0
- package/dist/contracts/access-logs.js +7 -0
- package/dist/contracts/access-logs.js.map +1 -0
- package/dist/contracts/auth-device.d.ts +70 -0
- package/dist/contracts/auth-device.d.ts.map +1 -0
- package/dist/contracts/auth-device.js +163 -0
- package/dist/contracts/auth-device.js.map +1 -0
- package/dist/contracts/binary.d.ts +66 -0
- package/dist/contracts/binary.d.ts.map +1 -0
- package/dist/contracts/binary.js +123 -0
- package/dist/contracts/binary.js.map +1 -0
- package/dist/contracts/config.d.ts +5 -0
- package/dist/contracts/config.d.ts.map +1 -0
- package/dist/contracts/config.js +30 -0
- package/dist/contracts/config.js.map +1 -0
- package/dist/contracts/data.d.ts +165 -0
- package/dist/contracts/data.d.ts.map +1 -0
- package/dist/contracts/data.js +371 -0
- package/dist/contracts/data.js.map +1 -0
- package/dist/contracts/grants.d.ts +45 -0
- package/dist/contracts/grants.d.ts.map +1 -0
- package/dist/contracts/grants.js +177 -0
- package/dist/contracts/grants.js.map +1 -0
- package/dist/contracts/http.d.ts +21 -0
- package/dist/contracts/http.d.ts.map +1 -0
- package/dist/contracts/http.js +49 -0
- package/dist/contracts/http.js.map +1 -0
- package/dist/contracts/index.d.ts +16 -0
- package/dist/contracts/index.d.ts.map +1 -0
- package/dist/contracts/index.js +10 -0
- package/dist/contracts/index.js.map +1 -0
- package/dist/contracts/oauth.d.ts +38 -0
- package/dist/contracts/oauth.d.ts.map +1 -0
- package/dist/contracts/oauth.js +130 -0
- package/dist/contracts/oauth.js.map +1 -0
- package/dist/contracts/sync.d.ts +10 -0
- package/dist/contracts/sync.d.ts.map +1 -0
- package/dist/contracts/sync.js +35 -0
- package/dist/contracts/sync.js.map +1 -0
- package/dist/derivatives/answer-shape.d.ts +83 -0
- package/dist/derivatives/answer-shape.d.ts.map +1 -0
- package/dist/derivatives/answer-shape.js +320 -0
- package/dist/derivatives/answer-shape.js.map +1 -0
- package/dist/derivatives/api.d.ts +48 -0
- package/dist/derivatives/api.d.ts.map +1 -0
- package/dist/derivatives/api.js +374 -0
- package/dist/derivatives/api.js.map +1 -0
- package/dist/derivatives/compute.d.ts +112 -0
- package/dist/derivatives/compute.d.ts.map +1 -0
- package/dist/derivatives/compute.js +476 -0
- package/dist/derivatives/compute.js.map +1 -0
- package/dist/derivatives/e2ee/aad.d.ts +22 -0
- package/dist/derivatives/e2ee/aad.d.ts.map +1 -0
- package/dist/derivatives/e2ee/aad.js +32 -0
- package/dist/derivatives/e2ee/aad.js.map +1 -0
- package/dist/derivatives/e2ee/attestation.d.ts +134 -0
- package/dist/derivatives/e2ee/attestation.d.ts.map +1 -0
- package/dist/derivatives/e2ee/attestation.js +248 -0
- package/dist/derivatives/e2ee/attestation.js.map +1 -0
- package/dist/derivatives/e2ee/index.d.ts +6 -0
- package/dist/derivatives/e2ee/index.d.ts.map +1 -0
- package/dist/derivatives/e2ee/index.js +6 -0
- package/dist/derivatives/e2ee/index.js.map +1 -0
- package/dist/derivatives/e2ee/jcs.d.ts +17 -0
- package/dist/derivatives/e2ee/jcs.d.ts.map +1 -0
- package/dist/derivatives/e2ee/jcs.js +55 -0
- package/dist/derivatives/e2ee/jcs.js.map +1 -0
- package/dist/derivatives/e2ee/phala.d.ts +62 -0
- package/dist/derivatives/e2ee/phala.d.ts.map +1 -0
- package/dist/derivatives/e2ee/phala.js +168 -0
- package/dist/derivatives/e2ee/phala.js.map +1 -0
- package/dist/derivatives/e2ee/suite.d.ts +56 -0
- package/dist/derivatives/e2ee/suite.d.ts.map +1 -0
- package/dist/derivatives/e2ee/suite.js +164 -0
- package/dist/derivatives/e2ee/suite.js.map +1 -0
- package/dist/derivatives/index.d.ts +11 -0
- package/dist/derivatives/index.d.ts.map +1 -0
- package/dist/derivatives/index.js +11 -0
- package/dist/derivatives/index.js.map +1 -0
- package/dist/derivatives/inference.d.ts +151 -0
- package/dist/derivatives/inference.d.ts.map +1 -0
- package/dist/derivatives/inference.js +262 -0
- package/dist/derivatives/inference.js.map +1 -0
- package/dist/derivatives/prompt.d.ts +99 -0
- package/dist/derivatives/prompt.d.ts.map +1 -0
- package/dist/derivatives/prompt.js +281 -0
- package/dist/derivatives/prompt.js.map +1 -0
- package/dist/derivatives/registration.d.ts +56 -0
- package/dist/derivatives/registration.d.ts.map +1 -0
- package/dist/derivatives/registration.js +187 -0
- package/dist/derivatives/registration.js.map +1 -0
- package/dist/derivatives/scheduler.d.ts +114 -0
- package/dist/derivatives/scheduler.d.ts.map +1 -0
- package/dist/derivatives/scheduler.js +331 -0
- package/dist/derivatives/scheduler.js.map +1 -0
- package/dist/derivatives/store.d.ts +14 -0
- package/dist/derivatives/store.d.ts.map +1 -0
- package/dist/derivatives/store.js +79 -0
- package/dist/derivatives/store.js.map +1 -0
- package/dist/derivatives/types.d.ts +102 -0
- package/dist/derivatives/types.d.ts.map +1 -0
- package/dist/derivatives/types.js +29 -0
- package/dist/derivatives/types.js.map +1 -0
- package/dist/errors/catalog.d.ts +125 -0
- package/dist/errors/catalog.d.ts.map +1 -0
- package/dist/errors/catalog.js +198 -0
- package/dist/errors/catalog.js.map +1 -0
- package/dist/errors/pdpp-catalog.d.ts +36 -0
- package/dist/errors/pdpp-catalog.d.ts.map +1 -0
- package/dist/errors/pdpp-catalog.js +82 -0
- package/dist/errors/pdpp-catalog.js.map +1 -0
- package/dist/grants/index.d.ts +5 -0
- package/dist/grants/index.d.ts.map +1 -0
- package/dist/grants/index.js +6 -0
- package/dist/grants/index.js.map +1 -0
- package/dist/grants/pdpp-binding-store.d.ts +58 -0
- package/dist/grants/pdpp-binding-store.d.ts.map +1 -0
- package/dist/grants/pdpp-binding-store.js +97 -0
- package/dist/grants/pdpp-binding-store.js.map +1 -0
- package/dist/grants/pdpp-binding.d.ts +179 -0
- package/dist/grants/pdpp-binding.d.ts.map +1 -0
- package/dist/grants/pdpp-binding.js +214 -0
- package/dist/grants/pdpp-binding.js.map +1 -0
- package/dist/keys/index.d.ts +3 -0
- package/dist/keys/index.d.ts.map +1 -0
- package/dist/keys/index.js +2 -0
- package/dist/keys/index.js.map +1 -0
- package/dist/keys/public-only-account.d.ts +8 -0
- package/dist/keys/public-only-account.d.ts.map +1 -0
- package/dist/keys/public-only-account.js +21 -0
- package/dist/keys/public-only-account.js.map +1 -0
- package/dist/keys/server-account.d.ts +24 -0
- package/dist/keys/server-account.d.ts.map +1 -0
- package/dist/keys/server-account.js +2 -0
- package/dist/keys/server-account.js.map +1 -0
- package/dist/lineage/attestation.d.ts +42 -0
- package/dist/lineage/attestation.d.ts.map +1 -0
- package/dist/lineage/attestation.js +25 -0
- package/dist/lineage/attestation.js.map +1 -0
- package/dist/lineage/gateway.d.ts +105 -0
- package/dist/lineage/gateway.d.ts.map +1 -0
- package/dist/lineage/gateway.js +242 -0
- package/dist/lineage/gateway.js.map +1 -0
- package/dist/lineage/index.d.ts +5 -0
- package/dist/lineage/index.d.ts.map +1 -0
- package/dist/lineage/index.js +5 -0
- package/dist/lineage/index.js.map +1 -0
- package/dist/lineage/lineage.d.ts +141 -0
- package/dist/lineage/lineage.d.ts.map +1 -0
- package/dist/lineage/lineage.js +255 -0
- package/dist/lineage/lineage.js.map +1 -0
- package/dist/logger/index.d.ts +9 -0
- package/dist/logger/index.d.ts.map +1 -0
- package/dist/logger/index.js +5 -0
- package/dist/logger/index.js.map +1 -0
- package/dist/logging/access-log.d.ts +23 -0
- package/dist/logging/access-log.d.ts.map +1 -0
- package/dist/logging/access-log.js +2 -0
- package/dist/logging/access-log.js.map +1 -0
- package/dist/logging/access-reader.d.ts +14 -0
- package/dist/logging/access-reader.d.ts.map +1 -0
- package/dist/logging/access-reader.js +2 -0
- package/dist/logging/access-reader.js.map +1 -0
- package/dist/mcp/activity.d.ts +68 -0
- package/dist/mcp/activity.d.ts.map +1 -0
- package/dist/mcp/activity.js +111 -0
- package/dist/mcp/activity.js.map +1 -0
- package/dist/mcp/builder-registration.d.ts +24 -0
- package/dist/mcp/builder-registration.d.ts.map +1 -0
- package/dist/mcp/builder-registration.js +89 -0
- package/dist/mcp/builder-registration.js.map +1 -0
- package/dist/mcp/connection-api.d.ts +201 -0
- package/dist/mcp/connection-api.d.ts.map +1 -0
- package/dist/mcp/connection-api.js +506 -0
- package/dist/mcp/connection-api.js.map +1 -0
- package/dist/mcp/grantee.d.ts +52 -0
- package/dist/mcp/grantee.d.ts.map +1 -0
- package/dist/mcp/grantee.js +91 -0
- package/dist/mcp/grantee.js.map +1 -0
- package/dist/mcp/index.d.ts +12 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +12 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/read-client.d.ts +176 -0
- package/dist/mcp/read-client.d.ts.map +1 -0
- package/dist/mcp/read-client.js +579 -0
- package/dist/mcp/read-client.js.map +1 -0
- package/dist/mcp/resources.d.ts +37 -0
- package/dist/mcp/resources.d.ts.map +1 -0
- package/dist/mcp/resources.js +114 -0
- package/dist/mcp/resources.js.map +1 -0
- package/dist/mcp/search/index.d.ts +34 -0
- package/dist/mcp/search/index.d.ts.map +1 -0
- package/dist/mcp/search/index.js +156 -0
- package/dist/mcp/search/index.js.map +1 -0
- package/dist/mcp/server.d.ts +72 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +447 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/session.d.ts +160 -0
- package/dist/mcp/session.d.ts.map +1 -0
- package/dist/mcp/session.js +243 -0
- package/dist/mcp/session.js.map +1 -0
- package/dist/mcp/store.d.ts +13 -0
- package/dist/mcp/store.d.ts.map +1 -0
- package/dist/mcp/store.js +119 -0
- package/dist/mcp/store.js.map +1 -0
- package/dist/mcp/token-expiry.d.ts +38 -0
- package/dist/mcp/token-expiry.d.ts.map +1 -0
- package/dist/mcp/token-expiry.js +55 -0
- package/dist/mcp/token-expiry.js.map +1 -0
- package/dist/mcp/tools.d.ts +95 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +1381 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/mcp/types.d.ts +135 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +24 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/payment/index.d.ts +2 -0
- package/dist/payment/index.d.ts.map +1 -0
- package/dist/payment/index.js +2 -0
- package/dist/payment/index.js.map +1 -0
- package/dist/payment/x402.d.ts +155 -0
- package/dist/payment/x402.d.ts.map +1 -0
- package/dist/payment/x402.js +402 -0
- package/dist/payment/x402.js.map +1 -0
- package/dist/pdpp/approval.d.ts +182 -0
- package/dist/pdpp/approval.d.ts.map +1 -0
- package/dist/pdpp/approval.js +337 -0
- package/dist/pdpp/approval.js.map +1 -0
- package/dist/pdpp/client-identity.d.ts +88 -0
- package/dist/pdpp/client-identity.d.ts.map +1 -0
- package/dist/pdpp/client-identity.js +183 -0
- package/dist/pdpp/client-identity.js.map +1 -0
- package/dist/pdpp/client-metadata.d.ts +95 -0
- package/dist/pdpp/client-metadata.d.ts.map +1 -0
- package/dist/pdpp/client-metadata.js +96 -0
- package/dist/pdpp/client-metadata.js.map +1 -0
- package/dist/pdpp/declaration.d.ts +118 -0
- package/dist/pdpp/declaration.d.ts.map +1 -0
- package/dist/pdpp/declaration.js +549 -0
- package/dist/pdpp/declaration.js.map +1 -0
- package/dist/pdpp/index.d.ts +35 -0
- package/dist/pdpp/index.d.ts.map +1 -0
- package/dist/pdpp/index.js +22 -0
- package/dist/pdpp/index.js.map +1 -0
- package/dist/pdpp/issuance.d.ts +91 -0
- package/dist/pdpp/issuance.d.ts.map +1 -0
- package/dist/pdpp/issuance.js +124 -0
- package/dist/pdpp/issuance.js.map +1 -0
- package/dist/pdpp/pkce.d.ts +53 -0
- package/dist/pdpp/pkce.d.ts.map +1 -0
- package/dist/pdpp/pkce.js +109 -0
- package/dist/pdpp/pkce.js.map +1 -0
- package/dist/pdpp/redirect.d.ts +60 -0
- package/dist/pdpp/redirect.d.ts.map +1 -0
- package/dist/pdpp/redirect.js +125 -0
- package/dist/pdpp/redirect.js.map +1 -0
- package/dist/pdpp/resolve.d.ts +53 -0
- package/dist/pdpp/resolve.d.ts.map +1 -0
- package/dist/pdpp/resolve.js +218 -0
- package/dist/pdpp/resolve.js.map +1 -0
- package/dist/pdpp/review.d.ts +155 -0
- package/dist/pdpp/review.d.ts.map +1 -0
- package/dist/pdpp/review.js +142 -0
- package/dist/pdpp/review.js.map +1 -0
- package/dist/pdpp/selection.d.ts +43 -0
- package/dist/pdpp/selection.d.ts.map +1 -0
- package/dist/pdpp/selection.js +211 -0
- package/dist/pdpp/selection.js.map +1 -0
- package/dist/pdpp/store.d.ts +204 -0
- package/dist/pdpp/store.d.ts.map +1 -0
- package/dist/pdpp/store.js +501 -0
- package/dist/pdpp/store.js.map +1 -0
- package/dist/pdpp/tokens.d.ts +149 -0
- package/dist/pdpp/tokens.d.ts.map +1 -0
- package/dist/pdpp/tokens.js +387 -0
- package/dist/pdpp/tokens.js.map +1 -0
- package/dist/pdpp/types.d.ts +258 -0
- package/dist/pdpp/types.d.ts.map +1 -0
- package/dist/pdpp/types.js +40 -0
- package/dist/pdpp/types.js.map +1 -0
- package/dist/pdpp-version.d.ts +28 -0
- package/dist/pdpp-version.d.ts.map +1 -0
- package/dist/pdpp-version.js +28 -0
- package/dist/pdpp-version.js.map +1 -0
- package/dist/policy/data-read.d.ts +56 -0
- package/dist/policy/data-read.d.ts.map +1 -0
- package/dist/policy/data-read.js +176 -0
- package/dist/policy/data-read.js.map +1 -0
- package/dist/policy/data-write.d.ts +69 -0
- package/dist/policy/data-write.d.ts.map +1 -0
- package/dist/policy/data-write.js +131 -0
- package/dist/policy/data-write.js.map +1 -0
- package/dist/policy/index.d.ts +4 -0
- package/dist/policy/index.d.ts.map +1 -0
- package/dist/policy/index.js +4 -0
- package/dist/policy/index.js.map +1 -0
- package/dist/policy/signed-artifacts.d.ts +17 -0
- package/dist/policy/signed-artifacts.d.ts.map +1 -0
- package/dist/policy/signed-artifacts.js +110 -0
- package/dist/policy/signed-artifacts.js.map +1 -0
- package/dist/ports/index.d.ts +243 -0
- package/dist/ports/index.d.ts.map +1 -0
- package/dist/ports/index.js +7 -0
- package/dist/ports/index.js.map +1 -0
- package/dist/ports/pdpp-auth.d.ts +103 -0
- package/dist/ports/pdpp-auth.d.ts.map +1 -0
- package/dist/ports/pdpp-auth.js +37 -0
- package/dist/ports/pdpp-auth.js.map +1 -0
- package/dist/ports/pdpp-auth.test-utils.d.ts +9 -0
- package/dist/ports/pdpp-auth.test-utils.d.ts.map +1 -0
- package/dist/ports/pdpp-auth.test-utils.js +18 -0
- package/dist/ports/pdpp-auth.test-utils.js.map +1 -0
- package/dist/schemas/server-config.d.ts +190 -0
- package/dist/schemas/server-config.d.ts.map +1 -0
- package/dist/schemas/server-config.js +282 -0
- package/dist/schemas/server-config.js.map +1 -0
- package/dist/signing/index.d.ts +3 -0
- package/dist/signing/index.d.ts.map +1 -0
- package/dist/signing/index.js +3 -0
- package/dist/signing/index.js.map +1 -0
- package/dist/signing/request-signer.d.ts +20 -0
- package/dist/signing/request-signer.d.ts.map +1 -0
- package/dist/signing/request-signer.js +23 -0
- package/dist/signing/request-signer.js.map +1 -0
- package/dist/signing/signer.d.ts +40 -0
- package/dist/signing/signer.d.ts.map +1 -0
- package/dist/signing/signer.js +56 -0
- package/dist/signing/signer.js.map +1 -0
- package/dist/storage/adapters/index.d.ts +4 -0
- package/dist/storage/adapters/index.d.ts.map +1 -0
- package/dist/storage/adapters/index.js +3 -0
- package/dist/storage/adapters/index.js.map +1 -0
- package/dist/storage/adapters/interface.d.ts +57 -0
- package/dist/storage/adapters/interface.d.ts.map +1 -0
- package/dist/storage/adapters/interface.js +2 -0
- package/dist/storage/adapters/interface.js.map +1 -0
- package/dist/storage/adapters/sdk.d.ts +23 -0
- package/dist/storage/adapters/sdk.d.ts.map +1 -0
- package/dist/storage/adapters/sdk.js +73 -0
- package/dist/storage/adapters/sdk.js.map +1 -0
- package/dist/storage/adapters/vana.d.ts +12 -0
- package/dist/storage/adapters/vana.d.ts.map +1 -0
- package/dist/storage/adapters/vana.js +111 -0
- package/dist/storage/adapters/vana.js.map +1 -0
- package/dist/storage/blocks/build.d.ts +20 -0
- package/dist/storage/blocks/build.d.ts.map +1 -0
- package/dist/storage/blocks/build.js +378 -0
- package/dist/storage/blocks/build.js.map +1 -0
- package/dist/storage/blocks/cursor.d.ts +33 -0
- package/dist/storage/blocks/cursor.d.ts.map +1 -0
- package/dist/storage/blocks/cursor.js +142 -0
- package/dist/storage/blocks/cursor.js.map +1 -0
- package/dist/storage/blocks/errors.d.ts +6 -0
- package/dist/storage/blocks/errors.d.ts.map +1 -0
- package/dist/storage/blocks/errors.js +9 -0
- package/dist/storage/blocks/errors.js.map +1 -0
- package/dist/storage/blocks/index.d.ts +6 -0
- package/dist/storage/blocks/index.d.ts.map +1 -0
- package/dist/storage/blocks/index.js +5 -0
- package/dist/storage/blocks/index.js.map +1 -0
- package/dist/storage/blocks/select.d.ts +29 -0
- package/dist/storage/blocks/select.d.ts.map +1 -0
- package/dist/storage/blocks/select.js +120 -0
- package/dist/storage/blocks/select.js.map +1 -0
- package/dist/storage/blocks/types.d.ts +56 -0
- package/dist/storage/blocks/types.d.ts.map +1 -0
- package/dist/storage/blocks/types.js +2 -0
- package/dist/storage/blocks/types.js.map +1 -0
- package/dist/storage/hierarchy/index.d.ts +3 -0
- package/dist/storage/hierarchy/index.d.ts.map +1 -0
- package/dist/storage/hierarchy/index.js +2 -0
- package/dist/storage/hierarchy/index.js.map +1 -0
- package/dist/storage/hierarchy/manager.d.ts +9 -0
- package/dist/storage/hierarchy/manager.d.ts.map +1 -0
- package/dist/storage/hierarchy/manager.js +2 -0
- package/dist/storage/hierarchy/manager.js.map +1 -0
- package/dist/storage/hierarchy/paths.d.ts +11 -0
- package/dist/storage/hierarchy/paths.d.ts.map +1 -0
- package/dist/storage/hierarchy/paths.js +43 -0
- package/dist/storage/hierarchy/paths.js.map +1 -0
- package/dist/storage/index/index.d.ts +3 -0
- package/dist/storage/index/index.d.ts.map +1 -0
- package/dist/storage/index/index.js +2 -0
- package/dist/storage/index/index.js.map +1 -0
- package/dist/storage/index/manager.d.ts +63 -0
- package/dist/storage/index/manager.d.ts.map +1 -0
- package/dist/storage/index/manager.js +2 -0
- package/dist/storage/index/manager.js.map +1 -0
- package/dist/storage/index/schema.d.ts +2 -0
- package/dist/storage/index/schema.d.ts.map +1 -0
- package/dist/storage/index/schema.js +2 -0
- package/dist/storage/index/schema.js.map +1 -0
- package/dist/storage/index/types.d.ts +37 -0
- package/dist/storage/index/types.d.ts.map +1 -0
- package/dist/storage/index/types.js +2 -0
- package/dist/storage/index/types.js.map +1 -0
- package/dist/storage/pdpp-records/cursor.d.ts +27 -0
- package/dist/storage/pdpp-records/cursor.d.ts.map +1 -0
- package/dist/storage/pdpp-records/cursor.js +49 -0
- package/dist/storage/pdpp-records/cursor.js.map +1 -0
- package/dist/storage/pdpp-records/enforcement.d.ts +37 -0
- package/dist/storage/pdpp-records/enforcement.d.ts.map +1 -0
- package/dist/storage/pdpp-records/enforcement.js +79 -0
- package/dist/storage/pdpp-records/enforcement.js.map +1 -0
- package/dist/storage/pdpp-records/index.d.ts +8 -0
- package/dist/storage/pdpp-records/index.d.ts.map +1 -0
- package/dist/storage/pdpp-records/index.js +8 -0
- package/dist/storage/pdpp-records/index.js.map +1 -0
- package/dist/storage/pdpp-records/interface.d.ts +49 -0
- package/dist/storage/pdpp-records/interface.d.ts.map +1 -0
- package/dist/storage/pdpp-records/interface.js +2 -0
- package/dist/storage/pdpp-records/interface.js.map +1 -0
- package/dist/storage/pdpp-records/memory-store.d.ts +9 -0
- package/dist/storage/pdpp-records/memory-store.d.ts.map +1 -0
- package/dist/storage/pdpp-records/memory-store.js +0 -0
- package/dist/storage/pdpp-records/memory-store.js.map +1 -0
- package/dist/storage/pdpp-records/record-key.d.ts +52 -0
- package/dist/storage/pdpp-records/record-key.d.ts.map +1 -0
- package/dist/storage/pdpp-records/record-key.js +97 -0
- package/dist/storage/pdpp-records/record-key.js.map +1 -0
- package/dist/storage/pdpp-records/stream-declaration.d.ts +43 -0
- package/dist/storage/pdpp-records/stream-declaration.d.ts.map +1 -0
- package/dist/storage/pdpp-records/stream-declaration.js +17 -0
- package/dist/storage/pdpp-records/stream-declaration.js.map +1 -0
- package/dist/storage/pdpp-records/types.d.ts +93 -0
- package/dist/storage/pdpp-records/types.d.ts.map +1 -0
- package/dist/storage/pdpp-records/types.js +17 -0
- package/dist/storage/pdpp-records/types.js.map +1 -0
- package/dist/storage/preview.d.ts +12 -0
- package/dist/storage/preview.d.ts.map +1 -0
- package/dist/storage/preview.js +239 -0
- package/dist/storage/preview.js.map +1 -0
- package/dist/sync/cursor.d.ts +10 -0
- package/dist/sync/cursor.d.ts.map +1 -0
- package/dist/sync/cursor.js +2 -0
- package/dist/sync/cursor.js.map +1 -0
- package/dist/sync/data-point-feed.d.ts +35 -0
- package/dist/sync/data-point-feed.d.ts.map +1 -0
- package/dist/sync/data-point-feed.js +122 -0
- package/dist/sync/data-point-feed.js.map +1 -0
- package/dist/sync/data-point-id.d.ts +7 -0
- package/dist/sync/data-point-id.d.ts.map +1 -0
- package/dist/sync/data-point-id.js +16 -0
- package/dist/sync/data-point-id.js.map +1 -0
- package/dist/sync/delete-data-port.d.ts +50 -0
- package/dist/sync/delete-data-port.d.ts.map +1 -0
- package/dist/sync/delete-data-port.js +244 -0
- package/dist/sync/delete-data-port.js.map +1 -0
- package/dist/sync/engine/sync-manager.d.ts +58 -0
- package/dist/sync/engine/sync-manager.d.ts.map +1 -0
- package/dist/sync/engine/sync-manager.js +285 -0
- package/dist/sync/engine/sync-manager.js.map +1 -0
- package/dist/sync/index.d.ts +15 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +14 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/sync/issues.d.ts +55 -0
- package/dist/sync/issues.d.ts.map +1 -0
- package/dist/sync/issues.js +168 -0
- package/dist/sync/issues.js.map +1 -0
- package/dist/sync/pdpp-import.d.ts +192 -0
- package/dist/sync/pdpp-import.d.ts.map +1 -0
- package/dist/sync/pdpp-import.js +422 -0
- package/dist/sync/pdpp-import.js.map +1 -0
- package/dist/sync/pending-blob-deletions.d.ts +29 -0
- package/dist/sync/pending-blob-deletions.d.ts.map +1 -0
- package/dist/sync/pending-blob-deletions.js +116 -0
- package/dist/sync/pending-blob-deletions.js.map +1 -0
- package/dist/sync/retry-memory.d.ts +33 -0
- package/dist/sync/retry-memory.d.ts.map +1 -0
- package/dist/sync/retry-memory.js +68 -0
- package/dist/sync/retry-memory.js.map +1 -0
- package/dist/sync/scope-deletions.d.ts +155 -0
- package/dist/sync/scope-deletions.d.ts.map +1 -0
- package/dist/sync/scope-deletions.js +225 -0
- package/dist/sync/scope-deletions.js.map +1 -0
- package/dist/sync/tombstone.d.ts +27 -0
- package/dist/sync/tombstone.d.ts.map +1 -0
- package/dist/sync/tombstone.js +28 -0
- package/dist/sync/tombstone.js.map +1 -0
- package/dist/sync/types.d.ts +27 -0
- package/dist/sync/types.d.ts.map +1 -0
- package/dist/sync/types.js +2 -0
- package/dist/sync/types.js.map +1 -0
- package/dist/sync/workers/delete.d.ts +163 -0
- package/dist/sync/workers/delete.d.ts.map +1 -0
- package/dist/sync/workers/delete.js +474 -0
- package/dist/sync/workers/delete.js.map +1 -0
- package/dist/sync/workers/download.d.ts +159 -0
- package/dist/sync/workers/download.d.ts.map +1 -0
- package/dist/sync/workers/download.js +731 -0
- package/dist/sync/workers/download.js.map +1 -0
- package/dist/sync/workers/upload.d.ts +98 -0
- package/dist/sync/workers/upload.d.ts.map +1 -0
- package/dist/sync/workers/upload.js +412 -0
- package/dist/sync/workers/upload.js.map +1 -0
- package/dist/test-utils/e2ee-fixtures.d.ts +94 -0
- package/dist/test-utils/e2ee-fixtures.d.ts.map +1 -0
- package/dist/test-utils/e2ee-fixtures.js +116 -0
- package/dist/test-utils/e2ee-fixtures.js.map +1 -0
- package/dist/test-utils/e2ee-gateway.d.ts +61 -0
- package/dist/test-utils/e2ee-gateway.d.ts.map +1 -0
- package/dist/test-utils/e2ee-gateway.js +248 -0
- package/dist/test-utils/e2ee-gateway.js.map +1 -0
- package/dist/test-utils/index.d.ts +5 -0
- package/dist/test-utils/index.d.ts.map +1 -0
- package/dist/test-utils/index.js +5 -0
- package/dist/test-utils/index.js.map +1 -0
- package/dist/test-utils/memory-storage.d.ts +12 -0
- package/dist/test-utils/memory-storage.d.ts.map +1 -0
- package/dist/test-utils/memory-storage.js +146 -0
- package/dist/test-utils/memory-storage.js.map +1 -0
- package/dist/test-utils/wallet.d.ts +47 -0
- package/dist/test-utils/wallet.d.ts.map +1 -0
- package/dist/test-utils/wallet.js +98 -0
- package/dist/test-utils/wallet.js.map +1 -0
- package/dist/write/attribution.d.ts +185 -0
- package/dist/write/attribution.d.ts.map +1 -0
- package/dist/write/attribution.js +450 -0
- package/dist/write/attribution.js.map +1 -0
- package/dist/write/authorize.d.ts +77 -0
- package/dist/write/authorize.d.ts.map +1 -0
- package/dist/write/authorize.js +109 -0
- package/dist/write/authorize.js.map +1 -0
- package/dist/write/index.d.ts +5 -0
- package/dist/write/index.d.ts.map +1 -0
- package/dist/write/index.js +5 -0
- package/dist/write/index.js.map +1 -0
- package/dist/write/route.d.ts +61 -0
- package/dist/write/route.d.ts.map +1 -0
- package/dist/write/route.js +132 -0
- package/dist/write/route.js.map +1 -0
- package/dist/write/session.d.ts +96 -0
- package/dist/write/session.d.ts.map +1 -0
- package/dist/write/session.js +136 -0
- package/dist/write/session.js.map +1 -0
- package/package.json +175 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PDPP Core v0.1.0 authorization types.
|
|
3
|
+
*
|
|
4
|
+
* These mirror the normative field tables in PDPP Core §6 (Selection Request)
|
|
5
|
+
* and §7 (Grant). Where this file and the spec disagree, the spec wins — §7
|
|
6
|
+
* says so explicitly about its own TypeScript mirror.
|
|
7
|
+
*
|
|
8
|
+
* The PDPP grant model is deliberately separate from the Vana chain grant in
|
|
9
|
+
* `../grants/`. That one is an EIP-712 payload binding a builder address to
|
|
10
|
+
* dot-scopes; this one is an RFC 9396 consent artifact binding an OAuth client
|
|
11
|
+
* to declaration-resolved streams. They are different authorities over
|
|
12
|
+
* different data and must not be conflated.
|
|
13
|
+
*/
|
|
14
|
+
/** The RFC 9396 `type` value that marks an authorization detail as PDPP. */
|
|
15
|
+
export const PDPP_DATA_ACCESS_TYPE = "https://pdpp.dev/data-access";
|
|
16
|
+
/** The grant schema version this implementation issues and accepts. */
|
|
17
|
+
export const PDPP_GRANT_VERSION = "0.1.0";
|
|
18
|
+
/**
|
|
19
|
+
* The PDPP HTTP API contract version, sent and echoed in the `PDPP-Version`
|
|
20
|
+
* header. Normative value from Core §8 "API versioning".
|
|
21
|
+
*
|
|
22
|
+
* §7 "Version layering" is explicit that the three version axes MUST NOT be
|
|
23
|
+
* conflated, and this is the one that is easiest to get wrong: it is the HTTP
|
|
24
|
+
* *contract* version, not `PDPP_GRANT_VERSION` (the grant schema, `0.1.0`) and
|
|
25
|
+
* not `source_declaration.version` (an opaque declaration revision). This
|
|
26
|
+
* previously carried the grant schema version, which meant a client pinning
|
|
27
|
+
* the spec's own header value was rejected by the AS while the RS accepted it —
|
|
28
|
+
* a client could reach only half the server.
|
|
29
|
+
*
|
|
30
|
+
* Both the AS and RS surfaces import this one constant so they cannot drift
|
|
31
|
+
* apart again.
|
|
32
|
+
*/
|
|
33
|
+
export const PDPP_API_VERSION = "2026-04-06";
|
|
34
|
+
/**
|
|
35
|
+
* The one purpose code Core gives a protocol-level consent requirement
|
|
36
|
+
* (§6 "AI training consent"). Every other code is a structured policy
|
|
37
|
+
* declaration the AS displays but does not gate on.
|
|
38
|
+
*/
|
|
39
|
+
export const AI_TRAINING_PURPOSE = "https://pdpp.dev/purpose/ai_training";
|
|
40
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/pdpp/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,4EAA4E;AAC5E,MAAM,CAAC,MAAM,qBAAqB,GAAG,8BAA8B,CAAC;AAEpE,uEAAuE;AACvE,MAAM,CAAC,MAAM,kBAAkB,GAAG,OAAO,CAAC;AAE1C;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,YAAY,CAAC;AAE7C;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,sCAAsC,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The single `PDPP-Version` value both the Authorization Server and Resource
|
|
3
|
+
* Server surfaces of this Personal Server negotiate against (spec-core.md
|
|
4
|
+
* §8 "API versioning").
|
|
5
|
+
*
|
|
6
|
+
* Spec-core.md's own normative example is a date string
|
|
7
|
+
* (`PDPP-Version: 2026-04-06`), not a semver string — this constant follows
|
|
8
|
+
* that convention. Both AS and RS route modules MUST import this one
|
|
9
|
+
* constant rather than declaring their own local copy: an AS and RS that
|
|
10
|
+
* hard-reject an unrecognized `PDPP-Version` (spec §8 requires this) but
|
|
11
|
+
* accept mutually exclusive values make half the server unreachable to any
|
|
12
|
+
* client that pins a version header.
|
|
13
|
+
*
|
|
14
|
+
* Found in an independent combined AS+RS review (2026-09-17): the AS lane's
|
|
15
|
+
* `packages/core/src/pdpp/types.ts` previously declared its own
|
|
16
|
+
* `PDPP_API_VERSION = "0.1.0"` (a semver-shaped grant/API contract version,
|
|
17
|
+
* not the spec's `PDPP-Version` header value) alongside this module's
|
|
18
|
+
* `PDPP-Version = "2026-04-06"` in the RS route files. A client sending
|
|
19
|
+
* either header value could reach only one half of the server. Fix: one
|
|
20
|
+
* shared constant, spec-date-shaped, imported by both surfaces. The AS lane
|
|
21
|
+
* needs to adopt this constant (or reconcile `PDPP_API_VERSION`'s meaning to
|
|
22
|
+
* something distinct from the `PDPP-Version` header, if that field is
|
|
23
|
+
* actually meant to version the grant schema rather than the wire protocol)
|
|
24
|
+
* — that reconciliation was not made unilaterally here since it touches
|
|
25
|
+
* AS-owned files this lane does not edit.
|
|
26
|
+
*/
|
|
27
|
+
export declare const PDPP_VERSION = "2026-04-06";
|
|
28
|
+
//# sourceMappingURL=pdpp-version.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pdpp-version.d.ts","sourceRoot":"","sources":["../src/pdpp-version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,YAAY,eAAe,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The single `PDPP-Version` value both the Authorization Server and Resource
|
|
3
|
+
* Server surfaces of this Personal Server negotiate against (spec-core.md
|
|
4
|
+
* §8 "API versioning").
|
|
5
|
+
*
|
|
6
|
+
* Spec-core.md's own normative example is a date string
|
|
7
|
+
* (`PDPP-Version: 2026-04-06`), not a semver string — this constant follows
|
|
8
|
+
* that convention. Both AS and RS route modules MUST import this one
|
|
9
|
+
* constant rather than declaring their own local copy: an AS and RS that
|
|
10
|
+
* hard-reject an unrecognized `PDPP-Version` (spec §8 requires this) but
|
|
11
|
+
* accept mutually exclusive values make half the server unreachable to any
|
|
12
|
+
* client that pins a version header.
|
|
13
|
+
*
|
|
14
|
+
* Found in an independent combined AS+RS review (2026-09-17): the AS lane's
|
|
15
|
+
* `packages/core/src/pdpp/types.ts` previously declared its own
|
|
16
|
+
* `PDPP_API_VERSION = "0.1.0"` (a semver-shaped grant/API contract version,
|
|
17
|
+
* not the spec's `PDPP-Version` header value) alongside this module's
|
|
18
|
+
* `PDPP-Version = "2026-04-06"` in the RS route files. A client sending
|
|
19
|
+
* either header value could reach only one half of the server. Fix: one
|
|
20
|
+
* shared constant, spec-date-shaped, imported by both surfaces. The AS lane
|
|
21
|
+
* needs to adopt this constant (or reconcile `PDPP_API_VERSION`'s meaning to
|
|
22
|
+
* something distinct from the `PDPP-Version` header, if that field is
|
|
23
|
+
* actually meant to version the grant schema rather than the wire protocol)
|
|
24
|
+
* — that reconciliation was not made unilaterally here since it touches
|
|
25
|
+
* AS-owned files this lane does not edit.
|
|
26
|
+
*/
|
|
27
|
+
export const PDPP_VERSION = "2026-04-06";
|
|
28
|
+
//# sourceMappingURL=pdpp-version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pdpp-version.js","sourceRoot":"","sources":["../src/pdpp-version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,YAAY,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { GatewayGrantResponse } from "@opendatalabs/vana-sdk/browser";
|
|
2
|
+
import { type AuthSessionVerifierPort, type GrantVerifierPort, type RuntimeAvailabilityPort } from "../ports/index.js";
|
|
3
|
+
import type { PdppGrantBindingStore } from "../grants/pdpp-binding-store.js";
|
|
4
|
+
export interface DataReadPolicyInput {
|
|
5
|
+
signer: `0x${string}`;
|
|
6
|
+
grantId?: string;
|
|
7
|
+
requestedScope: string;
|
|
8
|
+
fileId?: string;
|
|
9
|
+
/**
|
|
10
|
+
* This server's owner address. The grant's grantor MUST equal it — a grant
|
|
11
|
+
* issued by a different owner is rejected. Required (not optional) so that
|
|
12
|
+
* TypeScript flags any caller that fails to bind the read to the server
|
|
13
|
+
* owner; the check also fails closed at runtime for untyped/JS callers.
|
|
14
|
+
*/
|
|
15
|
+
serverOwner: `0x${string}`;
|
|
16
|
+
/**
|
|
17
|
+
* The PDPP grant id the caller is reading under, when the read is authorized
|
|
18
|
+
* through a PDPP grant rather than a bare chain grant (§6).
|
|
19
|
+
*
|
|
20
|
+
* Optional because the chain-grant read path predates PDPP and still works
|
|
21
|
+
* on its own. When present — and only then — the PDPP↔chain binding is
|
|
22
|
+
* enforced in addition to every existing check, never instead of one.
|
|
23
|
+
*/
|
|
24
|
+
pdppGrantId?: string;
|
|
25
|
+
}
|
|
26
|
+
export interface DataReadPolicyPorts {
|
|
27
|
+
authSessionVerifier: AuthSessionVerifierPort;
|
|
28
|
+
grantVerifier: GrantVerifierPort;
|
|
29
|
+
/**
|
|
30
|
+
* Retained PDPP↔chain grant bindings. Required only to serve reads that
|
|
31
|
+
* present a `pdppGrantId`; a PS with no PDPP surface omits it.
|
|
32
|
+
*/
|
|
33
|
+
pdppGrantBindings?: PdppGrantBindingStore;
|
|
34
|
+
/**
|
|
35
|
+
* The chain deployment this PS is configured against. Required alongside
|
|
36
|
+
* `pdppGrantBindings` so a binding recorded on one network cannot authorize
|
|
37
|
+
* a read on another.
|
|
38
|
+
*/
|
|
39
|
+
chainDeployment?: {
|
|
40
|
+
chainId: number;
|
|
41
|
+
contractAddress: `0x${string}`;
|
|
42
|
+
};
|
|
43
|
+
runtimeAvailability?: RuntimeAvailabilityPort;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Parse a grant's `expiresAt` into unix seconds. Accepts the legacy
|
|
47
|
+
* uint256-seconds string, a numeric value, or the current gateway ISO
|
|
48
|
+
* timestamp. Returns 0 for "perpetual" encodings (null/undefined/"0") and
|
|
49
|
+
* null for unparseable input. Shared by the read and write policies so both
|
|
50
|
+
* stay aligned with the gateway response shape.
|
|
51
|
+
*/
|
|
52
|
+
export declare function parseGrantExpiresAtSeconds(value: unknown): number | null;
|
|
53
|
+
/** Auth-result sentinels; see the reserved-grantId check below. */
|
|
54
|
+
export declare const SENTINEL_GRANT_IDS: Set<string>;
|
|
55
|
+
export declare function verifyDataReadPolicy(input: DataReadPolicyInput, ports: DataReadPolicyPorts): Promise<GatewayGrantResponse>;
|
|
56
|
+
//# sourceMappingURL=data-read.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-read.d.ts","sourceRoot":"","sources":["../../src/policy/data-read.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAa3E,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC7B,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAE7E,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,KAAK,MAAM,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IAGvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;IAC3B;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,mBAAmB,EAAE,uBAAuB,CAAC;IAC7C,aAAa,EAAE,iBAAiB,CAAC;IACjC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,qBAAqB,CAAC;IAC1C;;;;OAIG;IACH,eAAe,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,KAAK,MAAM,EAAE,CAAA;KAAE,CAAC;IAKtE,mBAAmB,CAAC,EAAE,uBAAuB,CAAC;CAC/C;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAUxE;AAED,mEAAmE;AACnE,eAAO,MAAM,kBAAkB,aAAsC,CAAC;AAEtE,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,mBAAmB,EAC1B,KAAK,EAAE,mBAAmB,GACzB,OAAO,CAAC,oBAAoB,CAAC,CAuK/B"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { scopeCoveredByGrant } from "@opendatalabs/vana-sdk/browser";
|
|
2
|
+
import { GrantExpiredError, GrantOwnerMismatchError, GrantRequiredError, GrantRevokedError, InvalidSignatureError, PsUnavailableError, ScopeMismatchError, ServerNotConfiguredError, UnregisteredBuilderError, } from "../errors/catalog.js";
|
|
3
|
+
import { verifyPdppGrantBinding } from "../grants/pdpp-binding.js";
|
|
4
|
+
/**
|
|
5
|
+
* Parse a grant's `expiresAt` into unix seconds. Accepts the legacy
|
|
6
|
+
* uint256-seconds string, a numeric value, or the current gateway ISO
|
|
7
|
+
* timestamp. Returns 0 for "perpetual" encodings (null/undefined/"0") and
|
|
8
|
+
* null for unparseable input. Shared by the read and write policies so both
|
|
9
|
+
* stay aligned with the gateway response shape.
|
|
10
|
+
*/
|
|
11
|
+
export function parseGrantExpiresAtSeconds(value) {
|
|
12
|
+
if (value === null || value === undefined || value === "0")
|
|
13
|
+
return 0;
|
|
14
|
+
if (typeof value === "number")
|
|
15
|
+
return Number.isFinite(value) ? value : null;
|
|
16
|
+
if (typeof value !== "string")
|
|
17
|
+
return null;
|
|
18
|
+
const numeric = Number(value);
|
|
19
|
+
if (Number.isFinite(numeric))
|
|
20
|
+
return numeric;
|
|
21
|
+
const millis = Date.parse(value);
|
|
22
|
+
return Number.isNaN(millis) ? null : Math.floor(millis / 1000);
|
|
23
|
+
}
|
|
24
|
+
/** Auth-result sentinels; see the reserved-grantId check below. */
|
|
25
|
+
export const SENTINEL_GRANT_IDS = new Set(["owner", "policy-bypass"]);
|
|
26
|
+
export async function verifyDataReadPolicy(input, ports) {
|
|
27
|
+
const available = await ports.runtimeAvailability?.isAvailable();
|
|
28
|
+
if (available === false) {
|
|
29
|
+
throw new PsUnavailableError();
|
|
30
|
+
}
|
|
31
|
+
const builder = await ports.authSessionVerifier.getBuilder(input.signer);
|
|
32
|
+
if (!builder) {
|
|
33
|
+
throw new UnregisteredBuilderError();
|
|
34
|
+
}
|
|
35
|
+
if (!input.grantId) {
|
|
36
|
+
throw new GrantRequiredError({
|
|
37
|
+
reason: "No grantId in authorization payload",
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
// "owner" / "policy-bypass" are server-internal auth-result sentinels that
|
|
41
|
+
// confer the unredacted owner view and the x402 payment exemption. Neither
|
|
42
|
+
// caller input nor a gateway-supplied grant id may ever occupy them.
|
|
43
|
+
if (SENTINEL_GRANT_IDS.has(input.grantId)) {
|
|
44
|
+
throw new GrantRequiredError({
|
|
45
|
+
reason: "Reserved grantId",
|
|
46
|
+
grantId: input.grantId,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
const grant = await ports.grantVerifier.getGrant(input.grantId);
|
|
50
|
+
if (!grant) {
|
|
51
|
+
throw new GrantRequiredError({
|
|
52
|
+
reason: "Grant not found",
|
|
53
|
+
grantId: input.grantId,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
if (SENTINEL_GRANT_IDS.has(grant.id)) {
|
|
57
|
+
throw new GrantRequiredError({
|
|
58
|
+
reason: "Grant resolved to a reserved id",
|
|
59
|
+
grantId: input.grantId,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
if (grant.revokedAt !== null) {
|
|
63
|
+
throw new GrantRevokedError({ grantId: grant.id });
|
|
64
|
+
}
|
|
65
|
+
// Canary GatewayGrantResponse is flat — scopes is a top-level string[]
|
|
66
|
+
// and expiresAt is a decimal-string uint256 (`null` = perpetual). The
|
|
67
|
+
// legacy signed `grant` JSON blob and `fileIds` pinning are gone.
|
|
68
|
+
if (!grant.scopes || grant.scopes.length === 0) {
|
|
69
|
+
throw new ScopeMismatchError({
|
|
70
|
+
requestedScope: input.requestedScope,
|
|
71
|
+
reason: "Grant has no scopes",
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
if (grant.expiresAt !== null && grant.expiresAt !== undefined) {
|
|
75
|
+
// DPv2 may surface either the legacy uint256-seconds string or the
|
|
76
|
+
// current gateway ISO timestamp. Parse both so the policy stays aligned
|
|
77
|
+
// with the gateway response shape.
|
|
78
|
+
const expiresAtSec = parseGrantExpiresAtSeconds(grant.expiresAt);
|
|
79
|
+
if (expiresAtSec === null) {
|
|
80
|
+
throw new ScopeMismatchError({
|
|
81
|
+
requestedScope: input.requestedScope,
|
|
82
|
+
reason: "Grant expiry is invalid",
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
if (expiresAtSec > 0) {
|
|
86
|
+
const nowSec = Math.floor(Date.now() / 1000);
|
|
87
|
+
if (expiresAtSec < nowSec) {
|
|
88
|
+
throw new GrantExpiredError({
|
|
89
|
+
expiresAt: expiresAtSec,
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
if (!scopeCoveredByGrant(input.requestedScope, grant.scopes)) {
|
|
95
|
+
throw new ScopeMismatchError({
|
|
96
|
+
requestedScope: input.requestedScope,
|
|
97
|
+
grantedScopes: grant.scopes,
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
if (builder.id.toLowerCase() !== grant.granteeId.toLowerCase()) {
|
|
101
|
+
throw new InvalidSignatureError({
|
|
102
|
+
reason: "Request signer is not the grant builder",
|
|
103
|
+
expected: grant.granteeId,
|
|
104
|
+
actual: input.signer,
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
// Ownership binding — the grant MUST have been issued by THIS server's owner.
|
|
108
|
+
// Otherwise any PS holding the requested scope's data would serve it under a
|
|
109
|
+
// grant issued by a *different* owner (the happy-path binding is the app
|
|
110
|
+
// resolving the grantor's own PS via serverAddress — a convention, not an
|
|
111
|
+
// enforcement). Fail CLOSED: a missing serverOwner (server misconfig) or a
|
|
112
|
+
// grant with no grantor (gateway responses are untrusted runtime data,
|
|
113
|
+
// despite their type) must reject, never skip the check.
|
|
114
|
+
if (!input.serverOwner) {
|
|
115
|
+
throw new ServerNotConfiguredError({
|
|
116
|
+
reason: "serverOwner is required to verify grant ownership",
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
if (!grant.grantorAddress ||
|
|
120
|
+
grant.grantorAddress.toLowerCase() !== input.serverOwner.toLowerCase()) {
|
|
121
|
+
throw new GrantOwnerMismatchError({
|
|
122
|
+
grantId: grant.id,
|
|
123
|
+
expected: input.serverOwner,
|
|
124
|
+
actual: grant.grantorAddress ?? null,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
// §6 — PDPP↔chain binding. Runs last, so it strengthens the chain-grant
|
|
128
|
+
// checks above rather than substituting for them: a read presenting a PDPP
|
|
129
|
+
// grant must satisfy BOTH authorities.
|
|
130
|
+
if (input.pdppGrantId !== undefined) {
|
|
131
|
+
// Fail closed. A PS that cannot check the binding must not serve the read
|
|
132
|
+
// as if there were nothing to check — that would make the binding
|
|
133
|
+
// bypassable by simply omitting the store.
|
|
134
|
+
//
|
|
135
|
+
// The client is told only that no binding authorizes the read. Reporting
|
|
136
|
+
// "this server is misconfigured" would disclose the operator's deployment
|
|
137
|
+
// state to an unauthorized caller, and the distinction is useless to a
|
|
138
|
+
// client either way: both mean "not authorized here". `misconfigured` is
|
|
139
|
+
// carried in the details for the operator's logs.
|
|
140
|
+
if (!ports.pdppGrantBindings || !ports.chainDeployment) {
|
|
141
|
+
throw new GrantRequiredError({
|
|
142
|
+
reason: "No binding authorizes this PDPP grant",
|
|
143
|
+
pdppGrantId: input.pdppGrantId,
|
|
144
|
+
misconfigured: true,
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
const binding = ports.pdppGrantBindings.getByPdppGrantId(input.pdppGrantId);
|
|
148
|
+
if (!binding) {
|
|
149
|
+
throw new GrantRequiredError({
|
|
150
|
+
reason: "No retained binding for this PDPP grant",
|
|
151
|
+
pdppGrantId: input.pdppGrantId,
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
// The binding must point at the very chain grant we just validated;
|
|
155
|
+
// otherwise a caller could pair a valid PDPP grant with an unrelated
|
|
156
|
+
// chain grant that happens to pass on its own.
|
|
157
|
+
if (binding.permission.permissionId !== grant.id) {
|
|
158
|
+
throw new ScopeMismatchError({
|
|
159
|
+
requestedScope: input.requestedScope,
|
|
160
|
+
reason: "PDPP binding does not reference the presented chain grant",
|
|
161
|
+
expected: binding.permission.permissionId,
|
|
162
|
+
actual: grant.id,
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
verifyPdppGrantBinding({
|
|
166
|
+
binding,
|
|
167
|
+
pdppGrantId: input.pdppGrantId,
|
|
168
|
+
serverOwner: input.serverOwner,
|
|
169
|
+
requestSigner: input.signer,
|
|
170
|
+
chainGrant: grant,
|
|
171
|
+
deployment: ports.chainDeployment,
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
return grant;
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=data-read.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-read.js","sourceRoot":"","sources":["../../src/policy/data-read.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import type { GatewayGrantResponse } from "@opendatalabs/vana-sdk/browser";
|
|
2
|
+
import { type AuthSessionVerifierPort, type GrantVerifierPort, type RuntimeAvailabilityPort } from "../ports/index.js";
|
|
3
|
+
/**
|
|
4
|
+
* Write-grant encoding: a grant scope entry prefixed with `write:` authorizes
|
|
5
|
+
* the grantee to WRITE into the scope it names (e.g. `write:notes.entries`,
|
|
6
|
+
* `write:notes.*`). The suffix uses the same pattern grammar as read scopes
|
|
7
|
+
* (`*` / `{prefix}.*` / exact), evaluated with the SDK's scopeMatchesPattern.
|
|
8
|
+
*
|
|
9
|
+
* Why a scope-entry prefix and not a new grant field: the gateway's grant
|
|
10
|
+
* shape (GatewayGrantResponse) has no permission axis — `scopes` is its only
|
|
11
|
+
* capability carrier — and the gateway validates scope entries as opaque
|
|
12
|
+
* non-empty strings, so `write:`-prefixed entries flow through createGrant /
|
|
13
|
+
* getGrant / the EIP-712 GrantRegistration signature unchanged. The Personal
|
|
14
|
+
* Server is the sole interpreter.
|
|
15
|
+
*
|
|
16
|
+
* Separation of powers falls out of the encoding:
|
|
17
|
+
* - read policy matches the REQUESTED scope against grant entries verbatim
|
|
18
|
+
* (scopeCoveredByGrant), and a requested scope never carries the prefix,
|
|
19
|
+
* so `write:x` entries can never satisfy a read;
|
|
20
|
+
* - write policy (below) only honors `write:`-prefixed entries, so plain
|
|
21
|
+
* read entries can never satisfy a write.
|
|
22
|
+
*/
|
|
23
|
+
export declare const WRITE_SCOPE_PREFIX = "write:";
|
|
24
|
+
export declare function isWriteScopeEntry(entry: string): boolean;
|
|
25
|
+
/** The scope patterns a grant authorizes for writing (prefix stripped). */
|
|
26
|
+
export declare function writeScopePatterns(grantScopes: readonly string[]): string[];
|
|
27
|
+
export declare function scopeCoveredByWriteGrant(requestedScope: string, grantScopes: readonly string[]): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Fee seam for builder writes. Write fee mechanics are undecided — the
|
|
30
|
+
* default (no port wired) is FREE. When a fee model lands (x402-style like
|
|
31
|
+
* reads, or something else), implement this port and wire it into
|
|
32
|
+
* DataWritePolicyPorts; the policy calls it after all authorization
|
|
33
|
+
* invariants pass, so a fee rejection never masks an auth failure.
|
|
34
|
+
*/
|
|
35
|
+
export interface WriteFeeVerifierPort {
|
|
36
|
+
assertWriteAllowed(input: {
|
|
37
|
+
builder: `0x${string}`;
|
|
38
|
+
grant: GatewayGrantResponse;
|
|
39
|
+
scope: string;
|
|
40
|
+
}): Promise<void>;
|
|
41
|
+
}
|
|
42
|
+
export interface DataWritePolicyInput {
|
|
43
|
+
signer: `0x${string}`;
|
|
44
|
+
grantId?: string;
|
|
45
|
+
requestedScope: string;
|
|
46
|
+
/**
|
|
47
|
+
* This server's owner address. The grant's grantor MUST equal it — a grant
|
|
48
|
+
* issued by a different owner is rejected. Required (not optional) so that
|
|
49
|
+
* TypeScript flags any caller that fails to bind the write to the server
|
|
50
|
+
* owner; the check also fails closed at runtime for untyped/JS callers.
|
|
51
|
+
*/
|
|
52
|
+
serverOwner: `0x${string}`;
|
|
53
|
+
}
|
|
54
|
+
export interface DataWritePolicyPorts {
|
|
55
|
+
authSessionVerifier: AuthSessionVerifierPort;
|
|
56
|
+
grantVerifier: GrantVerifierPort;
|
|
57
|
+
runtimeAvailability?: RuntimeAvailabilityPort;
|
|
58
|
+
/** Absent = writes are free (see WriteFeeVerifierPort). */
|
|
59
|
+
writeFeeVerifier?: WriteFeeVerifierPort;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Authorize one builder write against a write-grant. Mirrors
|
|
63
|
+
* verifyDataReadPolicy invariant-for-invariant (builder registered, grant
|
|
64
|
+
* present / not revoked / not expired, scope coverage, grantee binding,
|
|
65
|
+
* owner binding) — but scope coverage only honors `write:`-prefixed grant
|
|
66
|
+
* entries, so a read-grant never confers write access.
|
|
67
|
+
*/
|
|
68
|
+
export declare function verifyDataWritePolicy(input: DataWritePolicyInput, ports: DataWritePolicyPorts): Promise<GatewayGrantResponse>;
|
|
69
|
+
//# sourceMappingURL=data-write.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-write.d.ts","sourceRoot":"","sources":["../../src/policy/data-write.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAa3E,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC7B,MAAM,mBAAmB,CAAC;AAG3B;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAE3C,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAExD;AAED,2EAA2E;AAC3E,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAK3E;AAED,wBAAgB,wBAAwB,CACtC,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,SAAS,MAAM,EAAE,GAC7B,OAAO,CAIT;AAED;;;;;;GAMG;AACH,MAAM,WAAW,oBAAoB;IACnC,kBAAkB,CAAC,KAAK,EAAE;QACxB,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;QACvB,KAAK,EAAE,oBAAoB,CAAC;QAC5B,KAAK,EAAE,MAAM,CAAC;KACf,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,KAAK,MAAM,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB;;;;;OAKG;IACH,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACnC,mBAAmB,EAAE,uBAAuB,CAAC;IAC7C,aAAa,EAAE,iBAAiB,CAAC;IACjC,mBAAmB,CAAC,EAAE,uBAAuB,CAAC;IAC9C,2DAA2D;IAC3D,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;CACzC;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,oBAAoB,EAC3B,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAAC,oBAAoB,CAAC,CAkG/B"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { scopeMatchesPattern } from "@opendatalabs/vana-sdk/browser";
|
|
2
|
+
import { GrantExpiredError, GrantOwnerMismatchError, GrantRequiredError, GrantRevokedError, InvalidSignatureError, PsUnavailableError, ScopeMismatchError, ServerNotConfiguredError, UnregisteredBuilderError, } from "../errors/catalog.js";
|
|
3
|
+
import { parseGrantExpiresAtSeconds } from "./data-read.js";
|
|
4
|
+
/**
|
|
5
|
+
* Write-grant encoding: a grant scope entry prefixed with `write:` authorizes
|
|
6
|
+
* the grantee to WRITE into the scope it names (e.g. `write:notes.entries`,
|
|
7
|
+
* `write:notes.*`). The suffix uses the same pattern grammar as read scopes
|
|
8
|
+
* (`*` / `{prefix}.*` / exact), evaluated with the SDK's scopeMatchesPattern.
|
|
9
|
+
*
|
|
10
|
+
* Why a scope-entry prefix and not a new grant field: the gateway's grant
|
|
11
|
+
* shape (GatewayGrantResponse) has no permission axis — `scopes` is its only
|
|
12
|
+
* capability carrier — and the gateway validates scope entries as opaque
|
|
13
|
+
* non-empty strings, so `write:`-prefixed entries flow through createGrant /
|
|
14
|
+
* getGrant / the EIP-712 GrantRegistration signature unchanged. The Personal
|
|
15
|
+
* Server is the sole interpreter.
|
|
16
|
+
*
|
|
17
|
+
* Separation of powers falls out of the encoding:
|
|
18
|
+
* - read policy matches the REQUESTED scope against grant entries verbatim
|
|
19
|
+
* (scopeCoveredByGrant), and a requested scope never carries the prefix,
|
|
20
|
+
* so `write:x` entries can never satisfy a read;
|
|
21
|
+
* - write policy (below) only honors `write:`-prefixed entries, so plain
|
|
22
|
+
* read entries can never satisfy a write.
|
|
23
|
+
*/
|
|
24
|
+
export const WRITE_SCOPE_PREFIX = "write:";
|
|
25
|
+
export function isWriteScopeEntry(entry) {
|
|
26
|
+
return entry.startsWith(WRITE_SCOPE_PREFIX);
|
|
27
|
+
}
|
|
28
|
+
/** The scope patterns a grant authorizes for writing (prefix stripped). */
|
|
29
|
+
export function writeScopePatterns(grantScopes) {
|
|
30
|
+
return grantScopes
|
|
31
|
+
.filter(isWriteScopeEntry)
|
|
32
|
+
.map((entry) => entry.slice(WRITE_SCOPE_PREFIX.length))
|
|
33
|
+
.filter((pattern) => pattern.length > 0);
|
|
34
|
+
}
|
|
35
|
+
export function scopeCoveredByWriteGrant(requestedScope, grantScopes) {
|
|
36
|
+
return writeScopePatterns(grantScopes).some((pattern) => scopeMatchesPattern(requestedScope, pattern));
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Authorize one builder write against a write-grant. Mirrors
|
|
40
|
+
* verifyDataReadPolicy invariant-for-invariant (builder registered, grant
|
|
41
|
+
* present / not revoked / not expired, scope coverage, grantee binding,
|
|
42
|
+
* owner binding) — but scope coverage only honors `write:`-prefixed grant
|
|
43
|
+
* entries, so a read-grant never confers write access.
|
|
44
|
+
*/
|
|
45
|
+
export async function verifyDataWritePolicy(input, ports) {
|
|
46
|
+
const available = await ports.runtimeAvailability?.isAvailable();
|
|
47
|
+
if (available === false) {
|
|
48
|
+
throw new PsUnavailableError();
|
|
49
|
+
}
|
|
50
|
+
const builder = await ports.authSessionVerifier.getBuilder(input.signer);
|
|
51
|
+
if (!builder) {
|
|
52
|
+
throw new UnregisteredBuilderError();
|
|
53
|
+
}
|
|
54
|
+
if (!input.grantId) {
|
|
55
|
+
throw new GrantRequiredError({
|
|
56
|
+
reason: "No grantId bound to the write session",
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
const grant = await ports.grantVerifier.getGrant(input.grantId);
|
|
60
|
+
if (!grant) {
|
|
61
|
+
throw new GrantRequiredError({
|
|
62
|
+
reason: "Grant not found",
|
|
63
|
+
grantId: input.grantId,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
if (grant.revokedAt !== null) {
|
|
67
|
+
throw new GrantRevokedError({ grantId: grant.id });
|
|
68
|
+
}
|
|
69
|
+
if (!grant.scopes || writeScopePatterns(grant.scopes).length === 0) {
|
|
70
|
+
throw new ScopeMismatchError({
|
|
71
|
+
requestedScope: input.requestedScope,
|
|
72
|
+
reason: "Grant has no write scopes",
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
if (grant.expiresAt !== null && grant.expiresAt !== undefined) {
|
|
76
|
+
const expiresAtSec = parseGrantExpiresAtSeconds(grant.expiresAt);
|
|
77
|
+
if (expiresAtSec === null) {
|
|
78
|
+
throw new ScopeMismatchError({
|
|
79
|
+
requestedScope: input.requestedScope,
|
|
80
|
+
reason: "Grant expiry is invalid",
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
if (expiresAtSec > 0) {
|
|
84
|
+
const nowSec = Math.floor(Date.now() / 1000);
|
|
85
|
+
if (expiresAtSec < nowSec) {
|
|
86
|
+
throw new GrantExpiredError({
|
|
87
|
+
expiresAt: expiresAtSec,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
if (!scopeCoveredByWriteGrant(input.requestedScope, grant.scopes)) {
|
|
93
|
+
throw new ScopeMismatchError({
|
|
94
|
+
requestedScope: input.requestedScope,
|
|
95
|
+
grantedScopes: grant.scopes,
|
|
96
|
+
reason: "Grant does not authorize writing to this scope",
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
if (builder.id.toLowerCase() !== grant.granteeId.toLowerCase()) {
|
|
100
|
+
throw new InvalidSignatureError({
|
|
101
|
+
reason: "Write signer is not the grant builder",
|
|
102
|
+
expected: grant.granteeId,
|
|
103
|
+
actual: input.signer,
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
// Ownership binding — the grant MUST have been issued by THIS server's
|
|
107
|
+
// owner (same fail-closed rules as verifyDataReadPolicy: a missing
|
|
108
|
+
// serverOwner or a grantor-less gateway response rejects, never skips).
|
|
109
|
+
if (!input.serverOwner) {
|
|
110
|
+
throw new ServerNotConfiguredError({
|
|
111
|
+
reason: "serverOwner is required to verify grant ownership",
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
if (!grant.grantorAddress ||
|
|
115
|
+
grant.grantorAddress.toLowerCase() !== input.serverOwner.toLowerCase()) {
|
|
116
|
+
throw new GrantOwnerMismatchError({
|
|
117
|
+
grantId: grant.id,
|
|
118
|
+
expected: input.serverOwner,
|
|
119
|
+
actual: grant.grantorAddress ?? null,
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
// All authorization invariants passed — apply the fee seam last (default
|
|
123
|
+
// free; see WriteFeeVerifierPort).
|
|
124
|
+
await ports.writeFeeVerifier?.assertWriteAllowed({
|
|
125
|
+
builder: input.signer,
|
|
126
|
+
grant,
|
|
127
|
+
scope: input.requestedScope,
|
|
128
|
+
});
|
|
129
|
+
return grant;
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=data-write.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-write.js","sourceRoot":"","sources":["../../src/policy/data-write.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAM9B,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AAE3C,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,OAAO,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;AAC9C,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,kBAAkB,CAAC,WAA8B;IAC/D,OAAO,WAAW;SACf,MAAM,CAAC,iBAAiB,CAAC;SACzB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;SACtD,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,cAAsB,EACtB,WAA8B;IAE9B,OAAO,kBAAkB,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CACtD,mBAAmB,CAAC,cAAc,EAAE,OAAO,CAAC,CAC7C,CAAC;AACJ,CAAC;AAsCD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,KAA2B,EAC3B,KAA2B;IAE3B,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,mBAAmB,EAAE,WAAW,EAAE,CAAC;IACjE,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;QACxB,MAAM,IAAI,kBAAkB,EAAE,CAAC;IACjC,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,mBAAmB,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACzE,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,wBAAwB,EAAE,CAAC;IACvC,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACnB,MAAM,IAAI,kBAAkB,CAAC;YAC3B,MAAM,EAAE,uCAAuC;SAChD,CAAC,CAAC;IACL,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAChE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,kBAAkB,CAAC;YAC3B,MAAM,EAAE,iBAAiB;YACzB,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,KAAK,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;QAC7B,MAAM,IAAI,iBAAiB,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnE,MAAM,IAAI,kBAAkB,CAAC;YAC3B,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,MAAM,EAAE,2BAA2B;SACpC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,KAAK,CAAC,SAAS,KAAK,IAAI,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QAC9D,MAAM,YAAY,GAAG,0BAA0B,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACjE,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;YAC1B,MAAM,IAAI,kBAAkB,CAAC;gBAC3B,cAAc,EAAE,KAAK,CAAC,cAAc;gBACpC,MAAM,EAAE,yBAAyB;aAClC,CAAC,CAAC;QACL,CAAC;QACD,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;YAC7C,IAAI,YAAY,GAAG,MAAM,EAAE,CAAC;gBAC1B,MAAM,IAAI,iBAAiB,CAAC;oBAC1B,SAAS,EAAE,YAAY;iBACxB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,kBAAkB,CAAC;YAC3B,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,aAAa,EAAE,KAAK,CAAC,MAAM;YAC3B,MAAM,EAAE,gDAAgD;SACzD,CAAC,CAAC;IACL,CAAC;IAED,IAAI,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC;QAC/D,MAAM,IAAI,qBAAqB,CAAC;YAC9B,MAAM,EAAE,uCAAuC;YAC/C,QAAQ,EAAE,KAAK,CAAC,SAAS;YACzB,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC,CAAC;IACL,CAAC;IAED,uEAAuE;IACvE,mEAAmE;IACnE,wEAAwE;IACxE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACvB,MAAM,IAAI,wBAAwB,CAAC;YACjC,MAAM,EAAE,mDAAmD;SAC5D,CAAC,CAAC;IACL,CAAC;IACD,IACE,CAAC,KAAK,CAAC,cAAc;QACrB,KAAK,CAAC,cAAc,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,EACtE,CAAC;QACD,MAAM,IAAI,uBAAuB,CAAC;YAChC,OAAO,EAAE,KAAK,CAAC,EAAE;YACjB,QAAQ,EAAE,KAAK,CAAC,WAAW;YAC3B,MAAM,EAAE,KAAK,CAAC,cAAc,IAAI,IAAI;SACrC,CAAC,CAAC;IACL,CAAC;IAED,yEAAyE;IACzE,mCAAmC;IACnC,MAAM,KAAK,CAAC,gBAAgB,EAAE,kBAAkB,CAAC;QAC/C,OAAO,EAAE,KAAK,CAAC,MAAM;QACrB,KAAK;QACL,KAAK,EAAE,KAAK,CAAC,cAAc;KAC5B,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { verifyDataReadPolicy, parseGrantExpiresAtSeconds, type DataReadPolicyInput, type DataReadPolicyPorts, } from "./data-read.js";
|
|
2
|
+
export { deriveBuilderId, verifySignedArtifacts, type SignedArtifactInput, type SignedBuilder, type SignedGrant, } from "./signed-artifacts.js";
|
|
3
|
+
export { WRITE_SCOPE_PREFIX, isWriteScopeEntry, writeScopePatterns, scopeCoveredByWriteGrant, verifyDataWritePolicy, type DataWritePolicyInput, type DataWritePolicyPorts, type WriteFeeVerifierPort, } from "./data-write.js";
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/policy/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,GACzB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,WAAW,GACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EACxB,qBAAqB,EACrB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,GAC1B,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { verifyDataReadPolicy, parseGrantExpiresAtSeconds, } from "./data-read.js";
|
|
2
|
+
export { deriveBuilderId, verifySignedArtifacts, } from "./signed-artifacts.js";
|
|
3
|
+
export { WRITE_SCOPE_PREFIX, isWriteScopeEntry, writeScopePatterns, scopeCoveredByWriteGrant, verifyDataWritePolicy, } from "./data-write.js";
|
|
4
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/policy/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,0BAA0B,GAG3B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,eAAe,EACf,qBAAqB,GAItB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EACxB,qBAAqB,GAItB,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type Builder, type DataPortabilityGatewayConfig, type GatewayGrantResponse } from "@opendatalabs/vana-sdk/browser";
|
|
2
|
+
import { type Address, type Hex } from "viem";
|
|
3
|
+
export type SignedGrant = GatewayGrantResponse & {
|
|
4
|
+
signature?: string;
|
|
5
|
+
};
|
|
6
|
+
export type SignedBuilder = Builder & {
|
|
7
|
+
signature?: string;
|
|
8
|
+
};
|
|
9
|
+
export interface SignedArtifactInput {
|
|
10
|
+
grant: SignedGrant;
|
|
11
|
+
builder: SignedBuilder;
|
|
12
|
+
gatewayConfig: DataPortabilityGatewayConfig;
|
|
13
|
+
ownerAddress: Address;
|
|
14
|
+
}
|
|
15
|
+
export declare function verifySignedArtifacts(input: SignedArtifactInput): Promise<void>;
|
|
16
|
+
export declare function deriveBuilderId(builder: Pick<Builder, "ownerAddress" | "granteeAddress" | "publicKey" | "appUrl">, gatewayConfig: DataPortabilityGatewayConfig): Hex;
|
|
17
|
+
//# sourceMappingURL=signed-artifacts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signed-artifacts.d.ts","sourceRoot":"","sources":["../../src/policy/signed-artifacts.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,OAAO,EACZ,KAAK,4BAA4B,EACjC,KAAK,oBAAoB,EAC1B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAML,KAAK,OAAO,EACZ,KAAK,GAAG,EACT,MAAM,MAAM,CAAC;AAQd,MAAM,MAAM,WAAW,GAAG,oBAAoB,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACxE,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAgB7D,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,WAAW,CAAC;IACnB,OAAO,EAAE,aAAa,CAAC;IACvB,aAAa,EAAE,4BAA4B,CAAC;IAC5C,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,mBAAmB,GACzB,OAAO,CAAC,IAAI,CAAC,CAiEf;AAED,wBAAgB,eAAe,CAC7B,OAAO,EAAE,IAAI,CACX,OAAO,EACP,cAAc,GAAG,gBAAgB,GAAG,WAAW,GAAG,QAAQ,CAC3D,EACD,aAAa,EAAE,4BAA4B,GAC1C,GAAG,CAoCL"}
|