@swarmdo/cli 1.11.0 → 1.13.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/README.md +3 -1
- package/dist/src/commands/env.d.ts +16 -0
- package/dist/src/commands/env.d.ts.map +1 -0
- package/dist/src/commands/env.js +137 -0
- package/dist/src/commands/env.js.map +1 -0
- package/dist/src/commands/index.d.ts.map +1 -1
- package/dist/src/commands/index.js +10 -3
- package/dist/src/commands/index.js.map +1 -1
- package/dist/src/commands/license.d.ts +16 -0
- package/dist/src/commands/license.d.ts.map +1 -0
- package/dist/src/commands/license.js +124 -0
- package/dist/src/commands/license.js.map +1 -0
- package/dist/src/env/env.d.ts +49 -0
- package/dist/src/env/env.d.ts.map +1 -0
- package/dist/src/env/env.js +103 -0
- package/dist/src/env/env.js.map +1 -0
- package/dist/src/license/license.d.ts +55 -0
- package/dist/src/license/license.d.ts.map +1 -0
- package/dist/src/license/license.js +81 -0
- package/dist/src/license/license.js.map +1 -0
- package/dist/src/mcp-client.d.ts.map +1 -1
- package/dist/src/mcp-client.js +4 -0
- package/dist/src/mcp-client.js.map +1 -1
- package/dist/src/mcp-tools/env-tools.d.ts +12 -0
- package/dist/src/mcp-tools/env-tools.d.ts.map +1 -0
- package/dist/src/mcp-tools/env-tools.js +62 -0
- package/dist/src/mcp-tools/env-tools.js.map +1 -0
- package/dist/src/mcp-tools/index.d.ts +2 -0
- package/dist/src/mcp-tools/index.d.ts.map +1 -1
- package/dist/src/mcp-tools/index.js +2 -0
- package/dist/src/mcp-tools/index.js.map +1 -1
- package/dist/src/mcp-tools/license-tools.d.ts +11 -0
- package/dist/src/mcp-tools/license-tools.d.ts.map +1 -0
- package/dist/src/mcp-tools/license-tools.js +57 -0
- package/dist/src/mcp-tools/license-tools.js.map +1 -0
- package/dist/src/mcp-tools/profiles.d.ts.map +1 -1
- package/dist/src/mcp-tools/profiles.js +1 -0
- package/dist/src/mcp-tools/profiles.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://swarmdo.com)
|
|
4
4
|
|
|
5
|
-
[](https://img.shields.io/badge/npx%20swarmdo-v1.13.0-cb3837?style=for-the-badge&logo=npm&logoColor=white)](https://github.com/SwarmDo/swarmdo/releases)
|
|
6
6
|
[](https://github.com/SwarmDo/swarmdo/blob/main/LICENSE)
|
|
7
7
|
[](https://swarmdo.com)
|
|
8
8
|
[](https://github.com/SwarmDo/swarmdo)
|
|
@@ -280,6 +280,8 @@ The recent release train added a full day-to-day operations layer around the swa
|
|
|
280
280
|
| `swarmdo codegraph` (alias `cg`) | **Queryable symbol index** — `codegraph index` scans TS/JS for exported symbols; `query <name>` (with `--fuzzy`/`--kind`) and `file <path>` answer "where is X defined / what does this file export" from `.swarm/codegraph.json` instead of grep+read round-trips. `codegraph importers <file>` shows reverse deps ("what breaks if I change this"); `codegraph imports <file>` shows a file's dependencies. 1,786 symbols + import graph across 296 files in <1s. Also MCP tools (`codegraph_query`/`file`/`imports`/`importers`/`index`/`stats`) so agents query the graph in-session |
|
|
281
281
|
| `swarmdo redact` | **Mask secrets before they reach an LLM/log/memory** — detect API keys, tokens, and private keys (gitleaks-style rule catalog + Shannon-entropy fallback) and redact them. Stdin filter (`cat deploy.log \| swarmdo redact`), command-wrap (`swarmdo redact -- npm run deploy`), or `--scan` to fail CI on any secret. Also MCP tools (`redact_text`/`redact_scan`). Deterministic, zero tokens |
|
|
282
282
|
| `swarmdo pack` | **Bundle a repo into one AI-context blob** — walk the tree (respects `.gitignore` + glob `--include`/`--exclude`, skips binaries/node_modules), emit markdown/xml/json/plain with a directory tree and per-file + total token estimates. `swarmdo pack --tokens` for a budget breakdown; `--redact` masks secrets first. Deterministic |
|
|
283
|
+
| `swarmdo env` | **Catch env-var drift before deploy** — statically scan code for `process.env.X` / `import.meta.env.X` / `Deno.env.get` / `os.getenv` references and reconcile against `.env` and `.env.example`: reports **missing** (used but undeclared), **unused**, and **undocumented**. `--ci` exits 1 on missing vars. Also an MCP tool (`env_check`). Deterministic |
|
|
284
|
+
| `swarmdo license` | **Audit dependency licenses** — walk `node_modules`, resolve each package's SPDX license, and gate on an allow/deny policy so a GPL or unknown license can't slip into a permissive tree. `--allow MIT,Apache-2.0 --ci` fails the build; distinct from `security` (CVEs). Also an MCP tool (`license_check`). Deterministic |
|
|
283
285
|
| `swarmdo integrations` (alias `integrate`) | **Use swarmdo from Codex CLI, GitHub Copilot CLI, and pi** — one command wires AGENTS.md + each CLI's MCP config (idempotent, dry-run first, never touches your Claude Code setup) |
|
|
284
286
|
| OpenRouter model pool | **Let swarms pick from any models you configure** — declare tier-mapped OpenRouter models in `swarmdo.config.json`; the router Thompson-samples among them per task and the execution layer dispatches the winner |
|
|
285
287
|
| `swarmdo changelog` (alias `notes`) | **Release notes from conventional commits** — `--out NOTES.md` feeds `gh release create --notes-file` |
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `swarmdo env` — reconcile the env vars the code references against what
|
|
3
|
+
* `.env` declares (and, if present, `.env.example`). Catches deploy-breaking
|
|
4
|
+
* drift before it ships:
|
|
5
|
+
*
|
|
6
|
+
* swarmdo env # scan cwd vs .env / .env.example
|
|
7
|
+
* swarmdo env src --ci # exit 1 if any referenced var is undeclared
|
|
8
|
+
* swarmdo env --json # machine-readable report
|
|
9
|
+
*
|
|
10
|
+
* Engine (../env/env.ts) is pure + tested; this layer does the fs walk and
|
|
11
|
+
* reads the dotenv files.
|
|
12
|
+
*/
|
|
13
|
+
import type { Command } from '../types.js';
|
|
14
|
+
export declare const envCommand: Command;
|
|
15
|
+
export default envCommand;
|
|
16
|
+
//# sourceMappingURL=env.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../../src/commands/env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAiC,MAAM,aAAa,CAAC;AA6F1E,eAAO,MAAM,UAAU,EAAE,OAiBxB,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `swarmdo env` — reconcile the env vars the code references against what
|
|
3
|
+
* `.env` declares (and, if present, `.env.example`). Catches deploy-breaking
|
|
4
|
+
* drift before it ships:
|
|
5
|
+
*
|
|
6
|
+
* swarmdo env # scan cwd vs .env / .env.example
|
|
7
|
+
* swarmdo env src --ci # exit 1 if any referenced var is undeclared
|
|
8
|
+
* swarmdo env --json # machine-readable report
|
|
9
|
+
*
|
|
10
|
+
* Engine (../env/env.ts) is pure + tested; this layer does the fs walk and
|
|
11
|
+
* reads the dotenv files.
|
|
12
|
+
*/
|
|
13
|
+
import * as fs from 'node:fs';
|
|
14
|
+
import * as path from 'node:path';
|
|
15
|
+
import { output } from '../output.js';
|
|
16
|
+
import { extractEnvRefs, parseDotenv, reconcile, formatEnvSummary } from '../env/env.js';
|
|
17
|
+
const SOURCE_EXT = new Set(['.ts', '.tsx', '.js', '.jsx', '.mts', '.cts', '.mjs', '.cjs', '.py', '.vue', '.svelte', '.astro']);
|
|
18
|
+
const SKIP_DIRS = new Set([
|
|
19
|
+
'node_modules', '.git', '.swarm', 'dist', 'dist-standalone', 'build',
|
|
20
|
+
'coverage', '.next', '.turbo', 'out', 'vendor', '.cache',
|
|
21
|
+
]);
|
|
22
|
+
// Ubiquitous runtime/CI vars that are almost never declared in a project .env.
|
|
23
|
+
const DEFAULT_IGNORE = ['NODE_ENV', 'CI', 'PATH', 'HOME', 'PWD', 'USER', 'SHELL', 'TERM', 'TZ', 'LANG'];
|
|
24
|
+
function walk(root) {
|
|
25
|
+
const found = [];
|
|
26
|
+
const stack = [root];
|
|
27
|
+
while (stack.length) {
|
|
28
|
+
const dir = stack.pop();
|
|
29
|
+
let entries;
|
|
30
|
+
try {
|
|
31
|
+
entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
for (const e of entries) {
|
|
37
|
+
const full = path.join(dir, e.name);
|
|
38
|
+
if (e.isDirectory()) {
|
|
39
|
+
if (SKIP_DIRS.has(e.name))
|
|
40
|
+
continue;
|
|
41
|
+
stack.push(full);
|
|
42
|
+
}
|
|
43
|
+
else if (e.isFile()) {
|
|
44
|
+
const ext = path.extname(e.name);
|
|
45
|
+
if (SOURCE_EXT.has(ext) && !e.name.endsWith('.d.ts'))
|
|
46
|
+
found.push(full);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return found;
|
|
51
|
+
}
|
|
52
|
+
function readKeys(file) {
|
|
53
|
+
try {
|
|
54
|
+
return parseDotenv(fs.readFileSync(file, 'utf8'));
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
async function run(ctx) {
|
|
61
|
+
const repoRoot = ctx.cwd || process.cwd();
|
|
62
|
+
const scanRoot = ctx.args[0] ? path.resolve(repoRoot, ctx.args[0]) : repoRoot;
|
|
63
|
+
const envFile = path.resolve(repoRoot, typeof ctx.flags.env === 'string' ? ctx.flags.env : '.env');
|
|
64
|
+
const exampleFlag = typeof ctx.flags.example === 'string' ? ctx.flags.example : '.env.example';
|
|
65
|
+
const exampleFile = path.resolve(repoRoot, exampleFlag);
|
|
66
|
+
const declared = readKeys(envFile);
|
|
67
|
+
if (declared === null) {
|
|
68
|
+
output.printError(`no env file at ${path.relative(repoRoot, envFile)} (use --env <file>)`);
|
|
69
|
+
return { success: false, exitCode: 1 };
|
|
70
|
+
}
|
|
71
|
+
const example = readKeys(exampleFile) ?? undefined;
|
|
72
|
+
const ignore = [...DEFAULT_IGNORE];
|
|
73
|
+
if (typeof ctx.flags.ignore === 'string')
|
|
74
|
+
ignore.push(...ctx.flags.ignore.split(',').map((s) => s.trim()).filter(Boolean));
|
|
75
|
+
const refs = [];
|
|
76
|
+
for (const abs of walk(scanRoot)) {
|
|
77
|
+
let src;
|
|
78
|
+
try {
|
|
79
|
+
src = fs.readFileSync(abs, 'utf8');
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
const rel = path.relative(repoRoot, abs).split(path.sep).join('/');
|
|
85
|
+
refs.push(...extractEnvRefs(src, rel));
|
|
86
|
+
}
|
|
87
|
+
const report = reconcile({ refs, declared, example, ignore });
|
|
88
|
+
const hasExample = example !== undefined;
|
|
89
|
+
if (ctx.flags.json === true) {
|
|
90
|
+
output.printJson({ ...report, envFile: path.relative(repoRoot, envFile), hasExample });
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
const section = (title, keys, withSites = false) => {
|
|
94
|
+
if (keys.length === 0)
|
|
95
|
+
return;
|
|
96
|
+
output.writeln(output.bold(`${title} (${keys.length})`));
|
|
97
|
+
output.printList(keys.map((k) => {
|
|
98
|
+
if (!withSites)
|
|
99
|
+
return k;
|
|
100
|
+
const site = report.refs[k]?.[0];
|
|
101
|
+
return site ? `${k} ${output.dim(`${site.file}:${site.line}`)}` : k;
|
|
102
|
+
}));
|
|
103
|
+
};
|
|
104
|
+
section('Missing — referenced in code, not in .env', report.missing, true);
|
|
105
|
+
section('Unused — declared in .env, never referenced', report.unused);
|
|
106
|
+
if (hasExample)
|
|
107
|
+
section('Undocumented — in .env, not in .env.example', report.undocumented);
|
|
108
|
+
output.writeln(output.dim(formatEnvSummary(report, hasExample)));
|
|
109
|
+
}
|
|
110
|
+
// --ci gates on `missing` (the runtime-breaking bucket); --strict also gates
|
|
111
|
+
// on unused + undocumented.
|
|
112
|
+
const strict = ctx.flags.strict === true;
|
|
113
|
+
const bad = report.missing.length + (strict ? report.unused.length + report.undocumented.length : 0);
|
|
114
|
+
const gate = ctx.flags.ci === true || strict;
|
|
115
|
+
const code = gate && bad > 0 ? 1 : 0;
|
|
116
|
+
return { success: code === 0, exitCode: code };
|
|
117
|
+
}
|
|
118
|
+
export const envCommand = {
|
|
119
|
+
name: 'env',
|
|
120
|
+
description: 'Reconcile env vars referenced in code against .env / .env.example — find missing, unused, and undocumented vars',
|
|
121
|
+
options: [
|
|
122
|
+
{ name: 'env', description: 'path to the env file (default .env)', type: 'string' },
|
|
123
|
+
{ name: 'example', description: 'path to the example env file (default .env.example)', type: 'string' },
|
|
124
|
+
{ name: 'ignore', description: 'comma-separated extra keys to ignore (NODE_ENV/CI/… already ignored)', type: 'string' },
|
|
125
|
+
{ name: 'ci', description: 'exit 1 if any referenced var is undeclared (missing bucket)', type: 'boolean' },
|
|
126
|
+
{ name: 'strict', description: 'exit 1 on missing OR unused OR undocumented', type: 'boolean' },
|
|
127
|
+
{ name: 'json', description: 'machine-readable report', type: 'boolean' },
|
|
128
|
+
],
|
|
129
|
+
examples: [
|
|
130
|
+
{ command: 'swarmdo env', description: 'Reconcile the repo against .env / .env.example' },
|
|
131
|
+
{ command: 'swarmdo env src --ci', description: 'Fail CI if code references an undeclared var' },
|
|
132
|
+
{ command: 'swarmdo env --env .env.production --json', description: 'Check a specific env file, JSON out' },
|
|
133
|
+
],
|
|
134
|
+
action: run,
|
|
135
|
+
};
|
|
136
|
+
export default envCommand;
|
|
137
|
+
//# sourceMappingURL=env.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../../src/commands/env.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,6 +28,13 @@ const commandLoaders = {
|
|
|
28
28
|
// Repo→AI-context bundle (repomix demand) — one promptable blob with tree +
|
|
29
29
|
// token counts; swarmdo's context-assembly primitive.
|
|
30
30
|
pack: () => import('./pack.js'),
|
|
31
|
+
// Env-var drift checker (dotenv-safe/dotenv-scan demand) — reconcile code
|
|
32
|
+
// references against .env / .env.example (missing/unused/undocumented).
|
|
33
|
+
env: () => import('./env.js'),
|
|
34
|
+
// Dependency license audit + policy gate (license-checker demand) — catch
|
|
35
|
+
// GPL/unknown licenses in the tree, fail CI on a forbidden one.
|
|
36
|
+
license: () => import('./license.js'),
|
|
37
|
+
licenses: () => import('./license.js'), // alias via loader key
|
|
31
38
|
// Queryable exported-symbol index (codegraph demand) — where things are
|
|
32
39
|
// defined without grep+read round-trips.
|
|
33
40
|
codegraph: () => import('./codegraph.js'),
|
|
@@ -261,7 +268,7 @@ export async function getCommandsByCategory() {
|
|
|
261
268
|
// three slots from 'statusline' onward (completionsCmd received the
|
|
262
269
|
// statusline module, analyzeCmd received completions, …), scrambling the
|
|
263
270
|
// categorized help. Every load now has a named slot.
|
|
264
|
-
const [daemonCmd, doctorCmd, embeddingsCmd, neuralCmd, performanceCmd, securityCmd, swarmvectorCmd, hiveMindCmd, configCmd, statuslineCmd, compressCmd, efficiencyCmd, completionsCmd, migrateCmd, workflowCmd, analyzeCmd, routeCmd, progressCmd, providersCmd, pluginsCmd, deploymentCmd, claimsCmd, issuesCmd, updateCmd, processCmd, guidanceCmd, applianceCmd, cleanupCmd, autopilotCmd, demoCmd, usageCmd, repairCmd, hudCmd, compactCmd, codegraphCmd, redactCmd, packCmd,] = await Promise.all([
|
|
271
|
+
const [daemonCmd, doctorCmd, embeddingsCmd, neuralCmd, performanceCmd, securityCmd, swarmvectorCmd, hiveMindCmd, configCmd, statuslineCmd, compressCmd, efficiencyCmd, completionsCmd, migrateCmd, workflowCmd, analyzeCmd, routeCmd, progressCmd, providersCmd, pluginsCmd, deploymentCmd, claimsCmd, issuesCmd, updateCmd, processCmd, guidanceCmd, applianceCmd, cleanupCmd, autopilotCmd, demoCmd, usageCmd, repairCmd, hudCmd, compactCmd, codegraphCmd, redactCmd, packCmd, envCmd, licenseCmd,] = await Promise.all([
|
|
265
272
|
loadCommand('daemon'), loadCommand('doctor'), loadCommand('embeddings'), loadCommand('neural'),
|
|
266
273
|
loadCommand('performance'), loadCommand('security'), loadCommand('swarmvector'), loadCommand('hive-mind'),
|
|
267
274
|
loadCommand('config'), loadCommand('statusline'), loadCommand('compress'), loadCommand('efficiency'),
|
|
@@ -269,7 +276,7 @@ export async function getCommandsByCategory() {
|
|
|
269
276
|
loadCommand('analyze'), loadCommand('route'), loadCommand('progress'), loadCommand('providers'),
|
|
270
277
|
loadCommand('plugins'), loadCommand('deployment'), loadCommand('claims'), loadCommand('issues'),
|
|
271
278
|
loadCommand('update'), loadCommand('process'), loadCommand('guidance'), loadCommand('appliance'),
|
|
272
|
-
loadCommand('cleanup'), loadCommand('autopilot'), loadCommand('demo'), loadCommand('usage'), loadCommand('repair'), loadCommand('hud'), loadCommand('compact'), loadCommand('codegraph'), loadCommand('redact'), loadCommand('pack'),
|
|
279
|
+
loadCommand('cleanup'), loadCommand('autopilot'), loadCommand('demo'), loadCommand('usage'), loadCommand('repair'), loadCommand('hud'), loadCommand('compact'), loadCommand('codegraph'), loadCommand('redact'), loadCommand('pack'), loadCommand('env'), loadCommand('license'),
|
|
273
280
|
]);
|
|
274
281
|
return {
|
|
275
282
|
primary: [
|
|
@@ -285,7 +292,7 @@ export async function getCommandsByCategory() {
|
|
|
285
292
|
utility: [
|
|
286
293
|
configCmd, doctorCmd, daemonCmd, completionsCmd,
|
|
287
294
|
migrateCmd, workflowCmd, demoCmd,
|
|
288
|
-
statuslineCmd, compressCmd, compactCmd, redactCmd, packCmd, efficiencyCmd,
|
|
295
|
+
statuslineCmd, compressCmd, compactCmd, redactCmd, packCmd, envCmd, licenseCmd, efficiencyCmd,
|
|
289
296
|
].filter(Boolean),
|
|
290
297
|
analysis: [
|
|
291
298
|
analyzeCmd, routeCmd, progressCmd, usageCmd, hudCmd, codegraphCmd,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `swarmdo license` — audit installed dependency licenses against an allow/deny
|
|
3
|
+
* policy. Reads each package's own package.json under node_modules and checks
|
|
4
|
+
* the SPDX license, so a GPL or unknown license in a permissive tree is caught
|
|
5
|
+
* (and can fail CI) before it ships.
|
|
6
|
+
*
|
|
7
|
+
* swarmdo license # list licenses in the tree
|
|
8
|
+
* swarmdo license --allow MIT,Apache-2.0,ISC # fail on anything else
|
|
9
|
+
* swarmdo license --deny GPL-3.0 --ci # exit 1 on a forbidden license
|
|
10
|
+
*
|
|
11
|
+
* Engine (../license/license.ts) is pure + tested; this walks node_modules.
|
|
12
|
+
*/
|
|
13
|
+
import type { Command } from '../types.js';
|
|
14
|
+
export declare const licenseCommand: Command;
|
|
15
|
+
export default licenseCommand;
|
|
16
|
+
//# sourceMappingURL=license.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"license.d.ts","sourceRoot":"","sources":["../../../src/commands/license.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAiC,MAAM,aAAa,CAAC;AA+E1E,eAAO,MAAM,cAAc,EAAE,OAiB5B,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `swarmdo license` — audit installed dependency licenses against an allow/deny
|
|
3
|
+
* policy. Reads each package's own package.json under node_modules and checks
|
|
4
|
+
* the SPDX license, so a GPL or unknown license in a permissive tree is caught
|
|
5
|
+
* (and can fail CI) before it ships.
|
|
6
|
+
*
|
|
7
|
+
* swarmdo license # list licenses in the tree
|
|
8
|
+
* swarmdo license --allow MIT,Apache-2.0,ISC # fail on anything else
|
|
9
|
+
* swarmdo license --deny GPL-3.0 --ci # exit 1 on a forbidden license
|
|
10
|
+
*
|
|
11
|
+
* Engine (../license/license.ts) is pure + tested; this walks node_modules.
|
|
12
|
+
*/
|
|
13
|
+
import * as fs from 'node:fs';
|
|
14
|
+
import * as path from 'node:path';
|
|
15
|
+
import { output } from '../output.js';
|
|
16
|
+
import { classifyLicense, auditLicenses, formatLicenseSummary } from '../license/license.js';
|
|
17
|
+
/** Collect installed packages from a node_modules dir (incl. one level of @scope). */
|
|
18
|
+
function collectDeps(nodeModules) {
|
|
19
|
+
const deps = [];
|
|
20
|
+
const seen = new Set();
|
|
21
|
+
let top;
|
|
22
|
+
try {
|
|
23
|
+
top = fs.readdirSync(nodeModules, { withFileTypes: true });
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return deps;
|
|
27
|
+
}
|
|
28
|
+
const pkgDirs = [];
|
|
29
|
+
for (const e of top) {
|
|
30
|
+
if (!e.isDirectory() || e.name === '.bin' || e.name === '.cache')
|
|
31
|
+
continue;
|
|
32
|
+
if (e.name.startsWith('@')) {
|
|
33
|
+
// scoped: descend one level
|
|
34
|
+
let scoped;
|
|
35
|
+
try {
|
|
36
|
+
scoped = fs.readdirSync(path.join(nodeModules, e.name), { withFileTypes: true });
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
for (const s of scoped)
|
|
42
|
+
if (s.isDirectory())
|
|
43
|
+
pkgDirs.push(path.join(nodeModules, e.name, s.name));
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
pkgDirs.push(path.join(nodeModules, e.name));
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
for (const dir of pkgDirs) {
|
|
50
|
+
let pkg;
|
|
51
|
+
try {
|
|
52
|
+
pkg = JSON.parse(fs.readFileSync(path.join(dir, 'package.json'), 'utf8'));
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
const name = pkg.name ?? path.basename(dir);
|
|
58
|
+
if (seen.has(name))
|
|
59
|
+
continue;
|
|
60
|
+
seen.add(name);
|
|
61
|
+
deps.push({ name, version: pkg.version ?? '0.0.0', license: classifyLicense(pkg) });
|
|
62
|
+
}
|
|
63
|
+
return deps.sort((a, b) => a.name.localeCompare(b.name));
|
|
64
|
+
}
|
|
65
|
+
function csv(v) {
|
|
66
|
+
if (typeof v !== 'string' || !v)
|
|
67
|
+
return undefined;
|
|
68
|
+
return v.split(',').map((s) => s.trim()).filter(Boolean);
|
|
69
|
+
}
|
|
70
|
+
async function run(ctx) {
|
|
71
|
+
const repoRoot = ctx.cwd || process.cwd();
|
|
72
|
+
const nodeModules = path.resolve(repoRoot, ctx.args[0] ?? 'node_modules');
|
|
73
|
+
if (!fs.existsSync(nodeModules)) {
|
|
74
|
+
output.printError(`no node_modules at ${path.relative(repoRoot, nodeModules) || nodeModules} (install deps first, or pass a path)`);
|
|
75
|
+
return { success: false, exitCode: 1 };
|
|
76
|
+
}
|
|
77
|
+
const deps = collectDeps(nodeModules);
|
|
78
|
+
if (deps.length === 0) {
|
|
79
|
+
output.printError('no packages found under node_modules');
|
|
80
|
+
return { success: false, exitCode: 1 };
|
|
81
|
+
}
|
|
82
|
+
const policy = {
|
|
83
|
+
allow: csv(ctx.flags.allow),
|
|
84
|
+
deny: csv(ctx.flags.deny),
|
|
85
|
+
allowUnknown: ctx.flags['allow-unknown'] === true,
|
|
86
|
+
};
|
|
87
|
+
const report = auditLicenses(deps, policy);
|
|
88
|
+
if (ctx.flags.json === true) {
|
|
89
|
+
output.printJson(report);
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
if (report.violations.length > 0) {
|
|
93
|
+
output.writeln(output.bold(`Violations (${report.violations.length})`));
|
|
94
|
+
output.printList(report.violations.map((v) => `${v.name}@${v.version} ${output.dim(`[${v.license}]`)} ${v.reason}`));
|
|
95
|
+
}
|
|
96
|
+
// license breakdown, most common first
|
|
97
|
+
output.writeln(output.bold('Licenses'));
|
|
98
|
+
output.printList(Object.entries(report.byLicense).sort((a, b) => b[1] - a[1]).map(([lic, n]) => `${lic}: ${n}`));
|
|
99
|
+
output.writeln(output.dim(formatLicenseSummary(report)));
|
|
100
|
+
}
|
|
101
|
+
const gate = ctx.flags.ci === true || policy.allow || policy.deny;
|
|
102
|
+
const code = gate && report.violations.length > 0 ? 1 : 0;
|
|
103
|
+
return { success: code === 0, exitCode: code };
|
|
104
|
+
}
|
|
105
|
+
export const licenseCommand = {
|
|
106
|
+
name: 'license',
|
|
107
|
+
aliases: ['licenses'],
|
|
108
|
+
description: 'Audit dependency licenses against an allow/deny policy — catch GPL/unknown licenses before they ship',
|
|
109
|
+
options: [
|
|
110
|
+
{ name: 'allow', description: 'comma-separated SPDX allowlist; anything else is a violation', type: 'string' },
|
|
111
|
+
{ name: 'deny', description: 'comma-separated SPDX denylist; any match is a violation', type: 'string' },
|
|
112
|
+
{ name: 'allow-unknown', description: 'treat UNKNOWN licenses as allowed (default: violation under an allowlist)', type: 'boolean' },
|
|
113
|
+
{ name: 'ci', description: 'exit 1 if there are any violations', type: 'boolean' },
|
|
114
|
+
{ name: 'json', description: 'machine-readable report', type: 'boolean' },
|
|
115
|
+
],
|
|
116
|
+
examples: [
|
|
117
|
+
{ command: 'swarmdo license', description: 'List the licenses present in node_modules' },
|
|
118
|
+
{ command: 'swarmdo license --allow MIT,Apache-2.0,ISC,BSD-3-Clause --ci', description: 'Fail CI on any non-permissive license' },
|
|
119
|
+
{ command: 'swarmdo license --deny GPL-3.0,AGPL-3.0', description: 'Fail on specific copyleft licenses' },
|
|
120
|
+
],
|
|
121
|
+
action: run,
|
|
122
|
+
};
|
|
123
|
+
export default licenseCommand;
|
|
124
|
+
//# sourceMappingURL=license.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"license.js","sourceRoot":"","sources":["../../../src/commands/license.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* env.ts — reconcile the environment variables a codebase *references* against
|
|
3
|
+
* the ones a `.env` (and `.env.example`) *declares*. Catches the classic "deploy
|
|
4
|
+
* broke because a var was missing / stale" drift before it ships.
|
|
5
|
+
*
|
|
6
|
+
* Three buckets:
|
|
7
|
+
* missing — referenced in code, not declared in .env (will break at runtime)
|
|
8
|
+
* unused — declared in .env, never referenced in code (dead config)
|
|
9
|
+
* undocumented — declared in .env, absent from .env.example (onboarding gap)
|
|
10
|
+
*
|
|
11
|
+
* Pure + deterministic (regex extraction + dotenv parse + set diff), so it's
|
|
12
|
+
* fully fixture-testable with zero LLM calls. The fs walk + file reads live in
|
|
13
|
+
* ../commands/env.ts; this module just takes strings.
|
|
14
|
+
*/
|
|
15
|
+
export interface EnvRef {
|
|
16
|
+
key: string;
|
|
17
|
+
file: string;
|
|
18
|
+
/** 1-based line */
|
|
19
|
+
line: number;
|
|
20
|
+
}
|
|
21
|
+
export interface EnvReport {
|
|
22
|
+
missing: string[];
|
|
23
|
+
unused: string[];
|
|
24
|
+
undocumented: string[];
|
|
25
|
+
/** every key referenced in code → the sites that reference it */
|
|
26
|
+
refs: Record<string, EnvRef[]>;
|
|
27
|
+
}
|
|
28
|
+
/** Extract env-var references from one source file. Pure. */
|
|
29
|
+
export declare function extractEnvRefs(source: string, file: string): EnvRef[];
|
|
30
|
+
/**
|
|
31
|
+
* Parse a `.env` file into an ordered list of declared keys. Handles `KEY=val`,
|
|
32
|
+
* `export KEY=val`, quoted values, `# comments`, and blank lines. Values are
|
|
33
|
+
* ignored — we only reconcile key presence. Pure.
|
|
34
|
+
*/
|
|
35
|
+
export declare function parseDotenv(text: string): string[];
|
|
36
|
+
export interface ReconcileInput {
|
|
37
|
+
refs: EnvRef[];
|
|
38
|
+
/** keys declared in .env */
|
|
39
|
+
declared: string[];
|
|
40
|
+
/** keys declared in .env.example (optional) */
|
|
41
|
+
example?: string[];
|
|
42
|
+
/** keys to ignore in all buckets (e.g. NODE_ENV, CI) */
|
|
43
|
+
ignore?: string[];
|
|
44
|
+
}
|
|
45
|
+
/** Compute the missing / unused / undocumented buckets. Pure. */
|
|
46
|
+
export declare function reconcile(input: ReconcileInput): EnvReport;
|
|
47
|
+
/** One-line human summary. */
|
|
48
|
+
export declare function formatEnvSummary(r: EnvReport, hasExample: boolean): string;
|
|
49
|
+
//# sourceMappingURL=env.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../../src/env/env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAChC;AAsBD,6DAA6D;AAC7D,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAiBrE;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAalD;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,4BAA4B;IAC5B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,iEAAiE;AACjE,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,CAoB1D;AAED,8BAA8B;AAC9B,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,GAAG,MAAM,CAI1E"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* env.ts — reconcile the environment variables a codebase *references* against
|
|
3
|
+
* the ones a `.env` (and `.env.example`) *declares*. Catches the classic "deploy
|
|
4
|
+
* broke because a var was missing / stale" drift before it ships.
|
|
5
|
+
*
|
|
6
|
+
* Three buckets:
|
|
7
|
+
* missing — referenced in code, not declared in .env (will break at runtime)
|
|
8
|
+
* unused — declared in .env, never referenced in code (dead config)
|
|
9
|
+
* undocumented — declared in .env, absent from .env.example (onboarding gap)
|
|
10
|
+
*
|
|
11
|
+
* Pure + deterministic (regex extraction + dotenv parse + set diff), so it's
|
|
12
|
+
* fully fixture-testable with zero LLM calls. The fs walk + file reads live in
|
|
13
|
+
* ../commands/env.ts; this module just takes strings.
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Patterns that read an env var. Each capture group 1 is the var name. Covers
|
|
17
|
+
* Node (`process.env.X`, `process.env['X']`), Vite (`import.meta.env.X`), Deno
|
|
18
|
+
* (`Deno.env.get('X')`), and Python (`os.environ['X']`, `os.environ.get('X')`,
|
|
19
|
+
* `os.getenv('X')`). Deterministic, line-based.
|
|
20
|
+
*/
|
|
21
|
+
const REF_PATTERNS = [
|
|
22
|
+
/process\.env\.([A-Za-z_][A-Za-z0-9_]*)/g,
|
|
23
|
+
/process\.env\[\s*['"`]([^'"`]+)['"`]\s*\]/g,
|
|
24
|
+
/import\.meta\.env\.([A-Za-z_][A-Za-z0-9_]*)/g,
|
|
25
|
+
/import\.meta\.env\[\s*['"`]([^'"`]+)['"`]\s*\]/g,
|
|
26
|
+
/Deno\.env\.get\(\s*['"`]([^'"`]+)['"`]\s*\)/g,
|
|
27
|
+
/os\.environ\[\s*['"]([^'"]+)['"]\s*\]/g,
|
|
28
|
+
/os\.environ\.get\(\s*['"]([^'"]+)['"]\s*\)/g,
|
|
29
|
+
/os\.getenv\(\s*['"]([^'"]+)['"]\s*\)/g,
|
|
30
|
+
];
|
|
31
|
+
/** Non-secret prefixes on `import.meta.env` that are Vite builtins, not user vars. */
|
|
32
|
+
const VITE_BUILTINS = new Set(['MODE', 'BASE_URL', 'PROD', 'DEV', 'SSR']);
|
|
33
|
+
/** Extract env-var references from one source file. Pure. */
|
|
34
|
+
export function extractEnvRefs(source, file) {
|
|
35
|
+
const out = [];
|
|
36
|
+
const lines = source.split('\n');
|
|
37
|
+
for (let i = 0; i < lines.length; i++) {
|
|
38
|
+
const line = lines[i];
|
|
39
|
+
if (!line.includes('env') && !line.includes('getenv'))
|
|
40
|
+
continue;
|
|
41
|
+
for (const re of REF_PATTERNS) {
|
|
42
|
+
re.lastIndex = 0;
|
|
43
|
+
let m;
|
|
44
|
+
while ((m = re.exec(line)) !== null) {
|
|
45
|
+
const key = m[1];
|
|
46
|
+
if (VITE_BUILTINS.has(key))
|
|
47
|
+
continue;
|
|
48
|
+
out.push({ key, file, line: i + 1 });
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return out;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Parse a `.env` file into an ordered list of declared keys. Handles `KEY=val`,
|
|
56
|
+
* `export KEY=val`, quoted values, `# comments`, and blank lines. Values are
|
|
57
|
+
* ignored — we only reconcile key presence. Pure.
|
|
58
|
+
*/
|
|
59
|
+
export function parseDotenv(text) {
|
|
60
|
+
const keys = [];
|
|
61
|
+
const seen = new Set();
|
|
62
|
+
for (const raw of text.split('\n')) {
|
|
63
|
+
const line = raw.trim();
|
|
64
|
+
if (!line || line.startsWith('#'))
|
|
65
|
+
continue;
|
|
66
|
+
const m = line.match(/^(?:export\s+)?([A-Za-z_][A-Za-z0-9_]*)\s*=/);
|
|
67
|
+
if (!m)
|
|
68
|
+
continue;
|
|
69
|
+
if (seen.has(m[1]))
|
|
70
|
+
continue;
|
|
71
|
+
seen.add(m[1]);
|
|
72
|
+
keys.push(m[1]);
|
|
73
|
+
}
|
|
74
|
+
return keys;
|
|
75
|
+
}
|
|
76
|
+
/** Compute the missing / unused / undocumented buckets. Pure. */
|
|
77
|
+
export function reconcile(input) {
|
|
78
|
+
const ignore = new Set(input.ignore ?? []);
|
|
79
|
+
const refByKey = {};
|
|
80
|
+
for (const r of input.refs) {
|
|
81
|
+
if (ignore.has(r.key))
|
|
82
|
+
continue;
|
|
83
|
+
(refByKey[r.key] ??= []).push(r);
|
|
84
|
+
}
|
|
85
|
+
const referenced = new Set(Object.keys(refByKey));
|
|
86
|
+
const declared = new Set(input.declared.filter((k) => !ignore.has(k)));
|
|
87
|
+
const missing = [...referenced].filter((k) => !declared.has(k)).sort();
|
|
88
|
+
const unused = [...declared].filter((k) => !referenced.has(k)).sort();
|
|
89
|
+
let undocumented = [];
|
|
90
|
+
if (input.example) {
|
|
91
|
+
const example = new Set(input.example);
|
|
92
|
+
undocumented = [...declared].filter((k) => !example.has(k)).sort();
|
|
93
|
+
}
|
|
94
|
+
return { missing, unused, undocumented, refs: refByKey };
|
|
95
|
+
}
|
|
96
|
+
/** One-line human summary. */
|
|
97
|
+
export function formatEnvSummary(r, hasExample) {
|
|
98
|
+
const parts = [`${r.missing.length} missing`, `${r.unused.length} unused`];
|
|
99
|
+
if (hasExample)
|
|
100
|
+
parts.push(`${r.undocumented.length} undocumented`);
|
|
101
|
+
return `env: ${parts.join(', ')}`;
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=env.js.map
|