@_davideast/stitch-mcp 0.5.5 → 0.7.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.
Files changed (168) hide show
  1. package/dist/chunk-0xbbvsve.js +370 -0
  2. package/dist/chunk-0xbbvsve.js.map +16 -0
  3. package/dist/chunk-11ab03kg.js +137 -0
  4. package/dist/chunk-11ab03kg.js.map +10 -0
  5. package/dist/chunk-17cs61t4.js +270 -0
  6. package/dist/chunk-17cs61t4.js.map +10 -0
  7. package/dist/chunk-1mz7188j.js +20 -0
  8. package/dist/chunk-1mz7188j.js.map +9 -0
  9. package/dist/chunk-1txb8kjb.js +17 -0
  10. package/dist/chunk-1txb8kjb.js.map +9 -0
  11. package/dist/chunk-1v5q6d3n.js +17 -0
  12. package/dist/chunk-1v5q6d3n.js.map +9 -0
  13. package/dist/chunk-1wcg0pjg.js +94 -0
  14. package/dist/chunk-1wcg0pjg.js.map +10 -0
  15. package/dist/chunk-2zp03jky.js +19 -0
  16. package/dist/chunk-2zp03jky.js.map +9 -0
  17. package/dist/chunk-441ntz7a.js +137 -0
  18. package/dist/chunk-441ntz7a.js.map +10 -0
  19. package/dist/chunk-543135qd.js +43679 -0
  20. package/dist/chunk-543135qd.js.map +234 -0
  21. package/dist/chunk-564wpgj7.js +246 -0
  22. package/dist/chunk-564wpgj7.js.map +14 -0
  23. package/dist/chunk-5jbenaez.js +19185 -0
  24. package/dist/chunk-5jbenaez.js.map +115 -0
  25. package/dist/chunk-633ma50k.js +371 -0
  26. package/dist/chunk-633ma50k.js.map +16 -0
  27. package/dist/chunk-7ryqstaa.js +7065 -0
  28. package/dist/chunk-7ryqstaa.js.map +115 -0
  29. package/dist/chunk-7z5z40ar.js +165 -0
  30. package/dist/chunk-7z5z40ar.js.map +10 -0
  31. package/dist/chunk-86gwwcyr.js +46325 -0
  32. package/dist/chunk-86gwwcyr.js.map +261 -0
  33. package/dist/chunk-8gegrmmt.js +256 -0
  34. package/dist/chunk-8gegrmmt.js.map +11 -0
  35. package/dist/chunk-8hgrrc49.js +17 -0
  36. package/dist/chunk-8hgrrc49.js.map +9 -0
  37. package/dist/chunk-8w97w2wa.js +50 -0
  38. package/dist/chunk-8w97w2wa.js.map +9 -0
  39. package/dist/chunk-8yfetpqq.js +19132 -0
  40. package/dist/chunk-8yfetpqq.js.map +115 -0
  41. package/dist/chunk-94knm2sw.js +1495 -0
  42. package/dist/chunk-94knm2sw.js.map +23 -0
  43. package/dist/chunk-9ckyz47q.js +518 -0
  44. package/dist/chunk-9ckyz47q.js.map +12 -0
  45. package/dist/chunk-appd0sxm.js +5217 -0
  46. package/dist/chunk-appd0sxm.js.map +67 -0
  47. package/dist/chunk-b9atzag0.js +67 -0
  48. package/dist/chunk-b9atzag0.js.map +10 -0
  49. package/dist/chunk-c08qy4ty.js +67 -0
  50. package/dist/chunk-c08qy4ty.js.map +10 -0
  51. package/dist/chunk-c5dtqvff.js +11 -0
  52. package/dist/chunk-c5dtqvff.js.map +9 -0
  53. package/dist/chunk-d1ea3tmp.js +17 -0
  54. package/dist/chunk-d1ea3tmp.js.map +9 -0
  55. package/dist/chunk-ecn1ca83.js +34253 -0
  56. package/dist/chunk-ecn1ca83.js.map +261 -0
  57. package/dist/chunk-ef1c6gq5.js +947 -0
  58. package/dist/chunk-ef1c6gq5.js.map +28 -0
  59. package/dist/chunk-ef355a3f.js +20 -0
  60. package/dist/chunk-ef355a3f.js.map +9 -0
  61. package/dist/chunk-f0dt9hv8.js +680 -0
  62. package/dist/chunk-f0dt9hv8.js.map +17 -0
  63. package/dist/chunk-f2aj8ff8.js +11 -0
  64. package/dist/chunk-f2aj8ff8.js.map +9 -0
  65. package/dist/chunk-f3wp07zw.js +24 -0
  66. package/dist/chunk-f3wp07zw.js.map +9 -0
  67. package/dist/chunk-f5wqd3z3.js +10 -0
  68. package/dist/chunk-f5wqd3z3.js.map +9 -0
  69. package/dist/chunk-g8hwy0wx.js +504 -0
  70. package/dist/chunk-g8hwy0wx.js.map +21 -0
  71. package/dist/chunk-gcx3c3yc.js +680 -0
  72. package/dist/chunk-gcx3c3yc.js.map +17 -0
  73. package/dist/chunk-gq6vxp70.js +202 -0
  74. package/dist/chunk-gq6vxp70.js.map +13 -0
  75. package/dist/chunk-gw64p5pg.js +164 -0
  76. package/dist/chunk-gw64p5pg.js.map +10 -0
  77. package/dist/chunk-hgv5frj1.js +256 -0
  78. package/dist/chunk-hgv5frj1.js.map +11 -0
  79. package/dist/chunk-hst78da7.js +87 -0
  80. package/dist/chunk-hst78da7.js.map +13 -0
  81. package/dist/chunk-hsxpgjyd.js +256 -0
  82. package/dist/chunk-hsxpgjyd.js.map +11 -0
  83. package/dist/chunk-j1v44zzm.js +109 -0
  84. package/dist/chunk-j1v44zzm.js.map +10 -0
  85. package/dist/chunk-jfd5md63.js +736 -0
  86. package/dist/chunk-jfd5md63.js.map +16 -0
  87. package/dist/chunk-jn5pcnz9.js +270 -0
  88. package/dist/chunk-jn5pcnz9.js.map +10 -0
  89. package/dist/chunk-jvhzgyhy.js +62 -0
  90. package/dist/chunk-jvhzgyhy.js.map +10 -0
  91. package/dist/chunk-k86st2r8.js +7 -0
  92. package/dist/chunk-k86st2r8.js.map +9 -0
  93. package/dist/chunk-kztccppz.js +606 -0
  94. package/dist/chunk-kztccppz.js.map +15 -0
  95. package/dist/chunk-m2vk15q9.js +503 -0
  96. package/dist/chunk-m2vk15q9.js.map +21 -0
  97. package/dist/chunk-mk40f3ka.js +31529 -0
  98. package/dist/chunk-mk40f3ka.js.map +245 -0
  99. package/dist/chunk-mp1sf8x6.js +264 -0
  100. package/dist/chunk-mp1sf8x6.js.map +12 -0
  101. package/dist/chunk-mzyqavzd.js +736 -0
  102. package/dist/chunk-mzyqavzd.js.map +16 -0
  103. package/dist/chunk-n9fs543g.js +94 -0
  104. package/dist/chunk-n9fs543g.js.map +10 -0
  105. package/dist/chunk-nbbwjw90.js +165 -0
  106. package/dist/chunk-nbbwjw90.js.map +10 -0
  107. package/dist/chunk-nh14pn95.js +137 -0
  108. package/dist/chunk-nh14pn95.js.map +10 -0
  109. package/dist/chunk-qnd877d5.js +947 -0
  110. package/dist/chunk-qnd877d5.js.map +28 -0
  111. package/dist/chunk-rng2ypf7.js +538 -0
  112. package/dist/chunk-rng2ypf7.js.map +15 -0
  113. package/dist/chunk-sjq10wbw.js +39 -0
  114. package/dist/chunk-sjq10wbw.js.map +9 -0
  115. package/dist/chunk-snv6a65k.js +759 -0
  116. package/dist/chunk-snv6a65k.js.map +19 -0
  117. package/dist/chunk-sqhdg0mf.js +2138 -0
  118. package/dist/chunk-sqhdg0mf.js.map +44 -0
  119. package/dist/chunk-tebher8z.js +514 -0
  120. package/dist/chunk-tebher8z.js.map +12 -0
  121. package/dist/chunk-v0wtyr4k.js +66 -0
  122. package/dist/chunk-v0wtyr4k.js.map +10 -0
  123. package/dist/chunk-v20274k8.js +246 -0
  124. package/dist/chunk-v20274k8.js.map +14 -0
  125. package/dist/chunk-vcp9fp2w.js +839 -0
  126. package/dist/chunk-vcp9fp2w.js.map +11 -0
  127. package/dist/chunk-vz737k5f.js +269 -0
  128. package/dist/chunk-vz737k5f.js.map +10 -0
  129. package/dist/chunk-x6bsgeqa.js +736 -0
  130. package/dist/chunk-x6bsgeqa.js.map +16 -0
  131. package/dist/chunk-xg9kcbp1.js +371 -0
  132. package/dist/chunk-xg9kcbp1.js.map +16 -0
  133. package/dist/chunk-xhad5b8x.js +110 -0
  134. package/dist/chunk-xhad5b8x.js.map +10 -0
  135. package/dist/chunk-xkwa1mn5.js +203 -0
  136. package/dist/chunk-xkwa1mn5.js.map +13 -0
  137. package/dist/chunk-xtcg74kf.js +50 -0
  138. package/dist/chunk-xtcg74kf.js.map +9 -0
  139. package/dist/chunk-xzjkaqe9.js +759 -0
  140. package/dist/chunk-xzjkaqe9.js.map +19 -0
  141. package/dist/chunk-y65xgj69.js +1495 -0
  142. package/dist/chunk-y65xgj69.js.map +23 -0
  143. package/dist/commands/doctor/command.js +1 -1
  144. package/dist/commands/init/command.js +1 -1
  145. package/dist/commands/logout/command.js +1 -1
  146. package/dist/commands/proxy/LoggingCallToolHandler.d.ts +11 -0
  147. package/dist/commands/proxy/command.js +1 -1
  148. package/dist/commands/screens/command.js +4 -4
  149. package/dist/commands/serve/command.js +5 -5
  150. package/dist/commands/site/command.js +1 -1
  151. package/dist/commands/snapshot/command.js +1 -1
  152. package/dist/commands/tool/command.js +1 -1
  153. package/dist/commands/tool/steps/LogExecuteToolStep.d.ts +19 -0
  154. package/dist/commands/upload/command.d.ts +2 -0
  155. package/dist/commands/upload/command.js +77 -0
  156. package/dist/commands/upload/command.js.map +11 -0
  157. package/dist/commands/upload/handler.d.ts +20 -0
  158. package/dist/commands/upload/spec.d.ts +38 -0
  159. package/dist/commands/view/command.js +1 -1
  160. package/dist/index.js +9 -9
  161. package/dist/index.js.map +1 -1
  162. package/dist/lib/log/append.d.ts +12 -0
  163. package/dist/lib/log/blob-store/handler.d.ts +10 -0
  164. package/dist/lib/log/blob-store/spec.d.ts +251 -0
  165. package/dist/lib/log/capture/handler.d.ts +10 -0
  166. package/dist/lib/log/capture/spec.d.ts +1504 -0
  167. package/dist/lib/log/factory.d.ts +4 -0
  168. package/package.json +2 -2
@@ -0,0 +1,110 @@
1
+ import {
2
+ StitchToolClient
3
+ } from "./chunk-ecn1ca83.js";
4
+ import"./chunk-543135qd.js";
5
+ import"./chunk-c6ge431q.js";
6
+ import"./chunk-9wyra8hs.js";
7
+
8
+ // src/services/view/handler.ts
9
+ class ViewHandler {
10
+ client;
11
+ constructor(client = new StitchToolClient) {
12
+ this.client = client;
13
+ }
14
+ async execute(input) {
15
+ try {
16
+ let data;
17
+ if (input.projects) {
18
+ data = await this.client.callTool("list_projects", {});
19
+ } else if (input.name) {
20
+ const projectMatch = input.name.match(/^projects\/([^/]+)$/);
21
+ const screenMatch = input.name.match(/^projects\/([^/]+)\/screens\/([^/]+)$/);
22
+ if (screenMatch) {
23
+ data = await this.client.callTool("get_screen", {
24
+ projectId: screenMatch[1],
25
+ screenId: screenMatch[2]
26
+ });
27
+ } else if (projectMatch) {
28
+ data = await this.client.callTool("get_project", {
29
+ name: `projects/${projectMatch[1]}`
30
+ });
31
+ } else {
32
+ throw new Error(`Invalid resource name format: ${input.name}`);
33
+ }
34
+ } else if (input.sourceScreen) {
35
+ const screenMatch = input.sourceScreen.match(/^projects\/([^/]+)\/screens\/([^/]+)$/);
36
+ if (screenMatch) {
37
+ data = await this.client.callTool("get_screen", {
38
+ projectId: screenMatch[1],
39
+ screenId: screenMatch[2]
40
+ });
41
+ } else {
42
+ throw new Error(`Invalid sourceScreen format: ${input.sourceScreen}`);
43
+ }
44
+ } else if (input.project && input.screen) {
45
+ data = await this.client.callTool("get_screen", {
46
+ projectId: input.project,
47
+ screenId: input.screen
48
+ });
49
+ } else if (input.project) {
50
+ data = await this.client.callTool("get_project", {
51
+ name: `projects/${input.project}`
52
+ });
53
+ } else {
54
+ return {
55
+ success: false,
56
+ error: {
57
+ code: "INVALID_ARGS",
58
+ message: "No valid view arguments provided. Use --projects, --name, --sourceScreen, or --project.",
59
+ recoverable: false
60
+ }
61
+ };
62
+ }
63
+ if (data && data.contents && Array.isArray(data.contents)) {
64
+ const contents = data.contents;
65
+ const chunkSize = 1000;
66
+ const results = [];
67
+ for (let i = 0;i < contents.length; i += chunkSize) {
68
+ const chunk = contents.slice(i, i + chunkSize).map((c) => {
69
+ if (c.text) {
70
+ try {
71
+ const parsed = JSON.parse(c.text);
72
+ return { ...c, text: undefined, data: parsed };
73
+ } catch {
74
+ return c;
75
+ }
76
+ }
77
+ return c;
78
+ });
79
+ results.push(...chunk);
80
+ if (i + chunkSize < contents.length) {
81
+ await new Promise((resolve) => setImmediate(resolve));
82
+ }
83
+ }
84
+ data.contents = results;
85
+ }
86
+ return {
87
+ success: true,
88
+ data
89
+ };
90
+ } catch (error) {
91
+ return {
92
+ success: false,
93
+ error: {
94
+ code: "FETCH_FAILED",
95
+ message: error instanceof Error ? error.message : String(error),
96
+ recoverable: false
97
+ }
98
+ };
99
+ } finally {
100
+ try {
101
+ await this.client.close();
102
+ } catch {}
103
+ }
104
+ }
105
+ }
106
+ export {
107
+ ViewHandler
108
+ };
109
+
110
+ //# debugId=3BC3B6ABFDD6D96C64756E2164756E21
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/services/view/handler.ts"],
4
+ "sourcesContent": [
5
+ "import { type ViewSpec, type ViewInput, type ViewResult } from './spec.js';\nimport { StitchToolClient } from '@google/stitch-sdk';\n\nexport class ViewHandler implements ViewSpec {\n constructor(private readonly client = new StitchToolClient()) {}\n\n async execute(input: ViewInput): Promise<ViewResult> {\n try {\n let data: any;\n\n if (input.projects) {\n data = await this.client.callTool('list_projects', {});\n } else if (input.name) {\n // Parse the resource name to determine the correct tool call\n // Format: \"projects/{id}\" or \"projects/{id}/screens/{screenId}\"\n const projectMatch = input.name.match(/^projects\\/([^/]+)$/);\n const screenMatch = input.name.match(/^projects\\/([^/]+)\\/screens\\/([^/]+)$/);\n\n if (screenMatch) {\n data = await this.client.callTool('get_screen', {\n projectId: screenMatch[1],\n screenId: screenMatch[2]\n });\n } else if (projectMatch) {\n data = await this.client.callTool('get_project', {\n name: `projects/${projectMatch[1]}`\n });\n } else {\n throw new Error(`Invalid resource name format: ${input.name}`);\n }\n } else if (input.sourceScreen) {\n const screenMatch = input.sourceScreen.match(/^projects\\/([^/]+)\\/screens\\/([^/]+)$/);\n if (screenMatch) {\n data = await this.client.callTool('get_screen', {\n projectId: screenMatch[1],\n screenId: screenMatch[2]\n });\n } else {\n throw new Error(`Invalid sourceScreen format: ${input.sourceScreen}`);\n }\n } else if (input.project && input.screen) {\n data = await this.client.callTool('get_screen', {\n projectId: input.project,\n screenId: input.screen\n });\n } else if (input.project) {\n data = await this.client.callTool('get_project', {\n name: `projects/${input.project}`\n });\n } else {\n return {\n success: false,\n error: {\n code: 'INVALID_ARGS',\n message: 'No valid view arguments provided. Use --projects, --name, --sourceScreen, or --project.',\n recoverable: false,\n },\n };\n }\n\n // Pre-process data for better viewing experience\n // If it's an MCP ReadResource result, it has a 'contents' array.\n // We try to parse 'text' fields as JSON.\n if (data && data.contents && Array.isArray(data.contents)) {\n const contents = data.contents;\n const chunkSize = 1000;\n const results = [];\n\n for (let i = 0; i < contents.length; i += chunkSize) {\n const chunk = contents.slice(i, i + chunkSize).map((c: any) => {\n if (c.text) {\n try {\n // Try to parse the text as JSON\n const parsed = JSON.parse(c.text);\n // If successful, replace text with the parsed object for the viewer\n // or add it as a new field. Replacing makes the tree view immediate.\n return { ...c, text: undefined, data: parsed };\n } catch {\n // Not JSON, keep as is\n return c;\n }\n }\n return c;\n });\n results.push(...chunk);\n\n // Yield to the event loop between chunks\n if (i + chunkSize < contents.length) {\n await new Promise(resolve => setImmediate(resolve));\n }\n }\n data.contents = results;\n }\n\n return {\n success: true,\n data: data,\n };\n\n } catch (error) {\n return {\n success: false,\n error: {\n code: 'FETCH_FAILED',\n message: error instanceof Error ? error.message : String(error),\n recoverable: false,\n },\n };\n } finally {\n // Ensure we close the client connection\n try {\n await this.client.close();\n } catch {}\n }\n }\n}\n"
6
+ ],
7
+ "mappings": "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",
8
+ "debugId": "3BC3B6ABFDD6D96C64756E2164756E21",
9
+ "names": []
10
+ }
@@ -0,0 +1,203 @@
1
+ import {
2
+ createCaptureHandler,
3
+ isLogEnabled
4
+ } from "./chunk-kztccppz.js";
5
+ import {
6
+ CallToolRequestSchema,
7
+ JSONRPCMessageSchema,
8
+ StitchProxy
9
+ } from "./chunk-ecn1ca83.js";
10
+ import"./chunk-543135qd.js";
11
+ import"./chunk-c6ge431q.js";
12
+ import"./chunk-9wyra8hs.js";
13
+
14
+ // node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.js
15
+ import process2 from "node:process";
16
+
17
+ // node_modules/@modelcontextprotocol/sdk/dist/esm/shared/stdio.js
18
+ class ReadBuffer {
19
+ append(chunk) {
20
+ this._buffer = this._buffer ? Buffer.concat([this._buffer, chunk]) : chunk;
21
+ }
22
+ readMessage() {
23
+ if (!this._buffer) {
24
+ return null;
25
+ }
26
+ const index = this._buffer.indexOf(`
27
+ `);
28
+ if (index === -1) {
29
+ return null;
30
+ }
31
+ const line = this._buffer.toString("utf8", 0, index).replace(/\r$/, "");
32
+ this._buffer = this._buffer.subarray(index + 1);
33
+ return deserializeMessage(line);
34
+ }
35
+ clear() {
36
+ this._buffer = undefined;
37
+ }
38
+ }
39
+ function deserializeMessage(line) {
40
+ return JSONRPCMessageSchema.parse(JSON.parse(line));
41
+ }
42
+ function serializeMessage(message) {
43
+ return JSON.stringify(message) + `
44
+ `;
45
+ }
46
+
47
+ // node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.js
48
+ class StdioServerTransport {
49
+ constructor(_stdin = process2.stdin, _stdout = process2.stdout) {
50
+ this._stdin = _stdin;
51
+ this._stdout = _stdout;
52
+ this._readBuffer = new ReadBuffer;
53
+ this._started = false;
54
+ this._ondata = (chunk) => {
55
+ this._readBuffer.append(chunk);
56
+ this.processReadBuffer();
57
+ };
58
+ this._onerror = (error) => {
59
+ this.onerror?.(error);
60
+ };
61
+ }
62
+ async start() {
63
+ if (this._started) {
64
+ throw new Error("StdioServerTransport already started! If using Server class, note that connect() calls start() automatically.");
65
+ }
66
+ this._started = true;
67
+ this._stdin.on("data", this._ondata);
68
+ this._stdin.on("error", this._onerror);
69
+ }
70
+ processReadBuffer() {
71
+ while (true) {
72
+ try {
73
+ const message = this._readBuffer.readMessage();
74
+ if (message === null) {
75
+ break;
76
+ }
77
+ this.onmessage?.(message);
78
+ } catch (error) {
79
+ this.onerror?.(error);
80
+ }
81
+ }
82
+ }
83
+ async close() {
84
+ this._stdin.off("data", this._ondata);
85
+ this._stdin.off("error", this._onerror);
86
+ const remainingDataListeners = this._stdin.listenerCount("data");
87
+ if (remainingDataListeners === 0) {
88
+ this._stdin.pause();
89
+ }
90
+ this._readBuffer.clear();
91
+ this.onclose?.();
92
+ }
93
+ send(message) {
94
+ return new Promise((resolve) => {
95
+ const json = serializeMessage(message);
96
+ if (this._stdout.write(json)) {
97
+ resolve();
98
+ } else {
99
+ this._stdout.once("drain", resolve);
100
+ }
101
+ });
102
+ }
103
+ }
104
+
105
+ // src/commands/proxy/LoggingCallToolHandler.ts
106
+ var DEFAULT_STITCH_MCP_URL = "https://stitch.googleapis.com/mcp";
107
+ function installLoggingCallToolHandler(proxy, capture, opts) {
108
+ const apiKey = opts?.apiKey ?? process.env.STITCH_API_KEY;
109
+ const url = opts?.url ?? process.env.STITCH_MCP_URL ?? DEFAULT_STITCH_MCP_URL;
110
+ if (!apiKey)
111
+ throw new Error("logging proxy requires STITCH_API_KEY");
112
+ const server = proxy?.server?.server;
113
+ if (!server || typeof server.setRequestHandler !== "function") {
114
+ throw new Error("cannot install logging handler: proxy.server.server.setRequestHandler missing");
115
+ }
116
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
117
+ const { name, arguments: args } = request.params;
118
+ const startedAt = new Date().toISOString();
119
+ const t0 = Date.now();
120
+ let result;
121
+ try {
122
+ result = await forwardToStitch({ apiKey, url }, name, args ?? {});
123
+ } catch (err) {
124
+ const message = err instanceof Error ? err.message : String(err);
125
+ result = { content: [{ type: "text", text: `Error calling ${name}: ${message}` }], isError: true };
126
+ }
127
+ const finishedAt = new Date().toISOString();
128
+ const durationMs = Date.now() - t0;
129
+ try {
130
+ await capture.capture({
131
+ tool: name,
132
+ args: args ?? {},
133
+ result,
134
+ duration_ms: durationMs,
135
+ started_at: startedAt,
136
+ finished_at: finishedAt
137
+ });
138
+ } catch (err) {
139
+ const msg = err instanceof Error ? err.message : String(err);
140
+ console.error(`[stitch-mcp log] capture failed: ${msg}`);
141
+ }
142
+ return result;
143
+ });
144
+ }
145
+ async function forwardToStitch(opts, name, args) {
146
+ const body = {
147
+ jsonrpc: "2.0",
148
+ method: "tools/call",
149
+ params: { name, arguments: args },
150
+ id: Date.now()
151
+ };
152
+ const res = await globalThis.fetch(opts.url, {
153
+ method: "POST",
154
+ headers: {
155
+ "Content-Type": "application/json",
156
+ Accept: "application/json",
157
+ "X-Goog-Api-Key": opts.apiKey
158
+ },
159
+ body: JSON.stringify(body)
160
+ });
161
+ if (!res.ok)
162
+ throw new Error(`Stitch API error (${res.status}): ${await res.text()}`);
163
+ const json = await res.json();
164
+ if (json.error)
165
+ throw new Error(`Stitch RPC error: ${json.error.message}`);
166
+ return json.result;
167
+ }
168
+
169
+ // src/commands/proxy/handler.ts
170
+ class ProxyCommandHandler {
171
+ createProxy;
172
+ createTransport;
173
+ constructor(deps) {
174
+ this.createProxy = deps?.createProxy ?? ((opts) => new StitchProxy(opts));
175
+ this.createTransport = deps?.createTransport ?? (() => new StdioServerTransport);
176
+ }
177
+ async execute(input) {
178
+ try {
179
+ const proxy = this.createProxy({
180
+ apiKey: process.env.STITCH_API_KEY
181
+ });
182
+ const transport = this.createTransport();
183
+ await proxy.start(transport);
184
+ if (isLogEnabled()) {
185
+ try {
186
+ installLoggingCallToolHandler(proxy, createCaptureHandler());
187
+ } catch (err) {
188
+ const msg = err instanceof Error ? err.message : String(err);
189
+ console.error(`[stitch-mcp log] failed to install capture handler: ${msg}`);
190
+ }
191
+ }
192
+ await transport.onclose;
193
+ return { success: true, data: { status: "running" } };
194
+ } catch (e) {
195
+ return { success: false, error: { code: "PROXY_START_ERROR", message: e.message, recoverable: false } };
196
+ }
197
+ }
198
+ }
199
+ export {
200
+ ProxyCommandHandler
201
+ };
202
+
203
+ //# debugId=4ED8EE1E3BFE8FB964756E2164756E21
@@ -0,0 +1,13 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.js", "../node_modules/@modelcontextprotocol/sdk/dist/esm/shared/stdio.js", "../src/commands/proxy/LoggingCallToolHandler.ts", "../src/commands/proxy/handler.ts"],
4
+ "sourcesContent": [
5
+ "import process from 'node:process';\nimport { ReadBuffer, serializeMessage } from '../shared/stdio.js';\n/**\n * Server transport for stdio: this communicates with an MCP client by reading from the current process' stdin and writing to stdout.\n *\n * This transport is only available in Node.js environments.\n */\nexport class StdioServerTransport {\n constructor(_stdin = process.stdin, _stdout = process.stdout) {\n this._stdin = _stdin;\n this._stdout = _stdout;\n this._readBuffer = new ReadBuffer();\n this._started = false;\n // Arrow functions to bind `this` properly, while maintaining function identity.\n this._ondata = (chunk) => {\n this._readBuffer.append(chunk);\n this.processReadBuffer();\n };\n this._onerror = (error) => {\n this.onerror?.(error);\n };\n }\n /**\n * Starts listening for messages on stdin.\n */\n async start() {\n if (this._started) {\n throw new Error('StdioServerTransport already started! If using Server class, note that connect() calls start() automatically.');\n }\n this._started = true;\n this._stdin.on('data', this._ondata);\n this._stdin.on('error', this._onerror);\n }\n processReadBuffer() {\n while (true) {\n try {\n const message = this._readBuffer.readMessage();\n if (message === null) {\n break;\n }\n this.onmessage?.(message);\n }\n catch (error) {\n this.onerror?.(error);\n }\n }\n }\n async close() {\n // Remove our event listeners first\n this._stdin.off('data', this._ondata);\n this._stdin.off('error', this._onerror);\n // Check if we were the only data listener\n const remainingDataListeners = this._stdin.listenerCount('data');\n if (remainingDataListeners === 0) {\n // Only pause stdin if we were the only listener\n // This prevents interfering with other parts of the application that might be using stdin\n this._stdin.pause();\n }\n // Clear the buffer and notify closure\n this._readBuffer.clear();\n this.onclose?.();\n }\n send(message) {\n return new Promise(resolve => {\n const json = serializeMessage(message);\n if (this._stdout.write(json)) {\n resolve();\n }\n else {\n this._stdout.once('drain', resolve);\n }\n });\n }\n}\n//# sourceMappingURL=stdio.js.map",
6
+ "import { JSONRPCMessageSchema } from '../types.js';\n/**\n * Buffers a continuous stdio stream into discrete JSON-RPC messages.\n */\nexport class ReadBuffer {\n append(chunk) {\n this._buffer = this._buffer ? Buffer.concat([this._buffer, chunk]) : chunk;\n }\n readMessage() {\n if (!this._buffer) {\n return null;\n }\n const index = this._buffer.indexOf('\\n');\n if (index === -1) {\n return null;\n }\n const line = this._buffer.toString('utf8', 0, index).replace(/\\r$/, '');\n this._buffer = this._buffer.subarray(index + 1);\n return deserializeMessage(line);\n }\n clear() {\n this._buffer = undefined;\n }\n}\nexport function deserializeMessage(line) {\n return JSONRPCMessageSchema.parse(JSON.parse(line));\n}\nexport function serializeMessage(message) {\n return JSON.stringify(message) + '\\n';\n}\n//# sourceMappingURL=stdio.js.map",
7
+ "import { CallToolRequestSchema } from '@modelcontextprotocol/sdk/types.js';\nimport type { CaptureSpec } from '../../lib/log/capture/spec.js';\n\nconst DEFAULT_STITCH_MCP_URL = 'https://stitch.googleapis.com/mcp';\n\ninterface ForwardOptions {\n apiKey: string;\n url: string;\n}\n\n/**\n * Replace the SDK proxy's tools/call handler with a capture-wrapped variant.\n * Must be called AFTER {@link StitchProxy.start} (which registers the original).\n */\nexport function installLoggingCallToolHandler(proxy: any, capture: CaptureSpec, opts?: Partial<ForwardOptions>): void {\n const apiKey = opts?.apiKey ?? process.env.STITCH_API_KEY;\n const url = opts?.url ?? process.env.STITCH_MCP_URL ?? DEFAULT_STITCH_MCP_URL;\n if (!apiKey) throw new Error('logging proxy requires STITCH_API_KEY');\n\n // The SDK exposes McpServer at proxy.server, whose underlying Server is at .server.\n const server = proxy?.server?.server;\n if (!server || typeof server.setRequestHandler !== 'function') {\n throw new Error('cannot install logging handler: proxy.server.server.setRequestHandler missing');\n }\n\n server.setRequestHandler(CallToolRequestSchema, async (request: any) => {\n const { name, arguments: args } = request.params;\n const startedAt = new Date().toISOString();\n const t0 = Date.now();\n\n let result: any;\n try {\n result = await forwardToStitch({ apiKey, url }, name, args ?? {});\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n result = { content: [{ type: 'text', text: `Error calling ${name}: ${message}` }], isError: true };\n }\n const finishedAt = new Date().toISOString();\n const durationMs = Date.now() - t0;\n\n // best-effort capture — never propagate failures to the MCP client\n try {\n await capture.capture({\n tool: name,\n args: (args ?? {}) as Record<string, unknown>,\n result,\n duration_ms: durationMs,\n started_at: startedAt,\n finished_at: finishedAt,\n });\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n // eslint-disable-next-line no-console\n console.error(`[stitch-mcp log] capture failed: ${msg}`);\n }\n\n return result;\n });\n}\n\n/** Minimal JSON-RPC forwarder, mirroring the SDK's private forwardToStitch. */\nasync function forwardToStitch(opts: ForwardOptions, name: string, args: Record<string, unknown>): Promise<any> {\n const body = {\n jsonrpc: '2.0',\n method: 'tools/call',\n params: { name, arguments: args },\n id: Date.now(),\n };\n const res = await globalThis.fetch(opts.url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n 'X-Goog-Api-Key': opts.apiKey,\n },\n body: JSON.stringify(body),\n });\n if (!res.ok) throw new Error(`Stitch API error (${res.status}): ${await res.text()}`);\n const json = (await res.json()) as { result?: unknown; error?: { message: string } };\n if (json.error) throw new Error(`Stitch RPC error: ${json.error.message}`);\n return json.result;\n}\n",
8
+ "import { StitchProxy } from '@google/stitch-sdk';\nimport type { StitchProxy as StitchProxyType } from '@google/stitch-sdk';\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport { createCaptureHandler, isLogEnabled } from '../../lib/log/factory.js';\nimport { installLoggingCallToolHandler } from './LoggingCallToolHandler.js';\n\ninterface ProxyCommandInput {\n port?: number;\n debug?: boolean;\n}\n\ninterface ProxyCommandResult {\n success: boolean;\n data?: { status: string };\n error?: { code: string; message: string; recoverable: boolean };\n}\n\nexport class ProxyCommandHandler {\n private createProxy: (opts: { apiKey?: string }) => StitchProxyType;\n private createTransport: () => StdioServerTransport;\n\n constructor(deps?: {\n createProxy?: (opts: { apiKey?: string }) => StitchProxyType;\n createTransport?: () => StdioServerTransport;\n }) {\n this.createProxy = deps?.createProxy ?? ((opts) => new StitchProxy(opts));\n this.createTransport = deps?.createTransport ?? (() => new StdioServerTransport());\n }\n\n async execute(input: ProxyCommandInput): Promise<ProxyCommandResult> {\n try {\n const proxy = this.createProxy({\n apiKey: process.env.STITCH_API_KEY,\n });\n const transport = this.createTransport();\n await proxy.start(transport);\n\n // Override the SDK's tools/call handler with a capture-wrapped variant.\n // Must run AFTER proxy.start() (which registers the original handler).\n if (isLogEnabled()) {\n try {\n installLoggingCallToolHandler(proxy, createCaptureHandler());\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n // eslint-disable-next-line no-console\n console.error(`[stitch-mcp log] failed to install capture handler: ${msg}`);\n }\n }\n\n await transport.onclose;\n return { success: true, data: { status: 'running' } };\n } catch (e: any) {\n return { success: false, error: { code: 'PROXY_START_ERROR', message: e.message, recoverable: false } };\n }\n }\n}\n"
9
+ ],
10
+ "mappings": "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",
11
+ "debugId": "4ED8EE1E3BFE8FB964756E2164756E21",
12
+ "names": []
13
+ }
@@ -0,0 +1,50 @@
1
+ import {
2
+ Box_default,
3
+ Newline,
4
+ Spacer,
5
+ Static,
6
+ Text,
7
+ Transform,
8
+ kittyFlags,
9
+ kittyModifiers,
10
+ measure_element_default,
11
+ render_default,
12
+ render_to_string_default,
13
+ use_app_default,
14
+ use_cursor_default,
15
+ use_focus_default,
16
+ use_focus_manager_default,
17
+ use_input_default,
18
+ use_is_screen_reader_enabled_default,
19
+ use_stderr_default,
20
+ use_stdin_default,
21
+ use_stdout_default
22
+ } from "./chunk-8yfetpqq.js";
23
+ import"./chunk-b43pzs3z.js";
24
+ import"./chunk-q6sv0243.js";
25
+ import"./chunk-3sfn889r.js";
26
+ import"./chunk-9wyra8hs.js";
27
+ export {
28
+ use_stdout_default as useStdout,
29
+ use_stdin_default as useStdin,
30
+ use_stderr_default as useStderr,
31
+ use_is_screen_reader_enabled_default as useIsScreenReaderEnabled,
32
+ use_input_default as useInput,
33
+ use_focus_manager_default as useFocusManager,
34
+ use_focus_default as useFocus,
35
+ use_cursor_default as useCursor,
36
+ use_app_default as useApp,
37
+ render_to_string_default as renderToString,
38
+ render_default as render,
39
+ measure_element_default as measureElement,
40
+ kittyModifiers,
41
+ kittyFlags,
42
+ Transform,
43
+ Text,
44
+ Static,
45
+ Spacer,
46
+ Newline,
47
+ Box_default as Box
48
+ };
49
+
50
+ //# debugId=DC542304F7E517EE64756E2164756E21
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [
5
+ ],
6
+ "mappings": "",
7
+ "debugId": "DC542304F7E517EE64756E2164756E21",
8
+ "names": []
9
+ }