kratos-memory 1.6.1 → 1.8.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.
Files changed (41) hide show
  1. package/AGENTS.md +4 -0
  2. package/README.md +33 -7
  3. package/dist/cli/capture-handler.d.ts +5 -0
  4. package/dist/cli/capture-handler.d.ts.map +1 -1
  5. package/dist/cli/capture-handler.js +39 -0
  6. package/dist/cli/capture-handler.js.map +1 -1
  7. package/dist/cli/commands/ask.d.ts.map +1 -1
  8. package/dist/cli/commands/ask.js +126 -121
  9. package/dist/cli/commands/ask.js.map +1 -1
  10. package/dist/cli/commands/capture.d.ts.map +1 -1
  11. package/dist/cli/commands/capture.js +3 -0
  12. package/dist/cli/commands/capture.js.map +1 -1
  13. package/dist/cli/commands/context.d.ts +11 -0
  14. package/dist/cli/commands/context.d.ts.map +1 -0
  15. package/dist/cli/commands/context.js +123 -0
  16. package/dist/cli/commands/context.js.map +1 -0
  17. package/dist/cli/commands/hooks.d.ts.map +1 -1
  18. package/dist/cli/commands/hooks.js +239 -62
  19. package/dist/cli/commands/hooks.js.map +1 -1
  20. package/dist/cli/commands/summary.d.ts.map +1 -1
  21. package/dist/cli/commands/summary.js +44 -0
  22. package/dist/cli/commands/summary.js.map +1 -1
  23. package/dist/cli/index.js +11 -0
  24. package/dist/cli/index.js.map +1 -1
  25. package/dist/memory-server/database.d.ts +0 -1
  26. package/dist/memory-server/database.d.ts.map +1 -1
  27. package/dist/memory-server/database.js +11 -35
  28. package/dist/memory-server/database.js.map +1 -1
  29. package/package.json +2 -2
  30. package/dist/memory-server/concept-store-enhanced.d.ts +0 -88
  31. package/dist/memory-server/concept-store-enhanced.d.ts.map +0 -1
  32. package/dist/memory-server/concept-store-enhanced.js +0 -392
  33. package/dist/memory-server/concept-store-enhanced.js.map +0 -1
  34. package/dist/memory-server/concept-store.d.ts +0 -58
  35. package/dist/memory-server/concept-store.d.ts.map +0 -1
  36. package/dist/memory-server/concept-store.js +0 -329
  37. package/dist/memory-server/concept-store.js.map +0 -1
  38. package/dist/memory-server/context-broker.d.ts +0 -63
  39. package/dist/memory-server/context-broker.d.ts.map +0 -1
  40. package/dist/memory-server/context-broker.js +0 -340
  41. package/dist/memory-server/context-broker.js.map +0 -1
package/AGENTS.md CHANGED
@@ -3,6 +3,7 @@
3
3
  This project uses Kratos CLI for persistent memory across coding sessions.
4
4
 
5
5
  ## Commands
6
+ - Context: `npx kratos-cli context` — compact memory block (pinned + decisions + recent)
6
7
  - Save: `npx kratos-cli save "description" --tags tag1,tag2 --importance 3`
7
8
  - Search: `npx kratos-cli search "query"`
8
9
  - Ask: `npx kratos-cli ask "question about the project"`
@@ -12,6 +13,9 @@ This project uses Kratos CLI for persistent memory across coding sessions.
12
13
  - Forget: `npx kratos-cli forget <memory-id>`
13
14
  - Scan: `npx kratos-cli scan "text to check" --redact`
14
15
 
16
+ ## Setup (once per project)
17
+ Run `npx kratos-cli hooks install` — installs session memory injection, auto-capture, and git commit capture for Claude Code.
18
+
15
19
  ## When to save
16
20
  - Architecture decisions
17
21
  - Bug fixes (what was wrong + how you fixed it)
package/README.md CHANGED
@@ -52,14 +52,16 @@ That's it. No global install needed. Auto-detects your project.
52
52
  |---------|-------------|
53
53
  | `npx kratos-memory save <text>` | Save a memory (`--tags`, `--importance 1-5`, `--paths`, `--compress`, `--json`) |
54
54
  | `npx kratos-memory search <query>` | Full-text search with FTS5 (`--limit`, `--tags`, `--debug`, `--json`) |
55
- | `npx kratos-memory ask <question>` | Natural language query (`--json`) |
55
+ | `npx kratos-memory ask <question>` | Natural language query — learns vocabulary from your own memories (`--json`) |
56
56
  | `npx kratos-memory recent` | Recent memories (`--limit`, `--json`) |
57
57
  | `npx kratos-memory get <id>` | Full memory details (`--json`) |
58
58
  | `npx kratos-memory forget <id>` | Delete a memory (`--json`) |
59
59
  | `npx kratos-memory status` | System dashboard (`--json`) |
60
60
  | `npx kratos-memory switch <path>` | Switch project (`--json`) |
61
61
  | `npx kratos-memory scan <text>` | Detect PII and secrets (`--redact`, `--json`) |
62
- | `npx kratos-memory hooks install` | Install auto-capture hooks |
62
+ | `npx kratos-memory context` | Compact memory block for session injection (`--budget`, `--json`) |
63
+ | `npx kratos-memory summary` | Project report: decisions, topics, most-touched files, prune candidates |
64
+ | `npx kratos-memory hooks install` | Install hooks (Claude Code + Codex): memory injection, auto-capture, git commit capture |
63
65
 
64
66
  Kratos also supports machine-readable output for automation-heavy workflows. Use `--json` on the core read/write commands when you want agents, scripts, or CI to parse results safely.
65
67
 
@@ -73,15 +75,29 @@ Or drop the included `AGENTS.md` file in your project root — any agent that re
73
75
 
74
76
  ### Claude Code
75
77
 
78
+ One command, fully automatic:
79
+
80
+ ```bash
81
+ npx kratos-memory hooks install
76
82
  ```
77
- > use npx kratos-memory CLI (run help first)
78
- ```
83
+
84
+ This wires three hooks into the project:
85
+
86
+ - **SessionStart** — `kratos context` injects pinned memories, decisions, and recent work into every new session. The agent starts already knowing the project.
87
+ - **PostToolUse / Stop** — file edits and a session summary are captured automatically.
88
+ - **git post-commit** — every commit is saved as a memory (message + changed files).
89
+
90
+ No prompting, no relying on the model to remember to check memory — the hooks enforce it.
79
91
 
80
92
  ### Codex
81
93
 
94
+ The same install command also writes `.codex/hooks.json` with identical lifecycle hooks (SessionStart memory injection, auto-capture, session summary):
95
+
96
+ ```bash
97
+ npx kratos-memory hooks install
82
98
  ```
83
- > use npx kratos-memory CLI for memory. search for context at the start, save decisions as you go.
84
- ```
99
+
100
+ Then run `/hooks` once inside Codex to trust them — Codex requires explicit approval for project hooks.
85
101
 
86
102
  ### Cursor / Cline / Any agent
87
103
 
@@ -141,7 +157,17 @@ Each project is completely isolated with its own database.
141
157
 
142
158
  ## Coming from Kratos MCP?
143
159
 
144
- This is the successor to [`kratos-mcp`](https://github.com/ceorkm/kratos-mcp). We moved from MCP to CLI because MCP eats too many tokens per tool call (JSON-RPC schema overhead on every interaction). The CLI is lighter, faster, and works with any agent — not just MCP-compatible ones.
160
+ This is the successor to [`kratos-mcp`](https://github.com/ceorkm/kratos-mcp). We moved from MCP to CLI because MCP eats tokens before you ever use it. The CLI is lighter, faster, and works with any agent — not just MCP-compatible ones.
161
+
162
+ **The actual numbers** (measured on Claude Code):
163
+
164
+ | | MCP server | CLI |
165
+ |---|---|---|
166
+ | Tool schemas loaded into every session | **1,538 tokens** (12 tools) | **0 tokens** |
167
+ | Cost before the first memory is read | 1,538 tokens | 0 tokens |
168
+ | Invocation | JSON-RPC tool call | one Bash command (~30 tokens) |
169
+
170
+ The MCP version pays ~1.5k tokens of schema overhead in *every session of every project*, even sessions that never touch memory. At 20 agent sessions a day that's ~31k tokens/day of pure overhead. The CLI pays nothing until the moment it's actually used — and the responses are the same JSON either way.
145
171
 
146
172
  **Your data is already compatible.** Both versions use the same `~/.kratos/` storage and SQLite format. Just start using `npx kratos-memory` and your existing memories are there.
147
173
 
@@ -5,6 +5,11 @@ export declare class CaptureHandler {
5
5
  private compressor;
6
6
  constructor(ctx: CLIContext);
7
7
  handlePostToolUse(data: any): Promise<void>;
8
+ /**
9
+ * Invoked by the git post-commit hook. Reads the last commit directly from
10
+ * git — no payload needed, so the shell hook stays a one-liner.
11
+ */
12
+ handleGitCommit(_data: any): Promise<void>;
8
13
  handleSessionEnd(_data: any): Promise<void>;
9
14
  private appendToBuffer;
10
15
  private loadBuffer;
@@ -1 +1 @@
1
- {"version":3,"file":"capture-handler.d.ts","sourceRoot":"","sources":["../../src/cli/capture-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAqB5C,qBAAa,cAAc;IACzB,OAAO,CAAC,GAAG,CAAa;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAsB;gBAE5B,GAAG,EAAE,UAAU;IAMrB,iBAAiB,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAyD3C,gBAAgB,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;YA4BnC,cAAc;YAgBd,UAAU;YAWV,WAAW;CAO1B"}
1
+ {"version":3,"file":"capture-handler.d.ts","sourceRoot":"","sources":["../../src/cli/capture-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAqB5C,qBAAa,cAAc;IACzB,OAAO,CAAC,GAAG,CAAa;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAsB;gBAE5B,GAAG,EAAE,UAAU;IAMrB,iBAAiB,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAyDjD;;;OAGG;IACG,eAAe,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAqC1C,gBAAgB,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;YA4BnC,cAAc;YAgBd,UAAU;YAWV,WAAW;CAO1B"}
@@ -63,6 +63,45 @@ export class CaptureHandler {
63
63
  tags,
64
64
  });
65
65
  }
66
+ /**
67
+ * Invoked by the git post-commit hook. Reads the last commit directly from
68
+ * git — no payload needed, so the shell hook stays a one-liner.
69
+ */
70
+ async handleGitCommit(_data) {
71
+ const { execSync } = await import('node:child_process');
72
+ const git = (args) => {
73
+ try {
74
+ return execSync(`git ${args}`, { encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'] }).trim();
75
+ }
76
+ catch {
77
+ return '';
78
+ }
79
+ };
80
+ const subject = git('log -1 --pretty=%s');
81
+ if (!subject)
82
+ return;
83
+ const body = git('log -1 --pretty=%b');
84
+ const files = git('log -1 --name-only --pretty=format:')
85
+ .split('\n')
86
+ .map(f => f.trim())
87
+ .filter(Boolean)
88
+ .slice(0, 50);
89
+ let text = `Commit: ${subject}`;
90
+ if (body)
91
+ text += `\n\n${body}`;
92
+ if (files.length > 0)
93
+ text += `\n\nFiles:\n${files.map(f => ` - ${f}`).join('\n')}`;
94
+ const piiDetector = await this.ctx.getPIIDetector();
95
+ const summaryScan = piiDetector.detect(subject);
96
+ const textScan = piiDetector.detect(text);
97
+ this.ctx.memoryDb.save({
98
+ summary: summaryScan.hasPII || summaryScan.hasSecrets ? summaryScan.redactedText : subject,
99
+ text: textScan.hasPII || textScan.hasSecrets ? textScan.redactedText : text,
100
+ tags: ['git-commit'],
101
+ paths: files,
102
+ importance: 3,
103
+ });
104
+ }
66
105
  async handleSessionEnd(_data) {
67
106
  const buffer = await this.loadBuffer();
68
107
  if (!buffer || buffer.events.length === 0)
@@ -1 +1 @@
1
- {"version":3,"file":"capture-handler.js","sourceRoot":"","sources":["../../src/cli/capture-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"capture-handler.js","sourceRoot":"","sources":["../../src/cli/capture-handler.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ask.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/ask.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAiF7C,wBAAsB,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8GhB"}
1
+ {"version":3,"file":"ask.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/ask.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AA4G7C,wBAAsB,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+GhB"}
@@ -6,62 +6,94 @@ const STOP_WORDS = new Set([
6
6
  'by', 'from', 'did', 'do', 'does', 'is', 'are', 'was', 'were',
7
7
  'have', 'has', 'had', 'can', 'could', 'would', 'should', 'will',
8
8
  'know', 'tell', 'give', 'learned', 'remember', 'recall', 'work',
9
- 'into', 'over', 'after', 'use', 'using', 'anywhere', 'there',
9
+ 'into', 'over', 'after', 'use', 'uses', 'used', 'using', 'anywhere', 'there',
10
+ 'this', 'that', 'these', 'those', 'and', 'but', 'not', 'you',
11
+ 'our', 'your', 'their', 'its', 'his', 'her', 'they', 'them',
12
+ 'anything', 'something', 'everything', 'stuff', 'things',
10
13
  ]);
11
- const TOKEN_SYNONYMS = {
12
- ssh: ['ssh', 'server', 'vps'],
13
- vps: ['vps', 'server', 'ssh'],
14
- server: ['server', 'vps', 'ssh'],
15
- box: ['box', 'server', 'ssh'],
16
- boxes: ['boxes', 'server', 'ssh'],
17
- machine: ['machine', 'server'],
18
- machines: ['machines', 'server'],
19
- private: ['private', 'internal'],
20
- internal: ['internal', 'private'],
21
- sign: ['sign', 'login', 'auth'],
22
- login: ['login', 'auth'],
23
- auth: ['auth', 'login', 'jwt'],
24
- token: ['token', 'tokens', 'jwt', 'auth'],
25
- tokens: ['tokens', 'token', 'jwt', 'auth'],
26
- cookie: ['cookie', 'cookies', 'auth'],
27
- cookies: ['cookies', 'cookie', 'auth'],
28
- billing: ['billing', 'webhooks', 'stripe'],
29
- webhook: ['webhook', 'webhooks', 'stripe'],
30
- webhooks: ['webhooks', 'webhook', 'stripe'],
31
- stripe: ['stripe', 'billing', 'webhooks'],
32
- backup: ['backup', 'backups', 'postgres'],
33
- backups: ['backups', 'backup', 'postgres'],
34
- postgres: ['postgres', 'backup', 'backups'],
35
- redis: ['redis', 'rate', 'locks'],
36
- rate: ['rate', 'redis', 'limiting'],
37
- alert: ['alert', 'alerts', 'ops', 'sentry'],
38
- alerts: ['alerts', 'alert', 'ops', 'sentry'],
39
- sentry: ['sentry', 'alerts', 'errors'],
40
- };
41
- const PHRASE_SYNONYMS = [
42
- [/\bsign\s+in(to)?\b/, ['login', 'auth']],
43
- [/\blog\s+in(to)?\b/, ['login', 'auth']],
44
- [/\blog\s+into\b/, ['ssh', 'server']],
45
- [/\benter\s+the\s+box\b/, ['ssh', 'server']],
46
- [/\benter\s+the\s+server\b/, ['ssh', 'server']],
47
- [/\bprivate\s+machines?\b/, ['internal', 'boxes', 'tailscale', 'ssh']],
48
- [/\binternal\s+machines?\b/, ['internal', 'boxes', 'tailscale', 'ssh']],
49
- [/\baccess\s+the\s+vps\b/, ['ssh', 'vps']],
50
- [/\baccess\s+the\s+server\b/, ['ssh', 'server']],
51
- [/\blogin\s+security\b/, ['auth', 'login', 'jwt', 'cookies']],
52
- ];
53
- const DOMAIN_KEYWORDS = {
54
- infra: ['ssh', 'server', 'vps', 'box', 'boxes', 'machine', 'machines', 'tailscale', 'docker', 'deploy', 'pm2', 'internal', 'private'],
55
- auth: ['auth', 'jwt', 'token', 'tokens', 'cookie', 'cookies', 'signin', 'security'],
56
- billing: ['billing', 'webhook', 'webhooks', 'stripe', 'invoice'],
57
- ops: ['sentry', 'alert', 'alerts', 'ops', 'monitor', 'errors', 'slack'],
58
- data: ['postgres', 'backup', 'backups', 'storage', 'database'],
59
- cache: ['redis', 'rate', 'limiting', 'locks', 'lock', 'ephemeral'],
60
- };
61
14
  const STRICT_QUERY_TERMS = new Set(['password', 'passphrase', 'secret', 'credential', 'credentials']);
15
+ // Language-level synonyms only — universal English/devops words, never product
16
+ // or project vocabulary (that's learned from the user's own memories below).
17
+ const GENERIC_SYNONYMS = {
18
+ machine: ['server', 'box', 'host'],
19
+ machines: ['server', 'box', 'host'],
20
+ box: ['server', 'machine', 'host'],
21
+ boxes: ['server', 'machine', 'host'],
22
+ server: ['host', 'machine', 'box'],
23
+ servers: ['host', 'machine', 'box'],
24
+ private: ['internal'],
25
+ internal: ['private'],
26
+ sign: ['auth', 'login'],
27
+ signin: ['auth', 'login'],
28
+ login: ['auth', 'signin'],
29
+ remove: ['delete'],
30
+ delete: ['remove'],
31
+ };
32
+ /**
33
+ * Vocabulary learned from this project's own memories. Terms that co-occur in
34
+ * saved memories become query expansions — no hardcoded synonym tables, so it
35
+ * adapts to whatever stack the project actually uses.
36
+ */
37
+ class LearnedVocabulary {
38
+ termDocs = new Map();
39
+ docCount = 0;
40
+ constructor(memories) {
41
+ this.docCount = memories.length;
42
+ memories.forEach((memory, idx) => {
43
+ const corpus = [
44
+ memory.summary,
45
+ memory.text.slice(0, 400),
46
+ ...(memory.tags || []).filter(t => t !== '__pinned'),
47
+ ...(memory.paths || []).map(p => p.split('/').pop() || ''),
48
+ ].join(' ');
49
+ for (const token of new Set(tokenize(corpus))) {
50
+ if (STOP_WORDS.has(token))
51
+ continue;
52
+ if (!this.termDocs.has(token))
53
+ this.termDocs.set(token, new Set());
54
+ this.termDocs.get(token).add(idx);
55
+ }
56
+ });
57
+ }
58
+ /** Top co-occurring terms for a query term, strongest associations first. */
59
+ expand(term, max = 3) {
60
+ const docs = this.termDocs.get(term);
61
+ if (!docs || docs.size === 0)
62
+ return [];
63
+ const scores = new Map();
64
+ // Terms in more than half the corpus are too generic to expand with
65
+ const ubiquityCap = Math.max(2, Math.ceil(this.docCount / 2));
66
+ for (const [other, otherDocs] of this.termDocs) {
67
+ if (other === term)
68
+ continue;
69
+ if (otherDocs.size > ubiquityCap)
70
+ continue;
71
+ let co = 0;
72
+ for (const doc of docs) {
73
+ if (otherDocs.has(doc))
74
+ co++;
75
+ }
76
+ if (co === 0)
77
+ continue;
78
+ // Need repeated co-occurrence unless the term itself is rare
79
+ if (co < 2 && docs.size > 2)
80
+ continue;
81
+ // An expansion is only useful if it reaches memories the original term
82
+ // doesn't — reward terms that also appear in other docs
83
+ if (otherDocs.size <= co)
84
+ continue;
85
+ scores.set(other, co * Math.log(1 + otherDocs.size));
86
+ }
87
+ return [...scores.entries()]
88
+ .sort((a, b) => b[1] - a[1])
89
+ .slice(0, max)
90
+ .map(([t]) => t);
91
+ }
92
+ }
62
93
  export async function askCommand(ctx, question, opts) {
63
94
  const limit = opts.limit ? parseInt(opts.limit, 10) : 10;
64
- const parsed = parseNaturalLanguageQuery(question);
95
+ const vocabulary = new LearnedVocabulary(ctx.memoryDb.getAll());
96
+ const parsed = parseNaturalLanguageQuery(question, vocabulary);
65
97
  const searchQuery = parsed.searchTerms.join(' ');
66
98
  if (!searchQuery) {
67
99
  if (opts.json) {
@@ -178,22 +210,24 @@ function synthesizeAnswer(results) {
178
210
  })
179
211
  .join('\n');
180
212
  }
181
- function parseNaturalLanguageQuery(question) {
213
+ function parseNaturalLanguageQuery(question, vocabulary) {
182
214
  const lowerQ = question.toLowerCase();
183
215
  const normalizedQuestion = normalizeWhitespace(lowerQ.replace(/[^\w\s]/g, ' '));
184
- const expandedSet = new Set();
185
- for (const [pattern, expansions] of PHRASE_SYNONYMS) {
186
- if (pattern.test(lowerQ)) {
187
- expansions.forEach(term => expandedSet.add(term));
188
- }
189
- }
190
216
  const rawTerms = normalizedQuestion
191
217
  .split(/\s+/)
192
218
  .filter(Boolean);
193
219
  const words = rawTerms
194
220
  .filter(word => word.length > 2 && !STOP_WORDS.has(word));
221
+ // Expand each term: generic English synonyms + vocabulary learned from
222
+ // this project's own memories
223
+ const expandedSet = new Set();
224
+ const termExpansions = new Map();
195
225
  for (const word of words) {
196
- const expansions = TOKEN_SYNONYMS[word] || [word];
226
+ const expansions = uniquePreservingOrder([
227
+ ...(GENERIC_SYNONYMS[word] || []),
228
+ ...vocabulary.expand(word),
229
+ ]);
230
+ termExpansions.set(word, [word, ...expansions]);
197
231
  expansions.forEach(term => expandedSet.add(term));
198
232
  }
199
233
  let intent = 'search';
@@ -205,28 +239,20 @@ function parseNaturalLanguageQuery(question) {
205
239
  intent = 'find';
206
240
  const searchTerms = uniquePreservingOrder(words);
207
241
  const expandedTerms = uniquePreservingOrder([...searchTerms, ...expandedSet].filter(term => term.length > 2));
208
- const domains = detectDomains(expandedTerms);
209
- return { searchTerms, expandedTerms, rawTerms, domains, intent, normalizedQuestion };
242
+ return { searchTerms, expandedTerms, rawTerms, intent, normalizedQuestion, termExpansions };
210
243
  }
211
244
  function buildSearchPlan(parsed, limit) {
212
245
  const variants = [];
213
246
  if (parsed.searchTerms.length > 0) {
214
247
  variants.push(parsed.searchTerms.join(' '));
215
248
  }
216
- if (parsed.expandedTerms.length > 0) {
249
+ if (parsed.expandedTerms.length > parsed.searchTerms.length) {
217
250
  variants.push(parsed.expandedTerms.join(' '));
218
251
  }
219
252
  const strongTerms = parsed.expandedTerms.filter(term => term.length >= 4);
220
253
  if (strongTerms.length > 1) {
221
254
  variants.push(strongTerms.slice(0, Math.min(5, Math.max(3, limit))).join(' '));
222
255
  }
223
- for (const domain of parsed.domains) {
224
- const keywords = DOMAIN_KEYWORDS[domain];
225
- const domainTerms = keywords.filter(keyword => parsed.expandedTerms.includes(keyword));
226
- const seed = domainTerms.length > 0 ? domainTerms : keywords.slice(0, 3);
227
- variants.push(uniquePreservingOrder(seed).slice(0, 4).join(' '));
228
- uniquePreservingOrder(seed).slice(0, 3).forEach(term => variants.push(term));
229
- }
230
256
  for (const term of parsed.expandedTerms.filter(term => term.length >= 3)) {
231
257
  variants.push(term);
232
258
  }
@@ -258,47 +284,48 @@ function runAskSearch(ctx, parsed, queries, limit) {
258
284
  return b.memory.created_at - a.memory.created_at;
259
285
  })
260
286
  .slice(0, limit);
261
- if (parsed.domains.length > 1) {
262
- const strongMatches = ranked.filter(result => countSharedDomains(parsed, result) >= Math.min(2, parsed.domains.length));
263
- if (strongMatches.length === 0) {
264
- return [];
265
- }
266
- return strongMatches;
287
+ // Multi-term questions must be fully covered: every meaningful word (or one
288
+ // of its expansions) has to appear in the memory. Stops cross-topic false
289
+ // positives like "what machine do I ssh to for billing" matching pure-ssh notes.
290
+ let gated = ranked;
291
+ if (parsed.searchTerms.length >= 3) {
292
+ gated = ranked.filter(result => {
293
+ const memoryTerms = new Set(extractMemoryTerms(result.memory).map(singularize));
294
+ return parsed.searchTerms.every(term => {
295
+ const candidates = parsed.termExpansions.get(term) || [term];
296
+ return candidates.some(candidate => memoryTerms.has(singularize(candidate)));
297
+ });
298
+ });
267
299
  }
268
300
  const strictTerms = parsed.searchTerms.filter(term => STRICT_QUERY_TERMS.has(term));
269
301
  if (strictTerms.length > 0) {
270
- return ranked.filter(result => {
302
+ return gated.filter(result => {
271
303
  const memoryTerms = extractMemoryTerms(result.memory);
272
304
  return strictTerms.every(term => memoryTerms.includes(term));
273
305
  });
274
306
  }
275
- return ranked;
307
+ return gated;
308
+ }
309
+ /** Naive plural folding so "machines" covers "machine", "boxes" covers "box". */
310
+ function singularize(term) {
311
+ if (term.length > 4 && term.endsWith('es'))
312
+ return term.slice(0, -2);
313
+ if (term.length > 3 && term.endsWith('s'))
314
+ return term.slice(0, -1);
315
+ return term;
276
316
  }
277
317
  function rerankResult(result, parsed, query, queryIndex) {
278
318
  const memoryTerms = extractMemoryTerms(result.memory);
279
319
  const overlap = countOverlap(parsed.expandedTerms, memoryTerms);
320
+ const directOverlap = countOverlap(parsed.searchTerms, memoryTerms);
280
321
  const queryTerms = query.split(/\s+/).filter(Boolean);
281
322
  const queryOverlap = countOverlap(queryTerms, memoryTerms);
282
- const memoryDomains = detectDomains(memoryTerms);
283
323
  let score = result.score;
284
324
  score += Math.min(24, overlap * 8);
325
+ score += Math.min(16, directOverlap * 8);
285
326
  score += Math.min(12, queryOverlap * 4);
286
327
  score += Math.max(0, 8 - queryIndex * 2);
287
- const sharedDomains = parsed.domains.filter(domain => memoryDomains.includes(domain));
288
- score += sharedDomains.length * 14;
289
- if (parsed.domains.length > 0 && sharedDomains.length === 0) {
290
- score -= 28;
291
- }
292
- if (parsed.domains.length > 1 && sharedDomains.length < parsed.domains.length) {
293
- score -= (parsed.domains.length - sharedDomains.length) * 18;
294
- }
295
- if (parsed.domains.includes('infra') && !memoryDomains.includes('infra')) {
296
- score -= 18;
297
- }
298
- if (parsed.domains.includes('auth') && !memoryDomains.includes('auth')) {
299
- score -= 18;
300
- }
301
- const strongTerms = parsed.expandedTerms.filter(term => term.length >= 5);
328
+ const strongTerms = parsed.searchTerms.filter(term => term.length >= 5);
302
329
  if (strongTerms.length > 0 && strongTerms.every(term => !memoryTerms.includes(term))) {
303
330
  score -= 14;
304
331
  }
@@ -307,38 +334,16 @@ function rerankResult(result, parsed, query, queryIndex) {
307
334
  score: Math.max(0, Math.min(100, Math.round(score))),
308
335
  };
309
336
  }
310
- function countSharedDomains(parsed, result) {
311
- const memoryDomains = detectDomains(extractMemoryTerms(result.memory));
312
- return parsed.domains.filter(domain => memoryDomains.includes(domain)).length;
313
- }
314
337
  function extractMemoryTerms(memory) {
315
338
  const corpus = [memory.summary, memory.text, ...(memory.tags || []), ...(memory.paths || [])]
316
339
  .filter(Boolean)
317
- .join(' ')
318
- .toLowerCase();
319
- const raw = normalizeWhitespace(corpus.replace(/[^\w\s]/g, ' '))
340
+ .join(' ');
341
+ return uniquePreservingOrder(tokenize(corpus));
342
+ }
343
+ function tokenize(value) {
344
+ return normalizeWhitespace(value.toLowerCase().replace(/[^\w\s]/g, ' '))
320
345
  .split(/\s+/)
321
346
  .filter(token => token.length > 2);
322
- const expanded = new Set();
323
- for (const token of raw) {
324
- const synonyms = TOKEN_SYNONYMS[token] || [token];
325
- synonyms.forEach(term => expanded.add(term));
326
- }
327
- for (const [pattern, expansions] of PHRASE_SYNONYMS) {
328
- if (pattern.test(corpus)) {
329
- expansions.forEach(term => expanded.add(term));
330
- }
331
- }
332
- return uniquePreservingOrder([...raw, ...expanded]);
333
- }
334
- function detectDomains(terms) {
335
- const domainMatches = [];
336
- for (const [domain, keywords] of Object.entries(DOMAIN_KEYWORDS)) {
337
- if (keywords.some(keyword => terms.includes(keyword))) {
338
- domainMatches.push(domain);
339
- }
340
- }
341
- return domainMatches;
342
347
  }
343
348
  function countOverlap(sourceTerms, targetTerms) {
344
349
  const target = new Set(targetTerms);
@@ -1 +1 @@
1
- {"version":3,"file":"ask.js","sourceRoot":"","sources":["../../../src/cli/commands/ask.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ask.js","sourceRoot":"","sources":["../../../src/cli/commands/ask.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/capture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,wBAAsB,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BhB"}
1
+ {"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/capture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,wBAAsB,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgChB"}
@@ -23,6 +23,9 @@ export async function captureCommand(ctx, opts) {
23
23
  case 'session-end':
24
24
  await handler.handleSessionEnd(inputData);
25
25
  break;
26
+ case 'git-commit':
27
+ await handler.handleGitCommit(inputData);
28
+ break;
26
29
  default:
27
30
  // Unknown event type — ignore silently (hooks should not produce errors)
28
31
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"capture.js","sourceRoot":"","sources":["../../../src/cli/commands/capture.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAe,EAAE,IAErD;IACC,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,GAAG,CAAC,CAAC;IAExC,6BAA6B;IAC7B,IAAI,SAAS,GAAQ,EAAE,CAAC;IACxB,IAAI,CAAC;QACH,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YACxC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3D,IAAI,GAAG,EAAE,CAAC;YACR,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,8CAA8C;IAChD,CAAC;IAED,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,KAAK,eAAe;YAClB,MAAM,OAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAC3C,MAAM;QACR,KAAK,aAAa;YAChB,MAAM,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAC1C,MAAM;QACR;YACE,yEAAyE;YACzE,MAAM;IACV,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"capture.js","sourceRoot":"","sources":["../../../src/cli/commands/capture.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAe,EAAE,IAErD;IACC,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,GAAG,CAAC,CAAC;IAExC,6BAA6B;IAC7B,IAAI,SAAS,GAAQ,EAAE,CAAC;IACxB,IAAI,CAAC;QACH,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YACxC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3D,IAAI,GAAG,EAAE,CAAC;YACR,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,8CAA8C;IAChD,CAAC;IAED,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,KAAK,eAAe;YAClB,MAAM,OAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAC3C,MAAM;QACR,KAAK,aAAa;YAChB,MAAM,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAC1C,MAAM;QACR,KAAK,YAAY;YACf,MAAM,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YACzC,MAAM;QACR;YACE,yEAAyE;YACzE,MAAM;IACV,CAAC;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { CLIContext } from '../core.js';
2
+ /**
3
+ * Emit a compact, token-budgeted context block built from memories.
4
+ * Designed for SessionStart hook injection: stdout becomes session context.
5
+ * Plain text — chalk is bypassed so hook output stays clean.
6
+ */
7
+ export declare function contextCommand(ctx: CLIContext, opts: {
8
+ budget?: string;
9
+ json?: boolean;
10
+ }): Promise<void>;
11
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAY7C;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyFhB"}