@_davideast/stitch-mcp 0.3.2 → 0.5.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 (214) hide show
  1. package/README.md +54 -239
  2. package/dist/chunk-25wakzyb.js +137 -0
  3. package/dist/chunk-25wakzyb.js.map +10 -0
  4. package/dist/chunk-2cetsfw4.js +16531 -0
  5. package/dist/chunk-2cetsfw4.js.map +95 -0
  6. package/dist/chunk-2fcdwvrm.js +54 -0
  7. package/dist/chunk-2fcdwvrm.js.map +10 -0
  8. package/dist/chunk-2k7n0w2x.js +3980 -0
  9. package/dist/chunk-2k7n0w2x.js.map +16 -0
  10. package/dist/chunk-2kyqsrg2.js +403 -0
  11. package/dist/chunk-2kyqsrg2.js.map +10 -0
  12. package/dist/chunk-384jmtpy.js +11057 -0
  13. package/dist/chunk-384jmtpy.js.map +238 -0
  14. package/dist/chunk-3at4pjgn.js +22 -0
  15. package/dist/chunk-3at4pjgn.js.map +9 -0
  16. package/dist/chunk-3sfn889r.js +492 -0
  17. package/dist/chunk-3sfn889r.js.map +13 -0
  18. package/dist/chunk-45wx7tn7.js +94 -0
  19. package/dist/chunk-45wx7tn7.js.map +10 -0
  20. package/dist/chunk-48d17n29.js +10 -0
  21. package/dist/chunk-48d17n29.js.map +9 -0
  22. package/dist/chunk-4jwmvjb4.js +839 -0
  23. package/dist/chunk-4jwmvjb4.js.map +11 -0
  24. package/dist/chunk-4jygt4d6.js +14 -0
  25. package/dist/chunk-4jygt4d6.js.map +10 -0
  26. package/dist/chunk-4vxy1qce.js +68 -0
  27. package/dist/chunk-4vxy1qce.js.map +10 -0
  28. package/dist/chunk-7tx0wn04.js +11 -0
  29. package/dist/chunk-7tx0wn04.js.map +9 -0
  30. package/dist/chunk-7xh1y383.js +45188 -0
  31. package/dist/chunk-7xh1y383.js.map +258 -0
  32. package/dist/chunk-8yrtq2qs.js +18 -0
  33. package/dist/chunk-8yrtq2qs.js.map +9 -0
  34. package/dist/chunk-985f11w6.js +21 -0
  35. package/dist/chunk-985f11w6.js.map +9 -0
  36. package/dist/chunk-9tvppjaf.js +250 -0
  37. package/dist/chunk-9tvppjaf.js.map +14 -0
  38. package/dist/chunk-9wyra8hs.js +32 -0
  39. package/dist/chunk-9wyra8hs.js.map +9 -0
  40. package/dist/chunk-cwkb2wbe.js +733 -0
  41. package/dist/chunk-cwkb2wbe.js.map +16 -0
  42. package/dist/chunk-djhzzcgj.js +362 -0
  43. package/dist/chunk-djhzzcgj.js.map +13 -0
  44. package/dist/chunk-edp6faw2.js +7 -0
  45. package/dist/chunk-edp6faw2.js.map +9 -0
  46. package/dist/chunk-ezmw2j8c.js +14 -0
  47. package/dist/chunk-ezmw2j8c.js.map +9 -0
  48. package/dist/chunk-f2hq6bfv.js +22 -0
  49. package/dist/chunk-f2hq6bfv.js.map +10 -0
  50. package/dist/chunk-fwb4fnkp.js +31 -0
  51. package/dist/chunk-fwb4fnkp.js.map +10 -0
  52. package/dist/chunk-h18jrqed.js +9517 -0
  53. package/dist/chunk-h18jrqed.js.map +99 -0
  54. package/dist/chunk-hb3c6f6a.js +42 -0
  55. package/dist/chunk-hb3c6f6a.js.map +9 -0
  56. package/dist/chunk-jy2d17pr.js +252 -0
  57. package/dist/chunk-jy2d17pr.js.map +11 -0
  58. package/dist/chunk-kbtqrkwh.js +24 -0
  59. package/dist/chunk-kbtqrkwh.js.map +10 -0
  60. package/dist/chunk-knbnsf6s.js +92 -0
  61. package/dist/chunk-knbnsf6s.js.map +10 -0
  62. package/dist/chunk-mv9ssgmx.js +446 -0
  63. package/dist/chunk-mv9ssgmx.js.map +17 -0
  64. package/dist/chunk-nq68kghz.js +1647 -0
  65. package/dist/chunk-nq68kghz.js.map +10 -0
  66. package/dist/chunk-nthabjd9.js +3138 -0
  67. package/dist/chunk-nthabjd9.js.map +34 -0
  68. package/dist/chunk-nxpzt33t.js +278 -0
  69. package/dist/chunk-nxpzt33t.js.map +10 -0
  70. package/dist/chunk-pfyjtfex.js +172 -0
  71. package/dist/chunk-pfyjtfex.js.map +10 -0
  72. package/dist/chunk-q1nd6g0y.js +392 -0
  73. package/dist/chunk-q1nd6g0y.js.map +20 -0
  74. package/dist/chunk-q4js8r0z.js +4708 -0
  75. package/dist/chunk-q4js8r0z.js.map +29 -0
  76. package/dist/chunk-qv44tmn6.js +289 -0
  77. package/dist/chunk-qv44tmn6.js.map +13 -0
  78. package/dist/chunk-r2sg2nxa.js +20 -0
  79. package/dist/chunk-r2sg2nxa.js.map +9 -0
  80. package/dist/chunk-rp8wjzht.js +16959 -0
  81. package/dist/chunk-rp8wjzht.js.map +26 -0
  82. package/dist/chunk-rpxnm86e.js +372 -0
  83. package/dist/chunk-rpxnm86e.js.map +17 -0
  84. package/dist/chunk-sdp429xd.js +914 -0
  85. package/dist/chunk-sdp429xd.js.map +24 -0
  86. package/dist/chunk-t85nbjjb.js +113 -0
  87. package/dist/chunk-t85nbjjb.js.map +10 -0
  88. package/dist/chunk-tz7wnw4s.js +211 -0
  89. package/dist/chunk-tz7wnw4s.js.map +11 -0
  90. package/dist/chunk-v7117ywx.js +1477 -0
  91. package/dist/chunk-v7117ywx.js.map +23 -0
  92. package/dist/chunk-w8q7nsm7.js +2098 -0
  93. package/dist/chunk-w8q7nsm7.js.map +44 -0
  94. package/dist/chunk-wa64nz8b.js +47 -0
  95. package/dist/chunk-wa64nz8b.js.map +10 -0
  96. package/dist/chunk-wz8d5vzb.js +234 -0
  97. package/dist/chunk-wz8d5vzb.js.map +11 -0
  98. package/dist/chunk-ycfxp056.js +677 -0
  99. package/dist/chunk-ycfxp056.js.map +17 -0
  100. package/dist/chunk-z9d2xc83.js +3256 -0
  101. package/dist/chunk-z9d2xc83.js.map +84 -0
  102. package/dist/cli.js +111 -125552
  103. package/dist/cli.js.map +19 -0
  104. package/dist/commands/autoload.d.ts +2 -0
  105. package/dist/commands/doctor/command.d.ts +2 -1
  106. package/dist/commands/doctor/command.js +82 -0
  107. package/dist/commands/doctor/command.js.map +11 -0
  108. package/dist/commands/doctor/spec.d.ts +16 -8
  109. package/dist/commands/init/command.d.ts +2 -1
  110. package/dist/commands/init/command.js +98 -0
  111. package/dist/commands/init/command.js.map +11 -0
  112. package/dist/commands/init/spec.d.ts +29 -9
  113. package/dist/commands/logout/command.d.ts +2 -1
  114. package/dist/commands/logout/command.js +79 -0
  115. package/dist/commands/logout/command.js.map +11 -0
  116. package/dist/commands/logout/spec.d.ts +11 -0
  117. package/dist/commands/proxy/command.d.ts +2 -1
  118. package/dist/commands/proxy/command.js +56 -0
  119. package/dist/commands/proxy/command.js.map +11 -0
  120. package/dist/commands/proxy/spec.d.ts +15 -0
  121. package/dist/commands/screens/command.d.ts +2 -1
  122. package/dist/commands/screens/command.js +61 -0
  123. package/dist/commands/screens/command.js.map +11 -0
  124. package/dist/commands/screens/spec.d.ts +9 -0
  125. package/dist/commands/serve/command.d.ts +2 -1
  126. package/dist/commands/serve/command.js +65 -0
  127. package/dist/commands/serve/command.js.map +11 -0
  128. package/dist/commands/serve/spec.d.ts +9 -0
  129. package/dist/commands/site/command.d.ts +2 -1
  130. package/dist/commands/site/command.js +53 -0
  131. package/dist/commands/site/command.js.map +11 -0
  132. package/dist/commands/site/spec.d.ts +15 -0
  133. package/dist/commands/snapshot/command.d.ts +2 -1
  134. package/dist/commands/snapshot/command.js +59 -0
  135. package/dist/commands/snapshot/command.js.map +11 -0
  136. package/dist/commands/tool/command.d.ts +2 -1
  137. package/dist/commands/tool/command.js +79 -0
  138. package/dist/commands/tool/command.js.map +11 -0
  139. package/dist/commands/tool/handler.d.ts +17 -0
  140. package/dist/commands/tool/spec.d.ts +17 -0
  141. package/dist/commands/tool/steps/ValidateToolStep.d.ts +8 -0
  142. package/dist/commands/tool/virtual-tools/index.d.ts +1 -0
  143. package/dist/commands/tool/virtual-tools/list-tools.d.ts +2 -0
  144. package/dist/commands/view/command.d.ts +2 -1
  145. package/dist/commands/view/command.js +52 -0
  146. package/dist/commands/view/command.js.map +11 -0
  147. package/dist/commands/view/spec.d.ts +24 -0
  148. package/dist/framework/CommandDefinition.d.ts +2 -2
  149. package/dist/index.js +26 -21668
  150. package/dist/index.js.map +9 -0
  151. package/dist/lib/services/site/schemas.d.ts +8 -8
  152. package/dist/services/config/handler.d.ts +12 -0
  153. package/dist/services/config/spec.d.ts +82 -0
  154. package/dist/services/gcloud/auth.d.ts +28 -0
  155. package/dist/services/gcloud/core.d.ts +21 -0
  156. package/dist/services/gcloud/handler.d.ts +6 -18
  157. package/dist/services/gcloud/install.d.ts +23 -0
  158. package/dist/services/gcloud/projects.d.ts +15 -0
  159. package/dist/services/gcloud/spec.d.ts +32 -24
  160. package/dist/services/mcp-client/client.d.ts +0 -5
  161. package/dist/services/mcp-client/spec.d.ts +6 -6
  162. package/dist/services/mcp-config/spec.d.ts +12 -12
  163. package/dist/services/project/spec.d.ts +4 -4
  164. package/dist/services/proxy/spec.d.ts +3 -3
  165. package/dist/services/stitch/api.d.ts +10 -0
  166. package/dist/services/stitch/connection.d.ts +5 -0
  167. package/dist/services/stitch/handler.d.ts +5 -3
  168. package/dist/services/stitch/iam.d.ts +11 -0
  169. package/dist/services/stitch/spec.d.ts +6 -6
  170. package/dist/services/view/spec.d.ts +7 -7
  171. package/dist/src/cli.d.ts +1 -0
  172. package/dist/src/commands/doctor/handler.d.ts +9 -0
  173. package/dist/src/commands/doctor/handler.test.d.ts +1 -0
  174. package/dist/src/commands/doctor/spec.d.ts +130 -0
  175. package/dist/src/commands/doctor/spec.test.d.ts +1 -0
  176. package/dist/src/commands/init/handler.d.ts +17 -0
  177. package/dist/src/commands/init/handler.test.d.ts +1 -0
  178. package/dist/src/commands/init/spec.d.ts +88 -0
  179. package/dist/src/commands/init/spec.test.d.ts +1 -0
  180. package/dist/src/commands/proxy/handler.d.ts +7 -0
  181. package/dist/src/commands/proxy/handler.test.d.ts +1 -0
  182. package/dist/src/index.d.ts +13 -0
  183. package/dist/src/platform/detector.d.ts +29 -0
  184. package/dist/src/platform/paths.d.ts +20 -0
  185. package/dist/src/platform/shell.d.ts +26 -0
  186. package/dist/src/services/gcloud/handler.d.ts +48 -0
  187. package/dist/src/services/gcloud/handler.test.d.ts +1 -0
  188. package/dist/src/services/gcloud/spec.d.ts +405 -0
  189. package/dist/src/services/mcp-config/handler.d.ts +12 -0
  190. package/dist/src/services/mcp-config/handler.test.d.ts +1 -0
  191. package/dist/src/services/mcp-config/spec.d.ts +88 -0
  192. package/dist/src/services/mcp-config/spec.test.d.ts +1 -0
  193. package/dist/src/services/project/handler.d.ts +11 -0
  194. package/dist/src/services/project/handler.test.d.ts +1 -0
  195. package/dist/src/services/project/spec.d.ts +86 -0
  196. package/dist/src/services/project/spec.test.d.ts +1 -0
  197. package/dist/src/services/proxy/handler.d.ts +15 -0
  198. package/dist/src/services/proxy/handler.test.d.ts +1 -0
  199. package/dist/src/services/proxy/spec.d.ts +83 -0
  200. package/dist/src/services/proxy/spec.test.d.ts +1 -0
  201. package/dist/src/services/stitch/handler.d.ts +15 -0
  202. package/dist/src/services/stitch/handler.test.d.ts +1 -0
  203. package/dist/src/services/stitch/spec.d.ts +262 -0
  204. package/dist/src/services/stitch/spec.test.d.ts +1 -0
  205. package/dist/src/ui/spinner.d.ts +11 -0
  206. package/dist/src/ui/theme.d.ts +18 -0
  207. package/dist/src/ui/wizard.d.ts +24 -0
  208. package/dist/tests/mocks/shell.d.ts +2 -0
  209. package/dist/ui/JsonTree.d.ts +1 -1
  210. package/package.json +2 -2
  211. package/dist/commands/registry.d.ts +0 -2
  212. package/dist/ui/copy-behaviors/index.d.ts +0 -8
  213. package/dist/ui/serve-behaviors/index.d.ts +0 -7
  214. /package/dist/ui/navigation-behaviors/{index.d.ts → handler.d.ts} +0 -0
@@ -0,0 +1,289 @@
1
+ import {
2
+ require_lib
3
+ } from "./chunk-w8q7nsm7.js";
4
+ import {
5
+ __toESM
6
+ } from "./chunk-9wyra8hs.js";
7
+
8
+ // src/commands/site/utils/ProjectSyncer.ts
9
+ class ProjectSyncer {
10
+ client;
11
+ constructor(client) {
12
+ this.client = client;
13
+ }
14
+ async fetchManifest(projectId) {
15
+ const response = await this.client.callTool("list_screens", {
16
+ projectId
17
+ });
18
+ return response.screens || [];
19
+ }
20
+ async fetchContent(url) {
21
+ const maxRetries = 4;
22
+ for (let attempt = 0;attempt <= maxRetries; attempt++) {
23
+ const response = await fetch(url);
24
+ if (response.ok)
25
+ return await response.text();
26
+ if (response.status === 429 && attempt < maxRetries) {
27
+ const backoff = Math.min(1000 * 2 ** attempt, 8000);
28
+ await new Promise((r) => setTimeout(r, backoff));
29
+ continue;
30
+ }
31
+ throw new Error(`Failed to fetch content: ${response.statusText}`);
32
+ }
33
+ throw new Error(`Failed to fetch content after ${maxRetries + 1} attempts`);
34
+ }
35
+ }
36
+
37
+ // src/lib/services/site/SiteService.ts
38
+ var import_fs_extra = __toESM(require_lib(), 1);
39
+ import path from "path";
40
+
41
+ // node_modules/yocto-queue/index.js
42
+ class Node {
43
+ value;
44
+ next;
45
+ constructor(value) {
46
+ this.value = value;
47
+ }
48
+ }
49
+
50
+ class Queue {
51
+ #head;
52
+ #tail;
53
+ #size;
54
+ constructor() {
55
+ this.clear();
56
+ }
57
+ enqueue(value) {
58
+ const node = new Node(value);
59
+ if (this.#head) {
60
+ this.#tail.next = node;
61
+ this.#tail = node;
62
+ } else {
63
+ this.#head = node;
64
+ this.#tail = node;
65
+ }
66
+ this.#size++;
67
+ }
68
+ dequeue() {
69
+ const current = this.#head;
70
+ if (!current) {
71
+ return;
72
+ }
73
+ this.#head = this.#head.next;
74
+ this.#size--;
75
+ if (!this.#head) {
76
+ this.#tail = undefined;
77
+ }
78
+ return current.value;
79
+ }
80
+ peek() {
81
+ if (!this.#head) {
82
+ return;
83
+ }
84
+ return this.#head.value;
85
+ }
86
+ clear() {
87
+ this.#head = undefined;
88
+ this.#tail = undefined;
89
+ this.#size = 0;
90
+ }
91
+ get size() {
92
+ return this.#size;
93
+ }
94
+ *[Symbol.iterator]() {
95
+ let current = this.#head;
96
+ while (current) {
97
+ yield current.value;
98
+ current = current.next;
99
+ }
100
+ }
101
+ *drain() {
102
+ while (this.#head) {
103
+ yield this.dequeue();
104
+ }
105
+ }
106
+ }
107
+
108
+ // node_modules/p-limit/index.js
109
+ function pLimit(concurrency) {
110
+ let rejectOnClear = false;
111
+ if (typeof concurrency === "object") {
112
+ ({ concurrency, rejectOnClear = false } = concurrency);
113
+ }
114
+ validateConcurrency(concurrency);
115
+ if (typeof rejectOnClear !== "boolean") {
116
+ throw new TypeError("Expected `rejectOnClear` to be a boolean");
117
+ }
118
+ const queue = new Queue;
119
+ let activeCount = 0;
120
+ const resumeNext = () => {
121
+ if (activeCount < concurrency && queue.size > 0) {
122
+ activeCount++;
123
+ queue.dequeue().run();
124
+ }
125
+ };
126
+ const next = () => {
127
+ activeCount--;
128
+ resumeNext();
129
+ };
130
+ const run = async (function_, resolve, arguments_) => {
131
+ const result = (async () => function_(...arguments_))();
132
+ resolve(result);
133
+ try {
134
+ await result;
135
+ } catch {}
136
+ next();
137
+ };
138
+ const enqueue = (function_, resolve, reject, arguments_) => {
139
+ const queueItem = { reject };
140
+ new Promise((internalResolve) => {
141
+ queueItem.run = internalResolve;
142
+ queue.enqueue(queueItem);
143
+ }).then(run.bind(undefined, function_, resolve, arguments_));
144
+ if (activeCount < concurrency) {
145
+ resumeNext();
146
+ }
147
+ };
148
+ const generator = (function_, ...arguments_) => new Promise((resolve, reject) => {
149
+ enqueue(function_, resolve, reject, arguments_);
150
+ });
151
+ Object.defineProperties(generator, {
152
+ activeCount: {
153
+ get: () => activeCount
154
+ },
155
+ pendingCount: {
156
+ get: () => queue.size
157
+ },
158
+ clearQueue: {
159
+ value() {
160
+ if (!rejectOnClear) {
161
+ queue.clear();
162
+ return;
163
+ }
164
+ const abortError = AbortSignal.abort().reason;
165
+ while (queue.size > 0) {
166
+ queue.dequeue().reject(abortError);
167
+ }
168
+ }
169
+ },
170
+ concurrency: {
171
+ get: () => concurrency,
172
+ set(newConcurrency) {
173
+ validateConcurrency(newConcurrency);
174
+ concurrency = newConcurrency;
175
+ queueMicrotask(() => {
176
+ while (activeCount < concurrency && queue.size > 0) {
177
+ resumeNext();
178
+ }
179
+ });
180
+ }
181
+ },
182
+ map: {
183
+ async value(iterable, function_) {
184
+ const promises = Array.from(iterable, (value, index) => this(function_, value, index));
185
+ return Promise.all(promises);
186
+ }
187
+ }
188
+ });
189
+ return generator;
190
+ }
191
+ function validateConcurrency(concurrency) {
192
+ if (!((Number.isInteger(concurrency) || concurrency === Number.POSITIVE_INFINITY) && concurrency > 0)) {
193
+ throw new TypeError("Expected `concurrency` to be a number from 1 and up");
194
+ }
195
+ }
196
+
197
+ // src/lib/services/site/SiteService.ts
198
+ class SiteService {
199
+ static toUIScreens(screens) {
200
+ return screens.filter((s) => s.htmlCode && s.htmlCode.downloadUrl).map((s) => ({
201
+ id: s.name,
202
+ title: s.title,
203
+ downloadUrl: s.htmlCode.downloadUrl,
204
+ status: "ignored",
205
+ route: ""
206
+ }));
207
+ }
208
+ static async generateSite(config, htmlContent, assetGateway, outputDir = ".") {
209
+ await import_fs_extra.default.ensureDir(path.join(outputDir, "src/pages"));
210
+ await import_fs_extra.default.ensureDir(path.join(outputDir, "src/layouts"));
211
+ await import_fs_extra.default.ensureDir(path.join(outputDir, "public/assets"));
212
+ const pkgJson = {
213
+ name: "stitch-site",
214
+ type: "module",
215
+ version: "0.0.1",
216
+ scripts: {
217
+ dev: "astro dev",
218
+ start: "astro dev",
219
+ build: "astro build",
220
+ preview: "astro preview",
221
+ astro: "astro"
222
+ },
223
+ dependencies: {
224
+ astro: "^5.0.0"
225
+ }
226
+ };
227
+ await import_fs_extra.default.writeJson(path.join(outputDir, "package.json"), pkgJson, { spaces: 2 });
228
+ const astroConfig = `import { defineConfig } from 'astro/config';
229
+ export default defineConfig({});`;
230
+ await import_fs_extra.default.writeFile(path.join(outputDir, "astro.config.mjs"), astroConfig);
231
+ const layout = `---
232
+ interface Props {
233
+ title: string;
234
+ }
235
+
236
+ const { title } = Astro.props;
237
+ ---
238
+
239
+ <!doctype html>
240
+ <html lang="en">
241
+ <head>
242
+ <meta charset="UTF-8" />
243
+ <meta name="description" content="Astro description" />
244
+ <meta name="viewport" content="width=device-width" />
245
+ <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
246
+ <meta name="generator" content={Astro.generator} />
247
+ <title>{title}</title>
248
+ </head>
249
+ <body>
250
+ <slot />
251
+ </body>
252
+ </html>
253
+ `;
254
+ await import_fs_extra.default.writeFile(path.join(outputDir, "src/layouts/Layout.astro"), layout);
255
+ const limit = pLimit(10);
256
+ const tasks = config.routes.map((route) => limit(async () => {
257
+ if (route.status !== "included")
258
+ return;
259
+ const html = htmlContent.get(route.screenId);
260
+ if (!html) {
261
+ console.warn(`No HTML content found for screen ${route.screenId}`);
262
+ return;
263
+ }
264
+ const { html: rewrittenHtml, assets } = await assetGateway.rewriteHtmlForBuild(html);
265
+ const assetsDir = path.join(outputDir, "public/assets");
266
+ for (const asset of assets) {
267
+ await assetGateway.copyAssetTo(asset.url, path.join(assetsDir, asset.filename));
268
+ }
269
+ let filePath = route.route;
270
+ if (filePath === "/") {
271
+ filePath = "index";
272
+ } else {
273
+ if (filePath.startsWith("/"))
274
+ filePath = filePath.substring(1);
275
+ }
276
+ const fullPath = path.join(outputDir, "src/pages", `${filePath}.astro`);
277
+ await import_fs_extra.default.ensureDir(path.dirname(fullPath));
278
+ await import_fs_extra.default.writeFile(fullPath, rewrittenHtml);
279
+ }));
280
+ await Promise.all(tasks);
281
+ }
282
+ static slugify(text) {
283
+ return text.toString().toLowerCase().replace(/\s+/g, "-").replace(/[^\w\-]+/g, "").replace(/\-\-+/g, "-").replace(/^-+/, "").replace(/-+$/, "");
284
+ }
285
+ }
286
+
287
+ export { ProjectSyncer, pLimit, SiteService };
288
+
289
+ //# debugId=48437CEB05AF8D1664756E2164756E21
@@ -0,0 +1,13 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/commands/site/utils/ProjectSyncer.ts", "../src/lib/services/site/SiteService.ts", "../node_modules/yocto-queue/index.js", "../node_modules/p-limit/index.js"],
4
+ "sourcesContent": [
5
+ "import { StitchMCPClient } from '../../../services/mcp-client/client.js';\nimport type { RemoteScreen } from '../../../lib/services/site/types.js';\n\nexport class ProjectSyncer {\n private client: StitchMCPClient;\n\n constructor(client: StitchMCPClient) {\n this.client = client;\n }\n\n async fetchManifest(projectId: string): Promise<RemoteScreen[]> {\n const response = await this.client.callTool<{ screens: RemoteScreen[] }>('list_screens', {\n projectId\n });\n return response.screens || [];\n }\n\n async fetchContent(url: string): Promise<string> {\n const maxRetries = 4;\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n const response = await fetch(url);\n if (response.ok) return await response.text();\n if (response.status === 429 && attempt < maxRetries) {\n const backoff = Math.min(1000 * 2 ** attempt, 8000);\n await new Promise(r => setTimeout(r, backoff));\n continue;\n }\n throw new Error(`Failed to fetch content: ${response.statusText}`);\n }\n throw new Error(`Failed to fetch content after ${maxRetries + 1} attempts`);\n }\n}\n",
6
+ "import type { RemoteScreen, SiteConfig, IAssetGateway, UIScreen } from './types.js';\nimport fs from 'fs-extra';\nimport path from 'path';\nimport pLimit from 'p-limit';\n\nexport class SiteService {\n static toUIScreens(screens: RemoteScreen[]): UIScreen[] {\n return screens\n .filter((s) => s.htmlCode && s.htmlCode.downloadUrl)\n .map((s) => ({\n id: s.name,\n title: s.title,\n downloadUrl: s.htmlCode!.downloadUrl!,\n status: 'ignored',\n route: '',\n }));\n }\n\n static async generateSite(\n config: SiteConfig,\n htmlContent: Map<string, string>,\n assetGateway: IAssetGateway,\n outputDir: string = '.'\n ): Promise<void> {\n // Scaffold\n await fs.ensureDir(path.join(outputDir, 'src/pages'));\n await fs.ensureDir(path.join(outputDir, 'src/layouts'));\n await fs.ensureDir(path.join(outputDir, 'public/assets'));\n\n // package.json\n const pkgJson = {\n name: \"stitch-site\",\n type: \"module\",\n version: \"0.0.1\",\n scripts: {\n \"dev\": \"astro dev\",\n \"start\": \"astro dev\",\n \"build\": \"astro build\",\n \"preview\": \"astro preview\",\n \"astro\": \"astro\"\n },\n dependencies: {\n \"astro\": \"^5.0.0\"\n }\n };\n await fs.writeJson(path.join(outputDir, 'package.json'), pkgJson, { spaces: 2 });\n\n // astro.config.mjs\n const astroConfig = `import { defineConfig } from 'astro/config';\nexport default defineConfig({});`;\n await fs.writeFile(path.join(outputDir, 'astro.config.mjs'), astroConfig);\n\n // src/layouts/Layout.astro\n const layout = `---\ninterface Props {\n\ttitle: string;\n}\n\nconst { title } = Astro.props;\n---\n\n<!doctype html>\n<html lang=\"en\">\n\t<head>\n\t\t<meta charset=\"UTF-8\" />\n\t\t<meta name=\"description\" content=\"Astro description\" />\n\t\t<meta name=\"viewport\" content=\"width=device-width\" />\n\t\t<link rel=\"icon\" type=\"image/svg+xml\" href=\"/favicon.svg\" />\n\t\t<meta name=\"generator\" content={Astro.generator} />\n\t\t<title>{title}</title>\n\t</head>\n\t<body>\n\t\t<slot />\n\t</body>\n</html>\n`;\n await fs.writeFile(path.join(outputDir, 'src/layouts/Layout.astro'), layout);\n\n // Process routes\n const limit = pLimit(10);\n const tasks = config.routes.map((route) =>\n limit(async () => {\n if (route.status !== 'included') return;\n\n const html = htmlContent.get(route.screenId);\n if (!html) {\n console.warn(`No HTML content found for screen ${route.screenId}`);\n return;\n }\n\n // Rewrite\n const { html: rewrittenHtml, assets } = await assetGateway.rewriteHtmlForBuild(html);\n\n // Copy assets\n const assetsDir = path.join(outputDir, 'public/assets');\n for (const asset of assets) {\n await assetGateway.copyAssetTo(asset.url, path.join(assetsDir, asset.filename));\n }\n\n let filePath = route.route;\n if (filePath === '/') {\n filePath = 'index';\n } else {\n // Remove leading slash\n if (filePath.startsWith('/')) filePath = filePath.substring(1);\n }\n\n const fullPath = path.join(outputDir, 'src/pages', `${filePath}.astro`);\n await fs.ensureDir(path.dirname(fullPath));\n await fs.writeFile(fullPath, rewrittenHtml);\n })\n );\n\n await Promise.all(tasks);\n }\n\n static slugify(text: string): string {\n return text.toString().toLowerCase()\n .replace(/\\s+/g, '-')\n .replace(/[^\\w\\-]+/g, '')\n .replace(/\\-\\-+/g, '-')\n .replace(/^-+/, '')\n .replace(/-+$/, '');\n }\n}\n",
7
+ "/*\nHow it works:\n`this.#head` is an instance of `Node` which keeps track of its current value and nests another instance of `Node` that keeps the value that comes after it. When a value is provided to `.enqueue()`, the code needs to iterate through `this.#head`, going deeper and deeper to find the last value. However, iterating through every single item is slow. This problem is solved by saving a reference to the last value as `this.#tail` so that it can reference it to add a new value.\n*/\n\nclass Node {\n\tvalue;\n\tnext;\n\n\tconstructor(value) {\n\t\tthis.value = value;\n\t}\n}\n\nexport default class Queue {\n\t#head;\n\t#tail;\n\t#size;\n\n\tconstructor() {\n\t\tthis.clear();\n\t}\n\n\tenqueue(value) {\n\t\tconst node = new Node(value);\n\n\t\tif (this.#head) {\n\t\t\tthis.#tail.next = node;\n\t\t\tthis.#tail = node;\n\t\t} else {\n\t\t\tthis.#head = node;\n\t\t\tthis.#tail = node;\n\t\t}\n\n\t\tthis.#size++;\n\t}\n\n\tdequeue() {\n\t\tconst current = this.#head;\n\t\tif (!current) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#head = this.#head.next;\n\t\tthis.#size--;\n\n\t\t// Clean up tail reference when queue becomes empty\n\t\tif (!this.#head) {\n\t\t\tthis.#tail = undefined;\n\t\t}\n\n\t\treturn current.value;\n\t}\n\n\tpeek() {\n\t\tif (!this.#head) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn this.#head.value;\n\n\t\t// TODO: Node.js 18.\n\t\t// return this.#head?.value;\n\t}\n\n\tclear() {\n\t\tthis.#head = undefined;\n\t\tthis.#tail = undefined;\n\t\tthis.#size = 0;\n\t}\n\n\tget size() {\n\t\treturn this.#size;\n\t}\n\n\t* [Symbol.iterator]() {\n\t\tlet current = this.#head;\n\n\t\twhile (current) {\n\t\t\tyield current.value;\n\t\t\tcurrent = current.next;\n\t\t}\n\t}\n\n\t* drain() {\n\t\twhile (this.#head) {\n\t\t\tyield this.dequeue();\n\t\t}\n\t}\n}\n",
8
+ "import Queue from 'yocto-queue';\n\nexport default function pLimit(concurrency) {\n\tlet rejectOnClear = false;\n\n\tif (typeof concurrency === 'object') {\n\t\t({concurrency, rejectOnClear = false} = concurrency);\n\t}\n\n\tvalidateConcurrency(concurrency);\n\n\tif (typeof rejectOnClear !== 'boolean') {\n\t\tthrow new TypeError('Expected `rejectOnClear` to be a boolean');\n\t}\n\n\tconst queue = new Queue();\n\tlet activeCount = 0;\n\n\tconst resumeNext = () => {\n\t\t// Process the next queued function if we're under the concurrency limit\n\t\tif (activeCount < concurrency && queue.size > 0) {\n\t\t\tactiveCount++;\n\t\t\tqueue.dequeue().run();\n\t\t}\n\t};\n\n\tconst next = () => {\n\t\tactiveCount--;\n\t\tresumeNext();\n\t};\n\n\tconst run = async (function_, resolve, arguments_) => {\n\t\t// Execute the function and capture the result promise\n\t\tconst result = (async () => function_(...arguments_))();\n\n\t\t// Resolve immediately with the promise (don't wait for completion)\n\t\tresolve(result);\n\n\t\t// Wait for the function to complete (success or failure)\n\t\t// We catch errors here to prevent unhandled rejections,\n\t\t// but the original promise rejection is preserved for the caller\n\t\ttry {\n\t\t\tawait result;\n\t\t} catch {}\n\n\t\t// Decrement active count and process next queued function\n\t\tnext();\n\t};\n\n\tconst enqueue = (function_, resolve, reject, arguments_) => {\n\t\tconst queueItem = {reject};\n\n\t\t// Queue the internal resolve function instead of the run function\n\t\t// to preserve the asynchronous execution context.\n\t\tnew Promise(internalResolve => { // eslint-disable-line promise/param-names\n\t\t\tqueueItem.run = internalResolve;\n\t\t\tqueue.enqueue(queueItem);\n\t\t}).then(run.bind(undefined, function_, resolve, arguments_)); // eslint-disable-line promise/prefer-await-to-then\n\n\t\t// Start processing immediately if we haven't reached the concurrency limit\n\t\tif (activeCount < concurrency) {\n\t\t\tresumeNext();\n\t\t}\n\t};\n\n\tconst generator = (function_, ...arguments_) => new Promise((resolve, reject) => {\n\t\tenqueue(function_, resolve, reject, arguments_);\n\t});\n\n\tObject.defineProperties(generator, {\n\t\tactiveCount: {\n\t\t\tget: () => activeCount,\n\t\t},\n\t\tpendingCount: {\n\t\t\tget: () => queue.size,\n\t\t},\n\t\tclearQueue: {\n\t\t\tvalue() {\n\t\t\t\tif (!rejectOnClear) {\n\t\t\t\t\tqueue.clear();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst abortError = AbortSignal.abort().reason;\n\n\t\t\t\twhile (queue.size > 0) {\n\t\t\t\t\tqueue.dequeue().reject(abortError);\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\tconcurrency: {\n\t\t\tget: () => concurrency,\n\n\t\t\tset(newConcurrency) {\n\t\t\t\tvalidateConcurrency(newConcurrency);\n\t\t\t\tconcurrency = newConcurrency;\n\n\t\t\t\tqueueMicrotask(() => {\n\t\t\t\t\t// eslint-disable-next-line no-unmodified-loop-condition\n\t\t\t\t\twhile (activeCount < concurrency && queue.size > 0) {\n\t\t\t\t\t\tresumeNext();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t\tmap: {\n\t\t\tasync value(iterable, function_) {\n\t\t\t\tconst promises = Array.from(iterable, (value, index) => this(function_, value, index));\n\t\t\t\treturn Promise.all(promises);\n\t\t\t},\n\t\t},\n\t});\n\n\treturn generator;\n}\n\nexport function limitFunction(function_, options) {\n\tconst limit = pLimit(options);\n\n\treturn (...arguments_) => limit(() => function_(...arguments_));\n}\n\nfunction validateConcurrency(concurrency) {\n\tif (!((Number.isInteger(concurrency) || concurrency === Number.POSITIVE_INFINITY) && concurrency > 0)) {\n\t\tthrow new TypeError('Expected `concurrency` to be a number from 1 and up');\n\t}\n}\n"
9
+ ],
10
+ "mappings": "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",
11
+ "debugId": "48437CEB05AF8D1664756E2164756E21",
12
+ "names": []
13
+ }
@@ -0,0 +1,20 @@
1
+ import {
2
+ InitHandler
3
+ } from "./chunk-v7117ywx.js";
4
+ import"./chunk-sdp429xd.js";
5
+ import"./chunk-z9d2xc83.js";
6
+ import"./chunk-nq68kghz.js";
7
+ import"./chunk-mv9ssgmx.js";
8
+ import"./chunk-f2hq6bfv.js";
9
+ import"./chunk-nthabjd9.js";
10
+ import"./chunk-4jygt4d6.js";
11
+ import"./chunk-tz7wnw4s.js";
12
+ import"./chunk-kbtqrkwh.js";
13
+ import"./chunk-3sfn889r.js";
14
+ import"./chunk-2k7n0w2x.js";
15
+ import"./chunk-9wyra8hs.js";
16
+ export {
17
+ InitHandler
18
+ };
19
+
20
+ //# debugId=8B9766FC1E9BEF0464756E2164756E21
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [
5
+ ],
6
+ "mappings": "",
7
+ "debugId": "8B9766FC1E9BEF0464756E2164756E21",
8
+ "names": []
9
+ }