@clawops/cli 1.7.1 → 1.7.3
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 +37 -92
- package/dist/{apply-BTZFFGAD.js → apply-PZ5IIU7Z.js} +5 -4
- package/dist/{aws-D7Y6LCGK.js → aws-L4RR2LSE.js} +1 -1
- package/dist/{azure-JQAMNVHN.js → azure-7OXQENQL.js} +1 -1
- package/dist/{bootstrap-RY4VOSDJ.js → bootstrap-HL4DNUNG.js} +13 -4
- package/dist/bootstrap.sh.tmpl +204 -0
- package/dist/chunk-2YOP6N7X.js +126 -0
- package/dist/{chunk-GJEF6UQA.js → chunk-3XK66DKK.js} +100 -16
- package/dist/{chunk-ISFHLA4G.js → chunk-5SPESD5N.js} +8 -6
- package/dist/{chunk-YTH4L2GN.js → chunk-6X45DDGH.js} +5 -4
- package/dist/{chunk-XKT42M34.js → chunk-C5X375RO.js} +14 -1
- package/dist/{chunk-LCKD7L7X.js → chunk-DQDAWNGB.js} +1 -1
- package/dist/{chunk-CG3Y7Y2R.js → chunk-FSUWPL7Q.js} +9 -9
- package/dist/{chunk-FQ4JXUCR.js → chunk-NESXDU5F.js} +7 -4
- package/dist/{chunk-ZFNPM2WG.js → chunk-O3F7OGH7.js} +40 -3
- package/dist/{chunk-3MFZ7E74.js → chunk-P5LKWRPL.js} +3 -3
- package/dist/chunk-PVUVI35Y.js +29 -0
- package/dist/cli.js +122 -68
- package/dist/{context-ALSJMTHE.js → context-5LCUG2QR.js} +1 -1
- package/dist/{gcp-6FT2A45S.js → gcp-UG6AWPIZ.js} +1 -1
- package/dist/{generate-SPT7PJKR.js → generate-6E7J6BTM.js} +4 -3
- package/dist/{harden-BDVYW567.js → harden-URPXLSVF.js} +2 -2
- package/dist/{mcp-wire-ZWIYMLEW.js → mcp-wire-SLL4TLSC.js} +1 -1
- package/dist/{package-OMPI6RMV.js → package-QE7V2JAT.js} +3 -2
- package/dist/{pool-JZGKPP6K.js → pool-QGFQRMGU.js} +2 -2
- package/dist/{remote-config-QF5TT7GU.js → remote-config-PFB66RPY.js} +3 -1
- package/dist/{server-RGLKKCCU.js → server-L22AJQZO.js} +19 -18
- package/dist/{ssh-E2AMBPZY.js → ssh-CNJNLM3E.js} +1 -1
- package/dist/{validate-T5M5EHSJ.js → validate-CFQ4FH2T.js} +2 -1
- package/dist/version-guard-MZAO4KHS.js +25 -0
- package/dist/versions-OEPAS2EL.js +24 -0
- package/package.json +3 -2
- package/spec/_gen-schemas.md +136 -0
- package/spec/deploy-plan.schema.json +193 -0
- package/spec/errors.yaml +175 -0
- package/spec/integrations.yaml +97 -0
- package/spec/invariants.yaml +81 -0
- package/spec/mcp-tools.yaml +532 -0
- package/spec/models.yaml +113 -0
- package/spec/openclaw-versions.yaml +67 -0
- 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)
|