@code-insights/cli 3.5.1 → 3.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dashboard-dist/assets/{index-CyMrlee5.js → index-BaKju1iW.js} +166 -151
  3. package/dashboard-dist/assets/index-_SWpRg6C.css +1 -0
  4. package/dashboard-dist/index.html +2 -2
  5. package/dist/db/migrate.d.ts +1 -0
  6. package/dist/db/migrate.d.ts.map +1 -1
  7. package/dist/db/migrate.js +10 -3
  8. package/dist/db/migrate.js.map +1 -1
  9. package/dist/db/schema.d.ts +2 -2
  10. package/dist/db/schema.d.ts.map +1 -1
  11. package/dist/db/schema.js +2 -1
  12. package/dist/db/schema.js.map +1 -1
  13. package/dist/types.d.ts +1 -0
  14. package/dist/types.d.ts.map +1 -1
  15. package/dist/utils/telemetry.js +1 -1
  16. package/dist/utils/telemetry.js.map +1 -1
  17. package/package.json +1 -1
  18. package/server-dist/export/agent-rules.d.ts +3 -0
  19. package/server-dist/export/agent-rules.d.ts.map +1 -0
  20. package/server-dist/export/agent-rules.js +153 -0
  21. package/server-dist/export/agent-rules.js.map +1 -0
  22. package/server-dist/export/knowledge-base.d.ts +33 -0
  23. package/server-dist/export/knowledge-base.d.ts.map +1 -0
  24. package/server-dist/export/knowledge-base.js +234 -0
  25. package/server-dist/export/knowledge-base.js.map +1 -0
  26. package/server-dist/llm/export-prompts.d.ts +57 -0
  27. package/server-dist/llm/export-prompts.d.ts.map +1 -0
  28. package/server-dist/llm/export-prompts.js +225 -0
  29. package/server-dist/llm/export-prompts.js.map +1 -0
  30. package/server-dist/routes/export.d.ts.map +1 -1
  31. package/server-dist/routes/export.js +305 -18
  32. package/server-dist/routes/export.js.map +1 -1
  33. package/dashboard-dist/assets/index-CFvScypR.css +0 -1
  34. package/dashboard-dist/dist/assets/index-CFvScypR.css +0 -1
  35. package/dashboard-dist/dist/assets/index-CyMrlee5.js +0 -592
  36. package/dashboard-dist/dist/favicon.svg +0 -18
  37. package/dashboard-dist/dist/index.html +0 -33
  38. package/server-dist/dist/index.d.ts +0 -20
  39. package/server-dist/dist/index.d.ts.map +0 -1
  40. package/server-dist/dist/index.js +0 -109
  41. package/server-dist/dist/index.js.map +0 -1
  42. package/server-dist/dist/llm/analysis.d.ts +0 -84
  43. package/server-dist/dist/llm/analysis.d.ts.map +0 -1
  44. package/server-dist/dist/llm/analysis.js +0 -550
  45. package/server-dist/dist/llm/analysis.js.map +0 -1
  46. package/server-dist/dist/llm/client.d.ts +0 -27
  47. package/server-dist/dist/llm/client.d.ts.map +0 -1
  48. package/server-dist/dist/llm/client.js +0 -71
  49. package/server-dist/dist/llm/client.js.map +0 -1
  50. package/server-dist/dist/llm/index.d.ts +0 -7
  51. package/server-dist/dist/llm/index.d.ts.map +0 -1
  52. package/server-dist/dist/llm/index.js +0 -5
  53. package/server-dist/dist/llm/index.js.map +0 -1
  54. package/server-dist/dist/llm/prompts.d.ts +0 -109
  55. package/server-dist/dist/llm/prompts.d.ts.map +0 -1
  56. package/server-dist/dist/llm/prompts.js +0 -381
  57. package/server-dist/dist/llm/prompts.js.map +0 -1
  58. package/server-dist/dist/llm/providers/anthropic.d.ts +0 -3
  59. package/server-dist/dist/llm/providers/anthropic.d.ts.map +0 -1
  60. package/server-dist/dist/llm/providers/anthropic.js +0 -45
  61. package/server-dist/dist/llm/providers/anthropic.js.map +0 -1
  62. package/server-dist/dist/llm/providers/gemini.d.ts +0 -3
  63. package/server-dist/dist/llm/providers/gemini.d.ts.map +0 -1
  64. package/server-dist/dist/llm/providers/gemini.js +0 -51
  65. package/server-dist/dist/llm/providers/gemini.js.map +0 -1
  66. package/server-dist/dist/llm/providers/ollama.d.ts +0 -12
  67. package/server-dist/dist/llm/providers/ollama.d.ts.map +0 -1
  68. package/server-dist/dist/llm/providers/ollama.js +0 -61
  69. package/server-dist/dist/llm/providers/ollama.js.map +0 -1
  70. package/server-dist/dist/llm/providers/openai.d.ts +0 -3
  71. package/server-dist/dist/llm/providers/openai.d.ts.map +0 -1
  72. package/server-dist/dist/llm/providers/openai.js +0 -40
  73. package/server-dist/dist/llm/providers/openai.js.map +0 -1
  74. package/server-dist/dist/llm/types.d.ts +0 -22
  75. package/server-dist/dist/llm/types.d.ts.map +0 -1
  76. package/server-dist/dist/llm/types.js +0 -5
  77. package/server-dist/dist/llm/types.js.map +0 -1
  78. package/server-dist/dist/routes/analysis.d.ts +0 -4
  79. package/server-dist/dist/routes/analysis.d.ts.map +0 -1
  80. package/server-dist/dist/routes/analysis.js +0 -370
  81. package/server-dist/dist/routes/analysis.js.map +0 -1
  82. package/server-dist/dist/routes/analytics.d.ts +0 -4
  83. package/server-dist/dist/routes/analytics.d.ts.map +0 -1
  84. package/server-dist/dist/routes/analytics.js +0 -57
  85. package/server-dist/dist/routes/analytics.js.map +0 -1
  86. package/server-dist/dist/routes/config.d.ts +0 -4
  87. package/server-dist/dist/routes/config.d.ts.map +0 -1
  88. package/server-dist/dist/routes/config.js +0 -108
  89. package/server-dist/dist/routes/config.js.map +0 -1
  90. package/server-dist/dist/routes/export.d.ts +0 -4
  91. package/server-dist/dist/routes/export.d.ts.map +0 -1
  92. package/server-dist/dist/routes/export.js +0 -52
  93. package/server-dist/dist/routes/export.js.map +0 -1
  94. package/server-dist/dist/routes/insights.d.ts +0 -4
  95. package/server-dist/dist/routes/insights.d.ts.map +0 -1
  96. package/server-dist/dist/routes/insights.js +0 -80
  97. package/server-dist/dist/routes/insights.js.map +0 -1
  98. package/server-dist/dist/routes/messages.d.ts +0 -4
  99. package/server-dist/dist/routes/messages.d.ts.map +0 -1
  100. package/server-dist/dist/routes/messages.js +0 -19
  101. package/server-dist/dist/routes/messages.js.map +0 -1
  102. package/server-dist/dist/routes/projects.d.ts +0 -4
  103. package/server-dist/dist/routes/projects.d.ts.map +0 -1
  104. package/server-dist/dist/routes/projects.js +0 -32
  105. package/server-dist/dist/routes/projects.js.map +0 -1
  106. package/server-dist/dist/routes/sessions.d.ts +0 -4
  107. package/server-dist/dist/routes/sessions.d.ts.map +0 -1
  108. package/server-dist/dist/routes/sessions.js +0 -65
  109. package/server-dist/dist/routes/sessions.js.map +0 -1
  110. package/server-dist/dist/routes/telemetry.d.ts +0 -4
  111. package/server-dist/dist/routes/telemetry.d.ts.map +0 -1
  112. package/server-dist/dist/routes/telemetry.js +0 -21
  113. package/server-dist/dist/routes/telemetry.js.map +0 -1
  114. package/server-dist/dist/utils.d.ts +0 -6
  115. package/server-dist/dist/utils.d.ts.map +0 -1
  116. package/server-dist/dist/utils.js +0 -9
  117. package/server-dist/dist/utils.js.map +0 -1
@@ -1,550 +0,0 @@
1
- // Core analysis engine — server-side.
2
- // Ported from web repo (src/lib/llm/analysis.ts) with SQLite persistence replacing Firestore.
3
- // Key differences from web repo:
4
- // - Uses SQLiteMessageRow instead of web Message type
5
- // - Writes insights directly to SQLite via getDb() (not Firestore)
6
- // - Abort handling uses error.name === 'AbortError' (not DOMException)
7
- // - Uses session's existing project_id from SQLite (not re-derived hash)
8
- import { randomUUID } from 'crypto';
9
- import { getDb } from '@code-insights/cli/db/client';
10
- import { createLLMClient, isLLMConfigured } from './client.js';
11
- import { SESSION_ANALYSIS_SYSTEM_PROMPT, generateSessionAnalysisPrompt, formatMessagesForAnalysis, parseAnalysisResponse, PROMPT_QUALITY_SYSTEM_PROMPT, generatePromptQualityPrompt, parsePromptQualityResponse, } from './prompts.js';
12
- // Maximum tokens to send to LLM (leaving room for response)
13
- const MAX_INPUT_TOKENS = 80000;
14
- const ANALYSIS_VERSION = '3.0.0';
15
- /**
16
- * Analyze a session and generate insights, saving them to SQLite.
17
- */
18
- export async function analyzeSession(session, messages, options) {
19
- if (!isLLMConfigured()) {
20
- return {
21
- success: false,
22
- insights: [],
23
- error: 'LLM not configured. Run `code-insights config llm` to configure a provider.',
24
- };
25
- }
26
- if (messages.length === 0) {
27
- return {
28
- success: false,
29
- insights: [],
30
- error: 'No messages found for this session.',
31
- };
32
- }
33
- try {
34
- const client = createLLMClient();
35
- const formattedMessages = formatMessagesForAnalysis(messages);
36
- const estimatedTokens = client.estimateTokens(formattedMessages);
37
- let analysisResponse;
38
- let totalInputTokens = 0;
39
- let totalOutputTokens = 0;
40
- if (estimatedTokens > MAX_INPUT_TOKENS) {
41
- // Chunk the messages and analyze separately
42
- const chunks = chunkMessages(messages, client.estimateTokens.bind(client));
43
- const chunkResponses = [];
44
- const totalChunks = chunks.length;
45
- for (let i = 0; i < chunks.length; i++) {
46
- const chunk = chunks[i];
47
- options?.onProgress?.({ phase: 'analyzing', currentChunk: i + 1, totalChunks });
48
- const chunkFormatted = formatMessagesForAnalysis(chunk);
49
- const prompt = generateSessionAnalysisPrompt(session.project_name, session.summary, chunkFormatted);
50
- const response = await client.chat([
51
- { role: 'system', content: SESSION_ANALYSIS_SYSTEM_PROMPT },
52
- { role: 'user', content: prompt },
53
- ], { signal: options?.signal });
54
- if (response.usage) {
55
- totalInputTokens += response.usage.inputTokens;
56
- totalOutputTokens += response.usage.outputTokens;
57
- }
58
- const parsed = parseAnalysisResponse(response.content);
59
- if (parsed.success)
60
- chunkResponses.push(parsed.data);
61
- }
62
- if (chunkResponses.length === 0) {
63
- return {
64
- success: false,
65
- insights: [],
66
- error: 'All chunks failed to parse LLM response',
67
- error_type: 'json_parse_error',
68
- usage: { inputTokens: totalInputTokens, outputTokens: totalOutputTokens },
69
- };
70
- }
71
- analysisResponse = mergeAnalysisResponses(chunkResponses);
72
- }
73
- else {
74
- options?.onProgress?.({ phase: 'analyzing', currentChunk: 1, totalChunks: 1 });
75
- const prompt = generateSessionAnalysisPrompt(session.project_name, session.summary, formattedMessages);
76
- const response = await client.chat([
77
- { role: 'system', content: SESSION_ANALYSIS_SYSTEM_PROMPT },
78
- { role: 'user', content: prompt },
79
- ], { signal: options?.signal });
80
- if (response.usage) {
81
- totalInputTokens = response.usage.inputTokens;
82
- totalOutputTokens = response.usage.outputTokens;
83
- }
84
- const parsed = parseAnalysisResponse(response.content);
85
- if (!parsed.success) {
86
- return {
87
- success: false,
88
- insights: [],
89
- error: 'Failed to parse LLM response. Please try again.',
90
- error_type: parsed.error.error_type,
91
- response_length: parsed.error.response_length,
92
- response_preview: parsed.error.response_preview,
93
- };
94
- }
95
- analysisResponse = parsed.data;
96
- }
97
- options?.onProgress?.({ phase: 'saving' });
98
- const insights = convertToInsightRows(analysisResponse, session);
99
- // Save new insights first, then delete old non-prompt-quality insights
100
- // (safe order: if save fails, old data is preserved)
101
- saveInsightsToDb(insights);
102
- deleteSessionInsights(session.id, {
103
- excludeTypes: ['prompt_quality'],
104
- excludeIds: insights.map(i => i.id),
105
- });
106
- // Update session character if LLM classified it
107
- if (analysisResponse.session_character) {
108
- const db = getDb();
109
- db.prepare('UPDATE sessions SET session_character = ? WHERE id = ?')
110
- .run(analysisResponse.session_character, session.id);
111
- }
112
- return {
113
- success: true,
114
- insights,
115
- usage: { inputTokens: totalInputTokens, outputTokens: totalOutputTokens },
116
- };
117
- }
118
- catch (error) {
119
- if (error instanceof Error && error.name === 'AbortError') {
120
- return { success: false, insights: [], error: 'Analysis cancelled', error_type: 'abort' };
121
- }
122
- return {
123
- success: false,
124
- insights: [],
125
- error: error instanceof Error ? error.message : 'Analysis failed',
126
- error_type: 'api_error',
127
- };
128
- }
129
- }
130
- /**
131
- * Analyze prompt quality for a session.
132
- */
133
- export async function analyzePromptQuality(session, messages, options) {
134
- if (!isLLMConfigured()) {
135
- return {
136
- success: false,
137
- insights: [],
138
- error: 'LLM not configured. Run `code-insights config llm` to configure a provider.',
139
- };
140
- }
141
- if (messages.length === 0) {
142
- return {
143
- success: false,
144
- insights: [],
145
- error: 'No messages found for this session.',
146
- };
147
- }
148
- const userMessages = messages.filter(m => m.type === 'user');
149
- if (userMessages.length < 2) {
150
- return {
151
- success: false,
152
- insights: [],
153
- error: 'Not enough user messages to analyze prompt quality (need at least 2).',
154
- };
155
- }
156
- try {
157
- const client = createLLMClient();
158
- const formattedMessages = formatMessagesForAnalysis(messages);
159
- let analysisInput = formattedMessages;
160
- const estimatedTokens = client.estimateTokens(formattedMessages);
161
- if (estimatedTokens > MAX_INPUT_TOKENS) {
162
- const targetLength = Math.floor((MAX_INPUT_TOKENS / estimatedTokens) * formattedMessages.length * 0.8);
163
- analysisInput = formattedMessages.slice(0, targetLength) + '\n\n[... conversation truncated for analysis ...]';
164
- }
165
- const prompt = generatePromptQualityPrompt(session.project_name, analysisInput, messages.length);
166
- options?.onProgress?.({ phase: 'analyzing' });
167
- const response = await client.chat([
168
- { role: 'system', content: PROMPT_QUALITY_SYSTEM_PROMPT },
169
- { role: 'user', content: prompt },
170
- ], { signal: options?.signal });
171
- const parsed = parsePromptQualityResponse(response.content);
172
- if (!parsed.success) {
173
- return {
174
- success: false,
175
- insights: [],
176
- error: 'Failed to parse prompt quality analysis. Please try again.',
177
- error_type: parsed.error.error_type,
178
- response_length: parsed.error.response_length,
179
- response_preview: parsed.error.response_preview,
180
- };
181
- }
182
- options?.onProgress?.({ phase: 'saving' });
183
- const insight = convertPromptQualityToInsightRow(parsed.data, session);
184
- // Save new insight, then delete old prompt_quality insights
185
- saveInsightsToDb([insight]);
186
- deleteSessionInsights(session.id, {
187
- includeOnlyTypes: ['prompt_quality'],
188
- excludeIds: [insight.id],
189
- });
190
- return {
191
- success: true,
192
- insights: [insight],
193
- usage: response.usage ? {
194
- inputTokens: response.usage.inputTokens,
195
- outputTokens: response.usage.outputTokens,
196
- } : undefined,
197
- };
198
- }
199
- catch (error) {
200
- if (error instanceof Error && error.name === 'AbortError') {
201
- return { success: false, insights: [], error: 'Analysis cancelled', error_type: 'abort' };
202
- }
203
- return {
204
- success: false,
205
- insights: [],
206
- error: error instanceof Error ? error.message : 'Prompt quality analysis failed',
207
- error_type: 'api_error',
208
- };
209
- }
210
- }
211
- /**
212
- * Find recurring patterns across multiple insights and write bidirectional links to SQLite.
213
- */
214
- export async function findRecurringInsights(insights) {
215
- if (!isLLMConfigured()) {
216
- return { success: false, groups: [], updatedCount: 0, error: 'LLM not configured.' };
217
- }
218
- const candidates = insights
219
- .filter(i => i.type !== 'summary' && i.type !== 'prompt_quality')
220
- .slice(0, 200);
221
- if (candidates.length < 2) {
222
- return {
223
- success: false,
224
- groups: [],
225
- updatedCount: 0,
226
- error: 'Need at least 2 non-summary insights to find patterns.',
227
- };
228
- }
229
- try {
230
- const client = createLLMClient();
231
- const insightData = candidates.map(i => ({
232
- id: i.id,
233
- type: i.type === 'technique' ? 'learning' : i.type,
234
- title: i.title,
235
- summary: i.summary.slice(0, 150),
236
- projectName: i.project_name,
237
- sessionId: i.session_id,
238
- }));
239
- const prompt = `Analyze these insights from coding sessions and find groups of semantically similar or duplicate insights — ones that express the same learning or decision even if worded differently.
240
-
241
- RULES:
242
- - Only group insights that are genuinely about the same concept/topic
243
- - Insights in a group should be from DIFFERENT sessions (same sessionId = not recurring)
244
- - A group must have at least 2 insights
245
- - An insight can only belong to one group
246
- - Provide a brief "theme" describing what the group shares
247
- - If no recurring patterns exist, return an empty groups array
248
-
249
- INSIGHTS:
250
- ${JSON.stringify(insightData, null, 2)}
251
-
252
- Respond with valid JSON only:
253
- {
254
- "groups": [
255
- {
256
- "insightIds": ["insight_abc", "insight_def"],
257
- "theme": "Brief description of the shared concept"
258
- }
259
- ]
260
- }`;
261
- const response = await client.chat([
262
- {
263
- role: 'system',
264
- content: 'You are an expert at identifying recurring patterns and themes across software development insights. You find semantically similar insights even when they are worded differently. Respond with valid JSON only.',
265
- },
266
- { role: 'user', content: prompt },
267
- ]);
268
- const jsonMatch = response.content.match(/\{[\s\S]*\}/);
269
- if (!jsonMatch) {
270
- return { success: false, groups: [], updatedCount: 0, error: 'Failed to parse recurring insights response.' };
271
- }
272
- const parsed = JSON.parse(jsonMatch[0]);
273
- const groups = parsed.groups || [];
274
- const validIds = new Set(candidates.map(i => i.id));
275
- const validGroups = groups
276
- .map(g => ({
277
- ...g,
278
- insightIds: g.insightIds.filter(id => validIds.has(id)),
279
- }))
280
- .filter(g => g.insightIds.length >= 2);
281
- if (validGroups.length === 0) {
282
- return {
283
- success: true,
284
- groups: [],
285
- updatedCount: 0,
286
- usage: response.usage
287
- ? { inputTokens: response.usage.inputTokens, outputTokens: response.usage.outputTokens }
288
- : undefined,
289
- };
290
- }
291
- // Build bidirectional links
292
- const linkMap = new Map();
293
- for (const group of validGroups) {
294
- for (const id of group.insightIds) {
295
- const others = group.insightIds.filter(otherId => otherId !== id);
296
- const existing = linkMap.get(id) || [];
297
- linkMap.set(id, [...new Set([...existing, ...others])]);
298
- }
299
- }
300
- // Write links to SQLite
301
- const db = getDb();
302
- const updateLinks = db.prepare(`UPDATE insights SET linked_insight_ids = ? WHERE id = ?`);
303
- for (const [insightId, linkedIds] of linkMap.entries()) {
304
- updateLinks.run(JSON.stringify(linkedIds), insightId);
305
- }
306
- return {
307
- success: true,
308
- groups: validGroups,
309
- updatedCount: linkMap.size,
310
- usage: response.usage
311
- ? { inputTokens: response.usage.inputTokens, outputTokens: response.usage.outputTokens }
312
- : undefined,
313
- };
314
- }
315
- catch (error) {
316
- return {
317
- success: false,
318
- groups: [],
319
- updatedCount: 0,
320
- error: error instanceof Error ? error.message : 'Failed to find recurring insights',
321
- };
322
- }
323
- }
324
- // --- Internal helpers ---
325
- function chunkMessages(messages, estimateTokens) {
326
- const chunks = [];
327
- let currentChunk = [];
328
- let currentTokens = 0;
329
- const chunkLimit = MAX_INPUT_TOKENS * 0.8;
330
- for (const message of messages) {
331
- let toolResults = [];
332
- try {
333
- toolResults = message.tool_results ? JSON.parse(message.tool_results) : [];
334
- }
335
- catch {
336
- toolResults = [];
337
- }
338
- const messageText = [
339
- message.content,
340
- message.thinking?.slice(0, 1000) ?? '',
341
- ...toolResults.map(r => (r.output || '').slice(0, 500)),
342
- ].join(' ');
343
- const messageTokens = estimateTokens(messageText);
344
- if (currentTokens + messageTokens > chunkLimit && currentChunk.length > 0) {
345
- chunks.push(currentChunk);
346
- currentChunk = [];
347
- currentTokens = 0;
348
- }
349
- currentChunk.push(message);
350
- currentTokens += messageTokens;
351
- }
352
- if (currentChunk.length > 0) {
353
- chunks.push(currentChunk);
354
- }
355
- return chunks;
356
- }
357
- function mergeAnalysisResponses(responses) {
358
- if (responses.length === 0) {
359
- return {
360
- summary: { title: 'Analysis failed', content: '', bullets: [] },
361
- decisions: [],
362
- learnings: [],
363
- };
364
- }
365
- if (responses.length === 1)
366
- return responses[0];
367
- const merged = {
368
- session_character: responses.find(r => r.session_character)?.session_character,
369
- summary: responses[0].summary,
370
- decisions: [],
371
- learnings: [],
372
- };
373
- for (const response of responses) {
374
- merged.decisions.push(...response.decisions);
375
- merged.learnings.push(...response.learnings);
376
- }
377
- merged.decisions = deduplicateByTitle(merged.decisions).slice(0, 3);
378
- merged.learnings = deduplicateByTitle(merged.learnings).slice(0, 5);
379
- return merged;
380
- }
381
- function deduplicateByTitle(items) {
382
- const seen = new Set();
383
- return items.filter((item) => {
384
- const normalized = item.title.toLowerCase().trim();
385
- if (seen.has(normalized))
386
- return false;
387
- seen.add(normalized);
388
- return true;
389
- });
390
- }
391
- function convertToInsightRows(response, session) {
392
- const insights = [];
393
- const now = new Date().toISOString();
394
- insights.push({
395
- id: randomUUID(),
396
- session_id: session.id,
397
- project_id: session.project_id,
398
- project_name: session.project_name,
399
- type: 'summary',
400
- title: response.summary.title,
401
- content: response.summary.content,
402
- summary: response.summary.content,
403
- bullets: JSON.stringify(response.summary.bullets),
404
- confidence: 0.9,
405
- source: 'llm',
406
- metadata: response.summary.outcome
407
- ? JSON.stringify({ outcome: response.summary.outcome })
408
- : null,
409
- timestamp: session.ended_at,
410
- created_at: now,
411
- scope: 'session',
412
- analysis_version: ANALYSIS_VERSION,
413
- });
414
- for (const decision of response.decisions) {
415
- const confidence = decision.confidence ?? 85;
416
- if (confidence < 70)
417
- continue;
418
- const content = decision.situation && decision.choice
419
- ? `${decision.situation} → ${decision.choice}`
420
- : decision.choice || decision.situation || decision.title;
421
- const altBullets = (decision.alternatives || [])
422
- .filter(a => a && typeof a === 'object' && a.option)
423
- .map(a => `${a.option}: ${a.rejected_because || 'no reason given'}`);
424
- insights.push({
425
- id: randomUUID(),
426
- session_id: session.id,
427
- project_id: session.project_id,
428
- project_name: session.project_name,
429
- type: 'decision',
430
- title: decision.title,
431
- content,
432
- summary: (decision.choice || content).slice(0, 200),
433
- bullets: JSON.stringify(altBullets),
434
- confidence: confidence / 100,
435
- source: 'llm',
436
- metadata: JSON.stringify({
437
- situation: decision.situation,
438
- choice: decision.choice,
439
- reasoning: decision.reasoning,
440
- alternatives: decision.alternatives,
441
- trade_offs: decision.trade_offs,
442
- revisit_when: decision.revisit_when,
443
- evidence: decision.evidence,
444
- }),
445
- timestamp: session.ended_at,
446
- created_at: now,
447
- scope: 'session',
448
- analysis_version: ANALYSIS_VERSION,
449
- });
450
- }
451
- for (const learning of response.learnings) {
452
- const confidence = learning.confidence ?? 80;
453
- if (confidence < 70)
454
- continue;
455
- const content = learning.takeaway || learning.title;
456
- insights.push({
457
- id: randomUUID(),
458
- session_id: session.id,
459
- project_id: session.project_id,
460
- project_name: session.project_name,
461
- type: 'learning',
462
- title: learning.title,
463
- content,
464
- summary: content.slice(0, 200),
465
- bullets: JSON.stringify([]),
466
- confidence: confidence / 100,
467
- source: 'llm',
468
- metadata: JSON.stringify({
469
- symptom: learning.symptom,
470
- root_cause: learning.root_cause,
471
- takeaway: learning.takeaway,
472
- applies_when: learning.applies_when,
473
- evidence: learning.evidence,
474
- }),
475
- timestamp: session.ended_at,
476
- created_at: now,
477
- scope: 'session',
478
- analysis_version: ANALYSIS_VERSION,
479
- });
480
- }
481
- return insights;
482
- }
483
- function convertPromptQualityToInsightRow(response, session) {
484
- const now = new Date().toISOString();
485
- return {
486
- id: randomUUID(),
487
- session_id: session.id,
488
- project_id: session.project_id,
489
- project_name: session.project_name,
490
- type: 'prompt_quality',
491
- title: `Prompt Efficiency: ${response.efficiencyScore}/100`,
492
- content: response.overallAssessment,
493
- summary: response.overallAssessment,
494
- bullets: JSON.stringify(response.tips),
495
- confidence: 0.85,
496
- source: 'llm',
497
- metadata: JSON.stringify({
498
- efficiencyScore: response.efficiencyScore,
499
- wastedTurns: response.wastedTurns,
500
- antiPatterns: response.antiPatterns,
501
- sessionTraits: response.sessionTraits,
502
- potentialMessageReduction: response.potentialMessageReduction,
503
- }),
504
- timestamp: session.ended_at,
505
- created_at: now,
506
- scope: 'session',
507
- analysis_version: ANALYSIS_VERSION,
508
- };
509
- }
510
- /**
511
- * Write insight rows to SQLite using prepared statements.
512
- */
513
- function saveInsightsToDb(insights) {
514
- const db = getDb();
515
- const insert = db.prepare(`
516
- INSERT OR REPLACE INTO insights (
517
- id, session_id, project_id, project_name, type, title, content,
518
- summary, bullets, confidence, source, metadata, timestamp,
519
- created_at, scope, analysis_version
520
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
521
- `);
522
- const insertMany = db.transaction((rows) => {
523
- for (const row of rows) {
524
- insert.run(row.id, row.session_id, row.project_id, row.project_name, row.type, row.title, row.content, row.summary, row.bullets, row.confidence, row.source, row.metadata, row.timestamp, row.created_at, row.scope, row.analysis_version);
525
- }
526
- });
527
- insertMany(insights);
528
- }
529
- /**
530
- * Delete insights for a session, with optional type and ID exclusions.
531
- */
532
- function deleteSessionInsights(sessionId, opts) {
533
- const db = getDb();
534
- const conditions = ['session_id = ?'];
535
- const params = [sessionId];
536
- if (opts.excludeTypes && opts.excludeTypes.length > 0) {
537
- conditions.push(`type NOT IN (${opts.excludeTypes.map(() => '?').join(', ')})`);
538
- params.push(...opts.excludeTypes);
539
- }
540
- if (opts.includeOnlyTypes && opts.includeOnlyTypes.length > 0) {
541
- conditions.push(`type IN (${opts.includeOnlyTypes.map(() => '?').join(', ')})`);
542
- params.push(...opts.includeOnlyTypes);
543
- }
544
- if (opts.excludeIds && opts.excludeIds.length > 0) {
545
- conditions.push(`id NOT IN (${opts.excludeIds.map(() => '?').join(', ')})`);
546
- params.push(...opts.excludeIds);
547
- }
548
- db.prepare(`DELETE FROM insights WHERE ${conditions.join(' AND ')}`).run(...params);
549
- }
550
- //# sourceMappingURL=analysis.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"analysis.js","sourceRoot":"","sources":["../../src/llm/analysis.ts"],"names":[],"mappings":"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"}
@@ -1,27 +0,0 @@
1
- import type { LLMClient } from './types.js';
2
- import type { LLMProviderConfig } from './types.js';
3
- /**
4
- * Load LLM config from the CLI config file.
5
- */
6
- export declare function loadLLMConfig(): LLMProviderConfig | null;
7
- /**
8
- * Check if LLM is configured.
9
- */
10
- export declare function isLLMConfigured(): boolean;
11
- /**
12
- * Create an LLM client from the current config.
13
- * Throws if LLM is not configured.
14
- */
15
- export declare function createLLMClient(): LLMClient;
16
- /**
17
- * Create an LLM client from a specific config object (used for testing).
18
- */
19
- export declare function createClientFromConfig(config: LLMProviderConfig): LLMClient;
20
- /**
21
- * Test LLM connectivity with the given config.
22
- */
23
- export declare function testLLMConfig(config: LLMProviderConfig): Promise<{
24
- success: boolean;
25
- error?: string;
26
- }>;
27
- //# sourceMappingURL=client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/llm/client.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAMpD;;GAEG;AACH,wBAAgB,aAAa,IAAI,iBAAiB,GAAG,IAAI,CAGxD;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAKzC;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,SAAS,CAM3C;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,iBAAiB,GAAG,SAAS,CAa3E;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAW5G"}