@panguard-ai/panguard 0.3.7 → 0.4.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/dist/cli/commands/audit.d.ts.map +1 -1
- package/dist/cli/commands/audit.js +28 -1
- package/dist/cli/commands/audit.js.map +1 -1
- package/dist/cli/commands/serve-admin.d.ts +11 -0
- package/dist/cli/commands/serve-admin.d.ts.map +1 -0
- package/dist/cli/commands/serve-admin.js +302 -0
- package/dist/cli/commands/serve-admin.js.map +1 -0
- package/dist/cli/commands/serve-auth.d.ts +11 -0
- package/dist/cli/commands/serve-auth.d.ts.map +1 -0
- package/dist/cli/commands/serve-auth.js +119 -0
- package/dist/cli/commands/serve-auth.js.map +1 -0
- package/dist/cli/commands/serve-core.d.ts +25 -0
- package/dist/cli/commands/serve-core.d.ts.map +1 -0
- package/dist/cli/commands/serve-core.js +258 -0
- package/dist/cli/commands/serve-core.js.map +1 -0
- package/dist/cli/commands/serve-tc.d.ts +12 -0
- package/dist/cli/commands/serve-tc.d.ts.map +1 -0
- package/dist/cli/commands/serve-tc.js +296 -0
- package/dist/cli/commands/serve-tc.js.map +1 -0
- package/dist/cli/commands/serve-types.d.ts +38 -0
- package/dist/cli/commands/serve-types.d.ts.map +1 -0
- package/dist/cli/commands/serve-types.js +108 -0
- package/dist/cli/commands/serve-types.js.map +1 -0
- package/dist/cli/commands/serve.d.ts +6 -0
- package/dist/cli/commands/serve.d.ts.map +1 -1
- package/dist/cli/commands/serve.js +41 -1144
- package/dist/cli/commands/serve.js.map +1 -1
- package/dist/cli/commands/setup.js +2 -2
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/interactive/actions/audit.d.ts +7 -0
- package/dist/cli/interactive/actions/audit.d.ts.map +1 -0
- package/dist/cli/interactive/actions/audit.js +198 -0
- package/dist/cli/interactive/actions/audit.js.map +1 -0
- package/dist/cli/interactive/actions/demo.d.ts +7 -0
- package/dist/cli/interactive/actions/demo.d.ts.map +1 -0
- package/dist/cli/interactive/actions/demo.js +113 -0
- package/dist/cli/interactive/actions/demo.js.map +1 -0
- package/dist/cli/interactive/actions/guard.d.ts +7 -0
- package/dist/cli/interactive/actions/guard.d.ts.map +1 -0
- package/dist/cli/interactive/actions/guard.js +164 -0
- package/dist/cli/interactive/actions/guard.js.map +1 -0
- package/dist/cli/interactive/actions/misc.d.ts +13 -0
- package/dist/cli/interactive/actions/misc.d.ts.map +1 -0
- package/dist/cli/interactive/actions/misc.js +209 -0
- package/dist/cli/interactive/actions/misc.js.map +1 -0
- package/dist/cli/interactive/actions/scan.d.ts +7 -0
- package/dist/cli/interactive/actions/scan.d.ts.map +1 -0
- package/dist/cli/interactive/actions/scan.js +143 -0
- package/dist/cli/interactive/actions/scan.js.map +1 -0
- package/dist/cli/interactive/actions/setup.d.ts +8 -0
- package/dist/cli/interactive/actions/setup.d.ts.map +1 -0
- package/dist/cli/interactive/actions/setup.js +130 -0
- package/dist/cli/interactive/actions/setup.js.map +1 -0
- package/dist/cli/interactive/lang.d.ts +11 -0
- package/dist/cli/interactive/lang.d.ts.map +1 -0
- package/dist/cli/interactive/lang.js +51 -0
- package/dist/cli/interactive/lang.js.map +1 -0
- package/dist/cli/interactive/menu-defs.d.ts +17 -0
- package/dist/cli/interactive/menu-defs.d.ts.map +1 -0
- package/dist/cli/interactive/menu-defs.js +106 -0
- package/dist/cli/interactive/menu-defs.js.map +1 -0
- package/dist/cli/interactive/render.d.ts +16 -0
- package/dist/cli/interactive/render.d.ts.map +1 -0
- package/dist/cli/interactive/render.js +145 -0
- package/dist/cli/interactive/render.js.map +1 -0
- package/dist/cli/interactive.d.ts.map +1 -1
- package/dist/cli/interactive.js +64 -1322
- package/dist/cli/interactive.js.map +1 -1
- package/package.json +8 -7
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"demo.js","sourceRoot":"","sources":["../../../../src/cli/interactive/actions/demo.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../../../../src/cli/interactive/actions/guard.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,KAAK,EAAY,IAAI,EAAE,MAAM,eAAe,CAAC;AAIpD,wBAAsB,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CA0L3D"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Guard engine action
|
|
3
|
+
* @module @panguard-ai/panguard/cli/interactive/actions/guard
|
|
4
|
+
*/
|
|
5
|
+
import { existsSync, readFileSync, mkdirSync, openSync, closeSync } from 'node:fs';
|
|
6
|
+
import { join } from 'node:path';
|
|
7
|
+
import { homedir } from 'node:os';
|
|
8
|
+
import { c, spinner } from '@panguard-ai/core';
|
|
9
|
+
import { theme } from '../../theme.js';
|
|
10
|
+
import { renderCompactMenu, waitForCompactChoice } from '../../menu.js';
|
|
11
|
+
import { breadcrumb, nextSteps, confirmDestructive } from '../../ux-helpers.js';
|
|
12
|
+
import { isGuardRunning } from '../render.js';
|
|
13
|
+
export async function actionGuard(lang) {
|
|
14
|
+
breadcrumb(['Panguard', lang === 'zh-TW' ? '\u5B88\u8B77\u5F15\u64CE' : 'Guard Engine']);
|
|
15
|
+
const title = lang === 'zh-TW' ? '\u5B88\u8B77\u5F15\u64CE' : 'Guard Engine';
|
|
16
|
+
console.log(` ${theme.brandBold(title)}`);
|
|
17
|
+
const guardInfo = isGuardRunning();
|
|
18
|
+
const guardRunning = guardInfo.running;
|
|
19
|
+
const statusText = guardRunning
|
|
20
|
+
? c.safe(lang === 'zh-TW' ? '\u904B\u884C\u4E2D' : 'Running')
|
|
21
|
+
: c.caution(lang === 'zh-TW' ? '\u672A\u904B\u884C' : 'Not running');
|
|
22
|
+
console.log(` ${c.dim(lang === 'zh-TW' ? '\u72C0\u614B' : 'Status')} ${statusText}`);
|
|
23
|
+
console.log('');
|
|
24
|
+
const items = [
|
|
25
|
+
{ key: '1', label: lang === 'zh-TW' ? '\u555F\u52D5\u5F15\u64CE Start' : 'Start' },
|
|
26
|
+
{ key: '2', label: lang === 'zh-TW' ? '\u505C\u6B62\u5F15\u64CE Stop' : 'Stop' },
|
|
27
|
+
{ key: '3', label: lang === 'zh-TW' ? '\u67E5\u770B\u72C0\u614B Status' : 'Status' },
|
|
28
|
+
{ key: '4', label: lang === 'zh-TW' ? '\u67E5\u770B\u65E5\u8A8C Logs' : 'Logs' },
|
|
29
|
+
];
|
|
30
|
+
renderCompactMenu(lang === 'zh-TW' ? '\u5B88\u8B77\u5F15\u64CE' : 'Guard Engine', items);
|
|
31
|
+
const choice = await waitForCompactChoice(items, lang);
|
|
32
|
+
if (!choice)
|
|
33
|
+
return;
|
|
34
|
+
console.log('');
|
|
35
|
+
const { runCLI } = await import('@panguard-ai/panguard-guard');
|
|
36
|
+
switch (choice.key) {
|
|
37
|
+
case '1': {
|
|
38
|
+
if (guardRunning) {
|
|
39
|
+
console.log(` ${c.safe('\u2713')} ${lang === 'zh-TW' ? '\u5B88\u8B77\u5F15\u64CE\u5DF2\u5728\u904B\u884C\u4E2D' : 'Guard engine is already running'} ${c.dim(`(PID: ${guardInfo.pid})`)}`);
|
|
40
|
+
nextSteps(lang === 'zh-TW'
|
|
41
|
+
? [
|
|
42
|
+
{
|
|
43
|
+
cmd: 'guard > \u67E5\u770B\u72C0\u614B',
|
|
44
|
+
desc: '\u67E5\u770B\u8A73\u7D30\u72C0\u614B',
|
|
45
|
+
},
|
|
46
|
+
{ cmd: 'guard > \u505C\u6B62\u5F15\u64CE', desc: '\u505C\u6B62\u9632\u8B77' },
|
|
47
|
+
]
|
|
48
|
+
: [
|
|
49
|
+
{ cmd: 'guard > Status', desc: 'View detailed status' },
|
|
50
|
+
{ cmd: 'guard > Stop', desc: 'Stop protection' },
|
|
51
|
+
], lang);
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
console.log(` ${c.sage('\u25C6')} Guard active${' '.repeat(30)}All Layers \u00B7 Free`);
|
|
55
|
+
console.log('');
|
|
56
|
+
if (lang === 'zh-TW') {
|
|
57
|
+
console.log(` ${c.safe('\u2713')} \u5DF2\u77E5\u653B\u64CA\u6A21\u5F0F\u81EA\u52D5\u5C01\u9396`);
|
|
58
|
+
console.log(` ${c.safe('\u2713')} Threat Cloud \u5A01\u8105\u60C5\u5831`);
|
|
59
|
+
console.log(` ${c.safe('\u2713')} AI \u5206\u6790`);
|
|
60
|
+
console.log(` ${c.safe('\u2713')} \u901A\u77E5\u7CFB\u7D71`);
|
|
61
|
+
console.log(` ${c.safe('\u2713')} \u65E5\u8A8C\u4FDD\u7559`);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
console.log(` ${c.safe('\u2713')} Auto-blocking for known attack patterns`);
|
|
65
|
+
console.log(` ${c.safe('\u2713')} Threat Cloud intelligence`);
|
|
66
|
+
console.log(` ${c.safe('\u2713')} AI analysis`);
|
|
67
|
+
console.log(` ${c.safe('\u2713')} Notifications`);
|
|
68
|
+
console.log(` ${c.safe('\u2713')} Log retention`);
|
|
69
|
+
}
|
|
70
|
+
console.log('');
|
|
71
|
+
const { spawn: spawnProcess } = await import('node:child_process');
|
|
72
|
+
const { fileURLToPath: toPath } = await import('node:url');
|
|
73
|
+
const guardMainUrl = import.meta.resolve('@panguard-ai/panguard-guard');
|
|
74
|
+
const guardCliScript = join(toPath(guardMainUrl), '..', 'cli', 'index.js');
|
|
75
|
+
const guardDataDir = join(homedir(), '.panguard-guard');
|
|
76
|
+
if (!existsSync(guardDataDir))
|
|
77
|
+
mkdirSync(guardDataDir, { recursive: true });
|
|
78
|
+
const logPath = join(guardDataDir, 'guard.log');
|
|
79
|
+
const logFd = openSync(logPath, 'a');
|
|
80
|
+
const guardSp = spinner(lang === 'zh-TW'
|
|
81
|
+
? '\u6B63\u5728\u555F\u52D5\u5B88\u8B77\u5F15\u64CE...'
|
|
82
|
+
: 'Starting guard engine...');
|
|
83
|
+
const child = spawnProcess(process.execPath, [guardCliScript, 'start'], {
|
|
84
|
+
detached: true,
|
|
85
|
+
stdio: ['ignore', logFd, logFd],
|
|
86
|
+
env: { ...process.env },
|
|
87
|
+
});
|
|
88
|
+
child.unref();
|
|
89
|
+
closeSync(logFd);
|
|
90
|
+
const pidPath = join(guardDataDir, 'panguard-guard.pid');
|
|
91
|
+
let started = false;
|
|
92
|
+
const deadline = Date.now() + 5000;
|
|
93
|
+
while (Date.now() < deadline) {
|
|
94
|
+
if (existsSync(pidPath)) {
|
|
95
|
+
try {
|
|
96
|
+
const newPid = parseInt(readFileSync(pidPath, 'utf-8').trim(), 10);
|
|
97
|
+
process.kill(newPid, 0);
|
|
98
|
+
started = true;
|
|
99
|
+
break;
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
/* not yet */
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
await new Promise((resolve) => setTimeout(resolve, 300));
|
|
106
|
+
}
|
|
107
|
+
if (started) {
|
|
108
|
+
const newPid = parseInt(readFileSync(pidPath, 'utf-8').trim(), 10);
|
|
109
|
+
guardSp.succeed(lang === 'zh-TW' ? '\u5B88\u8B77\u5F15\u64CE\u5DF2\u555F\u52D5' : 'Guard engine started');
|
|
110
|
+
console.log('');
|
|
111
|
+
console.log(` ${c.safe('\u2713')} ${lang === 'zh-TW' ? '\u7CFB\u7D71\u5DF2\u53D7\u4FDD\u8B77' : 'System is now protected'} ${c.dim(`(PID: ${newPid})`)}`);
|
|
112
|
+
console.log(` ${c.dim(lang === 'zh-TW' ? ' \u65E5\u8A8C: ~/.panguard-guard/guard.log' : ' Logs: ~/.panguard-guard/guard.log')}`);
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
guardSp.fail(lang === 'zh-TW'
|
|
116
|
+
? '\u5B88\u8B77\u5F15\u64CE\u555F\u52D5\u5931\u6557'
|
|
117
|
+
: 'Failed to start guard engine');
|
|
118
|
+
console.log(` ${c.dim(lang === 'zh-TW' ? ' \u67E5\u770B\u65E5\u8A8C: ~/.panguard-guard/guard.log' : ' Check logs: ~/.panguard-guard/guard.log')}`);
|
|
119
|
+
}
|
|
120
|
+
nextSteps(lang === 'zh-TW'
|
|
121
|
+
? [
|
|
122
|
+
{ cmd: 'scan', desc: '\u57F7\u884C\u5B89\u5168\u6383\u63CF' },
|
|
123
|
+
{ cmd: 'status', desc: '\u67E5\u770B\u7CFB\u7D71\u72C0\u614B' },
|
|
124
|
+
]
|
|
125
|
+
: [
|
|
126
|
+
{ cmd: 'scan', desc: 'Run a security scan' },
|
|
127
|
+
{ cmd: 'status', desc: 'Check system status' },
|
|
128
|
+
], lang);
|
|
129
|
+
break;
|
|
130
|
+
}
|
|
131
|
+
case '2': {
|
|
132
|
+
const confirmed = await confirmDestructive(lang === 'zh-TW'
|
|
133
|
+
? '\u78BA\u5B9A\u8981\u505C\u6B62\u5373\u6642\u9632\u8B77\uFF1F'
|
|
134
|
+
: 'Stop real-time protection?', lang);
|
|
135
|
+
if (confirmed) {
|
|
136
|
+
await runCLI(['stop']);
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
console.log(c.dim(lang === 'zh-TW' ? ' \u5DF2\u53D6\u6D88' : ' Cancelled'));
|
|
140
|
+
}
|
|
141
|
+
break;
|
|
142
|
+
}
|
|
143
|
+
case '3':
|
|
144
|
+
await runCLI(['status']);
|
|
145
|
+
break;
|
|
146
|
+
case '4': {
|
|
147
|
+
const logFilePath = join(homedir(), '.panguard-guard', 'guard.log');
|
|
148
|
+
if (existsSync(logFilePath)) {
|
|
149
|
+
const content = readFileSync(logFilePath, 'utf-8');
|
|
150
|
+
const lines = content.trim().split('\n').slice(-30);
|
|
151
|
+
console.log(c.dim(lang === 'zh-TW' ? ' \u6700\u8FD1 30 \u884C\u65E5\u8A8C:' : ' Last 30 log lines:'));
|
|
152
|
+
console.log('');
|
|
153
|
+
for (const line of lines) {
|
|
154
|
+
console.log(` ${c.dim(line)}`);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
console.log(c.dim(lang === 'zh-TW' ? ' \u5C1A\u7121\u65E5\u8A8C\u6A94\u6848' : ' No log file found'));
|
|
159
|
+
}
|
|
160
|
+
break;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guard.js","sourceRoot":"","sources":["../../../../src/cli/interactive/actions/guard.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Miscellaneous actions: report, trap, notify, threat-cloud, hardening, status, config
|
|
3
|
+
* @module @panguard-ai/panguard/cli/interactive/actions/misc
|
|
4
|
+
*/
|
|
5
|
+
import type { Lang } from '../../menu.js';
|
|
6
|
+
export declare function actionReport(lang: Lang): Promise<void>;
|
|
7
|
+
export declare function actionTrap(lang: Lang): Promise<void>;
|
|
8
|
+
export declare function actionChat(lang: Lang): Promise<void>;
|
|
9
|
+
export declare function actionThreat(lang: Lang): Promise<void>;
|
|
10
|
+
export declare function actionHardening(lang: Lang): Promise<void>;
|
|
11
|
+
export declare function actionStatus(lang: Lang): Promise<void>;
|
|
12
|
+
export declare function actionConfig(lang: Lang): Promise<void>;
|
|
13
|
+
//# sourceMappingURL=misc.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"misc.d.ts","sourceRoot":"","sources":["../../../../src/cli/interactive/actions/misc.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAY,IAAI,EAAE,MAAM,eAAe,CAAC;AAOpD,wBAAsB,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAkB5D;AAMD,wBAAsB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAkB1D;AAMD,wBAAsB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAiC1D;AAMD,wBAAsB,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CA6F5D;AAMD,wBAAsB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAkC/D;AAMD,wBAAsB,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAK5D;AAMD,wBAAsB,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAK5D"}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Miscellaneous actions: report, trap, notify, threat-cloud, hardening, status, config
|
|
3
|
+
* @module @panguard-ai/panguard/cli/interactive/actions/misc
|
|
4
|
+
*/
|
|
5
|
+
import { c, spinner } from '@panguard-ai/core';
|
|
6
|
+
import { theme } from '../../theme.js';
|
|
7
|
+
import { renderCompactMenu, waitForCompactChoice, pressAnyKey } from '../../menu.js';
|
|
8
|
+
import { breadcrumb, formatError } from '../../ux-helpers.js';
|
|
9
|
+
// ---------------------------------------------------------------------------
|
|
10
|
+
// [2] Compliance Report
|
|
11
|
+
// ---------------------------------------------------------------------------
|
|
12
|
+
export async function actionReport(lang) {
|
|
13
|
+
breadcrumb(['Panguard', lang === 'zh-TW' ? '\u5408\u898F\u5831\u544A' : 'Compliance Report']);
|
|
14
|
+
console.log('');
|
|
15
|
+
if (lang === 'zh-TW') {
|
|
16
|
+
console.log(' \u5408\u898F\u5831\u544A \u2014 \u5373\u5C07\u63A8\u51FA');
|
|
17
|
+
console.log('');
|
|
18
|
+
console.log(' ISO 27001\u3001SOC 2\u3001\u8CC7\u5B89\u7BA1\u7406\u6CD5\u5408\u898F\u5831\u544A\u529F\u80FD\u958B\u767C\u4E2D\u3002');
|
|
19
|
+
console.log(' \u8FFD\u8E64\u9032\u5EA6: https://github.com/panguard-ai/panguard-ai');
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
console.log(' Compliance Report \u2014 Coming Soon');
|
|
23
|
+
console.log('');
|
|
24
|
+
console.log(' ISO 27001, SOC 2, and TW Cyber Security Act compliance');
|
|
25
|
+
console.log(' reports are under active development.');
|
|
26
|
+
console.log(' Follow progress: https://github.com/panguard-ai/panguard-ai');
|
|
27
|
+
}
|
|
28
|
+
console.log('');
|
|
29
|
+
}
|
|
30
|
+
// ---------------------------------------------------------------------------
|
|
31
|
+
// [4] Honeypot System
|
|
32
|
+
// ---------------------------------------------------------------------------
|
|
33
|
+
export async function actionTrap(lang) {
|
|
34
|
+
breadcrumb(['Panguard', lang === 'zh-TW' ? '\u871C\u7F50\u7CFB\u7D71' : 'Honeypot System']);
|
|
35
|
+
console.log('');
|
|
36
|
+
if (lang === 'zh-TW') {
|
|
37
|
+
console.log(' \u871C\u7F50\u7CFB\u7D71 \u2014 \u5373\u5C07\u63A8\u51FA');
|
|
38
|
+
console.log('');
|
|
39
|
+
console.log(' \u8A98\u990C\u670D\u52D9\uFF08SSH\u3001HTTP\u3001FTP\uFF09\u5075\u6E2C\u8207\u5206\u6790\u653B\u64CA\u8005\u529F\u80FD\u958B\u767C\u4E2D\u3002');
|
|
40
|
+
console.log(' \u8FFD\u8E64\u9032\u5EA6: https://github.com/panguard-ai/panguard-ai');
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
console.log(' Honeypot System \u2014 Coming Soon');
|
|
44
|
+
console.log('');
|
|
45
|
+
console.log(' Decoy services (SSH, HTTP, FTP) to detect and profile');
|
|
46
|
+
console.log(' attackers are under active development.');
|
|
47
|
+
console.log(' Follow progress: https://github.com/panguard-ai/panguard-ai');
|
|
48
|
+
}
|
|
49
|
+
console.log('');
|
|
50
|
+
}
|
|
51
|
+
// ---------------------------------------------------------------------------
|
|
52
|
+
// [5] Notifications
|
|
53
|
+
// ---------------------------------------------------------------------------
|
|
54
|
+
export async function actionChat(lang) {
|
|
55
|
+
breadcrumb(['Panguard', lang === 'zh-TW' ? '\u901A\u77E5\u7CFB\u7D71' : 'Notifications']);
|
|
56
|
+
const title = lang === 'zh-TW' ? '\u901A\u77E5\u7CFB\u7D71' : 'Notifications';
|
|
57
|
+
console.log(` ${theme.brandBold(title)}`);
|
|
58
|
+
console.log('');
|
|
59
|
+
const items = [
|
|
60
|
+
{
|
|
61
|
+
key: '1',
|
|
62
|
+
label: lang === 'zh-TW' ? '\u8A2D\u5B9A\u901A\u77E5\u7BA1\u9053' : 'Setup Channels',
|
|
63
|
+
},
|
|
64
|
+
{ key: '2', label: lang === 'zh-TW' ? '\u67E5\u770B\u72C0\u614B' : 'Status' },
|
|
65
|
+
{ key: '3', label: lang === 'zh-TW' ? '\u6E2C\u8A66\u767C\u9001' : 'Test Send' },
|
|
66
|
+
];
|
|
67
|
+
renderCompactMenu(lang === 'zh-TW' ? '\u901A\u77E5\u7CFB\u7D71' : 'Notifications', items);
|
|
68
|
+
const choice = await waitForCompactChoice(items, lang);
|
|
69
|
+
if (!choice)
|
|
70
|
+
return;
|
|
71
|
+
console.log('');
|
|
72
|
+
const { runCLI: chatRunCLI } = await import('@panguard-ai/panguard-chat');
|
|
73
|
+
switch (choice.key) {
|
|
74
|
+
case '1':
|
|
75
|
+
await chatRunCLI(['setup', '--lang', lang]);
|
|
76
|
+
break;
|
|
77
|
+
case '2':
|
|
78
|
+
await chatRunCLI(['status']);
|
|
79
|
+
break;
|
|
80
|
+
case '3':
|
|
81
|
+
await chatRunCLI(['config']);
|
|
82
|
+
break;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// ---------------------------------------------------------------------------
|
|
86
|
+
// [6] Threat Cloud
|
|
87
|
+
// ---------------------------------------------------------------------------
|
|
88
|
+
export async function actionThreat(lang) {
|
|
89
|
+
breadcrumb(['Panguard', lang === 'zh-TW' ? '\u5A01\u8105\u60C5\u5831' : 'Threat Cloud']);
|
|
90
|
+
const title = lang === 'zh-TW' ? '\u5A01\u8105\u60C5\u5831' : 'Threat Cloud';
|
|
91
|
+
console.log(` ${theme.brandBold(title)}`);
|
|
92
|
+
console.log('');
|
|
93
|
+
const port = 8080;
|
|
94
|
+
const net = await import('node:net');
|
|
95
|
+
const portAvailable = await new Promise((resolve) => {
|
|
96
|
+
const tester = net.createServer();
|
|
97
|
+
tester.once('error', () => resolve(false));
|
|
98
|
+
tester.once('listening', () => {
|
|
99
|
+
tester.close(() => resolve(true));
|
|
100
|
+
});
|
|
101
|
+
tester.listen(port, '127.0.0.1');
|
|
102
|
+
});
|
|
103
|
+
if (!portAvailable) {
|
|
104
|
+
console.log(formatError(lang === 'zh-TW'
|
|
105
|
+
? `\u9023\u63A5\u57E0 ${port} \u5DF2\u88AB\u4F54\u7528`
|
|
106
|
+
: `Port ${port} is already in use`, `Port ${port}`, lang === 'zh-TW'
|
|
107
|
+
? `\u91CB\u653E\u9023\u63A5\u57E0 ${port} \u5F8C\u518D\u8A66`
|
|
108
|
+
: `Free port ${port} and try again`));
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
console.log(c.dim(lang === 'zh-TW'
|
|
112
|
+
? ` \u5373\u5C07\u555F\u52D5\u5A01\u8105\u60C5\u5831 REST API \u4F3A\u670D\u5668 (port ${port})`
|
|
113
|
+
: ` Starting Threat Cloud REST API server (port ${port})...`));
|
|
114
|
+
console.log('');
|
|
115
|
+
let ThreatCloudServer;
|
|
116
|
+
try {
|
|
117
|
+
const mod = '@panguard-ai/threat-cloud';
|
|
118
|
+
const tc = await import(/* webpackIgnore: true */ mod);
|
|
119
|
+
ThreatCloudServer = tc.ThreatCloudServer;
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
console.log(c.red(' Threat Cloud server package is not available.'));
|
|
123
|
+
console.log(c.dim(' Your Guard client connects to Threat Cloud automatically.'));
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
const sp = spinner(lang === 'zh-TW'
|
|
127
|
+
? '\u6B63\u5728\u555F\u52D5 Threat Cloud API...'
|
|
128
|
+
: 'Starting Threat Cloud API server...');
|
|
129
|
+
const server = new ThreatCloudServer({
|
|
130
|
+
port: 8080,
|
|
131
|
+
host: '127.0.0.1',
|
|
132
|
+
dbPath: './threat-cloud.db',
|
|
133
|
+
apiKeyRequired: false,
|
|
134
|
+
apiKeys: [],
|
|
135
|
+
rateLimitPerMinute: 120,
|
|
136
|
+
});
|
|
137
|
+
try {
|
|
138
|
+
await server.start();
|
|
139
|
+
sp.succeed(lang === 'zh-TW' ? 'Threat Cloud API \u5DF2\u555F\u52D5' : 'Threat Cloud API started');
|
|
140
|
+
console.log('');
|
|
141
|
+
console.log(` URL ${c.underline('http://127.0.0.1:8080')}`);
|
|
142
|
+
console.log(` Health ${c.sage('http://127.0.0.1:8080/health')}`);
|
|
143
|
+
console.log(` API ${c.sage('http://127.0.0.1:8080/api/stats')}`);
|
|
144
|
+
console.log('');
|
|
145
|
+
console.log(c.dim(lang === 'zh-TW'
|
|
146
|
+
? ' \u6309\u4EFB\u610F\u9375\u505C\u6B62\u4F3A\u670D\u5668...'
|
|
147
|
+
: ' Press any key to stop...'));
|
|
148
|
+
await pressAnyKey(lang);
|
|
149
|
+
await server.stop();
|
|
150
|
+
console.log(` ${c.safe(lang === 'zh-TW' ? 'Threat Cloud \u5DF2\u505C\u6B62' : 'Threat Cloud stopped')}`);
|
|
151
|
+
}
|
|
152
|
+
catch (err) {
|
|
153
|
+
sp.fail(`${err instanceof Error ? err.message : String(err)}`);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
// ---------------------------------------------------------------------------
|
|
157
|
+
// Prompt commands: Hardening
|
|
158
|
+
// ---------------------------------------------------------------------------
|
|
159
|
+
export async function actionHardening(lang) {
|
|
160
|
+
breadcrumb(['Panguard', lang === 'zh-TW' ? '\u5B89\u5168\u52A0\u56FA' : 'Security Hardening']);
|
|
161
|
+
const title = lang === 'zh-TW' ? '\u5B89\u5168\u52A0\u56FA' : 'Security Hardening';
|
|
162
|
+
console.log(` ${theme.brandBold(title)}`);
|
|
163
|
+
console.log('');
|
|
164
|
+
const items = [
|
|
165
|
+
{
|
|
166
|
+
key: '1',
|
|
167
|
+
label: lang === 'zh-TW' ? '\u57F7\u884C\u52A0\u56FA\u6383\u63CF' : 'Run hardening audit',
|
|
168
|
+
},
|
|
169
|
+
{ key: '2', label: lang === 'zh-TW' ? '\u81EA\u52D5\u4FEE\u5FA9' : 'Auto-fix issues' },
|
|
170
|
+
{ key: '3', label: lang === 'zh-TW' ? '\u67E5\u770B\u5831\u544A' : 'View report' },
|
|
171
|
+
];
|
|
172
|
+
renderCompactMenu(lang === 'zh-TW' ? '\u5B89\u5168\u52A0\u56FA' : 'Hardening', items);
|
|
173
|
+
const choice = await waitForCompactChoice(items, lang);
|
|
174
|
+
if (!choice)
|
|
175
|
+
return;
|
|
176
|
+
console.log('');
|
|
177
|
+
const { hardeningCommand } = await import('../../commands/hardening.js');
|
|
178
|
+
const cmd = hardeningCommand();
|
|
179
|
+
switch (choice.key) {
|
|
180
|
+
case '1':
|
|
181
|
+
await cmd.parseAsync(['hardening', 'audit'], { from: 'user' });
|
|
182
|
+
break;
|
|
183
|
+
case '2':
|
|
184
|
+
await cmd.parseAsync(['hardening', 'fix'], { from: 'user' });
|
|
185
|
+
break;
|
|
186
|
+
case '3':
|
|
187
|
+
await cmd.parseAsync(['hardening', 'report'], { from: 'user' });
|
|
188
|
+
break;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
// ---------------------------------------------------------------------------
|
|
192
|
+
// Prompt commands: Status
|
|
193
|
+
// ---------------------------------------------------------------------------
|
|
194
|
+
export async function actionStatus(lang) {
|
|
195
|
+
breadcrumb(['Panguard', lang === 'zh-TW' ? '\u7CFB\u7D71\u72C0\u614B' : 'Status']);
|
|
196
|
+
const { statusCommand } = await import('../../commands/status.js');
|
|
197
|
+
const cmd = statusCommand();
|
|
198
|
+
await cmd.parseAsync(['status'], { from: 'user' });
|
|
199
|
+
}
|
|
200
|
+
// ---------------------------------------------------------------------------
|
|
201
|
+
// Prompt commands: Config
|
|
202
|
+
// ---------------------------------------------------------------------------
|
|
203
|
+
export async function actionConfig(lang) {
|
|
204
|
+
breadcrumb(['Panguard', lang === 'zh-TW' ? '\u8A2D\u5B9A\u7BA1\u7406' : 'Settings']);
|
|
205
|
+
const { configCommand } = await import('../../commands/config.js');
|
|
206
|
+
const cmd = configCommand();
|
|
207
|
+
await cmd.parseAsync(['config'], { from: 'user' });
|
|
208
|
+
}
|
|
209
|
+
//# sourceMappingURL=misc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"misc.js","sourceRoot":"","sources":["../../../../src/cli/interactive/actions/misc.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Security scan action
|
|
3
|
+
* @module @panguard-ai/panguard/cli/interactive/actions/scan
|
|
4
|
+
*/
|
|
5
|
+
import type { Lang } from '../../menu.js';
|
|
6
|
+
export declare function actionScan(lang: Lang, guardAction: () => Promise<void>, auditAction: () => Promise<void>): Promise<void>;
|
|
7
|
+
//# sourceMappingURL=scan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../../../src/cli/interactive/actions/scan.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAY,IAAI,EAAE,MAAM,eAAe,CAAC;AAKpD,wBAAsB,UAAU,CAC9B,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAChC,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAC/B,OAAO,CAAC,IAAI,CAAC,CA6Jf"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Security scan action
|
|
3
|
+
* @module @panguard-ai/panguard/cli/interactive/actions/scan
|
|
4
|
+
*/
|
|
5
|
+
import { c, spinner, colorSeverity, formatDuration, box } from '@panguard-ai/core';
|
|
6
|
+
import { theme } from '../../theme.js';
|
|
7
|
+
import { renderCompactMenu, waitForCompactChoice } from '../../menu.js';
|
|
8
|
+
import { breadcrumb, nextSteps } from '../../ux-helpers.js';
|
|
9
|
+
import { getLicense } from '../../auth-guard.js';
|
|
10
|
+
import { isGuardRunning } from '../render.js';
|
|
11
|
+
export async function actionScan(lang, guardAction, auditAction) {
|
|
12
|
+
breadcrumb(['Panguard', lang === 'zh-TW' ? '\u5B89\u5168\u6383\u63CF' : 'Security Scan']);
|
|
13
|
+
const scanTitle = lang === 'zh-TW' ? '\u5B89\u5168\u6383\u63CF' : 'Security Scan';
|
|
14
|
+
console.log(` ${theme.brandBold(scanTitle)}`);
|
|
15
|
+
console.log('');
|
|
16
|
+
const depthItems = [
|
|
17
|
+
{
|
|
18
|
+
key: '1',
|
|
19
|
+
label: lang === 'zh-TW' ? '\u5FEB\u901F\u6383\u63CF (~30 \u79D2)' : 'Quick Scan (~30 seconds)',
|
|
20
|
+
},
|
|
21
|
+
{ key: '2', label: lang === 'zh-TW' ? '\u5B8C\u6574\u6383\u63CF' : 'Full Scan' },
|
|
22
|
+
];
|
|
23
|
+
renderCompactMenu(lang === 'zh-TW' ? '\u6383\u63CF\u6A21\u5F0F' : 'Scan Mode', depthItems);
|
|
24
|
+
const choice = await waitForCompactChoice(depthItems, lang);
|
|
25
|
+
if (!choice)
|
|
26
|
+
return;
|
|
27
|
+
const depth = choice.key === '1' ? 'quick' : 'full';
|
|
28
|
+
console.log('');
|
|
29
|
+
const { runScan } = await import('@panguard-ai/panguard-scan');
|
|
30
|
+
const sp = spinner(lang === 'zh-TW' ? '\u6B63\u5728\u6383\u63CF\u7CFB\u7D71\u5B89\u5168...' : 'Scanning system...');
|
|
31
|
+
const result = await runScan({ depth, lang, verbose: false });
|
|
32
|
+
sp.succeed(lang === 'zh-TW'
|
|
33
|
+
? `\u6383\u63CF\u5B8C\u6210 ${c.dim(`(${formatDuration(result.scanDuration)})`)}`
|
|
34
|
+
: `Scan complete ${c.dim(`(${formatDuration(result.scanDuration)})`)}`);
|
|
35
|
+
const safetyScore = Math.max(0, 100 - result.riskScore);
|
|
36
|
+
const grade = safetyScore >= 90
|
|
37
|
+
? 'A'
|
|
38
|
+
: safetyScore >= 75
|
|
39
|
+
? 'B'
|
|
40
|
+
: safetyScore >= 60
|
|
41
|
+
? 'C'
|
|
42
|
+
: safetyScore >= 40
|
|
43
|
+
? 'D'
|
|
44
|
+
: 'F';
|
|
45
|
+
console.log('');
|
|
46
|
+
const scoreLabel = lang === 'zh-TW' ? '\u6383\u63CF\u5B8C\u6210' : 'Scan Complete';
|
|
47
|
+
console.log(` ${theme.title(scoreLabel)}${' '.repeat(30)}Score: ${c.bold(`${safetyScore}/100`)} (${grade})`);
|
|
48
|
+
console.log('');
|
|
49
|
+
const { tier: _tier } = getLicense();
|
|
50
|
+
let fixableCount = 0;
|
|
51
|
+
if (result.findings.length > 0) {
|
|
52
|
+
for (const f of result.findings) {
|
|
53
|
+
const sev = colorSeverity(f.severity).padEnd(10);
|
|
54
|
+
console.log(` ${sev} ${f.title}`);
|
|
55
|
+
if (f.description) {
|
|
56
|
+
console.log(c.dim(` ${f.description}`));
|
|
57
|
+
}
|
|
58
|
+
if (f.manualFix && f.manualFix.length > 0) {
|
|
59
|
+
const fixLabel = lang === 'zh-TW' ? '\u4FEE\u5FA9:' : 'Fix:';
|
|
60
|
+
console.log(c.dim(` ${fixLabel}`));
|
|
61
|
+
for (const cmd of f.manualFix) {
|
|
62
|
+
console.log(c.dim(` $ ${cmd}`));
|
|
63
|
+
}
|
|
64
|
+
fixableCount++;
|
|
65
|
+
}
|
|
66
|
+
else if (f.remediation) {
|
|
67
|
+
const recLabel = lang === 'zh-TW' ? '\u5EFA\u8B70:' : 'Recommendation:';
|
|
68
|
+
console.log(c.dim(` ${recLabel} ${f.remediation}`));
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
console.log('');
|
|
72
|
+
const issuesText = lang === 'zh-TW'
|
|
73
|
+
? `${result.findings.length} \u500B\u554F\u984C`
|
|
74
|
+
: `${result.findings.length} issue(s) found`;
|
|
75
|
+
console.log(c.dim(` ${issuesText}`));
|
|
76
|
+
if (fixableCount > 0) {
|
|
77
|
+
const upgradeLines = lang === 'zh-TW'
|
|
78
|
+
? [`\u53EF\u81EA\u52D5\u4FEE\u5FA9:`, `$ panguard scan --fix`]
|
|
79
|
+
: [`Auto-fix available:`, `$ panguard scan --fix`];
|
|
80
|
+
console.log('');
|
|
81
|
+
console.log(box(upgradeLines.join('\n'), { borderColor: c.sage }));
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
const noIssues = lang === 'zh-TW' ? '\u672A\u767C\u73FE\u5B89\u5168\u554F\u984C' : 'No security issues found';
|
|
86
|
+
console.log(` ${c.safe(noIssues)}`);
|
|
87
|
+
}
|
|
88
|
+
const guardRunning = isGuardRunning().running;
|
|
89
|
+
if (!guardRunning) {
|
|
90
|
+
console.log('');
|
|
91
|
+
const agentMsg = lang === 'zh-TW'
|
|
92
|
+
? `${c.sage('\u25C6')} \u5373\u6642\u9632\u8B77\u5C1A\u672A\u555F\u52D5\u3002\u8981\u73FE\u5728\u555F\u7528\u55CE\uFF1F`
|
|
93
|
+
: `${c.sage('\u25C6')} Real-time protection is not active. Enable now?`;
|
|
94
|
+
console.log(` ${agentMsg}`);
|
|
95
|
+
const guardItems = [
|
|
96
|
+
{
|
|
97
|
+
key: '1',
|
|
98
|
+
label: lang === 'zh-TW'
|
|
99
|
+
? '\u662F\uFF0C\u555F\u52D5 Guard \u9632\u8B77'
|
|
100
|
+
: 'Yes, start Guard protection',
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
key: '2',
|
|
104
|
+
label: lang === 'zh-TW'
|
|
105
|
+
? '\u5BE9\u8A08\u5DF2\u5B89\u88DD\u6280\u80FD\u7684\u5B89\u5168\u5A01\u8105'
|
|
106
|
+
: 'Audit installed skills for threats',
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
key: '3',
|
|
110
|
+
label: lang === 'zh-TW'
|
|
111
|
+
? '\u4E0D\u7528\uFF0C\u56DE\u4E3B\u9078\u55AE'
|
|
112
|
+
: 'No, return to main menu',
|
|
113
|
+
},
|
|
114
|
+
];
|
|
115
|
+
renderCompactMenu('', guardItems);
|
|
116
|
+
const guardChoice = await waitForCompactChoice(guardItems, lang);
|
|
117
|
+
if (guardChoice?.key === '1') {
|
|
118
|
+
await guardAction();
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
if (guardChoice?.key === '2') {
|
|
122
|
+
await auditAction();
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
nextSteps(lang === 'zh-TW'
|
|
128
|
+
? [
|
|
129
|
+
{
|
|
130
|
+
cmd: '[8] \u6280\u80FD\u5BE9\u8A08',
|
|
131
|
+
desc: '\u5BE9\u8A08\u5DF2\u5B89\u88DD\u6280\u80FD\u7684\u5B89\u5168\u5A01\u8105',
|
|
132
|
+
},
|
|
133
|
+
{ cmd: 'scan --full', desc: '\u57F7\u884C\u5B8C\u6574\u6383\u63CF' },
|
|
134
|
+
{ cmd: 'guard start', desc: '\u555F\u52D5\u5373\u6642\u9632\u8B77' },
|
|
135
|
+
]
|
|
136
|
+
: [
|
|
137
|
+
{ cmd: '[8] Skill Auditor', desc: 'Audit installed skills for threats' },
|
|
138
|
+
{ cmd: 'scan --full', desc: 'Run a comprehensive scan' },
|
|
139
|
+
{ cmd: 'guard start', desc: 'Enable real-time protection' },
|
|
140
|
+
], lang);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=scan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../../../../src/cli/interactive/actions/scan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Setup & MCP connection actions
|
|
3
|
+
* @module @panguard-ai/panguard/cli/interactive/actions/setup
|
|
4
|
+
*/
|
|
5
|
+
import type { Lang } from '../../menu.js';
|
|
6
|
+
export declare function actionInit(lang: Lang): Promise<void>;
|
|
7
|
+
export declare function actionMCPSetup(lang: Lang): Promise<void>;
|
|
8
|
+
//# sourceMappingURL=setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../../src/cli/interactive/actions/setup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,wBAAsB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAI1D;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAsK9D"}
|