@panguard-ai/panguard-skill-auditor 1.8.14 → 1.8.18
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm-auto-detect.d.ts","sourceRoot":"","sources":["../../src/checks/llm-auto-detect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"llm-auto-detect.d.ts","sourceRoot":"","sources":["../../src/checks/llm-auto-detect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAyBtD;;;;;GAKG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CA2E3E"}
|
|
@@ -11,6 +11,27 @@
|
|
|
11
11
|
*/
|
|
12
12
|
/** Cache Ollama availability to avoid repeated HTTP calls that spam error logs */
|
|
13
13
|
let _ollamaCached;
|
|
14
|
+
/**
|
|
15
|
+
* Ask the local Ollama daemon which models are actually PULLED, and return the
|
|
16
|
+
* first one. The auditor previously hard-coded 'llama3' as the Ollama model and
|
|
17
|
+
* only checked that the Ollama *server* was up (not that the model existed), so
|
|
18
|
+
* any user who pulled a different model (qwen2.5, mistral, phi, …) got a silent
|
|
19
|
+
* 404 "model not found" at analyze time and the AI layer degraded to ATR-only.
|
|
20
|
+
* Returns null if Ollama is unreachable or has no models pulled.
|
|
21
|
+
*/
|
|
22
|
+
async function firstInstalledOllamaModel() {
|
|
23
|
+
const host = (process.env['OLLAMA_HOST'] ?? 'http://127.0.0.1:11434').replace(/\/+$/, '');
|
|
24
|
+
try {
|
|
25
|
+
const res = await fetch(`${host}/api/tags`, { signal: AbortSignal.timeout(2000) });
|
|
26
|
+
if (!res.ok)
|
|
27
|
+
return null;
|
|
28
|
+
const data = (await res.json());
|
|
29
|
+
return data.models?.find((m) => typeof m.name === 'string' && m.name.length > 0)?.name ?? null;
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
14
35
|
/**
|
|
15
36
|
* Attempt to auto-detect and create a SkillAnalysisLLM from available providers.
|
|
16
37
|
*
|
|
@@ -22,10 +43,9 @@ export async function autoDetectSkillLLM() {
|
|
|
22
43
|
const { createLLM } = await import('@panguard-ai/core');
|
|
23
44
|
let provider;
|
|
24
45
|
let apiKey;
|
|
25
|
-
const
|
|
46
|
+
const defaultCloudModels = {
|
|
26
47
|
claude: 'claude-sonnet-4-20250514',
|
|
27
48
|
openai: 'gpt-4o',
|
|
28
|
-
ollama: 'llama3',
|
|
29
49
|
};
|
|
30
50
|
// Check environment variables first (cloud providers), then fall back to Ollama
|
|
31
51
|
if (process.env['ANTHROPIC_API_KEY']) {
|
|
@@ -42,8 +62,24 @@ export async function autoDetectSkillLLM() {
|
|
|
42
62
|
if (_ollamaCached !== undefined)
|
|
43
63
|
return _ollamaCached;
|
|
44
64
|
}
|
|
45
|
-
//
|
|
46
|
-
|
|
65
|
+
// Resolve the model. An explicit PANGUARD_LLM_MODEL always wins. For Ollama,
|
|
66
|
+
// detect a model that is actually PULLED instead of assuming 'llama3' — if
|
|
67
|
+
// none is installed (or Ollama is unreachable), the AI layer is unavailable
|
|
68
|
+
// and we degrade to ATR-only rather than 404 on every analyze() call.
|
|
69
|
+
let model = process.env['PANGUARD_LLM_MODEL'];
|
|
70
|
+
if (!model) {
|
|
71
|
+
if (provider === 'ollama') {
|
|
72
|
+
const detected = await firstInstalledOllamaModel();
|
|
73
|
+
if (!detected) {
|
|
74
|
+
_ollamaCached = null;
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
model = detected;
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
model = defaultCloudModels[provider];
|
|
81
|
+
}
|
|
82
|
+
}
|
|
47
83
|
const llmProvider = createLLM({ provider, model, apiKey, lang: 'en' });
|
|
48
84
|
const available = await llmProvider.isAvailable();
|
|
49
85
|
if (!available) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm-auto-detect.js","sourceRoot":"","sources":["../../src/checks/llm-auto-detect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,kFAAkF;AAClF,IAAI,aAAkD,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,IAAI,CAAC;QACH,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;QAIxD,IAAI,QAAsB,CAAC;QAC3B,IAAI,MAA0B,CAAC;QAE/B,MAAM,
|
|
1
|
+
{"version":3,"file":"llm-auto-detect.js","sourceRoot":"","sources":["../../src/checks/llm-auto-detect.ts"],"names":[],"mappings":"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"}
|