@nerviq/cli 1.29.0 → 1.29.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.
- package/CHANGELOG.md +1527 -1493
- package/README.md +550 -538
- package/SECURITY.md +82 -82
- package/bin/cli.js +2562 -2558
- package/docs/api-reference.md +356 -356
- package/docs/audit-fix.md +109 -0
- package/docs/autofix.md +3 -62
- package/docs/getting-started.md +1 -1
- package/docs/index.html +592 -592
- package/docs/integration-contracts.md +287 -287
- package/docs/maintenance.md +128 -128
- package/docs/new-platform-guide.md +202 -202
- package/docs/release-process.md +63 -0
- package/docs/shallow-risk.md +244 -244
- package/docs/why-nerviq.md +82 -82
- package/package.json +67 -67
- package/src/aider/activity.js +226 -226
- package/src/aider/context.js +162 -162
- package/src/aider/freshness.js +123 -123
- package/src/aider/techniques.js +3465 -3465
- package/src/audit/layers.js +180 -180
- package/src/audit.js +1032 -1032
- package/src/benchmark.js +299 -299
- package/src/codex/activity.js +324 -324
- package/src/codex/freshness.js +142 -142
- package/src/codex/techniques.js +4895 -4895
- package/src/context.js +326 -326
- package/src/continuous-ops.js +11 -1
- package/src/convert.js +340 -340
- package/src/copilot/config-parser.js +280 -280
- package/src/copilot/context.js +218 -218
- package/src/copilot/freshness.js +177 -177
- package/src/copilot/patch.js +238 -238
- package/src/copilot/techniques.js +3578 -3578
- package/src/cursor/freshness.js +194 -194
- package/src/cursor/patch.js +243 -243
- package/src/cursor/techniques.js +3735 -3735
- package/src/doctor.js +201 -201
- package/src/fix-engine.js +511 -8
- package/src/formatters/csv.js +86 -86
- package/src/formatters/junit.js +123 -123
- package/src/formatters/markdown.js +164 -164
- package/src/formatters/otel.js +151 -151
- package/src/freshness.js +156 -156
- package/src/gemini/activity.js +402 -402
- package/src/gemini/context.js +290 -290
- package/src/gemini/freshness.js +183 -183
- package/src/gemini/patch.js +229 -229
- package/src/gemini/techniques.js +3811 -3811
- package/src/governance.js +533 -533
- package/src/harmony/audit.js +306 -306
- package/src/i18n.js +63 -63
- package/src/insights.js +119 -119
- package/src/integrations.js +134 -134
- package/src/locales/en.json +33 -33
- package/src/locales/es.json +33 -33
- package/src/migrate.js +354 -354
- package/src/opencode/activity.js +286 -286
- package/src/opencode/freshness.js +137 -137
- package/src/opencode/techniques.js +3450 -3450
- package/src/setup/analysis.js +12 -12
- package/src/setup.js +7 -6
- package/src/shallow-risk/index.js +56 -56
- package/src/shallow-risk/patterns/agent-config-cross-platform-drift.js +50 -50
- package/src/shallow-risk/patterns/agent-config-dangerous-autoapprove.js +46 -46
- package/src/shallow-risk/patterns/agent-config-deprecated-keys.js +46 -46
- package/src/shallow-risk/patterns/agent-config-missing-file.js +317 -317
- package/src/shallow-risk/patterns/agent-config-secret-literal.js +49 -49
- package/src/shallow-risk/patterns/agent-config-stack-contradiction.js +34 -34
- package/src/shallow-risk/patterns/hook-script-missing.js +70 -70
- package/src/shallow-risk/patterns/mcp-server-no-allowlist.js +52 -52
- package/src/shallow-risk/shared.js +648 -648
- package/src/source-urls.js +295 -295
- package/src/state-paths.js +85 -85
- package/src/supplemental-checks.js +805 -805
- package/src/telemetry.js +160 -160
- package/src/windsurf/context.js +359 -359
- package/src/windsurf/freshness.js +194 -194
- package/src/windsurf/patch.js +231 -231
- package/src/windsurf/techniques.js +3779 -3779
package/src/state-paths.js
CHANGED
|
@@ -1,85 +1,85 @@
|
|
|
1
|
-
const fs = require('fs');
|
|
2
|
-
const path = require('path');
|
|
3
|
-
|
|
4
|
-
const PROJECT_STATE_ROOT = ['.nerviq'];
|
|
5
|
-
const LEGACY_PROJECT_STATE_ROOT = ['.claude', 'nerviq-cli'];
|
|
6
|
-
const HARMONY_STATE_ROOT = ['.nerviq', 'harmony'];
|
|
7
|
-
const LEGACY_HARMONY_STATE_ROOT = ['.nerviq', 'harmony'];
|
|
8
|
-
const GEMINI_STATE_ROOT = ['.gemini', '.nerviq'];
|
|
9
|
-
const LEGACY_GEMINI_STATE_ROOT = ['.gemini', '.nerviq'];
|
|
10
|
-
|
|
11
|
-
function buildPath(dir, rootSegments, segments) {
|
|
12
|
-
return path.join(dir, ...rootSegments, ...segments);
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
function resolveReadablePath(dir, preferredRoot, legacyRoot, ...segments) {
|
|
16
|
-
const preferredPath = buildPath(dir, preferredRoot, segments);
|
|
17
|
-
if (fs.existsSync(preferredPath)) return preferredPath;
|
|
18
|
-
|
|
19
|
-
const legacyPath = buildPath(dir, legacyRoot, segments);
|
|
20
|
-
if (fs.existsSync(legacyPath)) return legacyPath;
|
|
21
|
-
|
|
22
|
-
return preferredPath;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
function ensureWritableDir(dir, rootSegments, ...segments) {
|
|
26
|
-
const targetPath = buildPath(dir, rootSegments, segments);
|
|
27
|
-
fs.mkdirSync(targetPath, { recursive: true });
|
|
28
|
-
return targetPath;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
function resolveProjectStatePath(dir, ...segments) {
|
|
32
|
-
return buildPath(dir, PROJECT_STATE_ROOT, segments);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
function resolveProjectStateReadPath(dir, ...segments) {
|
|
36
|
-
return resolveReadablePath(dir, PROJECT_STATE_ROOT, LEGACY_PROJECT_STATE_ROOT, ...segments);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
function ensureProjectStateDir(dir, ...segments) {
|
|
40
|
-
return ensureWritableDir(dir, PROJECT_STATE_ROOT, ...segments);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
function resolveHarmonyStatePath(dir, ...segments) {
|
|
44
|
-
return buildPath(dir, HARMONY_STATE_ROOT, segments);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
function resolveHarmonyStateReadPath(dir, ...segments) {
|
|
48
|
-
return resolveReadablePath(dir, HARMONY_STATE_ROOT, LEGACY_HARMONY_STATE_ROOT, ...segments);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
function ensureHarmonyStateDir(dir, ...segments) {
|
|
52
|
-
return ensureWritableDir(dir, HARMONY_STATE_ROOT, ...segments);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
function resolveGeminiStatePath(dir, ...segments) {
|
|
56
|
-
return buildPath(dir, GEMINI_STATE_ROOT, segments);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
function resolveGeminiStateReadPath(dir, ...segments) {
|
|
60
|
-
return resolveReadablePath(dir, GEMINI_STATE_ROOT, LEGACY_GEMINI_STATE_ROOT, ...segments);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
function ensureGeminiStateDir(dir, ...segments) {
|
|
64
|
-
return ensureWritableDir(dir, GEMINI_STATE_ROOT, ...segments);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
module.exports = {
|
|
68
|
-
PROJECT_STATE_ROOT,
|
|
69
|
-
LEGACY_PROJECT_STATE_ROOT,
|
|
70
|
-
HARMONY_STATE_ROOT,
|
|
71
|
-
LEGACY_HARMONY_STATE_ROOT,
|
|
72
|
-
GEMINI_STATE_ROOT,
|
|
73
|
-
LEGACY_GEMINI_STATE_ROOT,
|
|
74
|
-
resolveReadablePath,
|
|
75
|
-
ensureWritableDir,
|
|
76
|
-
resolveProjectStatePath,
|
|
77
|
-
resolveProjectStateReadPath,
|
|
78
|
-
ensureProjectStateDir,
|
|
79
|
-
resolveHarmonyStatePath,
|
|
80
|
-
resolveHarmonyStateReadPath,
|
|
81
|
-
ensureHarmonyStateDir,
|
|
82
|
-
resolveGeminiStatePath,
|
|
83
|
-
resolveGeminiStateReadPath,
|
|
84
|
-
ensureGeminiStateDir,
|
|
85
|
-
};
|
|
1
|
+
const fs = require('fs');
|
|
2
|
+
const path = require('path');
|
|
3
|
+
|
|
4
|
+
const PROJECT_STATE_ROOT = ['.nerviq'];
|
|
5
|
+
const LEGACY_PROJECT_STATE_ROOT = ['.claude', 'nerviq-cli'];
|
|
6
|
+
const HARMONY_STATE_ROOT = ['.nerviq', 'harmony'];
|
|
7
|
+
const LEGACY_HARMONY_STATE_ROOT = ['.nerviq', 'harmony'];
|
|
8
|
+
const GEMINI_STATE_ROOT = ['.gemini', '.nerviq'];
|
|
9
|
+
const LEGACY_GEMINI_STATE_ROOT = ['.gemini', '.nerviq'];
|
|
10
|
+
|
|
11
|
+
function buildPath(dir, rootSegments, segments) {
|
|
12
|
+
return path.join(dir, ...rootSegments, ...segments);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function resolveReadablePath(dir, preferredRoot, legacyRoot, ...segments) {
|
|
16
|
+
const preferredPath = buildPath(dir, preferredRoot, segments);
|
|
17
|
+
if (fs.existsSync(preferredPath)) return preferredPath;
|
|
18
|
+
|
|
19
|
+
const legacyPath = buildPath(dir, legacyRoot, segments);
|
|
20
|
+
if (fs.existsSync(legacyPath)) return legacyPath;
|
|
21
|
+
|
|
22
|
+
return preferredPath;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function ensureWritableDir(dir, rootSegments, ...segments) {
|
|
26
|
+
const targetPath = buildPath(dir, rootSegments, segments);
|
|
27
|
+
fs.mkdirSync(targetPath, { recursive: true });
|
|
28
|
+
return targetPath;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function resolveProjectStatePath(dir, ...segments) {
|
|
32
|
+
return buildPath(dir, PROJECT_STATE_ROOT, segments);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function resolveProjectStateReadPath(dir, ...segments) {
|
|
36
|
+
return resolveReadablePath(dir, PROJECT_STATE_ROOT, LEGACY_PROJECT_STATE_ROOT, ...segments);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function ensureProjectStateDir(dir, ...segments) {
|
|
40
|
+
return ensureWritableDir(dir, PROJECT_STATE_ROOT, ...segments);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function resolveHarmonyStatePath(dir, ...segments) {
|
|
44
|
+
return buildPath(dir, HARMONY_STATE_ROOT, segments);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function resolveHarmonyStateReadPath(dir, ...segments) {
|
|
48
|
+
return resolveReadablePath(dir, HARMONY_STATE_ROOT, LEGACY_HARMONY_STATE_ROOT, ...segments);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
function ensureHarmonyStateDir(dir, ...segments) {
|
|
52
|
+
return ensureWritableDir(dir, HARMONY_STATE_ROOT, ...segments);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
function resolveGeminiStatePath(dir, ...segments) {
|
|
56
|
+
return buildPath(dir, GEMINI_STATE_ROOT, segments);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function resolveGeminiStateReadPath(dir, ...segments) {
|
|
60
|
+
return resolveReadablePath(dir, GEMINI_STATE_ROOT, LEGACY_GEMINI_STATE_ROOT, ...segments);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function ensureGeminiStateDir(dir, ...segments) {
|
|
64
|
+
return ensureWritableDir(dir, GEMINI_STATE_ROOT, ...segments);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
module.exports = {
|
|
68
|
+
PROJECT_STATE_ROOT,
|
|
69
|
+
LEGACY_PROJECT_STATE_ROOT,
|
|
70
|
+
HARMONY_STATE_ROOT,
|
|
71
|
+
LEGACY_HARMONY_STATE_ROOT,
|
|
72
|
+
GEMINI_STATE_ROOT,
|
|
73
|
+
LEGACY_GEMINI_STATE_ROOT,
|
|
74
|
+
resolveReadablePath,
|
|
75
|
+
ensureWritableDir,
|
|
76
|
+
resolveProjectStatePath,
|
|
77
|
+
resolveProjectStateReadPath,
|
|
78
|
+
ensureProjectStateDir,
|
|
79
|
+
resolveHarmonyStatePath,
|
|
80
|
+
resolveHarmonyStateReadPath,
|
|
81
|
+
ensureHarmonyStateDir,
|
|
82
|
+
resolveGeminiStatePath,
|
|
83
|
+
resolveGeminiStateReadPath,
|
|
84
|
+
ensureGeminiStateDir,
|
|
85
|
+
};
|