@1claw/cli 0.34.7 → 0.35.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/README.md +66 -5
  2. package/dist/bin/1claw.js +0 -0
  3. package/dist/src/commands/containers.d.ts +3 -0
  4. package/dist/src/commands/containers.d.ts.map +1 -0
  5. package/dist/src/commands/containers.js +130 -0
  6. package/dist/src/commands/containers.js.map +1 -0
  7. package/dist/src/commands/daemon.js +18 -9
  8. package/dist/src/commands/daemon.js.map +1 -1
  9. package/dist/src/commands/deploy.d.ts +3 -0
  10. package/dist/src/commands/deploy.d.ts.map +1 -0
  11. package/dist/src/commands/deploy.js +158 -0
  12. package/dist/src/commands/deploy.js.map +1 -0
  13. package/dist/src/commands/eject.d.ts +3 -0
  14. package/dist/src/commands/eject.d.ts.map +1 -0
  15. package/dist/src/commands/eject.js +84 -0
  16. package/dist/src/commands/eject.js.map +1 -0
  17. package/dist/src/commands/init.d.ts +3 -0
  18. package/dist/src/commands/init.d.ts.map +1 -0
  19. package/dist/src/commands/init.js +490 -0
  20. package/dist/src/commands/init.js.map +1 -0
  21. package/dist/src/commands/local.d.ts.map +1 -1
  22. package/dist/src/commands/local.js +61 -14
  23. package/dist/src/commands/local.js.map +1 -1
  24. package/dist/src/commands/publish.d.ts +3 -0
  25. package/dist/src/commands/publish.d.ts.map +1 -0
  26. package/dist/src/commands/publish.js +153 -0
  27. package/dist/src/commands/publish.js.map +1 -0
  28. package/dist/src/deploy/google-cloud/main.tf +74 -0
  29. package/dist/src/deploy/google-cloud/outputs.tf +9 -0
  30. package/dist/src/deploy/google-cloud/variables.tf +44 -0
  31. package/dist/src/docker/base/Dockerfile +34 -0
  32. package/dist/src/docker/base/chat-ui/index.html +110 -0
  33. package/dist/src/docker/base/chat-ui/server.js +233 -0
  34. package/dist/src/docker/base/entrypoint.sh +61 -0
  35. package/dist/src/docker/base/healthcheck.sh +2 -0
  36. package/dist/src/docker/compose.yaml +20 -0
  37. package/dist/src/docker/templates/Dockerfile.tmpl +7 -0
  38. package/dist/src/index.d.ts.map +1 -1
  39. package/dist/src/index.js +11 -0
  40. package/dist/src/index.js.map +1 -1
  41. package/dist/src/lib/container-config.d.ts +43 -0
  42. package/dist/src/lib/container-config.d.ts.map +1 -0
  43. package/dist/src/lib/container-config.js +98 -0
  44. package/dist/src/lib/container-config.js.map +1 -0
  45. package/dist/src/lib/daemon-control.d.ts +10 -0
  46. package/dist/src/lib/daemon-control.d.ts.map +1 -0
  47. package/dist/src/lib/daemon-control.js +58 -0
  48. package/dist/src/lib/daemon-control.js.map +1 -0
  49. package/dist/src/lib/docker-client.d.ts +58 -0
  50. package/dist/src/lib/docker-client.d.ts.map +1 -0
  51. package/dist/src/lib/docker-client.js +193 -0
  52. package/dist/src/lib/docker-client.js.map +1 -0
  53. package/dist/src/lib/image-build.d.ts +30 -0
  54. package/dist/src/lib/image-build.d.ts.map +1 -0
  55. package/dist/src/lib/image-build.js +74 -0
  56. package/dist/src/lib/image-build.js.map +1 -0
  57. package/dist/src/lib/paths.d.ts +14 -0
  58. package/dist/src/lib/paths.d.ts.map +1 -0
  59. package/dist/src/lib/paths.js +38 -0
  60. package/dist/src/lib/paths.js.map +1 -0
  61. package/dist/src/modules/ampersend/config.json +8 -0
  62. package/dist/src/modules/ampersend/module.yaml +32 -0
  63. package/dist/src/modules/ampersend/startup.sh +4 -0
  64. package/dist/src/modules/elizaos/config.json +7 -0
  65. package/dist/src/modules/elizaos/module.yaml +30 -0
  66. package/dist/src/modules/elizaos/startup.sh +3 -0
  67. package/dist/src/modules/langchain/module.yaml +30 -0
  68. package/dist/src/modules/langchain/startup.sh +3 -0
  69. package/dist/src/modules/onchain/module.yaml +28 -0
  70. package/dist/src/modules/onchain/startup.sh +3 -0
  71. package/dist/src/modules/registry.d.ts +48 -0
  72. package/dist/src/modules/registry.d.ts.map +1 -0
  73. package/dist/src/modules/registry.js +201 -0
  74. package/dist/src/modules/registry.js.map +1 -0
  75. package/dist/src/modules/scaffold-agent/module.yaml +30 -0
  76. package/dist/src/modules/scaffold-agent/startup.sh +3 -0
  77. package/package.json +4 -3
@@ -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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"}
@@ -0,0 +1,30 @@
1
+ name: scaffold-agent
2
+ version: 1.0.0
3
+ description: >
4
+ Scaffold-ETH 2 integration for full-stack dApp agents. Adds tooling to
5
+ interact with SE-2 contracts using 1Claw-managed signing keys.
6
+ author: 1Claw
7
+ homepage: https://1claw.xyz
8
+
9
+ docker:
10
+ packages:
11
+ - "@1claw/sdk@latest"
12
+ - "viem@latest"
13
+ apk:
14
+ - git
15
+ copy:
16
+ - src: startup.sh
17
+ dest: /app/modules/scaffold-agent/startup.sh
18
+ env:
19
+ SCAFFOLD_AGENT_ENABLED: "true"
20
+ ports: []
21
+
22
+ required_secrets: []
23
+
24
+ tools:
25
+ - submit_transaction
26
+ - sign_transaction
27
+
28
+ conflicts: []
29
+ depends:
30
+ - onchain
@@ -0,0 +1,3 @@
1
+ #!/bin/sh
2
+ echo "[scaffold-agent] Scaffold-ETH 2 dApp agent tooling enabled (depends on onchain)."
3
+ echo "[scaffold-agent] Contract interactions are signed via the Intents API."
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@1claw/cli",
3
- "version": "0.34.7",
3
+ "version": "0.35.1",
4
4
  "description": "CLI for 1Claw — secrets management for AI agents and humans",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -19,7 +19,7 @@
19
19
  "dist"
20
20
  ],
21
21
  "scripts": {
22
- "build": "tsc",
22
+ "build": "tsc && node scripts/copy-assets.mjs",
23
23
  "prepublishOnly": "npm run build",
24
24
  "dev": "tsc --watch",
25
25
  "start": "node dist/bin/1claw.js",
@@ -33,7 +33,8 @@
33
33
  "conf": "^13.1.0",
34
34
  "inquirer": "^12.3.2",
35
35
  "open": "^10.1.0",
36
- "ora": "^8.2.0"
36
+ "ora": "^8.2.0",
37
+ "yaml": "^2.9.0"
37
38
  },
38
39
  "devDependencies": {
39
40
  "@types/node": "^22.13.4",