@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 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-YOZTCQCS.js";
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-NOLM3U5F.js");
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-YN2A4CY2.js.map
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-NOLM3U5F.js");
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-YN2A4CY2.js");
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-YN2A4CY2.js");
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-YOZTCQCS.js.map
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-YOZTCQCS.js";
4
+ } from "./chunk-QH27SS5F.js";
5
5
  import "./chunk-3J3V3CVG.js";
6
6
  import "./chunk-WRI3HTCJ.js";
7
7
  export {