@mnemosyne_os/sdk 1.0.0 → 1.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.
- package/README.md +176 -96
- package/dist/index.cjs +3998 -27
- package/dist/index.d.cts +267 -14
- package/dist/index.d.ts +267 -14
- package/dist/index.js +4013 -16
- package/package.json +4 -2
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
|
|
14
14
|
Mnemosyne OS is a sovereign, local-first AI memory runtime built on Electron.
|
|
15
15
|
It runs on your machine, stores everything locally (SQLite + vector embeddings),
|
|
16
|
-
and exposes
|
|
16
|
+
and exposes a WebSocket API for Layer 2 apps to tap into its cognitive engine.
|
|
17
17
|
|
|
18
18
|
**No cloud. No telemetry. Your data stays on your machine.**
|
|
19
19
|
|
|
@@ -25,15 +25,14 @@ and exposes an IPC/WebSocket API for Layer 2 apps to tap into its cognitive engi
|
|
|
25
25
|
|---------|---------|------|
|
|
26
26
|
| [`@mnemosyne_os/forge`](https://www.npmjs.com/package/@mnemosyne_os/forge) | `1.4.7` | CLI — scaffold, chronicles, MCP server |
|
|
27
27
|
| [`@mnemosyne_os/sync`](https://www.npmjs.com/package/@mnemosyne_os/sync) | `0.0.1` | P2P — multi-agent synchronization |
|
|
28
|
-
| **`@mnemosyne_os/sdk`** |
|
|
28
|
+
| **`@mnemosyne_os/sdk`** | **`1.1.0`** | **SDK — build Layer 2 apps** |
|
|
29
29
|
|
|
30
30
|
---
|
|
31
31
|
|
|
32
32
|
## Requirements
|
|
33
33
|
|
|
34
|
-
- **Mnemosyne OS Dev Edition**
|
|
35
|
-
-
|
|
36
|
-
- Node.js ≥ 18
|
|
34
|
+
- **Mnemosyne OS Dev Edition** running on your machine (SDK WS Server on port 7799)
|
|
35
|
+
- Node.js ≥ 18 (for `MnemoClient`) OR any modern browser / Electron renderer (for `MnemoClientBrowser`)
|
|
37
36
|
|
|
38
37
|
---
|
|
39
38
|
|
|
@@ -45,7 +44,18 @@ npm install @mnemosyne_os/sdk
|
|
|
45
44
|
|
|
46
45
|
---
|
|
47
46
|
|
|
48
|
-
##
|
|
47
|
+
## Two Clients — Pick the Right One
|
|
48
|
+
|
|
49
|
+
| Client | Environment | Transport |
|
|
50
|
+
|--------|------------|-----------|
|
|
51
|
+
| `MnemoClientBrowser` | React, Vite, Next.js, Electron renderer | Native `WebSocket` API |
|
|
52
|
+
| `MnemoClient` | Node.js, Electron main process | `ws` package + IPC |
|
|
53
|
+
|
|
54
|
+
> **In most Layer 2 apps (Vite/React/Electron renderer), use `MnemoClientBrowser`.**
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Quick Start — Browser / React / Vite
|
|
49
59
|
|
|
50
60
|
### 1. Create your `app.manifest.json`
|
|
51
61
|
|
|
@@ -54,14 +64,51 @@ npm install @mnemosyne_os/sdk
|
|
|
54
64
|
"id": "my-layer2-app",
|
|
55
65
|
"name": "My Layer 2 App",
|
|
56
66
|
"version": "1.0.0",
|
|
57
|
-
"mnemosyne_sdk": "^1.
|
|
67
|
+
"mnemosyne_sdk": "^1.1.0",
|
|
58
68
|
"scopes": ["vault:read:DEV", "vault:write:DEV"],
|
|
59
69
|
"vaults": ["DEV"],
|
|
60
70
|
"intents": ["INGEST", "QUERY"]
|
|
61
71
|
}
|
|
62
72
|
```
|
|
63
73
|
|
|
64
|
-
### 2. Connect
|
|
74
|
+
### 2. Connect in your React app
|
|
75
|
+
|
|
76
|
+
```typescript
|
|
77
|
+
import { MnemoClientBrowser } from '@mnemosyne_os/sdk';
|
|
78
|
+
import type { AppManifest, Chronicle } from '@mnemosyne_os/sdk';
|
|
79
|
+
|
|
80
|
+
const MANIFEST: AppManifest = {
|
|
81
|
+
id: 'my-layer2-app', name: 'My Layer 2 App', version: '1.0.0',
|
|
82
|
+
mnemosyne_sdk: '^1.1.0',
|
|
83
|
+
scopes: ['vault:read:DEV', 'vault:write:DEV'],
|
|
84
|
+
vaults: ['DEV'],
|
|
85
|
+
intents: ['INGEST', 'QUERY'],
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
// Connect and register
|
|
89
|
+
const client = await MnemoClientBrowser.connect();
|
|
90
|
+
await client.register(MANIFEST);
|
|
91
|
+
|
|
92
|
+
// Ingest content
|
|
93
|
+
await client.ingest('My note to remember', 'NOTE', 'DEV');
|
|
94
|
+
|
|
95
|
+
// Semantic query
|
|
96
|
+
const chronicles: Chronicle[] = await client.query('my search', 'DEV', 10);
|
|
97
|
+
|
|
98
|
+
// Real-time push events from the OS
|
|
99
|
+
client.onPush((event) => {
|
|
100
|
+
if (event.type === 'chronicle:new') {
|
|
101
|
+
console.log('New chronicle from:', event.sourceApp);
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
// Graceful close
|
|
106
|
+
client.close();
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## Quick Start — Node.js External App
|
|
65
112
|
|
|
66
113
|
```typescript
|
|
67
114
|
import { MnemoClient } from '@mnemosyne_os/sdk';
|
|
@@ -72,44 +119,75 @@ const client = await MnemoClient.connect({
|
|
|
72
119
|
// transport: 'auto' → WebSocket if external, IPC if embedded in Mnemosyne OS
|
|
73
120
|
});
|
|
74
121
|
|
|
75
|
-
|
|
76
|
-
await client.
|
|
77
|
-
content: 'My content to remember',
|
|
78
|
-
spineType: 'NOTE',
|
|
79
|
-
vault: 'DEV',
|
|
80
|
-
});
|
|
81
|
-
|
|
82
|
-
// Semantic query
|
|
83
|
-
const result = await client.query('my search query', { limit: 5 });
|
|
122
|
+
await client.ingest({ content: 'My content', spineType: 'NOTE', vault: 'DEV' });
|
|
123
|
+
const result = await client.query('my search', { limit: 5 });
|
|
84
124
|
console.log(result.chronicles);
|
|
85
125
|
|
|
86
|
-
// Cross-app share (triggers a consent popup in Mnemosyne OS)
|
|
87
|
-
const share = await client.requestShare({
|
|
88
|
-
fromAppId: 'other-app-id',
|
|
89
|
-
reason: 'I need access to correlate data',
|
|
90
|
-
});
|
|
91
|
-
|
|
92
126
|
await client.disconnect();
|
|
93
127
|
```
|
|
94
128
|
|
|
95
129
|
---
|
|
96
130
|
|
|
97
|
-
##
|
|
131
|
+
## Full API — `MnemoClientBrowser`
|
|
98
132
|
|
|
99
|
-
|
|
133
|
+
### Connection
|
|
100
134
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
135
|
+
```typescript
|
|
136
|
+
const client = await MnemoClientBrowser.connect(
|
|
137
|
+
'127.0.0.1', // host (default)
|
|
138
|
+
7799, // port (default)
|
|
139
|
+
15_000, // timeout ms (default)
|
|
140
|
+
);
|
|
141
|
+
|
|
142
|
+
await client.register(manifest); // → RegisterResult (token stored internally)
|
|
143
|
+
client.close();
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### Vault
|
|
106
147
|
|
|
107
148
|
```typescript
|
|
108
|
-
//
|
|
109
|
-
|
|
149
|
+
// Ingest
|
|
150
|
+
await client.ingest(content, spineType, vault?, metadata?);
|
|
110
151
|
|
|
111
|
-
//
|
|
112
|
-
const
|
|
152
|
+
// Query
|
|
153
|
+
const chronicles = await client.query(text, vault?, limit?);
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### Resonances (cognitive workspaces)
|
|
157
|
+
|
|
158
|
+
```typescript
|
|
159
|
+
// List active resonances from the vault
|
|
160
|
+
const resonances = await client.resonancesList();
|
|
161
|
+
|
|
162
|
+
// Update current position (persisted as DECISION chronicle)
|
|
163
|
+
await client.updatePosition('resonance-id', 'Phase 52 — polish complete', 'Phase 52');
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### Monorepo
|
|
167
|
+
|
|
168
|
+
```typescript
|
|
169
|
+
// Git log (requires scope: 'monorepo:read', intent: 'GIT_LOG')
|
|
170
|
+
const commits = await client.gitLog(20, '30 days ago');
|
|
171
|
+
|
|
172
|
+
// Read a .md file from the OS repo
|
|
173
|
+
const content = await client.readFile('docs/ARCHITECTURE.md');
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### Agents
|
|
177
|
+
|
|
178
|
+
```typescript
|
|
179
|
+
// List connected Layer 2 apps (requires scope: 'agents:read', intent: 'LIST_AGENTS')
|
|
180
|
+
const agents = await client.agentsList();
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
### Events
|
|
184
|
+
|
|
185
|
+
```typescript
|
|
186
|
+
// OS push events (chronicle:new, etc.)
|
|
187
|
+
client.onPush((event) => { /* ... */ });
|
|
188
|
+
|
|
189
|
+
// Disconnection
|
|
190
|
+
client.onDisconnect(() => { /* reconnect logic */ });
|
|
113
191
|
```
|
|
114
192
|
|
|
115
193
|
---
|
|
@@ -120,17 +198,18 @@ Every app declares its permissions in `app.manifest.json`.
|
|
|
120
198
|
**The OS refuses any operation not declared in the manifest** — Zero-Trust by design.
|
|
121
199
|
|
|
122
200
|
```typescript
|
|
123
|
-
// Available scopes
|
|
124
201
|
type MnemoScope =
|
|
125
|
-
| 'vault:read:DEV'
|
|
126
|
-
| 'vault:read:SOCIAL'
|
|
127
|
-
| 'vault:read:PERSONAL'| 'vault:write:PERSONAL'
|
|
128
|
-
| 'vault:read:FINANCE'
|
|
129
|
-
| 'vault:read:COOK'
|
|
130
|
-
| 'share:request'
|
|
131
|
-
| '
|
|
132
|
-
| '
|
|
133
|
-
| '
|
|
202
|
+
| 'vault:read:DEV' | 'vault:write:DEV'
|
|
203
|
+
| 'vault:read:SOCIAL' | 'vault:write:SOCIAL'
|
|
204
|
+
| 'vault:read:PERSONAL' | 'vault:write:PERSONAL'
|
|
205
|
+
| 'vault:read:FINANCE' | 'vault:write:FINANCE'
|
|
206
|
+
| 'vault:read:COOK' | 'vault:write:COOK'
|
|
207
|
+
| 'share:request' | 'share:grant'
|
|
208
|
+
| 'monorepo:read' // git log + readFile
|
|
209
|
+
| 'agents:read' // list connected agents
|
|
210
|
+
| 'nft:validate' // MnemoStore NFT licence validation
|
|
211
|
+
| 'neural:graph:read' // NeuralGraph access
|
|
212
|
+
| 'llm:query'; // Direct LLM queries (premium)
|
|
134
213
|
```
|
|
135
214
|
|
|
136
215
|
---
|
|
@@ -140,82 +219,83 @@ type MnemoScope =
|
|
|
140
219
|
```typescript
|
|
141
220
|
import { MNEMOSYNE_METHODS } from '@mnemosyne_os/sdk';
|
|
142
221
|
|
|
143
|
-
//
|
|
144
|
-
MNEMOSYNE_METHODS.
|
|
145
|
-
MNEMOSYNE_METHODS.
|
|
146
|
-
MNEMOSYNE_METHODS.
|
|
147
|
-
MNEMOSYNE_METHODS.
|
|
148
|
-
MNEMOSYNE_METHODS.
|
|
149
|
-
MNEMOSYNE_METHODS.
|
|
150
|
-
MNEMOSYNE_METHODS.
|
|
151
|
-
MNEMOSYNE_METHODS.
|
|
222
|
+
MNEMOSYNE_METHODS.REGISTER // 'sdk.register'
|
|
223
|
+
MNEMOSYNE_METHODS.INGEST // 'sdk.ingest'
|
|
224
|
+
MNEMOSYNE_METHODS.QUERY // 'sdk.query'
|
|
225
|
+
MNEMOSYNE_METHODS.RESONANCES_LIST // 'sdk.resonances.list'
|
|
226
|
+
MNEMOSYNE_METHODS.UPDATE_POSITION // 'sdk.resonance.updatePosition'
|
|
227
|
+
MNEMOSYNE_METHODS.GIT_LOG // 'sdk.git.log'
|
|
228
|
+
MNEMOSYNE_METHODS.READ_FILE // 'sdk.readFile'
|
|
229
|
+
MNEMOSYNE_METHODS.LIST_AGENTS // 'sdk.agents.list'
|
|
230
|
+
MNEMOSYNE_METHODS.SHARE // 'sdk.share'
|
|
231
|
+
MNEMOSYNE_METHODS.NFT_VALIDATE // 'sdk.nft.validate'
|
|
232
|
+
MNEMOSYNE_METHODS.GRAPH_QUERY // 'sdk.graph.query'
|
|
233
|
+
MNEMOSYNE_METHODS.CORRELATE // 'sdk.correlate'
|
|
234
|
+
MNEMOSYNE_METHODS.FORGET // 'sdk.forget'
|
|
152
235
|
```
|
|
153
236
|
|
|
154
237
|
---
|
|
155
238
|
|
|
156
|
-
##
|
|
239
|
+
## SpineTypes
|
|
157
240
|
|
|
158
241
|
```typescript
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
//
|
|
166
|
-
|
|
242
|
+
type SpineType =
|
|
243
|
+
| 'GIT' | 'ARCHITECTURE' | 'DECISION' | 'DEBUG' | 'FEATURE'
|
|
244
|
+
| 'REDDIT_POST' | 'LINKEDIN_POST' | 'SOCIAL_NODE'
|
|
245
|
+
| 'DOCUMENT' | 'NOTE' | 'CUSTOM'
|
|
246
|
+
| 'RESONANCE' // cognitive workspace node
|
|
247
|
+
| 'SESSION' // session context / resume snapshot
|
|
248
|
+
| 'POSITION_UPDATE' // current phase/position marker
|
|
249
|
+
| 'API' | 'DOC' | 'ERROR';
|
|
167
250
|
```
|
|
168
251
|
|
|
169
252
|
---
|
|
170
253
|
|
|
171
|
-
##
|
|
172
|
-
|
|
173
|
-
Apps distributed on [MnemoStore](https://github.com/yaka0007/Mnemosyne-Neural-OS) can gate access with NFT licences:
|
|
254
|
+
## Events (Push)
|
|
174
255
|
|
|
175
|
-
|
|
176
|
-
// In your app.manifest.json, declare:
|
|
177
|
-
// "scopes": ["nft:validate"]
|
|
256
|
+
The OS pushes real-time events to all connected clients. Handle them with `onPush`:
|
|
178
257
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
alert('Please purchase a licence on MnemoStore to use this app.');
|
|
183
|
-
process.exit(1);
|
|
184
|
-
}
|
|
185
|
-
```
|
|
258
|
+
| Event `type` | Payload | Trigger |
|
|
259
|
+
|---|---|---|
|
|
260
|
+
| `chronicle:new` | `{ vault, spineType, sourceApp, ts }` | Any client calls `ingest()` |
|
|
186
261
|
|
|
187
|
-
|
|
188
|
-
> Results are cached for 5 minutes to avoid blockchain spam.
|
|
262
|
+
More event types coming in future releases (agent:connected, tamper-alert, nft-revoked…).
|
|
189
263
|
|
|
190
264
|
---
|
|
191
265
|
|
|
192
|
-
##
|
|
193
|
-
|
|
194
|
-
### `MnemoClient.connect(options)`
|
|
195
|
-
|
|
196
|
-
| Option | Type | Default | Description |
|
|
197
|
-
|--------|------|---------|-------------|
|
|
198
|
-
| `appId` | `string` | required | Must match `manifest.id` |
|
|
199
|
-
| `manifest` | `string \| AppManifest` | required | Path to `app.manifest.json` or inline object |
|
|
200
|
-
| `transport` | `'ws' \| 'ipc' \| 'auto'` | `'auto'` | Transport mode |
|
|
201
|
-
| `wsPort` | `number` | `7799` | WebSocket port |
|
|
202
|
-
| `timeoutMs` | `number` | `30000` | RPC timeout |
|
|
266
|
+
## NFT Licence (MnemoStore)
|
|
203
267
|
|
|
204
|
-
|
|
268
|
+
Apps distributed on MnemoStore can gate access with NFT licences:
|
|
205
269
|
|
|
206
|
-
|
|
270
|
+
```json
|
|
271
|
+
// app.manifest.json
|
|
272
|
+
{ "scopes": ["nft:validate"] }
|
|
273
|
+
```
|
|
207
274
|
|
|
208
|
-
|
|
275
|
+
```typescript
|
|
276
|
+
// Via MnemoClient (Node.js)
|
|
277
|
+
const validation = await client.validateNFTLicense('0xYourWalletAddress');
|
|
278
|
+
if (!validation.valid) process.exit(1);
|
|
279
|
+
```
|
|
209
280
|
|
|
210
|
-
|
|
281
|
+
> Validation is done on-chain by Mnemosyne OS — cached 5 min to avoid blockchain spam.
|
|
211
282
|
|
|
212
|
-
|
|
283
|
+
---
|
|
213
284
|
|
|
214
|
-
|
|
285
|
+
## Changelog
|
|
215
286
|
|
|
216
|
-
###
|
|
287
|
+
### v1.1.0 — 2026-04-27
|
|
288
|
+
- **NEW** `MnemoClientBrowser` — zero-dependency browser client (native WebSocket API)
|
|
289
|
+
- **NEW** `sdk.resonances.list` — fetch real Resonance objects from the vault
|
|
290
|
+
- **NEW** `sdk.resonance.updatePosition` — persist session position as DECISION chronicle
|
|
291
|
+
- **NEW** `sdk.readFile` — read `.md` files from the OS repo (monorepo:read scope)
|
|
292
|
+
- **NEW** Push events — `onPush()` handler for real-time OS→client notifications
|
|
293
|
+
- **TYPES** Added `GitCommit`, `AgentInfo`, `RESONANCE`/`SESSION`/`POSITION_UPDATE` SpineTypes
|
|
294
|
+
- **TYPES** Added `monorepo:read`, `agents:read` scopes; `GIT_LOG`, `LIST_AGENTS` intents
|
|
295
|
+
- **FIX** `Chronicle.content` is now optional (some vault records only store vectors)
|
|
217
296
|
|
|
218
|
-
|
|
297
|
+
### v1.0.0 — 2026-04-24
|
|
298
|
+
- Initial release: `MnemoClient`, `sdk.ingest`, `sdk.query`, `sdk.git.log`, `sdk.agents.list`, JWT Zero-Trust
|
|
219
299
|
|
|
220
300
|
---
|
|
221
301
|
|