@code-insights/cli 3.5.1 → 3.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/dashboard-dist/assets/{index-CyMrlee5.js → index-C1mDRV7y.js} +166 -151
- package/dashboard-dist/assets/index-_SWpRg6C.css +1 -0
- package/dashboard-dist/index.html +2 -2
- package/dist/db/migrate.d.ts +1 -0
- package/dist/db/migrate.d.ts.map +1 -1
- package/dist/db/migrate.js +10 -3
- package/dist/db/migrate.js.map +1 -1
- package/dist/db/schema.d.ts +2 -2
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +2 -1
- package/dist/db/schema.js.map +1 -1
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/server-dist/export/agent-rules.d.ts +3 -0
- package/server-dist/export/agent-rules.d.ts.map +1 -0
- package/server-dist/export/agent-rules.js +153 -0
- package/server-dist/export/agent-rules.js.map +1 -0
- package/server-dist/export/knowledge-base.d.ts +33 -0
- package/server-dist/export/knowledge-base.d.ts.map +1 -0
- package/server-dist/export/knowledge-base.js +234 -0
- package/server-dist/export/knowledge-base.js.map +1 -0
- package/server-dist/llm/export-prompts.d.ts +57 -0
- package/server-dist/llm/export-prompts.d.ts.map +1 -0
- package/server-dist/llm/export-prompts.js +225 -0
- package/server-dist/llm/export-prompts.js.map +1 -0
- package/server-dist/routes/export.d.ts.map +1 -1
- package/server-dist/routes/export.js +305 -18
- package/server-dist/routes/export.js.map +1 -1
- package/dashboard-dist/assets/index-CFvScypR.css +0 -1
- package/dashboard-dist/dist/assets/index-CFvScypR.css +0 -1
- package/dashboard-dist/dist/assets/index-CyMrlee5.js +0 -592
- package/dashboard-dist/dist/favicon.svg +0 -18
- package/dashboard-dist/dist/index.html +0 -33
- package/server-dist/dist/index.d.ts +0 -20
- package/server-dist/dist/index.d.ts.map +0 -1
- package/server-dist/dist/index.js +0 -109
- package/server-dist/dist/index.js.map +0 -1
- package/server-dist/dist/llm/analysis.d.ts +0 -84
- package/server-dist/dist/llm/analysis.d.ts.map +0 -1
- package/server-dist/dist/llm/analysis.js +0 -550
- package/server-dist/dist/llm/analysis.js.map +0 -1
- package/server-dist/dist/llm/client.d.ts +0 -27
- package/server-dist/dist/llm/client.d.ts.map +0 -1
- package/server-dist/dist/llm/client.js +0 -71
- package/server-dist/dist/llm/client.js.map +0 -1
- package/server-dist/dist/llm/index.d.ts +0 -7
- package/server-dist/dist/llm/index.d.ts.map +0 -1
- package/server-dist/dist/llm/index.js +0 -5
- package/server-dist/dist/llm/index.js.map +0 -1
- package/server-dist/dist/llm/prompts.d.ts +0 -109
- package/server-dist/dist/llm/prompts.d.ts.map +0 -1
- package/server-dist/dist/llm/prompts.js +0 -381
- package/server-dist/dist/llm/prompts.js.map +0 -1
- package/server-dist/dist/llm/providers/anthropic.d.ts +0 -3
- package/server-dist/dist/llm/providers/anthropic.d.ts.map +0 -1
- package/server-dist/dist/llm/providers/anthropic.js +0 -45
- package/server-dist/dist/llm/providers/anthropic.js.map +0 -1
- package/server-dist/dist/llm/providers/gemini.d.ts +0 -3
- package/server-dist/dist/llm/providers/gemini.d.ts.map +0 -1
- package/server-dist/dist/llm/providers/gemini.js +0 -51
- package/server-dist/dist/llm/providers/gemini.js.map +0 -1
- package/server-dist/dist/llm/providers/ollama.d.ts +0 -12
- package/server-dist/dist/llm/providers/ollama.d.ts.map +0 -1
- package/server-dist/dist/llm/providers/ollama.js +0 -61
- package/server-dist/dist/llm/providers/ollama.js.map +0 -1
- package/server-dist/dist/llm/providers/openai.d.ts +0 -3
- package/server-dist/dist/llm/providers/openai.d.ts.map +0 -1
- package/server-dist/dist/llm/providers/openai.js +0 -40
- package/server-dist/dist/llm/providers/openai.js.map +0 -1
- package/server-dist/dist/llm/types.d.ts +0 -22
- package/server-dist/dist/llm/types.d.ts.map +0 -1
- package/server-dist/dist/llm/types.js +0 -5
- package/server-dist/dist/llm/types.js.map +0 -1
- package/server-dist/dist/routes/analysis.d.ts +0 -4
- package/server-dist/dist/routes/analysis.d.ts.map +0 -1
- package/server-dist/dist/routes/analysis.js +0 -370
- package/server-dist/dist/routes/analysis.js.map +0 -1
- package/server-dist/dist/routes/analytics.d.ts +0 -4
- package/server-dist/dist/routes/analytics.d.ts.map +0 -1
- package/server-dist/dist/routes/analytics.js +0 -57
- package/server-dist/dist/routes/analytics.js.map +0 -1
- package/server-dist/dist/routes/config.d.ts +0 -4
- package/server-dist/dist/routes/config.d.ts.map +0 -1
- package/server-dist/dist/routes/config.js +0 -108
- package/server-dist/dist/routes/config.js.map +0 -1
- package/server-dist/dist/routes/export.d.ts +0 -4
- package/server-dist/dist/routes/export.d.ts.map +0 -1
- package/server-dist/dist/routes/export.js +0 -52
- package/server-dist/dist/routes/export.js.map +0 -1
- package/server-dist/dist/routes/insights.d.ts +0 -4
- package/server-dist/dist/routes/insights.d.ts.map +0 -1
- package/server-dist/dist/routes/insights.js +0 -80
- package/server-dist/dist/routes/insights.js.map +0 -1
- package/server-dist/dist/routes/messages.d.ts +0 -4
- package/server-dist/dist/routes/messages.d.ts.map +0 -1
- package/server-dist/dist/routes/messages.js +0 -19
- package/server-dist/dist/routes/messages.js.map +0 -1
- package/server-dist/dist/routes/projects.d.ts +0 -4
- package/server-dist/dist/routes/projects.d.ts.map +0 -1
- package/server-dist/dist/routes/projects.js +0 -32
- package/server-dist/dist/routes/projects.js.map +0 -1
- package/server-dist/dist/routes/sessions.d.ts +0 -4
- package/server-dist/dist/routes/sessions.d.ts.map +0 -1
- package/server-dist/dist/routes/sessions.js +0 -65
- package/server-dist/dist/routes/sessions.js.map +0 -1
- package/server-dist/dist/routes/telemetry.d.ts +0 -4
- package/server-dist/dist/routes/telemetry.d.ts.map +0 -1
- package/server-dist/dist/routes/telemetry.js +0 -21
- package/server-dist/dist/routes/telemetry.js.map +0 -1
- package/server-dist/dist/utils.d.ts +0 -6
- package/server-dist/dist/utils.d.ts.map +0 -1
- package/server-dist/dist/utils.js +0 -9
- package/server-dist/dist/utils.js.map +0 -1
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
// Anthropic provider implementation (server-side, no browser dependencies)
|
|
2
|
-
// Note: 'anthropic-dangerous-direct-browser-access' header is intentionally omitted here —
|
|
3
|
-
// this runs server-side where direct API access is safe and expected.
|
|
4
|
-
export function createAnthropicClient(apiKey, model) {
|
|
5
|
-
return {
|
|
6
|
-
provider: 'anthropic',
|
|
7
|
-
model,
|
|
8
|
-
async chat(messages, options) {
|
|
9
|
-
// Extract system message if present
|
|
10
|
-
const systemMessage = messages.find(m => m.role === 'system');
|
|
11
|
-
const chatMessages = messages.filter(m => m.role !== 'system');
|
|
12
|
-
const response = await fetch('https://api.anthropic.com/v1/messages', {
|
|
13
|
-
method: 'POST',
|
|
14
|
-
headers: {
|
|
15
|
-
'Content-Type': 'application/json',
|
|
16
|
-
'x-api-key': apiKey,
|
|
17
|
-
'anthropic-version': '2023-06-01',
|
|
18
|
-
},
|
|
19
|
-
signal: options?.signal,
|
|
20
|
-
body: JSON.stringify({
|
|
21
|
-
model,
|
|
22
|
-
max_tokens: 8192,
|
|
23
|
-
system: systemMessage?.content,
|
|
24
|
-
messages: chatMessages.map(m => ({ role: m.role, content: m.content })),
|
|
25
|
-
}),
|
|
26
|
-
});
|
|
27
|
-
if (!response.ok) {
|
|
28
|
-
const error = await response.json().catch(() => ({}));
|
|
29
|
-
throw new Error(error.error?.message || `Anthropic API error: ${response.status}`);
|
|
30
|
-
}
|
|
31
|
-
const data = await response.json();
|
|
32
|
-
return {
|
|
33
|
-
content: data.content[0]?.text || '',
|
|
34
|
-
usage: data.usage ? {
|
|
35
|
-
inputTokens: data.usage.input_tokens,
|
|
36
|
-
outputTokens: data.usage.output_tokens,
|
|
37
|
-
} : undefined,
|
|
38
|
-
};
|
|
39
|
-
},
|
|
40
|
-
estimateTokens(text) {
|
|
41
|
-
return Math.ceil(text.length / 4);
|
|
42
|
-
},
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=anthropic.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../../src/llm/providers/anthropic.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,2FAA2F;AAC3F,sEAAsE;AAItE,MAAM,UAAU,qBAAqB,CAAC,MAAc,EAAE,KAAa;IACjE,OAAO;QACL,QAAQ,EAAE,WAAW;QACrB,KAAK;QAEL,KAAK,CAAC,IAAI,CAAC,QAAsB,EAAE,OAAqB;YACtD,oCAAoC;YACpC,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;YAC9D,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;YAE/D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,uCAAuC,EAAE;gBACpE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,WAAW,EAAE,MAAM;oBACnB,mBAAmB,EAAE,YAAY;iBAClC;gBACD,MAAM,EAAE,OAAO,EAAE,MAAM;gBACvB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,KAAK;oBACL,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,aAAa,EAAE,OAAO;oBAC9B,QAAQ,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;iBACxE,CAAC;aACH,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAqC,CAAC;gBAC1F,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,wBAAwB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YACrF,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAG/B,CAAC;YAEF,OAAO;gBACL,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE;gBACpC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;oBAClB,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY;oBACpC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa;iBACvC,CAAC,CAAC,CAAC,SAAS;aACd,CAAC;QACJ,CAAC;QAED,cAAc,CAAC,IAAY;YACzB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACpC,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../../src/llm/providers/gemini.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAwC,MAAM,aAAa,CAAC;AAEnF,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CA+D3E"}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
// Gemini provider implementation (server-side, no browser dependencies)
|
|
2
|
-
export function createGeminiClient(apiKey, model) {
|
|
3
|
-
return {
|
|
4
|
-
provider: 'gemini',
|
|
5
|
-
model,
|
|
6
|
-
async chat(messages, options) {
|
|
7
|
-
const systemMessage = messages.find(m => m.role === 'system');
|
|
8
|
-
const chatMessages = messages.filter(m => m.role !== 'system');
|
|
9
|
-
const contents = chatMessages.map(m => ({
|
|
10
|
-
role: m.role === 'assistant' ? 'model' : 'user',
|
|
11
|
-
parts: [{ text: m.content }],
|
|
12
|
-
}));
|
|
13
|
-
const body = {
|
|
14
|
-
contents,
|
|
15
|
-
generationConfig: {
|
|
16
|
-
temperature: 0.7,
|
|
17
|
-
maxOutputTokens: 8192,
|
|
18
|
-
},
|
|
19
|
-
};
|
|
20
|
-
if (systemMessage) {
|
|
21
|
-
body.systemInstruction = {
|
|
22
|
-
parts: [{ text: systemMessage.content }],
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
// Gemini REST API requires the API key as a query parameter (not a header).
|
|
26
|
-
// This is Google's documented authentication pattern for the Generative Language API.
|
|
27
|
-
const response = await fetch(`https://generativelanguage.googleapis.com/v1beta/models/${model}:generateContent?key=${apiKey}`, {
|
|
28
|
-
method: 'POST',
|
|
29
|
-
headers: { 'Content-Type': 'application/json' },
|
|
30
|
-
signal: options?.signal,
|
|
31
|
-
body: JSON.stringify(body),
|
|
32
|
-
});
|
|
33
|
-
if (!response.ok) {
|
|
34
|
-
const error = await response.json().catch(() => ({}));
|
|
35
|
-
throw new Error(error.error?.message || `Gemini API error: ${response.status}`);
|
|
36
|
-
}
|
|
37
|
-
const data = await response.json();
|
|
38
|
-
return {
|
|
39
|
-
content: data.candidates?.[0]?.content?.parts?.[0]?.text || '',
|
|
40
|
-
usage: data.usageMetadata ? {
|
|
41
|
-
inputTokens: data.usageMetadata.promptTokenCount,
|
|
42
|
-
outputTokens: data.usageMetadata.candidatesTokenCount,
|
|
43
|
-
} : undefined,
|
|
44
|
-
};
|
|
45
|
-
},
|
|
46
|
-
estimateTokens(text) {
|
|
47
|
-
return Math.ceil(text.length / 4);
|
|
48
|
-
},
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
//# sourceMappingURL=gemini.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../src/llm/providers/gemini.ts"],"names":[],"mappings":"AAAA,wEAAwE;AAIxE,MAAM,UAAU,kBAAkB,CAAC,MAAc,EAAE,KAAa;IAC9D,OAAO;QACL,QAAQ,EAAE,QAAQ;QAClB,KAAK;QAEL,KAAK,CAAC,IAAI,CAAC,QAAsB,EAAE,OAAqB;YACtD,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;YAC9D,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;YAE/D,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACtC,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;gBAC/C,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;aAC7B,CAAC,CAAC,CAAC;YAEJ,MAAM,IAAI,GAA4B;gBACpC,QAAQ;gBACR,gBAAgB,EAAE;oBAChB,WAAW,EAAE,GAAG;oBAChB,eAAe,EAAE,IAAI;iBACtB;aACF,CAAC;YAEF,IAAI,aAAa,EAAE,CAAC;gBAClB,IAAI,CAAC,iBAAiB,GAAG;oBACvB,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,OAAO,EAAE,CAAC;iBACzC,CAAC;YACJ,CAAC;YAED,4EAA4E;YAC5E,sFAAsF;YACtF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC1B,2DAA2D,KAAK,wBAAwB,MAAM,EAAE,EAChG;gBACE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,MAAM,EAAE,OAAO,EAAE,MAAM;gBACvB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;aAC3B,CACF,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAqC,CAAC;gBAC1F,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,qBAAqB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YAClF,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAG/B,CAAC;YAEF,OAAO;gBACL,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE;gBAC9D,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;oBAC1B,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,gBAAgB;oBAChD,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,oBAAoB;iBACtD,CAAC,CAAC,CAAC,SAAS;aACd,CAAC;QACJ,CAAC;QAED,cAAc,CAAC,IAAY;YACzB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACpC,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { LLMClient } from '../types.js';
|
|
2
|
-
export declare function createOllamaClient(model: string, baseUrl?: string): LLMClient;
|
|
3
|
-
/**
|
|
4
|
-
* Discover installed Ollama models by querying the local API.
|
|
5
|
-
* Returns empty array if Ollama is not running or unreachable.
|
|
6
|
-
*/
|
|
7
|
-
export declare function discoverOllamaModels(baseUrl?: string): Promise<Array<{
|
|
8
|
-
name: string;
|
|
9
|
-
size: number;
|
|
10
|
-
modifiedAt: string;
|
|
11
|
-
}>>;
|
|
12
|
-
//# sourceMappingURL=ollama.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../../../src/llm/providers/ollama.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAwC,MAAM,aAAa,CAAC;AAInF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CA4C7E;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAgBpE"}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
// Ollama provider implementation (local models, no API key required)
|
|
2
|
-
const DEFAULT_OLLAMA_URL = 'http://localhost:11434';
|
|
3
|
-
export function createOllamaClient(model, baseUrl) {
|
|
4
|
-
const url = baseUrl || DEFAULT_OLLAMA_URL;
|
|
5
|
-
return {
|
|
6
|
-
provider: 'ollama',
|
|
7
|
-
model,
|
|
8
|
-
async chat(messages, options) {
|
|
9
|
-
const response = await fetch(`${url}/api/chat`, {
|
|
10
|
-
method: 'POST',
|
|
11
|
-
headers: { 'Content-Type': 'application/json' },
|
|
12
|
-
signal: options?.signal,
|
|
13
|
-
body: JSON.stringify({
|
|
14
|
-
model,
|
|
15
|
-
messages: messages.map(m => ({ role: m.role, content: m.content })),
|
|
16
|
-
stream: false,
|
|
17
|
-
options: { temperature: 0.7 },
|
|
18
|
-
}),
|
|
19
|
-
});
|
|
20
|
-
if (!response.ok) {
|
|
21
|
-
const error = await response.text().catch(() => '');
|
|
22
|
-
throw new Error(`Ollama API error: ${response.status}${error ? ` - ${error}` : ''}`);
|
|
23
|
-
}
|
|
24
|
-
const data = await response.json();
|
|
25
|
-
return {
|
|
26
|
-
content: data.message?.content || '',
|
|
27
|
-
usage: {
|
|
28
|
-
inputTokens: data.prompt_eval_count || 0,
|
|
29
|
-
outputTokens: data.eval_count || 0,
|
|
30
|
-
},
|
|
31
|
-
};
|
|
32
|
-
},
|
|
33
|
-
estimateTokens(text) {
|
|
34
|
-
return Math.ceil(text.length / 4);
|
|
35
|
-
},
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Discover installed Ollama models by querying the local API.
|
|
40
|
-
* Returns empty array if Ollama is not running or unreachable.
|
|
41
|
-
*/
|
|
42
|
-
export async function discoverOllamaModels(baseUrl) {
|
|
43
|
-
const url = baseUrl || DEFAULT_OLLAMA_URL;
|
|
44
|
-
try {
|
|
45
|
-
const response = await fetch(`${url}/api/tags`, {
|
|
46
|
-
signal: AbortSignal.timeout(3000),
|
|
47
|
-
});
|
|
48
|
-
if (!response.ok)
|
|
49
|
-
return [];
|
|
50
|
-
const data = await response.json();
|
|
51
|
-
return (data.models || []).map(m => ({
|
|
52
|
-
name: m.name,
|
|
53
|
-
size: m.size,
|
|
54
|
-
modifiedAt: m.modified_at,
|
|
55
|
-
}));
|
|
56
|
-
}
|
|
57
|
-
catch {
|
|
58
|
-
return [];
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
//# sourceMappingURL=ollama.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ollama.js","sourceRoot":"","sources":["../../../src/llm/providers/ollama.ts"],"names":[],"mappings":"AAAA,qEAAqE;AAIrE,MAAM,kBAAkB,GAAG,wBAAwB,CAAC;AAEpD,MAAM,UAAU,kBAAkB,CAAC,KAAa,EAAE,OAAgB;IAChE,MAAM,GAAG,GAAG,OAAO,IAAI,kBAAkB,CAAC;IAE1C,OAAO;QACL,QAAQ,EAAE,QAAQ;QAClB,KAAK;QAEL,KAAK,CAAC,IAAI,CAAC,QAAsB,EAAE,OAAqB;YACtD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,GAAG,WAAW,EAAE;gBAC9C,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,MAAM,EAAE,OAAO,EAAE,MAAM;gBACvB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,KAAK;oBACL,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;oBACnE,MAAM,EAAE,KAAK;oBACb,OAAO,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE;iBAC9B,CAAC;aACH,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;gBACpD,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACvF,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAI/B,CAAC;YAEF,OAAO;gBACL,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE;gBACpC,KAAK,EAAE;oBACL,WAAW,EAAE,IAAI,CAAC,iBAAiB,IAAI,CAAC;oBACxC,YAAY,EAAE,IAAI,CAAC,UAAU,IAAI,CAAC;iBACnC;aACF,CAAC;QACJ,CAAC;QAED,cAAc,CAAC,IAAY;YACzB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACpC,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAAgB;IAEhB,MAAM,GAAG,GAAG,OAAO,IAAI,kBAAkB,CAAC;IAC1C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,GAAG,WAAW,EAAE;YAC9C,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;SAClC,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,OAAO,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA6E,CAAC;QAC9G,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACnC,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,UAAU,EAAE,CAAC,CAAC,WAAW;SAC1B,CAAC,CAAC,CAAC;IACN,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../../src/llm/providers/openai.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAwC,MAAM,aAAa,CAAC;AAEnF,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CA6C3E"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
// OpenAI provider implementation (server-side, no browser dependencies)
|
|
2
|
-
export function createOpenAIClient(apiKey, model) {
|
|
3
|
-
return {
|
|
4
|
-
provider: 'openai',
|
|
5
|
-
model,
|
|
6
|
-
async chat(messages, options) {
|
|
7
|
-
const response = await fetch('https://api.openai.com/v1/chat/completions', {
|
|
8
|
-
method: 'POST',
|
|
9
|
-
headers: {
|
|
10
|
-
'Content-Type': 'application/json',
|
|
11
|
-
'Authorization': `Bearer ${apiKey}`,
|
|
12
|
-
},
|
|
13
|
-
signal: options?.signal,
|
|
14
|
-
body: JSON.stringify({
|
|
15
|
-
model,
|
|
16
|
-
messages: messages.map(m => ({ role: m.role, content: m.content })),
|
|
17
|
-
temperature: 0.7,
|
|
18
|
-
max_tokens: 8192,
|
|
19
|
-
}),
|
|
20
|
-
});
|
|
21
|
-
if (!response.ok) {
|
|
22
|
-
const error = await response.json().catch(() => ({}));
|
|
23
|
-
throw new Error(error.error?.message || `OpenAI API error: ${response.status}`);
|
|
24
|
-
}
|
|
25
|
-
const data = await response.json();
|
|
26
|
-
return {
|
|
27
|
-
content: data.choices[0]?.message?.content || '',
|
|
28
|
-
usage: data.usage ? {
|
|
29
|
-
inputTokens: data.usage.prompt_tokens,
|
|
30
|
-
outputTokens: data.usage.completion_tokens,
|
|
31
|
-
} : undefined,
|
|
32
|
-
};
|
|
33
|
-
},
|
|
34
|
-
estimateTokens(text) {
|
|
35
|
-
// Rough estimate: ~4 characters per token for English
|
|
36
|
-
return Math.ceil(text.length / 4);
|
|
37
|
-
},
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
//# sourceMappingURL=openai.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../src/llm/providers/openai.ts"],"names":[],"mappings":"AAAA,wEAAwE;AAIxE,MAAM,UAAU,kBAAkB,CAAC,MAAc,EAAE,KAAa;IAC9D,OAAO;QACL,QAAQ,EAAE,QAAQ;QAClB,KAAK;QAEL,KAAK,CAAC,IAAI,CAAC,QAAsB,EAAE,OAAqB;YACtD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,4CAA4C,EAAE;gBACzE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,eAAe,EAAE,UAAU,MAAM,EAAE;iBACpC;gBACD,MAAM,EAAE,OAAO,EAAE,MAAM;gBACvB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,KAAK;oBACL,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;oBACnE,WAAW,EAAE,GAAG;oBAChB,UAAU,EAAE,IAAI;iBACjB,CAAC;aACH,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAqC,CAAC;gBAC1F,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,qBAAqB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YAClF,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAG/B,CAAC;YAEF,OAAO;gBACL,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE;gBAChD,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;oBAClB,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa;oBACrC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB;iBAC3C,CAAC,CAAC,CAAC,SAAS;aACd,CAAC;QACJ,CAAC;QAED,cAAc,CAAC,IAAY;YACzB,sDAAsD;YACtD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACpC,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
export type { LLMProvider, LLMProviderConfig, ProviderInfo, ProviderModelOption } from '@code-insights/cli/types';
|
|
2
|
-
export interface LLMMessage {
|
|
3
|
-
role: 'system' | 'user' | 'assistant';
|
|
4
|
-
content: string;
|
|
5
|
-
}
|
|
6
|
-
export interface LLMResponse {
|
|
7
|
-
content: string;
|
|
8
|
-
usage?: {
|
|
9
|
-
inputTokens: number;
|
|
10
|
-
outputTokens: number;
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
export interface ChatOptions {
|
|
14
|
-
signal?: AbortSignal;
|
|
15
|
-
}
|
|
16
|
-
export interface LLMClient {
|
|
17
|
-
chat(messages: LLMMessage[], options?: ChatOptions): Promise<LLMResponse>;
|
|
18
|
-
estimateTokens(text: string): number;
|
|
19
|
-
readonly provider: string;
|
|
20
|
-
readonly model: string;
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/llm/types.ts"],"names":[],"mappings":"AAIA,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAElH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC1E,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
// LLM abstraction types for the server-side LLM engine.
|
|
2
|
-
// Provider metadata (PROVIDERS constant) lives in cli/src/constants/llm-providers.ts.
|
|
3
|
-
// LLMProvider, LLMProviderConfig, ProviderInfo are imported from CLI types (single source of truth).
|
|
4
|
-
export {};
|
|
5
|
-
//# sourceMappingURL=types.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/llm/types.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,sFAAsF;AACtF,qGAAqG"}
|
|
@@ -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;AAS5B,QAAA,MAAM,GAAG,4EAAa,CAAC;AAmZvB,eAAe,GAAG,CAAC"}
|