@code-insights/cli 2.1.0 → 3.0.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.
- package/CHANGELOG.md +39 -0
- package/README.md +146 -156
- package/dashboard-dist/assets/index-BMhL7wL8.css +1 -0
- package/dashboard-dist/assets/index-CuCBzQyQ.js +548 -0
- package/dashboard-dist/dist/assets/index-BMhL7wL8.css +1 -0
- package/dashboard-dist/dist/assets/index-CUWKxcRo.js +548 -0
- package/dashboard-dist/dist/assets/index-CuCBzQyQ.js +548 -0
- package/dashboard-dist/dist/favicon.svg +4 -0
- package/dashboard-dist/dist/index.html +33 -0
- package/dashboard-dist/favicon.svg +4 -0
- package/dashboard-dist/index.html +33 -0
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +188 -69
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/dashboard.d.ts +16 -0
- package/dist/commands/dashboard.d.ts.map +1 -0
- package/dist/commands/dashboard.js +82 -0
- package/dist/commands/dashboard.js.map +1 -0
- package/dist/commands/init.d.ts +3 -4
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +24 -201
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/install-hook.d.ts.map +1 -1
- package/dist/commands/install-hook.js +4 -21
- package/dist/commands/install-hook.js.map +1 -1
- package/dist/commands/open.d.ts +2 -1
- package/dist/commands/open.d.ts.map +1 -1
- package/dist/commands/open.js +10 -21
- package/dist/commands/open.js.map +1 -1
- package/dist/commands/reset.d.ts.map +1 -1
- package/dist/commands/reset.js +38 -69
- package/dist/commands/reset.js.map +1 -1
- package/dist/commands/stats/actions/error-handler.d.ts.map +1 -1
- package/dist/commands/stats/actions/error-handler.js +1 -11
- package/dist/commands/stats/actions/error-handler.js.map +1 -1
- package/dist/commands/stats/data/local.d.ts +0 -2
- package/dist/commands/stats/data/local.d.ts.map +1 -1
- package/dist/commands/stats/data/local.js +44 -44
- package/dist/commands/stats/data/local.js.map +1 -1
- package/dist/commands/stats/data/source.d.ts +3 -9
- package/dist/commands/stats/data/source.d.ts.map +1 -1
- package/dist/commands/stats/data/source.js +3 -35
- package/dist/commands/stats/data/source.js.map +1 -1
- package/dist/commands/stats/data/types.d.ts +1 -12
- package/dist/commands/stats/data/types.d.ts.map +1 -1
- package/dist/commands/stats/data/types.js +0 -16
- package/dist/commands/stats/data/types.js.map +1 -1
- package/dist/commands/stats/shared.d.ts.map +1 -1
- package/dist/commands/stats/shared.js +1 -5
- package/dist/commands/stats/shared.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +53 -92
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/sync.d.ts +5 -5
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +31 -39
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/telemetry.d.ts.map +1 -1
- package/dist/commands/telemetry.js +0 -1
- package/dist/commands/telemetry.js.map +1 -1
- package/dist/constants/llm-providers.d.ts +5 -0
- package/dist/constants/llm-providers.d.ts.map +1 -0
- package/dist/constants/llm-providers.js +56 -0
- package/dist/constants/llm-providers.js.map +1 -0
- package/dist/db/client.d.ts +17 -0
- package/dist/db/client.d.ts.map +1 -0
- package/dist/db/client.js +53 -0
- package/dist/db/client.js.map +1 -0
- package/dist/db/migrate.d.ts +9 -0
- package/dist/db/migrate.d.ts.map +1 -0
- package/dist/db/migrate.js +31 -0
- package/dist/db/migrate.js.map +1 -0
- package/dist/db/read.d.ts +42 -0
- package/dist/db/read.d.ts.map +1 -0
- package/dist/db/read.js +194 -0
- package/dist/db/read.js.map +1 -0
- package/dist/db/schema.d.ts +3 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +129 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/db/write.d.ts +24 -0
- package/dist/db/write.d.ts.map +1 -0
- package/dist/db/write.js +287 -0
- package/dist/db/write.js.map +1 -0
- package/dist/firebase/client.d.ts +5 -0
- package/dist/firebase/client.d.ts.map +1 -1
- package/dist/firebase/client.js +23 -0
- package/dist/firebase/client.js.map +1 -1
- package/dist/index.js +12 -12
- package/dist/index.js.map +1 -1
- package/dist/providers/context.d.ts +3 -0
- package/dist/providers/context.d.ts.map +1 -0
- package/dist/providers/context.js +13 -0
- package/dist/providers/context.js.map +1 -0
- package/dist/providers/copilot.d.ts +18 -0
- package/dist/providers/copilot.d.ts.map +1 -0
- package/dist/providers/copilot.js +289 -0
- package/dist/providers/copilot.js.map +1 -0
- package/dist/providers/cursor.d.ts.map +1 -1
- package/dist/providers/cursor.js +8 -3
- package/dist/providers/cursor.js.map +1 -1
- package/dist/providers/registry.d.ts.map +1 -1
- package/dist/providers/registry.js +3 -0
- package/dist/providers/registry.js.map +1 -1
- package/dist/types.d.ts +38 -47
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/browser.d.ts +6 -0
- package/dist/utils/browser.d.ts.map +1 -0
- package/dist/utils/browser.js +23 -0
- package/dist/utils/browser.js.map +1 -0
- package/dist/utils/config.d.ts +9 -21
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +23 -50
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/telemetry.js +2 -7
- package/dist/utils/telemetry.js.map +1 -1
- package/dist/utils/tips.js +1 -1
- package/dist/utils/tips.js.map +1 -1
- package/package.json +19 -5
- package/server-dist/dist/index.d.ts +12 -0
- package/server-dist/dist/index.d.ts.map +1 -0
- package/server-dist/dist/index.js +92 -0
- package/server-dist/dist/index.js.map +1 -0
- package/server-dist/dist/llm/analysis.d.ts +80 -0
- package/server-dist/dist/llm/analysis.d.ts.map +1 -0
- package/server-dist/dist/llm/analysis.js +509 -0
- package/server-dist/dist/llm/analysis.js.map +1 -0
- package/server-dist/dist/llm/client.d.ts +27 -0
- package/server-dist/dist/llm/client.d.ts.map +1 -0
- package/server-dist/dist/llm/client.js +71 -0
- package/server-dist/dist/llm/client.js.map +1 -0
- package/server-dist/dist/llm/index.d.ts +7 -0
- package/server-dist/dist/llm/index.d.ts.map +1 -0
- package/server-dist/dist/llm/index.js +5 -0
- package/server-dist/dist/llm/index.js.map +1 -0
- package/server-dist/dist/llm/prompts.d.ts +73 -0
- package/server-dist/dist/llm/prompts.d.ts.map +1 -0
- package/server-dist/dist/llm/prompts.js +242 -0
- package/server-dist/dist/llm/prompts.js.map +1 -0
- package/server-dist/dist/llm/providers/anthropic.d.ts +3 -0
- package/server-dist/dist/llm/providers/anthropic.d.ts.map +1 -0
- package/server-dist/dist/llm/providers/anthropic.js +45 -0
- package/server-dist/dist/llm/providers/anthropic.js.map +1 -0
- package/server-dist/dist/llm/providers/gemini.d.ts +3 -0
- package/server-dist/dist/llm/providers/gemini.d.ts.map +1 -0
- package/server-dist/dist/llm/providers/gemini.js +51 -0
- package/server-dist/dist/llm/providers/gemini.js.map +1 -0
- package/server-dist/dist/llm/providers/ollama.d.ts +12 -0
- package/server-dist/dist/llm/providers/ollama.d.ts.map +1 -0
- package/server-dist/dist/llm/providers/ollama.js +61 -0
- package/server-dist/dist/llm/providers/ollama.js.map +1 -0
- package/server-dist/dist/llm/providers/openai.d.ts +3 -0
- package/server-dist/dist/llm/providers/openai.d.ts.map +1 -0
- package/server-dist/dist/llm/providers/openai.js +39 -0
- package/server-dist/dist/llm/providers/openai.js.map +1 -0
- package/server-dist/dist/llm/types.d.ts +22 -0
- package/server-dist/dist/llm/types.d.ts.map +1 -0
- package/server-dist/dist/llm/types.js +5 -0
- package/server-dist/dist/llm/types.js.map +1 -0
- package/server-dist/dist/routes/analysis.d.ts +4 -0
- package/server-dist/dist/routes/analysis.d.ts.map +1 -0
- package/server-dist/dist/routes/analysis.js +103 -0
- package/server-dist/dist/routes/analysis.js.map +1 -0
- package/server-dist/dist/routes/analytics.d.ts +4 -0
- package/server-dist/dist/routes/analytics.d.ts.map +1 -0
- package/server-dist/dist/routes/analytics.js +47 -0
- package/server-dist/dist/routes/analytics.js.map +1 -0
- package/server-dist/dist/routes/config.d.ts +4 -0
- package/server-dist/dist/routes/config.d.ts.map +1 -0
- package/server-dist/dist/routes/config.js +108 -0
- package/server-dist/dist/routes/config.js.map +1 -0
- package/server-dist/dist/routes/export.d.ts +4 -0
- package/server-dist/dist/routes/export.d.ts.map +1 -0
- package/server-dist/dist/routes/export.js +52 -0
- package/server-dist/dist/routes/export.js.map +1 -0
- package/server-dist/dist/routes/insights.d.ts +4 -0
- package/server-dist/dist/routes/insights.d.ts.map +1 -0
- package/server-dist/dist/routes/insights.js +80 -0
- package/server-dist/dist/routes/insights.js.map +1 -0
- package/server-dist/dist/routes/messages.d.ts +4 -0
- package/server-dist/dist/routes/messages.d.ts.map +1 -0
- package/server-dist/dist/routes/messages.js +19 -0
- package/server-dist/dist/routes/messages.js.map +1 -0
- package/server-dist/dist/routes/projects.d.ts +4 -0
- package/server-dist/dist/routes/projects.d.ts.map +1 -0
- package/server-dist/dist/routes/projects.js +32 -0
- package/server-dist/dist/routes/projects.js.map +1 -0
- package/server-dist/dist/routes/sessions.d.ts +4 -0
- package/server-dist/dist/routes/sessions.d.ts.map +1 -0
- package/server-dist/dist/routes/sessions.js +65 -0
- package/server-dist/dist/routes/sessions.js.map +1 -0
- package/server-dist/dist/utils.d.ts +6 -0
- package/server-dist/dist/utils.d.ts.map +1 -0
- package/server-dist/dist/utils.js +9 -0
- package/server-dist/dist/utils.js.map +1 -0
- package/server-dist/index.d.ts +12 -0
- package/server-dist/index.d.ts.map +1 -0
- package/server-dist/index.js +92 -0
- package/server-dist/index.js.map +1 -0
- package/server-dist/llm/analysis.d.ts +80 -0
- package/server-dist/llm/analysis.d.ts.map +1 -0
- package/server-dist/llm/analysis.js +509 -0
- package/server-dist/llm/analysis.js.map +1 -0
- package/server-dist/llm/client.d.ts +27 -0
- package/server-dist/llm/client.d.ts.map +1 -0
- package/server-dist/llm/client.js +71 -0
- package/server-dist/llm/client.js.map +1 -0
- package/server-dist/llm/index.d.ts +7 -0
- package/server-dist/llm/index.d.ts.map +1 -0
- package/server-dist/llm/index.js +5 -0
- package/server-dist/llm/index.js.map +1 -0
- package/server-dist/llm/prompts.d.ts +73 -0
- package/server-dist/llm/prompts.d.ts.map +1 -0
- package/server-dist/llm/prompts.js +242 -0
- package/server-dist/llm/prompts.js.map +1 -0
- package/server-dist/llm/providers/anthropic.d.ts +3 -0
- package/server-dist/llm/providers/anthropic.d.ts.map +1 -0
- package/server-dist/llm/providers/anthropic.js +45 -0
- package/server-dist/llm/providers/anthropic.js.map +1 -0
- package/server-dist/llm/providers/gemini.d.ts +3 -0
- package/server-dist/llm/providers/gemini.d.ts.map +1 -0
- package/server-dist/llm/providers/gemini.js +51 -0
- package/server-dist/llm/providers/gemini.js.map +1 -0
- package/server-dist/llm/providers/ollama.d.ts +12 -0
- package/server-dist/llm/providers/ollama.d.ts.map +1 -0
- package/server-dist/llm/providers/ollama.js +61 -0
- package/server-dist/llm/providers/ollama.js.map +1 -0
- package/server-dist/llm/providers/openai.d.ts +3 -0
- package/server-dist/llm/providers/openai.d.ts.map +1 -0
- package/server-dist/llm/providers/openai.js +39 -0
- package/server-dist/llm/providers/openai.js.map +1 -0
- package/server-dist/llm/types.d.ts +22 -0
- package/server-dist/llm/types.d.ts.map +1 -0
- package/server-dist/llm/types.js +5 -0
- package/server-dist/llm/types.js.map +1 -0
- package/server-dist/routes/analysis.d.ts +4 -0
- package/server-dist/routes/analysis.d.ts.map +1 -0
- package/server-dist/routes/analysis.js +103 -0
- package/server-dist/routes/analysis.js.map +1 -0
- package/server-dist/routes/analytics.d.ts +4 -0
- package/server-dist/routes/analytics.d.ts.map +1 -0
- package/server-dist/routes/analytics.js +47 -0
- package/server-dist/routes/analytics.js.map +1 -0
- package/server-dist/routes/config.d.ts +4 -0
- package/server-dist/routes/config.d.ts.map +1 -0
- package/server-dist/routes/config.js +108 -0
- package/server-dist/routes/config.js.map +1 -0
- package/server-dist/routes/export.d.ts +4 -0
- package/server-dist/routes/export.d.ts.map +1 -0
- package/server-dist/routes/export.js +52 -0
- package/server-dist/routes/export.js.map +1 -0
- package/server-dist/routes/insights.d.ts +4 -0
- package/server-dist/routes/insights.d.ts.map +1 -0
- package/server-dist/routes/insights.js +80 -0
- package/server-dist/routes/insights.js.map +1 -0
- package/server-dist/routes/messages.d.ts +4 -0
- package/server-dist/routes/messages.d.ts.map +1 -0
- package/server-dist/routes/messages.js +19 -0
- package/server-dist/routes/messages.js.map +1 -0
- package/server-dist/routes/projects.d.ts +4 -0
- package/server-dist/routes/projects.d.ts.map +1 -0
- package/server-dist/routes/projects.js +32 -0
- package/server-dist/routes/projects.js.map +1 -0
- package/server-dist/routes/sessions.d.ts +4 -0
- package/server-dist/routes/sessions.d.ts.map +1 -0
- package/server-dist/routes/sessions.js +65 -0
- package/server-dist/routes/sessions.js.map +1 -0
- package/server-dist/utils.d.ts +6 -0
- package/server-dist/utils.d.ts.map +1 -0
- package/server-dist/utils.js +9 -0
- package/server-dist/utils.js.map +1 -0
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" fill="none">
|
|
2
|
+
<rect width="32" height="32" rx="6" fill="#18181b"/>
|
|
3
|
+
<path d="M8 22 L12 14 L16 18 L20 10 L24 22" stroke="#a1a1aa" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" fill="none"/>
|
|
4
|
+
</svg>
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>Code Insights</title>
|
|
7
|
+
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
|
8
|
+
<!-- FOUC prevention: apply theme class before React renders to avoid flash.
|
|
9
|
+
Wrapped in try/catch so it silently degrades to light mode in
|
|
10
|
+
restricted environments where localStorage access is blocked. -->
|
|
11
|
+
<script>
|
|
12
|
+
(function () {
|
|
13
|
+
try {
|
|
14
|
+
var stored = localStorage.getItem('code-insights-theme');
|
|
15
|
+
var isDark = stored === 'dark';
|
|
16
|
+
var isSystem = !stored || stored === 'system' || (stored !== 'light' && stored !== 'dark');
|
|
17
|
+
var resolved = isDark || (isSystem && window.matchMedia('(prefers-color-scheme: dark)').matches)
|
|
18
|
+
? 'dark'
|
|
19
|
+
: 'light';
|
|
20
|
+
} catch (e) {
|
|
21
|
+
var resolved = 'light';
|
|
22
|
+
}
|
|
23
|
+
document.documentElement.classList.remove('light', 'dark');
|
|
24
|
+
document.documentElement.classList.add(resolved);
|
|
25
|
+
})();
|
|
26
|
+
</script>
|
|
27
|
+
<script type="module" crossorigin src="/assets/index-CUWKxcRo.js"></script>
|
|
28
|
+
<link rel="stylesheet" crossorigin href="/assets/index-BMhL7wL8.css">
|
|
29
|
+
</head>
|
|
30
|
+
<body>
|
|
31
|
+
<div id="root"></div>
|
|
32
|
+
</body>
|
|
33
|
+
</html>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" fill="none">
|
|
2
|
+
<rect width="32" height="32" rx="6" fill="#18181b"/>
|
|
3
|
+
<path d="M8 22 L12 14 L16 18 L20 10 L24 22" stroke="#a1a1aa" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" fill="none"/>
|
|
4
|
+
</svg>
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>Code Insights</title>
|
|
7
|
+
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
|
8
|
+
<!-- FOUC prevention: apply theme class before React renders to avoid flash.
|
|
9
|
+
Wrapped in try/catch so it silently degrades to light mode in
|
|
10
|
+
restricted environments where localStorage access is blocked. -->
|
|
11
|
+
<script>
|
|
12
|
+
(function () {
|
|
13
|
+
try {
|
|
14
|
+
var stored = localStorage.getItem('code-insights-theme');
|
|
15
|
+
var isDark = stored === 'dark';
|
|
16
|
+
var isSystem = !stored || stored === 'system' || (stored !== 'light' && stored !== 'dark');
|
|
17
|
+
var resolved = isDark || (isSystem && window.matchMedia('(prefers-color-scheme: dark)').matches)
|
|
18
|
+
? 'dark'
|
|
19
|
+
: 'light';
|
|
20
|
+
} catch (e) {
|
|
21
|
+
var resolved = 'light';
|
|
22
|
+
}
|
|
23
|
+
document.documentElement.classList.remove('light', 'dark');
|
|
24
|
+
document.documentElement.classList.add(resolved);
|
|
25
|
+
})();
|
|
26
|
+
</script>
|
|
27
|
+
<script type="module" crossorigin src="/assets/index-CuCBzQyQ.js"></script>
|
|
28
|
+
<link rel="stylesheet" crossorigin href="/assets/index-BMhL7wL8.css">
|
|
29
|
+
</head>
|
|
30
|
+
<body>
|
|
31
|
+
<div id="root"></div>
|
|
32
|
+
</body>
|
|
33
|
+
</html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqEpC,eAAO,MAAM,aAAa,SAItB,CAAC"}
|
package/dist/commands/config.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
2
|
import chalk from 'chalk';
|
|
3
|
-
import
|
|
3
|
+
import inquirer from 'inquirer';
|
|
4
|
+
import { loadConfig, saveConfig, isConfigured } from '../utils/config.js';
|
|
4
5
|
import { trackEvent } from '../utils/telemetry.js';
|
|
6
|
+
import { PROVIDERS, getDefaultModel } from '../constants/llm-providers.js';
|
|
5
7
|
/**
|
|
6
8
|
* Show current configuration summary.
|
|
7
9
|
*/
|
|
@@ -15,43 +17,39 @@ function showConfigAction() {
|
|
|
15
17
|
console.log(chalk.red('\nFailed to load config.\n'));
|
|
16
18
|
return;
|
|
17
19
|
}
|
|
18
|
-
const effectiveSource = resolveDataSourcePreference();
|
|
19
|
-
const firebaseConfigured = isFirebaseConfigured();
|
|
20
20
|
console.log(chalk.cyan('\n Code Insights Configuration\n'));
|
|
21
|
-
// Data source
|
|
22
|
-
console.log(chalk.white(' Data Source:'));
|
|
23
|
-
if (config.dataSource) {
|
|
24
|
-
console.log(chalk.gray(` Configured: ${config.dataSource}`));
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
console.log(chalk.gray(` Configured: (not set)`));
|
|
28
|
-
}
|
|
29
|
-
console.log(chalk.gray(` Effective: ${effectiveSource}`));
|
|
30
|
-
// Firebase
|
|
31
|
-
console.log(chalk.white('\n Firebase:'));
|
|
32
|
-
if (firebaseConfigured) {
|
|
33
|
-
console.log(chalk.green(` Status: configured`));
|
|
34
|
-
console.log(chalk.gray(` Project: ${config.firebase.projectId}`));
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
console.log(chalk.yellow(` Status: not configured`));
|
|
38
|
-
}
|
|
39
21
|
// Sync
|
|
40
|
-
console.log(chalk.white('
|
|
22
|
+
console.log(chalk.white(' Sync:'));
|
|
41
23
|
console.log(chalk.gray(` Claude dir: ${config.sync.claudeDir}`));
|
|
42
24
|
if (config.sync.excludeProjects.length > 0) {
|
|
43
25
|
console.log(chalk.gray(` Excluded: ${config.sync.excludeProjects.join(', ')}`));
|
|
44
26
|
}
|
|
45
|
-
// Dashboard
|
|
46
|
-
if (config.
|
|
27
|
+
// Dashboard (Phase 3)
|
|
28
|
+
if (config.dashboard?.port) {
|
|
47
29
|
console.log(chalk.white('\n Dashboard:'));
|
|
48
|
-
console.log(chalk.gray(`
|
|
30
|
+
console.log(chalk.gray(` Port: ${config.dashboard.port}`));
|
|
31
|
+
}
|
|
32
|
+
// LLM config
|
|
33
|
+
if (config.dashboard?.llm) {
|
|
34
|
+
const llm = config.dashboard.llm;
|
|
35
|
+
const maskedKey = llm.apiKey && llm.apiKey.length >= 8
|
|
36
|
+
? llm.apiKey.slice(0, 4) + '...' + llm.apiKey.slice(-4)
|
|
37
|
+
: llm.apiKey ? '***' : '(none)';
|
|
38
|
+
console.log(chalk.white('\n LLM:'));
|
|
39
|
+
console.log(chalk.gray(` Provider: ${llm.provider}`));
|
|
40
|
+
console.log(chalk.gray(` Model: ${llm.model}`));
|
|
41
|
+
if (llm.provider !== 'ollama') {
|
|
42
|
+
console.log(chalk.gray(` API Key: ${maskedKey}`));
|
|
43
|
+
}
|
|
44
|
+
if (llm.baseUrl) {
|
|
45
|
+
console.log(chalk.gray(` Base URL: ${llm.baseUrl}`));
|
|
46
|
+
}
|
|
49
47
|
}
|
|
50
48
|
// Telemetry — default is enabled; env vars can override at runtime
|
|
51
49
|
console.log(chalk.white('\n Telemetry:'));
|
|
52
|
-
const telemetryEnabled = config.telemetry !== false;
|
|
50
|
+
const telemetryEnabled = config.telemetry !== false;
|
|
53
51
|
if (process.env.CODE_INSIGHTS_TELEMETRY_DISABLED === '1' || process.env.DO_NOT_TRACK === '1') {
|
|
54
|
-
console.log(chalk.yellow(
|
|
52
|
+
console.log(chalk.yellow(' Status: disabled (via env var)'));
|
|
55
53
|
}
|
|
56
54
|
else {
|
|
57
55
|
console.log(chalk.gray(` Status: ${telemetryEnabled ? 'enabled' : 'disabled'}`));
|
|
@@ -59,72 +57,193 @@ function showConfigAction() {
|
|
|
59
57
|
console.log('');
|
|
60
58
|
trackEvent('config', true);
|
|
61
59
|
}
|
|
62
|
-
/**
|
|
63
|
-
* Set the preferred data source ('local' or 'firebase').
|
|
64
|
-
*/
|
|
65
|
-
function setSourceAction(source) {
|
|
66
|
-
if (source !== 'local' && source !== 'firebase') {
|
|
67
|
-
console.error(chalk.red(`\nInvalid source "${source}". Must be "local" or "firebase".\n`));
|
|
68
|
-
process.exit(1);
|
|
69
|
-
}
|
|
70
|
-
const config = loadConfig();
|
|
71
|
-
if (!config) {
|
|
72
|
-
console.error(chalk.red('\nNot configured. Run `code-insights init` first.\n'));
|
|
73
|
-
process.exit(1);
|
|
74
|
-
}
|
|
75
|
-
if (source === 'firebase' && !isFirebaseConfigured()) {
|
|
76
|
-
console.error(chalk.red('\nFirebase credentials not configured.'));
|
|
77
|
-
console.error(chalk.gray('Run `code-insights init` to add Firebase credentials before setting source to "firebase".\n'));
|
|
78
|
-
process.exit(1);
|
|
79
|
-
}
|
|
80
|
-
config.dataSource = source;
|
|
81
|
-
saveConfig(config);
|
|
82
|
-
console.log(chalk.green(`\nData source preference set to "${source}".\n`));
|
|
83
|
-
trackEvent('config', true, 'set-source');
|
|
84
|
-
}
|
|
85
60
|
export const configCommand = new Command('config')
|
|
86
|
-
.description('Show
|
|
61
|
+
.description('Show Code Insights configuration')
|
|
87
62
|
.action(() => {
|
|
88
63
|
showConfigAction();
|
|
89
64
|
});
|
|
90
|
-
configCommand
|
|
91
|
-
.command('set-source <source>')
|
|
92
|
-
.description('Set preferred data source (local or firebase)')
|
|
93
|
-
.action((source) => {
|
|
94
|
-
setSourceAction(source);
|
|
95
|
-
});
|
|
96
65
|
configCommand
|
|
97
66
|
.command('set <key> <value>')
|
|
98
|
-
.description('Set a configuration value (telemetry
|
|
67
|
+
.description('Set a configuration value (telemetry)')
|
|
99
68
|
.action((key, value) => {
|
|
100
69
|
if (key === 'telemetry') {
|
|
101
70
|
if (value !== 'true' && value !== 'false') {
|
|
102
71
|
console.error(chalk.red(`\nInvalid value "${value}". Must be "true" or "false".\n`));
|
|
103
72
|
process.exit(1);
|
|
104
73
|
}
|
|
105
|
-
const
|
|
106
|
-
if (!
|
|
107
|
-
// No existing config — create minimal one so telemetry pref is persisted
|
|
74
|
+
const existing = loadConfig();
|
|
75
|
+
if (!existing) {
|
|
108
76
|
saveConfig({
|
|
109
77
|
sync: { claudeDir: '~/.claude/projects', excludeProjects: [] },
|
|
110
|
-
dataSource: 'local',
|
|
111
78
|
telemetry: value === 'true',
|
|
112
79
|
});
|
|
113
80
|
}
|
|
114
81
|
else {
|
|
115
|
-
|
|
116
|
-
saveConfig(
|
|
82
|
+
existing.telemetry = value === 'true';
|
|
83
|
+
saveConfig(existing);
|
|
117
84
|
}
|
|
118
85
|
console.log(chalk.green(`\nTelemetry ${value === 'true' ? 'enabled' : 'disabled'}.\n`));
|
|
119
86
|
trackEvent('config', true, 'set');
|
|
120
87
|
}
|
|
121
|
-
else if (key === 'source') {
|
|
122
|
-
setSourceAction(value);
|
|
123
|
-
// trackEvent already called inside setSourceAction
|
|
124
|
-
}
|
|
125
88
|
else {
|
|
126
|
-
console.error(chalk.red(`\nUnknown config key "${key}". Available: telemetry
|
|
89
|
+
console.error(chalk.red(`\nUnknown config key "${key}". Available: telemetry.\n`));
|
|
127
90
|
process.exit(1);
|
|
128
91
|
}
|
|
129
92
|
});
|
|
93
|
+
// ── config llm ────────────────────────────────────────────────────────────────
|
|
94
|
+
const llmCommand = configCommand
|
|
95
|
+
.command('llm')
|
|
96
|
+
.description('Configure LLM provider for AI-powered session analysis')
|
|
97
|
+
.option('--provider <provider>', 'LLM provider (openai, anthropic, gemini, ollama)')
|
|
98
|
+
.option('--model <model>', 'Model ID (e.g., gpt-4o, claude-sonnet-4-20250514)')
|
|
99
|
+
.option('--api-key <key>', 'API key for the selected provider')
|
|
100
|
+
.option('--base-url <url>', 'Custom base URL (for Ollama or local endpoints)')
|
|
101
|
+
.option('--show', 'Show current LLM configuration')
|
|
102
|
+
.action(async (options) => {
|
|
103
|
+
// --show: display current LLM config and exit
|
|
104
|
+
if (options.show) {
|
|
105
|
+
const config = loadConfig();
|
|
106
|
+
const llm = config?.dashboard?.llm;
|
|
107
|
+
if (!llm) {
|
|
108
|
+
console.log(chalk.yellow('\nLLM not configured. Run `code-insights config llm` to set up.\n'));
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
const maskedKey = llm.apiKey && llm.apiKey.length >= 8
|
|
112
|
+
? llm.apiKey.slice(0, 4) + '...' + llm.apiKey.slice(-4)
|
|
113
|
+
: llm.apiKey ? '***' : '(none)';
|
|
114
|
+
console.log(chalk.cyan('\n LLM Configuration\n'));
|
|
115
|
+
console.log(chalk.gray(` Provider: ${llm.provider}`));
|
|
116
|
+
console.log(chalk.gray(` Model: ${llm.model}`));
|
|
117
|
+
if (llm.provider !== 'ollama') {
|
|
118
|
+
console.log(chalk.gray(` API Key: ${maskedKey}`));
|
|
119
|
+
}
|
|
120
|
+
if (llm.baseUrl) {
|
|
121
|
+
console.log(chalk.gray(` Base URL: ${llm.baseUrl}`));
|
|
122
|
+
}
|
|
123
|
+
console.log('');
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
// Non-interactive: all required fields provided via flags
|
|
127
|
+
if (options.provider && options.model) {
|
|
128
|
+
const validProviders = PROVIDERS.map(p => p.id);
|
|
129
|
+
if (!validProviders.includes(options.provider)) {
|
|
130
|
+
console.error(chalk.red(`\nInvalid provider "${options.provider}". Must be one of: ${validProviders.join(', ')}\n`));
|
|
131
|
+
process.exit(1);
|
|
132
|
+
}
|
|
133
|
+
const providerInfo = PROVIDERS.find(p => p.id === options.provider);
|
|
134
|
+
if (providerInfo?.requiresApiKey && !options.apiKey) {
|
|
135
|
+
console.error(chalk.red(`\nProvider "${options.provider}" requires an API key. Use --api-key <key>\n`));
|
|
136
|
+
process.exit(1);
|
|
137
|
+
}
|
|
138
|
+
const llmConfig = {
|
|
139
|
+
provider: options.provider,
|
|
140
|
+
model: options.model,
|
|
141
|
+
...(options.apiKey ? { apiKey: options.apiKey } : {}),
|
|
142
|
+
...(options.baseUrl ? { baseUrl: options.baseUrl } : {}),
|
|
143
|
+
};
|
|
144
|
+
saveLLMConfig(llmConfig);
|
|
145
|
+
console.log(chalk.green(`\nLLM configured: ${options.provider} / ${options.model}\n`));
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
// Interactive flow
|
|
149
|
+
await runInteractiveLLMConfig();
|
|
150
|
+
});
|
|
151
|
+
/**
|
|
152
|
+
* Interactive LLM configuration wizard.
|
|
153
|
+
*/
|
|
154
|
+
async function runInteractiveLLMConfig() {
|
|
155
|
+
const existing = loadConfig()?.dashboard?.llm;
|
|
156
|
+
console.log(chalk.cyan('\n LLM Configuration\n'));
|
|
157
|
+
console.log(chalk.gray(' Configure the AI provider used for session analysis.\n'));
|
|
158
|
+
// Step 1: Select provider
|
|
159
|
+
const { provider } = await inquirer.prompt([
|
|
160
|
+
{
|
|
161
|
+
type: 'list',
|
|
162
|
+
name: 'provider',
|
|
163
|
+
message: 'Select LLM provider:',
|
|
164
|
+
choices: PROVIDERS.map(p => ({
|
|
165
|
+
name: `${p.name}${p.requiresApiKey ? '' : ' (no API key needed)'}`,
|
|
166
|
+
value: p.id,
|
|
167
|
+
})),
|
|
168
|
+
default: existing?.provider ?? 'ollama',
|
|
169
|
+
},
|
|
170
|
+
]);
|
|
171
|
+
const providerInfo = PROVIDERS.find(p => p.id === provider);
|
|
172
|
+
if (!providerInfo) {
|
|
173
|
+
console.error(chalk.red('\nFailed to find provider info. Aborting.\n'));
|
|
174
|
+
process.exit(1);
|
|
175
|
+
}
|
|
176
|
+
// Step 2: Select model
|
|
177
|
+
const { model } = await inquirer.prompt([
|
|
178
|
+
{
|
|
179
|
+
type: 'list',
|
|
180
|
+
name: 'model',
|
|
181
|
+
message: 'Select model:',
|
|
182
|
+
choices: providerInfo.models.map(m => ({
|
|
183
|
+
name: `${m.name}${m.description ? ` — ${m.description}` : ''}`,
|
|
184
|
+
value: m.id,
|
|
185
|
+
})),
|
|
186
|
+
default: existing?.model ?? getDefaultModel(provider),
|
|
187
|
+
},
|
|
188
|
+
]);
|
|
189
|
+
const llmConfig = { provider, model };
|
|
190
|
+
// Step 3: API key (if required)
|
|
191
|
+
if (providerInfo.requiresApiKey) {
|
|
192
|
+
const maskedExisting = existing?.apiKey && existing.apiKey.length >= 8
|
|
193
|
+
? `${existing.apiKey.slice(0, 4)}...${existing.apiKey.slice(-4)}`
|
|
194
|
+
: undefined;
|
|
195
|
+
const { apiKey } = await inquirer.prompt([
|
|
196
|
+
{
|
|
197
|
+
type: 'password',
|
|
198
|
+
name: 'apiKey',
|
|
199
|
+
message: `API key${maskedExisting ? ` (current: ${maskedExisting}, leave blank to keep)` : ''}:`,
|
|
200
|
+
mask: '*',
|
|
201
|
+
validate: (val) => {
|
|
202
|
+
if (!val && !existing?.apiKey) {
|
|
203
|
+
return `API key required for ${providerInfo.name}`;
|
|
204
|
+
}
|
|
205
|
+
return true;
|
|
206
|
+
},
|
|
207
|
+
},
|
|
208
|
+
]);
|
|
209
|
+
// Preserve existing key if blank input
|
|
210
|
+
if (apiKey) {
|
|
211
|
+
llmConfig.apiKey = apiKey;
|
|
212
|
+
}
|
|
213
|
+
else if (existing?.apiKey) {
|
|
214
|
+
llmConfig.apiKey = existing.apiKey;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
// Step 4: Base URL (Ollama or custom)
|
|
218
|
+
if (provider === 'ollama') {
|
|
219
|
+
const { baseUrl } = await inquirer.prompt([
|
|
220
|
+
{
|
|
221
|
+
type: 'input',
|
|
222
|
+
name: 'baseUrl',
|
|
223
|
+
message: 'Ollama URL (leave blank for default http://localhost:11434):',
|
|
224
|
+
default: existing?.baseUrl ?? '',
|
|
225
|
+
},
|
|
226
|
+
]);
|
|
227
|
+
if (baseUrl && baseUrl !== 'http://localhost:11434') {
|
|
228
|
+
llmConfig.baseUrl = baseUrl;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
saveLLMConfig(llmConfig);
|
|
232
|
+
console.log(chalk.green(`\nLLM configured: ${providerInfo.name} / ${model}\n`));
|
|
233
|
+
if (providerInfo.apiKeyLink && !llmConfig.apiKey) {
|
|
234
|
+
console.log(chalk.dim(` Get an API key: ${providerInfo.apiKeyLink}\n`));
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Save LLM config into the dashboard.llm field of the CLI config file.
|
|
239
|
+
*/
|
|
240
|
+
function saveLLMConfig(llmConfig) {
|
|
241
|
+
const existing = loadConfig() ?? {
|
|
242
|
+
sync: { claudeDir: '~/.claude/projects', excludeProjects: [] },
|
|
243
|
+
};
|
|
244
|
+
existing.dashboard = { ...existing.dashboard, llm: llmConfig };
|
|
245
|
+
saveConfig(existing);
|
|
246
|
+
}
|
|
247
|
+
// Suppress unused variable warning — llmCommand is registered via .command() side-effect
|
|
248
|
+
void llmCommand;
|
|
130
249
|
//# sourceMappingURL=config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
interface DashboardOptions {
|
|
2
|
+
port: string;
|
|
3
|
+
open: boolean;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Start the Code Insights local dashboard server.
|
|
7
|
+
*
|
|
8
|
+
* Loads server/dist/index.js by file URL rather than package name to avoid a
|
|
9
|
+
* circular workspace dependency (server depends on @code-insights/cli, so CLI
|
|
10
|
+
* cannot list @code-insights/server as a build-time dep). pathToFileURL ensures
|
|
11
|
+
* the import works on Windows where absolute paths like C:\... are not valid
|
|
12
|
+
* ESM import specifiers.
|
|
13
|
+
*/
|
|
14
|
+
export declare function dashboardCommand(options: DashboardOptions): Promise<void>;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=dashboard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../src/commands/dashboard.ts"],"names":[],"mappings":"AAQA,UAAU,gBAAgB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;CACf;AAuBD;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2D/E"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { resolve, dirname } from 'path';
|
|
2
|
+
import { fileURLToPath, pathToFileURL } from 'url';
|
|
3
|
+
import { existsSync } from 'fs';
|
|
4
|
+
import chalk from 'chalk';
|
|
5
|
+
import ora from 'ora';
|
|
6
|
+
import net from 'net';
|
|
7
|
+
import { trackEvent } from '../utils/telemetry.js';
|
|
8
|
+
/**
|
|
9
|
+
* Check if a port is already in use.
|
|
10
|
+
* - Checks only EADDRINUSE, not other errors (e.g. EACCES for privileged ports).
|
|
11
|
+
* - Waits for the test socket to fully close before resolving, avoiding a TOCTOU
|
|
12
|
+
* race where the real server tries to bind before the OS releases the port.
|
|
13
|
+
*/
|
|
14
|
+
function isPortInUse(port) {
|
|
15
|
+
return new Promise((resolvePromise) => {
|
|
16
|
+
const server = net.createServer();
|
|
17
|
+
server.once('error', (err) => {
|
|
18
|
+
server.close();
|
|
19
|
+
resolvePromise(err.code === 'EADDRINUSE');
|
|
20
|
+
});
|
|
21
|
+
server.once('listening', () => {
|
|
22
|
+
// Wait for close callback before resolving so the OS fully releases the port
|
|
23
|
+
server.close(() => resolvePromise(false));
|
|
24
|
+
});
|
|
25
|
+
server.listen(port, '127.0.0.1');
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Start the Code Insights local dashboard server.
|
|
30
|
+
*
|
|
31
|
+
* Loads server/dist/index.js by file URL rather than package name to avoid a
|
|
32
|
+
* circular workspace dependency (server depends on @code-insights/cli, so CLI
|
|
33
|
+
* cannot list @code-insights/server as a build-time dep). pathToFileURL ensures
|
|
34
|
+
* the import works on Windows where absolute paths like C:\... are not valid
|
|
35
|
+
* ESM import specifiers.
|
|
36
|
+
*/
|
|
37
|
+
export async function dashboardCommand(options) {
|
|
38
|
+
const port = parseInt(options.port, 10);
|
|
39
|
+
if (isNaN(port) || port < 1 || port > 65535) {
|
|
40
|
+
console.error(chalk.red(` Invalid port: ${options.port}`));
|
|
41
|
+
process.exit(1);
|
|
42
|
+
}
|
|
43
|
+
const inUse = await isPortInUse(port);
|
|
44
|
+
if (inUse) {
|
|
45
|
+
console.error(chalk.red(` Port ${port} is already in use.`));
|
|
46
|
+
console.error(chalk.dim(` Try: code-insights dashboard --port <number>`));
|
|
47
|
+
process.exit(1);
|
|
48
|
+
}
|
|
49
|
+
const spinner = ora('Starting Code Insights dashboard...').start();
|
|
50
|
+
try {
|
|
51
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
52
|
+
const __dirname = dirname(__filename);
|
|
53
|
+
// cli/dist/commands/dashboard.js -> workspace root is 3 levels up
|
|
54
|
+
const workspaceRoot = resolve(__dirname, '..', '..', '..');
|
|
55
|
+
// cli/dist/commands/dashboard.js -> CLI package root is 2 levels up
|
|
56
|
+
const cliRoot = resolve(__dirname, '..', '..');
|
|
57
|
+
// Try workspace layout first (dev), then npm-installed layout (production)
|
|
58
|
+
let serverEntryPath = resolve(workspaceRoot, 'server', 'dist', 'index.js');
|
|
59
|
+
let staticDir = resolve(workspaceRoot, 'dashboard', 'dist');
|
|
60
|
+
if (!existsSync(serverEntryPath)) {
|
|
61
|
+
serverEntryPath = resolve(cliRoot, 'server-dist', 'index.js');
|
|
62
|
+
staticDir = resolve(cliRoot, 'dashboard-dist');
|
|
63
|
+
}
|
|
64
|
+
if (!existsSync(serverEntryPath)) {
|
|
65
|
+
spinner.fail('Dashboard server not found.');
|
|
66
|
+
console.error(chalk.dim(' Run from a workspace checkout: pnpm install && pnpm build\n' +
|
|
67
|
+
' Or install globally: npm install -g @code-insights/cli\n' +
|
|
68
|
+
' See: https://github.com/melagiri/code-insights#development'));
|
|
69
|
+
process.exit(1);
|
|
70
|
+
}
|
|
71
|
+
const { startServer } = await import(pathToFileURL(serverEntryPath).href);
|
|
72
|
+
spinner.stop();
|
|
73
|
+
trackEvent('dashboard', true, 'started');
|
|
74
|
+
await startServer({ port, staticDir, openBrowser: options.open });
|
|
75
|
+
}
|
|
76
|
+
catch (err) {
|
|
77
|
+
spinner.fail('Failed to start dashboard server.');
|
|
78
|
+
console.error(chalk.red(err instanceof Error ? err.message : String(err)));
|
|
79
|
+
process.exit(1);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=dashboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/commands/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAOnD;;;;;GAKG;AACH,SAAS,WAAW,CAAC,IAAY;IAC/B,OAAO,IAAI,OAAO,CAAC,CAAC,cAAc,EAAE,EAAE;QACpC,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAA0B,EAAE,EAAE;YAClD,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,cAAc,CAAC,GAAG,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;YAC5B,6EAA6E;YAC7E,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAyB;IAC9D,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAExC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;QAC5C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,IAAI,qBAAqB,CAAC,CAAC,CAAC;QAC9D,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC,CAAC;QAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,qCAAqC,CAAC,CAAC,KAAK,EAAE,CAAC;IAEnE,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QAEtC,kEAAkE;QAClE,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC3D,oEAAoE;QACpE,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAE/C,2EAA2E;QAC3E,IAAI,eAAe,GAAG,OAAO,CAAC,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QAC3E,IAAI,SAAS,GAAG,OAAO,CAAC,aAAa,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QAE5D,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACjC,eAAe,GAAG,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;YAC9D,SAAS,GAAG,OAAO,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YAC5C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CACrB,+DAA+D;gBAC/D,4DAA4D;gBAC5D,8DAA8D,CAC/D,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAKD,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,IAAI,CAAiB,CAAC;QAE1F,OAAO,CAAC,IAAI,EAAE,CAAC;QAEf,UAAU,CAAC,WAAW,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QACzC,MAAM,WAAW,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACpE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QAClD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
package/dist/commands/init.d.ts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
export interface InitOptions {
|
|
2
|
-
fromJson?: string;
|
|
3
|
-
webConfig?: string;
|
|
4
2
|
}
|
|
5
3
|
/**
|
|
6
|
-
* Initialize Code Insights configuration
|
|
4
|
+
* Initialize Code Insights configuration.
|
|
5
|
+
* Sets up sync preferences and initializes the local SQLite database.
|
|
7
6
|
*/
|
|
8
|
-
export declare function initCommand(
|
|
7
|
+
export declare function initCommand(_options?: InitOptions): Promise<void>;
|
|
9
8
|
//# sourceMappingURL=init.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,WAAW;CAE3B;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,QAAQ,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8C3E"}
|