@savvy-web/mcp 2.6.9 → 2.7.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@savvy-web/mcp",
3
- "version": "2.6.9",
3
+ "version": "2.7.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",
@@ -34,9 +34,9 @@
34
34
  "@effect/platform-node": "4.0.0-rc.109",
35
35
  "@effected/commands": "^0.5.0",
36
36
  "@effected/git": "^0.10.0",
37
- "@effected/workspaces": "^0.18.3",
37
+ "@effected/workspaces": "^0.19.0",
38
38
  "@modelcontextprotocol/sdk": "^1.30.0",
39
- "@savvy-web/silk-effects": "7.3.1",
39
+ "@savvy-web/silk-effects": "7.4.0",
40
40
  "effect": "4.0.0-rc.109",
41
41
  "zod": "^4.5.4"
42
42
  }
package/server.js CHANGED
@@ -32,7 +32,7 @@ const ReposInspectModeSchema = z.enum([
32
32
  "config",
33
33
  "drift",
34
34
  "gitmodules"
35
- ]).describe("status = drift report; config = the full agent brief; drift = four-authority submodule reconciliation; gitmodules = decoded .gitmodules sections.");
35
+ ]).describe("status = drift report; config = the full agent brief; drift = five-authority submodule reconciliation; gitmodules = decoded .gitmodules sections.");
36
36
  /** Wrap a markdown string + structured object in the dual-channel tool result. */
37
37
  const structuredResult = (text, structured) => ({
38
38
  content: [{
@@ -77,7 +77,7 @@ const renderMarkdown = (data) => {
77
77
  `## Packages`
78
78
  ];
79
79
  for (const p of r.packages) {
80
- lines.push(`### ${mdInline(p.name)} (${mdInline(p.version)})`, `- dir: ${mdInline(p.workspaceDir)}`);
80
+ lines.push(p.version === void 0 ? `### ${mdInline(p.name)}` : `### ${mdInline(p.name)} (${mdInline(p.version)})`, `- dir: ${mdInline(p.workspaceDir)}`);
81
81
  if (p.additionalScopes.length > 0) lines.push(`- additionalScopes: ${p.additionalScopes.map(mdInline).join(", ")}`);
82
82
  if (p.versionFiles.length > 0) lines.push(`- versionFiles: ${p.versionFiles.map((v) => mdInline(v.glob)).join(", ")}`);
83
83
  }
@@ -59,7 +59,7 @@ const ReposInspectResult = Schema.Union([
59
59
  ]).annotate({
60
60
  identifier: "ReposInspectResult",
61
61
  title: "repos_inspect result",
62
- description: "Drift report (status), the parsed manifest (config), the four-authority reconciliation report (drift), or the decoded .gitmodules sections (gitmodules)."
62
+ description: "Drift report (status), the parsed manifest (config), the five-authority reconciliation report (drift), or the decoded .gitmodules sections (gitmodules)."
63
63
  });
64
64
  /** Render the structured result as a markdown transcript. */
65
65
  const renderMarkdown = (data) => {
@@ -6,7 +6,8 @@ import { Effect, Schema, SchemaGetter } from "effect";
6
6
  /** A flattened, non-recursive summary of one analyzed workspace. */
7
7
  const WorkspaceSummary = Schema.Struct({
8
8
  name: Schema.String,
9
- version: Schema.String,
9
+ /** Absent when the manifest declares no `version` — legal for a private package or root. */
10
+ version: Schema.optional(Schema.String),
10
11
  path: Schema.String,
11
12
  root: Schema.Boolean,
12
13
  publishable: Schema.Boolean,
@@ -39,7 +40,7 @@ const WorkspaceInfoResult = Schema.Struct({
39
40
  });
40
41
  const toSummary = (w) => ({
41
42
  name: w.name,
42
- version: w.version.current,
43
+ ...w.version.current !== void 0 ? { version: w.version.current } : {},
43
44
  path: w.path,
44
45
  root: w.root,
45
46
  publishable: w.publishable,
@@ -74,7 +75,7 @@ const formatWorkspaceInfoMarkdown = (data) => {
74
75
  "| name | version | publishable | versioned | tagged | released |",
75
76
  "| --- | --- | --- | --- | --- | --- |"
76
77
  ];
77
- for (const w of data.workspaces) lines.push(`| ${w.name} | ${w.version} | ${w.publishable} | ${w.versioned} | ${w.tagged} | ${w.released} |`);
78
+ for (const w of data.workspaces) lines.push(`| ${w.name} | ${w.version ?? "—"} | ${w.publishable} | ${w.versioned} | ${w.tagged} | ${w.released} |`);
78
79
  return lines.join("\n");
79
80
  };
80
81
  /** One-way transform: result to markdown. Encoding back is forbidden. */