toolnet-memory 0.2.9 → 0.2.11
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/.env.example +30 -10
- package/LICENSE +21 -0
- package/README.md +146 -376
- package/bin/toolnet-memory +71 -26
- package/bundle/agy-hook.js +30 -30
- package/bundle/agy.js +24 -24
- package/bundle/codex-context.js +12 -12
- package/bundle/codex.js +31 -31
- package/bundle/context-runtime.js +39 -12
- package/bundle/context.js +13 -13
- package/bundle/doctor.js +3 -3
- package/bundle/full-index.js +8 -8
- package/bundle/graph-index.js +4 -4
- package/bundle/impact.js +4 -4
- package/bundle/incremental.js +4 -4
- package/bundle/learner.js +5 -5
- package/bundle/mcp.js +7 -7
- package/bundle/opencode.js +34 -34
- package/bundle/project-manual.js +7 -7
- package/bundle/runtime.js +11 -11
- package/bundle/semantic.js +6 -6
- package/bundle/setup.js +57 -32
- package/bundle/snapshot.js +4 -4
- package/bundle/work-continuity.js +7 -7
- package/package.json +24 -1
package/README.md
CHANGED
|
@@ -1,97 +1,55 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
|
|
3
|
-
#
|
|
3
|
+
# ToolNet Memory
|
|
4
4
|
|
|
5
|
-
### Persistent project memory
|
|
6
|
-
|
|
7
|
-
**Continue the same project across OpenCode, Agy and Codex without losing context.**
|
|
5
|
+
### Persistent project memory, work continuity, and code intelligence for AI coding agents
|
|
8
6
|
|
|
9
7
|
[](https://www.npmjs.com/package/toolnet-memory)
|
|
8
|
+
[](https://github.com/LBT-AI/toolnet-memory/actions/workflows/ci.yml)
|
|
10
9
|
[](https://nodejs.org/)
|
|
11
10
|
[](LICENSE)
|
|
12
11
|
|
|
12
|
+
**One project. Multiple coding agents. Continuous context.**
|
|
13
|
+
|
|
13
14
|
</div>
|
|
14
15
|
|
|
15
16
|
---
|
|
16
17
|
|
|
17
|
-
## What does
|
|
18
|
-
|
|
19
|
-
ToolNet Memory is a persistent memory layer for AI coding agents.
|
|
18
|
+
## What it does
|
|
20
19
|
|
|
21
|
-
|
|
20
|
+
ToolNet Memory is a persistent memory layer for AI coding workflows. It keeps project knowledge outside any single agent session so Agy / Antigravity, OpenCode, Codex, and MCP-compatible tools can continue work without rebuilding context from zero.
|
|
22
21
|
|
|
23
|
-
|
|
22
|
+
It stores durable working context such as:
|
|
24
23
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
↓
|
|
32
|
-
Agy opens the same project
|
|
33
|
-
↓
|
|
34
|
-
Understands the mission, rationale,
|
|
35
|
-
completed work, current objective,
|
|
36
|
-
constraints and next actions
|
|
37
|
-
↓
|
|
38
|
-
Continues Phase 4
|
|
39
|
-
↓
|
|
40
|
-
Agy later stops at Phase 6
|
|
41
|
-
↓
|
|
42
|
-
ToolNet Memory
|
|
43
|
-
↓
|
|
44
|
-
Codex continues Phase 7
|
|
45
|
-
```
|
|
24
|
+
- project mission and current objective,
|
|
25
|
+
- decisions, rules, blockers, warnings, and next actions,
|
|
26
|
+
- completed and active work,
|
|
27
|
+
- structured session handoff state,
|
|
28
|
+
- semantic project/code context,
|
|
29
|
+
- source symbols, dependencies, architecture, and impact relationships.
|
|
46
30
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
- what the project is building,
|
|
50
|
-
- the current objective,
|
|
51
|
-
- why the work matters,
|
|
52
|
-
- why a specific implementation direction was chosen,
|
|
53
|
-
- completed and active phases/tasks,
|
|
54
|
-
- deliverables and Definition of Done,
|
|
55
|
-
- architecture decisions,
|
|
56
|
-
- dependencies and blockers,
|
|
57
|
-
- project operating rules,
|
|
58
|
-
- important warnings,
|
|
59
|
-
- next actions.
|
|
60
|
-
|
|
61
|
-
The result is a shared technical memory layer between your project and your AI coding agents:
|
|
62
|
-
|
|
63
|
-
```text
|
|
64
|
-
OpenCode / Agy / Codex
|
|
65
|
-
↓
|
|
66
|
-
ToolNet Memory
|
|
67
|
-
↓
|
|
68
|
-
Project Memory + Work State
|
|
69
|
-
+ Semantic Context + Code Intelligence
|
|
70
|
-
↓
|
|
71
|
-
The next agent continues with context
|
|
72
|
-
instead of restarting from zero
|
|
73
|
-
```
|
|
31
|
+
ToolNet Memory is **not a raw transcript dump**. Session history and durable project memory are treated separately, and only useful project context should be promoted into long-term memory.
|
|
74
32
|
|
|
75
|
-
|
|
33
|
+
## Installation
|
|
76
34
|
|
|
77
|
-
|
|
35
|
+
ToolNet Memory is installed **once per VPS/user account**, not once per project.
|
|
78
36
|
|
|
79
|
-
|
|
37
|
+
Recommended installer:
|
|
80
38
|
|
|
81
39
|
```bash
|
|
82
|
-
|
|
40
|
+
curl -fsSL https://memory.toolnet.tech/install | bash
|
|
83
41
|
```
|
|
84
42
|
|
|
85
|
-
|
|
43
|
+
Alternative installer:
|
|
86
44
|
|
|
87
45
|
```bash
|
|
88
|
-
|
|
46
|
+
npx toolnet-memory-install
|
|
89
47
|
```
|
|
90
48
|
|
|
91
|
-
|
|
49
|
+
Or install directly from npm:
|
|
92
50
|
|
|
93
51
|
```bash
|
|
94
|
-
npm install -g toolnet-memory
|
|
52
|
+
npm install -g toolnet-memory@latest
|
|
95
53
|
```
|
|
96
54
|
|
|
97
55
|
Requires **Node.js 22+**.
|
|
@@ -99,422 +57,234 @@ Requires **Node.js 22+**.
|
|
|
99
57
|
Verify:
|
|
100
58
|
|
|
101
59
|
```bash
|
|
60
|
+
toolnet-memory --version
|
|
102
61
|
toolnet-memory doctor
|
|
103
62
|
```
|
|
104
63
|
|
|
105
|
-
|
|
64
|
+
## One-time VPS setup
|
|
106
65
|
|
|
66
|
+
Global configuration is stored at:
|
|
107
67
|
|
|
108
|
-
|
|
68
|
+
```text
|
|
69
|
+
~/.config/toolnet-memory/.env
|
|
70
|
+
```
|
|
109
71
|
|
|
110
|
-
|
|
72
|
+
Run setup once on a new VPS/user account:
|
|
111
73
|
|
|
112
74
|
```bash
|
|
113
75
|
toolnet-memory setup
|
|
114
|
-
|
|
115
|
-
For a new machine, the setup wizard asks for:
|
|
116
|
-
HF_NAMESPACE
|
|
117
|
-
HF_BUCKET
|
|
118
|
-
HF_S3_ACCESS_KEY_ID
|
|
119
|
-
HF_S3_SECRET_ACCESS_KEY
|
|
120
|
-
Configuration is stored at:
|
|
121
|
-
~/.config/toolnet-memory/.env
|
|
122
|
-
Permissions are restricted automatically:
|
|
123
|
-
~/.config/toolnet-memory 700
|
|
124
|
-
~/.config/toolnet-memory/.env 600
|
|
125
|
-
Your Hugging Face credentials belong to your own account and are never bundled with ToolNet Memory.
|
|
126
|
-
The installer can launch this setup automatically on first install.
|
|
127
|
-
|
|
128
|
-
⸻
|
|
129
|
-
|
|
130
|
-
## Core capabilities
|
|
76
|
+
```
|
|
131
77
|
|
|
132
|
-
|
|
78
|
+
The setup flow can configure Hugging Face-backed storage and detect supported coding agents. Credentials stay outside project repositories and must never be committed.
|
|
133
79
|
|
|
134
|
-
|
|
80
|
+
## Per-project setup
|
|
135
81
|
|
|
136
|
-
|
|
137
|
-
Project A
|
|
138
|
-
├── memories
|
|
139
|
-
├── vectors
|
|
140
|
-
├── code graph
|
|
141
|
-
├── semantic context
|
|
142
|
-
├── work state
|
|
143
|
-
└── snapshots
|
|
144
|
-
|
|
145
|
-
Project B
|
|
146
|
-
├── memories
|
|
147
|
-
├── vectors
|
|
148
|
-
├── code graph
|
|
149
|
-
├── semantic context
|
|
150
|
-
├── work state
|
|
151
|
-
└── snapshots
|
|
152
|
-
```
|
|
82
|
+
Each source project gets a stable identity and isolated remote namespace.
|
|
153
83
|
|
|
154
|
-
|
|
84
|
+
```bash
|
|
85
|
+
cd /path/to/project
|
|
155
86
|
|
|
156
|
-
|
|
87
|
+
toolnet-memory project:manual-init --project "$PWD"
|
|
88
|
+
toolnet-memory index
|
|
89
|
+
```
|
|
157
90
|
|
|
158
|
-
ToolNet
|
|
91
|
+
ToolNet creates project metadata under:
|
|
159
92
|
|
|
160
93
|
```text
|
|
161
|
-
|
|
162
|
-
Objective
|
|
163
|
-
Why
|
|
164
|
-
Plan
|
|
165
|
-
Phase
|
|
166
|
-
Task
|
|
167
|
-
Deliverable
|
|
168
|
-
Definition of Done
|
|
169
|
-
Dependencies
|
|
170
|
-
Decisions
|
|
171
|
-
Blockers
|
|
172
|
-
Warnings
|
|
173
|
-
Next Actions
|
|
94
|
+
.toolnet/
|
|
174
95
|
```
|
|
175
96
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
ToolNet can preserve:
|
|
179
|
-
|
|
180
|
-
- project mission,
|
|
181
|
-
- current objective,
|
|
182
|
-
- why the work matters,
|
|
183
|
-
- why a specific approach was chosen,
|
|
184
|
-
- phase objective,
|
|
185
|
-
- deliverables,
|
|
186
|
-
- acceptance criteria,
|
|
187
|
-
- dependencies,
|
|
188
|
-
- constraints,
|
|
189
|
-
- open questions.
|
|
97
|
+
A stable project identity prevents memory from being mixed merely because folders are renamed or moved.
|
|
190
98
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
### Smart Handoff
|
|
194
|
-
|
|
195
|
-
When a session ends before the work is complete, ToolNet can preserve a compact handoff containing:
|
|
99
|
+
Remote storage is scoped by project:
|
|
196
100
|
|
|
197
101
|
```text
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
Important decisions
|
|
205
|
-
Important warnings
|
|
206
|
-
Next actions
|
|
102
|
+
projects/<project-remote>/
|
|
103
|
+
├── memory/
|
|
104
|
+
├── code/
|
|
105
|
+
├── sessions/
|
|
106
|
+
├── work/
|
|
107
|
+
└── snapshots/
|
|
207
108
|
```
|
|
208
109
|
|
|
209
|
-
|
|
110
|
+
## Agent integration
|
|
210
111
|
|
|
211
|
-
|
|
112
|
+
Automatic integration can detect supported agents installed for the current user:
|
|
212
113
|
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
```text
|
|
216
|
-
ONLY edit:
|
|
217
|
-
/root/project/source
|
|
218
|
-
|
|
219
|
-
NEVER edit:
|
|
220
|
-
/var/www/project
|
|
221
|
-
|
|
222
|
-
Deploy only with:
|
|
223
|
-
./deploy.sh --apply
|
|
114
|
+
```bash
|
|
115
|
+
toolnet-memory integrate:auto
|
|
224
116
|
```
|
|
225
117
|
|
|
226
|
-
|
|
118
|
+
Or integrate individually:
|
|
227
119
|
|
|
228
|
-
|
|
120
|
+
```bash
|
|
121
|
+
toolnet-memory integrate:agy
|
|
122
|
+
toolnet-memory integrate:opencode
|
|
123
|
+
toolnet-memory integrate:codex
|
|
124
|
+
```
|
|
229
125
|
|
|
230
|
-
|
|
126
|
+
Integration is normally a **one-time user/VPS operation**. Project selection remains automatic through the project's ToolNet identity.
|
|
231
127
|
|
|
232
|
-
|
|
128
|
+
After setup, use your coding agent normally:
|
|
233
129
|
|
|
234
130
|
```text
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
↓
|
|
239
|
-
Rich Code Graph
|
|
240
|
-
↓
|
|
241
|
-
Semantic Code Index
|
|
242
|
-
↓
|
|
243
|
-
Architecture Intelligence
|
|
244
|
-
↓
|
|
245
|
-
Dependency Analysis
|
|
246
|
-
↓
|
|
247
|
-
Impact Analysis
|
|
131
|
+
Agy / Antigravity ─┐
|
|
132
|
+
OpenCode ├──> ToolNet Memory ──> Project-scoped context
|
|
133
|
+
Codex ┘
|
|
248
134
|
```
|
|
249
135
|
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
- symbol indexing,
|
|
253
|
-
- type resolution,
|
|
254
|
-
- callers / callees,
|
|
255
|
-
- imports,
|
|
256
|
-
- inheritance,
|
|
257
|
-
- implementations,
|
|
258
|
-
- route detection,
|
|
259
|
-
- architecture layers,
|
|
260
|
-
- subsystem clustering,
|
|
261
|
-
- hotspots,
|
|
262
|
-
- dependency analysis,
|
|
263
|
-
- dead-code candidates,
|
|
264
|
-
- blast radius,
|
|
265
|
-
- semantic code search.
|
|
136
|
+
The intended normal workflow does not require users to manually say “save memory” or “load memory”. Agent/session hooks capture meaningful activity and restore relevant project context at the next session.
|
|
266
137
|
|
|
267
|
-
|
|
138
|
+
## Core capabilities
|
|
268
139
|
|
|
269
|
-
|
|
140
|
+
### Persistent project memory
|
|
270
141
|
|
|
271
|
-
|
|
142
|
+
Durable memory can preserve decisions, rules, todos, fixes, blockers, warnings, architecture changes, and next actions while avoiding unnecessary transcript noise.
|
|
272
143
|
|
|
273
|
-
|
|
274
|
-
cd /path/to/project
|
|
275
|
-
toolnet-memory index
|
|
276
|
-
```
|
|
144
|
+
### Work continuity
|
|
277
145
|
|
|
278
|
-
|
|
146
|
+
Structured continuity can track:
|
|
279
147
|
|
|
280
148
|
```text
|
|
281
|
-
|
|
149
|
+
Mission
|
|
150
|
+
Objective
|
|
151
|
+
Phase
|
|
152
|
+
Task
|
|
153
|
+
Deliverable
|
|
154
|
+
Definition of Done
|
|
155
|
+
Dependencies
|
|
156
|
+
Decisions
|
|
157
|
+
Blockers
|
|
158
|
+
Warnings
|
|
159
|
+
Next Actions
|
|
282
160
|
```
|
|
283
161
|
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
Check project state:
|
|
162
|
+
Useful commands:
|
|
287
163
|
|
|
288
164
|
```bash
|
|
289
165
|
toolnet-memory work:status
|
|
290
|
-
```
|
|
291
|
-
|
|
292
|
-
Generate a startup brief:
|
|
293
|
-
|
|
294
|
-
```bash
|
|
295
166
|
toolnet-memory brief
|
|
167
|
+
toolnet-memory handoff:latest
|
|
296
168
|
```
|
|
297
169
|
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
```bash
|
|
301
|
-
toolnet-memory semantic "authentication flow"
|
|
302
|
-
```
|
|
170
|
+
### Code intelligence
|
|
303
171
|
|
|
304
|
-
|
|
172
|
+
A full index can build:
|
|
305
173
|
|
|
306
|
-
```
|
|
307
|
-
|
|
174
|
+
```text
|
|
175
|
+
Source Index
|
|
176
|
+
↓
|
|
177
|
+
Type Resolution
|
|
178
|
+
↓
|
|
179
|
+
Rich Graph
|
|
180
|
+
↓
|
|
181
|
+
Semantic Code Index
|
|
182
|
+
↓
|
|
183
|
+
Architecture Intelligence
|
|
184
|
+
↓
|
|
185
|
+
Graph Analysis
|
|
186
|
+
↓
|
|
187
|
+
Visualization Dataset
|
|
308
188
|
```
|
|
309
189
|
|
|
310
|
-
|
|
190
|
+
Capabilities include symbol indexing, callers/callees, imports, type resolution, architecture layers, subsystem clusters, hotspots, dead-code candidates, semantic search, dependency analysis, and change-impact analysis.
|
|
311
191
|
|
|
312
|
-
|
|
192
|
+
Examples:
|
|
313
193
|
|
|
314
194
|
```bash
|
|
315
|
-
toolnet-memory
|
|
316
|
-
|
|
317
|
-
toolnet-memory index
|
|
318
|
-
toolnet-memory index:graph
|
|
195
|
+
toolnet-memory semantic "authentication flow"
|
|
196
|
+
toolnet-memory impact src/path/to/file.ts
|
|
319
197
|
toolnet-memory incremental
|
|
320
|
-
|
|
321
|
-
toolnet-memory semantic "query"
|
|
322
|
-
toolnet-memory impact path/to/file
|
|
323
|
-
|
|
324
|
-
toolnet-memory brief
|
|
325
|
-
toolnet-memory brief:json
|
|
326
|
-
|
|
327
|
-
toolnet-memory work:status
|
|
328
|
-
toolnet-memory work:json
|
|
329
|
-
toolnet-memory work:reconcile
|
|
330
|
-
|
|
331
|
-
toolnet-memory context:sync
|
|
332
|
-
toolnet-memory context:print
|
|
333
|
-
toolnet-memory context:refresh
|
|
334
|
-
|
|
335
|
-
toolnet-memory snapshot:list
|
|
336
|
-
toolnet-memory snapshot:create "reason"
|
|
337
|
-
toolnet-memory snapshot:restore <id>
|
|
338
|
-
|
|
339
|
-
toolnet-memory recover
|
|
340
|
-
toolnet-memory mcp
|
|
341
|
-
```
|
|
342
|
-
|
|
343
|
-
Agent/session integrations include commands for OpenCode, Agy and Codex.
|
|
344
|
-
|
|
345
|
-
---
|
|
346
|
-
|
|
347
|
-
## Startup Brief
|
|
348
|
-
|
|
349
|
-
Before an agent continues work, ToolNet can build a compact project brief containing only relevant context:
|
|
350
|
-
|
|
351
|
-
```text
|
|
352
|
-
PROJECT RULES
|
|
353
|
-
MISSION
|
|
354
|
-
CURRENT OBJECTIVE
|
|
355
|
-
WHY THIS WORK MATTERS
|
|
356
|
-
WHY THIS APPROACH
|
|
357
|
-
ACTIVE WORK
|
|
358
|
-
CURRENT PHASE
|
|
359
|
-
PHASE OBJECTIVE
|
|
360
|
-
DELIVERABLE
|
|
361
|
-
DEFINITION OF DONE
|
|
362
|
-
BLOCKERS
|
|
363
|
-
RECENT DECISIONS
|
|
364
|
-
NEXT ACTIONS
|
|
365
|
-
```
|
|
366
|
-
|
|
367
|
-
The goal is to avoid dumping entire transcripts into the model.
|
|
368
|
-
|
|
369
|
-
---
|
|
370
|
-
|
|
371
|
-
## Session Capture
|
|
372
|
-
|
|
373
|
-
ToolNet can normalize coding-agent sessions into a common project-scoped format.
|
|
374
|
-
|
|
375
|
-
Sessions can preserve:
|
|
376
|
-
|
|
377
|
-
```text
|
|
378
|
-
session identity
|
|
379
|
-
messages
|
|
380
|
-
tool activity
|
|
381
|
-
file changes
|
|
382
|
-
continuity observations
|
|
383
|
-
semantic observations
|
|
384
|
-
handoff state
|
|
385
|
-
```
|
|
386
|
-
|
|
387
|
-
Raw session history and durable long-term memory remain separate.
|
|
388
|
-
|
|
389
|
-
---
|
|
390
|
-
|
|
391
|
-
## Storage model
|
|
392
|
-
|
|
393
|
-
Remote project data is isolated by project namespace:
|
|
394
|
-
|
|
395
|
-
```text
|
|
396
|
-
projects/<project>/
|
|
397
|
-
├── project.json
|
|
398
|
-
├── memory/
|
|
399
|
-
│ ├── records/
|
|
400
|
-
│ └── vectors/
|
|
401
|
-
├── code/
|
|
402
|
-
│ ├── chunks/
|
|
403
|
-
│ ├── vectors/
|
|
404
|
-
│ ├── graph/
|
|
405
|
-
│ ├── architecture/
|
|
406
|
-
│ ├── analysis/
|
|
407
|
-
│ └── visualization/
|
|
408
|
-
├── work/
|
|
409
|
-
├── context/
|
|
410
|
-
└── snapshots/
|
|
411
198
|
```
|
|
412
199
|
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
## MCP
|
|
200
|
+
### MCP
|
|
416
201
|
|
|
417
|
-
|
|
202
|
+
Expose memory and code intelligence through MCP:
|
|
418
203
|
|
|
419
204
|
```bash
|
|
420
205
|
toolnet-memory mcp
|
|
421
206
|
```
|
|
422
207
|
|
|
423
|
-
|
|
208
|
+
### Snapshots and recovery
|
|
424
209
|
|
|
425
|
-
|
|
210
|
+
ToolNet supports project-scoped snapshots and recovery workflows without merging state across projects.
|
|
426
211
|
|
|
427
|
-
##
|
|
212
|
+
## Health and configuration
|
|
428
213
|
|
|
429
|
-
|
|
214
|
+
Human-readable health check:
|
|
430
215
|
|
|
431
|
-
```
|
|
432
|
-
|
|
216
|
+
```bash
|
|
217
|
+
toolnet-memory doctor
|
|
433
218
|
```
|
|
434
219
|
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
---
|
|
220
|
+
Machine-readable health check:
|
|
438
221
|
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
Global configuration lives at:
|
|
442
|
-
|
|
443
|
-
```text
|
|
444
|
-
~/.config/toolnet-memory/.env
|
|
222
|
+
```bash
|
|
223
|
+
toolnet-memory doctor --json
|
|
445
224
|
```
|
|
446
225
|
|
|
447
|
-
|
|
226
|
+
Read or update global configuration:
|
|
448
227
|
|
|
449
228
|
```bash
|
|
450
|
-
|
|
451
|
-
|
|
229
|
+
toolnet-memory config get KEY
|
|
230
|
+
toolnet-memory config set KEY VALUE
|
|
231
|
+
toolnet-memory config open
|
|
452
232
|
```
|
|
453
233
|
|
|
454
|
-
|
|
234
|
+
Secret values are masked in normal CLI output.
|
|
455
235
|
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
## Update
|
|
236
|
+
## Updating
|
|
459
237
|
|
|
460
238
|
```bash
|
|
461
|
-
|
|
239
|
+
toolnet-memory update
|
|
462
240
|
```
|
|
463
241
|
|
|
464
|
-
|
|
242
|
+
The updater checks the latest npm release and updates the global installation.
|
|
465
243
|
|
|
466
|
-
|
|
467
|
-
npx toolnet-memory-install
|
|
468
|
-
```
|
|
244
|
+
## Security model
|
|
469
245
|
|
|
470
|
-
|
|
246
|
+
ToolNet Memory processes source-code metadata, coding-agent activity, and project memory, so project isolation and secret handling are core requirements.
|
|
471
247
|
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
248
|
+
- Never commit `.env` files or credentials.
|
|
249
|
+
- Sanitize secrets before durable persistence.
|
|
250
|
+
- Never silently inject memory from another project.
|
|
251
|
+
- Avoid placing full authentication tokens in logs or diagnostics.
|
|
252
|
+
- Treat raw agent transcripts as potentially sensitive.
|
|
475
253
|
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
---
|
|
254
|
+
See [SECURITY.md](SECURITY.md) for vulnerability reporting.
|
|
479
255
|
|
|
480
256
|
## Development
|
|
481
257
|
|
|
482
258
|
```bash
|
|
483
259
|
git clone https://github.com/LBT-AI/toolnet-memory.git
|
|
484
260
|
cd toolnet-memory
|
|
485
|
-
npm
|
|
486
|
-
npm run build
|
|
261
|
+
npm ci
|
|
487
262
|
npm test
|
|
263
|
+
npm run build:release
|
|
264
|
+
npm pack --dry-run
|
|
488
265
|
```
|
|
489
266
|
|
|
490
|
-
|
|
267
|
+
Installer validation:
|
|
491
268
|
|
|
492
269
|
```bash
|
|
493
|
-
|
|
270
|
+
bash -n scripts/install.sh
|
|
494
271
|
```
|
|
495
272
|
|
|
496
|
-
|
|
273
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for repository rules and pull-request requirements.
|
|
497
274
|
|
|
498
|
-
##
|
|
275
|
+
## Releases
|
|
499
276
|
|
|
500
|
-
|
|
277
|
+
CI validates pushes and pull requests. Version tags trigger the release workflow, which validates the package, publishes through npm Trusted Publishing (OIDC), creates the GitHub Release, and attaches the npm tarball.
|
|
501
278
|
|
|
502
|
-
|
|
279
|
+
The release tag must match `package.json` exactly:
|
|
503
280
|
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
**Agent independence** — the memory layer is not tied to one coding CLI.
|
|
509
|
-
|
|
510
|
-
**Graceful failure** — memory/context failures should not break the coding agent itself.
|
|
511
|
-
|
|
512
|
-
---
|
|
513
|
-
|
|
514
|
-
<div align="center">
|
|
281
|
+
```text
|
|
282
|
+
package.json: 0.2.10
|
|
283
|
+
Git tag: v0.2.10
|
|
284
|
+
```
|
|
515
285
|
|
|
516
|
-
|
|
286
|
+
See [CHANGELOG.md](CHANGELOG.md) for release history.
|
|
517
287
|
|
|
518
|
-
|
|
288
|
+
## License
|
|
519
289
|
|
|
520
|
-
|
|
290
|
+
MIT © 2026 LBT-AI. See [LICENSE](LICENSE).
|