@rotifer/mcp-server 0.16.1 → 0.18.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.
@@ -0,0 +1,40 @@
1
+ /**
2
+ * The one environment-variable check both telemetry paths share.
3
+ *
4
+ * Mirrors rotifer-playground's src/telemetry/consent.ts exactly — same
5
+ * logic, independently implemented because these are two separate npm
6
+ * packages that cannot import each other's source. If this file and that one
7
+ * ever diverge, fix both; a user who sets ROTIFER_TELEMETRY=0 expects it to
8
+ * mean "off" from whichever binary they happen to be running.
9
+ *
10
+ * ADR-329's decision is explicit: "ROTIFER_TELEMETRY=0 同时关闭匿名信号与
11
+ * 登录上报——「关掉」意味着全部,与 316 的语义一致." Before this module
12
+ * existed, ROTIFER_TELEMETRY was checked in exactly one place here
13
+ * (cloud.ts's telemetryOptedOut, for the signed-in invocation/download
14
+ * reports). Adding the anonymous heartbeat with its own copy of that check
15
+ * would have been the easy path and the wrong one.
16
+ *
17
+ * DO_NOT_TRACK is the cross-tool convention (https://consoledonottrack.com/)
18
+ * and is new here — it outranks ROTIFER_TELEMETRY because it is a stance the
19
+ * user took before ever hearing of this project.
20
+ */
21
+ export function telemetryOptedOutByEnv(env = process.env) {
22
+ const dnt = (env.DO_NOT_TRACK || "").trim().toLowerCase();
23
+ if (dnt !== "" && dnt !== "0" && dnt !== "false")
24
+ return true;
25
+ const flag = (env.ROTIFER_TELEMETRY || "").trim().toLowerCase();
26
+ return flag === "0" || flag === "false" || flag === "off";
27
+ }
28
+ /**
29
+ * True when the environment explicitly asked for telemetry (as opposed to
30
+ * "unset, so whatever the default is"). An explicit ROTIFER_TELEMETRY=1
31
+ * should win even over a stored "disabled" choice — a per-shell override
32
+ * should not require first running a separate command to change stored state.
33
+ */
34
+ export function telemetryExplicitlyOnByEnv(env = process.env) {
35
+ if (telemetryOptedOutByEnv(env))
36
+ return false;
37
+ const flag = (env.ROTIFER_TELEMETRY || "").trim().toLowerCase();
38
+ return flag !== "" && flag !== "0" && flag !== "false" && flag !== "off";
39
+ }
40
+ //# sourceMappingURL=consent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consent.js","sourceRoot":"","sources":["../../src/telemetry/consent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAyB,OAAO,CAAC,GAAG;IACzE,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC1D,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC;IAE9D,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAChE,OAAO,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,KAAK,CAAC;AAC5D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC7E,IAAI,sBAAsB,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9C,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAChE,OAAO,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,KAAK,CAAC;AAC3E,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Reports one Gene invocation's worth of activity for this machine, today,
3
+ * on the given channel. Fire-and-forget; every failure mode is silence.
4
+ *
5
+ * Returns the first-run notice text exactly once — the first time a report
6
+ * for this machine is actually about to leave the process, never before (a
7
+ * machine whose heartbeat is off, by env or stored choice, must never be
8
+ * told "we're about to collect data" for data that in fact never leaves it)
9
+ * — and null every other time, including every call after the first.
10
+ */
11
+ export declare function recordHeartbeat(channel: string): string | null;
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Anonymous usage heartbeat (ADR-329).
3
+ *
4
+ * Answers a narrower question than the signed-in invocation report: not "who
5
+ * called what", just "did this machine run something today, and through
6
+ * which channel". No identity, on by default, and it costs nothing to lose
7
+ * one — this is not §33.4 input, so unlike logGeneInvocation's report this
8
+ * file tracks no in-flight requests for anything to await. A dropped
9
+ * heartbeat is not a hole in an audited ledger, it is one machine's "active
10
+ * today" signal that will show up again tomorrow if the machine is still in
11
+ * use.
12
+ *
13
+ * The one thing genuinely different from playground's version of this file:
14
+ * the first-run notice cannot go to stderr here. stderr is where CLI users
15
+ * look and exactly where MCP hosts do not — nobody reads a long-lived MCP
16
+ * server's stderr stream in normal use. So recordHeartbeat() *returns* the
17
+ * notice text instead of printing it, and the caller (server.ts) folds it
18
+ * into the tool response the user's client will actually render.
19
+ */
20
+ import { loadCloudConfig } from "../cloud.js";
21
+ import { getPackageVersion } from "../version.js";
22
+ import { loadOrInitHeartbeatConfig, resolveHeartbeatDecision, heartbeatDecisionEnabled, markFirstRunNoticeShown, } from "./config.js";
23
+ const FIRST_RUN_NOTICE = "Anonymous usage heartbeat is on by default — no code, no identity, just " +
24
+ '"this machine ran something today". Set ROTIFER_TELEMETRY=0 or DO_NOT_TRACK=1 ' +
25
+ "to disable. Details: https://rotifer.dev/telemetry";
26
+ /**
27
+ * Reports one Gene invocation's worth of activity for this machine, today,
28
+ * on the given channel. Fire-and-forget; every failure mode is silence.
29
+ *
30
+ * Returns the first-run notice text exactly once — the first time a report
31
+ * for this machine is actually about to leave the process, never before (a
32
+ * machine whose heartbeat is off, by env or stored choice, must never be
33
+ * told "we're about to collect data" for data that in fact never leaves it)
34
+ * — and null every other time, including every call after the first.
35
+ */
36
+ export function recordHeartbeat(channel) {
37
+ // The whole body is one try/catch, deliberately wider than the network
38
+ // call — loadOrInitHeartbeatConfig()/markFirstRunNoticeShown() write to
39
+ // ~/.rotifer/telemetry.json, and a tool call failing because this
40
+ // fire-and-forget signal couldn't touch the filesystem would be a much
41
+ // worse trade than just not sending a heartbeat this once.
42
+ try {
43
+ const config = loadOrInitHeartbeatConfig();
44
+ const decision = resolveHeartbeatDecision(config);
45
+ if (!heartbeatDecisionEnabled(decision))
46
+ return null;
47
+ // Persisted synchronously, before the fetch below, so a crash mid-request
48
+ // can never cause the notice to be owed again on the next call.
49
+ let notice = null;
50
+ if (!config.first_run_notice_shown) {
51
+ notice = FIRST_RUN_NOTICE;
52
+ markFirstRunNoticeShown(config);
53
+ }
54
+ const cloudConfig = loadCloudConfig();
55
+ const url = `${cloudConfig.endpoint.replace(/\/+$/, "")}/rest/v1/rpc/record_heartbeat`;
56
+ // No Authorization header: record_heartbeat is anon-callable by design
57
+ // (playground migration 20260830010000) — that grant is the entire point
58
+ // of ADR-329. Sending credentials here would be pointless (the RPC does
59
+ // not use them) and would defeat the "no identity" promise for a caller
60
+ // who happens to be signed in but hasn't opted into the invocation report.
61
+ fetch(url, {
62
+ method: "POST",
63
+ headers: { "Content-Type": "application/json", apikey: cloudConfig.anonKey },
64
+ body: JSON.stringify({
65
+ p_machine_id: config.machine_id,
66
+ p_channel: channel,
67
+ p_client_version: getPackageVersion(),
68
+ p_invocation_delta: 1,
69
+ }),
70
+ })
71
+ .then((res) => {
72
+ if (!res.ok && process.env.ROTIFER_DEBUG) {
73
+ process.stderr.write(`[rotifer] record_heartbeat failed (${res.status})\n`);
74
+ }
75
+ })
76
+ .catch((err) => {
77
+ if (process.env.ROTIFER_DEBUG) {
78
+ process.stderr.write(`[rotifer] record_heartbeat error: ${err?.message ?? err}\n`);
79
+ }
80
+ });
81
+ return notice;
82
+ }
83
+ catch (err) {
84
+ if (process.env.ROTIFER_DEBUG) {
85
+ process.stderr.write(`[rotifer] record_heartbeat setup error: ${err?.message ?? err}\n`);
86
+ }
87
+ return null;
88
+ }
89
+ }
90
+ //# sourceMappingURL=heartbeat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heartbeat.js","sourceRoot":"","sources":["../../src/telemetry/heartbeat.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EACL,yBAAyB,EACzB,wBAAwB,EACxB,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,aAAa,CAAC;AAErB,MAAM,gBAAgB,GACpB,0EAA0E;IAC1E,gFAAgF;IAChF,oDAAoD,CAAC;AAEvD;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,uEAAuE;IACvE,wEAAwE;IACxE,kEAAkE;IAClE,uEAAuE;IACvE,2DAA2D;IAC3D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,yBAAyB,EAAE,CAAC;QAC3C,MAAM,QAAQ,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAC;QAErD,0EAA0E;QAC1E,gEAAgE;QAChE,IAAI,MAAM,GAAkB,IAAI,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE,CAAC;YACnC,MAAM,GAAG,gBAAgB,CAAC;YAC1B,uBAAuB,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC;QAED,MAAM,WAAW,GAAG,eAAe,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,+BAA+B,CAAC;QAEvF,uEAAuE;QACvE,yEAAyE;QACzE,wEAAwE;QACxE,wEAAwE;QACxE,2EAA2E;QAC3E,KAAK,CAAC,GAAG,EAAE;YACT,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,EAAE;YAC5E,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,YAAY,EAAE,MAAM,CAAC,UAAU;gBAC/B,SAAS,EAAE,OAAO;gBAClB,gBAAgB,EAAE,iBAAiB,EAAE;gBACrC,kBAAkB,EAAE,CAAC;aACtB,CAAC;SACH,CAAC;aACC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YACZ,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;gBACzC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sCAAsC,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC;YAC9E,CAAC;QACH,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;YACtB,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;gBAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAsC,GAAa,EAAE,OAAO,IAAI,GAAG,IAAI,CAAC,CAAC;YAChG,CAAC;QACH,CAAC,CAAC,CAAC;QAEL,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;YAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,2CAA4C,GAAa,EAAE,OAAO,IAAI,GAAG,IAAI,CAAC,CAAC;QACtG,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
package/dist/tools.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { type RestoreResult, type SnapshotMeta } from "./snapshots.js";
2
- import { type Gene, type GeneListResult, type ArenaRankingsResult, type GeneStats, type LeaderboardEntry, type DeveloperProfile, type ArenaSubmitResult, type InstallResult, type GeneVersionEntry, type McpStatsResult, type GeneReputationResult, type MyReputationResult, type DomainSuggestion } from "./cloud.js";
2
+ import { type ShellResult } from "./local.js";
3
+ import { type Gene, type GeneListResult, type ArenaRankingsResult, type GeneStats, type LeaderboardEntry, type DeveloperProfile, type InstallResult, type GeneVersionEntry, type McpStatsResult, type GeneReputationResult, type MyReputationResult, type DomainSuggestion } from "./cloud.js";
3
4
  export declare function searchGenes(args: {
4
5
  query?: string;
5
6
  domain?: string;
@@ -76,14 +77,20 @@ export interface LogoutResult {
76
77
  message: string;
77
78
  }
78
79
  export declare function logout(): LogoutResult;
80
+ /**
81
+ * Measure a local Gene and submit the measurement to the Arena.
82
+ *
83
+ * Until now this took five numbers from whoever called it and posted them as
84
+ * fitness. Nothing ran; an assistant could name any score it liked and the
85
+ * leaderboard would carry it (ADR-319 D3). The numbers now come from running
86
+ * the Gene, which is why this takes a `gene_name` and not a `gene_id`: a score
87
+ * can only be produced for a Gene that is here to be run.
88
+ */
79
89
  export declare function submitToArena(args: {
80
- gene_id: string;
81
- fitness_value: number;
82
- safety_score: number;
83
- success_rate: number;
84
- latency_score: number;
85
- resource_efficiency: number;
86
- }): Promise<ArenaSubmitResult>;
90
+ gene_name?: string;
91
+ project_root?: string;
92
+ [key: string]: unknown;
93
+ }): ShellResult;
87
94
  export declare function installGeneFromCloud(args: {
88
95
  gene_id: string;
89
96
  project_root?: string;
package/dist/tools.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { listSnapshots, restoreGene } from "./snapshots.js";
2
- import { resolveGenesDir, resolveProjectRoot } from "./local.js";
3
- import { listGenes, getGene, getGeneByContentHash, getArenaRankings, getGeneStatsRpc, getReputationLeaderboard, getDeveloperProfile, arenaSubmitCloud, installGene, listGeneVersions as listGeneVersionsCloud, getMcpStats as getMcpStatsCloud, getGeneReputation as getGeneReputationCloud, getMyReputation as getMyReputationCloud, suggestDomain as suggestDomainCloud, loadCloudConfig, } from "./cloud.js";
2
+ import { resolveGenesDir, resolveProjectRoot, arenaSubmit } from "./local.js";
3
+ import { listGenes, getGene, getGeneByContentHash, getArenaRankings, getGeneStatsRpc, getReputationLeaderboard, getDeveloperProfile, installGene, listGeneVersions as listGeneVersionsCloud, getMcpStats as getMcpStatsCloud, getGeneReputation as getGeneReputationCloud, getMyReputation as getMyReputationCloud, suggestDomain as suggestDomainCloud, loadCloudConfig, } from "./cloud.js";
4
4
  import { loadCredentials, saveCredentials, clearCredentials, generateCodeVerifier, generateCodeChallenge, startOAuthCallbackServer, } from "./auth.js";
5
5
  import { openBrowser } from "./open-browser.js";
6
6
  import { validateGeneName } from "./validate-gene-name.js";
@@ -166,23 +166,46 @@ export function logout() {
166
166
  clearCredentials();
167
167
  return { success: true, message: `Logged out (was: ${existing.user.username} via ${existing.provider}).` };
168
168
  }
169
- function validateScore(name, value) {
170
- const n = Number(value);
171
- if (!Number.isFinite(n) || n < 0 || n > 1) {
172
- throw new Error(`${name} must be a number between 0 and 1, got: ${value}`);
169
+ /**
170
+ * Scores this tool used to accept from its caller. It no longer does — but a
171
+ * caller holding an older tool description will still send them, and a bare
172
+ * schema rejection would not tell it why. Named here so the refusal can.
173
+ */
174
+ const CALLER_SUPPLIED_SCORES = [
175
+ "fitness_value",
176
+ "safety_score",
177
+ "success_rate",
178
+ "latency_score",
179
+ "resource_efficiency",
180
+ ];
181
+ /**
182
+ * Measure a local Gene and submit the measurement to the Arena.
183
+ *
184
+ * Until now this took five numbers from whoever called it and posted them as
185
+ * fitness. Nothing ran; an assistant could name any score it liked and the
186
+ * leaderboard would carry it (ADR-319 D3). The numbers now come from running
187
+ * the Gene, which is why this takes a `gene_name` and not a `gene_id`: a score
188
+ * can only be produced for a Gene that is here to be run.
189
+ */
190
+ export function submitToArena(args) {
191
+ const declared = CALLER_SUPPLIED_SCORES.filter((f) => args[f] !== undefined);
192
+ if (declared.length > 0) {
193
+ throw new Error(`arena_submit no longer accepts scores from the caller (received: ${declared.join(", ")}). ` +
194
+ "A fitness score is a measurement, not a claim: it is now produced by running the Gene in " +
195
+ "the sandbox, and the per-run evidence behind it is published alongside the score so anyone " +
196
+ "can recompute it. Call arena_submit with { gene_name } instead — list_local_genes shows " +
197
+ "what is available locally, install_gene fetches one that is not.");
173
198
  }
174
- return n;
175
- }
176
- export async function submitToArena(args) {
177
- if (!args.gene_id)
178
- throw new Error("gene_id is required. Use search_genes to find gene IDs.");
179
- return arenaSubmitCloud(args.gene_id, {
180
- value: validateScore("fitness_value", args.fitness_value),
181
- safety_score: validateScore("safety_score", args.safety_score),
182
- success_rate: validateScore("success_rate", args.success_rate),
183
- latency_score: validateScore("latency_score", args.latency_score),
184
- resource_efficiency: validateScore("resource_efficiency", args.resource_efficiency),
185
- });
199
+ if (!args.gene_name) {
200
+ if (typeof args.gene_id === "string" && args.gene_id) {
201
+ throw new Error("arena_submit takes gene_name, not gene_id. The score comes from running the Gene, so it can " +
202
+ "only be produced for one that exists locally: run install_gene with that gene_id first, then " +
203
+ "call arena_submit with the name it was installed under.");
204
+ }
205
+ throw new Error("gene_name is required. Use list_local_genes to see locally installed Genes.");
206
+ }
207
+ validateGeneName(args.gene_name);
208
+ return arenaSubmit({ gene_name: args.gene_name, project_root: args.project_root });
186
209
  }
187
210
  export async function installGeneFromCloud(args) {
188
211
  if (!args.gene_id)
package/dist/tools.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.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.16.1",
3
+ "version": "0.18.0",
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",