kratos-memory 1.0.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 (120) hide show
  1. package/AGENTS.md +25 -0
  2. package/LICENSE +21 -0
  3. package/bin/kratos-cli +7 -0
  4. package/dist/cli/capture-handler.d.ts +13 -0
  5. package/dist/cli/capture-handler.d.ts.map +1 -0
  6. package/dist/cli/capture-handler.js +112 -0
  7. package/dist/cli/capture-handler.js.map +1 -0
  8. package/dist/cli/commands/ask.d.ts +5 -0
  9. package/dist/cli/commands/ask.d.ts.map +1 -0
  10. package/dist/cli/commands/ask.js +64 -0
  11. package/dist/cli/commands/ask.js.map +1 -0
  12. package/dist/cli/commands/capture.d.ts +5 -0
  13. package/dist/cli/commands/capture.d.ts.map +1 -0
  14. package/dist/cli/commands/capture.js +31 -0
  15. package/dist/cli/commands/capture.js.map +1 -0
  16. package/dist/cli/commands/forget.d.ts +3 -0
  17. package/dist/cli/commands/forget.d.ts.map +1 -0
  18. package/dist/cli/commands/forget.js +12 -0
  19. package/dist/cli/commands/forget.js.map +1 -0
  20. package/dist/cli/commands/get.d.ts +3 -0
  21. package/dist/cli/commands/get.d.ts.map +1 -0
  22. package/dist/cli/commands/get.js +28 -0
  23. package/dist/cli/commands/get.js.map +1 -0
  24. package/dist/cli/commands/hooks.d.ts +2 -0
  25. package/dist/cli/commands/hooks.d.ts.map +1 -0
  26. package/dist/cli/commands/hooks.js +136 -0
  27. package/dist/cli/commands/hooks.js.map +1 -0
  28. package/dist/cli/commands/migrate.d.ts +5 -0
  29. package/dist/cli/commands/migrate.d.ts.map +1 -0
  30. package/dist/cli/commands/migrate.js +56 -0
  31. package/dist/cli/commands/migrate.js.map +1 -0
  32. package/dist/cli/commands/recent.d.ts +6 -0
  33. package/dist/cli/commands/recent.d.ts.map +1 -0
  34. package/dist/cli/commands/recent.js +21 -0
  35. package/dist/cli/commands/recent.js.map +1 -0
  36. package/dist/cli/commands/save.d.ts +8 -0
  37. package/dist/cli/commands/save.d.ts.map +1 -0
  38. package/dist/cli/commands/save.js +31 -0
  39. package/dist/cli/commands/save.js.map +1 -0
  40. package/dist/cli/commands/scan.d.ts +5 -0
  41. package/dist/cli/commands/scan.d.ts.map +1 -0
  42. package/dist/cli/commands/scan.js +28 -0
  43. package/dist/cli/commands/scan.js.map +1 -0
  44. package/dist/cli/commands/search.d.ts +8 -0
  45. package/dist/cli/commands/search.d.ts.map +1 -0
  46. package/dist/cli/commands/search.js +45 -0
  47. package/dist/cli/commands/search.js.map +1 -0
  48. package/dist/cli/commands/status.d.ts +3 -0
  49. package/dist/cli/commands/status.d.ts.map +1 -0
  50. package/dist/cli/commands/status.js +89 -0
  51. package/dist/cli/commands/status.js.map +1 -0
  52. package/dist/cli/commands/switch.d.ts +3 -0
  53. package/dist/cli/commands/switch.d.ts.map +1 -0
  54. package/dist/cli/commands/switch.js +18 -0
  55. package/dist/cli/commands/switch.js.map +1 -0
  56. package/dist/cli/core.d.ts +15 -0
  57. package/dist/cli/core.d.ts.map +1 -0
  58. package/dist/cli/core.js +18 -0
  59. package/dist/cli/core.js.map +1 -0
  60. package/dist/cli/index.d.ts +3 -0
  61. package/dist/cli/index.d.ts.map +1 -0
  62. package/dist/cli/index.js +157 -0
  63. package/dist/cli/index.js.map +1 -0
  64. package/dist/cli/output.d.ts +22 -0
  65. package/dist/cli/output.d.ts.map +1 -0
  66. package/dist/cli/output.js +74 -0
  67. package/dist/cli/output.js.map +1 -0
  68. package/dist/compression/factory.d.ts +6 -0
  69. package/dist/compression/factory.d.ts.map +1 -0
  70. package/dist/compression/factory.js +8 -0
  71. package/dist/compression/factory.js.map +1 -0
  72. package/dist/compression/index.d.ts +10 -0
  73. package/dist/compression/index.d.ts.map +1 -0
  74. package/dist/compression/index.js +2 -0
  75. package/dist/compression/index.js.map +1 -0
  76. package/dist/compression/rule-compressor.d.ts +9 -0
  77. package/dist/compression/rule-compressor.d.ts.map +1 -0
  78. package/dist/compression/rule-compressor.js +43 -0
  79. package/dist/compression/rule-compressor.js.map +1 -0
  80. package/dist/memory-server/concept-store-enhanced.d.ts +88 -0
  81. package/dist/memory-server/concept-store-enhanced.d.ts.map +1 -0
  82. package/dist/memory-server/concept-store-enhanced.js +392 -0
  83. package/dist/memory-server/concept-store-enhanced.js.map +1 -0
  84. package/dist/memory-server/concept-store.d.ts +58 -0
  85. package/dist/memory-server/concept-store.d.ts.map +1 -0
  86. package/dist/memory-server/concept-store.js +329 -0
  87. package/dist/memory-server/concept-store.js.map +1 -0
  88. package/dist/memory-server/context-broker.d.ts +63 -0
  89. package/dist/memory-server/context-broker.d.ts.map +1 -0
  90. package/dist/memory-server/context-broker.js +340 -0
  91. package/dist/memory-server/context-broker.js.map +1 -0
  92. package/dist/memory-server/database.d.ts +108 -0
  93. package/dist/memory-server/database.d.ts.map +1 -0
  94. package/dist/memory-server/database.js +690 -0
  95. package/dist/memory-server/database.js.map +1 -0
  96. package/dist/project-manager.d.ts +77 -0
  97. package/dist/project-manager.d.ts.map +1 -0
  98. package/dist/project-manager.js +226 -0
  99. package/dist/project-manager.js.map +1 -0
  100. package/dist/security/data-retention.d.ts +104 -0
  101. package/dist/security/data-retention.d.ts.map +1 -0
  102. package/dist/security/data-retention.js +444 -0
  103. package/dist/security/data-retention.js.map +1 -0
  104. package/dist/security/encryption.d.ts +48 -0
  105. package/dist/security/encryption.d.ts.map +1 -0
  106. package/dist/security/encryption.js +131 -0
  107. package/dist/security/encryption.js.map +1 -0
  108. package/dist/security/pii-detector.d.ts +61 -0
  109. package/dist/security/pii-detector.d.ts.map +1 -0
  110. package/dist/security/pii-detector.js +220 -0
  111. package/dist/security/pii-detector.js.map +1 -0
  112. package/dist/types/index.d.ts +151 -0
  113. package/dist/types/index.d.ts.map +1 -0
  114. package/dist/types/index.js +2 -0
  115. package/dist/types/index.js.map +1 -0
  116. package/dist/utils/logger.d.ts +9 -0
  117. package/dist/utils/logger.d.ts.map +1 -0
  118. package/dist/utils/logger.js +10 -0
  119. package/dist/utils/logger.js.map +1 -0
  120. package/package.json +54 -0
@@ -0,0 +1,21 @@
1
+ import { Output } from '../output.js';
2
+ export async function recentCommand(ctx, opts) {
3
+ const k = opts.limit ? parseInt(opts.limit, 10) : 10;
4
+ const memories = ctx.memoryDb.getRecent({
5
+ k,
6
+ path_prefix: opts.pathPrefix,
7
+ });
8
+ Output.header(`Recent memories (${ctx.project.name})`);
9
+ Output.dim(`Showing ${memories.length} of last ${k} requested`);
10
+ for (const m of memories) {
11
+ Output.memoryCard({
12
+ id: m.id,
13
+ summary: m.summary,
14
+ tags: m.tags,
15
+ paths: m.paths,
16
+ importance: m.importance,
17
+ created_at: m.created_at,
18
+ });
19
+ }
20
+ }
21
+ //# sourceMappingURL=recent.js.map
@@ -0,0 +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"}
@@ -0,0 +1,8 @@
1
+ import type { CLIContext } from '../core.js';
2
+ export declare function saveCommand(ctx: CLIContext, text: string, opts: {
3
+ tags?: string;
4
+ paths?: string;
5
+ importance?: string;
6
+ compress?: boolean;
7
+ }): Promise<void>;
8
+ //# sourceMappingURL=save.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,31 @@
1
+ import { Output } from '../output.js';
2
+ export async function saveCommand(ctx, text, opts) {
3
+ const tags = opts.tags ? opts.tags.split(',').map(t => t.trim()) : [];
4
+ const paths = opts.paths ? opts.paths.split(',').map(p => p.trim()) : [];
5
+ const importance = opts.importance ? parseInt(opts.importance, 10) : 3;
6
+ let summary = text.substring(0, 100);
7
+ let fullText = text;
8
+ // If compress flag is set, use rule-based compression (pure logic, no AI)
9
+ if (opts.compress) {
10
+ try {
11
+ const { createCompressor } = await import('../../compression/factory.js');
12
+ const compressor = createCompressor();
13
+ const result = await compressor.compress(text);
14
+ summary = result.summary;
15
+ Output.dim(`Compressed: ${result.original_length} → ${result.compressed_length} chars (${Math.round(result.compression_ratio * 100)}% reduction)`);
16
+ }
17
+ catch {
18
+ Output.warn('Compression failed, using raw text');
19
+ }
20
+ }
21
+ const result = ctx.memoryDb.save({
22
+ summary,
23
+ text: fullText,
24
+ tags,
25
+ paths,
26
+ importance,
27
+ });
28
+ Output.success(`Memory saved: ${result.id}`);
29
+ Output.dim(`Project: ${ctx.project.name} | Tags: ${tags.join(', ') || 'none'} | Importance: ${importance}`);
30
+ }
31
+ //# sourceMappingURL=save.js.map
@@ -0,0 +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"}
@@ -0,0 +1,5 @@
1
+ import type { CLIContext } from '../core.js';
2
+ export declare function scanCommand(ctx: CLIContext, text: string, opts: {
3
+ redact?: boolean;
4
+ }): Promise<void>;
5
+ //# sourceMappingURL=scan.d.ts.map
@@ -0,0 +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,CA6BhB"}
@@ -0,0 +1,28 @@
1
+ import { Output } from '../output.js';
2
+ import chalk from 'chalk';
3
+ export async function scanCommand(ctx, text, opts) {
4
+ const result = ctx.piiDetector.detect(text);
5
+ Output.header('Security Scan Results');
6
+ if (!result.hasPII && !result.hasSecrets) {
7
+ Output.success('No PII or secrets detected');
8
+ return;
9
+ }
10
+ if (result.hasPII) {
11
+ Output.warn(chalk.yellow('PII detected!'));
12
+ }
13
+ if (result.hasSecrets) {
14
+ Output.error(chalk.red('Secrets detected!'));
15
+ }
16
+ console.log('');
17
+ for (const finding of result.findings) {
18
+ const icon = finding.type === 'secret' ? chalk.red('●') : chalk.yellow('●');
19
+ console.log(` ${icon} ${chalk.bold(finding.pattern)} (${finding.type}, confidence: ${finding.confidence})`);
20
+ console.log(` ${chalk.dim(finding.redacted)}`);
21
+ }
22
+ if (opts.redact) {
23
+ console.log('');
24
+ Output.header('Redacted Text');
25
+ console.log(result.redactedText);
26
+ }
27
+ }
28
+ //# sourceMappingURL=scan.js.map
@@ -0,0 +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,MAAM,GAAG,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAE5C,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"}
@@ -0,0 +1,8 @@
1
+ import type { CLIContext } from '../core.js';
2
+ export declare function searchCommand(ctx: CLIContext, query: string, opts: {
3
+ limit?: string;
4
+ tags?: string;
5
+ debug?: boolean;
6
+ pathMatch?: boolean;
7
+ }): Promise<void>;
8
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,45 @@
1
+ import { Output } from '../output.js';
2
+ export async function searchCommand(ctx, query, opts) {
3
+ const k = opts.limit ? parseInt(opts.limit, 10) : 10;
4
+ const tags = opts.tags ? opts.tags.split(',').map(t => t.trim()) : undefined;
5
+ if (opts.debug) {
6
+ const enhanced = ctx.memoryDb.searchWithDebug({
7
+ q: query,
8
+ k,
9
+ tags,
10
+ require_path_match: opts.pathMatch,
11
+ });
12
+ Output.header(`Search results for "${query}"`);
13
+ Output.dim(`Found ${enhanced.results.length} results in ${enhanced.debug_info.search_time_ms}ms`);
14
+ if (enhanced.debug_info.fallback_used) {
15
+ Output.warn(`Fallback used: ${enhanced.debug_info.fallback_used}`);
16
+ }
17
+ renderResults(enhanced.results);
18
+ }
19
+ else {
20
+ const results = ctx.memoryDb.search({
21
+ q: query,
22
+ k,
23
+ tags,
24
+ require_path_match: opts.pathMatch,
25
+ });
26
+ Output.header(`Search results for "${query}"`);
27
+ Output.dim(`Found ${results.length} results`);
28
+ renderResults(results);
29
+ }
30
+ }
31
+ function renderResults(results) {
32
+ for (const r of results) {
33
+ Output.memoryCard({
34
+ id: r.memory.id,
35
+ summary: r.memory.summary,
36
+ tags: r.memory.tags,
37
+ paths: r.memory.paths,
38
+ importance: r.memory.importance,
39
+ created_at: r.memory.created_at,
40
+ score: r.score,
41
+ snippet: r.snippet,
42
+ });
43
+ }
44
+ }
45
+ //# sourceMappingURL=search.js.map
@@ -0,0 +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,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"}
@@ -0,0 +1,3 @@
1
+ import type { CLIContext } from '../core.js';
2
+ export declare function statusCommand(ctx: CLIContext): Promise<void>;
3
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +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;AAI7C,wBAAsB,aAAa,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAiGlE"}
@@ -0,0 +1,89 @@
1
+ import chalk from 'chalk';
2
+ export async function statusCommand(ctx) {
3
+ // Mini banner
4
+ console.log('');
5
+ console.log(chalk.bold.red(' KRATOS') + chalk.dim(' — Memory System'));
6
+ console.log(chalk.dim(' ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
7
+ // Active project box
8
+ console.log('');
9
+ console.log(chalk.bold.white(' ACTIVE PROJECT'));
10
+ console.log(` ${chalk.green('●')} ${chalk.bold(ctx.project.name)}`);
11
+ console.log(` ${chalk.dim('Root:')} ${ctx.project.root}`);
12
+ console.log(` ${chalk.dim('ID:')} ${ctx.project.id}`);
13
+ console.log(` ${chalk.dim('Data:')} ~/.kratos/projects/${ctx.project.id}/`);
14
+ // Memory stats
15
+ try {
16
+ const recent = ctx.memoryDb.getRecent({ k: 10000 });
17
+ const lastCreated = recent.length > 0
18
+ ? new Date(recent[0].created_at).toLocaleString()
19
+ : 'none';
20
+ // Importance distribution
21
+ const importanceCounts = [0, 0, 0, 0, 0];
22
+ for (const m of recent) {
23
+ importanceCounts[(m.importance || 3) - 1]++;
24
+ }
25
+ console.log('');
26
+ console.log(chalk.bold.white(' MEMORY STATS'));
27
+ console.log(` ${chalk.dim('Total:')} ${chalk.bold.cyan(String(recent.length))}`);
28
+ console.log(` ${chalk.dim('Last saved:')} ${lastCreated}`);
29
+ // Importance bar
30
+ const maxBar = 20;
31
+ const maxCount = Math.max(...importanceCounts, 1);
32
+ console.log(` ${chalk.dim('Importance:')}`);
33
+ for (let i = 4; i >= 0; i--) {
34
+ const barLen = Math.round((importanceCounts[i] / maxCount) * maxBar);
35
+ const bar = '█'.repeat(barLen) + chalk.dim('░'.repeat(maxBar - barLen));
36
+ const colors = [chalk.dim, chalk.blue, chalk.green, chalk.yellow, chalk.red];
37
+ console.log(` ${chalk.dim(`${i + 1}`)} ${colors[i](bar)} ${importanceCounts[i]}`);
38
+ }
39
+ // Tags summary
40
+ const tagCounts = new Map();
41
+ for (const m of recent) {
42
+ for (const tag of m.tags) {
43
+ tagCounts.set(tag, (tagCounts.get(tag) || 0) + 1);
44
+ }
45
+ }
46
+ const topTags = [...tagCounts.entries()]
47
+ .sort((a, b) => b[1] - a[1])
48
+ .slice(0, 8);
49
+ if (topTags.length > 0) {
50
+ console.log('');
51
+ console.log(chalk.bold.white(' TOP TAGS'));
52
+ console.log(' ' + topTags.map(([tag, count]) => chalk.cyan(`#${tag}`) + chalk.dim(`(${count})`)).join(' '));
53
+ }
54
+ }
55
+ catch {
56
+ console.log('');
57
+ console.log(chalk.bold.white(' MEMORY STATS'));
58
+ console.log(` ${chalk.dim('Total:')} 0 (database not initialized)`);
59
+ }
60
+ // Features status
61
+ console.log('');
62
+ console.log(chalk.bold.white(' FEATURES'));
63
+ console.log(` ${chalk.green('●')} FTS5 Full-Text Search`);
64
+ console.log(` ${chalk.green('●')} AES-256-GCM Encryption`);
65
+ console.log(` ${chalk.green('●')} PII/Secret Detection`);
66
+ console.log(` ${chalk.green('●')} Smart Compression`);
67
+ console.log(` ${chalk.green('●')} Auto-Capture Hooks`);
68
+ // All known projects
69
+ const projects = ctx.projectManager.listProjects();
70
+ if (projects.length > 1) {
71
+ console.log('');
72
+ console.log(chalk.bold.white(` ALL PROJECTS ${chalk.dim(`(${projects.length})`)}`));
73
+ for (const p of projects.slice(0, 10)) {
74
+ const isActive = p.id === ctx.project.id;
75
+ const dot = isActive ? chalk.green('●') : chalk.dim('○');
76
+ const name = isActive ? chalk.bold.white(p.name) : chalk.white(p.name);
77
+ const date = chalk.dim(new Date(p.lastAccessed).toLocaleDateString());
78
+ console.log(` ${dot} ${name} ${date}`);
79
+ }
80
+ if (projects.length > 10) {
81
+ console.log(chalk.dim(` ... and ${projects.length - 10} more`));
82
+ }
83
+ }
84
+ // Footer
85
+ console.log('');
86
+ console.log(chalk.dim(` v1.0.0 | Node ${process.version} | ${process.platform}`));
87
+ console.log('');
88
+ }
89
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { CLIContext } from '../core.js';
2
+ export declare function switchCommand(ctx: CLIContext, projectPath: string): Promise<void>;
3
+ //# sourceMappingURL=switch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switch.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/switch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI7C,wBAAsB,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAevF"}
@@ -0,0 +1,18 @@
1
+ import { Output } from '../output.js';
2
+ import { MemoryDatabase } from '../../memory-server/database.js';
3
+ export async function switchCommand(ctx, projectPath) {
4
+ try {
5
+ const newProject = await ctx.projectManager.switchProject(projectPath);
6
+ // Re-initialize memory database for the new project
7
+ ctx.memoryDb = new MemoryDatabase(newProject.root, newProject.id);
8
+ ctx.project = newProject;
9
+ Output.success(`Switched to project: ${newProject.name}`);
10
+ Output.dim(`Root: ${newProject.root}`);
11
+ Output.dim(`Data: ~/.kratos/projects/${newProject.id}/`);
12
+ }
13
+ catch (error) {
14
+ Output.error(`Failed to switch project: ${error instanceof Error ? error.message : 'Unknown error'}`);
15
+ process.exit(1);
16
+ }
17
+ }
18
+ //# sourceMappingURL=switch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switch.js","sourceRoot":"","sources":["../../../src/cli/commands/switch.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAe,EAAE,WAAmB;IACtE,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,cAAc,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAEvE,oDAAoD;QACpD,GAAG,CAAC,QAAQ,GAAG,IAAI,cAAc,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;QAClE,GAAG,CAAC,OAAO,GAAG,UAAU,CAAC;QAEzB,MAAM,CAAC,OAAO,CAAC,wBAAwB,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1D,MAAM,CAAC,GAAG,CAAC,SAAS,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;QACvC,MAAM,CAAC,GAAG,CAAC,4BAA4B,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC;IAC3D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,6BAA6B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QACtG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { MemoryDatabase } from '../memory-server/database.js';
2
+ import { ProjectManager, type Project } from '../project-manager.js';
3
+ import { PIIDetector } from '../security/pii-detector.js';
4
+ export interface CLIContext {
5
+ projectManager: ProjectManager;
6
+ memoryDb: MemoryDatabase;
7
+ piiDetector: PIIDetector;
8
+ project: Project;
9
+ }
10
+ /**
11
+ * Initialize CLI context — detects project, opens database, etc.
12
+ * Reuses the exact same core modules across the system.
13
+ */
14
+ export declare function initCLIContext(): Promise<CLIContext>;
15
+ //# sourceMappingURL=core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/cli/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,KAAK,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE1D,MAAM,WAAW,UAAU;IACzB,cAAc,EAAE,cAAc,CAAC;IAC/B,QAAQ,EAAE,cAAc,CAAC;IACzB,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,UAAU,CAAC,CAY1D"}
@@ -0,0 +1,18 @@
1
+ import { MemoryDatabase } from '../memory-server/database.js';
2
+ import { ProjectManager } from '../project-manager.js';
3
+ import { PIIDetector } from '../security/pii-detector.js';
4
+ /**
5
+ * Initialize CLI context — detects project, opens database, etc.
6
+ * Reuses the exact same core modules across the system.
7
+ */
8
+ export async function initCLIContext() {
9
+ const projectManager = new ProjectManager();
10
+ const piiDetector = new PIIDetector();
11
+ // Auto-detect project from cwd
12
+ const workingDir = process.env.KRATOS_PROJECT_ROOT || process.cwd();
13
+ const project = await projectManager.detectProject(workingDir);
14
+ // Initialize memory database (isolated per-project)
15
+ const memoryDb = new MemoryDatabase(project.root, project.id);
16
+ return { projectManager, memoryDb, piiDetector, project };
17
+ }
18
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/cli/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAS1D;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;IAC5C,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;IAEtC,+BAA+B;IAC/B,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACpE,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAE/D,oDAAoD;IACpD,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IAE9D,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;AAC5D,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,157 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from 'commander';
3
+ import chalk from 'chalk';
4
+ import { initCLIContext } from './core.js';
5
+ import { Output } from './output.js';
6
+ const BANNER = `
7
+ ${chalk.bold.red(' ██╗ ██╗██████╗ █████╗ ████████╗ ██████╗ ███████╗')}
8
+ ${chalk.bold.red(' ██║ ██╔╝██╔══██╗██╔══██╗╚══██╔══╝██╔═══██╗██╔════╝')}
9
+ ${chalk.bold.red(' █████╔╝ ██████╔╝███████║ ██║ ██║ ██║███████╗')}
10
+ ${chalk.bold.red(' ██╔═██╗ ██╔══██╗██╔══██║ ██║ ██║ ██║╚════██║')}
11
+ ${chalk.bold.red(' ██║ ██╗██║ ██║██║ ██║ ██║ ╚██████╔╝███████║')}
12
+ ${chalk.bold.red(' ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝')}
13
+ ${chalk.dim(' ─────────────────────────────────────────────────────')}
14
+ ${chalk.white(' The God of War remembers everything.')}
15
+ ${chalk.dim(` v1.0.0 | CLI-first | FTS5 | Encrypted`)}
16
+ `;
17
+ const program = new Command();
18
+ program
19
+ .name('kratos')
20
+ .description('Kratos Memory — Persistent memory for AI coding agents')
21
+ .version('1.0.0')
22
+ .addHelpText('before', BANNER);
23
+ // ─── save ───────────────────────────────────────────────
24
+ program
25
+ .command('save <text>')
26
+ .description('Save a memory')
27
+ .option('-t, --tags <tags>', 'Comma-separated tags')
28
+ .option('-p, --paths <paths>', 'Comma-separated file paths')
29
+ .option('-i, --importance <level>', 'Importance 1-5 (default: 3)')
30
+ .option('-c, --compress', 'Compress text before saving')
31
+ .action(async (text, opts) => {
32
+ const ctx = await initCLIContext();
33
+ const { saveCommand } = await import('./commands/save.js');
34
+ await saveCommand(ctx, text, opts);
35
+ });
36
+ // ─── search ─────────────────────────────────────────────
37
+ program
38
+ .command('search <query>')
39
+ .description('Search memories')
40
+ .option('-l, --limit <n>', 'Max results (default: 10)')
41
+ .option('-t, --tags <tags>', 'Filter by tags')
42
+ .option('-d, --debug', 'Show debug info')
43
+ .option('--path-match', 'Require path matching')
44
+ .action(async (query, opts) => {
45
+ const ctx = await initCLIContext();
46
+ const { searchCommand } = await import('./commands/search.js');
47
+ await searchCommand(ctx, query, opts);
48
+ });
49
+ // ─── ask ────────────────────────────────────────────────
50
+ program
51
+ .command('ask <question>')
52
+ .description('Ask a natural language question about your memories')
53
+ .option('-l, --limit <n>', 'Max results (default: 10)')
54
+ .action(async (question, opts) => {
55
+ const ctx = await initCLIContext();
56
+ const { askCommand } = await import('./commands/ask.js');
57
+ await askCommand(ctx, question, opts);
58
+ });
59
+ // ─── recent ─────────────────────────────────────────────
60
+ program
61
+ .command('recent')
62
+ .description('Get recent memories')
63
+ .option('-l, --limit <n>', 'Max results (default: 10)')
64
+ .option('--path-prefix <prefix>', 'Filter by path prefix')
65
+ .action(async (opts) => {
66
+ const ctx = await initCLIContext();
67
+ const { recentCommand } = await import('./commands/recent.js');
68
+ await recentCommand(ctx, opts);
69
+ });
70
+ // ─── get ────────────────────────────────────────────────
71
+ program
72
+ .command('get <id>')
73
+ .description('Get a specific memory by ID')
74
+ .action(async (id) => {
75
+ const ctx = await initCLIContext();
76
+ const { getCommand } = await import('./commands/get.js');
77
+ await getCommand(ctx, id);
78
+ });
79
+ // ─── forget ─────────────────────────────────────────────
80
+ program
81
+ .command('forget <id>')
82
+ .description('Delete a memory by ID')
83
+ .action(async (id) => {
84
+ const ctx = await initCLIContext();
85
+ const { forgetCommand } = await import('./commands/forget.js');
86
+ await forgetCommand(ctx, id);
87
+ });
88
+ // ─── status ─────────────────────────────────────────────
89
+ program
90
+ .command('status')
91
+ .description('Show system status and statistics')
92
+ .action(async () => {
93
+ const ctx = await initCLIContext();
94
+ const { statusCommand } = await import('./commands/status.js');
95
+ await statusCommand(ctx);
96
+ });
97
+ // ─── switch ─────────────────────────────────────────────
98
+ program
99
+ .command('switch <project>')
100
+ .description('Switch to a different project')
101
+ .action(async (projectPath) => {
102
+ const ctx = await initCLIContext();
103
+ const { switchCommand } = await import('./commands/switch.js');
104
+ await switchCommand(ctx, projectPath);
105
+ });
106
+ // ─── scan ───────────────────────────────────────────────
107
+ program
108
+ .command('scan <text>')
109
+ .description('Scan text for PII and secrets')
110
+ .option('-r, --redact', 'Show redacted version')
111
+ .action(async (text, opts) => {
112
+ const ctx = await initCLIContext();
113
+ const { scanCommand } = await import('./commands/scan.js');
114
+ await scanCommand(ctx, text, opts);
115
+ });
116
+ // ─── migrate ────────────────────────────────────────────
117
+ program
118
+ .command('migrate')
119
+ .description('Verify and index existing data for CLI use')
120
+ .option('--from <path>', 'Custom data location')
121
+ .action(async (opts) => {
122
+ const ctx = await initCLIContext();
123
+ const { migrateCommand } = await import('./commands/migrate.js');
124
+ await migrateCommand(ctx, opts);
125
+ });
126
+ // ─── hooks ──────────────────────────────────────────────
127
+ program
128
+ .command('hooks <action>')
129
+ .description('Manage auto-capture hooks (install/uninstall)')
130
+ .action(async (action) => {
131
+ const { hooksCommand } = await import('./commands/hooks.js');
132
+ await hooksCommand(action);
133
+ });
134
+ // ─── capture (hidden — invoked by hooks) ────────────────
135
+ program
136
+ .command('capture', { hidden: true })
137
+ .description('Process auto-captured events (internal)')
138
+ .option('--event <type>', 'Event type')
139
+ .action(async (opts) => {
140
+ const ctx = await initCLIContext();
141
+ const { captureCommand } = await import('./commands/capture.js');
142
+ await captureCommand(ctx, opts);
143
+ });
144
+ // ─── Main ───────────────────────────────────────────────
145
+ async function main() {
146
+ try {
147
+ await program.parseAsync(process.argv);
148
+ }
149
+ catch (error) {
150
+ if (error instanceof Error) {
151
+ Output.error(error.message);
152
+ }
153
+ process.exit(1);
154
+ }
155
+ }
156
+ main();
157
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ export declare class Output {
2
+ static success(msg: string): void;
3
+ static error(msg: string): void;
4
+ static warn(msg: string): void;
5
+ static info(msg: string): void;
6
+ static dim(msg: string): void;
7
+ static header(msg: string): void;
8
+ static json(data: unknown): void;
9
+ static table(rows: Record<string, string | number | boolean | undefined | null>[]): void;
10
+ static memoryCard(memory: {
11
+ id: string;
12
+ summary: string;
13
+ text?: string;
14
+ tags?: string[];
15
+ paths?: string[];
16
+ importance?: number;
17
+ created_at?: number;
18
+ score?: number;
19
+ snippet?: string;
20
+ }): void;
21
+ }
22
+ //# sourceMappingURL=output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/cli/output.ts"],"names":[],"mappings":"AAEA,qBAAa,MAAM;IACjB,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIjC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI/B,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI9B,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI9B,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI7B,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAKhC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAIhC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI;IAmCxF,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE;QACxB,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,IAAI;CAwBT"}