@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.
- package/README.md +15 -0
- package/dist/auth/bearer.d.ts +49 -0
- package/dist/auth/bearer.d.ts.map +1 -0
- package/dist/auth/bearer.js +159 -0
- package/dist/auth/bearer.js.map +1 -0
- package/dist/auth/oauth/authorize.d.ts +19 -0
- package/dist/auth/oauth/authorize.d.ts.map +1 -0
- package/dist/auth/oauth/authorize.js +111 -0
- package/dist/auth/oauth/authorize.js.map +1 -0
- package/dist/auth/oauth/config.d.ts +10 -0
- package/dist/auth/oauth/config.d.ts.map +1 -0
- package/dist/auth/oauth/config.js +16 -0
- package/dist/auth/oauth/config.js.map +1 -0
- package/dist/auth/oauth/dcr.d.ts +15 -0
- package/dist/auth/oauth/dcr.d.ts.map +1 -0
- package/dist/auth/oauth/dcr.js +38 -0
- package/dist/auth/oauth/dcr.js.map +1 -0
- package/dist/auth/oauth/jwt.d.ts +13 -0
- package/dist/auth/oauth/jwt.d.ts.map +1 -0
- package/dist/auth/oauth/jwt.js +46 -0
- package/dist/auth/oauth/jwt.js.map +1 -0
- package/dist/auth/oauth/metadata.d.ts +9 -0
- package/dist/auth/oauth/metadata.d.ts.map +1 -0
- package/dist/auth/oauth/metadata.js +19 -0
- package/dist/auth/oauth/metadata.js.map +1 -0
- package/dist/auth/oauth/router.d.ts +32 -0
- package/dist/auth/oauth/router.d.ts.map +1 -0
- package/dist/auth/oauth/router.js +159 -0
- package/dist/auth/oauth/router.js.map +1 -0
- package/dist/auth/oauth/store.d.ts +55 -0
- package/dist/auth/oauth/store.d.ts.map +1 -0
- package/dist/auth/oauth/store.js +63 -0
- package/dist/auth/oauth/store.js.map +1 -0
- package/dist/auth/oauth/token.d.ts +21 -0
- package/dist/auth/oauth/token.d.ts.map +1 -0
- package/dist/auth/oauth/token.js +77 -0
- package/dist/auth/oauth/token.js.map +1 -0
- package/dist/auth/oidc/group-policy.d.ts +43 -0
- package/dist/auth/oidc/group-policy.d.ts.map +1 -0
- package/dist/auth/oidc/group-policy.js +54 -0
- package/dist/auth/oidc/group-policy.js.map +1 -0
- package/dist/auth/oidc/verifier.d.ts +42 -0
- package/dist/auth/oidc/verifier.d.ts.map +1 -0
- package/dist/auth/oidc/verifier.js +145 -0
- package/dist/auth/oidc/verifier.js.map +1 -0
- package/dist/auth/token-cli.d.ts +9 -0
- package/dist/auth/token-cli.d.ts.map +1 -0
- package/dist/auth/token-cli.js +98 -0
- package/dist/auth/token-cli.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +149 -0
- package/dist/cli.js.map +1 -0
- package/dist/config/redact.d.ts +20 -0
- package/dist/config/redact.d.ts.map +1 -0
- package/dist/config/redact.js +77 -0
- package/dist/config/redact.js.map +1 -0
- package/dist/config/secrets.d.ts +100 -0
- package/dist/config/secrets.d.ts.map +1 -0
- package/dist/config/secrets.js +130 -0
- package/dist/config/secrets.js.map +1 -0
- package/dist/framework/html.d.ts +103 -0
- package/dist/framework/html.d.ts.map +1 -0
- package/dist/framework/html.js +271 -0
- package/dist/framework/html.js.map +1 -0
- package/dist/framework/interface.d.ts +130 -0
- package/dist/framework/interface.d.ts.map +1 -0
- package/dist/framework/interface.js +112 -0
- package/dist/framework/interface.js.map +1 -0
- package/dist/framework/react.d.ts +133 -0
- package/dist/framework/react.d.ts.map +1 -0
- package/dist/framework/react.js +243 -0
- package/dist/framework/react.js.map +1 -0
- package/dist/framework/vue.d.ts +99 -0
- package/dist/framework/vue.d.ts.map +1 -0
- package/dist/framework/vue.js +375 -0
- package/dist/framework/vue.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/client.d.ts +81 -0
- package/dist/llm/client.d.ts.map +1 -0
- package/dist/llm/client.js +141 -0
- package/dist/llm/client.js.map +1 -0
- package/dist/llm/component-response.d.ts +111 -0
- package/dist/llm/component-response.d.ts.map +1 -0
- package/dist/llm/component-response.js +167 -0
- package/dist/llm/component-response.js.map +1 -0
- package/dist/llm/generated-files.d.ts +10 -0
- package/dist/llm/generated-files.d.ts.map +1 -0
- package/dist/llm/generated-files.js +26 -0
- package/dist/llm/generated-files.js.map +1 -0
- package/dist/llm/prompts/CHANGELOG.md +70 -0
- package/dist/llm/prompts/generate-component.system.md +99 -0
- package/dist/llm/prompts/refine-component.system.md +112 -0
- package/dist/llm/prompts.d.ts +66 -0
- package/dist/llm/prompts.d.ts.map +1 -0
- package/dist/llm/prompts.js +78 -0
- package/dist/llm/prompts.js.map +1 -0
- package/dist/llm/retry.d.ts +183 -0
- package/dist/llm/retry.d.ts.map +1 -0
- package/dist/llm/retry.js +475 -0
- package/dist/llm/retry.js.map +1 -0
- package/dist/llm/schema.d.ts +129 -0
- package/dist/llm/schema.d.ts.map +1 -0
- package/dist/llm/schema.js +147 -0
- package/dist/llm/schema.js.map +1 -0
- package/dist/llm/validate.d.ts +107 -0
- package/dist/llm/validate.d.ts.map +1 -0
- package/dist/llm/validate.js +174 -0
- package/dist/llm/validate.js.map +1 -0
- package/dist/manifest/compiler.d.ts +112 -0
- package/dist/manifest/compiler.d.ts.map +1 -0
- package/dist/manifest/compiler.js +306 -0
- package/dist/manifest/compiler.js.map +1 -0
- package/dist/manifest/ensure.d.ts +46 -0
- package/dist/manifest/ensure.d.ts.map +1 -0
- package/dist/manifest/ensure.js +49 -0
- package/dist/manifest/ensure.js.map +1 -0
- package/dist/manifest/index.d.ts +13 -0
- package/dist/manifest/index.d.ts.map +1 -0
- package/dist/manifest/index.js +13 -0
- package/dist/manifest/index.js.map +1 -0
- package/dist/middleware/plan-guard.d.ts +167 -0
- package/dist/middleware/plan-guard.d.ts.map +1 -0
- package/dist/middleware/plan-guard.js +190 -0
- package/dist/middleware/plan-guard.js.map +1 -0
- package/dist/plans/index.d.ts +71 -0
- package/dist/plans/index.d.ts.map +1 -0
- package/dist/plans/index.js +252 -0
- package/dist/plans/index.js.map +1 -0
- package/dist/schemas/component.schema.json +114 -0
- package/dist/server.d.ts +96 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +258 -0
- package/dist/server.js.map +1 -0
- package/dist/store/empty-manifest.d.ts +58 -0
- package/dist/store/empty-manifest.d.ts.map +1 -0
- package/dist/store/empty-manifest.js +59 -0
- package/dist/store/empty-manifest.js.map +1 -0
- package/dist/store/git-host.d.ts +120 -0
- package/dist/store/git-host.d.ts.map +1 -0
- package/dist/store/git-host.js +796 -0
- package/dist/store/git-host.js.map +1 -0
- package/dist/store/index.d.ts +5 -0
- package/dist/store/index.d.ts.map +1 -0
- package/dist/store/index.js +4 -0
- package/dist/store/index.js.map +1 -0
- package/dist/store/interface.d.ts +322 -0
- package/dist/store/interface.d.ts.map +1 -0
- package/dist/store/interface.js +100 -0
- package/dist/store/interface.js.map +1 -0
- package/dist/store/kit-files.d.ts +88 -0
- package/dist/store/kit-files.d.ts.map +1 -0
- package/dist/store/kit-files.js +199 -0
- package/dist/store/kit-files.js.map +1 -0
- package/dist/store/local.d.ts +70 -0
- package/dist/store/local.d.ts.map +1 -0
- package/dist/store/local.js +651 -0
- package/dist/store/local.js.map +1 -0
- package/dist/store/manifest.d.ts +44 -0
- package/dist/store/manifest.d.ts.map +1 -0
- package/dist/store/manifest.js +116 -0
- package/dist/store/manifest.js.map +1 -0
- package/dist/store/viewer-assets.d.ts +20 -0
- package/dist/store/viewer-assets.d.ts.map +1 -0
- package/dist/store/viewer-assets.js +118 -0
- package/dist/store/viewer-assets.js.map +1 -0
- package/dist/sync/anchor.d.ts +125 -0
- package/dist/sync/anchor.d.ts.map +1 -0
- package/dist/sync/anchor.js +210 -0
- package/dist/sync/anchor.js.map +1 -0
- package/dist/sync/index.d.ts +15 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +15 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/sync/orchestrator.d.ts +160 -0
- package/dist/sync/orchestrator.d.ts.map +1 -0
- package/dist/sync/orchestrator.js +288 -0
- package/dist/sync/orchestrator.js.map +1 -0
- package/dist/tools/bind_kit.d.ts +29 -0
- package/dist/tools/bind_kit.d.ts.map +1 -0
- package/dist/tools/bind_kit.js +70 -0
- package/dist/tools/bind_kit.js.map +1 -0
- package/dist/tools/conjure.d.ts +141 -0
- package/dist/tools/conjure.d.ts.map +1 -0
- package/dist/tools/conjure.js +655 -0
- package/dist/tools/conjure.js.map +1 -0
- package/dist/tools/conjure_screen.d.ts +174 -0
- package/dist/tools/conjure_screen.d.ts.map +1 -0
- package/dist/tools/conjure_screen.js +458 -0
- package/dist/tools/conjure_screen.js.map +1 -0
- package/dist/tools/create_kit.d.ts +32 -0
- package/dist/tools/create_kit.d.ts.map +1 -0
- package/dist/tools/create_kit.js +131 -0
- package/dist/tools/create_kit.js.map +1 -0
- package/dist/tools/create_project.d.ts +267 -0
- package/dist/tools/create_project.d.ts.map +1 -0
- package/dist/tools/create_project.js +546 -0
- package/dist/tools/create_project.js.map +1 -0
- package/dist/tools/delete_files.d.ts +93 -0
- package/dist/tools/delete_files.d.ts.map +1 -0
- package/dist/tools/delete_files.js +276 -0
- package/dist/tools/delete_files.js.map +1 -0
- package/dist/tools/delete_project.d.ts +43 -0
- package/dist/tools/delete_project.d.ts.map +1 -0
- package/dist/tools/delete_project.js +118 -0
- package/dist/tools/delete_project.js.map +1 -0
- package/dist/tools/get_kit.d.ts +28 -0
- package/dist/tools/get_kit.d.ts.map +1 -0
- package/dist/tools/get_kit.js +95 -0
- package/dist/tools/get_kit.js.map +1 -0
- package/dist/tools/get_project.d.ts +37 -0
- package/dist/tools/get_project.d.ts.map +1 -0
- package/dist/tools/get_project.js +71 -0
- package/dist/tools/get_project.js.map +1 -0
- package/dist/tools/list_components.d.ts +42 -0
- package/dist/tools/list_components.d.ts.map +1 -0
- package/dist/tools/list_components.js +125 -0
- package/dist/tools/list_components.js.map +1 -0
- package/dist/tools/list_files.d.ts +32 -0
- package/dist/tools/list_files.d.ts.map +1 -0
- package/dist/tools/list_files.js +109 -0
- package/dist/tools/list_files.js.map +1 -0
- package/dist/tools/list_kits.d.ts +14 -0
- package/dist/tools/list_kits.d.ts.map +1 -0
- package/dist/tools/list_kits.js +41 -0
- package/dist/tools/list_kits.js.map +1 -0
- package/dist/tools/list_projects.d.ts +23 -0
- package/dist/tools/list_projects.d.ts.map +1 -0
- package/dist/tools/list_projects.js +66 -0
- package/dist/tools/list_projects.js.map +1 -0
- package/dist/tools/plan.d.ts +16 -0
- package/dist/tools/plan.d.ts.map +1 -0
- package/dist/tools/plan.js +146 -0
- package/dist/tools/plan.js.map +1 -0
- package/dist/tools/preview.d.ts +289 -0
- package/dist/tools/preview.d.ts.map +1 -0
- package/dist/tools/preview.js +672 -0
- package/dist/tools/preview.js.map +1 -0
- package/dist/tools/read_file.d.ts +40 -0
- package/dist/tools/read_file.d.ts.map +1 -0
- package/dist/tools/read_file.js +114 -0
- package/dist/tools/read_file.js.map +1 -0
- package/dist/tools/refine.d.ts +220 -0
- package/dist/tools/refine.d.ts.map +1 -0
- package/dist/tools/refine.js +501 -0
- package/dist/tools/refine.js.map +1 -0
- package/dist/tools/validate.d.ts +74 -0
- package/dist/tools/validate.d.ts.map +1 -0
- package/dist/tools/validate.js +224 -0
- package/dist/tools/validate.js.map +1 -0
- package/dist/tools/write_files.d.ts +158 -0
- package/dist/tools/write_files.d.ts.map +1 -0
- package/dist/tools/write_files.js +541 -0
- package/dist/tools/write_files.js.map +1 -0
- package/dist/transport.d.ts +77 -0
- package/dist/transport.d.ts.map +1 -0
- package/dist/transport.js +448 -0
- package/dist/transport.js.map +1 -0
- package/dist/ui/card-asset-broker.d.ts +42 -0
- package/dist/ui/card-asset-broker.d.ts.map +1 -0
- package/dist/ui/card-asset-broker.js +479 -0
- package/dist/ui/card-asset-broker.js.map +1 -0
- package/dist/ui/grid-resource.d.ts +252 -0
- package/dist/ui/grid-resource.d.ts.map +1 -0
- package/dist/ui/grid-resource.js +680 -0
- package/dist/ui/grid-resource.js.map +1 -0
- package/dist/ui/viewer-static/index.html +95 -0
- package/dist/ui/viewer-static/viewer.css +451 -0
- package/dist/ui/viewer-static/viewer.js +1405 -0
- package/dist/validate/full-scan.d.ts +87 -0
- package/dist/validate/full-scan.d.ts.map +1 -0
- package/dist/validate/full-scan.js +299 -0
- package/dist/validate/full-scan.js.map +1 -0
- package/dist/validate/index.d.ts +15 -0
- package/dist/validate/index.d.ts.map +1 -0
- package/dist/validate/index.js +18 -0
- package/dist/validate/index.js.map +1 -0
- package/dist/validate/marker.d.ts +89 -0
- package/dist/validate/marker.d.ts.map +1 -0
- package/dist/validate/marker.js +87 -0
- package/dist/validate/marker.js.map +1 -0
- package/dist/validate/phash.d.ts +135 -0
- package/dist/validate/phash.d.ts.map +1 -0
- package/dist/validate/phash.js +307 -0
- package/dist/validate/phash.js.map +1 -0
- package/dist/validate/render.d.ts +38 -0
- package/dist/validate/render.d.ts.map +1 -0
- package/dist/validate/render.js +155 -0
- package/dist/validate/render.js.map +1 -0
- package/dist/watch/index.d.ts +12 -0
- package/dist/watch/index.d.ts.map +1 -0
- package/dist/watch/index.js +12 -0
- package/dist/watch/index.js.map +1 -0
- package/dist/watch/watcher.d.ts +65 -0
- package/dist/watch/watcher.d.ts.map +1 -0
- package/dist/watch/watcher.js +238 -0
- package/dist/watch/watcher.js.map +1 -0
- 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"}
|