agent-knowledge 1.0.13 → 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/CHANGELOG.md +25 -1
- package/README.md +60 -31
- package/dist/embeddings/{claude.d.ts → anthropic.d.ts} +2 -2
- package/dist/embeddings/anthropic.d.ts.map +1 -0
- package/dist/embeddings/{claude.js → anthropic.js} +2 -2
- package/dist/embeddings/anthropic.js.map +1 -0
- package/dist/embeddings/factory.js +4 -4
- package/dist/embeddings/factory.js.map +1 -1
- package/dist/embeddings/types.d.ts +1 -1
- package/dist/embeddings/types.d.ts.map +1 -1
- package/dist/embeddings/types.js +1 -1
- package/dist/embeddings/types.js.map +1 -1
- package/dist/knowledge/distill.d.ts +1 -1
- package/dist/knowledge/distill.js +2 -2
- package/dist/knowledge/distill.js.map +1 -1
- package/dist/server.js +2 -2
- package/dist/server.js.map +1 -1
- package/dist/sessions/adapters/aider.d.ts +3 -0
- package/dist/sessions/adapters/aider.d.ts.map +1 -0
- package/dist/sessions/adapters/aider.js +140 -0
- package/dist/sessions/adapters/aider.js.map +1 -0
- package/dist/sessions/adapters/cline.d.ts +3 -0
- package/dist/sessions/adapters/cline.d.ts.map +1 -0
- package/dist/sessions/adapters/cline.js +74 -0
- package/dist/sessions/adapters/cline.js.map +1 -0
- package/dist/sessions/adapters/continue.d.ts +3 -0
- package/dist/sessions/adapters/continue.d.ts.map +1 -0
- package/dist/sessions/adapters/continue.js +74 -0
- package/dist/sessions/adapters/continue.js.map +1 -0
- package/dist/sessions/adapters/index.d.ts +25 -0
- package/dist/sessions/adapters/index.d.ts.map +1 -0
- package/dist/sessions/adapters/index.js +21 -0
- package/dist/sessions/adapters/index.js.map +1 -0
- package/dist/sessions/adapters/opencode.d.ts +3 -0
- package/dist/sessions/adapters/opencode.d.ts.map +1 -0
- package/dist/sessions/adapters/opencode.js +88 -0
- package/dist/sessions/adapters/opencode.js.map +1 -0
- package/dist/sessions/parser.d.ts +12 -2
- package/dist/sessions/parser.d.ts.map +1 -1
- package/dist/sessions/parser.js +137 -20
- package/dist/sessions/parser.js.map +1 -1
- package/dist/sessions/summary.d.ts.map +1 -1
- package/dist/sessions/summary.js +20 -0
- package/dist/sessions/summary.js.map +1 -1
- package/dist/types.d.ts +3 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +22 -12
- package/dist/types.js.map +1 -1
- package/dist/vectorstore/store.d.ts +1 -1
- package/dist/vectorstore/store.js +2 -2
- package/dist/vectorstore/store.js.map +1 -1
- package/docs/ARCHITECTURE.md +67 -10
- package/docs/DASHBOARD.md +4 -3
- package/docs/SETUP.md +84 -38
- package/package.json +2 -2
- package/dist/embeddings/claude.d.ts.map +0 -1
- package/dist/embeddings/claude.js.map +0 -1
package/docs/ARCHITECTURE.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
```mermaid
|
|
6
6
|
graph TB
|
|
7
|
-
|
|
7
|
+
Agent[Agent Session] -->|MCP stdio| Server[server.ts]
|
|
8
8
|
Server --> Knowledge[Knowledge Module]
|
|
9
9
|
Server --> Session[Session Module]
|
|
10
10
|
|
|
@@ -12,15 +12,20 @@ graph TB
|
|
|
12
12
|
Knowledge --> KSearch[search.ts — TF-IDF]
|
|
13
13
|
Knowledge --> Git[git.ts — Sync]
|
|
14
14
|
|
|
15
|
-
Store --> Vault[(~/
|
|
15
|
+
Store --> Vault[(~/agent-knowledge)]
|
|
16
16
|
Git --> Remote[(Git Remote)]
|
|
17
17
|
|
|
18
|
-
Session --> Parser[parser.ts —
|
|
18
|
+
Session --> Parser[parser.ts — Multi-format + Cache]
|
|
19
|
+
Session --> Adapters[adapters/ — Auto-discovery]
|
|
19
20
|
Session --> SSearch[search.ts — TF-IDF Index]
|
|
20
21
|
Session --> Scopes[scopes.ts — 6 Filters]
|
|
21
22
|
Session --> Summary[summary.ts]
|
|
22
23
|
|
|
23
|
-
Parser --> Transcripts[(
|
|
24
|
+
Parser --> Transcripts[(Claude Code / Cursor<br/>JSONL)]
|
|
25
|
+
Adapters --> OpenCode[(OpenCode<br/>SQLite)]
|
|
26
|
+
Adapters --> Cline[(Cline<br/>JSON)]
|
|
27
|
+
Adapters --> ContinueDev[(Continue.dev<br/>JSON)]
|
|
28
|
+
Adapters --> Aider[(Aider<br/>MD / JSONL)]
|
|
24
29
|
|
|
25
30
|
Server --> Dashboard[dashboard.ts — :3423]
|
|
26
31
|
Dashboard --> HTTP[REST API]
|
|
@@ -43,10 +48,16 @@ src/
|
|
|
43
48
|
search.ts TF-IDF search over knowledge entries
|
|
44
49
|
git.ts git pull/push/sync with execSync + timeouts
|
|
45
50
|
sessions/
|
|
46
|
-
parser.ts
|
|
51
|
+
parser.ts Multi-format parsing with mtime cache + adapter dispatch
|
|
47
52
|
search.ts TF-IDF ranked search with 60s global index cache
|
|
48
53
|
scopes.ts 6 search scopes, post-filters cached index results
|
|
49
54
|
summary.ts Topic extraction, tool/file detection
|
|
55
|
+
adapters/
|
|
56
|
+
index.ts SessionAdapter interface, adapter registry, initAdapters()
|
|
57
|
+
opencode.ts OpenCode adapter — reads SQLite database (better-sqlite3)
|
|
58
|
+
cline.ts Cline adapter — reads VS Code globalStorage JSON tasks
|
|
59
|
+
continue.ts Continue.dev adapter — reads JSON session files
|
|
60
|
+
aider.ts Aider adapter — parses markdown chat + JSONL LLM history
|
|
50
61
|
search/
|
|
51
62
|
tfidf.ts TF-IDF scoring engine (tokenizer, stopwords, index)
|
|
52
63
|
fuzzy.ts Levenshtein distance, sliding window matching
|
|
@@ -83,12 +94,52 @@ Builds a TF-IDF index from all knowledge entries, searches with ranking, falls b
|
|
|
83
94
|
|
|
84
95
|
## Session Module
|
|
85
96
|
|
|
97
|
+
### Multi-Source Architecture
|
|
98
|
+
|
|
99
|
+
Sessions are read from multiple AI coding tools through two mechanisms:
|
|
100
|
+
|
|
101
|
+
1. **Direct parsing** -- Claude Code and Cursor sessions use JSONL files read directly by `parser.ts`. Claude Code sessions come from the primary data directory (`$KNOWLEDGE_DATA_DIR/projects/`). Cursor sessions are auto-discovered from `~/.cursor/projects/*/agent-transcripts/`.
|
|
102
|
+
|
|
103
|
+
2. **Adapter dispatch** -- Other tools (OpenCode, Cline, Continue.dev, Aider) use the pluggable adapter system in `adapters/`. When `parseSessionFile()` receives a virtual descriptor (e.g. `opencode://session:abc`), it dispatches to the matching adapter.
|
|
104
|
+
|
|
105
|
+
```
|
|
106
|
+
parseSessionFile(path)
|
|
107
|
+
→ for each registered adapter:
|
|
108
|
+
if path starts with `<adapter.prefix>://` → adapter.parseSession(path)
|
|
109
|
+
→ else: standard JSONL parsing with mtime cache
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### Session Adapters
|
|
113
|
+
|
|
114
|
+
The adapter system (`src/sessions/adapters/`) provides a uniform interface for reading sessions from different tools:
|
|
115
|
+
|
|
116
|
+
```typescript
|
|
117
|
+
interface SessionAdapter {
|
|
118
|
+
prefix: string; // Virtual descriptor prefix (e.g. "opencode")
|
|
119
|
+
name: string; // Human-readable name
|
|
120
|
+
isAvailable(): boolean; // Is the tool installed?
|
|
121
|
+
discoverProjects(): Array<{...}>; // Find projects/groups
|
|
122
|
+
listSessions(desc: string): Array<{...}>; // List sessions in a project
|
|
123
|
+
parseSession(desc: string): SessionEntry[]; // Parse into normalized entries
|
|
124
|
+
}
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
Adapters are registered at startup via `initAdapters()`, which dynamically imports each adapter module. `getAvailableAdapters()` returns only adapters whose `isAvailable()` returns true (the tool is installed).
|
|
128
|
+
|
|
129
|
+
| Adapter | Storage | Detection |
|
|
130
|
+
| ------------ | ----------------------------------------------- | ------------------------------------------------------------------------ |
|
|
131
|
+
| OpenCode | SQLite (`opencode.db`) | Checks `$OPENCODE_DATA_DIR` or `~/.local/share/opencode/` |
|
|
132
|
+
| Cline | JSON files in VS Code globalStorage | Platform-aware path to `saoudrizwan.claude-dev/tasks/` |
|
|
133
|
+
| Continue.dev | JSON files in `~/.continue/sessions/` | Checks directory existence |
|
|
134
|
+
| Aider | `.aider.chat.history.md` + `.aider.llm.history` | Scans `~/projects`, `~/code`, `~/dev`, `~/src`, `~/repos`, `~/workspace` |
|
|
135
|
+
|
|
86
136
|
### parser.ts — Mtime Cache
|
|
87
137
|
|
|
88
|
-
|
|
138
|
+
For JSONL-based sessions (Claude Code, Cursor), the parser checks `fs.statSync` for mtime before parsing. If unchanged since last parse, returns cached result. This avoids re-parsing large transcript files on every search.
|
|
89
139
|
|
|
90
140
|
```
|
|
91
141
|
parseSessionFile(path)
|
|
142
|
+
→ if virtual descriptor → dispatch to adapter
|
|
92
143
|
→ statSync(path).mtimeMs
|
|
93
144
|
→ if mtime matches cache → return cached entries
|
|
94
145
|
→ else parse JSONL lines → cache with mtime → return
|
|
@@ -200,17 +251,19 @@ Search Request
|
|
|
200
251
|
|
|
201
252
|
```mermaid
|
|
202
253
|
sequenceDiagram
|
|
203
|
-
participant C as
|
|
254
|
+
participant C as Agent Session
|
|
204
255
|
participant S as MCP Server
|
|
205
256
|
participant I as TF-IDF Index
|
|
206
257
|
participant P as Parser Cache
|
|
258
|
+
participant A as Session Adapters
|
|
207
259
|
participant F as File System
|
|
208
260
|
|
|
209
261
|
C->>S: knowledge_search({ query })
|
|
210
262
|
S->>I: search(query)
|
|
211
263
|
alt Index expired
|
|
212
|
-
I->>F: List
|
|
213
|
-
|
|
264
|
+
I->>F: List JSONL files (Claude Code, Cursor)
|
|
265
|
+
I->>A: Discover sessions (OpenCode, Cline, Continue.dev, Aider)
|
|
266
|
+
loop Each JSONL file
|
|
214
267
|
alt Mtime changed
|
|
215
268
|
I->>P: parse(file)
|
|
216
269
|
P->>F: Read JSONL
|
|
@@ -220,6 +273,10 @@ sequenceDiagram
|
|
|
220
273
|
P-->>I: Cached entries
|
|
221
274
|
end
|
|
222
275
|
end
|
|
276
|
+
loop Each adapter session
|
|
277
|
+
I->>A: parseSession(descriptor)
|
|
278
|
+
A-->>I: Normalized entries
|
|
279
|
+
end
|
|
223
280
|
I->>I: Rebuild index
|
|
224
281
|
end
|
|
225
282
|
I-->>S: Ranked results
|
|
@@ -230,7 +287,7 @@ sequenceDiagram
|
|
|
230
287
|
|
|
231
288
|
```mermaid
|
|
232
289
|
sequenceDiagram
|
|
233
|
-
participant C as
|
|
290
|
+
participant C as Agent Session
|
|
234
291
|
participant S as MCP Server
|
|
235
292
|
participant G as Git
|
|
236
293
|
participant F as File System
|
package/docs/DASHBOARD.md
CHANGED
|
@@ -45,15 +45,16 @@ Click a result to open the session in the side panel.
|
|
|
45
45
|
|
|
46
46
|
## Sessions Tab
|
|
47
47
|
|
|
48
|
-
Lists all
|
|
48
|
+
Lists sessions from all detected AI coding tools with metadata:
|
|
49
49
|
|
|
50
|
+
- Source tool indicator (Claude Code, Cursor, OpenCode, Cline, Continue.dev, Aider)
|
|
50
51
|
- Project name
|
|
51
|
-
- Git branch
|
|
52
|
+
- Git branch (when available)
|
|
52
53
|
- Message count
|
|
53
54
|
- Date
|
|
54
55
|
- Preview of first user message
|
|
55
56
|
|
|
56
|
-
Project filter dropdown at the top.
|
|
57
|
+
Project filter dropdown at the top. Sessions from all tools are merged into a single unified list.
|
|
57
58
|
|
|
58
59
|
Click a session to open the side panel with the full conversation rendered as chat bubbles.
|
|
59
60
|
|
package/docs/SETUP.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Setup Guide
|
|
2
2
|
|
|
3
|
-
Detailed instructions for installing, configuring, and integrating agent-knowledge with any MCP
|
|
3
|
+
Detailed instructions for installing, configuring, and integrating agent-knowledge with any MCP-compatible AI agent or coding assistant.
|
|
4
4
|
|
|
5
5
|
## Table of Contents
|
|
6
6
|
|
|
@@ -20,6 +20,7 @@ Detailed instructions for installing, configuring, and integrating agent-knowled
|
|
|
20
20
|
- [Environment Variables](#environment-variables)
|
|
21
21
|
- [Dashboard](#dashboard)
|
|
22
22
|
- [Multi-Machine Sync](#multi-machine-sync)
|
|
23
|
+
- [Session Sources](#session-sources)
|
|
23
24
|
- [Session Auto-Distillation](#session-auto-distillation)
|
|
24
25
|
- [Troubleshooting](#troubleshooting)
|
|
25
26
|
|
|
@@ -64,7 +65,7 @@ agent-knowledge works with any MCP client (stdio) or HTTP client (REST API). Pic
|
|
|
64
65
|
|
|
65
66
|
```bash
|
|
66
67
|
claude mcp add agent-knowledge -s user \
|
|
67
|
-
-e KNOWLEDGE_MEMORY_DIR="$HOME/
|
|
68
|
+
-e KNOWLEDGE_MEMORY_DIR="$HOME/agent-knowledge" \
|
|
68
69
|
-- node /path/to/agent-knowledge/dist/index.js
|
|
69
70
|
```
|
|
70
71
|
|
|
@@ -99,7 +100,7 @@ claude mcp list
|
|
|
99
100
|
"type": "local",
|
|
100
101
|
"command": ["node", "/absolute/path/to/agent-knowledge/dist/index.js"],
|
|
101
102
|
"environment": {
|
|
102
|
-
"KNOWLEDGE_MEMORY_DIR": "/home/you/
|
|
103
|
+
"KNOWLEDGE_MEMORY_DIR": "/home/you/agent-knowledge",
|
|
103
104
|
"KNOWLEDGE_PORT": "3423"
|
|
104
105
|
}
|
|
105
106
|
}
|
|
@@ -118,7 +119,7 @@ claude mcp list
|
|
|
118
119
|
"command": "node",
|
|
119
120
|
"args": ["/absolute/path/to/agent-knowledge/dist/index.js"],
|
|
120
121
|
"env": {
|
|
121
|
-
"KNOWLEDGE_MEMORY_DIR": "/home/you/
|
|
122
|
+
"KNOWLEDGE_MEMORY_DIR": "/home/you/agent-knowledge",
|
|
122
123
|
"KNOWLEDGE_PORT": "3423"
|
|
123
124
|
}
|
|
124
125
|
}
|
|
@@ -137,7 +138,7 @@ claude mcp list
|
|
|
137
138
|
"command": "node",
|
|
138
139
|
"args": ["/absolute/path/to/agent-knowledge/dist/index.js"],
|
|
139
140
|
"env": {
|
|
140
|
-
"KNOWLEDGE_MEMORY_DIR": "/home/you/
|
|
141
|
+
"KNOWLEDGE_MEMORY_DIR": "/home/you/agent-knowledge",
|
|
141
142
|
"KNOWLEDGE_PORT": "3423"
|
|
142
143
|
}
|
|
143
144
|
}
|
|
@@ -255,10 +256,10 @@ The knowledge base is a git repository with categorized markdown files.
|
|
|
255
256
|
|
|
256
257
|
```bash
|
|
257
258
|
# Clone existing
|
|
258
|
-
git clone https://your-git-host/
|
|
259
|
+
git clone https://your-git-host/agent-knowledge.git ~/agent-knowledge
|
|
259
260
|
|
|
260
261
|
# Or create new
|
|
261
|
-
mkdir -p ~/
|
|
262
|
+
mkdir -p ~/agent-knowledge && cd ~/agent-knowledge && git init
|
|
262
263
|
mkdir projects people decisions workflows notes
|
|
263
264
|
git add . && git commit -m "Initialize knowledge base"
|
|
264
265
|
git remote add origin <your-remote-url>
|
|
@@ -268,7 +269,7 @@ git push -u origin main
|
|
|
268
269
|
### Directory structure
|
|
269
270
|
|
|
270
271
|
```
|
|
271
|
-
~/
|
|
272
|
+
~/agent-knowledge/
|
|
272
273
|
projects/ # Project context, architecture, tech stacks
|
|
273
274
|
people/ # Team members, contacts, preferences
|
|
274
275
|
decisions/ # Architecture decisions, trade-offs, rationale
|
|
@@ -294,33 +295,34 @@ Architecture notes, deployment info, etc.
|
|
|
294
295
|
|
|
295
296
|
## Environment Variables
|
|
296
297
|
|
|
297
|
-
| Variable
|
|
298
|
-
|
|
|
299
|
-
| `KNOWLEDGE_MEMORY_DIR`
|
|
300
|
-
| `
|
|
301
|
-
| `
|
|
302
|
-
| `
|
|
303
|
-
| `
|
|
304
|
-
| `
|
|
305
|
-
| `
|
|
306
|
-
| `
|
|
307
|
-
| `
|
|
308
|
-
| `
|
|
309
|
-
| `
|
|
310
|
-
| `
|
|
311
|
-
| `
|
|
312
|
-
| `
|
|
298
|
+
| Variable | Default | Description |
|
|
299
|
+
| --------------------------------------------------- | ------------------- | -------------------------------------------------------------- |
|
|
300
|
+
| `KNOWLEDGE_MEMORY_DIR` | `~/agent-knowledge` | Path to git-synced knowledge base |
|
|
301
|
+
| `KNOWLEDGE_DATA_DIR` | `~/.claude` | Primary session data directory (Claude Code JSONL) |
|
|
302
|
+
| `EXTRA_SESSION_ROOTS` | -- | Additional session directories, comma-separated |
|
|
303
|
+
| `OPENCODE_DATA_DIR` | (platform default) | Override OpenCode data dir (default `~/.local/share/opencode`) |
|
|
304
|
+
| `KNOWLEDGE_PORT` | `3423` | Dashboard HTTP/WebSocket port |
|
|
305
|
+
| `KNOWLEDGE_EMBEDDING_PROVIDER` | `local` | Embedding provider (local, openai, claude, gemini) |
|
|
306
|
+
| `KNOWLEDGE_EMBEDDING_ALPHA` | `0.5` | Blend weight for semantic vs TF-IDF search (0-1) |
|
|
307
|
+
| `KNOWLEDGE_EMBEDDING_IDLE_TIMEOUT` | — | Idle timeout for embedding worker (ms) |
|
|
308
|
+
| `KNOWLEDGE_EMBEDDING_THREADS` | — | Number of ONNX threads for local embeddings |
|
|
309
|
+
| `KNOWLEDGE_EMBEDDING_MODEL` | — | Model name for embedding provider |
|
|
310
|
+
| `KNOWLEDGE_GIT_URL` | — | Remote git URL for knowledge base sync |
|
|
311
|
+
| `KNOWLEDGE_AUTO_DISTILL` | — | Enable auto-distillation of sessions (true/false) |
|
|
312
|
+
| `KNOWLEDGE_OPENAI_API_KEY` / `OPENAI_API_KEY` | — | API key for OpenAI embeddings |
|
|
313
|
+
| `KNOWLEDGE_ANTHROPIC_API_KEY` / `ANTHROPIC_API_KEY` | — | API key for Claude/Voyage embeddings |
|
|
314
|
+
| `KNOWLEDGE_GEMINI_API_KEY` / `GEMINI_API_KEY` | — | API key for Gemini embeddings |
|
|
313
315
|
|
|
314
316
|
Set in your shell profile or pass via MCP config:
|
|
315
317
|
|
|
316
318
|
```bash
|
|
317
|
-
export KNOWLEDGE_MEMORY_DIR="$HOME/
|
|
319
|
+
export KNOWLEDGE_MEMORY_DIR="$HOME/agent-knowledge"
|
|
318
320
|
```
|
|
319
321
|
|
|
320
322
|
On Windows (PowerShell):
|
|
321
323
|
|
|
322
324
|
```powershell
|
|
323
|
-
$env:KNOWLEDGE_MEMORY_DIR = "$env:USERPROFILE\
|
|
325
|
+
$env:KNOWLEDGE_MEMORY_DIR = "$env:USERPROFILE\agent-knowledge"
|
|
324
326
|
```
|
|
325
327
|
|
|
326
328
|
---
|
|
@@ -346,14 +348,37 @@ Live reload: edit files in `src/ui/` and the browser refreshes automatically.
|
|
|
346
348
|
Ensure git credentials are configured (SSH key or credential helper):
|
|
347
349
|
|
|
348
350
|
```bash
|
|
349
|
-
cd ~/
|
|
351
|
+
cd ~/agent-knowledge && git pull && git push # Should work without prompts
|
|
350
352
|
```
|
|
351
353
|
|
|
352
354
|
---
|
|
353
355
|
|
|
356
|
+
## Session Sources
|
|
357
|
+
|
|
358
|
+
agent-knowledge auto-discovers sessions from all major AI coding assistants. If a tool is installed on your machine, its sessions appear automatically in search results and the dashboard Sessions tab.
|
|
359
|
+
|
|
360
|
+
| Tool | Format | Auto-detected path | Override |
|
|
361
|
+
| ---------------- | -------------- | --------------------------------------------------------------- | --------------------- |
|
|
362
|
+
| **Claude Code** | JSONL | `$KNOWLEDGE_DATA_DIR/projects/` | `KNOWLEDGE_DATA_DIR` |
|
|
363
|
+
| **Cursor** | JSONL | `~/.cursor/projects/*/agent-transcripts/` | `EXTRA_SESSION_ROOTS` |
|
|
364
|
+
| **OpenCode** | SQLite | `~/.local/share/opencode/opencode.db` | `OPENCODE_DATA_DIR` |
|
|
365
|
+
| **Cline** | JSON | VS Code globalStorage `saoudrizwan.claude-dev/tasks/` | -- |
|
|
366
|
+
| **Continue.dev** | JSON | `~/.continue/sessions/` | -- |
|
|
367
|
+
| **Aider** | Markdown/JSONL | `.aider.chat.history.md` / `.aider.llm.history` in project dirs | -- |
|
|
368
|
+
|
|
369
|
+
### Adding extra session directories
|
|
370
|
+
|
|
371
|
+
Use the `EXTRA_SESSION_ROOTS` environment variable to add session directories that are not auto-detected:
|
|
372
|
+
|
|
373
|
+
```bash
|
|
374
|
+
export EXTRA_SESSION_ROOTS="/path/to/custom/sessions,/another/path"
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
Each path is scanned for JSONL files or Cursor-style `agent-transcripts/` subdirectories.
|
|
378
|
+
|
|
354
379
|
## Session Auto-Distillation
|
|
355
380
|
|
|
356
|
-
agent-knowledge can auto-distill session transcripts into knowledge entries.
|
|
381
|
+
agent-knowledge can auto-distill session transcripts into knowledge entries. Auto-distillation reads from all discovered session sources and works with any tool whose sessions are available through the adapter system.
|
|
357
382
|
|
|
358
383
|
To manually save knowledge from any client, use `knowledge_write`.
|
|
359
384
|
|
|
@@ -377,7 +402,7 @@ export KNOWLEDGE_PORT=3424
|
|
|
377
402
|
Verify credentials work manually:
|
|
378
403
|
|
|
379
404
|
```bash
|
|
380
|
-
cd ~/
|
|
405
|
+
cd ~/agent-knowledge && git push
|
|
381
406
|
```
|
|
382
407
|
|
|
383
408
|
Set up SSH keys or a credential helper if prompted.
|
|
@@ -390,18 +415,39 @@ Set up SSH keys or a credential helper if prompted.
|
|
|
390
415
|
|
|
391
416
|
### No session results
|
|
392
417
|
|
|
393
|
-
Verify session
|
|
418
|
+
Verify session data exists for at least one supported tool:
|
|
394
419
|
|
|
395
420
|
```bash
|
|
396
|
-
|
|
421
|
+
# Claude Code (JSONL)
|
|
422
|
+
ls ~/.claude/projects/
|
|
423
|
+
|
|
424
|
+
# Cursor (JSONL)
|
|
425
|
+
ls ~/.cursor/projects/*/agent-transcripts/
|
|
426
|
+
|
|
427
|
+
# OpenCode (SQLite)
|
|
428
|
+
ls ~/.local/share/opencode/opencode.db
|
|
429
|
+
|
|
430
|
+
# Cline (JSON) — path varies by platform
|
|
431
|
+
# Windows: %APPDATA%/Code/User/globalStorage/saoudrizwan.claude-dev/tasks/
|
|
432
|
+
# macOS: ~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/tasks/
|
|
433
|
+
# Linux: ~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/tasks/
|
|
434
|
+
|
|
435
|
+
# Continue.dev (JSON)
|
|
436
|
+
ls ~/.continue/sessions/
|
|
437
|
+
|
|
438
|
+
# Aider (Markdown) — check project directories
|
|
439
|
+
ls ~/projects/*/.aider.chat.history.md
|
|
397
440
|
```
|
|
398
441
|
|
|
442
|
+
If your session data is in a non-standard location, use `EXTRA_SESSION_ROOTS` to point to it.
|
|
443
|
+
|
|
399
444
|
## Client Comparison
|
|
400
445
|
|
|
401
|
-
| Feature | Claude Code | OpenCode |
|
|
402
|
-
| -------------------- | ----------- | ------------- | ------------ | -------------- |
|
|
403
|
-
| MCP stdio transport | Yes | Yes | Yes | Yes |
|
|
404
|
-
|
|
|
405
|
-
|
|
|
406
|
-
|
|
|
407
|
-
|
|
|
446
|
+
| Feature | Claude Code | Cursor | OpenCode | Cline | Continue.dev | Aider | Windsurf |
|
|
447
|
+
| -------------------- | ----------- | ------------ | ------------- | ---------- | ------------ | -------------- | -------------- |
|
|
448
|
+
| MCP stdio transport | Yes | Yes | Yes | Yes | Yes | -- | Yes |
|
|
449
|
+
| Session reading | Yes (JSONL) | Yes (JSONL) | Yes (SQLite) | Yes (JSON) | Yes (JSON) | Yes (MD/JSONL) | -- |
|
|
450
|
+
| Lifecycle hooks | Yes (JSON) | No | Yes (plugins) | No | No | -- | No |
|
|
451
|
+
| Session auto-distill | Yes | Yes | Yes | Yes | Yes | Yes | -- |
|
|
452
|
+
| System prompt file | CLAUDE.md | .cursorrules | AGENTS.md | -- | -- | -- | .windsurfrules |
|
|
453
|
+
| REST API fallback | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agent-knowledge",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Cross-session memory and recall for AI agents — git-synced knowledge base, hybrid semantic+TF-IDF search, auto-distillation with secrets scrubbing",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"semantic-search",
|
|
44
44
|
"model-context-protocol",
|
|
45
45
|
"ai-agents",
|
|
46
|
-
"
|
|
46
|
+
"coding-assistants"
|
|
47
47
|
],
|
|
48
48
|
"author": "keshrath",
|
|
49
49
|
"license": "MIT",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/embeddings/claude.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAQpD;;;;GAIG;AACH,qBAAa,uBAAwB,YAAW,iBAAiB;IAC/D,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM;IAMlD,6EAA6E;IACvE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAYjD,2BAA2B;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAK/C,6DAA6D;IACvD,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;YASvB,iBAAiB;CAqChC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/embeddings/claude.ts"],"names":[],"mappings":"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"}
|