@1claw/cli 0.34.6 → 0.35.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +61 -4
- package/dist/bin/1claw.js +0 -0
- package/dist/src/commands/containers.d.ts +3 -0
- package/dist/src/commands/containers.d.ts.map +1 -0
- package/dist/src/commands/containers.js +130 -0
- package/dist/src/commands/containers.js.map +1 -0
- package/dist/src/commands/daemon.js +35 -11
- package/dist/src/commands/daemon.js.map +1 -1
- package/dist/src/commands/deploy.d.ts +3 -0
- package/dist/src/commands/deploy.d.ts.map +1 -0
- package/dist/src/commands/deploy.js +158 -0
- package/dist/src/commands/deploy.js.map +1 -0
- package/dist/src/commands/eject.d.ts +3 -0
- package/dist/src/commands/eject.d.ts.map +1 -0
- package/dist/src/commands/eject.js +84 -0
- package/dist/src/commands/eject.js.map +1 -0
- package/dist/src/commands/import.js +1 -1
- package/dist/src/commands/import.js.map +1 -1
- package/dist/src/commands/init.d.ts +3 -0
- package/dist/src/commands/init.d.ts.map +1 -0
- package/dist/src/commands/init.js +475 -0
- package/dist/src/commands/init.js.map +1 -0
- package/dist/src/commands/publish.d.ts +3 -0
- package/dist/src/commands/publish.d.ts.map +1 -0
- package/dist/src/commands/publish.js +153 -0
- package/dist/src/commands/publish.js.map +1 -0
- package/dist/src/deploy/google-cloud/main.tf +74 -0
- package/dist/src/deploy/google-cloud/outputs.tf +9 -0
- package/dist/src/deploy/google-cloud/variables.tf +44 -0
- package/dist/src/docker/base/Dockerfile +34 -0
- package/dist/src/docker/base/chat-ui/index.html +110 -0
- package/dist/src/docker/base/chat-ui/server.js +233 -0
- package/dist/src/docker/base/entrypoint.sh +61 -0
- package/dist/src/docker/base/healthcheck.sh +2 -0
- package/dist/src/docker/compose.yaml +20 -0
- package/dist/src/docker/templates/Dockerfile.tmpl +7 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +11 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/lib/container-config.d.ts +43 -0
- package/dist/src/lib/container-config.d.ts.map +1 -0
- package/dist/src/lib/container-config.js +98 -0
- package/dist/src/lib/container-config.js.map +1 -0
- package/dist/src/lib/daemon-control.d.ts +10 -0
- package/dist/src/lib/daemon-control.d.ts.map +1 -0
- package/dist/src/lib/daemon-control.js +58 -0
- package/dist/src/lib/daemon-control.js.map +1 -0
- package/dist/src/lib/docker-client.d.ts +58 -0
- package/dist/src/lib/docker-client.d.ts.map +1 -0
- package/dist/src/lib/docker-client.js +193 -0
- package/dist/src/lib/docker-client.js.map +1 -0
- package/dist/src/lib/image-build.d.ts +30 -0
- package/dist/src/lib/image-build.d.ts.map +1 -0
- package/dist/src/lib/image-build.js +74 -0
- package/dist/src/lib/image-build.js.map +1 -0
- package/dist/src/lib/paths.d.ts +14 -0
- package/dist/src/lib/paths.d.ts.map +1 -0
- package/dist/src/lib/paths.js +38 -0
- package/dist/src/lib/paths.js.map +1 -0
- package/dist/src/modules/ampersend/config.json +8 -0
- package/dist/src/modules/ampersend/module.yaml +32 -0
- package/dist/src/modules/ampersend/startup.sh +4 -0
- package/dist/src/modules/elizaos/config.json +7 -0
- package/dist/src/modules/elizaos/module.yaml +30 -0
- package/dist/src/modules/elizaos/startup.sh +3 -0
- package/dist/src/modules/langchain/module.yaml +30 -0
- package/dist/src/modules/langchain/startup.sh +3 -0
- package/dist/src/modules/onchain/module.yaml +28 -0
- package/dist/src/modules/onchain/startup.sh +3 -0
- package/dist/src/modules/registry.d.ts +48 -0
- package/dist/src/modules/registry.d.ts.map +1 -0
- package/dist/src/modules/registry.js +201 -0
- package/dist/src/modules/registry.js.map +1 -0
- package/dist/src/modules/scaffold-agent/module.yaml +30 -0
- package/dist/src/modules/scaffold-agent/startup.sh +3 -0
- package/package.json +4 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docker-client.js","sourceRoot":"","sources":["../../../src/lib/docker-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;AAgCxE,MAAM,WAAY,SAAQ,KAAK;IAGhB;IAFX,YACI,OAAe,EACR,MAAe;QAEtB,KAAK,CAAC,OAAO,CAAC,CAAC;QAFR,WAAM,GAAN,MAAM,CAAS;QAGtB,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC9B,CAAC;CACJ;AAED,SAAS,GAAG,CACR,IAAc,EACd,OAAyB,EAAE;IAE3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,QAAQ,CACJ,QAAQ,EACR,IAAI,EACJ,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,EAC9C,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YACpB,IAAI,GAAG,EAAE,CAAC;gBACN,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;gBACpC,OAAO;YACX,CAAC;YACD,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACtE,CAAC,CACJ,CAAC;IACN,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,cAAc,CACnB,GAAwD,EACxD,MAAc;IAEd,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACxB,OAAO,IAAI,WAAW,CAClB,0HAA0H,CAC7H,CAAC;IACN,CAAC;IACD,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAChC,IACI,CAAC,CAAC,QAAQ,CAAC,qCAAqC,CAAC;QACjD,CAAC,CAAC,QAAQ,CAAC,8BAA8B,CAAC,EAC5C,CAAC;QACC,OAAO,IAAI,WAAW,CAClB,6FAA6F,EAC7F,CAAC,CACJ,CAAC;IACN,CAAC;IACD,OAAO,IAAI,WAAW,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,IAAI,uBAAuB,EAAE,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,4EAA4E;AAC5E,SAAS,YAAY,CACjB,IAAc,EACd,UAAmC,EACnC,GAAY;IAEZ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAC7C,IAAI,UAAU,GAAG,EAAE,CAAC;QAEpB,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,EAAE;YAC3B,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC5B,UAAU,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;YAC9C,IAAI,UAAU,EAAE,CAAC;gBACb,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBAClC,IAAI,IAAI,CAAC,IAAI,EAAE;wBAAE,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;gBAChD,CAAC;YACL,CAAC;QACL,CAAC,CAAC;QAEF,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAEjC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CACtB,MAAM,CAAC,cAAc,CAAC,GAA4B,EAAE,UAAU,CAAC,CAAC,CACnE,CAAC;QACF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACvB,IAAI,IAAI,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAC;;gBAEtB,MAAM,CACF,IAAI,WAAW,CACX,UAAU,IAAI,CAAC,CAAC,CAAC,qBAAqB,IAAI,EAAE,EAC5C,UAAU,CACb,CACJ,CAAC;QACV,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe;IACjC,IAAI,CAAC;QACD,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,oBAAoB,CAAC,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,KAAK,CAAC;IACjB,CAAC;AACL,CAAC;AAED,iEAAiE;AACjE,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACnC,IAAI,CAAC;QACD,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,oBAAoB,CAAC,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;IAChB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5D,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,KAAa;IACjD,IAAI,CAAC;QACD,MAAM,GAAG,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,KAAK,CAAC;IACjB,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC5B,KAAa,EACb,UAAmC;IAEnC,MAAM,YAAY,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAwB;IACtD,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9D,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1C,CAAC;IACL,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxB,MAAM,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1C,8BAA8B;IAC9B,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;IACpF,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;AACzB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAsB;IAClD,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,4CAA4C;IAClF,IAAI,IAAI,CAAC,OAAO;QAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACvD,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACzD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,IAAI,SAAS,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3D,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,IAAI,SAAS,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5C,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IACD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;QACrD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtC,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;AACzB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,QAAgB;IAC7C,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,QAAgB,EAAE,KAAK,GAAG,KAAK;IAC1D,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;IACpB,IAAI,KAAK;QAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpB,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,QAAgB;IAChD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAClC,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACtD,CAAC;AASD,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACvC,QAAgB;IAEhB,IAAI,CAAC;QACD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC;YACzB,SAAS;YACT,QAAQ;YACR,UAAU;YACV,mFAAmF;SACtF,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAClD,OAAO;YACH,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,MAAM,KAAK,SAAS;YAC7B,MAAM;YACN,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;SACjD,CAAC;IACN,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC7C,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC5B,GAAW,EACX,UAAmC;IAEnC,MAAM,YAAY,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,MAAc,EAAE,MAAc;IAC1D,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAC9B,SAAiB,EACjB,GAAW;IAEX,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;IACzD,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;AACzB,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,UAAU,CAAC,QAAgB,EAAE,MAAe;IACxD,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,IAAI,MAAM;QAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpB,OAAO,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;AAC9E,CAAC;AAED,8EAA8E;AAC9E,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,QAAQ,GAAG,6BAA6B;IACzE,IAAI,CAAC;QACD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC;QAC3E,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAiC,CAAC;QAChE,wEAAwE;QACxE,uEAAuE;QACvE,sEAAsE;QACtE,KAAK,IAAI,CAAC;QACV,KAAK,QAAQ,CAAC;QACd,OAAO,IAAI,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC;AAED,OAAO,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type ModuleManifest } from "../modules/registry.js";
|
|
2
|
+
export declare const DEFAULT_BASE_IMAGE = "1claw/agent:stable";
|
|
3
|
+
/** Build the base image from the bundled Docker context. */
|
|
4
|
+
export declare function buildBaseImage(tag?: string, onProgress?: (line: string) => void): Promise<string>;
|
|
5
|
+
/**
|
|
6
|
+
* Ensure the base image is available locally. If it's the default 1Claw image
|
|
7
|
+
* and missing, build it from bundled assets (works offline). Otherwise pull it.
|
|
8
|
+
*/
|
|
9
|
+
export declare function ensureBaseImage(baseImage: string, onProgress?: (line: string) => void): Promise<void>;
|
|
10
|
+
/** Produce the full Dockerfile content for a base image + module layers. */
|
|
11
|
+
export declare function generateDockerfile(baseImage: string, modules: ModuleManifest[]): string;
|
|
12
|
+
/**
|
|
13
|
+
* Stage a build context (Dockerfile + module COPY assets) into `dir`.
|
|
14
|
+
* Module copy sources are placed under `modules/<name>/<src>` to match the
|
|
15
|
+
* paths emitted by `generateDockerLayers`.
|
|
16
|
+
*/
|
|
17
|
+
export declare function stageBuildContext(dir: string, baseImage: string, modules: ModuleManifest[]): {
|
|
18
|
+
dockerfile: string;
|
|
19
|
+
};
|
|
20
|
+
/** Custom image tag for a given module set. */
|
|
21
|
+
export declare function customImageTag(modules: ModuleManifest[]): string;
|
|
22
|
+
/**
|
|
23
|
+
* Build a module-customized image (FROM base + module layers). Returns the
|
|
24
|
+
* resulting image tag.
|
|
25
|
+
*/
|
|
26
|
+
export declare function buildModuleImage(baseImage: string, modules: ModuleManifest[], onProgress?: (line: string) => void): Promise<{
|
|
27
|
+
tag: string;
|
|
28
|
+
contextDir: string;
|
|
29
|
+
}>;
|
|
30
|
+
//# sourceMappingURL=image-build.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image-build.d.ts","sourceRoot":"","sources":["../../../src/lib/image-build.ts"],"names":[],"mappings":"AAeA,OAAO,EAGH,KAAK,cAAc,EACtB,MAAM,wBAAwB,CAAC;AAEhC,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AAEvD,4DAA4D;AAC5D,wBAAsB,cAAc,CAChC,GAAG,SAAqB,EACxB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GACpC,OAAO,CAAC,MAAM,CAAC,CAOjB;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACjC,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GACpC,OAAO,CAAC,IAAI,CAAC,CAOf;AAED,4EAA4E;AAC5E,wBAAgB,kBAAkB,CAC9B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,cAAc,EAAE,GAC1B,MAAM,CAMR;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC7B,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,cAAc,EAAE,GAC1B;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAkBxB;AAED,+CAA+C;AAC/C,wBAAgB,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,MAAM,CAEhE;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAClC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,cAAc,EAAE,EACzB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GACpC,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAM9C"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { mkdtempSync, mkdirSync, copyFileSync, writeFileSync, existsSync, } from "node:fs";
|
|
2
|
+
import { tmpdir } from "node:os";
|
|
3
|
+
import { join, dirname } from "node:path";
|
|
4
|
+
import { dockerImageExists, dockerPull, dockerBuild, } from "./docker-client.js";
|
|
5
|
+
import { dockerBaseContext, moduleDir } from "./paths.js";
|
|
6
|
+
import { generateDockerLayers, moduleSetHash, } from "../modules/registry.js";
|
|
7
|
+
export const DEFAULT_BASE_IMAGE = "1claw/agent:stable";
|
|
8
|
+
/** Build the base image from the bundled Docker context. */
|
|
9
|
+
export async function buildBaseImage(tag = DEFAULT_BASE_IMAGE, onProgress) {
|
|
10
|
+
const context = dockerBaseContext();
|
|
11
|
+
const dockerfile = join(context, "Dockerfile");
|
|
12
|
+
if (!existsSync(dockerfile)) {
|
|
13
|
+
throw new Error(`Base Dockerfile not found at ${dockerfile}`);
|
|
14
|
+
}
|
|
15
|
+
return dockerBuild({ context, dockerfile, tag, onProgress });
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Ensure the base image is available locally. If it's the default 1Claw image
|
|
19
|
+
* and missing, build it from bundled assets (works offline). Otherwise pull it.
|
|
20
|
+
*/
|
|
21
|
+
export async function ensureBaseImage(baseImage, onProgress) {
|
|
22
|
+
if (await dockerImageExists(baseImage))
|
|
23
|
+
return;
|
|
24
|
+
if (baseImage === DEFAULT_BASE_IMAGE) {
|
|
25
|
+
await buildBaseImage(baseImage, onProgress);
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
await dockerPull(baseImage, onProgress);
|
|
29
|
+
}
|
|
30
|
+
/** Produce the full Dockerfile content for a base image + module layers. */
|
|
31
|
+
export function generateDockerfile(baseImage, modules) {
|
|
32
|
+
const header = "# Generated by 1claw — base image + module layers.\n" +
|
|
33
|
+
`FROM ${baseImage}\n`;
|
|
34
|
+
if (modules.length === 0)
|
|
35
|
+
return header;
|
|
36
|
+
return header + generateDockerLayers(modules);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Stage a build context (Dockerfile + module COPY assets) into `dir`.
|
|
40
|
+
* Module copy sources are placed under `modules/<name>/<src>` to match the
|
|
41
|
+
* paths emitted by `generateDockerLayers`.
|
|
42
|
+
*/
|
|
43
|
+
export function stageBuildContext(dir, baseImage, modules) {
|
|
44
|
+
const dockerfilePath = join(dir, "Dockerfile");
|
|
45
|
+
writeFileSync(dockerfilePath, generateDockerfile(baseImage, modules));
|
|
46
|
+
for (const m of modules) {
|
|
47
|
+
for (const c of m.docker.copy) {
|
|
48
|
+
const srcPath = join(moduleDir(m.name), c.src);
|
|
49
|
+
if (!existsSync(srcPath)) {
|
|
50
|
+
throw new Error(`Module "${m.name}" references missing file "${c.src}".`);
|
|
51
|
+
}
|
|
52
|
+
const destPath = join(dir, "modules", m.name, c.src);
|
|
53
|
+
mkdirSync(dirname(destPath), { recursive: true });
|
|
54
|
+
copyFileSync(srcPath, destPath);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return { dockerfile: dockerfilePath };
|
|
58
|
+
}
|
|
59
|
+
/** Custom image tag for a given module set. */
|
|
60
|
+
export function customImageTag(modules) {
|
|
61
|
+
return `1claw-custom-${moduleSetHash(modules)}:latest`;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Build a module-customized image (FROM base + module layers). Returns the
|
|
65
|
+
* resulting image tag.
|
|
66
|
+
*/
|
|
67
|
+
export async function buildModuleImage(baseImage, modules, onProgress) {
|
|
68
|
+
const tag = customImageTag(modules);
|
|
69
|
+
const dir = mkdtempSync(join(tmpdir(), "1claw-build-"));
|
|
70
|
+
const { dockerfile } = stageBuildContext(dir, baseImage, modules);
|
|
71
|
+
await dockerBuild({ context: dir, dockerfile, tag, onProgress });
|
|
72
|
+
return { tag, contextDir: dir };
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=image-build.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image-build.js","sourceRoot":"","sources":["../../../src/lib/image-build.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** Directory containing the base Docker build context. */
|
|
2
|
+
export declare function dockerBaseContext(): string;
|
|
3
|
+
/** Path to the modules-aware Dockerfile template. */
|
|
4
|
+
export declare function dockerTemplatePath(): string;
|
|
5
|
+
/** docker-compose template path. */
|
|
6
|
+
export declare function composeTemplatePath(): string;
|
|
7
|
+
/** Root directory holding bundled module manifests. */
|
|
8
|
+
export declare function modulesRoot(): string;
|
|
9
|
+
/** Directory for a single module's assets. */
|
|
10
|
+
export declare function moduleDir(name: string): string;
|
|
11
|
+
/** Terraform template directory for a cloud provider. */
|
|
12
|
+
export declare function deployTemplateDir(provider: string): string;
|
|
13
|
+
export declare function assetExists(path: string): boolean;
|
|
14
|
+
//# sourceMappingURL=paths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../../src/lib/paths.ts"],"names":[],"mappings":"AAYA,0DAA0D;AAC1D,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,qDAAqD;AACrD,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,oCAAoC;AACpC,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED,uDAAuD;AACvD,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED,8CAA8C;AAC9C,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,yDAAyD;AACzD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjD"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { dirname, join } from "node:path";
|
|
2
|
+
import { fileURLToPath } from "node:url";
|
|
3
|
+
import { existsSync } from "node:fs";
|
|
4
|
+
// Resolves bundled, non-TypeScript assets (Docker base context + module
|
|
5
|
+
// manifests) both when running from compiled `dist/` and from `src/` in dev.
|
|
6
|
+
//
|
|
7
|
+
// This file compiles to `dist/src/lib/paths.js`, so `../` lands at
|
|
8
|
+
// `dist/src/`, alongside the copied `docker/` and `modules/` asset trees.
|
|
9
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
10
|
+
const srcRoot = join(here, "..");
|
|
11
|
+
/** Directory containing the base Docker build context. */
|
|
12
|
+
export function dockerBaseContext() {
|
|
13
|
+
return join(srcRoot, "docker", "base");
|
|
14
|
+
}
|
|
15
|
+
/** Path to the modules-aware Dockerfile template. */
|
|
16
|
+
export function dockerTemplatePath() {
|
|
17
|
+
return join(srcRoot, "docker", "templates", "Dockerfile.tmpl");
|
|
18
|
+
}
|
|
19
|
+
/** docker-compose template path. */
|
|
20
|
+
export function composeTemplatePath() {
|
|
21
|
+
return join(srcRoot, "docker", "compose.yaml");
|
|
22
|
+
}
|
|
23
|
+
/** Root directory holding bundled module manifests. */
|
|
24
|
+
export function modulesRoot() {
|
|
25
|
+
return join(srcRoot, "modules");
|
|
26
|
+
}
|
|
27
|
+
/** Directory for a single module's assets. */
|
|
28
|
+
export function moduleDir(name) {
|
|
29
|
+
return join(modulesRoot(), name);
|
|
30
|
+
}
|
|
31
|
+
/** Terraform template directory for a cloud provider. */
|
|
32
|
+
export function deployTemplateDir(provider) {
|
|
33
|
+
return join(srcRoot, "deploy", provider);
|
|
34
|
+
}
|
|
35
|
+
export function assetExists(path) {
|
|
36
|
+
return existsSync(path);
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/lib/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,wEAAwE;AACxE,6EAA6E;AAC7E,EAAE;AACF,mEAAmE;AACnE,0EAA0E;AAC1E,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACrD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAEjC,0DAA0D;AAC1D,MAAM,UAAU,iBAAiB;IAC7B,OAAO,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC3C,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,kBAAkB;IAC9B,OAAO,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC;AACnE,CAAC;AAED,oCAAoC;AACpC,MAAM,UAAU,mBAAmB;IAC/B,OAAO,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AACnD,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,WAAW;IACvB,OAAO,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AACpC,CAAC;AAED,8CAA8C;AAC9C,MAAM,UAAU,SAAS,CAAC,IAAY;IAClC,OAAO,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC;AACrC,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAC9C,OAAO,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY;IACpC,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
name: ampersend
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
description: >
|
|
4
|
+
x402 payment control layer via Ampersend. Adds session-key management and
|
|
5
|
+
smart-account USDC payments on Base.
|
|
6
|
+
author: Edge & Node
|
|
7
|
+
homepage: https://ampersend.ai
|
|
8
|
+
|
|
9
|
+
docker:
|
|
10
|
+
packages:
|
|
11
|
+
- "@ampersend/sdk@latest"
|
|
12
|
+
apk: []
|
|
13
|
+
copy:
|
|
14
|
+
- src: config.json
|
|
15
|
+
dest: /app/modules/ampersend/config.json
|
|
16
|
+
- src: startup.sh
|
|
17
|
+
dest: /app/modules/ampersend/startup.sh
|
|
18
|
+
env:
|
|
19
|
+
AMPERSEND_ENABLED: "true"
|
|
20
|
+
ports: []
|
|
21
|
+
|
|
22
|
+
required_secrets:
|
|
23
|
+
- path: integrations/ampersend/api-key
|
|
24
|
+
description: "Ampersend API key for x402 payments"
|
|
25
|
+
optional: true
|
|
26
|
+
|
|
27
|
+
tools:
|
|
28
|
+
- create_x402_payment
|
|
29
|
+
- get_session_key
|
|
30
|
+
|
|
31
|
+
conflicts: []
|
|
32
|
+
depends: []
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
name: elizaos
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
description: >
|
|
4
|
+
ElizaOS character runtime with vault-backed secrets. Adds the ElizaOS core
|
|
5
|
+
so character agents can run with 1Claw-managed credentials.
|
|
6
|
+
author: 1Claw
|
|
7
|
+
homepage: https://1claw.xyz
|
|
8
|
+
|
|
9
|
+
docker:
|
|
10
|
+
packages:
|
|
11
|
+
- "@elizaos/core@latest"
|
|
12
|
+
apk: []
|
|
13
|
+
copy:
|
|
14
|
+
- src: config.json
|
|
15
|
+
dest: /app/modules/elizaos/config.json
|
|
16
|
+
- src: startup.sh
|
|
17
|
+
dest: /app/modules/elizaos/startup.sh
|
|
18
|
+
env:
|
|
19
|
+
ELIZAOS_ENABLED: "true"
|
|
20
|
+
ports: []
|
|
21
|
+
|
|
22
|
+
required_secrets:
|
|
23
|
+
- path: integrations/llm/api-key
|
|
24
|
+
description: "Model provider API key for the character runtime"
|
|
25
|
+
optional: true
|
|
26
|
+
|
|
27
|
+
tools: []
|
|
28
|
+
|
|
29
|
+
conflicts: []
|
|
30
|
+
depends: []
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
name: langchain
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
description: >
|
|
4
|
+
LangChain / LangGraph agent runtime with Shroud-routed LLM calls. Adds the
|
|
5
|
+
core LangChain packages for building tool-using agents.
|
|
6
|
+
author: 1Claw
|
|
7
|
+
homepage: https://1claw.xyz
|
|
8
|
+
|
|
9
|
+
docker:
|
|
10
|
+
packages:
|
|
11
|
+
- "langchain@latest"
|
|
12
|
+
- "@langchain/core@latest"
|
|
13
|
+
- "@langchain/langgraph@latest"
|
|
14
|
+
apk: []
|
|
15
|
+
copy:
|
|
16
|
+
- src: startup.sh
|
|
17
|
+
dest: /app/modules/langchain/startup.sh
|
|
18
|
+
env:
|
|
19
|
+
LANGCHAIN_ENABLED: "true"
|
|
20
|
+
ports: []
|
|
21
|
+
|
|
22
|
+
required_secrets:
|
|
23
|
+
- path: integrations/llm/api-key
|
|
24
|
+
description: "LLM provider API key (routed through Shroud)"
|
|
25
|
+
optional: true
|
|
26
|
+
|
|
27
|
+
tools: []
|
|
28
|
+
|
|
29
|
+
conflicts: []
|
|
30
|
+
depends: []
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
name: onchain
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
description: >
|
|
4
|
+
Multi-chain signing and Intents API tooling. Adds transaction submission,
|
|
5
|
+
signing-key management, and on-chain intent helpers.
|
|
6
|
+
author: 1Claw
|
|
7
|
+
homepage: https://1claw.xyz
|
|
8
|
+
|
|
9
|
+
docker:
|
|
10
|
+
packages:
|
|
11
|
+
- "@1claw/sdk@latest"
|
|
12
|
+
apk: []
|
|
13
|
+
copy:
|
|
14
|
+
- src: startup.sh
|
|
15
|
+
dest: /app/modules/onchain/startup.sh
|
|
16
|
+
env:
|
|
17
|
+
ONCHAIN_SIGNING_ENABLED: "true"
|
|
18
|
+
ports: []
|
|
19
|
+
|
|
20
|
+
required_secrets: []
|
|
21
|
+
|
|
22
|
+
tools:
|
|
23
|
+
- submit_transaction
|
|
24
|
+
- sign_transaction
|
|
25
|
+
- list_signing_keys
|
|
26
|
+
|
|
27
|
+
conflicts: []
|
|
28
|
+
depends: []
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { moduleDir } from "../lib/paths.js";
|
|
2
|
+
export interface ModuleCopy {
|
|
3
|
+
src: string;
|
|
4
|
+
dest: string;
|
|
5
|
+
}
|
|
6
|
+
export interface ModuleManifest {
|
|
7
|
+
name: string;
|
|
8
|
+
version: string;
|
|
9
|
+
description: string;
|
|
10
|
+
author: string;
|
|
11
|
+
homepage?: string;
|
|
12
|
+
docker: {
|
|
13
|
+
packages: string[];
|
|
14
|
+
apk: string[];
|
|
15
|
+
copy: ModuleCopy[];
|
|
16
|
+
env: Record<string, string>;
|
|
17
|
+
ports: string[];
|
|
18
|
+
};
|
|
19
|
+
required_secrets: {
|
|
20
|
+
path: string;
|
|
21
|
+
description: string;
|
|
22
|
+
optional: boolean;
|
|
23
|
+
}[];
|
|
24
|
+
tools: string[];
|
|
25
|
+
conflicts: string[];
|
|
26
|
+
depends: string[];
|
|
27
|
+
}
|
|
28
|
+
/** Load and validate a single module manifest by name. */
|
|
29
|
+
export declare function loadModule(name: string): ModuleManifest;
|
|
30
|
+
export declare function listModuleNames(): string[];
|
|
31
|
+
export declare function listModules(): ModuleManifest[];
|
|
32
|
+
/**
|
|
33
|
+
* Resolve a list of requested module names into a fully-ordered list:
|
|
34
|
+
* - recursively pulls in `depends`
|
|
35
|
+
* - rejects mutual conflicts
|
|
36
|
+
* - topologically sorts so dependencies precede dependents
|
|
37
|
+
* - detects dependency cycles
|
|
38
|
+
*/
|
|
39
|
+
export declare function resolveModules(names: string[]): ModuleManifest[];
|
|
40
|
+
/**
|
|
41
|
+
* Generate the Dockerfile layer fragment for the resolved modules. The result
|
|
42
|
+
* is appended after a `FROM <base>` line by the caller.
|
|
43
|
+
*/
|
|
44
|
+
export declare function generateDockerLayers(modules: ModuleManifest[]): string;
|
|
45
|
+
/** Stable content hash for a module set — used to name custom images. */
|
|
46
|
+
export declare function moduleSetHash(modules: ModuleManifest[]): string;
|
|
47
|
+
export { moduleDir };
|
|
48
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/modules/registry.ts"],"names":[],"mappings":"AAGA,OAAO,EAAe,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEzD,MAAM,WAAW,UAAU;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE;QACJ,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,GAAG,EAAE,MAAM,EAAE,CAAC;QACd,IAAI,EAAE,UAAU,EAAE,CAAC;QACnB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC5B,KAAK,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;IACF,gBAAgB,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;IAC7E,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;CACrB;AA2DD,0DAA0D;AAC1D,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAgBvD;AAED,wBAAgB,eAAe,IAAI,MAAM,EAAE,CAe1C;AAED,wBAAgB,WAAW,IAAI,cAAc,EAAE,CAE9C;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,cAAc,EAAE,CAyDhE;AAMD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,MAAM,CAuBtE;AAOD,yEAAyE;AACzE,wBAAgB,aAAa,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,MAAM,CAS/D;AAED,OAAO,EAAE,SAAS,EAAE,CAAC"}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { parse as parseYaml } from "yaml";
|
|
4
|
+
import { modulesRoot, moduleDir } from "../lib/paths.js";
|
|
5
|
+
const REQUIRED_FIELDS = ["name", "version", "description"];
|
|
6
|
+
function normalizeManifest(raw, name) {
|
|
7
|
+
for (const f of REQUIRED_FIELDS) {
|
|
8
|
+
if (!raw[f]) {
|
|
9
|
+
throw new Error(`Module "${name}" manifest is missing required field "${f}".`);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
const docker = (raw.docker ?? {});
|
|
13
|
+
return {
|
|
14
|
+
name: String(raw.name),
|
|
15
|
+
version: String(raw.version),
|
|
16
|
+
description: String(raw.description).trim(),
|
|
17
|
+
author: String(raw.author ?? "unknown"),
|
|
18
|
+
homepage: raw.homepage ? String(raw.homepage) : undefined,
|
|
19
|
+
docker: {
|
|
20
|
+
packages: asStringArray(docker.packages),
|
|
21
|
+
apk: asStringArray(docker.apk),
|
|
22
|
+
copy: asCopyArray(docker.copy),
|
|
23
|
+
env: asStringRecord(docker.env),
|
|
24
|
+
ports: asStringArray(docker.ports),
|
|
25
|
+
},
|
|
26
|
+
required_secrets: Array.isArray(raw.required_secrets)
|
|
27
|
+
? raw.required_secrets.map((s) => ({
|
|
28
|
+
path: String(s.path ?? ""),
|
|
29
|
+
description: String(s.description ?? ""),
|
|
30
|
+
optional: s.optional !== false,
|
|
31
|
+
}))
|
|
32
|
+
: [],
|
|
33
|
+
tools: asStringArray(raw.tools),
|
|
34
|
+
conflicts: asStringArray(raw.conflicts),
|
|
35
|
+
depends: asStringArray(raw.depends),
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
function asStringArray(v) {
|
|
39
|
+
if (!Array.isArray(v))
|
|
40
|
+
return [];
|
|
41
|
+
return v.map((x) => String(x));
|
|
42
|
+
}
|
|
43
|
+
function asStringRecord(v) {
|
|
44
|
+
if (!v || typeof v !== "object")
|
|
45
|
+
return {};
|
|
46
|
+
const out = {};
|
|
47
|
+
for (const [k, val] of Object.entries(v)) {
|
|
48
|
+
out[k] = String(val);
|
|
49
|
+
}
|
|
50
|
+
return out;
|
|
51
|
+
}
|
|
52
|
+
function asCopyArray(v) {
|
|
53
|
+
if (!Array.isArray(v))
|
|
54
|
+
return [];
|
|
55
|
+
return v
|
|
56
|
+
.map((x) => x)
|
|
57
|
+
.filter((x) => x && x.src && x.dest)
|
|
58
|
+
.map((x) => ({ src: String(x.src), dest: String(x.dest) }));
|
|
59
|
+
}
|
|
60
|
+
/** Load and validate a single module manifest by name. */
|
|
61
|
+
export function loadModule(name) {
|
|
62
|
+
const dir = moduleDir(name);
|
|
63
|
+
const manifestPath = join(dir, "module.yaml");
|
|
64
|
+
if (!existsSync(manifestPath)) {
|
|
65
|
+
const available = listModuleNames();
|
|
66
|
+
throw new Error(`Unknown module "${name}". Available modules: ${available.join(", ") || "(none)"}.`);
|
|
67
|
+
}
|
|
68
|
+
const raw = parseYaml(readFileSync(manifestPath, "utf-8"));
|
|
69
|
+
const manifest = normalizeManifest(raw, name);
|
|
70
|
+
if (manifest.name !== name) {
|
|
71
|
+
// The directory name is canonical.
|
|
72
|
+
manifest.name = name;
|
|
73
|
+
}
|
|
74
|
+
return manifest;
|
|
75
|
+
}
|
|
76
|
+
export function listModuleNames() {
|
|
77
|
+
const root = modulesRoot();
|
|
78
|
+
if (!existsSync(root))
|
|
79
|
+
return [];
|
|
80
|
+
return readdirSync(root)
|
|
81
|
+
.filter((d) => {
|
|
82
|
+
try {
|
|
83
|
+
return (statSync(join(root, d)).isDirectory() &&
|
|
84
|
+
existsSync(join(root, d, "module.yaml")));
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
})
|
|
90
|
+
.sort();
|
|
91
|
+
}
|
|
92
|
+
export function listModules() {
|
|
93
|
+
return listModuleNames().map((n) => loadModule(n));
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Resolve a list of requested module names into a fully-ordered list:
|
|
97
|
+
* - recursively pulls in `depends`
|
|
98
|
+
* - rejects mutual conflicts
|
|
99
|
+
* - topologically sorts so dependencies precede dependents
|
|
100
|
+
* - detects dependency cycles
|
|
101
|
+
*/
|
|
102
|
+
export function resolveModules(names) {
|
|
103
|
+
const requested = dedupe(names.map((n) => n.trim()).filter(Boolean));
|
|
104
|
+
// Load all reachable modules (requested + transitive deps).
|
|
105
|
+
const loaded = new Map();
|
|
106
|
+
const stack = [...requested];
|
|
107
|
+
while (stack.length) {
|
|
108
|
+
const name = stack.pop();
|
|
109
|
+
if (loaded.has(name))
|
|
110
|
+
continue;
|
|
111
|
+
const m = loadModule(name);
|
|
112
|
+
loaded.set(name, m);
|
|
113
|
+
for (const dep of m.depends) {
|
|
114
|
+
if (!loaded.has(dep))
|
|
115
|
+
stack.push(dep);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
// Conflict detection across the full set.
|
|
119
|
+
const present = new Set(loaded.keys());
|
|
120
|
+
for (const m of loaded.values()) {
|
|
121
|
+
for (const c of m.conflicts) {
|
|
122
|
+
if (present.has(c)) {
|
|
123
|
+
throw new Error(`Module conflict: "${m.name}" conflicts with "${c}". Remove one of them.`);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
// Topological sort (DFS) with cycle detection.
|
|
128
|
+
const sorted = [];
|
|
129
|
+
const visiting = new Set();
|
|
130
|
+
const visited = new Set();
|
|
131
|
+
const visit = (name, trail) => {
|
|
132
|
+
if (visited.has(name))
|
|
133
|
+
return;
|
|
134
|
+
if (visiting.has(name)) {
|
|
135
|
+
throw new Error(`Circular module dependency: ${[...trail, name].join(" → ")}.`);
|
|
136
|
+
}
|
|
137
|
+
visiting.add(name);
|
|
138
|
+
const m = loaded.get(name);
|
|
139
|
+
if (!m)
|
|
140
|
+
throw new Error(`Module "${name}" failed to load.`);
|
|
141
|
+
for (const dep of m.depends) {
|
|
142
|
+
visit(dep, [...trail, name]);
|
|
143
|
+
}
|
|
144
|
+
visiting.delete(name);
|
|
145
|
+
visited.add(name);
|
|
146
|
+
sorted.push(m);
|
|
147
|
+
};
|
|
148
|
+
// Visit requested in stable order so output is deterministic.
|
|
149
|
+
for (const name of [...loaded.keys()].sort()) {
|
|
150
|
+
visit(name, []);
|
|
151
|
+
}
|
|
152
|
+
return sorted;
|
|
153
|
+
}
|
|
154
|
+
function dedupe(arr) {
|
|
155
|
+
return [...new Set(arr)];
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Generate the Dockerfile layer fragment for the resolved modules. The result
|
|
159
|
+
* is appended after a `FROM <base>` line by the caller.
|
|
160
|
+
*/
|
|
161
|
+
export function generateDockerLayers(modules) {
|
|
162
|
+
const lines = [];
|
|
163
|
+
for (const m of modules) {
|
|
164
|
+
lines.push("");
|
|
165
|
+
lines.push(`# --- Module: ${m.name} (v${m.version}) ---`);
|
|
166
|
+
if (m.docker.apk.length) {
|
|
167
|
+
lines.push(`RUN apk add --no-cache ${m.docker.apk.join(" ")}`);
|
|
168
|
+
}
|
|
169
|
+
if (m.docker.packages.length) {
|
|
170
|
+
lines.push(`RUN npm install -g ${m.docker.packages.join(" ")}`);
|
|
171
|
+
}
|
|
172
|
+
for (const c of m.docker.copy) {
|
|
173
|
+
// Module copy sources are staged under modules/<name>/ in the build context.
|
|
174
|
+
lines.push(`COPY modules/${m.name}/${c.src} ${c.dest}`);
|
|
175
|
+
if (c.dest.endsWith(".sh")) {
|
|
176
|
+
lines.push(`RUN chmod +x ${c.dest}`);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
for (const [k, v] of Object.entries(m.docker.env)) {
|
|
180
|
+
lines.push(`ENV ${k}=${dockerEnvValue(v)}`);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
return lines.join("\n") + "\n";
|
|
184
|
+
}
|
|
185
|
+
function dockerEnvValue(v) {
|
|
186
|
+
// Quote values containing whitespace; ENV supports JSON-ish quoting.
|
|
187
|
+
return /\s/.test(v) ? JSON.stringify(v) : v;
|
|
188
|
+
}
|
|
189
|
+
/** Stable content hash for a module set — used to name custom images. */
|
|
190
|
+
export function moduleSetHash(modules) {
|
|
191
|
+
// Lightweight, dependency-free FNV-1a hash of the ordered name@version list.
|
|
192
|
+
const key = modules.map((m) => `${m.name}@${m.version}`).join("|");
|
|
193
|
+
let hash = 0x811c9dc5;
|
|
194
|
+
for (let i = 0; i < key.length; i++) {
|
|
195
|
+
hash ^= key.charCodeAt(i);
|
|
196
|
+
hash = Math.imul(hash, 0x01000193);
|
|
197
|
+
}
|
|
198
|
+
return (hash >>> 0).toString(16).padStart(8, "0");
|
|
199
|
+
}
|
|
200
|
+
export { moduleDir };
|
|
201
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/modules/registry.ts"],"names":[],"mappings":"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"}
|