squish-memory 0.9.2 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{.env.mcp → .env.mcp.example} +23 -0
- package/CHANGELOG.md +102 -0
- package/QUICK-START.md +10 -4
- package/README.md +73 -4
- package/config/plugin-manifest.json +152 -0
- package/config/plugin-manifest.schema.json +244 -0
- package/dist/algorithms/{merge/analytics → analytics}/token-estimator.d.ts +1 -1
- package/dist/algorithms/analytics/token-estimator.d.ts.map +1 -0
- package/dist/algorithms/{merge/analytics → analytics}/token-estimator.js +3 -3
- package/dist/algorithms/analytics/token-estimator.js.map +1 -0
- package/dist/algorithms/detection/hash-filters.d.ts.map +1 -0
- package/dist/algorithms/detection/hash-filters.js.map +1 -0
- package/dist/algorithms/{merge/detection → detection}/semantic-ranker.d.ts +1 -1
- package/dist/algorithms/detection/semantic-ranker.d.ts.map +1 -0
- package/dist/algorithms/{merge/detection → detection}/semantic-ranker.js +1 -1
- package/dist/algorithms/detection/semantic-ranker.js.map +1 -0
- package/dist/algorithms/{merge/detection → detection}/two-stage-detector.d.ts +1 -1
- package/dist/algorithms/detection/two-stage-detector.d.ts.map +1 -0
- package/dist/algorithms/{merge/detection → detection}/two-stage-detector.js +4 -4
- package/dist/algorithms/detection/two-stage-detector.js.map +1 -0
- package/dist/algorithms/handlers/approve-merge.d.ts.map +1 -0
- package/dist/algorithms/{merge/handlers → handlers}/approve-merge.js +4 -4
- package/dist/algorithms/handlers/approve-merge.js.map +1 -0
- package/dist/algorithms/{merge/handlers → handlers}/detect-duplicates.d.ts +1 -1
- package/dist/algorithms/handlers/detect-duplicates.d.ts.map +1 -0
- package/dist/algorithms/{merge/handlers → handlers}/detect-duplicates.js +55 -75
- package/dist/algorithms/handlers/detect-duplicates.js.map +1 -0
- package/dist/algorithms/handlers/get-stats.d.ts.map +1 -0
- package/dist/algorithms/{merge/handlers → handlers}/get-stats.js +3 -3
- package/dist/algorithms/handlers/get-stats.js.map +1 -0
- package/dist/algorithms/handlers/list-proposals.d.ts.map +1 -0
- package/dist/algorithms/{merge/handlers → handlers}/list-proposals.js +3 -3
- package/dist/algorithms/handlers/list-proposals.js.map +1 -0
- package/dist/algorithms/handlers/preview-merge.d.ts.map +1 -0
- package/dist/algorithms/{merge/handlers → handlers}/preview-merge.js +3 -3
- package/dist/algorithms/handlers/preview-merge.js.map +1 -0
- package/dist/algorithms/handlers/reject-merge.d.ts.map +1 -0
- package/dist/algorithms/{merge/handlers → handlers}/reject-merge.js +3 -3
- package/dist/algorithms/handlers/reject-merge.js.map +1 -0
- package/dist/algorithms/handlers/reverse-merge.d.ts.map +1 -0
- package/dist/algorithms/{merge/handlers → handlers}/reverse-merge.js +3 -3
- package/dist/algorithms/handlers/reverse-merge.js.map +1 -0
- package/dist/algorithms/{merge/safety → safety}/safety-checks.d.ts +1 -1
- package/dist/algorithms/safety/safety-checks.d.ts.map +1 -0
- package/dist/algorithms/safety/safety-checks.js +179 -0
- package/dist/algorithms/safety/safety-checks.js.map +1 -0
- package/dist/algorithms/{merge/strategies → strategies}/merge-strategies.d.ts +1 -1
- package/dist/algorithms/strategies/merge-strategies.d.ts.map +1 -0
- package/dist/algorithms/strategies/merge-strategies.js.map +1 -0
- package/dist/algorithms/utils/response-builder.d.ts +28 -0
- package/dist/algorithms/utils/response-builder.d.ts.map +1 -0
- package/dist/algorithms/utils/response-builder.js +37 -0
- package/dist/algorithms/utils/response-builder.js.map +1 -0
- package/dist/api/web/web.d.ts.map +1 -1
- package/dist/api/web/web.js +0 -21
- package/dist/api/web/web.js.map +1 -1
- package/dist/commands/mcp-server.js +1 -1
- package/dist/config.d.ts +9 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +35 -32
- package/dist/config.js.map +1 -1
- package/dist/core/associations.js +2 -2
- package/dist/core/associations.js.map +1 -1
- package/dist/core/core-memory.d.ts +5 -0
- package/dist/core/core-memory.d.ts.map +1 -1
- package/dist/core/core-memory.js +17 -5
- package/dist/core/core-memory.js.map +1 -1
- package/dist/core/embeddings.d.ts +9 -0
- package/dist/core/embeddings.d.ts.map +1 -1
- package/dist/core/embeddings.js +153 -16
- package/dist/core/embeddings.js.map +1 -1
- package/dist/core/layers/generator.d.ts +25 -0
- package/dist/core/layers/generator.d.ts.map +1 -0
- package/dist/core/layers/generator.js +76 -0
- package/dist/core/layers/generator.js.map +1 -0
- package/dist/core/mcp/tools.d.ts.map +1 -1
- package/dist/core/mcp/tools.js +71 -0
- package/dist/core/mcp/tools.js.map +1 -1
- package/dist/core/memory/hybrid-retrieval.d.ts.map +1 -1
- package/dist/core/memory/hybrid-retrieval.js +49 -1
- package/dist/core/memory/hybrid-retrieval.js.map +1 -1
- package/dist/core/memory/hybrid-search.d.ts.map +1 -1
- package/dist/core/memory/hybrid-search.js +0 -7
- package/dist/core/memory/hybrid-search.js.map +1 -1
- package/dist/core/memory/memories.d.ts.map +1 -1
- package/dist/core/memory/memories.js +47 -53
- package/dist/core/memory/memories.js.map +1 -1
- package/dist/core/memory/progressive-disclosure.d.ts.map +1 -1
- package/dist/core/memory/progressive-disclosure.js.map +1 -1
- package/dist/core/namespaces/index.d.ts +71 -0
- package/dist/core/namespaces/index.d.ts.map +1 -0
- package/dist/core/namespaces/index.js +296 -0
- package/dist/core/namespaces/index.js.map +1 -0
- package/dist/core/namespaces/uri-parser.d.ts +31 -0
- package/dist/core/namespaces/uri-parser.d.ts.map +1 -0
- package/dist/core/namespaces/uri-parser.js +74 -0
- package/dist/core/namespaces/uri-parser.js.map +1 -0
- package/dist/core/observations.d.ts.map +1 -1
- package/dist/core/observations.js +3 -12
- package/dist/core/observations.js.map +1 -1
- package/dist/core/projects.d.ts.map +1 -1
- package/dist/core/projects.js +0 -12
- package/dist/core/projects.js.map +1 -1
- package/dist/core/scheduler/cron-scheduler.d.ts.map +1 -1
- package/dist/core/scheduler/cron-scheduler.js +14 -0
- package/dist/core/scheduler/cron-scheduler.js.map +1 -1
- package/dist/core/session-hooks/self-iteration-job.d.ts +20 -0
- package/dist/core/session-hooks/self-iteration-job.d.ts.map +1 -0
- package/dist/core/session-hooks/self-iteration-job.js +278 -0
- package/dist/core/session-hooks/self-iteration-job.js.map +1 -0
- package/dist/core/session-hooks/session-hooks.d.ts +18 -0
- package/dist/core/session-hooks/session-hooks.d.ts.map +1 -0
- package/dist/core/session-hooks/session-hooks.js +55 -0
- package/dist/core/session-hooks/session-hooks.js.map +1 -0
- package/dist/core/tracing/collector.d.ts +111 -0
- package/dist/core/tracing/collector.d.ts.map +1 -0
- package/dist/core/tracing/collector.js +338 -0
- package/dist/core/tracing/collector.js.map +1 -0
- package/dist/core/tracing/visualizer.d.ts +32 -0
- package/dist/core/tracing/visualizer.d.ts.map +1 -0
- package/dist/core/tracing/visualizer.js +165 -0
- package/dist/core/tracing/visualizer.js.map +1 -0
- package/dist/db/bootstrap.d.ts.map +1 -1
- package/dist/db/bootstrap.js +33 -6
- package/dist/db/bootstrap.js.map +1 -1
- package/dist/drizzle/schema-sqlite.d.ts +401 -0
- package/dist/drizzle/schema-sqlite.d.ts.map +1 -1
- package/dist/drizzle/schema-sqlite.js +66 -0
- package/dist/drizzle/schema-sqlite.js.map +1 -1
- package/dist/drizzle/schema.d.ts +385 -0
- package/dist/drizzle/schema.d.ts.map +1 -1
- package/dist/drizzle/schema.js +64 -0
- package/dist/drizzle/schema.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.js +101 -62
- package/dist/index.js.map +1 -1
- package/generated/mcp/manifest.json +23 -0
- package/generated/mcp/mcp-servers.json +25 -0
- package/generated/mcp/mcporter.json +34 -0
- package/generated/mcp/openclaw-memory-qmd.json +17 -0
- package/generated/mcp/runtime.json +12 -0
- package/package.json +68 -26
- package/packages/plugin-claude-code/README.md +73 -0
- package/packages/plugin-claude-code/dist/plugin-wrapper.d.ts +35 -0
- package/packages/plugin-claude-code/dist/plugin-wrapper.d.ts.map +1 -0
- package/packages/plugin-claude-code/dist/plugin-wrapper.js +191 -0
- package/packages/plugin-claude-code/dist/plugin-wrapper.js.map +1 -0
- package/packages/plugin-claude-code/package.json +31 -0
- package/packages/plugin-openclaw/README.md +70 -0
- package/packages/plugin-openclaw/dist/index.d.ts +49 -0
- package/packages/plugin-openclaw/dist/index.d.ts.map +1 -0
- package/packages/plugin-openclaw/dist/index.js +262 -0
- package/packages/plugin-openclaw/dist/index.js.map +1 -0
- package/packages/plugin-openclaw/openclaw.plugin.json +94 -0
- package/packages/plugin-openclaw/package.json +31 -0
- package/packages/plugin-opencode/install.mjs +217 -0
- package/packages/plugin-opencode/package.json +21 -0
- package/scripts/build-release.sh +20 -17
- package/scripts/check-secrets.js +132 -0
- package/scripts/dependency-manager.mjs +217 -0
- package/scripts/detect-clients.mjs +78 -0
- package/scripts/github-release.sh +43 -27
- package/scripts/install-interactive.mjs +674 -0
- package/scripts/install-plugin.mjs +415 -0
- package/scripts/test-interactive.mjs +131 -0
- package/commands/managed-sync.ts +0 -69
- package/commands/mcp-server.ts +0 -519
- package/dist/algorithms/merge/analytics/token-estimator.d.ts.map +0 -1
- package/dist/algorithms/merge/analytics/token-estimator.js.map +0 -1
- package/dist/algorithms/merge/detection/hash-filters.d.ts.map +0 -1
- package/dist/algorithms/merge/detection/hash-filters.js.map +0 -1
- package/dist/algorithms/merge/detection/semantic-ranker.d.ts.map +0 -1
- package/dist/algorithms/merge/detection/semantic-ranker.js.map +0 -1
- package/dist/algorithms/merge/detection/two-stage-detector.d.ts.map +0 -1
- package/dist/algorithms/merge/detection/two-stage-detector.js.map +0 -1
- package/dist/algorithms/merge/handlers/approve-merge.d.ts.map +0 -1
- package/dist/algorithms/merge/handlers/approve-merge.js.map +0 -1
- package/dist/algorithms/merge/handlers/detect-duplicates.d.ts.map +0 -1
- package/dist/algorithms/merge/handlers/detect-duplicates.js.map +0 -1
- package/dist/algorithms/merge/handlers/get-stats.d.ts.map +0 -1
- package/dist/algorithms/merge/handlers/get-stats.js.map +0 -1
- package/dist/algorithms/merge/handlers/list-proposals.d.ts.map +0 -1
- package/dist/algorithms/merge/handlers/list-proposals.js.map +0 -1
- package/dist/algorithms/merge/handlers/preview-merge.d.ts.map +0 -1
- package/dist/algorithms/merge/handlers/preview-merge.js.map +0 -1
- package/dist/algorithms/merge/handlers/reject-merge.d.ts.map +0 -1
- package/dist/algorithms/merge/handlers/reject-merge.js.map +0 -1
- package/dist/algorithms/merge/handlers/reverse-merge.d.ts.map +0 -1
- package/dist/algorithms/merge/handlers/reverse-merge.js.map +0 -1
- package/dist/algorithms/merge/safety/safety-checks.d.ts.map +0 -1
- package/dist/algorithms/merge/safety/safety-checks.js +0 -215
- package/dist/algorithms/merge/safety/safety-checks.js.map +0 -1
- package/dist/algorithms/merge/strategies/merge-strategies.d.ts.map +0 -1
- package/dist/algorithms/merge/strategies/merge-strategies.js.map +0 -1
- package/dist/core/embeddings/qmd-provider.d.ts +0 -65
- package/dist/core/embeddings/qmd-provider.d.ts.map +0 -1
- package/dist/core/embeddings/qmd-provider.js +0 -133
- package/dist/core/embeddings/qmd-provider.js.map +0 -1
- package/scripts/init-dirs.ts +0 -15
- /package/dist/algorithms/{merge/detection → detection}/hash-filters.d.ts +0 -0
- /package/dist/algorithms/{merge/detection → detection}/hash-filters.js +0 -0
- /package/dist/algorithms/{merge/handlers → handlers}/approve-merge.d.ts +0 -0
- /package/dist/algorithms/{merge/handlers → handlers}/get-stats.d.ts +0 -0
- /package/dist/algorithms/{merge/handlers → handlers}/list-proposals.d.ts +0 -0
- /package/dist/algorithms/{merge/handlers → handlers}/preview-merge.d.ts +0 -0
- /package/dist/algorithms/{merge/handlers → handlers}/reject-merge.d.ts +0 -0
- /package/dist/algorithms/{merge/handlers → handlers}/reverse-merge.d.ts +0 -0
- /package/dist/algorithms/{merge/strategies → strategies}/merge-strategies.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../../core/tracing/collector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,338 @@
|
|
|
1
|
+
/** Trace Collector - Collects search pipeline traces for debugging and performance analysis
|
|
2
|
+
*
|
|
3
|
+
* Trace storage format - All search operations are logged with timing information
|
|
4
|
+
* Trace retrieval - Get traces by session or ID
|
|
5
|
+
*/
|
|
6
|
+
import { logger } from '../logger.js';
|
|
7
|
+
import { getDb } from '../../db/index.js';
|
|
8
|
+
import { getSchema } from '../../db/schema.js';
|
|
9
|
+
import { eq, desc, sql } from 'drizzle-orm';
|
|
10
|
+
/**
|
|
11
|
+
* Start a new search trace collection
|
|
12
|
+
*/
|
|
13
|
+
export async function startTrace(sessionId, query) {
|
|
14
|
+
const db = await getDb();
|
|
15
|
+
if (!db) {
|
|
16
|
+
logger.error('Database unavailable for trace collection');
|
|
17
|
+
return '';
|
|
18
|
+
}
|
|
19
|
+
const schema = await getSchema();
|
|
20
|
+
const traceId = crypto.randomUUID();
|
|
21
|
+
const timestamp = new Date();
|
|
22
|
+
// Create trace record
|
|
23
|
+
await db.insert(schema.searchTraces).values({
|
|
24
|
+
id: traceId,
|
|
25
|
+
sessionId,
|
|
26
|
+
query,
|
|
27
|
+
timestamp,
|
|
28
|
+
resultCount: 0,
|
|
29
|
+
totalDurationMs: 0,
|
|
30
|
+
});
|
|
31
|
+
logger.info(`[Tracing] Started trace ${traceId}`);
|
|
32
|
+
return traceId;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Add query rewrite stage data
|
|
36
|
+
*/
|
|
37
|
+
export async function addQueryRewriteStage(traceId, stage) {
|
|
38
|
+
const db = await getDb();
|
|
39
|
+
if (!db)
|
|
40
|
+
return;
|
|
41
|
+
const schema = await getSchema();
|
|
42
|
+
const data = JSON.stringify(stage);
|
|
43
|
+
await db.update(schema.searchTraces)
|
|
44
|
+
.set({
|
|
45
|
+
queryRewrite: sql `CAST(? AS jsonb)`,
|
|
46
|
+
})
|
|
47
|
+
.where(eq(schema.searchTraces.id, traceId))
|
|
48
|
+
.set({ queryRewrite: data });
|
|
49
|
+
logger.debug(`[Tracing] Added queryRewrite stage to trace ${traceId}`);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Add candidate retrieval stage data
|
|
53
|
+
*/
|
|
54
|
+
export async function addCandidateRetrievalStage(traceId, stage) {
|
|
55
|
+
const db = await getDb();
|
|
56
|
+
if (!db)
|
|
57
|
+
return;
|
|
58
|
+
const schema = await getSchema();
|
|
59
|
+
const data = JSON.stringify(stage);
|
|
60
|
+
await db.update(schema.searchTraces)
|
|
61
|
+
.set({ candidateRetrieval: data })
|
|
62
|
+
.where(eq(schema.searchTraces.id, traceId));
|
|
63
|
+
logger.debug(`[Tracing] Added candidateRetrieval stage to trace ${traceId}`);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Add entity filtering stage data
|
|
67
|
+
*/
|
|
68
|
+
export async function addEntityFilteringStage(traceId, stage) {
|
|
69
|
+
const db = await getDb();
|
|
70
|
+
if (!db)
|
|
71
|
+
return;
|
|
72
|
+
const schema = await getSchema();
|
|
73
|
+
const data = JSON.stringify(stage);
|
|
74
|
+
await db.update(schema.searchTraces)
|
|
75
|
+
.set({ entityFiltering: data })
|
|
76
|
+
.where(eq(schema.searchTraces.id, traceId));
|
|
77
|
+
logger.debug(`[Tracing] Added entityFiltering stage to trace ${traceId}`);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Add hybrid scoring stage data
|
|
81
|
+
*/
|
|
82
|
+
export async function addHybridScoringStage(traceId, stage) {
|
|
83
|
+
const db = await getDb();
|
|
84
|
+
if (!db)
|
|
85
|
+
return;
|
|
86
|
+
const schema = await getSchema();
|
|
87
|
+
const data = JSON.stringify(stage);
|
|
88
|
+
await db.update(schema.searchTraces)
|
|
89
|
+
.set({ hybridScoring: data })
|
|
90
|
+
.where(eq(schema.searchTraces.id, traceId));
|
|
91
|
+
logger.debug(`[Tracing] Added hybridScoring stage to trace ${traceId}`);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Add reranking stage data
|
|
95
|
+
*/
|
|
96
|
+
export async function addRerankingStage(traceId, stage) {
|
|
97
|
+
const db = await getDb();
|
|
98
|
+
if (!db)
|
|
99
|
+
return;
|
|
100
|
+
const schema = await getSchema();
|
|
101
|
+
const data = JSON.stringify(stage);
|
|
102
|
+
await db.update(schema.searchTraces)
|
|
103
|
+
.set({ reranking: data })
|
|
104
|
+
.where(eq(schema.searchTraces.id, traceId));
|
|
105
|
+
logger.debug(`[Tracing] Added reranking stage to trace ${traceId}`);
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Complete current trace (all stages done)
|
|
109
|
+
*/
|
|
110
|
+
export async function completeTrace(traceId, results) {
|
|
111
|
+
const db = await getDb();
|
|
112
|
+
if (!db)
|
|
113
|
+
return;
|
|
114
|
+
const schema = await getSchema();
|
|
115
|
+
// Get trace
|
|
116
|
+
const rows = await db.select()
|
|
117
|
+
.from(schema.searchTraces)
|
|
118
|
+
.where(eq(schema.searchTraces.id, traceId))
|
|
119
|
+
.limit(1);
|
|
120
|
+
if (!rows || rows.length === 0) {
|
|
121
|
+
logger.warn(`[Tracing] Trace ${traceId} not found`);
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
const trace = rows[0];
|
|
125
|
+
const startTime = trace.timestamp.getTime();
|
|
126
|
+
const endTime = Date.now();
|
|
127
|
+
const totalDurationMs = endTime - startTime;
|
|
128
|
+
const resultCount = results.length;
|
|
129
|
+
const topResults = results.slice(0, 10);
|
|
130
|
+
await db.update(schema.searchTraces)
|
|
131
|
+
.set({
|
|
132
|
+
resultCount,
|
|
133
|
+
topResults: JSON.stringify(topResults),
|
|
134
|
+
totalDurationMs,
|
|
135
|
+
})
|
|
136
|
+
.where(eq(schema.searchTraces.id, traceId));
|
|
137
|
+
logger.info(`[Tracing] Completed trace ${traceId} with ${resultCount} results`);
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Get traces for a session
|
|
141
|
+
*/
|
|
142
|
+
export async function getTraces(options = {}) {
|
|
143
|
+
const db = await getDb();
|
|
144
|
+
if (!db)
|
|
145
|
+
return [];
|
|
146
|
+
const schema = await getSchema();
|
|
147
|
+
let conditions = [];
|
|
148
|
+
if (options.sessionId) {
|
|
149
|
+
conditions.push(eq(schema.searchTraces.sessionId, options.sessionId));
|
|
150
|
+
}
|
|
151
|
+
if (options.session && options.session.length > 0) {
|
|
152
|
+
conditions.push(eq(schema.searchTraces.sessionId, options.session));
|
|
153
|
+
}
|
|
154
|
+
const query = db.select()
|
|
155
|
+
.from(schema.searchTraces)
|
|
156
|
+
.where(conditions.length > 0 ? eq(schema.searchTraces.sessionId, options.sessionId || options.session || '') : undefined)
|
|
157
|
+
.orderBy(desc(schema.searchTraces.timestamp));
|
|
158
|
+
if (options.limit) {
|
|
159
|
+
query.limit(options.limit);
|
|
160
|
+
}
|
|
161
|
+
const traces = await query;
|
|
162
|
+
return traces.map((row) => ({
|
|
163
|
+
id: row.id,
|
|
164
|
+
sessionId: row.session_id,
|
|
165
|
+
query: row.query,
|
|
166
|
+
timestamp: row.timestamp,
|
|
167
|
+
totalDurationMs: row.total_duration_ms,
|
|
168
|
+
metadata: row.metadata ? JSON.parse(String(row.metadata)) : {},
|
|
169
|
+
queryRewrite: row.query_rewrite ? JSON.parse(String(row.query_rewrite)) : undefined,
|
|
170
|
+
candidateRetrieval: row.candidate_retrieval ? JSON.parse(String(row.candidate_retrieval)) : undefined,
|
|
171
|
+
entityFiltering: row.entity_filtering ? JSON.parse(String(row.entity_filtering)) : undefined,
|
|
172
|
+
hybridScoring: row.hybrid_scoring ? JSON.parse(String(row.hybrid_scoring)) : undefined,
|
|
173
|
+
reranking: row.reranking ? JSON.parse(String(row.reranking)) : undefined,
|
|
174
|
+
resultCount: row.result_count,
|
|
175
|
+
topResults: row.top_results ? JSON.parse(String(row.top_results)) : undefined,
|
|
176
|
+
}));
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Get a specific trace by ID
|
|
180
|
+
*/
|
|
181
|
+
export async function getTraceById(traceId) {
|
|
182
|
+
const db = await getDb();
|
|
183
|
+
if (!db)
|
|
184
|
+
return null;
|
|
185
|
+
const schema = await getSchema();
|
|
186
|
+
const rows = await db.select()
|
|
187
|
+
.from(schema.searchTraces)
|
|
188
|
+
.where(eq(schema.searchTraces.id, traceId))
|
|
189
|
+
.limit(1);
|
|
190
|
+
if (rows.length === 0)
|
|
191
|
+
return null;
|
|
192
|
+
const row = rows[0];
|
|
193
|
+
return {
|
|
194
|
+
id: row.id,
|
|
195
|
+
sessionId: row.session_id,
|
|
196
|
+
query: row.query,
|
|
197
|
+
timestamp: row.timestamp,
|
|
198
|
+
totalDurationMs: row.total_duration_ms,
|
|
199
|
+
metadata: row.metadata ? JSON.parse(String(row.metadata)) : {},
|
|
200
|
+
queryRewrite: row.query_rewrite ? JSON.parse(String(row.query_rewrite)) : undefined,
|
|
201
|
+
candidateRetrieval: row.candidate_retrieval ? JSON.parse(String(row.candidate_retrieval)) : undefined,
|
|
202
|
+
entityFiltering: row.entity_filtering ? JSON.parse(String(row.entity_filtering)) : undefined,
|
|
203
|
+
hybridScoring: row.hybrid_scoring ? JSON.parse(String(row.hybrid_scoring)) : undefined,
|
|
204
|
+
reranking: row.reranking ? JSON.parse(String(row.reranking)) : undefined,
|
|
205
|
+
resultCount: row.result_count,
|
|
206
|
+
topResults: row.top_results ? JSON.parse(String(row.top_results)) : undefined,
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Get recent traces (limited)
|
|
211
|
+
*/
|
|
212
|
+
export async function getRecentTraces(limit = 10) {
|
|
213
|
+
const db = await getDb();
|
|
214
|
+
if (!db)
|
|
215
|
+
return [];
|
|
216
|
+
const schema = await getSchema();
|
|
217
|
+
const traces = await db.select()
|
|
218
|
+
.from(schema.searchTraces)
|
|
219
|
+
.orderBy(desc(schema.searchTraces.timestamp))
|
|
220
|
+
.limit(limit);
|
|
221
|
+
return traces.map((row) => ({
|
|
222
|
+
id: row.id,
|
|
223
|
+
sessionId: row.session_id,
|
|
224
|
+
query: row.query,
|
|
225
|
+
timestamp: row.timestamp,
|
|
226
|
+
totalDurationMs: row.total_duration_ms,
|
|
227
|
+
metadata: row.metadata ? JSON.parse(String(row.metadata)) : {},
|
|
228
|
+
queryRewrite: row.query_rewrite ? JSON.parse(String(row.query_rewrite)) : undefined,
|
|
229
|
+
candidateRetrieval: row.candidate_retrieval ? JSON.parse(String(row.candidate_retrieval)) : undefined,
|
|
230
|
+
entityFiltering: row.entity_filtering ? JSON.parse(String(row.entity_filtering)) : undefined,
|
|
231
|
+
hybridScoring: row.hybrid_scoring ? JSON.parse(String(row.hybrid_scoring)) : undefined,
|
|
232
|
+
reranking: row.reranking ? JSON.parse(String(row.reranking)) : undefined,
|
|
233
|
+
resultCount: row.result_count,
|
|
234
|
+
topResults: row.top_results ? JSON.parse(String(row.top_results)) : undefined,
|
|
235
|
+
}));
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Get recent session summary traces (aggregated by session)
|
|
239
|
+
*/
|
|
240
|
+
export async function getSessionTraces(sessionId) {
|
|
241
|
+
const db = await getDb();
|
|
242
|
+
if (!db)
|
|
243
|
+
return [];
|
|
244
|
+
const schema = await getSchema();
|
|
245
|
+
// Get all traces for this session
|
|
246
|
+
const traces = await db.select()
|
|
247
|
+
.from(schema.searchTraces)
|
|
248
|
+
.where(eq(schema.searchTraces.sessionId, sessionId))
|
|
249
|
+
.orderBy(desc(schema.searchTraces.timestamp));
|
|
250
|
+
if (traces.length === 0)
|
|
251
|
+
return [];
|
|
252
|
+
return traces.map((row) => ({
|
|
253
|
+
id: row.id,
|
|
254
|
+
sessionId: row.session_id,
|
|
255
|
+
query: row.query,
|
|
256
|
+
timestamp: row.timestamp,
|
|
257
|
+
totalDurationMs: row.total_duration_ms,
|
|
258
|
+
metadata: row.metadata ? JSON.parse(String(row.metadata)) : {},
|
|
259
|
+
queryRewrite: row.query_rewrite ? JSON.parse(String(row.query_rewrite)) : undefined,
|
|
260
|
+
candidateRetrieval: row.candidate_retrieval ? JSON.parse(String(row.candidate_retrieval)) : undefined,
|
|
261
|
+
entityFiltering: row.entity_filtering ? JSON.parse(String(row.entity_filtering)) : undefined,
|
|
262
|
+
hybridScoring: row.hybrid_scoring ? JSON.parse(String(row.hybrid_scoring)) : undefined,
|
|
263
|
+
reranking: row.reranking ? JSON.parse(String(row.reranking)) : undefined,
|
|
264
|
+
resultCount: row.result_count,
|
|
265
|
+
topResults: row.top_results ? JSON.parse(String(row.top_results)) : undefined,
|
|
266
|
+
}));
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Create visual ASCII visualization of a trace
|
|
270
|
+
*/
|
|
271
|
+
export function visualizeTrace(trace) {
|
|
272
|
+
const lines = [];
|
|
273
|
+
// Header
|
|
274
|
+
lines.push(`Search Trace: ${trace.id}`);
|
|
275
|
+
lines.push(`Session: ${trace.sessionId || 'N/A'}`);
|
|
276
|
+
lines.push(`Query: "${trace.query}"`);
|
|
277
|
+
lines.push('');
|
|
278
|
+
// Total duration
|
|
279
|
+
lines.push(`Duration: ${trace.totalDurationMs}ms (${(trace.totalDurationMs / 1000).toFixed(2)}s)`);
|
|
280
|
+
lines.push('');
|
|
281
|
+
// Stages summary
|
|
282
|
+
const stageNames = [];
|
|
283
|
+
if (trace.queryRewrite)
|
|
284
|
+
stageNames.push(`Query Rewrite (${trace.queryRewrite.timeMs || 0}ms)`);
|
|
285
|
+
if (trace.candidateRetrieval)
|
|
286
|
+
stageNames.push(`Candidate Retrieval (${trace.candidateRetrieval.timeMs || 0}ms)`);
|
|
287
|
+
if (trace.entityFiltering)
|
|
288
|
+
stageNames.push(`Entity Filtering (${trace.entityFiltering.timeMs || 0}ms)`);
|
|
289
|
+
if (trace.hybridScoring)
|
|
290
|
+
stageNames.push(`Hybrid Scoring (${trace.hybridScoring.timeMs || 0}ms)`);
|
|
291
|
+
if (trace.reranking)
|
|
292
|
+
stageNames.push(`Reranking (${trace.reranking.timeMs || 0}ms)`);
|
|
293
|
+
if (stageNames.length > 0) {
|
|
294
|
+
lines.push('Stages:');
|
|
295
|
+
stageNames.forEach(name => lines.push(` - ${name}`));
|
|
296
|
+
}
|
|
297
|
+
lines.push('');
|
|
298
|
+
// Top results
|
|
299
|
+
if (trace.topResults && trace.topResults.length > 0) {
|
|
300
|
+
lines.push(`Top Results (${trace.topResults.length}):`);
|
|
301
|
+
trace.topResults.slice(0, 5).forEach((result, i) => lines.push(` ${i + 1}. [${result.type || 'memory'}] ${result.content?.substring(0, 50)}... (score: ${result.hybridScore?.toFixed(2)})`));
|
|
302
|
+
}
|
|
303
|
+
return lines.join('\n');
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Get trace statistics (performance metrics)
|
|
307
|
+
*/
|
|
308
|
+
export async function getTraceStats() {
|
|
309
|
+
const db = await getDb();
|
|
310
|
+
if (!db) {
|
|
311
|
+
return {
|
|
312
|
+
totalTraces: 0,
|
|
313
|
+
totalDurationMs: 0,
|
|
314
|
+
avgDurationMs: 0,
|
|
315
|
+
recentSessions: 0,
|
|
316
|
+
totalErrors: 0,
|
|
317
|
+
errorRate: 0,
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
const schema = await getSchema();
|
|
321
|
+
const traces = await db.select()
|
|
322
|
+
.from(schema.searchTraces)
|
|
323
|
+
.limit(100);
|
|
324
|
+
const totalTraces = traces.length;
|
|
325
|
+
const totalDurationMs = traces.reduce((sum, t) => sum + (t.total_duration_ms || 0), 0);
|
|
326
|
+
const avgDurationMs = totalTraces > 0 ? Math.round(totalDurationMs / totalTraces) : 0;
|
|
327
|
+
const uniqueSessions = new Set(traces.map((t) => t.session_id).filter(Boolean));
|
|
328
|
+
const recentSessions = uniqueSessions.size;
|
|
329
|
+
return {
|
|
330
|
+
totalTraces,
|
|
331
|
+
totalDurationMs,
|
|
332
|
+
avgDurationMs,
|
|
333
|
+
recentSessions,
|
|
334
|
+
totalErrors: 0,
|
|
335
|
+
errorRate: 0,
|
|
336
|
+
};
|
|
337
|
+
}
|
|
338
|
+
//# sourceMappingURL=collector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collector.js","sourceRoot":"","sources":["../../../core/tracing/collector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/** Trace Visualizer - Creates ASCII visualizations of search traces
|
|
2
|
+
*
|
|
3
|
+
* Provides tree-format output showing search pipeline stages and timing
|
|
4
|
+
*/
|
|
5
|
+
import { SearchTrace } from './collector.js';
|
|
6
|
+
/**
|
|
7
|
+
* Create visual ASCII visualization of a trace
|
|
8
|
+
*/
|
|
9
|
+
export declare function visualizeTrace(trace: SearchTrace): string;
|
|
10
|
+
/**
|
|
11
|
+
* Create compact single-line trace summary
|
|
12
|
+
*/
|
|
13
|
+
export declare function summarizeTrace(trace: SearchTrace): string;
|
|
14
|
+
/**
|
|
15
|
+
* Compare multiple traces
|
|
16
|
+
*/
|
|
17
|
+
export declare function compareTraces(traces: SearchTrace[]): string;
|
|
18
|
+
/**
|
|
19
|
+
* Get stage breakdown table
|
|
20
|
+
*/
|
|
21
|
+
export declare function getStageBreakdown(trace: SearchTrace): string;
|
|
22
|
+
/**
|
|
23
|
+
* Export all visualizer functions
|
|
24
|
+
*/
|
|
25
|
+
declare const _default: {
|
|
26
|
+
visualizeTrace: typeof visualizeTrace;
|
|
27
|
+
summarizeTrace: typeof summarizeTrace;
|
|
28
|
+
compareTraces: typeof compareTraces;
|
|
29
|
+
getStageBreakdown: typeof getStageBreakdown;
|
|
30
|
+
};
|
|
31
|
+
export default _default;
|
|
32
|
+
//# sourceMappingURL=visualizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visualizer.d.ts","sourceRoot":"","sources":["../../../core/tracing/visualizer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAmGzD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CASzD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAmB3D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CA+B5D;AAED;;GAEG;;;;;;;AACH,wBAKE"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/** Trace Visualizer - Creates ASCII visualizations of search traces
|
|
2
|
+
*
|
|
3
|
+
* Provides tree-format output showing search pipeline stages and timing
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Create visual ASCII visualization of a trace
|
|
7
|
+
*/
|
|
8
|
+
export function visualizeTrace(trace) {
|
|
9
|
+
const lines = [];
|
|
10
|
+
// Header
|
|
11
|
+
lines.push('='.repeat(60));
|
|
12
|
+
lines.push(`Search Trace: ${trace.id}`);
|
|
13
|
+
lines.push(`Session: ${trace.sessionId || 'N/A'}`);
|
|
14
|
+
lines.push(`Query: "${trace.query}"`);
|
|
15
|
+
lines.push('='.repeat(60));
|
|
16
|
+
lines.push('');
|
|
17
|
+
// Total duration
|
|
18
|
+
lines.push(`Total Duration: ${trace.totalDurationMs}ms (${(trace.totalDurationMs / 1000).toFixed(2)}s)`);
|
|
19
|
+
lines.push('');
|
|
20
|
+
// Stage timeline visualization
|
|
21
|
+
lines.push('─'.repeat(60));
|
|
22
|
+
lines.push('Pipeline Stages:');
|
|
23
|
+
lines.push('─'.repeat(60));
|
|
24
|
+
lines.push('');
|
|
25
|
+
const stageNames = [];
|
|
26
|
+
const stageTimings = [];
|
|
27
|
+
if (trace.queryRewrite) {
|
|
28
|
+
stageNames.push('Query Rewrite');
|
|
29
|
+
stageTimings.push(trace.queryRewrite.timeMs || 0);
|
|
30
|
+
}
|
|
31
|
+
if (trace.candidateRetrieval) {
|
|
32
|
+
stageNames.push('Candidate Retrieval');
|
|
33
|
+
stageTimings.push(trace.candidateRetrieval.timeMs || 0);
|
|
34
|
+
}
|
|
35
|
+
if (trace.entityFiltering) {
|
|
36
|
+
stageNames.push('Entity Filtering');
|
|
37
|
+
stageTimings.push(trace.entityFiltering.timeMs || 0);
|
|
38
|
+
}
|
|
39
|
+
if (trace.hybridScoring) {
|
|
40
|
+
stageNames.push('Hybrid Scoring');
|
|
41
|
+
stageTimings.push(trace.hybridScoring.timeMs || 0);
|
|
42
|
+
}
|
|
43
|
+
if (trace.reranking) {
|
|
44
|
+
stageNames.push('Reranking');
|
|
45
|
+
stageTimings.push(trace.reranking.timeMs || 0);
|
|
46
|
+
}
|
|
47
|
+
if (stageNames.length > 0) {
|
|
48
|
+
let cumulativeTime = 0;
|
|
49
|
+
const maxStageNameLength = Math.max(...stageNames.map(n => n.length));
|
|
50
|
+
stageNames.forEach((name, i) => {
|
|
51
|
+
const duration = stageTimings[i] || 0;
|
|
52
|
+
cumulativeTime += duration;
|
|
53
|
+
const progressPercent = ((cumulativeTime / trace.totalDurationMs) * 100).toFixed(1);
|
|
54
|
+
const barLength = Math.max(0, Math.min(40, Math.round((duration / trace.totalDurationMs) * 40)));
|
|
55
|
+
// Stage name with timing
|
|
56
|
+
const paddedName = name.padEnd(maxStageNameLength + 2);
|
|
57
|
+
lines.push(`${paddedName} │ ${duration.toString().padStart(4)}ms │ ${progressPercent.padStart(5)}%`);
|
|
58
|
+
// Visualization bar
|
|
59
|
+
const bar = '█'.repeat(barLength) + '░'.repeat(40 - barLength);
|
|
60
|
+
lines.push(` └─ ${bar}`);
|
|
61
|
+
lines.push('');
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
lines.push(' No stage data available');
|
|
66
|
+
lines.push('');
|
|
67
|
+
}
|
|
68
|
+
// Top results
|
|
69
|
+
if (trace.topResults && trace.topResults.length > 0) {
|
|
70
|
+
lines.push('─'.repeat(60));
|
|
71
|
+
lines.push(`Top Results (${trace.topResults.length}):`);
|
|
72
|
+
lines.push('─'.repeat(60));
|
|
73
|
+
lines.push('');
|
|
74
|
+
trace.topResults.slice(0, 5).forEach((result, i) => {
|
|
75
|
+
const type = result.type || 'memory';
|
|
76
|
+
const content = result.content?.substring(0, 60) || '';
|
|
77
|
+
const score = result.hybridScore?.toFixed(2) || 'N/A';
|
|
78
|
+
lines.push(`${(i + 1).toString().padStart(2)}. [${type.padEnd(8)}] (score: ${score})`);
|
|
79
|
+
if (content.length > 0) {
|
|
80
|
+
lines.push(` ${content}`);
|
|
81
|
+
}
|
|
82
|
+
lines.push('');
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
else if (trace.resultCount !== undefined) {
|
|
86
|
+
lines.push('─'.repeat(60));
|
|
87
|
+
lines.push(`Results: ${trace.resultCount} returned`);
|
|
88
|
+
lines.push('─'.repeat(60));
|
|
89
|
+
lines.push('');
|
|
90
|
+
}
|
|
91
|
+
// Footer
|
|
92
|
+
lines.push('='.repeat(60));
|
|
93
|
+
lines.push('');
|
|
94
|
+
return lines.join('\n');
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Create compact single-line trace summary
|
|
98
|
+
*/
|
|
99
|
+
export function summarizeTrace(trace) {
|
|
100
|
+
const parts = [];
|
|
101
|
+
parts.push(`[${trace.id.substring(0, 8)}]`);
|
|
102
|
+
parts.push(`"${trace.query.substring(0, 30)}${trace.query.length > 30 ? '...' : ''}"`);
|
|
103
|
+
parts.push(`${trace.totalDurationMs}ms`);
|
|
104
|
+
parts.push(trace.resultCount !== undefined ? `${trace.resultCount} results` : 'unknown');
|
|
105
|
+
return parts.join(' | ');
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Compare multiple traces
|
|
109
|
+
*/
|
|
110
|
+
export function compareTraces(traces) {
|
|
111
|
+
const lines = [];
|
|
112
|
+
lines.push('─'.repeat(80));
|
|
113
|
+
lines.push('Trace Comparison');
|
|
114
|
+
lines.push('─'.repeat(80));
|
|
115
|
+
lines.push('');
|
|
116
|
+
lines.push('ID'.padEnd(10) + ' | ' + 'Query'.padEnd(30) + ' | ' + 'Duration'.padEnd(10) + ' | ' + 'Results');
|
|
117
|
+
lines.push('─'.repeat(80));
|
|
118
|
+
traces.forEach(trace => {
|
|
119
|
+
const id = trace.id.substring(0, 8);
|
|
120
|
+
const query = trace.query.substring(0, 30);
|
|
121
|
+
const duration = `${trace.totalDurationMs}ms`;
|
|
122
|
+
const results = trace.resultCount !== undefined ? trace.resultCount.toString() : '?';
|
|
123
|
+
lines.push(`${id.padEnd(10)} | ${query.padEnd(30)} | ${duration.padEnd(10)} | ${results.padEnd(8)}`);
|
|
124
|
+
});
|
|
125
|
+
return lines.join('\n');
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Get stage breakdown table
|
|
129
|
+
*/
|
|
130
|
+
export function getStageBreakdown(trace) {
|
|
131
|
+
const lines = [];
|
|
132
|
+
lines.push('Stage Timing Breakdown:');
|
|
133
|
+
lines.push('');
|
|
134
|
+
const stages = [
|
|
135
|
+
{ name: 'Query Rewrite', data: trace.queryRewrite, timeMs: trace.queryRewrite?.timeMs || 0 },
|
|
136
|
+
{ name: 'Candidate Retrieval', data: trace.candidateRetrieval, timeMs: trace.candidateRetrieval?.timeMs || 0 },
|
|
137
|
+
{ name: 'Entity Filtering', data: trace.entityFiltering, timeMs: trace.entityFiltering?.timeMs || 0 },
|
|
138
|
+
{ name: 'Hybrid Scoring', data: trace.hybridScoring, timeMs: trace.hybridScoring?.timeMs || 0 },
|
|
139
|
+
{ name: 'Reranking', data: trace.reranking, timeMs: trace.reranking?.timeMs || 0 },
|
|
140
|
+
];
|
|
141
|
+
const validStages = stages.filter(s => s.data && s.timeMs !== undefined);
|
|
142
|
+
if (validStages.length > 0) {
|
|
143
|
+
const maxNameLength = Math.max(...validStages.map(s => s.name.length));
|
|
144
|
+
validStages.forEach(stage => {
|
|
145
|
+
const percentage = ((stage.timeMs / trace.totalDurationMs) * 100).toFixed(1);
|
|
146
|
+
lines.push(` ${stage.name.padEnd(maxNameLength)} │ ${stage.timeMs.toString().padStart(4)}ms │ ${percentage.padStart(5)}%`);
|
|
147
|
+
});
|
|
148
|
+
lines.push('');
|
|
149
|
+
lines.push(' ' + '─'.repeat(maxNameLength + 4 + 5 + 6));
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
lines.push(' No stage timing data available');
|
|
153
|
+
}
|
|
154
|
+
return lines.join('\n');
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Export all visualizer functions
|
|
158
|
+
*/
|
|
159
|
+
export default {
|
|
160
|
+
visualizeTrace,
|
|
161
|
+
summarizeTrace,
|
|
162
|
+
compareTraces,
|
|
163
|
+
getStageBreakdown,
|
|
164
|
+
};
|
|
165
|
+
//# sourceMappingURL=visualizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visualizer.js","sourceRoot":"","sources":["../../../core/tracing/visualizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../db/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../db/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AA8hB/B;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAWzD;AAED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAMxE;AA0JD,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAIpE"}
|
package/dist/db/bootstrap.js
CHANGED
|
@@ -249,6 +249,7 @@ CREATE TABLE IF NOT EXISTS core_memory (
|
|
|
249
249
|
section TEXT NOT NULL,
|
|
250
250
|
content TEXT NOT NULL DEFAULT '',
|
|
251
251
|
size_bytes INTEGER DEFAULT 0 NOT NULL,
|
|
252
|
+
tokens_estimate INTEGER DEFAULT 0 NOT NULL,
|
|
252
253
|
version INTEGER DEFAULT 1 NOT NULL,
|
|
253
254
|
created_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL,
|
|
254
255
|
updated_at INTEGER DEFAULT (strftime('%s','now')) NOT NULL
|
|
@@ -564,11 +565,8 @@ async function runSqliteMigrations(sqlite) {
|
|
|
564
565
|
// No migrations needed
|
|
565
566
|
return;
|
|
566
567
|
}
|
|
567
|
-
//
|
|
568
|
-
const
|
|
569
|
-
const existingColumns = new Set(tableInfo.map(col => col.name));
|
|
570
|
-
// Add missing columns one by one (SQLite allows only one ALTER at a time)
|
|
571
|
-
const migrations = [
|
|
568
|
+
// Migrations for memories table
|
|
569
|
+
const memoriesMigrations = [
|
|
572
570
|
{ col: 'embedding', sql: 'ALTER TABLE memories ADD COLUMN embedding BLOB' },
|
|
573
571
|
{ col: 'is_private', sql: 'ALTER TABLE memories ADD COLUMN is_private INTEGER DEFAULT 0' },
|
|
574
572
|
{ col: 'has_secrets', sql: 'ALTER TABLE memories ADD COLUMN has_secrets INTEGER DEFAULT 0' },
|
|
@@ -659,7 +657,10 @@ async function runSqliteMigrations(sqlite) {
|
|
|
659
657
|
{ col: 'importance_decay_rate', sql: 'ALTER TABLE memories ADD COLUMN importance_decay_rate INTEGER DEFAULT 30' },
|
|
660
658
|
{ col: 'last_importance_recalc', sql: 'ALTER TABLE memories ADD COLUMN last_importance_recalc INTEGER' },
|
|
661
659
|
];
|
|
662
|
-
|
|
660
|
+
// Get existing columns for memories table
|
|
661
|
+
const tableInfo = sqlite.prepare("PRAGMA table_info(memories)").all();
|
|
662
|
+
const existingColumns = new Set(tableInfo.map(col => col.name));
|
|
663
|
+
for (const migration of memoriesMigrations) {
|
|
663
664
|
if (!existingColumns.has(migration.col)) {
|
|
664
665
|
try {
|
|
665
666
|
sqlite.exec(migration.sql);
|
|
@@ -675,6 +676,32 @@ async function runSqliteMigrations(sqlite) {
|
|
|
675
676
|
throw new Error(`Migration failed for column ${migration.col}: ${msg}`);
|
|
676
677
|
}
|
|
677
678
|
}
|
|
679
|
+
// v0.9.2: Add tokens_estimate to core_memory
|
|
680
|
+
const coreMemoryTableCheck = sqlite.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='core_memory'").get();
|
|
681
|
+
if (coreMemoryTableCheck) {
|
|
682
|
+
const coreMemoryInfo = sqlite.prepare("PRAGMA table_info(core_memory)").all();
|
|
683
|
+
const existingCoreMemoryColumns = new Set(coreMemoryInfo.map(col => col.name));
|
|
684
|
+
const coreMemoryMigrations = [
|
|
685
|
+
{ col: 'tokens_estimate', sql: 'ALTER TABLE core_memory ADD COLUMN tokens_estimate INTEGER DEFAULT 0 NOT NULL' },
|
|
686
|
+
];
|
|
687
|
+
for (const migration of coreMemoryMigrations) {
|
|
688
|
+
if (!existingCoreMemoryColumns.has(migration.col)) {
|
|
689
|
+
try {
|
|
690
|
+
sqlite.exec(migration.sql);
|
|
691
|
+
logger.info(`Migration: Added column ${migration.col} to core_memory table`);
|
|
692
|
+
}
|
|
693
|
+
catch (error) {
|
|
694
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
695
|
+
if (msg.includes('duplicate column name')) {
|
|
696
|
+
logger.debug(`Migration skipped for ${migration.col}: column already exists`);
|
|
697
|
+
}
|
|
698
|
+
else {
|
|
699
|
+
throw new Error(`Migration failed for column ${migration.col}: ${msg}`);
|
|
700
|
+
}
|
|
701
|
+
}
|
|
702
|
+
}
|
|
703
|
+
}
|
|
704
|
+
}
|
|
678
705
|
}
|
|
679
706
|
}
|
|
680
707
|
}
|