kratos-memory 1.3.3 → 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.
- package/README.md +11 -9
- package/dist/cli/commands/ask.d.ts +1 -0
- package/dist/cli/commands/ask.d.ts.map +1 -1
- package/dist/cli/commands/ask.js +57 -0
- package/dist/cli/commands/ask.js.map +1 -1
- package/dist/cli/commands/forget.d.ts +3 -1
- package/dist/cli/commands/forget.d.ts.map +1 -1
- package/dist/cli/commands/forget.js +17 -1
- package/dist/cli/commands/forget.js.map +1 -1
- package/dist/cli/commands/get.d.ts +3 -1
- package/dist/cli/commands/get.d.ts.map +1 -1
- package/dist/cli/commands/get.js +5 -1
- package/dist/cli/commands/get.js.map +1 -1
- package/dist/cli/commands/pin.d.ts +1 -0
- package/dist/cli/commands/pin.d.ts.map +1 -1
- package/dist/cli/commands/pin.js +19 -0
- package/dist/cli/commands/pin.js.map +1 -1
- package/dist/cli/commands/recent.d.ts +1 -0
- package/dist/cli/commands/recent.d.ts.map +1 -1
- package/dist/cli/commands/recent.js +8 -0
- package/dist/cli/commands/recent.js.map +1 -1
- package/dist/cli/commands/save.d.ts +1 -0
- package/dist/cli/commands/save.d.ts.map +1 -1
- package/dist/cli/commands/save.js +16 -1
- package/dist/cli/commands/save.js.map +1 -1
- package/dist/cli/commands/scan.d.ts +1 -0
- package/dist/cli/commands/scan.d.ts.map +1 -1
- package/dist/cli/commands/scan.js +10 -0
- package/dist/cli/commands/scan.js.map +1 -1
- package/dist/cli/commands/search.d.ts +1 -0
- package/dist/cli/commands/search.d.ts.map +1 -1
- package/dist/cli/commands/search.js +32 -0
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/status.d.ts +3 -1
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +58 -3
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/summary.d.ts +3 -1
- package/dist/cli/commands/summary.d.ts.map +1 -1
- package/dist/cli/commands/summary.js +37 -6
- package/dist/cli/commands/summary.js.map +1 -1
- package/dist/cli/commands/switch.d.ts +3 -1
- package/dist/cli/commands/switch.d.ts.map +1 -1
- package/dist/cli/commands/switch.js +13 -1
- package/dist/cli/commands/switch.js.map +1 -1
- package/dist/cli/commands/update.d.ts +1 -0
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +21 -0
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/index.js +22 -10
- package/dist/cli/index.js.map +1 -1
- package/dist/memory-server/database.d.ts +2 -0
- package/dist/memory-server/database.d.ts.map +1 -1
- package/dist/memory-server/database.js +56 -22
- package/dist/memory-server/database.js.map +1 -1
- package/dist/project-manager.d.ts +1 -0
- package/dist/project-manager.d.ts.map +1 -1
- package/dist/project-manager.js +16 -2
- package/dist/project-manager.js.map +1 -1
- package/dist/security/pii-detector.d.ts +2 -0
- package/dist/security/pii-detector.d.ts.map +1 -1
- package/dist/security/pii-detector.js +60 -8
- package/dist/security/pii-detector.js.map +1 -1
- package/package.json +2 -1
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 +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,
|
|
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"}
|
package/dist/cli/commands/ask.js
CHANGED
|
@@ -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":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAe,EAAE,QAAgB,EAAE,
|
|
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
|
|
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,
|
|
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;
|
|
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
|
|
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,
|
|
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"}
|
package/dist/cli/commands/get.js
CHANGED
|
@@ -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;
|
|
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 +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;
|
|
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"}
|
package/dist/cli/commands/pin.js
CHANGED
|
@@ -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,
|
|
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"}
|
|
@@ -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;
|
|
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,
|
|
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"}
|
|
@@ -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;
|
|
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
|
-
|
|
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,
|
|
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 +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;
|
|
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,
|
|
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"}
|
|
@@ -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;
|
|
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,
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/cli/commands/search.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,
|
|
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})`)}`));
|