clisbot 0.1.17 → 0.1.19
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 +49 -20
- package/config/clisbot.json.template +8 -0
- package/dist/main.js +997 -108
- package/package.json +1 -1
- package/templates/slack/default/app-manifest.json +2 -3
package/README.md
CHANGED
|
@@ -7,34 +7,47 @@ Want to use OpenClaw but are struggling because:
|
|
|
7
7
|
|
|
8
8
|
`clisbot` is the right solution for you.
|
|
9
9
|
|
|
10
|
-
`clisbot` turns native frontier agent CLIs like Claude Code, Codex, and Gemini CLI into durable Slack and Telegram bots. Each agent runs inside its own tmux session, keeps a real workspace, and can behave like a coding bot, a daily-work assistant, or a team assistant with SOUL, IDENTITY, and MEMORY.
|
|
10
|
+
`clisbot` turns native frontier agent CLIs like Claude Code, Codex, and Gemini CLI into durable Slack and Telegram bots. Each agent runs inside its own tmux session, keeps a real workspace, and can behave like a coding bot, a daily-work assistant, or a team assistant with SOUL, IDENTITY, and MEMORY.
|
|
11
11
|
|
|
12
|
-
It is
|
|
12
|
+
It is not just a tmux bridge with chat glued on top. `clisbot` treats Slack and Telegram as real channel surfaces with routing, durable conversation state, pairing, follow-up control, file sending and receiving, and the ability to keep frontier coding agents inside the tools and communication surfaces where teams already work.
|
|
13
13
|
|
|
14
14
|
`clisbot` is also meant to grow into a reusable agent runtime layer that can support many CLI tools, many channels, and many workflow shapes on top of the same durable agent session.
|
|
15
15
|
|
|
16
|
+
## Why I Built This
|
|
17
|
+
|
|
18
|
+
I’m Long Luong (Long), Co-founder & CTO of Vexere, Vietnam’s #1 transportation booking platform, where we also build SaaS and inventory distribution infrastructure for transportation operators. As we scale a 300-person company with a 100-member Engineering, Product, and Design team, I’ve been searching for the most practical way to roll out AI-native workflows across the organization.
|
|
19
|
+
|
|
20
|
+
The challenge is not whether AI is useful. It is how to make it work at enterprise scale without creating a fragmented, expensive, or ungovernable stack. In practice, that means solving several hard problems at once: cost control, workflow truthfulness, team accessibility, governance, and the ability to bring frontier AI into the real tools and communication surfaces where work already happens.
|
|
21
|
+
|
|
22
|
+
`clisbot` is the approach I landed on. Instead of building yet another isolated AI layer, it turns the coding CLIs we already trust into durable, chat-native agents that can work across Slack, Telegram, and real team workflows.
|
|
23
|
+
|
|
16
24
|
## Why clisbot
|
|
17
25
|
|
|
18
26
|
- One frontier-agent stack for both daily work and real coding. You do not need one product for assistant work and another for actual engineering work.
|
|
19
|
-
- Learns from and integrates the two biggest strengths that made OpenClaw popular: memory and native channel integration with deep, channel-specific conversation and presentation capabilities.
|
|
20
27
|
- Reuses native CLI subscriptions you already pay for, such as Claude Code, Codex, and Gemini CLI, instead of pushing you toward a separate API-cost-heavy stack.
|
|
21
|
-
-
|
|
22
|
-
- Not just a tmux bridge. Slack and Telegram are treated as real channel surfaces with routing, thread or topic continuity, pairing, follow-up control, and attachment-aware interaction instead of plain text passthrough.
|
|
23
|
-
- Files and images can move through the chat surfaces too, not just text prompts: inbound Slack or Telegram attachments can land in the workspace, and outbound channel delivery is designed around real message and media actions rather than terminal-only output.
|
|
28
|
+
- Learns from and integrates the two biggest strengths that made OpenClaw popular: memory and native channel integration with deep, channel-specific conversation and presentation capabilities.
|
|
29
|
+
- Not just a tmux bridge. Slack and Telegram are treated as real channel surfaces with routing, thread or topic continuity, pairing, follow-up control, and attachment-aware interaction instead of plain text passthrough so you can work from your laptop or on the go without giving up a real coding workspace.
|
|
24
30
|
- Team-first by design, with `AGENTS`, `USER`, and `MEMORY` context bootstrapping shaped for shared team reality instead of only personal solo-assistant flows.
|
|
25
|
-
- Useful for coding, operations, teamwork, and general assistant work, with fast
|
|
31
|
+
- Useful for coding, operations, teamwork, and general assistant work, with fast chat controls such as `!<command>` and `/bash <command>` for terminal-like control, `/loop` to bring loop-style automation beyond Claude, `/queue` to add follow-up prompts in the same session without interrupting the current run, and `/streaming on` to view real-time processing progress for coding tasks.
|
|
26
32
|
|
|
27
33
|
## What to expect
|
|
28
34
|
|
|
29
|
-
- You can get the first Telegram bot running in one command.
|
|
35
|
+
- You can get the first Telegram bot or Slack bot running in one command.
|
|
30
36
|
- The first-run path creates one default agent and only enables the channels you explicitly name.
|
|
31
37
|
- DMs start with pairing so access stays explicit.
|
|
32
38
|
- `--persist` lets later restarts use plain `clisbot start`.
|
|
39
|
+
- Streaming is disabled by default. If you want real-time coding progress in chat, turn it on from the chat surface with `/streaming on`, and turn it off any time with `/streaming off`.
|
|
33
40
|
- Slack and Telegram are not treated as plain-text sinks: routed conversations can carry thread or topic identity, pairing, and file-aware workflows.
|
|
34
41
|
- Advanced multi-agent setup is available later, but it is not required for day one.
|
|
35
42
|
|
|
36
43
|
## Quick Start
|
|
37
44
|
|
|
45
|
+
Platform support:
|
|
46
|
+
|
|
47
|
+
- Linux and macOS are the supported host environments today.
|
|
48
|
+
- Native Windows is not supported yet because `clisbot` currently depends on `tmux` and Bash-based runtime flows.
|
|
49
|
+
- If you use Windows, run `clisbot` inside WSL2.
|
|
50
|
+
|
|
38
51
|
Most people should start here:
|
|
39
52
|
|
|
40
53
|
```bash
|
|
@@ -48,6 +61,14 @@ clisbot start \
|
|
|
48
61
|
|
|
49
62
|
If you want to try first without persisting the token yet, just remove `--persist`.
|
|
50
63
|
|
|
64
|
+
Current auth note:
|
|
65
|
+
|
|
66
|
+
- DMs currently start in pairing mode by default.
|
|
67
|
+
- The config shape already includes `ownerClaimWindowMinutes`, but automatic first-owner claim from the first DM is not implemented in the runtime yet.
|
|
68
|
+
- Today, if you want an owner or app admin, grant that principal explicitly with `clisbot auth add-user app --role owner --user <principal>` or `clisbot auth add-user app --role admin --user <principal>`.
|
|
69
|
+
- `clisbot auth --help` now covers role scopes, permission sets, and add/remove flows for users and permissions.
|
|
70
|
+
- App-level auth and owner-claim semantics in [Authorization And Roles](docs/user-guide/auth-and-roles.md) describe both the current runtime reality and the remaining target-model gaps.
|
|
71
|
+
|
|
51
72
|
Need the step-by-step setup docs instead of the shortest path?
|
|
52
73
|
|
|
53
74
|
- Telegram: [Telegram Bot Setup](docs/user-guide/telegram-setup.md)
|
|
@@ -90,8 +111,8 @@ bun run start --cli codex --bot-type personal --telegram-bot-token <your-telegra
|
|
|
90
111
|
First conversation path:
|
|
91
112
|
|
|
92
113
|
- send a DM to the bot in Slack or Telegram
|
|
93
|
-
- `
|
|
94
|
-
-
|
|
114
|
+
- if that principal is already app `owner` or app `admin`, pairing is bypassed and the bot should answer normally
|
|
115
|
+
- otherwise, `clisbot` defaults DMs to pairing mode and replies with a pairing code plus approval command
|
|
95
116
|
|
|
96
117
|
Approve it with:
|
|
97
118
|
|
|
@@ -135,7 +156,7 @@ The easiest setup flow is still:
|
|
|
135
156
|
|
|
136
157
|
1. Install `clisbot`.
|
|
137
158
|
2. Run the quick start command above.
|
|
138
|
-
3. DM the bot
|
|
159
|
+
3. DM the bot; approve pairing unless that principal is already app `owner` or app `admin`.
|
|
139
160
|
4. Only move into advanced config after the first successful run.
|
|
140
161
|
|
|
141
162
|
If you want the repo-guided setup path:
|
|
@@ -219,14 +240,16 @@ Most users only need a small set of commands at first:
|
|
|
219
240
|
- `clisbot stop`
|
|
220
241
|
- `clisbot status`
|
|
221
242
|
- `clisbot logs`
|
|
243
|
+
- `clisbot auth show app`
|
|
244
|
+
- `clisbot auth show agent-defaults`
|
|
245
|
+
- `clisbot auth add-user app --role owner --user <principal>`
|
|
246
|
+
- `clisbot auth add-user agent --agent <id> --role admin --user <principal>`
|
|
222
247
|
- `clisbot pairing approve slack <CODE>`
|
|
223
248
|
- `clisbot pairing approve telegram <CODE>`
|
|
224
249
|
- `clisbot channels enable slack`
|
|
225
250
|
- `clisbot channels enable telegram`
|
|
226
251
|
- `clisbot channels add telegram-group <chatId> [--topic <topicId>] [--agent <id>] [--require-mention true|false]`
|
|
227
252
|
- `clisbot channels add slack-channel <channelId> [--agent <id>] [--require-mention true|false]`
|
|
228
|
-
- `clisbot channels privilege enable <target>`
|
|
229
|
-
- `clisbot channels privilege allow-user <target> <userId>`
|
|
230
253
|
- `clisbot agents list --bindings`
|
|
231
254
|
- `clisbot agents bindings`
|
|
232
255
|
- `clisbot --help`
|
|
@@ -245,6 +268,12 @@ If you are running from the repo instead of the global package:
|
|
|
245
268
|
|
|
246
269
|
`clisbot` supports a small set of chat-native commands for thread control, transcript access, and quick shell execution.
|
|
247
270
|
|
|
271
|
+
Native coding-CLI command compatibility:
|
|
272
|
+
|
|
273
|
+
- `clisbot` only intercepts its own reserved chat commands
|
|
274
|
+
- any other native Claude, Codex, or Gemini command text is forwarded to the underlying CLI unchanged
|
|
275
|
+
- operator guide: [Native CLI Commands](docs/user-guide/native-cli-commands.md)
|
|
276
|
+
|
|
248
277
|
Slack note:
|
|
249
278
|
|
|
250
279
|
- To stop Slack from interpreting a slash command as a native Slack slash command, prefix it with a space.
|
|
@@ -263,9 +292,9 @@ Common commands:
|
|
|
263
292
|
- `/followup mention-only`: require an explicit mention for later turns in the thread.
|
|
264
293
|
- `/followup pause`: pause passive follow-up so the bot does not keep interrupting the thread unless explicitly mentioned again.
|
|
265
294
|
- `/followup resume`: restore the default follow-up behavior for that conversation.
|
|
266
|
-
- `/transcript`: return the current conversation transcript when
|
|
295
|
+
- `/transcript`: return the current conversation transcript when the route `verbose` policy allows it.
|
|
267
296
|
- `::transcript` or `\transcript`: transcript shortcuts from the default slash-style prefixes.
|
|
268
|
-
- `/bash <command>`: run a shell command in the current agent workspace when
|
|
297
|
+
- `/bash <command>`: run a shell command in the current agent workspace when the resolved agent role allows `shellExecute`.
|
|
269
298
|
- `!<command>`: shorthand for `/bash <command>`.
|
|
270
299
|
|
|
271
300
|
Command prefix defaults:
|
|
@@ -274,12 +303,12 @@ Command prefix defaults:
|
|
|
274
303
|
- bash shortcuts: `["!"]`
|
|
275
304
|
- both are configurable with `channels.slack.commandPrefixes` and `channels.telegram.commandPrefixes`
|
|
276
305
|
|
|
277
|
-
Sensitive
|
|
306
|
+
Sensitive actions now follow auth and route policy:
|
|
278
307
|
|
|
279
|
-
-
|
|
280
|
-
-
|
|
281
|
-
-
|
|
282
|
-
- use `clisbot channels --help` for
|
|
308
|
+
- `/transcript` depends on the route `verbose` policy
|
|
309
|
+
- `/bash` depends on resolved agent auth through `shellExecute`
|
|
310
|
+
- use `clisbot auth --help` to inspect scopes and mutate role users or permissions
|
|
311
|
+
- use `clisbot channels --help` for route-level setup and channel policy guidance
|
|
283
312
|
|
|
284
313
|
Follow-up behavior matters in team threads:
|
|
285
314
|
|
|
@@ -198,6 +198,10 @@
|
|
|
198
198
|
"response": "final",
|
|
199
199
|
"responseMode": "message-tool",
|
|
200
200
|
"additionalMessageMode": "steer",
|
|
201
|
+
"surfaceNotifications": {
|
|
202
|
+
"queueStart": "brief",
|
|
203
|
+
"loopStart": "brief"
|
|
204
|
+
},
|
|
201
205
|
"verbose": "minimal",
|
|
202
206
|
"followUp": {
|
|
203
207
|
"mode": "auto",
|
|
@@ -244,6 +248,10 @@
|
|
|
244
248
|
"response": "final",
|
|
245
249
|
"responseMode": "message-tool",
|
|
246
250
|
"additionalMessageMode": "steer",
|
|
251
|
+
"surfaceNotifications": {
|
|
252
|
+
"queueStart": "brief",
|
|
253
|
+
"loopStart": "brief"
|
|
254
|
+
},
|
|
247
255
|
"verbose": "minimal",
|
|
248
256
|
"followUp": {
|
|
249
257
|
"mode": "auto",
|