@vibgrate/cli 2026.711.1 → 2026.715.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/DOCS.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Vibgrate CLI — Full Documentation
2
2
 
3
- > Continuous Drift Intelligence for Node, .NET, Python, and Java (all supported in the CLI today)
3
+ > [Code Drift Intelligence](https://vibgrate.com/code-drift-intelligence) across ~19 ecosystems — Node, .NET, Python, Java, Go, Rust, and more
4
4
 
5
5
  For a quick overview, see the [README](./README.md). This document covers everything in detail.
6
6
 
@@ -76,6 +76,7 @@ For a quick overview, see the [README](./README.md). This document covers everyt
76
76
  - [Security Posture](#security-posture)
77
77
  - [Security Scanners](#security-scanners)
78
78
  - [Service Dependencies](#service-dependencies)
79
+ - [Database Schema](#database-schema)
79
80
  - [Architecture Layers](#architecture-layers)
80
81
  - [Code Quality Metrics](#code-quality-metrics)
81
82
  - [OWASP Category Mapping](#owasp-category-mapping)
@@ -100,10 +101,10 @@ Vibgrate recursively scans your repository for `package.json` (Node/TypeScript),
100
101
  1. **Detects** the runtime version, target framework, and all dependencies
101
102
  2. **Queries** the npm/NuGet registry for latest stable versions (with built-in caching and concurrency control)
102
103
  3. **Computes** how far behind each component is — major version lag, EOL proximity, dependency age distribution
103
- 4. **Generates** a deterministic DriftScore (0–100)
104
+ 4. **Generates** a deterministic [DriftScore](https://vibgrate.com/driftscore) (0–100)
104
105
  5. **Produces** findings, a full JSON artifact, and optional SARIF output
105
106
 
106
- Core drift analysis does not execute source code. Optional security scanners can run lightweight secret heuristics and local toolchain checks. Vibgrate Cloud upload remains optional.
107
+ Core drift analysis does not execute source code. Optional security scanners can run lightweight secret heuristics and local toolchain checks. [Vibgrate Cloud](https://vibgrate.com/cloud) upload remains optional.
107
108
 
108
109
  ---
109
110
 
@@ -291,9 +292,9 @@ breaking-change signals, and considers the API surface — the classes and
291
292
  functions your code imports — that a new version must preserve.
292
293
 
293
294
  Security is folded in with **real-world exploitability**. Each upgrade is checked
294
- against OSV in both directions (advisories **remediated** vs. **introduced**), and
295
- current-version advisories are cross-referenced with the **CISA KEV** (known-
296
- exploited) list and **FIRST EPSS** (exploit-probability) scores. A package with a
295
+ against [OSV](https://vibgrate.com/glossary/osv) in both directions (advisories **remediated** vs. **introduced**), and
296
+ current-version advisories are cross-referenced with the [**CISA KEV**](https://vibgrate.com/glossary/kev) (known-
297
+ exploited) list and [**FIRST EPSS**](https://vibgrate.com/glossary/epss) (exploit-probability) scores. A package with a
297
298
  known-exploited advisory is treated as must-fix, so the recommendation prioritises
298
299
  "fix these few" over churning everything. Advisories with no upgrade path in any
299
300
  plan are called out as unresolved.
@@ -409,7 +410,7 @@ vg report [--in <file>] [--format md|text|json]
409
410
 
410
411
  ### vg sbom
411
412
 
412
- Export SBOMs from an existing scan artifact or compare two artifacts.
413
+ Export [SBOMs](https://vibgrate.com/glossary/sbom) from an existing scan artifact or compare two artifacts.
413
414
 
414
415
  ```bash
415
416
  vg sbom export [--in <file>] [--format cyclonedx|spdx] [--out <file>]
@@ -491,7 +492,7 @@ Expected results:
491
492
 
492
493
  `vg scan --vulns` matches your installed dependencies against the public OSV database and records each known vulnerability — advisory id and CVE, severity, CVSS, and the fixing version — in the scan artifact, as findings, and in SARIF. Supply advisories in a `--package-manifest` bundle to run it offline.
493
494
 
494
- In a git repository the scan also attributes each finding: the commit, author, and date that introduced the vulnerable version, and how long you have been exposed. These exposure windows aggregate into remediation metrics framed around the EU Cyber Resilience Act (CRA): open counts by severity, mean and maximum time exposed, and per-severity SLA breaches (defaults: critical 7 days, high 30, moderate 90, low 180). The metrics are descriptive — they show whether remediation keeps pace; they are not a compliance certification.
495
+ In a git repository the scan also attributes each finding: the commit, author, and date that introduced the vulnerable version, and how long you have been exposed. These exposure windows aggregate into remediation metrics framed around the [EU Cyber Resilience Act (CRA)](https://vibgrate.com/compliance/cra): open counts by severity, mean and maximum time exposed, and per-severity SLA breaches (defaults: critical 7 days, high 30, moderate 90, low 180). The metrics are descriptive — they show whether remediation keeps pace; they are not a compliance certification.
495
496
 
496
497
  The scan also reconstructs **closed** exposure windows from history — a vulnerable version that was later bumped out of the affected range or removed from the lockfile entirely — and reports real remediation time (MTTR) from them: measured, not estimated. Offline, a package-version manifest extends this to advisories that are fully fixed today, so a dependency that is clean now but was once vulnerable still counts toward your remediation record.
497
498
 
@@ -855,7 +856,7 @@ Add `--json` for machine-readable output.
855
856
 
856
857
  ### vg serve
857
858
 
858
- Start Vibgrate AI Context — a local-first MCP serving your code map, drift, and version-correct docs to your AI assistant (fully offline under `--local`).
859
+ Start [Vibgrate AI Context](https://vibgrate.com/library) — a local-first [MCP](https://vibgrate.com/glossary/model-context-protocol) serving your code map, drift, and version-correct docs to your AI assistant (fully offline under `--local`).
859
860
 
860
861
  ```bash
861
862
  vg serve
@@ -1027,6 +1028,8 @@ The DriftScore is a deterministic, versioned metric (0–100) that represents ho
1027
1028
 
1028
1029
  **Lower score = healthier upgrade posture.** 0 means no drift (fully current); 100 means maximum drift. Higher is worse.
1029
1030
 
1031
+ The methodology is published: see the [public scoring specification](./docs/public/SCORING-METHODOLOGY-PUBLIC.md) in this repository and the overview at [vibgrate.com/driftscore](https://vibgrate.com/driftscore).
1032
+
1030
1033
  ### Risk Levels
1031
1034
 
1032
1035
  | Score | Risk Level |
@@ -1107,6 +1110,7 @@ const config: VibgrateConfig = {
1107
1110
  securityPosture: { enabled: true },
1108
1111
  securityScanners: { enabled: true },
1109
1112
  serviceDependencies: { enabled: true },
1113
+ databaseSchema: { enabled: true },
1110
1114
  },
1111
1115
  };
1112
1116
 
@@ -1162,7 +1166,34 @@ Beyond the core drift score, Vibgrate runs a suite of extended scanners that col
1162
1166
  - Are **read-only** — they never write files or execute project code
1163
1167
  - Run **in parallel** — failures in one scanner never affect the others
1164
1168
  - Can be **individually toggled** in the config
1165
- - Collect **zero sensitive data** — no source code, no secrets, no PII
1169
+ - Collect **zero sensitive data** — no secrets, no PII, and no credentials, even the ones that do open source files (below)
1170
+
1171
+ The core drift score is manifest/lockfile-only. Several extended scanners, and
1172
+ the code graph (`vg build`/`vg map`/`vg share`/`vg serve`), go further and open
1173
+ your source files locally — that is how they work, not an accident:
1174
+
1175
+ | Reads source locally | What it extracts | Keeps raw text? |
1176
+ |---|---|---|
1177
+ | **Code graph** (`vg build`/`vg map`) | Symbol names, call edges, file paths, hubs/areas — the graph itself | No — never a source line, only structural graph facts |
1178
+ | **Code Quality** (`codeQuality`) | Cyclomatic complexity, function length, nesting depth, dead code, "god files" | No — computed metrics only |
1179
+ | **Breaking Change Exposure** (`breakingChangeExposure`) | Import/usage-pattern hit counts for majorly-outdated packages | No — counts only |
1180
+ | **Database Schema** (`databaseSchema`) | Table/model names, column names and types, relation/key flags from SQL/Prisma/Drizzle/TypeORM files | No — never a query, row, or credential |
1181
+ | **UI Purpose** (`uiPurpose`) | Route/nav/title/CTA copy, for feature detection | **Yes** — short evidence samples of the literal UI text are kept locally (never business logic, never a full file) |
1182
+
1183
+ None of this is executed, and **nothing above leaves your machine** unless you
1184
+ run `vg share`/`vg push` or scan with a DSN configured — and even then, what
1185
+ uploads is the computed/structural output in the table above, never a raw
1186
+ source file. Each of these is individually toggleable; set the matching
1187
+ `scanners.<name>.enabled` to `false` (or `scanners: false` for all extended
1188
+ scanners, which does not affect the code graph) if you don't want the read to
1189
+ happen at all. See [Scanner Toggles](#scanner-toggles) above and each
1190
+ scanner's own section below.
1191
+
1192
+ The one exception where code truly leaves your machine is the **remediation
1193
+ agent**: when you ask it to write a fix, it clones your repository into an
1194
+ isolated virtual machine Vibgrate controls, makes the change, and hands you a
1195
+ pull request. That only happens when you ask for it. See
1196
+ [vibgrate.com/subprocessors](https://vibgrate.com/subprocessors) for who processes what.
1166
1197
 
1167
1198
  ### Platform Matrix
1168
1199
 
@@ -1297,6 +1328,30 @@ Maps external service and platform dependencies by detecting SDK packages:
1297
1328
  | Messaging | SQS, SNS, Kafka, BullMQ |
1298
1329
  | Observability | Sentry, DataDog, New Relic |
1299
1330
 
1331
+ ### Database Schema
1332
+
1333
+ Extracts structural database-schema facts across five sources — Prisma
1334
+ (`schema.prisma`), raw SQL migrations (`.sql` files), SQL Server database
1335
+ projects (`.sqlproj`), Drizzle (`pgTable`/`mysqlTable`/`sqliteTable`), and
1336
+ TypeORM (`@Entity()` classes) — merged into one report:
1337
+
1338
+ - Table/model names, per-field name and type, and relation/list/optional/id/unique flags
1339
+ - Enum names and values (Prisma)
1340
+ - Datasource providers (e.g. `postgresql`, `mysql`) — never the connection-string `url`
1341
+ - Files scanned, with a per-project breakdown
1342
+
1343
+ Only structural facts are ever extracted — never a raw source line, a query,
1344
+ or a connection string/credential (any `scheme://user:pass@host` line is
1345
+ stripped as defense in depth even though hand-written SQL rarely embeds one).
1346
+ Reading these facts means opening `.sql`/`.prisma`/ORM source files locally —
1347
+ see the table at the top of this section for how this compares to the code
1348
+ graph and the other scanners that also read source. It's on by default; disable it with
1349
+ `scanners.databaseSchema.enabled: false` in `vibgrate.config.ts` (see
1350
+ [Scanner Toggles](#scanner-toggles)). Like every extended scanner, results
1351
+ only leave your machine when you run `vg push` or scan with a DSN configured
1352
+ — and the models/fields/files arrays are capped before upload so a
1353
+ large-monorepo schema can't balloon the payload.
1354
+
1300
1355
  ### Architecture Layers
1301
1356
 
1302
1357
  Classifies source files into architectural layers and reports drift by layer to make refactors more predictable:
@@ -1482,7 +1537,7 @@ import type {
1482
1537
 
1483
1538
  ## Requirements
1484
1539
 
1485
- - **Node.js** >= 20.0.0
1540
+ - **Node.js** >= 22.0.0
1486
1541
  - Works on macOS, Linux, and Windows
1487
1542
 
1488
1543
  ---
@@ -1490,6 +1545,17 @@ import type {
1490
1545
  ## Links
1491
1546
 
1492
1547
  - [Website](https://vibgrate.com)
1548
+ - [Vibgrate CLI — live demo and simulator](https://vibgrate.com/cli)
1549
+ - [CLI benchmarks](https://vibgrate.com/cli/benchmarks) · [methodology](https://vibgrate.com/cli/benchmarks/methodology) · [token savings](https://vibgrate.com/cli/benchmarks/token-savings)
1550
+ - [DriftScore](https://vibgrate.com/driftscore)
1551
+ - [Vibgrate AI Context (local-first MCP)](https://vibgrate.com/library)
1552
+ - [Vibgrate Graph](https://vibgrate.com/graph)
1553
+ - [Vibgrate Cloud](https://vibgrate.com/cloud) · [create a free workspace](https://dash.vibgrate.com)
1554
+ - [Vibgrate MCP (hosted)](https://vibgrate.com/mcp)
1555
+ - [AI agent skills](https://vibgrate.com/skills)
1556
+ - [Glossary](https://vibgrate.com/glossary)
1557
+ - [Help center](https://vibgrate.com/help)
1558
+ - [Changelog](https://vibgrate.com/changelog)
1493
1559
  - [npm](https://www.npmjs.com/package/@vibgrate/cli)
1494
1560
 
1495
1561
  ---
package/README.md CHANGED
@@ -19,8 +19,8 @@
19
19
 
20
20
  `vg` answers two questions for any repo:
21
21
 
22
- 1. **What is this codebase?** — A deterministic code graph: call trees, import paths, impact surfaces, dependency facts.
23
- 2. **How far behind is it?** — A ranked **DriftScore** (0–100) with runtime/framework lag, dependency age and EOL proximity, and a prioritised fix list.
22
+ 1. **What is this codebase?** — A deterministic [code graph](https://vibgrate.com/graph): call trees, import paths, impact surfaces, dependency facts.
23
+ 2. **How far behind is it?** — A ranked **[DriftScore](https://vibgrate.com/driftscore)** (0–100) with runtime/framework lag, dependency age and EOL proximity, and a prioritised fix list.
24
24
 
25
25
  Everything runs **on your machine**. No API key, no network call, no data leaving your repo unless you explicitly push. The `vibgrate` command is an alias for `vg` — they are interchangeable.
26
26
 
@@ -68,7 +68,7 @@ npx vg scan # vg is the primary command; vibgrate is an alia
68
68
 
69
69
  ## Use it with your AI assistant
70
70
 
71
- `vg serve` starts **Vibgrate AI Context** — a local-first MCP server that
71
+ `vg serve` starts **[Vibgrate AI Context](https://vibgrate.com/library)** — a local-first [MCP](https://vibgrate.com/glossary/model-context-protocol) server that
72
72
  gives any MCP-compatible assistant (Claude, Cursor, Windsurf, Copilot, Gemini
73
73
  CLI, …) your code map, **offline drift**, local models, and **version-correct
74
74
  library docs**, all from your machine (no account, nothing uploaded; thin
@@ -85,7 +85,7 @@ vg install # interactive: pick your assistant(s) and done
85
85
  vg install --all # install for every detected assistant at once
86
86
  ```
87
87
 
88
- This writes the MCP config for your chosen tool(s) and installs a skill that teaches the assistant how to query the graph. After reloading your assistant you get graph-aware answers: call trees, impact analysis, drift findings, version-correct library docs — all from local data.
88
+ This writes the MCP config for your chosen tool(s) and installs a skill that teaches the assistant how to query the graph. After reloading your assistant you get graph-aware answers: call trees, impact analysis, drift findings, version-correct library docs — all from local data. The token savings are measured and published, methodology included, at [vibgrate.com/cli/benchmarks/token-savings](https://vibgrate.com/cli/benchmarks/token-savings).
89
89
 
90
90
  Browse all 21+ supported assistants and their skill descriptions at **[vibgrate.com/skills](https://vibgrate.com/skills)**.
91
91
 
@@ -129,21 +129,21 @@ One scan gives you:
129
129
  - **Score breakdown** — runtime, frameworks, dependencies, EOL
130
130
  - **Per-project detail** across Node.js/TypeScript, .NET, Python, and Java
131
131
  - **Actionable findings** ranked by likely impact
132
- - **SBOM export** (CycloneDX / SPDX)
132
+ - **[SBOM](https://vibgrate.com/glossary/sbom) export** (CycloneDX / SPDX)
133
133
  - **Known vulnerabilities** (opt in with `--vulns`) — severity, CVSS, the fixing version, and, in a git repo, who introduced them
134
134
 
135
135
  ---
136
136
 
137
137
  ## Find known vulnerabilities and who introduced them
138
138
 
139
- `vg scan --vulns` checks your installed dependencies against the public OSV database and reports each known vulnerability with its severity, CVSS score, and the version that fixes it — as text, JSON, or SARIF. Add `--package-manifest` to run it fully offline from a local advisory bundle.
139
+ `vg scan --vulns` checks your installed dependencies against the public [OSV](https://vibgrate.com/glossary/osv) database and reports each known vulnerability with its severity, CVSS score, and the version that fixes it — as text, JSON, or SARIF. Add `--package-manifest` to run it fully offline from a local advisory bundle.
140
140
 
141
141
  ```bash
142
142
  vg scan --vulns # drift score + known vulnerabilities
143
143
  vg scan --full # drift + vulnerabilities + a banned-dependency report
144
144
  ```
145
145
 
146
- In a git repository, every finding is attributed from history: who introduced the vulnerable version, in which commit, and how long you have been exposed. Those exposure windows roll up into remediation metrics framed around the EU Cyber Resilience Act (CRA) — per-severity time-exposed and SLA breaches — so "are we fixing things fast enough?" has a number.
146
+ In a git repository, every finding is attributed from history: who introduced the vulnerable version, in which commit, and how long you have been exposed. Those exposure windows roll up into remediation metrics framed around the [EU Cyber Resilience Act (CRA)](https://vibgrate.com/compliance/cra) — per-severity time-exposed and SLA breaches — so "are we fixing things fast enough?" has a number.
147
147
 
148
148
  ```bash
149
149
  vg why lodash # who added a dependency, every version since, and any open vulnerabilities
@@ -158,7 +158,7 @@ Your AI assistant sees this too: `vg serve` exposes `list_vulnerabilities`, `vul
158
158
 
159
159
  ## Track drift over time → create a free workspace
160
160
 
161
- The CLI is fully useful offline. When you want **trends across runs and repos** — so drift becomes a metric you manage, not a surprise you discover — push scans to a workspace:
161
+ The CLI is fully useful offline. When you want **trends across runs and repos** — so drift becomes a metric you manage, not a surprise you discover — push scans to a [Vibgrate Cloud](https://vibgrate.com/cloud) workspace:
162
162
 
163
163
  1. **Create a workspace** at **[dash.vibgrate.com](https://dash.vibgrate.com)** and copy your DSN.
164
164
  2. **Connect and push:**
@@ -232,8 +232,8 @@ vg vex # generate an OpenVEX document for attestation
232
232
 
233
233
  ## Privacy & offline-first
234
234
 
235
- - No data leaves your machine unless you run `--push` / `vg push`.
236
- - Core graph analysis and drift scoring read manifests and configs**not your source code**.
235
+ - No data leaves your machine unless you run `--push` / `vg push` / `vg share`.
236
+ - Drift scoring reads manifests and configs only. The code graph (`vg build`/`vg map`) and a few extended scanners (code quality, database schema, UI text) read your source **locally** to compute structural facts and metricsnever a raw source line, and never uploaded as-is; see [DOCS.md](./DOCS.md#extended-scanners) for exactly what each one reads.
237
237
  - Works without login and without any SaaS dependency.
238
238
  - `--offline` disables registry/network lookups; `--package-manifest <file>` feeds drift scoring a local version bundle.
239
239
  - `--max-privacy` suppresses local artifact writes and high-context scanners; `--no-local-artifacts` skips writing `.vibgrate/*.json` to disk.
@@ -244,6 +244,8 @@ vg scan --offline --package-manifest ./package-versions.zip --max-privacy --form
244
244
 
245
245
  Add `.vibgrate/` to your `.gitignore` — those are regenerated local outputs.
246
246
 
247
+ More on how Vibgrate handles code and data: [vibgrate.com/security](https://vibgrate.com/security).
248
+
247
249
  ---
248
250
 
249
251
  ## Quick start with AI assistants
@@ -325,7 +327,7 @@ Full flag and configuration reference: **[DOCS.md](./DOCS.md)** · **[vibgrate.c
325
327
 
326
328
  ## Why teams adopt Vibgrate
327
329
 
328
- Most systems don't fail all at once — they accumulate upgrade debt and architectural drift silently until migrations become expensive. `vg` makes that debt measurable and repeatable, and gives AI assistants the local context they need to be useful:
330
+ Most systems don't fail all at once — they accumulate upgrade debt and architectural [drift](https://vibgrate.com/glossary/code-drift) silently until migrations become expensive. `vg` makes that debt measurable and repeatable — the practice we call [Code Drift Intelligence](https://vibgrate.com/code-drift-intelligence) — and gives AI assistants the local context they need to be useful:
329
331
 
330
332
  | Mode | What you get | Best for |
331
333
  | --- | --- | --- |
@@ -363,7 +365,9 @@ When `@vibgrate/cli` is installed, it registers **both** bin entries uncondition
363
365
  &nbsp;·&nbsp;
364
366
  <a href="https://vibgrate.com/cli">Try the live demo</a>
365
367
  &nbsp;·&nbsp;
366
- <a href="./DOCS.md">Vibgrate AI Context (local MCP)</a>
368
+ <a href="https://vibgrate.com/cli/benchmarks">Benchmarks</a>
369
+ &nbsp;·&nbsp;
370
+ <a href="https://vibgrate.com/library">Vibgrate AI Context (local MCP)</a>
367
371
  &nbsp;·&nbsp;
368
372
  <a href="https://vibgrate.com/mcp">Vibgrate MCP (hosted)</a>
369
373
  &nbsp;·&nbsp;
@@ -0,0 +1,6 @@
1
+ export { baselineCommand, runBaseline } from './chunk-6DKWB2OI.js';
2
+ import './chunk-C5AVF7PT.js';
3
+ import './chunk-RXP66R2E.js';
4
+ import './chunk-GI6W53LM.js';
5
+ //# sourceMappingURL=baseline-BTLZWSNS.js.map
6
+ //# sourceMappingURL=baseline-BTLZWSNS.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"baseline-V5XGS76K.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"baseline-BTLZWSNS.js"}