@savvy-web/mcp 2.0.13 → 2.0.16
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/package.json +4 -4
- package/runtime.js +9 -9
- package/tools/biome-check.js +7 -5
- package/tools/changeset-validate.js +2 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@savvy-web/mcp",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.16",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "The savvy MCP server — Silk Suite tooling and library knowledge for coding agents",
|
|
6
6
|
"homepage": "https://github.com/savvy-web/systems/tree/main/packages/mcp",
|
|
@@ -32,10 +32,10 @@
|
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"@effect/platform-node": "4.0.0-beta.101",
|
|
35
|
-
"@effected/commands": "^0.
|
|
36
|
-
"@effected/workspaces": "^0.9.
|
|
35
|
+
"@effected/commands": "^0.2.0",
|
|
36
|
+
"@effected/workspaces": "^0.9.3",
|
|
37
37
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
38
|
-
"@savvy-web/silk-effects": "5.
|
|
38
|
+
"@savvy-web/silk-effects": "5.2.0",
|
|
39
39
|
"effect": "4.0.0-beta.101",
|
|
40
40
|
"zod": "^4.4.3"
|
|
41
41
|
}
|
package/runtime.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ToolDiscovery } from "@effected/commands";
|
|
2
2
|
import { Workspaces } from "@effected/workspaces";
|
|
3
|
-
import {
|
|
3
|
+
import { ChangesetConfig, ChangesetConfigReader, Changesets, Repos, SilkPublishability, SilkWorkspaceAnalyzer, Turbo } from "@savvy-web/silk-effects";
|
|
4
4
|
import { Layer } from "effect";
|
|
5
5
|
|
|
6
6
|
//#region src/runtime.ts
|
|
@@ -40,13 +40,13 @@ import { Layer } from "effect";
|
|
|
40
40
|
*/
|
|
41
41
|
const makeSilkRuntimeLayer = (cwd) => {
|
|
42
42
|
const kitGraph = Workspaces.layerWithGit({ cwd });
|
|
43
|
-
const analyzerDeps =
|
|
43
|
+
const analyzerDeps = ChangesetConfigReader.layer;
|
|
44
44
|
/**
|
|
45
45
|
* `BranchAnalyzer` + `ReleasePlanner` + the ONE shared `ConfigInspector`,
|
|
46
46
|
* merged so all three land on the runtime and every internal consumer
|
|
47
47
|
* memoizes onto the same inspector reference.
|
|
48
48
|
*/
|
|
49
|
-
const inspectorAndAnalyzer = Changesets.
|
|
49
|
+
const inspectorAndAnalyzer = Changesets.BranchAnalyzer.layer.pipe(Layer.provideMerge(Changesets.ReleasePlanner.layer), Layer.provideMerge(Changesets.ConfigInspector.layer.pipe(Layer.provide(ChangesetConfigReader.layer))));
|
|
50
50
|
/**
|
|
51
51
|
* `ToolDiscovery` from `@effected/commands`, which `TurboInspector` uses to
|
|
52
52
|
* locate the `turbo` binary. Its `LocalExec` contract is implemented by
|
|
@@ -56,16 +56,16 @@ const makeSilkRuntimeLayer = (cwd) => {
|
|
|
56
56
|
* its probe cache.
|
|
57
57
|
*/
|
|
58
58
|
const toolDiscovery = ToolDiscovery.layer.pipe(Layer.provide(Workspaces.localExecLayer({ cwd })));
|
|
59
|
-
const changesetConfig =
|
|
60
|
-
const depsRegen = Changesets.
|
|
59
|
+
const changesetConfig = ChangesetConfig.layer.pipe(Layer.provide(ChangesetConfigReader.layer));
|
|
60
|
+
const depsRegen = Changesets.DepsRegen.layer.pipe(Layer.provide(inspectorAndAnalyzer), Layer.provide(SilkPublishability.layerAdaptive.pipe(Layer.provide(changesetConfig))), Layer.provide(changesetConfig));
|
|
61
61
|
/**
|
|
62
|
-
* `
|
|
63
|
-
* `
|
|
62
|
+
* `ReposManager.layer` requires `ReposConfigStore`, so it is given its own
|
|
63
|
+
* `ReposConfigStore.layer` reference; the store is ALSO merged in directly so
|
|
64
64
|
* `repos_inspect`'s config mode can resolve it on its own. Same reference —
|
|
65
65
|
* one store instance.
|
|
66
66
|
*/
|
|
67
|
-
const repos = Layer.mergeAll(Repos.
|
|
68
|
-
return Layer.mergeAll(
|
|
67
|
+
const repos = Layer.mergeAll(Repos.ReposConfigStore.layer, Repos.ReposManager.layer.pipe(Layer.provide(Repos.ReposConfigStore.layer)));
|
|
68
|
+
return Layer.mergeAll(SilkWorkspaceAnalyzer.layer.pipe(Layer.provide(analyzerDeps)), Turbo.TurboInspector.layer.pipe(Layer.provide(toolDiscovery)), inspectorAndAnalyzer, depsRegen, repos).pipe(Layer.provideMerge(kitGraph));
|
|
69
69
|
};
|
|
70
70
|
|
|
71
71
|
//#endregion
|
package/tools/biome-check.js
CHANGED
|
@@ -174,19 +174,20 @@ const runBiomeCheck = async (args, fallbackCwd) => {
|
|
|
174
174
|
const parts = biomeCmd.split(" ");
|
|
175
175
|
const bin = parts[0];
|
|
176
176
|
const prefix = parts.slice(1);
|
|
177
|
-
const maxBuffer =
|
|
177
|
+
const maxBuffer = 67108864;
|
|
178
178
|
const timeout = 12e4;
|
|
179
179
|
const killSignal = "SIGKILL";
|
|
180
180
|
let wrote = false;
|
|
181
181
|
if (doWrite) {
|
|
182
|
-
const
|
|
182
|
+
const writeArgs = [
|
|
183
183
|
...prefix,
|
|
184
184
|
mode,
|
|
185
185
|
"--write",
|
|
186
186
|
...args.unsafe ? ["--unsafe"] : [],
|
|
187
187
|
"--no-errors-on-unmatched",
|
|
188
188
|
...paths
|
|
189
|
-
]
|
|
189
|
+
];
|
|
190
|
+
const fix = spawnSync(bin, writeArgs, {
|
|
190
191
|
cwd,
|
|
191
192
|
encoding: "utf8",
|
|
192
193
|
maxBuffer,
|
|
@@ -197,13 +198,14 @@ const runBiomeCheck = async (args, fallbackCwd) => {
|
|
|
197
198
|
if ((fix.status ?? 0) > 1) throw new Error(`Biome --write failed (exit ${fix.status}): ${(fix.stderr ?? "").trim() || "unknown error"}`);
|
|
198
199
|
wrote = true;
|
|
199
200
|
}
|
|
200
|
-
const
|
|
201
|
+
const readArgs = [
|
|
201
202
|
...prefix,
|
|
202
203
|
mode,
|
|
203
204
|
"--reporter=gitlab",
|
|
204
205
|
"--no-errors-on-unmatched",
|
|
205
206
|
...paths
|
|
206
|
-
]
|
|
207
|
+
];
|
|
208
|
+
const read = spawnSync(bin, readArgs, {
|
|
207
209
|
cwd,
|
|
208
210
|
encoding: "utf8",
|
|
209
211
|
maxBuffer,
|
|
@@ -63,7 +63,8 @@ const ChangesetValidateAsMarkdown = ChangesetValidateResult.pipe(Schema.decodeTo
|
|
|
63
63
|
* than escaping as a defect.
|
|
64
64
|
*/
|
|
65
65
|
const changesetValidate = (args, fallbackCwd) => Effect.gen(function* () {
|
|
66
|
-
const
|
|
66
|
+
const root = yield* (yield* WorkspaceRoot).find(args.cwd ?? fallbackCwd);
|
|
67
|
+
const dir = resolve(root, args.dir ?? ".changeset");
|
|
67
68
|
const messages = yield* Effect.try({
|
|
68
69
|
try: () => Changesets.ChangesetLinter.validate(dir),
|
|
69
70
|
catch: (cause) => new ChangesetValidateError({
|