@clawops/cli 1.7.9 → 2.0.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 +504 -76
- package/dist/apply-KYFPWI5U.js +27 -0
- package/dist/automation-RMAIBNVC.js +44 -0
- package/dist/bedrock-XVASJX2K.js +61 -0
- package/dist/{bootstrap-HL4DNUNG.js → bootstrap-HNGKY6WW.js} +31 -19
- package/dist/bootstrap.sh.tmpl +51 -31
- package/dist/channels-KBUR42IU.js +53 -0
- package/dist/chunk-2I7KCMXZ.js +142 -0
- package/dist/{chunk-DQDAWNGB.js → chunk-2Z7J3ERQ.js} +1 -1
- package/dist/chunk-3OLUJPCB.js +36 -0
- package/dist/chunk-5XT5IAJK.js +69 -0
- package/dist/chunk-AEEMRFZV.js +24 -0
- package/dist/chunk-BSLIYB5Q.js +106 -0
- package/dist/{chunk-3XK66DKK.js → chunk-E4NJSJ54.js} +57 -93
- package/dist/chunk-FEK7VJAY.js +16 -0
- package/dist/{chunk-UKTP332Z.js → chunk-GAZPPSKU.js} +6 -7
- package/dist/chunk-GIEVAGEK.js +126 -0
- package/dist/chunk-HSPHXG6W.js +67 -0
- package/dist/chunk-IVWP4QUJ.js +901 -0
- package/dist/{chunk-PVUVI35Y.js → chunk-JW5A7E3X.js} +5 -1
- package/dist/{chunk-GZN7PKP4.js → chunk-KC3GC3PE.js} +328 -121
- package/dist/chunk-LBE6COC4.js +244 -0
- package/dist/chunk-LEVIW2PV.js +890 -0
- package/dist/chunk-LT4XMO5D.js +50 -0
- package/dist/chunk-MC5ATCXS.js +108 -0
- package/dist/chunk-N4WZLWJ4.js +16 -0
- package/dist/chunk-NUDIHZEH.js +55 -0
- package/dist/chunk-NUL5F6YV.js +56 -0
- package/dist/chunk-RHOWYIWT.js +52 -0
- package/dist/chunk-STLRHLLV.js +193 -0
- package/dist/chunk-V25QRZRB.js +45 -0
- package/dist/chunk-VOEJYRIK.js +33 -0
- package/dist/{providers-2OABPW2E.js → chunk-VUFMZEIM.js} +3 -2
- package/dist/chunk-W3OLNNJW.js +51 -0
- package/dist/cli-WLD3EBEM.js +11 -0
- package/dist/cli-auth-GD5SK7JU.js +13 -0
- package/dist/cli.js +1296 -695
- package/dist/config-validate-K2N6XLDX.js +76 -0
- package/dist/context-7EVC6W45.js +20 -0
- package/dist/docker-3PDO4TS7.js +12 -0
- package/dist/{firewall-XQGO7HWK.js → firewall-5VKZ4WBH.js} +32 -1
- package/dist/generate-I6YQ5V2T.js +29 -0
- package/dist/{harden-URPXLSVF.js → harden-72JMRT4E.js} +51 -11
- package/dist/health-5CCOXYGG.js +11 -0
- package/dist/index.d.ts +56 -0
- package/dist/known-hosts-file-I3Q3NBYQ.js +22 -0
- package/dist/logs-5A7YYA53.js +15 -0
- package/dist/{mcp-wire-7E5JQY47.js → mcp-wire-3SWBM7D6.js} +32 -16
- package/dist/models-AGTQWYDL.js +32 -0
- package/dist/network-args-PYJRJBYO.js +64 -0
- package/dist/{package-5AR4ZPK4.js → package-5BCMEBTE.js} +11 -4
- package/dist/passphrase-MJBE45N7.js +15 -0
- package/dist/plugins-DTST3OER.js +49 -0
- package/dist/{pool-QGFQRMGU.js → pool-PIIKJ4L2.js} +3 -2
- package/dist/preflight-EF52S3WW.js +162 -0
- package/dist/preflight-MWWM5JT3.js +181 -0
- package/dist/preflight-TFD4N5ZU.js +141 -0
- package/dist/privileged-JFA6LLTV.js +17 -0
- package/dist/providers-FW6H6OPF.js +11 -0
- package/dist/ready-KDNRBNSU.js +95 -0
- package/dist/{remote-config-QDLN4UMG.js → remote-config-3HZLUWEA.js} +4 -3
- package/dist/runtime-X3KW5TCP.js +44 -0
- package/dist/server-GBA7BJGK.js +46 -0
- package/dist/spec-path-KQOOIQCA.js +9 -0
- package/dist/ssh-VAI5DU5M.js +11 -0
- package/dist/ssh-key-DUO6OKOI.js +7 -0
- package/dist/stack-config-R4SPSUQZ.js +12 -0
- package/dist/upgrade-ULD4KFYC.js +88 -0
- package/dist/validate-YVI3BJ55.js +14 -0
- package/dist/{version-guard-VUCNZXQS.js → version-guard-XVYW5WFJ.js} +2 -2
- package/dist/{versions-2UVAT6PQ.js → versions-W5LRQCAJ.js} +2 -2
- package/dist/wait-WO72TRRQ.js +79 -0
- package/package.json +11 -4
- package/spec/deploy-plan.schema.json +114 -25
- package/spec/integrations.yaml +135 -28
- package/spec/mcp-tools.yaml +89 -37
- package/spec/models.yaml +23 -3
- package/spec/openclaw-2.0.config.schema.json +1 -0
- package/spec/openclaw-versions.yaml +116 -27
- package/spec/providers.schema.json +163 -28
- package/dist/apply-F3KY2HTB.js +0 -17
- package/dist/automation-RULUSJBW.js +0 -30
- package/dist/aws-L4RR2LSE.js +0 -254
- package/dist/azure-7OXQENQL.js +0 -262
- package/dist/chunk-35WVQY3X.js +0 -122
- package/dist/chunk-6X45DDGH.js +0 -42
- package/dist/chunk-A4QR4TXW.js +0 -120
- package/dist/chunk-C5X375RO.js +0 -85
- package/dist/chunk-FNS56UQY.js +0 -741
- package/dist/chunk-P5LKWRPL.js +0 -114
- package/dist/chunk-SEZMVVAS.js +0 -156
- package/dist/context-5LCUG2QR.js +0 -10
- package/dist/gcp-UG6AWPIZ.js +0 -193
- package/dist/generate-OAGYT3VH.js +0 -15
- package/dist/local-DXBEVZ5C.js +0 -47
- package/dist/server-FIZCOLHL.js +0 -32
- package/dist/ssh-CNJNLM3E.js +0 -8
- package/dist/validate-CFQ4FH2T.js +0 -10
|
@@ -1,37 +1,117 @@
|
|
|
1
1
|
# OpenClaw Version Compatibility Matrix
|
|
2
2
|
# Enforced by src/openclaw/versions.ts — `doctor`, `plan`, `up` and `apply` refuse
|
|
3
|
-
# an OpenClaw version outside
|
|
3
|
+
# an OpenClaw version outside `support`. Update via /openclaw-config skill.
|
|
4
4
|
#
|
|
5
|
-
#
|
|
6
|
-
#
|
|
7
|
-
#
|
|
8
|
-
# it from this line produces a crash-looping gateway (exit 78). Use clawops 2.x instead.
|
|
5
|
+
# `support.min`, `support.max` and `support.recommended` are LIVE. Nothing reads
|
|
6
|
+
# `runtime`, `quirks`, `incompatible` or `tested`; they are documentation and the
|
|
7
|
+
# machine-readable source WO-38 will build the runtime contract from.
|
|
9
8
|
|
|
10
9
|
version: 1
|
|
11
10
|
|
|
12
|
-
#
|
|
11
|
+
# Which release line this checkout is. Flipping this to "2.x" is gated by a test
|
|
12
|
+
# (tests/openclaw/line-interlock.test.ts) that fails until the runtime actually
|
|
13
|
+
# implements the 2.0 contract — see `runtime` below.
|
|
14
|
+
line: "2.x"
|
|
15
|
+
|
|
16
|
+
# Minimum and maximum versions clawops supports.
|
|
17
|
+
#
|
|
18
|
+
# Flipped to the 2.x range by WO-40, once the runtime could actually honour it: the
|
|
19
|
+
# config directory is mounted writable, provisioning writes gateway.mode, and
|
|
20
|
+
# --allow-unconfigured is gone. tests/openclaw/line-interlock.test.ts holds those
|
|
21
|
+
# together — setting `line: "2.x"` fails until each is true.
|
|
22
|
+
#
|
|
23
|
+
# The floor is 2026.9.2 rather than 2026.9.1 because the official Bedrock provider
|
|
24
|
+
# plugin declares "requires plugin API >=2026.9.2" and refuses to install on 9.1.
|
|
13
25
|
support:
|
|
14
|
-
min: "2026.
|
|
15
|
-
max: "
|
|
16
|
-
recommended: "2026.
|
|
26
|
+
min: "2026.9.2"
|
|
27
|
+
max: "" # no upper bound: this line tracks the 2.x runtime contract
|
|
28
|
+
recommended: "2026.9.2"
|
|
29
|
+
|
|
30
|
+
# The 2.0 runtime contract, measured against ghcr.io/openclaw/openclaw:2026.9.1.
|
|
31
|
+
# See docs/spikes/SP-10-openclaw-2.0-startup-contract.md for how each was observed.
|
|
32
|
+
# WO-38 consumes this; today nothing reads it.
|
|
33
|
+
runtime:
|
|
34
|
+
# 2026.9.2, not 2026.9.1: the official Bedrock provider plugin declares
|
|
35
|
+
# "requires plugin API >=2026.9.2" and refuses to install on 9.1. SP-10b §3.
|
|
36
|
+
targetMin: "2026.9.2"
|
|
37
|
+
image: "ghcr.io/openclaw/openclaw"
|
|
38
|
+
variants: [standard, slim, browser] # `-slim`, `-browser` tag suffixes
|
|
39
|
+
# Mount the config DIRECTORY, never the file. OpenClaw writes config by atomic
|
|
40
|
+
# rename, and renaming over a bind-mounted file fails EBUSY regardless of :ro.
|
|
41
|
+
# Verified — `plugins install` cannot record a plugin against a file mount. SP-10b §4.
|
|
42
|
+
configDir: "/cfg"
|
|
43
|
+
configPath: "/cfg/config.json" # via OPENCLAW_CONFIG_PATH
|
|
44
|
+
# The OpenClaw release spec/openclaw-2.0.config.schema.json was captured from.
|
|
45
|
+
# Validation compares the deployed version against this: a config key the schema
|
|
46
|
+
# does not know is an ERROR on an older-or-equal runtime and a WARNING on a newer
|
|
47
|
+
# one, because there it more likely means the schema is stale than the config wrong.
|
|
48
|
+
configSchemaCapturedFrom: "2026.9.2"
|
|
49
|
+
configMount: directory
|
|
50
|
+
gatewayPort: 18789
|
|
51
|
+
env:
|
|
52
|
+
configPath: OPENCLAW_CONFIG_PATH
|
|
53
|
+
token: OPENCLAW_GATEWAY_TOKEN
|
|
54
|
+
stateDir: OPENCLAW_STATE_DIR
|
|
55
|
+
startup:
|
|
56
|
+
# Verified: without gateway.mode the gateway exits 78 unless --allow-unconfigured
|
|
57
|
+
# is passed. Setting the mode is the supported answer; the flag exists to bypass a
|
|
58
|
+
# check for "suspicious or clobbered config", so clawops should not rely on it.
|
|
59
|
+
requiresGatewayMode: true
|
|
60
|
+
gatewayMode: "local" # schema accepts local|remote
|
|
61
|
+
allowUnconfigured: false # what 2.x should pass — i.e. do not pass it
|
|
62
|
+
exitCodeOnBlockedStart: 78
|
|
63
|
+
# Provider plugins are not all bundled. A configured-but-missing plugin is
|
|
64
|
+
# auto-installed from ClawHub on first boot, after which the gateway refuses to
|
|
65
|
+
# report ready and exits 1 ("startup convergence"); the next boot succeeds.
|
|
66
|
+
# The install lands in the container's writable layer, so it is lost — and refetched —
|
|
67
|
+
# on every container replacement, which is what clawops's restart path does.
|
|
68
|
+
plugins:
|
|
69
|
+
bundledSourceRoot: "/app/dist/extensions"
|
|
70
|
+
# Two different paths, and the difference matters. An explicit
|
|
71
|
+
# `openclaw plugins install` lands beside the config, so it persists with the
|
|
72
|
+
# config directory clawops already keeps as host state — no extra volume. The
|
|
73
|
+
# startup auto-install instead writes to the container's writable layer, which is
|
|
74
|
+
# lost on every container replacement. Pre-install; do not rely on auto-install.
|
|
75
|
+
installedPath: "<configDir>/extensions"
|
|
76
|
+
autoInstallPath: "/app/npm/projects" # ephemeral — container layer
|
|
77
|
+
convergenceRestartRequired: true # only when auto-installing at startup
|
|
78
|
+
# Reconcile configured providers against loaded plugins. `plugins doctor` is NOT
|
|
79
|
+
# usable for this: it never names a missing provider and exits 1 on duplicate-id
|
|
80
|
+
# warnings during normal operation. SP-10b §1-2.
|
|
81
|
+
verifyCommand: "openclaw plugins list --json"
|
|
82
|
+
verifyField: providerIds
|
|
83
|
+
providers:
|
|
84
|
+
amazon-bedrock:
|
|
85
|
+
bundled: false
|
|
86
|
+
package: "@openclaw/amazon-bedrock-provider"
|
|
87
|
+
install: "openclaw plugins install clawhub:@openclaw/amazon-bedrock-provider"
|
|
88
|
+
requiresEgress: true
|
|
89
|
+
# With no egress the gateway starts cleanly WITHOUT the provider — a healthy
|
|
90
|
+
# deployment missing the model backend it was configured for. clawops defaults
|
|
91
|
+
# to deny-all egress, so this is the default outcome, not an edge case.
|
|
92
|
+
silentlyAbsentWithoutEgress: true
|
|
93
|
+
ollama: { bundled: true }
|
|
94
|
+
anthropic: { bundled: true }
|
|
95
|
+
openai: { bundled: true }
|
|
17
96
|
|
|
18
|
-
# Provider-specific quirks discovered through testing
|
|
19
97
|
quirks:
|
|
20
|
-
- id:
|
|
98
|
+
- id: openclaw-2-provider-plugin-install
|
|
21
99
|
description: |
|
|
22
|
-
OpenClaw
|
|
23
|
-
|
|
24
|
-
|
|
100
|
+
OpenClaw 2.0 does not bundle every model provider. A provider named in
|
|
101
|
+
models.providers whose plugin is missing is installed from ClawHub during
|
|
102
|
+
startup convergence; the gateway then exits 1 and requires one restart. With no
|
|
103
|
+
network egress the gateway starts successfully but without the provider.
|
|
25
104
|
affected:
|
|
26
|
-
versions: ">=2026.
|
|
105
|
+
versions: ">=2026.8.1"
|
|
27
106
|
providers: [aws]
|
|
28
107
|
configs: [openclaw.models.providers.amazon-bedrock]
|
|
29
108
|
workaround: |
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
109
|
+
Install the plugin at provisioning time, before the first gateway start:
|
|
110
|
+
openclaw plugins install clawhub:@openclaw/amazon-bedrock-provider
|
|
111
|
+
and/or persist /app/npm/projects so a container replacement does not refetch it.
|
|
112
|
+
Verify after deploy rather than trusting a healthy gateway: a missing provider
|
|
113
|
+
does not fail the health check.
|
|
114
|
+
discoveredFrom: docs/spikes/SP-10-openclaw-2.0-startup-contract.md
|
|
35
115
|
|
|
36
116
|
- id: pnpm-pulumi-hoisting
|
|
37
117
|
description: |
|
|
@@ -43,25 +123,34 @@ quirks:
|
|
|
43
123
|
providers: ["*"]
|
|
44
124
|
workaround: See docs/decisions/0003-pulumi-pnpm.md
|
|
45
125
|
|
|
46
|
-
#
|
|
126
|
+
# Retired: `aws-bedrock-aws-profile` (AWS_PROFILE in the systemd EnvironmentFile).
|
|
127
|
+
# It described a native/systemd install; clawops is Docker-only per ADR 0013, and on
|
|
128
|
+
# 2.0 the Bedrock question is plugin installation, not credential resolution.
|
|
129
|
+
|
|
47
130
|
tested:
|
|
48
131
|
- openclawVersion: "2026.4.5"
|
|
49
132
|
providers: [aws, gcp, local]
|
|
50
133
|
nodeVersions: ["20.x", "22.x"]
|
|
51
134
|
lastTestedAt: "2026-04-15"
|
|
135
|
+
- openclawVersion: "2026.9.1"
|
|
136
|
+
providers: [] # runtime contract characterised only; no deploy path yet
|
|
137
|
+
nodeVersions: ["24.x"]
|
|
138
|
+
lastTestedAt: "2026-09-06"
|
|
139
|
+
notes: "SP-10 — startup contract, plugin install behaviour, config schema capture."
|
|
52
140
|
|
|
53
|
-
# Known incompatible combinations
|
|
54
141
|
incompatible:
|
|
55
142
|
- openclawVersionRange: "<2026.4.5"
|
|
56
143
|
reason: "Below clawops's declared minimum support. Earlier OpenClaw versions used different config paths and channel registration semantics."
|
|
57
144
|
- openclawVersionRange: ">=2026.8.1"
|
|
58
145
|
reason: |
|
|
59
|
-
OpenClaw 2.0 changed the container runtime contract. Verified
|
|
60
|
-
|
|
61
|
-
|
|
146
|
+
OpenClaw 2.0 changed the container runtime contract. Verified on 2026.8.1 and
|
|
147
|
+
re-verified on 2026.9.1:
|
|
148
|
+
- Without gateway.mode the gateway exits 78 unless --allow-unconfigured is
|
|
149
|
+
passed; clawops writes no mode.
|
|
62
150
|
- Sessions, transcripts and credentials moved into SQLite under the state
|
|
63
151
|
directory, which this line does not mount => total state loss on restart.
|
|
64
|
-
- Provider plugins
|
|
65
|
-
|
|
152
|
+
- Provider plugins are not all bundled. A configured provider whose plugin is
|
|
153
|
+
missing is fetched at startup, costing a convergence restart — or is silently
|
|
154
|
+
absent when egress is denied, which is clawops's default.
|
|
66
155
|
Use clawops 2.x, which targets OpenClaw >= 2026.9.1.
|
|
67
156
|
useInstead: "@clawops/cli@2"
|
|
@@ -4,25 +4,46 @@
|
|
|
4
4
|
"title": "ProviderAdapter",
|
|
5
5
|
"description": "Contract every cloud provider adapter must satisfy. Source of truth for src/providers/types.ts (generated). Per R-meta-1.",
|
|
6
6
|
"type": "object",
|
|
7
|
-
"required": [
|
|
7
|
+
"required": [
|
|
8
|
+
"name",
|
|
9
|
+
"credentials",
|
|
10
|
+
"regions",
|
|
11
|
+
"instanceTypes",
|
|
12
|
+
"stateBackend",
|
|
13
|
+
"operations"
|
|
14
|
+
],
|
|
8
15
|
"properties": {
|
|
9
16
|
"name": {
|
|
10
17
|
"type": "string",
|
|
11
|
-
"enum": [
|
|
18
|
+
"enum": [
|
|
19
|
+
"aws",
|
|
20
|
+
"gcp",
|
|
21
|
+
"azure",
|
|
22
|
+
"local"
|
|
23
|
+
],
|
|
12
24
|
"description": "Lowercase provider id"
|
|
13
25
|
},
|
|
14
26
|
"credentials": {
|
|
15
27
|
"type": "object",
|
|
16
28
|
"description": "How this provider's credentials are sourced (R6: never in tool args)",
|
|
17
|
-
"required": [
|
|
29
|
+
"required": [
|
|
30
|
+
"source"
|
|
31
|
+
],
|
|
18
32
|
"properties": {
|
|
19
33
|
"source": {
|
|
20
|
-
"enum": [
|
|
34
|
+
"enum": [
|
|
35
|
+
"env",
|
|
36
|
+
"cli-profile",
|
|
37
|
+
"file",
|
|
38
|
+
"instance-metadata"
|
|
39
|
+
],
|
|
21
40
|
"description": "Credential resolution mechanism"
|
|
22
41
|
},
|
|
23
42
|
"envVars": {
|
|
24
43
|
"type": "array",
|
|
25
|
-
"items": {
|
|
44
|
+
"items": {
|
|
45
|
+
"type": "string"
|
|
46
|
+
},
|
|
26
47
|
"description": "Environment variables checked at startup (e.g., AWS_PROFILE)"
|
|
27
48
|
},
|
|
28
49
|
"profileName": {
|
|
@@ -37,7 +58,9 @@
|
|
|
37
58
|
},
|
|
38
59
|
"regions": {
|
|
39
60
|
"type": "array",
|
|
40
|
-
"items": {
|
|
61
|
+
"items": {
|
|
62
|
+
"type": "string"
|
|
63
|
+
},
|
|
41
64
|
"minItems": 1,
|
|
42
65
|
"description": "Region IDs supported by this adapter (e.g., us-east-1, us-central1, eastus)"
|
|
43
66
|
},
|
|
@@ -47,28 +70,59 @@
|
|
|
47
70
|
"description": "Mapping from clawops aliases to provider-native instance types",
|
|
48
71
|
"items": {
|
|
49
72
|
"type": "object",
|
|
50
|
-
"required": [
|
|
73
|
+
"required": [
|
|
74
|
+
"alias",
|
|
75
|
+
"nativeId",
|
|
76
|
+
"vcpu",
|
|
77
|
+
"memoryGB",
|
|
78
|
+
"arch"
|
|
79
|
+
],
|
|
51
80
|
"properties": {
|
|
52
81
|
"alias": {
|
|
53
|
-
"enum": [
|
|
82
|
+
"enum": [
|
|
83
|
+
"micro",
|
|
84
|
+
"small",
|
|
85
|
+
"medium",
|
|
86
|
+
"large",
|
|
87
|
+
"gpu"
|
|
88
|
+
],
|
|
54
89
|
"description": "Normalized clawops alias"
|
|
55
90
|
},
|
|
56
91
|
"nativeId": {
|
|
57
92
|
"type": "string",
|
|
58
93
|
"description": "Provider-native instance type (e.g., t3.small, e2-small, Standard_B2s)"
|
|
59
94
|
},
|
|
60
|
-
"vcpu": {
|
|
61
|
-
|
|
62
|
-
|
|
95
|
+
"vcpu": {
|
|
96
|
+
"type": "number",
|
|
97
|
+
"minimum": 1
|
|
98
|
+
},
|
|
99
|
+
"memoryGB": {
|
|
100
|
+
"type": "number",
|
|
101
|
+
"minimum": 0.5
|
|
102
|
+
},
|
|
103
|
+
"arch": {
|
|
104
|
+
"enum": [
|
|
105
|
+
"x86_64",
|
|
106
|
+
"arm64"
|
|
107
|
+
]
|
|
108
|
+
}
|
|
63
109
|
}
|
|
64
110
|
}
|
|
65
111
|
},
|
|
66
112
|
"stateBackend": {
|
|
67
113
|
"type": "object",
|
|
68
|
-
"required": [
|
|
114
|
+
"required": [
|
|
115
|
+
"scheme",
|
|
116
|
+
"urlPattern"
|
|
117
|
+
],
|
|
69
118
|
"properties": {
|
|
70
119
|
"scheme": {
|
|
71
|
-
"enum": [
|
|
120
|
+
"enum": [
|
|
121
|
+
"s3",
|
|
122
|
+
"gs",
|
|
123
|
+
"azblob",
|
|
124
|
+
"file"
|
|
125
|
+
],
|
|
72
126
|
"description": "Pulumi state backend URL scheme"
|
|
73
127
|
},
|
|
74
128
|
"urlPattern": {
|
|
@@ -79,41 +133,122 @@
|
|
|
79
133
|
},
|
|
80
134
|
"operations": {
|
|
81
135
|
"type": "object",
|
|
82
|
-
"required": [
|
|
136
|
+
"required": [
|
|
137
|
+
"provision",
|
|
138
|
+
"destroy",
|
|
139
|
+
"describe"
|
|
140
|
+
],
|
|
83
141
|
"description": "Lifecycle operations every adapter must implement",
|
|
84
142
|
"properties": {
|
|
85
|
-
"provision": {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
"
|
|
143
|
+
"provision": {
|
|
144
|
+
"$ref": "#/$defs/Operation"
|
|
145
|
+
},
|
|
146
|
+
"destroy": {
|
|
147
|
+
"$ref": "#/$defs/Operation"
|
|
148
|
+
},
|
|
149
|
+
"describe": {
|
|
150
|
+
"$ref": "#/$defs/Operation"
|
|
151
|
+
},
|
|
152
|
+
"refresh": {
|
|
153
|
+
"$ref": "#/$defs/Operation"
|
|
154
|
+
}
|
|
89
155
|
}
|
|
90
156
|
},
|
|
91
157
|
"supportedOpenclawVersions": {
|
|
92
158
|
"type": "object",
|
|
93
159
|
"properties": {
|
|
94
|
-
"min": {
|
|
95
|
-
|
|
96
|
-
|
|
160
|
+
"min": {
|
|
161
|
+
"type": "string",
|
|
162
|
+
"description": "semver, e.g., 2026.4.5"
|
|
163
|
+
},
|
|
164
|
+
"max": {
|
|
165
|
+
"type": "string"
|
|
166
|
+
},
|
|
167
|
+
"tested": {
|
|
168
|
+
"type": "array",
|
|
169
|
+
"items": {
|
|
170
|
+
"type": "string"
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
},
|
|
175
|
+
"preflight": {
|
|
176
|
+
"type": "object",
|
|
177
|
+
"description": "Account-level setup a provider needs before anything can be provisioned, and which clawops can detect and offer to fix. These are not infrastructure \u2014 enabling an API or creating a state bucket happens outside the Pulumi program, because the state backend must exist before Pulumi can run at all. Detected in `doctor`; the setup wizard PROMPTS before changing anything in someone's cloud account.",
|
|
178
|
+
"required": [
|
|
179
|
+
"checks"
|
|
180
|
+
],
|
|
181
|
+
"properties": {
|
|
182
|
+
"checks": {
|
|
183
|
+
"type": "array",
|
|
184
|
+
"description": "What must be true before a first deploy.",
|
|
185
|
+
"items": {
|
|
186
|
+
"$ref": "#/$defs/PreflightCheck"
|
|
187
|
+
}
|
|
188
|
+
}
|
|
97
189
|
}
|
|
98
190
|
}
|
|
99
191
|
},
|
|
100
192
|
"$defs": {
|
|
101
193
|
"Operation": {
|
|
102
194
|
"type": "object",
|
|
103
|
-
"required": [
|
|
195
|
+
"required": [
|
|
196
|
+
"estimatedDurationSec",
|
|
197
|
+
"idempotent",
|
|
198
|
+
"destructive"
|
|
199
|
+
],
|
|
104
200
|
"properties": {
|
|
105
201
|
"estimatedDurationSec": {
|
|
106
202
|
"type": "object",
|
|
107
203
|
"properties": {
|
|
108
|
-
"min": {
|
|
109
|
-
|
|
110
|
-
|
|
204
|
+
"min": {
|
|
205
|
+
"type": "number"
|
|
206
|
+
},
|
|
207
|
+
"max": {
|
|
208
|
+
"type": "number"
|
|
209
|
+
},
|
|
210
|
+
"median": {
|
|
211
|
+
"type": "number"
|
|
212
|
+
}
|
|
111
213
|
},
|
|
112
214
|
"description": "Used by R12 to pick streaming tier (sync / progress / Tasks)"
|
|
113
215
|
},
|
|
114
|
-
"idempotent": {
|
|
115
|
-
|
|
116
|
-
|
|
216
|
+
"idempotent": {
|
|
217
|
+
"type": "boolean"
|
|
218
|
+
},
|
|
219
|
+
"destructive": {
|
|
220
|
+
"type": "boolean"
|
|
221
|
+
},
|
|
222
|
+
"supportsCancellation": {
|
|
223
|
+
"type": "boolean",
|
|
224
|
+
"default": true
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
},
|
|
228
|
+
"PreflightCheck": {
|
|
229
|
+
"type": "object",
|
|
230
|
+
"required": [
|
|
231
|
+
"id",
|
|
232
|
+
"label",
|
|
233
|
+
"remediable"
|
|
234
|
+
],
|
|
235
|
+
"properties": {
|
|
236
|
+
"id": {
|
|
237
|
+
"type": "string",
|
|
238
|
+
"description": "Stable kebab-case id, e.g. `compute-api-enabled`"
|
|
239
|
+
},
|
|
240
|
+
"label": {
|
|
241
|
+
"type": "string",
|
|
242
|
+
"description": "What is being checked, in the operator's terms"
|
|
243
|
+
},
|
|
244
|
+
"remediable": {
|
|
245
|
+
"type": "boolean",
|
|
246
|
+
"description": "Whether clawops can fix it after asking. False means it can only be reported \u2014 a missing permission or an unpaid billing account is not clawops's to resolve."
|
|
247
|
+
},
|
|
248
|
+
"mutates": {
|
|
249
|
+
"type": "string",
|
|
250
|
+
"description": "What the fix changes in the operator's account, shown in the prompt. Required when remediable is true: consent to 'fix it' is not consent to something unnamed."
|
|
251
|
+
}
|
|
117
252
|
}
|
|
118
253
|
}
|
|
119
254
|
}
|
package/dist/apply-F3KY2HTB.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
applyPlan
|
|
4
|
-
} from "./chunk-35WVQY3X.js";
|
|
5
|
-
import "./chunk-6ZFIFDBJ.js";
|
|
6
|
-
import "./chunk-BOPSG2LI.js";
|
|
7
|
-
import "./chunk-6X45DDGH.js";
|
|
8
|
-
import "./chunk-SEZMVVAS.js";
|
|
9
|
-
import "./chunk-P5LKWRPL.js";
|
|
10
|
-
import "./chunk-EI7CQQ7D.js";
|
|
11
|
-
import "./chunk-PVUVI35Y.js";
|
|
12
|
-
import "./chunk-A2I76FTA.js";
|
|
13
|
-
import "./chunk-CX5SL5HP.js";
|
|
14
|
-
import "./chunk-KGXPLI7W.js";
|
|
15
|
-
export {
|
|
16
|
-
applyPlan
|
|
17
|
-
};
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
getConfigDir
|
|
4
|
-
} from "./chunk-CX5SL5HP.js";
|
|
5
|
-
import "./chunk-KGXPLI7W.js";
|
|
6
|
-
|
|
7
|
-
// src/pulumi/automation.ts
|
|
8
|
-
import path from "path";
|
|
9
|
-
import { LocalWorkspace } from "@pulumi/pulumi/automation";
|
|
10
|
-
async function getOrCreateStack(opts) {
|
|
11
|
-
const configDir = opts.configDir ?? getConfigDir();
|
|
12
|
-
return await LocalWorkspace.createOrSelectStack(
|
|
13
|
-
{
|
|
14
|
-
stackName: opts.stack,
|
|
15
|
-
projectName: "clawops",
|
|
16
|
-
program: opts.program
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
pulumiHome: path.join(configDir, ".pulumi"),
|
|
20
|
-
envVars: {
|
|
21
|
-
PULUMI_BACKEND_URL: opts.stateUrl,
|
|
22
|
-
PULUMI_SKIP_UPDATE_CHECK: "1"
|
|
23
|
-
// R6: cloud credentials inherited from process.env, never set here
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
);
|
|
27
|
-
}
|
|
28
|
-
export {
|
|
29
|
-
getOrCreateStack
|
|
30
|
-
};
|