@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,447 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Streamable-HTTP server adapter. Per-request, stateless.
|
|
3
|
+
*
|
|
4
|
+
* Pattern adopted from `@pdpp/mcp-server`'s `handleStreamableHttpRequest`:
|
|
5
|
+
* a fresh `McpServer` + `WebStandardStreamableHTTPServerTransport` per
|
|
6
|
+
* inbound request. This keeps authorization checks fresh — the route
|
|
7
|
+
* resolves the connection token, hands us the `McpConnectionRecord`, and we
|
|
8
|
+
* build the server bound to that connection. There is NO MCP session.
|
|
9
|
+
*
|
|
10
|
+
* The transport supports Streamable HTTP (GET=SSE, POST=JSON-RPC,
|
|
11
|
+
* DELETE=close). Claude Web's remote connector speaks this.
|
|
12
|
+
*/
|
|
13
|
+
import { McpServer, ResourceTemplate, } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
14
|
+
import { WebStandardStreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js";
|
|
15
|
+
import { MAX_MCP_TOOL_TIMEOUT_MS, MCP_TOOLS, resolveGrantForScope, } from "./tools.js";
|
|
16
|
+
import { READ_FULFILLMENT_NONE, reportPersonalServerReadDenial, } from "../api/index.js";
|
|
17
|
+
import { RAW_SCOPE_RESOURCE_TEMPLATES, readRawScopeResource, } from "./resources.js";
|
|
18
|
+
const DEFAULT_SERVER_NAME = "vana-personal-server-mcp";
|
|
19
|
+
const DEFAULT_SERVER_VERSION = "0.0.1";
|
|
20
|
+
/** Stateless: no MCP session id is issued and POST answers with JSON, not SSE. */
|
|
21
|
+
const TRANSPORT_OPTIONS = {
|
|
22
|
+
sessionIdGenerator: undefined,
|
|
23
|
+
enableJsonResponse: true,
|
|
24
|
+
};
|
|
25
|
+
/** Methods whose answer is the same for every connection: the tool table is a
|
|
26
|
+
* static constant and no session is retained. e.g. a fresh remote connector
|
|
27
|
+
* probes with initialize + notifications/initialized + tools/list. */
|
|
28
|
+
const HANDSHAKE_METHODS = new Set([
|
|
29
|
+
"initialize",
|
|
30
|
+
"notifications/initialized",
|
|
31
|
+
"ping",
|
|
32
|
+
"tools/list",
|
|
33
|
+
]);
|
|
34
|
+
const RAW_SCOPE_RESOURCE_CONFIG = {
|
|
35
|
+
title: "Raw scope file",
|
|
36
|
+
description: "Original binary/unstructured file bytes for an approved Vana scope.",
|
|
37
|
+
mimeType: "application/octet-stream",
|
|
38
|
+
};
|
|
39
|
+
const DEFAULT_MCP_TOOL_TIMEOUT_MS = 30_000;
|
|
40
|
+
const MCP_TOOL_TIMEOUT_GRACE_MS = 1_000;
|
|
41
|
+
const QUERY_PREVIEW_CHARS = 120;
|
|
42
|
+
const textEncoder = new TextEncoder();
|
|
43
|
+
class McpToolTimeoutError extends Error {
|
|
44
|
+
tool;
|
|
45
|
+
timeoutMs;
|
|
46
|
+
constructor(tool, timeoutMs) {
|
|
47
|
+
super(`${tool} timed out after ${timeoutMs}ms`);
|
|
48
|
+
this.tool = tool;
|
|
49
|
+
this.timeoutMs = timeoutMs;
|
|
50
|
+
this.name = "McpToolTimeoutError";
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
function clampToolTimeout(value) {
|
|
54
|
+
if (typeof value !== "number" || !Number.isFinite(value)) {
|
|
55
|
+
return DEFAULT_MCP_TOOL_TIMEOUT_MS;
|
|
56
|
+
}
|
|
57
|
+
return Math.min(MAX_MCP_TOOL_TIMEOUT_MS, Math.max(1000, Math.trunc(value)));
|
|
58
|
+
}
|
|
59
|
+
function toolTimeoutMs(tool, args) {
|
|
60
|
+
if (tool === "read_scope" ||
|
|
61
|
+
tool === "search_personal_context" ||
|
|
62
|
+
tool === "get_scope_file") {
|
|
63
|
+
return clampToolTimeout(args.timeoutMs) + MCP_TOOL_TIMEOUT_GRACE_MS;
|
|
64
|
+
}
|
|
65
|
+
return DEFAULT_MCP_TOOL_TIMEOUT_MS;
|
|
66
|
+
}
|
|
67
|
+
async function withToolTimeout(promise, tool, timeoutMs) {
|
|
68
|
+
let timeout;
|
|
69
|
+
try {
|
|
70
|
+
return await Promise.race([
|
|
71
|
+
promise,
|
|
72
|
+
new Promise((_resolve, reject) => {
|
|
73
|
+
timeout = setTimeout(() => reject(new McpToolTimeoutError(tool, timeoutMs)), timeoutMs);
|
|
74
|
+
}),
|
|
75
|
+
]);
|
|
76
|
+
}
|
|
77
|
+
finally {
|
|
78
|
+
if (timeout)
|
|
79
|
+
clearTimeout(timeout);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
function buildActivityStartParams(tool, args) {
|
|
83
|
+
const params = {
|
|
84
|
+
tool,
|
|
85
|
+
};
|
|
86
|
+
if ((tool === "read_scope" || tool === "get_scope_file") &&
|
|
87
|
+
typeof args.scope === "string") {
|
|
88
|
+
params.scopes = [args.scope];
|
|
89
|
+
}
|
|
90
|
+
if (tool === "search_personal_context") {
|
|
91
|
+
if (typeof args.query === "string") {
|
|
92
|
+
params.queryPreview = args.query.slice(0, QUERY_PREVIEW_CHARS);
|
|
93
|
+
}
|
|
94
|
+
if (Array.isArray(args.scopes) && args.scopes.length > 0) {
|
|
95
|
+
params.scopes = args.scopes
|
|
96
|
+
.filter((s) => typeof s === "string")
|
|
97
|
+
.slice(0, 20);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return params;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Tools that reach the owner's data. Only these produce access records — the
|
|
104
|
+
* discovery tools (`list_granted_*`, `request_scope_access`) touch none.
|
|
105
|
+
*/
|
|
106
|
+
const DATA_TOOLS = new Set([
|
|
107
|
+
"get_scope_file",
|
|
108
|
+
"list_scope_blocks",
|
|
109
|
+
"read_scope",
|
|
110
|
+
"search_personal_context",
|
|
111
|
+
]);
|
|
112
|
+
/**
|
|
113
|
+
* Tool error codes that mean "the read was refused", as opposed to a failure
|
|
114
|
+
* (timeout, storage error). Only these are worth an access record: they are
|
|
115
|
+
* decisions about the grantee's access, not incidents.
|
|
116
|
+
*/
|
|
117
|
+
const DENY_CODES = new Set([
|
|
118
|
+
"payment_required",
|
|
119
|
+
"scope_deleted",
|
|
120
|
+
"scope_not_granted",
|
|
121
|
+
"unauthorized",
|
|
122
|
+
]);
|
|
123
|
+
const PAYMENT_REQUIRED_CODE = "payment_required";
|
|
124
|
+
/**
|
|
125
|
+
* Extract the deny code from a tool result, or undefined when the call was
|
|
126
|
+
* served or failed for a non-deny reason. `read_scope` signals a chargeable
|
|
127
|
+
* scope with a top-level `payment_required: true` rather than an error code.
|
|
128
|
+
*/
|
|
129
|
+
function denyCode(result) {
|
|
130
|
+
if (!result.isError)
|
|
131
|
+
return undefined;
|
|
132
|
+
const first = result.content[0];
|
|
133
|
+
if (first?.type !== "text")
|
|
134
|
+
return undefined;
|
|
135
|
+
let body;
|
|
136
|
+
try {
|
|
137
|
+
body = JSON.parse(first.text);
|
|
138
|
+
}
|
|
139
|
+
catch {
|
|
140
|
+
return undefined;
|
|
141
|
+
}
|
|
142
|
+
if (typeof body.error === "string" && DENY_CODES.has(body.error)) {
|
|
143
|
+
return body.error;
|
|
144
|
+
}
|
|
145
|
+
return body[PAYMENT_REQUIRED_CODE] === true
|
|
146
|
+
? PAYMENT_REQUIRED_CODE
|
|
147
|
+
: undefined;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* One access record per denied data tool call. Fire-and-forget by contract:
|
|
151
|
+
* the tool result is already computed and is returned regardless.
|
|
152
|
+
*/
|
|
153
|
+
function reportToolDenial(options, tool, args, result) {
|
|
154
|
+
if (!options.reporterDeps || !DATA_TOOLS.has(tool))
|
|
155
|
+
return;
|
|
156
|
+
const reason = denyCode(result);
|
|
157
|
+
if (!reason)
|
|
158
|
+
return;
|
|
159
|
+
// The denied scope, if the call named one; a multi-scope search records the
|
|
160
|
+
// first, since the owner's decision is one record per tool call.
|
|
161
|
+
const scope = buildActivityStartParams(tool, args).scopes?.[0] ?? READ_FULFILLMENT_NONE;
|
|
162
|
+
// A refusal is filed under the grant the call arrived on. A scope no grant
|
|
163
|
+
// covers has no grant of its own, but the connection's grant is the access
|
|
164
|
+
// relationship the owner's feed groups by — and the Gateway only stores a
|
|
165
|
+
// 32-byte grant id, so `READ_FULFILLMENT_NONE` here is refused on ingest and
|
|
166
|
+
// takes its whole batch down with it. A connection left with no grant at all
|
|
167
|
+
// has nothing to attribute the refusal to, so it reports nothing.
|
|
168
|
+
const grantId = resolveGrantForScope(options.connection, scope)?.grantId ??
|
|
169
|
+
options.connection.grants[0]?.grantId;
|
|
170
|
+
if (!grantId)
|
|
171
|
+
return;
|
|
172
|
+
reportPersonalServerReadDenial(options.reporterDeps, {
|
|
173
|
+
builder: options.connection.granteeAddress,
|
|
174
|
+
denyReason: reason,
|
|
175
|
+
grantId,
|
|
176
|
+
logId: crypto.randomUUID(),
|
|
177
|
+
outcome: "denied",
|
|
178
|
+
scope,
|
|
179
|
+
servedAt: new Date().toISOString(),
|
|
180
|
+
source: "mcp",
|
|
181
|
+
tool,
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
function extractActivityFinishParams(tool, result) {
|
|
185
|
+
if (result.isError || result.content.length === 0) {
|
|
186
|
+
try {
|
|
187
|
+
const firstText = result.content[0]?.type === "text" ? result.content[0].text : "{}";
|
|
188
|
+
const body = JSON.parse(firstText);
|
|
189
|
+
return {
|
|
190
|
+
errorCode: typeof body.error === "string" ? body.error : undefined,
|
|
191
|
+
errorMessage: typeof body.message === "string" ? body.message : undefined,
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
catch {
|
|
195
|
+
return {};
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
if (tool === "search_personal_context") {
|
|
199
|
+
try {
|
|
200
|
+
const firstText = result.content[0]?.type === "text" ? result.content[0].text : "{}";
|
|
201
|
+
const body = JSON.parse(firstText);
|
|
202
|
+
return {
|
|
203
|
+
resultCount: Array.isArray(body.results)
|
|
204
|
+
? body.results.length
|
|
205
|
+
: Array.isArray(body.matches)
|
|
206
|
+
? body.matches.length
|
|
207
|
+
: undefined,
|
|
208
|
+
skippedCount: Array.isArray(body.skippedScopes)
|
|
209
|
+
? body.skippedScopes.length
|
|
210
|
+
: undefined,
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
catch {
|
|
214
|
+
return {};
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
if (tool === "read_scope") {
|
|
218
|
+
try {
|
|
219
|
+
const firstText = result.content[0]?.type === "text" ? result.content[0].text : "{}";
|
|
220
|
+
const body = JSON.parse(firstText);
|
|
221
|
+
return {
|
|
222
|
+
resultCount: Array.isArray(body.blocks)
|
|
223
|
+
? body.blocks.length
|
|
224
|
+
: undefined,
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
catch {
|
|
228
|
+
return {};
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
return {};
|
|
232
|
+
}
|
|
233
|
+
function bytes(value) {
|
|
234
|
+
return textEncoder.encode(value).byteLength;
|
|
235
|
+
}
|
|
236
|
+
function estimatePayloadMetrics(result) {
|
|
237
|
+
const textBytes = result.content?.reduce((total, item) => {
|
|
238
|
+
if (item.type === "text")
|
|
239
|
+
return total + bytes(item.text);
|
|
240
|
+
if (item.type === "resource") {
|
|
241
|
+
return total + bytes(item.resource.blob);
|
|
242
|
+
}
|
|
243
|
+
return total + bytes(JSON.stringify(item));
|
|
244
|
+
}, 0) ?? 0;
|
|
245
|
+
// The SDK serializes both text content and structuredContent. Avoid a second
|
|
246
|
+
// JSON stringify over very large payloads here; the pretty text body is a
|
|
247
|
+
// conservative estimate for the structured JSON copy created by textResult.
|
|
248
|
+
const structuredContentBytes = result.structuredContent !== undefined ? textBytes : undefined;
|
|
249
|
+
return {
|
|
250
|
+
textBytes,
|
|
251
|
+
...(structuredContentBytes !== undefined ? { structuredContentBytes } : {}),
|
|
252
|
+
payloadBytes: textBytes + (structuredContentBytes ?? 0),
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
function buildErrorResult(body) {
|
|
256
|
+
return {
|
|
257
|
+
isError: true,
|
|
258
|
+
content: [
|
|
259
|
+
{
|
|
260
|
+
type: "text",
|
|
261
|
+
text: JSON.stringify(body, null, 2),
|
|
262
|
+
},
|
|
263
|
+
],
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
function markResponsePreparing(recorder, activityId, finish) {
|
|
267
|
+
recorder.update(activityId, {
|
|
268
|
+
phase: "response_preparing",
|
|
269
|
+
handlerDurationMs: finish.handlerDurationMs,
|
|
270
|
+
payloadBytes: finish.payloadBytes,
|
|
271
|
+
textBytes: finish.textBytes,
|
|
272
|
+
structuredContentBytes: finish.structuredContentBytes,
|
|
273
|
+
resultCount: finish.resultCount,
|
|
274
|
+
skippedCount: finish.skippedCount,
|
|
275
|
+
errorCode: finish.errorCode,
|
|
276
|
+
errorMessage: finish.errorMessage,
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
/** What a client sees of a tool in `tools/list`: owner-independent metadata. */
|
|
280
|
+
function toolConfig(tool) {
|
|
281
|
+
return {
|
|
282
|
+
title: tool.title,
|
|
283
|
+
description: tool.description,
|
|
284
|
+
inputSchema: tool.inputSchema,
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Build a fresh `McpServer` instance bound to a single connection + read
|
|
289
|
+
* client. Tools delegate to `MCP_TOOLS` so the surface stays in one place.
|
|
290
|
+
*/
|
|
291
|
+
export function createMcpServerForConnection(options) {
|
|
292
|
+
const server = new McpServer({
|
|
293
|
+
name: options.serverName ?? DEFAULT_SERVER_NAME,
|
|
294
|
+
version: options.serverVersion ?? DEFAULT_SERVER_VERSION,
|
|
295
|
+
});
|
|
296
|
+
const pendingActivityFinishes = new Map();
|
|
297
|
+
const ctx = {
|
|
298
|
+
connection: options.connection,
|
|
299
|
+
readClient: options.readClient,
|
|
300
|
+
activityRecorder: options.activityRecorder,
|
|
301
|
+
requestScopeAccess: options.requestScopeAccess,
|
|
302
|
+
};
|
|
303
|
+
for (const tool of MCP_TOOLS) {
|
|
304
|
+
server.registerTool(tool.name, toolConfig(tool), async (args) => {
|
|
305
|
+
const recorder = options.activityRecorder;
|
|
306
|
+
const activityId = recorder
|
|
307
|
+
? recorder.start(buildActivityStartParams(tool.name, args))
|
|
308
|
+
: undefined;
|
|
309
|
+
const handlerStartedAt = performance.now();
|
|
310
|
+
try {
|
|
311
|
+
const timeoutMs = toolTimeoutMs(tool.name, args);
|
|
312
|
+
const result = await withToolTimeout(tool.handler(args, ctx), tool.name, timeoutMs);
|
|
313
|
+
reportToolDenial(options, tool.name, args, result);
|
|
314
|
+
if (activityId && recorder) {
|
|
315
|
+
const handlerDurationMs = Math.round(performance.now() - handlerStartedAt);
|
|
316
|
+
const payload = extractActivityFinishParams(tool.name, result);
|
|
317
|
+
const finish = {
|
|
318
|
+
status: result.isError ? "failed" : "succeeded",
|
|
319
|
+
handlerDurationMs,
|
|
320
|
+
...estimatePayloadMetrics(result),
|
|
321
|
+
...payload,
|
|
322
|
+
};
|
|
323
|
+
markResponsePreparing(recorder, activityId, finish);
|
|
324
|
+
pendingActivityFinishes.set(activityId, finish);
|
|
325
|
+
}
|
|
326
|
+
return result;
|
|
327
|
+
}
|
|
328
|
+
catch (err) {
|
|
329
|
+
if (err instanceof McpToolTimeoutError) {
|
|
330
|
+
const result = buildErrorResult({
|
|
331
|
+
error: "tool_timeout",
|
|
332
|
+
message: err.message,
|
|
333
|
+
timeoutMs: err.timeoutMs,
|
|
334
|
+
});
|
|
335
|
+
if (activityId && recorder) {
|
|
336
|
+
const finish = {
|
|
337
|
+
status: "timed_out",
|
|
338
|
+
handlerDurationMs: Math.round(performance.now() - handlerStartedAt),
|
|
339
|
+
...estimatePayloadMetrics(result),
|
|
340
|
+
errorCode: "tool_timeout",
|
|
341
|
+
errorMessage: err.message,
|
|
342
|
+
};
|
|
343
|
+
markResponsePreparing(recorder, activityId, finish);
|
|
344
|
+
pendingActivityFinishes.set(activityId, finish);
|
|
345
|
+
}
|
|
346
|
+
return result;
|
|
347
|
+
}
|
|
348
|
+
const result = buildErrorResult({
|
|
349
|
+
error: "tool_handler_error",
|
|
350
|
+
message: err instanceof Error ? err.message : String(err),
|
|
351
|
+
});
|
|
352
|
+
if (activityId && recorder) {
|
|
353
|
+
const finish = {
|
|
354
|
+
status: "failed",
|
|
355
|
+
handlerDurationMs: Math.round(performance.now() - handlerStartedAt),
|
|
356
|
+
...estimatePayloadMetrics(result),
|
|
357
|
+
errorCode: "tool_handler_error",
|
|
358
|
+
errorMessage: err instanceof Error ? err.message : String(err),
|
|
359
|
+
};
|
|
360
|
+
markResponsePreparing(recorder, activityId, finish);
|
|
361
|
+
pendingActivityFinishes.set(activityId, finish);
|
|
362
|
+
}
|
|
363
|
+
return result;
|
|
364
|
+
}
|
|
365
|
+
});
|
|
366
|
+
}
|
|
367
|
+
RAW_SCOPE_RESOURCE_TEMPLATES.forEach((template, index) => {
|
|
368
|
+
server.registerResource(`raw-scope-file-${index}`, new ResourceTemplate(template, { list: undefined }), RAW_SCOPE_RESOURCE_CONFIG, async (uri) => readRawScopeResource(uri, ctx));
|
|
369
|
+
});
|
|
370
|
+
function finishPendingActivities(override) {
|
|
371
|
+
for (const [activityId, finish] of pendingActivityFinishes) {
|
|
372
|
+
options.activityRecorder?.finish(activityId, {
|
|
373
|
+
...finish,
|
|
374
|
+
...override,
|
|
375
|
+
});
|
|
376
|
+
pendingActivityFinishes.delete(activityId);
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
return { server, finishPendingActivities };
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* Process one inbound MCP request (GET/POST/DELETE) end-to-end. Per-request
|
|
383
|
+
* server + transport; stateless; no MCP session id retained.
|
|
384
|
+
*
|
|
385
|
+
* Returns a Web `Response` suitable to send back to the client.
|
|
386
|
+
*/
|
|
387
|
+
export async function handleMcpStreamableHttpRequest(request, options) {
|
|
388
|
+
const { server, finishPendingActivities } = createMcpServerForConnection(options);
|
|
389
|
+
const transport = new WebStandardStreamableHTTPServerTransport(TRANSPORT_OPTIONS);
|
|
390
|
+
try {
|
|
391
|
+
await server.connect(transport);
|
|
392
|
+
const response = await transport.handleRequest(request);
|
|
393
|
+
finishPendingActivities();
|
|
394
|
+
return response;
|
|
395
|
+
}
|
|
396
|
+
catch (err) {
|
|
397
|
+
finishPendingActivities({
|
|
398
|
+
status: "failed",
|
|
399
|
+
errorCode: "transport_error",
|
|
400
|
+
errorMessage: err instanceof Error ? err.message : String(err),
|
|
401
|
+
});
|
|
402
|
+
throw err;
|
|
403
|
+
}
|
|
404
|
+
finally {
|
|
405
|
+
await Promise.allSettled([transport.close(), server.close()]);
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
/**
|
|
409
|
+
* True when every JSON-RPC message in `body` is one this file can answer
|
|
410
|
+
* without the owner's data — see `HANDSHAKE_METHODS`. A batch qualifies only
|
|
411
|
+
* as a whole, so a tool call travelling with a handshake still reaches the
|
|
412
|
+
* owner's server.
|
|
413
|
+
*/
|
|
414
|
+
export function isMcpHandshake(body) {
|
|
415
|
+
const messages = Array.isArray(body) ? body : [body];
|
|
416
|
+
return (messages.length > 0 &&
|
|
417
|
+
messages.every((message) => !!message &&
|
|
418
|
+
typeof message === "object" &&
|
|
419
|
+
HANDSHAKE_METHODS.has(message.method)));
|
|
420
|
+
}
|
|
421
|
+
/**
|
|
422
|
+
* Answer a handshake request from the static tool table. Same server identity,
|
|
423
|
+
* same registered surface and same transport as the full engine, so the bytes
|
|
424
|
+
* match what a dispatched call returns; the tool handlers are unreachable
|
|
425
|
+
* because no handshake method invokes one.
|
|
426
|
+
*/
|
|
427
|
+
export async function handleMcpHandshake(request) {
|
|
428
|
+
const server = new McpServer({
|
|
429
|
+
name: DEFAULT_SERVER_NAME,
|
|
430
|
+
version: DEFAULT_SERVER_VERSION,
|
|
431
|
+
});
|
|
432
|
+
const unreachable = () => {
|
|
433
|
+
throw new Error("Handshake server cannot serve data");
|
|
434
|
+
};
|
|
435
|
+
for (const tool of MCP_TOOLS)
|
|
436
|
+
server.registerTool(tool.name, toolConfig(tool), unreachable);
|
|
437
|
+
RAW_SCOPE_RESOURCE_TEMPLATES.forEach((template, index) => server.registerResource(`raw-scope-file-${index}`, new ResourceTemplate(template, { list: undefined }), RAW_SCOPE_RESOURCE_CONFIG, unreachable));
|
|
438
|
+
const transport = new WebStandardStreamableHTTPServerTransport(TRANSPORT_OPTIONS);
|
|
439
|
+
try {
|
|
440
|
+
await server.connect(transport);
|
|
441
|
+
return await transport.handleRequest(request);
|
|
442
|
+
}
|
|
443
|
+
finally {
|
|
444
|
+
await Promise.allSettled([transport.close(), server.close()]);
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Self-signing MCP session (Option A / chatbot-first).
|
|
3
|
+
*
|
|
4
|
+
* A third-party app that holds its OWN key and a DCR grant proves control of
|
|
5
|
+
* that key ONCE — a Web3Signed handshake to `POST /mcp/session` — and the PS
|
|
6
|
+
* mints a short-lived bearer session token bound to `{ builderAddress, grantId }`.
|
|
7
|
+
* MCP tool calls then present that token as `Authorization: Bearer …`; each read
|
|
8
|
+
* authorizes as the builder via `verifyDataReadPolicy` (signer == grantee) with
|
|
9
|
+
* NO per-read signature and NO PS-held key.
|
|
10
|
+
*
|
|
11
|
+
* Contrast with the owner's-Claude flow, where the PS generates and holds a
|
|
12
|
+
* per-connection grantee key and signs reads itself. Here the app is
|
|
13
|
+
* self-custody; the PS only ever recovered its address (at handshake).
|
|
14
|
+
*/
|
|
15
|
+
import type { McpConnectionRecord } from "./types.js";
|
|
16
|
+
import type { ServerAccount } from "../keys/server-account.js";
|
|
17
|
+
import type { AuthSessionVerifierPort, GrantVerifierPort, RuntimeAvailabilityPort } from "../ports/index.js";
|
|
18
|
+
import type { PersonalServerApiAuthPort, PersonalServerDataApiDeps } from "../api/index.js";
|
|
19
|
+
import type { DataPortabilityGatewayConfig, GatewayClient } from "@opendatalabs/vana-sdk/browser";
|
|
20
|
+
export interface McpSessionRecord {
|
|
21
|
+
/** SHA-256 hex of the raw session token. Only the hash is stored. */
|
|
22
|
+
tokenHash: string;
|
|
23
|
+
/** The self-custody app's address (recovered from the handshake proof). */
|
|
24
|
+
builderAddress: `0x${string}`;
|
|
25
|
+
/** DCR grant id the app was issued (grantee == builderAddress). */
|
|
26
|
+
grantId: string;
|
|
27
|
+
scopes: string[];
|
|
28
|
+
createdAt: string;
|
|
29
|
+
expiresAtMs: number;
|
|
30
|
+
}
|
|
31
|
+
export interface McpSessionStore {
|
|
32
|
+
create(record: McpSessionRecord): Promise<void>;
|
|
33
|
+
/** Returns a live (non-expired) session, or null. */
|
|
34
|
+
getByTokenHash(tokenHash: string): Promise<McpSessionRecord | null>;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* KNOWN LIMITATION: in-memory only. A process restart (or a second instance)
|
|
38
|
+
* starts with an empty store, so live session tokens die with the process and
|
|
39
|
+
* the client must re-handshake. Acceptable for today's single-instance
|
|
40
|
+
* Personal Server; persist via the host's state store before multi-instance.
|
|
41
|
+
*/
|
|
42
|
+
export declare function createInMemoryMcpSessionStore(): McpSessionStore;
|
|
43
|
+
/**
|
|
44
|
+
* Records consumed handshake-proof identifiers until they expire, so a still-
|
|
45
|
+
* valid Web3Signed proof cannot be replayed to mint a second session token.
|
|
46
|
+
*/
|
|
47
|
+
export interface McpProofReplayStore {
|
|
48
|
+
/**
|
|
49
|
+
* Atomically record `proofId` (remembered until `expiresAtMs`) and report
|
|
50
|
+
* whether it was ALREADY present and live — i.e. a replay. Returns `true`
|
|
51
|
+
* on replay, `false` when the proof is fresh (and now recorded).
|
|
52
|
+
*/
|
|
53
|
+
consume(proofId: string, expiresAtMs: number): Promise<boolean>;
|
|
54
|
+
/**
|
|
55
|
+
* Roll back a prior `consume` for `proofId` (e.g. when session persistence
|
|
56
|
+
* failed after the reservation). Optional — stores that can't release safely
|
|
57
|
+
* omit it and callers must tolerate its absence.
|
|
58
|
+
*/
|
|
59
|
+
release?(proofId: string): Promise<void>;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* KNOWN LIMITATION: in-memory only. A process restart (or a second instance)
|
|
63
|
+
* forgets consumed proof ids, so a still-valid handshake proof could be
|
|
64
|
+
* replayed once against the fresh process. The blast radius is bounded by the
|
|
65
|
+
* proof's own expiry, and today's Personal Server runs single-instance, so we
|
|
66
|
+
* document rather than persist. Persist via the host's state store (do not
|
|
67
|
+
* invent a new storage layer) before running multiple instances.
|
|
68
|
+
*/
|
|
69
|
+
export declare function createInMemoryMcpProofReplayStore(): McpProofReplayStore;
|
|
70
|
+
export interface CreateMcpSessionInput {
|
|
71
|
+
builderAddress: `0x${string}`;
|
|
72
|
+
grantId: string;
|
|
73
|
+
/**
|
|
74
|
+
* Handshake-proof replay guard. When supplied together with a `replayStore`,
|
|
75
|
+
* a proof id already seen (and still live) is rejected instead of minting a
|
|
76
|
+
* fresh token. `expiresAtMs` bounds how long the id is remembered (the
|
|
77
|
+
* proof's own expiry).
|
|
78
|
+
*/
|
|
79
|
+
proof?: {
|
|
80
|
+
id: string;
|
|
81
|
+
expiresAtMs: number;
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
export interface CreateMcpSessionOptions {
|
|
85
|
+
store: McpSessionStore;
|
|
86
|
+
authSessionVerifier: AuthSessionVerifierPort;
|
|
87
|
+
grantVerifier: GrantVerifierPort;
|
|
88
|
+
/**
|
|
89
|
+
* This server's owner address. The grant's grantor MUST equal it — mirrors
|
|
90
|
+
* `verifyDataReadPolicy`'s ownership binding (see policy/data-read.ts).
|
|
91
|
+
* Required (not optional) so TypeScript flags any caller that would mint a
|
|
92
|
+
* session for a grant issued by a different owner.
|
|
93
|
+
*/
|
|
94
|
+
serverOwner: `0x${string}`;
|
|
95
|
+
randomToken: () => string;
|
|
96
|
+
ttlMs?: number;
|
|
97
|
+
now?: () => number;
|
|
98
|
+
/** Optional replay guard for the handshake proof (see `input.proof`). */
|
|
99
|
+
replayStore?: McpProofReplayStore;
|
|
100
|
+
}
|
|
101
|
+
export interface CreateMcpSessionResult {
|
|
102
|
+
accessToken: string;
|
|
103
|
+
expiresInSeconds: number;
|
|
104
|
+
grantId: string;
|
|
105
|
+
scopes: string[];
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Validate the handshake identity and mint a session token. Per-scope / expiry
|
|
109
|
+
* enforcement is authoritative at read time (`verifyDataReadPolicy`), so this
|
|
110
|
+
* does the minimal checks that give a clear handshake error: builder registered,
|
|
111
|
+
* grant exists + not revoked, and grantee == builder.
|
|
112
|
+
*/
|
|
113
|
+
export declare function createMcpSession(input: CreateMcpSessionInput, options: CreateMcpSessionOptions): Promise<CreateMcpSessionResult>;
|
|
114
|
+
/**
|
|
115
|
+
* An auth port bound to one session's `{ builderAddress, grantId }`. Reads
|
|
116
|
+
* authorize by running `verifyDataReadPolicy` with the builder address proven at
|
|
117
|
+
* handshake — no signature needed. Owner ops are refused.
|
|
118
|
+
*/
|
|
119
|
+
/**
|
|
120
|
+
* x402 payment binding for a paid (self-signing) session. When present, every
|
|
121
|
+
* read runs the same challenge-or-settle cycle as an external builder's
|
|
122
|
+
* `GET /v1/data/:scope`. Omit it (owner's-Claude path) to keep reads free.
|
|
123
|
+
*/
|
|
124
|
+
export interface McpSessionPaymentConfig {
|
|
125
|
+
/** Payment-enabled data-API deps (storage, serverSigner, serverAddress, …). */
|
|
126
|
+
dataApiDeps: PersonalServerDataApiDeps;
|
|
127
|
+
gateway: Pick<GatewayClient, "getGrant">;
|
|
128
|
+
gatewayConfig: DataPortabilityGatewayConfig;
|
|
129
|
+
gatewayUrl: string;
|
|
130
|
+
}
|
|
131
|
+
export declare function createMcpSessionAuthPort(params: {
|
|
132
|
+
builderAddress: `0x${string}`;
|
|
133
|
+
grantId: string;
|
|
134
|
+
authSessionVerifier: AuthSessionVerifierPort;
|
|
135
|
+
grantVerifier: GrantVerifierPort;
|
|
136
|
+
/**
|
|
137
|
+
* This server's owner address, required by `verifyDataReadPolicy` to bind
|
|
138
|
+
* every session read to a grant issued by THIS server's owner.
|
|
139
|
+
*/
|
|
140
|
+
serverOwner: `0x${string}`;
|
|
141
|
+
runtimeAvailability?: RuntimeAvailabilityPort;
|
|
142
|
+
/** Present only for paid self-signing sessions; absent = free. */
|
|
143
|
+
payment?: McpSessionPaymentConfig;
|
|
144
|
+
}): PersonalServerApiAuthPort;
|
|
145
|
+
export interface McpSessionConnection {
|
|
146
|
+
connection: McpConnectionRecord;
|
|
147
|
+
account: ServerAccount;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Build a synthetic connection record + a throwaway signing account for the
|
|
151
|
+
* streamable `/mcp` handler. The MCP read client still signs its in-process
|
|
152
|
+
* request (the read path requires an account), but the session auth port
|
|
153
|
+
* ignores that signature and authorizes as the real builder — so this key is
|
|
154
|
+
* disposable and never leaves the process.
|
|
155
|
+
*/
|
|
156
|
+
export declare function buildMcpSessionConnection(session: Pick<McpSessionRecord, "builderAddress" | "grantId" | "scopes">, options?: {
|
|
157
|
+
id?: string;
|
|
158
|
+
now?: () => number;
|
|
159
|
+
}): McpSessionConnection;
|
|
160
|
+
//# sourceMappingURL=session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/mcp/session.ts"],"names":[],"mappings":"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"}
|