@savvy-web/mcp 2.0.19 → 2.1.0

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.
Files changed (3) hide show
  1. package/README.md +1 -1
  2. package/package.json +4 -4
  3. package/runtime.js +7 -5
package/README.md CHANGED
@@ -50,7 +50,7 @@ npx @modelcontextprotocol/inspector savvy-mcp .
50
50
  - `changeset_deps_regen` — regenerates pure-dependency changesets: deletes stale ones and writes fresh single-package, patch-bump changesets from the cumulative dependency diff. Mutating unless `dryRun` is set, in which case it reports what it would delete and write without touching the filesystem. Backed by `silk-effects`' `Changesets.DepsRegen`.
51
51
  - `biome_check` — run Biome over a path and get structured diagnostics back: `mode=check` (lint, format and organize-imports) or `mode=lint`. Unlike most of the other tools it can mutate — pass `write` for safe fixes or `unsafe` for unsafe ones (both git-reversible) — so it returns the same diagnostics the Biome LSP surfaces for files you have edited.
52
52
  - `repos_inspect` — read-only inspection of vendored repositories: `mode=status` reports per-repo presence, the gitlink commit, working-tree dirtiness, and stale note ids; `mode=config` surfaces the validated `.repos/config.json` manifest and its entries. Returns markdown-escaped output since vendored-repo content is untrusted input. Backed by the same `silk-effects` `Repos` services the `savvy` CLI uses.
53
- - `repos_manage` — manages vendored repositories (mutating counterpart to repos_inspect): `action=sync` initializes any missing submodules (`git submodule update --init --depth 1`), applies sparse-checkout from the manifest, and clears stale git locks; `action=pin` fetches and checks out the new ref, staging the updated gitlink and manifest; `action=add` adds a new repo entry; `action=note` appends a short note to a repo. Pin and add stage git changes for the caller to commit. Backed by the same `silk-effects` `Repos` services the `savvy` CLI uses.
53
+ - `repos_manage` — manages vendored repositories (mutating counterpart to repos_inspect): `action=sync` initializes any missing submodules (`git submodule update --init --depth 1`), applies sparse-checkout from the manifest, and clears stale git locks; `action=pin` fetches and checks out the new ref, staging the updated gitlink and manifest; `action=add` adds a new repo entry; `action=note` appends a short note to a repo. Pin and add stage git changes for the caller to commit. `sync`, `pin` and `add` unlock the vendored tree for the duration of their git work and leave it read-only again afterwards (files `0444`, directories `0555`), so an agent that hits `EACCES` writing into `.repos/` should route the change through this tool rather than `chmod`. Backed by the same `silk-effects` `Repos` services the `savvy` CLI uses.
54
54
 
55
55
  ## License
56
56
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@savvy-web/mcp",
3
- "version": "2.0.19",
3
+ "version": "2.1.0",
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.2.1",
36
- "@effected/workspaces": "^0.9.5",
35
+ "@effected/commands": "^0.3.1",
36
+ "@effected/workspaces": "^0.10.0",
37
37
  "@modelcontextprotocol/sdk": "^1.29.0",
38
- "@savvy-web/silk-effects": "5.3.1",
38
+ "@savvy-web/silk-effects": "5.4.0",
39
39
  "effect": "4.0.0-beta.101",
40
40
  "zod": "^4.4.3"
41
41
  }
package/runtime.js CHANGED
@@ -59,12 +59,14 @@ const makeSilkRuntimeLayer = (cwd) => {
59
59
  const changesetConfig = ChangesetConfig.layer.pipe(Layer.provide(ChangesetConfigReader.layer));
60
60
  const depsRegen = Changesets.DepsRegen.layer.pipe(Layer.provide(inspectorAndAnalyzer), Layer.provide(SilkPublishability.layerAdaptive.pipe(Layer.provide(changesetConfig))), Layer.provide(changesetConfig));
61
61
  /**
62
- * `ReposManager.layer` requires `ReposConfigStore`, so it is given its own
63
- * `ReposConfigStore.layer` reference; the store is ALSO merged in directly so
64
- * `repos_inspect`'s config mode can resolve it on its own. Same reference —
65
- * one store instance.
62
+ * `ReposManager.layer` requires `ReposConfigStore | ReposLockdown`, so it is
63
+ * given its own `ReposConfigStore.layer` reference; the store is ALSO merged
64
+ * in directly so `repos_inspect`'s config mode can resolve it on its own.
65
+ * Same reference — one store instance. `ReposLockdown.layer` needs only the
66
+ * platform services, which flow up from the outer `NodeServices.layer`
67
+ * provision like `ReposManager`'s own `FileSystem`/`Path` requirement does.
66
68
  */
67
- const repos = Layer.mergeAll(Repos.ReposConfigStore.layer, Repos.ReposManager.layer.pipe(Layer.provide(Repos.ReposConfigStore.layer)));
69
+ const repos = Layer.mergeAll(Repos.ReposConfigStore.layer, Repos.ReposManager.layer.pipe(Layer.provide(Repos.ReposConfigStore.layer), Layer.provide(Repos.ReposLockdown.layer)));
68
70
  return Layer.mergeAll(SilkWorkspaceAnalyzer.layer.pipe(Layer.provide(analyzerDeps)), Turbo.TurboInspector.layer.pipe(Layer.provide(toolDiscovery)), inspectorAndAnalyzer, depsRegen, repos).pipe(Layer.provideMerge(kitGraph));
69
71
  };
70
72