@vibgrate/cli 1.0.44 → 1.0.46
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/DOCS.md +202 -89
- package/README.md +150 -209
- package/dist/{baseline-FDWMBM2O.js → baseline-AWRL3ITR.js} +2 -2
- package/dist/{chunk-YFJC5JSQ.js → chunk-HEILEAVO.js} +442 -127
- package/dist/{chunk-GN3IWKSY.js → chunk-PTMLMDZU.js} +20 -0
- package/dist/{chunk-LO66M6OC.js → chunk-SKROLJET.js} +1 -1
- package/dist/cli.js +190 -10
- package/dist/index.d.ts +32 -0
- package/dist/index.js +2 -2
- package/package.json +1 -1
package/DOCS.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Vibgrate CLI — Full Documentation
|
|
2
2
|
|
|
3
|
-
> Continuous Drift Intelligence for Node
|
|
3
|
+
> Continuous Drift Intelligence for Node, .NET, Python, and Java
|
|
4
4
|
|
|
5
5
|
For a quick overview, see the [README](./README.md). This document covers everything in detail.
|
|
6
6
|
|
|
@@ -9,15 +9,18 @@ For a quick overview, see the [README](./README.md). This document covers everyt
|
|
|
9
9
|
## Table of Contents
|
|
10
10
|
|
|
11
11
|
- [How It Works](#how-it-works)
|
|
12
|
+
- [Choosing a rollout model: one-off vs CI](#choosing-a-rollout-model-one-off-vs-ci)
|
|
12
13
|
- [Commands Reference](#commands-reference)
|
|
13
14
|
- [vibgrate init](#vibgrate-init)
|
|
14
15
|
- [vibgrate scan](#vibgrate-scan)
|
|
15
16
|
- [vibgrate baseline](#vibgrate-baseline)
|
|
16
17
|
- [vibgrate report](#vibgrate-report)
|
|
18
|
+
- [vibgrate sbom](#vibgrate-sbom)
|
|
17
19
|
- [vibgrate push](#vibgrate-push)
|
|
18
20
|
- [vibgrate dsn create](#vibgrate-dsn-create)
|
|
19
21
|
- [vibgrate update](#vibgrate-update)
|
|
20
22
|
- [Upgrade Drift Score](#upgrade-drift-score)
|
|
23
|
+
- [Drift Baselines & Fitness Functions](#drift-baselines--fitness-functions)
|
|
21
24
|
- [How the Score Is Calculated](#how-the-score-is-calculated)
|
|
22
25
|
- [Risk Levels](#risk-levels)
|
|
23
26
|
- [Score Components](#score-components)
|
|
@@ -34,6 +37,7 @@ For a quick overview, see the [README](./README.md). This document covers everyt
|
|
|
34
37
|
- [Platform Matrix](#platform-matrix)
|
|
35
38
|
- [Dependency Risk](#dependency-risk)
|
|
36
39
|
- [Dependency Graph & Duplication](#dependency-graph--duplication)
|
|
40
|
+
- [SBOM-ready Supply Chain Inventory](#sbom-ready-supply-chain-inventory)
|
|
37
41
|
- [Tooling Inventory](#tooling-inventory)
|
|
38
42
|
- [Build & Deploy Surface Area](#build--deploy-surface-area)
|
|
39
43
|
- [TypeScript Modernity](#typescript-modernity)
|
|
@@ -42,6 +46,9 @@ For a quick overview, see the [README](./README.md). This document covers everyt
|
|
|
42
46
|
- [Security Posture](#security-posture)
|
|
43
47
|
- [Security Scanners](#security-scanners)
|
|
44
48
|
- [Service Dependencies](#service-dependencies)
|
|
49
|
+
- [Architecture Layers](#architecture-layers)
|
|
50
|
+
- [Code Quality Metrics](#code-quality-metrics)
|
|
51
|
+
- [OWASP Category Mapping](#owasp-category-mapping)
|
|
45
52
|
- [CI Integration](#ci-integration)
|
|
46
53
|
- [GitHub Actions](#github-actions)
|
|
47
54
|
- [Azure DevOps](#azure-devops)
|
|
@@ -58,7 +65,7 @@ For a quick overview, see the [README](./README.md). This document covers everyt
|
|
|
58
65
|
|
|
59
66
|
## How It Works
|
|
60
67
|
|
|
61
|
-
Vibgrate recursively scans your repository for `package.json` (Node/TypeScript)
|
|
68
|
+
Vibgrate recursively scans your repository for `package.json` (Node/TypeScript), `.sln`/`.csproj` (.NET), Python manifests, and Java build manifests. For each project it discovers, it:
|
|
62
69
|
|
|
63
70
|
1. **Detects** the runtime version, target framework, and all dependencies
|
|
64
71
|
2. **Queries** the npm/NuGet registry for latest stable versions (with built-in caching and concurrency control)
|
|
@@ -70,6 +77,22 @@ Core drift analysis does not execute source code. Optional security scanners can
|
|
|
70
77
|
|
|
71
78
|
---
|
|
72
79
|
|
|
80
|
+
## Choosing a rollout model: one-off vs CI
|
|
81
|
+
|
|
82
|
+
Most teams adopt Vibgrate in two steps:
|
|
83
|
+
|
|
84
|
+
1. **One-off scan** to establish a baseline and identify immediate upgrade priorities.
|
|
85
|
+
2. **CI integration** to continuously detect drift regression on every pull request/build.
|
|
86
|
+
|
|
87
|
+
| Mode | Benefits | Typical command |
|
|
88
|
+
| ------------------ | --------------------------------------------------------------------------- | --------------------------------------------------------- |
|
|
89
|
+
| One-off scan | Fast snapshot of current upgrade debt, useful for audits and planning | `npx @vibgrate/cli scan .` |
|
|
90
|
+
| CI-integrated scan | Continuous governance with automated failure thresholds and SARIF surfacing | `npx @vibgrate/cli scan . --format sarif --fail-on error` |
|
|
91
|
+
|
|
92
|
+
In practice, one-off scans tell you where you are today; CI keeps you from drifting back tomorrow.
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
73
96
|
## Commands Reference
|
|
74
97
|
|
|
75
98
|
### vibgrate init
|
|
@@ -80,12 +103,13 @@ Initialise Vibgrate in a project.
|
|
|
80
103
|
vibgrate init [path] [--baseline] [--yes]
|
|
81
104
|
```
|
|
82
105
|
|
|
83
|
-
| Flag
|
|
84
|
-
|
|
106
|
+
| Flag | Description |
|
|
107
|
+
| ------------ | ------------------------------------------- |
|
|
85
108
|
| `--baseline` | Create an initial drift baseline after init |
|
|
86
|
-
| `--yes`
|
|
109
|
+
| `--yes` | Skip confirmation prompts |
|
|
87
110
|
|
|
88
111
|
Creates:
|
|
112
|
+
|
|
89
113
|
- `.vibgrate/` directory
|
|
90
114
|
- `vibgrate.config.ts` with sensible defaults
|
|
91
115
|
|
|
@@ -96,7 +120,7 @@ Creates:
|
|
|
96
120
|
The primary command. Scans your project for upgrade drift.
|
|
97
121
|
|
|
98
122
|
```bash
|
|
99
|
-
vibgrate scan [path] [--format text|json|sarif] [--out <file>] [--fail-on warn|error] [--baseline <file>] [--changed-only] [--concurrency <n>]
|
|
123
|
+
vibgrate scan [path] [--format text|json|sarif] [--out <file>] [--fail-on warn|error] [--baseline <file>] [--drift-budget <score>] [--drift-worsening <percent>] [--changed-only] [--concurrency <n>]
|
|
100
124
|
```
|
|
101
125
|
|
|
102
126
|
| Flag | Default | Description |
|
|
@@ -107,6 +131,8 @@ vibgrate scan [path] [--format text|json|sarif] [--out <file>] [--fail-on warn|e
|
|
|
107
131
|
| `--baseline <file>` | — | Compare against a previous baseline |
|
|
108
132
|
| `--changed-only` | — | Only scan changed files |
|
|
109
133
|
| `--concurrency <n>` | `8` | Max concurrent npm registry calls |
|
|
134
|
+
| `--drift-budget <score>` | — | Fitness gate: fail if drift score is above this budget |
|
|
135
|
+
| `--drift-worsening <percent>` | — | Fitness gate: fail if drift worsens by more than % vs baseline |
|
|
110
136
|
|
|
111
137
|
The scan always writes the full artifact to `.vibgrate/scan_result.json`.
|
|
112
138
|
|
|
@@ -132,10 +158,28 @@ Generate a human-readable report from a scan artifact.
|
|
|
132
158
|
vibgrate report [--in <file>] [--format md|text|json]
|
|
133
159
|
```
|
|
134
160
|
|
|
135
|
-
| Flag
|
|
136
|
-
|
|
137
|
-
| `--in`
|
|
138
|
-
| `--format` | `text`
|
|
161
|
+
| Flag | Default | Description |
|
|
162
|
+
| ---------- | ---------------------------- | -------------------------------------- |
|
|
163
|
+
| `--in` | `.vibgrate/scan_result.json` | Input artifact file |
|
|
164
|
+
| `--format` | `text` | Output format: `md`, `text`, or `json` |
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
### vibgrate sbom
|
|
169
|
+
|
|
170
|
+
Export SBOMs from an existing scan artifact or compare two artifacts.
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
vibgrate sbom export [--in <file>] [--format cyclonedx|spdx] [--out <file>]
|
|
174
|
+
vibgrate sbom delta --from <file> --to <file> [--out <file>]
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
| Command | Description |
|
|
178
|
+
|---------|-------------|
|
|
179
|
+
| `vibgrate sbom export` | Emit CycloneDX or SPDX JSON from a scan artifact |
|
|
180
|
+
| `vibgrate sbom delta` | Compare dependencies between two artifacts (added/removed/changed + drift delta) |
|
|
181
|
+
|
|
182
|
+
Use this to treat SBOMs as operational intelligence instead of static compliance output.
|
|
139
183
|
|
|
140
184
|
---
|
|
141
185
|
|
|
@@ -147,12 +191,12 @@ Upload scan results to the Vibgrate dashboard API.
|
|
|
147
191
|
vibgrate push [--dsn <dsn>] [--file <file>] [--region <region>] [--strict]
|
|
148
192
|
```
|
|
149
193
|
|
|
150
|
-
| Flag
|
|
151
|
-
|
|
152
|
-
| `--dsn`
|
|
153
|
-
| `--file`
|
|
154
|
-
| `--region` | —
|
|
155
|
-
| `--strict` | —
|
|
194
|
+
| Flag | Default | Description |
|
|
195
|
+
| ---------- | ---------------------------- | ------------------------------------------- |
|
|
196
|
+
| `--dsn` | `VIBGRATE_DSN` env | DSN token for authentication |
|
|
197
|
+
| `--file` | `.vibgrate/scan_result.json` | Scan artifact to upload |
|
|
198
|
+
| `--region` | — | Override data residency region (`us`, `eu`) |
|
|
199
|
+
| `--strict` | — | Fail hard on upload errors |
|
|
156
200
|
|
|
157
201
|
Upload is always optional. Best-effort by default — use `--strict` in CI if you want the pipeline to fail on upload errors.
|
|
158
202
|
|
|
@@ -166,12 +210,12 @@ Generate an HMAC-signed DSN token for API authentication.
|
|
|
166
210
|
vibgrate dsn create --workspace <id> [--region <region>] [--ingest <url>] [--write <path>]
|
|
167
211
|
```
|
|
168
212
|
|
|
169
|
-
| Flag
|
|
170
|
-
|
|
171
|
-
| `--workspace` |
|
|
172
|
-
| `--region`
|
|
173
|
-
| `--ingest`
|
|
174
|
-
| `--write`
|
|
213
|
+
| Flag | Default | Description |
|
|
214
|
+
| ------------- | ---------- | -------------------------------------------- |
|
|
215
|
+
| `--workspace` | _required_ | Your workspace ID |
|
|
216
|
+
| `--region` | `us` | Data residency region (`us`, `eu`) |
|
|
217
|
+
| `--ingest` | — | Custom ingest API URL (overrides `--region`) |
|
|
218
|
+
| `--write` | — | Write DSN to a file (add to `.gitignore`!) |
|
|
175
219
|
|
|
176
220
|
---
|
|
177
221
|
|
|
@@ -183,13 +227,38 @@ Check for and install updates.
|
|
|
183
227
|
vibgrate update [--check] [--pm <manager>]
|
|
184
228
|
```
|
|
185
229
|
|
|
186
|
-
| Flag
|
|
187
|
-
|
|
188
|
-
| `--check` | Only check for updates, don't install
|
|
189
|
-
| `--pm`
|
|
230
|
+
| Flag | Description |
|
|
231
|
+
| --------- | ------------------------------------------------------ |
|
|
232
|
+
| `--check` | Only check for updates, don't install |
|
|
233
|
+
| `--pm` | Force a package manager (`npm`, `pnpm`, `yarn`, `bun`) |
|
|
190
234
|
|
|
191
235
|
---
|
|
192
236
|
|
|
237
|
+
## Drift Baselines & Fitness Functions
|
|
238
|
+
|
|
239
|
+
Vibgrate stores scan state under `.vibgrate/`:
|
|
240
|
+
|
|
241
|
+
- `.vibgrate/scan_result.json`: latest scan artifact
|
|
242
|
+
- `.vibgrate/baseline.json`: explicit baseline snapshot (`vibgrate baseline`)
|
|
243
|
+
- `<project>/.vibgrate/project_score.json`: per-project score snapshots
|
|
244
|
+
|
|
245
|
+
Recommended workflow:
|
|
246
|
+
|
|
247
|
+
1. Create baseline once on main branch:
|
|
248
|
+
```bash
|
|
249
|
+
vibgrate baseline .
|
|
250
|
+
```
|
|
251
|
+
2. In CI, run scan with comparison and gates:
|
|
252
|
+
```bash
|
|
253
|
+
vibgrate scan --baseline .vibgrate/baseline.json --drift-budget 40 --drift-worsening 5
|
|
254
|
+
```
|
|
255
|
+
3. When planned upgrades land, refresh baseline:
|
|
256
|
+
```bash
|
|
257
|
+
vibgrate baseline .
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
This makes drift a formal quality gate (fitness function), not just reporting.
|
|
261
|
+
|
|
193
262
|
## Upgrade Drift Score
|
|
194
263
|
|
|
195
264
|
### How the Score Is Calculated
|
|
@@ -200,22 +269,22 @@ The Upgrade Drift Score is a deterministic, versioned metric (0–100) that repr
|
|
|
200
269
|
|
|
201
270
|
### Risk Levels
|
|
202
271
|
|
|
203
|
-
| Score
|
|
204
|
-
|
|
205
|
-
| 70–100 | **Low** — You're in good shape
|
|
206
|
-
| 40–69
|
|
207
|
-
| 0–39
|
|
272
|
+
| Score | Risk Level |
|
|
273
|
+
| ------ | ------------------------------------ |
|
|
274
|
+
| 70–100 | **Low** — You're in good shape |
|
|
275
|
+
| 40–69 | **Moderate** — Some attention needed |
|
|
276
|
+
| 0–39 | **High** — Significant upgrade debt |
|
|
208
277
|
|
|
209
278
|
### Score Components
|
|
210
279
|
|
|
211
280
|
The overall score is a weighted combination of four components:
|
|
212
281
|
|
|
213
|
-
| Component
|
|
214
|
-
|
|
215
|
-
| **Runtime**
|
|
216
|
-
| **Frameworks**
|
|
282
|
+
| Component | What It Measures |
|
|
283
|
+
| ---------------- | --------------------------------------------------------------------------------- |
|
|
284
|
+
| **Runtime** | Node.js or .NET runtime major version lag |
|
|
285
|
+
| **Frameworks** | Major version distance for core frameworks (React, Next, NestJS, ASP.NET, etc.) |
|
|
217
286
|
| **Dependencies** | Age distribution across all dependencies (current vs 1 major behind vs 2+ behind) |
|
|
218
|
-
| **EOL Risk**
|
|
287
|
+
| **EOL Risk** | Proximity to end-of-life for runtimes and frameworks |
|
|
219
288
|
|
|
220
289
|
---
|
|
221
290
|
|
|
@@ -224,6 +293,7 @@ The overall score is a weighted combination of four components:
|
|
|
224
293
|
### Text
|
|
225
294
|
|
|
226
295
|
The default output. A coloured, human-readable report showing:
|
|
296
|
+
|
|
227
297
|
- Overall drift score and risk level
|
|
228
298
|
- Score component breakdown with visual bars
|
|
229
299
|
- Per-project details: runtime lag, framework versions, dependency distribution
|
|
@@ -250,10 +320,10 @@ A clean Markdown report suitable for PRs, wikis, or documentation.
|
|
|
250
320
|
Run `vibgrate init` to generate the config file, or create one manually:
|
|
251
321
|
|
|
252
322
|
```typescript
|
|
253
|
-
import type { VibgrateConfig } from
|
|
323
|
+
import type { VibgrateConfig } from "@vibgrate/cli";
|
|
254
324
|
|
|
255
325
|
const config: VibgrateConfig = {
|
|
256
|
-
exclude: [
|
|
326
|
+
exclude: ["legacy/**"],
|
|
257
327
|
thresholds: {
|
|
258
328
|
failOnError: {
|
|
259
329
|
eolDays: 180,
|
|
@@ -266,17 +336,17 @@ const config: VibgrateConfig = {
|
|
|
266
336
|
},
|
|
267
337
|
},
|
|
268
338
|
scanners: {
|
|
269
|
-
platformMatrix:
|
|
270
|
-
dependencyRisk:
|
|
271
|
-
dependencyGraph:
|
|
272
|
-
toolingInventory:
|
|
273
|
-
buildDeploy:
|
|
274
|
-
tsModernity:
|
|
339
|
+
platformMatrix: { enabled: true },
|
|
340
|
+
dependencyRisk: { enabled: true },
|
|
341
|
+
dependencyGraph: { enabled: true },
|
|
342
|
+
toolingInventory: { enabled: true },
|
|
343
|
+
buildDeploy: { enabled: true },
|
|
344
|
+
tsModernity: { enabled: true },
|
|
275
345
|
breakingChangeExposure: { enabled: true },
|
|
276
|
-
fileHotspots:
|
|
277
|
-
securityPosture:
|
|
278
|
-
securityScanners:
|
|
279
|
-
serviceDependencies:
|
|
346
|
+
fileHotspots: { enabled: true },
|
|
347
|
+
securityPosture: { enabled: true },
|
|
348
|
+
securityScanners: { enabled: true },
|
|
349
|
+
serviceDependencies: { enabled: true },
|
|
280
350
|
},
|
|
281
351
|
};
|
|
282
352
|
|
|
@@ -289,13 +359,13 @@ Also supports `vibgrate.config.js` and `vibgrate.config.json`.
|
|
|
289
359
|
|
|
290
360
|
Control when findings are raised and when the CLI should fail.
|
|
291
361
|
|
|
292
|
-
| Threshold
|
|
293
|
-
|
|
294
|
-
| `failOnError.eolDays`
|
|
295
|
-
| `failOnError.frameworkMajorLag`
|
|
296
|
-
| `failOnError.dependencyTwoPlusPercent` | 50
|
|
297
|
-
| `warn.frameworkMajorLag`
|
|
298
|
-
| `warn.dependencyTwoPlusPercent`
|
|
362
|
+
| Threshold | Default | Triggers |
|
|
363
|
+
| -------------------------------------- | ------- | ------------------------------------------------------------- |
|
|
364
|
+
| `failOnError.eolDays` | 180 | Error finding when runtime EOL is within N days |
|
|
365
|
+
| `failOnError.frameworkMajorLag` | 3 | Error finding when any framework is N+ majors behind |
|
|
366
|
+
| `failOnError.dependencyTwoPlusPercent` | 50 | Error finding when N+% of dependencies are 2+ majors behind |
|
|
367
|
+
| `warn.frameworkMajorLag` | 2 | Warning finding when any framework is N+ majors behind |
|
|
368
|
+
| `warn.dependencyTwoPlusPercent` | 30 | Warning finding when N+% of dependencies are 2+ majors behind |
|
|
299
369
|
|
|
300
370
|
### Scanner Toggles
|
|
301
371
|
|
|
@@ -339,19 +409,30 @@ Parses lockfiles (pnpm, npm, yarn, .NET) to build a workspace-wide dependency gr
|
|
|
339
409
|
- Duplicated packages (multiple versions of the same package)
|
|
340
410
|
- Phantom dependencies (used but not declared)
|
|
341
411
|
|
|
412
|
+
### SBOM-ready Supply Chain Inventory
|
|
413
|
+
|
|
414
|
+
Vibgrate artifacts include dependency graph and package inventory data that can be used for supply-chain governance workflows:
|
|
415
|
+
|
|
416
|
+
- Lockfile-derived package counts (`totalUnique`, `totalInstalled`)
|
|
417
|
+
- Duplicate-version hotspots to prioritize remediation
|
|
418
|
+
- Phantom dependency evidence (`phantomDependencies` + details)
|
|
419
|
+
- Inventory metadata that pairs well with internal SBOM pipelines
|
|
420
|
+
|
|
421
|
+
> Vibgrate does not currently emit CycloneDX/SPDX files directly. Instead, it provides structured inventory data in `scan_result.json` so teams can integrate with existing SBOM tooling without slowing down CI scans.
|
|
422
|
+
|
|
342
423
|
### Tooling Inventory
|
|
343
424
|
|
|
344
425
|
Maps the full technology stack across your workspace by detecting package names in dependencies:
|
|
345
426
|
|
|
346
|
-
| Category
|
|
347
|
-
|
|
348
|
-
| Frontend
|
|
349
|
-
| Meta-frameworks | Next.js, Nuxt, Astro, Remix
|
|
350
|
-
| Bundlers
|
|
351
|
-
| Backend
|
|
352
|
-
| ORM / DB
|
|
353
|
-
| Testing
|
|
354
|
-
| Observability
|
|
427
|
+
| Category | Examples |
|
|
428
|
+
| --------------- | ------------------------------------ |
|
|
429
|
+
| Frontend | React, Vue, Angular, Svelte, Solid |
|
|
430
|
+
| Meta-frameworks | Next.js, Nuxt, Astro, Remix |
|
|
431
|
+
| Bundlers | Vite, webpack, esbuild, Rollup |
|
|
432
|
+
| Backend | Express, Fastify, NestJS, Hono |
|
|
433
|
+
| ORM / DB | Prisma, Drizzle, TypeORM, EF Core |
|
|
434
|
+
| Testing | Vitest, Jest, Playwright, xUnit |
|
|
435
|
+
| Observability | Sentry, OpenTelemetry, Pino, Winston |
|
|
355
436
|
|
|
356
437
|
### Build & Deploy Surface Area
|
|
357
438
|
|
|
@@ -400,7 +481,6 @@ Structural security hygiene indicators (not a secret scanner):
|
|
|
400
481
|
- `.env` files tracked outside `.gitignore`
|
|
401
482
|
- Audit severity counts (via `npm audit --json`)
|
|
402
483
|
|
|
403
|
-
|
|
404
484
|
### Security Scanners
|
|
405
485
|
|
|
406
486
|
Security scanner orchestration and readiness analysis focused on modern SAST and secrets tooling:
|
|
@@ -417,14 +497,42 @@ Security scanner orchestration and readiness analysis focused on modern SAST and
|
|
|
417
497
|
|
|
418
498
|
Maps external service and platform dependencies by detecting SDK packages:
|
|
419
499
|
|
|
420
|
-
| Category
|
|
421
|
-
|
|
422
|
-
| Payment
|
|
423
|
-
| Auth
|
|
424
|
-
| Cloud SDKs
|
|
425
|
-
| Databases
|
|
426
|
-
| Messaging
|
|
427
|
-
| Observability | Sentry, DataDog, New Relic
|
|
500
|
+
| Category | Examples |
|
|
501
|
+
| ------------- | -------------------------------- |
|
|
502
|
+
| Payment | Stripe, Braintree, PayPal |
|
|
503
|
+
| Auth | Auth0, Clerk, Firebase, Passport |
|
|
504
|
+
| Cloud SDKs | AWS, Azure, Google Cloud |
|
|
505
|
+
| Databases | PostgreSQL, MongoDB, Redis |
|
|
506
|
+
| Messaging | SQS, SNS, Kafka, BullMQ |
|
|
507
|
+
| Observability | Sentry, DataDog, New Relic |
|
|
508
|
+
|
|
509
|
+
### Architecture Layers
|
|
510
|
+
|
|
511
|
+
Classifies source files into architectural layers and reports drift by layer to make refactors more predictable:
|
|
512
|
+
|
|
513
|
+
- Archetype detection (e.g. Next.js, NestJS, Express, serverless, monorepo, CLI)
|
|
514
|
+
- Layer-level file counts and confidence scoring
|
|
515
|
+
- Per-layer package drift scores and risk levels
|
|
516
|
+
- Layer-specific tech stack and service dependency attribution
|
|
517
|
+
|
|
518
|
+
### Code Quality Metrics
|
|
519
|
+
|
|
520
|
+
Fast AST-based quality checks to identify upgrade friction hotspots:
|
|
521
|
+
|
|
522
|
+
- Files/functions analyzed
|
|
523
|
+
- Cyclomatic complexity averages
|
|
524
|
+
- Function length and nesting depth signals
|
|
525
|
+
- Circular dependencies and dead-code estimate
|
|
526
|
+
- "God file" detection for oversized high-complexity modules
|
|
527
|
+
|
|
528
|
+
### OWASP Category Mapping
|
|
529
|
+
|
|
530
|
+
Maps Semgrep OSS findings into OWASP Top 10 categories for security triage inside existing drift reports:
|
|
531
|
+
|
|
532
|
+
- Supports `fast` and `cache-input` modes
|
|
533
|
+
- Categorizes findings with severity and CWE metadata
|
|
534
|
+
- Emits per-category counts in JSON output
|
|
535
|
+
- Designed for CI visibility without requiring a separate report format
|
|
428
536
|
|
|
429
537
|
---
|
|
430
538
|
|
|
@@ -500,10 +608,10 @@ Set `VIBGRATE_DSN` as a secret in your CI environment. Uploads are always option
|
|
|
500
608
|
|
|
501
609
|
Vibgrate supports region-specific ingest endpoints:
|
|
502
610
|
|
|
503
|
-
| Region
|
|
504
|
-
|
|
611
|
+
| Region | Endpoint |
|
|
612
|
+
| ------------ | ------------------------ |
|
|
505
613
|
| US (default) | `us.ingest.vibgrate.com` |
|
|
506
|
-
| EU
|
|
614
|
+
| EU | `eu.ingest.vibgrate.com` |
|
|
507
615
|
|
|
508
616
|
Use `--region eu` on `push` or `dsn create` to route data to the EU endpoint.
|
|
509
617
|
|
|
@@ -513,14 +621,14 @@ Use `--region eu` on `push` or `dsn create` to route data to the EU endpoint.
|
|
|
513
621
|
|
|
514
622
|
Vibgrate is built with a privacy-first architecture. Here's what it **never** does:
|
|
515
623
|
|
|
516
|
-
| Category
|
|
517
|
-
|
|
518
|
-
| Source code
|
|
519
|
-
| Secrets
|
|
624
|
+
| Category | Hard guarantee |
|
|
625
|
+
| ------------------ | -------------------------------------------------- |
|
|
626
|
+
| Source code | Never read beyond config/manifest files |
|
|
627
|
+
| Secrets | Never scanned for, never extracted |
|
|
520
628
|
| Environment values | Never read — only `.env` file existence is flagged |
|
|
521
|
-
| Git identity data
|
|
522
|
-
| File contents
|
|
523
|
-
| Network endpoints
|
|
629
|
+
| Git identity data | Never accessed — `git log` is never invoked |
|
|
630
|
+
| File contents | Only structured config fields are extracted |
|
|
631
|
+
| Network endpoints | Never parsed from config files |
|
|
524
632
|
|
|
525
633
|
What it **does** collect:
|
|
526
634
|
|
|
@@ -534,11 +642,11 @@ What it **does** collect:
|
|
|
534
642
|
|
|
535
643
|
## Exit Codes
|
|
536
644
|
|
|
537
|
-
| Code | Meaning
|
|
538
|
-
|
|
539
|
-
| `0`
|
|
540
|
-
| `1`
|
|
541
|
-
| `2`
|
|
645
|
+
| Code | Meaning |
|
|
646
|
+
| ---- | ------------------------------ |
|
|
647
|
+
| `0` | Success |
|
|
648
|
+
| `1` | Runtime error |
|
|
649
|
+
| `2` | `--fail-on` threshold exceeded |
|
|
542
650
|
|
|
543
651
|
---
|
|
544
652
|
|
|
@@ -547,7 +655,12 @@ What it **does** collect:
|
|
|
547
655
|
The package exports its core types for programmatic use:
|
|
548
656
|
|
|
549
657
|
```typescript
|
|
550
|
-
import type {
|
|
658
|
+
import type {
|
|
659
|
+
VibgrateConfig,
|
|
660
|
+
ScanArtifact,
|
|
661
|
+
DriftScore,
|
|
662
|
+
Finding,
|
|
663
|
+
} from "@vibgrate/cli";
|
|
551
664
|
```
|
|
552
665
|
|
|
553
666
|
---
|