@phmotad/fire-code 0.2.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 (248) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +379 -0
  3. package/dist/agents/BaseAgent.d.ts +32 -0
  4. package/dist/agents/BaseAgent.d.ts.map +1 -0
  5. package/dist/agents/BaseAgent.js +19 -0
  6. package/dist/agents/BaseAgent.js.map +1 -0
  7. package/dist/agents/CodeAgent.d.ts +7 -0
  8. package/dist/agents/CodeAgent.d.ts.map +1 -0
  9. package/dist/agents/CodeAgent.js +130 -0
  10. package/dist/agents/CodeAgent.js.map +1 -0
  11. package/dist/cli/commands/corpus.d.ts +20 -0
  12. package/dist/cli/commands/corpus.d.ts.map +1 -0
  13. package/dist/cli/commands/corpus.js +60 -0
  14. package/dist/cli/commands/corpus.js.map +1 -0
  15. package/dist/cli/commands/daemon.d.ts +5 -0
  16. package/dist/cli/commands/daemon.d.ts.map +1 -0
  17. package/dist/cli/commands/daemon.js +79 -0
  18. package/dist/cli/commands/daemon.js.map +1 -0
  19. package/dist/cli/commands/dev.d.ts +2 -0
  20. package/dist/cli/commands/dev.d.ts.map +1 -0
  21. package/dist/cli/commands/dev.js +20 -0
  22. package/dist/cli/commands/dev.js.map +1 -0
  23. package/dist/cli/commands/index-cmd.d.ts +6 -0
  24. package/dist/cli/commands/index-cmd.d.ts.map +1 -0
  25. package/dist/cli/commands/index-cmd.js +57 -0
  26. package/dist/cli/commands/index-cmd.js.map +1 -0
  27. package/dist/cli/commands/init.d.ts +2 -0
  28. package/dist/cli/commands/init.d.ts.map +1 -0
  29. package/dist/cli/commands/init.js +173 -0
  30. package/dist/cli/commands/init.js.map +1 -0
  31. package/dist/cli/commands/install.d.ts +8 -0
  32. package/dist/cli/commands/install.d.ts.map +1 -0
  33. package/dist/cli/commands/install.js +154 -0
  34. package/dist/cli/commands/install.js.map +1 -0
  35. package/dist/cli/commands/observe.d.ts +19 -0
  36. package/dist/cli/commands/observe.d.ts.map +1 -0
  37. package/dist/cli/commands/observe.js +86 -0
  38. package/dist/cli/commands/observe.js.map +1 -0
  39. package/dist/cli/index.d.ts +3 -0
  40. package/dist/cli/index.d.ts.map +1 -0
  41. package/dist/cli/index.js +162 -0
  42. package/dist/cli/index.js.map +1 -0
  43. package/dist/config/defaults.d.ts +3 -0
  44. package/dist/config/defaults.d.ts.map +1 -0
  45. package/dist/config/defaults.js +8 -0
  46. package/dist/config/defaults.js.map +1 -0
  47. package/dist/config/loader.d.ts +3 -0
  48. package/dist/config/loader.d.ts.map +1 -0
  49. package/dist/config/loader.js +96 -0
  50. package/dist/config/loader.js.map +1 -0
  51. package/dist/config/types.d.ts +436 -0
  52. package/dist/config/types.d.ts.map +1 -0
  53. package/dist/config/types.js +73 -0
  54. package/dist/config/types.js.map +1 -0
  55. package/dist/core/ExecutionEngine.d.ts +26 -0
  56. package/dist/core/ExecutionEngine.d.ts.map +1 -0
  57. package/dist/core/ExecutionEngine.js +102 -0
  58. package/dist/core/ExecutionEngine.js.map +1 -0
  59. package/dist/core/TaskRouter.d.ts +3 -0
  60. package/dist/core/TaskRouter.d.ts.map +1 -0
  61. package/dist/core/TaskRouter.js +29 -0
  62. package/dist/core/TaskRouter.js.map +1 -0
  63. package/dist/daemon/DaemonClient.d.ts +8 -0
  64. package/dist/daemon/DaemonClient.d.ts.map +1 -0
  65. package/dist/daemon/DaemonClient.js +61 -0
  66. package/dist/daemon/DaemonClient.js.map +1 -0
  67. package/dist/daemon/DaemonServer.d.ts +17 -0
  68. package/dist/daemon/DaemonServer.d.ts.map +1 -0
  69. package/dist/daemon/DaemonServer.js +235 -0
  70. package/dist/daemon/DaemonServer.js.map +1 -0
  71. package/dist/db/DatabaseManager.d.ts +79 -0
  72. package/dist/db/DatabaseManager.d.ts.map +1 -0
  73. package/dist/db/DatabaseManager.js +212 -0
  74. package/dist/db/DatabaseManager.js.map +1 -0
  75. package/dist/db/schema.d.ts +2 -0
  76. package/dist/db/schema.d.ts.map +1 -0
  77. package/dist/db/schema.js +127 -0
  78. package/dist/db/schema.js.map +1 -0
  79. package/dist/git/CommitFormatter.d.ts +19 -0
  80. package/dist/git/CommitFormatter.d.ts.map +1 -0
  81. package/dist/git/CommitFormatter.js +47 -0
  82. package/dist/git/CommitFormatter.js.map +1 -0
  83. package/dist/git/GitManager.d.ts +28 -0
  84. package/dist/git/GitManager.d.ts.map +1 -0
  85. package/dist/git/GitManager.js +147 -0
  86. package/dist/git/GitManager.js.map +1 -0
  87. package/dist/graph/GraphStore.d.ts +54 -0
  88. package/dist/graph/GraphStore.d.ts.map +1 -0
  89. package/dist/graph/GraphStore.js +3 -0
  90. package/dist/graph/GraphStore.js.map +1 -0
  91. package/dist/graph/InMemoryGraphStore.d.ts +16 -0
  92. package/dist/graph/InMemoryGraphStore.d.ts.map +1 -0
  93. package/dist/graph/InMemoryGraphStore.js +75 -0
  94. package/dist/graph/InMemoryGraphStore.js.map +1 -0
  95. package/dist/graph/SQLiteGraphStore.d.ts +31 -0
  96. package/dist/graph/SQLiteGraphStore.d.ts.map +1 -0
  97. package/dist/graph/SQLiteGraphStore.js +158 -0
  98. package/dist/graph/SQLiteGraphStore.js.map +1 -0
  99. package/dist/index.d.ts +16 -0
  100. package/dist/index.d.ts.map +1 -0
  101. package/dist/index.js +32 -0
  102. package/dist/index.js.map +1 -0
  103. package/dist/indexing/ASTParser.d.ts +32 -0
  104. package/dist/indexing/ASTParser.d.ts.map +1 -0
  105. package/dist/indexing/ASTParser.js +185 -0
  106. package/dist/indexing/ASTParser.js.map +1 -0
  107. package/dist/indexing/EmbeddingGenerator.d.ts +15 -0
  108. package/dist/indexing/EmbeddingGenerator.d.ts.map +1 -0
  109. package/dist/indexing/EmbeddingGenerator.js +66 -0
  110. package/dist/indexing/EmbeddingGenerator.js.map +1 -0
  111. package/dist/indexing/FileScanner.d.ts +10 -0
  112. package/dist/indexing/FileScanner.d.ts.map +1 -0
  113. package/dist/indexing/FileScanner.js +58 -0
  114. package/dist/indexing/FileScanner.js.map +1 -0
  115. package/dist/indexing/GraphBuilder.d.ts +4 -0
  116. package/dist/indexing/GraphBuilder.d.ts.map +1 -0
  117. package/dist/indexing/GraphBuilder.js +51 -0
  118. package/dist/indexing/GraphBuilder.js.map +1 -0
  119. package/dist/indexing/Indexer.d.ts +13 -0
  120. package/dist/indexing/Indexer.d.ts.map +1 -0
  121. package/dist/indexing/Indexer.js +68 -0
  122. package/dist/indexing/Indexer.js.map +1 -0
  123. package/dist/mcp/server.d.ts +2 -0
  124. package/dist/mcp/server.d.ts.map +1 -0
  125. package/dist/mcp/server.js +155 -0
  126. package/dist/mcp/server.js.map +1 -0
  127. package/dist/mcp/tools/corpus_search.d.ts +14 -0
  128. package/dist/mcp/tools/corpus_search.d.ts.map +1 -0
  129. package/dist/mcp/tools/corpus_search.js +33 -0
  130. package/dist/mcp/tools/corpus_search.js.map +1 -0
  131. package/dist/mcp/tools/execute.d.ts +19 -0
  132. package/dist/mcp/tools/execute.d.ts.map +1 -0
  133. package/dist/mcp/tools/execute.js +38 -0
  134. package/dist/mcp/tools/execute.js.map +1 -0
  135. package/dist/mcp/tools/get_context.d.ts +17 -0
  136. package/dist/mcp/tools/get_context.d.ts.map +1 -0
  137. package/dist/mcp/tools/get_context.js +50 -0
  138. package/dist/mcp/tools/get_context.js.map +1 -0
  139. package/dist/mcp/tools/get_graph.d.ts +26 -0
  140. package/dist/mcp/tools/get_graph.d.ts.map +1 -0
  141. package/dist/mcp/tools/get_graph.js +68 -0
  142. package/dist/mcp/tools/get_graph.js.map +1 -0
  143. package/dist/mcp/tools/observations.d.ts +23 -0
  144. package/dist/mcp/tools/observations.d.ts.map +1 -0
  145. package/dist/mcp/tools/observations.js +72 -0
  146. package/dist/mcp/tools/observations.js.map +1 -0
  147. package/dist/mcp/tools/search_code.d.ts +14 -0
  148. package/dist/mcp/tools/search_code.d.ts.map +1 -0
  149. package/dist/mcp/tools/search_code.js +38 -0
  150. package/dist/mcp/tools/search_code.js.map +1 -0
  151. package/dist/mcp/tools/smart_outline.d.ts +14 -0
  152. package/dist/mcp/tools/smart_outline.d.ts.map +1 -0
  153. package/dist/mcp/tools/smart_outline.js +99 -0
  154. package/dist/mcp/tools/smart_outline.js.map +1 -0
  155. package/dist/mcp/tools/smart_search.d.ts +20 -0
  156. package/dist/mcp/tools/smart_search.d.ts.map +1 -0
  157. package/dist/mcp/tools/smart_search.js +131 -0
  158. package/dist/mcp/tools/smart_search.js.map +1 -0
  159. package/dist/memory/FallbackMemory.d.ts +9 -0
  160. package/dist/memory/FallbackMemory.d.ts.map +1 -0
  161. package/dist/memory/FallbackMemory.js +70 -0
  162. package/dist/memory/FallbackMemory.js.map +1 -0
  163. package/dist/memory/HybridMemory.d.ts +20 -0
  164. package/dist/memory/HybridMemory.d.ts.map +1 -0
  165. package/dist/memory/HybridMemory.js +74 -0
  166. package/dist/memory/HybridMemory.js.map +1 -0
  167. package/dist/providers/AgentSDKProvider.d.ts +13 -0
  168. package/dist/providers/AgentSDKProvider.d.ts.map +1 -0
  169. package/dist/providers/AgentSDKProvider.js +64 -0
  170. package/dist/providers/AgentSDKProvider.js.map +1 -0
  171. package/dist/providers/AnthropicProvider.d.ts +11 -0
  172. package/dist/providers/AnthropicProvider.d.ts.map +1 -0
  173. package/dist/providers/AnthropicProvider.js +61 -0
  174. package/dist/providers/AnthropicProvider.js.map +1 -0
  175. package/dist/providers/LLMProvider.d.ts +12 -0
  176. package/dist/providers/LLMProvider.d.ts.map +1 -0
  177. package/dist/providers/LLMProvider.js +3 -0
  178. package/dist/providers/LLMProvider.js.map +1 -0
  179. package/dist/providers/OllamaProvider.d.ts +11 -0
  180. package/dist/providers/OllamaProvider.d.ts.map +1 -0
  181. package/dist/providers/OllamaProvider.js +71 -0
  182. package/dist/providers/OllamaProvider.js.map +1 -0
  183. package/dist/providers/OpenAIProvider.d.ts +11 -0
  184. package/dist/providers/OpenAIProvider.d.ts.map +1 -0
  185. package/dist/providers/OpenAIProvider.js +63 -0
  186. package/dist/providers/OpenAIProvider.js.map +1 -0
  187. package/dist/providers/OpenRouterProvider.d.ts +12 -0
  188. package/dist/providers/OpenRouterProvider.d.ts.map +1 -0
  189. package/dist/providers/OpenRouterProvider.js +89 -0
  190. package/dist/providers/OpenRouterProvider.js.map +1 -0
  191. package/dist/providers/ProviderFactory.d.ts +4 -0
  192. package/dist/providers/ProviderFactory.d.ts.map +1 -0
  193. package/dist/providers/ProviderFactory.js +27 -0
  194. package/dist/providers/ProviderFactory.js.map +1 -0
  195. package/dist/services/CorpusService.d.ts +27 -0
  196. package/dist/services/CorpusService.d.ts.map +1 -0
  197. package/dist/services/CorpusService.js +142 -0
  198. package/dist/services/CorpusService.js.map +1 -0
  199. package/dist/services/ObservationService.d.ts +17 -0
  200. package/dist/services/ObservationService.d.ts.map +1 -0
  201. package/dist/services/ObservationService.js +101 -0
  202. package/dist/services/ObservationService.js.map +1 -0
  203. package/dist/services/SessionService.d.ts +10 -0
  204. package/dist/services/SessionService.d.ts.map +1 -0
  205. package/dist/services/SessionService.js +38 -0
  206. package/dist/services/SessionService.js.map +1 -0
  207. package/dist/services/SummarizationService.d.ts +8 -0
  208. package/dist/services/SummarizationService.d.ts.map +1 -0
  209. package/dist/services/SummarizationService.js +65 -0
  210. package/dist/services/SummarizationService.js.map +1 -0
  211. package/dist/utils/errors.d.ts +26 -0
  212. package/dist/utils/errors.d.ts.map +1 -0
  213. package/dist/utils/errors.js +72 -0
  214. package/dist/utils/errors.js.map +1 -0
  215. package/dist/utils/logger.d.ts +4 -0
  216. package/dist/utils/logger.d.ts.map +1 -0
  217. package/dist/utils/logger.js +16 -0
  218. package/dist/utils/logger.js.map +1 -0
  219. package/dist/utils/paths.d.ts +10 -0
  220. package/dist/utils/paths.d.ts.map +1 -0
  221. package/dist/utils/paths.js +43 -0
  222. package/dist/utils/paths.js.map +1 -0
  223. package/dist/utils/privacy.d.ts +5 -0
  224. package/dist/utils/privacy.d.ts.map +1 -0
  225. package/dist/utils/privacy.js +39 -0
  226. package/dist/utils/privacy.js.map +1 -0
  227. package/dist/utils/zodToJsonSchema.d.ts +23 -0
  228. package/dist/utils/zodToJsonSchema.d.ts.map +1 -0
  229. package/dist/utils/zodToJsonSchema.js +52 -0
  230. package/dist/utils/zodToJsonSchema.js.map +1 -0
  231. package/dist/vector/MemoryVectorStore.d.ts +16 -0
  232. package/dist/vector/MemoryVectorStore.d.ts.map +1 -0
  233. package/dist/vector/MemoryVectorStore.js +97 -0
  234. package/dist/vector/MemoryVectorStore.js.map +1 -0
  235. package/dist/vector/VectorStore.d.ts +19 -0
  236. package/dist/vector/VectorStore.d.ts.map +1 -0
  237. package/dist/vector/VectorStore.js +3 -0
  238. package/dist/vector/VectorStore.js.map +1 -0
  239. package/dist/vector/VectraVectorStore.d.ts +23 -0
  240. package/dist/vector/VectraVectorStore.d.ts.map +1 -0
  241. package/dist/vector/VectraVectorStore.js +93 -0
  242. package/dist/vector/VectraVectorStore.js.map +1 -0
  243. package/examples/firecode.config.example.ts +87 -0
  244. package/package.json +111 -0
  245. package/plugin/.claude-plugin/plugin.json +17 -0
  246. package/plugin/hooks/hooks.json +86 -0
  247. package/plugin/scripts/context-inject.js +208 -0
  248. package/plugin/scripts/smart-install.js +33 -0
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ObservationService = void 0;
4
+ const DatabaseManager_js_1 = require("../db/DatabaseManager.js");
5
+ const paths_js_1 = require("../utils/paths.js");
6
+ const privacy_js_1 = require("../utils/privacy.js");
7
+ const path_1 = require("path");
8
+ const BUGFIX_PATTERNS = [/fix(ed|ing|es)?/i, /bug/i, /error/i, /crash/i, /patch/i, /resolv/i, /correct/i];
9
+ const FEATURE_PATTERNS = [/add(ed|ing|s)?/i, /creat(e|ed|ing)/i, /implement/i, /new\s/i, /build/i];
10
+ const REFACTOR_PATTERNS = [/refactor/i, /clean(up)?/i, /reorganiz/i, /restructur/i, /rename/i, /move/i, /extract/i];
11
+ const DECISION_PATTERNS = [/decided?/i, /chose?/i, /approach/i, /strategy/i, /pattern/i, /design/i];
12
+ function classifyType(toolName, summary) {
13
+ const text = `${toolName} ${summary}`.toLowerCase();
14
+ if (BUGFIX_PATTERNS.some(p => p.test(text)))
15
+ return 'bugfix';
16
+ if (DECISION_PATTERNS.some(p => p.test(text)))
17
+ return 'decision';
18
+ if (REFACTOR_PATTERNS.some(p => p.test(text)))
19
+ return 'refactor';
20
+ if (FEATURE_PATTERNS.some(p => p.test(text)))
21
+ return 'feature';
22
+ if (toolName === 'Read' || toolName === 'Glob' || toolName === 'Grep')
23
+ return 'discovery';
24
+ return 'change';
25
+ }
26
+ function extractFilePath(data) {
27
+ const input = data.tool_input ?? {};
28
+ const candidates = [input['file_path'], input['path'], input['filename']];
29
+ for (const c of candidates) {
30
+ if (typeof c === 'string' && c.length > 0)
31
+ return c;
32
+ }
33
+ return null;
34
+ }
35
+ function buildSummary(data) {
36
+ const tool = data.tool_name;
37
+ const input = data.tool_input ?? {};
38
+ const filePath = extractFilePath(data);
39
+ const fileName = filePath ? (0, path_1.basename)(filePath) : null;
40
+ switch (tool) {
41
+ case 'Write':
42
+ return fileName ? `Wrote ${fileName}` : 'Wrote a file';
43
+ case 'Edit':
44
+ case 'MultiEdit':
45
+ return fileName ? `Edited ${fileName}` : 'Edited a file';
46
+ case 'Read':
47
+ return fileName ? `Read ${fileName}` : 'Read a file';
48
+ case 'Bash': {
49
+ const cmd = String(input['command'] ?? '').slice(0, 60);
50
+ return cmd ? `Ran: ${cmd}` : 'Ran a bash command';
51
+ }
52
+ case 'Glob':
53
+ return `Searched files: ${String(input['pattern'] ?? '')}`;
54
+ case 'Grep':
55
+ return `Searched code: ${String(input['pattern'] ?? '')}`;
56
+ default:
57
+ return `Called ${tool}`;
58
+ }
59
+ }
60
+ function buildDetail(data) {
61
+ const result = data.tool_result;
62
+ if (!result)
63
+ return null;
64
+ const text = typeof result === 'string' ? result : JSON.stringify(result);
65
+ return text.slice(0, 500) || null;
66
+ }
67
+ class ObservationService {
68
+ db;
69
+ constructor(cwd) {
70
+ this.db = DatabaseManager_js_1.DatabaseManager.getInstance((0, paths_js_1.getFireCodeDir)(cwd));
71
+ }
72
+ capture(data) {
73
+ const filePath = extractFilePath(data);
74
+ if (filePath && (0, privacy_js_1.isPrivateFile)(filePath))
75
+ return -1; // skip private files
76
+ const summary = buildSummary(data);
77
+ const type = classifyType(data.tool_name, summary);
78
+ const rawDetail = buildDetail(data);
79
+ const detail = rawDetail ? (0, privacy_js_1.sanitizeForLLM)(rawDetail) : null;
80
+ return this.db.addObservation({
81
+ session_id: data.session_id,
82
+ project: data.project,
83
+ type,
84
+ tool: data.tool_name,
85
+ file_path: filePath,
86
+ summary,
87
+ detail,
88
+ });
89
+ }
90
+ search(query, project, limit = 20) {
91
+ return this.db.getObservations({ query, project, limit });
92
+ }
93
+ recent(project, limit = 10) {
94
+ return this.db.getObservations({ project, limit });
95
+ }
96
+ getContext(project) {
97
+ return this.db.getRecentContext(project);
98
+ }
99
+ }
100
+ exports.ObservationService = ObservationService;
101
+ //# sourceMappingURL=ObservationService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObservationService.js","sourceRoot":"","sources":["../../src/services/ObservationService.ts"],"names":[],"mappings":";;;AAAA,iEAA4E;AAC5E,gDAAmD;AACnD,oDAAoE;AACpE,+BAAgC;AAWhC,MAAM,eAAe,GAAG,CAAC,kBAAkB,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAC1G,MAAM,gBAAgB,GAAG,CAAC,iBAAiB,EAAE,kBAAkB,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACnG,MAAM,iBAAiB,GAAG,CAAC,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;AACpH,MAAM,iBAAiB,GAAG,CAAC,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;AAEpG,SAAS,YAAY,CAAC,QAAgB,EAAE,OAAe;IACrD,MAAM,IAAI,GAAG,GAAG,QAAQ,IAAI,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC;IACpD,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC7D,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,UAAU,CAAC;IACjE,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,UAAU,CAAC;IACjE,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IAC/D,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,MAAM;QAAE,OAAO,WAAW,CAAC;IAC1F,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,eAAe,CAAC,IAAkB;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;IACpC,MAAM,UAAU,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IAC1E,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,YAAY,CAAC,IAAkB;IACtC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;IAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;IACpC,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAA,eAAQ,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEtD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,OAAO;YACV,OAAO,QAAQ,CAAC,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC;QACzD,KAAK,MAAM,CAAC;QACZ,KAAK,WAAW;YACd,OAAO,QAAQ,CAAC,CAAC,CAAC,UAAU,QAAQ,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC;QAC3D,KAAK,MAAM;YACT,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,QAAQ,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC;QACvD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACxD,OAAO,GAAG,CAAC,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC;QACpD,CAAC;QACD,KAAK,MAAM;YACT,OAAO,mBAAmB,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QAC7D,KAAK,MAAM;YACT,OAAO,kBAAkB,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QAC5D;YACE,OAAO,UAAU,IAAI,EAAE,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,IAAkB;IACrC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;IAChC,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,IAAI,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC1E,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC;AACpC,CAAC;AAED,MAAa,kBAAkB;IACrB,EAAE,CAAkB;IAE5B,YAAY,GAAW;QACrB,IAAI,CAAC,EAAE,GAAG,oCAAe,CAAC,WAAW,CAAC,IAAA,yBAAc,EAAC,GAAG,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,CAAC,IAAkB;QACxB,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,QAAQ,IAAI,IAAA,0BAAa,EAAC,QAAQ,CAAC;YAAE,OAAO,CAAC,CAAC,CAAC,CAAC,qBAAqB;QAEzE,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACnD,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,IAAA,2BAAc,EAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAE5D,OAAO,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC;YAC5B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI;YACJ,IAAI,EAAE,IAAI,CAAC,SAAS;YACpB,SAAS,EAAE,QAAQ;YACnB,OAAO;YACP,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,KAAa,EAAE,OAAe,EAAE,KAAK,GAAG,EAAE;QAC/C,OAAO,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,CAAC,OAAe,EAAE,KAAK,GAAG,EAAE;QAChC,OAAO,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,UAAU,CAAC,OAAe;QACxB,OAAO,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;CACF;AAtCD,gDAsCC"}
@@ -0,0 +1,10 @@
1
+ export declare class SessionService {
2
+ private db;
3
+ private project;
4
+ constructor(cwd: string, project: string);
5
+ start(cwd: string): string;
6
+ getOrCreate(cwd: string): string;
7
+ end(sessionId: string): void;
8
+ getActiveId(): string | null;
9
+ }
10
+ //# sourceMappingURL=SessionService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionService.d.ts","sourceRoot":"","sources":["../../src/services/SessionService.ts"],"names":[],"mappings":"AAIA,qBAAa,cAAc;IACzB,OAAO,CAAC,EAAE,CAAkB;IAC5B,OAAO,CAAC,OAAO,CAAS;gBAEZ,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAKxC,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAW1B,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAMhC,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI5B,WAAW,IAAI,MAAM,GAAG,IAAI;CAG7B"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SessionService = void 0;
4
+ const crypto_1 = require("crypto");
5
+ const DatabaseManager_js_1 = require("../db/DatabaseManager.js");
6
+ const paths_js_1 = require("../utils/paths.js");
7
+ class SessionService {
8
+ db;
9
+ project;
10
+ constructor(cwd, project) {
11
+ this.db = DatabaseManager_js_1.DatabaseManager.getInstance((0, paths_js_1.getFireCodeDir)(cwd));
12
+ this.project = project;
13
+ }
14
+ start(cwd) {
15
+ // Abandon any lingering active session
16
+ const existing = this.db.getActiveSession(this.project);
17
+ if (existing) {
18
+ this.db.endSession(existing.id, 'abandoned');
19
+ }
20
+ const id = (0, crypto_1.randomUUID)();
21
+ this.db.createSession(id, this.project, cwd);
22
+ return id;
23
+ }
24
+ getOrCreate(cwd) {
25
+ const existing = this.db.getActiveSession(this.project);
26
+ if (existing)
27
+ return existing.id;
28
+ return this.start(cwd);
29
+ }
30
+ end(sessionId) {
31
+ this.db.endSession(sessionId, 'completed');
32
+ }
33
+ getActiveId() {
34
+ return this.db.getActiveSession(this.project)?.id ?? null;
35
+ }
36
+ }
37
+ exports.SessionService = SessionService;
38
+ //# sourceMappingURL=SessionService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionService.js","sourceRoot":"","sources":["../../src/services/SessionService.ts"],"names":[],"mappings":";;;AAAA,mCAAoC;AACpC,iEAA2D;AAC3D,gDAAmD;AAEnD,MAAa,cAAc;IACjB,EAAE,CAAkB;IACpB,OAAO,CAAS;IAExB,YAAY,GAAW,EAAE,OAAe;QACtC,IAAI,CAAC,EAAE,GAAG,oCAAe,CAAC,WAAW,CAAC,IAAA,yBAAc,EAAC,GAAG,CAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,GAAW;QACf,uCAAuC;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxD,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;QAC/C,CAAC;QACD,MAAM,EAAE,GAAG,IAAA,mBAAU,GAAE,CAAC;QACxB,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC7C,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,WAAW,CAAC,GAAW;QACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxD,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,GAAG,CAAC,SAAiB;QACnB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAC7C,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC;IAC5D,CAAC;CACF;AAjCD,wCAiCC"}
@@ -0,0 +1,8 @@
1
+ import type { LLMProvider } from '../providers/LLMProvider.js';
2
+ export declare class SummarizationService {
3
+ private db;
4
+ constructor(cwd: string);
5
+ summarizeSession(sessionId: string, project: string, provider?: LLMProvider): Promise<string | null>;
6
+ private buildFallbackSummary;
7
+ }
8
+ //# sourceMappingURL=SummarizationService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SummarizationService.d.ts","sourceRoot":"","sources":["../../src/services/SummarizationService.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAc/D,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,EAAE,CAAkB;gBAEhB,GAAG,EAAE,MAAM;IAIjB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IA0B1G,OAAO,CAAC,oBAAoB;CAe7B"}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SummarizationService = void 0;
4
+ const DatabaseManager_js_1 = require("../db/DatabaseManager.js");
5
+ const paths_js_1 = require("../utils/paths.js");
6
+ const SUMMARIZE_PROMPT = (observations) => `You are summarizing what an AI coding agent did in a session.
7
+
8
+ Here are the observations from this session:
9
+ ${observations}
10
+
11
+ Write a concise 2-4 sentence summary covering:
12
+ - What was built or fixed (specific files/features)
13
+ - Key decisions made
14
+ - Any bugs resolved
15
+
16
+ Format: plain text, no markdown headers, past tense. Be specific about file names and features.`;
17
+ class SummarizationService {
18
+ db;
19
+ constructor(cwd) {
20
+ this.db = DatabaseManager_js_1.DatabaseManager.getInstance((0, paths_js_1.getFireCodeDir)(cwd));
21
+ }
22
+ async summarizeSession(sessionId, project, provider) {
23
+ const observations = this.db.getObservations({ project, limit: 50 })
24
+ .filter(o => o.session_id === sessionId);
25
+ if (observations.length === 0)
26
+ return null;
27
+ const obsText = observations
28
+ .map(o => `[${o.type}] ${o.summary}${o.file_path ? ` (${o.file_path})` : ''}`)
29
+ .join('\n');
30
+ let summary;
31
+ if (provider) {
32
+ try {
33
+ summary = await provider.complete(SUMMARIZE_PROMPT(obsText), { maxTokens: 200 });
34
+ }
35
+ catch {
36
+ summary = this.buildFallbackSummary(observations);
37
+ }
38
+ }
39
+ else {
40
+ summary = this.buildFallbackSummary(observations);
41
+ }
42
+ this.db.addSummary(sessionId, project, summary.trim());
43
+ return summary.trim();
44
+ }
45
+ buildFallbackSummary(observations) {
46
+ const byType = observations.reduce((acc, o) => {
47
+ if (!acc[o.type])
48
+ acc[o.type] = [];
49
+ acc[o.type].push(o.summary);
50
+ return acc;
51
+ }, {});
52
+ const parts = [];
53
+ if (byType['feature']?.length)
54
+ parts.push(`Added: ${byType['feature'].slice(0, 3).join(', ')}`);
55
+ if (byType['bugfix']?.length)
56
+ parts.push(`Fixed: ${byType['bugfix'].slice(0, 3).join(', ')}`);
57
+ if (byType['refactor']?.length)
58
+ parts.push(`Refactored: ${byType['refactor'].slice(0, 2).join(', ')}`);
59
+ if (byType['change']?.length)
60
+ parts.push(`Changed: ${byType['change'].slice(0, 3).join(', ')}`);
61
+ return parts.length ? parts.join('. ') + '.' : `Session with ${observations.length} observations.`;
62
+ }
63
+ }
64
+ exports.SummarizationService = SummarizationService;
65
+ //# sourceMappingURL=SummarizationService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SummarizationService.js","sourceRoot":"","sources":["../../src/services/SummarizationService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ export declare class FireCodeError extends Error {
2
+ readonly code: string;
3
+ readonly context?: Record<string, unknown>;
4
+ constructor(message: string, code: string, context?: Record<string, unknown>);
5
+ }
6
+ export declare class ConfigError extends FireCodeError {
7
+ constructor(message: string, context?: Record<string, unknown>);
8
+ }
9
+ export declare class GitError extends FireCodeError {
10
+ constructor(message: string, context?: Record<string, unknown>);
11
+ }
12
+ export declare class ExecutionError extends FireCodeError {
13
+ constructor(message: string, context?: Record<string, unknown>);
14
+ }
15
+ export declare class IndexError extends FireCodeError {
16
+ constructor(message: string, context?: Record<string, unknown>);
17
+ }
18
+ export declare class MemoryError extends FireCodeError {
19
+ constructor(message: string, context?: Record<string, unknown>);
20
+ }
21
+ export declare class ProviderError extends FireCodeError {
22
+ constructor(message: string, context?: Record<string, unknown>);
23
+ }
24
+ export declare function isFireCodeError(err: unknown): err is FireCodeError;
25
+ export declare function toFireCodeError(err: unknown, code?: string): FireCodeError;
26
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAE/B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAS7E;AAED,qBAAa,WAAY,SAAQ,aAAa;gBAChC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAI/D;AAED,qBAAa,QAAS,SAAQ,aAAa;gBAC7B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAI/D;AAED,qBAAa,cAAe,SAAQ,aAAa;gBACnC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAI/D;AAED,qBAAa,UAAW,SAAQ,aAAa;gBAC/B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAI/D;AAED,qBAAa,WAAY,SAAQ,aAAa;gBAChC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAI/D;AAED,qBAAa,aAAc,SAAQ,aAAa;gBAClC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAI/D;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,aAAa,CAElE;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,SAAkB,GAAG,aAAa,CAInF"}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProviderError = exports.MemoryError = exports.IndexError = exports.ExecutionError = exports.GitError = exports.ConfigError = exports.FireCodeError = void 0;
4
+ exports.isFireCodeError = isFireCodeError;
5
+ exports.toFireCodeError = toFireCodeError;
6
+ class FireCodeError extends Error {
7
+ code;
8
+ context;
9
+ constructor(message, code, context) {
10
+ super(message);
11
+ this.name = 'FireCodeError';
12
+ this.code = code;
13
+ this.context = context;
14
+ if (Error.captureStackTrace) {
15
+ Error.captureStackTrace(this, this.constructor);
16
+ }
17
+ }
18
+ }
19
+ exports.FireCodeError = FireCodeError;
20
+ class ConfigError extends FireCodeError {
21
+ constructor(message, context) {
22
+ super(message, 'CONFIG_ERROR', context);
23
+ this.name = 'ConfigError';
24
+ }
25
+ }
26
+ exports.ConfigError = ConfigError;
27
+ class GitError extends FireCodeError {
28
+ constructor(message, context) {
29
+ super(message, 'GIT_ERROR', context);
30
+ this.name = 'GitError';
31
+ }
32
+ }
33
+ exports.GitError = GitError;
34
+ class ExecutionError extends FireCodeError {
35
+ constructor(message, context) {
36
+ super(message, 'EXECUTION_ERROR', context);
37
+ this.name = 'ExecutionError';
38
+ }
39
+ }
40
+ exports.ExecutionError = ExecutionError;
41
+ class IndexError extends FireCodeError {
42
+ constructor(message, context) {
43
+ super(message, 'INDEX_ERROR', context);
44
+ this.name = 'IndexError';
45
+ }
46
+ }
47
+ exports.IndexError = IndexError;
48
+ class MemoryError extends FireCodeError {
49
+ constructor(message, context) {
50
+ super(message, 'MEMORY_ERROR', context);
51
+ this.name = 'MemoryError';
52
+ }
53
+ }
54
+ exports.MemoryError = MemoryError;
55
+ class ProviderError extends FireCodeError {
56
+ constructor(message, context) {
57
+ super(message, 'PROVIDER_ERROR', context);
58
+ this.name = 'ProviderError';
59
+ }
60
+ }
61
+ exports.ProviderError = ProviderError;
62
+ function isFireCodeError(err) {
63
+ return err instanceof FireCodeError;
64
+ }
65
+ function toFireCodeError(err, code = 'UNKNOWN_ERROR') {
66
+ if (isFireCodeError(err))
67
+ return err;
68
+ if (err instanceof Error)
69
+ return new FireCodeError(err.message, code);
70
+ return new FireCodeError(String(err), code);
71
+ }
72
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":";;;AAyDA,0CAEC;AAED,0CAIC;AAjED,MAAa,aAAc,SAAQ,KAAK;IAC7B,IAAI,CAAS;IACb,OAAO,CAA2B;IAE3C,YAAY,OAAe,EAAE,IAAY,EAAE,OAAiC;QAC1E,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;CACF;AAbD,sCAaC;AAED,MAAa,WAAY,SAAQ,aAAa;IAC5C,YAAY,OAAe,EAAE,OAAiC;QAC5D,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AALD,kCAKC;AAED,MAAa,QAAS,SAAQ,aAAa;IACzC,YAAY,OAAe,EAAE,OAAiC;QAC5D,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF;AALD,4BAKC;AAED,MAAa,cAAe,SAAQ,aAAa;IAC/C,YAAY,OAAe,EAAE,OAAiC;QAC5D,KAAK,CAAC,OAAO,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AALD,wCAKC;AAED,MAAa,UAAW,SAAQ,aAAa;IAC3C,YAAY,OAAe,EAAE,OAAiC;QAC5D,KAAK,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,CAAC;CACF;AALD,gCAKC;AAED,MAAa,WAAY,SAAQ,aAAa;IAC5C,YAAY,OAAe,EAAE,OAAiC;QAC5D,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AALD,kCAKC;AAED,MAAa,aAAc,SAAQ,aAAa;IAC9C,YAAY,OAAe,EAAE,OAAiC;QAC5D,KAAK,CAAC,OAAO,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AALD,sCAKC;AAED,SAAgB,eAAe,CAAC,GAAY;IAC1C,OAAO,GAAG,YAAY,aAAa,CAAC;AACtC,CAAC;AAED,SAAgB,eAAe,CAAC,GAAY,EAAE,IAAI,GAAG,eAAe;IAClE,IAAI,eAAe,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IACrC,IAAI,GAAG,YAAY,KAAK;QAAE,OAAO,IAAI,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACtE,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,4 @@
1
+ import pino from 'pino';
2
+ export declare const logger: pino.Logger<never, boolean>;
3
+ export type Logger = typeof logger;
4
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAIxB,eAAO,MAAM,MAAM,6BASlB,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.logger = void 0;
7
+ const pino_1 = __importDefault(require("pino"));
8
+ const isDev = process.env.NODE_ENV !== 'production';
9
+ exports.logger = (0, pino_1.default)({
10
+ level: process.env.LOG_LEVEL ?? (isDev ? 'debug' : 'info'),
11
+ base: undefined,
12
+ timestamp: pino_1.default.stdTimeFunctions.isoTime,
13
+ }, isDev
14
+ ? pino_1.default.transport({ target: 'pino-pretty', options: { colorize: true, ignore: 'pid,hostname' } })
15
+ : undefined);
16
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAExB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC;AAEvC,QAAA,MAAM,GAAG,IAAA,cAAI,EACxB;IACE,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IAC1D,IAAI,EAAE,SAAS;IACf,SAAS,EAAE,cAAI,CAAC,gBAAgB,CAAC,OAAO;CACzC,EACD,KAAK;IACH,CAAC,CAAC,cAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,CAAC;IAChG,CAAC,CAAC,SAAS,CACd,CAAC"}
@@ -0,0 +1,10 @@
1
+ export declare const FIRECODE_DIR = ".firecode";
2
+ export declare const GLOBAL_CONFIG_DIR: string;
3
+ export declare function getFireCodeDir(cwd: string): string;
4
+ export declare function ensureFireCodeDir(cwd: string): string;
5
+ export declare function getGraphPath(cwd: string): string;
6
+ export declare function getVectorsPath(cwd: string): string;
7
+ export declare function getBootstrapLogPath(cwd: string): string;
8
+ export declare function resolveFromCwd(cwd: string, filePath: string): string;
9
+ export declare function relativeFromCwd(cwd: string, filePath: string): string;
10
+ //# sourceMappingURL=paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,YAAY,cAAc,CAAC;AACxC,eAAO,MAAM,iBAAiB,QAA+B,CAAC;AAE9D,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMrD;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGpE;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAErE"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GLOBAL_CONFIG_DIR = exports.FIRECODE_DIR = void 0;
4
+ exports.getFireCodeDir = getFireCodeDir;
5
+ exports.ensureFireCodeDir = ensureFireCodeDir;
6
+ exports.getGraphPath = getGraphPath;
7
+ exports.getVectorsPath = getVectorsPath;
8
+ exports.getBootstrapLogPath = getBootstrapLogPath;
9
+ exports.resolveFromCwd = resolveFromCwd;
10
+ exports.relativeFromCwd = relativeFromCwd;
11
+ const os_1 = require("os");
12
+ const path_1 = require("path");
13
+ const fs_1 = require("fs");
14
+ exports.FIRECODE_DIR = '.firecode';
15
+ exports.GLOBAL_CONFIG_DIR = (0, path_1.join)((0, os_1.homedir)(), '.firecode');
16
+ function getFireCodeDir(cwd) {
17
+ return (0, path_1.join)(cwd, exports.FIRECODE_DIR);
18
+ }
19
+ function ensureFireCodeDir(cwd) {
20
+ const dir = getFireCodeDir(cwd);
21
+ if (!(0, fs_1.existsSync)(dir)) {
22
+ (0, fs_1.mkdirSync)(dir, { recursive: true });
23
+ }
24
+ return dir;
25
+ }
26
+ function getGraphPath(cwd) {
27
+ return (0, path_1.join)(getFireCodeDir(cwd), 'graph.json');
28
+ }
29
+ function getVectorsPath(cwd) {
30
+ return (0, path_1.join)(getFireCodeDir(cwd), 'vectors.db');
31
+ }
32
+ function getBootstrapLogPath(cwd) {
33
+ return (0, path_1.join)(getFireCodeDir(cwd), 'bootstrap.log');
34
+ }
35
+ function resolveFromCwd(cwd, filePath) {
36
+ if ((0, path_1.isAbsolute)(filePath))
37
+ return filePath;
38
+ return (0, path_1.resolve)(cwd, filePath);
39
+ }
40
+ function relativeFromCwd(cwd, filePath) {
41
+ return (0, path_1.relative)(cwd, filePath);
42
+ }
43
+ //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":";;;AAOA,wCAEC;AAED,8CAMC;AAED,oCAEC;AAED,wCAEC;AAED,kDAEC;AAED,wCAGC;AAED,0CAEC;AAtCD,2BAA6B;AAC7B,+BAA2D;AAC3D,2BAA2C;AAE9B,QAAA,YAAY,GAAG,WAAW,CAAC;AAC3B,QAAA,iBAAiB,GAAG,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,WAAW,CAAC,CAAC;AAE9D,SAAgB,cAAc,CAAC,GAAW;IACxC,OAAO,IAAA,WAAI,EAAC,GAAG,EAAE,oBAAY,CAAC,CAAC;AACjC,CAAC;AAED,SAAgB,iBAAiB,CAAC,GAAW;IAC3C,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,CAAC,IAAA,eAAU,EAAC,GAAG,CAAC,EAAE,CAAC;QACrB,IAAA,cAAS,EAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAgB,YAAY,CAAC,GAAW;IACtC,OAAO,IAAA,WAAI,EAAC,cAAc,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC;AACjD,CAAC;AAED,SAAgB,cAAc,CAAC,GAAW;IACxC,OAAO,IAAA,WAAI,EAAC,cAAc,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC;AACjD,CAAC;AAED,SAAgB,mBAAmB,CAAC,GAAW;IAC7C,OAAO,IAAA,WAAI,EAAC,cAAc,CAAC,GAAG,CAAC,EAAE,eAAe,CAAC,CAAC;AACpD,CAAC;AAED,SAAgB,cAAc,CAAC,GAAW,EAAE,QAAgB;IAC1D,IAAI,IAAA,iBAAU,EAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC1C,OAAO,IAAA,cAAO,EAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAChC,CAAC;AAED,SAAgB,eAAe,CAAC,GAAW,EAAE,QAAgB;IAC3D,OAAO,IAAA,eAAQ,EAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AACjC,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare function stripPrivate(text: string): string;
2
+ export declare function hasPrivateContent(text: string): boolean;
3
+ export declare function isPrivateFile(filePath: string): boolean;
4
+ export declare function sanitizeForLLM(content: string, filePath?: string): string;
5
+ //# sourceMappingURL=privacy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"privacy.d.ts","sourceRoot":"","sources":["../../src/utils/privacy.ts"],"names":[],"mappings":"AAOA,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMjD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAMvD;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAUvD;AAGD,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAGzE"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ // Strips <private>...</private> blocks and # private: lines from content
3
+ // before it is sent to any LLM provider or stored as searchable observation.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.stripPrivate = stripPrivate;
6
+ exports.hasPrivateContent = hasPrivateContent;
7
+ exports.isPrivateFile = isPrivateFile;
8
+ exports.sanitizeForLLM = sanitizeForLLM;
9
+ const PRIVATE_BLOCK_RE = /<private>[\s\S]*?<\/private>/gi;
10
+ const PRIVATE_LINE_RE = /^.*#\s*private:.*$/gim;
11
+ const PRIVATE_ANNOTATION_RE = /\/\/\s*@private.*$/gim;
12
+ function stripPrivate(text) {
13
+ return text
14
+ .replace(PRIVATE_BLOCK_RE, '[redacted]')
15
+ .replace(PRIVATE_LINE_RE, '# [redacted]')
16
+ .replace(PRIVATE_ANNOTATION_RE, '// [redacted]')
17
+ .trim();
18
+ }
19
+ function hasPrivateContent(text) {
20
+ return (PRIVATE_BLOCK_RE.test(text) ||
21
+ PRIVATE_LINE_RE.test(text) ||
22
+ PRIVATE_ANNOTATION_RE.test(text));
23
+ }
24
+ function isPrivateFile(filePath) {
25
+ const lower = filePath.toLowerCase();
26
+ return (lower.includes('.env') ||
27
+ lower.includes('secrets') ||
28
+ lower.includes('credentials') ||
29
+ lower.includes('.key') ||
30
+ lower.includes('.pem') ||
31
+ lower.endsWith('.cert'));
32
+ }
33
+ // Sanitize content before indexing or sending to LLM
34
+ function sanitizeForLLM(content, filePath) {
35
+ if (filePath && isPrivateFile(filePath))
36
+ return '[file redacted — private path]';
37
+ return stripPrivate(content);
38
+ }
39
+ //# sourceMappingURL=privacy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"privacy.js","sourceRoot":"","sources":["../../src/utils/privacy.ts"],"names":[],"mappings":";AAAA,yEAAyE;AACzE,6EAA6E;;AAM7E,oCAMC;AAED,8CAMC;AAED,sCAUC;AAGD,wCAGC;AApCD,MAAM,gBAAgB,GAAG,gCAAgC,CAAC;AAC1D,MAAM,eAAe,GAAG,uBAAuB,CAAC;AAChD,MAAM,qBAAqB,GAAG,uBAAuB,CAAC;AAEtD,SAAgB,YAAY,CAAC,IAAY;IACvC,OAAO,IAAI;SACR,OAAO,CAAC,gBAAgB,EAAE,YAAY,CAAC;SACvC,OAAO,CAAC,eAAe,EAAE,cAAc,CAAC;SACxC,OAAO,CAAC,qBAAqB,EAAE,eAAe,CAAC;SAC/C,IAAI,EAAE,CAAC;AACZ,CAAC;AAED,SAAgB,iBAAiB,CAAC,IAAY;IAC5C,OAAO,CACL,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;QAC3B,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1B,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CACjC,CAAC;AACJ,CAAC;AAED,SAAgB,aAAa,CAAC,QAAgB;IAC5C,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IACrC,OAAO,CACL,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QACtB,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;QACzB,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC7B,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QACtB,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QACtB,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CACxB,CAAC;AACJ,CAAC;AAED,qDAAqD;AACrD,SAAgB,cAAc,CAAC,OAAe,EAAE,QAAiB;IAC/D,IAAI,QAAQ,IAAI,aAAa,CAAC,QAAQ,CAAC;QAAE,OAAO,gCAAgC,CAAC;IACjF,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { z } from 'zod';
2
+ type JsonSchemaProperty = {
3
+ type?: string | string[];
4
+ description?: string;
5
+ enum?: unknown[];
6
+ default?: unknown;
7
+ minimum?: number;
8
+ maximum?: number;
9
+ minLength?: number;
10
+ properties?: Record<string, JsonSchemaProperty>;
11
+ required?: string[];
12
+ items?: JsonSchemaProperty;
13
+ oneOf?: JsonSchemaProperty[];
14
+ anyOf?: JsonSchemaProperty[];
15
+ };
16
+ type JsonSchema = {
17
+ type: 'object';
18
+ properties: Record<string, JsonSchemaProperty>;
19
+ required?: string[];
20
+ };
21
+ export declare function zodToJsonSchema(schema: z.ZodTypeAny): JsonSchema;
22
+ export {};
23
+ //# sourceMappingURL=zodToJsonSchema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zodToJsonSchema.d.ts","sourceRoot":"","sources":["../../src/utils/zodToJsonSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,KAAK,kBAAkB,GAAG;IACxB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAChD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,KAAK,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC7B,KAAK,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAC9B,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAC/C,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC;AAGF,wBAAgB,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,GAAG,UAAU,CA6ChE"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.zodToJsonSchema = zodToJsonSchema;
4
+ const zod_1 = require("zod");
5
+ // Minimal Zod-to-JSON-Schema converter (avoids heavy zod-to-json-schema dependency)
6
+ function zodToJsonSchema(schema) {
7
+ function convert(s) {
8
+ if (s instanceof zod_1.z.ZodObject) {
9
+ const shape = s.shape;
10
+ const properties = {};
11
+ const required = [];
12
+ for (const [k, v] of Object.entries(shape)) {
13
+ properties[k] = convert(v);
14
+ if (!(v instanceof zod_1.z.ZodOptional) && !(v instanceof zod_1.z.ZodDefault)) {
15
+ required.push(k);
16
+ }
17
+ }
18
+ return { type: 'object', properties, required: required.length ? required : undefined };
19
+ }
20
+ if (s instanceof zod_1.z.ZodString) {
21
+ const prop = { type: 'string' };
22
+ const desc = s._def.description;
23
+ if (desc)
24
+ prop.description = desc;
25
+ return prop;
26
+ }
27
+ if (s instanceof zod_1.z.ZodNumber) {
28
+ return { type: 'number' };
29
+ }
30
+ if (s instanceof zod_1.z.ZodBoolean) {
31
+ return { type: 'boolean' };
32
+ }
33
+ if (s instanceof zod_1.z.ZodEnum) {
34
+ return { type: 'string', enum: s.options };
35
+ }
36
+ if (s instanceof zod_1.z.ZodOptional) {
37
+ return convert(s.unwrap());
38
+ }
39
+ if (s instanceof zod_1.z.ZodDefault) {
40
+ const inner = convert(s._def.innerType);
41
+ inner.default = s._def.defaultValue();
42
+ return inner;
43
+ }
44
+ if (s instanceof zod_1.z.ZodArray) {
45
+ return { type: 'array', items: convert(s.element) };
46
+ }
47
+ return {};
48
+ }
49
+ const result = convert(schema);
50
+ return result;
51
+ }
52
+ //# sourceMappingURL=zodToJsonSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zodToJsonSchema.js","sourceRoot":"","sources":["../../src/utils/zodToJsonSchema.ts"],"names":[],"mappings":";;AAwBA,0CA6CC;AArED,6BAAwB;AAuBxB,oFAAoF;AACpF,SAAgB,eAAe,CAAC,MAAoB;IAClD,SAAS,OAAO,CAAC,CAAe;QAC9B,IAAI,CAAC,YAAY,OAAC,CAAC,SAAS,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,CAAC,CAAC,KAAqC,CAAC;YACtD,MAAM,UAAU,GAAuC,EAAE,CAAC;YAC1D,MAAM,QAAQ,GAAa,EAAE,CAAC;YAC9B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3C,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC3B,IAAI,CAAC,CAAC,CAAC,YAAY,OAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,OAAC,CAAC,UAAU,CAAC,EAAE,CAAC;oBAClE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACnB,CAAC;YACH,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;QAC1F,CAAC;QACD,IAAI,CAAC,YAAY,OAAC,CAAC,SAAS,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAuB,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;YACpD,MAAM,IAAI,GAAI,CAAiB,CAAC,IAAI,CAAC,WAAW,CAAC;YACjD,IAAI,IAAI;gBAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC,YAAY,OAAC,CAAC,SAAS,EAAE,CAAC;YAC7B,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC5B,CAAC;QACD,IAAI,CAAC,YAAY,OAAC,CAAC,UAAU,EAAE,CAAC;YAC9B,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC7B,CAAC;QACD,IAAI,CAAC,YAAY,OAAC,CAAC,OAAO,EAAE,CAAC;YAC3B,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAG,CAAsC,CAAC,OAAO,EAAE,CAAC;QACnF,CAAC;QACD,IAAI,CAAC,YAAY,OAAC,CAAC,WAAW,EAAE,CAAC;YAC/B,OAAO,OAAO,CAAC,CAAC,CAAC,MAAM,EAAkB,CAAC,CAAC;QAC7C,CAAC;QACD,IAAI,CAAC,YAAY,OAAC,CAAC,UAAU,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,OAAO,CAAE,CAAgC,CAAC,IAAI,CAAC,SAAyB,CAAC,CAAC;YACxF,KAAK,CAAC,OAAO,GAAI,CAAgC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACtE,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,YAAY,OAAC,CAAC,QAAQ,EAAE,CAAC;YAC5B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAE,CAA8B,CAAC,OAAO,CAAC,EAAE,CAAC;QACpF,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/B,OAAO,MAAoB,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { Document, ScoredDocument, VectorStore } from './VectorStore.js';
2
+ export declare class MemoryVectorStore implements VectorStore {
3
+ private documents;
4
+ private useEmbeddings;
5
+ constructor(opts?: {
6
+ useEmbeddings?: boolean;
7
+ });
8
+ add(documents: Document[]): Promise<void>;
9
+ search(query: string, k?: number): Promise<ScoredDocument[]>;
10
+ delete(ids: string[]): Promise<void>;
11
+ clear(): Promise<void>;
12
+ size(): number;
13
+ serialize(): string;
14
+ static deserialize(data: string): MemoryVectorStore;
15
+ }
16
+ //# sourceMappingURL=MemoryVectorStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemoryVectorStore.d.ts","sourceRoot":"","sources":["../../src/vector/MemoryVectorStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAyC9E,qBAAa,iBAAkB,YAAW,WAAW;IACnD,OAAO,CAAC,SAAS,CAAoC;IACrD,OAAO,CAAC,aAAa,CAAQ;gBAEjB,IAAI,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,OAAO,CAAA;KAAE;IAIxC,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAOzC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,SAAI,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAwBvD,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,IAAI,IAAI,MAAM;IAId,SAAS,IAAI,MAAM;IAInB,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB;CAMpD"}