@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.
- package/LICENSE +21 -0
- package/README.md +379 -0
- package/dist/agents/BaseAgent.d.ts +32 -0
- package/dist/agents/BaseAgent.d.ts.map +1 -0
- package/dist/agents/BaseAgent.js +19 -0
- package/dist/agents/BaseAgent.js.map +1 -0
- package/dist/agents/CodeAgent.d.ts +7 -0
- package/dist/agents/CodeAgent.d.ts.map +1 -0
- package/dist/agents/CodeAgent.js +130 -0
- package/dist/agents/CodeAgent.js.map +1 -0
- package/dist/cli/commands/corpus.d.ts +20 -0
- package/dist/cli/commands/corpus.d.ts.map +1 -0
- package/dist/cli/commands/corpus.js +60 -0
- package/dist/cli/commands/corpus.js.map +1 -0
- package/dist/cli/commands/daemon.d.ts +5 -0
- package/dist/cli/commands/daemon.d.ts.map +1 -0
- package/dist/cli/commands/daemon.js +79 -0
- package/dist/cli/commands/daemon.js.map +1 -0
- package/dist/cli/commands/dev.d.ts +2 -0
- package/dist/cli/commands/dev.d.ts.map +1 -0
- package/dist/cli/commands/dev.js +20 -0
- package/dist/cli/commands/dev.js.map +1 -0
- package/dist/cli/commands/index-cmd.d.ts +6 -0
- package/dist/cli/commands/index-cmd.d.ts.map +1 -0
- package/dist/cli/commands/index-cmd.js +57 -0
- package/dist/cli/commands/index-cmd.js.map +1 -0
- package/dist/cli/commands/init.d.ts +2 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +173 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/install.d.ts +8 -0
- package/dist/cli/commands/install.d.ts.map +1 -0
- package/dist/cli/commands/install.js +154 -0
- package/dist/cli/commands/install.js.map +1 -0
- package/dist/cli/commands/observe.d.ts +19 -0
- package/dist/cli/commands/observe.d.ts.map +1 -0
- package/dist/cli/commands/observe.js +86 -0
- package/dist/cli/commands/observe.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +162 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/config/defaults.d.ts +3 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +8 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/loader.d.ts +3 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +96 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/types.d.ts +436 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +73 -0
- package/dist/config/types.js.map +1 -0
- package/dist/core/ExecutionEngine.d.ts +26 -0
- package/dist/core/ExecutionEngine.d.ts.map +1 -0
- package/dist/core/ExecutionEngine.js +102 -0
- package/dist/core/ExecutionEngine.js.map +1 -0
- package/dist/core/TaskRouter.d.ts +3 -0
- package/dist/core/TaskRouter.d.ts.map +1 -0
- package/dist/core/TaskRouter.js +29 -0
- package/dist/core/TaskRouter.js.map +1 -0
- package/dist/daemon/DaemonClient.d.ts +8 -0
- package/dist/daemon/DaemonClient.d.ts.map +1 -0
- package/dist/daemon/DaemonClient.js +61 -0
- package/dist/daemon/DaemonClient.js.map +1 -0
- package/dist/daemon/DaemonServer.d.ts +17 -0
- package/dist/daemon/DaemonServer.d.ts.map +1 -0
- package/dist/daemon/DaemonServer.js +235 -0
- package/dist/daemon/DaemonServer.js.map +1 -0
- package/dist/db/DatabaseManager.d.ts +79 -0
- package/dist/db/DatabaseManager.d.ts.map +1 -0
- package/dist/db/DatabaseManager.js +212 -0
- package/dist/db/DatabaseManager.js.map +1 -0
- package/dist/db/schema.d.ts +2 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +127 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/git/CommitFormatter.d.ts +19 -0
- package/dist/git/CommitFormatter.d.ts.map +1 -0
- package/dist/git/CommitFormatter.js +47 -0
- package/dist/git/CommitFormatter.js.map +1 -0
- package/dist/git/GitManager.d.ts +28 -0
- package/dist/git/GitManager.d.ts.map +1 -0
- package/dist/git/GitManager.js +147 -0
- package/dist/git/GitManager.js.map +1 -0
- package/dist/graph/GraphStore.d.ts +54 -0
- package/dist/graph/GraphStore.d.ts.map +1 -0
- package/dist/graph/GraphStore.js +3 -0
- package/dist/graph/GraphStore.js.map +1 -0
- package/dist/graph/InMemoryGraphStore.d.ts +16 -0
- package/dist/graph/InMemoryGraphStore.d.ts.map +1 -0
- package/dist/graph/InMemoryGraphStore.js +75 -0
- package/dist/graph/InMemoryGraphStore.js.map +1 -0
- package/dist/graph/SQLiteGraphStore.d.ts +31 -0
- package/dist/graph/SQLiteGraphStore.d.ts.map +1 -0
- package/dist/graph/SQLiteGraphStore.js +158 -0
- package/dist/graph/SQLiteGraphStore.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +32 -0
- package/dist/index.js.map +1 -0
- package/dist/indexing/ASTParser.d.ts +32 -0
- package/dist/indexing/ASTParser.d.ts.map +1 -0
- package/dist/indexing/ASTParser.js +185 -0
- package/dist/indexing/ASTParser.js.map +1 -0
- package/dist/indexing/EmbeddingGenerator.d.ts +15 -0
- package/dist/indexing/EmbeddingGenerator.d.ts.map +1 -0
- package/dist/indexing/EmbeddingGenerator.js +66 -0
- package/dist/indexing/EmbeddingGenerator.js.map +1 -0
- package/dist/indexing/FileScanner.d.ts +10 -0
- package/dist/indexing/FileScanner.d.ts.map +1 -0
- package/dist/indexing/FileScanner.js +58 -0
- package/dist/indexing/FileScanner.js.map +1 -0
- package/dist/indexing/GraphBuilder.d.ts +4 -0
- package/dist/indexing/GraphBuilder.d.ts.map +1 -0
- package/dist/indexing/GraphBuilder.js +51 -0
- package/dist/indexing/GraphBuilder.js.map +1 -0
- package/dist/indexing/Indexer.d.ts +13 -0
- package/dist/indexing/Indexer.d.ts.map +1 -0
- package/dist/indexing/Indexer.js +68 -0
- package/dist/indexing/Indexer.js.map +1 -0
- package/dist/mcp/server.d.ts +2 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +155 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools/corpus_search.d.ts +14 -0
- package/dist/mcp/tools/corpus_search.d.ts.map +1 -0
- package/dist/mcp/tools/corpus_search.js +33 -0
- package/dist/mcp/tools/corpus_search.js.map +1 -0
- package/dist/mcp/tools/execute.d.ts +19 -0
- package/dist/mcp/tools/execute.d.ts.map +1 -0
- package/dist/mcp/tools/execute.js +38 -0
- package/dist/mcp/tools/execute.js.map +1 -0
- package/dist/mcp/tools/get_context.d.ts +17 -0
- package/dist/mcp/tools/get_context.d.ts.map +1 -0
- package/dist/mcp/tools/get_context.js +50 -0
- package/dist/mcp/tools/get_context.js.map +1 -0
- package/dist/mcp/tools/get_graph.d.ts +26 -0
- package/dist/mcp/tools/get_graph.d.ts.map +1 -0
- package/dist/mcp/tools/get_graph.js +68 -0
- package/dist/mcp/tools/get_graph.js.map +1 -0
- package/dist/mcp/tools/observations.d.ts +23 -0
- package/dist/mcp/tools/observations.d.ts.map +1 -0
- package/dist/mcp/tools/observations.js +72 -0
- package/dist/mcp/tools/observations.js.map +1 -0
- package/dist/mcp/tools/search_code.d.ts +14 -0
- package/dist/mcp/tools/search_code.d.ts.map +1 -0
- package/dist/mcp/tools/search_code.js +38 -0
- package/dist/mcp/tools/search_code.js.map +1 -0
- package/dist/mcp/tools/smart_outline.d.ts +14 -0
- package/dist/mcp/tools/smart_outline.d.ts.map +1 -0
- package/dist/mcp/tools/smart_outline.js +99 -0
- package/dist/mcp/tools/smart_outline.js.map +1 -0
- package/dist/mcp/tools/smart_search.d.ts +20 -0
- package/dist/mcp/tools/smart_search.d.ts.map +1 -0
- package/dist/mcp/tools/smart_search.js +131 -0
- package/dist/mcp/tools/smart_search.js.map +1 -0
- package/dist/memory/FallbackMemory.d.ts +9 -0
- package/dist/memory/FallbackMemory.d.ts.map +1 -0
- package/dist/memory/FallbackMemory.js +70 -0
- package/dist/memory/FallbackMemory.js.map +1 -0
- package/dist/memory/HybridMemory.d.ts +20 -0
- package/dist/memory/HybridMemory.d.ts.map +1 -0
- package/dist/memory/HybridMemory.js +74 -0
- package/dist/memory/HybridMemory.js.map +1 -0
- package/dist/providers/AgentSDKProvider.d.ts +13 -0
- package/dist/providers/AgentSDKProvider.d.ts.map +1 -0
- package/dist/providers/AgentSDKProvider.js +64 -0
- package/dist/providers/AgentSDKProvider.js.map +1 -0
- package/dist/providers/AnthropicProvider.d.ts +11 -0
- package/dist/providers/AnthropicProvider.d.ts.map +1 -0
- package/dist/providers/AnthropicProvider.js +61 -0
- package/dist/providers/AnthropicProvider.js.map +1 -0
- package/dist/providers/LLMProvider.d.ts +12 -0
- package/dist/providers/LLMProvider.d.ts.map +1 -0
- package/dist/providers/LLMProvider.js +3 -0
- package/dist/providers/LLMProvider.js.map +1 -0
- package/dist/providers/OllamaProvider.d.ts +11 -0
- package/dist/providers/OllamaProvider.d.ts.map +1 -0
- package/dist/providers/OllamaProvider.js +71 -0
- package/dist/providers/OllamaProvider.js.map +1 -0
- package/dist/providers/OpenAIProvider.d.ts +11 -0
- package/dist/providers/OpenAIProvider.d.ts.map +1 -0
- package/dist/providers/OpenAIProvider.js +63 -0
- package/dist/providers/OpenAIProvider.js.map +1 -0
- package/dist/providers/OpenRouterProvider.d.ts +12 -0
- package/dist/providers/OpenRouterProvider.d.ts.map +1 -0
- package/dist/providers/OpenRouterProvider.js +89 -0
- package/dist/providers/OpenRouterProvider.js.map +1 -0
- package/dist/providers/ProviderFactory.d.ts +4 -0
- package/dist/providers/ProviderFactory.d.ts.map +1 -0
- package/dist/providers/ProviderFactory.js +27 -0
- package/dist/providers/ProviderFactory.js.map +1 -0
- package/dist/services/CorpusService.d.ts +27 -0
- package/dist/services/CorpusService.d.ts.map +1 -0
- package/dist/services/CorpusService.js +142 -0
- package/dist/services/CorpusService.js.map +1 -0
- package/dist/services/ObservationService.d.ts +17 -0
- package/dist/services/ObservationService.d.ts.map +1 -0
- package/dist/services/ObservationService.js +101 -0
- package/dist/services/ObservationService.js.map +1 -0
- package/dist/services/SessionService.d.ts +10 -0
- package/dist/services/SessionService.d.ts.map +1 -0
- package/dist/services/SessionService.js +38 -0
- package/dist/services/SessionService.js.map +1 -0
- package/dist/services/SummarizationService.d.ts +8 -0
- package/dist/services/SummarizationService.d.ts.map +1 -0
- package/dist/services/SummarizationService.js +65 -0
- package/dist/services/SummarizationService.js.map +1 -0
- package/dist/utils/errors.d.ts +26 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +72 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/logger.d.ts +4 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +16 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/paths.d.ts +10 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +43 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/privacy.d.ts +5 -0
- package/dist/utils/privacy.d.ts.map +1 -0
- package/dist/utils/privacy.js +39 -0
- package/dist/utils/privacy.js.map +1 -0
- package/dist/utils/zodToJsonSchema.d.ts +23 -0
- package/dist/utils/zodToJsonSchema.d.ts.map +1 -0
- package/dist/utils/zodToJsonSchema.js +52 -0
- package/dist/utils/zodToJsonSchema.js.map +1 -0
- package/dist/vector/MemoryVectorStore.d.ts +16 -0
- package/dist/vector/MemoryVectorStore.d.ts.map +1 -0
- package/dist/vector/MemoryVectorStore.js +97 -0
- package/dist/vector/MemoryVectorStore.js.map +1 -0
- package/dist/vector/VectorStore.d.ts +19 -0
- package/dist/vector/VectorStore.d.ts.map +1 -0
- package/dist/vector/VectorStore.js +3 -0
- package/dist/vector/VectorStore.js.map +1 -0
- package/dist/vector/VectraVectorStore.d.ts +23 -0
- package/dist/vector/VectraVectorStore.d.ts.map +1 -0
- package/dist/vector/VectraVectorStore.js +93 -0
- package/dist/vector/VectraVectorStore.js.map +1 -0
- package/examples/firecode.config.example.ts +87 -0
- package/package.json +111 -0
- package/plugin/.claude-plugin/plugin.json +17 -0
- package/plugin/hooks/hooks.json +86 -0
- package/plugin/scripts/context-inject.js +208 -0
- 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 @@
|
|
|
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"}
|