@geohar/pi-svg-mcp 0.6.2 → 0.7.1
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/dist/index.d.ts.map +1 -1
- package/dist/index.js +89 -5
- package/dist/index.js.map +1 -1
- package/package.json +2 -1
- package/src/index.ts +96 -5
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAiCA,OAAO,KAAK,EAER,YAAY,EAIf,MAAM,SAAS,CAAA;AAuHhB,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAkGrD"}
|
package/dist/index.js
CHANGED
|
@@ -26,7 +26,8 @@
|
|
|
26
26
|
// entry — see mcp.json.example and the README; static, and unnecessary when
|
|
27
27
|
// combiner-served. The sharedserver resolution is ported from plugins/opencode.
|
|
28
28
|
import { spawnSync } from "node:child_process";
|
|
29
|
-
import { existsSync, readFileSync } from "node:fs";
|
|
29
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
30
|
+
import { homedir } from "node:os";
|
|
30
31
|
import { dirname, join } from "node:path";
|
|
31
32
|
import { fileURLToPath } from "node:url";
|
|
32
33
|
import { resolveSharedserver } from "./sharedserver-resolve.js";
|
|
@@ -151,15 +152,19 @@ export default function svgMcp(pi) {
|
|
|
151
152
|
});
|
|
152
153
|
// ── /svg-mcp command: inspect the extension (verb: system-prompt) ──
|
|
153
154
|
pi.registerCommand("svg-mcp", {
|
|
154
|
-
description: "svg-mcp extension —
|
|
155
|
+
description: "svg-mcp extension — verbs: system-prompt (show the injected directive), install-config [path] (write mcp.json)",
|
|
155
156
|
getArgumentCompletions: (prefix) => completeVerbs(prefix),
|
|
156
157
|
handler: (args, ctx) => {
|
|
157
|
-
const verb = args.trim();
|
|
158
|
+
const [verb, ...rest] = args.trim().split(/\s+/);
|
|
158
159
|
if (verb === "" || verb === "system-prompt") {
|
|
159
160
|
showDirective(ctx, "svg-mcp", SVG_DIAGRAM_DIRECTIVE, wantInstructions);
|
|
160
161
|
return;
|
|
161
162
|
}
|
|
162
|
-
|
|
163
|
+
if (verb === "install-config") {
|
|
164
|
+
installConfig(ctx, rest.join(" ") || undefined);
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
ctx.ui?.notify?.(`svg-mcp: unknown verb "${verb}". Try: system-prompt, install-config`, "warn");
|
|
163
168
|
},
|
|
164
169
|
});
|
|
165
170
|
// Combiner-served or manage=false: nothing to launch. The directive still applies.
|
|
@@ -224,12 +229,91 @@ export default function svgMcp(pi) {
|
|
|
224
229
|
// directive this extension injects — the show-command pattern from pi-custom-system-prompt,
|
|
225
230
|
// since `before_agent_start` injections are per-turn and never appear in Pi's own
|
|
226
231
|
// `/system-prompt` (which reports the base prompt only).
|
|
227
|
-
const COMMAND_VERBS = ["system-prompt"];
|
|
232
|
+
const COMMAND_VERBS = ["system-prompt", "install-config"];
|
|
228
233
|
function completeVerbs(prefix) {
|
|
229
234
|
const p = prefix.trim();
|
|
230
235
|
const matches = COMMAND_VERBS.filter((v) => v.startsWith(p));
|
|
231
236
|
return matches.length ? matches.map((v) => ({ value: v, label: v })) : null;
|
|
232
237
|
}
|
|
238
|
+
// ── /svg-mcp install-config: write the pi-mcp-adapter mcp.json entry ──
|
|
239
|
+
// A USER-INVOKED write — on request, merge the svg-mcp entry into pi-mcp-adapter's
|
|
240
|
+
// mcp.json, wired for svg-mcp's optional inbound bearer auth:
|
|
241
|
+
//
|
|
242
|
+
// { "url": "…/mcp", "auth": "bearer", "bearerTokenEnv": "SVG_MCP_AUTH_TOKEN" }
|
|
243
|
+
//
|
|
244
|
+
// - auth:"bearer" → the adapter attaches `Authorization: Bearer <token>` (it gates the
|
|
245
|
+
// header on `auth === "bearer"`, NOT on bearerTokenEnv alone), AND makes
|
|
246
|
+
// supportsOAuth() false so a wrong/missing token surfaces as an honest 401 rather
|
|
247
|
+
// than a Dynamic-Client-Registration 404.
|
|
248
|
+
// - bearerTokenEnv → names the env var the token is read from at connect (nothing
|
|
249
|
+
// written to disk). The backend enforces only when SVG_MCP_AUTH_TOKEN is set on ITS
|
|
250
|
+
// side; unset ⇒ open, the env var is unset here too so no header is sent. The one
|
|
251
|
+
// shape is correct whether or not auth is enabled. Ported from mcp-companion's
|
|
252
|
+
// /mcp-combiner install-config.
|
|
253
|
+
function expandHome(p) {
|
|
254
|
+
if (p === "~")
|
|
255
|
+
return homedir();
|
|
256
|
+
if (p.startsWith("~/"))
|
|
257
|
+
return join(homedir(), p.slice(2));
|
|
258
|
+
return p;
|
|
259
|
+
}
|
|
260
|
+
/** The URL the adapter should reach svg-mcp at — 127.0.0.1:<port>/mcp with the same
|
|
261
|
+
* port defaults the backend serves on ($SVG_MCP_PORT, else 7731). */
|
|
262
|
+
function defaultSvgUrl() {
|
|
263
|
+
let port = DEFAULT_PORT;
|
|
264
|
+
const raw = env("SVG_MCP_PORT");
|
|
265
|
+
if (raw !== undefined) {
|
|
266
|
+
const n = Number(raw);
|
|
267
|
+
if (Number.isInteger(n) && n > 0)
|
|
268
|
+
port = n;
|
|
269
|
+
}
|
|
270
|
+
return `http://127.0.0.1:${port}/mcp`;
|
|
271
|
+
}
|
|
272
|
+
function installConfig(ctx, pathArg) {
|
|
273
|
+
const target = pathArg ? expandHome(pathArg) : join(homedir(), ".config", "mcp", "mcp.json");
|
|
274
|
+
const key = DEFAULT_NAME;
|
|
275
|
+
// Read + parse existing (tolerate absence; refuse to clobber non-JSON).
|
|
276
|
+
let doc = {};
|
|
277
|
+
if (existsSync(target)) {
|
|
278
|
+
try {
|
|
279
|
+
const parsed = JSON.parse(readFileSync(target, "utf8"));
|
|
280
|
+
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
|
|
281
|
+
ctx.ui?.notify?.(`svg-mcp: ${target} is not a JSON object; not overwriting`, "error");
|
|
282
|
+
return;
|
|
283
|
+
}
|
|
284
|
+
doc = parsed;
|
|
285
|
+
}
|
|
286
|
+
catch (e) {
|
|
287
|
+
ctx.ui?.notify?.(`svg-mcp: ${target} is not valid JSON; not overwriting (${e})`, "error");
|
|
288
|
+
return;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
const servers = (doc.mcpServers ??= {});
|
|
292
|
+
const prev = (servers[key] ?? {});
|
|
293
|
+
const before = JSON.stringify(prev);
|
|
294
|
+
// Preserve any existing url and other fields; only ensure the auth-wiring keys.
|
|
295
|
+
servers[key] = {
|
|
296
|
+
...prev,
|
|
297
|
+
url: typeof prev.url === "string" && prev.url ? prev.url : defaultSvgUrl(),
|
|
298
|
+
auth: "bearer",
|
|
299
|
+
bearerTokenEnv: "SVG_MCP_AUTH_TOKEN",
|
|
300
|
+
};
|
|
301
|
+
const existed = before !== "{}" && Object.keys(prev).length > 0;
|
|
302
|
+
const changed = before !== JSON.stringify(servers[key]);
|
|
303
|
+
try {
|
|
304
|
+
mkdirSync(dirname(target), { recursive: true });
|
|
305
|
+
writeFileSync(target, `${JSON.stringify(doc, null, 2)}\n`, "utf8");
|
|
306
|
+
}
|
|
307
|
+
catch (e) {
|
|
308
|
+
ctx.ui?.notify?.(`svg-mcp: failed to write ${target} (${e})`, "error");
|
|
309
|
+
return;
|
|
310
|
+
}
|
|
311
|
+
const what = !existed ? "added" : changed ? "updated" : "already configured";
|
|
312
|
+
ctx.ui?.notify?.(`svg-mcp: ${what} "${key}" in ${target}\n` +
|
|
313
|
+
`Sends "Authorization: Bearer $SVG_MCP_AUTH_TOKEN" when that env var is set ` +
|
|
314
|
+
`(auth:"bearer" both sends the token and suppresses OAuth probing). ` +
|
|
315
|
+
`Run /reload so pi-mcp-adapter re-reads mcp.json.`, "info");
|
|
316
|
+
}
|
|
233
317
|
const SHOW_LIMIT = 1600;
|
|
234
318
|
function showDirective(ctx, label, directive, enabled) {
|
|
235
319
|
if (!directive) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,sDAAsD;AACtD,EAAE;AACF,sFAAsF;AACtF,mBAAmB;AACnB,EAAE;AACF,yFAAyF;AACzF,wFAAwF;AACxF,uFAAuF;AACvF,uFAAuF;AACvF,yBAAyB;AACzB,wFAAwF;AACxF,yFAAyF;AACzF,6EAA6E;AAC7E,gFAAgF;AAChF,8EAA8E;AAC9E,6EAA6E;AAC7E,0BAA0B;AAC1B,EAAE;AACF,uEAAuE;AACvE,8EAA8E;AAC9E,mEAAmE;AACnE,kFAAkF;AAClF,EAAE;AACF,oFAAoF;AACpF,4EAA4E;AAC5E,gFAAgF;AAEhF,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC5E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAQxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAE/D,MAAM,YAAY,GAAG,IAAI,CAAA;AACzB,MAAM,YAAY,GAAG,SAAS,CAAA;AAC9B,MAAM,aAAa,GAAG,IAAI,CAAA;AAC1B,yFAAyF;AACzF,8DAA8D;AAC9D,MAAM,wBAAwB,GAAG,OAAO,CAAA;AACxC,yFAAyF;AACzF,sFAAsF;AACtF,qEAAqE;AACrE,MAAM,oBAAoB,GAAG,OAAO,CAAA;AAIpC,sEAAsE;AACtE,oFAAoF;AACpF,gFAAgF;AAChF,mFAAmF;AACnF,oFAAoF;AACpF,WAAW;AACX,MAAM,qBAAqB,GAAW,CAAC,GAAG,EAAE;IACxC,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;QACpD,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,kBAAkB,CAAC,EAAE,MAAM,CAAC,CAAA;IACrE,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,EAAE,CAAA;IACb,CAAC;AACL,CAAC,CAAC,EAAE,CAAA;AACJ,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;AAEtE,sEAAsE;AACtE,yFAAyF;AACzF,wFAAwF;AACxF,4BAA4B;AAE5B,SAAS,GAAG,CAAC,IAAY;IACrB,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC3B,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AACtD,CAAC;AAED,sEAAsE;AAEtE,SAAS,MAAM,CAAC,CAAqB;IACjC,IAAI,CAAC,IAAI,IAAI;QAAE,OAAO,KAAK,CAAA;IAC3B,OAAO,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAA;AAC5E,CAAC;AAED;;gDAEgD;AAChD,SAAS,cAAc,CAAC,IAAY;IAChC,MAAM,GAAG,GAAG,sBAAsB,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;IAC9E,IAAI,GAAG,IAAI,OAAO,CAAC,GAAG;QAAE,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;IACvD,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;AAC3C,CAAC;AAED,SAAS,MAAM,CAAC,GAAW;IACvB,OAAO,SAAS,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,CAAA;AAC5F,CAAC;AAED;sEACsE;AACtE,SAAS,YAAY;IACjB,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;QAChE,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;IACtE,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,SAAS,CAAA;IACpB,CAAC;AACL,CAAC;AAED,wFAAwF;AACxF,SAAS,gBAAgB,CAAC,IAAY;IAClC,MAAM,GAAG,GAAG,GAAG,CAAC,aAAa,CAAC,CAAA;IAC9B,IAAI,GAAG,EAAE,CAAC;QACN,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;QACrD,MAAM,OAAO,GAAG,GAAG,KAAK,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,EAAE,CAAA;QACrE,IAAI,OAAO,EAAE,CAAC;YACV,OAAO;gBACH,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,EAAE,QAAQ,EAAE,IAAI,CAAC;aACzG,CAAA;QACL,CAAC;QACD,4EAA4E;IAChF,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;IACvD,MAAM,GAAG,GAAG,GAAG,CAAC,iBAAiB,CAAC,IAAI,oBAAoB,CAAA;IAC1D,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;IAC/C,OAAO,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,iBAAiB,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAA;AACpF,CAAC;AAKD,IAAI,UAAU,GAAsB,IAAI,CAAA;AACxC,IAAI,gBAAgB,GAAG,KAAK,CAAA;AAE5B,SAAS,qBAAqB;IAC1B,IAAI,gBAAgB;QAAE,OAAM;IAC5B,gBAAgB,GAAG,IAAI,CAAA;IACvB,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAA;IAClC,KAAK,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAqB,EAAE,CAAC;QACpE,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE;YACjB,MAAM,EAAE,CAAA;YACR,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QAClC,CAAC,CAAC,CAAA;IACN,CAAC;AACL,CAAC;AAED,SAAS,MAAM;IACX,IAAI,CAAC,UAAU;QAAE,OAAM;IACvB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,CAAA;IACnC,UAAU,GAAG,IAAI,CAAA;IACjB,SAAS,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;AAC3G,CAAC;AAED,sEAAsE;AAEtE,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAAgB;IAC3C,MAAM,MAAM,GAAG,GAAG,CAAC,mBAAmB,CAAC,KAAK,OAAO,CAAA;IACnD,MAAM,gBAAgB,GAAG,GAAG,CAAC,yBAAyB,CAAC,KAAK,OAAO,CAAA;IACnE,MAAM,MAAM,GAAG,GAAG,CAAC,mBAAmB,CAAC,KAAK,OAAO,CAAA;IACnD,MAAM,IAAI,GAAG,GAAG,CAAC,iBAAiB,CAAC,IAAI,YAAY,CAAA;IACnD,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAA;IAEnC,kEAAkE;IAClE,EAAE,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,KAAK,EAAE,EAAE;QAClC,IAAI,CAAC,gBAAgB,IAAI,CAAC,qBAAqB;YAAE,OAAM;QACvD,IAAI,gBAAgB,IAAI,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YAAE,OAAM;QAC7E,OAAO,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC,YAAY,OAAO,qBAAqB,EAAE,EAAE,CAAA;IAChF,CAAC,CAAC,CAAA;IAEF,sEAAsE;IACtE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE;QAC1B,WAAW,EACP,gHAAgH;QACpH,sBAAsB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC;QACzD,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;YACnB,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YAChD,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,eAAe,EAAE,CAAC;gBAC1C,aAAa,CAAC,GAAG,EAAE,SAAS,EAAE,qBAAqB,EAAE,gBAAgB,CAAC,CAAA;gBACtE,OAAM;YACV,CAAC;YACD,IAAI,IAAI,KAAK,gBAAgB,EAAE,CAAC;gBAC5B,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,CAAA;gBAC/C,OAAM;YACV,CAAC;YACD,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,0BAA0B,IAAI,uCAAuC,EAAE,MAAM,CAAC,CAAA;QACnG,CAAC;KACJ,CAAC,CAAA;IAEF,mFAAmF;IACnF,IAAI,MAAM,IAAI,CAAC,MAAM;QAAE,OAAM;IAE7B,8EAA8E;IAC9E,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;QACnC,IAAI,UAAU;YAAE,OAAM;QAEtB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;QAChC,MAAM,MAAM,GAAG,mBAAmB,CAC9B;YACI,KAAK,EAAE,SAAS;YAChB,UAAU,EAAE,wBAAwB;YACpC,YAAY,EACR,iGAAiG;SACxG,EACD,GAAG,CAAC,kBAAkB,CAAC,EACvB,OAAO,CAAC,GAAG,EACX,GAAG,CACN,CAAA;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,GAAG,CAAC,OAAO,EAAE,kFAAkF,CAAC,CAAA;YAChG,OAAM;QACV,CAAC;QAED,MAAM,IAAI,GAAG,GAAG,CAAC,cAAc,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,CAAA;QACxD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAA;QAChD,IAAI,OAAO,EAAE,CAAC;YACV,GAAG,CAAC,OAAO,EAAE,KAAK,OAAO,qFAAqF,CAAC,CAAA;YAC/G,OAAM;QACV,CAAC;QAED,MAAM,KAAK,GAAG,GAAG,CAAC,kBAAkB,CAAC,IAAI,aAAa,CAAA;QACtD,MAAM,OAAO,GAAG;YACZ,KAAK;YACL,IAAI;YACJ,OAAO;YACP,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;YACnB,gBAAgB;YAChB,KAAK;YACL,YAAY;YACZ,MAAM,OAAO,CAAC,GAAG,EAAE;SACtB,CAAA;QACD,MAAM,OAAO,GAAG,GAAG,CAAC,gBAAgB,CAAC,CAAA;QACrC,IAAI,OAAO,IAAI,OAAO,KAAK,MAAM;YAAE,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;QACtE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAA;QAE3B,qBAAqB,EAAE,CAAA;QACvB,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;QAC9E,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,mCAAmC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAA;YAC/E,OAAM;QACV,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAA;YAC/C,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,6BAA6B,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;YAChG,OAAM;QACV,CAAC;QAED,UAAU,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;QAC7B,GAAG,CAAC,MAAM,EAAE,YAAY,IAAI,sBAAsB,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACjF,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,EAAE,CAAC,kBAAkB,EAAE,CAAC,KAA2B,EAAE,EAAE;QACtD,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM;YAAE,MAAM,EAAE,CAAA;IACzC,CAAC,CAAC,CAAA;AACN,CAAC;AAED,sEAAsE;AAEtE,iFAAiF;AACjF,4FAA4F;AAC5F,kFAAkF;AAClF,yDAAyD;AACzD,MAAM,aAAa,GAAG,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAA;AACzD,SAAS,aAAa,CAAC,MAAc;IACjC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAA;IACvB,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;IAC5D,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AAC/E,CAAC;AAED,yEAAyE;AACzE,mFAAmF;AACnF,8DAA8D;AAC9D,EAAE;AACF,iFAAiF;AACjF,EAAE;AACF,uFAAuF;AACvF,2EAA2E;AAC3E,oFAAoF;AACpF,4CAA4C;AAC5C,kFAAkF;AAClF,sFAAsF;AACtF,oFAAoF;AACpF,iFAAiF;AACjF,kCAAkC;AAElC,SAAS,UAAU,CAAC,CAAS;IACzB,IAAI,CAAC,KAAK,GAAG;QAAE,OAAO,OAAO,EAAE,CAAA;IAC/B,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1D,OAAO,CAAC,CAAA;AACZ,CAAC;AAED;sEACsE;AACtE,SAAS,aAAa;IAClB,IAAI,IAAI,GAAG,YAAY,CAAA;IACvB,MAAM,GAAG,GAAG,GAAG,CAAC,cAAc,CAAC,CAAA;IAC/B,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACpB,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;QACrB,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,IAAI,GAAG,CAAC,CAAA;IAC9C,CAAC;IACD,OAAO,oBAAoB,IAAI,MAAM,CAAA;AACzC,CAAC;AAED,SAAS,aAAa,CAAC,GAA4B,EAAE,OAAgB;IACjE,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,CAAC,CAAA;IAC5F,MAAM,GAAG,GAAG,YAAY,CAAA;IAExB,wEAAwE;IACxE,IAAI,GAAG,GAA4B,EAAE,CAAA;IACrC,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACrB,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;YACvD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBACzE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,YAAY,MAAM,wCAAwC,EAAE,OAAO,CAAC,CAAA;gBACrF,OAAM;YACV,CAAC;YACD,GAAG,GAAG,MAAiC,CAAA;QAC3C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,YAAY,MAAM,wCAAwC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;YACzF,OAAM;QACV,CAAC;IACL,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,UAAU,KAAK,EAAE,CAA4C,CAAA;IAClF,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAA4B,CAAA;IAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IACnC,gFAAgF;IAChF,OAAO,CAAC,GAAG,CAAC,GAAG;QACX,GAAG,IAAI;QACP,GAAG,EAAE,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE;QAC1E,IAAI,EAAE,QAAQ;QACd,cAAc,EAAE,oBAAoB;KACvC,CAAA;IACD,MAAM,OAAO,GAAG,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAA;IAC/D,MAAM,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA;IAEvD,IAAI,CAAC;QACD,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAC/C,aAAa,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IACtE,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,4BAA4B,MAAM,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QACtE,OAAM;IACV,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAA;IAC5E,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,CACZ,YAAY,IAAI,KAAK,GAAG,QAAQ,MAAM,IAAI;QACtC,6EAA6E;QAC7E,qEAAqE;QACrE,kDAAkD,EACtD,MAAM,CACT,CAAA;AACL,CAAC;AAED,MAAM,UAAU,GAAG,IAAI,CAAA;AACvB,SAAS,aAAa,CAAC,GAA4B,EAAE,KAAa,EAAE,SAAiB,EAAE,OAAgB;IACnG,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,KAAK,mDAAmD,EAAE,MAAM,CAAC,CAAA;QACrF,OAAM;IACV,CAAC;IACD,MAAM,IAAI,GAAG,OAAO;QAChB,CAAC,CAAC,GAAG,KAAK,kFAAkF;QAC5F,CAAC,CAAC,GAAG,KAAK,+DAA+D,CAAA;IAC7E,MAAM,IAAI,GACN,SAAS,CAAC,MAAM,GAAG,UAAU;QACzB,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,UAAU,SAAS,CAAC,MAAM,eAAe;QAC5E,CAAC,CAAC,SAAS,CAAA;IACnB,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,OAAO,IAAI,EAAE,EAAE,MAAM,CAAC,CAAA;AAClD,CAAC;AAED,SAAS,OAAO,CAAC,GAAqB,EAAE,MAAe;IACnD,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACtB,MAAM,IAAI,GAAG,YAAY,OAAO,EAAE,CAAA;QAClC,IAAI,MAAM,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC;YACxC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;QACzF,CAAC;aAAM,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;YAC/C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAA;QACrC,CAAC;IACL,CAAC,CAAA;AACL,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@geohar/pi-svg-mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.1",
|
|
4
4
|
"description": "Pi extension: run the svg-mcp MCP server via sharedserver and inject the diagram-authoring directive. Pairs with pi-mcp-adapter, which makes svg-mcp's tools reachable from Pi.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
"prepublishOnly": "npm run clean && npm run build"
|
|
27
27
|
},
|
|
28
28
|
"keywords": [
|
|
29
|
+
"pi-package",
|
|
29
30
|
"pi",
|
|
30
31
|
"pi-extension",
|
|
31
32
|
"pi-mono",
|
package/src/index.ts
CHANGED
|
@@ -27,7 +27,8 @@
|
|
|
27
27
|
// combiner-served. The sharedserver resolution is ported from plugins/opencode.
|
|
28
28
|
|
|
29
29
|
import { spawnSync } from "node:child_process"
|
|
30
|
-
import { existsSync, readFileSync } from "node:fs"
|
|
30
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs"
|
|
31
|
+
import { homedir } from "node:os"
|
|
31
32
|
import { dirname, join } from "node:path"
|
|
32
33
|
import { fileURLToPath } from "node:url"
|
|
33
34
|
import type {
|
|
@@ -171,15 +172,20 @@ export default function svgMcp(pi: ExtensionAPI): void {
|
|
|
171
172
|
|
|
172
173
|
// ── /svg-mcp command: inspect the extension (verb: system-prompt) ──
|
|
173
174
|
pi.registerCommand("svg-mcp", {
|
|
174
|
-
description:
|
|
175
|
+
description:
|
|
176
|
+
"svg-mcp extension — verbs: system-prompt (show the injected directive), install-config [path] (write mcp.json)",
|
|
175
177
|
getArgumentCompletions: (prefix) => completeVerbs(prefix),
|
|
176
178
|
handler: (args, ctx) => {
|
|
177
|
-
const verb = args.trim()
|
|
179
|
+
const [verb, ...rest] = args.trim().split(/\s+/)
|
|
178
180
|
if (verb === "" || verb === "system-prompt") {
|
|
179
181
|
showDirective(ctx, "svg-mcp", SVG_DIAGRAM_DIRECTIVE, wantInstructions)
|
|
180
182
|
return
|
|
181
183
|
}
|
|
182
|
-
|
|
184
|
+
if (verb === "install-config") {
|
|
185
|
+
installConfig(ctx, rest.join(" ") || undefined)
|
|
186
|
+
return
|
|
187
|
+
}
|
|
188
|
+
ctx.ui?.notify?.(`svg-mcp: unknown verb "${verb}". Try: system-prompt, install-config`, "warn")
|
|
183
189
|
},
|
|
184
190
|
})
|
|
185
191
|
|
|
@@ -256,13 +262,98 @@ export default function svgMcp(pi: ExtensionAPI): void {
|
|
|
256
262
|
// directive this extension injects — the show-command pattern from pi-custom-system-prompt,
|
|
257
263
|
// since `before_agent_start` injections are per-turn and never appear in Pi's own
|
|
258
264
|
// `/system-prompt` (which reports the base prompt only).
|
|
259
|
-
const COMMAND_VERBS = ["system-prompt"]
|
|
265
|
+
const COMMAND_VERBS = ["system-prompt", "install-config"]
|
|
260
266
|
function completeVerbs(prefix: string): AutocompleteItem[] | null {
|
|
261
267
|
const p = prefix.trim()
|
|
262
268
|
const matches = COMMAND_VERBS.filter((v) => v.startsWith(p))
|
|
263
269
|
return matches.length ? matches.map((v) => ({ value: v, label: v })) : null
|
|
264
270
|
}
|
|
265
271
|
|
|
272
|
+
// ── /svg-mcp install-config: write the pi-mcp-adapter mcp.json entry ──
|
|
273
|
+
// A USER-INVOKED write — on request, merge the svg-mcp entry into pi-mcp-adapter's
|
|
274
|
+
// mcp.json, wired for svg-mcp's optional inbound bearer auth:
|
|
275
|
+
//
|
|
276
|
+
// { "url": "…/mcp", "auth": "bearer", "bearerTokenEnv": "SVG_MCP_AUTH_TOKEN" }
|
|
277
|
+
//
|
|
278
|
+
// - auth:"bearer" → the adapter attaches `Authorization: Bearer <token>` (it gates the
|
|
279
|
+
// header on `auth === "bearer"`, NOT on bearerTokenEnv alone), AND makes
|
|
280
|
+
// supportsOAuth() false so a wrong/missing token surfaces as an honest 401 rather
|
|
281
|
+
// than a Dynamic-Client-Registration 404.
|
|
282
|
+
// - bearerTokenEnv → names the env var the token is read from at connect (nothing
|
|
283
|
+
// written to disk). The backend enforces only when SVG_MCP_AUTH_TOKEN is set on ITS
|
|
284
|
+
// side; unset ⇒ open, the env var is unset here too so no header is sent. The one
|
|
285
|
+
// shape is correct whether or not auth is enabled. Ported from mcp-companion's
|
|
286
|
+
// /mcp-combiner install-config.
|
|
287
|
+
|
|
288
|
+
function expandHome(p: string): string {
|
|
289
|
+
if (p === "~") return homedir()
|
|
290
|
+
if (p.startsWith("~/")) return join(homedir(), p.slice(2))
|
|
291
|
+
return p
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
/** The URL the adapter should reach svg-mcp at — 127.0.0.1:<port>/mcp with the same
|
|
295
|
+
* port defaults the backend serves on ($SVG_MCP_PORT, else 7731). */
|
|
296
|
+
function defaultSvgUrl(): string {
|
|
297
|
+
let port = DEFAULT_PORT
|
|
298
|
+
const raw = env("SVG_MCP_PORT")
|
|
299
|
+
if (raw !== undefined) {
|
|
300
|
+
const n = Number(raw)
|
|
301
|
+
if (Number.isInteger(n) && n > 0) port = n
|
|
302
|
+
}
|
|
303
|
+
return `http://127.0.0.1:${port}/mcp`
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
function installConfig(ctx: ExtensionCommandContext, pathArg?: string): void {
|
|
307
|
+
const target = pathArg ? expandHome(pathArg) : join(homedir(), ".config", "mcp", "mcp.json")
|
|
308
|
+
const key = DEFAULT_NAME
|
|
309
|
+
|
|
310
|
+
// Read + parse existing (tolerate absence; refuse to clobber non-JSON).
|
|
311
|
+
let doc: Record<string, unknown> = {}
|
|
312
|
+
if (existsSync(target)) {
|
|
313
|
+
try {
|
|
314
|
+
const parsed = JSON.parse(readFileSync(target, "utf8"))
|
|
315
|
+
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
|
|
316
|
+
ctx.ui?.notify?.(`svg-mcp: ${target} is not a JSON object; not overwriting`, "error")
|
|
317
|
+
return
|
|
318
|
+
}
|
|
319
|
+
doc = parsed as Record<string, unknown>
|
|
320
|
+
} catch (e) {
|
|
321
|
+
ctx.ui?.notify?.(`svg-mcp: ${target} is not valid JSON; not overwriting (${e})`, "error")
|
|
322
|
+
return
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
const servers = (doc.mcpServers ??= {}) as Record<string, Record<string, unknown>>
|
|
327
|
+
const prev = (servers[key] ?? {}) as Record<string, unknown>
|
|
328
|
+
const before = JSON.stringify(prev)
|
|
329
|
+
// Preserve any existing url and other fields; only ensure the auth-wiring keys.
|
|
330
|
+
servers[key] = {
|
|
331
|
+
...prev,
|
|
332
|
+
url: typeof prev.url === "string" && prev.url ? prev.url : defaultSvgUrl(),
|
|
333
|
+
auth: "bearer",
|
|
334
|
+
bearerTokenEnv: "SVG_MCP_AUTH_TOKEN",
|
|
335
|
+
}
|
|
336
|
+
const existed = before !== "{}" && Object.keys(prev).length > 0
|
|
337
|
+
const changed = before !== JSON.stringify(servers[key])
|
|
338
|
+
|
|
339
|
+
try {
|
|
340
|
+
mkdirSync(dirname(target), { recursive: true })
|
|
341
|
+
writeFileSync(target, `${JSON.stringify(doc, null, 2)}\n`, "utf8")
|
|
342
|
+
} catch (e) {
|
|
343
|
+
ctx.ui?.notify?.(`svg-mcp: failed to write ${target} (${e})`, "error")
|
|
344
|
+
return
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
const what = !existed ? "added" : changed ? "updated" : "already configured"
|
|
348
|
+
ctx.ui?.notify?.(
|
|
349
|
+
`svg-mcp: ${what} "${key}" in ${target}\n` +
|
|
350
|
+
`Sends "Authorization: Bearer $SVG_MCP_AUTH_TOKEN" when that env var is set ` +
|
|
351
|
+
`(auth:"bearer" both sends the token and suppresses OAuth probing). ` +
|
|
352
|
+
`Run /reload so pi-mcp-adapter re-reads mcp.json.`,
|
|
353
|
+
"info",
|
|
354
|
+
)
|
|
355
|
+
}
|
|
356
|
+
|
|
266
357
|
const SHOW_LIMIT = 1600
|
|
267
358
|
function showDirective(ctx: ExtensionCommandContext, label: string, directive: string, enabled: boolean): void {
|
|
268
359
|
if (!directive) {
|