@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":"git-host.js","sourceRoot":"","sources":["../../src/store/git-host.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export type { KitId, ProjectId, PlanId, KitMeta, ProjectMeta, ComponentEntry, FileOp, FileEncoding, KitFileContent, KitFileEntry, KitStore, ProjectStore, } from "./interface.js";
2
+ export { FileTooLargeError, NotFoundError, MissingCredentialError, MAX_FILE_BYTES, } from "./interface.js";
3
+ export { LocalFsKitStore, LocalFsProjectStore } from "./local.js";
4
+ export { GitHostKitStore, GitHostProjectStore, type GitHostConfig, } from "./git-host.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,KAAK,EACL,SAAS,EACT,MAAM,EACN,OAAO,EACP,WAAW,EACX,cAAc,EACd,MAAM,EACN,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,QAAQ,EACR,YAAY,GACb,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,sBAAsB,EACtB,cAAc,GACf,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,KAAK,aAAa,GACnB,MAAM,eAAe,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { FileTooLargeError, NotFoundError, MissingCredentialError, MAX_FILE_BYTES, } from "./interface.js";
2
+ export { LocalFsKitStore, LocalFsProjectStore } from "./local.js";
3
+ export { GitHostKitStore, GitHostProjectStore, } from "./git-host.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":"AAeA,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,sBAAsB,EACtB,cAAc,GACf,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EACL,eAAe,EACf,mBAAmB,GAEpB,MAAM,eAAe,CAAC"}
@@ -0,0 +1,322 @@
1
+ /**
2
+ * Storage abstraction for genie kits and projects.
3
+ *
4
+ * All M1 tools are implemented against these interfaces, not against `fs`
5
+ * directly. Two adapters ship with M1:
6
+ * - LocalFsStore — solo dev; kit/project = directory on local FS
7
+ * - GitHostStore — shared; kit/project = git-tracked tree on any git host
8
+ */
9
+ /** Immutable type discriminator stamped on every kit record. */
10
+ export declare const KIT_TYPE: "GENIE_KIT";
11
+ /** Unique identifier for a kit (opaque string, adapter-assigned). */
12
+ export type KitId = string;
13
+ /** Unique identifier for a project (opaque string, adapter-assigned). */
14
+ export type ProjectId = string;
15
+ /**
16
+ * A plan is a staging area for multi-file edits before they are committed.
17
+ * In LocalFsStore it maps to a temp directory; in GitHostStore it maps to a
18
+ * branch (`plan/${planId}`).
19
+ */
20
+ export type PlanId = string;
21
+ /** Metadata returned when listing or getting a kit. */
22
+ export interface KitMeta {
23
+ id: KitId;
24
+ name: string;
25
+ type: typeof KIT_TYPE;
26
+ createdAt: string;
27
+ }
28
+ /** Metadata returned when listing or getting a project. */
29
+ export interface ProjectMeta {
30
+ id: ProjectId;
31
+ name: string;
32
+ kitId?: KitId;
33
+ createdAt: string;
34
+ }
35
+ /** Component entry returned by listComponents. */
36
+ export interface ComponentEntry {
37
+ name: string;
38
+ group: string;
39
+ path: string;
40
+ viewport: string;
41
+ hash: string;
42
+ lastModified: string;
43
+ }
44
+ /** Encoding of a file's bytes as carried over the wire by `readFile`. */
45
+ export type FileEncoding = "utf-8" | "base64";
46
+ /**
47
+ * Rich result of `KitStore.readFile` — the shape the `read_file` MCP tool
48
+ * returns verbatim (RFC §9). MIME resolution + text/binary classification live
49
+ * in the store (see `kit-files.ts`), so a `read_file` call is byte-identical
50
+ * whichever adapter backs it:
51
+ * - `encoding: "utf-8"` → `content` is the decoded text.
52
+ * - `encoding: "base64"` → `content` is base64 (binary files).
53
+ * The 256 KiB cap (`MAX_FILE_BYTES`) is enforced by the store, which throws
54
+ * `FileTooLargeError` before returning; the tool maps that onto its wire error.
55
+ */
56
+ export interface KitFileContent {
57
+ content: string;
58
+ encoding: FileEncoding;
59
+ mimeType: string;
60
+ }
61
+ /**
62
+ * Rich per-file entry returned by `KitStore.listFiles` — the shape the
63
+ * `list_files` MCP tool returns (RFC §9). Carries a Subresource-Integrity
64
+ * hash (`sha256-<base64>`), byte size, and an ISO-8601 modification time.
65
+ *
66
+ * ── git-host `lastModified` parity (AC / DRO-540) ─────────────────────────────
67
+ * `lastModified` is defined per-adapter and the granularity deliberately
68
+ * differs:
69
+ * - `LocalFsKitStore` uses each file's real filesystem `mtime` — true
70
+ * per-file granularity.
71
+ * - `GitHostKitStore` uses the repository's last-update timestamp
72
+ * (`updated_at`, falling back to `created_at`) for EVERY entry in a
73
+ * listing — per-*repo* granularity, not per-file.
74
+ * The reason is cost: the Gitea contents API (`GET …/contents/<path>`) carries
75
+ * `sha`/`size` but no dependable per-file commit time across Gitea versions.
76
+ * True per-file times would require a commits-API query per file
77
+ * (`GET …/commits?path=<file>&limit=1`) — an N+1 fan-out over a whole kit tree.
78
+ * The single repo-metadata read is the honest, cheap parity: "these files were
79
+ * last touched no earlier than the repo's last push." Both satisfy the ISO-8601
80
+ * contract; callers that need per-file precision on a git host must opt into the
81
+ * commits API (a tracked follow-up, intentionally out of scope here).
82
+ */
83
+ export interface KitFileEntry {
84
+ path: string;
85
+ size: number;
86
+ hash: string;
87
+ lastModified: string;
88
+ }
89
+ /** A single file operation (write or delete) for plan commits. */
90
+ export type FileOp = {
91
+ kind: "write";
92
+ path: string;
93
+ content: string;
94
+ } | {
95
+ kind: "delete";
96
+ path: string;
97
+ };
98
+ /**
99
+ * A single already-authorized file write for `KitStore.writeFiles`.
100
+ *
101
+ * The `write_files` TOOL resolves and validates every input before building
102
+ * these ops — glob-gating against the plan's `writes`, duplicate-path
103
+ * rejection, the byte-cap, and `localPath` containment/streaming decisions all
104
+ * happen tool-side (mirroring how `delete_files` keeps plan-gating out of the
105
+ * store). By the time an op reaches the store it is a bare "put these bytes at
106
+ * this kit-relative path", sourced one of two ways:
107
+ * - `content` — inline bytes already in memory (decoded from `data`).
108
+ * - `sourcePath` — an ABSOLUTE, already-containment-checked path the store
109
+ * streams from (`createReadStream`), so a large `localPath` upload is never
110
+ * fully buffered in memory (the LocalFs "streaming" property the issue
111
+ * calls out). The tool guarantees `sourcePath` is inside the plan's
112
+ * `localDir`; the store trusts it and only streams.
113
+ * `path` is kit-relative (no leading slash, no `..` segment — the tool rejects
114
+ * those); the store additionally guards traversal as defense-in-depth.
115
+ */
116
+ export type WriteOp = {
117
+ path: string;
118
+ content: Buffer;
119
+ } | {
120
+ path: string;
121
+ sourcePath: string;
122
+ };
123
+ /** Thrown when a kit already exists with the given ID. */
124
+ export declare class KitAlreadyExistsError extends Error {
125
+ readonly kitId: string;
126
+ constructor(kitId: string);
127
+ }
128
+ /** Thrown when `readFile` encounters a file exceeding the 256 KiB cap. */
129
+ export declare class FileTooLargeError extends Error {
130
+ readonly path: string;
131
+ readonly actualBytes: number;
132
+ constructor(path: string, actualBytes: number);
133
+ }
134
+ /** Thrown when a referenced kit/project/plan does not exist. */
135
+ export declare class NotFoundError extends Error {
136
+ readonly resource: string;
137
+ readonly id: string;
138
+ constructor(resource: string, id: string);
139
+ }
140
+ /** Thrown when a required credential is missing. */
141
+ export declare class MissingCredentialError extends Error {
142
+ readonly envVar: string;
143
+ constructor(envVar: string);
144
+ }
145
+ /**
146
+ * A file in a `KitStore.writeFiles` batch could not be committed; the whole
147
+ * call was rolled back and the kit tree restored to its pre-call state.
148
+ *
149
+ * Lives in the store layer (not the tool) because the store now owns the
150
+ * atomic write transaction — `LocalFsKitStore` throws this from its
151
+ * rename-to-temp/rename-back commit, `GitHostKitStore` from a failed
152
+ * contents-API write it then unwinds. The `write_files` tool imports it to map
153
+ * onto its wire-error taxonomy (code `WriteFailedError`).
154
+ */
155
+ export declare class WriteFailedError extends Error {
156
+ readonly path: string;
157
+ readonly cause: string;
158
+ readonly code = "WriteFailedError";
159
+ constructor(path: string, cause: string);
160
+ }
161
+ /**
162
+ * A `KitStore.writeFiles` commit failed AND the rollback itself could not fully
163
+ * undo/restore every step, so the kit tree is NOT guaranteed to match its
164
+ * pre-call state (unlike the ordinary `WriteFailedError` path, which guarantees
165
+ * a clean rollback). Surfaced instead of silently swallowing the rollback
166
+ * failure and reporting the original commit error as if rollback had fully
167
+ * succeeded (a Copilot review finding on PR #106, preserved through the store
168
+ * re-plumb).
169
+ */
170
+ export declare class RollbackIncompleteError extends Error {
171
+ readonly commitError: string;
172
+ readonly rollbackFailures: string[];
173
+ readonly code = "RollbackIncompleteError";
174
+ constructor(commitError: string, rollbackFailures: string[]);
175
+ }
176
+ /** Maximum file size in bytes that readFile will return (256 KiB). */
177
+ export declare const MAX_FILE_BYTES = 262144;
178
+ /**
179
+ * AC1 — KitStore defines:
180
+ * listKits, getKit, listFiles, readFile(kitId, path),
181
+ * createKit, openPlan(kitId, ops) → planId,
182
+ * commitPlan(kitId, planId, ops), closePlan(kitId, planId).
183
+ *
184
+ * The file-content trio (`listFiles`/`readFile`/`deleteFile`) is what the
185
+ * fs-native MCP kit-file verbs (`list_files`/`read_file`/`delete_files`) bind
186
+ * to (M1-14a-1a / DRO-540) — so injecting a `GitHostKitStore` carries those
187
+ * verbs onto the git host, not just the metadata verbs.
188
+ */
189
+ export interface KitStore {
190
+ /** List all available kits. */
191
+ listKits(): Promise<KitMeta[]>;
192
+ /** Get metadata for a single kit. Throws NotFoundError if missing. */
193
+ getKit(kitId: KitId): Promise<KitMeta>;
194
+ /**
195
+ * List files within a kit as rich entries (path + size + SRI hash +
196
+ * lastModified). Sorted by `path` ASC for deterministic output. The
197
+ * default-excluded dirs (`node_modules`/`.git`/`dist`/`.genie-tmp`), the
198
+ * `.kit.json` marker, and any `.genieignore` patterns are honoured by the
199
+ * adapter that has a notion of them (LocalFs); adapters without local
200
+ * ignore semantics (GitHost) treat the tracked tree as authoritative.
201
+ * Throws NotFoundError if the kit does not exist.
202
+ */
203
+ listFiles(kitId: KitId): Promise<KitFileEntry[]>;
204
+ /**
205
+ * List components within a kit, optionally filtered by group.
206
+ * Returns an array of component metadata sorted by group ASC, then name ASC, then path ASC (for deterministic ordering when group + name collide).
207
+ * Throws NotFoundError if the kit does not exist.
208
+ */
209
+ listComponents(params: {
210
+ kitId: KitId;
211
+ group?: string;
212
+ }): Promise<ComponentEntry[]>;
213
+ /**
214
+ * Read a file from a kit as rich content (content + encoding + mimeType).
215
+ * The store owns MIME resolution and text/binary classification, and returns
216
+ * base64 for binary files / utf-8 for text.
217
+ * Throws FileTooLargeError if the file exceeds MAX_FILE_BYTES.
218
+ * Throws NotFoundError if the kit or file does not exist.
219
+ */
220
+ readFile(kitId: KitId, path: string): Promise<KitFileContent>;
221
+ /**
222
+ * Delete a single file from a kit's readable surface (the LocalFs kit dir /
223
+ * the git-host default branch). Returns `{ existed }`:
224
+ * - `existed: true` — the file was present and has been removed.
225
+ * - `existed: false` — the file (or its whole kit) was already absent — an
226
+ * idempotent no-op, NOT an error. This is the `delete_files`
227
+ * silent-retry case (an authorized path that no longer exists lands in
228
+ * `notFoundPaths`, not a failure).
229
+ * Plan-gating (which paths a caller may delete) is NOT a store concern — it
230
+ * stays in the `delete_files` tool (planId → `deletes` globs), as does the
231
+ * path-shape / kitId-shape traversal guard. This primitive only performs the
232
+ * physical removal once the tool has authorized it. A hard removal failure
233
+ * that is NOT "already absent" (e.g. a directory target → EISDIR, a
234
+ * permission error) propagates as the adapter's native error, which the tool
235
+ * surfaces as `DeleteFailed`.
236
+ */
237
+ deleteFile(kitId: KitId, path: string): Promise<{
238
+ existed: boolean;
239
+ }>;
240
+ /**
241
+ * Atomically write a batch of files into a kit's readable surface (the
242
+ * LocalFs kit dir / the git-host default branch — the SAME surface
243
+ * `readFile`/`listFiles`/`deleteFile` see, NOT a plan branch). Returns the
244
+ * kit-relative paths written, in input order.
245
+ *
246
+ * All-or-nothing (the shipped `write_files` AC10 contract, preserved through
247
+ * the store re-plumb): either every op lands, or the kit tree is restored to
248
+ * its exact pre-call state and the failure is surfaced. Two failure shapes:
249
+ * - `WriteFailedError` — a file could not be committed AND rollback
250
+ * fully restored the tree (clean failure; nothing landed).
251
+ * - `RollbackIncompleteError` — the commit failed AND rollback could not
252
+ * fully restore the tree (the kit may be partially modified).
253
+ *
254
+ * Per-adapter realization:
255
+ * - `LocalFsKitStore` — stage every op under `<kitDir>/.genie-tmp/<rand>/`,
256
+ * back up existing destinations, rename staged files in, and on any
257
+ * failure remove what committed + rename the backups back (same-filesystem
258
+ * rename = atomic). Streams `sourcePath` ops so large uploads never fully
259
+ * buffer.
260
+ * - `GitHostKitStore` — commit each op to the default branch via the
261
+ * contents API, capturing prior blob state first; on failure, re-PUT the
262
+ * captured state / delete created files to unwind. A git host has no
263
+ * rename transaction, so atomicity is best-effort-with-surfaced-failures
264
+ * rather than filesystem-atomic — the same contract shape, honoured with
265
+ * the primitive the host offers.
266
+ *
267
+ * Plan-gating (which paths may be written, the byte cap, `localPath`
268
+ * containment, duplicate rejection) is NOT a store concern — it stays in the
269
+ * `write_files` tool, exactly as `deleteFile` keeps `deletes`-glob gating in
270
+ * `delete_files`. The store trusts the resolved `WriteOp[]` and only commits.
271
+ */
272
+ writeFiles(kitId: KitId, ops: WriteOp[]): Promise<{
273
+ writtenPaths: string[];
274
+ }>;
275
+ /**
276
+ * Create a new kit with the given name and metadata. Returns its metadata.
277
+ * Throws KitAlreadyExistsError if a kit with the same ID already exists.
278
+ */
279
+ createKit(name: string, kitId?: string): Promise<KitMeta>;
280
+ /**
281
+ * Open a plan (staging area) for a kit. Applies initial writes/deletes.
282
+ * Returns a planId that can be used with commitPlan/closePlan.
283
+ */
284
+ openPlan(kitId: KitId, ops: FileOp[]): Promise<PlanId>;
285
+ /**
286
+ * Commit additional file operations to an existing plan.
287
+ * In LocalFsStore this writes to a staging dir; in GitHostStore it commits
288
+ * to the plan branch.
289
+ */
290
+ commitPlan(kitId: KitId, planId: PlanId, ops: FileOp[]): Promise<void>;
291
+ /**
292
+ * Close a plan (discard the staging area / delete the plan branch).
293
+ * Idempotent — closing an already-closed plan is a no-op.
294
+ */
295
+ closePlan(kitId: KitId, planId: PlanId): Promise<void>;
296
+ }
297
+ /**
298
+ * AC2 — ProjectStore defines:
299
+ * listProjects, getProject, createProject, deleteProject,
300
+ * bindKit, recordScreen.
301
+ */
302
+ export interface ProjectStore {
303
+ /** List all projects. */
304
+ listProjects(): Promise<ProjectMeta[]>;
305
+ /** Get metadata for a single project. Throws NotFoundError if missing. */
306
+ getProject(projectId: ProjectId): Promise<ProjectMeta>;
307
+ /** Create a new project with the given name. */
308
+ createProject(name: string): Promise<ProjectMeta>;
309
+ /** Delete a project. Throws NotFoundError if missing. */
310
+ deleteProject(projectId: ProjectId): Promise<void>;
311
+ /**
312
+ * Bind a kit to a project. Throws NotFoundError if the project is missing.
313
+ * Note: kit existence is not validated by this interface.
314
+ */
315
+ bindKit(projectId: ProjectId, kitId: KitId): Promise<void>;
316
+ /**
317
+ * Record a screen capture reference for a project.
318
+ * Stores the path/url for later retrieval.
319
+ */
320
+ recordScreen(projectId: ProjectId, screenRef: string): Promise<void>;
321
+ }
322
+ //# sourceMappingURL=interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/store/interface.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Storage abstraction for genie kits and projects.
3
+ *
4
+ * All M1 tools are implemented against these interfaces, not against `fs`
5
+ * directly. Two adapters ship with M1:
6
+ * - LocalFsStore — solo dev; kit/project = directory on local FS
7
+ * - GitHostStore — shared; kit/project = git-tracked tree on any git host
8
+ */
9
+ // ─── Shared types ────────────────────────────────────────────────────────────
10
+ /** Immutable type discriminator stamped on every kit record. */
11
+ export const KIT_TYPE = "GENIE_KIT";
12
+ // ─── Error types ─────────────────────────────────────────────────────────────
13
+ /** Thrown when a kit already exists with the given ID. */
14
+ export class KitAlreadyExistsError extends Error {
15
+ kitId;
16
+ constructor(kitId) {
17
+ super(`Kit already exists: ${kitId}`);
18
+ this.kitId = kitId;
19
+ this.name = "KitAlreadyExistsError";
20
+ }
21
+ }
22
+ /** Thrown when `readFile` encounters a file exceeding the 256 KiB cap. */
23
+ export class FileTooLargeError extends Error {
24
+ path;
25
+ actualBytes;
26
+ constructor(path, actualBytes) {
27
+ super(`File "${path}" is ${actualBytes} bytes, exceeding the 256 KiB (262144 bytes) limit.`);
28
+ this.path = path;
29
+ this.actualBytes = actualBytes;
30
+ this.name = "FileTooLargeError";
31
+ }
32
+ }
33
+ /** Thrown when a referenced kit/project/plan does not exist. */
34
+ export class NotFoundError extends Error {
35
+ resource;
36
+ id;
37
+ constructor(resource, id) {
38
+ super(`${resource} "${id}" not found.`);
39
+ this.resource = resource;
40
+ this.id = id;
41
+ this.name = "NotFoundError";
42
+ }
43
+ }
44
+ /** Thrown when a required credential is missing. */
45
+ export class MissingCredentialError extends Error {
46
+ envVar;
47
+ constructor(envVar) {
48
+ super(`Required credential "${envVar}" is not set. ` +
49
+ `Set it as an environment variable before starting genie.`);
50
+ this.envVar = envVar;
51
+ this.name = "MissingCredentialError";
52
+ }
53
+ }
54
+ /**
55
+ * A file in a `KitStore.writeFiles` batch could not be committed; the whole
56
+ * call was rolled back and the kit tree restored to its pre-call state.
57
+ *
58
+ * Lives in the store layer (not the tool) because the store now owns the
59
+ * atomic write transaction — `LocalFsKitStore` throws this from its
60
+ * rename-to-temp/rename-back commit, `GitHostKitStore` from a failed
61
+ * contents-API write it then unwinds. The `write_files` tool imports it to map
62
+ * onto its wire-error taxonomy (code `WriteFailedError`).
63
+ */
64
+ export class WriteFailedError extends Error {
65
+ path;
66
+ cause;
67
+ code = "WriteFailedError";
68
+ constructor(path, cause) {
69
+ super(`Failed to write "${path}": ${cause}. The call was rolled back; no files were written.`);
70
+ this.path = path;
71
+ this.cause = cause;
72
+ this.name = "WriteFailedError";
73
+ }
74
+ }
75
+ /**
76
+ * A `KitStore.writeFiles` commit failed AND the rollback itself could not fully
77
+ * undo/restore every step, so the kit tree is NOT guaranteed to match its
78
+ * pre-call state (unlike the ordinary `WriteFailedError` path, which guarantees
79
+ * a clean rollback). Surfaced instead of silently swallowing the rollback
80
+ * failure and reporting the original commit error as if rollback had fully
81
+ * succeeded (a Copilot review finding on PR #106, preserved through the store
82
+ * re-plumb).
83
+ */
84
+ export class RollbackIncompleteError extends Error {
85
+ commitError;
86
+ rollbackFailures;
87
+ code = "RollbackIncompleteError";
88
+ constructor(commitError, rollbackFailures) {
89
+ super(`write_files failed (${commitError}) AND rollback could not fully restore the ` +
90
+ `original tree: ${rollbackFailures.join("; ")}. The destination may be left in ` +
91
+ "a partially-modified state — verify manually before retrying.");
92
+ this.commitError = commitError;
93
+ this.rollbackFailures = rollbackFailures;
94
+ this.name = "RollbackIncompleteError";
95
+ }
96
+ }
97
+ // ─── KitStore interface ──────────────────────────────────────────────────────
98
+ /** Maximum file size in bytes that readFile will return (256 KiB). */
99
+ export const MAX_FILE_BYTES = 262_144;
100
+ //# sourceMappingURL=interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface.js","sourceRoot":"","sources":["../../src/store/interface.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,gFAAgF;AAEhF,gEAAgE;AAChE,MAAM,CAAC,MAAM,QAAQ,GAAG,WAAoB,CAAC;AAkH7C,gFAAgF;AAEhF,0DAA0D;AAC1D,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAClB;IAA5B,YAA4B,KAAa;QACvC,KAAK,CAAC,uBAAuB,KAAK,EAAE,CAAC,CAAC;QADZ,UAAK,GAAL,KAAK,CAAQ;QAEvC,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AAED,0EAA0E;AAC1E,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAExB;IACA;IAFlB,YACkB,IAAY,EACZ,WAAmB;QAEnC,KAAK,CAAC,SAAS,IAAI,QAAQ,WAAW,qDAAqD,CAAC,CAAC;QAH7E,SAAI,GAAJ,IAAI,CAAQ;QACZ,gBAAW,GAAX,WAAW,CAAQ;QAGnC,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED,gEAAgE;AAChE,MAAM,OAAO,aAAc,SAAQ,KAAK;IAEpB;IACA;IAFlB,YACkB,QAAgB,EAChB,EAAU;QAE1B,KAAK,CAAC,GAAG,QAAQ,KAAK,EAAE,cAAc,CAAC,CAAC;QAHxB,aAAQ,GAAR,QAAQ,CAAQ;QAChB,OAAE,GAAF,EAAE,CAAQ;QAG1B,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAED,oDAAoD;AACpD,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IACnB;IAA5B,YAA4B,MAAc;QACxC,KAAK,CACH,wBAAwB,MAAM,gBAAgB;YAC5C,0DAA0D,CAC7D,CAAC;QAJwB,WAAM,GAAN,MAAM,CAAQ;QAKxC,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF;AAED;;;;;;;;;GASG;AACH,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAGvB;IACA;IAHT,IAAI,GAAG,kBAAkB,CAAC;IACnC,YACkB,IAAY,EACZ,KAAa;QAE7B,KAAK,CAAC,oBAAoB,IAAI,MAAM,KAAK,oDAAoD,CAAC,CAAC;QAH/E,SAAI,GAAJ,IAAI,CAAQ;QACZ,UAAK,GAAL,KAAK,CAAQ;QAG7B,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AAED;;;;;;;;GAQG;AACH,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAG9B;IACA;IAHT,IAAI,GAAG,yBAAyB,CAAC;IAC1C,YACkB,WAAmB,EACnB,gBAA0B;QAE1C,KAAK,CACH,uBAAuB,WAAW,6CAA6C;YAC7E,kBAAkB,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,mCAAmC;YAChF,+DAA+D,CAClE,CAAC;QAPc,gBAAW,GAAX,WAAW,CAAQ;QACnB,qBAAgB,GAAhB,gBAAgB,CAAU;QAO1C,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF;AAED,gFAAgF;AAEhF,sEAAsE;AACtE,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Shared kit-file helpers — MIME classification, SRI hashing, and the
3
+ * default/`.genieignore` exclusion matcher.
4
+ *
5
+ * These were previously split across `tools/read_file.ts` (MIME + binary
6
+ * detection) and `tools/list_files.ts` (SHA-256 SRI hashing, ignore matching).
7
+ * DRO-540 re-plumbs those verbs onto the `KitStore` interface, so the pure
8
+ * logic moves here to be shared by BOTH the `LocalFsKitStore` and
9
+ * `GitHostKitStore` implementations of `readFile`/`listFiles` — a `read_file`
10
+ * or `list_files` result is then byte-identical whichever adapter backs it.
11
+ *
12
+ * Nothing here touches the filesystem or the network; it operates on paths and
13
+ * bytes the adapters supply.
14
+ */
15
+ import type { FileEncoding } from "./interface.js";
16
+ /**
17
+ * Resolve the MIME type for a file path.
18
+ * Prefers our overrides for extensions that `mime-types` misidentifies.
19
+ */
20
+ export declare function resolveMime(filePath: string): string;
21
+ /**
22
+ * True when a MIME type is textual (returned as utf-8); everything else is
23
+ * returned as base64. Any MIME parameters (e.g. a `; charset=utf-8` suffix)
24
+ * are stripped before matching.
25
+ */
26
+ export declare function isTextMime(mime: string): boolean;
27
+ /** Strict base64 validation shared by tool-boundary and generated-file checks. */
28
+ export declare function isValidBase64Content(data: string): boolean;
29
+ /**
30
+ * Classify raw file bytes into the `{ content, encoding, mimeType }` shape
31
+ * `KitStore.readFile` returns. Text files (by MIME) are decoded to utf-8;
32
+ * everything else is base64-encoded. The MIME type is derived from `path`.
33
+ */
34
+ export declare function classifyFileContent(path: string, bytes: Buffer): {
35
+ content: string;
36
+ encoding: FileEncoding;
37
+ mimeType: string;
38
+ };
39
+ /**
40
+ * Compute a Subresource-Integrity hash (`sha256-<base64>`) over `bytes` — the
41
+ * exact form `list_files` reports and the M4 viewer's CSP references.
42
+ */
43
+ export declare function sriSha256(bytes: Buffer | string): string;
44
+ /**
45
+ * The ONE kitId-safety rule shared by the `list_files` and `read_file` tools
46
+ * AND both `KitStore` adapters, so their traversal defenses cannot silently
47
+ * drift apart (DRO-509 / DRO-581 unification). Lives here — not in a tool
48
+ * module — because the store layer (post-#114) also needs it, and `store/*`
49
+ * must not import from `tools/*`.
50
+ *
51
+ * A `kitId` names a single directory (LocalFs) or repo (git host) directly
52
+ * under the store's kits root. `isSafeKitId` returns false for exactly the ids
53
+ * that would let a caller escape that single-kit namespace:
54
+ *
55
+ * - the empty string — `join(kitsRoot, "")` is the kits ROOT itself, so an
56
+ * empty kitId plus a crafted `path` (e.g. `other-kit/secret.txt`) would
57
+ * read across sibling kits; it names no kit and is rejected;
58
+ * - `.` or `..` exactly — the traversal aliases for "this dir" / "the parent",
59
+ * which also resolve to the root or above it;
60
+ * - any id containing a path separator (`/` or `\`), which could introduce a
61
+ * nested or absolute path.
62
+ *
63
+ * Ids that merely EMBED dots (`my..kit`, `..kit`, `kit..`) stay a literal child
64
+ * of the root and are allowed — they simply resolve to a not-found kit if
65
+ * absent. This is deliberately looser than the pre-unification `read_file`
66
+ * guard (`kitId.includes("..")`), which over-rejected `my..kit` yet — crucially
67
+ * — MISSED both `""` and `.` (neither contains `..`), the exact holes that
68
+ * enabled the cross-kit read this rule closes.
69
+ *
70
+ * A predicate (not a throwing helper) on purpose: each caller raises its own
71
+ * error type/code (`ListFilesError` / `McpError` / `NotFoundError`) — only the
72
+ * RULE is centralised here, not the error shape.
73
+ */
74
+ export declare function isSafeKitId(kitId: string): boolean;
75
+ /** A predicate over a kit-root-relative, forward-slash path. */
76
+ export type IgnoreMatcher = (path: string) => boolean;
77
+ /**
78
+ * Build a matcher that returns true for any path that should be excluded from a
79
+ * kit listing: the default-ignored dirs plus every `.genieignore` pattern.
80
+ */
81
+ export declare function buildIgnoreMatcher(patterns: string[]): IgnoreMatcher;
82
+ /**
83
+ * Parse a `.genieignore` file body into its active pattern lines (trimmed,
84
+ * blank + `#`-comment lines dropped). Kept here so both adapters read the same
85
+ * ignore semantics from whatever source (a file on disk, a git-host blob).
86
+ */
87
+ export declare function parseGenieignore(raw: string): string[];
88
+ //# sourceMappingURL=kit-files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kit-files.d.ts","sourceRoot":"","sources":["../../src/store/kit-files.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAwCnD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGpD;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAOhD;AAED,kFAAkF;AAClF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAG1D;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GACZ;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,YAAY,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAM/D;AAID;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAExD;AAID;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAKlD;AAID,gEAAgE;AAChE,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;AAUtD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,aAAa,CAMpE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAKtD"}