@mcsherrylabs/pi-meerkat 0.5.0 → 0.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.
Files changed (51) hide show
  1. package/README.md +182 -48
  2. package/dist/announce.d.ts +2 -1
  3. package/dist/announce.d.ts.map +1 -1
  4. package/dist/announce.js +25 -2
  5. package/dist/announce.js.map +1 -1
  6. package/dist/config.d.ts +34 -0
  7. package/dist/config.d.ts.map +1 -0
  8. package/dist/config.js +97 -0
  9. package/dist/config.js.map +1 -0
  10. package/dist/mcp-announce.d.ts +42 -0
  11. package/dist/mcp-announce.d.ts.map +1 -0
  12. package/dist/mcp-announce.js +231 -0
  13. package/dist/mcp-announce.js.map +1 -0
  14. package/dist/mcp-cli.d.ts +3 -0
  15. package/dist/mcp-cli.d.ts.map +1 -0
  16. package/dist/mcp-cli.js +111 -0
  17. package/dist/mcp-cli.js.map +1 -0
  18. package/dist/mcp-config.d.ts +28 -0
  19. package/dist/mcp-config.d.ts.map +1 -0
  20. package/dist/mcp-config.js +104 -0
  21. package/dist/mcp-config.js.map +1 -0
  22. package/dist/mcp-facade.d.ts +20 -0
  23. package/dist/mcp-facade.d.ts.map +1 -0
  24. package/dist/mcp-facade.js +200 -0
  25. package/dist/mcp-facade.js.map +1 -0
  26. package/dist/mcp-upstream.d.ts +42 -0
  27. package/dist/mcp-upstream.d.ts.map +1 -0
  28. package/dist/mcp-upstream.js +151 -0
  29. package/dist/mcp-upstream.js.map +1 -0
  30. package/dist/registry.d.ts +2 -2
  31. package/dist/registry.d.ts.map +1 -1
  32. package/dist/registry.js +4 -2
  33. package/dist/registry.js.map +1 -1
  34. package/dist/target.d.ts +25 -0
  35. package/dist/target.d.ts.map +1 -0
  36. package/dist/target.js +84 -0
  37. package/dist/target.js.map +1 -0
  38. package/dist/tools.d.ts +7 -3
  39. package/dist/tools.d.ts.map +1 -1
  40. package/dist/tools.js +124 -120
  41. package/dist/tools.js.map +1 -1
  42. package/extensions/meerkat.ts +7 -5
  43. package/package.json +15 -7
  44. package/dist/subscription-infra.d.ts +0 -15
  45. package/dist/subscription-infra.d.ts.map +0 -1
  46. package/dist/subscription-infra.js +0 -74
  47. package/dist/subscription-infra.js.map +0 -1
  48. package/dist/subscription-tools.d.ts +0 -29
  49. package/dist/subscription-tools.d.ts.map +0 -1
  50. package/dist/subscription-tools.js +0 -77
  51. package/dist/subscription-tools.js.map +0 -1
@@ -0,0 +1,200 @@
1
+ // Tool-only MCP facade. A catalog is routing authority only after complete discovery succeeds.
2
+ import { createRequire } from "node:module";
3
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
4
+ import { CallToolRequestSchema, ErrorCode, ListToolsRequestSchema, McpError } from "@modelcontextprotocol/sdk/types.js";
5
+ import { createTools } from "./tools.js";
6
+ import { announceViaMcp } from "./mcp-announce.js";
7
+ import { OwnedUpstream, UPSTREAM_START_TIMEOUT_MS } from "./mcp-upstream.js";
8
+ export function createMeerkatFacade(options = {}) {
9
+ const diagnose = options.diagnostic ?? (message => console.error(`meerkat-mcp: ${message}`));
10
+ const { version } = createRequire(import.meta.url)("../package.json");
11
+ const server = new Server({ name: "meerkat", version }, { capabilities: { tools: { listChanged: true } } });
12
+ let upstream;
13
+ let routes = new Map();
14
+ let healthy = false;
15
+ let unavailable = "Upstream unavailable: no trusted operator configuration; run meerkat-mcp setup.";
16
+ let closed = false;
17
+ let revision = 0;
18
+ let refreshing;
19
+ let refreshAgain = false;
20
+ let closing;
21
+ // Existing registry/ProcessorClient reads have their own finite deadlines, but no caller
22
+ // cancellation API. Await them at shutdown too rather than claiming their sockets are gone.
23
+ const active = new Set();
24
+ const lifetime = new AbortController();
25
+ const channel = options.config?.meerkat.channel ?? process.env.REGISTRY_CHANNEL?.trim() ?? "ce.meerkat.announcements";
26
+ const tools = createTools(async (signal, request) => {
27
+ // This invocation captures exactly one session; no proxy can reconnect between sign/submit.
28
+ if (!healthy)
29
+ await refresh(signal);
30
+ signal.throwIfAborted();
31
+ const session = upstream;
32
+ if (!healthy || !session?.isOpen())
33
+ return { kind: "error", stage: "preflight", message: `meerkat_announce refused. ${unavailable}` };
34
+ return announceViaMcp(session, request, { ...options.announceOptions, channel, signal });
35
+ }, () => channel);
36
+ const local = new Map(tools.map(tool => [tool.name, tool]));
37
+ const localDefinitions = tools.map(tool => ({ name: tool.name, description: tool.description,
38
+ inputSchema: tool.parameters }));
39
+ function listResult() {
40
+ return healthy
41
+ ? { tools: [...routes.values(), ...localDefinitions] }
42
+ : { tools: localDefinitions, _meta: { "io.meerkat/upstream": { status: "unavailable", degraded: true, diagnostic: unavailable } } };
43
+ }
44
+ function invalidate(message) {
45
+ revision++;
46
+ healthy = false;
47
+ routes = new Map();
48
+ unavailable = message;
49
+ }
50
+ async function notify() {
51
+ if (!closed) {
52
+ try {
53
+ await server.notification({ method: "notifications/tools/list_changed" });
54
+ }
55
+ catch { /* A downstream close is handled by the process owner. */ }
56
+ }
57
+ }
58
+ function changed() {
59
+ invalidate("Upstream unavailable: catalog changed; complete refresh required.");
60
+ if (refreshing)
61
+ refreshAgain = true;
62
+ else
63
+ void refresh().then(notify);
64
+ }
65
+ async function discover(signal) {
66
+ // Ordinary refresh is speculative: retain the last complete healthy routing snapshot
67
+ // until atomic replacement. Failures, actual list changes and session loss invalidate it.
68
+ const bound = AbortSignal.any([lifetime.signal, AbortSignal.timeout(UPSTREAM_START_TIMEOUT_MS), ...(signal ? [signal] : [])]);
69
+ const generation = revision;
70
+ let current = upstream;
71
+ try {
72
+ bound.throwIfAborted();
73
+ if (!current?.isOpen()) {
74
+ if (current)
75
+ await current.close();
76
+ if (!options.upstreamFactory && !options.config)
77
+ throw new Error("no trusted operator configuration; run meerkat-mcp setup");
78
+ current = options.upstreamFactory?.() ?? new OwnedUpstream(options.config);
79
+ upstream = current;
80
+ const selected = current;
81
+ selected.onListChanged = changed;
82
+ selected.onClosed = () => {
83
+ if (upstream !== selected || closed)
84
+ return;
85
+ invalidate("Upstream unavailable: owned session closed; interrupted writes will not be resumed or replayed.");
86
+ void notify();
87
+ };
88
+ await selected.connect(bound);
89
+ }
90
+ const discovered = new Map();
91
+ const cursors = new Set();
92
+ let cursor;
93
+ do {
94
+ bound.throwIfAborted();
95
+ const page = await current.listTools(cursor, bound);
96
+ for (const tool of page.tools) {
97
+ if (local.has(tool.name) || discovered.has(tool.name))
98
+ throw new Error(`Tool name collision: ${tool.name}`);
99
+ discovered.set(tool.name, tool);
100
+ }
101
+ cursor = page.nextCursor;
102
+ if (cursor !== undefined) {
103
+ if (cursors.has(cursor))
104
+ throw new Error("Upstream tools/list repeated a pagination cursor");
105
+ cursors.add(cursor);
106
+ }
107
+ } while (cursor !== undefined);
108
+ bound.throwIfAborted();
109
+ if (!current.isOpen() || generation !== revision)
110
+ throw new Error("upstream session or catalog changed during discovery");
111
+ routes = discovered;
112
+ healthy = true;
113
+ }
114
+ catch (error) {
115
+ invalidate(`Upstream unavailable: ${error instanceof Error ? error.message : String(error)}. Local-only degraded catalog; writes are not replayed.`);
116
+ diagnose(unavailable);
117
+ // Retire the failed session. Only a later explicit discovery may establish a fresh one.
118
+ if (upstream === current)
119
+ upstream = undefined;
120
+ await current?.close();
121
+ }
122
+ return listResult();
123
+ }
124
+ function refresh(signal) {
125
+ if (closed)
126
+ return Promise.resolve(listResult());
127
+ if (!refreshing) {
128
+ refreshing = discover(signal).finally(() => {
129
+ refreshing = undefined;
130
+ if (refreshAgain && !closed) {
131
+ refreshAgain = false;
132
+ void refresh().then(notify);
133
+ }
134
+ });
135
+ }
136
+ return refreshing;
137
+ }
138
+ server.setRequestHandler(ListToolsRequestSchema, async (_request, extra) => {
139
+ const wasHealthy = healthy;
140
+ const result = await refresh(extra.signal);
141
+ extra.signal.throwIfAborted();
142
+ if (!wasHealthy && healthy)
143
+ void notify();
144
+ return result;
145
+ });
146
+ server.setRequestHandler(CallToolRequestSchema, async (request, extra) => {
147
+ const running = (async () => {
148
+ extra.signal.throwIfAborted();
149
+ const { name } = request.params;
150
+ const tool = local.get(name);
151
+ if (tool)
152
+ return localResult(await tool.run(extra.signal, request.params.arguments ?? {}));
153
+ if (!healthy || !routes.has(name) || !upstream?.isOpen())
154
+ throw new McpError(ErrorCode.InvalidParams, `Unknown or undiscovered tool '${name}'.${healthy ? "" : ` ${unavailable}`}`);
155
+ // Forward supported request/result fields intact. No owned orchestration parsing or retries.
156
+ return upstream.callToolRequest(request.params, extra.signal);
157
+ })();
158
+ active.add(running);
159
+ try {
160
+ return await running;
161
+ }
162
+ finally {
163
+ active.delete(running);
164
+ }
165
+ });
166
+ function localResult(result) {
167
+ const kind = result && typeof result === "object" ? result.kind : undefined;
168
+ return { content: [{ type: "text", text: JSON.stringify(result) }],
169
+ ...(kind === "error" || kind === "unknown" || kind === "refused" || kind === "misconfigured" || kind === "unreachable" ? { isError: true } : {}) };
170
+ }
171
+ function close() {
172
+ if (closing)
173
+ return closing;
174
+ closed = true;
175
+ lifetime.abort();
176
+ invalidate("Upstream unavailable: facade closed.");
177
+ return closing = (async () => {
178
+ try {
179
+ await refreshing;
180
+ }
181
+ finally {
182
+ try {
183
+ await upstream?.close();
184
+ }
185
+ finally {
186
+ try {
187
+ await server.close();
188
+ }
189
+ finally {
190
+ await Promise.allSettled([...active]);
191
+ }
192
+ }
193
+ }
194
+ })();
195
+ }
196
+ server.onclose = () => { void close().catch(error => diagnose(`Cleanup failed: ${String(error)}`)); };
197
+ return { server, close };
198
+ }
199
+ export const createFacade = createMeerkatFacade;
200
+ //# sourceMappingURL=mcp-facade.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-facade.js","sourceRoot":"","sources":["../src/mcp-facade.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import type { CallToolRequest, CallToolResult, ListToolsResult } from "@modelcontextprotocol/sdk/types.js";
2
+ import type { FacadeConfig } from "./mcp-config.js";
3
+ export declare const EVOLVER_MCP_VERSION = "0.15.0";
4
+ export declare const UPSTREAM_START_TIMEOUT_MS = 15000;
5
+ export declare const UPSTREAM_CALL_TIMEOUT_MS = 60000;
6
+ /** Resolve package metadata through this installed dependency tree, never PATH/global/npx/source. */
7
+ export declare function resolveUpstreamBin(): Promise<string>;
8
+ export interface UpstreamSession {
9
+ connect(signal?: AbortSignal): Promise<void>;
10
+ listTools(cursor?: string, signal?: AbortSignal): Promise<ListToolsResult>;
11
+ callTool(name: string, args: Record<string, unknown>, signal?: AbortSignal): Promise<CallToolResult>;
12
+ callToolRequest(params: CallToolRequest["params"], signal?: AbortSignal): Promise<CallToolResult>;
13
+ isOpen(): boolean;
14
+ supportsListChanged(): boolean;
15
+ onListChanged?: () => void;
16
+ onClosed?: () => void;
17
+ close(): Promise<void>;
18
+ }
19
+ export declare class OwnedUpstream implements UpstreamSession {
20
+ private readonly config;
21
+ private client?;
22
+ private transport?;
23
+ private open;
24
+ private closing?;
25
+ private connecting?;
26
+ private disposed?;
27
+ private snapshotDirectory?;
28
+ private readonly startupAbort;
29
+ onListChanged?: () => void;
30
+ onClosed?: () => void;
31
+ constructor(config: FacadeConfig);
32
+ connect(signal?: AbortSignal): Promise<void>;
33
+ private start;
34
+ isOpen(): boolean;
35
+ supportsListChanged(): boolean;
36
+ listTools(cursor?: string, signal?: AbortSignal): Promise<ListToolsResult>;
37
+ callTool(name: string, args: Record<string, unknown>, signal?: AbortSignal): Promise<CallToolResult>;
38
+ callToolRequest(params: CallToolRequest["params"], signal?: AbortSignal): Promise<CallToolResult>;
39
+ close(): Promise<void>;
40
+ private dispose;
41
+ }
42
+ //# sourceMappingURL=mcp-upstream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-upstream.d.ts","sourceRoot":"","sources":["../src/mcp-upstream.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC3G,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAGpD,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAC5C,eAAO,MAAM,yBAAyB,QAAS,CAAC;AAChD,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAE/C,qGAAqG;AACrG,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,CAgB1D;AAuBD,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC3E,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IACrG,eAAe,CAAC,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAClG,MAAM,IAAI,OAAO,CAAC;IAClB,mBAAmB,IAAI,OAAO,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,qBAAa,aAAc,YAAW,eAAe;IAWvC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAVnC,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,SAAS,CAAC,CAA8B;IAChD,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,OAAO,CAAC,CAAgB;IAChC,OAAO,CAAC,UAAU,CAAC,CAAgB;IACnC,OAAO,CAAC,QAAQ,CAAC,CAAgB;IACjC,OAAO,CAAC,iBAAiB,CAAC,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAyB;IACtD,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;gBACO,MAAM,EAAE,YAAY;IAEjD,OAAO,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;YAK9B,KAAK;IA8BnB,MAAM,IAAI,OAAO;IACjB,mBAAmB,IAAI,OAAO;IACxB,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC;IAMhF,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC;IAG9F,eAAe,CAAC,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC;IASvG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQtB,OAAO,CAAC,OAAO;CAUhB"}
@@ -0,0 +1,151 @@
1
+ // One owned child/session per facade. Only this child receives the trusted key reference.
2
+ import { createRequire } from "node:module";
3
+ import { mkdtemp, readFile, realpath, rm, stat, writeFile } from "node:fs/promises";
4
+ import { dirname, isAbsolute, join, relative, resolve } from "node:path";
5
+ import { tmpdir } from "node:os";
6
+ import { Client } from "@modelcontextprotocol/sdk/client/index.js";
7
+ import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
8
+ import { CallToolResultSchema, ToolListChangedNotificationSchema } from "@modelcontextprotocol/sdk/types.js";
9
+ import { upstreamEnvironment } from "./mcp-config.js";
10
+ export const EVOLVER_MCP_VERSION = "0.15.0";
11
+ export const UPSTREAM_START_TIMEOUT_MS = 15_000;
12
+ export const UPSTREAM_CALL_TIMEOUT_MS = 60_000;
13
+ /** Resolve package metadata through this installed dependency tree, never PATH/global/npx/source. */
14
+ export async function resolveUpstreamBin() {
15
+ const require = createRequire(import.meta.url);
16
+ const manifestPath = require.resolve("@mcsherrylabs/evolver-mcp/package.json");
17
+ const manifest = JSON.parse(await readFile(manifestPath, "utf8"));
18
+ if (manifest.name !== "@mcsherrylabs/evolver-mcp" || manifest.version !== EVOLVER_MCP_VERSION)
19
+ throw new Error(`Expected installed @mcsherrylabs/evolver-mcp@${EVOLVER_MCP_VERSION}`);
20
+ const bin = manifest.bin?.["evolver-mcp"];
21
+ if (typeof bin !== "string" || isAbsolute(bin))
22
+ throw new Error("Installed dependency has no relative evolver-mcp bin");
23
+ const root = await realpath(dirname(manifestPath));
24
+ const target = await realpath(resolve(root, bin));
25
+ const rel = relative(root, target);
26
+ if (!rel || rel === ".." || rel.startsWith("../") || isAbsolute(rel) || !(await stat(target)).isFile())
27
+ throw new Error("Installed dependency bin escapes its package or is not a regular file");
28
+ return target;
29
+ }
30
+ /** SDK 1.32.1 escalates termination but its close() does not await the final SIGKILL exit.
31
+ * Await the actual transport close event too, so facade shutdown never leaves its child behind. */
32
+ class AwaitedStdioClientTransport extends StdioClientTransport {
33
+ childStarted = false;
34
+ markExited;
35
+ exited = new Promise(resolve => { this.markExited = resolve; });
36
+ closing;
37
+ async start() {
38
+ const onclose = this.onclose;
39
+ this.onclose = () => { this.markExited(); onclose?.(); };
40
+ await super.start();
41
+ this.childStarted = true;
42
+ }
43
+ close() {
44
+ return this.closing ??= (async () => {
45
+ await super.close();
46
+ if (this.childStarted)
47
+ await this.exited;
48
+ })();
49
+ }
50
+ }
51
+ export class OwnedUpstream {
52
+ config;
53
+ client;
54
+ transport;
55
+ open = false;
56
+ closing;
57
+ connecting;
58
+ disposed;
59
+ snapshotDirectory;
60
+ startupAbort = new AbortController();
61
+ onListChanged;
62
+ onClosed;
63
+ constructor(config) {
64
+ this.config = config;
65
+ }
66
+ connect(signal) {
67
+ if (this.connecting || this.closing)
68
+ return Promise.reject(new Error("Upstream session cannot be restarted"));
69
+ const bound = AbortSignal.any([this.startupAbort.signal, AbortSignal.timeout(UPSTREAM_START_TIMEOUT_MS), ...(signal ? [signal] : [])]);
70
+ return this.connecting = this.start(bound);
71
+ }
72
+ async start(signal) {
73
+ try {
74
+ signal.throwIfAborted();
75
+ const bin = await resolveUpstreamBin();
76
+ signal.throwIfAborted();
77
+ this.snapshotDirectory = await mkdtemp(join(tmpdir(), "meerkat-mcp-"));
78
+ const snapshotPath = join(this.snapshotDirectory, "upstream.json");
79
+ // Upstream must not reread mutable operator JSON on lazy startup/recovery. This private
80
+ // snapshot contains launch authority/trust references only, never key or signer bytes.
81
+ await writeFile(snapshotPath, JSON.stringify({ url: this.config.url, identity: this.config.identity, tls: this.config.tls }), { mode: 0o600, flag: "wx" });
82
+ signal.throwIfAborted();
83
+ const client = this.client = new Client({ name: "meerkat-owned-upstream", version: "1" }, { capabilities: {} });
84
+ const transport = this.transport = new AwaitedStdioClientTransport({
85
+ command: process.execPath, args: [bin, "--config", snapshotPath],
86
+ env: upstreamEnvironment(this.config), stderr: "inherit", cwd: this.snapshotDirectory,
87
+ });
88
+ client.onclose = () => { this.open = false; this.onClosed?.(); };
89
+ client.onerror = () => { };
90
+ client.setNotificationHandler(ToolListChangedNotificationSchema, () => {
91
+ if (this.supportsListChanged())
92
+ this.onListChanged?.();
93
+ });
94
+ await client.connect(transport, { signal, timeout: UPSTREAM_START_TIMEOUT_MS, maxTotalTimeout: UPSTREAM_START_TIMEOUT_MS });
95
+ signal.throwIfAborted();
96
+ this.open = true;
97
+ }
98
+ catch (error) {
99
+ await this.dispose();
100
+ throw error;
101
+ }
102
+ }
103
+ isOpen() { return this.open && !this.closing; }
104
+ supportsListChanged() { return this.client?.getServerCapabilities()?.tools?.listChanged === true; }
105
+ async listTools(cursor, signal) {
106
+ if (!this.isOpen())
107
+ throw new Error("Upstream session is closed");
108
+ return this.client.listTools(cursor === undefined ? {} : { cursor }, {
109
+ signal, timeout: UPSTREAM_START_TIMEOUT_MS, maxTotalTimeout: UPSTREAM_START_TIMEOUT_MS,
110
+ });
111
+ }
112
+ callTool(name, args, signal) {
113
+ return this.callToolRequest({ name, arguments: args }, signal);
114
+ }
115
+ async callToolRequest(params, signal) {
116
+ signal?.throwIfAborted();
117
+ if (!this.isOpen())
118
+ throw new Error("Upstream session is definitively closed before send");
119
+ // SDK's declaration retains a compatibility/task union even with this explicit ordinary
120
+ // result schema. Runtime validation is SDK-owned; do not parse/rewrite forwarded results.
121
+ return await this.client.callTool(params, CallToolResultSchema, {
122
+ signal, timeout: UPSTREAM_CALL_TIMEOUT_MS, maxTotalTimeout: UPSTREAM_CALL_TIMEOUT_MS,
123
+ });
124
+ }
125
+ close() {
126
+ this.open = false;
127
+ this.startupAbort.abort();
128
+ return this.closing ??= (async () => {
129
+ await this.connecting?.catch(() => { });
130
+ await this.dispose();
131
+ })();
132
+ }
133
+ dispose() {
134
+ this.open = false;
135
+ return this.disposed ??= (async () => {
136
+ try {
137
+ await this.client?.close();
138
+ }
139
+ finally {
140
+ try {
141
+ await this.transport?.close();
142
+ }
143
+ finally {
144
+ if (this.snapshotDirectory)
145
+ await rm(this.snapshotDirectory, { recursive: true, force: true });
146
+ }
147
+ }
148
+ })();
149
+ }
150
+ }
151
+ //# sourceMappingURL=mcp-upstream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-upstream.js","sourceRoot":"","sources":["../src/mcp-upstream.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { ToolResult } from "@mcsherrylabs/pi-evolver";
1
+ import type { ToolResult } from "@mcsherrylabs/evolver-core";
2
2
  /** Where the event processor's read server is — the registry's routes and the event inbox are
3
3
  * both served there. Its own variable, NOT derived from the chain URL: the processor is a
4
4
  * separate process from the node it drains, and in the agent deployments it is a separate
@@ -34,7 +34,7 @@ export declare function inboxSummary(): Promise<ToolResult<unknown>>;
34
34
  * The SDK still reads the complete original; this tool never copies it into agent context.
35
35
  * bodyBytes is the original decoded byte length, bodyPreview.complete explicitly distinguishes
36
36
  * full small bodies from truncated display, and null is unavailable/evicted rather than empty.
37
- * A malformed position is a refusal of the argument (`partial`, as pi-evolver's verbs refuse
37
+ * A malformed position is a refusal of the argument (`partial`, as the chain verbs refuse
38
38
  * arguments), never `unreachable`, which would say "retry".
39
39
  */
40
40
  export declare function inboxPage(ledgerId: string, after: string | undefined, limit: number | undefined): Promise<ToolResult<unknown>>;
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAK3D;;;;;;;uBAOuB;AACvB,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,SAAS,CAInF;AAiCD;+EAC+E;AAC/E,eAAO,MAAM,OAAO,QAAO,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CACV,CAAC;AAE7C,eAAO,MAAM,QAAQ,GAAI,GAAG,MAAM,EAAE,OAAO,MAAM,EAAE,QAAQ,MAAM,KAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAQ5F,CAAC;AAEJ,eAAO,MAAM,OAAO,GAAI,UAAU,MAAM,KAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CACW,CAAC;AAElF;;;;mGAImG;AACnG,eAAO,MAAM,MAAM,GAAI,UAAU,MAAM,KAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAC4B,CAAC;AAElG;;cAEc;AACd,eAAO,MAAM,UAAU,QAAO,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CACP,CAAC;AASnD,gGAAgG;AAChG,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC,0FAA0F;AAC1F,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAWvC,wBAAsB,YAAY,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAMjE;AAED;;;;;;;;GAQG;AACH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAqCpI"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAO7D;;;;;;;uBAOuB;AACvB,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,SAAS,CAInF;AAiCD;+EAC+E;AAC/E,eAAO,MAAM,OAAO,QAAO,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CACV,CAAC;AAE7C,eAAO,MAAM,QAAQ,GAAI,GAAG,MAAM,EAAE,OAAO,MAAM,EAAE,QAAQ,MAAM,KAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAQ5F,CAAC;AAEJ,eAAO,MAAM,OAAO,GAAI,UAAU,MAAM,KAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CACW,CAAC;AAElF;;;;mGAImG;AACnG,eAAO,MAAM,MAAM,GAAI,UAAU,MAAM,KAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAC4B,CAAC;AAElG;;cAEc;AACd,eAAO,MAAM,UAAU,QAAO,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CACP,CAAC;AASnD,gGAAgG;AAChG,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC,0FAA0F;AAC1F,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAWvC,wBAAsB,YAAY,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAMjE;AAED;;;;;;;;GAQG;AACH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAqCpI"}
package/dist/registry.js CHANGED
@@ -10,7 +10,9 @@
10
10
  // describe; it did not and cannot vouch for what it says. `inclusion is not endorsement` is on
11
11
  // every response for that reason, and the tool descriptions repeat it because the model is the
12
12
  // component that has to act on it.
13
- import { misconfigured } from "@mcsherrylabs/pi-evolver";
13
+ // This result constructor is intentionally local: importing core's root at runtime also loads
14
+ // its signing graph. The stdio facade's independent reads need neither a signer nor a key.
15
+ const misconfigured = (what, fix) => ({ kind: "misconfigured", what, fix });
14
16
  import { ProcessorClient } from "@mcsherrylabs/evolver-client/processor-client";
15
17
  /** Where the event processor's read server is — the registry's routes and the event inbox are
16
18
  * both served there. Its own variable, NOT derived from the chain URL: the processor is a
@@ -117,7 +119,7 @@ export async function inboxSummary() {
117
119
  * The SDK still reads the complete original; this tool never copies it into agent context.
118
120
  * bodyBytes is the original decoded byte length, bodyPreview.complete explicitly distinguishes
119
121
  * full small bodies from truncated display, and null is unavailable/evicted rather than empty.
120
- * A malformed position is a refusal of the argument (`partial`, as pi-evolver's verbs refuse
122
+ * A malformed position is a refusal of the argument (`partial`, as the chain verbs refuse
121
123
  * arguments), never `unreachable`, which would say "retry".
122
124
  */
123
125
  export async function inboxPage(ledgerId, after, limit) {
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { NodeClient } from "@mcsherrylabs/evolver-client";
2
+ import type { Signer } from "@mcsherrylabs/evolver-client";
3
+ import type { ToolResult } from "@mcsherrylabs/evolver-core";
4
+ import type { EvolverConfig } from "./config.js";
5
+ export interface ChainTarget {
6
+ readonly config: EvolverConfig;
7
+ readonly client: NodeClient;
8
+ /** `local` or `remote`. A HEURISTIC derived from the URL, not a fact. */
9
+ readonly locality: "local" | "remote";
10
+ /** Built once from the configured key. The private half is closed over by the signer. */
11
+ readonly signer: Signer;
12
+ /** A plain GET against the node, for the handful of reads the client does not wrap. */
13
+ getJson(path: string): Promise<unknown>;
14
+ }
15
+ export type TargetResult = {
16
+ readonly ok: true;
17
+ readonly target: ChainTarget;
18
+ } | {
19
+ readonly ok: false;
20
+ readonly error: string;
21
+ };
22
+ export declare function createTarget(config: EvolverConfig): Promise<TargetResult>;
23
+ /** Run a client call and turn ANY failure into `unreachable`, naming the chain tried. */
24
+ export declare function safely<T>(target: ChainTarget, _what: string, call: () => Promise<T>): Promise<ToolResult<T>>;
25
+ //# sourceMappingURL=target.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"target.d.ts","sourceRoot":"","sources":["../src/target.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,UAAU,EAAqC,MAAM,8BAA8B,CAAC;AAC7F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAG3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAc,MAAM,aAAa,CAAC;AAG7D,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,yEAAyE;IACzE,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,CAAC;IACtC,yFAAyF;IACzF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,uFAAuF;IACvF,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACzC;AAeD,MAAM,MAAM,YAAY,GACpB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAAE,GACnD;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AA6BnD,wBAAsB,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAqB/E;AAED,yFAAyF;AACzF,wBAAsB,MAAM,CAAC,CAAC,EAC5B,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACrB,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAMxB"}
package/dist/target.js ADDED
@@ -0,0 +1,84 @@
1
+ // The chain target: which chain, reached how, and the wrapper that keeps the failure taxonomy
2
+ // intact.
3
+ //
4
+ // ⚠️ THIS IS pi-meerkat'S OWN WIRING, NOT core's. Core has no `ChainTarget`: it is a
5
+ // dependency-injected session API (each signing verb takes a `deps` object carrying `signer`,
6
+ // `identity`, `reads` and `submitTx`), and it loads its key from the environment only. pi-meerkat
7
+ // needs a single long-lived target — client + signer + locality + a plain `getJson` — built from
8
+ // its two-file config, so those pieces live here. The failure taxonomy it answers in
9
+ // (`ToolResult`, `unreachableFrom`) and the TLS-trust shape (`TlsOptions`) come from core.
10
+ import { NodeClient, blsDefaultSigner, edDefaultSigner } from "@mcsherrylabs/evolver-client";
11
+ import { existsSync, readFileSync } from "node:fs";
12
+ import { unreachableFrom } from "@mcsherrylabs/evolver-core";
13
+ import { isLocal } from "./config.js";
14
+ /** The key file holds the raw private key as base64 — nothing else. Read once at construction. */
15
+ function loadSigner(path, keyType) {
16
+ if (!existsSync(path))
17
+ return { ok: false, error: `signing key not found at ${path}` };
18
+ let raw;
19
+ try {
20
+ raw = Uint8Array.from(Buffer.from(readFileSync(path, "utf8").trim(), "base64"));
21
+ }
22
+ catch (e) {
23
+ return { ok: false, error: `signing key at ${path} is not readable as base64: ${e.message}` };
24
+ }
25
+ if (raw.length === 0)
26
+ return { ok: false, error: `signing key at ${path} decoded to nothing` };
27
+ return { ok: true, signer: keyType === "bls" ? blsDefaultSigner(raw, "") : edDefaultSigner(raw, "") };
28
+ }
29
+ /** A TLS option that cannot be honoured is a REFUSAL, never a silent no-op. */
30
+ async function resolveFetch(tls) {
31
+ if (!tls || (tls.insecure !== true && tls.caFile === undefined))
32
+ return { ok: true, fetch };
33
+ try {
34
+ const spec = "undici";
35
+ const undici = (await import(spec));
36
+ const agent = new undici.Agent({
37
+ connect: { rejectUnauthorized: tls.insecure !== true, ...(tls.caFile ? { ca: tls.caFile } : {}) },
38
+ });
39
+ const withDispatcher = (input, init) => fetch(input, { ...(init ?? {}), dispatcher: agent });
40
+ return { ok: true, fetch: withDispatcher };
41
+ }
42
+ catch {
43
+ return {
44
+ ok: false,
45
+ error: "`tls` is configured (insecure or caFile) but this package cannot honour it: no HTTP " +
46
+ "dispatcher is available to apply it. Refusing rather than connecting on terms other " +
47
+ "than the ones configured. Either reach the node through a reverse proxy presenting an " +
48
+ "ordinary trusted certificate, or add a dispatcher dependency to this package.",
49
+ };
50
+ }
51
+ }
52
+ export async function createTarget(config) {
53
+ const f = await resolveFetch(config.tls);
54
+ if (!f.ok)
55
+ return { ok: false, error: f.error };
56
+ const s = loadSigner(config.keyLocation.path, config.keyLocation.keyType);
57
+ if (!s.ok)
58
+ return { ok: false, error: s.error };
59
+ return {
60
+ ok: true,
61
+ target: {
62
+ config,
63
+ client: new NodeClient({ baseUrl: config.url, fetch: f.fetch }),
64
+ locality: isLocal(config.url) ? "local" : "remote",
65
+ signer: s.signer,
66
+ getJson: async (path) => {
67
+ const res = await f.fetch(config.url.replace(/\/$/, "") + path, { headers: { Accept: "application/json" } });
68
+ if (!res.ok)
69
+ throw new Error(`GET ${path}: HTTP ${res.status}`);
70
+ return res.json();
71
+ },
72
+ },
73
+ };
74
+ }
75
+ /** Run a client call and turn ANY failure into `unreachable`, naming the chain tried. */
76
+ export async function safely(target, _what, call) {
77
+ try {
78
+ return { kind: "ok", value: await call() };
79
+ }
80
+ catch (e) {
81
+ return unreachableFrom(e, target.config.url);
82
+ }
83
+ }
84
+ //# sourceMappingURL=target.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"target.js","sourceRoot":"","sources":["../src/target.ts"],"names":[],"mappings":"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"}