@rotifer/mcp-server 0.18.0 → 0.19.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/README.md CHANGED
@@ -311,6 +311,35 @@ One snapshot per Gene: the next overwrite of that Gene supersedes it, and a
311
311
  rollback consumes it. This undoes the last upgrade rather than keeping a
312
312
  history — `list_gene_versions` already answers what versions exist upstream.
313
313
 
314
+ ### Keeping the server up to date
315
+
316
+ The server has always told you when it was behind — a line on stderr at startup,
317
+ once a day. `self-update` is the other half:
318
+
319
+ ```bash
320
+ rotifer-mcp-server self-update # check, verify, install
321
+ rotifer-mcp-server self-update --rollback # back to the version it replaced
322
+ ```
323
+
324
+ It refuses any version npm has no [provenance
325
+ attestation](https://docs.npmjs.com/generating-provenance-statements) for — this
326
+ package publishes from CI with `--provenance`, so an unattested build is not one
327
+ this project released.
328
+
329
+ Two things worth knowing:
330
+
331
+ - **A running server keeps serving the old code.** Installing replaces files on
332
+ disk; it does not replace the process your editor is already talking to.
333
+ Restart your MCP host afterwards.
334
+ - **If you launch through `npx`, there is nothing to update.** An unpinned `npx
335
+ @rotifer/mcp-server` re-resolves the latest published version on every run, so
336
+ `self-update` says so and stops rather than installing a global copy that
337
+ would shadow it.
338
+
339
+ This is a command you run, not a tool the model can call. Updating means a
340
+ global install, and a tool could not even report the result honestly — the model
341
+ would say "updated" while still being served by the old process.
342
+
314
343
  ### Usage reporting
315
344
 
316
345
  When you are **signed in**, each tool call reports a usage record to Rotifer
package/dist/cloud.d.ts CHANGED
@@ -3,6 +3,26 @@ interface CloudConfig {
3
3
  endpoint: string;
4
4
  anonKey: string;
5
5
  }
6
+ /**
7
+ * Supabase's legacy API keys are signed JWTs and begin "eyJ". The Cloud
8
+ * project has them disabled: presenting one now returns
9
+ * `401 Legacy API keys are disabled`.
10
+ *
11
+ * That matters here because ~/.rotifer/cloud.json outlives the migration.
12
+ * Anyone who used the CLI before it still has a legacy key sitting in that
13
+ * file, and this loader used to take it verbatim.
14
+ */
15
+ export declare function isLegacyJwtKey(key: string | undefined): boolean;
16
+ /**
17
+ * First configured key that is not a disabled legacy one, else the shipped
18
+ * default. @rotifer/playground gained this in its PR #336; the same stale file
19
+ * reaches this package and the fix was never ported, which is what broke the
20
+ * invocation pipeline: every report is fire-and-forget, so the 401 was
21
+ * swallowed and `gene_invocation_log` simply stayed empty. The dashboard read
22
+ * a true zero and correctly called the pipeline dead — nothing was writing to
23
+ * it.
24
+ */
25
+ export declare function resolveAnonKey(fromConfigFile: string | undefined, fromEnv: string | undefined): string;
6
26
  export declare function loadCloudConfig(): CloudConfig;
7
27
  export interface Gene {
8
28
  id: string;
@@ -211,9 +231,35 @@ export declare function logMcpCall(entry: {
211
231
  latency_ms: number;
212
232
  caller?: string | null;
213
233
  }): void;
234
+ /**
235
+ * Longest a caller will wait for reports to settle before giving up anyway.
236
+ * Matches playground's cloud/invocation.ts FLUSH_TIMEOUT_MS and the reasoning
237
+ * behind it: 2000ms was the original value here, measured wrong — 10 real
238
+ * requests to cloud.rotifer.dev this same session showed TLS handshake alone
239
+ * ranging ~0.4s–2.0s and total request time up to 2.57s. Starting at the
240
+ * already-corrected figure rather than rediscovering the same mistake.
241
+ */
242
+ export declare const FLUSH_TIMEOUT_MS = 8000;
243
+ /**
244
+ * Wait for any in-flight invocation reports to settle, or give up after
245
+ * FLUSH_TIMEOUT_MS. Call this before the process actually exits (see
246
+ * index.ts's SIGINT/SIGTERM handlers) — a long-lived MCP server does not
247
+ * need this (an unawaited open request keeps Node's event loop alive on its
248
+ * own, the same way playground's CLI does when it simply returns), but an
249
+ * explicit kill() bypasses that entirely and was the exact repro: a
250
+ * diagnostic script that called run_gene and killed the process right after
251
+ * getting the response found nothing had been written, silently, with
252
+ * ROTIFER_DEBUG producing no output either — confirmed by hand, 2026-08-30.
253
+ */
254
+ export declare function flushInvocationReports(timeoutMs?: number): Promise<void>;
214
255
  /**
215
256
  * Record a gene invocation for §33.4 anti-manipulation metrics.
216
- * Fire-and-forget — failures are silently ignored.
257
+ * Fire-and-forget — a failed report never fails the tool call — but tracked
258
+ * in `inFlight` so a caller about to exit can give it a chance to land
259
+ * first, and logged to stderr under ROTIFER_DEBUG rather than swallowed
260
+ * outright: a silently-eaten error is how this exact gap went unnoticed
261
+ * (ADR-322's own history), and this function had no debug output at all
262
+ * where the CLI's equivalent always did.
217
263
  *
218
264
  * Its caller already only reaches this when signed in, so the opt-out is what
219
265
  * this check adds: someone who sets ROTIFER_TELEMETRY=0 means all of it, not
package/dist/cloud.js CHANGED
@@ -6,6 +6,40 @@ import { telemetryOptedOutByEnv } from "./telemetry/consent.js";
6
6
  import { validateGeneName } from "./validate-gene-name.js";
7
7
  import { snapshotGene } from "./snapshots.js";
8
8
  const ROTIFER_HOME = join(process.env.HOME || process.env.USERPROFILE || "/tmp", ".rotifer");
9
+ /**
10
+ * The project's publishable anon key. Public by design — it ships in the
11
+ * package, is protected by RLS, and grants nothing a reader could not already
12
+ * do. Kept in step with @rotifer/playground's DEFAULT_CLOUD_ANON_KEY.
13
+ */
14
+ const DEFAULT_CLOUD_ANON_KEY = "sb_publishable_6aCznk-jn2QIQcN3QZobKg_3r9C-wzk";
15
+ /**
16
+ * Supabase's legacy API keys are signed JWTs and begin "eyJ". The Cloud
17
+ * project has them disabled: presenting one now returns
18
+ * `401 Legacy API keys are disabled`.
19
+ *
20
+ * That matters here because ~/.rotifer/cloud.json outlives the migration.
21
+ * Anyone who used the CLI before it still has a legacy key sitting in that
22
+ * file, and this loader used to take it verbatim.
23
+ */
24
+ export function isLegacyJwtKey(key) {
25
+ return typeof key === "string" && key.startsWith("eyJ");
26
+ }
27
+ /**
28
+ * First configured key that is not a disabled legacy one, else the shipped
29
+ * default. @rotifer/playground gained this in its PR #336; the same stale file
30
+ * reaches this package and the fix was never ported, which is what broke the
31
+ * invocation pipeline: every report is fire-and-forget, so the 401 was
32
+ * swallowed and `gene_invocation_log` simply stayed empty. The dashboard read
33
+ * a true zero and correctly called the pipeline dead — nothing was writing to
34
+ * it.
35
+ */
36
+ export function resolveAnonKey(fromConfigFile, fromEnv) {
37
+ for (const candidate of [fromConfigFile, fromEnv]) {
38
+ if (candidate && !isLegacyJwtKey(candidate))
39
+ return candidate;
40
+ }
41
+ return DEFAULT_CLOUD_ANON_KEY;
42
+ }
9
43
  let _cachedConfig = null;
10
44
  export function loadCloudConfig() {
11
45
  if (_cachedConfig)
@@ -16,7 +50,7 @@ export function loadCloudConfig() {
16
50
  const file = JSON.parse(readFileSync(configPath, "utf-8"));
17
51
  _cachedConfig = {
18
52
  endpoint: file.endpoint || process.env.ROTIFER_CLOUD_ENDPOINT || "https://cloud.rotifer.dev",
19
- anonKey: file.anonKey || process.env.ROTIFER_CLOUD_ANON_KEY || "",
53
+ anonKey: resolveAnonKey(file.anonKey, process.env.ROTIFER_CLOUD_ANON_KEY),
20
54
  };
21
55
  return _cachedConfig;
22
56
  }
@@ -26,7 +60,7 @@ export function loadCloudConfig() {
26
60
  }
27
61
  _cachedConfig = {
28
62
  endpoint: process.env.ROTIFER_CLOUD_ENDPOINT || "https://cloud.rotifer.dev",
29
- anonKey: process.env.ROTIFER_CLOUD_ANON_KEY || "",
63
+ anonKey: resolveAnonKey(undefined, process.env.ROTIFER_CLOUD_ANON_KEY),
30
64
  };
31
65
  return _cachedConfig;
32
66
  }
@@ -515,9 +549,58 @@ export function logMcpCall(entry) {
515
549
  }),
516
550
  }).catch(() => { });
517
551
  }
552
+ /**
553
+ * Reports still in flight. Emptied as each settles; see flushInvocationReports.
554
+ *
555
+ * Scoped to logGeneInvocation specifically — not logMcpCall, not the
556
+ * heartbeat in telemetry/heartbeat.ts. Those are dispensable ops signals
557
+ * (heartbeat.ts's own file comment: "a dropped heartbeat ... will show up
558
+ * again tomorrow if the machine is still in use"). This one feeds the §33.4
559
+ * anti-manipulation ledger — the CLI's equivalent (recordGeneInvocation in
560
+ * playground's cloud/invocation.ts) already tracks in-flight requests for
561
+ * exactly this reason, and this file did not.
562
+ */
563
+ const inFlight = new Set();
564
+ /**
565
+ * Longest a caller will wait for reports to settle before giving up anyway.
566
+ * Matches playground's cloud/invocation.ts FLUSH_TIMEOUT_MS and the reasoning
567
+ * behind it: 2000ms was the original value here, measured wrong — 10 real
568
+ * requests to cloud.rotifer.dev this same session showed TLS handshake alone
569
+ * ranging ~0.4s–2.0s and total request time up to 2.57s. Starting at the
570
+ * already-corrected figure rather than rediscovering the same mistake.
571
+ */
572
+ export const FLUSH_TIMEOUT_MS = 8000;
573
+ /**
574
+ * Wait for any in-flight invocation reports to settle, or give up after
575
+ * FLUSH_TIMEOUT_MS. Call this before the process actually exits (see
576
+ * index.ts's SIGINT/SIGTERM handlers) — a long-lived MCP server does not
577
+ * need this (an unawaited open request keeps Node's event loop alive on its
578
+ * own, the same way playground's CLI does when it simply returns), but an
579
+ * explicit kill() bypasses that entirely and was the exact repro: a
580
+ * diagnostic script that called run_gene and killed the process right after
581
+ * getting the response found nothing had been written, silently, with
582
+ * ROTIFER_DEBUG producing no output either — confirmed by hand, 2026-08-30.
583
+ */
584
+ export async function flushInvocationReports(timeoutMs = FLUSH_TIMEOUT_MS) {
585
+ if (inFlight.size === 0)
586
+ return;
587
+ let timer;
588
+ const deadline = new Promise((resolve) => {
589
+ timer = setTimeout(resolve, timeoutMs);
590
+ timer.unref?.();
591
+ });
592
+ await Promise.race([Promise.allSettled([...inFlight]).then(() => undefined), deadline]);
593
+ if (timer)
594
+ clearTimeout(timer);
595
+ }
518
596
  /**
519
597
  * Record a gene invocation for §33.4 anti-manipulation metrics.
520
- * Fire-and-forget — failures are silently ignored.
598
+ * Fire-and-forget — a failed report never fails the tool call — but tracked
599
+ * in `inFlight` so a caller about to exit can give it a chance to land
600
+ * first, and logged to stderr under ROTIFER_DEBUG rather than swallowed
601
+ * outright: a silently-eaten error is how this exact gap went unnoticed
602
+ * (ADR-322's own history), and this function had no debug output at all
603
+ * where the CLI's equivalent always did.
521
604
  *
522
605
  * Its caller already only reaches this when signed in, so the opt-out is what
523
606
  * this check adds: someone who sets ROTIFER_TELEMETRY=0 means all of it, not
@@ -532,7 +615,17 @@ export function logGeneInvocation(geneId, callerAgentId, channel) {
532
615
  // still produces (ADR-322 D2 is open) collapses to one row even though the
533
616
  // two reports now arrive at different functions.
534
617
  const isUseV2 = typeof channel === "string" && channel.length > 0;
535
- fetch(rpcUrl(isUseV2 ? "log_gene_invocation_v2" : "log_gene_invocation"), {
618
+ const rpc = isUseV2 ? "log_gene_invocation_v2" : "log_gene_invocation";
619
+ // flushInvocationReports() giving up after FLUSH_TIMEOUT_MS only stops the
620
+ // *caller* from waiting — it does not by itself end this fetch. Without the
621
+ // abort, a stalled endpoint would hang whatever is waiting on the flush for
622
+ // however long the OS's own TCP timeout takes, not just FLUSH_TIMEOUT_MS
623
+ // (same bug, already found and fixed on the CLI side this session — see
624
+ // heartbeat.ts's regression test there for the mechanism).
625
+ const controller = new AbortController();
626
+ const abortTimer = setTimeout(() => controller.abort(), FLUSH_TIMEOUT_MS);
627
+ abortTimer.unref?.();
628
+ const settled = fetch(rpcUrl(rpc), {
536
629
  method: "POST",
537
630
  headers: authHeaders(),
538
631
  body: JSON.stringify(isUseV2
@@ -545,7 +638,23 @@ export function logGeneInvocation(geneId, callerAgentId, channel) {
545
638
  p_gene_id: geneId,
546
639
  p_caller_agent_id: callerAgentId,
547
640
  }),
548
- }).catch(() => { });
641
+ signal: controller.signal,
642
+ })
643
+ .then((res) => {
644
+ if (!res.ok && process.env.ROTIFER_DEBUG) {
645
+ process.stderr.write(`[rotifer-mcp] ${rpc} failed (${res.status})\n`);
646
+ }
647
+ })
648
+ .catch((err) => {
649
+ if (process.env.ROTIFER_DEBUG) {
650
+ process.stderr.write(`[rotifer-mcp] ${rpc} error: ${err?.message ?? err}\n`);
651
+ }
652
+ })
653
+ .finally(() => {
654
+ clearTimeout(abortTimer);
655
+ inFlight.delete(settled);
656
+ });
657
+ inFlight.add(settled);
549
658
  }
550
659
  export async function getMcpStats(days = 7) {
551
660
  const since = new Date(Date.now() - days * 86400000).toISOString();
package/dist/cloud.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cloud.js","sourceRoot":"","sources":["../src/cloud.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cloud.js","sourceRoot":"","sources":["../src/cloud.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -2,6 +2,7 @@
2
2
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
3
3
  import { createServer } from "./server.js";
4
4
  import { getVersionInfo, getPackageVersion } from "./version.js";
5
+ import { flushInvocationReports } from "./cloud.js";
5
6
  async function notifyVersionOnStderr() {
6
7
  if (process.env.CI || process.env.NO_UPDATE_NOTIFIER || process.env.ROTIFER_NO_UPDATE_CHECK)
7
8
  return;
@@ -31,6 +32,11 @@ async function main() {
31
32
  runLogout();
32
33
  return;
33
34
  }
35
+ if (subcommand === "self-update") {
36
+ const { runSelfUpdate } = await import("./self-update.js");
37
+ await runSelfUpdate({ isRollback: process.argv.includes("--rollback") });
38
+ return;
39
+ }
34
40
  if (subcommand === "serve") {
35
41
  const { startHttpServer } = await import("./http.js");
36
42
  const portIdx = process.argv.indexOf("--port");
@@ -47,6 +53,26 @@ async function main() {
47
53
  const server = createServer();
48
54
  const transport = new StdioServerTransport();
49
55
  await server.connect(transport);
56
+ // A long-lived host (Claude Code, Cursor) never needs this — an unawaited
57
+ // open request keeps Node's event loop alive on its own until it settles,
58
+ // the same way playground's CLI does when a command simply returns. What
59
+ // this covers is an explicit kill(): SIGTERM's default action is immediate
60
+ // termination, and installing a handler is the only way to get a chance to
61
+ // flush first. This was the exact repro (2026-08-30): a diagnostic script
62
+ // called run_gene, got its response, and child.kill()'d the process right
63
+ // after — the in-flight §33.4 report never landed, silently. Bounded by
64
+ // flushInvocationReports()'s own FLUSH_TIMEOUT_MS, so a stalled endpoint
65
+ // delays shutdown by a few seconds at most, never indefinitely.
66
+ let shuttingDown = false;
67
+ const shutdown = async () => {
68
+ if (shuttingDown)
69
+ return;
70
+ shuttingDown = true;
71
+ await flushInvocationReports();
72
+ process.exit(0);
73
+ };
74
+ process.on("SIGINT", () => void shutdown());
75
+ process.on("SIGTERM", () => void shutdown());
50
76
  }
51
77
  main().catch((err) => {
52
78
  console.error("Fatal:", err);
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":";AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEpD,KAAK,UAAU,qBAAqB;IAClC,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB;QAAE,OAAO;IACpG,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,cAAc,EAAE,CAAC;QACpC,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,0CAA0C,IAAI,CAAC,OAAO,MAAM,IAAI,CAAC,MAAM,IAAI;gBAC3E,4CAA4C,CAC7C,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;AAChC,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAEnC,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;QAC3B,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;QAChD,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACvD,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACvD,MAAM,QAAQ,CAAC;YACb,QAAQ,EAAE,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;YACxE,QAAQ,EAAE,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;SACzE,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;QACjD,SAAS,EAAE,CAAC;QACZ,OAAO;IACT,CAAC;IAED,IAAI,UAAU,KAAK,aAAa,EAAE,CAAC;QACjC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAC3D,MAAM,aAAa,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QACzE,OAAO;IACT,CAAC;IAED,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;QAC3B,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAClF,qBAAqB,EAAE,CAAC;QACxB,MAAM,eAAe,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAChC,OAAO;IACT,CAAC;IAED,IAAI,UAAU,KAAK,WAAW,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC;QACjC,OAAO;IACT,CAAC;IAED,qBAAqB,EAAE,CAAC;IACxB,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAC9B,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,0EAA0E;IAC1E,0EAA0E;IAC1E,yEAAyE;IACzE,2EAA2E;IAC3E,2EAA2E;IAC3E,0EAA0E;IAC1E,0EAA0E;IAC1E,wEAAwE;IACxE,yEAAyE;IACzE,gEAAgE;IAChE,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;QAC1B,IAAI,YAAY;YAAE,OAAO;QACzB,YAAY,GAAG,IAAI,CAAC;QACpB,MAAM,sBAAsB,EAAE,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * `rotifer-mcp-server self-update` — a CLI subcommand, deliberately NOT an MCP
3
+ * tool.
4
+ *
5
+ * The server already tells you when it is behind (index.ts writes a notice to
6
+ * stderr on startup); what it could not do was act on that. This closes the
7
+ * gap the same way `login` / `logout` do — a human runs it.
8
+ *
9
+ * Exposing it as a tool was considered and rejected. A tool is something the
10
+ * model decides to call, and this one would run `npm install -g`: an
11
+ * unsandboxed global write triggered by model output rather than by the person
12
+ * whose machine it is. It could not even report success honestly — installing
13
+ * new files on disk does not replace the *running* server process, and the
14
+ * host (Claude Code, Cursor) keeps talking to the old one until it is
15
+ * restarted. So the model would report "updated" while continuing to serve the
16
+ * old code.
17
+ */
18
+ export declare const PACKAGE_NAME = "@rotifer/mcp-server";
19
+ export declare function detectPackageManager(): string;
20
+ export declare function getInstallCommand(pm: string, version: string): [string, string[]];
21
+ /**
22
+ * True when this process was launched by `npx @rotifer/mcp-server`, which is
23
+ * what the README's setup snippet tells hosts to do.
24
+ *
25
+ * It matters because npx re-resolves an unpinned name against the registry on
26
+ * every launch — verified: with 0.17.0 already sitting in the npx cache, a bare
27
+ * `npx @rotifer/mcp-server --version` still ran 0.18.0. Those users have
28
+ * nothing to update, and a global install would only shadow the fresh copy
29
+ * with a stale one.
30
+ */
31
+ export declare function isRunViaNpx(): boolean;
32
+ /**
33
+ * Whether npm has an attestation for this exact version — the same gate the
34
+ * CLI's `self-update` applies. Both packages publish with `--provenance` from
35
+ * CI (OIDC Trusted Publishing), so a version without one is not a version this
36
+ * project released, and we refuse to install it unattended.
37
+ */
38
+ export declare function verifyProvenance(version: string): Promise<boolean>;
39
+ export declare function readLastVersion(): string | null;
40
+ export declare function recordLastVersion(version: string): void;
41
+ export declare function doesNeedSudo(pm: string): boolean;
42
+ export interface SelfUpdateOptions {
43
+ isRollback?: boolean;
44
+ }
45
+ export declare function runSelfUpdate(options?: SelfUpdateOptions): Promise<void>;
@@ -0,0 +1,209 @@
1
+ import { execFileSync } from "node:child_process";
2
+ import { accessSync, constants, existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
3
+ import { join } from "node:path";
4
+ import { compareSemver, fetchLatestVersion, getConfigDir, getPackageVersion, } from "./version.js";
5
+ /**
6
+ * `rotifer-mcp-server self-update` — a CLI subcommand, deliberately NOT an MCP
7
+ * tool.
8
+ *
9
+ * The server already tells you when it is behind (index.ts writes a notice to
10
+ * stderr on startup); what it could not do was act on that. This closes the
11
+ * gap the same way `login` / `logout` do — a human runs it.
12
+ *
13
+ * Exposing it as a tool was considered and rejected. A tool is something the
14
+ * model decides to call, and this one would run `npm install -g`: an
15
+ * unsandboxed global write triggered by model output rather than by the person
16
+ * whose machine it is. It could not even report success honestly — installing
17
+ * new files on disk does not replace the *running* server process, and the
18
+ * host (Claude Code, Cursor) keeps talking to the old one until it is
19
+ * restarted. So the model would report "updated" while continuing to serve the
20
+ * old code.
21
+ */
22
+ export const PACKAGE_NAME = "@rotifer/mcp-server";
23
+ const REGISTRY_URL = "https://registry.npmjs.org";
24
+ const PROVENANCE_TIMEOUT_MS = 10_000;
25
+ export function detectPackageManager() {
26
+ const userAgent = process.env.npm_config_user_agent || "";
27
+ if (userAgent.startsWith("pnpm"))
28
+ return "pnpm";
29
+ if (userAgent.startsWith("yarn"))
30
+ return "yarn";
31
+ if (userAgent.startsWith("bun"))
32
+ return "bun";
33
+ return "npm";
34
+ }
35
+ export function getInstallCommand(pm, version) {
36
+ const spec = `${PACKAGE_NAME}@${version}`;
37
+ switch (pm) {
38
+ case "pnpm": return ["pnpm", ["add", "-g", spec]];
39
+ case "yarn": return ["yarn", ["global", "add", spec]];
40
+ case "bun": return ["bun", ["add", "-g", spec]];
41
+ default: return ["npm", ["install", "-g", spec]];
42
+ }
43
+ }
44
+ /**
45
+ * True when this process was launched by `npx @rotifer/mcp-server`, which is
46
+ * what the README's setup snippet tells hosts to do.
47
+ *
48
+ * It matters because npx re-resolves an unpinned name against the registry on
49
+ * every launch — verified: with 0.17.0 already sitting in the npx cache, a bare
50
+ * `npx @rotifer/mcp-server --version` still ran 0.18.0. Those users have
51
+ * nothing to update, and a global install would only shadow the fresh copy
52
+ * with a stale one.
53
+ */
54
+ export function isRunViaNpx() {
55
+ const execPath = process.env.npm_execpath || "";
56
+ return execPath.includes("npx") || process.env.npm_command === "exec";
57
+ }
58
+ /**
59
+ * Whether npm has an attestation for this exact version — the same gate the
60
+ * CLI's `self-update` applies. Both packages publish with `--provenance` from
61
+ * CI (OIDC Trusted Publishing), so a version without one is not a version this
62
+ * project released, and we refuse to install it unattended.
63
+ */
64
+ export async function verifyProvenance(version) {
65
+ try {
66
+ const controller = new AbortController();
67
+ const timeout = setTimeout(() => controller.abort(), PROVENANCE_TIMEOUT_MS);
68
+ const res = await fetch(`${REGISTRY_URL}/${encodeURIComponent(PACKAGE_NAME)}/${encodeURIComponent(version)}`, { headers: { accept: "application/json" }, signal: controller.signal });
69
+ clearTimeout(timeout);
70
+ if (!res.ok)
71
+ return false;
72
+ const data = await res.json();
73
+ return !!data.dist?.attestations;
74
+ }
75
+ catch {
76
+ return false;
77
+ }
78
+ }
79
+ /**
80
+ * Rollback bookkeeping lives in ~/.config/rotifer/config.json under
81
+ * `last-versions`, the same map @rotifer/playground's `self-update` writes —
82
+ * the two packages have always shared this directory (see getConfigDir), and
83
+ * sharing the map means either command can roll the other's upgrade back.
84
+ * Unknown keys are preserved on write so neither tool clobbers the other's
85
+ * settings.
86
+ */
87
+ function getUserConfigFile() {
88
+ return join(getConfigDir(), "config.json");
89
+ }
90
+ export function readLastVersion() {
91
+ try {
92
+ const f = getUserConfigFile();
93
+ if (!existsSync(f))
94
+ return null;
95
+ const config = JSON.parse(readFileSync(f, "utf-8"));
96
+ return config["last-versions"]?.[PACKAGE_NAME] ?? null;
97
+ }
98
+ catch {
99
+ return null;
100
+ }
101
+ }
102
+ export function recordLastVersion(version) {
103
+ try {
104
+ const f = getUserConfigFile();
105
+ const config = existsSync(f)
106
+ ? JSON.parse(readFileSync(f, "utf-8"))
107
+ : {};
108
+ const map = (config["last-versions"] ?? {});
109
+ config["last-versions"] = { ...map, [PACKAGE_NAME]: version };
110
+ mkdirSync(getConfigDir(), { recursive: true });
111
+ writeFileSync(f, JSON.stringify(config, null, 2) + "\n");
112
+ }
113
+ catch {
114
+ // Losing the rollback breadcrumb must not fail an otherwise good update.
115
+ }
116
+ }
117
+ export function doesNeedSudo(pm) {
118
+ if (pm !== "npm" || process.platform === "win32")
119
+ return false;
120
+ try {
121
+ const prefix = execFileSync("npm", ["config", "get", "prefix"], {
122
+ encoding: "utf-8",
123
+ }).trim();
124
+ // Statically imported, not `require`d: this package is ESM ("type":
125
+ // "module"), where `require` is not defined at all. A `require` here throws
126
+ // a ReferenceError that the catch below swallows into "sudo needed", so
127
+ // every update would refuse to run with a permissions error that was not
128
+ // real. (@rotifer/playground gets away with the same line only because it
129
+ // compiles to CJS.)
130
+ accessSync(prefix, constants.W_OK);
131
+ return false;
132
+ }
133
+ catch {
134
+ return true;
135
+ }
136
+ }
137
+ export async function runSelfUpdate(options = {}) {
138
+ const current = getPackageVersion();
139
+ const pm = detectPackageManager();
140
+ if (options.isRollback) {
141
+ const previous = readLastVersion();
142
+ if (!previous) {
143
+ console.error("No previous version recorded. Cannot roll back.");
144
+ console.error("Run 'rotifer-mcp-server self-update' at least once first.");
145
+ process.exit(1);
146
+ return;
147
+ }
148
+ const [cmd, args] = getInstallCommand(pm, previous);
149
+ console.log(`Rolling back ${PACKAGE_NAME} to ${previous}...`);
150
+ execFileSync(cmd, args, { stdio: "inherit" });
151
+ console.log(`Rolled back to ${previous}. Restart your MCP host to load it.`);
152
+ return;
153
+ }
154
+ console.log(`${PACKAGE_NAME} ${current}`);
155
+ if (isRunViaNpx()) {
156
+ console.log("Launched through npx, which resolves the latest published version on " +
157
+ "every run — there is nothing to update.");
158
+ console.log("Installing globally would only pin an older copy in front of it. If you " +
159
+ "want a pinned install instead, run: " +
160
+ `${pm} install -g ${PACKAGE_NAME}@latest`);
161
+ return;
162
+ }
163
+ console.log("Checking for updates...");
164
+ const latest = await fetchLatestVersion();
165
+ if (!latest) {
166
+ console.error("Could not reach the npm registry. Try again later.");
167
+ process.exit(1);
168
+ return;
169
+ }
170
+ if (compareSemver(latest, current) <= 0) {
171
+ console.log("Already up to date.");
172
+ return;
173
+ }
174
+ console.log(`Update available: ${current} -> ${latest}`);
175
+ console.log("Verifying provenance...");
176
+ const hasProvenance = await verifyProvenance(latest);
177
+ if (!hasProvenance) {
178
+ console.error(`No provenance attestation for ${PACKAGE_NAME}@${latest}.`);
179
+ console.error(`Refusing to install it unattended. To override: ${pm} install -g ${PACKAGE_NAME}@${latest}`);
180
+ process.exit(1);
181
+ return;
182
+ }
183
+ console.log("Provenance verified.");
184
+ const [cmd, args] = getInstallCommand(pm, latest);
185
+ if (doesNeedSudo(pm)) {
186
+ console.error("Global install requires elevated permissions.");
187
+ console.error(`Run manually: sudo ${cmd} ${args.join(" ")}`);
188
+ process.exit(1);
189
+ return;
190
+ }
191
+ try {
192
+ console.log(`Installing ${PACKAGE_NAME}@${latest}...`);
193
+ execFileSync(cmd, args, { stdio: "inherit" });
194
+ }
195
+ catch (err) {
196
+ const msg = err instanceof Error ? err.message : String(err);
197
+ console.error(`Update failed: ${msg}`);
198
+ console.error(`Try manually: ${cmd} ${args.join(" ")}`);
199
+ process.exit(1);
200
+ return;
201
+ }
202
+ recordLastVersion(current);
203
+ console.log(`Updated to ${latest}.`);
204
+ // The point people miss: the files changed, the running server did not.
205
+ console.log("Restart your MCP host (Claude Code, Cursor, ...) — a running server keeps " +
206
+ "serving the old code until it is restarted.");
207
+ console.log(`To undo: rotifer-mcp-server self-update --rollback (back to ${current})`);
208
+ }
209
+ //# sourceMappingURL=self-update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"self-update.js","sourceRoot":"","sources":["../src/self-update.ts"],"names":[],"mappings":"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"}
package/dist/version.d.ts CHANGED
@@ -1,4 +1,10 @@
1
+ export declare function getConfigDir(): string;
1
2
  export declare function getPackageVersion(): string;
3
+ export declare function compareSemver(a: string, b: string): number;
4
+ /** A live registry lookup, bypassing the 24h cache in getVersionInfo().
5
+ * `self-update` needs the truth at the moment the user asked, not a cached
6
+ * answer from yesterday. */
7
+ export declare function fetchLatestVersion(): Promise<string | null>;
2
8
  export interface VersionInfo {
3
9
  current: string;
4
10
  latest: string | null;
package/dist/version.js CHANGED
@@ -4,7 +4,7 @@ import { homedir } from "node:os";
4
4
  import { fileURLToPath } from "node:url";
5
5
  const __dirname = fileURLToPath(new URL(".", import.meta.url));
6
6
  const CHECK_INTERVAL_MS = 24 * 60 * 60 * 1000;
7
- function getConfigDir() {
7
+ export function getConfigDir() {
8
8
  return process.env.ROTIFER_CONFIG_DIR || join(homedir(), ".config", "rotifer");
9
9
  }
10
10
  function getCacheFile() {
@@ -17,7 +17,7 @@ export function getPackageVersion() {
17
17
  const pkg = JSON.parse(readFileSync(join(__dirname, "..", "package.json"), "utf-8"));
18
18
  return pkg.version;
19
19
  }
20
- function compareSemver(a, b) {
20
+ export function compareSemver(a, b) {
21
21
  const pa = a.split(".").map(Number);
22
22
  const pb = b.split(".").map(Number);
23
23
  for (let i = 0; i < 3; i++) {
@@ -45,7 +45,10 @@ function writeCache(cache) {
45
45
  }
46
46
  catch { /* non-critical */ }
47
47
  }
48
- async function fetchLatestVersion() {
48
+ /** A live registry lookup, bypassing the 24h cache in getVersionInfo().
49
+ * `self-update` needs the truth at the moment the user asked, not a cached
50
+ * answer from yesterday. */
51
+ export async function fetchLatestVersion() {
49
52
  try {
50
53
  const controller = new AbortController();
51
54
  const timeout = setTimeout(() => controller.abort(), FETCH_TIMEOUT_MS);
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rotifer/mcp-server",
3
- "version": "0.18.0",
3
+ "version": "0.19.1",
4
4
  "mcpName": "io.github.rotifer-protocol/mcp-server",
5
5
  "description": "Rotifer MCP Server — AI agents search, compare, and rank Genes (modular AI skills) from a living ecosystem of 50+ capabilities. Zero config.",
6
6
  "type": "module",
@@ -52,7 +52,8 @@
52
52
  },
53
53
  "overrides": {
54
54
  "qs": "^6.15.2",
55
- "hono": "^4.12.26"
55
+ "hono": "^4.12.26",
56
+ "fast-uri": "^3.1.7"
56
57
  },
57
58
  "engines": {
58
59
  "node": ">=20"