causantic 0.5.6 → 0.6.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 +2 -2
- package/dist/cli/skill-templates.d.ts.map +1 -1
- package/dist/cli/skill-templates.js +18 -9
- package/dist/cli/skill-templates.js.map +1 -1
- package/dist/parser/chunker.d.ts +1 -1
- package/dist/parser/chunker.d.ts.map +1 -1
- package/dist/parser/chunker.js +8 -7
- package/dist/parser/chunker.js.map +1 -1
- package/dist/storage/chunk-store.js +2 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -165,7 +165,7 @@ The MCP server exposes nine tools:
|
|
|
165
165
|
| `predict` | Forward episodic — "what's likely next?" Seeds → forward chain walk → ordered narrative. Includes chain walk diagnostics on fallback. |
|
|
166
166
|
| `list-projects` | Discover available projects with chunk counts and date ranges. |
|
|
167
167
|
| `list-sessions` | Browse sessions for a project with time filtering. |
|
|
168
|
-
| `reconstruct` | Rebuild session context chronologically — "what did I work on yesterday?"
|
|
168
|
+
| `reconstruct` | Rebuild session context chronologically — "what did I work on yesterday?" Call with just `project` for recent history. |
|
|
169
169
|
| `hook-status` | Check when hooks last ran and whether they succeeded. |
|
|
170
170
|
| `stats` | Memory statistics — version, chunk/edge/cluster counts, per-project breakdowns. |
|
|
171
171
|
| `forget` | Delete chunks by project, time range, session, or semantic query. Defaults to dry-run preview. |
|
|
@@ -199,7 +199,7 @@ Causantic installs 14 Claude Code slash commands (via `npx causantic init`) for
|
|
|
199
199
|
| `/causantic-explain [question]` | Answer "why" questions using memory + codebase (why does X work this way?) |
|
|
200
200
|
| `/causantic-debug [error]` | Search for prior encounters with an error (auto-extracts from conversation if no argument) |
|
|
201
201
|
| `/causantic-resume` | Resume interrupted work — start-of-session briefing |
|
|
202
|
-
| `/causantic-reconstruct [time]` | Replay a past session chronologically
|
|
202
|
+
| `/causantic-reconstruct [time]` | Replay a past session chronologically, or get recent history (no args = timeline mode) |
|
|
203
203
|
| `/causantic-summary [time]` | Factual recap of what was done across recent sessions |
|
|
204
204
|
| `/causantic-list-projects` | Discover available projects in memory |
|
|
205
205
|
| `/causantic-status` | Check system health and memory statistics |
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-templates.d.ts","sourceRoot":"","sources":["../../src/cli/skill-templates.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,aAAa;IAC5B,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,gBAAgB,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"skill-templates.d.ts","sourceRoot":"","sources":["../../src/cli/skill-templates.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,aAAa;IAC5B,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,gBAAgB,EAAE,aAAa,EAuyC3C,CAAC;AAEF;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAoGhD"}
|
|
@@ -9,18 +9,18 @@ export const CAUSANTIC_SKILLS = [
|
|
|
9
9
|
dirName: 'causantic-recall',
|
|
10
10
|
content: `---
|
|
11
11
|
name: causantic-recall
|
|
12
|
-
description: "
|
|
12
|
+
description: "Walk causal chains in Causantic memory to reconstruct how something happened. Use for topic-specific questions like 'how did we solve X?' or 'what led to this decision?' — NOT for 'what did we do last/recently' (use reconstruct or resume for that)."
|
|
13
13
|
argument-hint: [query]
|
|
14
14
|
---
|
|
15
15
|
|
|
16
16
|
# Recall Past Context
|
|
17
17
|
|
|
18
|
-
Use the \`recall\` MCP tool from \`causantic\` to
|
|
18
|
+
Use the \`recall\` MCP tool from \`causantic\` to trace causal chains for specific topics or decisions.
|
|
19
19
|
|
|
20
20
|
## Usage
|
|
21
21
|
|
|
22
22
|
\`\`\`
|
|
23
|
-
/causantic-recall
|
|
23
|
+
/causantic-recall how did we solve the auth bug?
|
|
24
24
|
/causantic-recall authentication implementation decisions
|
|
25
25
|
/causantic-recall that migration bug we fixed last week
|
|
26
26
|
\`\`\`
|
|
@@ -29,23 +29,28 @@ Use the \`recall\` MCP tool from \`causantic\` to look up specific context from
|
|
|
29
29
|
|
|
30
30
|
Pass these to the \`recall\` MCP tool:
|
|
31
31
|
|
|
32
|
-
- **query** (required):
|
|
32
|
+
- **query** (required): A specific topic, decision, or problem to trace
|
|
33
33
|
- **project**: Filter to a specific project slug (use \`/causantic-list-projects\` to discover names)
|
|
34
34
|
|
|
35
35
|
## When to Use
|
|
36
36
|
|
|
37
|
-
- User asks
|
|
38
|
-
-
|
|
37
|
+
- User asks HOW something was solved or WHY a decision was made
|
|
38
|
+
- Looking up a specific topic, pattern, or decision from past sessions
|
|
39
39
|
- Encountering an error or pattern that might have been solved before
|
|
40
|
-
- User references something from a previous session
|
|
41
40
|
- Before saying "I don't have context from previous sessions" — always try recall first
|
|
42
41
|
|
|
42
|
+
## When NOT to Use
|
|
43
|
+
|
|
44
|
+
- **"What did we do last?"** / **"What were we working on?"** / **"Show me recent work"** → use \`reconstruct\` or \`resume\` instead (recall is semantic, not time-ordered)
|
|
45
|
+
- **"Where did I leave off?"** → use \`resume\`
|
|
46
|
+
|
|
43
47
|
## Guidelines
|
|
44
48
|
|
|
45
49
|
- \`recall\` walks causal chains to reconstruct narrative — use it when you need the story of how something happened
|
|
50
|
+
- \`recall\` is semantic, NOT time-ordered — it returns whatever matches best regardless of recency
|
|
46
51
|
- \`search\` ranks results by semantic relevance — use it for broad discovery ("what do I know about X?")
|
|
52
|
+
- For temporal queries ("recently", "last session", "yesterday"), always use \`reconstruct\` or \`resume\`
|
|
47
53
|
- Use the \`project\` parameter to scope results to the current project when relevant
|
|
48
|
-
- Combine both: \`search\` to discover, then \`recall\` to fill in the narrative
|
|
49
54
|
`,
|
|
50
55
|
},
|
|
51
56
|
{
|
|
@@ -1362,12 +1367,16 @@ Long-term memory is available via the \`causantic\` MCP server.
|
|
|
1362
1367
|
| User intent | Skill |
|
|
1363
1368
|
|-------------|-------|
|
|
1364
1369
|
| "What do I know about X?" | \`search\` |
|
|
1365
|
-
| "How did we solve X?" | \`recall\` |
|
|
1370
|
+
| "How did we solve X?" / "What led to this decision?" | \`recall\` |
|
|
1366
1371
|
| "Why does X work this way?" | \`explain\` |
|
|
1367
1372
|
| "What might be relevant?" | \`predict\` |
|
|
1368
1373
|
| "What happened recently?" / "Show me recent work" | \`reconstruct\` |
|
|
1374
|
+
| "What were we looking at last?" / "What did we do?" | \`reconstruct\` or \`resume\` |
|
|
1375
|
+
| "Where did I leave off?" | \`resume\` |
|
|
1369
1376
|
| "Forget/delete memory about X" | \`forget\` |
|
|
1370
1377
|
|
|
1378
|
+
**Key distinction:** \`recall\` is semantic (finds best topic match regardless of time). \`reconstruct\`/\`resume\` are time-ordered (finds most recent work). For any question about "last", "recent", or "latest" → use \`reconstruct\` or \`resume\`, never \`recall\`.
|
|
1379
|
+
|
|
1371
1380
|
### Proactive Memory Usage
|
|
1372
1381
|
|
|
1373
1382
|
**Check memory automatically (no skill needed) when:**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-templates.js","sourceRoot":"","sources":["../../src/cli/skill-templates.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,MAAM,CAAC,MAAM,gBAAgB,GAAoB;IAC/C;QACE,OAAO,EAAE,kBAAkB;QAC3B,OAAO,EAAE
|
|
1
|
+
{"version":3,"file":"skill-templates.js","sourceRoot":"","sources":["../../src/cli/skill-templates.ts"],"names":[],"mappings":"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"}
|
package/dist/parser/chunker.d.ts
CHANGED
|
@@ -30,6 +30,6 @@ export declare function renderTurn(turn: Turn, mode?: RenderMode, includeThinkin
|
|
|
30
30
|
* Chunk turns into embeddable text chunks.
|
|
31
31
|
*/
|
|
32
32
|
export declare function chunkTurns(turns: Turn[], options: ChunkerOptions): Chunk[];
|
|
33
|
-
/**
|
|
33
|
+
/** @deprecated No-op, kept for backwards compatibility. */
|
|
34
34
|
export declare function resetChunkCounter(): void;
|
|
35
35
|
//# sourceMappingURL=chunker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunker.d.ts","sourceRoot":"","sources":["../../src/parser/chunker.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"chunker.d.ts","sourceRoot":"","sources":["../../src/parser/chunker.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EACV,KAAK,EAEL,UAAU,EAIV,IAAI,EACL,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,cAAc;IAC7B,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,oCAAoC;IACpC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,qCAAqC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,IAAI,EACV,IAAI,GAAE,UAAmB,EACzB,eAAe,GAAE,OAAc,GAC9B,MAAM,CAsCR;AAuFD;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,cAAc,GAAG,KAAK,EAAE,CAoF1E;AAcD,2DAA2D;AAC3D,wBAAgB,iBAAiB,IAAI,IAAI,CAAG"}
|
package/dist/parser/chunker.js
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* 3. Trivially small turns merged with neighbors
|
|
8
8
|
* 4. Text rendering with structure markers for embedding
|
|
9
9
|
*/
|
|
10
|
+
import { createHash } from 'crypto';
|
|
10
11
|
import { approximateTokens } from '../utils/token-counter.js';
|
|
11
12
|
/**
|
|
12
13
|
* Render a turn to flat text with structure markers.
|
|
@@ -204,17 +205,17 @@ export function chunkTurns(turns, options) {
|
|
|
204
205
|
flushBuffer();
|
|
205
206
|
return chunks;
|
|
206
207
|
}
|
|
207
|
-
let chunkCounter = 0;
|
|
208
208
|
function makeChunk(text, metadata) {
|
|
209
|
-
|
|
209
|
+
const hash = createHash('sha256')
|
|
210
|
+
.update(`${metadata.sessionId}:${metadata.turnIndices.join(',')}:${text}`)
|
|
211
|
+
.digest('hex')
|
|
212
|
+
.slice(0, 16);
|
|
210
213
|
return {
|
|
211
|
-
id: `${metadata.sessionId}
|
|
214
|
+
id: `${metadata.sessionId}-${hash}`,
|
|
212
215
|
text,
|
|
213
216
|
metadata,
|
|
214
217
|
};
|
|
215
218
|
}
|
|
216
|
-
/**
|
|
217
|
-
export function resetChunkCounter() {
|
|
218
|
-
chunkCounter = 0;
|
|
219
|
-
}
|
|
219
|
+
/** @deprecated No-op, kept for backwards compatibility. */
|
|
220
|
+
export function resetChunkCounter() { }
|
|
220
221
|
//# sourceMappingURL=chunker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunker.js","sourceRoot":"","sources":["../../src/parser/chunker.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"chunker.js","sourceRoot":"","sources":["../../src/parser/chunker.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAUpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAgB9D;;GAEG;AACH,MAAM,UAAU,UAAU,CACxB,IAAU,EACV,OAAmB,MAAM,EACzB,kBAA2B,IAAI;IAE/B,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,eAAe;IACf,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,oBAAoB;IACpB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QACzC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,UAAU;gBACb,IAAI,eAAe,EAAE,CAAC;oBACpB,KAAK,CAAC,IAAI,CAAC,eAAgB,KAAuB,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACjE,CAAC;gBACD,MAAM;YACR,KAAK,MAAM;gBACT,KAAK,CAAC,IAAI,CAAC,gBAAiB,KAAmB,CAAC,IAAI,EAAE,CAAC,CAAC;gBACxD,MAAM;YACR,KAAK,UAAU;gBACb,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;oBACpB,MAAM,EAAE,GAAG,KAAqB,CAAC;oBACjC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,MAAM,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC7D,CAAC;gBACD,MAAM;QACV,CAAC;IACH,CAAC;IAED,eAAe;IACf,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;QAC/C,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACpC,IAAI,IAAI,KAAK,cAAc,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,CAAC;gBAAE,SAAS;YAClE,MAAM,aAAa,GAAG,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACrD,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,MAAM,aAAa,EAAE,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,kBAAkB,CAAC,EAAgB;IAC1C,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;IACvB,kBAAkB;IAClB,IAAI,SAAS,IAAI,KAAK;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrD,IAAI,SAAS,IAAI,KAAK;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrD,IAAI,WAAW,IAAI,KAAK;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACzD,IAAI,OAAO,IAAI,KAAK;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjD,IAAI,KAAK,IAAI,KAAK;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7C,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,cAAc,CAAC,IAAY,EAAE,QAAgB;IACpD,IAAI,IAAI,CAAC,MAAM,IAAI,QAAQ;QAAE,OAAO,IAAI,CAAC;IACzC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,kBAAkB,CAAC;AACtD,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,IAAU;IACjC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QACzC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAI,KAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACxD,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CAAC,IAAY,EAAE,SAAiB;IACxD,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,MAAM,IAAI,SAAS;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvC,yCAAyC;IACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACnF,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACzB,wDAAwD;QACxD,OAAO,iBAAiB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,OAAO,GAAG,EAAE,CAAC;IAEjB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;QAChE,IAAI,iBAAiB,CAAC,QAAQ,CAAC,GAAG,SAAS,IAAI,OAAO,EAAE,CAAC;YACvD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACrB,OAAO,GAAG,OAAO,CAAC;QACpB,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,QAAQ,CAAC;QACrB,CAAC;IACH,CAAC;IACD,IAAI,OAAO;QAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAElC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY,EAAE,SAAiB;IACxD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,OAAO,GAAG,EAAE,CAAC;IAEjB,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1D,IAAI,iBAAiB,CAAC,QAAQ,CAAC,GAAG,SAAS,IAAI,OAAO,EAAE,CAAC;YACvD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACrB,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,QAAQ,CAAC;QACrB,CAAC;IACH,CAAC;IACD,IAAI,OAAO;QAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAElC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,KAAa,EAAE,OAAuB;IAC/D,MAAM,EACJ,SAAS,GAAG,IAAI,EAChB,SAAS,GAAG,EAAE,EACd,eAAe,GAAG,IAAI,EACtB,UAAU,GAAG,MAAM,EACnB,SAAS,EACT,WAAW,GACZ,GAAG,OAAO,CAAC;IAEZ,+BAA+B;IAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACpC,IAAI;QACJ,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,eAAe,CAAC;KACpD,CAAC,CAAC,CAAC;IAEJ,oDAAoD;IACpD,MAAM,MAAM,GAAY,EAAE,CAAC;IAC3B,IAAI,WAAW,GAAoC,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IAE3E,SAAS,WAAW;QAClB,IAAI,CAAC,WAAW,CAAC,IAAI;YAAE,OAAO;QAE9B,MAAM,KAAK,GAAG,iBAAiB,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC7D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC1D,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAEjE,MAAM,CAAC,IAAI,CACT,SAAS,CAAC,IAAI,EAAE;gBACd,SAAS;gBACT,WAAW;gBACX,WAAW;gBACX,SAAS,EAAE,SAAS,CAAC,SAAS;gBAC9B,OAAO,EAAE,QAAQ,CAAC,SAAS;gBAC3B,cAAc,EAAE,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC7E,YAAY,EAAE,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC/E,WAAW,EAAE,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;gBACzD,UAAU;gBACV,YAAY,EAAE,iBAAiB,CAAC,IAAI,CAAC;aACtC,CAAC,CACH,CAAC;QACJ,CAAC;QAED,WAAW,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IACxC,CAAC;IAED,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,QAAQ,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAEvC,IAAI,MAAM,GAAG,SAAS,EAAE,CAAC;YACvB,oBAAoB;YACpB,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YAC5E,IAAI,iBAAiB,CAAC,QAAQ,CAAC,GAAG,SAAS,EAAE,CAAC;gBAC5C,WAAW,EAAE,CAAC;gBACd,WAAW,GAAG,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACN,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC7B,WAAW,CAAC,IAAI,GAAG,QAAQ,CAAC;YAC9B,CAAC;QACH,CAAC;aAAM,IAAI,MAAM,GAAG,SAAS,EAAE,CAAC;YAC9B,2CAA2C;YAC3C,WAAW,EAAE,CAAC;YACd,WAAW,GAAG,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;YACtC,WAAW,EAAE,CAAC;QAChB,CAAC;aAAM,CAAC;YACN,oBAAoB;YACpB,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC;gBACrB,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;gBAClD,IAAI,iBAAiB,CAAC,QAAQ,CAAC,IAAI,SAAS,EAAE,CAAC;oBAC7C,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC7B,WAAW,CAAC,IAAI,GAAG,QAAQ,CAAC;oBAC5B,SAAS;gBACX,CAAC;gBACD,WAAW,EAAE,CAAC;YAChB,CAAC;YACD,WAAW,GAAG,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;QACxC,CAAC;IACH,CAAC;IAED,WAAW,EAAE,CAAC;IAEd,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,SAAS,CAAC,IAAY,EAAE,QAAuB;IACtD,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC;SAC9B,MAAM,CAAC,GAAG,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;SACzE,MAAM,CAAC,KAAK,CAAC;SACb,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAChB,OAAO;QACL,EAAE,EAAE,GAAG,QAAQ,CAAC,SAAS,IAAI,IAAI,EAAE;QACnC,IAAI;QACJ,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,iBAAiB,KAAU,CAAC"}
|
|
@@ -11,7 +11,7 @@ export function insertChunk(chunk) {
|
|
|
11
11
|
const db = getDb();
|
|
12
12
|
const id = chunk.id || generateId();
|
|
13
13
|
const stmt = db.prepare(`
|
|
14
|
-
INSERT INTO chunks (
|
|
14
|
+
INSERT OR IGNORE INTO chunks (
|
|
15
15
|
id, session_id, session_slug, turn_indices, start_time, end_time,
|
|
16
16
|
content, code_block_count, tool_use_count, approx_tokens,
|
|
17
17
|
agent_id, spawn_depth, project_path
|
|
@@ -28,7 +28,7 @@ export function insertChunks(chunks) {
|
|
|
28
28
|
const db = getDb();
|
|
29
29
|
const ids = [];
|
|
30
30
|
const stmt = db.prepare(`
|
|
31
|
-
INSERT INTO chunks (
|
|
31
|
+
INSERT OR IGNORE INTO chunks (
|
|
32
32
|
id, session_id, session_slug, turn_indices, start_time, end_time,
|
|
33
33
|
content, code_block_count, tool_use_count, approx_tokens,
|
|
34
34
|
agent_id, spawn_depth, project_path
|