@panguard-ai/panguard 1.6.1 → 1.7.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 +92 -0
- package/dist/cli/commands/audit.d.ts.map +1 -1
- package/dist/cli/commands/audit.js +56 -6
- package/dist/cli/commands/audit.js.map +1 -1
- package/dist/cli/commands/config.d.ts +6 -1
- package/dist/cli/commands/config.d.ts.map +1 -1
- package/dist/cli/commands/config.js +39 -23
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +63 -20
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/guard.d.ts.map +1 -1
- package/dist/cli/commands/guard.js +220 -70
- package/dist/cli/commands/guard.js.map +1 -1
- package/dist/cli/commands/hook.d.ts +115 -0
- package/dist/cli/commands/hook.d.ts.map +1 -0
- package/dist/cli/commands/hook.js +767 -0
- package/dist/cli/commands/hook.js.map +1 -0
- package/dist/cli/commands/persist.d.ts +32 -0
- package/dist/cli/commands/persist.d.ts.map +1 -0
- package/dist/cli/commands/persist.js +104 -0
- package/dist/cli/commands/persist.js.map +1 -0
- package/dist/cli/commands/scan.d.ts.map +1 -1
- package/dist/cli/commands/scan.js +75 -21
- package/dist/cli/commands/scan.js.map +1 -1
- package/dist/cli/commands/setup.d.ts.map +1 -1
- package/dist/cli/commands/setup.js +110 -37
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +66 -26
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/up.d.ts.map +1 -1
- package/dist/cli/commands/up.js +257 -43
- package/dist/cli/commands/up.js.map +1 -1
- package/dist/cli/consent.d.ts +26 -6
- package/dist/cli/consent.d.ts.map +1 -1
- package/dist/cli/consent.js +47 -18
- package/dist/cli/consent.js.map +1 -1
- package/dist/cli/credentials.d.ts +11 -1
- package/dist/cli/credentials.d.ts.map +1 -1
- package/dist/cli/credentials.js +6 -1
- package/dist/cli/credentials.js.map +1 -1
- package/dist/cli/dashboard-url.d.ts +31 -0
- package/dist/cli/dashboard-url.d.ts.map +1 -0
- package/dist/cli/dashboard-url.js +66 -0
- package/dist/cli/dashboard-url.js.map +1 -0
- package/dist/cli/first-run.d.ts +35 -0
- package/dist/cli/first-run.d.ts.map +1 -0
- package/dist/cli/first-run.js +59 -0
- package/dist/cli/first-run.js.map +1 -0
- package/dist/cli/guard-config.d.ts.map +1 -1
- package/dist/cli/guard-config.js +15 -3
- package/dist/cli/guard-config.js.map +1 -1
- package/dist/cli/index.js +32 -11
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/interactive/actions/setup.d.ts.map +1 -1
- package/dist/cli/interactive/actions/setup.js +2 -10
- package/dist/cli/interactive/actions/setup.js.map +1 -1
- package/dist/cli/interactive/menu-defs.js +6 -6
- package/dist/cli/interactive/render.js +1 -1
- package/dist/cli/interactive/render.js.map +1 -1
- package/dist/cli/workspace-sync.d.ts +0 -1
- package/dist/cli/workspace-sync.d.ts.map +1 -1
- package/dist/cli/workspace-sync.js +3 -1
- package/dist/cli/workspace-sync.js.map +1 -1
- package/dist/init/wizard-runner.d.ts.map +1 -1
- package/dist/init/wizard-runner.js +0 -8
- package/dist/init/wizard-runner.js.map +1 -1
- package/package.json +15 -14
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,98 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to Panguard AI will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [1.7.0] - 2026-06-20
|
|
6
|
+
|
|
7
|
+
GA hardening of the free Community product — the full path from website to
|
|
8
|
+
install to activation to real protection, with a security review of the install
|
|
9
|
+
package itself. Two adversarial audits (security + product readiness) drove this
|
|
10
|
+
release; the items below are the confirmed, fixed, and verified findings.
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **Guard dashboard 1.7.** New Coverage, Runtime, and Threat Cloud tabs;
|
|
15
|
+
one-click threat actions (quarantine / whitelist / restore); an honest
|
|
16
|
+
three-state Guard mode (Learning / Report-only / Protection); a
|
|
17
|
+
collective-defense opt-in control (off by default); and a redesigned Alert
|
|
18
|
+
Channels page — zero-config by default, with each optional channel shown as a
|
|
19
|
+
copy-paste config line (secrets go in the file, never the dashboard).
|
|
20
|
+
- **`pga guard ai`** (alias of `setup-ai`) connects the optional semantic layer
|
|
21
|
+
(Layer C). It auto-detects a local Ollama runtime (free, private, nothing
|
|
22
|
+
leaves the machine) or persists a cloud key encrypted at rest
|
|
23
|
+
(`~/.panguard-guard` is unaffected; the key lives AES-256-GCM-encrypted in
|
|
24
|
+
`~/.panguard/llm.enc`, `0600`) so the reboot-surviving daemon can actually read
|
|
25
|
+
it — a shell environment variable could not. `pga guard ai --remove` turns it
|
|
26
|
+
off. Layer C is advisory and can never auto-block.
|
|
27
|
+
- **Multi-platform PreToolUse hooks** across seven agent platforms, and
|
|
28
|
+
`pga hook uninstall --all` / `--platform` to remove them.
|
|
29
|
+
|
|
30
|
+
### Fixed
|
|
31
|
+
|
|
32
|
+
- **`pga scan --all` reported known-malicious skills as clean.** The batch path
|
|
33
|
+
read a non-existent `findings` field from the ATR JSON, so every skill counted
|
|
34
|
+
clean. It now parses the real schema (`threats_detected` / `results[].matches`)
|
|
35
|
+
— a malicious skill is flagged.
|
|
36
|
+
- **`pga status` disagreed with `pga guard status`.** It read only the legacy
|
|
37
|
+
master config and printed "Config: Not initialized" while the daemon was
|
|
38
|
+
running. It now consults the canonical Guard config + live engine and agrees.
|
|
39
|
+
- **`pga doctor`** read the wrong config path (reporting a fresh install as
|
|
40
|
+
broken) and claimed Threat Cloud shared findings "by default"; it now reads the
|
|
41
|
+
canonical config and shows Threat Cloud as opt-in / off.
|
|
42
|
+
- **`pga -v`** printed nothing useful and fell through to the first-run setup
|
|
43
|
+
wizard (which wrote config files); it now prints the version and exits.
|
|
44
|
+
- **Dashboard mode + collective-defense toggles** reported success but reverted,
|
|
45
|
+
because the daemon never reloaded its config. They now apply live (the engine
|
|
46
|
+
re-arms for the new mode) and two saves no longer clobber each other.
|
|
47
|
+
- **`pga audit skill <missing-path>`** returned a green PASS; it now errors. The
|
|
48
|
+
default (cloud) audit no longer hangs ~120s after printing its report.
|
|
49
|
+
- **Honest posture end to end.** Zero loaded rules now shows DEGRADED instead of
|
|
50
|
+
a green "PROTECTED" / all-clear; Report-only never displays PROTECTED; an
|
|
51
|
+
unauthenticated dashboard shows an explicit "run `pga up`" screen instead of a
|
|
52
|
+
static green "Active" badge.
|
|
53
|
+
- **English-only CLI/daemon output** (first-run consent prompt, interactive menu
|
|
54
|
+
footer, config-load logs) and a renumbered interactive menu (no dead key).
|
|
55
|
+
- **Secondary CLIs.** `threat-cloud --version`/`--help` no longer boot a full
|
|
56
|
+
HTTP server (now gated behind `threat-cloud serve`); `panguard-skill-audit`
|
|
57
|
+
with no args prints help instead of silently scanning the current directory and
|
|
58
|
+
dumping structured logs.
|
|
59
|
+
- **Cross-platform.** The unscoped `panguard` redirect no longer crashes on
|
|
60
|
+
Windows (`pathToFileURL`); Linux persistence uses rootless `systemctl --user`.
|
|
61
|
+
|
|
62
|
+
### Security
|
|
63
|
+
|
|
64
|
+
- **`pga scan` no longer uploads to Threat Cloud without consent.** The bundled
|
|
65
|
+
scanner reports anonymously by default; both `pga scan` paths now force
|
|
66
|
+
`--no-report` and strip any inherited `TC_API_KEY` unless the user has
|
|
67
|
+
explicitly opted in (consent stays default-off). A user-facing `--no-report`
|
|
68
|
+
flag was added. Verified: a non-consented scan makes zero network calls.
|
|
69
|
+
- **Install package hardened (curl / PowerShell / Homebrew).** The installers now
|
|
70
|
+
activate through the single hardened `pga up` path — real rule/threat counts,
|
|
71
|
+
reboot-survival, and an authenticated dashboard URL — and the hardcoded fake
|
|
72
|
+
"61 rules / learning mode day 1/7" lines were removed. Prebuilt-binary checksum
|
|
73
|
+
verification is now fail-closed: an unverifiable binary is never installed (it
|
|
74
|
+
falls back to a local source build). The served and source installer copies are
|
|
75
|
+
kept byte-identical.
|
|
76
|
+
- **Corrupt config fails safe.** A malformed `config.json` no longer silently
|
|
77
|
+
restores `protection` mode (discarding the user's telemetry opt-out); it falls
|
|
78
|
+
back to the most conservative posture (report-only, telemetry + uploads off)
|
|
79
|
+
with a prominent warning, and preserves the corrupt file.
|
|
80
|
+
- **Cloud rule sync fails closed** (an unsigned/unverifiable update loads zero
|
|
81
|
+
rules with a loud warning, never silently); community blacklist revocation now
|
|
82
|
+
requires a confidence threshold, resisting MITM/poisoning.
|
|
83
|
+
- **Outbound SSRF guards.** A shared validator (https-only; blocks
|
|
84
|
+
private / reserved / loopback-metadata / IPv4-mapped-IPv6 addresses) now gates
|
|
85
|
+
Threat Cloud provisioning, telemetry, notification webhooks, the dashboard
|
|
86
|
+
endpoint, and the trap uploader; outbound `fetch` uses `redirect: 'error'`.
|
|
87
|
+
- **Hardening.** ReDoS checks on engine + LLM-generated regex; Slack/Discord
|
|
88
|
+
webhook URLs redacted from config dumps and `/api/config`; removed argv secret
|
|
89
|
+
flags (`threat-cloud` admin/Anthropic keys, `panguard-chat` Telegram token);
|
|
90
|
+
config files written `0600`; `panguard-chat` config dump redacted; the PreToolUse
|
|
91
|
+
hook fails open when `pga` is missing so an orphaned hook can't brick an agent.
|
|
92
|
+
- **Dependencies.** `ws` → `^8.21.0` (GHSA-96hv-2xvq-fx4p), `hono` override
|
|
93
|
+
→ `>=4.12.25`. A LICENSE file now ships in every published package.
|
|
94
|
+
- **Claims.** Trade-libel cleanup, defensible benchmark numbers, and rule counts
|
|
95
|
+
realigned to the bundled ATR ruleset (650+, sourced dynamically).
|
|
96
|
+
|
|
5
97
|
## [1.6.1] - 2026-06-15
|
|
6
98
|
|
|
7
99
|
### Fixed
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2IpC,wBAAgB,YAAY,IAAI,OAAO,
|
|
1
|
+
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2IpC,wBAAgB,YAAY,IAAI,OAAO,CA0iBtC"}
|
|
@@ -130,6 +130,25 @@ export function auditCommand() {
|
|
|
130
130
|
else if (!options.json) {
|
|
131
131
|
setLogLevel('silent');
|
|
132
132
|
}
|
|
133
|
+
// Collective-defense upload is OPT-IN, default OFF. `--no-cloud` is a hard
|
|
134
|
+
// off-switch, but even with cloud not disabled we only upload when the user
|
|
135
|
+
// has EXPLICITLY opted in (threatCloudUploadEnabled === true in the guard
|
|
136
|
+
// config). Absent/unset config or any read error => OFF (no upload).
|
|
137
|
+
const cloudUploadAllowed = await (async () => {
|
|
138
|
+
if (!options.cloud)
|
|
139
|
+
return false;
|
|
140
|
+
try {
|
|
141
|
+
const { existsSync, readFileSync } = await import('node:fs');
|
|
142
|
+
const cfgPath = path.join(process.env['HOME'] ?? process.env['USERPROFILE'] ?? '.', '.panguard-guard', 'config.json');
|
|
143
|
+
if (!existsSync(cfgPath))
|
|
144
|
+
return false;
|
|
145
|
+
const cfg = JSON.parse(readFileSync(cfgPath, 'utf-8'));
|
|
146
|
+
return cfg.threatCloudUploadEnabled === true;
|
|
147
|
+
}
|
|
148
|
+
catch {
|
|
149
|
+
return false;
|
|
150
|
+
}
|
|
151
|
+
})();
|
|
133
152
|
// ── Detect URL vs local path ──
|
|
134
153
|
let resolvedPath;
|
|
135
154
|
let tempDir = null;
|
|
@@ -177,6 +196,20 @@ export function auditCommand() {
|
|
|
177
196
|
}
|
|
178
197
|
else {
|
|
179
198
|
resolvedPath = path.resolve(skillPath);
|
|
199
|
+
// Validate the local path exists before auditing — mirrors `pga scan
|
|
200
|
+
// <path>`. Without this, auditSkill() on a missing path silently
|
|
201
|
+
// returned an empty (clean) report, so a typo'd path rendered a green
|
|
202
|
+
// PASS instead of an error.
|
|
203
|
+
if (!existsSync(resolvedPath)) {
|
|
204
|
+
if (options.json) {
|
|
205
|
+
console.log(JSON.stringify({ error: `Path not found: ${resolvedPath}` }));
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
console.error(`Error: Path not found: ${resolvedPath}`);
|
|
209
|
+
}
|
|
210
|
+
process.exitCode = 1;
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
180
213
|
if (!options.json) {
|
|
181
214
|
banner('Panguard Skill Auditor');
|
|
182
215
|
console.log(c.dim(` Scanning: ${resolvedPath}`));
|
|
@@ -323,8 +356,8 @@ export function auditCommand() {
|
|
|
323
356
|
}
|
|
324
357
|
}
|
|
325
358
|
}
|
|
326
|
-
// ── Report to Threat Cloud (flywheel) ──
|
|
327
|
-
if (
|
|
359
|
+
// ── Report to Threat Cloud (flywheel) — OPT-IN upload only ──
|
|
360
|
+
if (cloudUploadAllowed && report.riskScore > 0) {
|
|
328
361
|
const skillHash = computeSkillHash(resolvedPath);
|
|
329
362
|
const skillName = report.manifest?.name ?? path.basename(resolvedPath);
|
|
330
363
|
const submission = {
|
|
@@ -363,8 +396,8 @@ export function auditCommand() {
|
|
|
363
396
|
}
|
|
364
397
|
}
|
|
365
398
|
}
|
|
366
|
-
// ── Flywheel: submit ATR proposal for HIGH/CRITICAL findings ──
|
|
367
|
-
if (
|
|
399
|
+
// ── Flywheel: submit ATR proposal for HIGH/CRITICAL findings — OPT-IN ──
|
|
400
|
+
if (cloudUploadAllowed &&
|
|
368
401
|
(report.riskLevel === 'HIGH' || report.riskLevel === 'CRITICAL') &&
|
|
369
402
|
report.findings.length > 0) {
|
|
370
403
|
try {
|
|
@@ -438,8 +471,8 @@ response:
|
|
|
438
471
|
// ATR proposal submission is best-effort
|
|
439
472
|
}
|
|
440
473
|
}
|
|
441
|
-
// Report scan event to TC for metrics
|
|
442
|
-
if (
|
|
474
|
+
// Report scan event to TC for metrics — OPT-IN upload only.
|
|
475
|
+
if (cloudUploadAllowed) {
|
|
443
476
|
try {
|
|
444
477
|
const { ThreatCloudClient } = await import('@panguard-ai/panguard-guard');
|
|
445
478
|
const dataDir = path.join(process.env['HOME'] ?? process.env['USERPROFILE'] ?? '.', '.panguard-guard');
|
|
@@ -524,6 +557,23 @@ response:
|
|
|
524
557
|
process.exitCode = 2;
|
|
525
558
|
else if (report.riskLevel === 'HIGH')
|
|
526
559
|
process.exitCode = 1;
|
|
560
|
+
// Explicit exit. The Threat Cloud client (ThreatCloudClient) starts a
|
|
561
|
+
// 60s flush `setInterval` per instance and this command creates several
|
|
562
|
+
// transient instances (blacklist, submit, proposal, scan-event) that go
|
|
563
|
+
// out of scope without stopFlushTimer(), each leaving an unreferenced
|
|
564
|
+
// timer / keep-alive socket that pins the event loop open for ~120s. All
|
|
565
|
+
// meaningful async work above is already awaited and best-effort uploads
|
|
566
|
+
// are fire-and-forget by design, so once output is flushed we terminate
|
|
567
|
+
// deterministically instead of hanging on those leaked handles. The
|
|
568
|
+
// fast --no-cloud / --json paths reach here with the same exit code, so
|
|
569
|
+
// a clean exit does not change their behavior.
|
|
570
|
+
const code = process.exitCode ?? 0;
|
|
571
|
+
const done = () => process.exit(code);
|
|
572
|
+
// Drain stdout before exiting so no rendered report is truncated.
|
|
573
|
+
if (process.stdout.writableLength === 0)
|
|
574
|
+
done();
|
|
575
|
+
else
|
|
576
|
+
process.stdout.write('', done);
|
|
527
577
|
});
|
|
528
578
|
return cmd;
|
|
529
579
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../../src/cli/commands/audit.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../../src/cli/commands/audit.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,10 +2,15 @@
|
|
|
2
2
|
* panguard config - Manage local configuration
|
|
3
3
|
*
|
|
4
4
|
* Subcommands:
|
|
5
|
-
* pga config llm --provider claude
|
|
5
|
+
* pga config llm --provider claude
|
|
6
6
|
* pga config llm --provider ollama --endpoint http://localhost:11434
|
|
7
7
|
* pga config llm --show
|
|
8
8
|
* pga config llm --clear
|
|
9
|
+
*
|
|
10
|
+
* Security: there is no --api-key flag. A secret passed on the command line is
|
|
11
|
+
* exposed to `ps`, shell history, and process listings. Cloud keys are read
|
|
12
|
+
* only from the ANTHROPIC_API_KEY / OPENAI_API_KEY environment variables (see
|
|
13
|
+
* panguard-guard llm-detect.ts); this build never persists a cloud key to disk.
|
|
9
14
|
*/
|
|
10
15
|
import { Command } from 'commander';
|
|
11
16
|
export declare function configCommand(): Command;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmBpC,wBAAgB,aAAa,IAAI,OAAO,CA6LvC"}
|
|
@@ -2,10 +2,15 @@
|
|
|
2
2
|
* panguard config - Manage local configuration
|
|
3
3
|
*
|
|
4
4
|
* Subcommands:
|
|
5
|
-
* pga config llm --provider claude
|
|
5
|
+
* pga config llm --provider claude
|
|
6
6
|
* pga config llm --provider ollama --endpoint http://localhost:11434
|
|
7
7
|
* pga config llm --show
|
|
8
8
|
* pga config llm --clear
|
|
9
|
+
*
|
|
10
|
+
* Security: there is no --api-key flag. A secret passed on the command line is
|
|
11
|
+
* exposed to `ps`, shell history, and process listings. Cloud keys are read
|
|
12
|
+
* only from the ANTHROPIC_API_KEY / OPENAI_API_KEY environment variables (see
|
|
13
|
+
* panguard-guard llm-detect.ts); this build never persists a cloud key to disk.
|
|
9
14
|
*/
|
|
10
15
|
import { Command } from 'commander';
|
|
11
16
|
import { c, banner } from '@panguard-ai/core';
|
|
@@ -13,6 +18,17 @@ import { PANGUARD_VERSION } from '../../index.js';
|
|
|
13
18
|
import { saveLlmConfig, loadLlmConfig, deleteLlmConfig } from '../credentials.js';
|
|
14
19
|
import { loadGuardConfig, updateGuardConfig } from '../guard-config.js';
|
|
15
20
|
import { saveLang } from '../interactive/lang.js';
|
|
21
|
+
/**
|
|
22
|
+
* Print how to provide a cloud key without persisting it: via the environment
|
|
23
|
+
* variable the semantic layer actually reads, or via local Ollama (no key).
|
|
24
|
+
*/
|
|
25
|
+
function printCloudKeyGuidance() {
|
|
26
|
+
console.log('');
|
|
27
|
+
console.log(` ${c.dim('Set the key in your environment (never stored on disk):')}`);
|
|
28
|
+
console.log(` ${c.sage('export ANTHROPIC_API_KEY=sk-ant-...')} ${c.dim('# Anthropic')}`);
|
|
29
|
+
console.log(` ${c.sage('export OPENAI_API_KEY=sk-...')} ${c.dim('# OpenAI')}`);
|
|
30
|
+
console.log(` ${c.dim('Or use local Ollama (no key):')} pga config llm --provider ollama`);
|
|
31
|
+
}
|
|
16
32
|
export function configCommand() {
|
|
17
33
|
const cmd = new Command('config').description('Manage local configuration');
|
|
18
34
|
cmd
|
|
@@ -55,7 +71,7 @@ export function configCommand() {
|
|
|
55
71
|
console.log(` ${c.sage('Guard Configuration')}`);
|
|
56
72
|
const guardConfig = loadGuardConfig();
|
|
57
73
|
console.log(` Telemetry: ${guardConfig.telemetryEnabled === true ? c.safe('enabled') : c.dim('disabled')}`);
|
|
58
|
-
console.log(` Threat Cloud: ${guardConfig.threatCloudUploadEnabled ===
|
|
74
|
+
console.log(` Threat Cloud: ${guardConfig.threatCloudUploadEnabled === true ? c.safe('enabled') : c.dim('disabled')}`);
|
|
59
75
|
console.log(` Mode: ${guardConfig.mode ? c.bold(guardConfig.mode) : c.dim('default')}`);
|
|
60
76
|
console.log(` Dashboard: ${guardConfig.dashboardEnabled === true ? c.safe('enabled') : c.dim('disabled')}`);
|
|
61
77
|
if (guardConfig.dashboardPort) {
|
|
@@ -78,30 +94,27 @@ export function configCommand() {
|
|
|
78
94
|
.command('llm')
|
|
79
95
|
.description('Configure the optional advisory semantic layer (bring your own LLM, off by default)')
|
|
80
96
|
.option('--provider <provider>', 'LLM provider: claude, openai, ollama')
|
|
81
|
-
.option('--api-key <key>', 'API key (for claude/openai)')
|
|
82
97
|
.option('--model <model>', 'Model override (e.g., claude-haiku-4-5-20251001, gpt-4o)')
|
|
83
98
|
.option('--endpoint <url>', 'Endpoint URL (for ollama, default: http://localhost:11434)')
|
|
84
99
|
.option('--show', 'Show current LLM configuration')
|
|
85
100
|
.option('--clear', 'Remove stored LLM configuration')
|
|
86
101
|
.action((options) => {
|
|
87
102
|
console.log(banner(PANGUARD_VERSION));
|
|
88
|
-
console.log(` ${c.dim('Note: detection is deterministic by default (ATR rules + heuristics).
|
|
103
|
+
console.log(` ${c.dim('Note: detection is deterministic by default (ATR rules + heuristics). The OPTIONAL advisory semantic layer can flag findings for review but never auto-blocks. This build never stores a cloud API key on disk.')}`);
|
|
89
104
|
console.log('');
|
|
90
105
|
if (options.show) {
|
|
91
106
|
const config = loadLlmConfig();
|
|
92
107
|
if (!config) {
|
|
93
108
|
console.log(` ${c.dim('No LLM configuration found.')}`);
|
|
94
|
-
|
|
109
|
+
printCloudKeyGuidance();
|
|
95
110
|
return;
|
|
96
111
|
}
|
|
97
112
|
console.log(` ${c.sage('LLM Configuration')}`);
|
|
98
113
|
console.log(` Provider: ${c.bold(config.provider)}`);
|
|
99
|
-
console.log(` API Key: ${config.apiKey ? c.safe(config.apiKey.slice(0, 8) + '...' + config.apiKey.slice(-4)) : c.dim('none')}`);
|
|
100
114
|
console.log(` Model: ${config.model ? c.bold(config.model) : c.dim('default')}`);
|
|
101
115
|
console.log(` Endpoint: ${config.endpoint ? c.bold(config.endpoint) : c.dim('default')}`);
|
|
102
116
|
console.log(` Saved: ${c.dim(config.savedAt)}`);
|
|
103
117
|
console.log('');
|
|
104
|
-
console.log(` ${c.dim('Stored encrypted at ~/.panguard/llm.enc')}`);
|
|
105
118
|
return;
|
|
106
119
|
}
|
|
107
120
|
if (options.clear) {
|
|
@@ -118,14 +131,10 @@ export function configCommand() {
|
|
|
118
131
|
console.log(` ${c.caution('--provider is required.')}`);
|
|
119
132
|
console.log('');
|
|
120
133
|
console.log(' Examples:');
|
|
121
|
-
console.log(` ${c.dim('$')} pga config llm --provider claude
|
|
122
|
-
console.log(` ${c.dim('$')} pga config llm --provider openai
|
|
134
|
+
console.log(` ${c.dim('$')} pga config llm --provider claude`);
|
|
135
|
+
console.log(` ${c.dim('$')} pga config llm --provider openai`);
|
|
123
136
|
console.log(` ${c.dim('$')} pga config llm --provider ollama`);
|
|
124
|
-
console.log('');
|
|
125
|
-
console.log(' OpenAI-compatible APIs (Gemini, Groq, Qwen, DeepSeek, etc.):');
|
|
126
|
-
console.log(` ${c.dim('$')} pga config llm --provider openai --endpoint https://api.groq.com/openai/v1 --api-key gsk-xxx`);
|
|
127
|
-
console.log(` ${c.dim('$')} pga config llm --provider openai --endpoint https://generativelanguage.googleapis.com/v1beta/openai/ --api-key AIza-xxx`);
|
|
128
|
-
console.log(` ${c.dim('$')} pga config llm --provider openai --endpoint https://dashscope.aliyuncs.com/compatible-mode/v1 --api-key sk-xxx ${c.dim('# Qwen')}`);
|
|
137
|
+
console.log(` ${c.dim('$')} pga config llm --provider ollama --endpoint http://gpu:11434`);
|
|
129
138
|
console.log('');
|
|
130
139
|
console.log(` ${c.dim('$')} pga config llm --show`);
|
|
131
140
|
console.log(` ${c.dim('$')} pga config llm --clear`);
|
|
@@ -136,28 +145,35 @@ export function configCommand() {
|
|
|
136
145
|
console.log(` ${c.caution(`Invalid provider: ${options.provider}. Must be one of: ${validProviders.join(', ')}`)}`);
|
|
137
146
|
return;
|
|
138
147
|
}
|
|
139
|
-
|
|
140
|
-
|
|
148
|
+
// Cloud providers: never collect or persist a key. The semantic layer
|
|
149
|
+
// reads the key only from the environment (see llm-detect.ts). Tell the
|
|
150
|
+
// user which env var to set instead of writing a plaintext secret.
|
|
151
|
+
if (options.provider !== 'ollama') {
|
|
152
|
+
console.log(` ${c.dim(`Panguard does not store a cloud API key. Provider '${options.provider}' reads its key from the environment:`)}`);
|
|
153
|
+
printCloudKeyGuidance();
|
|
141
154
|
return;
|
|
142
155
|
}
|
|
156
|
+
// Ollama: no secret involved. This community build does not persist the
|
|
157
|
+
// selection (the engine resolves the semantic layer from the
|
|
158
|
+
// environment / local-runtime probe at startup — see llm-detect.ts), so
|
|
159
|
+
// be honest rather than claim an encrypted save that never happens.
|
|
143
160
|
saveLlmConfig({
|
|
144
161
|
provider: options.provider,
|
|
145
|
-
apiKey: options.apiKey,
|
|
146
162
|
model: options.model,
|
|
147
163
|
endpoint: options.endpoint,
|
|
148
164
|
savedAt: new Date().toISOString(),
|
|
149
165
|
});
|
|
150
|
-
console.log(` ${c.
|
|
166
|
+
console.log(` ${c.sage('Local AI (Ollama) selected.')}`);
|
|
151
167
|
console.log(` Provider: ${c.bold(options.provider)}`);
|
|
152
|
-
if (options.apiKey) {
|
|
153
|
-
console.log(` API Key: ${c.safe(options.apiKey.slice(0, 8) + '...' + options.apiKey.slice(-4))}`);
|
|
154
|
-
}
|
|
155
168
|
if (options.model) {
|
|
156
169
|
console.log(` Model: ${c.bold(options.model)}`);
|
|
157
170
|
}
|
|
171
|
+
if (options.endpoint) {
|
|
172
|
+
console.log(` Endpoint: ${c.bold(options.endpoint)}`);
|
|
173
|
+
}
|
|
158
174
|
console.log('');
|
|
159
|
-
console.log(` ${c.dim('
|
|
160
|
-
console.log(` ${c.dim('
|
|
175
|
+
console.log(` ${c.dim('Start the semantic layer against a local runtime with:')} PANGUARD_SEMANTIC=1`);
|
|
176
|
+
console.log(` ${c.dim('or point at any OpenAI-compatible endpoint with:')} PANGUARD_LLM_ENDPOINT=...`);
|
|
161
177
|
});
|
|
162
178
|
return cmd;
|
|
163
179
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEnD,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,KAAK,IAAI,GAAG,IAAI,GAAG,OAAO,CAAC;AA0kB3B,wBAAsB,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAoCzD;AAMD,wBAAgB,aAAa,IAAI,OAAO,CA0DvC"}
|