kratos-memory 1.3.2 → 1.3.4

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 (64) hide show
  1. package/README.md +11 -9
  2. package/dist/cli/commands/ask.d.ts +1 -0
  3. package/dist/cli/commands/ask.d.ts.map +1 -1
  4. package/dist/cli/commands/ask.js +57 -0
  5. package/dist/cli/commands/ask.js.map +1 -1
  6. package/dist/cli/commands/forget.d.ts +3 -1
  7. package/dist/cli/commands/forget.d.ts.map +1 -1
  8. package/dist/cli/commands/forget.js +17 -1
  9. package/dist/cli/commands/forget.js.map +1 -1
  10. package/dist/cli/commands/get.d.ts +3 -1
  11. package/dist/cli/commands/get.d.ts.map +1 -1
  12. package/dist/cli/commands/get.js +5 -1
  13. package/dist/cli/commands/get.js.map +1 -1
  14. package/dist/cli/commands/pin.d.ts +1 -0
  15. package/dist/cli/commands/pin.d.ts.map +1 -1
  16. package/dist/cli/commands/pin.js +19 -0
  17. package/dist/cli/commands/pin.js.map +1 -1
  18. package/dist/cli/commands/recent.d.ts +1 -0
  19. package/dist/cli/commands/recent.d.ts.map +1 -1
  20. package/dist/cli/commands/recent.js +8 -0
  21. package/dist/cli/commands/recent.js.map +1 -1
  22. package/dist/cli/commands/save.d.ts +1 -0
  23. package/dist/cli/commands/save.d.ts.map +1 -1
  24. package/dist/cli/commands/save.js +16 -1
  25. package/dist/cli/commands/save.js.map +1 -1
  26. package/dist/cli/commands/scan.d.ts +1 -0
  27. package/dist/cli/commands/scan.d.ts.map +1 -1
  28. package/dist/cli/commands/scan.js +10 -0
  29. package/dist/cli/commands/scan.js.map +1 -1
  30. package/dist/cli/commands/search.d.ts +1 -0
  31. package/dist/cli/commands/search.d.ts.map +1 -1
  32. package/dist/cli/commands/search.js +32 -0
  33. package/dist/cli/commands/search.js.map +1 -1
  34. package/dist/cli/commands/status.d.ts +3 -1
  35. package/dist/cli/commands/status.d.ts.map +1 -1
  36. package/dist/cli/commands/status.js +58 -3
  37. package/dist/cli/commands/status.js.map +1 -1
  38. package/dist/cli/commands/summary.d.ts +3 -1
  39. package/dist/cli/commands/summary.d.ts.map +1 -1
  40. package/dist/cli/commands/summary.js +37 -6
  41. package/dist/cli/commands/summary.js.map +1 -1
  42. package/dist/cli/commands/switch.d.ts +3 -1
  43. package/dist/cli/commands/switch.d.ts.map +1 -1
  44. package/dist/cli/commands/switch.js +13 -1
  45. package/dist/cli/commands/switch.js.map +1 -1
  46. package/dist/cli/commands/update.d.ts +1 -0
  47. package/dist/cli/commands/update.d.ts.map +1 -1
  48. package/dist/cli/commands/update.js +21 -0
  49. package/dist/cli/commands/update.js.map +1 -1
  50. package/dist/cli/index.js +22 -10
  51. package/dist/cli/index.js.map +1 -1
  52. package/dist/memory-server/database.d.ts +2 -0
  53. package/dist/memory-server/database.d.ts.map +1 -1
  54. package/dist/memory-server/database.js +56 -22
  55. package/dist/memory-server/database.js.map +1 -1
  56. package/dist/project-manager.d.ts +1 -0
  57. package/dist/project-manager.d.ts.map +1 -1
  58. package/dist/project-manager.js +16 -2
  59. package/dist/project-manager.js.map +1 -1
  60. package/dist/security/pii-detector.d.ts +2 -0
  61. package/dist/security/pii-detector.d.ts.map +1 -1
  62. package/dist/security/pii-detector.js +60 -8
  63. package/dist/security/pii-detector.js.map +1 -1
  64. package/package.json +4 -3
package/README.md CHANGED
@@ -50,17 +50,19 @@ That's it. No global install needed. Auto-detects your project.
50
50
 
51
51
  | Command | What it does |
52
52
  |---------|-------------|
53
- | `npx kratos-memory save <text>` | Save a memory (`--tags`, `--importance 1-5`, `--paths`, `--compress`) |
54
- | `npx kratos-memory search <query>` | Full-text search with FTS5 (`--limit`, `--tags`, `--debug`) |
55
- | `npx kratos-memory ask <question>` | Natural language query |
56
- | `npx kratos-memory recent` | Recent memories (`--limit`) |
57
- | `npx kratos-memory get <id>` | Full memory details |
58
- | `npx kratos-memory forget <id>` | Delete a memory |
59
- | `npx kratos-memory status` | System dashboard |
60
- | `npx kratos-memory switch <path>` | Switch project |
61
- | `npx kratos-memory scan <text>` | Detect PII and secrets (`--redact`) |
53
+ | `npx kratos-memory save <text>` | Save a memory (`--tags`, `--importance 1-5`, `--paths`, `--compress`, `--json`) |
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`) |
56
+ | `npx kratos-memory recent` | Recent memories (`--limit`, `--json`) |
57
+ | `npx kratos-memory get <id>` | Full memory details (`--json`) |
58
+ | `npx kratos-memory forget <id>` | Delete a memory (`--json`) |
59
+ | `npx kratos-memory status` | System dashboard (`--json`) |
60
+ | `npx kratos-memory switch <path>` | Switch project (`--json`) |
61
+ | `npx kratos-memory scan <text>` | Detect PII and secrets (`--redact`, `--json`) |
62
62
  | `npx kratos-memory hooks install` | Install auto-capture hooks |
63
63
 
64
+ 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
+
64
66
  ## How agents use it
65
67
 
66
68
  Just tell your agent:
@@ -1,5 +1,6 @@
1
1
  import type { CLIContext } from '../core.js';
2
2
  export declare function askCommand(ctx: CLIContext, question: string, opts: {
3
3
  limit?: string;
4
+ json?: boolean;
4
5
  }): Promise<void>;
5
6
  //# sourceMappingURL=ask.d.ts.map
@@ -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;AAI7C,wBAAsB,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiFhB"}
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;AAI7C,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,CA6HhB"}
@@ -5,6 +5,17 @@ export async function askCommand(ctx, question, opts) {
5
5
  const parsed = parseNaturalLanguageQuery(question);
6
6
  const searchQuery = parsed.searchTerms.join(' ');
7
7
  if (!searchQuery) {
8
+ if (opts.json) {
9
+ Output.json({
10
+ question,
11
+ search_query: '',
12
+ count: 0,
13
+ answer: null,
14
+ results: [],
15
+ error: 'Could not extract search terms from your question. Try rephrasing.',
16
+ });
17
+ return;
18
+ }
8
19
  Output.warn('Could not extract search terms from your question. Try rephrasing.');
9
20
  return;
10
21
  }
@@ -26,10 +37,42 @@ export async function askCommand(ctx, question, opts) {
26
37
  }
27
38
  }
28
39
  if (results.length === 0) {
40
+ if (opts.json) {
41
+ Output.json({
42
+ question,
43
+ search_query: searchQuery,
44
+ count: 0,
45
+ answer: null,
46
+ results: [],
47
+ });
48
+ return;
49
+ }
29
50
  Output.header(`Answer: "${question}"`);
30
51
  Output.dim('No relevant memories found. Try different terms.');
31
52
  return;
32
53
  }
54
+ if (opts.json) {
55
+ const topResults = results.slice(0, 5);
56
+ Output.json({
57
+ question,
58
+ search_query: searchQuery,
59
+ count: results.length,
60
+ answer: synthesizeAnswer(topResults),
61
+ results: topResults.map(r => ({
62
+ id: r.memory.id,
63
+ summary: r.memory.summary,
64
+ text: r.memory.text,
65
+ tags: r.memory.tags,
66
+ paths: r.memory.paths,
67
+ importance: r.memory.importance,
68
+ created_at: r.memory.created_at,
69
+ updated_at: r.memory.updated_at,
70
+ score: r.score,
71
+ snippet: r.snippet,
72
+ })),
73
+ });
74
+ return;
75
+ }
33
76
  // Synthesize an answer from the results
34
77
  console.log('');
35
78
  console.log(chalk.bold.cyan(` ${question}`));
@@ -75,6 +118,20 @@ export async function askCommand(ctx, question, opts) {
75
118
  console.log(chalk.dim(` Based on ${results.length} memor${results.length === 1 ? 'y' : 'ies'} | searched: "${searchQuery}"`));
76
119
  console.log('');
77
120
  }
121
+ function synthesizeAnswer(results) {
122
+ if (results.length === 0)
123
+ return '';
124
+ if (results.length === 1) {
125
+ return results[0].memory.text || results[0].memory.summary;
126
+ }
127
+ return results
128
+ .slice(0, 5)
129
+ .map((result, index) => {
130
+ const text = result.memory.text || result.memory.summary;
131
+ return index === 0 ? text : `• ${text}`;
132
+ })
133
+ .join('\n');
134
+ }
78
135
  function parseNaturalLanguageQuery(question) {
79
136
  const lowerQ = question.toLowerCase();
80
137
  const stopWords = new Set([
@@ -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,3 +1,5 @@
1
1
  import type { CLIContext } from '../core.js';
2
- export declare function forgetCommand(ctx: CLIContext, id: string): Promise<void>;
2
+ export declare function forgetCommand(ctx: CLIContext, id: string, opts?: {
3
+ json?: boolean;
4
+ }): Promise<void>;
3
5
  //# sourceMappingURL=forget.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"forget.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/forget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,wBAAsB,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAS9E"}
1
+ {"version":3,"file":"forget.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/forget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,wBAAsB,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,GAAE;IACrE,IAAI,CAAC,EAAE,OAAO,CAAC;CACX,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBrB"}
@@ -1,10 +1,26 @@
1
1
  import { Output } from '../output.js';
2
- export async function forgetCommand(ctx, id) {
2
+ export async function forgetCommand(ctx, id, opts = {}) {
3
3
  const result = ctx.memoryDb.forget(id);
4
4
  if (result.ok) {
5
+ if (opts.json) {
6
+ Output.json({
7
+ ok: true,
8
+ id,
9
+ message: result.message || null,
10
+ });
11
+ return;
12
+ }
5
13
  Output.success(`Memory deleted: ${id}`);
6
14
  }
7
15
  else {
16
+ if (opts.json) {
17
+ Output.json({
18
+ ok: false,
19
+ id,
20
+ error: result.message || `Memory not found: ${id}`,
21
+ });
22
+ process.exit(1);
23
+ }
8
24
  Output.error(result.message || `Memory not found: ${id}`);
9
25
  process.exit(1);
10
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"forget.js","sourceRoot":"","sources":["../../../src/cli/commands/forget.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAe,EAAE,EAAU;IAC7D,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAEvC,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;QACd,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;IAC1C,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,qBAAqB,EAAE,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"forget.js","sourceRoot":"","sources":["../../../src/cli/commands/forget.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAe,EAAE,EAAU,EAAE,OAE7D,EAAE;IACJ,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAEvC,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;QACd,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,CAAC;gBACV,EAAE,EAAE,IAAI;gBACR,EAAE;gBACF,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,IAAI;aAChC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;IAC1C,CAAC;SAAM,CAAC;QACN,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,CAAC;gBACV,EAAE,EAAE,KAAK;gBACT,EAAE;gBACF,KAAK,EAAE,MAAM,CAAC,OAAO,IAAI,qBAAqB,EAAE,EAAE;aACnD,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,qBAAqB,EAAE,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -1,3 +1,5 @@
1
1
  import type { CLIContext } from '../core.js';
2
- export declare function getCommand(ctx: CLIContext, id: string): Promise<void>;
2
+ export declare function getCommand(ctx: CLIContext, id: string, opts?: {
3
+ json?: boolean;
4
+ }): Promise<void>;
3
5
  //# sourceMappingURL=get.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/get.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,wBAAsB,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA6B3E"}
1
+ {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/get.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,wBAAsB,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,GAAE;IAClE,IAAI,CAAC,EAAE,OAAO,CAAC;CACX,GAAG,OAAO,CAAC,IAAI,CAAC,CAkCrB"}
@@ -1,10 +1,14 @@
1
1
  import { Output } from '../output.js';
2
- export async function getCommand(ctx, id) {
2
+ export async function getCommand(ctx, id, opts = {}) {
3
3
  const memory = ctx.memoryDb.get(id);
4
4
  if (!memory) {
5
5
  Output.error(`Memory not found: ${id}`);
6
6
  process.exit(1);
7
7
  }
8
+ if (opts.json) {
9
+ Output.json(memory);
10
+ return;
11
+ }
8
12
  Output.header('Memory Details');
9
13
  console.log('');
10
14
  Output.info(`ID: ${memory.id}`);
@@ -1 +1 @@
1
- {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/cli/commands/get.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAe,EAAE,EAAU;IAC1D,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEpC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;IACxC,MAAM,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7C,MAAM,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IAChD,MAAM,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IAC3E,MAAM,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IAE3E,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC3B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC"}
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/cli/commands/get.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAe,EAAE,EAAU,EAAE,OAE1D,EAAE;IACJ,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEpC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpB,OAAO;IACT,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;IACxC,MAAM,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7C,MAAM,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IAChD,MAAM,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IAC3E,MAAM,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IAE3E,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC3B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import type { CLIContext } from '../core.js';
2
2
  export declare function pinCommand(ctx: CLIContext, id: string, opts: {
3
3
  unpin?: boolean;
4
+ json?: boolean;
4
5
  }): Promise<void>;
5
6
  //# sourceMappingURL=pin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pin.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/pin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,wBAAsB,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;IAClE,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,GAAG,OAAO,CAAC,IAAI,CAAC,CAShB"}
1
+ {"version":3,"file":"pin.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/pin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,wBAAsB,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;IAClE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BhB"}
@@ -3,10 +3,29 @@ export async function pinCommand(ctx, id, opts) {
3
3
  const pinned = !opts.unpin;
4
4
  const result = ctx.memoryDb.pin(id, pinned);
5
5
  if (result.ok) {
6
+ if (opts.json) {
7
+ Output.json({
8
+ ok: true,
9
+ id,
10
+ pinned,
11
+ message: result.message || null,
12
+ });
13
+ return;
14
+ }
6
15
  Output.success(result.message);
7
16
  }
8
17
  else {
18
+ if (opts.json) {
19
+ Output.json({
20
+ ok: false,
21
+ id,
22
+ pinned,
23
+ error: result.message || 'Pin failed',
24
+ });
25
+ process.exit(1);
26
+ }
9
27
  Output.error(result.message || 'Pin failed');
28
+ process.exit(1);
10
29
  }
11
30
  }
12
31
  //# sourceMappingURL=pin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pin.js","sourceRoot":"","sources":["../../../src/cli/commands/pin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAe,EAAE,EAAU,EAAE,IAE7D;IACC,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;IAC3B,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAE5C,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;QACd,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAQ,CAAC,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,YAAY,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"pin.js","sourceRoot":"","sources":["../../../src/cli/commands/pin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAe,EAAE,EAAU,EAAE,IAG7D;IACC,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;IAC3B,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAE5C,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;QACd,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,CAAC;gBACV,EAAE,EAAE,IAAI;gBACR,EAAE;gBACF,MAAM;gBACN,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,IAAI;aAChC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAQ,CAAC,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,CAAC;gBACV,EAAE,EAAE,KAAK;gBACT,EAAE;gBACF,MAAM;gBACN,KAAK,EAAE,MAAM,CAAC,OAAO,IAAI,YAAY;aACtC,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,YAAY,CAAC,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -2,5 +2,6 @@ import type { CLIContext } from '../core.js';
2
2
  export declare function recentCommand(ctx: CLIContext, opts: {
3
3
  limit?: string;
4
4
  pathPrefix?: string;
5
+ json?: boolean;
5
6
  }): Promise<void>;
6
7
  //# sourceMappingURL=recent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"recent.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/recent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,wBAAsB,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE;IACzD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBhB"}
1
+ {"version":3,"file":"recent.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/recent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,wBAAsB,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE;IACzD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BhB"}
@@ -5,6 +5,14 @@ export async function recentCommand(ctx, opts) {
5
5
  k,
6
6
  path_prefix: opts.pathPrefix,
7
7
  });
8
+ if (opts.json) {
9
+ Output.json({
10
+ project: ctx.project.name,
11
+ count: memories.length,
12
+ memories,
13
+ });
14
+ return;
15
+ }
8
16
  Output.header(`Recent memories (${ctx.project.name})`);
9
17
  Output.dim(`Showing ${memories.length} of last ${k} requested`);
10
18
  for (const m of memories) {
@@ -1 +1 @@
1
- {"version":3,"file":"recent.js","sourceRoot":"","sources":["../../../src/cli/commands/recent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAe,EAAE,IAGpD;IACC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAErD,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC;QACtC,CAAC;QACD,WAAW,EAAE,IAAI,CAAC,UAAU;KAC7B,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,oBAAoB,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;IACvD,MAAM,CAAC,GAAG,CAAC,WAAW,QAAQ,CAAC,MAAM,YAAY,CAAC,YAAY,CAAC,CAAC;IAEhE,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,CAAC,UAAU,CAAC;YAChB,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,UAAU,EAAE,CAAC,CAAC,UAAU;SACzB,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"recent.js","sourceRoot":"","sources":["../../../src/cli/commands/recent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAe,EAAE,IAIpD;IACC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAErD,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC;QACtC,CAAC;QACD,WAAW,EAAE,IAAI,CAAC,UAAU;KAC7B,CAAC,CAAC;IAEH,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,MAAM,CAAC,IAAI,CAAC;YACV,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI;YACzB,KAAK,EAAE,QAAQ,CAAC,MAAM;YACtB,QAAQ;SACT,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,oBAAoB,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;IACvD,MAAM,CAAC,GAAG,CAAC,WAAW,QAAQ,CAAC,MAAM,YAAY,CAAC,YAAY,CAAC,CAAC;IAEhE,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,CAAC,UAAU,CAAC;YAChB,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,UAAU,EAAE,CAAC,CAAC,UAAU;SACzB,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
@@ -4,5 +4,6 @@ export declare function saveCommand(ctx: CLIContext, text: string, opts: {
4
4
  paths?: string;
5
5
  importance?: string;
6
6
  compress?: boolean;
7
+ json?: boolean;
7
8
  }): Promise<void>;
8
9
  //# sourceMappingURL=save.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"save.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/save.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,wBAAsB,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IACrE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BhB"}
1
+ {"version":3,"file":"save.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/save.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,wBAAsB,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IACrE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgDhB"}
@@ -25,7 +25,22 @@ export async function saveCommand(ctx, text, opts) {
25
25
  paths,
26
26
  importance,
27
27
  });
28
- Output.success(`Memory saved: ${result.id}`);
28
+ const id = result.id;
29
+ if (opts.json) {
30
+ Output.json({
31
+ ok: true,
32
+ id,
33
+ project: ctx.project.name,
34
+ summary,
35
+ text: fullText,
36
+ tags,
37
+ paths,
38
+ importance,
39
+ compressed: !!opts.compress,
40
+ });
41
+ return;
42
+ }
43
+ Output.success(`Memory saved: ${id}`);
29
44
  Output.dim(`Project: ${ctx.project.name} | Tags: ${tags.join(', ') || 'none'} | Importance: ${importance}`);
30
45
  }
31
46
  //# sourceMappingURL=save.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"save.js","sourceRoot":"","sources":["../../../src/cli/commands/save.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAe,EAAE,IAAY,EAAE,IAKhE;IACC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACtE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACzE,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEvE,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACrC,IAAI,QAAQ,GAAG,IAAI,CAAC;IAEpB,0EAA0E;IAC1E,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,IAAI,CAAC;YACH,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAC;YAC1E,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAC;YACtC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC/C,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YACzB,MAAM,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,eAAe,MAAM,MAAM,CAAC,iBAAiB,WAAW,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,GAAG,GAAG,CAAC,cAAc,CAAC,CAAC;QACrJ,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC/B,OAAO;QACP,IAAI,EAAE,QAAQ;QACd,IAAI;QACJ,KAAK;QACL,UAAU;KACX,CAAC,CAAC;IAEH,MAAM,CAAC,OAAO,CAAC,iBAAkB,MAAc,CAAC,EAAE,EAAE,CAAC,CAAC;IACtD,MAAM,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,OAAO,CAAC,IAAI,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,kBAAkB,UAAU,EAAE,CAAC,CAAC;AAC9G,CAAC"}
1
+ {"version":3,"file":"save.js","sourceRoot":"","sources":["../../../src/cli/commands/save.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAe,EAAE,IAAY,EAAE,IAMhE;IACC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACtE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACzE,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEvE,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACrC,IAAI,QAAQ,GAAG,IAAI,CAAC;IAEpB,0EAA0E;IAC1E,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,IAAI,CAAC;YACH,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAC;YAC1E,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAC;YACtC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC/C,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YACzB,MAAM,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,eAAe,MAAM,MAAM,CAAC,iBAAiB,WAAW,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,GAAG,GAAG,CAAC,cAAc,CAAC,CAAC;QACrJ,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC/B,OAAO;QACP,IAAI,EAAE,QAAQ;QACd,IAAI;QACJ,KAAK;QACL,UAAU;KACX,CAAC,CAAC;IAEH,MAAM,EAAE,GAAI,MAAc,CAAC,EAAE,CAAC;IAE9B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,MAAM,CAAC,IAAI,CAAC;YACV,EAAE,EAAE,IAAI;YACR,EAAE;YACF,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI;YACzB,OAAO;YACP,IAAI,EAAE,QAAQ;YACd,IAAI;YACJ,KAAK;YACL,UAAU;YACV,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ;SAC5B,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;IACtC,MAAM,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,OAAO,CAAC,IAAI,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,kBAAkB,UAAU,EAAE,CAAC,CAAC;AAC9G,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import type { CLIContext } from '../core.js';
2
2
  export declare function scanCommand(ctx: CLIContext, text: string, opts: {
3
3
  redact?: boolean;
4
+ json?: boolean;
4
5
  }): Promise<void>;
5
6
  //# sourceMappingURL=scan.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/scan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI7C,wBAAsB,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IACrE,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BhB"}
1
+ {"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/scan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI7C,wBAAsB,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IACrE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyChB"}
@@ -3,6 +3,16 @@ import chalk from 'chalk';
3
3
  export async function scanCommand(ctx, text, opts) {
4
4
  const piiDetector = await ctx.getPIIDetector();
5
5
  const result = piiDetector.detect(text);
6
+ if (opts.json) {
7
+ Output.json({
8
+ ok: !result.hasPII && !result.hasSecrets,
9
+ has_pii: result.hasPII,
10
+ has_secrets: result.hasSecrets,
11
+ findings: result.findings,
12
+ redacted_text: opts.redact ? result.redactedText : null,
13
+ });
14
+ return;
15
+ }
6
16
  Output.header('Security Scan Results');
7
17
  if (!result.hasPII && !result.hasSecrets) {
8
18
  Output.success('No PII or secrets detected');
@@ -1 +1 @@
1
- {"version":3,"file":"scan.js","sourceRoot":"","sources":["../../../src/cli/commands/scan.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAe,EAAE,IAAY,EAAE,IAEhE;IACC,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,cAAc,EAAE,CAAC;IAC/C,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAExC,MAAM,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC;IAEvC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACzC,MAAM,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC5E,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,iBAAiB,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC;QAC7G,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACnC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"scan.js","sourceRoot":"","sources":["../../../src/cli/commands/scan.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAe,EAAE,IAAY,EAAE,IAGhE;IACC,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,cAAc,EAAE,CAAC;IAC/C,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAExC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,MAAM,CAAC,IAAI,CAAC;YACV,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU;YACxC,OAAO,EAAE,MAAM,CAAC,MAAM;YACtB,WAAW,EAAE,MAAM,CAAC,UAAU;YAC9B,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI;SACxD,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC;IAEvC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACzC,MAAM,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC5E,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,iBAAiB,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC;QAC7G,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACnC,CAAC;AACH,CAAC"}
@@ -4,5 +4,6 @@ export declare function searchCommand(ctx: CLIContext, query: string, opts: {
4
4
  tags?: string;
5
5
  debug?: boolean;
6
6
  pathMatch?: boolean;
7
+ json?: boolean;
7
8
  }): Promise<void>;
8
9
  //# sourceMappingURL=search.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI7C,wBAAsB,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgChB"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI7C,wBAAsB,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmDhB"}
@@ -9,6 +9,15 @@ export async function searchCommand(ctx, query, opts) {
9
9
  tags,
10
10
  require_path_match: opts.pathMatch,
11
11
  });
12
+ if (opts.json) {
13
+ Output.json({
14
+ query,
15
+ count: enhanced.results.length,
16
+ results: serializeResults(enhanced.results),
17
+ debug_info: enhanced.debug_info,
18
+ });
19
+ return;
20
+ }
12
21
  Output.header(`Search results for "${query}"`);
13
22
  Output.dim(`Found ${enhanced.results.length} results in ${enhanced.debug_info.search_time_ms}ms`);
14
23
  if (enhanced.debug_info.fallback_used) {
@@ -23,11 +32,34 @@ export async function searchCommand(ctx, query, opts) {
23
32
  tags,
24
33
  require_path_match: opts.pathMatch,
25
34
  });
35
+ if (opts.json) {
36
+ Output.json({
37
+ query,
38
+ count: results.length,
39
+ results: serializeResults(results),
40
+ });
41
+ return;
42
+ }
26
43
  Output.header(`Search results for "${query}"`);
27
44
  Output.dim(`Found ${results.length} results`);
28
45
  renderResults(results);
29
46
  }
30
47
  }
48
+ function serializeResults(results) {
49
+ return results.map(r => ({
50
+ id: r.memory.id,
51
+ summary: r.memory.summary,
52
+ text: r.memory.text,
53
+ tags: r.memory.tags,
54
+ paths: r.memory.paths,
55
+ importance: r.memory.importance,
56
+ created_at: r.memory.created_at,
57
+ updated_at: r.memory.updated_at,
58
+ ttl: r.memory.ttl,
59
+ score: r.score,
60
+ snippet: r.snippet,
61
+ }));
62
+ }
31
63
  function renderResults(results) {
32
64
  for (const r of results) {
33
65
  Output.memoryCard({
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/cli/commands/search.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtC,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAe,EAAE,KAAa,EAAE,IAKnE;IACC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACrD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAE7E,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC;YAC5C,CAAC,EAAE,KAAK;YACR,CAAC;YACD,IAAI;YACJ,kBAAkB,EAAE,IAAI,CAAC,SAAS;SACnC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,uBAAuB,KAAK,GAAG,CAAC,CAAC;QAC/C,MAAM,CAAC,GAAG,CAAC,SAAS,QAAQ,CAAC,OAAO,CAAC,MAAM,eAAe,QAAQ,CAAC,UAAU,CAAC,cAAc,IAAI,CAAC,CAAC;QAClG,IAAI,QAAQ,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,kBAAkB,QAAQ,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;YAClC,CAAC,EAAE,KAAK;YACR,CAAC;YACD,IAAI;YACJ,kBAAkB,EAAE,IAAI,CAAC,SAAS;SACnC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,uBAAuB,KAAK,GAAG,CAAC,CAAC;QAC/C,MAAM,CAAC,GAAG,CAAC,SAAS,OAAO,CAAC,MAAM,UAAU,CAAC,CAAC;QAE9C,aAAa,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,OAAuB;IAC5C,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,CAAC,UAAU,CAAC;YAChB,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE;YACf,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO;YACzB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI;YACnB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI;YACnB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK;YACrB,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU;YAC/B,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU;YAC/B,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,OAAO,EAAE,CAAC,CAAC,OAAO;SACnB,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/cli/commands/search.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
1
  import type { CLIContext } from '../core.js';
2
- export declare function statusCommand(ctx: CLIContext): Promise<void>;
2
+ export declare function statusCommand(ctx: CLIContext, opts?: {
3
+ json?: boolean;
4
+ }): Promise<void>;
3
5
  //# sourceMappingURL=status.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAW7C,wBAAsB,aAAa,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAiGlE"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAW7C,wBAAsB,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,GAAE;IACzD,IAAI,CAAC,EAAE,OAAO,CAAC;CACX,GAAG,OAAO,CAAC,IAAI,CAAC,CA2JrB"}
@@ -1,3 +1,4 @@
1
+ import { Output } from '../output.js';
1
2
  import chalk from 'chalk';
2
3
  import { readFileSync } from 'node:fs';
3
4
  import { fileURLToPath } from 'node:url';
@@ -5,7 +6,63 @@ import { dirname, join } from 'node:path';
5
6
  const __filename = fileURLToPath(import.meta.url);
6
7
  const __dirname = dirname(__filename);
7
8
  const pkg = JSON.parse(readFileSync(join(__dirname, '..', '..', '..', 'package.json'), 'utf-8'));
8
- export async function statusCommand(ctx) {
9
+ export async function statusCommand(ctx, opts = {}) {
10
+ const recent = ctx.memoryDb.getRecent({ k: 10000 });
11
+ const projects = ctx.projectManager.listProjects();
12
+ if (opts.json) {
13
+ const importanceCounts = [0, 0, 0, 0, 0];
14
+ for (const m of recent) {
15
+ importanceCounts[(m.importance || 3) - 1]++;
16
+ }
17
+ const tagCounts = new Map();
18
+ for (const m of recent) {
19
+ for (const tag of m.tags) {
20
+ tagCounts.set(tag, (tagCounts.get(tag) || 0) + 1);
21
+ }
22
+ }
23
+ Output.json({
24
+ version: pkg.version,
25
+ node: process.version,
26
+ platform: process.platform,
27
+ project: {
28
+ id: ctx.project.id,
29
+ name: ctx.project.name,
30
+ root: ctx.project.root,
31
+ data: `~/.kratos/projects/${ctx.project.id}/`,
32
+ },
33
+ memory_stats: {
34
+ total: recent.length,
35
+ last_saved: recent.length > 0 ? recent[0].created_at : null,
36
+ importance_distribution: {
37
+ 1: importanceCounts[0],
38
+ 2: importanceCounts[1],
39
+ 3: importanceCounts[2],
40
+ 4: importanceCounts[3],
41
+ 5: importanceCounts[4],
42
+ },
43
+ },
44
+ top_tags: [...tagCounts.entries()]
45
+ .sort((a, b) => b[1] - a[1])
46
+ .slice(0, 8)
47
+ .map(([tag, count]) => ({ tag, count })),
48
+ features: [
49
+ 'FTS5 Full-Text Search',
50
+ 'AES-256-GCM Encryption',
51
+ 'PII/Secret Detection',
52
+ 'Smart Compression',
53
+ 'Auto-Capture Hooks',
54
+ ],
55
+ projects: projects.map(project => ({
56
+ id: project.id,
57
+ name: project.name,
58
+ root: project.root,
59
+ created_at: project.createdAt,
60
+ last_accessed: project.lastAccessed,
61
+ active: project.id === ctx.project.id,
62
+ })),
63
+ });
64
+ return;
65
+ }
9
66
  // Mini banner
10
67
  console.log('');
11
68
  console.log(chalk.bold.red(' KRATOS') + chalk.dim(' — Memory System'));
@@ -19,7 +76,6 @@ export async function statusCommand(ctx) {
19
76
  console.log(` ${chalk.dim('Data:')} ~/.kratos/projects/${ctx.project.id}/`);
20
77
  // Memory stats
21
78
  try {
22
- const recent = ctx.memoryDb.getRecent({ k: 10000 });
23
79
  const lastCreated = recent.length > 0
24
80
  ? new Date(recent[0].created_at).toLocaleString()
25
81
  : 'none';
@@ -72,7 +128,6 @@ export async function statusCommand(ctx) {
72
128
  console.log(` ${chalk.green('●')} Smart Compression`);
73
129
  console.log(` ${chalk.green('●')} Auto-Capture Hooks`);
74
130
  // All known projects
75
- const projects = ctx.projectManager.listProjects();
76
131
  if (projects.length > 1) {
77
132
  console.log('');
78
133
  console.log(chalk.bold.white(` ALL PROJECTS ${chalk.dim(`(${projects.length})`)}`));