@clawops/cli 1.7.0 → 1.7.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 +62 -0
- package/dist/{chunk-7KLLWDBA.js → chunk-FQ4JXUCR.js} +1 -1
- package/dist/cli.js +3 -3
- package/dist/{generate-ZTD4BVVI.js → generate-SPT7PJKR.js} +1 -1
- package/dist/{package-7WOZMHSO.js → package-OMPI6RMV.js} +1 -1
- package/dist/{server-EXBOOIEP.js → server-RGLKKCCU.js} +2 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -12,6 +12,68 @@ and Cursor drive them through typed MCP tools with explicit safety controls.
|
|
|
12
12
|
|
|
13
13
|
---
|
|
14
14
|
|
|
15
|
+
## What's new in v1.7.0
|
|
16
|
+
|
|
17
|
+
**`clawops harden`** — run an idempotent set of server-hardening modules against a deployed
|
|
18
|
+
stack over SSH. Each module has a read-only `check()` and an `apply()` step; `check()` runs first
|
|
19
|
+
and `apply()` is skipped when the box is already compliant. Sentinel files under
|
|
20
|
+
`/etc/clawops/hardening/` record what has been applied.
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
clawops harden --list # show available modules
|
|
24
|
+
clawops harden --stack prod --dry-run # preview changes, apply nothing
|
|
25
|
+
clawops harden --stack prod # apply the default module set
|
|
26
|
+
clawops harden --stack prod --options ssh,ufw # apply a specific subset
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
**Common modules (all providers), ON by default:** `ssh` (hardens `sshd_config`, guards against
|
|
30
|
+
lockout by verifying `authorized_keys` is non-empty before restarting sshd), `ufw` (deny-all
|
|
31
|
+
incoming, allow SSH + gateway 18789), `fail2ban` (SSH jail: 5 failures → 10-minute ban),
|
|
32
|
+
`unattended-upgrades` (security-only auto updates), and `docker-socket` (verify
|
|
33
|
+
`/var/run/docker.sock` is `root:docker 660`). **Opt-in:** `auditd`, `lynis` (CIS Level 1 scan →
|
|
34
|
+
`~/.clawops/reports/`), `sysctl`.
|
|
35
|
+
|
|
36
|
+
**AWS modules (check-only, ON by default):** `aws-sg-audit` (warns on `0.0.0.0/0` ingress on
|
|
37
|
+
unexpected ports) and `aws-ssm-check` (verifies `AmazonSSMManagedInstanceCore` for emergency SSM
|
|
38
|
+
shell access). **Opt-in:** `aws-flow-logs`, `aws-guardduty`.
|
|
39
|
+
|
|
40
|
+
`clawops setup` now presents a multi-select hardening step after deploy (skippable with
|
|
41
|
+
`--no-harden`), and `clawops doctor --stack <name>` gains a Hardening section showing which
|
|
42
|
+
modules are applied, missing, or drifted.
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## What's new in v1.6.0
|
|
47
|
+
|
|
48
|
+
**`clawops bug`** — open a pre-filled GitHub issue with system context (version, Node, OS,
|
|
49
|
+
provider, stack count, SSH key presence) populated automatically. `--json` emits the URL without
|
|
50
|
+
prompting or opening a browser, suitable for scripting. `clawops doctor` now prints a `clawops bug`
|
|
51
|
+
hint in its footer when it exits with an error.
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
clawops bug # open a pre-filled issue in the browser
|
|
55
|
+
clawops bug --json # print the issue URL for scripting
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**Cloud deploy bug fixes (AWS, GCP, Azure).** This release fixes 10 bugs found in a deploy audit,
|
|
59
|
+
several deploy-blocking:
|
|
60
|
+
|
|
61
|
+
- **Azure:** updated deprecated image reference `UbuntuServer/22.04-LTS` →
|
|
62
|
+
`0001-com-ubuntu-server-jammy/22_04-lts-gen2` — every Azure deployment was broken; and fixed a
|
|
63
|
+
malformed Key Vault `roleDefinitionId` that broke Key Vault RBAC entirely.
|
|
64
|
+
- **AWS:** Bedrock startup script now uses the IMDSv2 PUT→GET token flow (a plain `curl` to IMDS
|
|
65
|
+
returned 401, so the region always fell back to `us-east-1`); replaced
|
|
66
|
+
`AmazonBedrockFullAccess` with a least-privilege inline policy.
|
|
67
|
+
- **AWS (⚠️ migration impact):** migrated from inline Security Group ingress/egress arrays to
|
|
68
|
+
individual `SecurityGroupIngressRule`/`SecurityGroupEgressRule` resources so CIDR changes no
|
|
69
|
+
longer replace the whole Security Group. **Existing AWS stacks have their Security Group
|
|
70
|
+
replaced on the first `clawops up` after this upgrade** — see
|
|
71
|
+
`docs/decisions/0009-aws-sg-rule-resources.md` for the import-based mitigation.
|
|
72
|
+
- **All providers:** `accessMode=auto` egress-IP detection now returns a `Result` and throws a
|
|
73
|
+
clear error on failure instead of silently producing a VM with zero ingress rules.
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
15
77
|
## What's new in v1.5.0
|
|
16
78
|
|
|
17
79
|
**`clawops mcp wire`** — wire the OpenClaw gateway's own AI as an MCP client of clawops.
|
|
@@ -45,7 +45,7 @@ async function generatePlan(intent, _opts) {
|
|
|
45
45
|
"plan/apply is not supported for the local provider. Use `clawops up` directly."
|
|
46
46
|
);
|
|
47
47
|
}
|
|
48
|
-
const { version } = await import("./package-
|
|
48
|
+
const { version } = await import("./package-OMPI6RMV.js");
|
|
49
49
|
const config = getConfig();
|
|
50
50
|
const instanceType = intent.instanceType ?? "small";
|
|
51
51
|
const openclawVersion = intent.openclawVersion ?? "latest";
|
package/dist/cli.js
CHANGED
|
@@ -490,7 +490,7 @@ var plan_default = defineCommand5({
|
|
|
490
490
|
},
|
|
491
491
|
async run({ args }) {
|
|
492
492
|
const { buildContext } = await import("./context-ALSJMTHE.js");
|
|
493
|
-
const { generatePlan } = await import("./generate-
|
|
493
|
+
const { generatePlan } = await import("./generate-SPT7PJKR.js");
|
|
494
494
|
const ctx = buildContext(args);
|
|
495
495
|
if (ctx.adapter.name === "local") {
|
|
496
496
|
throw new UsageError(
|
|
@@ -1862,7 +1862,7 @@ var serveCmd = defineCommand17({
|
|
|
1862
1862
|
inspector: { type: "boolean", description: "Enable MCP inspector" }
|
|
1863
1863
|
},
|
|
1864
1864
|
async run({ args }) {
|
|
1865
|
-
const { serveMcp } = await import("./server-
|
|
1865
|
+
const { serveMcp } = await import("./server-RGLKKCCU.js");
|
|
1866
1866
|
await serveMcp({
|
|
1867
1867
|
port: args.http ? Number(args.http) : void 0,
|
|
1868
1868
|
bind: args.bind,
|
|
@@ -3473,7 +3473,7 @@ import { accessSync as accessSync2, constants as constants2 } from "fs";
|
|
|
3473
3473
|
import { execSync as execSync2 } from "child_process";
|
|
3474
3474
|
var ISSUES_URL = `${REPO_URL}/issues/new`;
|
|
3475
3475
|
var BODY_CAP = 2e3;
|
|
3476
|
-
var VERSION = true ? "1.7.
|
|
3476
|
+
var VERSION = true ? "1.7.1" : "dev";
|
|
3477
3477
|
async function collectContext() {
|
|
3478
3478
|
const nodeVersion = process22.version;
|
|
3479
3479
|
const os3 = `${process22.platform} ${process22.arch}`;
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
} from "./chunk-3QJBNAHW.js";
|
|
5
5
|
import {
|
|
6
6
|
generatePlan
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-FQ4JXUCR.js";
|
|
8
8
|
import {
|
|
9
9
|
applyPlan
|
|
10
10
|
} from "./chunk-ISFHLA4G.js";
|
|
@@ -1306,7 +1306,7 @@ If none of the above resolves the issue:
|
|
|
1306
1306
|
|
|
1307
1307
|
// src/mcp/server.ts
|
|
1308
1308
|
async function serveMcp(opts) {
|
|
1309
|
-
const { version } = await import("./package-
|
|
1309
|
+
const { version } = await import("./package-OMPI6RMV.js");
|
|
1310
1310
|
const server = new McpServer({ name: "clawops", version });
|
|
1311
1311
|
registerTools(server, opts);
|
|
1312
1312
|
registerResources(server);
|