@createsomething/ground-mcp 0.2.4 → 0.3.2
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 +72 -1
- package/bin/ground +0 -0
- package/bin/ground-mcp +0 -0
- package/install.js +43 -6
- package/package.json +16 -2
package/README.md
CHANGED
|
@@ -20,6 +20,56 @@ Works with Claude Code, Cursor, Windsurf, VS Code Copilot, Claude Desktop, and a
|
|
|
20
20
|
|
|
21
21
|
**The difference**: Ground requires computation before claims. No hallucinated analysis.
|
|
22
22
|
|
|
23
|
+
## Recommended agent path
|
|
24
|
+
|
|
25
|
+
Use CTX and Ground for different evidence:
|
|
26
|
+
|
|
27
|
+
- **CTX** retrieves the history of earlier agent work.
|
|
28
|
+
- **Ground** computes facts about the code that is on disk now.
|
|
29
|
+
|
|
30
|
+
For a current-source review, start with the compact verified loop:
|
|
31
|
+
|
|
32
|
+
1. `ground_analyze` — get machine-readable findings for a directory.
|
|
33
|
+
2. `ground_diff` — restrict the same checks to changes since a Git baseline.
|
|
34
|
+
3. `ground_verify_fix` — confirm the specific reported issue is gone.
|
|
35
|
+
4. `ground_explain` — inspect why Ground included, excluded, or scored a result.
|
|
36
|
+
|
|
37
|
+
The MCP server also retains targeted and graph tools for deeper investigations.
|
|
38
|
+
The installed CLI exposes the same batch and Git-aware entry points:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
ground analyze ./src --checks duplicates,dead_exports
|
|
42
|
+
ground diff ./src --base origin/main --checks duplicates
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Both commands print JSON evidence. `ground diff` only returns files inside the
|
|
46
|
+
requested directory and resolves Git paths from the repository root, so it is
|
|
47
|
+
safe to run from a package inside a monorepo.
|
|
48
|
+
|
|
49
|
+
### Diff coverage
|
|
50
|
+
|
|
51
|
+
`ground diff` determines analyzability from the requested checks. Its current
|
|
52
|
+
duplicate and orphan checks cover TypeScript, JavaScript, and `.mjs` source
|
|
53
|
+
paths. The legacy `changed_files` and `changed_file_list` fields continue to
|
|
54
|
+
describe only analyzable source files. Use the added
|
|
55
|
+
`discovered_changed_files`, `analyzable_changed_files`, and
|
|
56
|
+
`excluded_changed_files` fields to see the full Git change scope and why a path
|
|
57
|
+
was not analyzed, including `unsupported_by_requested_checks`. If no changed
|
|
58
|
+
source is eligible, the result explicitly says so; it does not describe
|
|
59
|
+
excluded files as clean.
|
|
60
|
+
|
|
61
|
+
For promotion evidence, inspect `check_coverage.<check>.status`,
|
|
62
|
+
`analyzed_changed_files`, and `excluded_changed_files`. Ground 0.3.2 removes
|
|
63
|
+
`ground diff`'s silent 500-file truncation and makes source traversal
|
|
64
|
+
deterministic and cycle-safe. Diff mode parses the complete corpus but only
|
|
65
|
+
compares pairs involving changed files. A changed file is only listed as
|
|
66
|
+
analyzed for a check after that check completed for the file; partial or failed
|
|
67
|
+
analysis stays explicit in the per-check exclusions. Standalone broad duplicate
|
|
68
|
+
scans retain their safety bound and report `scan_complete: false` when it is hit.
|
|
69
|
+
|
|
70
|
+
The release package includes the native Apple Silicon binaries directly; other
|
|
71
|
+
supported platforms download the matching verified release asset during install.
|
|
72
|
+
|
|
23
73
|
## The Problem
|
|
24
74
|
|
|
25
75
|
AI agents are confident. Too confident.
|
|
@@ -317,6 +367,27 @@ Ground loads `.ground.yml` from your project root for:
|
|
|
317
367
|
|
|
318
368
|
See [Full Documentation](https://github.com/createsomethingtoday/create-something-monorepo/tree/main/packages/ground) for configuration reference.
|
|
319
369
|
|
|
370
|
+
## Native service pilot
|
|
371
|
+
|
|
372
|
+
The CRE-1473 pilot keeps TypeScript as the control plane and invokes the existing Rust `ground-mcp` binary through a small, typed MCP adapter. It is a bounded proof for analysis workloads, not a production routing change or a broad language migration.
|
|
373
|
+
|
|
374
|
+
The pilot owns four things:
|
|
375
|
+
|
|
376
|
+
- `pilot/ground-native-client.ts` — discovers and calls `ground_analyze` over stdio MCP with explicit timeout and error behavior
|
|
377
|
+
- `pilot/benchmark.ts` — captures repeated native samples plus a directional comparison with the existing TypeScript duplicate-analysis script
|
|
378
|
+
- `pilot/ground-benchmark-receipt.schema.json` — makes the retained evidence machine-checkable
|
|
379
|
+
- `pilot/validate-receipt.ts` — independently rejects incomplete, failed, or inconsistent receipts
|
|
380
|
+
|
|
381
|
+
From the repository root, run:
|
|
382
|
+
|
|
383
|
+
```bash
|
|
384
|
+
pnpm --filter @createsomething/ground-mcp run pilot:verify
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
The benchmark defaults to `packages/mcp-core/src`, five retained samples, one warmup, and the release binary at `packages/ground/target/release/ground-mcp`. Metrics between the Rust MCP path and TypeScript script are directional only because the implementations do not use identical parsers or algorithms.
|
|
388
|
+
|
|
389
|
+
Rollback is removal of the pilot adapter, benchmark, and package-local development scripts. No existing Ground command, npm installer path, Cloudflare surface, or production consumer is redirected by this pilot.
|
|
390
|
+
|
|
320
391
|
## Links
|
|
321
392
|
|
|
322
393
|
- [Full Documentation](https://github.com/createsomethingtoday/create-something-monorepo/tree/main/packages/ground)
|
|
@@ -331,7 +402,7 @@ MIT
|
|
|
331
402
|
|
|
332
403
|
## Related
|
|
333
404
|
|
|
334
|
-
Looking for task coordination?
|
|
405
|
+
Looking for task coordination? Use Linear with the CREATE SOMETHING `pnpm linear:*` wrappers for tracked work, ownership, status, and delivery evidence.
|
|
335
406
|
|
|
336
407
|
## Keywords
|
|
337
408
|
|
package/bin/ground
ADDED
|
Binary file
|
package/bin/ground-mcp
CHANGED
|
Binary file
|
package/install.js
CHANGED
|
@@ -14,6 +14,8 @@ const zlib = require('zlib');
|
|
|
14
14
|
|
|
15
15
|
const REPO = 'createsomethingtoday/create-something-monorepo';
|
|
16
16
|
const VERSION = require('./package.json').version;
|
|
17
|
+
const SKIP_INSTALL = process.env.GROUND_MCP_SKIP_BINARY_INSTALL === '1';
|
|
18
|
+
const IS_SOURCE_TREE_INSTALL = fs.existsSync(path.resolve(__dirname, '../Cargo.toml'));
|
|
17
19
|
|
|
18
20
|
// Platform mapping
|
|
19
21
|
// Note: macOS Intel uses arm64 binary via Rosetta 2
|
|
@@ -44,10 +46,25 @@ function getBinaryName() {
|
|
|
44
46
|
return name;
|
|
45
47
|
}
|
|
46
48
|
|
|
47
|
-
function getDownloadUrl(binaryName) {
|
|
48
|
-
const ext =
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
function getDownloadUrl(binaryName, platform = process.platform) {
|
|
50
|
+
const ext = platform === 'win32' ? 'zip' : 'tar.gz';
|
|
51
|
+
return `https://github.com/${REPO}/releases/download/ground-v${VERSION}/ground-${binaryName}.${ext}`;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
function hasBundledNativeBinaries() {
|
|
55
|
+
// The npm artifact includes a release-built Apple Silicon bootstrap pair.
|
|
56
|
+
// Other platforms continue through the release-asset downloader below.
|
|
57
|
+
if (getPlatformKey() !== 'darwin-arm64') return false;
|
|
58
|
+
|
|
59
|
+
const binDir = path.join(__dirname, 'bin');
|
|
60
|
+
return ['ground', 'ground-mcp'].every((name) => {
|
|
61
|
+
const binary = path.join(binDir, name);
|
|
62
|
+
try {
|
|
63
|
+
return fs.statSync(binary).isFile() && (fs.statSync(binary).mode & 0o111) !== 0;
|
|
64
|
+
} catch {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
});
|
|
51
68
|
}
|
|
52
69
|
|
|
53
70
|
async function download(url) {
|
|
@@ -92,6 +109,21 @@ async function extractZip(buffer, destDir) {
|
|
|
92
109
|
}
|
|
93
110
|
|
|
94
111
|
async function install() {
|
|
112
|
+
if (SKIP_INSTALL) {
|
|
113
|
+
console.log('Ground MCP: Skipping binary install because GROUND_MCP_SKIP_BINARY_INSTALL=1');
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
if (IS_SOURCE_TREE_INSTALL) {
|
|
118
|
+
console.log('Ground MCP: Skipping binary install in source checkout');
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
if (hasBundledNativeBinaries()) {
|
|
123
|
+
console.log('Ground MCP: Using bundled darwin-arm64 binaries');
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
|
|
95
127
|
console.log('Ground MCP: Installing binary...');
|
|
96
128
|
|
|
97
129
|
const binaryName = getBinaryName();
|
|
@@ -166,5 +198,10 @@ async function install() {
|
|
|
166
198
|
}
|
|
167
199
|
}
|
|
168
200
|
|
|
169
|
-
|
|
170
|
-
install();
|
|
201
|
+
if (require.main === module) {
|
|
202
|
+
install();
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
module.exports = {
|
|
206
|
+
getDownloadUrl,
|
|
207
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@createsomething/ground-mcp",
|
|
3
|
-
"version": "0.2
|
|
3
|
+
"version": "0.3.2",
|
|
4
4
|
"description": "Grounded claims for code. MCP server that prevents AI hallucination in code analysis.",
|
|
5
5
|
"author": "CREATE SOMETHING <hello@createsomething.io>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -48,10 +48,24 @@
|
|
|
48
48
|
"css-analysis"
|
|
49
49
|
],
|
|
50
50
|
"bin": {
|
|
51
|
+
"ground": "bin/ground",
|
|
51
52
|
"ground-mcp": "bin/ground-mcp"
|
|
52
53
|
},
|
|
53
54
|
"scripts": {
|
|
54
|
-
"postinstall": "node install.js"
|
|
55
|
+
"postinstall": "node install.js",
|
|
56
|
+
"pilot:build": "cargo build --release --manifest-path ../Cargo.toml --bin ground --bin ground-mcp",
|
|
57
|
+
"pilot:benchmark": "tsx pilot/benchmark.ts",
|
|
58
|
+
"pilot:check": "tsc --noEmit -p pilot/tsconfig.json",
|
|
59
|
+
"pilot:receipt:validate": "tsx pilot/validate-receipt.ts",
|
|
60
|
+
"pilot:test": "pnpm run pilot:build && tsx --test pilot/*.test.ts",
|
|
61
|
+
"pilot:verify": "pnpm run pilot:check && pnpm run pilot:test && pnpm run pilot:benchmark && pnpm run pilot:receipt:validate -- pilot/evidence/ground-native-benchmark-receipt.v1.json"
|
|
62
|
+
},
|
|
63
|
+
"devDependencies": {
|
|
64
|
+
"@modelcontextprotocol/sdk": "^1.25.3",
|
|
65
|
+
"@types/node": "^24.10.9",
|
|
66
|
+
"ajv": "^8.17.1",
|
|
67
|
+
"tsx": "^4.21.0",
|
|
68
|
+
"typescript": "^5.9.3"
|
|
55
69
|
},
|
|
56
70
|
"files": [
|
|
57
71
|
"bin",
|