@code-insights/cli 3.0.1 → 3.0.3

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 (119) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dashboard-dist/index.html +1 -1
  3. package/dist/index.js +3 -1
  4. package/dist/index.js.map +1 -1
  5. package/package.json +3 -1
  6. package/dashboard-dist/assets/index-CuCBzQyQ.js +0 -548
  7. package/dashboard-dist/dist/assets/index-BMhL7wL8.css +0 -1
  8. package/dashboard-dist/dist/assets/index-CuCBzQyQ.js +0 -548
  9. package/dashboard-dist/dist/favicon.svg +0 -4
  10. package/dashboard-dist/dist/index.html +0 -33
  11. package/dist/commands/connect.d.ts +0 -5
  12. package/dist/commands/connect.d.ts.map +0 -1
  13. package/dist/commands/connect.js +0 -39
  14. package/dist/commands/connect.js.map +0 -1
  15. package/dist/commands/insights.d.ts +0 -13
  16. package/dist/commands/insights.d.ts.map +0 -1
  17. package/dist/commands/insights.js +0 -87
  18. package/dist/commands/insights.js.map +0 -1
  19. package/dist/commands/link.d.ts +0 -8
  20. package/dist/commands/link.d.ts.map +0 -1
  21. package/dist/commands/link.js +0 -39
  22. package/dist/commands/link.js.map +0 -1
  23. package/dist/commands/stats/data/cache.d.ts +0 -29
  24. package/dist/commands/stats/data/cache.d.ts.map +0 -1
  25. package/dist/commands/stats/data/cache.js +0 -197
  26. package/dist/commands/stats/data/cache.js.map +0 -1
  27. package/dist/commands/stats/data/firestore.d.ts +0 -13
  28. package/dist/commands/stats/data/firestore.d.ts.map +0 -1
  29. package/dist/commands/stats/data/firestore.js +0 -170
  30. package/dist/commands/stats/data/firestore.js.map +0 -1
  31. package/dist/firebase/client.d.ts +0 -45
  32. package/dist/firebase/client.d.ts.map +0 -1
  33. package/dist/firebase/client.js +0 -344
  34. package/dist/firebase/client.js.map +0 -1
  35. package/dist/parser/insights.d.ts +0 -7
  36. package/dist/parser/insights.d.ts.map +0 -1
  37. package/dist/parser/insights.js +0 -271
  38. package/dist/parser/insights.js.map +0 -1
  39. package/dist/utils/firebase-json.d.ts +0 -87
  40. package/dist/utils/firebase-json.d.ts.map +0 -1
  41. package/dist/utils/firebase-json.js +0 -207
  42. package/dist/utils/firebase-json.js.map +0 -1
  43. package/server-dist/dist/index.d.ts +0 -12
  44. package/server-dist/dist/index.d.ts.map +0 -1
  45. package/server-dist/dist/index.js +0 -92
  46. package/server-dist/dist/index.js.map +0 -1
  47. package/server-dist/dist/llm/analysis.d.ts +0 -80
  48. package/server-dist/dist/llm/analysis.d.ts.map +0 -1
  49. package/server-dist/dist/llm/analysis.js +0 -509
  50. package/server-dist/dist/llm/analysis.js.map +0 -1
  51. package/server-dist/dist/llm/client.d.ts +0 -27
  52. package/server-dist/dist/llm/client.d.ts.map +0 -1
  53. package/server-dist/dist/llm/client.js +0 -71
  54. package/server-dist/dist/llm/client.js.map +0 -1
  55. package/server-dist/dist/llm/index.d.ts +0 -7
  56. package/server-dist/dist/llm/index.d.ts.map +0 -1
  57. package/server-dist/dist/llm/index.js +0 -5
  58. package/server-dist/dist/llm/index.js.map +0 -1
  59. package/server-dist/dist/llm/prompts.d.ts +0 -73
  60. package/server-dist/dist/llm/prompts.d.ts.map +0 -1
  61. package/server-dist/dist/llm/prompts.js +0 -242
  62. package/server-dist/dist/llm/prompts.js.map +0 -1
  63. package/server-dist/dist/llm/providers/anthropic.d.ts +0 -3
  64. package/server-dist/dist/llm/providers/anthropic.d.ts.map +0 -1
  65. package/server-dist/dist/llm/providers/anthropic.js +0 -45
  66. package/server-dist/dist/llm/providers/anthropic.js.map +0 -1
  67. package/server-dist/dist/llm/providers/gemini.d.ts +0 -3
  68. package/server-dist/dist/llm/providers/gemini.d.ts.map +0 -1
  69. package/server-dist/dist/llm/providers/gemini.js +0 -51
  70. package/server-dist/dist/llm/providers/gemini.js.map +0 -1
  71. package/server-dist/dist/llm/providers/ollama.d.ts +0 -12
  72. package/server-dist/dist/llm/providers/ollama.d.ts.map +0 -1
  73. package/server-dist/dist/llm/providers/ollama.js +0 -61
  74. package/server-dist/dist/llm/providers/ollama.js.map +0 -1
  75. package/server-dist/dist/llm/providers/openai.d.ts +0 -3
  76. package/server-dist/dist/llm/providers/openai.d.ts.map +0 -1
  77. package/server-dist/dist/llm/providers/openai.js +0 -39
  78. package/server-dist/dist/llm/providers/openai.js.map +0 -1
  79. package/server-dist/dist/llm/types.d.ts +0 -22
  80. package/server-dist/dist/llm/types.d.ts.map +0 -1
  81. package/server-dist/dist/llm/types.js +0 -5
  82. package/server-dist/dist/llm/types.js.map +0 -1
  83. package/server-dist/dist/routes/analysis.d.ts +0 -4
  84. package/server-dist/dist/routes/analysis.d.ts.map +0 -1
  85. package/server-dist/dist/routes/analysis.js +0 -103
  86. package/server-dist/dist/routes/analysis.js.map +0 -1
  87. package/server-dist/dist/routes/analytics.d.ts +0 -4
  88. package/server-dist/dist/routes/analytics.d.ts.map +0 -1
  89. package/server-dist/dist/routes/analytics.js +0 -47
  90. package/server-dist/dist/routes/analytics.js.map +0 -1
  91. package/server-dist/dist/routes/config.d.ts +0 -4
  92. package/server-dist/dist/routes/config.d.ts.map +0 -1
  93. package/server-dist/dist/routes/config.js +0 -108
  94. package/server-dist/dist/routes/config.js.map +0 -1
  95. package/server-dist/dist/routes/export.d.ts +0 -4
  96. package/server-dist/dist/routes/export.d.ts.map +0 -1
  97. package/server-dist/dist/routes/export.js +0 -52
  98. package/server-dist/dist/routes/export.js.map +0 -1
  99. package/server-dist/dist/routes/insights.d.ts +0 -4
  100. package/server-dist/dist/routes/insights.d.ts.map +0 -1
  101. package/server-dist/dist/routes/insights.js +0 -80
  102. package/server-dist/dist/routes/insights.js.map +0 -1
  103. package/server-dist/dist/routes/messages.d.ts +0 -4
  104. package/server-dist/dist/routes/messages.d.ts.map +0 -1
  105. package/server-dist/dist/routes/messages.js +0 -19
  106. package/server-dist/dist/routes/messages.js.map +0 -1
  107. package/server-dist/dist/routes/projects.d.ts +0 -4
  108. package/server-dist/dist/routes/projects.d.ts.map +0 -1
  109. package/server-dist/dist/routes/projects.js +0 -32
  110. package/server-dist/dist/routes/projects.js.map +0 -1
  111. package/server-dist/dist/routes/sessions.d.ts +0 -4
  112. package/server-dist/dist/routes/sessions.d.ts.map +0 -1
  113. package/server-dist/dist/routes/sessions.js +0 -65
  114. package/server-dist/dist/routes/sessions.js.map +0 -1
  115. package/server-dist/dist/utils.d.ts +0 -6
  116. package/server-dist/dist/utils.d.ts.map +0 -1
  117. package/server-dist/dist/utils.js +0 -9
  118. package/server-dist/dist/utils.js.map +0 -1
  119. /package/dashboard-dist/{dist/assets → assets}/index-CUWKxcRo.js +0 -0
@@ -1,4 +0,0 @@
1
- import { Hono } from 'hono';
2
- declare const app: Hono<import("hono/types").BlankEnv, import("hono/types").BlankSchema, "/">;
3
- export default app;
4
- //# sourceMappingURL=analysis.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"analysis.d.ts","sourceRoot":"","sources":["../../src/routes/analysis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAQ5B,QAAA,MAAM,GAAG,4EAAa,CAAC;AAyHvB,eAAe,GAAG,CAAC"}
@@ -1,103 +0,0 @@
1
- import { Hono } from 'hono';
2
- import { getDb } from '@code-insights/cli/db/client';
3
- import { trackEvent } from '@code-insights/cli/utils/telemetry';
4
- import { parseIntParam } from '../utils.js';
5
- import { analyzeSession, analyzePromptQuality, findRecurringInsights } from '../llm/analysis.js';
6
- import { isLLMConfigured } from '../llm/client.js';
7
- const app = new Hono();
8
- // POST /api/analysis/session
9
- // Body: { sessionId: string }
10
- // Fetches session + messages from SQLite, runs LLM analysis, saves insights, returns results.
11
- app.post('/session', async (c) => {
12
- if (!isLLMConfigured()) {
13
- return c.json({
14
- success: false,
15
- error: 'LLM not configured. Run `code-insights config llm` to configure a provider.',
16
- }, 400);
17
- }
18
- const body = await c.req.json();
19
- if (!body.sessionId || typeof body.sessionId !== 'string') {
20
- return c.json({ error: 'Missing required field: sessionId' }, 400);
21
- }
22
- const db = getDb();
23
- const session = db.prepare(`
24
- SELECT id, project_id, project_name, project_path, summary, ended_at
25
- FROM sessions WHERE id = ?
26
- `).get(body.sessionId);
27
- if (!session) {
28
- return c.json({ error: 'Session not found' }, 404);
29
- }
30
- const messages = db.prepare(`
31
- SELECT id, session_id, type, content, thinking, tool_calls, tool_results, usage, timestamp, parent_id
32
- FROM messages WHERE session_id = ? ORDER BY timestamp ASC
33
- `).all(body.sessionId);
34
- const result = await analyzeSession(session, messages);
35
- if (result.success)
36
- trackEvent('analysis', true, 'session');
37
- return c.json(result, result.success ? 200 : 422);
38
- });
39
- // POST /api/analysis/prompt-quality
40
- // Body: { sessionId: string }
41
- // Runs prompt quality analysis on user messages in the session.
42
- app.post('/prompt-quality', async (c) => {
43
- if (!isLLMConfigured()) {
44
- return c.json({
45
- success: false,
46
- error: 'LLM not configured. Run `code-insights config llm` to configure a provider.',
47
- }, 400);
48
- }
49
- const body = await c.req.json();
50
- if (!body.sessionId || typeof body.sessionId !== 'string') {
51
- return c.json({ error: 'Missing required field: sessionId' }, 400);
52
- }
53
- const db = getDb();
54
- const session = db.prepare(`
55
- SELECT id, project_id, project_name, project_path, summary, ended_at
56
- FROM sessions WHERE id = ?
57
- `).get(body.sessionId);
58
- if (!session) {
59
- return c.json({ error: 'Session not found' }, 404);
60
- }
61
- const messages = db.prepare(`
62
- SELECT id, session_id, type, content, thinking, tool_calls, tool_results, usage, timestamp, parent_id
63
- FROM messages WHERE session_id = ? ORDER BY timestamp ASC
64
- `).all(body.sessionId);
65
- const result = await analyzePromptQuality(session, messages);
66
- if (result.success)
67
- trackEvent('analysis', true, 'prompt-quality');
68
- return c.json(result, result.success ? 200 : 422);
69
- });
70
- // POST /api/analysis/recurring
71
- // Body: { projectId?: string; limit?: number }
72
- // Finds recurring insight patterns across sessions.
73
- app.post('/recurring', async (c) => {
74
- if (!isLLMConfigured()) {
75
- return c.json({
76
- success: false,
77
- error: 'LLM not configured. Run `code-insights config llm` to configure a provider.',
78
- }, 400);
79
- }
80
- const body = await c.req.json();
81
- const db = getDb();
82
- const conditions = [];
83
- const params = [];
84
- if (body.projectId) {
85
- conditions.push('project_id = ?');
86
- params.push(body.projectId);
87
- }
88
- const where = conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : '';
89
- const limit = Math.min(parseIntParam(String(body.limit ?? ''), 200), 200);
90
- const insights = db.prepare(`
91
- SELECT id, type, title, summary, project_name, session_id
92
- FROM insights
93
- ${where}
94
- ORDER BY timestamp DESC
95
- LIMIT ?
96
- `).all(...params, limit);
97
- const result = await findRecurringInsights(insights);
98
- if (result.success)
99
- trackEvent('analysis', true, 'recurring');
100
- return c.json(result, result.success ? 200 : 422);
101
- });
102
- export default app;
103
- //# sourceMappingURL=analysis.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"analysis.js","sourceRoot":"","sources":["../../src/routes/analysis.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import { Hono } from 'hono';
2
- declare const app: Hono<import("hono/types").BlankEnv, import("hono/types").BlankSchema, "/">;
3
- export default app;
4
- //# sourceMappingURL=analytics.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../src/routes/analytics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B,QAAA,MAAM,GAAG,4EAAa,CAAC;AAmDvB,eAAe,GAAG,CAAC"}
@@ -1,47 +0,0 @@
1
- import { Hono } from 'hono';
2
- import { getDb } from '@code-insights/cli/db/client';
3
- const app = new Hono();
4
- const VALID_RANGES = ['7d', '30d', '90d', 'all'];
5
- // Dashboard overview stats for a given time range (e.g. ?range=7d|30d|90d|all)
6
- app.get('/dashboard', (c) => {
7
- const db = getDb();
8
- const { range = '7d' } = c.req.query();
9
- if (!VALID_RANGES.includes(range)) {
10
- return c.json({ error: `Invalid range. Must be one of: ${VALID_RANGES.join(', ')}` }, 400);
11
- }
12
- let periodStart = null;
13
- const now = new Date();
14
- if (range === '7d') {
15
- periodStart = new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000).toISOString();
16
- }
17
- else if (range === '30d') {
18
- periodStart = new Date(now.getTime() - 30 * 24 * 60 * 60 * 1000).toISOString();
19
- }
20
- else if (range === '90d') {
21
- periodStart = new Date(now.getTime() - 90 * 24 * 60 * 60 * 1000).toISOString();
22
- }
23
- const where = periodStart ? 'WHERE started_at >= ?' : '';
24
- const params = periodStart ? [periodStart] : [];
25
- const stats = db.prepare(`
26
- SELECT
27
- COUNT(*) AS session_count,
28
- SUM(message_count) AS total_messages,
29
- SUM(total_input_tokens) AS total_input_tokens,
30
- SUM(total_output_tokens) AS total_output_tokens,
31
- SUM(estimated_cost_usd) AS estimated_cost_usd
32
- FROM sessions ${where}
33
- `).get(...params);
34
- return c.json({ range, stats });
35
- });
36
- // Global cumulative usage stats
37
- app.get('/usage', (c) => {
38
- const db = getDb();
39
- const stats = db.prepare(`
40
- SELECT total_input_tokens, total_output_tokens, cache_creation_tokens,
41
- cache_read_tokens, estimated_cost_usd, sessions_with_usage, last_updated_at
42
- FROM usage_stats WHERE id = 1
43
- `).get();
44
- return c.json({ stats: stats ?? null });
45
- });
46
- export default app;
47
- //# sourceMappingURL=analytics.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../src/routes/analytics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAErD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;AAEvB,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAU,CAAC;AAG1D,+EAA+E;AAC/E,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1B,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,MAAM,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IAEvC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAc,CAAC,EAAE,CAAC;QAC3C,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,kCAAkC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;IAC7F,CAAC;IAED,IAAI,WAAW,GAAkB,IAAI,CAAC;IACtC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,WAAW,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IAChF,CAAC;SAAM,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;QAC3B,WAAW,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IACjF,CAAC;SAAM,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;QAC3B,WAAW,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IACjF,CAAC;IAED,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE,CAAC;IACzD,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAEhD,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;;oBAOP,KAAK;GACtB,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;IAElB,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AAClC,CAAC,CAAC,CAAC;AAEH,gCAAgC;AAChC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;IACtB,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC;;;;GAIxB,CAAC,CAAC,GAAG,EAAE,CAAC;IACT,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,IAAI,IAAI,EAAE,CAAC,CAAC;AAC1C,CAAC,CAAC,CAAC;AAEH,eAAe,GAAG,CAAC"}
@@ -1,4 +0,0 @@
1
- import { Hono } from 'hono';
2
- declare const app: Hono<import("hono/types").BlankEnv, import("hono/types").BlankSchema, "/">;
3
- export default app;
4
- //# sourceMappingURL=config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/routes/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAM5B,QAAA,MAAM,GAAG,4EAAa,CAAC;AAiIvB,eAAe,GAAG,CAAC"}
@@ -1,108 +0,0 @@
1
- import { Hono } from 'hono';
2
- import { loadConfig, saveConfig } from '@code-insights/cli/utils/config';
3
- import { loadLLMConfig, testLLMConfig } from '../llm/client.js';
4
- import { discoverOllamaModels } from '../llm/providers/ollama.js';
5
- const app = new Hono();
6
- const VALID_PROVIDERS = ['openai', 'anthropic', 'gemini', 'ollama'];
7
- function maskApiKey(key) {
8
- if (!key || key.length < 8)
9
- return key ? '***' : undefined;
10
- return key.slice(0, 4) + '...' + key.slice(-4);
11
- }
12
- // GET /api/config/llm — return full config (API key masked)
13
- app.get('/llm', (c) => {
14
- const config = loadConfig();
15
- const llm = config?.dashboard?.llm;
16
- return c.json({
17
- dashboardPort: config?.dashboard?.port ?? 7890,
18
- provider: llm?.provider,
19
- model: llm?.model,
20
- apiKey: maskApiKey(llm?.apiKey),
21
- baseUrl: llm?.baseUrl,
22
- });
23
- });
24
- // PUT /api/config/llm — update dashboard port and/or LLM config
25
- app.put('/llm', async (c) => {
26
- const body = await c.req.json();
27
- const config = loadConfig() ?? {
28
- sync: { claudeDir: '', excludeProjects: [] },
29
- };
30
- let changed = false;
31
- // Update dashboard port if provided
32
- if (body.dashboardPort !== undefined) {
33
- const port = body.dashboardPort;
34
- if (typeof port !== 'number' || !Number.isInteger(port) || port < 1 || port > 65535) {
35
- return c.json({ error: 'dashboardPort must be an integer between 1 and 65535' }, 400);
36
- }
37
- config.dashboard = { ...config.dashboard, port };
38
- changed = true;
39
- }
40
- // Update LLM config if any LLM field is provided
41
- const hasLLMField = body.provider !== undefined || body.model !== undefined ||
42
- body.apiKey !== undefined || body.baseUrl !== undefined;
43
- if (hasLLMField) {
44
- if (body.provider !== undefined && !VALID_PROVIDERS.includes(body.provider)) {
45
- return c.json({ error: `provider must be one of: ${VALID_PROVIDERS.join(', ')}` }, 400);
46
- }
47
- const existingLlm = config.dashboard?.llm ?? {};
48
- const updatedLlm = {
49
- provider: body.provider ?? existingLlm.provider ?? 'ollama',
50
- model: body.model ?? existingLlm.model ?? '',
51
- // Preserve existing API key if not provided in update
52
- ...(body.apiKey !== undefined
53
- ? { apiKey: body.apiKey || undefined }
54
- : existingLlm.apiKey !== undefined ? { apiKey: existingLlm.apiKey } : {}),
55
- ...(body.baseUrl !== undefined
56
- ? { baseUrl: body.baseUrl || undefined }
57
- : existingLlm.baseUrl !== undefined ? { baseUrl: existingLlm.baseUrl } : {}),
58
- };
59
- if (!updatedLlm.model) {
60
- return c.json({ error: 'model is required when setting LLM config' }, 400);
61
- }
62
- config.dashboard = { ...config.dashboard, llm: updatedLlm };
63
- changed = true;
64
- }
65
- if (!changed) {
66
- return c.json({ ok: true });
67
- }
68
- saveConfig(config);
69
- return c.json({ ok: true });
70
- });
71
- // POST /api/config/llm/test — validate LLM credentials with a test call
72
- app.post('/llm/test', async (c) => {
73
- // Allow testing with body config or existing saved config
74
- let testConfig = null;
75
- try {
76
- const body = await c.req.json();
77
- if (body.provider && body.model) {
78
- testConfig = {
79
- provider: body.provider,
80
- model: body.model,
81
- ...(body.apiKey ? { apiKey: body.apiKey } : {}),
82
- ...(body.baseUrl ? { baseUrl: body.baseUrl } : {}),
83
- };
84
- }
85
- }
86
- catch {
87
- // No body or invalid JSON — use existing config
88
- }
89
- if (!testConfig) {
90
- testConfig = loadLLMConfig();
91
- }
92
- if (!testConfig) {
93
- return c.json({
94
- success: false,
95
- error: 'No LLM config found. Run `code-insights config llm` or provide config in request body.',
96
- }, 400);
97
- }
98
- const result = await testLLMConfig(testConfig);
99
- return c.json(result, result.success ? 200 : 422);
100
- });
101
- // GET /api/config/llm/ollama-models — return locally available Ollama models
102
- app.get('/llm/ollama-models', async (c) => {
103
- const baseUrl = c.req.query('baseUrl');
104
- const models = await discoverOllamaModels(baseUrl);
105
- return c.json({ models });
106
- });
107
- export default app;
108
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/routes/config.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import { Hono } from 'hono';
2
- declare const app: Hono<import("hono/types").BlankEnv, import("hono/types").BlankSchema, "/">;
3
- export default app;
4
- //# sourceMappingURL=export.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/routes/export.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAI5B,QAAA,MAAM,GAAG,4EAAa,CAAC;AAyDvB,eAAe,GAAG,CAAC"}
@@ -1,52 +0,0 @@
1
- import { Hono } from 'hono';
2
- import { getDb } from '@code-insights/cli/db/client';
3
- import { trackEvent } from '@code-insights/cli/utils/telemetry';
4
- const app = new Hono();
5
- // POST /api/export/markdown — export sessions/insights as markdown
6
- app.post('/markdown', async (c) => {
7
- const db = getDb();
8
- const body = await c.req.json();
9
- const { sessionIds, projectId } = body;
10
- if (sessionIds !== undefined && !Array.isArray(sessionIds)) {
11
- return c.json({ error: 'sessionIds must be an array' }, 400);
12
- }
13
- if (sessionIds && sessionIds.some((id) => typeof id !== 'string')) {
14
- return c.json({ error: 'sessionIds must contain only strings' }, 400);
15
- }
16
- if (sessionIds && sessionIds.length > 100) {
17
- return c.json({ error: 'Maximum 100 session IDs per export request' }, 400);
18
- }
19
- let sessions;
20
- if (sessionIds && sessionIds.length > 0) {
21
- const placeholders = sessionIds.map(() => '?').join(', ');
22
- sessions = db.prepare(`SELECT id, project_name, generated_title, custom_title, started_at, ended_at,
23
- message_count, estimated_cost_usd, session_character, source_tool
24
- FROM sessions WHERE id IN (${placeholders}) ORDER BY started_at DESC`).all(...sessionIds);
25
- }
26
- else if (projectId) {
27
- sessions = db.prepare(`SELECT id, project_name, generated_title, custom_title, started_at, ended_at,
28
- message_count, estimated_cost_usd, session_character, source_tool
29
- FROM sessions WHERE project_id = ? ORDER BY started_at DESC`).all(projectId);
30
- }
31
- else {
32
- return c.json({ error: 'sessionIds or projectId required' }, 400);
33
- }
34
- const lines = ['# Code Insights Export', ''];
35
- for (const s of sessions) {
36
- const title = (s.custom_title ?? s.generated_title ?? s.id);
37
- lines.push(`## ${title}`);
38
- lines.push(`- **Started:** ${s.started_at}`);
39
- lines.push(`- **Ended:** ${s.ended_at}`);
40
- lines.push(`- **Messages:** ${s.message_count}`);
41
- if (s.estimated_cost_usd != null) {
42
- lines.push(`- **Cost:** $${Number(s.estimated_cost_usd).toFixed(4)}`);
43
- }
44
- lines.push('');
45
- }
46
- const markdown = lines.join('\n');
47
- trackEvent('export', true, 'markdown');
48
- c.header('Content-Type', 'text/markdown');
49
- return c.body(markdown);
50
- });
51
- export default app;
52
- //# sourceMappingURL=export.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/routes/export.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import { Hono } from 'hono';
2
- declare const app: Hono<import("hono/types").BlankEnv, import("hono/types").BlankSchema, "/">;
3
- export default app;
4
- //# sourceMappingURL=insights.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"insights.d.ts","sourceRoot":"","sources":["../../src/routes/insights.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAK5B,QAAA,MAAM,GAAG,4EAAa,CAAC;AAgHvB,eAAe,GAAG,CAAC"}
@@ -1,80 +0,0 @@
1
- import { Hono } from 'hono';
2
- import { getDb } from '@code-insights/cli/db/client';
3
- import { randomUUID } from 'crypto';
4
- import { parseIntParam } from '../utils.js';
5
- const app = new Hono();
6
- const VALID_TYPES = ['summary', 'decision', 'learning', 'technique', 'prompt_quality'];
7
- app.get('/', (c) => {
8
- const db = getDb();
9
- const { projectId, sessionId, type, limit, offset } = c.req.query();
10
- const conditions = [];
11
- const params = [];
12
- if (projectId) {
13
- conditions.push('project_id = ?');
14
- params.push(projectId);
15
- }
16
- if (sessionId) {
17
- conditions.push('session_id = ?');
18
- params.push(sessionId);
19
- }
20
- if (type) {
21
- conditions.push('type = ?');
22
- params.push(type);
23
- }
24
- const where = conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : '';
25
- const insights = db.prepare(`
26
- SELECT id, session_id, project_id, project_name, type, title, content,
27
- summary, bullets, confidence, source, metadata, timestamp,
28
- created_at, scope, analysis_version, linked_insight_ids
29
- FROM insights
30
- ${where}
31
- ORDER BY timestamp DESC
32
- LIMIT ? OFFSET ?
33
- `).all(...params, parseIntParam(limit, 100), parseIntParam(offset, 0));
34
- return c.json({ insights });
35
- });
36
- app.post('/', async (c) => {
37
- const db = getDb();
38
- const body = await c.req.json();
39
- // Validate required string fields
40
- const required = ['sessionId', 'projectId', 'type', 'title', 'content'];
41
- for (const field of required) {
42
- if (!body[field] || typeof body[field] !== 'string') {
43
- return c.json({ error: `Missing or invalid field: ${field}` }, 400);
44
- }
45
- }
46
- // Validate type is one of the known insight types
47
- if (!VALID_TYPES.includes(body.type)) {
48
- return c.json({ error: `type must be one of: ${VALID_TYPES.join(', ')}` }, 400);
49
- }
50
- // Validate confidence is a finite number if provided
51
- if (body.confidence !== undefined && (typeof body.confidence !== 'number' || !Number.isFinite(body.confidence))) {
52
- return c.json({ error: 'confidence must be a finite number' }, 400);
53
- }
54
- const id = randomUUID();
55
- const now = new Date().toISOString();
56
- try {
57
- db.prepare(`
58
- INSERT INTO insights (
59
- id, session_id, project_id, project_name, type, title, content,
60
- summary, bullets, confidence, source, metadata, timestamp, created_at
61
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 'llm', ?, ?, ?)
62
- `).run(id, body.sessionId, body.projectId, body.projectName ?? '', body.type, body.title, body.content, body.summary ?? '', body.bullets ? JSON.stringify(body.bullets) : null, body.confidence ?? 0, body.metadata ? JSON.stringify(body.metadata) : null, now, now);
63
- }
64
- catch (err) {
65
- if (err instanceof Error && err.message.includes('FOREIGN KEY constraint failed')) {
66
- return c.json({ error: 'Invalid sessionId or projectId' }, 400);
67
- }
68
- throw err;
69
- }
70
- return c.json({ id }, 201);
71
- });
72
- app.delete('/:id', (c) => {
73
- const db = getDb();
74
- const result = db.prepare('DELETE FROM insights WHERE id = ?').run(c.req.param('id'));
75
- if (result.changes === 0)
76
- return c.json({ error: 'Not found' }, 404);
77
- return c.json({ ok: true });
78
- });
79
- export default app;
80
- //# sourceMappingURL=insights.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"insights.js","sourceRoot":"","sources":["../../src/routes/insights.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import { Hono } from 'hono';
2
- declare const app: Hono<import("hono/types").BlankEnv, import("hono/types").BlankSchema, "/">;
3
- export default app;
4
- //# sourceMappingURL=messages.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/routes/messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAI5B,QAAA,MAAM,GAAG,4EAAa,CAAC;AAgBvB,eAAe,GAAG,CAAC"}
@@ -1,19 +0,0 @@
1
- import { Hono } from 'hono';
2
- import { getDb } from '@code-insights/cli/db/client';
3
- import { parseIntParam } from '../utils.js';
4
- const app = new Hono();
5
- app.get('/:sessionId', (c) => {
6
- const db = getDb();
7
- const { limit, offset } = c.req.query();
8
- const messages = db.prepare(`
9
- SELECT id, session_id, type, content, thinking,
10
- tool_calls, tool_results, usage, timestamp, parent_id
11
- FROM messages
12
- WHERE session_id = ?
13
- ORDER BY timestamp ASC
14
- LIMIT ? OFFSET ?
15
- `).all(c.req.param('sessionId'), parseIntParam(limit, 100), parseIntParam(offset, 0));
16
- return c.json({ messages });
17
- });
18
- export default app;
19
- //# sourceMappingURL=messages.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/routes/messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;AAEvB,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE;IAC3B,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IACxC,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;;GAO3B,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IACtF,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEH,eAAe,GAAG,CAAC"}
@@ -1,4 +0,0 @@
1
- import { Hono } from 'hono';
2
- declare const app: Hono<import("hono/types").BlankEnv, import("hono/types").BlankSchema, "/">;
3
- export default app;
4
- //# sourceMappingURL=projects.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/routes/projects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAI5B,QAAA,MAAM,GAAG,4EAAa,CAAC;AA6BvB,eAAe,GAAG,CAAC"}
@@ -1,32 +0,0 @@
1
- import { Hono } from 'hono';
2
- import { getDb } from '@code-insights/cli/db/client';
3
- import { parseIntParam } from '../utils.js';
4
- const app = new Hono();
5
- app.get('/', (c) => {
6
- const db = getDb();
7
- const { limit, offset } = c.req.query();
8
- const projects = db.prepare(`
9
- SELECT id, name, path, git_remote_url, session_count, last_activity,
10
- total_input_tokens, total_output_tokens, cache_creation_tokens,
11
- cache_read_tokens, estimated_cost_usd, created_at, updated_at
12
- FROM projects
13
- ORDER BY last_activity DESC
14
- LIMIT ? OFFSET ?
15
- `).all(parseIntParam(limit, 100), parseIntParam(offset, 0));
16
- return c.json({ projects });
17
- });
18
- app.get('/:id', (c) => {
19
- const db = getDb();
20
- const project = db.prepare(`
21
- SELECT id, name, path, git_remote_url, session_count, last_activity,
22
- total_input_tokens, total_output_tokens, cache_creation_tokens,
23
- cache_read_tokens, estimated_cost_usd, created_at, updated_at
24
- FROM projects
25
- WHERE id = ?
26
- `).get(c.req.param('id'));
27
- if (!project)
28
- return c.json({ error: 'Not found' }, 404);
29
- return c.json({ project });
30
- });
31
- export default app;
32
- //# sourceMappingURL=projects.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/routes/projects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;AAEvB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE;IACjB,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IACxC,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;;GAO3B,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5D,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEH,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;IACpB,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;GAM1B,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1B,IAAI,CAAC,OAAO;QAAE,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,GAAG,CAAC,CAAC;IACzD,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEH,eAAe,GAAG,CAAC"}
@@ -1,4 +0,0 @@
1
- import { Hono } from 'hono';
2
- declare const app: Hono<import("hono/types").BlankEnv, import("hono/types").BlankSchema, "/">;
3
- export default app;
4
- //# sourceMappingURL=sessions.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/routes/sessions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAI5B,QAAA,MAAM,GAAG,4EAAa,CAAC;AAqEvB,eAAe,GAAG,CAAC"}