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/README.md CHANGED
@@ -1,200 +1,339 @@
1
- # dotmem (.mem)
2
-
3
- ![banner](https://raw.githubusercontent.com/passariello/container/refs/heads/main/dotmem/banner.svg)
4
-
5
- AI memory and continuity infrastructure for agents and applications.
6
-
7
- **Built on:** [memorio](https://www.npmjs.com/package/memorio) (state, store, session, IndexedDB, SQLite, cache)
8
-
9
- Dotmem provides structured, queryable, policy-controlled memory for AI agents. It supports experience acquisition, bounded context projection, continuity across sessions, rule-based reasoning, and MCP integration. The memory substrate is independent of a specific model, vendor, host, or conversational client.
10
-
11
- > **Retrieval model**: dotmem uses deterministic lexical/structured retrieval with applicability-based eligibility. It does not use embeddings, vector indexes, or semantic similarity search. The term "AI-oriented" refers to the memory lifecycle and API design (acquisition with evidence/provenance, applicability scoping, policy-gated writes, context projection for LLM consumption), not the underlying retrieval algorithm. For semantic/vector search, pair dotmem with a dedicated embedding store.
12
-
13
- ---
14
-
15
- ## What Dotmem is
16
-
17
- - **Acquired experience**: evidenced, applicability-scoped claims via `discover`, `project`, and `acquire`.
18
- - **Application memory**: typed key/value entries via `remember`, `recall`, `update`, `forget`, and `patch`.
19
- - **Continuity**: snapshots, checkpoints, compaction, and open loops across sessions.
20
- - **Policy**: separate authority domain with tiered enforcement and privileged out-of-band overrides.
21
- - **Agent namespaces**: logically partitioned memory via `dotmem/agent`.
22
- - **Notes and profiles**: short-lived notes and read-only built-in profiles (including the optional Joy profile).
23
- - **MCP and CLI**: stdio MCP server (`dotmem-mcp`) and command-line tools.
24
-
25
- Dotmem is the active owner of memory, continuity, profiles, agents, and MCP capabilities. It is not a wrapper around an external memory service. MCP is an access interface, not the core.
26
-
27
- ---
28
-
29
- ## Install
30
-
31
- ```bash
32
- npm i dotmem
33
- # or
34
- bun i dotmem
35
- # or
36
- pnpm i dotmem
37
- ```
38
-
39
- Requires Node.js >= 18.0.0.
40
-
41
- ---
42
-
43
- ## Quick Start
44
-
45
- The runtime initializes lazily on first call; no explicit `init()` is required.
46
-
47
- ```typescript
48
- import { memory } from 'dotmem'
49
-
50
- // Discover relevant acquired experience for a situation
51
- const discovery = await memory.discover('User needs a language recommendation for a new project', {
52
- depth: 'current',
53
- maxCandidates: 10
54
- })
55
-
56
- // Project a bounded context from discovered claims
57
- const projection = memory.project(discovery, { maxCandidates: 5, maxCharacters: 4000 })
58
- console.info(projection.text)
59
-
60
- // Acquire durable experience (persists across restarts via .mem files)
61
- await memory.acquire({
62
- id: 'user.language-preference',
63
- knowledge: { language: 'TypeScript' },
64
- applicability: { area: 'language-selection' },
65
- evidence: [{ id: 'conv-001', source: 'conversation', observedAt: new Date().toISOString() }],
66
- epistemicType: 'observed'
67
- })
68
- ```
69
-
70
- For agent-namespaced memory, use the `dotmem/agent` subpath:
71
-
72
- ```typescript
73
- import { createAgentMemory } from 'dotmem/agent'
74
-
75
- const agent = createAgentMemory('support-agent')
76
- await agent.remember('greeting', 'Hello! How can I help?', {
77
- type: 'fact',
78
- confidence: 0.9,
79
- scope: 'local',
80
- tags: ['greeting']
81
- })
82
- ```
83
-
84
- > `remember()` with scope `durable` uses IndexedDB and is browser-only. For Node/Bun, use `memory.acquire()`. See [MEMORY.md](./MEMORY.md) for scope details.
85
-
86
- ---
87
-
88
- ## Core capabilities
89
-
90
- - `memory.discover`, `memory.context`, `memory.project` — retrieval and bounded context projection.
91
- - `memory.acquire`, `memory.acquireStaged` — evidenced acquisition with policy evaluation.
92
- - `memory.remember`, `memory.recall`, `memory.update`, `memory.forget`, `memory.patch` — application memory.
93
- - `memory.journal`, `memory.note`, `memory.profile`, `memory.seed`, `memory.policy`, `memory.brain` — sub-facades.
94
- - `continuity` — snapshots, checkpoints, compaction, open loops.
95
- - `security`, `encryption` — RBAC/audit/consent and AES-GCM + PBKDF2 helpers.
96
- - Foundation re-exports: `state`, `store`, `session`, `idb`, `dispatch`, `hlc`.
97
-
98
- ---
99
-
100
- ## Layers
101
-
102
- Dotmem exposes **6 user-facing layers** through its public entry points. `knowledge` and `logic` are not public runtime exports (`logic` is experimental/unverified and not exported; `knowledge` is internal). `profile` is available via `memory.profile.get(id)` and its stability depends on the package semver contract.
103
-
104
- | Layer | Availability | Purpose |
105
- |-------|--------------|---------|
106
- | **memory** | `dotmem` (main) | Key/value memory, acquisition lifecycle, journal, and sub-facades |
107
- | **continuity** | `dotmem` (main) | USER + PROJECT + TASK context composition, snapshots, open loops |
108
- | **agent** | `dotmem/agent` (subpath) | Agent-facing memory with logical namespace partitioning |
109
- | **policy** | `memory.policy` | Policy definition, authority management, three-tier enforcement |
110
- | **profile** | `memory.profile.get(id)` | Identity and persona documents (read-only built-in profiles, including Joy) |
111
- | **note** | `memory.note` | Short-lived notes with tags and origins |
112
-
113
- ### Internal / infrastructure
114
-
115
- | Layer | Purpose | Notes |
116
- |-------|---------|-------|
117
- | **seed** | Development-only initial memory seed | `--dev` required |
118
- | **llm-cache** | LLM response cache types only; no verified runtime implementation | `types/llm-cache.d.ts` |
119
-
120
- > Dotmem re-exports foundational infrastructure: `state` (reactive state), `store` (key/value storage), `idb` (IndexedDB), and `sqlite` (SQL database integration). These are lower-level utilities, not additional AI memory layers.
121
-
122
- ---
123
-
124
- ## Retrieval model
125
-
126
- dotmem uses **deterministic, verifiable retrieval** without embedding-model dependencies:
127
-
128
- - Lexical/structured matching with applicability-based eligibility.
129
- - No embeddings, vector indexes, or semantic similarity search.
130
- - Results are reproducible given the same store and query.
131
-
132
- "AI-oriented" refers to the memory lifecycle and API design (acquisition with evidence/provenance, applicability scoping, policy-gated writes, context projection for LLM consumption), not the underlying retrieval algorithm. For semantic/vector search, pair dotmem with a dedicated embedding store.
133
-
134
- ---
135
-
136
- ## MCP server
137
-
138
- `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 store. Write access is gated by `DOTMEM_MCP_WRITE=1`.
139
-
140
- Canonical launch command (use this form in all configurations):
141
-
142
- ```bash
143
- npx -y -p dotmem dotmem-mcp
144
- ```
145
-
146
- Example (Claude Desktop, read-only by default):
147
-
148
- ```json
149
- {
150
- "mcpServers": {
151
- "dotmem": {
152
- "command": "npx",
153
- "args": ["-y", "-p", "dotmem", "dotmem-mcp"]
154
- }
155
- }
156
- }
157
- ```
158
-
159
- See [MEMORY.md](./MEMORY.md) for the full tool list and write-gating details.
160
-
161
- ---
162
-
163
- ## Optional Joy identity
164
-
165
- Dotmem core is model- and persona-independent. Joy/Jo is an optional agent identity and profile. See [docs/JOY.md](./JOY.md) for activation (exact phrase only), discovery order, and the optional profile.
166
-
167
- ---
168
-
169
- ## Documentation
170
-
171
- | Document | Description |
172
- |----------|-------------|
173
- | [MEMORY.md](./MEMORY.md) | Full memory model: acquisition contract, policy language, epistemic typing, enforcement, continuity, identity |
174
- | [AGENTS.md](./AGENTS.md) | AI agent working rules, activation phrases, complete `memory.*` surface |
175
- | [SECURITY.md](./SECURITY.md) | Encryption, multitenancy, key management, trust model, JHF, sandbox |
176
- | [JOY.md](./JOY.md) | Optional Joy identity, activation matching, discovery order |
177
- | [PACKAGE.md](./PACKAGE.md) | Package contents, full quick-start, dependency graph |
178
- | [LICENSE.md](./LICENSE.md) | License |
179
-
180
- ---
181
-
182
- ## Compatibility
183
-
184
- **License**: MIT (SPDX: `MIT`)
185
-
186
- **Supported runtimes**:
187
- - Node.js >= 18.0.0 (declared in `package.json` engines)
188
- - Bun >= 1.0 (tested in CI)
189
- - Browser (ES2020+ with IndexedDB, localStorage, sessionStorage)
190
- - Deno (compatible, not routinely tested)
191
-
192
- **Tested in CI**: Node.js 20.x, 22.x; Bun 1.x
193
-
194
- **Note**: The `durable` scope in `memory.remember()` uses IndexedDB and is browser-only. For cross-restart persistence in Node/Bun, use `memory.acquire()` which writes `.mem` package files. The `store` and `session` layers fall back to in-memory `Map`s in Node/Bun/Deno and do not survive process restarts.
195
-
196
- ---
197
-
198
- ## License
199
-
200
- MIT (c) 2026 Dario Passariello.
1
+ # dotmem (.mem)
2
+
3
+ ![Dotmem banner](https://raw.githubusercontent.com/passariello/container/refs/heads/main/dotmem/banner.svg)
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
- Core declares no production dependencies in package.json. `memorio` is listed under devDependencies, but the built ESM/CJS output imports it as an external runtime module; a published install therefore needs `memorio` available unless packaging changes. 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. (The optional MCP stdio entrypoint is the one declared-dependency surface: `zod` and `@modelcontextprotocol/server`.)
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.");