@orbitmem/sdk 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (176) hide show
  1. package/README.md +104 -0
  2. package/dist/agent/agent-adapter.d.ts +3 -0
  3. package/dist/agent/agent-adapter.d.ts.map +1 -0
  4. package/dist/agent/agent-adapter.js +3 -0
  5. package/dist/agent/agent-adapter.js.map +1 -0
  6. package/dist/agent/client.d.ts +5 -0
  7. package/dist/agent/client.d.ts.map +1 -0
  8. package/dist/agent/client.js +146 -0
  9. package/dist/agent/client.js.map +1 -0
  10. package/dist/agent/index.d.ts +2 -0
  11. package/dist/agent/index.d.ts.map +1 -0
  12. package/dist/agent/index.js +2 -0
  13. package/dist/agent/index.js.map +1 -0
  14. package/dist/client.d.ts +3 -0
  15. package/dist/client.d.ts.map +1 -0
  16. package/dist/client.js +118 -0
  17. package/dist/client.js.map +1 -0
  18. package/dist/contracts.d.ts +19 -0
  19. package/dist/contracts.d.ts.map +1 -0
  20. package/dist/contracts.js +28 -0
  21. package/dist/contracts.js.map +1 -0
  22. package/dist/data/index.d.ts +5 -0
  23. package/dist/data/index.d.ts.map +1 -0
  24. package/dist/data/index.js +5 -0
  25. package/dist/data/index.js.map +1 -0
  26. package/dist/data/orbitdb.d.ts +10 -0
  27. package/dist/data/orbitdb.d.ts.map +1 -0
  28. package/dist/data/orbitdb.js +39 -0
  29. package/dist/data/orbitdb.js.map +1 -0
  30. package/dist/data/pricing.d.ts +7 -0
  31. package/dist/data/pricing.d.ts.map +1 -0
  32. package/dist/data/pricing.js +55 -0
  33. package/dist/data/pricing.js.map +1 -0
  34. package/dist/data/serialization.d.ts +28 -0
  35. package/dist/data/serialization.d.ts.map +1 -0
  36. package/dist/data/serialization.js +76 -0
  37. package/dist/data/serialization.js.map +1 -0
  38. package/dist/data/vault.d.ts +21 -0
  39. package/dist/data/vault.d.ts.map +1 -0
  40. package/dist/data/vault.js +284 -0
  41. package/dist/data/vault.js.map +1 -0
  42. package/dist/discovery/discovery-layer.d.ts +3 -0
  43. package/dist/discovery/discovery-layer.d.ts.map +1 -0
  44. package/dist/discovery/discovery-layer.js +205 -0
  45. package/dist/discovery/discovery-layer.js.map +1 -0
  46. package/dist/discovery/index.d.ts +4 -0
  47. package/dist/discovery/index.d.ts.map +1 -0
  48. package/dist/discovery/index.js +4 -0
  49. package/dist/discovery/index.js.map +1 -0
  50. package/dist/discovery/mock-registry.d.ts +30 -0
  51. package/dist/discovery/mock-registry.d.ts.map +1 -0
  52. package/dist/discovery/mock-registry.js +71 -0
  53. package/dist/discovery/mock-registry.js.map +1 -0
  54. package/dist/discovery/on-chain-registry.d.ts +35 -0
  55. package/dist/discovery/on-chain-registry.d.ts.map +1 -0
  56. package/dist/discovery/on-chain-registry.js +199 -0
  57. package/dist/discovery/on-chain-registry.js.map +1 -0
  58. package/dist/encryption/aes.d.ts +15 -0
  59. package/dist/encryption/aes.d.ts.map +1 -0
  60. package/dist/encryption/aes.js +63 -0
  61. package/dist/encryption/aes.js.map +1 -0
  62. package/dist/encryption/encryption-layer.d.ts +8 -0
  63. package/dist/encryption/encryption-layer.d.ts.map +1 -0
  64. package/dist/encryption/encryption-layer.js +82 -0
  65. package/dist/encryption/encryption-layer.js.map +1 -0
  66. package/dist/encryption/index.d.ts +6 -0
  67. package/dist/encryption/index.d.ts.map +1 -0
  68. package/dist/encryption/index.js +4 -0
  69. package/dist/encryption/index.js.map +1 -0
  70. package/dist/encryption/lit.d.ts +23 -0
  71. package/dist/encryption/lit.d.ts.map +1 -0
  72. package/dist/encryption/lit.js +113 -0
  73. package/dist/encryption/lit.js.map +1 -0
  74. package/dist/encryption/vault-key.d.ts +37 -0
  75. package/dist/encryption/vault-key.d.ts.map +1 -0
  76. package/dist/encryption/vault-key.js +43 -0
  77. package/dist/encryption/vault-key.js.map +1 -0
  78. package/dist/identity/identity-layer.d.ts +3 -0
  79. package/dist/identity/identity-layer.d.ts.map +1 -0
  80. package/dist/identity/identity-layer.js +99 -0
  81. package/dist/identity/identity-layer.js.map +1 -0
  82. package/dist/identity/index.d.ts +4 -0
  83. package/dist/identity/index.d.ts.map +1 -0
  84. package/dist/identity/index.js +4 -0
  85. package/dist/identity/index.js.map +1 -0
  86. package/dist/identity/ows-adapter.d.ts +15 -0
  87. package/dist/identity/ows-adapter.d.ts.map +1 -0
  88. package/dist/identity/ows-adapter.js +67 -0
  89. package/dist/identity/ows-adapter.js.map +1 -0
  90. package/dist/identity/session.d.ts +10 -0
  91. package/dist/identity/session.d.ts.map +1 -0
  92. package/dist/identity/session.js +36 -0
  93. package/dist/identity/session.js.map +1 -0
  94. package/dist/index.d.ts +12 -0
  95. package/dist/index.d.ts.map +1 -0
  96. package/dist/index.js +12 -0
  97. package/dist/index.js.map +1 -0
  98. package/dist/persistence/create-agent.d.ts +11 -0
  99. package/dist/persistence/create-agent.d.ts.map +1 -0
  100. package/dist/persistence/create-agent.js +47 -0
  101. package/dist/persistence/create-agent.js.map +1 -0
  102. package/dist/persistence/index.d.ts +3 -0
  103. package/dist/persistence/index.d.ts.map +1 -0
  104. package/dist/persistence/index.js +3 -0
  105. package/dist/persistence/index.js.map +1 -0
  106. package/dist/persistence/persistence-layer.d.ts +12 -0
  107. package/dist/persistence/persistence-layer.d.ts.map +1 -0
  108. package/dist/persistence/persistence-layer.js +194 -0
  109. package/dist/persistence/persistence-layer.js.map +1 -0
  110. package/dist/transport/index.d.ts +3 -0
  111. package/dist/transport/index.d.ts.map +1 -0
  112. package/dist/transport/index.js +3 -0
  113. package/dist/transport/index.js.map +1 -0
  114. package/dist/transport/relay-session.d.ts +41 -0
  115. package/dist/transport/relay-session.d.ts.map +1 -0
  116. package/dist/transport/relay-session.js +86 -0
  117. package/dist/transport/relay-session.js.map +1 -0
  118. package/dist/transport/transport-layer.d.ts +32 -0
  119. package/dist/transport/transport-layer.d.ts.map +1 -0
  120. package/dist/transport/transport-layer.js +110 -0
  121. package/dist/transport/transport-layer.js.map +1 -0
  122. package/dist/types.d.ts +1319 -0
  123. package/dist/types.d.ts.map +1 -0
  124. package/dist/types.js +7 -0
  125. package/dist/types.js.map +1 -0
  126. package/package.json +91 -0
  127. package/src/__tests__/client.test.ts +30 -0
  128. package/src/__tests__/orbitdb-availability.ts +8 -0
  129. package/src/agent/__tests__/agent-adapter.test.ts +50 -0
  130. package/src/agent/__tests__/client.test.ts +50 -0
  131. package/src/agent/agent-adapter.ts +2 -0
  132. package/src/agent/client.ts +158 -0
  133. package/src/agent/index.ts +1 -0
  134. package/src/client.ts +134 -0
  135. package/src/contracts.ts +44 -0
  136. package/src/data/__tests__/pricing.test.ts +73 -0
  137. package/src/data/__tests__/vault-encryption.test.ts +346 -0
  138. package/src/data/__tests__/vault.test.ts +75 -0
  139. package/src/data/index.ts +8 -0
  140. package/src/data/orbitdb.ts +47 -0
  141. package/src/data/pricing.ts +63 -0
  142. package/src/data/serialization.ts +108 -0
  143. package/src/data/vault.ts +382 -0
  144. package/src/discovery/__tests__/discovery.test.ts +49 -0
  145. package/src/discovery/__tests__/on-chain-registry.test.ts +176 -0
  146. package/src/discovery/discovery-layer.ts +244 -0
  147. package/src/discovery/index.ts +3 -0
  148. package/src/discovery/mock-registry.ts +96 -0
  149. package/src/discovery/on-chain-registry.ts +237 -0
  150. package/src/encryption/__tests__/aes.test.ts +64 -0
  151. package/src/encryption/__tests__/encryption-layer.test.ts +80 -0
  152. package/src/encryption/__tests__/lit.test.ts +97 -0
  153. package/src/encryption/aes.ts +109 -0
  154. package/src/encryption/encryption-layer.ts +100 -0
  155. package/src/encryption/index.ts +5 -0
  156. package/src/encryption/lit.ts +161 -0
  157. package/src/encryption/vault-key.ts +63 -0
  158. package/src/identity/__tests__/identity.test.ts +31 -0
  159. package/src/identity/__tests__/ows-adapter.test.ts +47 -0
  160. package/src/identity/identity-layer.ts +123 -0
  161. package/src/identity/index.ts +3 -0
  162. package/src/identity/ows-adapter.ts +80 -0
  163. package/src/identity/session.ts +57 -0
  164. package/src/index.ts +12 -0
  165. package/src/persistence/__tests__/create-agent.test.ts +9 -0
  166. package/src/persistence/__tests__/persistence.test.ts +242 -0
  167. package/src/persistence/create-agent.ts +55 -0
  168. package/src/persistence/index.ts +2 -0
  169. package/src/persistence/persistence-layer.ts +236 -0
  170. package/src/transport/__tests__/solana-transport.test.ts +112 -0
  171. package/src/transport/__tests__/transport.test.ts +84 -0
  172. package/src/transport/index.ts +2 -0
  173. package/src/transport/relay-session.ts +118 -0
  174. package/src/transport/transport-layer.ts +171 -0
  175. package/src/types/orbitdb.d.ts +9 -0
  176. package/src/types.ts +1496 -0
package/README.md ADDED
@@ -0,0 +1,104 @@
1
+ # @orbitmem/sdk
2
+
3
+ Sovereign data layer for AI agents — encrypted P2P vaults, multi-chain identity, and on-chain data trust.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ npm install @orbitmem/sdk
9
+ ```
10
+
11
+ ## Quick Start
12
+
13
+ ### For Users (Data Owners)
14
+
15
+ ```typescript
16
+ import { createOrbitMem } from "@orbitmem/sdk";
17
+
18
+ const orbitmem = await createOrbitMem({
19
+ identity: { chains: ["evm"] },
20
+ encryption: { defaultEngine: "aes", aes: { kdf: "hkdf-sha256" } },
21
+ });
22
+
23
+ // Connect wallet
24
+ await orbitmem.connect({ method: "evm", adapter: "metamask" });
25
+
26
+ // Store data with different visibility levels
27
+ await orbitmem.vault.put("travel/dietary", "vegan", { visibility: "public" });
28
+ await orbitmem.vault.put("travel/passport", { number: "..." }, { visibility: "private" });
29
+ await orbitmem.vault.put("travel/preferences", { seat: "window" }, { visibility: "shared" });
30
+
31
+ // Query and sync
32
+ const entries = await orbitmem.vault.query({ prefix: "travel" });
33
+ await orbitmem.vault.sync();
34
+ ```
35
+
36
+ ### For Agents (Data Consumers)
37
+
38
+ ```typescript
39
+ import { createOrbitMemClient } from "@orbitmem/sdk/agent";
40
+
41
+ const client = createOrbitMemClient({
42
+ wallet: { family: "evm", address: "0x...", signMessage: signer.signMessage },
43
+ discovery: {
44
+ dataRegistry: "0x9eE44938ED77227470CaA2DbCC0459F49d249B7A",
45
+ reputationRegistry: "0x1Bce77f90C33A5f8faCa54782Ce3a17d1AD7109a",
46
+ registryChain: "base-sepolia",
47
+ },
48
+ });
49
+
50
+ // Discover data
51
+ const results = await client.discoverData({ schema: "travel:v1" });
52
+
53
+ // Read with quality checks
54
+ await client.withUserData(
55
+ { vaultAddress, path: "travel/dietary", minQuality: 70, relayUrl: "..." },
56
+ (data, score) => {
57
+ console.log(data); // "vegan"
58
+ },
59
+ );
60
+
61
+ // Rate data quality
62
+ await client.rateData({ vaultAddress, path: "travel/dietary", score: 90, tags: ["accurate"] });
63
+ ```
64
+
65
+ ## Exports
66
+
67
+ | Entry Point | Description |
68
+ | -------------------------- | -------------------------------------------- |
69
+ | `@orbitmem/sdk` | `createOrbitMem` — full SDK with all layers |
70
+ | `@orbitmem/sdk/agent` | `createOrbitMemClient` — agent-side client |
71
+ | `@orbitmem/sdk/discovery` | Discovery & reputation layer |
72
+ | `@orbitmem/sdk/transport` | ERC-8128 signed HTTP requests |
73
+ | `@orbitmem/sdk/encryption` | Lit Protocol & AES-256-GCM engines |
74
+ | `@orbitmem/sdk/identity` | Multi-chain wallet auth (EVM/Solana/Passkey) |
75
+ | `@orbitmem/sdk/types` | TypeScript type definitions |
76
+
77
+ ## Architecture
78
+
79
+ The SDK is composed of six independent layers, each created by a factory function:
80
+
81
+ | Layer | Purpose |
82
+ | ---------------- | ------------------------------------------------------------------------------- |
83
+ | **Identity** | Multi-chain wallet connection (EVM, Solana, Passkey) and session key management |
84
+ | **Encryption** | Pluggable encryption via AES-256-GCM or Lit Protocol with access conditions |
85
+ | **Data (Vault)** | Local-first P2P storage backed by OrbitDB with nested paths |
86
+ | **Transport** | ERC-8128 signed HTTP requests for relay communication |
87
+ | **Discovery** | On-chain data registry and reputation scoring via ERC-8004 |
88
+ | **Persistence** | Snapshot archival to Filecoin/IPFS via Storacha |
89
+
90
+ ## Data Visibility
91
+
92
+ | Level | Description |
93
+ | --------- | ----------------------------------------------------------------- |
94
+ | `public` | Plaintext, readable by anyone via relay |
95
+ | `private` | AES encrypted, only the owner can decrypt |
96
+ | `shared` | Encrypted with access conditions (Lit Protocol or shared AES key) |
97
+
98
+ ## Supported Chains
99
+
100
+ Base, Base Sepolia
101
+
102
+ ## License
103
+
104
+ MIT
@@ -0,0 +1,3 @@
1
+ /** @deprecated Use client.ts instead. This file is kept for backward compatibility. */
2
+ export { createOrbitMemAgentAdapter, createOrbitMemClient } from "./client.js";
3
+ //# sourceMappingURL=agent-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-adapter.d.ts","sourceRoot":"","sources":["../../src/agent/agent-adapter.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,OAAO,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** @deprecated Use client.ts instead. This file is kept for backward compatibility. */
2
+ export { createOrbitMemAgentAdapter, createOrbitMemClient } from "./client.js";
3
+ //# sourceMappingURL=agent-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-adapter.js","sourceRoot":"","sources":["../../src/agent/agent-adapter.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,OAAO,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { ClientConfig, IOrbitMemClient } from "../types.js";
2
+ export declare function createOrbitMemClient(config: ClientConfig): IOrbitMemClient;
3
+ /** @deprecated Use createOrbitMemClient instead */
4
+ export declare const createOrbitMemAgentAdapter: typeof createOrbitMemClient;
5
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/agent/client.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAiB,eAAe,EAAE,MAAM,aAAa,CAAC;AAEhF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,eAAe,CAqJ1E;AAED,mDAAmD;AACnD,eAAO,MAAM,0BAA0B,6BAAuB,CAAC"}
@@ -0,0 +1,146 @@
1
+ import { createDiscoveryLayer } from "../discovery/index.js";
2
+ import { createEncryptionLayer } from "../encryption/index.js";
3
+ import { createTransportLayer } from "../transport/index.js";
4
+ export function createOrbitMemClient(config) {
5
+ const transport = createTransportLayer({
6
+ signer: async (payload) => ({
7
+ signature: await config.wallet.signMessage(payload),
8
+ algorithm: config.wallet.family === "evm"
9
+ ? "ecdsa-secp256k1"
10
+ : config.wallet.family === "solana"
11
+ ? "ed25519"
12
+ : "p256",
13
+ }),
14
+ signerAddress: config.wallet.address,
15
+ family: config.wallet.family,
16
+ });
17
+ const encryption = createEncryptionLayer({
18
+ defaultEngine: config.lit ? "lit" : "aes",
19
+ lit: config.lit,
20
+ aes: { kdf: "hkdf-sha256" },
21
+ });
22
+ const discovery = config.discovery
23
+ ? createDiscoveryLayer({
24
+ dataRegistry: config.discovery.dataRegistry,
25
+ reputationRegistry: config.discovery.reputationRegistry,
26
+ registryChain: config.discovery.registryChain,
27
+ })
28
+ : null;
29
+ return {
30
+ async discoverData(query) {
31
+ if (!discovery)
32
+ return [];
33
+ return discovery.findData(query);
34
+ },
35
+ async getDataScore(vaultAddress, path) {
36
+ if (!discovery) {
37
+ return {
38
+ dataId: 0,
39
+ vaultAddress,
40
+ vaultKey: path,
41
+ quality: 0,
42
+ freshness: { lastUpdated: 0, score: 0 },
43
+ accuracy: { score: 0, feedbackCount: 0 },
44
+ completeness: { score: 0, feedbackCount: 0 },
45
+ verified: false,
46
+ consumptionCount: 0,
47
+ totalFeedback: 0,
48
+ tagScores: {},
49
+ };
50
+ }
51
+ return discovery.getDataScore(vaultAddress, path);
52
+ },
53
+ async rateData(feedback) {
54
+ if (!discovery)
55
+ throw new Error("Discovery layer not configured");
56
+ return discovery.rateData(feedback);
57
+ },
58
+ async readPublicData(request) {
59
+ try {
60
+ const url = `${request.relayUrl}/v1/vault/public/${encodeURIComponent(request.vaultAddress)}/${encodeURIComponent(request.path)}`;
61
+ const res = await transport.fetch(url, { method: "GET" });
62
+ if (!res.ok)
63
+ return null;
64
+ const body = (await res.json());
65
+ return body.value ?? null;
66
+ }
67
+ catch {
68
+ return null;
69
+ }
70
+ },
71
+ async listPublicKeys(request) {
72
+ try {
73
+ const url = `${request.relayUrl}/v1/vault/public/${encodeURIComponent(request.vaultAddress)}/keys`;
74
+ const params = request.prefix ? `?prefix=${encodeURIComponent(request.prefix)}` : "";
75
+ const res = await transport.fetch(`${url}${params}`, { method: "GET" });
76
+ if (!res.ok)
77
+ return [];
78
+ const body = (await res.json());
79
+ return body.keys ?? [];
80
+ }
81
+ catch {
82
+ return [];
83
+ }
84
+ },
85
+ async fetchUserData(request) {
86
+ const url = `${request.relayUrl}/v1/vault/read`;
87
+ const res = await transport.fetch(url, {
88
+ method: "POST",
89
+ body: { vaultAddress: request.vaultAddress, path: request.path },
90
+ });
91
+ if (!res.ok)
92
+ throw new Error(`Failed to fetch data: ${res.status}`);
93
+ return res.json();
94
+ },
95
+ async decrypt(encrypted, opts) {
96
+ if (encrypted.engine === "aes" && opts?.sharedKey) {
97
+ return encryption.decrypt(encrypted, {
98
+ keySource: { type: "raw", key: opts.sharedKey },
99
+ });
100
+ }
101
+ return encryption.decrypt(encrypted);
102
+ },
103
+ async withUserData(request, callback, opts) {
104
+ // 1. Check data score
105
+ const score = await this.getDataScore(request.vaultAddress, request.path);
106
+ const minQuality = request.minQuality ?? config.discovery?.minDataQuality ?? 0;
107
+ if (minQuality > 0 && score.quality < minQuality) {
108
+ throw new Error(`Data quality ${score.quality} below threshold ${minQuality}`);
109
+ }
110
+ // 2. Fetch encrypted data
111
+ const encrypted = await this.fetchUserData({
112
+ vaultAddress: request.vaultAddress,
113
+ path: request.path,
114
+ relayUrl: request.relayUrl,
115
+ });
116
+ // 3. Decrypt
117
+ const plaintext = await this.decrypt(encrypted, {
118
+ sharedKey: opts?.sharedKey,
119
+ });
120
+ // 4. Execute callback
121
+ let result;
122
+ try {
123
+ result = await callback(plaintext, score);
124
+ }
125
+ finally {
126
+ // 5. Zero plaintext buffer
127
+ plaintext.fill(0);
128
+ }
129
+ // 6. Auto-rate if configured
130
+ if (opts?.autoRate && discovery) {
131
+ const dataReg = (await discovery.findData({})).find((d) => d.vaultAddress === request.vaultAddress && d.vaultKey === request.path);
132
+ if (dataReg) {
133
+ await discovery.rateData({
134
+ dataId: dataReg.dataId,
135
+ value: opts.autoRate.value,
136
+ qualityDimension: opts.autoRate.qualityDimension,
137
+ });
138
+ }
139
+ }
140
+ return result;
141
+ },
142
+ };
143
+ }
144
+ /** @deprecated Use createOrbitMemClient instead */
145
+ export const createOrbitMemAgentAdapter = createOrbitMemClient;
146
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/agent/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { createOrbitMemAgentAdapter, createOrbitMemClient } from "./client.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { createOrbitMemAgentAdapter, createOrbitMemClient } from "./client.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { IOrbitMem, OrbitMemConfig } from "./types.js";
2
+ export declare function createOrbitMem(config: OrbitMemConfig): Promise<IOrbitMem>;
3
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5D,wBAAsB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,CA4H/E"}
package/dist/client.js ADDED
@@ -0,0 +1,118 @@
1
+ import { getNetwork } from "./contracts.js";
2
+ import { createOrbitDBInstance, createVault, createVaultPricing } from "./data/index.js";
3
+ import { createDiscoveryLayer } from "./discovery/index.js";
4
+ import { createEncryptionLayer } from "./encryption/index.js";
5
+ import { createIdentityLayer } from "./identity/index.js";
6
+ import { createPersistenceLayer } from "./persistence/index.js";
7
+ import { createTransportLayer } from "./transport/index.js";
8
+ export async function createOrbitMem(config) {
9
+ // Initialize identity layer
10
+ const identity = createIdentityLayer(config.identity);
11
+ // Initialize encryption layer
12
+ const encryption = createEncryptionLayer(config.encryption ?? {
13
+ defaultEngine: "aes",
14
+ aes: { kdf: "hkdf-sha256" },
15
+ });
16
+ // Initialize OrbitDB + vault
17
+ const { orbitdb, cleanup: orbitdbCleanup } = await createOrbitDBInstance({
18
+ directory: config.vault?.dbName ? `./${config.vault.dbName}` : "./orbitdb",
19
+ });
20
+ const vault = await createVault(orbitdb, {
21
+ dbName: config.vault?.dbName,
22
+ aesEngine: encryption.aes,
23
+ encryptionLayer: encryption,
24
+ });
25
+ const pricing = createVaultPricing(vault.metaDb);
26
+ // Initialize transport layer with a placeholder signer
27
+ // (gets wired to identity layer when a wallet connects)
28
+ const transport = createTransportLayer({
29
+ signer: async (payload) => {
30
+ const session = identity.getActiveSession();
31
+ if (!session)
32
+ throw new Error("No active session — connect a wallet first");
33
+ // Delegate to identity layer's signChallenge
34
+ const message = new TextDecoder().decode(payload);
35
+ const { signature, algorithm } = await identity.signChallenge(message);
36
+ return { signature, algorithm };
37
+ },
38
+ signerAddress: "0x0",
39
+ family: "evm",
40
+ });
41
+ // Initialize discovery layer (defaults to current network's contracts)
42
+ const network = getNetwork(config.network);
43
+ const discoveryConfig = config.discovery ?? {
44
+ dataRegistry: network.dataRegistry,
45
+ reputationRegistry: network.feedbackRegistry,
46
+ registryChain: network.chain,
47
+ };
48
+ // Inject deployBlock from network if not explicitly set
49
+ if (discoveryConfig.deployBlock === undefined) {
50
+ discoveryConfig.deployBlock = network.deployBlock;
51
+ }
52
+ const discovery = createDiscoveryLayer(discoveryConfig);
53
+ // Initialize persistence layer
54
+ const persistence = createPersistenceLayer({
55
+ mock: !config.persistence?.relayUrl && !config.persistence?.proof,
56
+ relayUrl: config.persistence?.relayUrl,
57
+ proof: config.persistence?.proof,
58
+ gatewayUrl: config.persistence?.gatewayUrl,
59
+ });
60
+ return {
61
+ identity,
62
+ vault,
63
+ encryption,
64
+ transport,
65
+ persistence,
66
+ discovery,
67
+ pricing,
68
+ async connect(opts) {
69
+ const result = await identity.connect(opts);
70
+ // Derive a deterministic AES key from the wallet signature for vault encryption
71
+ try {
72
+ const { signature } = await identity.signChallenge("OrbitMem Vault Key v1");
73
+ const hash = new Uint8Array(await crypto.subtle.digest("SHA-256", new Uint8Array(signature)));
74
+ const key = await encryption.aes.deriveKey({ type: "raw", key: hash });
75
+ vault.setDefaultKey(key);
76
+ }
77
+ catch {
78
+ // Key derivation is best-effort — vault works without it for public data
79
+ }
80
+ // Generate Lit authSig for decrypting Lit-encrypted vault entries
81
+ if (encryption.lit && result.family === "evm") {
82
+ try {
83
+ const message = "OrbitMem Lit Auth";
84
+ const { signature } = await identity.signChallenge(message);
85
+ const sig = "0x" +
86
+ Array.from(new Uint8Array(signature))
87
+ .map((b) => b.toString(16).padStart(2, "0"))
88
+ .join("");
89
+ vault.setAuthSig({
90
+ sig,
91
+ derivedVia: "web3.eth.personal.sign",
92
+ signedMessage: message,
93
+ address: result.address,
94
+ });
95
+ }
96
+ catch {
97
+ // Lit auth is best-effort — vault works without it for public/AES data
98
+ }
99
+ }
100
+ return result;
101
+ },
102
+ async disconnect() {
103
+ await identity.disconnect();
104
+ },
105
+ async encrypt(data, opts) {
106
+ return encryption.encrypt(data, opts);
107
+ },
108
+ async decrypt(encrypted, opts) {
109
+ return encryption.decrypt(encrypted, opts);
110
+ },
111
+ async destroy() {
112
+ await vault.close();
113
+ await orbitdbCleanup();
114
+ await identity.disconnect();
115
+ },
116
+ };
117
+ }
118
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { EvmAddress, EvmChain } from "./types.js";
2
+ export type NetworkId = "base" | "base-sepolia";
3
+ export interface NetworkConfig {
4
+ dataRegistry: EvmAddress;
5
+ feedbackRegistry: EvmAddress;
6
+ chain: EvmChain;
7
+ chainId: number;
8
+ rpcUrl: string;
9
+ relayUrl: string;
10
+ /** Block number at which contracts were deployed (used for event queries) */
11
+ deployBlock: bigint;
12
+ }
13
+ /** Deployed contract addresses and relay URLs per network */
14
+ export declare const NETWORKS: Record<NetworkId, NetworkConfig>;
15
+ /** Current default network */
16
+ export declare const DEFAULT_NETWORK: NetworkId;
17
+ /** Resolve network config by ID */
18
+ export declare function getNetwork(network?: NetworkId): NetworkConfig;
19
+ //# sourceMappingURL=contracts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEvD,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,cAAc,CAAC;AAEhD,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,UAAU,CAAC;IACzB,gBAAgB,EAAE,UAAU,CAAC;IAC7B,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,6DAA6D;AAC7D,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,aAAa,CAmBrD,CAAC;AAEF,8BAA8B;AAC9B,eAAO,MAAM,eAAe,EAAE,SAA0B,CAAC;AAEzD,mCAAmC;AACnC,wBAAgB,UAAU,CAAC,OAAO,CAAC,EAAE,SAAS,GAAG,aAAa,CAE7D"}
@@ -0,0 +1,28 @@
1
+ /** Deployed contract addresses and relay URLs per network */
2
+ export const NETWORKS = {
3
+ "base-sepolia": {
4
+ dataRegistry: "0x9eE44938ED77227470CaA2DbCC0459F49d249B7A",
5
+ feedbackRegistry: "0x1Bce77f90C33A5f8faCa54782Ce3a17d1AD7109a",
6
+ chain: "base-sepolia",
7
+ chainId: 84532,
8
+ rpcUrl: "https://sepolia.base.org",
9
+ relayUrl: "https://orbitmem-relay.fly.dev",
10
+ deployBlock: 38728995n,
11
+ },
12
+ base: {
13
+ dataRegistry: "0x0000000000000000000000000000000000000000",
14
+ feedbackRegistry: "0x0000000000000000000000000000000000000000",
15
+ chain: "base",
16
+ chainId: 8453,
17
+ rpcUrl: "https://mainnet.base.org",
18
+ relayUrl: "https://orbitmem-relay.fly.dev",
19
+ deployBlock: 0n,
20
+ },
21
+ };
22
+ /** Current default network */
23
+ export const DEFAULT_NETWORK = "base-sepolia";
24
+ /** Resolve network config by ID */
25
+ export function getNetwork(network) {
26
+ return NETWORKS[network ?? DEFAULT_NETWORK];
27
+ }
28
+ //# sourceMappingURL=contracts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"AAeA,6DAA6D;AAC7D,MAAM,CAAC,MAAM,QAAQ,GAAqC;IACxD,cAAc,EAAE;QACd,YAAY,EAAE,4CAA0D;QACxE,gBAAgB,EAAE,4CAA0D;QAC5E,KAAK,EAAE,cAAc;QACrB,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,0BAA0B;QAClC,QAAQ,EAAE,gCAAgC;QAC1C,WAAW,EAAE,SAAS;KACvB;IACD,IAAI,EAAE;QACJ,YAAY,EAAE,4CAA0D;QACxE,gBAAgB,EAAE,4CAA0D;QAC5E,KAAK,EAAE,MAAM;QACb,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,0BAA0B;QAClC,QAAQ,EAAE,gCAAgC;QAC1C,WAAW,EAAE,EAAE;KAChB;CACF,CAAC;AAEF,8BAA8B;AAC9B,MAAM,CAAC,MAAM,eAAe,GAAc,cAAc,CAAC;AAEzD,mCAAmC;AACnC,MAAM,UAAU,UAAU,CAAC,OAAmB;IAC5C,OAAO,QAAQ,CAAC,OAAO,IAAI,eAAe,CAAC,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { createOrbitDBInstance } from "./orbitdb.js";
2
+ export { deserializeEncrypted, isSerializedEncrypted, serializeEncrypted, } from "./serialization.js";
3
+ export { createVault } from "./vault.js";
4
+ export { createVaultPricing } from "./pricing.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/data/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { createOrbitDBInstance } from "./orbitdb.js";
2
+ export { deserializeEncrypted, isSerializedEncrypted, serializeEncrypted, } from "./serialization.js";
3
+ export { createVault } from "./vault.js";
4
+ export { createVaultPricing } from "./pricing.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/data/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,10 @@
1
+ export declare function createOrbitDBInstance(opts: {
2
+ directory?: string;
3
+ listenAddrs?: string[];
4
+ }): Promise<{
5
+ orbitdb: any;
6
+ ipfs: any;
7
+ libp2p: any;
8
+ cleanup: () => Promise<void>;
9
+ }>;
10
+ //# sourceMappingURL=orbitdb.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orbitdb.d.ts","sourceRoot":"","sources":["../../src/data/orbitdb.ts"],"names":[],"mappings":"AAiBA,wBAAsB,qBAAqB,CAAC,IAAI,EAAE;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,GAAG,CAAC;IAAC,MAAM,EAAE,GAAG,CAAC;IAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC,CA0BlF"}
@@ -0,0 +1,39 @@
1
+ // oxlint-disable-next-line typescript/triple-slash-reference
2
+ /// <reference path="../types/orbitdb.d.ts" />
3
+ import { gossipsub } from "@chainsafe/libp2p-gossipsub";
4
+ import { noise } from "@chainsafe/libp2p-noise";
5
+ import { yamux } from "@chainsafe/libp2p-yamux";
6
+ import { identify } from "@libp2p/identify";
7
+ import { tcp } from "@libp2p/tcp";
8
+ import { createOrbitDB, useDatabaseType } from "@orbitdb/core";
9
+ import { Nested } from "@orbitdb/nested-db";
10
+ import { LevelBlockstore } from "blockstore-level";
11
+ import { createHelia } from "helia";
12
+ import { createLibp2p } from "libp2p";
13
+ // Register the Nested database type (must happen before createOrbitDB)
14
+ useDatabaseType(Nested);
15
+ export async function createOrbitDBInstance(opts) {
16
+ const blockstore = new LevelBlockstore(opts.directory ?? "./orbitdb/blocks");
17
+ const libp2p = await createLibp2p({
18
+ addresses: { listen: opts.listenAddrs ?? ["/ip4/0.0.0.0/tcp/0"] },
19
+ transports: [tcp()],
20
+ connectionEncrypters: [noise()],
21
+ streamMuxers: [yamux()],
22
+ services: {
23
+ identify: identify(),
24
+ pubsub: gossipsub({ allowPublishToZeroTopicPeers: true }),
25
+ },
26
+ });
27
+ const ipfs = await createHelia({ libp2p, blockstore });
28
+ const orbitdb = await createOrbitDB({ ipfs });
29
+ return {
30
+ orbitdb,
31
+ ipfs,
32
+ libp2p,
33
+ cleanup: async () => {
34
+ await orbitdb.stop();
35
+ await ipfs.stop();
36
+ },
37
+ };
38
+ }
39
+ //# sourceMappingURL=orbitdb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orbitdb.js","sourceRoot":"","sources":["../../src/data/orbitdb.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,8CAA8C;AAE9C,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,uEAAuE;AACvE,eAAe,CAAC,MAAM,CAAC,CAAC;AAExB,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,IAG3C;IACC,MAAM,UAAU,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,SAAS,IAAI,kBAAkB,CAAC,CAAC;IAE7E,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC;QAChC,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,IAAI,CAAC,oBAAoB,CAAC,EAAE;QACjE,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC;QACnB,oBAAoB,EAAE,CAAC,KAAK,EAAE,CAAC;QAC/B,YAAY,EAAE,CAAC,KAAK,EAAE,CAAC;QACvB,QAAQ,EAAE;YACR,QAAQ,EAAE,QAAQ,EAAE;YACpB,MAAM,EAAE,SAAS,CAAC,EAAE,4BAA4B,EAAE,IAAI,EAAE,CAAC;SAC1D;KACF,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAE9C,OAAO;QACL,OAAO;QACP,IAAI;QACJ,MAAM;QACN,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QACpB,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { IVaultPricing } from "../types.js";
2
+ /**
3
+ * Create pricing CRUD methods backed by a vault's `-meta` OrbitDB store.
4
+ * Pricing keys live under the `pricing/` prefix in metadata.
5
+ */
6
+ export declare function createVaultPricing(metaDb: any): IVaultPricing;
7
+ //# sourceMappingURL=pricing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../../src/data/pricing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAgB,MAAM,aAAa,CAAC;AAK/D;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,GAAG,GAAG,aAAa,CAqD7D"}