@datanovallc/openclaw-slack-router 0.1.21 → 0.1.23

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 CHANGED
@@ -21,11 +21,9 @@ In the [Slack app console](https://api.slack.com/apps), create a new app and con
21
21
 
22
22
  ### 2. Install the plugin
23
23
 
24
- <!-- AUTO:install-cmd -->
25
24
  ```
26
- openclaw plugins install @datanovallc/openclaw-slack-router@0.1.21
25
+ openclaw plugins install @datanovallc/openclaw-slack-router@0.1.23
27
26
  ```
28
- <!-- /AUTO:install-cmd -->
29
27
 
30
28
  ### 3. Configure your tokens
31
29
 
@@ -43,12 +41,9 @@ In Slack, create a channel (e.g. `#rook-main`) and invite your bot user to it.
43
41
 
44
42
  Right-click the channel in Slack → **View channel details** → copy the channel ID (starts with `C`).
45
43
 
46
- Find the config file at:
47
- ```
48
- ~/.openclaw/state/@datanovallc-openclaw-slack-router-*/openclaw-slack-router.config.json
49
- ```
44
+ The setup wizard (step 3) asks for this ID — if you provided it there, skip this step.
50
45
 
51
- Add the channel ID:
46
+ Otherwise, add it to the config file at `~/.openclaw/openclaw-slack-router.config.json`:
52
47
  ```json
53
48
  {
54
49
  "mainChannelId": "CXXXXXXXXX"
@@ -69,14 +64,12 @@ The bot posts a welcome message in your main channel on first start.
69
64
 
70
65
  In your main channel, tell the bot:
71
66
 
72
- <!-- AUTO:bot-commands -->
73
67
  | Say this | What happens |
74
68
  |----------|-------------|
75
69
  | `new channel my-project` | Create a new project channel (e.g. `new channel my-project`) |
76
70
  | `list channels` | Show all active channels |
77
71
  | `remove channel my-project` | Deactivate a channel |
78
72
  | `help` | Shows available commands |
79
- <!-- /AUTO:bot-commands -->
80
73
 
81
74
  ### Chat in a project channel
82
75
 
@@ -95,14 +88,12 @@ Route to a specific agent:
95
88
 
96
89
  Set in `~/.openclaw/.env` by the setup wizard.
97
90
 
98
- <!-- AUTO:env-vars -->
99
91
  | Variable | Required | Description |
100
92
  |----------|----------|-------------|
101
93
  | `SLACK_BOT_TOKEN` | Yes | Slack bot OAuth token (xoxb-...) |
102
94
  | `SLACK_APP_TOKEN` | Yes | Slack app-level token for Socket Mode (xapp-...) |
103
95
  | `OPENCLAW_GATEWAY_URL` | No | openclaw gateway WebSocket URL |
104
96
  | `OPENCLAW_GATEWAY_TOKEN` | No | Gateway auth token (if your gateway requires one) |
105
- <!-- /AUTO:env-vars -->
106
97
 
107
98
  ## Configuration file
108
99
 
@@ -129,7 +120,6 @@ Set in `~/.openclaw/.env` by the setup wizard.
129
120
  }
130
121
  ```
131
122
 
132
- <!-- AUTO:config-fields -->
133
123
  | Field | Description |
134
124
  |-------|-------------|
135
125
  | `botName` | Display name used in logs and error messages |
@@ -138,7 +128,6 @@ Set in `~/.openclaw/.env` by the setup wizard.
138
128
  | `defaultAgent` | Which agent handles unrouted messages |
139
129
  | `agents` | Registered agent names and descriptions |
140
130
  | `channels` | Active project channels; `historyLimit` controls how many messages are fetched for context |
141
- <!-- /AUTO:config-fields -->
142
131
 
143
132
  ## Adding a custom subagent
144
133
 
package/dist/plugin.js CHANGED
@@ -58,7 +58,11 @@ const plugin = {
58
58
  },
59
59
  register(api) {
60
60
  const pluginCfg = (api.pluginConfig ?? {});
61
- if (!pluginCfg.botToken && !pluginCfg.appToken) {
61
+ const hasTokens = pluginCfg.botToken ||
62
+ pluginCfg.appToken ||
63
+ process.env.SLACK_BOT_TOKEN ||
64
+ process.env.SLACK_APP_TOKEN;
65
+ if (!hasTokens) {
62
66
  console.warn("\n⚠️ openclaw-slack-router: Slack tokens not configured.\n" +
63
67
  " Run `openclaw slack setup` before starting the gateway.\n");
64
68
  }
@@ -77,6 +81,15 @@ const plugin = {
77
81
  stop: stopSlackBot,
78
82
  });
79
83
  api.registerCli((ctx) => {
84
+ // When `openclaw pairing list` is called without a channel, default to 'slack'
85
+ ctx.program.hook("preAction", (_thisCmd, actionCmd) => {
86
+ if (actionCmd.name() === "list" &&
87
+ actionCmd.parent?.name() === "pairing" &&
88
+ !actionCmd.opts().channel &&
89
+ !actionCmd.processedArgs?.[0]) {
90
+ actionCmd.processedArgs[0] = "slack";
91
+ }
92
+ });
80
93
  const cmd = ctx.program
81
94
  .command("slack")
82
95
  .description("Slack router plugin commands");
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AA6B1F,MAAM,MAAM,GAAG;IACb,EAAE,EAAE,oCAAoC;IACxC,IAAI,EAAE,cAAc;IACpB,WAAW,EACT,qIAAqI;IACvI,YAAY,EAAE;QACZ,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,oBAAoB,EAAE,KAAK;YAC3B,UAAU,EAAE;gBACV,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,kCAAkC;iBAChD;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,kDAAkD;iBAChE;gBACD,aAAa,EAAE;oBACb,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,4EAA4E;iBAC/E;gBACD,UAAU,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,gCAAgC;oBAC7C,OAAO,EAAE,sBAAsB;iBAChC;gBACD,YAAY,EAAE;oBACZ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,mDAAmD;iBACjE;aACF;YACD,QAAQ,EAAE,EAAE;SACb;QACD,OAAO,EAAE;YACP,QAAQ,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE;YAC1E,QAAQ,EAAE;gBACR,KAAK,EAAE,yBAAyB;gBAChC,SAAS,EAAE,IAAI;gBACf,WAAW,EAAE,UAAU;aACxB;YACD,aAAa,EAAE;gBACb,KAAK,EAAE,iBAAiB;gBACxB,IAAI,EAAE,yFAAyF;gBAC/F,WAAW,EAAE,MAAM;aACpB;YACD,UAAU,EAAE;gBACV,KAAK,EAAE,aAAa;gBACpB,WAAW,EAAE,sBAAsB;aACpC;YACD,YAAY,EAAE;gBACZ,KAAK,EAAE,eAAe;gBACtB,SAAS,EAAE,IAAI;aAChB;SACF;KACF;IAED,QAAQ,CAAC,GAAc;QACrB,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAiB,CAAC;QAE3D,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;YAC/C,OAAO,CAAC,IAAI,CACV,6DAA6D;gBAC7D,8DAA8D,CAC/D,CAAC;QACJ,CAAC;QAED,GAAG,CAAC,eAAe,CAAC;YAClB,EAAE,EAAE,uBAAuB;YAE3B,KAAK,CAAC,KAAK,CAAC,GAAG;gBACb,MAAM,aAAa,CAAC;oBAClB,QAAQ,EAAE,SAAS,CAAC,QAAQ;oBAC5B,QAAQ,EAAE,SAAS,CAAC,QAAQ;oBAC5B,UAAU,EAAE,SAAS,CAAC,UAAU;oBAChC,YAAY,EAAE,SAAS,CAAC,YAAY;oBACpC,UAAU,EAAE,mBAAmB;oBAC/B,MAAM,EAAE,GAAG,CAAC,MAAM;iBACnB,CAAC,CAAC;YACL,CAAC;YAED,IAAI,EAAE,YAAY;SACnB,CAAC,CAAC;QAEH,GAAG,CAAC,WAAW,CACb,CAAC,GAAG,EAAE,EAAE;YACN,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO;iBACpB,OAAO,CAAC,OAAO,CAAC;iBAChB,WAAW,CAAC,8BAA8B,CAAC,CAAC;YAE/C,GAAG;iBACA,OAAO,CAAC,OAAO,CAAC;iBAChB,WAAW,CAAC,8DAA8D,CAAC;iBAC3E,MAAM,CAAC,OAAO,CAAC,CAAC;YAEnB,GAAG;iBACA,OAAO,CAAC,aAAa,CAAC;iBACtB,WAAW,CAAC,4FAA4F,CAAC;iBACzG,MAAM,CAAC,GAAG,EAAE;gBACX,MAAM,MAAM,GAAG,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;gBACvD,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC;gBAC3B,kBAAkB,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;gBAChD,OAAO,CAAC,GAAG,CAAC,0EAA0E,CAAC,CAAC;YAC1F,CAAC,CAAC,CAAC;QACP,CAAC,EACD,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CACxB,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@datanovallc/openclaw-slack-router",
3
- "version": "0.1.21",
3
+ "version": "0.1.23",
4
4
  "description": "Slack router plugin for openclaw — connect your agent to Slack with per-channel context isolation",
5
5
  "keywords": [
6
6
  "openclaw",