gm-skill 2.0.2572 → 2.0.2574
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/gm-plugkit/package.json +1 -1
- package/gm.json +1 -1
- package/package.json +1 -1
- package/scripts/scan-supply-chain-tells.mjs +30 -16
package/gm-plugkit/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gm-plugkit",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.2574",
|
|
4
4
|
"description": "Bootstrap and daemon-spawn tool for gm plugkit binary. Downloads the correct platform wasm, verifies SHA256, and launches agentplug-runner (the native wasm host) as the spool watcher daemon.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|
package/gm.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gm-skill",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.2574",
|
|
4
4
|
"description": "Canonical universal harness — AI-native software engineering via skill-driven orchestration; bootstraps plugkit for task execution and session isolation. Install in any AI coding agent host.",
|
|
5
5
|
"author": "AnEntrypoint",
|
|
6
6
|
"license": "MIT",
|
|
@@ -17,6 +17,11 @@ import process from 'node:process'
|
|
|
17
17
|
const SKIP_DIRS = new Set([
|
|
18
18
|
'node_modules', '.git', 'dist', 'build', '.next', 'vendor', '.cache',
|
|
19
19
|
'.svelte-kit', '.nuxt', '.output', '.turbo', 'out', 'coverage', '.parcel-cache',
|
|
20
|
+
// Vendored/third-party binary trees this scanner isn't meant to police --
|
|
21
|
+
// a browser profile's installed extensions are third-party code the user
|
|
22
|
+
// didn't write and can't fix here; a real backdoor concern in a project's
|
|
23
|
+
// OWN code should never be diluted by noise from a bundled Chrome profile.
|
|
24
|
+
'.plugkit-browser-profile', '.plugkit-agent-worktree', '.wwebjs_auth', '.wwebjs_cache',
|
|
20
25
|
])
|
|
21
26
|
// Code files only. JSON/YAML/MD routinely carry legitimate non-Latin natural-
|
|
22
27
|
// language text (Cyrillic, Greek, CJK, etc.) which is indistinguishable from a
|
|
@@ -136,6 +141,9 @@ function walk(dir, out) {
|
|
|
136
141
|
}
|
|
137
142
|
for (const e of entries) {
|
|
138
143
|
if (SKIP_DIRS.has(e.name)) continue
|
|
144
|
+
// Hash/timestamp-suffixed variants of the same vendored-profile dirs
|
|
145
|
+
// (e.g. .plugkit-browser-profile-<id>) -- prefix match on the same names.
|
|
146
|
+
if (e.name.startsWith('.plugkit-browser-profile') || e.name.startsWith('.plugkit-browser-chrome-profile') || e.name.startsWith('.plugkit-agent-worktree')) continue
|
|
139
147
|
const p = path.join(dir, e.name)
|
|
140
148
|
if (e.isDirectory()) {
|
|
141
149
|
walk(p, out)
|
|
@@ -234,24 +242,30 @@ function main() {
|
|
|
234
242
|
else files.push(root)
|
|
235
243
|
}
|
|
236
244
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
+
// Stream findings as each file is scanned (never buffer until the end) so a
|
|
246
|
+
// kill/timeout mid-run still leaves a partial, readable, useful result on
|
|
247
|
+
// disk instead of losing everything. Progress heartbeat every 200 files so
|
|
248
|
+
// a long run's liveness is visible without waiting for a finding.
|
|
249
|
+
let totalFindings = 0
|
|
250
|
+
const filesWithFindings = new Set()
|
|
251
|
+
for (let idx = 0; idx < files.length; idx++) {
|
|
252
|
+
const f = files[idx]
|
|
253
|
+
const findings = scanFile(f)
|
|
254
|
+
for (const finding of findings) {
|
|
255
|
+
totalFindings++
|
|
256
|
+
filesWithFindings.add(finding.filePath)
|
|
257
|
+
const loc = finding.line ? `:${finding.line}` : ''
|
|
258
|
+
const label = finding.sig || finding.name
|
|
259
|
+
console.log(`[${finding.kind}] ${finding.filePath}${loc} — ${label}`)
|
|
260
|
+
console.log(` ${finding.why}`)
|
|
261
|
+
}
|
|
262
|
+
if ((idx + 1) % 200 === 0) {
|
|
263
|
+
console.error(`... scanned ${idx + 1}/${files.length} files, ${totalFindings} finding(s) so far`)
|
|
264
|
+
}
|
|
245
265
|
}
|
|
246
266
|
|
|
247
|
-
console.log(
|
|
248
|
-
|
|
249
|
-
const loc = f.line ? `:${f.line}` : ''
|
|
250
|
-
const label = f.sig || f.name
|
|
251
|
-
console.log(`[${f.kind}] ${f.filePath}${loc} — ${label}`)
|
|
252
|
-
console.log(` ${f.why}`)
|
|
253
|
-
}
|
|
254
|
-
process.exit(1)
|
|
267
|
+
console.log(`\nscan-supply-chain-tells: ${totalFindings} finding(s) across ${filesWithFindings.size} file(s) (${files.length} files scanned total)`)
|
|
268
|
+
process.exit(totalFindings ? 1 : 0)
|
|
255
269
|
}
|
|
256
270
|
|
|
257
271
|
main()
|