clisbot 0.1.17 → 0.1.20

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
@@ -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. It is not just a tmux bridge with chat glued on top. `clisbot` adds channel-aware routing, durable conversation state, pairing and access control, follow-up behavior, and support for sending and receiving files through Slack and Telegram.
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 a cheaper, simpler path to frontier agent workflows for teams and individuals because it reuses the CLI subscriptions you already have instead of forcing a separate API-heavy stack. If you already trust Claude Code, Codex, or Gemini CLI for real work, `clisbot` lets you keep those tools as the core runtime and add chat surfaces, follow-up control, team workflows, and on-the-go access around them.
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
- - Strong chat-first support in Slack and Telegram, with durable tmux-backed sessions behind the bot, so you can work from your laptop or on the go without giving up a real coding workspace.
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 shell shortcuts such as `!<command>` and `/bash <command>` when you need terminal-like control from chat.
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
- - `clisbot` defaults DMs to pairing mode
94
- - the bot replies with a pairing code and approval command
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 and approve pairing.
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 privilege commands are enabled on the route.
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 sensitive commands are enabled.
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 commands are disabled by default:
306
+ Sensitive actions now follow auth and route policy:
278
307
 
279
- - enable them per route with `clisbot channels privilege enable ...`
280
- - optionally restrict them to specific users with `clisbot channels privilege allow-user ...`
281
- - DM examples: `clisbot channels privilege enable slack-dm` or `clisbot channels privilege enable telegram-dm`
282
- - use `clisbot channels --help` for the route and privilege command guide
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",