clisbot 0.1.7

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Long Luong
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,363 @@
1
+ # clisbot - tmux-based Agentic Coding CLI & chat bot
2
+ The cheapest path to high-end agentic AI for teams.
3
+
4
+ `clisbot` exposes native agentic AI tool CLIs like Claude Code / Codex through chat surfaces, with each agent running inside its own durable tmux session and ready to behave like a real bot, a real assistant - with SOUL & IDENTITY, not just a coding tool.
5
+
6
+ Agentic AI is powerful, but only with frontier models. OpenClaw took off because people found many ways to access strong frontier models cheaply through subscription-based OAuth. Recent Anthropic enforcement around third-party and proxy-style usage made that risk harder to ignore.
7
+
8
+ Meanwhile, the strongest agentic coding tools already come from serious enterprise teams with real investment in model quality, security, safety, and operator controls, especially Claude Code, Codex, and Gemini CLI. That naturally leads to a simple question: why not reuse those agents as they already are, keep them alive in tmux, and add communication channels, team workflows, and more toys around them?
9
+
10
+ The idea has been stuck in my head since Claude Code introduced agent skills back in October 2025, which opened more possibilities for non-developer workers, and the OpenClaw trend recently only made it harder to ignore. Having played around with Anthropic's Agent SDK to address the agentic AI adoption inside my company but somehow it was not working, not stable, not flexible, not fast enough, and the CLI path now looks like the better choice until now. Now feels like the right time to push that idea.
11
+
12
+ Every company will likely need an OpenClaw-style strategy over time: a personal agentic assistant for each employee, plus shared agents for each team. `clisbot` starts from a team-first angle, with Slack and shared agent workflows as the default center of gravity instead of treating team collaboration as a later add-on.
13
+
14
+ ## Why clisbot
15
+
16
+ - Runs native agentic AI coding CLIs in durable tmux sessions
17
+ - Optimized for cheap subscription-backed usage with tools like Codex CLI and Claude CLI... A practical response to the reality that high-quality frontier models are expensive and vendor policies can tighten around third-party usage.
18
+ - Compatible with OpenClaw-style configuration, commands and some concepts, agent personality for bot usecases, and workspace bootstrap templates, help Openclaw users to quickly get started.
19
+ - Team-first by design, with agent bootstrap templates that fit shared team agents as well as personal ones.
20
+ - Reuses mature agentic tools such as Claude Code, Codex, and Gemini CLI
21
+ - Fits the emerging pattern of one personal assistant per employee and shared assistants per team.
22
+ - Useful as a bot for coding, operations, teamwork, and general work in team environment, or on the go
23
+ - Strong team support in Slack, with Telegram already supported as another first-class channel.
24
+ - Configurable follow-up policy instead of a fixed TTL model, with a 5-minute default window and route-level controls so teams can tune behavior to how they actually work. Smart follow-up controls help avoid unwanted bot interruption in active threads: keep natural continuation when useful, or pause it when you want the bot to stay quiet until explicitly called again.
25
+ - Fast operator shortcuts for shell execution: `!<command>` or `/bash <command>`. Turns Slack / Telegram to terminal interface on the go.
26
+ - The proof of concept already shows high potential beyond internal coding workflows, including customer chatbot use cases once messaging MCP or CLI-based skills let the agent send messages proactively in a cleaner way.
27
+
28
+ ## Current Focus
29
+
30
+ `clisbot` is a communication bridge for long-lived AI agents, organized around the repository architecture contract:
31
+
32
+ - `channels`: Slack, Telegram, and future API-compatible surfaces
33
+ - `agent-os`: agents, sessions, workspaces, commands, attachments, and follow-up policy
34
+ - `runners`: tmux today, with ACP, SDK, and other execution backends later
35
+ - `control`: operator-facing inspection, lifecycle, and debugging flows
36
+ - `configuration`: the local control plane that wires the system together
37
+
38
+ tmux is the current stability boundary. One agent maps to one durable runner session in one workspace, and chat surfaces route conversations onto that runtime instead of trying to recreate it.
39
+
40
+ ## Quick Start
41
+
42
+ Choose one setup path.
43
+
44
+ Packaged CLI path:
45
+
46
+ Requires Node 20+ in the shell where you run `clisbot`.
47
+
48
+ Primary command: `clisbot`
49
+ Short alias: `clis`
50
+
51
+ 1. Install globally:
52
+
53
+ ```bash
54
+ npm install -g clisbot
55
+ ```
56
+
57
+ 2. Add the required environment variables to your shell startup file, then reload it.
58
+
59
+ ```bash
60
+ # ~/.zshrc or ~/.bashrc
61
+ export SLACK_APP_TOKEN=...
62
+ export SLACK_BOT_TOKEN=...
63
+ export TELEGRAM_BOT_TOKEN=...
64
+ ```
65
+
66
+ ```bash
67
+ source ~/.zshrc
68
+ # or: source ~/.bashrc
69
+ ```
70
+
71
+ 3. Start the service directly.
72
+
73
+ ```bash
74
+ clisbot start --cli codex --bootstrap personal-assistant
75
+ clis start --cli codex --bootstrap personal-assistant
76
+ ```
77
+
78
+ If you do not want to install globally, you can also run it directly with `npx`:
79
+
80
+ ```bash
81
+ npx clisbot start --cli codex --bootstrap personal-assistant
82
+ ```
83
+
84
+ Local repo path:
85
+
86
+ Requires Bun for development commands in this repo.
87
+
88
+ 1. Install dependencies.
89
+
90
+ ```bash
91
+ bun install
92
+ ```
93
+
94
+ 2. Add the required environment variables to your shell startup file, then reload it.
95
+
96
+ ```bash
97
+ # ~/.zshrc or ~/.bashrc
98
+ export SLACK_APP_TOKEN=...
99
+ export SLACK_BOT_TOKEN=...
100
+ export TELEGRAM_BOT_TOKEN=...
101
+ ```
102
+
103
+ ```bash
104
+ source ~/.zshrc
105
+ # or: source ~/.bashrc
106
+ ```
107
+
108
+ 3. Start the service directly.
109
+
110
+ ```bash
111
+ bun run start --cli codex --bootstrap personal-assistant
112
+ ```
113
+
114
+ Fresh config now starts with no configured agents, and first-run `clisbot start` requires both `--cli` and `--bootstrap` before it creates the first `default` agent.
115
+ Fresh config also starts with no preconfigured Slack channels or Telegram groups/topics. Add those routes manually in `~/.clisbot/clisbot.json`.
116
+ `clisbot start` now also requires Slack or Telegram token references before it bootstraps anything. By default it looks for `SLACK_APP_TOKEN`, `SLACK_BOT_TOKEN`, and `TELEGRAM_BOT_TOKEN`, but you can pass custom placeholders such as `--slack-app-token '${CUSTOM_SLACK_APP_TOKEN}'`.
117
+ On startup, `clisbot` now prints which token env names it is checking and whether each one is set or missing.
118
+
119
+ ## Setup Guide
120
+
121
+ The easiest setup flow is:
122
+
123
+ 1. Clone this repo.
124
+ 2. Open Claude Code or Codex in this repo.
125
+ 3. Ask it to help you set up `clisbot`.
126
+
127
+ The docs in this repo are kept current, including the [User Guide](docs/user-guide/README.md), so the agent should have enough context to walk you through setup, configuration, and troubleshooting directly inside the repo.
128
+
129
+ If you prefer to configure things yourself:
130
+
131
+ 1. Read the full config template in [config/clisbot.json.template](config/clisbot.json.template).
132
+ 2. Copy it to `~/.clisbot/clisbot.json` and adjust channels, bindings, workspaces, and policies for your environment.
133
+ 3. Add agents through the CLI so tool defaults, startup options, and bootstrap templates stay consistent.
134
+ 4. Set the required environment variables in your shell startup file so `clisbot` can read them consistently.
135
+
136
+ Channel route setup is manual by design:
137
+
138
+ - fresh config does not auto-add Slack channels
139
+ - fresh config does not auto-add Telegram groups or topics
140
+ - add only the exact channel, group, topic, or DM routing you want to expose
141
+ - default channel account setup lives in [docs/user-guide/channel-accounts.md](docs/user-guide/channel-accounts.md)
142
+
143
+ Example agent setup:
144
+
145
+ ```bash
146
+ clisbot start --cli codex --bootstrap personal-assistant
147
+ ```
148
+
149
+ ```bash
150
+ clisbot agents add claude --cli claude --bootstrap team-assistant --bind telegram
151
+ clisbot agents bootstrap claude --mode team-assistant --force
152
+ clisbot agents list --bindings
153
+ ```
154
+
155
+ Agent setup rules:
156
+
157
+ - `agents add` requires `--cli` and currently supports `codex` and `claude`.
158
+ - `--startup-option` is optional; if omitted, clisbot uses the built-in startup options for the selected CLI.
159
+ - `--bootstrap` accepts `personal-assistant` or `team-assistant` and seeds the workspace from `templates/openclaw` plus the selected customized template.
160
+ - `personal-assistant` fits one assistant for one human.
161
+ - `team-assistant` fits one shared assistant for a team, channel, or group workflow.
162
+ - `agents bootstrap <agentId> --mode <personal-assistant|team-assistant>` bootstraps an existing agent workspace using the agent's configured CLI tool.
163
+ - bootstrap runs a dry check first; if any template markdown file already exists in the workspace, it stops and asks you to rerun with `--force`.
164
+ - Fresh channel config still points at the `default` agent. If your first agent is not named `default`, update `defaultAgentId` and any route `agentId` values in config.
165
+
166
+ Custom token placeholder setup:
167
+
168
+ ```bash
169
+ clisbot start \
170
+ --cli codex \
171
+ --bootstrap personal-assistant \
172
+ --slack-app-token CUSTOM_SLACK_APP_TOKEN \
173
+ --slack-bot-token CUSTOM_SLACK_BOT_TOKEN
174
+ ```
175
+
176
+ - these flags are written into `~/.clisbot/clisbot.json` exactly as provided
177
+ - you can pass either `CUSTOM_SLACK_APP_TOKEN` or `'${CUSTOM_SLACK_APP_TOKEN}'`
178
+ - `clisbot` does not expand or print the token values during config generation
179
+ - use them when your environment variable names differ from `SLACK_APP_TOKEN`, `SLACK_BOT_TOKEN`, or `TELEGRAM_BOT_TOKEN`
180
+ - the env var itself still needs a real value in your shell before `clisbot start` can launch
181
+
182
+ Examples:
183
+
184
+ ```bash
185
+ # ~/.bashrc
186
+ export SLACK_APP_TOKEN=...
187
+ export SLACK_BOT_TOKEN=...
188
+ export TELEGRAM_BOT_TOKEN=...
189
+ ```
190
+
191
+ ```bash
192
+ # ~/.zshrc
193
+ export SLACK_APP_TOKEN=...
194
+ export SLACK_BOT_TOKEN=...
195
+ export TELEGRAM_BOT_TOKEN=...
196
+ ```
197
+
198
+ ```bash
199
+ # custom names are also valid
200
+ export CUSTOM_SLACK_APP_TOKEN=...
201
+ export CUSTOM_SLACK_BOT_TOKEN=...
202
+ export CUSTOM_TELEGRAM_BOT_TOKEN=...
203
+ ```
204
+
205
+ Then reload your shell:
206
+
207
+ ```bash
208
+ source ~/.bashrc
209
+ ```
210
+
211
+ ```bash
212
+ source ~/.zshrc
213
+ ```
214
+
215
+ ## Troubleshooting
216
+
217
+ - If setup feels unclear, open Claude Code or Codex in this repo and ask it to help using the local docs.
218
+ - If you are still in doubt, clone `https://github.com/longbkit/clisbot`, open the repo in Codex or Claude Code, and ask questions about setup or the bootstrap mode choice.
219
+ - If config behavior is confusing, inspect [config/clisbot.json.template](config/clisbot.json.template) first, then compare it with [docs/user-guide/README.md](docs/user-guide/README.md).
220
+ - If `clisbot start` says no agents are configured, prefer `clisbot start --cli codex --bootstrap personal-assistant`.
221
+ - If `clisbot start` says no default tokens were found, set Slack or Telegram tokens first using [docs/user-guide/channel-accounts.md](docs/user-guide/channel-accounts.md).
222
+ - If `clisbot start` prints token refs as `missing`, set those exact env vars in `~/.bashrc` or `~/.zshrc`, reload the shell, then start again.
223
+ - If you use custom env names, pass them explicitly with `--slack-app-token`, `--slack-bot-token`, or `--telegram-bot-token`.
224
+ - If `clisbot status` shows `bootstrap=...:missing`, the workspace is missing the tool-specific bootstrap file or `IDENTITY.md`; run `clisbot agents bootstrap <agentId> --mode <mode>`.
225
+ - If `clisbot status` shows `bootstrap=...:not-bootstrapped`, finish the workspace bootstrap by reviewing `BOOTSTRAP.md`, `SOUL.md`, `IDENTITY.md`, and the mode-specific files in that workspace.
226
+ - If Codex shows `Do you trust the contents of this directory?`, keep `trustWorkspace: true` in clisbot config and also mark the workspace as trusted in `~/.codex/config.toml`, for example:
227
+
228
+ ```toml
229
+ [projects."/home/node/.clisbot/workspaces/default"]
230
+ trust_level = "trusted"
231
+ ```
232
+
233
+ - If that trust screen is still blocking, attach directly and continue from tmux with `tmux -S ~/.clisbot/state/clisbot.sock attach -t agent-default-main`.
234
+ - If Codex warns that `bubblewrap` is missing on Linux, install `bubblewrap` in the runtime environment.
235
+ - If the bot does not answer, check that your shell environment really contains the expected tokens and restart `clisbot` after changing them.
236
+ - If runtime startup still fails, run `clisbot logs` and inspect the recent log tail that `clisbot` now prints automatically on startup failure.
237
+ - If you need the full command list, run `clisbot --help`.
238
+ - If you need step-by-step operator docs, start with [docs/user-guide/README.md](docs/user-guide/README.md).
239
+ - If Slack thread behavior feels too eager, use `/followup pause` or `/followup mention-only`.
240
+ - If Slack slash commands conflict with Slack-native command handling, add a leading space, for example ` /bash ls -la`.
241
+
242
+ ## Commands
243
+
244
+ - `clisbot start`
245
+ - `clisbot restart`
246
+ - `clisbot stop`
247
+ - `clisbot stop --hard`
248
+ - `clisbot status`
249
+ - `clisbot logs`
250
+ - `clisbot channels enable slack`
251
+ - `clisbot channels enable telegram`
252
+ - `clisbot channels add telegram-group <chatId> [--topic <topicId>] [--agent <id>] [--require-mention true|false]`
253
+ - `clisbot channels remove telegram-group <chatId> [--topic <topicId>]`
254
+ - `clisbot channels add slack-channel <channelId> [--agent <id>] [--require-mention true|false]`
255
+ - `clisbot channels remove slack-channel <channelId>`
256
+ - `clisbot channels add slack-group <groupId> [--agent <id>] [--require-mention true|false]`
257
+ - `clisbot channels remove slack-group <groupId>`
258
+ - `clisbot channels set-token <slack-app|slack-bot|telegram-bot> <value>`
259
+ - `clisbot channels clear-token <slack-app|slack-bot|telegram-bot>`
260
+ - `clisbot channels privilege enable <target>`
261
+ - `clisbot channels privilege disable <target>`
262
+ - `clisbot channels privilege allow-user <target> <userId>`
263
+ - `clisbot channels privilege remove-user <target> <userId>`
264
+ - `clisbot agents list --bindings`
265
+ - `clisbot start --cli codex --bootstrap personal-assistant`
266
+ - `clisbot agents bootstrap default --mode personal-assistant`
267
+ - `clisbot agents bind --agent default --bind telegram`
268
+ - `clisbot agents bindings`
269
+ - `clisbot --help`
270
+ - `bun run dev`
271
+ - `bun run start`
272
+ - `bun run restart`
273
+ - `bun run stop`
274
+ - `bun run typecheck`
275
+ - `bun run test`
276
+ - `bun run check`
277
+
278
+ ## In Chat
279
+
280
+ `clisbot` supports a small set of chat-native commands for thread control, transcript access, and quick shell execution.
281
+
282
+ Slack note:
283
+
284
+ - To stop Slack from interpreting a slash command as a native Slack slash command, prefix it with a space.
285
+ - Example: ` /bash ls -la`
286
+ - Bash shorthand also works: `!ls -la`
287
+
288
+ Common commands:
289
+
290
+ - `/start`: show onboarding or route-status help for the current conversation.
291
+ - `/help`: show the available clisbot conversation commands.
292
+ - `/status`: show the current route status, follow-up policy, and operator setup hints.
293
+ - `/whoami`: show the current sender and route identity for the active conversation.
294
+ - `/stop`: interrupt the current running turn.
295
+ - `/followup status`: show the current thread follow-up mode.
296
+ - `/followup auto`: allow natural in-thread follow-up after the bot has replied.
297
+ - `/followup mention-only`: require an explicit mention for later turns in the thread.
298
+ - `/followup pause`: pause passive follow-up so the bot does not keep interrupting the thread unless explicitly mentioned again.
299
+ - `/followup resume`: restore the default follow-up behavior for that conversation.
300
+ - `/transcript`: return the current conversation transcript when privilege commands are enabled on the route.
301
+ - `::transcript` or `\transcript`: transcript shortcuts from the default slash-style prefixes.
302
+ - `/bash <command>`: run a shell command in the current agent workspace when sensitive commands are enabled.
303
+ - `!<command>`: shorthand for `/bash <command>`.
304
+
305
+ Command prefix defaults:
306
+
307
+ - slash-style shortcuts: `["::", "\\"]`
308
+ - bash shortcuts: `["!"]`
309
+ - both are configurable with `channels.slack.commandPrefixes` and `channels.telegram.commandPrefixes`
310
+
311
+ Sensitive commands are disabled by default:
312
+
313
+ - enable them per route with `clisbot channels privilege enable ...`
314
+ - optionally restrict them to specific users with `clisbot channels privilege allow-user ...`
315
+ - DM examples: `clisbot channels privilege enable slack-dm` or `clisbot channels privilege enable telegram-dm`
316
+ - use `clisbot channels --help` for the route and privilege command guide
317
+
318
+ Follow-up behavior matters in team threads:
319
+
320
+ - `auto` is convenient when a thread is actively collaborating with the bot.
321
+ - `pause` is useful when the bot has already participated but you do not want it to keep jumping into every follow-up message.
322
+ - `mention-only` is the stricter mode when you want every new bot turn to require an explicit call.
323
+
324
+ ## Docs
325
+
326
+ - [Overview](docs/overview/README.md)
327
+ - [Architecture](docs/architecture/README.md)
328
+ - [Feature Tables](docs/features/feature-tables.md)
329
+ - [Backlog](docs/tasks/backlog.md)
330
+ - [User Guide](docs/user-guide/README.md)
331
+
332
+ ## Roadmap
333
+
334
+ - Webhook and OpenAI-compatible completion API to integrate with more workflows.
335
+ - Heartbeat and cronjob support, with the note that Claude already has a useful cronjob path today through loop-style workflows.
336
+ - Autodrive / hardwork mode.
337
+ - Support more native CLIs such as Gemini, OpenCode, and others.
338
+ - Experiment with json output mode from codex / claude code, Agent Client Protocol and native Codex SDK integration.
339
+ - Experiment with native messaging tools so the bot can send Slack or Telegram messages through MCP or CLI-based skills instead of tmux pane capture, for more stable and natural public-facing behavior over time.
340
+ - Add more channels on demand.
341
+
342
+ ## Completed
343
+
344
+ - [x] Multiple Codex and Claude sessions with streaming on/off support.
345
+ - [x] Stale tmux session cleanup and session resume.
346
+ - [x] OpenClaw-compatible configuration system.
347
+ - [x] Slack channel support with streaming and attachments, smart follow mode
348
+ - [x] Telegram channel support with streaming and attachments
349
+
350
+ ## AI-Native Workflow
351
+
352
+ This repo also serves as a small example of an AI-native engineering workflow:
353
+
354
+ - simple `AGENTS.md` and `CLAUDE.md`-style operating rules, short but addresses some common drawbacks of AI models as of 2026
355
+ - lessons-learned docs to capture repeated feedback and pitfalls
356
+ - architecture docs used as a stable implementation contract
357
+ - end-to-end validation expectations to close the feedback loop for AI agents
358
+
359
+ ## Contributing
360
+
361
+ Merge requests are welcome.
362
+
363
+ MRs with real tests, screenshots, or recordings of the behavior under test will be merged faster.
package/bin/clis ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+
3
+ import "../dist/main.js";
package/bin/clisbot ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+
3
+ import "../dist/main.js";
@@ -0,0 +1,173 @@
1
+ {
2
+ "meta": {
3
+ "schemaVersion": 1,
4
+ "lastTouchedAt": "2026-04-07T00:00:00.000Z"
5
+ },
6
+ "tmux": {
7
+ "socketPath": "~/.clisbot/state/clisbot.sock"
8
+ },
9
+ "session": {
10
+ "mainKey": "main",
11
+ "dmScope": "main",
12
+ "identityLinks": {},
13
+ "storePath": "~/.clisbot/state/sessions.json"
14
+ },
15
+ "agents": {
16
+ "defaults": {
17
+ "workspace": "~/.clisbot/workspaces/{agentId}",
18
+ "runner": {
19
+ "command": "codex",
20
+ "args": [
21
+ "--dangerously-bypass-approvals-and-sandbox",
22
+ "--no-alt-screen",
23
+ "-C",
24
+ "{workspace}"
25
+ ],
26
+ "trustWorkspace": true,
27
+ "startupDelayMs": 3000,
28
+ "promptSubmitDelayMs": 150,
29
+ "sessionId": {
30
+ "create": {
31
+ "mode": "runner",
32
+ "args": []
33
+ },
34
+ "capture": {
35
+ "mode": "status-command",
36
+ "statusCommand": "/status",
37
+ "pattern": "\\b[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}\\b",
38
+ "timeoutMs": 5000,
39
+ "pollIntervalMs": 250
40
+ },
41
+ "resume": {
42
+ "mode": "command",
43
+ "args": [
44
+ "resume",
45
+ "{sessionId}",
46
+ "--dangerously-bypass-approvals-and-sandbox",
47
+ "--no-alt-screen",
48
+ "-C",
49
+ "{workspace}"
50
+ ]
51
+ }
52
+ }
53
+ },
54
+ "stream": {
55
+ "captureLines": 160,
56
+ "updateIntervalMs": 2000,
57
+ "idleTimeoutMs": 6000,
58
+ "noOutputTimeoutMs": 20000,
59
+ "maxRuntimeMin": 15,
60
+ "maxMessageChars": 3500
61
+ },
62
+ "session": {
63
+ "createIfMissing": true,
64
+ "staleAfterMinutes": 60,
65
+ "name": "{sessionKey}"
66
+ }
67
+ },
68
+ "list": []
69
+ },
70
+ "bindings": [],
71
+ "control": {
72
+ "configReload": {
73
+ "watch": true,
74
+ "watchDebounceMs": 250
75
+ }
76
+ },
77
+ "channels": {
78
+ "slack": {
79
+ "enabled": true,
80
+ "mode": "socket",
81
+ "appToken": "${SLACK_APP_TOKEN}",
82
+ "botToken": "${SLACK_BOT_TOKEN}",
83
+ "ackReaction": "",
84
+ "typingReaction": "",
85
+ "processingStatus": {
86
+ "enabled": true,
87
+ "status": "Working...",
88
+ "loadingMessages": []
89
+ },
90
+ "allowBots": false,
91
+ "replyToMode": "thread",
92
+ "channelPolicy": "allowlist",
93
+ "groupPolicy": "allowlist",
94
+ "defaultAgentId": "default",
95
+ "privilegeCommands": {
96
+ "enabled": false,
97
+ "allowUsers": []
98
+ },
99
+ "commandPrefixes": {
100
+ "slash": [
101
+ "::",
102
+ "\\"
103
+ ],
104
+ "bash": [
105
+ "!"
106
+ ]
107
+ },
108
+ "streaming": "all",
109
+ "response": "final",
110
+ "followUp": {
111
+ "mode": "auto",
112
+ "participationTtlMin": 5
113
+ },
114
+ "channels": {},
115
+ "groups": {},
116
+ "directMessages": {
117
+ "enabled": true,
118
+ "policy": "pairing",
119
+ "allowFrom": [],
120
+ "requireMention": false,
121
+ "agentId": "default",
122
+ "privilegeCommands": {
123
+ "enabled": false,
124
+ "allowUsers": []
125
+ }
126
+ }
127
+ },
128
+ "telegram": {
129
+ "enabled": true,
130
+ "mode": "polling",
131
+ "botToken": "${TELEGRAM_BOT_TOKEN}",
132
+ "allowBots": false,
133
+ "groupPolicy": "allowlist",
134
+ "defaultAgentId": "default",
135
+ "privilegeCommands": {
136
+ "enabled": false,
137
+ "allowUsers": []
138
+ },
139
+ "commandPrefixes": {
140
+ "slash": [
141
+ "::",
142
+ "\\"
143
+ ],
144
+ "bash": [
145
+ "!"
146
+ ]
147
+ },
148
+ "streaming": "all",
149
+ "response": "final",
150
+ "followUp": {
151
+ "mode": "auto",
152
+ "participationTtlMin": 5
153
+ },
154
+ "polling": {
155
+ "timeoutSeconds": 20,
156
+ "retryDelayMs": 1000
157
+ },
158
+ "groups": {},
159
+ "directMessages": {
160
+ "enabled": true,
161
+ "policy": "pairing",
162
+ "allowFrom": [],
163
+ "requireMention": false,
164
+ "allowBots": false,
165
+ "agentId": "default",
166
+ "privilegeCommands": {
167
+ "enabled": false,
168
+ "allowUsers": []
169
+ }
170
+ }
171
+ }
172
+ }
173
+ }