@aitytech/agentkits-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 (116) hide show
  1. package/README.md +250 -0
  2. package/dist/cache-manager.d.ts +134 -0
  3. package/dist/cache-manager.d.ts.map +1 -0
  4. package/dist/cache-manager.js +407 -0
  5. package/dist/cache-manager.js.map +1 -0
  6. package/dist/cli/save.d.ts +20 -0
  7. package/dist/cli/save.d.ts.map +1 -0
  8. package/dist/cli/save.js +94 -0
  9. package/dist/cli/save.js.map +1 -0
  10. package/dist/cli/setup.d.ts +18 -0
  11. package/dist/cli/setup.d.ts.map +1 -0
  12. package/dist/cli/setup.js +163 -0
  13. package/dist/cli/setup.js.map +1 -0
  14. package/dist/cli/viewer.d.ts +21 -0
  15. package/dist/cli/viewer.d.ts.map +1 -0
  16. package/dist/cli/viewer.js +182 -0
  17. package/dist/cli/viewer.js.map +1 -0
  18. package/dist/hnsw-index.d.ts +111 -0
  19. package/dist/hnsw-index.d.ts.map +1 -0
  20. package/dist/hnsw-index.js +781 -0
  21. package/dist/hnsw-index.js.map +1 -0
  22. package/dist/hooks/cli.d.ts +20 -0
  23. package/dist/hooks/cli.d.ts.map +1 -0
  24. package/dist/hooks/cli.js +102 -0
  25. package/dist/hooks/cli.js.map +1 -0
  26. package/dist/hooks/context.d.ts +31 -0
  27. package/dist/hooks/context.d.ts.map +1 -0
  28. package/dist/hooks/context.js +64 -0
  29. package/dist/hooks/context.js.map +1 -0
  30. package/dist/hooks/index.d.ts +16 -0
  31. package/dist/hooks/index.d.ts.map +1 -0
  32. package/dist/hooks/index.js +20 -0
  33. package/dist/hooks/index.js.map +1 -0
  34. package/dist/hooks/observation.d.ts +30 -0
  35. package/dist/hooks/observation.d.ts.map +1 -0
  36. package/dist/hooks/observation.js +79 -0
  37. package/dist/hooks/observation.js.map +1 -0
  38. package/dist/hooks/service.d.ts +102 -0
  39. package/dist/hooks/service.d.ts.map +1 -0
  40. package/dist/hooks/service.js +454 -0
  41. package/dist/hooks/service.js.map +1 -0
  42. package/dist/hooks/session-init.d.ts +30 -0
  43. package/dist/hooks/session-init.d.ts.map +1 -0
  44. package/dist/hooks/session-init.js +54 -0
  45. package/dist/hooks/session-init.js.map +1 -0
  46. package/dist/hooks/summarize.d.ts +30 -0
  47. package/dist/hooks/summarize.d.ts.map +1 -0
  48. package/dist/hooks/summarize.js +74 -0
  49. package/dist/hooks/summarize.js.map +1 -0
  50. package/dist/hooks/types.d.ts +193 -0
  51. package/dist/hooks/types.d.ts.map +1 -0
  52. package/dist/hooks/types.js +137 -0
  53. package/dist/hooks/types.js.map +1 -0
  54. package/dist/index.d.ts +173 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.js +564 -0
  57. package/dist/index.js.map +1 -0
  58. package/dist/mcp/index.d.ts +9 -0
  59. package/dist/mcp/index.d.ts.map +1 -0
  60. package/dist/mcp/index.js +9 -0
  61. package/dist/mcp/index.js.map +1 -0
  62. package/dist/mcp/server.d.ts +22 -0
  63. package/dist/mcp/server.d.ts.map +1 -0
  64. package/dist/mcp/server.js +368 -0
  65. package/dist/mcp/server.js.map +1 -0
  66. package/dist/mcp/tools.d.ts +14 -0
  67. package/dist/mcp/tools.d.ts.map +1 -0
  68. package/dist/mcp/tools.js +110 -0
  69. package/dist/mcp/tools.js.map +1 -0
  70. package/dist/mcp/types.d.ts +100 -0
  71. package/dist/mcp/types.d.ts.map +1 -0
  72. package/dist/mcp/types.js +9 -0
  73. package/dist/mcp/types.js.map +1 -0
  74. package/dist/migration.d.ts +77 -0
  75. package/dist/migration.d.ts.map +1 -0
  76. package/dist/migration.js +457 -0
  77. package/dist/migration.js.map +1 -0
  78. package/dist/sqljs-backend.d.ts +128 -0
  79. package/dist/sqljs-backend.d.ts.map +1 -0
  80. package/dist/sqljs-backend.js +623 -0
  81. package/dist/sqljs-backend.js.map +1 -0
  82. package/dist/types.d.ts +481 -0
  83. package/dist/types.d.ts.map +1 -0
  84. package/dist/types.js +73 -0
  85. package/dist/types.js.map +1 -0
  86. package/hooks.json +46 -0
  87. package/package.json +67 -0
  88. package/src/__tests__/index.test.ts +407 -0
  89. package/src/__tests__/sqljs-backend.test.ts +410 -0
  90. package/src/cache-manager.ts +515 -0
  91. package/src/cli/save.ts +109 -0
  92. package/src/cli/setup.ts +203 -0
  93. package/src/cli/viewer.ts +218 -0
  94. package/src/hnsw-index.ts +1013 -0
  95. package/src/hooks/__tests__/handlers.test.ts +298 -0
  96. package/src/hooks/__tests__/integration.test.ts +431 -0
  97. package/src/hooks/__tests__/service.test.ts +487 -0
  98. package/src/hooks/__tests__/types.test.ts +341 -0
  99. package/src/hooks/cli.ts +121 -0
  100. package/src/hooks/context.ts +77 -0
  101. package/src/hooks/index.ts +23 -0
  102. package/src/hooks/observation.ts +102 -0
  103. package/src/hooks/service.ts +582 -0
  104. package/src/hooks/session-init.ts +70 -0
  105. package/src/hooks/summarize.ts +89 -0
  106. package/src/hooks/types.ts +365 -0
  107. package/src/index.ts +755 -0
  108. package/src/mcp/__tests__/server.test.ts +181 -0
  109. package/src/mcp/index.ts +9 -0
  110. package/src/mcp/server.ts +441 -0
  111. package/src/mcp/tools.ts +113 -0
  112. package/src/mcp/types.ts +109 -0
  113. package/src/migration.ts +574 -0
  114. package/src/sql.js.d.ts +70 -0
  115. package/src/sqljs-backend.ts +789 -0
  116. package/src/types.ts +715 -0
@@ -0,0 +1,163 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * AgentKits Memory Setup CLI
4
+ *
5
+ * Sets up memory hooks in a project's .claude/settings.json
6
+ *
7
+ * Usage:
8
+ * npx agentkits-memory-setup [options]
9
+ *
10
+ * Options:
11
+ * --project-dir=X Project directory (default: cwd)
12
+ * --force Overwrite existing hooks
13
+ * --json Output result as JSON
14
+ *
15
+ * @module @agentkits/memory/cli/setup
16
+ */
17
+ import * as fs from 'node:fs';
18
+ import * as path from 'node:path';
19
+ const args = process.argv.slice(2);
20
+ const MEMORY_HOOKS = {
21
+ SessionStart: [
22
+ {
23
+ matcher: '',
24
+ hooks: [
25
+ {
26
+ type: 'command',
27
+ command: 'npx --yes agentkits-memory-hook context',
28
+ timeout: 10,
29
+ },
30
+ ],
31
+ },
32
+ ],
33
+ Stop: [
34
+ {
35
+ matcher: '',
36
+ hooks: [
37
+ {
38
+ type: 'command',
39
+ command: 'npx --yes agentkits-memory-hook summarize',
40
+ timeout: 10,
41
+ },
42
+ ],
43
+ },
44
+ ],
45
+ };
46
+ function parseArgs() {
47
+ const parsed = {};
48
+ for (const arg of args) {
49
+ if (arg.startsWith('--')) {
50
+ const eqIndex = arg.indexOf('=');
51
+ if (eqIndex > 0) {
52
+ const key = arg.slice(2, eqIndex);
53
+ const value = arg.slice(eqIndex + 1);
54
+ parsed[key] = value;
55
+ }
56
+ else {
57
+ parsed[arg.slice(2)] = true;
58
+ }
59
+ }
60
+ }
61
+ return parsed;
62
+ }
63
+ function mergeHooks(existing, newHooks, force) {
64
+ if (!existing || force) {
65
+ return { ...existing, ...newHooks };
66
+ }
67
+ const merged = { ...existing };
68
+ for (const [event, hooks] of Object.entries(newHooks)) {
69
+ if (!hooks)
70
+ continue;
71
+ const existingHooks = merged[event];
72
+ if (!existingHooks) {
73
+ merged[event] = hooks;
74
+ }
75
+ else {
76
+ // Check if memory hook already exists
77
+ const hasMemoryHook = existingHooks.some((h) => h.hooks.some((hook) => hook.command.includes('agentkits-memory')));
78
+ if (!hasMemoryHook) {
79
+ // Append memory hooks
80
+ merged[event] = [...existingHooks, ...hooks];
81
+ }
82
+ }
83
+ }
84
+ return merged;
85
+ }
86
+ async function main() {
87
+ const options = parseArgs();
88
+ const projectDir = options['project-dir'] || process.env.CLAUDE_PROJECT_DIR || process.cwd();
89
+ const force = !!options.force;
90
+ const asJson = !!options.json;
91
+ const claudeDir = path.join(projectDir, '.claude');
92
+ const settingsPath = path.join(claudeDir, 'settings.json');
93
+ const memoryDir = path.join(claudeDir, 'memory');
94
+ try {
95
+ // Create directories
96
+ if (!fs.existsSync(claudeDir)) {
97
+ fs.mkdirSync(claudeDir, { recursive: true });
98
+ }
99
+ if (!fs.existsSync(memoryDir)) {
100
+ fs.mkdirSync(memoryDir, { recursive: true });
101
+ }
102
+ // Load or create settings
103
+ let settings = {};
104
+ if (fs.existsSync(settingsPath)) {
105
+ const content = fs.readFileSync(settingsPath, 'utf-8');
106
+ settings = JSON.parse(content);
107
+ }
108
+ // Merge hooks
109
+ settings.hooks = mergeHooks(settings.hooks, MEMORY_HOOKS, force);
110
+ // Write settings
111
+ fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2));
112
+ // Create initial memory files if they don't exist
113
+ const activeContextPath = path.join(memoryDir, 'active-context.md');
114
+ if (!fs.existsSync(activeContextPath)) {
115
+ fs.writeFileSync(activeContextPath, `# Active Context
116
+
117
+ **Task**: None
118
+ **Status**: Ready
119
+ **Updated**: ${new Date().toISOString()}
120
+
121
+ ## Current Focus
122
+
123
+ No active task.
124
+
125
+ ## Notes
126
+
127
+ Memory system initialized.
128
+ `);
129
+ }
130
+ const result = {
131
+ success: true,
132
+ settingsPath,
133
+ memoryDir,
134
+ hooksAdded: Object.keys(MEMORY_HOOKS),
135
+ message: 'Memory hooks configured successfully',
136
+ };
137
+ if (asJson) {
138
+ console.log(JSON.stringify(result, null, 2));
139
+ }
140
+ else {
141
+ console.log('\n✅ AgentKits Memory Setup Complete\n');
142
+ console.log(`Settings: ${settingsPath}`);
143
+ console.log(`Memory: ${memoryDir}`);
144
+ console.log(`\nHooks added: ${result.hooksAdded.join(', ')}`);
145
+ console.log('\nRestart Claude Code to activate memory hooks.\n');
146
+ }
147
+ }
148
+ catch (error) {
149
+ const result = {
150
+ success: false,
151
+ error: error instanceof Error ? error.message : String(error),
152
+ };
153
+ if (asJson) {
154
+ console.log(JSON.stringify(result, null, 2));
155
+ }
156
+ else {
157
+ console.error('❌ Setup failed:', result.error);
158
+ }
159
+ process.exit(1);
160
+ }
161
+ }
162
+ main();
163
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAmBnC,MAAM,YAAY,GAAgB;IAChC,YAAY,EAAE;QACZ;YACE,OAAO,EAAE,EAAE;YACX,KAAK,EAAE;gBACL;oBACE,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,yCAAyC;oBAClD,OAAO,EAAE,EAAE;iBACZ;aACF;SACF;KACF;IACD,IAAI,EAAE;QACJ;YACE,OAAO,EAAE,EAAE;YACX,KAAK,EAAE;gBACL;oBACE,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,2CAA2C;oBACpD,OAAO,EAAE,EAAE;iBACZ;aACF;SACF;KACF;CACF,CAAC;AAEF,SAAS,SAAS;IAChB,MAAM,MAAM,GAAqC,EAAE,CAAC;IACpD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;gBAChB,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBAClC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;gBACrC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACtB,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAC9B,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,UAAU,CACjB,QAAiC,EACjC,QAAqB,EACrB,KAAc;IAEd,IAAI,CAAC,QAAQ,IAAI,KAAK,EAAE,CAAC;QACvB,OAAO,EAAE,GAAG,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAAC;IACtC,CAAC;IAED,MAAM,MAAM,GAAgB,EAAE,GAAG,QAAQ,EAAE,CAAC;IAE5C,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtD,IAAI,CAAC,KAAK;YAAE,SAAS;QAErB,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,sCAAsC;YACtC,MAAM,aAAa,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAY,EAAE,EAAE,CACxD,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAClE,CAAC;YAEF,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,sBAAsB;gBACtB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,aAAa,EAAE,GAAG,KAAK,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,OAAO,GAAG,SAAS,EAAE,CAAC;IAC5B,MAAM,UAAU,GAAI,OAAO,CAAC,aAAa,CAAY,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACzG,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IAC9B,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IAE9B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACnD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAEjD,IAAI,CAAC;QACH,qBAAqB;QACrB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,0BAA0B;QAC1B,IAAI,QAAQ,GAAmB,EAAE,CAAC;QAClC,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YACvD,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;QAED,cAAc;QACd,QAAQ,CAAC,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;QAEjE,iBAAiB;QACjB,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAElE,kDAAkD;QAClD,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;QACpE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACtC,EAAE,CAAC,aAAa,CACd,iBAAiB,EACjB;;;;eAIO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;;;;;;;;;CAStC,CACM,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG;YACb,OAAO,EAAE,IAAI;YACb,YAAY;YACZ,SAAS;YACT,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;YACrC,OAAO,EAAE,sCAAsC;SAChD,CAAC;QAEF,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;YACrD,OAAO,CAAC,GAAG,CAAC,aAAa,YAAY,EAAE,CAAC,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,aAAa,SAAS,EAAE,CAAC,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,kBAAkB,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC9D,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,GAAG;YACb,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,CAAC;QAEF,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC"}
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * AgentKits Memory Viewer CLI
4
+ *
5
+ * Simple CLI to view memory database contents.
6
+ *
7
+ * Usage:
8
+ * npx agentkits-memory-viewer [options]
9
+ *
10
+ * Options:
11
+ * --stats Show database statistics
12
+ * --list List all entries
13
+ * --namespace=X Filter by namespace
14
+ * --limit=N Limit results (default: 20)
15
+ * --json Output as JSON
16
+ * --export Export all to JSON file
17
+ *
18
+ * @module @agentkits/memory/cli/viewer
19
+ */
20
+ export {};
21
+ //# sourceMappingURL=viewer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viewer.d.ts","sourceRoot":"","sources":["../../src/cli/viewer.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;GAiBG"}
@@ -0,0 +1,182 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * AgentKits Memory Viewer CLI
4
+ *
5
+ * Simple CLI to view memory database contents.
6
+ *
7
+ * Usage:
8
+ * npx agentkits-memory-viewer [options]
9
+ *
10
+ * Options:
11
+ * --stats Show database statistics
12
+ * --list List all entries
13
+ * --namespace=X Filter by namespace
14
+ * --limit=N Limit results (default: 20)
15
+ * --json Output as JSON
16
+ * --export Export all to JSON file
17
+ *
18
+ * @module @agentkits/memory/cli/viewer
19
+ */
20
+ import * as fs from 'node:fs';
21
+ import * as path from 'node:path';
22
+ import { createRequire } from 'node:module';
23
+ import initSqlJs from 'sql.js';
24
+ const args = process.argv.slice(2);
25
+ const projectDir = process.env.CLAUDE_PROJECT_DIR || process.cwd();
26
+ function parseArgs() {
27
+ const parsed = {};
28
+ for (const arg of args) {
29
+ if (arg.startsWith('--')) {
30
+ const [key, value] = arg.slice(2).split('=');
31
+ parsed[key] = value ?? true;
32
+ }
33
+ }
34
+ return parsed;
35
+ }
36
+ async function loadDatabase() {
37
+ const require = createRequire(import.meta.url);
38
+ const sqlJsPath = require.resolve('sql.js');
39
+ const SQL = await initSqlJs({
40
+ locateFile: (file) => path.join(path.dirname(sqlJsPath), file),
41
+ });
42
+ const dbPath = path.join(projectDir, '.claude/memory/memory.db');
43
+ if (fs.existsSync(dbPath)) {
44
+ const buffer = fs.readFileSync(dbPath);
45
+ return new SQL.Database(new Uint8Array(buffer));
46
+ }
47
+ else {
48
+ console.log(`\n📭 No database found at: ${dbPath}\n`);
49
+ console.log('Run Claude Code with memory MCP server to create entries.');
50
+ process.exit(0);
51
+ }
52
+ }
53
+ async function main() {
54
+ const options = parseArgs();
55
+ const limit = parseInt(options.limit, 10) || 20;
56
+ const namespace = options.namespace;
57
+ const asJson = !!options.json;
58
+ try {
59
+ const db = await loadDatabase();
60
+ if (options.stats) {
61
+ // Get stats
62
+ const totalResult = db.exec('SELECT COUNT(*) as count FROM memory_entries');
63
+ const total = totalResult[0]?.values[0]?.[0] || 0;
64
+ const nsResult = db.exec('SELECT namespace, COUNT(*) FROM memory_entries GROUP BY namespace');
65
+ const byNamespace = {};
66
+ if (nsResult[0]) {
67
+ for (const row of nsResult[0].values) {
68
+ byNamespace[row[0]] = row[1];
69
+ }
70
+ }
71
+ const typeResult = db.exec('SELECT type, COUNT(*) FROM memory_entries GROUP BY type');
72
+ const byType = {};
73
+ if (typeResult[0]) {
74
+ for (const row of typeResult[0].values) {
75
+ byType[row[0]] = row[1];
76
+ }
77
+ }
78
+ if (asJson) {
79
+ console.log(JSON.stringify({ total, byNamespace, byType }, null, 2));
80
+ }
81
+ else {
82
+ console.log('\n📊 Memory Database Statistics\n');
83
+ console.log(`Total Entries: ${total}`);
84
+ console.log('\nEntries by Namespace:');
85
+ for (const [ns, count] of Object.entries(byNamespace)) {
86
+ console.log(` ${ns}: ${count}`);
87
+ }
88
+ console.log('\nEntries by Type:');
89
+ for (const [type, count] of Object.entries(byType)) {
90
+ console.log(` ${type}: ${count}`);
91
+ }
92
+ console.log(`\nDatabase: ${projectDir}/.claude/memory/memory.db\n`);
93
+ }
94
+ db.close();
95
+ return;
96
+ }
97
+ if (options.export) {
98
+ const result = db.exec('SELECT * FROM memory_entries');
99
+ if (!result[0]) {
100
+ console.log('No entries to export.');
101
+ db.close();
102
+ return;
103
+ }
104
+ const columns = result[0].columns;
105
+ const entries = result[0].values.map(row => {
106
+ const entry = {};
107
+ columns.forEach((col, i) => {
108
+ entry[col] = row[i];
109
+ });
110
+ return entry;
111
+ });
112
+ const filename = `memory-export-${Date.now()}.json`;
113
+ fs.writeFileSync(filename, JSON.stringify({ entries, exportedAt: new Date().toISOString() }, null, 2));
114
+ console.log(`✓ Exported ${entries.length} entries to ${filename}`);
115
+ db.close();
116
+ return;
117
+ }
118
+ // Default: list entries
119
+ let query = 'SELECT id, key, content, type, namespace, tags, created_at FROM memory_entries';
120
+ const params = [];
121
+ if (namespace) {
122
+ query += ' WHERE namespace = ?';
123
+ params.push(namespace);
124
+ }
125
+ query += ' ORDER BY created_at DESC LIMIT ?';
126
+ params.push(String(limit));
127
+ const stmt = db.prepare(query);
128
+ stmt.bind(params);
129
+ const entries = [];
130
+ while (stmt.step()) {
131
+ const row = stmt.getAsObject();
132
+ entries.push({
133
+ id: row.id,
134
+ key: row.key,
135
+ content: row.content,
136
+ type: row.type,
137
+ namespace: row.namespace,
138
+ tags: row.tags,
139
+ created_at: row.created_at,
140
+ });
141
+ }
142
+ stmt.free();
143
+ if (entries.length === 0) {
144
+ console.log('\n📭 No memories found in database.\n');
145
+ console.log(`Database: ${projectDir}/.claude/memory/memory.db`);
146
+ db.close();
147
+ return;
148
+ }
149
+ if (asJson) {
150
+ console.log(JSON.stringify(entries, null, 2));
151
+ db.close();
152
+ return;
153
+ }
154
+ console.log(`\n📚 Memory Database (${entries.length} entries)\n`);
155
+ console.log(`Database: ${projectDir}/.claude/memory/memory.db\n`);
156
+ console.log('─'.repeat(80));
157
+ for (const entry of entries) {
158
+ const date = new Date(entry.created_at).toLocaleString();
159
+ const content = entry.content.length > 100
160
+ ? entry.content.slice(0, 100) + '...'
161
+ : entry.content;
162
+ const tags = JSON.parse(entry.tags || '[]').join(', ') || 'none';
163
+ console.log(`\n[${entry.namespace}] ${entry.key}`);
164
+ console.log(` Type: ${entry.type} | Tags: ${tags}`);
165
+ console.log(` Created: ${date}`);
166
+ console.log(` Content: ${content}`);
167
+ console.log('─'.repeat(80));
168
+ }
169
+ // Get total count
170
+ const countResult = db.exec('SELECT COUNT(*) FROM memory_entries');
171
+ const totalCount = countResult[0]?.values[0]?.[0] || entries.length;
172
+ console.log(`\nShowing ${entries.length} of ${totalCount} total entries`);
173
+ console.log('Use --limit=N to see more, --namespace=X to filter\n');
174
+ db.close();
175
+ }
176
+ catch (error) {
177
+ console.error('Error:', error instanceof Error ? error.message : error);
178
+ process.exit(1);
179
+ }
180
+ }
181
+ main();
182
+ //# sourceMappingURL=viewer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viewer.js","sourceRoot":"","sources":["../../src/cli/viewer.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,SAAwC,MAAM,QAAQ,CAAC;AAE9D,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;AAEnE,SAAS,SAAS;IAChB,MAAM,MAAM,GAAqC,EAAE,CAAC;IACpD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC7C,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,YAAY;IACzB,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE5C,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC;QAC1B,UAAU,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC;KACvE,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,0BAA0B,CAAC,CAAC;IAEjE,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACvC,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IAClD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,8BAA8B,MAAM,IAAI,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;QACzE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,OAAO,GAAG,SAAS,EAAE,CAAC;IAC5B,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAe,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;IAC1D,MAAM,SAAS,GAAG,OAAO,CAAC,SAA+B,CAAC;IAC1D,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IAE9B,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,MAAM,YAAY,EAAE,CAAC;QAEhC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,YAAY;YACZ,MAAM,WAAW,GAAG,EAAE,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;YAC5E,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAElD,MAAM,QAAQ,GAAG,EAAE,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;YAC9F,MAAM,WAAW,GAA2B,EAAE,CAAC;YAC/C,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChB,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;oBACrC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAW,CAAC,GAAG,GAAG,CAAC,CAAC,CAAW,CAAC;gBACnD,CAAC;YACH,CAAC;YAED,MAAM,UAAU,GAAG,EAAE,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;YACtF,MAAM,MAAM,GAA2B,EAAE,CAAC;YAC1C,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClB,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;oBACvC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAW,CAAC,GAAG,GAAG,CAAC,CAAC,CAAW,CAAC;gBAC9C,CAAC;YACH,CAAC;YAED,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACvE,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;gBACjD,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,EAAE,CAAC,CAAC;gBACvC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;gBACvC,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;oBACtD,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,EAAE,CAAC,CAAC;gBACnC,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;gBAClC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;oBACnD,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC;gBACrC,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,eAAe,UAAU,6BAA6B,CAAC,CAAC;YACtE,CAAC;YACD,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;YACvD,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;gBACrC,EAAE,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO;YACT,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAClC,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gBACzC,MAAM,KAAK,GAA4B,EAAE,CAAC;gBAC1C,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;oBACzB,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;gBACtB,CAAC,CAAC,CAAC;gBACH,OAAO,KAAK,CAAC;YACf,CAAC,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,iBAAiB,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC;YACpD,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACvG,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,MAAM,eAAe,QAAQ,EAAE,CAAC,CAAC;YACnE,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO;QACT,CAAC;QAED,wBAAwB;QACxB,IAAI,KAAK,GAAG,gFAAgF,CAAC;QAC7F,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,IAAI,SAAS,EAAE,CAAC;YACd,KAAK,IAAI,sBAAsB,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzB,CAAC;QAED,KAAK,IAAI,mCAAmC,CAAC;QAC7C,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAE3B,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAElB,MAAM,OAAO,GAQR,EAAE,CAAC;QAER,OAAO,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACnB,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,GAAG,CAAC,EAAY;gBACpB,GAAG,EAAE,GAAG,CAAC,GAAa;gBACtB,OAAO,EAAE,GAAG,CAAC,OAAiB;gBAC9B,IAAI,EAAE,GAAG,CAAC,IAAc;gBACxB,SAAS,EAAE,GAAG,CAAC,SAAmB;gBAClC,IAAI,EAAE,GAAG,CAAC,IAAc;gBACxB,UAAU,EAAE,GAAG,CAAC,UAAoB;aACrC,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;QAEZ,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;YACrD,OAAO,CAAC,GAAG,CAAC,aAAa,UAAU,2BAA2B,CAAC,CAAC;YAChE,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO;QACT,CAAC;QAED,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9C,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,yBAAyB,OAAO,CAAC,MAAM,aAAa,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,aAAa,UAAU,6BAA6B,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAE5B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,cAAc,EAAE,CAAC;YACzD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG;gBACxC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK;gBACrC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;YAClB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC;YAEjE,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,CAAC,IAAI,YAAY,IAAI,EAAE,CAAC,CAAC;YACrD,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,EAAE,CAAC,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9B,CAAC;QAED,kBAAkB;QAClB,MAAM,WAAW,GAAG,EAAE,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QACnE,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC;QAEpE,OAAO,CAAC,GAAG,CAAC,aAAa,OAAO,CAAC,MAAM,OAAO,UAAU,gBAAgB,CAAC,CAAC;QAC1E,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;QAEpE,EAAE,CAAC,KAAK,EAAE,CAAC;IAEb,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * HNSW Vector Index
3
+ *
4
+ * High-performance Hierarchical Navigable Small World (HNSW) index for
5
+ * 150x-12,500x faster vector similarity search compared to brute force.
6
+ *
7
+ * OPTIMIZATIONS:
8
+ * - BinaryMinHeap/BinaryMaxHeap for O(log n) operations (vs O(n log n) Array.sort)
9
+ * - Pre-normalized vectors for O(1) cosine similarity (no sqrt needed)
10
+ * - Bounded max-heap for efficient top-k tracking
11
+ *
12
+ * @module @agentkits/memory/hnsw-index
13
+ */
14
+ import { EventEmitter } from 'node:events';
15
+ import { HNSWConfig, HNSWStats } from './types.js';
16
+ /**
17
+ * HNSW Index implementation for ultra-fast vector similarity search
18
+ *
19
+ * Performance characteristics:
20
+ * - Search: O(log n) approximate nearest neighbor
21
+ * - Insert: O(log n) amortized
22
+ * - Memory: O(n * M * L) where M is max connections, L is layers
23
+ */
24
+ export declare class HNSWIndex extends EventEmitter {
25
+ private config;
26
+ private nodes;
27
+ private entryPoint;
28
+ private maxLevel;
29
+ private levelMult;
30
+ private stats;
31
+ private quantizer;
32
+ constructor(config?: Partial<HNSWConfig>);
33
+ /**
34
+ * Add a vector to the index
35
+ */
36
+ addPoint(id: string, vector: Float32Array): Promise<void>;
37
+ /**
38
+ * Search for k nearest neighbors
39
+ */
40
+ search(query: Float32Array, k: number, ef?: number): Promise<Array<{
41
+ id: string;
42
+ distance: number;
43
+ }>>;
44
+ /**
45
+ * Search with filters applied post-retrieval
46
+ */
47
+ searchWithFilters(query: Float32Array, k: number, filter: (id: string) => boolean, ef?: number): Promise<Array<{
48
+ id: string;
49
+ distance: number;
50
+ }>>;
51
+ /**
52
+ * Remove a point from the index
53
+ */
54
+ removePoint(id: string): Promise<boolean>;
55
+ /**
56
+ * Rebuild the index from scratch
57
+ */
58
+ rebuild(entries: Array<{
59
+ id: string;
60
+ vector: Float32Array;
61
+ }>): Promise<void>;
62
+ /**
63
+ * Get index statistics
64
+ */
65
+ getStats(): HNSWStats;
66
+ /**
67
+ * Clear the index
68
+ */
69
+ clear(): void;
70
+ /**
71
+ * Check if an ID exists in the index
72
+ */
73
+ has(id: string): boolean;
74
+ /**
75
+ * Get the number of vectors in the index
76
+ */
77
+ get size(): number;
78
+ private mergeConfig;
79
+ private getRandomLevel;
80
+ private insertNode;
81
+ private searchLayer;
82
+ /**
83
+ * OPTIMIZED searchLayer using heap-based priority queues
84
+ * Performance: O(log n) per operation vs O(n log n) for Array.sort()
85
+ * Expected speedup: 3-5x for large result sets
86
+ */
87
+ private searchLayerOptimized;
88
+ private selectNeighbors;
89
+ private pruneConnections;
90
+ private distance;
91
+ private cosineDistance;
92
+ /**
93
+ * OPTIMIZED: Cosine distance using pre-normalized vectors
94
+ * Only requires dot product (no sqrt operations)
95
+ * Performance: O(n) with ~2x speedup over standard cosine
96
+ */
97
+ private cosineDistanceNormalized;
98
+ /**
99
+ * Normalize a vector to unit length for O(1) cosine similarity
100
+ */
101
+ private normalizeVector;
102
+ /**
103
+ * OPTIMIZED distance calculation that uses pre-normalized vectors when available
104
+ */
105
+ private distanceOptimized;
106
+ private euclideanDistance;
107
+ private dotProductDistance;
108
+ private manhattanDistance;
109
+ }
110
+ export default HNSWIndex;
111
+ //# sourceMappingURL=hnsw-index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hnsw-index.d.ts","sourceRoot":"","sources":["../src/hnsw-index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAEL,UAAU,EACV,SAAS,EAMV,MAAM,YAAY,CAAC;AAwLpB;;;;;;;GAOG;AACH,qBAAa,SAAU,SAAQ,YAAY;IACzC,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,SAAS,CAAS;IAG1B,OAAO,CAAC,KAAK,CAYX;IAGF,OAAO,CAAC,SAAS,CAA0B;gBAE/B,MAAM,GAAE,OAAO,CAAC,UAAU,CAAM;IAU5C;;OAEG;IACG,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAwD/D;;OAEG;IACG,MAAM,CACV,KAAK,EAAE,YAAY,EACnB,CAAC,EAAE,MAAM,EACT,EAAE,CAAC,EAAE,MAAM,GACV,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAqEnD;;OAEG;IACG,iBAAiB,CACrB,KAAK,EAAE,YAAY,EACnB,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,EAC/B,EAAE,CAAC,EAAE,MAAM,GACV,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAUnD;;OAEG;IACG,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA6C/C;;OAEG;IACG,OAAO,CACX,OAAO,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,YAAY,CAAA;KAAE,CAAC,GACnD,OAAO,CAAC,IAAI,CAAC;IAmBhB;;OAEG;IACH,QAAQ,IAAI,SAAS;IAqBrB;;OAEG;IACH,KAAK,IAAI,IAAI;IAab;;OAEG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIxB;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAID,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,cAAc;YAQR,UAAU;YAkEV,WAAW;IA2DzB;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;IAgE5B,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,gBAAgB;IA6BxB,OAAO,CAAC,QAAQ;IAehB,OAAO,CAAC,cAAc;IAetB;;;;OAIG;IACH,OAAO,CAAC,wBAAwB;IAUhC;;OAEG;IACH,OAAO,CAAC,eAAe;IAkBvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAkBzB,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,iBAAiB;CAO1B;AAiHD,eAAe,SAAS,CAAC"}