@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":"local.js","sourceRoot":"","sources":["../../src/store/local.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAc,MAAM,SAAS,CAAC;AAC1E,OAAO,EACL,KAAK,EACL,OAAO,EACP,OAAO,EACP,QAAQ,EACR,MAAM,EACN,EAAE,EACF,IAAI,EACJ,MAAM,EACN,SAAS,GACV,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAC9E,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAgBhD,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,QAAQ,EACR,cAAc,EACd,aAAa,EACb,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,WAAW,EACX,gBAAgB,GAEjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,gFAAgF;AAEhF,SAAS,SAAS;IAChB,OAAO,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;AAChE,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,GAAW;IAClC,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACxC,CAAC;AAED;;;;;;GAMG;AACH,SAAS,QAAQ,CAAC,OAAe,EAAE,QAAgB;IACjD,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACxC,iEAAiE;IACjE,iEAAiE;IACjE,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CAAC,2BAA2B,QAAQ,2CAA2C,CAAC,CAAC;IAClG,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,YAAY,CACzB,GAAW,EACX,IAAY,EACZ,MAAqB;IAErB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAmB,EAAE,CAAC;IACjC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACxE,IAAI,YAAY,KAAK,WAAW,IAAI,MAAM,CAAC,YAAY,CAAC;YAAE,SAAS;QACnE,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,YAAY,CAAC,YAAY,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;YAChE,SAAS;QACX,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YAAE,SAAS;QAC9B,yEAAyE;QACzE,yEAAyE;QACzE,qEAAqE;QACrE,0EAA0E;QAC1E,uEAAuE;QACvE,uEAAuE;QACvE,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC5F,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI;YACJ,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE;SACxC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,KAAK,UAAU,cAAc,CAAC,YAAoB;IAChD,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAClC,MAAM,QAAQ,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,CAAC;IACrD,OAAO,UAAU,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC3C,CAAC;AAED;8BAC8B;AAC9B,SAAS,kBAAkB,CAAC,KAAc;IACxC,OAAO,CACL,KAAK,YAAY,KAAK;QACtB,MAAM,IAAI,KAAK;QACf,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CACtD,CAAC;AACJ,CAAC;AAuBD;;;;;;;GAOG;AACH,KAAK,UAAU,cAAc,CAAC,MAAc,EAAE,GAAc;IAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAChD,MAAM,KAAK,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;IAC1E,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAE/C,IAAI,CAAC;QACH,uEAAuE;QACvE,MAAM,MAAM,GAAiB,EAAE,CAAC;QAChC,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACrB,2EAA2E;YAC3E,2EAA2E;YAC3E,uEAAuE;YACvE,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;YAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YAEzD,IAAI,YAAY,IAAI,EAAE,EAAE,CAAC;gBACvB,MAAM,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;YACvD,CAAC;iBAAM,CAAC;gBACN,MAAM,WAAW,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;YACrD,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;QAC7D,CAAC;QAED,MAAM,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAE/C,OAAO,EAAE,YAAY,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;IAClD,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,KAAK,UAAU,YAAY,CACzB,MAAoB,EACpB,UAAkB,EAClB,MAAc;IAEd,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE7C,KAAK,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,MAAM,EAAE,CAAC;QAC9C,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,gBAAgB,CACxB,UAAU,EACV,aAAa,CAAC,KAAK,EAAE,wCAAwC,CAAC,CAC/D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAA+C,EAAE,CAAC;IAChE,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,IAAI,CAAC;QACH,KAAK,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,MAAM,EAAE,CAAC;YAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YAC1D,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;YAC9E,IAAI,WAAW;gBAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;QAC3D,CAAC;QAED,KAAK,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,MAAM,EAAE,CAAC;YAC1D,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YACrC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,gBAAgB,CACxB,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,EAChD,aAAa,CAAC,KAAK,EAAE,eAAe,CAAC,CACtC,CAAC;YACJ,CAAC;YACD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,gBAAgB,GAAa,EAAE,CAAC;QACtC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACtC,CAAC;YAAC,OAAO,OAAO,EAAE,CAAC;gBACjB,gBAAgB,CAAC,IAAI,CACnB,oCAAoC,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,KAAK;oBACrF,aAAa,CAAC,OAAO,EAAE,eAAe,CAAC,CAC1C,CAAC;YACJ,CAAC;QACH,CAAC;QACD,KAAK,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,QAAQ,EAAE,CAAC;YAChD,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YACrC,CAAC;YAAC,OAAO,YAAY,EAAE,CAAC;gBACtB,gBAAgB,CAAC,IAAI,CACnB,iCAAiC,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,KAAK;oBAClF,aAAa,CAAC,YAAY,EAAE,eAAe,CAAC,CAC/C,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,uBAAuB,CAAC,aAAa,CAAC,KAAK,EAAE,eAAe,CAAC,EAAE,gBAAgB,CAAC,CAAC;QAC7F,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,iBAAiB,CAC9B,QAAgB,EAChB,UAAkB,EAClB,UAAkB;IAElB,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC9C,IAAI,QAAQ,EAAE,WAAW,EAAE,EAAE,CAAC;QAC5B,MAAM,IAAI,gBAAgB,CACxB,UAAU,EACV,gBAAgB,QAAQ,iDAAiD,CAC1E,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAClC,MAAM,IAAI,gBAAgB,CAAC,UAAU,EAAE,aAAa,CAAC,KAAK,EAAE,iCAAiC,CAAC,CAAC,CAAC;IAClG,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,KAAK,UAAU,YAAY,CAAC,IAAY;IACtC,IAAI,CAAC;QACH,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QACtC,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAe,EAAE,QAAgB,EAAE,QAAgB;IAC7E,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACxC,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;AACzC,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,UAAkB,EAAE,OAAe,EAAE,UAAkB;IAChF,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,gBAAgB,CAAC,UAAU,EAAE,aAAa,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC;IAC/E,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,UAAU,CACvB,UAAkB,EAClB,UAAkB,EAClB,UAAkB;IAElB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAC3C,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACjD,MAAM,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,gBAAgB,CAAC,UAAU,EAAE,aAAa,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC;IAC9E,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,KAAc,EAAE,QAAgB;IACrD,IAAI,KAAK,YAAY,KAAK;QAAE,OAAO,KAAK,CAAC,OAAO,CAAC;IACjD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAK,KAA2B,CAAC,IAAI,KAAK,QAAQ,CAC9F,CAAC;AACJ,CAAC;AAED,gEAAgE;AAChE,KAAK,UAAU,QAAQ,CAAI,QAAgB;IACzC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAM,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAmBD,gFAAgF;AAEhF,MAAM,OAAO,eAAe;IACT,OAAO,CAAS;IAChB,QAAQ,CAAS;IAElC,YAAY,OAAgB;QAC1B,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IAEO,MAAM,CAAC,KAAY;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACK,UAAU,CAAC,KAAY;QAC7B,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAEO,WAAW,CAAC,KAAY;QAC9B,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC;IAC/C,CAAC;IAEO,OAAO,CAAC,KAAY,EAAE,MAAc;QAC1C,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QACrE,MAAM,IAAI,GAAc,EAAE,CAAC;QAC3B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;gBAAE,SAAS;YACnC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAc,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YACvE,IAAI,IAAI,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC5B,IAAI,CAAC,IAAI,CAAC;oBACR,EAAE,EAAE,IAAI,CAAC,EAAE;oBACX,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,IAAI,EAAE,QAAQ;oBACd,SAAS,EAAE,IAAI,CAAC,SAAS;iBAC1B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAY;QACvB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAc,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,IAAI,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC3E,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAY;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACxC,CAAC;QACD,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;QACtE,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QACnD,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,kBAAkB,CAAC,MAAc;QAC7C,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC;YACjE,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,kBAAkB,CAAC,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAC;YACzC,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,MAAwC;QAC3D,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;QAEhC,2EAA2E;QAC3E,0EAA0E;QAC1E,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEzB,2EAA2E;QAC3E,2EAA2E;QAC3E,2EAA2E;QAC3E,4BAA4B;QAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,CAAC;QAC7D,IAAI,GAAuB,CAAC;QAC5B,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,wEAAwE;YACxE,yEAAyE;YACzE,yEAAyE;YACzE,yEAAyE;YACzE,0EAA0E;YAC1E,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACrD,GAAG,GAAG,SAAS,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;QAED,OAAO,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAAY,EAAE,IAAY;QACvC,2EAA2E;QAC3E,mEAAmE;QACnE,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC;QACrB,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACxC,CAAC;QAED,2BAA2B;QAC3B,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACxC,IAAI,SAAS,CAAC;QACd,IAAI,CAAC;YACH,SAAS,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,aAAa,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,6CAA6C;QAC7C,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;YACxB,MAAM,IAAI,aAAa,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,SAAS,CAAC,IAAI,GAAG,cAAc,EAAE,CAAC;YACpC,MAAM,IAAI,iBAAiB,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QACpD,CAAC;QACD,0EAA0E;QAC1E,0EAA0E;QAC1E,2EAA2E;QAC3E,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACvC,OAAO,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAY,EAAE,IAAY;QACzC,2EAA2E;QAC3E,sEAAsE;QACtE,4EAA4E;QAC5E,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;YACvB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,kBAAkB,CAAC,KAAK,CAAC;gBAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;YACzD,MAAM,KAAK,CAAC,CAAC,kDAAkD;QACjE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAY,EAAE,GAAc;QAC3C,6EAA6E;QAC7E,2EAA2E;QAC3E,uEAAuE;QACvE,0EAA0E;QAC1E,0EAA0E;QAC1E,qEAAqE;QACrE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;QACxB,OAAO,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,KAAc;QAC1C,MAAM,EAAE,GAAG,KAAK,IAAI,UAAU,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAE5B,6DAA6D;QAC7D,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,MAAM,IAAI,qBAAqB,CAAC,EAAE,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,IAAI,GAAG,YAAY,qBAAqB;gBAAE,MAAM,GAAG,CAAC;YACpD,kDAAkD;QACpD,CAAC;QAED,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC;QACrB,MAAM,IAAI,GAAgB;YACxB,EAAE;YACF,IAAI;YACJ,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;QAEF,kDAAkD;QAClD,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;gBACnE,IAAI,EAAE,IAAI;aACX,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACrD,MAAM,IAAI,qBAAqB,CAAC,EAAE,CAAC,CAAC;YACtC,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;QAED,yEAAyE;QACzE,sEAAsE;QACtE,uEAAuE;QACvE,oEAAoE;QACpE,0EAA0E;QAC1E,0EAA0E;QAC1E,qEAAqE;QACrE,2EAA2E;QAC3E,0EAA0E;QAC1E,MAAM,YAAY,GAAG,MAAM,gBAAgB,EAAE,CAAC;QAC9C,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAEhG,sEAAsE;QACtE,oEAAoE;QACpE,mEAAmE;QACnE,uDAAuD;QACvD,yEAAyE;QACzE,uEAAuE;QACvE,8DAA8D;QAC9D,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,MAAM,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,sBAAsB,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;QAEjF,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAAY,EAAE,GAAa;QACxC,sBAAsB;QACtB,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACxC,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC;QACrB,2BAA2B;QAC3B,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAY,EAAE,MAAc,EAAE,GAAa;QAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1C,CAAC;QACD,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAY,EAAE,MAAc;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;QAAC,MAAM,CAAC;YACP,+BAA+B;QACjC,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAC,GAAW,EAAE,GAAa;QAC/C,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,EAAE,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBACxB,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;gBACpC,MAAM,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACN,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED,gFAAgF;AAEhF,MAAM,OAAO,mBAAmB;IACb,OAAO,CAAS;IAEjC,YAAY,OAAgB;QAC1B,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,UAAU,CAAC,CAAC;IAC1D,CAAC;IAEO,UAAU,CAAC,SAAoB;QACrC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACvC,CAAC;IAEO,QAAQ,CAAC,SAAoB;QACnC,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QACrE,MAAM,QAAQ,GAAkB,EAAE,CAAC;QACnC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;gBAAE,SAAS;YACnC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAkB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YACxE,IAAI,IAAI,EAAE,CAAC;gBACT,QAAQ,CAAC,IAAI,CAAC;oBACZ,EAAE,EAAE,IAAI,CAAC,EAAE;oBACX,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,SAAS,EAAE,IAAI,CAAC,SAAS;iBAC1B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,SAAoB;QACnC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAkB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;QACvE,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACzD,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAAY;QAC9B,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC;QACrB,MAAM,IAAI,GAAoB;YAC5B,EAAE;YACF,IAAI;YACJ,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;QACF,MAAM,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAClE,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,SAAoB;QACtC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAkB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;QACvE,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACzD,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,SAAoB,EAAE,KAAY;QAC9C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAkB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;QACvE,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACzD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,MAAM,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,SAAoB,EAAE,SAAiB;QACxD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAkB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;QACvE,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACzD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7B,MAAM,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3E,CAAC;CACF"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Manifest reader — the `.genie/manifest.json` compiled card index (decision D-D).
|
|
3
|
+
*
|
|
4
|
+
* `list_components` (M1-15) READS this artefact; the M3-03 manifest compiler
|
|
5
|
+
* WRITES it from `@genie` markers. M1-15 therefore *defines* the on-disk shape
|
|
6
|
+
* the compiler must later emit — the dependency runs list_components → M3-03,
|
|
7
|
+
* not the other way round (see the issue's "Blocks: M3-03" line).
|
|
8
|
+
*
|
|
9
|
+
* The module is pure I/O-free logic: each KitStore adapter fetches the raw file
|
|
10
|
+
* bytes its own way (local FS read vs. git-host contents API) and hands them
|
|
11
|
+
* here, so both adapters get byte-identical filtering and ordering semantics —
|
|
12
|
+
* which is exactly the shared-abstraction guarantee AC9 asks for.
|
|
13
|
+
*/
|
|
14
|
+
import type { ComponentEntry } from "./interface.js";
|
|
15
|
+
/** Kit-root-relative path of the compiled card index (decision D-D). */
|
|
16
|
+
export declare const MANIFEST_PATH = ".genie/manifest.json";
|
|
17
|
+
/** Thrown when a manifest file exists but is not valid genie manifest JSON. */
|
|
18
|
+
export declare class ManifestParseError extends Error {
|
|
19
|
+
readonly kitId: string;
|
|
20
|
+
readonly reason: string;
|
|
21
|
+
constructor(kitId: string, reason: string);
|
|
22
|
+
}
|
|
23
|
+
/** The three fields that define a component's total sort order (AC6). */
|
|
24
|
+
export type ComponentSortKey = Pick<ComponentEntry, "group" | "name" | "path">;
|
|
25
|
+
/**
|
|
26
|
+
* Deterministic component comparator (AC6): group ASC, then name ASC, ties
|
|
27
|
+
* broken by path ASC. Comparison is by UTF-16 code unit (`<`/`>`), NOT
|
|
28
|
+
* `localeCompare` — locale collation would make ordering depend on the host's
|
|
29
|
+
* `LANG`, defeating the "deterministic" guarantee the manifest compiler (M3-03)
|
|
30
|
+
* and the grid renderer (M4-03) both rely on for a stable seed list.
|
|
31
|
+
*/
|
|
32
|
+
export declare function compareComponents(a: ComponentSortKey, b: ComponentSortKey): number;
|
|
33
|
+
/**
|
|
34
|
+
* The full pure pipeline behind `KitStore.listComponents`: parse raw manifest
|
|
35
|
+
* bytes, filter by group, sort deterministically.
|
|
36
|
+
*
|
|
37
|
+
* - `raw === undefined` (no manifest file yet) → `[]` (AC8: no components).
|
|
38
|
+
* - `group` provided (incl. "") → only exact-match entries; a filter that
|
|
39
|
+
* matches nothing → `[]` (AC8), never null/error.
|
|
40
|
+
* - malformed JSON or shape → {@link ManifestParseError} (corruption must
|
|
41
|
+
* surface, not masquerade as an empty kit).
|
|
42
|
+
*/
|
|
43
|
+
export declare function selectComponents(kitId: string, raw: string | undefined, group?: string): ComponentEntry[];
|
|
44
|
+
//# sourceMappingURL=manifest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/store/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,wEAAwE;AACxE,eAAO,MAAM,aAAa,yBAAyB,CAAC;AAEpD,+EAA+E;AAC/E,qBAAa,kBAAmB,SAAQ,KAAK;aAEzB,KAAK,EAAE,MAAM;aACb,MAAM,EAAE,MAAM;gBADd,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM;CAKjC;AAiCD,yEAAyE;AACzE,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC;AAE/E;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAElF;AAQD;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,KAAK,CAAC,EAAE,MAAM,GACb,cAAc,EAAE,CAiClB"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Manifest reader — the `.genie/manifest.json` compiled card index (decision D-D).
|
|
3
|
+
*
|
|
4
|
+
* `list_components` (M1-15) READS this artefact; the M3-03 manifest compiler
|
|
5
|
+
* WRITES it from `@genie` markers. M1-15 therefore *defines* the on-disk shape
|
|
6
|
+
* the compiler must later emit — the dependency runs list_components → M3-03,
|
|
7
|
+
* not the other way round (see the issue's "Blocks: M3-03" line).
|
|
8
|
+
*
|
|
9
|
+
* The module is pure I/O-free logic: each KitStore adapter fetches the raw file
|
|
10
|
+
* bytes its own way (local FS read vs. git-host contents API) and hands them
|
|
11
|
+
* here, so both adapters get byte-identical filtering and ordering semantics —
|
|
12
|
+
* which is exactly the shared-abstraction guarantee AC9 asks for.
|
|
13
|
+
*/
|
|
14
|
+
import { z } from "zod";
|
|
15
|
+
/** Kit-root-relative path of the compiled card index (decision D-D). */
|
|
16
|
+
export const MANIFEST_PATH = ".genie/manifest.json";
|
|
17
|
+
/** Thrown when a manifest file exists but is not valid genie manifest JSON. */
|
|
18
|
+
export class ManifestParseError extends Error {
|
|
19
|
+
kitId;
|
|
20
|
+
reason;
|
|
21
|
+
constructor(kitId, reason) {
|
|
22
|
+
super(`Manifest for kit "${kitId}" is malformed: ${reason}`);
|
|
23
|
+
this.kitId = kitId;
|
|
24
|
+
this.reason = reason;
|
|
25
|
+
this.name = "ManifestParseError";
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* One compiled component card. `viewport` is the raw token string the M3-01
|
|
30
|
+
* `@genie` regex captures from the preview's first-line marker (e.g. "desktop"
|
|
31
|
+
* or "375x812") — kept as a string per AC5, not decomposed into {width,height}.
|
|
32
|
+
*/
|
|
33
|
+
const manifestComponentSchema = z
|
|
34
|
+
.object({
|
|
35
|
+
name: z.string(),
|
|
36
|
+
group: z.string(),
|
|
37
|
+
path: z.string(),
|
|
38
|
+
viewport: z.string(),
|
|
39
|
+
hash: z.string(),
|
|
40
|
+
lastModified: z.string(),
|
|
41
|
+
})
|
|
42
|
+
// Tolerate forward-compatible extra keys the compiler may add (renderer
|
|
43
|
+
// hints, asset deps — explicitly v2 per the issue's Out of Scope) rather
|
|
44
|
+
// than rejecting the whole manifest; we only surface the six AC5 fields.
|
|
45
|
+
.passthrough();
|
|
46
|
+
/**
|
|
47
|
+
* Manifest envelope. `version` lets M3-03 evolve the format without silently
|
|
48
|
+
* mis-parsing; `components` is the card array. Unknown top-level keys are
|
|
49
|
+
* tolerated for the same forward-compat reason.
|
|
50
|
+
*/
|
|
51
|
+
const manifestSchema = z
|
|
52
|
+
.object({
|
|
53
|
+
version: z.number().int().optional(),
|
|
54
|
+
components: z.array(manifestComponentSchema),
|
|
55
|
+
})
|
|
56
|
+
.passthrough();
|
|
57
|
+
/**
|
|
58
|
+
* Deterministic component comparator (AC6): group ASC, then name ASC, ties
|
|
59
|
+
* broken by path ASC. Comparison is by UTF-16 code unit (`<`/`>`), NOT
|
|
60
|
+
* `localeCompare` — locale collation would make ordering depend on the host's
|
|
61
|
+
* `LANG`, defeating the "deterministic" guarantee the manifest compiler (M3-03)
|
|
62
|
+
* and the grid renderer (M4-03) both rely on for a stable seed list.
|
|
63
|
+
*/
|
|
64
|
+
export function compareComponents(a, b) {
|
|
65
|
+
return byCodeUnit(a.group, b.group) || byCodeUnit(a.name, b.name) || byCodeUnit(a.path, b.path);
|
|
66
|
+
}
|
|
67
|
+
function byCodeUnit(a, b) {
|
|
68
|
+
if (a < b)
|
|
69
|
+
return -1;
|
|
70
|
+
if (a > b)
|
|
71
|
+
return 1;
|
|
72
|
+
return 0;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* The full pure pipeline behind `KitStore.listComponents`: parse raw manifest
|
|
76
|
+
* bytes, filter by group, sort deterministically.
|
|
77
|
+
*
|
|
78
|
+
* - `raw === undefined` (no manifest file yet) → `[]` (AC8: no components).
|
|
79
|
+
* - `group` provided (incl. "") → only exact-match entries; a filter that
|
|
80
|
+
* matches nothing → `[]` (AC8), never null/error.
|
|
81
|
+
* - malformed JSON or shape → {@link ManifestParseError} (corruption must
|
|
82
|
+
* surface, not masquerade as an empty kit).
|
|
83
|
+
*/
|
|
84
|
+
export function selectComponents(kitId, raw, group) {
|
|
85
|
+
if (raw === undefined)
|
|
86
|
+
return [];
|
|
87
|
+
const trimmed = raw.trim();
|
|
88
|
+
if (trimmed === "")
|
|
89
|
+
return [];
|
|
90
|
+
let json;
|
|
91
|
+
try {
|
|
92
|
+
json = JSON.parse(trimmed);
|
|
93
|
+
}
|
|
94
|
+
catch (e) {
|
|
95
|
+
throw new ManifestParseError(kitId, e instanceof Error ? e.message : "invalid JSON");
|
|
96
|
+
}
|
|
97
|
+
const parsed = manifestSchema.safeParse(json);
|
|
98
|
+
if (!parsed.success) {
|
|
99
|
+
throw new ManifestParseError(kitId, parsed.error.issues[0]?.message ?? "schema mismatch");
|
|
100
|
+
}
|
|
101
|
+
const entries = parsed.data.components.map((c) => ({
|
|
102
|
+
name: c.name,
|
|
103
|
+
group: c.group,
|
|
104
|
+
path: c.path,
|
|
105
|
+
viewport: c.viewport,
|
|
106
|
+
hash: c.hash,
|
|
107
|
+
lastModified: c.lastModified,
|
|
108
|
+
}));
|
|
109
|
+
// Explicit `!== undefined` so an empty-string group filter is honoured
|
|
110
|
+
// literally (matches components whose group is "") rather than treated as
|
|
111
|
+
// "no filter".
|
|
112
|
+
const filtered = group !== undefined ? entries.filter((c) => c.group === group) : entries;
|
|
113
|
+
// Copy before sort — never mutate the parsed array's order in place.
|
|
114
|
+
return [...filtered].sort(compareComponents);
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/store/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,wEAAwE;AACxE,MAAM,CAAC,MAAM,aAAa,GAAG,sBAAsB,CAAC;AAEpD,+EAA+E;AAC/E,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAEzB;IACA;IAFlB,YACkB,KAAa,EACb,MAAc;QAE9B,KAAK,CAAC,qBAAqB,KAAK,mBAAmB,MAAM,EAAE,CAAC,CAAC;QAH7C,UAAK,GAAL,KAAK,CAAQ;QACb,WAAM,GAAN,MAAM,CAAQ;QAG9B,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,uBAAuB,GAAG,CAAC;KAC9B,MAAM,CAAC;IACN,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;CACzB,CAAC;IACF,wEAAwE;IACxE,yEAAyE;IACzE,yEAAyE;KACxE,WAAW,EAAE,CAAC;AAEjB;;;;GAIG;AACH,MAAM,cAAc,GAAG,CAAC;KACrB,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACpC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC;CAC7C,CAAC;KACD,WAAW,EAAE,CAAC;AAKjB;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,CAAmB,EAAE,CAAmB;IACxE,OAAO,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAClG,CAAC;AAED,SAAS,UAAU,CAAC,CAAS,EAAE,CAAS;IACtC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC,CAAC;IACrB,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IACpB,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAa,EACb,GAAuB,EACvB,KAAc;IAEd,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACjC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,OAAO,KAAK,EAAE;QAAE,OAAO,EAAE,CAAC;IAE9B,IAAI,IAAa,CAAC;IAClB,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,kBAAkB,CAAC,KAAK,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;IACvF,CAAC;IAED,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,iBAAiB,CAAC,CAAC;IAC5F,CAAC;IAED,MAAM,OAAO,GAAqB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACnE,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,YAAY,EAAE,CAAC,CAAC,YAAY;KAC7B,CAAC,CAAC,CAAC;IAEJ,uEAAuE;IACvE,0EAA0E;IAC1E,eAAe;IACf,MAAM,QAAQ,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAE1F,qEAAqE;IACrE,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAC/C,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/** One viewer static asset's kit-relative destination path + file bytes. */
|
|
2
|
+
export interface ViewerAsset {
|
|
3
|
+
/** Destination path, relative to the kit root (e.g. "index.html"). */
|
|
4
|
+
path: string;
|
|
5
|
+
/** The file's raw bytes from the packaged or workspace viewer shell. */
|
|
6
|
+
content: Buffer;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Load the viewer's three static files (AC1) as `{path, content}` pairs ready
|
|
10
|
+
* for a store's write primitive. Reads directly off disk (not through
|
|
11
|
+
* `KitStore`, which doesn't exist yet for a kit that isn't created). Returns
|
|
12
|
+
* `[]` — never throws — when neither shell can be loaded, or if any individual
|
|
13
|
+
* file is unexpectedly unreadable (a corrupt/partial install):
|
|
14
|
+
* scaffolding is best-effort sugar on top of kit creation, not a precondition
|
|
15
|
+
* for it, matching `preview.ts`'s "boot fails → fall back" degradation
|
|
16
|
+
* philosophy rather than turning a viewer-packaging hiccup into a hard
|
|
17
|
+
* `create_kit` failure.
|
|
18
|
+
*/
|
|
19
|
+
export declare function loadViewerAssets(): Promise<ViewerAsset[]>;
|
|
20
|
+
//# sourceMappingURL=viewer-assets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viewer-assets.d.ts","sourceRoot":"","sources":["../../src/store/viewer-assets.ts"],"names":[],"mappings":"AA0BA,4EAA4E;AAC5E,MAAM,WAAW,WAAW;IAC1B,sEAAsE;IACtE,IAAI,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,OAAO,EAAE,MAAM,CAAC;CACjB;AA+CD;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CA6B/D"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Viewer-asset scaffolding for `createKit` (DRO-764).
|
|
3
|
+
*
|
|
4
|
+
* `create_kit` (M1-06) mints a new kit directory but historically wrote only
|
|
5
|
+
* `.kit.json` — never the viewer's static shell. Neither storage adapter nor
|
|
6
|
+
* any other tool filled the gap (the viewer CLI only *validates* a kit dir,
|
|
7
|
+
* it never scaffolds one; no sync tool exists), so a freshly created kit had
|
|
8
|
+
* no `index.html`/`viewer.js`/`viewer.css` and none of RFC G-5's three
|
|
9
|
+
* mandated vehicles (`file://` / `localhost` Vite / `ui://genie/grid`) had
|
|
10
|
+
* anything to render for it. This module is the fix's shared read half: it
|
|
11
|
+
* loads the three files' bytes from the shell copied into the server package,
|
|
12
|
+
* falling back to `@ambitresearch/genie-viewer`'s `static/` directory during source
|
|
13
|
+
* development, so both stores can copy them into a new kit's root.
|
|
14
|
+
*
|
|
15
|
+
* ── Optional-peer pattern (mirrors `preview.ts` / `validate/render.ts`) ──────
|
|
16
|
+
* `@ambitresearch/genie-viewer` is a workspace devDependency of `@ambitresearch/genie`, not a
|
|
17
|
+
* runtime dependency. Production reads `dist/ui/viewer-static`, mirrored by
|
|
18
|
+
* `copy-viewer-assets.mjs`; source development resolves the optional package
|
|
19
|
+
* through `import.meta.resolve` with a non-literal specifier. If neither
|
|
20
|
+
* payload is available, loading degrades to an empty array rather than making
|
|
21
|
+
* kit creation fail.
|
|
22
|
+
*/
|
|
23
|
+
import { readFile } from "node:fs/promises";
|
|
24
|
+
import { basename, dirname, join } from "node:path";
|
|
25
|
+
import { fileURLToPath } from "node:url";
|
|
26
|
+
/**
|
|
27
|
+
* The exact three files a kit needs at its root for every RFC G-5 vehicle to
|
|
28
|
+
* have something to render (AC1). Order matches the DRO-764 issue body.
|
|
29
|
+
*/
|
|
30
|
+
const VIEWER_STATIC_FILES = ["index.html", "viewer.js", "viewer.css"];
|
|
31
|
+
const MODULE_DIR = dirname(fileURLToPath(import.meta.url));
|
|
32
|
+
const BUNDLED_STATIC_DIR = join(MODULE_DIR, "..", "ui", "viewer-static");
|
|
33
|
+
const IS_PACKAGED_BUILD = basename(join(MODULE_DIR, "..")) === "dist";
|
|
34
|
+
/**
|
|
35
|
+
* Structured stderr log — never stdout (see `preview.ts`'s identical rule: on
|
|
36
|
+
* the stdio transport, stdout carries the JSON-RPC frames).
|
|
37
|
+
*/
|
|
38
|
+
function logStderr(payload) {
|
|
39
|
+
process.stderr.write(JSON.stringify(payload) + "\n");
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Resolve `@ambitresearch/genie-viewer`'s `static/` directory via its `package.json`
|
|
43
|
+
* (rather than a hardcoded `../../../viewer/static` relative climb), so
|
|
44
|
+
* resolution is correct whether this runs under `tsx` (monorepo source) or a
|
|
45
|
+
* packaged `dist/` build where the two packages may not share the same
|
|
46
|
+
* relative layout. Returns `undefined` if `@ambitresearch/genie-viewer` cannot be resolved
|
|
47
|
+
* (not installed, pruned, etc.) rather than throwing — the caller degrades to
|
|
48
|
+
* "no viewer assets to copy," not a hard failure.
|
|
49
|
+
*/
|
|
50
|
+
function resolveViewerPackageStaticDir() {
|
|
51
|
+
// Non-literal specifier: keeps `tsc` from resolving the optional dep at
|
|
52
|
+
// build time, exactly as `preview.ts`'s `defaultViewerBooter` does for the
|
|
53
|
+
// same package.
|
|
54
|
+
const specifier = "@ambitresearch/genie-viewer/package.json";
|
|
55
|
+
try {
|
|
56
|
+
const pkgJsonUrl = import.meta.resolve(specifier);
|
|
57
|
+
return join(dirname(fileURLToPath(pkgJsonUrl)), "static");
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
logStderr({
|
|
61
|
+
event: "create_kit.viewer_assets.unavailable",
|
|
62
|
+
reason: "viewer-package-not-installed",
|
|
63
|
+
error: String(error),
|
|
64
|
+
});
|
|
65
|
+
return undefined;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Load the viewer's three static files (AC1) as `{path, content}` pairs ready
|
|
70
|
+
* for a store's write primitive. Reads directly off disk (not through
|
|
71
|
+
* `KitStore`, which doesn't exist yet for a kit that isn't created). Returns
|
|
72
|
+
* `[]` — never throws — when neither shell can be loaded, or if any individual
|
|
73
|
+
* file is unexpectedly unreadable (a corrupt/partial install):
|
|
74
|
+
* scaffolding is best-effort sugar on top of kit creation, not a precondition
|
|
75
|
+
* for it, matching `preview.ts`'s "boot fails → fall back" degradation
|
|
76
|
+
* philosophy rather than turning a viewer-packaging hiccup into a hard
|
|
77
|
+
* `create_kit` failure.
|
|
78
|
+
*/
|
|
79
|
+
export async function loadViewerAssets() {
|
|
80
|
+
try {
|
|
81
|
+
return await readViewerAssets(BUNDLED_STATIC_DIR);
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
if (IS_PACKAGED_BUILD) {
|
|
85
|
+
logStderr({
|
|
86
|
+
event: "create_kit.viewer_assets.read_failed",
|
|
87
|
+
source: "bundled-server",
|
|
88
|
+
staticDir: BUNDLED_STATIC_DIR,
|
|
89
|
+
error: String(error),
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
// Source/tsx development has no dist/ui payload; use the workspace package.
|
|
93
|
+
}
|
|
94
|
+
const staticDir = resolveViewerPackageStaticDir();
|
|
95
|
+
if (staticDir === undefined)
|
|
96
|
+
return [];
|
|
97
|
+
try {
|
|
98
|
+
return await readViewerAssets(staticDir);
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
logStderr({
|
|
102
|
+
event: "create_kit.viewer_assets.read_failed",
|
|
103
|
+
source: "optional-viewer-package",
|
|
104
|
+
staticDir,
|
|
105
|
+
error: String(error),
|
|
106
|
+
});
|
|
107
|
+
return [];
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
async function readViewerAssets(staticDir) {
|
|
111
|
+
const assets = [];
|
|
112
|
+
for (const path of VIEWER_STATIC_FILES) {
|
|
113
|
+
const content = await readFile(join(staticDir, path));
|
|
114
|
+
assets.push({ path, content });
|
|
115
|
+
}
|
|
116
|
+
return assets;
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=viewer-assets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viewer-assets.js","sourceRoot":"","sources":["../../src/store/viewer-assets.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* M3-06 (DRO-262) — genie's own `.genie/sync.json` verification anchor.
|
|
3
|
+
*
|
|
4
|
+
* `.genie/sync.json` is the LAST file the atomic sync sequence writes: it
|
|
5
|
+
* records the source/render hashes and the
|
|
6
|
+
* `@genie`-validated component list for whatever the sync just wrote, so the
|
|
7
|
+
* *next* sync can diff against it and repair a half-completed prior run. A
|
|
8
|
+
* mid-plan failure must leave this file unwritten (or stale) — never
|
|
9
|
+
* partially written — which is why {@link writeAnchor} always does a
|
|
10
|
+
* temp-file + rename commit (AC7), the same durability pattern
|
|
11
|
+
* `store/local.ts`'s `stageAndCommit` and `plans/index.ts`'s plan snapshots
|
|
12
|
+
* use elsewhere in this codebase.
|
|
13
|
+
*
|
|
14
|
+
* This is genie's **native** anchor shape — NOT the Anthropic `_ds_sync.json`
|
|
15
|
+
* interop shape (CLAUDE.md hard rule 1 / AGENTS.md hard rule 1). An interop
|
|
16
|
+
* adapter may one day map this to `_ds_sync.json`; that mapping is out of
|
|
17
|
+
* scope here.
|
|
18
|
+
*
|
|
19
|
+
* ── Coordination with M3-05 (DRO-261) ───────────────────────────────────────
|
|
20
|
+
* The 5-step atomic orchestrator (M3-05) calls {@link writeAnchor} as its
|
|
21
|
+
* Step 5 (last write). That issue was still unbuilt on `main` as of this PR,
|
|
22
|
+
* so {@link PlanResult} is this module's own minimal seam — "the set of
|
|
23
|
+
* writes a sync touched, plus which components passed validation" — rather
|
|
24
|
+
* than importing a type from a module that doesn't exist yet. Whichever of
|
|
25
|
+
* M3-05 / M3-06 lands second adapts to the other's shape; the signature
|
|
26
|
+
* `writeAnchor(projectRoot, planResult)` itself (AC1) is the stable contract
|
|
27
|
+
* both issues were told to converge on.
|
|
28
|
+
*/
|
|
29
|
+
/** Kit-root-relative path of genie's verification anchor (D-C). */
|
|
30
|
+
export declare const ANCHOR_PATH = ".genie/sync.json";
|
|
31
|
+
/** Env var overriding {@link Anchor.by} (AC6) — for forks of genie. */
|
|
32
|
+
export declare const GENIE_BY_ENV = "GENIE_BY";
|
|
33
|
+
/** Default {@link Anchor.by} value when `GENIE_BY` is unset (AC6). */
|
|
34
|
+
export declare const DEFAULT_BY = "genie";
|
|
35
|
+
/**
|
|
36
|
+
* genie's own `.genie/sync.json` shape (D-C, AC2) — verbatim the schema the
|
|
37
|
+
* issue body specifies:
|
|
38
|
+
*
|
|
39
|
+
* ```json
|
|
40
|
+
* { "version": 1, "writtenAt": "...", "by": "genie",
|
|
41
|
+
* "sourceHashes": { "components/.../X.tsx": "sha256-..." },
|
|
42
|
+
* "renderHashes": { "components/.../X.html": "sha256-..." },
|
|
43
|
+
* "verified": ["actions/Button", "surfaces/Card"] }
|
|
44
|
+
* ```
|
|
45
|
+
*
|
|
46
|
+
* `sourceHashes`/`renderHashes` map a repo-relative path to its
|
|
47
|
+
* `sha256-<base64>` SRI hash (the same form `list_files`/`manifest.json` use,
|
|
48
|
+
* via the shared {@link sriSha256} helper) — one shared hash format across
|
|
49
|
+
* every genie artifact, per RFC §7.2's existing convention. The `.tsx`
|
|
50
|
+
* example above is illustrative, not exhaustive — see {@link SOURCE_EXTENSIONS}
|
|
51
|
+
* for the full, current set of source extensions `sourceHashes` covers.
|
|
52
|
+
*/
|
|
53
|
+
export interface Anchor {
|
|
54
|
+
version: 1;
|
|
55
|
+
writtenAt: string;
|
|
56
|
+
by: string;
|
|
57
|
+
sourceHashes: Record<string, string>;
|
|
58
|
+
renderHashes: Record<string, string>;
|
|
59
|
+
verified: string[];
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* The minimal "what did this sync touch" input {@link writeAnchor} needs.
|
|
63
|
+
* Deliberately narrow (see the module-doc coordination note above): a plan's
|
|
64
|
+
* writes plus the `<group>/<Name>` ids that passed the M3-04 validator within
|
|
65
|
+
* this sync. `content` is whatever bytes were (or are about to be) written —
|
|
66
|
+
* hashed here so the anchor's hashes are always computed from the exact bytes
|
|
67
|
+
* that landed, not re-read from disk after the fact.
|
|
68
|
+
*/
|
|
69
|
+
export interface PlanResult {
|
|
70
|
+
writes: Array<{
|
|
71
|
+
path: string;
|
|
72
|
+
content: string | Buffer;
|
|
73
|
+
}>;
|
|
74
|
+
verified: string[];
|
|
75
|
+
}
|
|
76
|
+
/** Thrown by {@link readAnchor} when `.genie/sync.json` exists but is not valid genie anchor JSON. */
|
|
77
|
+
export declare class AnchorParseError extends Error {
|
|
78
|
+
readonly projectRoot: string;
|
|
79
|
+
readonly reason: string;
|
|
80
|
+
constructor(projectRoot: string, reason: string);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Compute and atomically write `${projectRoot}/.genie/sync.json` (AC1).
|
|
84
|
+
*
|
|
85
|
+
* - `sourceHashes` covers every {@link SOURCE_EXTENSIONS} path in
|
|
86
|
+
* `planResult.writes` (AC3 — `.tsx`/`.jsx`, plus `.vue` for the shipped Vue
|
|
87
|
+
* framework); `renderHashes` covers every `.html` path (AC4). A path with
|
|
88
|
+
* none of those extensions (e.g. `meta.json`) appears in neither map — this
|
|
89
|
+
* anchor is scoped to source + render provenance, not a general write log.
|
|
90
|
+
* - `verified` is `planResult.verified` verbatim (AC5) — the caller (the
|
|
91
|
+
* M3-05 orchestrator, or a direct test) is the one that ran the M3-04
|
|
92
|
+
* validator and knows which `<group>/<Name>` ids passed.
|
|
93
|
+
* - `by` is {@link DEFAULT_BY} unless overridden by `env.GENIE_BY` (AC6).
|
|
94
|
+
* - The write is atomic (AC7): content lands in a temp file staged under
|
|
95
|
+
* `<projectRoot>/.genie-tmp/` — a different directory from the `.genie/`
|
|
96
|
+
* destination, but the same filesystem/mount, which is the one guarantee
|
|
97
|
+
* POSIX `rename()` actually needs — then renamed over the destination. A
|
|
98
|
+
* crash between the temp write and the rename leaves the PRIOR anchor (or
|
|
99
|
+
* no anchor) intact — never a half-written one.
|
|
100
|
+
*
|
|
101
|
+
* @param env Injectable environment (defaults to `process.env`), so tests can
|
|
102
|
+
* assert the `GENIE_BY` override without mutating global state — the same
|
|
103
|
+
* pattern `write_files.ts`'s `resolveByteCap(env)` uses for
|
|
104
|
+
* `GENIE_WRITE_BYTE_CAP`.
|
|
105
|
+
*/
|
|
106
|
+
export declare function writeAnchor(projectRoot: string, planResult: PlanResult, env?: Record<string, string | undefined>): Promise<void>;
|
|
107
|
+
/**
|
|
108
|
+
* Read + parse `${projectRoot}/.genie/sync.json` (AC1).
|
|
109
|
+
*
|
|
110
|
+
* - Returns `null` — never throws — when the file (or the whole `.genie`
|
|
111
|
+
* dir, or `projectRoot` itself) does not exist (AC8): a fresh kit with no
|
|
112
|
+
* prior sync is a normal, expected state, not an error.
|
|
113
|
+
* - Throws {@link AnchorParseError} when the file EXISTS but is not valid
|
|
114
|
+
* JSON, or is valid JSON that doesn't match the {@link Anchor} shape
|
|
115
|
+
* (including a `version` other than the literal `1`). This is
|
|
116
|
+
* deliberately NOT folded into the `null` case: `null` means "no anchor
|
|
117
|
+
* yet, that's fine"; a corrupt-but-present anchor is a real operability
|
|
118
|
+
* problem for a file whose entire purpose is verification (RFC §10 T-05
|
|
119
|
+
* flags anchor tampering) and must surface rather than silently
|
|
120
|
+
* masquerade as "nothing to verify yet" — the same reasoning
|
|
121
|
+
* `store/manifest.ts`'s `ManifestParseError` already applies to
|
|
122
|
+
* `manifest.json`.
|
|
123
|
+
*/
|
|
124
|
+
export declare function readAnchor(projectRoot: string): Promise<Anchor | null>;
|
|
125
|
+
//# sourceMappingURL=anchor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anchor.d.ts","sourceRoot":"","sources":["../../src/sync/anchor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAUH,mEAAmE;AACnE,eAAO,MAAM,WAAW,qBAAqB,CAAC;AAE9C,uEAAuE;AACvE,eAAO,MAAM,YAAY,aAAa,CAAC;AAEvC,sEAAsE;AACtE,eAAO,MAAM,UAAU,UAAU,CAAC;AA2BlC;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,MAAM;IACrB,OAAO,EAAE,CAAC,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC,CAAC;IAC1D,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,sGAAsG;AACtG,qBAAa,gBAAiB,SAAQ,KAAK;aAEvB,WAAW,EAAE,MAAM;aACnB,MAAM,EAAE,MAAM;gBADd,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM;CAKjC;AAeD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,WAAW,CAC/B,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,UAAU,EACtB,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD,OAAO,CAAC,IAAI,CAAC,CAkCf;AAwBD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAwB5E"}
|