@panguard-ai/panguard-mcp 0.1.5 → 1.0.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/dist/config/mcp-injector.d.ts.map +1 -1
- package/dist/config/mcp-injector.js +45 -13
- package/dist/config/mcp-injector.js.map +1 -1
- package/dist/config/platform-detector.d.ts +3 -3
- package/dist/config/platform-detector.d.ts.map +1 -1
- package/dist/config/platform-detector.js +19 -53
- package/dist/config/platform-detector.js.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-injector.d.ts","sourceRoot":"","sources":["../../src/config/mcp-injector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"mcp-injector.d.ts","sourceRoot":"","sources":["../../src/config/mcp-injector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAKzD,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA0JD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,UAAU,GAAG,eAAe,CAwEvE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,UAAU,GAAG,eAAe,CAqCvE;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAErF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C"}
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
import { existsSync, mkdirSync, readFileSync, writeFileSync, copyFileSync, rmSync } from 'node:fs';
|
|
10
10
|
import { dirname, join } from 'node:path';
|
|
11
11
|
import { fileURLToPath } from 'node:url';
|
|
12
|
+
import { execFileSync } from 'node:child_process';
|
|
12
13
|
import { createLogger } from '@panguard-ai/core';
|
|
13
14
|
import { getConfigPath } from './platform-detector.js';
|
|
14
15
|
const logger = createLogger('panguard-mcp:injector');
|
|
@@ -71,15 +72,27 @@ function injectClaudeDesktop(configPath) {
|
|
|
71
72
|
}
|
|
72
73
|
/**
|
|
73
74
|
* Inject Panguard MCP config for Claude Code.
|
|
74
|
-
* Claude Code uses
|
|
75
|
-
*
|
|
75
|
+
* Claude Code uses `claude mcp add` CLI (not JSON file).
|
|
76
|
+
* Falls back to writing settings.local.json if CLI not available.
|
|
76
77
|
*/
|
|
77
|
-
function injectClaudeCode(
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
78
|
+
function injectClaudeCode(_configPath) {
|
|
79
|
+
try {
|
|
80
|
+
// Try `claude mcp add` first (the correct way for Claude Code)
|
|
81
|
+
execFileSync('claude', ['mcp', 'add', '--scope', 'user', 'panguard', '--', 'npx', '-y', '@panguard-ai/panguard-mcp'], {
|
|
82
|
+
timeout: 15_000,
|
|
83
|
+
stdio: 'pipe',
|
|
84
|
+
});
|
|
85
|
+
logger.info('Added Panguard MCP via `claude mcp add --scope user`');
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
// Fallback: write JSON directly (older Claude Code versions)
|
|
89
|
+
logger.warn('`claude mcp add` failed, falling back to JSON config');
|
|
90
|
+
const config = readJsonSafe(_configPath);
|
|
91
|
+
const servers = config['mcpServers'] ?? {};
|
|
92
|
+
servers['panguard'] = { ...PANGUARD_MCP_ENTRY };
|
|
93
|
+
config['mcpServers'] = servers;
|
|
94
|
+
writeFileSync(_configPath, JSON.stringify(config, null, 2), 'utf-8');
|
|
95
|
+
}
|
|
83
96
|
}
|
|
84
97
|
/**
|
|
85
98
|
* Inject Panguard MCP config for Cursor.
|
|
@@ -130,7 +143,7 @@ function injectOpenClawSkill(skillDir) {
|
|
|
130
143
|
'',
|
|
131
144
|
'# Panguard AI',
|
|
132
145
|
'',
|
|
133
|
-
'Security platform for AI agents with
|
|
146
|
+
'Security platform for AI agents with 10,400+ detection rules.',
|
|
134
147
|
'',
|
|
135
148
|
'## Commands',
|
|
136
149
|
'- `panguard audit skill .` -- Audit skills for threats',
|
|
@@ -169,14 +182,33 @@ export function injectMCPConfig(platformId) {
|
|
|
169
182
|
injectOpenClawSkill(configPath);
|
|
170
183
|
break;
|
|
171
184
|
case 'codex':
|
|
172
|
-
case 'workbuddy':
|
|
173
|
-
case 'nemoclaw':
|
|
174
|
-
case 'qclaw':
|
|
175
185
|
injectGenericMCP(configPath);
|
|
176
186
|
break;
|
|
177
187
|
}
|
|
178
188
|
// Verify the write succeeded
|
|
179
|
-
if (platformId === '
|
|
189
|
+
if (platformId === 'claude-code') {
|
|
190
|
+
// Claude Code: verify via `claude mcp list`
|
|
191
|
+
try {
|
|
192
|
+
const output = execFileSync('claude', ['mcp', 'list'], {
|
|
193
|
+
timeout: 10_000,
|
|
194
|
+
stdio: 'pipe',
|
|
195
|
+
}).toString();
|
|
196
|
+
if (output.includes('panguard')) {
|
|
197
|
+
result.success = true;
|
|
198
|
+
logger.info('Verified Panguard MCP in Claude Code via `claude mcp list`');
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
// Might take a moment to register, assume success if inject didn't throw
|
|
202
|
+
result.success = true;
|
|
203
|
+
logger.info('Panguard MCP added to Claude Code (pending verification)');
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
catch {
|
|
207
|
+
result.success = true; // inject didn't throw, assume OK
|
|
208
|
+
logger.info('Panguard MCP injected into Claude Code');
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
else if (platformId === 'openclaw') {
|
|
180
212
|
// OpenClaw uses SKILL.md, not JSON
|
|
181
213
|
if (existsSync(join(configPath, 'SKILL.md'))) {
|
|
182
214
|
result.success = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-injector.js","sourceRoot":"","sources":["../../src/config/mcp-injector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACnG,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,MAAM,MAAM,GAAG,YAAY,CAAC,uBAAuB,CAAC,CAAC;AAUrD,0DAA0D;AAC1D,MAAM,kBAAkB,GAAG;IACzB,OAAO,EAAE,KAAK;IACd,IAAI,EAAE,CAAC,IAAI,EAAE,2BAA2B,CAAC;CAC1C,CAAC;AAEF;;;GAGG;AACH,SAAS,YAAY,CAAC,QAAgB;IACpC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,CAAC;IACrC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACnE,OAAO,MAAiC,CAAC;QAC3C,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,UAAU,CAAC,QAAgB;IAClC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5C,MAAM,UAAU,GAAG,GAAG,QAAQ,QAAQ,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IACnD,YAAY,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACnC,MAAM,CAAC,IAAI,CAAC,aAAa,QAAQ,OAAO,UAAU,EAAE,CAAC,CAAC;IACtD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,SAAS,SAAS,CAAC,QAAgB;IACjC,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,mBAAmB,CAAC,UAAkB;IAC7C,MAAM,MAAM,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;IACxC,MAAM,OAAO,GAAI,MAAM,CAAC,YAAY,CAA6B,IAAI,EAAE,CAAC;IACxE,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,kBAAkB,EAAE,CAAC;IAChD,MAAM,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC;IAC/B,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACtE,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"mcp-injector.js","sourceRoot":"","sources":["../../src/config/mcp-injector.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
* Platform Detector - Detect installed AI agent runtimes
|
|
3
3
|
* 平台偵測器 - 偵測已安裝的 AI Agent 執行環境
|
|
4
4
|
*
|
|
5
|
-
* Detects Claude Code,
|
|
6
|
-
* 偵測 Claude Code、Cursor、OpenClaw
|
|
5
|
+
* Detects Claude Code, Claude Desktop, Cursor, OpenClaw, and Codex.
|
|
6
|
+
* 偵測 Claude Code、Claude Desktop、Cursor、OpenClaw 和 Codex。
|
|
7
7
|
*
|
|
8
8
|
* @module @panguard-ai/panguard-mcp/config/platform-detector
|
|
9
9
|
*/
|
|
10
|
-
export type PlatformId = 'claude-code' | 'claude-desktop' | 'cursor' | 'openclaw' | 'codex'
|
|
10
|
+
export type PlatformId = 'claude-code' | 'claude-desktop' | 'cursor' | 'openclaw' | 'codex';
|
|
11
11
|
export interface DetectedPlatform {
|
|
12
12
|
id: PlatformId;
|
|
13
13
|
name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform-detector.d.ts","sourceRoot":"","sources":["../../src/config/platform-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAUH,MAAM,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"platform-detector.d.ts","sourceRoot":"","sources":["../../src/config/platform-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAUH,MAAM,MAAM,UAAU,GAAG,aAAa,GAAG,gBAAgB,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;AAE5F,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,UAAU,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAyFD;;;;;GAKG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAsEnE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAa5D"}
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
* Platform Detector - Detect installed AI agent runtimes
|
|
3
3
|
* 平台偵測器 - 偵測已安裝的 AI Agent 執行環境
|
|
4
4
|
*
|
|
5
|
-
* Detects Claude Code,
|
|
6
|
-
* 偵測 Claude Code、Cursor、OpenClaw
|
|
5
|
+
* Detects Claude Code, Claude Desktop, Cursor, OpenClaw, and Codex.
|
|
6
|
+
* 偵測 Claude Code、Claude Desktop、Cursor、OpenClaw 和 Codex。
|
|
7
7
|
*
|
|
8
8
|
* @module @panguard-ai/panguard-mcp/config/platform-detector
|
|
9
9
|
*/
|
|
10
10
|
import { existsSync, readFileSync } from 'node:fs';
|
|
11
11
|
import { join } from 'node:path';
|
|
12
12
|
import { homedir, platform } from 'node:os';
|
|
13
|
-
import { execFile } from 'node:child_process';
|
|
13
|
+
import { execFile, execFileSync } from 'node:child_process';
|
|
14
14
|
import { createLogger } from '@panguard-ai/core';
|
|
15
15
|
const logger = createLogger('panguard-mcp:platform-detector');
|
|
16
16
|
/** Check if a command exists on PATH. */
|
|
@@ -40,6 +40,20 @@ function hasPanguardMCPEntry(filePath) {
|
|
|
40
40
|
return false;
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
|
+
/** Check if Claude Code has panguard MCP configured via `claude mcp list`. */
|
|
44
|
+
function hasClaudeCodePanguard() {
|
|
45
|
+
try {
|
|
46
|
+
const output = execFileSync('claude', ['mcp', 'list'], {
|
|
47
|
+
timeout: 10_000,
|
|
48
|
+
stdio: 'pipe',
|
|
49
|
+
}).toString();
|
|
50
|
+
return output.includes('panguard');
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
// Fallback: check JSON config
|
|
54
|
+
return hasPanguardMCPEntry(getClaudeCodeConfigPath());
|
|
55
|
+
}
|
|
56
|
+
}
|
|
43
57
|
/** Check if OpenClaw has the panguard skill installed. */
|
|
44
58
|
function hasOpenClawSkill() {
|
|
45
59
|
return existsSync(getOpenClawSkillPath());
|
|
@@ -76,18 +90,6 @@ function getOpenClawSkillDir() {
|
|
|
76
90
|
function getCodexConfigPath() {
|
|
77
91
|
return join(homedir(), '.codex', 'mcp.json');
|
|
78
92
|
}
|
|
79
|
-
/** Get the MCP config path for Workbuddy. */
|
|
80
|
-
function getWorkbuddyConfigPath() {
|
|
81
|
-
return join(homedir(), '.workbuddy', '.mcp.json');
|
|
82
|
-
}
|
|
83
|
-
/** Get the MCP config path for NemoClaw. */
|
|
84
|
-
function getNemoClawConfigPath() {
|
|
85
|
-
return join(homedir(), '.nemoclaw', 'mcp.json');
|
|
86
|
-
}
|
|
87
|
-
/** Get the MCP config path for QClaw. */
|
|
88
|
-
function getQClawConfigPath() {
|
|
89
|
-
return join(homedir(), '.qclaw', 'mcp.json');
|
|
90
|
-
}
|
|
91
93
|
/**
|
|
92
94
|
* Detect all supported AI agent platforms.
|
|
93
95
|
* 偵測所有支援的 AI Agent 平台。
|
|
@@ -96,7 +98,7 @@ function getQClawConfigPath() {
|
|
|
96
98
|
*/
|
|
97
99
|
export async function detectPlatforms() {
|
|
98
100
|
const platforms = [];
|
|
99
|
-
// Claude Code
|
|
101
|
+
// Claude Code (uses `claude mcp add` CLI, not JSON config)
|
|
100
102
|
const claudeCodePath = getClaudeCodeConfigPath();
|
|
101
103
|
const claudeCodeDetected = (await commandExists('claude')) || existsSync(join(homedir(), '.claude'));
|
|
102
104
|
platforms.push({
|
|
@@ -104,7 +106,7 @@ export async function detectPlatforms() {
|
|
|
104
106
|
name: 'Claude Code',
|
|
105
107
|
configPath: claudeCodePath,
|
|
106
108
|
detected: claudeCodeDetected,
|
|
107
|
-
alreadyConfigured:
|
|
109
|
+
alreadyConfigured: hasClaudeCodePanguard(),
|
|
108
110
|
});
|
|
109
111
|
// Claude Desktop
|
|
110
112
|
const claudeDesktopPath = getClaudeDesktopConfigPath();
|
|
@@ -149,36 +151,6 @@ export async function detectPlatforms() {
|
|
|
149
151
|
detected: codexDetected,
|
|
150
152
|
alreadyConfigured: hasPanguardMCPEntry(codexPath),
|
|
151
153
|
});
|
|
152
|
-
// Workbuddy
|
|
153
|
-
const workbuddyPath = getWorkbuddyConfigPath();
|
|
154
|
-
const workbuddyDetected = (await commandExists('workbuddy')) || existsSync(join(homedir(), '.workbuddy'));
|
|
155
|
-
platforms.push({
|
|
156
|
-
id: 'workbuddy',
|
|
157
|
-
name: 'Workbuddy',
|
|
158
|
-
configPath: workbuddyPath,
|
|
159
|
-
detected: workbuddyDetected,
|
|
160
|
-
alreadyConfigured: hasPanguardMCPEntry(workbuddyPath),
|
|
161
|
-
});
|
|
162
|
-
// NemoClaw
|
|
163
|
-
const nemoclawPath = getNemoClawConfigPath();
|
|
164
|
-
const nemoclawDetected = (await commandExists('nemoclaw')) || existsSync(join(homedir(), '.nemoclaw'));
|
|
165
|
-
platforms.push({
|
|
166
|
-
id: 'nemoclaw',
|
|
167
|
-
name: 'NemoClaw',
|
|
168
|
-
configPath: nemoclawPath,
|
|
169
|
-
detected: nemoclawDetected,
|
|
170
|
-
alreadyConfigured: hasPanguardMCPEntry(nemoclawPath),
|
|
171
|
-
});
|
|
172
|
-
// QClaw (Tencent)
|
|
173
|
-
const qclawPath = getQClawConfigPath();
|
|
174
|
-
const qclawDetected = (await commandExists('qclaw')) || existsSync(join(homedir(), '.qclaw'));
|
|
175
|
-
platforms.push({
|
|
176
|
-
id: 'qclaw',
|
|
177
|
-
name: 'QClaw',
|
|
178
|
-
configPath: qclawPath,
|
|
179
|
-
detected: qclawDetected,
|
|
180
|
-
alreadyConfigured: hasPanguardMCPEntry(qclawPath),
|
|
181
|
-
});
|
|
182
154
|
const detected = platforms.filter((p) => p.detected);
|
|
183
155
|
logger.info(`Detected ${detected.length} platform(s): ${detected.map((p) => p.name).join(', ') || 'none'}`);
|
|
184
156
|
return platforms;
|
|
@@ -199,12 +171,6 @@ export function getConfigPath(platformId) {
|
|
|
199
171
|
return getOpenClawSkillDir();
|
|
200
172
|
case 'codex':
|
|
201
173
|
return getCodexConfigPath();
|
|
202
|
-
case 'workbuddy':
|
|
203
|
-
return getWorkbuddyConfigPath();
|
|
204
|
-
case 'nemoclaw':
|
|
205
|
-
return getNemoClawConfigPath();
|
|
206
|
-
case 'qclaw':
|
|
207
|
-
return getQClawConfigPath();
|
|
208
174
|
}
|
|
209
175
|
}
|
|
210
176
|
//# sourceMappingURL=platform-detector.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform-detector.js","sourceRoot":"","sources":["../../src/config/platform-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"platform-detector.js","sourceRoot":"","sources":["../../src/config/platform-detector.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@panguard-ai/panguard-mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -32,10 +32,10 @@
|
|
|
32
32
|
],
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"@modelcontextprotocol/sdk": "^1.12.0",
|
|
35
|
-
"@panguard-ai/core": "0.
|
|
36
|
-
"@panguard-ai/panguard-
|
|
37
|
-
"@panguard-ai/panguard-
|
|
38
|
-
"@panguard-ai/panguard-
|
|
35
|
+
"@panguard-ai/core": "1.0.0",
|
|
36
|
+
"@panguard-ai/panguard-scan": "1.0.0",
|
|
37
|
+
"@panguard-ai/panguard-guard": "1.0.0",
|
|
38
|
+
"@panguard-ai/panguard-skill-auditor": "1.0.0"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"@types/node": "^22.14.0",
|