@clawops/cli 2.1.2 → 2.2.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.
Files changed (63) hide show
  1. package/README.md +122 -2
  2. package/dist/agent-activity-25FAWLAI.js +16 -0
  3. package/dist/{apply-HJ5GAKHW.js → apply-F5SQ2ZOS.js} +12 -12
  4. package/dist/{automation-MKCJ46I6.js → automation-NBYQ6MFZ.js} +1 -1
  5. package/dist/backup-flows-NDP5JTR3.js +29 -0
  6. package/dist/{bootstrap-NN647RCY.js → bootstrap-32TZXVDF.js} +5 -5
  7. package/dist/bootstrap.sh.tmpl +4 -0
  8. package/dist/chunk-27335SIH.js +51 -0
  9. package/dist/{chunk-X56CQ6GB.js → chunk-4MHDW2NB.js} +1 -1
  10. package/dist/{chunk-E4NJSJ54.js → chunk-4PY6PN4G.js} +51 -7
  11. package/dist/{chunk-3Z5TDXCJ.js → chunk-55UMO37O.js} +1 -1
  12. package/dist/{chunk-IQQTB7ER.js → chunk-66R52R7K.js} +10 -14
  13. package/dist/chunk-755X5OGS.js +213 -0
  14. package/dist/{chunk-QDNFADJI.js → chunk-AVERNLUY.js} +6 -6
  15. package/dist/{chunk-R3DTA35B.js → chunk-AX65JMDZ.js} +20 -20
  16. package/dist/{chunk-T5XCMYAV.js → chunk-CQOYUWR7.js} +766 -210
  17. package/dist/chunk-E6BRQK67.js +289 -0
  18. package/dist/{chunk-64PONSA5.js → chunk-GFIR2IIJ.js} +3 -1
  19. package/dist/chunk-LV7UO5CG.js +82 -0
  20. package/dist/{chunk-GIEVAGEK.js → chunk-N5ZYUTZS.js} +16 -1
  21. package/dist/{chunk-GFUK6KDR.js → chunk-OUQVKIIA.js} +372 -34
  22. package/dist/{chunk-XFN3YDZE.js → chunk-PASAVVNS.js} +1 -1
  23. package/dist/chunk-PCSX6Y3U.js +297 -0
  24. package/dist/chunk-POYS3EVQ.js +14 -0
  25. package/dist/{chunk-ELU3XQEA.js → chunk-RDUKRIRC.js} +1 -1
  26. package/dist/chunk-SX75L2T3.js +46 -0
  27. package/dist/{chunk-2Z7J3ERQ.js → chunk-TYNMOYVM.js} +1 -1
  28. package/dist/{chunk-2I7KCMXZ.js → chunk-UAJJEDCJ.js} +2 -2
  29. package/dist/{chunk-NUDIHZEH.js → chunk-WPZIJONN.js} +14 -12
  30. package/dist/{chunk-BELTQGHT.js → chunk-YPVWF7IA.js} +4 -4
  31. package/dist/{chunk-3OLUJPCB.js → chunk-Z3XLWZWF.js} +1 -1
  32. package/dist/cli.js +383 -925
  33. package/dist/conn-M2V5HBPJ.js +9 -0
  34. package/dist/{context-7VI3R6EK.js → context-EHSLWKSH.js} +6 -6
  35. package/dist/{docker-3PDO4TS7.js → docker-IKM5GRMC.js} +2 -2
  36. package/dist/{flows-RI7FGHAM.js → flows-6B2I6TRW.js} +7 -7
  37. package/dist/{generate-Q2BGVMH7.js → generate-4YYNW3IU.js} +9 -8
  38. package/dist/{harden-3KKCR7BL.js → harden-UHAOVQMZ.js} +5 -5
  39. package/dist/init-HOPXDNWY.js +13 -0
  40. package/dist/{mcp-wire-FQOMM7MK.js → mcp-wire-BXF4DJFT.js} +26 -19
  41. package/dist/migrate-flow-24XA4GZL.js +25 -0
  42. package/dist/{package-JFVGCNKU.js → package-HYGHRX35.js} +3 -1
  43. package/dist/{pool-PIIKJ4L2.js → pool-NT4XBSUT.js} +2 -2
  44. package/dist/{privileged-JFA6LLTV.js → privileged-5Y6O4H7Z.js} +1 -1
  45. package/dist/{ready-KDNRBNSU.js → ready-IJEUBFVX.js} +2 -2
  46. package/dist/{remote-config-3HZLUWEA.js → remote-config-OZYBMBSK.js} +3 -3
  47. package/dist/{runtime-X3KW5TCP.js → runtime-VW53TU2W.js} +5 -1
  48. package/dist/server-E3YA32ND.js +53 -0
  49. package/dist/ssh-HOM7GF3M.js +13 -0
  50. package/dist/{stack-config-LUTS2XAD.js → stack-config-ICQ5YHUL.js} +2 -2
  51. package/dist/stack-delete-NTIGKWUF.js +13 -0
  52. package/dist/{state-AOAYLYY5.js → state-AKZP2S4T.js} +2 -2
  53. package/dist/{store-OVB3DAJR.js → store-YOLQYXMB.js} +1 -1
  54. package/dist/{tailscale-cutover-6YP2QKFM.js → tailscale-cutover-V42HO5UM.js} +3 -3
  55. package/dist/{validate-JXKN5WD6.js → validate-DZE6LFEB.js} +1 -1
  56. package/dist/{wait-WO72TRRQ.js → wait-DOUNNJNN.js} +2 -2
  57. package/package.json +3 -1
  58. package/spec/mcp-tools.yaml +282 -35
  59. package/dist/logs-5A7YYA53.js +0 -15
  60. package/dist/server-B7I6HBQH.js +0 -46
  61. package/dist/ssh-VAI5DU5M.js +0 -11
  62. package/dist/upgrade-ULD4KFYC.js +0 -88
  63. /package/dist/{chunk-NUL5F6YV.js → chunk-SOZ62ZXW.js} +0 -0
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ resolveConn
4
+ } from "./chunk-SX75L2T3.js";
5
+ import "./chunk-POYS3EVQ.js";
6
+ import "./chunk-KGXPLI7W.js";
7
+ export {
8
+ resolveConn
9
+ };
@@ -2,18 +2,18 @@
2
2
  import {
3
3
  buildContext,
4
4
  loadAdapterModule
5
- } from "./chunk-QDNFADJI.js";
6
- import "./chunk-BELTQGHT.js";
7
- import "./chunk-GIEVAGEK.js";
5
+ } from "./chunk-AVERNLUY.js";
6
+ import "./chunk-YPVWF7IA.js";
7
+ import "./chunk-VUFMZEIM.js";
8
+ import "./chunk-N5ZYUTZS.js";
8
9
  import "./chunk-VOEJYRIK.js";
9
10
  import "./chunk-EI7CQQ7D.js";
10
11
  import "./chunk-FEK7VJAY.js";
11
12
  import "./chunk-RHOWYIWT.js";
12
13
  import "./chunk-N4WZLWJ4.js";
13
- import "./chunk-ELU3XQEA.js";
14
- import "./chunk-64PONSA5.js";
14
+ import "./chunk-RDUKRIRC.js";
15
+ import "./chunk-GFIR2IIJ.js";
15
16
  import "./chunk-KGXPLI7W.js";
16
- import "./chunk-VUFMZEIM.js";
17
17
  export {
18
18
  buildContext,
19
19
  loadAdapterModule
@@ -3,8 +3,8 @@ import {
3
3
  containerStatus,
4
4
  inspectContainer,
5
5
  looksLikeStillBooting
6
- } from "./chunk-3OLUJPCB.js";
7
- import "./chunk-NUDIHZEH.js";
6
+ } from "./chunk-Z3XLWZWF.js";
7
+ import "./chunk-WPZIJONN.js";
8
8
  export {
9
9
  containerStatus,
10
10
  inspectContainer,
@@ -2,9 +2,9 @@
2
2
 
3
3
  // src/harden/flows.ts
4
4
  async function cutOverToTailnet(ctx, conn, config) {
5
- const { withRemoteExec } = await import("./harden-3KKCR7BL.js");
6
- const { verifyTailnetAddress, probeSsh } = await import("./tailscale-cutover-6YP2QKFM.js");
7
- const { setConfig } = await import("./store-OVB3DAJR.js");
5
+ const { withRemoteExec } = await import("./harden-UHAOVQMZ.js");
6
+ const { verifyTailnetAddress, probeSsh } = await import("./tailscale-cutover-V42HO5UM.js");
7
+ const { setConfig } = await import("./store-YOLQYXMB.js");
8
8
  const result = await withRemoteExec(
9
9
  conn,
10
10
  void 0,
@@ -49,11 +49,11 @@ async function revertTailnet(ctx, config) {
49
49
  message: `Stack "${ctx.stackName}" is not using a tailnet address; nothing to revert.`
50
50
  };
51
51
  }
52
- const { buildContext } = await import("./context-7VI3R6EK.js");
52
+ const { buildContext } = await import("./context-EHSLWKSH.js");
53
53
  const { extractBaseOutputs } = await import("./outputs-DJHBY7EE.js");
54
- const { probeSsh, leaveTailnet } = await import("./tailscale-cutover-6YP2QKFM.js");
55
- const { withRemoteExec } = await import("./harden-3KKCR7BL.js");
56
- const { getConfig, setConfig } = await import("./store-OVB3DAJR.js");
54
+ const { probeSsh, leaveTailnet } = await import("./tailscale-cutover-V42HO5UM.js");
55
+ const { withRemoteExec } = await import("./harden-UHAOVQMZ.js");
56
+ const { getConfig, setConfig } = await import("./store-YOLQYXMB.js");
57
57
  const { forgetHost } = await import("./known-hosts-file-I3Q3NBYQ.js");
58
58
  const direct = buildContext({ stack: ctx.stackName, ignoreTailnet: true });
59
59
  const outputMap = await (await direct.getStack()).outputs();
@@ -5,21 +5,22 @@ import {
5
5
  isInstanceAlias,
6
6
  parseDiffForTest,
7
7
  planId
8
- } from "./chunk-IQQTB7ER.js";
9
- import "./chunk-XFN3YDZE.js";
10
- import "./chunk-QDNFADJI.js";
8
+ } from "./chunk-66R52R7K.js";
9
+ import "./chunk-POYS3EVQ.js";
10
+ import "./chunk-PASAVVNS.js";
11
+ import "./chunk-AVERNLUY.js";
12
+ import "./chunk-YPVWF7IA.js";
11
13
  import "./chunk-JW5A7E3X.js";
12
- import "./chunk-BELTQGHT.js";
13
- import "./chunk-GIEVAGEK.js";
14
+ import "./chunk-VUFMZEIM.js";
15
+ import "./chunk-N5ZYUTZS.js";
14
16
  import "./chunk-VOEJYRIK.js";
15
17
  import "./chunk-EI7CQQ7D.js";
16
18
  import "./chunk-FEK7VJAY.js";
17
19
  import "./chunk-RHOWYIWT.js";
18
20
  import "./chunk-N4WZLWJ4.js";
19
- import "./chunk-ELU3XQEA.js";
20
- import "./chunk-64PONSA5.js";
21
+ import "./chunk-RDUKRIRC.js";
22
+ import "./chunk-GFIR2IIJ.js";
21
23
  import "./chunk-KGXPLI7W.js";
22
- import "./chunk-VUFMZEIM.js";
23
24
  export {
24
25
  INSTANCE_ALIASES,
25
26
  generatePlan,
@@ -2,12 +2,12 @@
2
2
  import {
3
3
  makeTailscaleModule,
4
4
  tailscaleModule
5
- } from "./chunk-X56CQ6GB.js";
5
+ } from "./chunk-4MHDW2NB.js";
6
6
  import {
7
7
  acquireSession,
8
8
  drainPool
9
- } from "./chunk-2Z7J3ERQ.js";
10
- import "./chunk-E4NJSJ54.js";
9
+ } from "./chunk-TYNMOYVM.js";
10
+ import "./chunk-4PY6PN4G.js";
11
11
  import "./chunk-MC5ATCXS.js";
12
12
  import {
13
13
  managementToken
@@ -16,7 +16,7 @@ import {
16
16
  PUBLISH_INSPECT_CMD,
17
17
  publishForRestart,
18
18
  publishedGatewayPort
19
- } from "./chunk-GIEVAGEK.js";
19
+ } from "./chunk-N5ZYUTZS.js";
20
20
  import {
21
21
  GATEWAY_PORT
22
22
  } from "./chunk-VOEJYRIK.js";
@@ -28,7 +28,7 @@ import {
28
28
  import {
29
29
  resolveProjectId
30
30
  } from "./chunk-TC2VYPLH.js";
31
- import "./chunk-64PONSA5.js";
31
+ import "./chunk-GFIR2IIJ.js";
32
32
  import "./chunk-KGXPLI7W.js";
33
33
 
34
34
  // src/harden/types.ts
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ PROVIDER_DEFAULTS,
4
+ SUPPORTED_PROVIDERS,
5
+ initStack
6
+ } from "./chunk-755X5OGS.js";
7
+ import "./chunk-GFIR2IIJ.js";
8
+ import "./chunk-KGXPLI7W.js";
9
+ export {
10
+ PROVIDER_DEFAULTS,
11
+ SUPPORTED_PROVIDERS,
12
+ initStack
13
+ };
@@ -1,40 +1,47 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  MCP_HTTP_PORT
4
- } from "./chunk-T5XCMYAV.js";
5
- import "./chunk-R3DTA35B.js";
4
+ } from "./chunk-CQOYUWR7.js";
5
+ import "./chunk-E6BRQK67.js";
6
+ import "./chunk-PCSX6Y3U.js";
7
+ import "./chunk-LV7UO5CG.js";
8
+ import "./chunk-AX65JMDZ.js";
9
+ import "./chunk-SX75L2T3.js";
10
+ import "./chunk-27335SIH.js";
11
+ import "./chunk-66R52R7K.js";
12
+ import "./chunk-POYS3EVQ.js";
6
13
  import "./chunk-BOPSG2LI.js";
7
- import "./chunk-6ZFIFDBJ.js";
8
14
  import "./chunk-3QJBNAHW.js";
9
- import "./chunk-2I7KCMXZ.js";
10
- import "./chunk-3Z5TDXCJ.js";
15
+ import "./chunk-UAJJEDCJ.js";
16
+ import "./chunk-PASAVVNS.js";
17
+ import "./chunk-55UMO37O.js";
11
18
  import "./chunk-AEEMRFZV.js";
12
- import "./chunk-IQQTB7ER.js";
13
- import "./chunk-XFN3YDZE.js";
14
- import "./chunk-2Z7J3ERQ.js";
15
- import "./chunk-E4NJSJ54.js";
19
+ import "./chunk-AVERNLUY.js";
20
+ import "./chunk-GAZPPSKU.js";
21
+ import "./chunk-TYNMOYVM.js";
22
+ import "./chunk-4PY6PN4G.js";
16
23
  import "./chunk-MC5ATCXS.js";
17
- import "./chunk-QDNFADJI.js";
18
- import "./chunk-GFUK6KDR.js";
19
- import "./chunk-NUL5F6YV.js";
20
- import "./chunk-3OLUJPCB.js";
24
+ import "./chunk-OUQVKIIA.js";
25
+ import "./chunk-SOZ62ZXW.js";
26
+ import "./chunk-6ZFIFDBJ.js";
27
+ import "./chunk-Z3XLWZWF.js";
21
28
  import {
22
29
  execPrivileged
23
- } from "./chunk-NUDIHZEH.js";
30
+ } from "./chunk-WPZIJONN.js";
31
+ import "./chunk-YPVWF7IA.js";
24
32
  import "./chunk-JW5A7E3X.js";
25
33
  import "./chunk-LT4XMO5D.js";
26
- import "./chunk-BELTQGHT.js";
27
- import "./chunk-GIEVAGEK.js";
34
+ import "./chunk-VUFMZEIM.js";
35
+ import "./chunk-N5ZYUTZS.js";
28
36
  import "./chunk-VOEJYRIK.js";
29
37
  import "./chunk-EI7CQQ7D.js";
30
38
  import "./chunk-FEK7VJAY.js";
31
39
  import "./chunk-RHOWYIWT.js";
32
40
  import "./chunk-Q7NQY5HV.js";
33
41
  import "./chunk-N4WZLWJ4.js";
34
- import "./chunk-ELU3XQEA.js";
35
- import "./chunk-64PONSA5.js";
42
+ import "./chunk-RDUKRIRC.js";
43
+ import "./chunk-GFIR2IIJ.js";
36
44
  import "./chunk-KGXPLI7W.js";
37
- import "./chunk-VUFMZEIM.js";
38
45
 
39
46
  // src/cli/mcp-wire.ts
40
47
  var GATEWAY_MCP_NAME = "clawops";
@@ -0,0 +1,25 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ PREMIGRATION_ARCHIVE,
4
+ SYNTHESISED_CONFIG,
5
+ migrationQuestion,
6
+ migrationResult,
7
+ migrationSteps,
8
+ prepareMigration,
9
+ runMigration
10
+ } from "./chunk-E6BRQK67.js";
11
+ import "./chunk-GAZPPSKU.js";
12
+ import "./chunk-JW5A7E3X.js";
13
+ import "./chunk-LT4XMO5D.js";
14
+ import "./chunk-N5ZYUTZS.js";
15
+ import "./chunk-VOEJYRIK.js";
16
+ import "./chunk-EI7CQQ7D.js";
17
+ export {
18
+ PREMIGRATION_ARCHIVE,
19
+ SYNTHESISED_CONFIG,
20
+ migrationQuestion,
21
+ migrationResult,
22
+ migrationSteps,
23
+ prepareMigration,
24
+ runMigration
25
+ };
@@ -2,7 +2,7 @@
2
2
 
3
3
  // package.json
4
4
  var name = "@clawops/cli";
5
- var version = "2.1.2";
5
+ var version = "2.2.0";
6
6
  var description = "Deploy self-hosted OpenClaw to AWS, GCP, Azure or a local VM \u2014 a CLI and an MCP server in one.";
7
7
  var keywords = [
8
8
  "openclaw",
@@ -62,6 +62,7 @@ var scripts = {
62
62
  "test:pulumi": "vitest run tests/providers/aws/program.test.ts tests/providers/azure/program.test.ts",
63
63
  "test:changed": "vitest --changed",
64
64
  "test:integration": "vitest run --config vitest.integration.config.ts",
65
+ "test:e2e:local": "pnpm build && CLAWOPS_E2E_LOCAL=1 vitest run --config vitest.integration.config.ts tests/e2e/local",
65
66
  "test:cloud": "bash scripts/e2e/cloud.sh",
66
67
  typecheck: "NODE_OPTIONS=--max-old-space-size=4096 tsc --noEmit",
67
68
  lint: "eslint --max-warnings=0 src tests scripts",
@@ -73,6 +74,7 @@ var scripts = {
73
74
  "verify:pack": "node scripts/dev/verify-pack.mjs",
74
75
  "verify:mcp": "node scripts/dev/mcp-probe.mjs",
75
76
  "verify:docker": "node scripts/dev/verify-docker.mjs",
77
+ "verify:docs": "node scripts/dev/check-doc-links.mjs",
76
78
  "version:packages": "changeset version && node scripts/sync-server-json.mjs",
77
79
  "sync:server-json": "node scripts/sync-server-json.mjs"
78
80
  };
@@ -2,8 +2,8 @@
2
2
  import {
3
3
  acquireSession,
4
4
  drainPool
5
- } from "./chunk-2Z7J3ERQ.js";
6
- import "./chunk-E4NJSJ54.js";
5
+ } from "./chunk-TYNMOYVM.js";
6
+ import "./chunk-4PY6PN4G.js";
7
7
  import "./chunk-MC5ATCXS.js";
8
8
  import "./chunk-KGXPLI7W.js";
9
9
  export {
@@ -6,7 +6,7 @@ import {
6
6
  shellQuote,
7
7
  streamPrivileged,
8
8
  sudoWrap
9
- } from "./chunk-NUDIHZEH.js";
9
+ } from "./chunk-WPZIJONN.js";
10
10
  export {
11
11
  execPrivileged,
12
12
  execPrivilegedWithInput,
@@ -2,10 +2,10 @@
2
2
  import {
3
3
  containerStatus,
4
4
  looksLikeStillBooting
5
- } from "./chunk-3OLUJPCB.js";
5
+ } from "./chunk-Z3XLWZWF.js";
6
6
  import {
7
7
  execPrivileged
8
- } from "./chunk-NUDIHZEH.js";
8
+ } from "./chunk-WPZIJONN.js";
9
9
  import {
10
10
  interpretProbe,
11
11
  probeCommand
@@ -8,9 +8,9 @@ import {
8
8
  deepMerge,
9
9
  readRemoteConfig,
10
10
  restartGateway
11
- } from "./chunk-2I7KCMXZ.js";
12
- import "./chunk-NUDIHZEH.js";
13
- import "./chunk-GIEVAGEK.js";
11
+ } from "./chunk-UAJJEDCJ.js";
12
+ import "./chunk-WPZIJONN.js";
13
+ import "./chunk-N5ZYUTZS.js";
14
14
  import "./chunk-VOEJYRIK.js";
15
15
  import "./chunk-EI7CQQ7D.js";
16
16
  export {
@@ -5,19 +5,21 @@ import {
5
5
  CONFIG_MOUNT_PATH,
6
6
  CONTAINER_UID,
7
7
  ENV_FILE_PATH,
8
+ GATEWAY_STOP_COMMAND,
8
9
  PUBLISH_INSPECT_CMD,
9
10
  SECURITY_FLAGS,
10
11
  STATE_DIR_CONTAINER,
11
12
  STATE_DIR_HOST_LINUX,
12
13
  STATE_DIR_HOST_MACOS,
13
14
  SUPERVISOR_ENV,
15
+ SYSTEMD_DROPIN,
14
16
  configPathForOS,
15
17
  gatewayRunArgs,
16
18
  gatewayRunCommand,
17
19
  publishForRestart,
18
20
  publishedGatewayPort,
19
21
  stateDirForOS
20
- } from "./chunk-GIEVAGEK.js";
22
+ } from "./chunk-N5ZYUTZS.js";
21
23
  import {
22
24
  GATEWAY_PORT
23
25
  } from "./chunk-VOEJYRIK.js";
@@ -29,12 +31,14 @@ export {
29
31
  CONTAINER_UID,
30
32
  ENV_FILE_PATH,
31
33
  GATEWAY_PORT,
34
+ GATEWAY_STOP_COMMAND,
32
35
  PUBLISH_INSPECT_CMD,
33
36
  SECURITY_FLAGS,
34
37
  STATE_DIR_CONTAINER,
35
38
  STATE_DIR_HOST_LINUX,
36
39
  STATE_DIR_HOST_MACOS,
37
40
  SUPERVISOR_ENV,
41
+ SYSTEMD_DROPIN,
38
42
  configPathForOS,
39
43
  gatewayRunArgs,
40
44
  gatewayRunCommand,
@@ -0,0 +1,53 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ MCP_HTTP_PORT,
4
+ authRequirement,
5
+ bearerFrom,
6
+ isLoopbackBind,
7
+ serveMcp
8
+ } from "./chunk-CQOYUWR7.js";
9
+ import "./chunk-E6BRQK67.js";
10
+ import "./chunk-PCSX6Y3U.js";
11
+ import "./chunk-LV7UO5CG.js";
12
+ import "./chunk-AX65JMDZ.js";
13
+ import "./chunk-SX75L2T3.js";
14
+ import "./chunk-27335SIH.js";
15
+ import "./chunk-66R52R7K.js";
16
+ import "./chunk-POYS3EVQ.js";
17
+ import "./chunk-BOPSG2LI.js";
18
+ import "./chunk-3QJBNAHW.js";
19
+ import "./chunk-UAJJEDCJ.js";
20
+ import "./chunk-PASAVVNS.js";
21
+ import "./chunk-55UMO37O.js";
22
+ import "./chunk-AEEMRFZV.js";
23
+ import "./chunk-AVERNLUY.js";
24
+ import "./chunk-GAZPPSKU.js";
25
+ import "./chunk-TYNMOYVM.js";
26
+ import "./chunk-4PY6PN4G.js";
27
+ import "./chunk-MC5ATCXS.js";
28
+ import "./chunk-OUQVKIIA.js";
29
+ import "./chunk-SOZ62ZXW.js";
30
+ import "./chunk-6ZFIFDBJ.js";
31
+ import "./chunk-Z3XLWZWF.js";
32
+ import "./chunk-WPZIJONN.js";
33
+ import "./chunk-YPVWF7IA.js";
34
+ import "./chunk-JW5A7E3X.js";
35
+ import "./chunk-LT4XMO5D.js";
36
+ import "./chunk-VUFMZEIM.js";
37
+ import "./chunk-N5ZYUTZS.js";
38
+ import "./chunk-VOEJYRIK.js";
39
+ import "./chunk-EI7CQQ7D.js";
40
+ import "./chunk-FEK7VJAY.js";
41
+ import "./chunk-RHOWYIWT.js";
42
+ import "./chunk-Q7NQY5HV.js";
43
+ import "./chunk-N4WZLWJ4.js";
44
+ import "./chunk-RDUKRIRC.js";
45
+ import "./chunk-GFIR2IIJ.js";
46
+ import "./chunk-KGXPLI7W.js";
47
+ export {
48
+ MCP_HTTP_PORT,
49
+ authRequirement,
50
+ bearerFrom,
51
+ isLoopbackBind,
52
+ serveMcp
53
+ };
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ connect,
4
+ describeConnectError,
5
+ diagnoseConnectError
6
+ } from "./chunk-4PY6PN4G.js";
7
+ import "./chunk-MC5ATCXS.js";
8
+ import "./chunk-KGXPLI7W.js";
9
+ export {
10
+ connect,
11
+ describeConnectError,
12
+ diagnoseConnectError
13
+ };
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  writeStackConfig
4
- } from "./chunk-3Z5TDXCJ.js";
4
+ } from "./chunk-55UMO37O.js";
5
5
  import "./chunk-AEEMRFZV.js";
6
6
  import "./chunk-VOEJYRIK.js";
7
7
  import "./chunk-EI7CQQ7D.js";
8
- import "./chunk-64PONSA5.js";
8
+ import "./chunk-GFIR2IIJ.js";
9
9
  import "./chunk-KGXPLI7W.js";
10
10
  export {
11
11
  writeStackConfig
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ checkStackDelete,
4
+ deleteStackFromConfig,
5
+ forgetNotice
6
+ } from "./chunk-LV7UO5CG.js";
7
+ import "./chunk-GFIR2IIJ.js";
8
+ import "./chunk-KGXPLI7W.js";
9
+ export {
10
+ checkStackDelete,
11
+ deleteStackFromConfig,
12
+ forgetNotice
13
+ };
@@ -5,8 +5,8 @@ import {
5
5
  stateDir,
6
6
  statePath,
7
7
  writeLocalState
8
- } from "./chunk-ELU3XQEA.js";
9
- import "./chunk-64PONSA5.js";
8
+ } from "./chunk-RDUKRIRC.js";
9
+ import "./chunk-GFIR2IIJ.js";
10
10
  import "./chunk-KGXPLI7W.js";
11
11
  export {
12
12
  localStateToConnectionInfo,
@@ -5,7 +5,7 @@ import {
5
5
  getConfigPath,
6
6
  requireConfig,
7
7
  setConfig
8
- } from "./chunk-64PONSA5.js";
8
+ } from "./chunk-GFIR2IIJ.js";
9
9
  import "./chunk-KGXPLI7W.js";
10
10
  export {
11
11
  getConfig,
@@ -3,13 +3,13 @@ import {
3
3
  isTailscaleIpv4,
4
4
  parseStatus,
5
5
  rootPrefix
6
- } from "./chunk-X56CQ6GB.js";
6
+ } from "./chunk-4MHDW2NB.js";
7
7
  import {
8
8
  formatKnownHostsLine,
9
9
  keyTypeFromBlob,
10
10
  verifyAgainstKnownHosts
11
11
  } from "./chunk-MC5ATCXS.js";
12
- import "./chunk-64PONSA5.js";
12
+ import "./chunk-GFIR2IIJ.js";
13
13
  import "./chunk-KGXPLI7W.js";
14
14
 
15
15
  // src/harden/tailscale-cutover.ts
@@ -76,7 +76,7 @@ async function verifyTailnetAddress(publicConn, deps) {
76
76
  return { ok: true, ip, ...status.hostname ? { hostname: status.hostname } : {}, pinned };
77
77
  }
78
78
  async function probeSsh(conn, signal) {
79
- const { connect } = await import("./ssh-VAI5DU5M.js");
79
+ const { connect } = await import("./ssh-HOM7GF3M.js");
80
80
  let session;
81
81
  try {
82
82
  session = await connect({
@@ -4,7 +4,7 @@ import {
4
4
  validatePlan,
5
5
  validatePlanConfig,
6
6
  validatePlanNetwork
7
- } from "./chunk-XFN3YDZE.js";
7
+ } from "./chunk-PASAVVNS.js";
8
8
  import "./chunk-JW5A7E3X.js";
9
9
  export {
10
10
  assertValidPlan,
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  connect
4
- } from "./chunk-E4NJSJ54.js";
4
+ } from "./chunk-4PY6PN4G.js";
5
5
  import "./chunk-MC5ATCXS.js";
6
6
  import {
7
7
  NetworkError
@@ -36,7 +36,7 @@ async function waitForSsh(conn, opts = {}) {
36
36
  if (opts.signal?.aborted) throw new NetworkError("Waiting for SSH was aborted");
37
37
  attempts++;
38
38
  try {
39
- const session = await connect2({ ...conn, signal: opts.signal });
39
+ const session = await connect2({ ...conn, awaitingBoot: true, signal: opts.signal });
40
40
  if (attempts > 1) opts.onProgress?.(`SSH is up after ${attempts} attempts.`);
41
41
  return session;
42
42
  } catch (err) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clawops/cli",
3
- "version": "2.1.2",
3
+ "version": "2.2.0",
4
4
  "description": "Deploy self-hosted OpenClaw to AWS, GCP, Azure or a local VM — a CLI and an MCP server in one.",
5
5
  "keywords": [
6
6
  "openclaw",
@@ -59,6 +59,7 @@
59
59
  "test:pulumi": "vitest run tests/providers/aws/program.test.ts tests/providers/azure/program.test.ts",
60
60
  "test:changed": "vitest --changed",
61
61
  "test:integration": "vitest run --config vitest.integration.config.ts",
62
+ "test:e2e:local": "pnpm build && CLAWOPS_E2E_LOCAL=1 vitest run --config vitest.integration.config.ts tests/e2e/local",
62
63
  "test:cloud": "bash scripts/e2e/cloud.sh",
63
64
  "typecheck": "NODE_OPTIONS=--max-old-space-size=4096 tsc --noEmit",
64
65
  "lint": "eslint --max-warnings=0 src tests scripts",
@@ -70,6 +71,7 @@
70
71
  "verify:pack": "node scripts/dev/verify-pack.mjs",
71
72
  "verify:mcp": "node scripts/dev/mcp-probe.mjs",
72
73
  "verify:docker": "node scripts/dev/verify-docker.mjs",
74
+ "verify:docs": "node scripts/dev/check-doc-links.mjs",
73
75
  "version:packages": "changeset version && node scripts/sync-server-json.mjs",
74
76
  "sync:server-json": "node scripts/sync-server-json.mjs"
75
77
  },