@clawops/cli 1.7.0 → 1.7.2

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 (41) hide show
  1. package/README.md +62 -0
  2. package/dist/{apply-BTZFFGAD.js → apply-PZ5IIU7Z.js} +5 -4
  3. package/dist/{aws-D7Y6LCGK.js → aws-L4RR2LSE.js} +1 -1
  4. package/dist/{azure-JQAMNVHN.js → azure-7OXQENQL.js} +1 -1
  5. package/dist/{bootstrap-RY4VOSDJ.js → bootstrap-HL4DNUNG.js} +13 -4
  6. package/dist/bootstrap.sh.tmpl +204 -0
  7. package/dist/chunk-2YOP6N7X.js +126 -0
  8. package/dist/{chunk-GJEF6UQA.js → chunk-3XK66DKK.js} +100 -16
  9. package/dist/{chunk-ISFHLA4G.js → chunk-5SPESD5N.js} +8 -6
  10. package/dist/{chunk-YTH4L2GN.js → chunk-6X45DDGH.js} +5 -4
  11. package/dist/{chunk-XKT42M34.js → chunk-C5X375RO.js} +14 -1
  12. package/dist/{chunk-LCKD7L7X.js → chunk-DQDAWNGB.js} +1 -1
  13. package/dist/{chunk-CG3Y7Y2R.js → chunk-FSUWPL7Q.js} +9 -9
  14. package/dist/{chunk-ZFNPM2WG.js → chunk-O3F7OGH7.js} +40 -3
  15. package/dist/{chunk-3MFZ7E74.js → chunk-P5LKWRPL.js} +3 -3
  16. package/dist/chunk-PVUVI35Y.js +29 -0
  17. package/dist/{chunk-7KLLWDBA.js → chunk-SEABO2UU.js} +7 -4
  18. package/dist/cli.js +122 -68
  19. package/dist/{context-ALSJMTHE.js → context-5LCUG2QR.js} +1 -1
  20. package/dist/{gcp-6FT2A45S.js → gcp-UG6AWPIZ.js} +1 -1
  21. package/dist/{generate-ZTD4BVVI.js → generate-NIF6IBZC.js} +4 -3
  22. package/dist/{harden-BDVYW567.js → harden-URPXLSVF.js} +2 -2
  23. package/dist/{mcp-wire-ZWIYMLEW.js → mcp-wire-SLL4TLSC.js} +1 -1
  24. package/dist/{package-7WOZMHSO.js → package-TZ2HYF5C.js} +3 -2
  25. package/dist/{pool-JZGKPP6K.js → pool-QGFQRMGU.js} +2 -2
  26. package/dist/{remote-config-QF5TT7GU.js → remote-config-PFB66RPY.js} +3 -1
  27. package/dist/{server-EXBOOIEP.js → server-WM3AY4PJ.js} +19 -18
  28. package/dist/{ssh-E2AMBPZY.js → ssh-CNJNLM3E.js} +1 -1
  29. package/dist/{validate-T5M5EHSJ.js → validate-CFQ4FH2T.js} +2 -1
  30. package/dist/version-guard-MZAO4KHS.js +25 -0
  31. package/dist/versions-OEPAS2EL.js +24 -0
  32. package/package.json +3 -2
  33. package/spec/_gen-schemas.md +136 -0
  34. package/spec/deploy-plan.schema.json +193 -0
  35. package/spec/errors.yaml +175 -0
  36. package/spec/integrations.yaml +97 -0
  37. package/spec/invariants.yaml +81 -0
  38. package/spec/mcp-tools.yaml +532 -0
  39. package/spec/models.yaml +113 -0
  40. package/spec/openclaw-versions.yaml +67 -0
  41. package/spec/providers.schema.json +120 -0
@@ -0,0 +1,97 @@
1
+ # spec/integrations.yaml — OpenClaw channel integration catalog for the setup wizard.
2
+ # Read at runtime by src/cli/commands/setup.ts — not compiled or code-generated.
3
+ #
4
+ # Each integration maps to a key in openclaw.json's `channels` object.
5
+ # infraRequired: true means a publicly reachable webhook URL must be registered
6
+ # with the provider after the stack is deployed.
7
+
8
+ integrations:
9
+ - id: discord
10
+ channelKey: discord
11
+ displayName: Discord
12
+ description: Connect OpenClaw agents to a Discord server via bot
13
+ infraRequired: false
14
+ fields:
15
+ - name: botToken
16
+ label: Bot token
17
+ description: Bot token from the Discord Developer Portal (Bot → Token)
18
+ sensitive: true
19
+ envDefault: OPENCLAW_DISCORD_TOKEN
20
+ setupUrl: https://discord.com/developers/applications
21
+
22
+ - id: telegram
23
+ channelKey: telegram
24
+ displayName: Telegram
25
+ description: Connect OpenClaw agents to a Telegram bot
26
+ infraRequired: false
27
+ fields:
28
+ - name: botToken
29
+ label: Bot token
30
+ description: Token from @BotFather (/newbot)
31
+ sensitive: true
32
+ envDefault: OPENCLAW_TELEGRAM_TOKEN
33
+ setupUrl: https://t.me/BotFather
34
+
35
+ - id: slack
36
+ channelKey: slack
37
+ displayName: Slack
38
+ description: Connect OpenClaw agents to a Slack workspace via app
39
+ infraRequired: true
40
+ infraNote: >
41
+ After deployment, register the gateway webhook URL in your Slack app
42
+ configuration at api.slack.com (Event Subscriptions → Request URL).
43
+ fields:
44
+ - name: botToken
45
+ label: Bot OAuth token
46
+ description: "Bot User OAuth Token (starts with xoxb-)"
47
+ sensitive: true
48
+ envDefault: OPENCLAW_SLACK_TOKEN
49
+ - name: signingSecret
50
+ label: Signing secret
51
+ description: App signing secret from Basic Information → App Credentials
52
+ sensitive: true
53
+ envDefault: OPENCLAW_SLACK_SIGNING_SECRET
54
+ setupUrl: https://api.slack.com/apps
55
+
56
+ - id: whatsapp
57
+ channelKey: whatsapp
58
+ displayName: WhatsApp (via WABA)
59
+ description: Connect OpenClaw agents to WhatsApp via the Meta Business API
60
+ infraRequired: true
61
+ infraNote: >
62
+ After deployment, register the gateway webhook URL in the Meta Developer
63
+ Console (WhatsApp → Configuration → Webhook). The gateway URL is printed
64
+ at the end of setup.
65
+ fields:
66
+ - name: phoneNumberId
67
+ label: Phone number ID
68
+ description: Phone Number ID from Meta Developer Console → WhatsApp → API Setup
69
+ sensitive: false
70
+ envDefault: ""
71
+ - name: accessToken
72
+ label: Access token
73
+ description: Permanent system user access token from Meta Business Suite
74
+ sensitive: true
75
+ envDefault: OPENCLAW_WHATSAPP_TOKEN
76
+ setupUrl: https://developers.facebook.com/apps
77
+
78
+ - id: teams
79
+ channelKey: teams
80
+ displayName: Microsoft Teams
81
+ description: Connect OpenClaw agents to a Microsoft Teams channel via bot
82
+ infraRequired: true
83
+ infraNote: >
84
+ After deployment, update the bot's messaging endpoint in Azure Bot Service
85
+ to the gateway webhook URL.
86
+ fields:
87
+ - name: appId
88
+ label: App (client) ID
89
+ description: Application ID from Azure Active Directory app registration
90
+ sensitive: false
91
+ envDefault: ""
92
+ - name: appPassword
93
+ label: App password
94
+ description: Client secret from the Azure app registration
95
+ sensitive: true
96
+ envDefault: OPENCLAW_TEAMS_APP_PASSWORD
97
+ setupUrl: https://portal.azure.com/
@@ -0,0 +1,81 @@
1
+ # Invariants enforced by tests.
2
+ # tests/invariants.test.ts loads this file and asserts each rule via a corresponding check.
3
+ # Adding an invariant here without adding the test is a CI failure.
4
+
5
+ version: 1
6
+
7
+ invariants:
8
+ - id: I1-no-secrets-in-config
9
+ rule: ~/.clawops/config.json schema must not include any secret-looking field
10
+ enforcement: tests/config/no-secrets.test.ts
11
+ derives_from: R6, N9
12
+
13
+ - id: I2-firewall-deny-default
14
+ rule: All ProviderAdapter program() outputs must produce a firewall/security group with no default 0.0.0.0/0 rules on any port
15
+ enforcement: tests/providers/firewall-defaults.test.ts
16
+ derives_from: R-meta-1, N10
17
+
18
+ - id: I3-mcp-tools-have-all-annotations
19
+ rule: Every tool in spec/mcp-tools.yaml has all four annotation hints AND a title
20
+ enforcement: tests/mcp/annotations.test.ts
21
+ derives_from: R10
22
+
23
+ - id: I4-mcp-tool-cap
24
+ rule: Total registered MCP tools across all toolsets ≤ 30
25
+ enforcement: tests/mcp/tool-cap.test.ts
26
+ derives_from: R1
27
+
28
+ - id: I5-mcp-prefix
29
+ rule: All MCP tool names start with `clawops_`
30
+ enforcement: tests/mcp/naming.test.ts
31
+ derives_from: R1
32
+
33
+ - id: I6-mcp-descriptions-include-when-not
34
+ rule: Every tool description includes the substring "Do NOT use" or "Do NOT use when"
35
+ enforcement: tests/mcp/descriptions.test.ts
36
+ derives_from: R3
37
+
38
+ - id: I7-stdio-no-stdout-writes
39
+ rule: No call to console.log, process.stdout.write outside of src/output/json.ts and src/output/human.ts
40
+ enforcement: tests/mcp/stdio-purity.test.ts (eslint rule + grep)
41
+ derives_from: R15
42
+
43
+ - id: I8-no-docx-in-repo
44
+ rule: No .docx, .pages, .rtf files committed
45
+ enforcement: scripts/verify-no-docx.ts (CI step)
46
+ derives_from: R-meta-2
47
+
48
+ - id: I9-generated-files-up-to-date
49
+ rule: src/providers/types.ts and src/mcp/tools/_generated.ts match output of `pnpm gen:schemas`
50
+ enforcement: pnpm gen:schemas --check (CI step)
51
+ derives_from: R-meta-1
52
+
53
+ - id: I10-deploy-plan-conforms
54
+ rule: Every plan produced by `clawops plan` passes ajv validation against spec/deploy-plan.schema.json
55
+ enforcement: tests/plan/schema.test.ts
56
+ derives_from: R-meta-4
57
+
58
+ - id: I11-tool-output-cap
59
+ rule: MCP tool outputs are <= 8KB after sanitization
60
+ enforcement: tests/mcp/output-size.test.ts
61
+ derives_from: R14
62
+
63
+ - id: I12-audit-log-sanitization
64
+ rule: src/mcp/audit.ts strips any field whose key matches the sensitive-key list before logging
65
+ enforcement: tests/mcp/audit-sanitization.test.ts
66
+ derives_from: R21
67
+
68
+ - id: I13-paths-absolute-on-input
69
+ rule: Any tool input field of type "path" rejects relative paths with a clear error
70
+ enforcement: tests/mcp/path-absolute.test.ts
71
+ derives_from: R7
72
+
73
+ - id: I14-cancellation-propagates
74
+ rule: Cancellation of a tool call propagates to the underlying subprocess within 5 seconds
75
+ enforcement: tests/integration/cancellation.test.ts
76
+ derives_from: R13
77
+
78
+ - id: I15-no-aws-cli-shellout
79
+ rule: No call to spawn/exec of "aws", "gcloud", "az", "ssh" binaries from src/. Use SDKs.
80
+ enforcement: scripts/lint-no-shellout.ts + grep
81
+ derives_from: §6 (use SDKs not shell)