@opendatalabs/personal-server-ts-core 0.2.0 → 1.0.1
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 +160 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +774 -0
- package/dist/api/index.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 +5 -5
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +3 -5
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/index.d.ts +0 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +0 -1
- package/dist/config/index.js.map +1 -1
- package/dist/config/paths.d.ts.map +1 -1
- package/dist/config/paths.js +1 -9
- package/dist/config/paths.js.map +1 -1
- 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 +54 -0
- package/dist/contracts/binary.d.ts.map +1 -0
- package/dist/contracts/binary.js +92 -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 +115 -0
- package/dist/contracts/data.d.ts.map +1 -0
- package/dist/contracts/data.js +237 -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 +34 -0
- package/dist/contracts/sync.js.map +1 -0
- package/dist/errors/catalog.d.ts +9 -0
- package/dist/errors/catalog.d.ts.map +1 -1
- package/dist/errors/catalog.js +15 -0
- package/dist/errors/catalog.js.map +1 -1
- package/dist/grants/index.d.ts +2 -4
- package/dist/grants/index.d.ts.map +1 -1
- package/dist/grants/index.js +1 -2
- package/dist/grants/index.js.map +1 -1
- package/dist/keys/index.d.ts +1 -2
- package/dist/keys/index.d.ts.map +1 -1
- package/dist/keys/index.js +1 -2
- package/dist/keys/index.js.map +1 -1
- package/dist/keys/server-account.d.ts +5 -9
- package/dist/keys/server-account.d.ts.map +1 -1
- package/dist/keys/server-account.js +1 -47
- package/dist/keys/server-account.js.map +1 -1
- package/dist/logger/index.d.ts +6 -2
- package/dist/logger/index.d.ts.map +1 -1
- package/dist/logger/index.js +2 -6
- package/dist/logger/index.js.map +1 -1
- package/dist/logging/access-log.d.ts +0 -1
- package/dist/logging/access-log.d.ts.map +1 -1
- package/dist/logging/access-log.js +1 -24
- package/dist/logging/access-log.js.map +1 -1
- package/dist/logging/access-reader.d.ts +0 -5
- package/dist/logging/access-reader.d.ts.map +1 -1
- package/dist/logging/access-reader.js +1 -49
- package/dist/logging/access-reader.js.map +1 -1
- 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 +170 -0
- package/dist/mcp/connection-api.d.ts.map +1 -0
- package/dist/mcp/connection-api.js +379 -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 +10 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +10 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/read-client.d.ts +136 -0
- package/dist/mcp/read-client.d.ts.map +1 -0
- package/dist/mcp/read-client.js +306 -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 +69 -0
- package/dist/mcp/search/index.js.map +1 -0
- package/dist/mcp/server.d.ts +53 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +308 -0
- package/dist/mcp/server.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 +98 -0
- package/dist/mcp/store.js.map +1 -0
- package/dist/mcp/tools.d.ts +60 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +1058 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/mcp/types.d.ts +97 -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/policy/data-read.d.ts +15 -0
- package/dist/policy/data-read.d.ts.map +1 -0
- package/dist/policy/data-read.js +84 -0
- package/dist/policy/data-read.js.map +1 -0
- package/dist/policy/index.d.ts +2 -0
- package/dist/policy/index.d.ts.map +1 -0
- package/dist/policy/index.js +2 -0
- package/dist/policy/index.js.map +1 -0
- package/dist/ports/index.d.ts +95 -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/schemas/server-config.d.ts +12 -0
- package/dist/schemas/server-config.d.ts.map +1 -1
- package/dist/schemas/server-config.js +34 -4
- package/dist/schemas/server-config.js.map +1 -1
- package/dist/signing/index.d.ts +0 -1
- package/dist/signing/index.d.ts.map +1 -1
- package/dist/signing/index.js +0 -1
- package/dist/signing/index.js.map +1 -1
- package/dist/signing/request-signer.d.ts +8 -2
- package/dist/signing/request-signer.d.ts.map +1 -1
- package/dist/signing/request-signer.js +5 -31
- package/dist/signing/request-signer.js.map +1 -1
- package/dist/signing/signer.d.ts +20 -2
- package/dist/signing/signer.d.ts.map +1 -1
- package/dist/signing/signer.js +23 -13
- package/dist/signing/signer.js.map +1 -1
- package/dist/storage/adapters/index.d.ts +2 -1
- package/dist/storage/adapters/index.d.ts.map +1 -1
- package/dist/storage/adapters/index.js +2 -1
- package/dist/storage/adapters/index.js.map +1 -1
- package/dist/storage/adapters/interface.d.ts +10 -0
- package/dist/storage/adapters/interface.d.ts.map +1 -1
- 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 +7 -30
- package/dist/storage/adapters/vana.d.ts.map +1 -1
- package/dist/storage/adapters/vana.js +37 -92
- package/dist/storage/adapters/vana.js.map +1 -1
- 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 +5 -0
- package/dist/storage/blocks/index.d.ts.map +1 -0
- package/dist/storage/blocks/index.js +4 -0
- package/dist/storage/blocks/index.js.map +1 -0
- package/dist/storage/blocks/types.d.ts +49 -0
- package/dist/storage/blocks/types.d.ts.map +1 -0
- package/dist/storage/blocks/types.js +2 -0
- package/dist/{grants → storage/blocks}/types.js.map +1 -1
- package/dist/storage/hierarchy/index.d.ts +0 -1
- package/dist/storage/hierarchy/index.d.ts.map +1 -1
- package/dist/storage/hierarchy/index.js +0 -1
- package/dist/storage/hierarchy/index.js.map +1 -1
- package/dist/storage/hierarchy/manager.d.ts +0 -14
- package/dist/storage/hierarchy/manager.d.ts.map +1 -1
- package/dist/storage/hierarchy/manager.js +1 -59
- package/dist/storage/hierarchy/manager.js.map +1 -1
- package/dist/storage/hierarchy/paths.d.ts.map +1 -1
- package/dist/storage/hierarchy/paths.js +11 -4
- package/dist/storage/hierarchy/paths.js.map +1 -1
- package/dist/storage/index/index.d.ts +2 -3
- package/dist/storage/index/index.d.ts.map +1 -1
- package/dist/storage/index/index.js +1 -2
- package/dist/storage/index/index.js.map +1 -1
- package/dist/storage/index/manager.d.ts +26 -6
- package/dist/storage/index/manager.d.ts.map +1 -1
- package/dist/storage/index/manager.js +1 -131
- package/dist/storage/index/manager.js.map +1 -1
- package/dist/storage/index/schema.d.ts +1 -3
- package/dist/storage/index/schema.d.ts.map +1 -1
- package/dist/storage/index/schema.js +1 -26
- package/dist/storage/index/schema.js.map +1 -1
- package/dist/storage/index/types.d.ts +16 -0
- package/dist/storage/index/types.d.ts.map +1 -1
- 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 +5 -7
- package/dist/sync/cursor.d.ts.map +1 -1
- package/dist/sync/cursor.js +1 -18
- package/dist/sync/cursor.js.map +1 -1
- package/dist/sync/engine/sync-manager.d.ts +17 -0
- package/dist/sync/engine/sync-manager.d.ts.map +1 -1
- package/dist/sync/engine/sync-manager.js +104 -43
- package/dist/sync/engine/sync-manager.js.map +1 -1
- package/dist/sync/index.d.ts +4 -2
- package/dist/sync/index.d.ts.map +1 -1
- package/dist/sync/index.js +1 -1
- package/dist/sync/index.js.map +1 -1
- 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/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/types.d.ts +9 -24
- package/dist/sync/types.d.ts.map +1 -1
- package/dist/sync/workers/delete.d.ts +42 -0
- package/dist/sync/workers/delete.d.ts.map +1 -0
- package/dist/sync/workers/delete.js +40 -0
- package/dist/sync/workers/delete.js.map +1 -0
- package/dist/sync/workers/download.d.ts +64 -18
- package/dist/sync/workers/download.d.ts.map +1 -1
- package/dist/sync/workers/download.js +396 -54
- package/dist/sync/workers/download.js.map +1 -1
- package/dist/sync/workers/upload.d.ts +29 -18
- package/dist/sync/workers/upload.d.ts.map +1 -1
- package/dist/sync/workers/upload.js +163 -46
- package/dist/sync/workers/upload.js.map +1 -1
- package/dist/test-utils/wallet.d.ts +1 -0
- package/dist/test-utils/wallet.d.ts.map +1 -1
- package/dist/test-utils/wallet.js +9 -31
- package/dist/test-utils/wallet.js.map +1 -1
- package/package.json +51 -27
- package/dist/auth/web3-signed.d.ts +0 -48
- package/dist/auth/web3-signed.d.ts.map +0 -1
- package/dist/auth/web3-signed.js +0 -110
- package/dist/auth/web3-signed.js.map +0 -1
- package/dist/config/loader.d.ts +0 -8
- package/dist/config/loader.d.ts.map +0 -1
- package/dist/config/loader.js +0 -38
- package/dist/config/loader.js.map +0 -1
- package/dist/gateway/client.d.ts +0 -98
- package/dist/gateway/client.d.ts.map +0 -1
- package/dist/gateway/client.js +0 -171
- package/dist/gateway/client.js.map +0 -1
- package/dist/grants/eip712.d.ts +0 -28
- package/dist/grants/eip712.d.ts.map +0 -1
- package/dist/grants/eip712.js +0 -30
- package/dist/grants/eip712.js.map +0 -1
- package/dist/grants/types.d.ts +0 -29
- package/dist/grants/types.d.ts.map +0 -1
- package/dist/grants/types.js +0 -6
- package/dist/grants/verify.d.ts +0 -24
- package/dist/grants/verify.d.ts.map +0 -1
- package/dist/grants/verify.js +0 -71
- package/dist/grants/verify.js.map +0 -1
- package/dist/keys/derive.d.ts +0 -18
- package/dist/keys/derive.d.ts.map +0 -1
- package/dist/keys/derive.js +0 -43
- package/dist/keys/derive.js.map +0 -1
- package/dist/schemas/data-file.d.ts +0 -20
- package/dist/schemas/data-file.d.ts.map +0 -1
- package/dist/schemas/data-file.js +0 -23
- package/dist/schemas/data-file.js.map +0 -1
- package/dist/scopes/index.d.ts +0 -3
- package/dist/scopes/index.d.ts.map +0 -1
- package/dist/scopes/index.js +0 -3
- package/dist/scopes/index.js.map +0 -1
- package/dist/scopes/match.d.ts +0 -13
- package/dist/scopes/match.d.ts.map +0 -1
- package/dist/scopes/match.js +0 -23
- package/dist/scopes/match.js.map +0 -1
- package/dist/scopes/parse.d.ts +0 -12
- package/dist/scopes/parse.d.ts.map +0 -1
- package/dist/scopes/parse.js +0 -29
- package/dist/scopes/parse.js.map +0 -1
- package/dist/signing/eip712.d.ts +0 -69
- package/dist/signing/eip712.d.ts.map +0 -1
- package/dist/signing/eip712.js +0 -68
- package/dist/signing/eip712.js.map +0 -1
- package/dist/storage/encryption/decrypt.d.ts +0 -10
- package/dist/storage/encryption/decrypt.d.ts.map +0 -1
- package/dist/storage/encryption/decrypt.js +0 -19
- package/dist/storage/encryption/decrypt.js.map +0 -1
- package/dist/storage/encryption/encrypt.d.ts +0 -10
- package/dist/storage/encryption/encrypt.d.ts.map +0 -1
- package/dist/storage/encryption/encrypt.js +0 -19
- package/dist/storage/encryption/encrypt.js.map +0 -1
- package/dist/storage/encryption/index.d.ts +0 -3
- package/dist/storage/encryption/index.d.ts.map +0 -1
- package/dist/storage/encryption/index.js +0 -3
- package/dist/storage/encryption/index.js.map +0 -1
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { type DataFileEnvelope } from "@opendatalabs/vana-sdk/browser";
|
|
2
|
+
/**
|
|
3
|
+
* Binary / unstructured data is carried inside the standard DataFileEnvelope's
|
|
4
|
+
* `data` record (the envelope schema is owned by the SDK and only permits a
|
|
5
|
+
* JSON object there, so the bytes are base64-encoded into a marked record).
|
|
6
|
+
* This keeps the entire encrypt → upload → register → download path unchanged;
|
|
7
|
+
* only ingest and read need to understand the binary shape.
|
|
8
|
+
*/
|
|
9
|
+
export declare const BINARY_MARKER: "$binary";
|
|
10
|
+
export declare const BINARY_ENCODING: "base64";
|
|
11
|
+
export interface BinaryEnvelopeData extends Record<string, unknown> {
|
|
12
|
+
$binary: true;
|
|
13
|
+
mimeType: string;
|
|
14
|
+
filename?: string;
|
|
15
|
+
/** Plaintext byte length (before base64). */
|
|
16
|
+
sizeBytes: number;
|
|
17
|
+
/** 0x-prefixed SHA-256 of the plaintext bytes. */
|
|
18
|
+
contentHash: `0x${string}`;
|
|
19
|
+
encoding: typeof BINARY_ENCODING;
|
|
20
|
+
content: string;
|
|
21
|
+
/** Free-form caller metadata (e.g. a description). Omitted when absent. */
|
|
22
|
+
metadata?: unknown;
|
|
23
|
+
}
|
|
24
|
+
/** Build the `data` record for a binary envelope (does not hash — see ingest). */
|
|
25
|
+
export declare function buildBinaryEnvelopeData(params: {
|
|
26
|
+
bytes: Uint8Array;
|
|
27
|
+
mimeType: string;
|
|
28
|
+
filename?: string;
|
|
29
|
+
contentHash: `0x${string}`;
|
|
30
|
+
metadata?: unknown;
|
|
31
|
+
}): BinaryEnvelopeData;
|
|
32
|
+
export declare function isBinaryEnvelope(envelope: Pick<DataFileEnvelope, "data">): boolean;
|
|
33
|
+
export interface DecodedBinary {
|
|
34
|
+
bytes: Uint8Array;
|
|
35
|
+
mimeType: string;
|
|
36
|
+
filename?: string;
|
|
37
|
+
metadata?: unknown;
|
|
38
|
+
}
|
|
39
|
+
/** Decode a binary envelope back to raw bytes for serving over HTTP. */
|
|
40
|
+
export declare function decodeBinaryEnvelope(envelope: Pick<DataFileEnvelope, "data">): DecodedBinary;
|
|
41
|
+
/**
|
|
42
|
+
* Parse a free-form metadata header value. Best-effort: a value that parses as
|
|
43
|
+
* JSON is stored as the parsed value (object/array/etc); anything else is kept
|
|
44
|
+
* as a plain string (so a bare description "just works"). Returns undefined for
|
|
45
|
+
* absent/blank input.
|
|
46
|
+
*/
|
|
47
|
+
export declare function parseMetadataHeader(value: string | null): unknown;
|
|
48
|
+
/** Serialize metadata for an HTTP response header (string as-is, else JSON). */
|
|
49
|
+
export declare function stringifyMetadataHeader(metadata: unknown): string;
|
|
50
|
+
/** 0x-prefixed SHA-256 hex of the given bytes (Web Crypto, browser + node). */
|
|
51
|
+
export declare function sha256Hex(bytes: Uint8Array): Promise<`0x${string}`>;
|
|
52
|
+
export declare function bytesToBase64(bytes: Uint8Array): string;
|
|
53
|
+
export declare function base64ToBytes(base64: string): Uint8Array;
|
|
54
|
+
//# sourceMappingURL=binary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binary.d.ts","sourceRoot":"","sources":["../../src/contracts/binary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAEvE;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,EAAG,SAAkB,CAAC;AAChD,eAAO,MAAM,eAAe,EAAG,QAAiB,CAAC;AAEjD,MAAM,WAAW,kBAAmB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACjE,OAAO,EAAE,IAAI,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;IAC3B,QAAQ,EAAE,OAAO,eAAe,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,kFAAkF;AAClF,wBAAgB,uBAAuB,CAAC,MAAM,EAAE;IAC9C,KAAK,EAAE,UAAU,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,kBAAkB,CAWrB;AAED,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,GACvC,OAAO,CAGT;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,UAAU,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wEAAwE;AACxE,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,GACvC,aAAa,CAcf;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CASjE;AAED,gFAAgF;AAChF,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,CAEjE;AAED,+EAA+E;AAC/E,wBAAsB,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC,CAMzE;AAUD,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAOvD;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAKxD"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Binary / unstructured data is carried inside the standard DataFileEnvelope's
|
|
3
|
+
* `data` record (the envelope schema is owned by the SDK and only permits a
|
|
4
|
+
* JSON object there, so the bytes are base64-encoded into a marked record).
|
|
5
|
+
* This keeps the entire encrypt → upload → register → download path unchanged;
|
|
6
|
+
* only ingest and read need to understand the binary shape.
|
|
7
|
+
*/
|
|
8
|
+
export const BINARY_MARKER = "$binary";
|
|
9
|
+
export const BINARY_ENCODING = "base64";
|
|
10
|
+
/** Build the `data` record for a binary envelope (does not hash — see ingest). */
|
|
11
|
+
export function buildBinaryEnvelopeData(params) {
|
|
12
|
+
return {
|
|
13
|
+
$binary: true,
|
|
14
|
+
mimeType: params.mimeType,
|
|
15
|
+
...(params.filename ? { filename: params.filename } : {}),
|
|
16
|
+
sizeBytes: params.bytes.length,
|
|
17
|
+
contentHash: params.contentHash,
|
|
18
|
+
encoding: BINARY_ENCODING,
|
|
19
|
+
content: bytesToBase64(params.bytes),
|
|
20
|
+
...(params.metadata !== undefined ? { metadata: params.metadata } : {}),
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export function isBinaryEnvelope(envelope) {
|
|
24
|
+
const data = envelope.data;
|
|
25
|
+
return data?.[BINARY_MARKER] === true;
|
|
26
|
+
}
|
|
27
|
+
/** Decode a binary envelope back to raw bytes for serving over HTTP. */
|
|
28
|
+
export function decodeBinaryEnvelope(envelope) {
|
|
29
|
+
const data = envelope.data;
|
|
30
|
+
if (data?.[BINARY_MARKER] !== true || typeof data.content !== "string") {
|
|
31
|
+
throw new Error("Envelope does not contain binary data");
|
|
32
|
+
}
|
|
33
|
+
return {
|
|
34
|
+
bytes: base64ToBytes(data.content),
|
|
35
|
+
mimeType: typeof data.mimeType === "string"
|
|
36
|
+
? data.mimeType
|
|
37
|
+
: "application/octet-stream",
|
|
38
|
+
filename: typeof data.filename === "string" ? data.filename : undefined,
|
|
39
|
+
metadata: data.metadata,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Parse a free-form metadata header value. Best-effort: a value that parses as
|
|
44
|
+
* JSON is stored as the parsed value (object/array/etc); anything else is kept
|
|
45
|
+
* as a plain string (so a bare description "just works"). Returns undefined for
|
|
46
|
+
* absent/blank input.
|
|
47
|
+
*/
|
|
48
|
+
export function parseMetadataHeader(value) {
|
|
49
|
+
if (value === null)
|
|
50
|
+
return undefined;
|
|
51
|
+
const trimmed = value.trim();
|
|
52
|
+
if (trimmed === "")
|
|
53
|
+
return undefined;
|
|
54
|
+
try {
|
|
55
|
+
return JSON.parse(trimmed);
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return value;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/** Serialize metadata for an HTTP response header (string as-is, else JSON). */
|
|
62
|
+
export function stringifyMetadataHeader(metadata) {
|
|
63
|
+
return typeof metadata === "string" ? metadata : JSON.stringify(metadata);
|
|
64
|
+
}
|
|
65
|
+
/** 0x-prefixed SHA-256 hex of the given bytes (Web Crypto, browser + node). */
|
|
66
|
+
export async function sha256Hex(bytes) {
|
|
67
|
+
const digest = await crypto.subtle.digest("SHA-256", bytes);
|
|
68
|
+
return ("0x" + bytesToHex(new Uint8Array(digest)));
|
|
69
|
+
}
|
|
70
|
+
function bytesToHex(bytes) {
|
|
71
|
+
let out = "";
|
|
72
|
+
for (const b of bytes)
|
|
73
|
+
out += b.toString(16).padStart(2, "0");
|
|
74
|
+
return out;
|
|
75
|
+
}
|
|
76
|
+
const BASE64_CHUNK = 0x8000;
|
|
77
|
+
export function bytesToBase64(bytes) {
|
|
78
|
+
let binary = "";
|
|
79
|
+
for (let i = 0; i < bytes.length; i += BASE64_CHUNK) {
|
|
80
|
+
const chunk = bytes.subarray(i, i + BASE64_CHUNK);
|
|
81
|
+
binary += String.fromCharCode(...chunk);
|
|
82
|
+
}
|
|
83
|
+
return btoa(binary);
|
|
84
|
+
}
|
|
85
|
+
export function base64ToBytes(base64) {
|
|
86
|
+
const binary = atob(base64);
|
|
87
|
+
const bytes = new Uint8Array(binary.length);
|
|
88
|
+
for (let i = 0; i < binary.length; i++)
|
|
89
|
+
bytes[i] = binary.charCodeAt(i);
|
|
90
|
+
return bytes;
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=binary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binary.js","sourceRoot":"","sources":["../../src/contracts/binary.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type ContractResult } from "./http.js";
|
|
2
|
+
export declare function validateServerConfigContract(body: unknown): ContractResult;
|
|
3
|
+
export declare function configReadErrorContract(kind: "not-found" | "read"): ContractResult;
|
|
4
|
+
export declare function configWriteErrorContract(): ContractResult;
|
|
5
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/contracts/config.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,WAAW,CAAC;AAEnB,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,OAAO,GAAG,cAAc,CAiB1E;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,WAAW,GAAG,MAAM,GACzB,cAAc,CAKhB;AAED,wBAAgB,wBAAwB,IAAI,cAAc,CAEzD"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { ServerConfigSchema } from "../schemas/server-config.js";
|
|
2
|
+
import { contractOk, contractProtocolError, } from "./http.js";
|
|
3
|
+
export function validateServerConfigContract(body) {
|
|
4
|
+
const result = ServerConfigSchema.safeParse(body);
|
|
5
|
+
if (!result.success) {
|
|
6
|
+
return {
|
|
7
|
+
ok: false,
|
|
8
|
+
status: 400,
|
|
9
|
+
body: {
|
|
10
|
+
error: {
|
|
11
|
+
code: 400,
|
|
12
|
+
errorCode: "VALIDATION_ERROR",
|
|
13
|
+
message: "Invalid config",
|
|
14
|
+
issues: result.error.issues,
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
return contractOk({ status: "saved", config: result.data });
|
|
20
|
+
}
|
|
21
|
+
export function configReadErrorContract(kind) {
|
|
22
|
+
if (kind === "not-found") {
|
|
23
|
+
return contractProtocolError(404, "NOT_FOUND", "Config file not found");
|
|
24
|
+
}
|
|
25
|
+
return contractProtocolError(500, "READ_ERROR", "Failed to read config");
|
|
26
|
+
}
|
|
27
|
+
export function configWriteErrorContract() {
|
|
28
|
+
return contractProtocolError(500, "WRITE_ERROR", "Failed to write config");
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/contracts/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EACL,UAAU,EACV,qBAAqB,GAEtB,MAAM,WAAW,CAAC;AAEnB,MAAM,UAAU,4BAA4B,CAAC,IAAa;IACxD,MAAM,MAAM,GAAG,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAClD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,GAAG;YACX,IAAI,EAAE;gBACJ,KAAK,EAAE;oBACL,IAAI,EAAE,GAAG;oBACT,SAAS,EAAE,kBAAkB;oBAC7B,OAAO,EAAE,gBAAgB;oBACzB,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;iBAC5B;aACF;SACF,CAAC;IACJ,CAAC;IACD,OAAO,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,IAA0B;IAE1B,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QACzB,OAAO,qBAAqB,CAAC,GAAG,EAAE,WAAW,EAAE,uBAAuB,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,qBAAqB,CAAC,GAAG,EAAE,YAAY,EAAE,uBAAuB,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,wBAAwB;IACtC,OAAO,qBAAqB,CAAC,GAAG,EAAE,aAAa,EAAE,wBAAwB,CAAC,CAAC;AAC7E,CAAC"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { type DataStoragePort } from "../ports/index.js";
|
|
2
|
+
import { type DataFileEnvelope } from "@opendatalabs/vana-sdk/browser";
|
|
3
|
+
import { type WriteResult } from "../storage/hierarchy/index.js";
|
|
4
|
+
export type DataContractErrorCode = "INVALID_SCOPE" | "INVALID_BODY" | "NOT_FOUND";
|
|
5
|
+
export interface DataContractErrorBody {
|
|
6
|
+
error: DataContractErrorCode;
|
|
7
|
+
message: string;
|
|
8
|
+
}
|
|
9
|
+
export interface DataContractError {
|
|
10
|
+
ok: false;
|
|
11
|
+
status: 400 | 404;
|
|
12
|
+
body: DataContractErrorBody;
|
|
13
|
+
}
|
|
14
|
+
export interface ListDataScopesContractInput {
|
|
15
|
+
storage: DataStoragePort;
|
|
16
|
+
scopePrefix?: string;
|
|
17
|
+
limit?: number;
|
|
18
|
+
offset?: number;
|
|
19
|
+
}
|
|
20
|
+
export interface ListDataScopesContractResult {
|
|
21
|
+
ok: true;
|
|
22
|
+
response: {
|
|
23
|
+
scopes: ReturnType<DataStoragePort["listScopes"]>["scopes"];
|
|
24
|
+
total: number;
|
|
25
|
+
limit: number;
|
|
26
|
+
offset: number;
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
export interface ListDataVersionsContractInput {
|
|
30
|
+
storage: DataStoragePort;
|
|
31
|
+
scopeParam: string;
|
|
32
|
+
limit?: number;
|
|
33
|
+
offset?: number;
|
|
34
|
+
}
|
|
35
|
+
export interface ListDataVersionsContractResult {
|
|
36
|
+
ok: true;
|
|
37
|
+
scope: string;
|
|
38
|
+
response: {
|
|
39
|
+
scope: string;
|
|
40
|
+
versions: Array<{
|
|
41
|
+
fileId: string | null;
|
|
42
|
+
schemaId: string | null;
|
|
43
|
+
collectedAt: string;
|
|
44
|
+
}>;
|
|
45
|
+
total: number;
|
|
46
|
+
limit: number;
|
|
47
|
+
offset: number;
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
export interface ReadDataContractInput {
|
|
51
|
+
storage: DataStoragePort;
|
|
52
|
+
scopeParam: string;
|
|
53
|
+
fileId?: string;
|
|
54
|
+
at?: string;
|
|
55
|
+
}
|
|
56
|
+
export interface ReadDataContractResult {
|
|
57
|
+
ok: true;
|
|
58
|
+
scope: string;
|
|
59
|
+
envelope: DataFileEnvelope;
|
|
60
|
+
}
|
|
61
|
+
export interface IngestDataContractInput {
|
|
62
|
+
storage: DataStoragePort;
|
|
63
|
+
scopeParam: string;
|
|
64
|
+
body: unknown;
|
|
65
|
+
collectedAt: string;
|
|
66
|
+
status: "stored" | "syncing";
|
|
67
|
+
}
|
|
68
|
+
export interface IngestDataContractResult {
|
|
69
|
+
ok: true;
|
|
70
|
+
scope: string;
|
|
71
|
+
collectedAt: string;
|
|
72
|
+
response: {
|
|
73
|
+
scope: string;
|
|
74
|
+
collectedAt: string;
|
|
75
|
+
status: "stored" | "syncing";
|
|
76
|
+
};
|
|
77
|
+
writeResult: WriteResult;
|
|
78
|
+
}
|
|
79
|
+
export interface IngestBinaryDataContractInput {
|
|
80
|
+
storage: DataStoragePort;
|
|
81
|
+
scopeParam: string;
|
|
82
|
+
bytes: Uint8Array;
|
|
83
|
+
mimeType: string;
|
|
84
|
+
filename?: string;
|
|
85
|
+
/** Free-form caller metadata (e.g. a description) stored alongside the file. */
|
|
86
|
+
metadata?: unknown;
|
|
87
|
+
collectedAt: string;
|
|
88
|
+
status: "stored" | "syncing";
|
|
89
|
+
}
|
|
90
|
+
export interface DeleteDataScopeContractInput {
|
|
91
|
+
storage: DataStoragePort;
|
|
92
|
+
scopeParam: string;
|
|
93
|
+
}
|
|
94
|
+
export interface DeleteDataScopeContractResult {
|
|
95
|
+
ok: true;
|
|
96
|
+
deletedCount: number;
|
|
97
|
+
}
|
|
98
|
+
export declare function parseDataScopeContract(scopeParam: string): {
|
|
99
|
+
ok: true;
|
|
100
|
+
scope: string;
|
|
101
|
+
} | DataContractError;
|
|
102
|
+
export declare function listDataScopesContract(input: ListDataScopesContractInput): Promise<ListDataScopesContractResult>;
|
|
103
|
+
export declare function listDataVersionsContract(input: ListDataVersionsContractInput): ListDataVersionsContractResult | DataContractError;
|
|
104
|
+
export declare function readDataContract(input: ReadDataContractInput): Promise<ReadDataContractResult | DataContractError>;
|
|
105
|
+
export declare function ingestDataContract(input: IngestDataContractInput): Promise<IngestDataContractResult | DataContractError>;
|
|
106
|
+
/**
|
|
107
|
+
* Ingest unstructured/binary data (e.g. a PDF). The bytes are hashed and
|
|
108
|
+
* base64-encoded into a binary DataFileEnvelope, then written and indexed
|
|
109
|
+
* exactly like JSON ingest — so the downstream encrypt/upload/register path is
|
|
110
|
+
* unchanged. Unlike JSON ingest, the body is raw bytes (not a JSON object) and
|
|
111
|
+
* `schemaId` may be absent (the caller decides whether to auto-register one).
|
|
112
|
+
*/
|
|
113
|
+
export declare function ingestBinaryDataContract(input: IngestBinaryDataContractInput): Promise<IngestDataContractResult | DataContractError>;
|
|
114
|
+
export declare function deleteDataScopeContract(input: DeleteDataScopeContractInput): Promise<DeleteDataScopeContractResult | DataContractError>;
|
|
115
|
+
//# sourceMappingURL=data.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../src/contracts/data.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
import { createDataFileEnvelope, ScopeSchema, } from "@opendatalabs/vana-sdk/browser";
|
|
2
|
+
import { buildBinaryEnvelopeData, sha256Hex } from "./binary.js";
|
|
3
|
+
import { buildDataBlocksAsync } from "../storage/blocks/build.js";
|
|
4
|
+
function invalidScope(message) {
|
|
5
|
+
return {
|
|
6
|
+
ok: false,
|
|
7
|
+
status: 400,
|
|
8
|
+
body: {
|
|
9
|
+
error: "INVALID_SCOPE",
|
|
10
|
+
message,
|
|
11
|
+
},
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export function parseDataScopeContract(scopeParam) {
|
|
15
|
+
const scopeResult = ScopeSchema.safeParse(scopeParam);
|
|
16
|
+
if (!scopeResult.success) {
|
|
17
|
+
return invalidScope(scopeResult.error.issues[0]?.message ?? "Invalid scope");
|
|
18
|
+
}
|
|
19
|
+
return { ok: true, scope: scopeResult.data };
|
|
20
|
+
}
|
|
21
|
+
function normalizeLimit(value) {
|
|
22
|
+
return value ?? 20;
|
|
23
|
+
}
|
|
24
|
+
function normalizeOffset(value) {
|
|
25
|
+
return value ?? 0;
|
|
26
|
+
}
|
|
27
|
+
function isRecord(value) {
|
|
28
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
29
|
+
}
|
|
30
|
+
export async function listDataScopesContract(input) {
|
|
31
|
+
const limit = normalizeLimit(input.limit);
|
|
32
|
+
const offset = normalizeOffset(input.offset);
|
|
33
|
+
const result = input.storage.listScopes({
|
|
34
|
+
scopePrefix: input.scopePrefix,
|
|
35
|
+
limit,
|
|
36
|
+
offset,
|
|
37
|
+
});
|
|
38
|
+
const scopes = await Promise.all(result.scopes.map(async (summary) => {
|
|
39
|
+
const entry = input.storage.findEntry({
|
|
40
|
+
scope: summary.scope,
|
|
41
|
+
at: summary.latestCollectedAt,
|
|
42
|
+
});
|
|
43
|
+
if (!entry) {
|
|
44
|
+
return summary;
|
|
45
|
+
}
|
|
46
|
+
const hasBlocks = typeof input.storage.canReadScopeBlocks === "function"
|
|
47
|
+
? await input.storage.canReadScopeBlocks(summary.scope, summary.latestCollectedAt)
|
|
48
|
+
: typeof input.storage.hasScopeBlocks === "function"
|
|
49
|
+
? await input.storage.hasScopeBlocks(summary.scope, summary.latestCollectedAt)
|
|
50
|
+
: false;
|
|
51
|
+
return {
|
|
52
|
+
...summary,
|
|
53
|
+
dataStatus: hasBlocks ? "ready" : "indexing",
|
|
54
|
+
sizeBytes: entry.sizeBytes,
|
|
55
|
+
};
|
|
56
|
+
}));
|
|
57
|
+
return {
|
|
58
|
+
ok: true,
|
|
59
|
+
response: {
|
|
60
|
+
scopes,
|
|
61
|
+
total: result.total,
|
|
62
|
+
limit,
|
|
63
|
+
offset,
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
export function listDataVersionsContract(input) {
|
|
68
|
+
const scopeResult = parseDataScopeContract(input.scopeParam);
|
|
69
|
+
if (!scopeResult.ok)
|
|
70
|
+
return scopeResult;
|
|
71
|
+
const limit = normalizeLimit(input.limit);
|
|
72
|
+
const offset = normalizeOffset(input.offset);
|
|
73
|
+
const entries = input.storage.listVersions(scopeResult.scope, {
|
|
74
|
+
limit,
|
|
75
|
+
offset,
|
|
76
|
+
});
|
|
77
|
+
return {
|
|
78
|
+
ok: true,
|
|
79
|
+
scope: scopeResult.scope,
|
|
80
|
+
response: {
|
|
81
|
+
scope: scopeResult.scope,
|
|
82
|
+
versions: entries.map((entry) => ({
|
|
83
|
+
fileId: entry.fileId,
|
|
84
|
+
schemaId: entry.schemaId,
|
|
85
|
+
collectedAt: entry.collectedAt,
|
|
86
|
+
})),
|
|
87
|
+
total: input.storage.countVersions(scopeResult.scope),
|
|
88
|
+
limit,
|
|
89
|
+
offset,
|
|
90
|
+
},
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
export async function readDataContract(input) {
|
|
94
|
+
const scopeResult = parseDataScopeContract(input.scopeParam);
|
|
95
|
+
if (!scopeResult.ok)
|
|
96
|
+
return scopeResult;
|
|
97
|
+
const entry = input.storage.findEntry({
|
|
98
|
+
scope: scopeResult.scope,
|
|
99
|
+
fileId: input.fileId,
|
|
100
|
+
at: input.at,
|
|
101
|
+
});
|
|
102
|
+
if (!entry) {
|
|
103
|
+
return {
|
|
104
|
+
ok: false,
|
|
105
|
+
status: 404,
|
|
106
|
+
body: {
|
|
107
|
+
error: "NOT_FOUND",
|
|
108
|
+
message: `No data found for scope "${scopeResult.scope}"`,
|
|
109
|
+
},
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
return {
|
|
113
|
+
ok: true,
|
|
114
|
+
scope: scopeResult.scope,
|
|
115
|
+
envelope: await input.storage.readEnvelope(scopeResult.scope, entry.collectedAt),
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
export async function ingestDataContract(input) {
|
|
119
|
+
const scopeResult = parseDataScopeContract(input.scopeParam);
|
|
120
|
+
if (!scopeResult.ok)
|
|
121
|
+
return scopeResult;
|
|
122
|
+
if (!isRecord(input.body)) {
|
|
123
|
+
return {
|
|
124
|
+
ok: false,
|
|
125
|
+
status: 400,
|
|
126
|
+
body: {
|
|
127
|
+
error: "INVALID_BODY",
|
|
128
|
+
message: "Request body must be a JSON object",
|
|
129
|
+
},
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
const envelope = createDataFileEnvelope(scopeResult.scope, input.collectedAt, input.body);
|
|
133
|
+
const writeResult = await input.storage.writeEnvelope(envelope);
|
|
134
|
+
try {
|
|
135
|
+
await writeBlockSidecars(input.storage, envelope);
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
// Best-effort bounded sidecars: raw envelope storage remains the source of truth.
|
|
139
|
+
}
|
|
140
|
+
await input.storage.insertEntry({
|
|
141
|
+
fileId: null,
|
|
142
|
+
schemaId: null,
|
|
143
|
+
path: writeResult.relativePath,
|
|
144
|
+
scope: scopeResult.scope,
|
|
145
|
+
collectedAt: input.collectedAt,
|
|
146
|
+
sizeBytes: writeResult.sizeBytes,
|
|
147
|
+
});
|
|
148
|
+
return {
|
|
149
|
+
ok: true,
|
|
150
|
+
scope: scopeResult.scope,
|
|
151
|
+
collectedAt: input.collectedAt,
|
|
152
|
+
response: {
|
|
153
|
+
scope: scopeResult.scope,
|
|
154
|
+
collectedAt: input.collectedAt,
|
|
155
|
+
status: input.status,
|
|
156
|
+
},
|
|
157
|
+
writeResult,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Ingest unstructured/binary data (e.g. a PDF). The bytes are hashed and
|
|
162
|
+
* base64-encoded into a binary DataFileEnvelope, then written and indexed
|
|
163
|
+
* exactly like JSON ingest — so the downstream encrypt/upload/register path is
|
|
164
|
+
* unchanged. Unlike JSON ingest, the body is raw bytes (not a JSON object) and
|
|
165
|
+
* `schemaId` may be absent (the caller decides whether to auto-register one).
|
|
166
|
+
*/
|
|
167
|
+
export async function ingestBinaryDataContract(input) {
|
|
168
|
+
const scopeResult = parseDataScopeContract(input.scopeParam);
|
|
169
|
+
if (!scopeResult.ok)
|
|
170
|
+
return scopeResult;
|
|
171
|
+
if (input.bytes.length === 0) {
|
|
172
|
+
return {
|
|
173
|
+
ok: false,
|
|
174
|
+
status: 400,
|
|
175
|
+
body: {
|
|
176
|
+
error: "INVALID_BODY",
|
|
177
|
+
message: "Request body must not be empty",
|
|
178
|
+
},
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
const contentHash = await sha256Hex(input.bytes);
|
|
182
|
+
const data = buildBinaryEnvelopeData({
|
|
183
|
+
bytes: input.bytes,
|
|
184
|
+
mimeType: input.mimeType,
|
|
185
|
+
filename: input.filename,
|
|
186
|
+
contentHash,
|
|
187
|
+
metadata: input.metadata,
|
|
188
|
+
});
|
|
189
|
+
const envelope = createDataFileEnvelope(scopeResult.scope, input.collectedAt, data);
|
|
190
|
+
const writeResult = await input.storage.writeEnvelope(envelope);
|
|
191
|
+
try {
|
|
192
|
+
await writeBlockSidecars(input.storage, envelope);
|
|
193
|
+
}
|
|
194
|
+
catch {
|
|
195
|
+
// Best-effort bounded sidecars: raw envelope storage remains the source of truth.
|
|
196
|
+
}
|
|
197
|
+
await input.storage.insertEntry({
|
|
198
|
+
fileId: null,
|
|
199
|
+
schemaId: null,
|
|
200
|
+
path: writeResult.relativePath,
|
|
201
|
+
scope: scopeResult.scope,
|
|
202
|
+
collectedAt: input.collectedAt,
|
|
203
|
+
sizeBytes: input.bytes.length,
|
|
204
|
+
});
|
|
205
|
+
return {
|
|
206
|
+
ok: true,
|
|
207
|
+
scope: scopeResult.scope,
|
|
208
|
+
collectedAt: input.collectedAt,
|
|
209
|
+
response: {
|
|
210
|
+
scope: scopeResult.scope,
|
|
211
|
+
collectedAt: input.collectedAt,
|
|
212
|
+
status: input.status,
|
|
213
|
+
},
|
|
214
|
+
writeResult,
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
export async function deleteDataScopeContract(input) {
|
|
218
|
+
const scopeResult = parseDataScopeContract(input.scopeParam);
|
|
219
|
+
if (!scopeResult.ok)
|
|
220
|
+
return scopeResult;
|
|
221
|
+
return {
|
|
222
|
+
ok: true,
|
|
223
|
+
deletedCount: await input.storage.deleteScope(scopeResult.scope),
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
async function writeBlockSidecars(storage, envelope) {
|
|
227
|
+
if (!storage.writeBlockManifest)
|
|
228
|
+
return;
|
|
229
|
+
const built = await buildDataBlocksAsync({
|
|
230
|
+
scope: envelope.scope,
|
|
231
|
+
collectedAt: envelope.collectedAt,
|
|
232
|
+
schemaId: envelope.schemaId,
|
|
233
|
+
content: envelope,
|
|
234
|
+
});
|
|
235
|
+
await storage.writeBlockManifest(envelope.scope, envelope.collectedAt, built.manifest, built.blocks);
|
|
236
|
+
}
|
|
237
|
+
//# sourceMappingURL=data.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data.js","sourceRoot":"","sources":["../../src/contracts/data.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { DataPortabilityGatewayConfig, GatewayClient } from "@opendatalabs/vana-sdk/browser";
|
|
2
|
+
import type { ServerSigner } from "../signing/index.js";
|
|
3
|
+
import { type ContractResult } from "./http.js";
|
|
4
|
+
export interface VerifyGrantRequestBody {
|
|
5
|
+
grantorAddress: `0x${string}`;
|
|
6
|
+
granteeId: `0x${string}`;
|
|
7
|
+
scopes: string[];
|
|
8
|
+
grantVersion: string;
|
|
9
|
+
expiresAt: string;
|
|
10
|
+
signature: `0x${string}`;
|
|
11
|
+
}
|
|
12
|
+
export interface CreateGrantRequestBody {
|
|
13
|
+
granteeAddress: `0x${string}`;
|
|
14
|
+
scopes: string[];
|
|
15
|
+
/** Unix seconds; 0 = no expiry. Default 0 when omitted. */
|
|
16
|
+
expiresAt?: number;
|
|
17
|
+
/** Decimal uint256 string; default "1". */
|
|
18
|
+
grantVersion?: string;
|
|
19
|
+
}
|
|
20
|
+
export interface CreateGrantContractInput {
|
|
21
|
+
gateway: Pick<GatewayClient, "getBuilder" | "createGrant">;
|
|
22
|
+
serverOwner?: `0x${string}`;
|
|
23
|
+
serverSigner?: Pick<ServerSigner, "signGrantRegistration">;
|
|
24
|
+
body: unknown;
|
|
25
|
+
}
|
|
26
|
+
export interface RevokeGrantContractInput {
|
|
27
|
+
gateway: Pick<GatewayClient, "getGrant" | "revokeGrant">;
|
|
28
|
+
serverOwner?: `0x${string}`;
|
|
29
|
+
serverSigner?: Partial<Pick<ServerSigner, "signGrantRevocation">>;
|
|
30
|
+
grantId: string;
|
|
31
|
+
}
|
|
32
|
+
export interface ListGrantsContractInput {
|
|
33
|
+
gateway: Pick<GatewayClient, "listGrantsByUser">;
|
|
34
|
+
serverOwner?: `0x${string}`;
|
|
35
|
+
}
|
|
36
|
+
export interface VerifyGrantContractInput {
|
|
37
|
+
body: unknown;
|
|
38
|
+
gatewayConfig?: DataPortabilityGatewayConfig;
|
|
39
|
+
nowSeconds?: number;
|
|
40
|
+
}
|
|
41
|
+
export declare function listGrantsContract(input: ListGrantsContractInput): Promise<ContractResult>;
|
|
42
|
+
export declare function createGrantContract(input: CreateGrantContractInput): Promise<ContractResult>;
|
|
43
|
+
export declare function revokeGrantContract(input: RevokeGrantContractInput): Promise<ContractResult>;
|
|
44
|
+
export declare function verifyGrantContract({ body, gatewayConfig, nowSeconds, }: VerifyGrantContractInput): Promise<ContractResult>;
|
|
45
|
+
//# sourceMappingURL=grants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grants.d.ts","sourceRoot":"","sources":["../../src/contracts/grants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,4BAA4B,EAC5B,aAAa,EAEd,MAAM,gCAAgC,CAAC;AAKxC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,WAAW,CAAC;AAMnB,MAAM,WAAW,sBAAsB;IACrC,cAAc,EAAE,KAAK,MAAM,EAAE,CAAC;IAC9B,SAAS,EAAE,KAAK,MAAM,EAAE,CAAC;IACzB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,KAAK,MAAM,EAAE,CAAC;CAC1B;AAMD,MAAM,WAAW,sBAAsB;IACrC,cAAc,EAAE,KAAK,MAAM,EAAE,CAAC;IAC9B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,YAAY,GAAG,aAAa,CAAC,CAAC;IAC3D,WAAW,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IAC5B,YAAY,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,uBAAuB,CAAC,CAAC;IAC3D,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,GAAG,aAAa,CAAC,CAAC;IACzD,WAAW,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,qBAAqB,CAAC,CAAC,CAAC;IAClE,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;IACjD,WAAW,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,OAAO,CAAC;IACd,aAAa,CAAC,EAAE,4BAA4B,CAAC;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA2ED,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,cAAc,CAAC,CAIzB;AAED,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,cAAc,CAAC,CA0DzB;AAED,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,cAAc,CAAC,CAoDzB;AAED,wBAAsB,mBAAmB,CAAC,EACxC,IAAI,EACJ,aAAa,EACb,UAA0C,GAC3C,EAAE,wBAAwB,GAAG,OAAO,CAAC,cAAc,CAAC,CAsCpD"}
|