munack-ai-dependency-scanner 0.1.11
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/README.md +28 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +184 -0
- package/dist/index.js.map +1 -0
- package/package.json +46 -0
package/README.md
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Munack AI Dependency Scanner
|
|
2
|
+
|
|
3
|
+
`munack-ai-dependency-scanner` is the public npm CLI package for Munack AI Dependency Scanner.
|
|
4
|
+
|
|
5
|
+
It checks AI-generated code for:
|
|
6
|
+
|
|
7
|
+
- hallucinated packages
|
|
8
|
+
- fake imports
|
|
9
|
+
- fake SDK references
|
|
10
|
+
- slopsquatting-style dependency mistakes
|
|
11
|
+
|
|
12
|
+
Install:
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
npm install -g munack-ai-dependency-scanner
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Run:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
munack-ai-dependency-scanner scan .
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Project:
|
|
25
|
+
|
|
26
|
+
- GitHub: https://github.com/balkanbrs/munack
|
|
27
|
+
- VS Marketplace: https://marketplace.visualstudio.com/items?itemName=balkanbrs.munack
|
|
28
|
+
- Open VSX: https://open-vsx.org/extension/balkanbrs/munack
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
+
};
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
8
|
+
const commander_1 = require("commander");
|
|
9
|
+
const munack_core_1 = require("@balkanbrs/munack-core");
|
|
10
|
+
const program = new commander_1.Command();
|
|
11
|
+
const RESULT_TYPES = ["exists", "not_found", "suspicious", "unknown"];
|
|
12
|
+
function normalizeFormat(value) {
|
|
13
|
+
if (value === "json" || value === "sarif") {
|
|
14
|
+
return value;
|
|
15
|
+
}
|
|
16
|
+
return "markdown";
|
|
17
|
+
}
|
|
18
|
+
function shouldFailForResults(findings, failOn) {
|
|
19
|
+
if (!failOn) {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
const targets = new Set(failOn
|
|
23
|
+
.split(",")
|
|
24
|
+
.map((part) => part.trim())
|
|
25
|
+
.filter((part) => RESULT_TYPES.includes(part)));
|
|
26
|
+
return findings.some((finding) => targets.has(finding.result));
|
|
27
|
+
}
|
|
28
|
+
function printJson(value) {
|
|
29
|
+
process.stdout.write(`${JSON.stringify(value, null, 2)}\n`);
|
|
30
|
+
}
|
|
31
|
+
function printTable(rows) {
|
|
32
|
+
if (rows.length === 0) {
|
|
33
|
+
process.stdout.write("No rows.\n");
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
const headers = Object.keys(rows[0]);
|
|
37
|
+
const widths = headers.map((header) => Math.max(header.length, ...rows.map((row) => String(row[header] ?? "").length)));
|
|
38
|
+
const formatRow = (row) => headers.map((header, index) => String(row[header] ?? "").padEnd(widths[index])).join(" ");
|
|
39
|
+
process.stdout.write(`${formatRow(Object.fromEntries(headers.map((header) => [header, header])))}\n`);
|
|
40
|
+
process.stdout.write(`${widths.map((width) => "-".repeat(width)).join(" ")}\n`);
|
|
41
|
+
for (const row of rows) {
|
|
42
|
+
process.stdout.write(`${formatRow(row)}\n`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
program.name("munack-ai-dependency-scanner").description("Munack AI Dependency Scanner CLI.");
|
|
46
|
+
program
|
|
47
|
+
.command("scan")
|
|
48
|
+
.argument("[target]", "Path to scan", ".")
|
|
49
|
+
.option("--format <format>", "Output format: markdown, json, sarif", "markdown")
|
|
50
|
+
.option("--output <file>", "Write report to a file")
|
|
51
|
+
.option("--fail-on <results>", "Exit non-zero if any findings match, e.g. not_found,suspicious")
|
|
52
|
+
.option("--no-imports", "Disable code import scanning and only use manifests/lockfiles")
|
|
53
|
+
.option("--timeout-ms <ms>", "Registry request timeout in milliseconds")
|
|
54
|
+
.option("--concurrency <n>", "Registry lookup concurrency")
|
|
55
|
+
.action(async (target, options) => {
|
|
56
|
+
try {
|
|
57
|
+
const report = await (0, munack_core_1.runScan)({
|
|
58
|
+
projectPath: target,
|
|
59
|
+
includeCodeImports: options.imports,
|
|
60
|
+
registryTimeoutMs: options.timeoutMs ? Number(options.timeoutMs) : undefined,
|
|
61
|
+
registryConcurrency: options.concurrency ? Number(options.concurrency) : undefined
|
|
62
|
+
});
|
|
63
|
+
const format = normalizeFormat(options.format);
|
|
64
|
+
if (options.output) {
|
|
65
|
+
const outputPath = node_path_1.default.resolve(options.output);
|
|
66
|
+
(0, munack_core_1.writeFormattedReportToFile)(report, outputPath, format);
|
|
67
|
+
}
|
|
68
|
+
process.stdout.write((0, munack_core_1.formatReport)(report, format));
|
|
69
|
+
if (options.output) {
|
|
70
|
+
process.stdout.write(`Report written to ${node_path_1.default.resolve(options.output)}\n`);
|
|
71
|
+
}
|
|
72
|
+
if (shouldFailForResults(report.findings, options.failOn)) {
|
|
73
|
+
process.exitCode = 2;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
process.stderr.write(`${String(error)}\n`);
|
|
78
|
+
process.exitCode = 1;
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
program
|
|
82
|
+
.command("check")
|
|
83
|
+
.argument("<packageName>", "Package or dependency name to verify")
|
|
84
|
+
.requiredOption("--registry <registry>", "Registry to query: npm, pypi, crates, packagist")
|
|
85
|
+
.option("--format <format>", "Output format: markdown or json", "markdown")
|
|
86
|
+
.action(async (packageName, options) => {
|
|
87
|
+
try {
|
|
88
|
+
const result = await (0, munack_core_1.checkSinglePackage)({
|
|
89
|
+
name: packageName,
|
|
90
|
+
registry: options.registry
|
|
91
|
+
});
|
|
92
|
+
if (normalizeFormat(options.format) === "json") {
|
|
93
|
+
printJson(result);
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
printTable([
|
|
97
|
+
{
|
|
98
|
+
package: result.name,
|
|
99
|
+
registry: result.registry,
|
|
100
|
+
result: result.result,
|
|
101
|
+
reason: result.reason
|
|
102
|
+
}
|
|
103
|
+
]);
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
process.stderr.write(`${String(error)}\n`);
|
|
107
|
+
process.exitCode = 1;
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
program.command("doctor").action(async () => {
|
|
111
|
+
const status = await (0, munack_core_1.verifyLicense)({});
|
|
112
|
+
const cache = (0, munack_core_1.getCachedLicenseState)();
|
|
113
|
+
const monthKey = (0, munack_core_1.getCurrentMonthKey)();
|
|
114
|
+
const used = cache.scanUsageByMonth[monthKey] ?? 0;
|
|
115
|
+
printTable([
|
|
116
|
+
{
|
|
117
|
+
item: "Config directory",
|
|
118
|
+
value: (0, munack_core_1.getConfigDir)()
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
item: "License key configured",
|
|
122
|
+
value: Boolean((0, munack_core_1.getConfiguredLicenseKey)() ?? cache.licenseKey)
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
item: "External license verifier configured",
|
|
126
|
+
value: Boolean((0, munack_core_1.getConfiguredLicenseVerifierUrl)())
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
item: "License verifier token configured",
|
|
130
|
+
value: Boolean((0, munack_core_1.getConfiguredLicenseVerifierToken)())
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
item: "License active",
|
|
134
|
+
value: status.active
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
item: "License plan",
|
|
138
|
+
value: status.plan
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
item: "License source",
|
|
142
|
+
value: status.source
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
item: "Offline cache used",
|
|
146
|
+
value: Boolean(status.offline)
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
item: "Free scans used this month",
|
|
150
|
+
value: `${used}/${(0, munack_core_1.getFreeMonthlyLimit)()}`
|
|
151
|
+
}
|
|
152
|
+
]);
|
|
153
|
+
});
|
|
154
|
+
program
|
|
155
|
+
.command("activate")
|
|
156
|
+
.argument("[licenseKey]", "License key")
|
|
157
|
+
.action(async (licenseKey) => {
|
|
158
|
+
const effectiveKey = licenseKey?.trim() || (0, munack_core_1.getConfiguredLicenseKey)() || (0, munack_core_1.getCachedLicenseState)().licenseKey;
|
|
159
|
+
if (!effectiveKey) {
|
|
160
|
+
process.stderr.write("Provide a license key argument or set MUNACK_LICENSE_KEY.\n");
|
|
161
|
+
process.exitCode = 1;
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
(0, munack_core_1.saveLicenseKey)(effectiveKey);
|
|
165
|
+
const status = await (0, munack_core_1.verifyLicense)({ licenseKey: effectiveKey, forceRefresh: true });
|
|
166
|
+
printJson(status);
|
|
167
|
+
if (!status.active) {
|
|
168
|
+
process.exitCode = 1;
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
const license = program.command("license").description("License management commands.");
|
|
172
|
+
license.command("status").action(async () => {
|
|
173
|
+
const status = await (0, munack_core_1.verifyLicense)({});
|
|
174
|
+
printJson(status);
|
|
175
|
+
});
|
|
176
|
+
license.command("deactivate").action(() => {
|
|
177
|
+
(0, munack_core_1.clearStoredLicense)();
|
|
178
|
+
printJson({
|
|
179
|
+
active: false,
|
|
180
|
+
cleared: true
|
|
181
|
+
});
|
|
182
|
+
});
|
|
183
|
+
program.parseAsync(process.argv);
|
|
184
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "munack-ai-dependency-scanner",
|
|
3
|
+
"version": "0.1.11",
|
|
4
|
+
"description": "Public CLI package for Munack AI Dependency Scanner to detect hallucinated packages, fake imports, and AI-generated dependency mistakes.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"homepage": "https://github.com/balkanbrs/munack",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://github.com/balkanbrs/munack.git"
|
|
10
|
+
},
|
|
11
|
+
"bugs": {
|
|
12
|
+
"url": "https://github.com/balkanbrs/munack/issues"
|
|
13
|
+
},
|
|
14
|
+
"bin": {
|
|
15
|
+
"munack-ai-dependency-scanner": "dist/index.js"
|
|
16
|
+
},
|
|
17
|
+
"main": "dist/index.js",
|
|
18
|
+
"types": "dist/index.d.ts",
|
|
19
|
+
"files": [
|
|
20
|
+
"dist",
|
|
21
|
+
"README.md"
|
|
22
|
+
],
|
|
23
|
+
"keywords": [
|
|
24
|
+
"munack",
|
|
25
|
+
"ai-dependency-scanner",
|
|
26
|
+
"hallucinated-package",
|
|
27
|
+
"fake-import",
|
|
28
|
+
"fake-package",
|
|
29
|
+
"slopsquatting",
|
|
30
|
+
"dependency-scanner",
|
|
31
|
+
"ai-generated-code",
|
|
32
|
+
"supply-chain-security",
|
|
33
|
+
"cli"
|
|
34
|
+
],
|
|
35
|
+
"publishConfig": {
|
|
36
|
+
"access": "public"
|
|
37
|
+
},
|
|
38
|
+
"scripts": {
|
|
39
|
+
"build": "tsc -p tsconfig.json",
|
|
40
|
+
"pack:dry": "npm pack --dry-run"
|
|
41
|
+
},
|
|
42
|
+
"dependencies": {
|
|
43
|
+
"@balkanbrs/munack-core": "0.1.11",
|
|
44
|
+
"commander": "^14.0.2"
|
|
45
|
+
}
|
|
46
|
+
}
|