@panguard-ai/panguard 0.3.8 → 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.
Files changed (69) hide show
  1. package/dist/cli/commands/audit.d.ts.map +1 -1
  2. package/dist/cli/commands/audit.js +28 -1
  3. package/dist/cli/commands/audit.js.map +1 -1
  4. package/dist/cli/commands/serve-admin.d.ts +11 -0
  5. package/dist/cli/commands/serve-admin.d.ts.map +1 -0
  6. package/dist/cli/commands/serve-admin.js +302 -0
  7. package/dist/cli/commands/serve-admin.js.map +1 -0
  8. package/dist/cli/commands/serve-auth.d.ts +11 -0
  9. package/dist/cli/commands/serve-auth.d.ts.map +1 -0
  10. package/dist/cli/commands/serve-auth.js +119 -0
  11. package/dist/cli/commands/serve-auth.js.map +1 -0
  12. package/dist/cli/commands/serve-core.d.ts +25 -0
  13. package/dist/cli/commands/serve-core.d.ts.map +1 -0
  14. package/dist/cli/commands/serve-core.js +258 -0
  15. package/dist/cli/commands/serve-core.js.map +1 -0
  16. package/dist/cli/commands/serve-tc.d.ts +12 -0
  17. package/dist/cli/commands/serve-tc.d.ts.map +1 -0
  18. package/dist/cli/commands/serve-tc.js +296 -0
  19. package/dist/cli/commands/serve-tc.js.map +1 -0
  20. package/dist/cli/commands/serve-types.d.ts +38 -0
  21. package/dist/cli/commands/serve-types.d.ts.map +1 -0
  22. package/dist/cli/commands/serve-types.js +108 -0
  23. package/dist/cli/commands/serve-types.js.map +1 -0
  24. package/dist/cli/commands/serve.d.ts +6 -0
  25. package/dist/cli/commands/serve.d.ts.map +1 -1
  26. package/dist/cli/commands/serve.js +41 -1144
  27. package/dist/cli/commands/serve.js.map +1 -1
  28. package/dist/cli/commands/setup.js +2 -2
  29. package/dist/cli/commands/setup.js.map +1 -1
  30. package/dist/cli/interactive/actions/audit.d.ts +7 -0
  31. package/dist/cli/interactive/actions/audit.d.ts.map +1 -0
  32. package/dist/cli/interactive/actions/audit.js +198 -0
  33. package/dist/cli/interactive/actions/audit.js.map +1 -0
  34. package/dist/cli/interactive/actions/demo.d.ts +7 -0
  35. package/dist/cli/interactive/actions/demo.d.ts.map +1 -0
  36. package/dist/cli/interactive/actions/demo.js +113 -0
  37. package/dist/cli/interactive/actions/demo.js.map +1 -0
  38. package/dist/cli/interactive/actions/guard.d.ts +7 -0
  39. package/dist/cli/interactive/actions/guard.d.ts.map +1 -0
  40. package/dist/cli/interactive/actions/guard.js +164 -0
  41. package/dist/cli/interactive/actions/guard.js.map +1 -0
  42. package/dist/cli/interactive/actions/misc.d.ts +13 -0
  43. package/dist/cli/interactive/actions/misc.d.ts.map +1 -0
  44. package/dist/cli/interactive/actions/misc.js +209 -0
  45. package/dist/cli/interactive/actions/misc.js.map +1 -0
  46. package/dist/cli/interactive/actions/scan.d.ts +7 -0
  47. package/dist/cli/interactive/actions/scan.d.ts.map +1 -0
  48. package/dist/cli/interactive/actions/scan.js +143 -0
  49. package/dist/cli/interactive/actions/scan.js.map +1 -0
  50. package/dist/cli/interactive/actions/setup.d.ts +8 -0
  51. package/dist/cli/interactive/actions/setup.d.ts.map +1 -0
  52. package/dist/cli/interactive/actions/setup.js +130 -0
  53. package/dist/cli/interactive/actions/setup.js.map +1 -0
  54. package/dist/cli/interactive/lang.d.ts +11 -0
  55. package/dist/cli/interactive/lang.d.ts.map +1 -0
  56. package/dist/cli/interactive/lang.js +51 -0
  57. package/dist/cli/interactive/lang.js.map +1 -0
  58. package/dist/cli/interactive/menu-defs.d.ts +17 -0
  59. package/dist/cli/interactive/menu-defs.d.ts.map +1 -0
  60. package/dist/cli/interactive/menu-defs.js +106 -0
  61. package/dist/cli/interactive/menu-defs.js.map +1 -0
  62. package/dist/cli/interactive/render.d.ts +16 -0
  63. package/dist/cli/interactive/render.d.ts.map +1 -0
  64. package/dist/cli/interactive/render.js +145 -0
  65. package/dist/cli/interactive/render.js.map +1 -0
  66. package/dist/cli/interactive.d.ts.map +1 -1
  67. package/dist/cli/interactive.js +64 -1322
  68. package/dist/cli/interactive.js.map +1 -1
  69. package/package.json +7 -6
@@ -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,7 @@
1
+ /**
2
+ * Guard engine action
3
+ * @module @panguard-ai/panguard/cli/interactive/actions/guard
4
+ */
5
+ import type { Lang } from '../../menu.js';
6
+ export declare function actionGuard(lang: Lang): Promise<void>;
7
+ //# sourceMappingURL=guard.d.ts.map
@@ -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"}