@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
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# @1claw/cli (v0.
|
|
1
|
+
# @1claw/cli (v0.35.0)
|
|
2
2
|
|
|
3
3
|
Command-line interface for [1Claw](https://1claw.xyz) — HSM-backed secret management for AI agents and humans.
|
|
4
4
|
|
|
@@ -11,7 +11,7 @@ Designed for CI/CD pipelines, DevOps workflows, and server environments.
|
|
|
11
11
|
### Homebrew (macOS / Linux)
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
|
-
brew install 1clawAI/tap/
|
|
14
|
+
brew install 1clawAI/tap/oneclaw
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
### npm
|
|
@@ -544,8 +544,8 @@ The daemon serves secrets over a Unix socket and injects them into HTTP requests
|
|
|
544
544
|
1claw daemon start
|
|
545
545
|
|
|
546
546
|
# Manage per-secret policies (which hosts can receive each secret)
|
|
547
|
-
1claw daemon policy add STRIPE_KEY --hosts api.stripe.com
|
|
548
|
-
1claw daemon policy add OPENAI_KEY --hosts api.openai.com,*.openai.com
|
|
547
|
+
1claw daemon policy add STRIPE_KEY --hosts api.stripe.com --inject-as bearer
|
|
548
|
+
1claw daemon policy add OPENAI_KEY --hosts api.openai.com,*.openai.com --inject-as bearer
|
|
549
549
|
1claw daemon policy list
|
|
550
550
|
1claw daemon policy remove STRIPE_KEY
|
|
551
551
|
|
|
@@ -577,6 +577,63 @@ AI Client (Claude, Cursor, etc.)
|
|
|
577
577
|
└─ Secret Proxy (injects credentials into HTTP requests)
|
|
578
578
|
```
|
|
579
579
|
|
|
580
|
+
## Containerized Agent Runtime (`init --docker`)
|
|
581
|
+
|
|
582
|
+
`1claw init --docker` provisions a secure agent runtime inside a Docker container in one command. The container ships with the 1Claw MCP server and a lightweight chat UI. Crucially, the container **never receives the agent API key** — the host daemon injects credentials over a read-only Unix-socket mount, preserving the same trust boundary as local daemon mode.
|
|
583
|
+
|
|
584
|
+
```bash
|
|
585
|
+
1claw init --docker # Basic secure agent
|
|
586
|
+
1claw init --docker --module=ampersend # With x402 payments
|
|
587
|
+
1claw init --docker --module=ampersend,onchain --port 8080
|
|
588
|
+
1claw init --docker --local # Fully offline — no cloud account
|
|
589
|
+
1claw init --docker --list-modules # List available modules
|
|
590
|
+
```
|
|
591
|
+
|
|
592
|
+
When the cloud is reachable, `init` provisions an agent + vault + read policy and stores the agent key in your local vault (the daemon injects it toward `*.1claw.xyz`). With `--local`, nothing touches the cloud. The base image is built from bundled assets if it isn't already present, so the flow works offline.
|
|
593
|
+
|
|
594
|
+
### Modules
|
|
595
|
+
|
|
596
|
+
Composable container extensions defined by `module.yaml` manifests bundled with the CLI:
|
|
597
|
+
|
|
598
|
+
| Module | Description |
|
|
599
|
+
| --- | --- |
|
|
600
|
+
| `ampersend` | x402 payment control layer (session keys, Base USDC) |
|
|
601
|
+
| `onchain` | Multi-chain signing + Intents API tools |
|
|
602
|
+
| `langchain` | LangChain / LangGraph agent runtime (Shroud-routed) |
|
|
603
|
+
| `elizaos` | ElizaOS character runtime with vault-backed secrets |
|
|
604
|
+
| `scaffold-agent` | Scaffold-ETH 2 dApp agent (depends on `onchain`) |
|
|
605
|
+
|
|
606
|
+
Modules resolve dependencies, detect conflicts, and are topologically sorted. When modules are present, the CLI builds a custom image (`FROM 1claw/agent:stable` + module layers).
|
|
607
|
+
|
|
608
|
+
### Managing containers
|
|
609
|
+
|
|
610
|
+
```bash
|
|
611
|
+
1claw containers list # List managed agent containers
|
|
612
|
+
1claw containers info <name> # Show details
|
|
613
|
+
1claw containers logs <name> # Tail logs
|
|
614
|
+
1claw containers stop <name> # Stop a container
|
|
615
|
+
1claw containers rm <name> [--force] # Remove container + local state
|
|
616
|
+
```
|
|
617
|
+
|
|
618
|
+
### Publish & eject
|
|
619
|
+
|
|
620
|
+
```bash
|
|
621
|
+
1claw publish --name my-agent --tag <user>/my-agent:v1 # Rebuild + push
|
|
622
|
+
1claw publish --tag <user>/custom:latest # From ./Dockerfile
|
|
623
|
+
1claw publish --name my-agent --commit --tag <user>/m:c # Snapshot a running container
|
|
624
|
+
1claw eject --name my-agent --output ./out # Export Dockerfile + compose + module configs
|
|
625
|
+
```
|
|
626
|
+
|
|
627
|
+
### Cloud deploy (Google Cloud Run)
|
|
628
|
+
|
|
629
|
+
```bash
|
|
630
|
+
1claw publish --name my-agent --tag <user>/my-agent:v1 # Image must be in a registry first
|
|
631
|
+
1claw deploy --google-cloud --name my-agent # Generate Terraform
|
|
632
|
+
1claw deploy --google-cloud --name my-agent --apply # Generate + apply (needs TF_VAR_agent_api_key)
|
|
633
|
+
```
|
|
634
|
+
|
|
635
|
+
In cloud mode the container uses the agent key directly (injected from Secret Manager), not the host daemon.
|
|
636
|
+
|
|
580
637
|
## Global options
|
|
581
638
|
|
|
582
639
|
```bash
|
package/dist/bin/1claw.js
CHANGED
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"containers.d.ts","sourceRoot":"","sources":["../../../src/commands/containers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuBpC,eAAO,MAAM,iBAAiB,SAE7B,CAAC"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
import { printSuccess, printError, printWarning, printInfo, printTable, printKeyValue, formatDate, } from "../output.js";
|
|
4
|
+
import { dockerStop, dockerRm, dockerContainerStatus, dockerLogs, } from "../lib/docker-client.js";
|
|
5
|
+
import { listContainerStates, loadContainerState, deleteContainerState, } from "../lib/container-config.js";
|
|
6
|
+
export const containersCommand = new Command("containers").description("Manage agent containers created by `1claw init`");
|
|
7
|
+
containersCommand
|
|
8
|
+
.command("list")
|
|
9
|
+
.alias("ls")
|
|
10
|
+
.description("List managed agent containers")
|
|
11
|
+
.action(async () => {
|
|
12
|
+
const states = listContainerStates();
|
|
13
|
+
if (states.length === 0) {
|
|
14
|
+
printInfo("No managed containers. Create one with `1claw init --docker`.");
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
const rows = [];
|
|
18
|
+
for (const s of states) {
|
|
19
|
+
const status = await dockerContainerStatus(s.containerName);
|
|
20
|
+
rows.push({
|
|
21
|
+
name: s.containerName,
|
|
22
|
+
status: status.running
|
|
23
|
+
? chalk.green(status.health ?? "running")
|
|
24
|
+
: status.exists
|
|
25
|
+
? chalk.yellow(status.status ?? "stopped")
|
|
26
|
+
: chalk.dim("absent"),
|
|
27
|
+
port: String(s.port),
|
|
28
|
+
modules: s.modules.join(",") || chalk.dim("none"),
|
|
29
|
+
image: s.customImage ?? s.image,
|
|
30
|
+
created: formatDate(s.createdAt),
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
printTable(rows, [
|
|
34
|
+
{ key: "name", header: "Name", width: 22 },
|
|
35
|
+
{ key: "status", header: "Status" },
|
|
36
|
+
{ key: "port", header: "Port" },
|
|
37
|
+
{ key: "modules", header: "Modules", width: 20 },
|
|
38
|
+
{ key: "image", header: "Image", width: 26 },
|
|
39
|
+
{ key: "created", header: "Created" },
|
|
40
|
+
]);
|
|
41
|
+
});
|
|
42
|
+
containersCommand
|
|
43
|
+
.command("info <name>")
|
|
44
|
+
.description("Show details for a managed container")
|
|
45
|
+
.action(async (name) => {
|
|
46
|
+
const state = loadContainerState(name);
|
|
47
|
+
if (!state) {
|
|
48
|
+
printError(`No container state for "${name}".`);
|
|
49
|
+
process.exit(1);
|
|
50
|
+
}
|
|
51
|
+
const status = await dockerContainerStatus(name);
|
|
52
|
+
printKeyValue([
|
|
53
|
+
["Name", state.containerName],
|
|
54
|
+
["Status", status.running ? "running" : status.exists ? (status.status ?? "stopped") : "absent"],
|
|
55
|
+
["Health", status.health ?? "—"],
|
|
56
|
+
["Chat UI", `http://localhost:${state.port}`],
|
|
57
|
+
["Agent ID", state.agentId ?? "—"],
|
|
58
|
+
["Vault ID", state.vaultId ?? "—"],
|
|
59
|
+
["Modules", state.modules.join(", ") || "none"],
|
|
60
|
+
["Image", state.customImage ?? state.image],
|
|
61
|
+
["Published", state.publishedAt ? formatDate(state.publishedAt, "long") : "—"],
|
|
62
|
+
["Created", formatDate(state.createdAt, "long")],
|
|
63
|
+
]);
|
|
64
|
+
});
|
|
65
|
+
containersCommand
|
|
66
|
+
.command("stop <name>")
|
|
67
|
+
.description("Stop a running container")
|
|
68
|
+
.action(async (name) => {
|
|
69
|
+
const state = loadContainerState(name);
|
|
70
|
+
if (!state) {
|
|
71
|
+
printError(`No container state for "${name}".`);
|
|
72
|
+
process.exit(1);
|
|
73
|
+
}
|
|
74
|
+
try {
|
|
75
|
+
await dockerStop(state.containerName);
|
|
76
|
+
printSuccess(`Stopped ${name}.`);
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
printError(err instanceof Error ? err.message : String(err));
|
|
80
|
+
process.exit(1);
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
containersCommand
|
|
84
|
+
.command("rm <name>")
|
|
85
|
+
.description("Remove a container and its local state")
|
|
86
|
+
.option("-f, --force", "Force-remove a running container")
|
|
87
|
+
.action(async (name, opts) => {
|
|
88
|
+
const state = loadContainerState(name);
|
|
89
|
+
if (!state) {
|
|
90
|
+
printWarning(`No state for "${name}" — nothing to remove.`);
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
try {
|
|
94
|
+
const status = await dockerContainerStatus(state.containerName);
|
|
95
|
+
if (status.exists) {
|
|
96
|
+
await dockerRm(state.containerName, !!opts.force);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
catch (err) {
|
|
100
|
+
printError(`Could not remove container (use -f to force): ${err instanceof Error ? err.message : String(err)}`);
|
|
101
|
+
process.exit(1);
|
|
102
|
+
}
|
|
103
|
+
deleteContainerState(name);
|
|
104
|
+
printSuccess(`Removed ${name} and its state.`);
|
|
105
|
+
});
|
|
106
|
+
containersCommand
|
|
107
|
+
.command("logs <name>")
|
|
108
|
+
.description("Tail a container's logs")
|
|
109
|
+
.option("--no-follow", "Print current logs and exit")
|
|
110
|
+
.action(async (name, opts) => {
|
|
111
|
+
const state = loadContainerState(name);
|
|
112
|
+
if (!state) {
|
|
113
|
+
printError(`No container state for "${name}".`);
|
|
114
|
+
process.exit(1);
|
|
115
|
+
}
|
|
116
|
+
const status = await dockerContainerStatus(state.containerName);
|
|
117
|
+
if (!status.exists) {
|
|
118
|
+
printError(`Container "${name}" does not exist.`);
|
|
119
|
+
process.exit(1);
|
|
120
|
+
}
|
|
121
|
+
const child = dockerLogs(state.containerName, opts.follow !== false);
|
|
122
|
+
await new Promise((resolve) => {
|
|
123
|
+
process.on("SIGINT", () => {
|
|
124
|
+
child.kill();
|
|
125
|
+
resolve();
|
|
126
|
+
});
|
|
127
|
+
child.on("close", () => resolve());
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
//# sourceMappingURL=containers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"containers.js","sourceRoot":"","sources":["../../../src/commands/containers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
2
|
import { createServer, } from "node:http";
|
|
3
|
-
import { existsSync, readFileSync, writeFileSync, unlinkSync } from "node:fs";
|
|
3
|
+
import { existsSync, readFileSync, writeFileSync, unlinkSync, chmodSync } from "node:fs";
|
|
4
4
|
import { homedir } from "node:os";
|
|
5
5
|
import { join } from "node:path";
|
|
6
6
|
import chalk from "chalk";
|
|
@@ -48,15 +48,23 @@ daemonCommand
|
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
50
|
console.log();
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
51
|
+
// Non-interactive unlock for automation (e.g. `1claw init` starting
|
|
52
|
+
// the daemon as a detached child). Falls back to a prompt otherwise.
|
|
53
|
+
let passphrase;
|
|
54
|
+
if (process.env.ONECLAW_VAULT_PASSPHRASE) {
|
|
55
|
+
passphrase = process.env.ONECLAW_VAULT_PASSPHRASE;
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
printInfo("Unlocking local vault to start daemon...");
|
|
59
|
+
({ passphrase } = await inquirer.prompt([
|
|
60
|
+
{
|
|
61
|
+
type: "password",
|
|
62
|
+
name: "passphrase",
|
|
63
|
+
message: "Vault passphrase:",
|
|
64
|
+
mask: "*",
|
|
65
|
+
},
|
|
66
|
+
]));
|
|
67
|
+
}
|
|
60
68
|
let vault;
|
|
61
69
|
try {
|
|
62
70
|
vault = loadVault(passphrase);
|
|
@@ -68,16 +76,32 @@ daemonCommand
|
|
|
68
76
|
const policy = loadPolicy();
|
|
69
77
|
const secretCount = Object.keys(vault.secrets).length;
|
|
70
78
|
const policyCount = Object.keys(policy.secrets).length;
|
|
79
|
+
// Detach stdin so a closed pipe (e.g. from automation) doesn't
|
|
80
|
+
// tear down the event loop once the server is listening.
|
|
81
|
+
try {
|
|
82
|
+
process.stdin.pause();
|
|
83
|
+
}
|
|
84
|
+
catch { /* ok */ }
|
|
85
|
+
try {
|
|
86
|
+
process.stdin.unref();
|
|
87
|
+
}
|
|
88
|
+
catch { /* ok */ }
|
|
71
89
|
const server = createDaemonServer(vault, policy);
|
|
90
|
+
server.on("error", (err) => {
|
|
91
|
+
printError(`Daemon server error: ${err.message}`);
|
|
92
|
+
process.exit(1);
|
|
93
|
+
});
|
|
72
94
|
server.listen(socketPath, () => {
|
|
73
95
|
try {
|
|
74
|
-
const { chmodSync } = require("node:fs");
|
|
75
96
|
chmodSync(socketPath, 0o600);
|
|
76
97
|
}
|
|
77
98
|
catch {
|
|
78
99
|
// best-effort
|
|
79
100
|
}
|
|
80
101
|
writeFileSync(PID_FILE, String(process.pid));
|
|
102
|
+
// Keep the event loop alive — without this, Node may exit when
|
|
103
|
+
// stdin closes (piped passphrase) and imported modules drain.
|
|
104
|
+
setInterval(() => { }, 1_000);
|
|
81
105
|
console.log();
|
|
82
106
|
printSuccess(`1Claw daemon running on ${chalk.bold(socketPath)}`);
|
|
83
107
|
printInfo(`Serving ${secretCount} secret(s), ${policyCount} policy rule(s).`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../../src/commands/daemon.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../../src/commands/daemon.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/commands/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiCpC,eAAO,MAAM,aAAa,SAiBpB,CAAC"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { execFile, spawn } from "node:child_process";
|
|
3
|
+
import { existsSync, mkdirSync, copyFileSync, writeFileSync, readdirSync, } from "node:fs";
|
|
4
|
+
import { join, resolve } from "node:path";
|
|
5
|
+
import chalk from "chalk";
|
|
6
|
+
import ora from "ora";
|
|
7
|
+
import { printSuccess, printError, printWarning, printInfo, printKeyValue, } from "../output.js";
|
|
8
|
+
import { loadContainerState, saveContainerState } from "../lib/container-config.js";
|
|
9
|
+
import { deployTemplateDir } from "../lib/paths.js";
|
|
10
|
+
export const deployCommand = new Command("deploy")
|
|
11
|
+
.description("Deploy your agent container to the cloud")
|
|
12
|
+
.option("--google-cloud", "Deploy to Google Cloud Run")
|
|
13
|
+
.option("--aws", "Deploy to AWS ECS/Fargate (coming soon)")
|
|
14
|
+
.option("--fly", "Deploy to Fly.io (coming soon)")
|
|
15
|
+
.option("--name <name>", "Container name (from `1claw init` state)")
|
|
16
|
+
.option("--region <region>", "Cloud region", "us-central1")
|
|
17
|
+
.option("--service-name <name>", "Cloud service name")
|
|
18
|
+
.option("--apply", "Run terraform apply automatically")
|
|
19
|
+
.option("--output <dir>", "Output directory for generated files", "./terraform")
|
|
20
|
+
.action(async (opts) => {
|
|
21
|
+
try {
|
|
22
|
+
await deployAction(opts);
|
|
23
|
+
}
|
|
24
|
+
catch (err) {
|
|
25
|
+
printError(err instanceof Error ? err.message : String(err));
|
|
26
|
+
process.exit(1);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
function run(cmd, args) {
|
|
30
|
+
return new Promise((resolve) => {
|
|
31
|
+
execFile(cmd, args, { maxBuffer: 8 * 1024 * 1024 }, (err, stdout, stderr) => {
|
|
32
|
+
resolve({
|
|
33
|
+
stdout: stdout?.toString() ?? "",
|
|
34
|
+
stderr: stderr?.toString() ?? "",
|
|
35
|
+
ok: !err,
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
function runStreaming(cmd, args, cwd) {
|
|
41
|
+
return new Promise((resolve) => {
|
|
42
|
+
const child = spawn(cmd, args, { cwd, stdio: "inherit" });
|
|
43
|
+
child.on("error", () => resolve(false));
|
|
44
|
+
child.on("close", (code) => resolve(code === 0));
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
async function commandExists(cmd, versionArg = "--version") {
|
|
48
|
+
const r = await run(cmd, [versionArg]);
|
|
49
|
+
return r.ok;
|
|
50
|
+
}
|
|
51
|
+
async function deployAction(opts) {
|
|
52
|
+
console.log();
|
|
53
|
+
if (opts.aws || opts.fly) {
|
|
54
|
+
printWarning(`${opts.aws ? "AWS" : "Fly.io"} deployment is coming soon. ` +
|
|
55
|
+
"Only --google-cloud is implemented today.");
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
if (!opts.googleCloud) {
|
|
59
|
+
printInfo("Choose a target. Currently supported: --google-cloud");
|
|
60
|
+
printInfo(" 1claw deploy --google-cloud --name <container>");
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
// ── Step 1: Load state ───────────────────────────────────────────────
|
|
64
|
+
if (!opts.name) {
|
|
65
|
+
throw new Error("Provide --name <container> (from `1claw init`).");
|
|
66
|
+
}
|
|
67
|
+
const state = loadContainerState(opts.name);
|
|
68
|
+
if (!state) {
|
|
69
|
+
throw new Error(`No container state for "${opts.name}".`);
|
|
70
|
+
}
|
|
71
|
+
// ── Step 2: Prerequisites ────────────────────────────────────────────
|
|
72
|
+
const tfOk = await commandExists("terraform");
|
|
73
|
+
if (!tfOk) {
|
|
74
|
+
throw new Error("Terraform is not installed. Install it: https://developer.hashicorp.com/terraform/install");
|
|
75
|
+
}
|
|
76
|
+
const gcloudOk = await commandExists("gcloud");
|
|
77
|
+
if (!gcloudOk) {
|
|
78
|
+
printWarning("gcloud CLI not found. You can still generate Terraform, but `--apply` needs gcloud auth.");
|
|
79
|
+
}
|
|
80
|
+
// ── Step 3: Image source ─────────────────────────────────────────────
|
|
81
|
+
if (!state.customImage) {
|
|
82
|
+
throw new Error("This container has no published image. Push it first:\n" +
|
|
83
|
+
` 1claw publish --name ${state.containerName} --tag <username>/${state.containerName}:latest`);
|
|
84
|
+
}
|
|
85
|
+
// Resolve a default project from gcloud config (best-effort).
|
|
86
|
+
let projectId = "YOUR_GCP_PROJECT_ID";
|
|
87
|
+
if (gcloudOk) {
|
|
88
|
+
const r = await run("gcloud", ["config", "get-value", "project"]);
|
|
89
|
+
const val = r.stdout.trim();
|
|
90
|
+
if (r.ok && val && val !== "(unset)")
|
|
91
|
+
projectId = val;
|
|
92
|
+
}
|
|
93
|
+
const serviceName = opts.serviceName ?? state.containerName.replace(/[^a-z0-9-]/g, "-");
|
|
94
|
+
// ── Step 4: Generate Terraform ───────────────────────────────────────
|
|
95
|
+
const outDir = resolve(opts.output);
|
|
96
|
+
if (!existsSync(outDir))
|
|
97
|
+
mkdirSync(outDir, { recursive: true });
|
|
98
|
+
const tplDir = deployTemplateDir("google-cloud");
|
|
99
|
+
for (const file of readdirSync(tplDir)) {
|
|
100
|
+
if (file.endsWith(".tf")) {
|
|
101
|
+
copyFileSync(join(tplDir, file), join(outDir, file));
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
const tfvars = `project_id = "${projectId}"\n` +
|
|
105
|
+
`region = "${opts.region}"\n` +
|
|
106
|
+
`service_name = "${serviceName}"\n` +
|
|
107
|
+
`image_tag = "${state.customImage}"\n` +
|
|
108
|
+
`agent_id = "${state.agentId ?? ""}"\n` +
|
|
109
|
+
`modules = "${state.modules.join(",")}"\n` +
|
|
110
|
+
`# agent_api_key is sensitive — provide it at apply time instead of committing it:\n` +
|
|
111
|
+
`# export TF_VAR_agent_api_key="ocv_..."\n`;
|
|
112
|
+
writeFileSync(join(outDir, "terraform.tfvars"), tfvars);
|
|
113
|
+
printSuccess(`Terraform written to ${outDir}`);
|
|
114
|
+
printKeyValue([
|
|
115
|
+
["Provider", "Google Cloud Run"],
|
|
116
|
+
["Project", projectId],
|
|
117
|
+
["Region", opts.region],
|
|
118
|
+
["Service", serviceName],
|
|
119
|
+
["Image", state.customImage],
|
|
120
|
+
]);
|
|
121
|
+
console.log();
|
|
122
|
+
// ── Step 5: Print or apply ───────────────────────────────────────────
|
|
123
|
+
if (!opts.apply) {
|
|
124
|
+
printInfo("Review the files, then deploy:");
|
|
125
|
+
console.log(chalk.dim(` cd ${outDir}`));
|
|
126
|
+
console.log(chalk.dim(` export TF_VAR_agent_api_key="ocv_..."`));
|
|
127
|
+
console.log(chalk.dim(` terraform init && terraform apply`));
|
|
128
|
+
console.log();
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
if (!process.env.TF_VAR_agent_api_key) {
|
|
132
|
+
throw new Error("TF_VAR_agent_api_key is not set. Export the agent API key before --apply:\n" +
|
|
133
|
+
' export TF_VAR_agent_api_key="ocv_..."');
|
|
134
|
+
}
|
|
135
|
+
const initSpinner = ora("terraform init...").start();
|
|
136
|
+
initSpinner.stop();
|
|
137
|
+
if (!(await runStreaming("terraform", ["init"], outDir))) {
|
|
138
|
+
throw new Error("terraform init failed.");
|
|
139
|
+
}
|
|
140
|
+
if (!(await runStreaming("terraform", ["apply", "-auto-approve"], outDir))) {
|
|
141
|
+
throw new Error("terraform apply failed.");
|
|
142
|
+
}
|
|
143
|
+
const urlRes = await run("terraform", ["-chdir=" + outDir, "output", "-raw", "service_url"]);
|
|
144
|
+
const serviceUrl = urlRes.ok ? urlRes.stdout.trim() : undefined;
|
|
145
|
+
state.deployment = {
|
|
146
|
+
provider: "google-cloud-run",
|
|
147
|
+
serviceUrl,
|
|
148
|
+
region: opts.region,
|
|
149
|
+
deployedAt: new Date().toISOString(),
|
|
150
|
+
};
|
|
151
|
+
saveContainerState(state);
|
|
152
|
+
console.log();
|
|
153
|
+
printSuccess("Deployed to Google Cloud Run.");
|
|
154
|
+
if (serviceUrl)
|
|
155
|
+
printKeyValue([["Service URL", chalk.cyan(serviceUrl)]]);
|
|
156
|
+
console.log();
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=deploy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../../src/commands/deploy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eject.d.ts","sourceRoot":"","sources":["../../../src/commands/eject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuBpC,eAAO,MAAM,YAAY,SAWnB,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { existsSync, mkdirSync, writeFileSync, copyFileSync, readFileSync, } from "node:fs";
|
|
3
|
+
import { join, resolve, dirname } from "node:path";
|
|
4
|
+
import chalk from "chalk";
|
|
5
|
+
import { printSuccess, printError, printInfo } from "../output.js";
|
|
6
|
+
import { loadContainerState } from "../lib/container-config.js";
|
|
7
|
+
import { resolveModules } from "../modules/registry.js";
|
|
8
|
+
import { generateDockerfile } from "../lib/image-build.js";
|
|
9
|
+
import { moduleDir, composeTemplatePath } from "../lib/paths.js";
|
|
10
|
+
import { DEFAULT_BASE_IMAGE } from "../lib/image-build.js";
|
|
11
|
+
import { daemonSocketPath } from "../lib/daemon-control.js";
|
|
12
|
+
export const ejectCommand = new Command("eject")
|
|
13
|
+
.description("Export Dockerfile, module configs, and docker-compose for manual control")
|
|
14
|
+
.option("--name <name>", "Container name (from `1claw init` state)")
|
|
15
|
+
.option("--output <dir>", "Output directory", ".")
|
|
16
|
+
.action((opts) => {
|
|
17
|
+
try {
|
|
18
|
+
ejectAction(opts);
|
|
19
|
+
}
|
|
20
|
+
catch (err) {
|
|
21
|
+
printError(err instanceof Error ? err.message : String(err));
|
|
22
|
+
process.exit(1);
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
function fillTemplate(tmpl, vars) {
|
|
26
|
+
return tmpl.replace(/\{\{(\w+)\}\}/g, (_, k) => vars[k] ?? "");
|
|
27
|
+
}
|
|
28
|
+
function ejectAction(opts) {
|
|
29
|
+
if (!opts.name) {
|
|
30
|
+
throw new Error("Provide --name <container> (from `1claw init`).");
|
|
31
|
+
}
|
|
32
|
+
const state = loadContainerState(opts.name);
|
|
33
|
+
if (!state) {
|
|
34
|
+
throw new Error(`No container state for "${opts.name}".`);
|
|
35
|
+
}
|
|
36
|
+
const outDir = resolve(opts.output);
|
|
37
|
+
if (!existsSync(outDir))
|
|
38
|
+
mkdirSync(outDir, { recursive: true });
|
|
39
|
+
const baseImage = state.image || DEFAULT_BASE_IMAGE;
|
|
40
|
+
const modules = state.modules.length ? resolveModules(state.modules) : [];
|
|
41
|
+
// Dockerfile
|
|
42
|
+
const dockerfilePath = join(outDir, "Dockerfile");
|
|
43
|
+
writeFileSync(dockerfilePath, generateDockerfile(baseImage, modules));
|
|
44
|
+
printSuccess(`Wrote ${dockerfilePath}`);
|
|
45
|
+
// Module assets under modules/<name>/
|
|
46
|
+
if (modules.length) {
|
|
47
|
+
for (const m of modules) {
|
|
48
|
+
for (const c of m.docker.copy) {
|
|
49
|
+
const src = join(moduleDir(m.name), c.src);
|
|
50
|
+
if (!existsSync(src))
|
|
51
|
+
continue;
|
|
52
|
+
const dest = join(outDir, "modules", m.name, c.src);
|
|
53
|
+
mkdirSync(dirname(dest), { recursive: true });
|
|
54
|
+
copyFileSync(src, dest);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
printSuccess(`Wrote module configs to ${join(outDir, "modules")}/`);
|
|
58
|
+
}
|
|
59
|
+
// docker-compose.yaml
|
|
60
|
+
const composePath = join(outDir, "docker-compose.yaml");
|
|
61
|
+
let composeTmpl = "services:\n agent:\n image: {{IMAGE}}\n container_name: {{NAME}}\n";
|
|
62
|
+
const tplFile = composeTemplatePath();
|
|
63
|
+
if (existsSync(tplFile))
|
|
64
|
+
composeTmpl = readFileSync(tplFile, "utf-8");
|
|
65
|
+
writeFileSync(composePath, fillTemplate(composeTmpl, {
|
|
66
|
+
IMAGE: state.customImage ?? baseImage,
|
|
67
|
+
NAME: state.containerName,
|
|
68
|
+
PORT: String(state.port),
|
|
69
|
+
DAEMON_SOCKET: daemonSocketPath(),
|
|
70
|
+
AGENT_ID: state.agentId ?? "",
|
|
71
|
+
MODULES: state.modules.join(","),
|
|
72
|
+
}));
|
|
73
|
+
printSuccess(`Wrote ${composePath}`);
|
|
74
|
+
console.log();
|
|
75
|
+
printInfo("Build and run manually:");
|
|
76
|
+
console.log(chalk.dim(` cd ${outDir}`));
|
|
77
|
+
console.log(chalk.dim(` docker build -t ${state.containerName} .`));
|
|
78
|
+
console.log(chalk.dim(` docker compose up # uses the daemon socket mount`));
|
|
79
|
+
console.log();
|
|
80
|
+
printInfo("Or publish your custom image:");
|
|
81
|
+
console.log(chalk.dim(` 1claw publish --context ${outDir} --tag <username>/${state.containerName}:latest`));
|
|
82
|
+
console.log();
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=eject.js.map
|