dotmem 0.0.9 → 0.1.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/AGENTS.md +3 -3
- package/DOTMEM.md +536 -539
- package/JOY.md +124 -35
- package/MEMORY.md +5 -5
- package/PACKAGE.md +1 -1
- package/README.md +339 -200
- package/SECURITY.md +1 -1
- package/agent.cjs +13 -0
- package/agent.js +13 -0
- package/bin/cli.cjs +5 -0
- package/bin/cli.js +5 -0
- package/bin/mcp.cjs +5 -0
- package/bin/mcp.js +5 -0
- package/cli.cjs +49 -14
- package/cli.js +49 -14
- package/core/profile/ai.compact.md +5 -0
- package/core/profile/ai.md +288 -0
- package/core/profile/behavior.md +431 -0
- package/core/profile/curiosity.md +565 -0
- package/core/profile/decision.md +842 -0
- package/core/profile/language.md +99 -0
- package/core/profile/soul.md +41 -0
- package/core/profile/trust.md +804 -0
- package/global.cjs +52 -13
- package/global.js +52 -13
- package/index.cjs +57 -14
- package/index.js +57 -14
- package/llms.txt +3 -3
- package/mcp.cjs +53 -14
- package/mcp.js +53 -14
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,200 +1,339 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-

|
|
4
|
-
|
|
5
|
-
AI memory and continuity infrastructure for agents and applications
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
> **Retrieval
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
## What Dotmem is
|
|
16
|
-
|
|
17
|
-
- **Acquired experience
|
|
18
|
-
- **Application memory
|
|
19
|
-
- **Continuity
|
|
20
|
-
- **Policy
|
|
21
|
-
- **Agent namespaces
|
|
22
|
-
- **Notes and profiles
|
|
23
|
-
- **MCP and CLI
|
|
24
|
-
|
|
25
|
-
Dotmem
|
|
26
|
-
|
|
27
|
-
---
|
|
28
|
-
|
|
29
|
-
##
|
|
30
|
-
|
|
31
|
-
```bash
|
|
32
|
-
npm
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
###
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
-
|
|
188
|
-
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
1
|
+
# dotmem (.mem)
|
|
2
|
+
|
|
3
|
+

|
|
4
|
+
|
|
5
|
+
**AI memory and continuity infrastructure for agents and applications... Say `Hi Joy!`**
|
|
6
|
+
|
|
7
|
+
Dotmem provides structured, queryable, policy-controlled memory for AI agents and applications. It supports experience acquisition, bounded context projection, continuity across sessions, rule-based reasoning, and MCP integration.
|
|
8
|
+
|
|
9
|
+
The memory substrate is independent of any specific model, vendor, host, or conversational client.
|
|
10
|
+
|
|
11
|
+
> **Retrieval:** deterministic lexical and structured matching. No embeddings or vector search. See [Retrieval model](#retrieval-model).
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## What Dotmem is
|
|
16
|
+
|
|
17
|
+
- **Acquired experience:** evidenced, applicability-scoped claims through `discover`, `project`, and `acquire`.
|
|
18
|
+
- **Application memory:** typed key/value entries through `remember`, `recall`, `update`, `forget`, and `patch`.
|
|
19
|
+
- **Continuity:** snapshots, checkpoints, compaction, and open loops across sessions.
|
|
20
|
+
- **Policy:** a separate authority domain with tiered enforcement and privileged out-of-band overrides.
|
|
21
|
+
- **Agent namespaces:** logically partitioned memory through `dotmem/agent`.
|
|
22
|
+
- **Notes and profiles:** short-lived notes and read-only built-in profiles, including the Joy profile.
|
|
23
|
+
- **MCP and CLI:** a stdio MCP server (`dotmem-mcp`) and command-line tools.
|
|
24
|
+
|
|
25
|
+
Dotmem owns memory, continuity, profiles, agents, and MCP capabilities end to end. MCP is an access interface, not the core.
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Installation
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
npm install dotmem
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Other supported package managers:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
bun add dotmem
|
|
39
|
+
pnpm add dotmem
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
**Requirements:** Node.js >= 20.0.0.
|
|
43
|
+
|
|
44
|
+
The MCP server is distributed separately as `dotmem-mcp`. See [MCP server](#mcp-server).
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Quick Start — Continuous Chat
|
|
49
|
+
|
|
50
|
+
Run the Dotmem MCP server on your machine so that your AI host and your terminal share the same local memory store.
|
|
51
|
+
|
|
52
|
+
1. Add the server to your host configuration (example for Claude Desktop, read-only by default):
|
|
53
|
+
|
|
54
|
+
```json
|
|
55
|
+
{
|
|
56
|
+
"mcpServers": {
|
|
57
|
+
"dotmem": {
|
|
58
|
+
"command": "npx",
|
|
59
|
+
"args": ["-y", "-p", "dotmem-mcp", "dotmem-mcp"]
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
2. Restart the host.
|
|
66
|
+
3. Start the conversation with `Hi Joy!`.
|
|
67
|
+
|
|
68
|
+
To allow the host to write memory, add `"env": { "DOTMEM_MCP_WRITE": "1" }`. Configurations for other hosts are in [MCP server](#mcp-server).
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Quick Start — Coding
|
|
73
|
+
|
|
74
|
+
The runtime initializes lazily on the first call. No explicit `init()` is required.
|
|
75
|
+
|
|
76
|
+
```typescript
|
|
77
|
+
import { memory } from 'dotmem'
|
|
78
|
+
|
|
79
|
+
// Discover relevant acquired experience for a situation
|
|
80
|
+
const discovery = await memory.discover(
|
|
81
|
+
'User needs a language recommendation for a new project',
|
|
82
|
+
{
|
|
83
|
+
depth: 'current',
|
|
84
|
+
maxCandidates: 10
|
|
85
|
+
}
|
|
86
|
+
)
|
|
87
|
+
|
|
88
|
+
// Project a bounded context from discovered claims
|
|
89
|
+
const projection = memory.project(discovery, {
|
|
90
|
+
maxCandidates: 5,
|
|
91
|
+
maxCharacters: 4000
|
|
92
|
+
})
|
|
93
|
+
|
|
94
|
+
console.info(projection.text)
|
|
95
|
+
|
|
96
|
+
// Acquire durable experience
|
|
97
|
+
// Persists across restarts through .mem files
|
|
98
|
+
await memory.acquire({
|
|
99
|
+
id: 'user.language-preference',
|
|
100
|
+
knowledge: { language: 'TypeScript' },
|
|
101
|
+
applicability: { area: 'language-selection' },
|
|
102
|
+
evidence: [
|
|
103
|
+
{
|
|
104
|
+
id: 'conv-001',
|
|
105
|
+
source: 'conversation',
|
|
106
|
+
observedAt: new Date().toISOString()
|
|
107
|
+
}
|
|
108
|
+
],
|
|
109
|
+
epistemicType: 'observed'
|
|
110
|
+
})
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Agent-namespaced memory
|
|
114
|
+
|
|
115
|
+
```typescript
|
|
116
|
+
import { createAgentMemory } from 'dotmem/agent'
|
|
117
|
+
|
|
118
|
+
const agent = createAgentMemory('support-agent')
|
|
119
|
+
|
|
120
|
+
await agent.remember('greeting', 'Hello! How can I help?', {
|
|
121
|
+
type: 'fact',
|
|
122
|
+
confidence: 0.9,
|
|
123
|
+
scope: 'local',
|
|
124
|
+
tags: ['greeting']
|
|
125
|
+
})
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
> ⚠️ **Persistence in Node.js, Bun, and Deno**
|
|
129
|
+
>
|
|
130
|
+
> - `remember()` with scope `durable` uses IndexedDB and is **browser-only**.
|
|
131
|
+
> - The internal `store` and `session` layers fall back to in-memory `Map` instances outside the browser. **Data stored there is lost on restart.**
|
|
132
|
+
> - To persist across restarts in Node.js and Bun, use `memory.acquire()`, which writes `.mem` files.
|
|
133
|
+
>
|
|
134
|
+
> See [MEMORY.md](./MEMORY.md) for scope details.
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## Core capabilities
|
|
139
|
+
|
|
140
|
+
| API | Purpose |
|
|
141
|
+
|---|---|
|
|
142
|
+
| `memory.discover`, `memory.context`, `memory.project` | Retrieval and bounded context projection |
|
|
143
|
+
| `memory.acquire`, `memory.acquireStaged` | Evidenced acquisition with policy evaluation |
|
|
144
|
+
| `memory.remember`, `memory.recall`, `memory.update`, `memory.forget`, `memory.patch` | Application memory operations |
|
|
145
|
+
| `memory.journal`, `memory.note`, `memory.profile`, `memory.seed`, `memory.policy`, `memory.brain` | Specialized memory facades |
|
|
146
|
+
| `continuity` | Snapshots, checkpoints, compaction, and open loops |
|
|
147
|
+
| `security`, `encryption` | RBAC, audit, consent, AES-GCM, and PBKDF2 helpers |
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## Architecture and layers
|
|
152
|
+
|
|
153
|
+
Dotmem exposes **six user-facing layers** through its public entry points.
|
|
154
|
+
|
|
155
|
+
| Layer | Availability | Purpose |
|
|
156
|
+
|---|---|---|
|
|
157
|
+
| **memory** | `dotmem` (main) | Key/value memory, acquisition lifecycle, journal, and sub-facades |
|
|
158
|
+
| **continuity** | `dotmem` (main) | USER + PROJECT + TASK context composition, snapshots, and open loops |
|
|
159
|
+
| **agent** | `dotmem/agent` (subpath) | Agent-facing memory with logical namespace partitioning |
|
|
160
|
+
| **policy** | `memory.policy` | Policy definition, authority management, and three-tier enforcement |
|
|
161
|
+
| **profile** | `memory.profile.get(id)` | Identity and persona documents; read-only built-in profiles, including Joy |
|
|
162
|
+
| **note** | `memory.note` | Short-lived notes with tags and origins |
|
|
163
|
+
|
|
164
|
+
Not part of the public runtime surface:
|
|
165
|
+
|
|
166
|
+
- `logic` is experimental and unverified.
|
|
167
|
+
- `knowledge` is internal.
|
|
168
|
+
- `seed` is development-only and requires `--dev`.
|
|
169
|
+
- `llm-cache` ships types only; there is no verified runtime implementation.
|
|
170
|
+
|
|
171
|
+
The `profile` layer follows the package semver contract.
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## Retrieval model
|
|
176
|
+
|
|
177
|
+
Dotmem uses **deterministic, verifiable retrieval** without embedding-model dependencies.
|
|
178
|
+
|
|
179
|
+
- Lexical and structured matching with applicability-based eligibility.
|
|
180
|
+
- No embeddings, vector indexes, or semantic similarity search.
|
|
181
|
+
- Results are reproducible given the same store and query.
|
|
182
|
+
|
|
183
|
+
"AI-oriented" describes the memory lifecycle and API design, not the retrieval algorithm:
|
|
184
|
+
|
|
185
|
+
- Acquisition with evidence and provenance.
|
|
186
|
+
- Applicability scoping.
|
|
187
|
+
- Policy-gated writes.
|
|
188
|
+
- Context projection for LLM consumption.
|
|
189
|
+
|
|
190
|
+
For semantic or vector search, pair Dotmem with a dedicated embedding store.
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## MCP server
|
|
195
|
+
|
|
196
|
+
`dotmem-mcp` is the stdio MCP server. It runs on the operator's machine, so a connected AI host and the terminal share the same local memory store.
|
|
197
|
+
|
|
198
|
+
### Read-only by default
|
|
199
|
+
|
|
200
|
+
The server starts **read-only**. Write access is an explicit opt-in:
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
DOTMEM_MCP_WRITE=1
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
Enable it only if you want the connected host to be able to modify memory.
|
|
207
|
+
|
|
208
|
+
### Launch command
|
|
209
|
+
|
|
210
|
+
```bash
|
|
211
|
+
npx -y -p dotmem-mcp dotmem-mcp
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
> 💡 For long-lived setups, pin the version (`dotmem-mcp@x.y.z`) instead of taking the latest on every launch.
|
|
215
|
+
|
|
216
|
+
### Claude Desktop
|
|
217
|
+
|
|
218
|
+
```json
|
|
219
|
+
{
|
|
220
|
+
"mcpServers": {
|
|
221
|
+
"dotmem": {
|
|
222
|
+
"command": "npx",
|
|
223
|
+
"args": ["-y", "-p", "dotmem-mcp", "dotmem-mcp"]
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
With write access:
|
|
230
|
+
|
|
231
|
+
```json
|
|
232
|
+
{
|
|
233
|
+
"mcpServers": {
|
|
234
|
+
"dotmem": {
|
|
235
|
+
"command": "npx",
|
|
236
|
+
"args": ["-y", "-p", "dotmem-mcp", "dotmem-mcp"],
|
|
237
|
+
"env": { "DOTMEM_MCP_WRITE": "1" }
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
### Claude Code
|
|
244
|
+
|
|
245
|
+
```bash
|
|
246
|
+
# read-only
|
|
247
|
+
claude mcp add --transport stdio dotmem -- npx -y -p dotmem-mcp dotmem-mcp
|
|
248
|
+
|
|
249
|
+
# with write access
|
|
250
|
+
claude mcp add \
|
|
251
|
+
--env DOTMEM_MCP_WRITE=1 \
|
|
252
|
+
--transport stdio \
|
|
253
|
+
dotmem -- npx -y -p dotmem-mcp dotmem-mcp
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
### Kilo / OpenCode
|
|
257
|
+
|
|
258
|
+
```jsonc
|
|
259
|
+
{
|
|
260
|
+
"mcp": {
|
|
261
|
+
"dotmem": {
|
|
262
|
+
"type": "local",
|
|
263
|
+
"command": ["npx", "-y", "-p", "dotmem-mcp", "dotmem-mcp"],
|
|
264
|
+
"enabled": true
|
|
265
|
+
// For write access, add:
|
|
266
|
+
// "environment": { "DOTMEM_MCP_WRITE": "1" }
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
### Windows (cmd.exe)
|
|
273
|
+
|
|
274
|
+
On Windows, `npx` may not be directly executable by an MCP host. Use `cmd /c npx`:
|
|
275
|
+
|
|
276
|
+
```json
|
|
277
|
+
{
|
|
278
|
+
"mcpServers": {
|
|
279
|
+
"dotmem": {
|
|
280
|
+
"command": "cmd",
|
|
281
|
+
"args": ["/c", "npx", "-y", "-p", "dotmem-mcp", "dotmem-mcp"]
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
Add `"env": { "DOTMEM_MCP_WRITE": "1" }` for write access.
|
|
288
|
+
|
|
289
|
+
See [MEMORY.md](./MEMORY.md) for the complete MCP tool list and write-gating details.
|
|
290
|
+
|
|
291
|
+
---
|
|
292
|
+
|
|
293
|
+
## Joy identity
|
|
294
|
+
|
|
295
|
+
Dotmem core is model- and provider-independent.
|
|
296
|
+
|
|
297
|
+
**Joy/Jo is the native, Dotmem collaborator identity and profile.**
|
|
298
|
+
|
|
299
|
+
Joy is the canonical identity. Jo is its conversational abbreviation and alias; both resolve to the same identity.
|
|
300
|
+
|
|
301
|
+
The Joy profile is part of Dotmem's native profile system. It is not an optional plugin, external persona, or provider-specific feature.
|
|
302
|
+
|
|
303
|
+
See [JOY.md](./JOY.md) for activation rules, discovery order, identity resolution, profile requirements.
|
|
304
|
+
|
|
305
|
+
---
|
|
306
|
+
|
|
307
|
+
## Documentation
|
|
308
|
+
|
|
309
|
+
| Document | Description |
|
|
310
|
+
|---|---|
|
|
311
|
+
| [MEMORY.md](./MEMORY.md) | Memory model: acquisition contract, policy language, epistemic typing, enforcement, continuity, and identity |
|
|
312
|
+
| [AGENTS.md](./AGENTS.md) | AI agent working rules, activation phrases, and complete `memory.*` surface |
|
|
313
|
+
| [SECURITY.md](./SECURITY.md) | Encryption, multitenancy, key management, trust model, JHF, and sandbox |
|
|
314
|
+
| [JOY.md](./JOY.md) | Joy identity, activation matching, and discovery order |
|
|
315
|
+
| [PACKAGE.md](./PACKAGE.md) | Package contents, complete quick start, and dependency graph |
|
|
316
|
+
| [LICENSE.md](./LICENSE.md) | License |
|
|
317
|
+
|
|
318
|
+
---
|
|
319
|
+
|
|
320
|
+
## Compatibility
|
|
321
|
+
|
|
322
|
+
| Runtime | Compatibility |
|
|
323
|
+
|---|---|
|
|
324
|
+
| Node.js >= 20.0.0 | Declared in `package.json` engines |
|
|
325
|
+
| Bun >= 1.0 | Tested in CI |
|
|
326
|
+
| Browser | ES2020+ with IndexedDB, localStorage, and sessionStorage |
|
|
327
|
+
| Deno | Compatible, not routinely tested |
|
|
328
|
+
|
|
329
|
+
**Tested in CI:** Node.js 20.x, Node.js 22.x, Bun 1.x.
|
|
330
|
+
|
|
331
|
+
For persistence rules per runtime, see the [persistence warning](#agent-namespaced-memory) in Quick Start.
|
|
332
|
+
|
|
333
|
+
---
|
|
334
|
+
|
|
335
|
+
## License
|
|
336
|
+
|
|
337
|
+
MIT — Copyright (c) 2026 Dario Passariello.
|
|
338
|
+
|
|
339
|
+
SPDX-License-Identifier: `MIT`
|
package/SECURITY.md
CHANGED
|
@@ -8,7 +8,7 @@ This document covers dotmem's optional encryption layer, client-side multitenanc
|
|
|
8
8
|
|
|
9
9
|
This applies to every layer: `state`, `store`, `session`, `idb`, `memory`, `sqlite`. Treat browser storage as client-controlled unless you explicitly opt in.
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
The published package declares production dependencies, including `@modelcontextprotocol/server`, `memorio` and `zod`. The MCP stdio entrypoint uses `zod` and `@modelcontextprotocol/server`. No `eval`, no dynamic code execution, no bundled telemetry, sanitized keys, validated inputs, bounded journal entries, UUID-based session identifiers. Independently checkable via Socket.dev / Snyk.
|
|
12
12
|
|
|
13
13
|
---
|
|
14
14
|
|
package/agent.cjs
CHANGED
|
@@ -18,6 +18,18 @@ var __export = (target, all) => {
|
|
|
18
18
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
19
19
|
};
|
|
20
20
|
|
|
21
|
+
// core/suppress-idb-warning.ts
|
|
22
|
+
var orig;
|
|
23
|
+
var init_suppress_idb_warning = __esm({
|
|
24
|
+
"core/suppress-idb-warning.ts"() {
|
|
25
|
+
orig = console.warn.bind(console);
|
|
26
|
+
console.warn = (...args) => {
|
|
27
|
+
if (typeof args[0] === "string" && args[0].includes("IndexedDB is not available")) return;
|
|
28
|
+
orig(...args);
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
|
|
21
33
|
// core/idb.ts
|
|
22
34
|
var idb;
|
|
23
35
|
var init_idb = __esm({
|
|
@@ -46,6 +58,7 @@ __export(global_exports, {
|
|
|
46
58
|
var getPlatform;
|
|
47
59
|
var init_global = __esm({
|
|
48
60
|
"core/global.ts"() {
|
|
61
|
+
init_suppress_idb_warning();
|
|
49
62
|
init_idb();
|
|
50
63
|
getPlatform = /* @__PURE__ */ __name(() => {
|
|
51
64
|
const proc = globalThis.process;
|
package/agent.js
CHANGED
|
@@ -16,6 +16,18 @@ var __export = (target, all) => {
|
|
|
16
16
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
17
17
|
};
|
|
18
18
|
|
|
19
|
+
// core/suppress-idb-warning.ts
|
|
20
|
+
var orig;
|
|
21
|
+
var init_suppress_idb_warning = __esm({
|
|
22
|
+
"core/suppress-idb-warning.ts"() {
|
|
23
|
+
orig = console.warn.bind(console);
|
|
24
|
+
console.warn = (...args) => {
|
|
25
|
+
if (typeof args[0] === "string" && args[0].includes("IndexedDB is not available")) return;
|
|
26
|
+
orig(...args);
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
|
|
19
31
|
// core/idb.ts
|
|
20
32
|
var idb;
|
|
21
33
|
var init_idb = __esm({
|
|
@@ -44,6 +56,7 @@ __export(global_exports, {
|
|
|
44
56
|
var getPlatform;
|
|
45
57
|
var init_global = __esm({
|
|
46
58
|
"core/global.ts"() {
|
|
59
|
+
init_suppress_idb_warning();
|
|
47
60
|
init_idb();
|
|
48
61
|
getPlatform = /* @__PURE__ */ __name(() => {
|
|
49
62
|
const proc = globalThis.process;
|
package/bin/cli.cjs
CHANGED
|
@@ -9,6 +9,11 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
|
9
9
|
|
|
10
10
|
var process__default = /*#__PURE__*/_interopDefault(process);
|
|
11
11
|
|
|
12
|
+
var __origWarn = console.warn.bind(console);
|
|
13
|
+
console.warn = (...args2) => {
|
|
14
|
+
if (typeof args2[0] === "string" && args2[0].includes("IndexedDB is not available")) return;
|
|
15
|
+
__origWarn(...args2);
|
|
16
|
+
};
|
|
12
17
|
var rawArgs = process__default.default.argv.slice(2);
|
|
13
18
|
var storageRootFlagIndex = rawArgs.indexOf("--storage-root");
|
|
14
19
|
var hasStorageRootFlag = storageRootFlagIndex !== -1;
|
package/bin/cli.js
CHANGED
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
import process from 'process';
|
|
3
3
|
import { fileURLToPath } from 'url';
|
|
4
4
|
|
|
5
|
+
var __origWarn = console.warn.bind(console);
|
|
6
|
+
console.warn = (...args2) => {
|
|
7
|
+
if (typeof args2[0] === "string" && args2[0].includes("IndexedDB is not available")) return;
|
|
8
|
+
__origWarn(...args2);
|
|
9
|
+
};
|
|
5
10
|
var rawArgs = process.argv.slice(2);
|
|
6
11
|
var storageRootFlagIndex = rawArgs.indexOf("--storage-root");
|
|
7
12
|
var hasStorageRootFlag = storageRootFlagIndex !== -1;
|
package/bin/mcp.cjs
CHANGED
|
@@ -7,6 +7,11 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
|
7
7
|
|
|
8
8
|
var process__default = /*#__PURE__*/_interopDefault(process);
|
|
9
9
|
|
|
10
|
+
var __origWarn = console.warn.bind(console);
|
|
11
|
+
console.warn = (...args) => {
|
|
12
|
+
if (typeof args[0] === "string" && args[0].includes("IndexedDB is not available")) return;
|
|
13
|
+
__origWarn(...args);
|
|
14
|
+
};
|
|
10
15
|
var nodeMajorVersion = Number.parseInt(process__default.default.versions.node.split(".")[0] ?? "", 10);
|
|
11
16
|
if (!Number.isInteger(nodeMajorVersion) || nodeMajorVersion < 20) {
|
|
12
17
|
console.error("dotmem-mcp requires Node.js >=20; the normal dotmem runtime remains compatible with its declared Node.js version.");
|
package/bin/mcp.js
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import process from 'process';
|
|
3
3
|
|
|
4
|
+
var __origWarn = console.warn.bind(console);
|
|
5
|
+
console.warn = (...args) => {
|
|
6
|
+
if (typeof args[0] === "string" && args[0].includes("IndexedDB is not available")) return;
|
|
7
|
+
__origWarn(...args);
|
|
8
|
+
};
|
|
4
9
|
var nodeMajorVersion = Number.parseInt(process.versions.node.split(".")[0] ?? "", 10);
|
|
5
10
|
if (!Number.isInteger(nodeMajorVersion) || nodeMajorVersion < 20) {
|
|
6
11
|
console.error("dotmem-mcp requires Node.js >=20; the normal dotmem runtime remains compatible with its declared Node.js version.");
|