sparda-mcp 0.71.3 → 0.71.5
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 -15
- package/package.json +5 -5
- package/src/commands/apocalypse.js +1 -1
- package/src/commands/prove.js +1 -1
- package/src/commands/ubg.js +1 -1
- package/src/detect.js +1 -1
- package/src/index.js +1 -1
- package/src/server/stdio.js +2 -2
package/README.md
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
# SPARDA
|
|
2
2
|
|
|
3
|
-
<div align="center">
|
|
4
|
-
<img src="assets/logo-presentation.png" alt="SPARDA Banner" width="800" />
|
|
5
|
-
</div>
|
|
3
|
+
<div align="center">`r`n <img src="https://raw.githubusercontent.com/zakariagharzouli/sparda/main/assets/sparda-readme-banner-dark-1600x480.png" alt="SPARDA — AI writes. SPARDA proves." width="800" />`r`n</div>
|
|
6
4
|
|
|
7
5
|
<br/>
|
|
8
6
|
|
|
@@ -16,7 +14,7 @@
|
|
|
16
14
|
**The trust layer for AI-written backends.** SPARDA compiles your backend — routes, database queries, state mutations, guards, side-effects — into one deterministic behavior graph, then **statically proves what can and can't break before you ship**: no unguarded mutation, no broken invariant, no non-atomic aggregate write.
|
|
17
15
|
|
|
18
16
|
[](https://www.npmjs.com/package/sparda-mcp)
|
|
19
|
-
[](https://github.com/zakariagharzouli/sparda/actions/workflows/ci.yml)
|
|
20
18
|

|
|
21
19
|

|
|
22
20
|
[](./LICENSE)
|
|
@@ -184,7 +182,7 @@ If any Critical or High finding is found, `apocalypse` exits with a non-zero cod
|
|
|
184
182
|
**One step in your workflow — findings land in the GitHub Security tab (SARIF):**
|
|
185
183
|
|
|
186
184
|
```yaml
|
|
187
|
-
- uses:
|
|
185
|
+
- uses: zakariagharzouli/sparda@main
|
|
188
186
|
with:
|
|
189
187
|
sarif: 'true'
|
|
190
188
|
```
|
|
@@ -263,11 +261,6 @@ To undo everything: **`npx sparda-mcp remove`** restores your code byte-for-byte
|
|
|
263
261
|
|
|
264
262
|
## The promise — every word is backed by a test in CI
|
|
265
263
|
|
|
266
|
-
<div align="center">
|
|
267
|
-
<img src="assets/features-presentation.png" alt="SPARDA Features" width="800" />
|
|
268
|
-
</div>
|
|
269
|
-
|
|
270
|
-
<br/>
|
|
271
264
|
|
|
272
265
|
1. **Three minutes, one command.** AST scan, router generation, reversible injection — no config.
|
|
273
266
|
2. **Try it for free, leave for free.** `npx sparda-mcp remove` restores your code **byte-for-byte** (tested on JS, TS, Python, even Windows CRLF files). No trace, no lock-in.
|
|
@@ -405,10 +398,5 @@ crippled to upsell you.
|
|
|
405
398
|
You may not resell SPARDA or offer it as a competing commercial service.
|
|
406
399
|
Each version converts to Apache 2.0 four years after its release.
|
|
407
400
|
|
|
408
|
-
<div align="center">
|
|
409
|
-
<img src="assets/github-star.png" alt="Leave a Star" width="600" />
|
|
410
|
-
</div>
|
|
411
|
-
|
|
412
|
-
<br/>
|
|
413
401
|
|
|
414
402
|
By [Residual Labs](https://residual-labs.fr)
|
package/package.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sparda-mcp",
|
|
3
|
-
"version": "0.71.
|
|
4
|
-
"mcpName": "io.github.
|
|
3
|
+
"version": "0.71.5",
|
|
4
|
+
"mcpName": "io.github.zakariagharzouli/sparda-mcp",
|
|
5
5
|
"description": "AI writes. SPARDA proves. A deterministic, offline gate that catches when an AI edit removes a guard, exposes a route, or breaks an invariant \u2014 no API key, right in the agent edit loop.",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
9
|
-
"url": "git+https://github.com/
|
|
9
|
+
"url": "git+https://github.com/zakariagharzouli/sparda.git"
|
|
10
10
|
},
|
|
11
|
-
"homepage": "https://github.com/
|
|
11
|
+
"homepage": "https://github.com/zakariagharzouli/sparda#readme",
|
|
12
12
|
"bugs": {
|
|
13
|
-
"url": "https://github.com/
|
|
13
|
+
"url": "https://github.com/zakariagharzouli/sparda/issues"
|
|
14
14
|
},
|
|
15
15
|
"bin": {
|
|
16
16
|
"sparda": "src/index.js"
|
|
@@ -205,7 +205,7 @@ function toSarif(findings, canonical) {
|
|
|
205
205
|
tool: {
|
|
206
206
|
driver: {
|
|
207
207
|
name: 'sparda-apocalypse',
|
|
208
|
-
informationUri: 'https://github.com/
|
|
208
|
+
informationUri: 'https://github.com/zakariagharzouli/sparda',
|
|
209
209
|
rules: [...new Set(findings.map((f) => f.rule))].sort().map((id) => ({ id })),
|
|
210
210
|
},
|
|
211
211
|
},
|
package/src/commands/prove.js
CHANGED
|
@@ -275,7 +275,7 @@ function proveMarkdown({ verdict, report, findings, coverage, seal }) {
|
|
|
275
275
|
}
|
|
276
276
|
lines.push(
|
|
277
277
|
'',
|
|
278
|
-
`<sub>Proven locally by [SPARDA](https://github.com/
|
|
278
|
+
`<sub>Proven locally by [SPARDA](https://github.com/zakariagharzouli/sparda) — deterministic, no keys · seal \`${seal}\`</sub>`,
|
|
279
279
|
);
|
|
280
280
|
return lines.join('\n');
|
|
281
281
|
}
|
package/src/commands/ubg.js
CHANGED
|
@@ -40,7 +40,7 @@ export async function runUbg(opts) {
|
|
|
40
40
|
` ◐ 0 routes — SPARDA saw the framework but no route handlers. Run with --verbose,`,
|
|
41
41
|
);
|
|
42
42
|
console.log(
|
|
43
|
-
` or open an issue with your layout: github.com/
|
|
43
|
+
` or open an issue with your layout: github.com/zakariagharzouli/sparda/issues`,
|
|
44
44
|
);
|
|
45
45
|
}
|
|
46
46
|
}
|
package/src/detect.js
CHANGED
|
@@ -106,7 +106,7 @@ export function detectStack(cwd) {
|
|
|
106
106
|
if (known)
|
|
107
107
|
throw err(
|
|
108
108
|
`${known} detected — not supported yet. Express, NestJS, FastAPI & Flask in v0.`,
|
|
109
|
-
'+1 the framework vote: github.com/
|
|
109
|
+
'+1 the framework vote: github.com/zakariagharzouli/sparda/issues/1',
|
|
110
110
|
);
|
|
111
111
|
}
|
|
112
112
|
for (const f of ['requirements.txt', 'pyproject.toml']) {
|
package/src/index.js
CHANGED
|
@@ -334,7 +334,7 @@ By Residual Labs — residual-labs.fr`);
|
|
|
334
334
|
if (opts.verbose && err?.stack) console.error(err.stack);
|
|
335
335
|
else
|
|
336
336
|
console.error(
|
|
337
|
-
' (run with --verbose for details — or open an issue: github.com/
|
|
337
|
+
' (run with --verbose for details — or open an issue: github.com/zakariagharzouli/sparda/issues)',
|
|
338
338
|
);
|
|
339
339
|
process.exit(err?.code === 'USER' ? 1 : 2);
|
|
340
340
|
}
|
package/src/server/stdio.js
CHANGED
|
@@ -359,7 +359,7 @@ export async function startStdioBridge({ cwd, portOverride }) {
|
|
|
359
359
|
{
|
|
360
360
|
name: 'sparda_info',
|
|
361
361
|
description:
|
|
362
|
-
'Info about this SPARDA endpoint. SPARDA is the trust layer for AI-written code — AI writes, SPARDA proves: deterministic, offline behavior proofs (guards, invariants, irreversible effects) plus a live gate for AI edits, no API key. By Residual Labs (residual-labs.fr) — github.com/
|
|
362
|
+
'Info about this SPARDA endpoint. SPARDA is the trust layer for AI-written code — AI writes, SPARDA proves: deterministic, offline behavior proofs (guards, invariants, irreversible effects) plus a live gate for AI edits, no API key. By Residual Labs (residual-labs.fr) — github.com/zakariagharzouli/sparda',
|
|
363
363
|
inputSchema: { type: 'object', properties: {} },
|
|
364
364
|
},
|
|
365
365
|
{
|
|
@@ -477,7 +477,7 @@ export async function startStdioBridge({ cwd, portOverride }) {
|
|
|
477
477
|
circuits_observed: Object.keys(manifest.labs?.circuits ?? {}).length,
|
|
478
478
|
composite_tools: composites.size,
|
|
479
479
|
generated_by:
|
|
480
|
-
'SPARDA by Residual Labs (residual-labs.fr) — npx sparda-mcp init — github.com/
|
|
480
|
+
'SPARDA by Residual Labs (residual-labs.fr) — npx sparda-mcp init — github.com/zakariagharzouli/sparda',
|
|
481
481
|
},
|
|
482
482
|
null,
|
|
483
483
|
2,
|