@ambitresearch/genie 1.3.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 (301) hide show
  1. package/README.md +15 -0
  2. package/dist/auth/bearer.d.ts +49 -0
  3. package/dist/auth/bearer.d.ts.map +1 -0
  4. package/dist/auth/bearer.js +159 -0
  5. package/dist/auth/bearer.js.map +1 -0
  6. package/dist/auth/oauth/authorize.d.ts +19 -0
  7. package/dist/auth/oauth/authorize.d.ts.map +1 -0
  8. package/dist/auth/oauth/authorize.js +111 -0
  9. package/dist/auth/oauth/authorize.js.map +1 -0
  10. package/dist/auth/oauth/config.d.ts +10 -0
  11. package/dist/auth/oauth/config.d.ts.map +1 -0
  12. package/dist/auth/oauth/config.js +16 -0
  13. package/dist/auth/oauth/config.js.map +1 -0
  14. package/dist/auth/oauth/dcr.d.ts +15 -0
  15. package/dist/auth/oauth/dcr.d.ts.map +1 -0
  16. package/dist/auth/oauth/dcr.js +38 -0
  17. package/dist/auth/oauth/dcr.js.map +1 -0
  18. package/dist/auth/oauth/jwt.d.ts +13 -0
  19. package/dist/auth/oauth/jwt.d.ts.map +1 -0
  20. package/dist/auth/oauth/jwt.js +46 -0
  21. package/dist/auth/oauth/jwt.js.map +1 -0
  22. package/dist/auth/oauth/metadata.d.ts +9 -0
  23. package/dist/auth/oauth/metadata.d.ts.map +1 -0
  24. package/dist/auth/oauth/metadata.js +19 -0
  25. package/dist/auth/oauth/metadata.js.map +1 -0
  26. package/dist/auth/oauth/router.d.ts +32 -0
  27. package/dist/auth/oauth/router.d.ts.map +1 -0
  28. package/dist/auth/oauth/router.js +159 -0
  29. package/dist/auth/oauth/router.js.map +1 -0
  30. package/dist/auth/oauth/store.d.ts +55 -0
  31. package/dist/auth/oauth/store.d.ts.map +1 -0
  32. package/dist/auth/oauth/store.js +63 -0
  33. package/dist/auth/oauth/store.js.map +1 -0
  34. package/dist/auth/oauth/token.d.ts +21 -0
  35. package/dist/auth/oauth/token.d.ts.map +1 -0
  36. package/dist/auth/oauth/token.js +77 -0
  37. package/dist/auth/oauth/token.js.map +1 -0
  38. package/dist/auth/oidc/group-policy.d.ts +43 -0
  39. package/dist/auth/oidc/group-policy.d.ts.map +1 -0
  40. package/dist/auth/oidc/group-policy.js +54 -0
  41. package/dist/auth/oidc/group-policy.js.map +1 -0
  42. package/dist/auth/oidc/verifier.d.ts +42 -0
  43. package/dist/auth/oidc/verifier.d.ts.map +1 -0
  44. package/dist/auth/oidc/verifier.js +145 -0
  45. package/dist/auth/oidc/verifier.js.map +1 -0
  46. package/dist/auth/token-cli.d.ts +9 -0
  47. package/dist/auth/token-cli.d.ts.map +1 -0
  48. package/dist/auth/token-cli.js +98 -0
  49. package/dist/auth/token-cli.js.map +1 -0
  50. package/dist/cli.d.ts +3 -0
  51. package/dist/cli.d.ts.map +1 -0
  52. package/dist/cli.js +149 -0
  53. package/dist/cli.js.map +1 -0
  54. package/dist/config/redact.d.ts +20 -0
  55. package/dist/config/redact.d.ts.map +1 -0
  56. package/dist/config/redact.js +77 -0
  57. package/dist/config/redact.js.map +1 -0
  58. package/dist/config/secrets.d.ts +100 -0
  59. package/dist/config/secrets.d.ts.map +1 -0
  60. package/dist/config/secrets.js +130 -0
  61. package/dist/config/secrets.js.map +1 -0
  62. package/dist/framework/html.d.ts +103 -0
  63. package/dist/framework/html.d.ts.map +1 -0
  64. package/dist/framework/html.js +271 -0
  65. package/dist/framework/html.js.map +1 -0
  66. package/dist/framework/interface.d.ts +130 -0
  67. package/dist/framework/interface.d.ts.map +1 -0
  68. package/dist/framework/interface.js +112 -0
  69. package/dist/framework/interface.js.map +1 -0
  70. package/dist/framework/react.d.ts +133 -0
  71. package/dist/framework/react.d.ts.map +1 -0
  72. package/dist/framework/react.js +243 -0
  73. package/dist/framework/react.js.map +1 -0
  74. package/dist/framework/vue.d.ts +99 -0
  75. package/dist/framework/vue.d.ts.map +1 -0
  76. package/dist/framework/vue.js +375 -0
  77. package/dist/framework/vue.js.map +1 -0
  78. package/dist/index.d.ts +3 -0
  79. package/dist/index.d.ts.map +1 -0
  80. package/dist/index.js +3 -0
  81. package/dist/index.js.map +1 -0
  82. package/dist/llm/client.d.ts +81 -0
  83. package/dist/llm/client.d.ts.map +1 -0
  84. package/dist/llm/client.js +141 -0
  85. package/dist/llm/client.js.map +1 -0
  86. package/dist/llm/component-response.d.ts +111 -0
  87. package/dist/llm/component-response.d.ts.map +1 -0
  88. package/dist/llm/component-response.js +167 -0
  89. package/dist/llm/component-response.js.map +1 -0
  90. package/dist/llm/generated-files.d.ts +10 -0
  91. package/dist/llm/generated-files.d.ts.map +1 -0
  92. package/dist/llm/generated-files.js +26 -0
  93. package/dist/llm/generated-files.js.map +1 -0
  94. package/dist/llm/prompts/CHANGELOG.md +70 -0
  95. package/dist/llm/prompts/generate-component.system.md +99 -0
  96. package/dist/llm/prompts/refine-component.system.md +112 -0
  97. package/dist/llm/prompts.d.ts +66 -0
  98. package/dist/llm/prompts.d.ts.map +1 -0
  99. package/dist/llm/prompts.js +78 -0
  100. package/dist/llm/prompts.js.map +1 -0
  101. package/dist/llm/retry.d.ts +183 -0
  102. package/dist/llm/retry.d.ts.map +1 -0
  103. package/dist/llm/retry.js +475 -0
  104. package/dist/llm/retry.js.map +1 -0
  105. package/dist/llm/schema.d.ts +129 -0
  106. package/dist/llm/schema.d.ts.map +1 -0
  107. package/dist/llm/schema.js +147 -0
  108. package/dist/llm/schema.js.map +1 -0
  109. package/dist/llm/validate.d.ts +107 -0
  110. package/dist/llm/validate.d.ts.map +1 -0
  111. package/dist/llm/validate.js +174 -0
  112. package/dist/llm/validate.js.map +1 -0
  113. package/dist/manifest/compiler.d.ts +112 -0
  114. package/dist/manifest/compiler.d.ts.map +1 -0
  115. package/dist/manifest/compiler.js +306 -0
  116. package/dist/manifest/compiler.js.map +1 -0
  117. package/dist/manifest/ensure.d.ts +46 -0
  118. package/dist/manifest/ensure.d.ts.map +1 -0
  119. package/dist/manifest/ensure.js +49 -0
  120. package/dist/manifest/ensure.js.map +1 -0
  121. package/dist/manifest/index.d.ts +13 -0
  122. package/dist/manifest/index.d.ts.map +1 -0
  123. package/dist/manifest/index.js +13 -0
  124. package/dist/manifest/index.js.map +1 -0
  125. package/dist/middleware/plan-guard.d.ts +167 -0
  126. package/dist/middleware/plan-guard.d.ts.map +1 -0
  127. package/dist/middleware/plan-guard.js +190 -0
  128. package/dist/middleware/plan-guard.js.map +1 -0
  129. package/dist/plans/index.d.ts +71 -0
  130. package/dist/plans/index.d.ts.map +1 -0
  131. package/dist/plans/index.js +252 -0
  132. package/dist/plans/index.js.map +1 -0
  133. package/dist/schemas/component.schema.json +114 -0
  134. package/dist/server.d.ts +96 -0
  135. package/dist/server.d.ts.map +1 -0
  136. package/dist/server.js +258 -0
  137. package/dist/server.js.map +1 -0
  138. package/dist/store/empty-manifest.d.ts +58 -0
  139. package/dist/store/empty-manifest.d.ts.map +1 -0
  140. package/dist/store/empty-manifest.js +59 -0
  141. package/dist/store/empty-manifest.js.map +1 -0
  142. package/dist/store/git-host.d.ts +120 -0
  143. package/dist/store/git-host.d.ts.map +1 -0
  144. package/dist/store/git-host.js +796 -0
  145. package/dist/store/git-host.js.map +1 -0
  146. package/dist/store/index.d.ts +5 -0
  147. package/dist/store/index.d.ts.map +1 -0
  148. package/dist/store/index.js +4 -0
  149. package/dist/store/index.js.map +1 -0
  150. package/dist/store/interface.d.ts +322 -0
  151. package/dist/store/interface.d.ts.map +1 -0
  152. package/dist/store/interface.js +100 -0
  153. package/dist/store/interface.js.map +1 -0
  154. package/dist/store/kit-files.d.ts +88 -0
  155. package/dist/store/kit-files.d.ts.map +1 -0
  156. package/dist/store/kit-files.js +199 -0
  157. package/dist/store/kit-files.js.map +1 -0
  158. package/dist/store/local.d.ts +70 -0
  159. package/dist/store/local.d.ts.map +1 -0
  160. package/dist/store/local.js +651 -0
  161. package/dist/store/local.js.map +1 -0
  162. package/dist/store/manifest.d.ts +44 -0
  163. package/dist/store/manifest.d.ts.map +1 -0
  164. package/dist/store/manifest.js +116 -0
  165. package/dist/store/manifest.js.map +1 -0
  166. package/dist/store/viewer-assets.d.ts +20 -0
  167. package/dist/store/viewer-assets.d.ts.map +1 -0
  168. package/dist/store/viewer-assets.js +118 -0
  169. package/dist/store/viewer-assets.js.map +1 -0
  170. package/dist/sync/anchor.d.ts +125 -0
  171. package/dist/sync/anchor.d.ts.map +1 -0
  172. package/dist/sync/anchor.js +210 -0
  173. package/dist/sync/anchor.js.map +1 -0
  174. package/dist/sync/index.d.ts +15 -0
  175. package/dist/sync/index.d.ts.map +1 -0
  176. package/dist/sync/index.js +15 -0
  177. package/dist/sync/index.js.map +1 -0
  178. package/dist/sync/orchestrator.d.ts +160 -0
  179. package/dist/sync/orchestrator.d.ts.map +1 -0
  180. package/dist/sync/orchestrator.js +288 -0
  181. package/dist/sync/orchestrator.js.map +1 -0
  182. package/dist/tools/bind_kit.d.ts +29 -0
  183. package/dist/tools/bind_kit.d.ts.map +1 -0
  184. package/dist/tools/bind_kit.js +70 -0
  185. package/dist/tools/bind_kit.js.map +1 -0
  186. package/dist/tools/conjure.d.ts +141 -0
  187. package/dist/tools/conjure.d.ts.map +1 -0
  188. package/dist/tools/conjure.js +655 -0
  189. package/dist/tools/conjure.js.map +1 -0
  190. package/dist/tools/conjure_screen.d.ts +174 -0
  191. package/dist/tools/conjure_screen.d.ts.map +1 -0
  192. package/dist/tools/conjure_screen.js +458 -0
  193. package/dist/tools/conjure_screen.js.map +1 -0
  194. package/dist/tools/create_kit.d.ts +32 -0
  195. package/dist/tools/create_kit.d.ts.map +1 -0
  196. package/dist/tools/create_kit.js +131 -0
  197. package/dist/tools/create_kit.js.map +1 -0
  198. package/dist/tools/create_project.d.ts +267 -0
  199. package/dist/tools/create_project.d.ts.map +1 -0
  200. package/dist/tools/create_project.js +546 -0
  201. package/dist/tools/create_project.js.map +1 -0
  202. package/dist/tools/delete_files.d.ts +93 -0
  203. package/dist/tools/delete_files.d.ts.map +1 -0
  204. package/dist/tools/delete_files.js +276 -0
  205. package/dist/tools/delete_files.js.map +1 -0
  206. package/dist/tools/delete_project.d.ts +43 -0
  207. package/dist/tools/delete_project.d.ts.map +1 -0
  208. package/dist/tools/delete_project.js +118 -0
  209. package/dist/tools/delete_project.js.map +1 -0
  210. package/dist/tools/get_kit.d.ts +28 -0
  211. package/dist/tools/get_kit.d.ts.map +1 -0
  212. package/dist/tools/get_kit.js +95 -0
  213. package/dist/tools/get_kit.js.map +1 -0
  214. package/dist/tools/get_project.d.ts +37 -0
  215. package/dist/tools/get_project.d.ts.map +1 -0
  216. package/dist/tools/get_project.js +71 -0
  217. package/dist/tools/get_project.js.map +1 -0
  218. package/dist/tools/list_components.d.ts +42 -0
  219. package/dist/tools/list_components.d.ts.map +1 -0
  220. package/dist/tools/list_components.js +125 -0
  221. package/dist/tools/list_components.js.map +1 -0
  222. package/dist/tools/list_files.d.ts +32 -0
  223. package/dist/tools/list_files.d.ts.map +1 -0
  224. package/dist/tools/list_files.js +109 -0
  225. package/dist/tools/list_files.js.map +1 -0
  226. package/dist/tools/list_kits.d.ts +14 -0
  227. package/dist/tools/list_kits.d.ts.map +1 -0
  228. package/dist/tools/list_kits.js +41 -0
  229. package/dist/tools/list_kits.js.map +1 -0
  230. package/dist/tools/list_projects.d.ts +23 -0
  231. package/dist/tools/list_projects.d.ts.map +1 -0
  232. package/dist/tools/list_projects.js +66 -0
  233. package/dist/tools/list_projects.js.map +1 -0
  234. package/dist/tools/plan.d.ts +16 -0
  235. package/dist/tools/plan.d.ts.map +1 -0
  236. package/dist/tools/plan.js +146 -0
  237. package/dist/tools/plan.js.map +1 -0
  238. package/dist/tools/preview.d.ts +289 -0
  239. package/dist/tools/preview.d.ts.map +1 -0
  240. package/dist/tools/preview.js +672 -0
  241. package/dist/tools/preview.js.map +1 -0
  242. package/dist/tools/read_file.d.ts +40 -0
  243. package/dist/tools/read_file.d.ts.map +1 -0
  244. package/dist/tools/read_file.js +114 -0
  245. package/dist/tools/read_file.js.map +1 -0
  246. package/dist/tools/refine.d.ts +220 -0
  247. package/dist/tools/refine.d.ts.map +1 -0
  248. package/dist/tools/refine.js +501 -0
  249. package/dist/tools/refine.js.map +1 -0
  250. package/dist/tools/validate.d.ts +74 -0
  251. package/dist/tools/validate.d.ts.map +1 -0
  252. package/dist/tools/validate.js +224 -0
  253. package/dist/tools/validate.js.map +1 -0
  254. package/dist/tools/write_files.d.ts +158 -0
  255. package/dist/tools/write_files.d.ts.map +1 -0
  256. package/dist/tools/write_files.js +541 -0
  257. package/dist/tools/write_files.js.map +1 -0
  258. package/dist/transport.d.ts +77 -0
  259. package/dist/transport.d.ts.map +1 -0
  260. package/dist/transport.js +448 -0
  261. package/dist/transport.js.map +1 -0
  262. package/dist/ui/card-asset-broker.d.ts +42 -0
  263. package/dist/ui/card-asset-broker.d.ts.map +1 -0
  264. package/dist/ui/card-asset-broker.js +479 -0
  265. package/dist/ui/card-asset-broker.js.map +1 -0
  266. package/dist/ui/grid-resource.d.ts +252 -0
  267. package/dist/ui/grid-resource.d.ts.map +1 -0
  268. package/dist/ui/grid-resource.js +680 -0
  269. package/dist/ui/grid-resource.js.map +1 -0
  270. package/dist/ui/viewer-static/index.html +95 -0
  271. package/dist/ui/viewer-static/viewer.css +451 -0
  272. package/dist/ui/viewer-static/viewer.js +1405 -0
  273. package/dist/validate/full-scan.d.ts +87 -0
  274. package/dist/validate/full-scan.d.ts.map +1 -0
  275. package/dist/validate/full-scan.js +299 -0
  276. package/dist/validate/full-scan.js.map +1 -0
  277. package/dist/validate/index.d.ts +15 -0
  278. package/dist/validate/index.d.ts.map +1 -0
  279. package/dist/validate/index.js +18 -0
  280. package/dist/validate/index.js.map +1 -0
  281. package/dist/validate/marker.d.ts +89 -0
  282. package/dist/validate/marker.d.ts.map +1 -0
  283. package/dist/validate/marker.js +87 -0
  284. package/dist/validate/marker.js.map +1 -0
  285. package/dist/validate/phash.d.ts +135 -0
  286. package/dist/validate/phash.d.ts.map +1 -0
  287. package/dist/validate/phash.js +307 -0
  288. package/dist/validate/phash.js.map +1 -0
  289. package/dist/validate/render.d.ts +38 -0
  290. package/dist/validate/render.d.ts.map +1 -0
  291. package/dist/validate/render.js +155 -0
  292. package/dist/validate/render.js.map +1 -0
  293. package/dist/watch/index.d.ts +12 -0
  294. package/dist/watch/index.d.ts.map +1 -0
  295. package/dist/watch/index.js +12 -0
  296. package/dist/watch/index.js.map +1 -0
  297. package/dist/watch/watcher.d.ts +65 -0
  298. package/dist/watch/watcher.d.ts.map +1 -0
  299. package/dist/watch/watcher.js +238 -0
  300. package/dist/watch/watcher.js.map +1 -0
  301. package/package.json +70 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview.js","sourceRoot":"","sources":["../../src/tools/preview.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import type { KitStore } from "../store/interface.js";
3
+ /** 256 KiB in bytes — hard cap per DesignSync contract. Re-exported for tests. */
4
+ export declare const MAX_FILE_BYTES: number;
5
+ /**
6
+ * Validate that a relative path stays within a kit root (prevents traversal).
7
+ * Throws an `InvalidPathError` McpError on escape, else returns.
8
+ *
9
+ * The check is purely lexical — it resolves `relativePath` against a synthetic
10
+ * root and asks whether the result escapes it — so it needs no real filesystem
11
+ * path (the tool no longer holds a `kitsRoot`; the injected `KitStore` owns
12
+ * where kits physically live). Using `path.relative`/`path.isAbsolute` rather
13
+ * than string checks against a hard-coded "/" keeps traversal protection
14
+ * correct across platforms and separator styles. This tool-level guard is what
15
+ * surfaces `InvalidPathError` to the client; the store also guards internally
16
+ * (defense in depth), but with its own generic message.
17
+ */
18
+ export declare function assertSafeRelativePath(relativePath: string): void;
19
+ /**
20
+ * Register the `mcp__genie__read_file` tool on the given MCP server.
21
+ *
22
+ * @param server The MCP server to register the tool on.
23
+ * @param kitStore The injected kit backend (M1-14a-1a / DRO-540). Read-file now
24
+ * routes through `KitStore.readFile`, which owns MIME
25
+ * resolution, utf-8/base64 classification, and the 256 KiB cap —
26
+ * so the SAME verb runs against `LocalFsKitStore` (disk) or
27
+ * `GitHostKitStore` (git host) with byte-identical output. The
28
+ * tool keeps only its request-shape guards (kitId + path
29
+ * traversal) and the MCP error mapping.
30
+ *
31
+ * AC1: Tool name `mcp__genie__read_file`.
32
+ * AC2: Input `{ kitId: string, path: string }`.
33
+ * AC3: Returns `{ content, encoding, mimeType }`.
34
+ * AC4: Files > 256 KiB → MCP error -32603.
35
+ * AC5: Binary files → base64 encoding.
36
+ * AC6: Path traversal → InvalidPathError (InvalidParams -32602).
37
+ * AC7: Unknown path → MCP error -32602.
38
+ */
39
+ export declare function registerReadFile(server: McpServer, kitStore: KitStore): void;
40
+ //# sourceMappingURL=read_file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read_file.d.ts","sourceRoot":"","sources":["../../src/tools/read_file.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAItD,kFAAkF;AAClF,eAAO,MAAM,cAAc,QAAa,CAAC;AAEzC;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAWjE;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAyE5E"}
@@ -0,0 +1,114 @@
1
+ import { isAbsolute, relative, resolve, sep } from "node:path";
2
+ import { z } from "zod";
3
+ import { McpError, ErrorCode } from "@modelcontextprotocol/sdk/types.js";
4
+ import { FileTooLargeError, NotFoundError } from "../store/interface.js";
5
+ import { isSafeKitId } from "../store/kit-files.js";
6
+ /** 256 KiB in bytes — hard cap per DesignSync contract. Re-exported for tests. */
7
+ export const MAX_FILE_BYTES = 256 * 1024;
8
+ /**
9
+ * Validate that a relative path stays within a kit root (prevents traversal).
10
+ * Throws an `InvalidPathError` McpError on escape, else returns.
11
+ *
12
+ * The check is purely lexical — it resolves `relativePath` against a synthetic
13
+ * root and asks whether the result escapes it — so it needs no real filesystem
14
+ * path (the tool no longer holds a `kitsRoot`; the injected `KitStore` owns
15
+ * where kits physically live). Using `path.relative`/`path.isAbsolute` rather
16
+ * than string checks against a hard-coded "/" keeps traversal protection
17
+ * correct across platforms and separator styles. This tool-level guard is what
18
+ * surfaces `InvalidPathError` to the client; the store also guards internally
19
+ * (defense in depth), but with its own generic message.
20
+ */
21
+ export function assertSafeRelativePath(relativePath) {
22
+ const root = resolve("/__genie_kit_root__");
23
+ const target = resolve(root, relativePath);
24
+ const rel = relative(root, target);
25
+ const escapes = rel === ".." || rel.startsWith(`..${sep}`) || isAbsolute(rel);
26
+ if (escapes) {
27
+ throw new McpError(ErrorCode.InvalidParams, `InvalidPathError: path traversal is not allowed`);
28
+ }
29
+ }
30
+ /**
31
+ * Register the `mcp__genie__read_file` tool on the given MCP server.
32
+ *
33
+ * @param server The MCP server to register the tool on.
34
+ * @param kitStore The injected kit backend (M1-14a-1a / DRO-540). Read-file now
35
+ * routes through `KitStore.readFile`, which owns MIME
36
+ * resolution, utf-8/base64 classification, and the 256 KiB cap —
37
+ * so the SAME verb runs against `LocalFsKitStore` (disk) or
38
+ * `GitHostKitStore` (git host) with byte-identical output. The
39
+ * tool keeps only its request-shape guards (kitId + path
40
+ * traversal) and the MCP error mapping.
41
+ *
42
+ * AC1: Tool name `mcp__genie__read_file`.
43
+ * AC2: Input `{ kitId: string, path: string }`.
44
+ * AC3: Returns `{ content, encoding, mimeType }`.
45
+ * AC4: Files > 256 KiB → MCP error -32603.
46
+ * AC5: Binary files → base64 encoding.
47
+ * AC6: Path traversal → InvalidPathError (InvalidParams -32602).
48
+ * AC7: Unknown path → MCP error -32602.
49
+ */
50
+ export function registerReadFile(server, kitStore) {
51
+ server.registerTool("mcp__genie__read_file", {
52
+ title: "Read File",
53
+ description: "Read the contents of a single file from a UI kit. Returns text (utf-8) " +
54
+ "or binary (base64) content. Files larger than 256 KiB are rejected. Typically " +
55
+ "follows list_files, to inspect one file's current content before refining it " +
56
+ "or editing by hand.",
57
+ inputSchema: {
58
+ kitId: z.string().min(1).describe("The UI kit identifier."),
59
+ path: z.string().describe("Relative path within the kit directory."),
60
+ },
61
+ }, async ({ kitId, path: relPath }) => {
62
+ // Reject an unsafe kitId through the SAME shared rule `list_files` and the
63
+ // stores use (`isSafeKitId`), so the tools' traversal defenses cannot
64
+ // silently drift (AC1). This rejects the empty string — whose kit-dir
65
+ // resolves to the kits ROOT, letting a crafted `path` such as
66
+ // `other-kit/secret.txt` read a SIBLING kit's bytes (AC-SEC) — as well as
67
+ // `.`/`..` and any separator. The `.min(1)` above already blocks an empty
68
+ // kitId at the MCP schema layer; this is the defense-in-depth guard for
69
+ // programmatic callers that bypass schema validation.
70
+ if (!isSafeKitId(kitId)) {
71
+ throw new McpError(ErrorCode.InvalidParams, `InvalidPathError: invalid kit identifier`);
72
+ }
73
+ // AC6 — path traversal check (surfaces InvalidPathError to the client).
74
+ assertSafeRelativePath(relPath);
75
+ let file;
76
+ try {
77
+ // AC3/AC4/AC5 — the store returns { content, encoding, mimeType },
78
+ // owns the 256 KiB cap (throws FileTooLargeError), and classifies
79
+ // binary→base64 / text→utf-8.
80
+ file = await kitStore.readFile(kitId, relPath);
81
+ }
82
+ catch (error) {
83
+ // AC4 — over the size cap. Preserve the exact client-facing wording.
84
+ if (error instanceof FileTooLargeError) {
85
+ throw new McpError(ErrorCode.InternalError, `File exceeds 256 KiB cap (actual: ${error.actualBytes} bytes)`);
86
+ }
87
+ // AC7 — a missing file OR a missing kit both surface as "File not
88
+ // found" (the pre-store tool stat()'d the resolved target and reported
89
+ // the same for either case).
90
+ if (error instanceof NotFoundError) {
91
+ throw new McpError(ErrorCode.InvalidParams, `File not found: ${relPath}`);
92
+ }
93
+ throw error; // unexpected — bubble up as an MCP internal error.
94
+ }
95
+ // AC3 — structured response. Provide `structuredContent` so MCP clients
96
+ // can consume `{ content, encoding, mimeType }` directly without parsing,
97
+ // while keeping a JSON text part for backward compatibility.
98
+ const payload = {
99
+ content: file.content,
100
+ encoding: file.encoding,
101
+ mimeType: file.mimeType,
102
+ };
103
+ return {
104
+ content: [
105
+ {
106
+ type: "text",
107
+ text: JSON.stringify(payload),
108
+ },
109
+ ],
110
+ structuredContent: payload,
111
+ };
112
+ });
113
+ }
114
+ //# sourceMappingURL=read_file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read_file.js","sourceRoot":"","sources":["../../src/tools/read_file.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,220 @@
1
+ /**
2
+ * MCP tool: refine (M2-04 · DRO-251) — genie's iterate-on-an-existing-component
3
+ * verb.
4
+ *
5
+ * Where `conjure` (M2-03) generates a component from a blank-slate prompt,
6
+ * `refine` takes a component that ALREADY exists in a kit plus a free-form
7
+ * `instruction` ("make the border radius softer") and an optional canvas-style
8
+ * `region: { x, y, w, h }` rect, and returns the updated component — a unified
9
+ * diff for the human plus the full updated file set (the source of truth, AC5).
10
+ *
11
+ * It reuses M2-03's machinery deliberately (AC6 "same retry-once pattern as
12
+ * M2-03"): the request/validate/retry loop, the COMPONENT_SCHEMA `json_schema`
13
+ * response_format, the Ajv validation, and the single retry-with-feedback all
14
+ * come from the shared `llm/component-response.ts` harness. The delta from
15
+ * `conjure` is entirely in the prompt (diff-mode: "edit, don't rewrite") and two
16
+ * new steps this file owns: loading the current source from the kit (AC3) and,
17
+ * when a region is given, rendering a crop of it for vision input (AC4/AC7).
18
+ *
19
+ * Two DISTINCT retry mechanisms are in play here, at different layers — don't
20
+ * conflate them when reading this file (same split as `conjure.ts`):
21
+ * 1. The shared harness's "retries once on validation failure" above (AC6)
22
+ * is a structurally-valid-but-wrong-shape reply getting one more attempt
23
+ * with the Ajv error fed back into the prompt.
24
+ * 2. Each of those (up to 2) calls individually goes through M2-06's
25
+ * `withRetry(createChatCompletion)` (DRO-253, see `defaultChatCompletion`
26
+ * below) for transient network/429/5xx failures — invisible to this
27
+ * file's own logic and to the shared harness, handled entirely inside the
28
+ * `chat` seam.
29
+ *
30
+ * ── Import-time safety (same as conjure) ──────────────────────────────────────
31
+ * `../llm/client.js` constructs its `llmClient` singleton eagerly at module load
32
+ * and throws `MissingLLMConfigError` when `GENIE_LLM_*` is unset. So the client
33
+ * is only a *type* import here (erased by `verbatimModuleSyntax`); the default
34
+ * runtime `chat` seam reaches it via a lazy `await import(...)`, touched only
35
+ * when a real `refine` call runs. Tests inject their own `chat` + `kitStore` +
36
+ * `cropper` and never load the client or Playwright. (`../llm/retry.js`'s
37
+ * `withRetry`, by contrast, has no such eager side effect — it's a plain
38
+ * higher-order function — so it's imported statically below and applied
39
+ * inside that same lazy seam, same as `conjure.ts`.)
40
+ *
41
+ * ── AC7 region crop is a lazy, OPTIONAL peer dependency ───────────────────────
42
+ * AC7 asks for a headless-Chromium crop via Playwright, and calls Playwright
43
+ * "M3-02's validator setup is a peer dependency" — i.e. it is NOT one of genie's
44
+ * hard `dependencies` (M3-02 hasn't landed). So the default `RegionCropper`
45
+ * resolves Playwright with a *runtime* `import(...)` and degrades gracefully when
46
+ * it is absent: it logs a warning and returns no image, and `refine` still runs
47
+ * — the region's coordinates are described in the prompt text so the model can
48
+ * still scope its edit. This keeps `refine` shippable now (CI's
49
+ * `--frozen-lockfile` install stays green without Playwright) and lets the real
50
+ * crop light up automatically once M3-02 adds Playwright. The cropper is
51
+ * injectable, so tests exercise both the crop-attached and crop-unavailable
52
+ * paths with a stub.
53
+ */
54
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
55
+ import { z } from "zod";
56
+ import { type ValidatedComponent } from "../llm/schema.js";
57
+ import { type LoadedPrompt } from "../llm/prompts.js";
58
+ import { type ChatCompletionFn, type UsageInfo } from "../llm/component-response.js";
59
+ import { type GeneratedFileWithEncoding } from "../llm/generated-files.js";
60
+ export declare const REFINE_TOOL_NAME = "mcp__genie__refine";
61
+ /** Default model routing alias — the same one `conjure` uses (M2-05). Resolved
62
+ * to a concrete provider model by the configured endpoint/gateway. Defined
63
+ * locally to keep `refine` decoupled from `conjure`'s module. */
64
+ export declare const DEFAULT_MODEL = "design-default";
65
+ /** PascalCase component-name shape — identical to `COMPONENT_SCHEMA`'s
66
+ * `componentName` pattern, so an id `refine` accepts is one `conjure` could have
67
+ * produced. */
68
+ export declare const COMPONENT_NAME_PATTERN: RegExp;
69
+ declare const regionSchema: z.ZodObject<{
70
+ x: z.ZodNumber;
71
+ y: z.ZodNumber;
72
+ w: z.ZodNumber;
73
+ h: z.ZodNumber;
74
+ }, z.core.$strict>;
75
+ export type Region = z.infer<typeof regionSchema>;
76
+ declare const refineArgsSchema: z.ZodObject<{
77
+ kitId: z.ZodString;
78
+ componentName: z.ZodString;
79
+ instruction: z.ZodString;
80
+ region: z.ZodOptional<z.ZodObject<{
81
+ x: z.ZodNumber;
82
+ y: z.ZodNumber;
83
+ w: z.ZodNumber;
84
+ h: z.ZodNumber;
85
+ }, z.core.$strict>>;
86
+ model: z.ZodDefault<z.ZodString>;
87
+ }, z.core.$strict>;
88
+ export type RefineArgs = z.infer<typeof refineArgsSchema>;
89
+ /**
90
+ * What `refine` returns (AC5): a unified `diff` (informational — for the human
91
+ * reading the change) plus the full updated `files` (the source of truth). Also
92
+ * carries `componentName`/`group`/`manifestEntry` (echoing the refined
93
+ * component) and token `usage`, mirroring `conjure`'s richer return so a caller
94
+ * accounts for both verbs the same way.
95
+ */
96
+ export interface RefineResult extends Record<string, unknown> {
97
+ componentName: string;
98
+ group: string;
99
+ /** Unified diff (git-style) from the original file set to the updated one. */
100
+ diff: string;
101
+ files: RefinedFile[];
102
+ manifestEntry: ValidatedComponent["manifestEntry"];
103
+ usage: UsageInfo;
104
+ }
105
+ export type RefinedFile = GeneratedFileWithEncoding;
106
+ /** A file loaded from the kit: the store's `readFile` result plus the `path` the
107
+ * caller passed in (the store does not echo it back). */
108
+ export interface LoadedFile {
109
+ path: string;
110
+ content: string;
111
+ encoding: string;
112
+ mimeType: string;
113
+ }
114
+ /** The `readFile` result shape `KitStore` returns — content + encoding + MIME,
115
+ * WITHOUT the path (the caller already knows it). Kept structurally identical to
116
+ * `KitFileContent` so the real `KitStore` is assignable to `RefineKitStore`. */
117
+ export interface KitFileRead {
118
+ content: string;
119
+ encoding: string;
120
+ mimeType: string;
121
+ }
122
+ /**
123
+ * The narrow kit-read port `refine` needs: list a kit's files (to discover which
124
+ * belong to `componentName`) and read each one (AC3). `KitStore` satisfies this
125
+ * structurally — the same pattern `conjure_screen` uses for its project port.
126
+ *
127
+ * Discovery via `listFiles` rather than `listComponents`: the latter reads the
128
+ * M3-03-compiled `.genie/manifest.json` card index, which does not exist yet in
129
+ * M2. `listFiles` + a path filter is the manifest-independent way to find a
130
+ * component's files today; when M3-03 lands, this can switch to the manifest
131
+ * without changing the tool's contract.
132
+ */
133
+ export interface RefineKitStore {
134
+ listFiles(kitId: string): Promise<{
135
+ path: string;
136
+ }[]>;
137
+ readFile(kitId: string, path: string): Promise<KitFileRead>;
138
+ }
139
+ /** A request to render a preview and screenshot one rectangle of it. */
140
+ export interface RegionCropRequest {
141
+ /** The `<Name>.html` preview markup to render. */
142
+ html: string;
143
+ /** The rect to screenshot, in the preview's own pixel coordinates. */
144
+ region: Region;
145
+ /** The viewport to render the preview at (must contain the region). */
146
+ viewport: {
147
+ width: number;
148
+ height: number;
149
+ };
150
+ }
151
+ /** The crop result: a `data:image/png;base64,…` URL, or `null` when a crop could
152
+ * not be produced (Playwright absent, or a render/screenshot failure). `null` is
153
+ * a graceful-degradation signal, never an error — `refine` proceeds without the
154
+ * image (AC7). */
155
+ export interface RegionCropResult {
156
+ dataUrl: string | null;
157
+ }
158
+ /**
159
+ * The region-crop seam (AC7). Production supplies {@link defaultRegionCropper}
160
+ * (lazy Playwright); tests inject a stub so no browser is launched and the
161
+ * crop-attached / crop-unavailable branches are both exercisable offline.
162
+ */
163
+ export interface RegionCropper {
164
+ crop(request: RegionCropRequest): Promise<RegionCropResult>;
165
+ }
166
+ export interface RefineDeps {
167
+ /** Kit-read port (AC3). Required — `refine` cannot load source without it. */
168
+ kitStore: RefineKitStore;
169
+ /** Chat-completion seam (AC6). Defaults to a lazy wrapper over the M2-01 client. */
170
+ chat?: ChatCompletionFn;
171
+ /** Region-crop seam (AC7). Defaults to lazy Playwright with graceful degradation. */
172
+ cropper?: RegionCropper;
173
+ /** Prompt loader override (tests). Defaults to the real versioned loader. */
174
+ loadSystemPrompt?: () => LoadedPrompt;
175
+ }
176
+ /** Typed failure surfaced to the tool boundary (mapped to an MCP error result).
177
+ * `ERR_COMPONENT_NOT_FOUND` — no files for `componentName` in the kit (or the
178
+ * kit itself is absent); `ERR_LLM_OUTPUT_INVALID` — the model did not return a
179
+ * schema-valid component after the retry (same code `conjure` throws). */
180
+ export declare class RefineError extends Error {
181
+ readonly code: "ERR_COMPONENT_NOT_FOUND" | "ERR_LLM_OUTPUT_INVALID";
182
+ readonly details?: Record<string, unknown> | undefined;
183
+ constructor(code: "ERR_COMPONENT_NOT_FOUND" | "ERR_LLM_OUTPUT_INVALID", message: string, details?: Record<string, unknown> | undefined);
184
+ }
185
+ /**
186
+ * Default cropper (AC7): render the preview HTML in headless Chromium and
187
+ * screenshot the region rect, returning it as a PNG data URL for vision input.
188
+ * Degrades gracefully — if Playwright is absent, or launch/render/screenshot
189
+ * fails, it logs and returns `{ dataUrl: null }` so `refine` continues without
190
+ * the image rather than failing the whole call over an optional enhancement.
191
+ */
192
+ export declare const defaultRegionCropper: RegionCropper;
193
+ /**
194
+ * Choose a render viewport for the crop that (a) is at least the component's
195
+ * natural preview size (read from `meta.json`'s `viewport` when available, so the
196
+ * layout matches how the card really renders) and (b) is big enough to contain
197
+ * the requested region. Falls back to a sensible default when there is no
198
+ * parseable meta.
199
+ */
200
+ export declare function deriveRenderViewport(files: LoadedFile[], region: Region): {
201
+ width: number;
202
+ height: number;
203
+ };
204
+ /**
205
+ * Build a git-style unified diff from the original file set to the updated one,
206
+ * matched by path. Only CHANGED files contribute a hunk (unchanged files are
207
+ * omitted so the diff shows exactly what the refinement did); added/removed
208
+ * files diff against `/dev/null`. Informational only — `files` is authoritative.
209
+ */
210
+ export declare function buildUnifiedDiff(originals: Map<string, string>, updated: Map<string, string>): string;
211
+ /**
212
+ * Refine one existing component. Flow: load current files (AC3) → optionally
213
+ * render a region crop (AC4/AC7) → run the shared request/validate/retry loop
214
+ * with the diff-mode prompt (AC6) → compute the unified diff (AC5) → return
215
+ * `{ diff, files, … }` and log a per-call line (AC8).
216
+ */
217
+ export declare function refine(deps: RefineDeps, args: unknown): Promise<RefineResult>;
218
+ export declare function registerRefineTool(server: McpServer, deps: RefineDeps): void;
219
+ export {};
220
+ //# sourceMappingURL=refine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refine.d.ts","sourceRoot":"","sources":["../../src/tools/refine.ts"],"names":[],"mappings":"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"}