@tempo-ai/mcp 0.0.110-staging.1 → 0.0.110
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/bin.js +1 -1
- package/dist/{call-YN2A4CY2.js → call-OOXRQ7JW.js} +3 -3
- package/dist/call-OOXRQ7JW.js.map +1 -0
- package/dist/{chunk-YOZTCQCS.js → chunk-QH27SS5F.js} +4 -4
- package/dist/index.js +1 -1
- package/dist/{serve-NOLM3U5F.js → serve-FHROXQCM.js} +904 -472
- package/dist/serve-FHROXQCM.js.map +1 -0
- package/package.json +2 -1
- package/dist/call-YN2A4CY2.js.map +0 -1
- package/dist/serve-NOLM3U5F.js.map +0 -1
- /package/dist/{chunk-YOZTCQCS.js.map → chunk-QH27SS5F.js.map} +0 -0
package/dist/bin.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { createRequire as __tempoCreateRequire } from 'node:module'; const require = __tempoCreateRequire(import.meta.url);
|
|
3
3
|
import {
|
|
4
4
|
run
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-QH27SS5F.js";
|
|
6
6
|
import "./chunk-3J3V3CVG.js";
|
|
7
7
|
import "./chunk-WRI3HTCJ.js";
|
|
8
8
|
|
|
@@ -9,8 +9,8 @@ import "./chunk-WRI3HTCJ.js";
|
|
|
9
9
|
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
10
10
|
import { InMemoryTransport } from "@modelcontextprotocol/sdk/inMemory.js";
|
|
11
11
|
async function connectAggregate(options) {
|
|
12
|
-
const { createTempoAggregate } = await import("./serve-
|
|
13
|
-
const handle = await createTempoAggregate(options);
|
|
12
|
+
const { createTempoAggregate } = await import("./serve-FHROXQCM.js");
|
|
13
|
+
const handle = await createTempoAggregate(options, { stageDocuments: false });
|
|
14
14
|
const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
|
|
15
15
|
const client = new Client({ name: "tempo-mcp-cli", version: "0" });
|
|
16
16
|
await handle.aggregate.connect(serverTransport);
|
|
@@ -128,4 +128,4 @@ export {
|
|
|
128
128
|
runCall,
|
|
129
129
|
runTools
|
|
130
130
|
};
|
|
131
|
-
//# sourceMappingURL=call-
|
|
131
|
+
//# sourceMappingURL=call-OOXRQ7JW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/call.ts"],"sourcesContent":["/**\n * `tempo-mcp tools` and `tempo-mcp call` — the universal CLI surface\n * (TEM-2121) for hosts that cannot attach an MCP server at all (Codex\n * cloud has no MCP support; Grok Bot attaches remote-URL servers only).\n * Any agent with a terminal drives the EXACT same pipeline the MCP server\n * exposes — same aggregator, explicit orgId/projectId scoping, manifest\n * gating, canvas hooks — through two generic commands:\n *\n * tempo-mcp tools [--schemas] [--toolsets a,b] [--readonly]\n * tempo-mcp call <tool> --json '{\"orgId\": \"...\", ...}'\n *\n * An in-memory MCP client is connected to the same aggregate `runServe`\n * would put on stdio, so there is no per-tool code and no second code\n * path to drift.\n */\nimport { Client } from \"@modelcontextprotocol/sdk/client/index.js\";\nimport { InMemoryTransport } from \"@modelcontextprotocol/sdk/inMemory.js\";\nimport { parseServeArgs, type ServeOptions } from \"./config.ts\";\nimport { ensureCliAuth } from \"./cli-auth.ts\";\n\ninterface ConnectedAggregate {\n client: Client;\n dispose: () => Promise<void>;\n}\n\nasync function connectAggregate(\n options: ServeOptions,\n): Promise<ConnectedAggregate> {\n const { createTempoAggregate } = await import(\"./serve.ts\");\n // Each CLI invocation ends after one call; continuations cannot reuse a cache.\n const handle = await createTempoAggregate(options, { stageDocuments: false });\n const [clientTransport, serverTransport] =\n InMemoryTransport.createLinkedPair();\n const client = new Client({ name: \"tempo-mcp-cli\", version: \"0\" });\n await handle.aggregate.connect(serverTransport);\n await client.connect(clientTransport);\n return {\n client,\n dispose: async () => {\n await client.close();\n await handle.dispose();\n },\n };\n}\n\n/** Split our own flags from the serve-shaping flags shared with `serve`. */\nfunction extractFlag(args: string[], flag: string): { present: boolean; rest: string[] } {\n const rest = args.filter((a) => a !== flag);\n return { present: rest.length !== args.length, rest };\n}\n\nexport async function runTools(args: string[]): Promise<number> {\n const { present: withSchemas, rest } = extractFlag(args, \"--schemas\");\n const options = parseServeArgs(rest);\n if (\"error\" in options) {\n console.error(options.error);\n return 1;\n }\n\n await ensureCliAuth();\n const { client, dispose } = await connectAggregate(options);\n try {\n const { tools } = await client.listTools();\n const rows = tools.map((tool) =>\n withSchemas\n ? {\n name: tool.name,\n description: tool.description,\n inputSchema: tool.inputSchema,\n }\n : { name: tool.name, description: tool.description },\n );\n console.log(JSON.stringify({ tools: rows }, null, 2));\n return 0;\n } finally {\n await dispose();\n }\n}\n\nexport async function runCall(args: string[]): Promise<number> {\n const [toolName, ...rest] = args;\n if (!toolName || toolName.startsWith(\"--\")) {\n console.error(\n `Usage: tempo-mcp call <tool> --json '{\"orgId\": \"...\", ...}'\\nDiscover tools and their schemas with \\`tempo-mcp tools --schemas\\`.`,\n );\n return 1;\n }\n\n let jsonArg: string | null = null;\n const serveFlags: string[] = [];\n for (let i = 0; i < rest.length; i++) {\n if (rest[i] === \"--json\") {\n jsonArg = rest[++i] ?? null;\n } else {\n serveFlags.push(rest[i]);\n }\n }\n let toolArgs: Record<string, unknown> = {};\n if (jsonArg != null) {\n if (jsonArg === \"-\") {\n jsonArg = await readStdin();\n }\n try {\n const parsed = JSON.parse(jsonArg) as unknown;\n if (parsed === null || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n console.error(\"--json must be a JSON object of tool arguments\");\n return 1;\n }\n toolArgs = parsed as Record<string, unknown>;\n } catch (err) {\n console.error(\n `--json is not valid JSON: ${err instanceof Error ? err.message : String(err)}`,\n );\n return 1;\n }\n }\n\n const options = parseServeArgs(serveFlags);\n if (\"error\" in options) {\n console.error(options.error);\n return 1;\n }\n\n await ensureCliAuth();\n const { client, dispose } = await connectAggregate(options);\n try {\n const result = await client.callTool({\n name: toolName,\n arguments: toolArgs,\n });\n const content = Array.isArray(result.content) ? result.content : [];\n for (const block of content) {\n if (block.type === \"text\") {\n console.log(block.text);\n } else {\n console.log(JSON.stringify(block));\n }\n }\n return result.isError ? 1 : 0;\n } finally {\n await dispose();\n }\n}\n\nfunction readStdin(): Promise<string> {\n return new Promise((resolve, reject) => {\n const chunks: Buffer[] = [];\n process.stdin.on(\"data\", (chunk) => chunks.push(Buffer.from(chunk)));\n process.stdin.on(\"end\", () =>\n resolve(Buffer.concat(chunks).toString(\"utf8\")),\n );\n process.stdin.on(\"error\", reject);\n });\n}\n"],"mappings":"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","names":[]}
|
|
@@ -157,7 +157,7 @@ async function run(argv) {
|
|
|
157
157
|
process.stderr.write(USAGE);
|
|
158
158
|
return 1;
|
|
159
159
|
}
|
|
160
|
-
const { runServe } = await import("./serve-
|
|
160
|
+
const { runServe } = await import("./serve-FHROXQCM.js");
|
|
161
161
|
return await runServe(options);
|
|
162
162
|
}
|
|
163
163
|
switch (subcommand) {
|
|
@@ -172,11 +172,11 @@ async function run(argv) {
|
|
|
172
172
|
return await runToken(rest);
|
|
173
173
|
}
|
|
174
174
|
case "tools": {
|
|
175
|
-
const { runTools } = await import("./call-
|
|
175
|
+
const { runTools } = await import("./call-OOXRQ7JW.js");
|
|
176
176
|
return await runTools(rest);
|
|
177
177
|
}
|
|
178
178
|
case "call": {
|
|
179
|
-
const { runCall } = await import("./call-
|
|
179
|
+
const { runCall } = await import("./call-OOXRQ7JW.js");
|
|
180
180
|
return await runCall(rest);
|
|
181
181
|
}
|
|
182
182
|
default:
|
|
@@ -195,4 +195,4 @@ async function run(argv) {
|
|
|
195
195
|
export {
|
|
196
196
|
run
|
|
197
197
|
};
|
|
198
|
-
//# sourceMappingURL=chunk-
|
|
198
|
+
//# sourceMappingURL=chunk-QH27SS5F.js.map
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire as __tempoCreateRequire } from 'node:module'; const require = __tempoCreateRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
run
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-QH27SS5F.js";
|
|
5
5
|
import "./chunk-3J3V3CVG.js";
|
|
6
6
|
import "./chunk-WRI3HTCJ.js";
|
|
7
7
|
export {
|