@panguard-ai/panguard-skill-auditor 1.9.0 → 1.10.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.
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Collect the script files a skill ships next to SKILL.md, for the ATR scan.
3
+ * 收集技能附帶的腳本檔,供 ATR 掃描。
4
+ *
5
+ * Every limit that drops a file is counted in `skipped`, so the caller can
6
+ * report a scan that did not see everything instead of calling it clean.
7
+ *
8
+ * @module @panguard-ai/panguard-skill-auditor/bundled-scripts
9
+ */
10
+ /** A single file larger than this is skipped / 超過此大小的單一檔案略過 */
11
+ export declare const MAX_SCRIPT_BYTES: number;
12
+ /** Total bytes read per skill / 每個技能讀取的總位元組上限 */
13
+ export declare const MAX_TOTAL_BYTES: number;
14
+ /** At most this many files are read per skill / 每個技能最多讀取的檔案數 */
15
+ export declare const MAX_SCRIPT_FILES = 200;
16
+ export interface BundledScript {
17
+ /** Path relative to the skill directory, with forward slashes and no control characters */
18
+ readonly path: string;
19
+ readonly content: string;
20
+ }
21
+ /** Script files the walk found but did not return, by reason */
22
+ export interface SkippedScripts {
23
+ readonly oversize: number;
24
+ readonly overTotal: number;
25
+ readonly overCount: number;
26
+ readonly tooDeep: number;
27
+ readonly binary: number;
28
+ readonly minified: number;
29
+ }
30
+ export interface BundledScriptSet {
31
+ readonly scripts: readonly BundledScript[];
32
+ readonly skipped: SkippedScripts;
33
+ }
34
+ /** Total number of skipped script files */
35
+ export declare function skippedCount(skipped: SkippedScripts): number;
36
+ /**
37
+ * Read the script files under a skill directory.
38
+ *
39
+ * Returns nothing for a single-file skill (a path to a .md file), since there is
40
+ * no directory of its own to read. Symbolic links are not followed. Files are
41
+ * taken breadth first, with `scripts/`, `bin/`, `hooks/`, `src/` and `lib/`
42
+ * ahead of other directories at the top level.
43
+ */
44
+ export declare function collectBundledScripts(skillDir: string): Promise<BundledScriptSet>;
45
+ //# sourceMappingURL=bundled-scripts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundled-scripts.d.ts","sourceRoot":"","sources":["../src/bundled-scripts.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAoDH,+DAA+D;AAC/D,eAAO,MAAM,gBAAgB,QAAa,CAAC;AAE3C,iDAAiD;AACjD,eAAO,MAAM,eAAe,QAAkB,CAAC;AAE/C,gEAAgE;AAChE,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAKpC,MAAM,WAAW,aAAa;IAC5B,2FAA2F;IAC3F,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,gEAAgE;AAChE,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,SAAS,aAAa,EAAE,CAAC;IAC3C,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;CAClC;AAWD,2CAA2C;AAC3C,wBAAgB,YAAY,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAS5D;AAOD;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA0CvF"}
@@ -0,0 +1,226 @@
1
+ /**
2
+ * Collect the script files a skill ships next to SKILL.md, for the ATR scan.
3
+ * 收集技能附帶的腳本檔,供 ATR 掃描。
4
+ *
5
+ * Every limit that drops a file is counted in `skipped`, so the caller can
6
+ * report a scan that did not see everything instead of calling it clean.
7
+ *
8
+ * @module @panguard-ai/panguard-skill-auditor/bundled-scripts
9
+ */
10
+ import { readdir, readFile, stat } from 'node:fs/promises';
11
+ import { extname, join, relative, sep } from 'node:path';
12
+ /** Extensions of files an agent can run or import / 代理可執行或匯入的檔案副檔名 */
13
+ const SCRIPT_EXTENSIONS = new Set([
14
+ '.py',
15
+ '.pyw',
16
+ '.js',
17
+ '.mjs',
18
+ '.cjs',
19
+ '.ts',
20
+ '.mts',
21
+ '.cts',
22
+ '.sh',
23
+ '.bash',
24
+ '.zsh',
25
+ '.ps1',
26
+ '.psm1',
27
+ '.bat',
28
+ '.cmd',
29
+ '.vbs',
30
+ '.rb',
31
+ '.pl',
32
+ '.php',
33
+ ]);
34
+ /**
35
+ * Directories never read: third-party dependencies, VCS data and bytecode
36
+ * (`.pyc` files are reported by the code check's compiled-artifact scan).
37
+ */
38
+ const SKIPPED_DIRS = new Set([
39
+ '.git',
40
+ 'node_modules',
41
+ '__pycache__',
42
+ '.venv',
43
+ 'venv',
44
+ 'site-packages',
45
+ 'vendor',
46
+ ]);
47
+ /** Top-level directories read first, so a pile of other files cannot push them past the cap */
48
+ const PRIORITY_DIRS = ['scripts', 'bin', 'hooks', 'src', 'lib'];
49
+ /**
50
+ * Build and test output, read last at the top level. A skill can tell the agent
51
+ * to run what is in dist/ or build/, so these are read, but a large committed
52
+ * bundle should not push hand-written scripts past the file cap.
53
+ */
54
+ const LAST_DIRS = new Set(['dist', 'build', '.next', 'target', 'coverage']);
55
+ /** A single file larger than this is skipped / 超過此大小的單一檔案略過 */
56
+ export const MAX_SCRIPT_BYTES = 256 * 1024;
57
+ /** Total bytes read per skill / 每個技能讀取的總位元組上限 */
58
+ export const MAX_TOTAL_BYTES = 2 * 1024 * 1024;
59
+ /** At most this many files are read per skill / 每個技能最多讀取的檔案數 */
60
+ export const MAX_SCRIPT_FILES = 200;
61
+ /** Directory depth limit, so a symlink loop or deep tree cannot stall the audit */
62
+ const MAX_DEPTH = 8;
63
+ const NONE = {
64
+ oversize: 0,
65
+ overTotal: 0,
66
+ overCount: 0,
67
+ tooDeep: 0,
68
+ binary: 0,
69
+ minified: 0,
70
+ };
71
+ /** Total number of skipped script files */
72
+ export function skippedCount(skipped) {
73
+ return (skipped.oversize +
74
+ skipped.overTotal +
75
+ skipped.overCount +
76
+ skipped.tooDeep +
77
+ skipped.binary +
78
+ skipped.minified);
79
+ }
80
+ /**
81
+ * Read the script files under a skill directory.
82
+ *
83
+ * Returns nothing for a single-file skill (a path to a .md file), since there is
84
+ * no directory of its own to read. Symbolic links are not followed. Files are
85
+ * taken breadth first, with `scripts/`, `bin/`, `hooks/`, `src/` and `lib/`
86
+ * ahead of other directories at the top level.
87
+ */
88
+ export async function collectBundledScripts(skillDir) {
89
+ if (skillDir.endsWith('.md'))
90
+ return { scripts: [], skipped: NONE };
91
+ try {
92
+ if (!(await stat(skillDir)).isDirectory())
93
+ return { scripts: [], skipped: NONE };
94
+ }
95
+ catch {
96
+ return { scripts: [], skipped: NONE };
97
+ }
98
+ const { candidates, oversize, tooDeep, minified } = await walk(skillDir);
99
+ const scripts = [];
100
+ let totalBytes = 0;
101
+ let overTotal = 0;
102
+ let overCount = 0;
103
+ let binary = 0;
104
+ for (const candidate of candidates) {
105
+ if (scripts.length >= MAX_SCRIPT_FILES) {
106
+ overCount++;
107
+ continue;
108
+ }
109
+ if (totalBytes + candidate.size > MAX_TOTAL_BYTES) {
110
+ overTotal++;
111
+ continue;
112
+ }
113
+ let content;
114
+ try {
115
+ content = await readFile(candidate.full, 'utf8');
116
+ }
117
+ catch {
118
+ continue; // Unreadable or vanished: skip rather than fail the audit
119
+ }
120
+ if (content.includes('\u0000')) {
121
+ binary++;
122
+ continue;
123
+ }
124
+ totalBytes += candidate.size;
125
+ scripts.push({ path: displayPath(skillDir, candidate.full), content });
126
+ }
127
+ return {
128
+ scripts,
129
+ skipped: { oversize, overTotal, overCount, tooDeep, binary, minified },
130
+ };
131
+ }
132
+ function displayPath(root, full) {
133
+ return relative(root, full)
134
+ .split(sep)
135
+ .join('/')
136
+ .replace(/[\u0000-\u001f\u007f]/g, '?'); // eslint-disable-line no-control-regex
137
+ }
138
+ async function walk(root) {
139
+ const candidates = [];
140
+ let oversize = 0;
141
+ let tooDeep = 0;
142
+ let minified = 0;
143
+ let level = [root];
144
+ for (let depth = 0; level.length > 0; depth++) {
145
+ const next = [];
146
+ for (const dir of level) {
147
+ let entries;
148
+ try {
149
+ entries = await readdir(dir, { withFileTypes: true });
150
+ }
151
+ catch {
152
+ continue;
153
+ }
154
+ for (const entry of sortEntries(entries, dir === root)) {
155
+ const full = join(dir, entry.name);
156
+ if (entry.isDirectory()) {
157
+ if (SKIPPED_DIRS.has(entry.name))
158
+ continue;
159
+ if (depth + 1 > MAX_DEPTH) {
160
+ tooDeep += await countScripts(full);
161
+ }
162
+ else {
163
+ next.push(full);
164
+ }
165
+ }
166
+ else if (entry.isFile() && isMinified(entry.name)) {
167
+ minified++;
168
+ }
169
+ else if (entry.isFile() && isScript(entry.name)) {
170
+ try {
171
+ const size = (await stat(full)).size;
172
+ if (size > MAX_SCRIPT_BYTES)
173
+ oversize++;
174
+ else
175
+ candidates.push({ full, size });
176
+ }
177
+ catch {
178
+ // Vanished between readdir and stat: skip
179
+ }
180
+ }
181
+ }
182
+ }
183
+ level = next;
184
+ }
185
+ return { candidates, oversize, tooDeep, minified };
186
+ }
187
+ function isScript(name) {
188
+ return SCRIPT_EXTENSIONS.has(extname(name).toLowerCase()) && !isMinified(name);
189
+ }
190
+ function isMinified(name) {
191
+ return /\.min\.js$/i.test(name);
192
+ }
193
+ function sortEntries(entries, atRoot) {
194
+ const rank = (name) => {
195
+ if (!atRoot)
196
+ return PRIORITY_DIRS.length;
197
+ if (LAST_DIRS.has(name))
198
+ return PRIORITY_DIRS.length + 1;
199
+ const i = PRIORITY_DIRS.indexOf(name);
200
+ return i === -1 ? PRIORITY_DIRS.length : i;
201
+ };
202
+ return [...entries].sort((a, b) => rank(a.name) - rank(b.name) || a.name.localeCompare(b.name));
203
+ }
204
+ /** Count script files below a directory the walk will not enter, without reading them */
205
+ async function countScripts(dir, budget = { left: 1000 }) {
206
+ let count = 0;
207
+ let entries;
208
+ try {
209
+ entries = await readdir(dir, { withFileTypes: true });
210
+ }
211
+ catch {
212
+ return 0;
213
+ }
214
+ for (const entry of entries) {
215
+ if (budget.left-- <= 0)
216
+ break;
217
+ if (entry.isDirectory() && !SKIPPED_DIRS.has(entry.name)) {
218
+ count += await countScripts(join(dir, entry.name), budget);
219
+ }
220
+ else if (entry.isFile() && (isScript(entry.name) || isMinified(entry.name))) {
221
+ count++;
222
+ }
223
+ }
224
+ return count;
225
+ }
226
+ //# sourceMappingURL=bundled-scripts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundled-scripts.js","sourceRoot":"","sources":["../src/bundled-scripts.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,7 @@ import type { CheckResult, SkillManifest } from '../types.js';
18
18
  * single-pattern prompt-injection rules scanSkill's FP gate suppresses)
19
19
  * 2. Skill description via the same dual path
20
20
  * 3. MCP tool descriptions (if present in metadata) as tool_call events
21
+ * 4. Script files bundled in the skill directory, when `skillDir` is given
21
22
  *
22
23
  * Returns a CheckResult compatible with the Skill Auditor pipeline.
23
24
  */
@@ -26,5 +27,5 @@ export declare function checkWithATR(manifest: SkillManifest, cloudRules?: Array
26
27
  title: string;
27
28
  detection: unknown;
28
29
  [key: string]: unknown;
29
- }>): Promise<CheckResult>;
30
+ }>, skillDir?: string): Promise<CheckResult>;
30
31
  //# sourceMappingURL=atr-check.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"atr-check.d.ts","sourceRoot":"","sources":["../../src/checks/atr-check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,KAAK,EAAgB,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AA0K5E;;;;;;;;;;GAUG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,aAAa,EACvB,UAAU,CAAC,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC,GAC5F,OAAO,CAAC,WAAW,CAAC,CAuJtB"}
1
+ {"version":3,"file":"atr-check.d.ts","sourceRoot":"","sources":["../../src/checks/atr-check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,KAAK,EAAgB,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAwQ5E;;;;;;;;;;;GAWG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,aAAa,EACvB,UAAU,CAAC,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC,EAC7F,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,WAAW,CAAC,CA8JtB"}
@@ -14,6 +14,7 @@ import { fileURLToPath } from 'node:url';
14
14
  import { existsSync } from 'node:fs';
15
15
  import { createRequire } from 'node:module';
16
16
  import { filterInjectableCloudRules } from './cloud-rule-guard.js';
17
+ import { collectBundledScripts, skippedCount, MAX_SCRIPT_BYTES, MAX_SCRIPT_FILES, MAX_TOTAL_BYTES, } from '../bundled-scripts.js';
17
18
  const CHECK_LABEL = 'ATR Pattern Detection';
18
19
  // ---------------------------------------------------------------------------
19
20
  // Capability declaration detection (mirrors scan-core context-signals logic)
@@ -122,6 +123,84 @@ function buildToolCallEvent(toolName, description, inputSchema) {
122
123
  },
123
124
  };
124
125
  }
126
+ /**
127
+ * Whether a rule may report on a bundled script: maturity stable or test, the
128
+ * rules the alert lane runs. Experimental and draft rules stay on SKILL.md text,
129
+ * where they were measured; on ordinary code they misfire more.
130
+ */
131
+ function isScriptGradeRule(match) {
132
+ const maturity = String(match.rule.maturity ?? '').toLowerCase();
133
+ return maturity === 'stable' || maturity === 'test';
134
+ }
135
+ /** Wall-clock budget for scanning one skill's scripts / 單一技能腳本掃描的時間上限 */
136
+ const SCRIPT_SCAN_BUDGET_MS = 15_000;
137
+ /** How many other files a script finding names before it says "and N more" */
138
+ const LISTED_FILES = 3;
139
+ /**
140
+ * Scan each bundled script through the skill entry point.
141
+ *
142
+ * One finding per rule, located at the first file it matched, so the risk score
143
+ * counts a rule once however many files repeat it; the other files are named in
144
+ * `location`. When a limit dropped a file, or the time budget ran out, a high
145
+ * finding says the scan was incomplete, so a skill cannot score LOW by hiding a
146
+ * script past a limit.
147
+ */
148
+ async function scanBundledScripts(engine, skillDir) {
149
+ const { scripts, skipped } = await collectBundledScripts(skillDir);
150
+ const byRule = new Map();
151
+ const deadline = Date.now() + SCRIPT_SCAN_BUDGET_MS;
152
+ let unscanned = 0;
153
+ for (const script of scripts) {
154
+ if (Date.now() > deadline) {
155
+ unscanned++;
156
+ continue;
157
+ }
158
+ const matches = engine.scanSkill(script.content).filter(isScriptGradeRule);
159
+ for (const f of matchesToFindings(matches)) {
160
+ const seen = byRule.get(f.id);
161
+ if (seen) {
162
+ seen.files.push(script.path);
163
+ }
164
+ else {
165
+ byRule.set(f.id, {
166
+ finding: { ...f, location: f.location ? `${script.path}: ${f.location}` : script.path },
167
+ files: [],
168
+ });
169
+ }
170
+ }
171
+ // Yield between files so a bulk scan's other work is not starved
172
+ await new Promise((done) => setImmediate(done));
173
+ }
174
+ const findings = [...byRule.values()].map(({ finding, files }) => {
175
+ if (files.length === 0)
176
+ return finding;
177
+ const named = files.slice(0, LISTED_FILES).join(', ');
178
+ const more = files.length > LISTED_FILES ? ` and ${files.length - LISTED_FILES} more` : '';
179
+ return { ...finding, location: `${finding.location} (also in ${named}${more})` };
180
+ });
181
+ const notSeen = skippedCount(skipped) + unscanned;
182
+ if (notSeen > 0) {
183
+ const reasons = [
184
+ skipped.oversize && `${skipped.oversize} over ${MAX_SCRIPT_BYTES / 1024} KB`,
185
+ skipped.overTotal &&
186
+ `${skipped.overTotal} past the ${MAX_TOTAL_BYTES / 1024 / 1024} MB total`,
187
+ skipped.overCount && `${skipped.overCount} past the ${MAX_SCRIPT_FILES}-file cap`,
188
+ skipped.tooDeep && `${skipped.tooDeep} nested too deep`,
189
+ skipped.binary && `${skipped.binary} containing NUL bytes`,
190
+ skipped.minified && `${skipped.minified} minified (.min.js)`,
191
+ unscanned && `${unscanned} after the ${SCRIPT_SCAN_BUDGET_MS / 1000} s time budget`,
192
+ ].filter(Boolean);
193
+ findings.push({
194
+ id: 'atr-scripts-incomplete',
195
+ title: 'Some bundled scripts were not scanned',
196
+ description: `${notSeen} script file(s) in this skill were not checked against ATR rules: ` +
197
+ `${reasons.join('; ')}. Review them by hand before trusting this result.`,
198
+ severity: 'high',
199
+ category: 'atr',
200
+ });
201
+ }
202
+ return findings;
203
+ }
125
204
  /**
126
205
  * Convert ATR matches to AuditFinding[], deduplicating by rule ID.
127
206
  *
@@ -163,14 +242,15 @@ function matchesToFindings(matches) {
163
242
  * single-pattern prompt-injection rules scanSkill's FP gate suppresses)
164
243
  * 2. Skill description via the same dual path
165
244
  * 3. MCP tool descriptions (if present in metadata) as tool_call events
245
+ * 4. Script files bundled in the skill directory, when `skillDir` is given
166
246
  *
167
247
  * Returns a CheckResult compatible with the Skill Auditor pipeline.
168
248
  */
169
- export async function checkWithATR(manifest, cloudRules) {
249
+ export async function checkWithATR(manifest, cloudRules, skillDir) {
170
250
  // Dynamic import — gracefully handle missing dependency
171
251
  let ATREngine;
172
252
  try {
173
- const atr = await import('@panguard-ai/atr');
253
+ const atr = await import('agent-threat-rules');
174
254
  ATREngine = atr.ATREngine;
175
255
  }
176
256
  catch {
@@ -185,7 +265,7 @@ export async function checkWithATR(manifest, cloudRules) {
185
265
  // Optional: behavioral fingerprinting for drift detection
186
266
  let fingerprintStore;
187
267
  try {
188
- const { SkillFingerprintStore } = await import('@panguard-ai/atr');
268
+ const { SkillFingerprintStore } = await import('agent-threat-rules');
189
269
  fingerprintStore = new SkillFingerprintStore();
190
270
  }
191
271
  catch {
@@ -277,6 +357,12 @@ export async function checkWithATR(manifest, cloudRules) {
277
357
  return severity !== f.severity ? { ...f, severity } : f;
278
358
  });
279
359
  }
360
+ // 4. Bundled scripts. Added after the downgrade above: SKILL.md declaring a
361
+ // capability or describing its safeguards says nothing about what a
362
+ // script actually does.
363
+ if (skillDir) {
364
+ findings = [...findings, ...(await scanBundledScripts(engine, skillDir))];
365
+ }
280
366
  const hasCritical = findings.some((f) => f.severity === 'critical');
281
367
  const hasHigh = findings.some((f) => f.severity === 'high');
282
368
  const status = hasCritical ? 'fail' : hasHigh ? 'warn' : findings.length > 0 ? 'warn' : 'pass';
@@ -1 +1 @@
1
- {"version":3,"file":"atr-check.js","sourceRoot":"","sources":["../../src/checks/atr-check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"atr-check.js","sourceRoot":"","sources":["../../src/checks/atr-check.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"code-check.d.ts","sourceRoot":"","sources":["../../src/checks/code-check.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAgB,WAAW,EAAE,MAAM,aAAa,CAAC;AAG7D,wBAAsB,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA6G5E"}
1
+ {"version":3,"file":"code-check.d.ts","sourceRoot":"","sources":["../../src/checks/code-check.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAgB,WAAW,EAAE,MAAM,aAAa,CAAC;AAG7D,wBAAsB,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA4H5E"}
@@ -18,6 +18,7 @@ export async function checkCode(skillDirOrFile) {
18
18
  // Dynamic import to handle case where panguard-scan is not available
19
19
  let checkSourceCode = null;
20
20
  let checkHardcodedSecrets = null;
21
+ let checkCompiledArtifacts = null;
21
22
  try {
22
23
  const scan = await import('@panguard-ai/panguard-scan');
23
24
  if (typeof scan.checkSourceCode === 'function') {
@@ -26,6 +27,9 @@ export async function checkCode(skillDirOrFile) {
26
27
  if (typeof scan.checkHardcodedSecrets === 'function') {
27
28
  checkHardcodedSecrets = scan.checkHardcodedSecrets;
28
29
  }
30
+ if (typeof scan.checkCompiledArtifacts === 'function') {
31
+ checkCompiledArtifacts = scan.checkCompiledArtifacts;
32
+ }
29
33
  }
30
34
  catch {
31
35
  return {
@@ -42,11 +46,12 @@ export async function checkCode(skillDirOrFile) {
42
46
  ],
43
47
  };
44
48
  }
45
- const [codeResults, secretResults] = await Promise.all([
49
+ const [codeResults, secretResults, compiledResults] = await Promise.all([
46
50
  checkSourceCode ? checkSourceCode(skillDir) : Promise.resolve([]),
47
51
  checkHardcodedSecrets ? checkHardcodedSecrets(skillDir) : Promise.resolve([]),
52
+ checkCompiledArtifacts ? checkCompiledArtifacts(skillDir) : Promise.resolve([]),
48
53
  ]);
49
- for (const finding of codeResults) {
54
+ for (const finding of [...codeResults, ...compiledResults]) {
50
55
  findings.push({
51
56
  id: `code-${finding.id}`,
52
57
  title: finding.title,
@@ -1 +1 @@
1
- {"version":3,"file":"code-check.js","sourceRoot":"","sources":["../../src/checks/code-check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"code-check.js","sourceRoot":"","sources":["../../src/checks/code-check.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -42,7 +42,7 @@ export async function auditSkill(skillDir, options) {
42
42
  }
43
43
  // ATR pattern detection (the current ATR ruleset including CJK-aware patterns + cloud rules)
44
44
  if (manifest && !options?.skipATR) {
45
- checks.push(await checkWithATR(manifest, options?.cloudRules));
45
+ checks.push(await checkWithATR(manifest, options?.cloudRules, skillDir));
46
46
  }
47
47
  // Code security (SAST + secrets). Skippable for a fast bulk scan — the
48
48
  // per-skill semgrep startup (~3-4s) makes it impractical to run across every
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@panguard-ai/panguard-skill-auditor",
3
- "version": "1.9.0",
3
+ "version": "1.10.1",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -30,12 +30,11 @@
30
30
  "LICENSE"
31
31
  ],
32
32
  "dependencies": {
33
- "agent-threat-rules": "^3.5.8",
33
+ "agent-threat-rules": "^4.3.0",
34
34
  "js-yaml": "^4.1.0",
35
- "@panguard-ai/atr": "1.9.0",
36
- "@panguard-ai/core": "1.9.0",
37
- "@panguard-ai/panguard-scan": "1.9.0",
38
- "@panguard-ai/scan-core": "1.9.0"
35
+ "@panguard-ai/panguard-scan": "1.10.1",
36
+ "@panguard-ai/core": "1.10.1",
37
+ "@panguard-ai/scan-core": "1.10.1"
39
38
  },
40
39
  "devDependencies": {
41
40
  "@types/js-yaml": "^4.0.9",