@baldaworks/balda-linux-arm64 0.3.1 → 0.4.0

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.
Files changed (3) hide show
  1. package/README.md +100 -21
  2. package/bin/balda +2 -2
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -15,7 +15,7 @@ summary, changed files, validation output, a commit, or a concrete next step.
15
15
 
16
16
  ## What Balda is good for
17
17
 
18
- - chat-native engineering help in Telegram, Zulip, or Slack
18
+ - chat-native engineering help in Telegram, Zulip, Slack Agent, or Mattermost DMs/channel threads
19
19
  - focused task threads instead of one shared bot conversation
20
20
  - long-running goal execution with progress updates and final results
21
21
  - `wedge` style operation: put the agent in the middle of your team workflow so
@@ -26,7 +26,7 @@ summary, changed files, validation output, a commit, or a concrete next step.
26
26
 
27
27
  You need:
28
28
 
29
- - one chat surface: Telegram, Zulip, or Slack
29
+ - one chat surface: Telegram, Zulip, Slack, or Mattermost
30
30
  - one supported provider CLI installed on the host or in Docker:
31
31
  `codex`, `opencode`, `copilot`, `gemini`, or `claude`
32
32
  - Node.js/npm, unless you run the Docker Compose path
@@ -43,15 +43,42 @@ Initialize in your project:
43
43
  balda init
44
44
  ```
45
45
 
46
- Start:
46
+ `balda init` also creates the Backoffice administrator with username `superuser` and prints its generated
47
+ password once. Save it securely, then start:
47
48
 
48
49
  ```bash
49
50
  balda start
50
51
  ```
51
52
 
52
53
  `balda init` creates `.config/balda/config.yaml`, initializes
53
- `.config/balda/state.db`, detects available provider CLIs, and prints the next
54
- step for your selected chat provider.
54
+ `.config/balda/state.db` by default, detects available provider CLIs, and prints
55
+ the next step for your selected chat provider.
56
+
57
+ SQLite is the default state database. To select PostgreSQL, configure
58
+ `balda.database.type: postgres`; launch remains `balda start`.
59
+ See [database configuration and operations](docs/reference/database.md).
60
+
61
+ `balda start` applies embedded schema migrations to the selected database,
62
+ checks canonical users and administrator bootstrap, then starts the bot,
63
+ Backoffice, and enabled integrations in one process. Before the first start,
64
+ the administrator is already bootstrapped on a fresh database. For an existing installation,
65
+ stop Balda, back up the database, and convert legacy owner/collaborator records
66
+ with an exclusive credentials-output file. See the
67
+ [Backoffice startup and security contract](docs/reference/backoffice.md).
68
+
69
+ ```bash
70
+ # Existing installation with legacy users, while Balda is stopped and after a database backup:
71
+ balda backoffice migrate-users --credentials-output /run/secrets/balda-migrated-users.txt
72
+ balda backoffice bootstrap-admin --reset
73
+ balda start
74
+ ```
75
+
76
+ The existing-install `--reset` step generates and prints a new password for the
77
+ migrated primary user. It is needed when that user
78
+ has a temporary credential; it revokes that user's browser refresh-token
79
+ families. Never pass passwords or generated migration credentials as command
80
+ arguments. Distribute the plaintext migration manifest out of band and
81
+ securely remove it after verified delivery.
55
82
 
56
83
  ## First run
57
84
 
@@ -71,6 +98,8 @@ From there you can:
71
98
 
72
99
  - ask for ordinary help in chat
73
100
  - start a goal loop with `/goalkeeper <objective>`
101
+ - run a session skill with `/skill <skill> [prompt...]` or
102
+ `/skill <plugin>:<skill> [prompt...]`
74
103
  - stop the current turn with `/cancel`
75
104
  - reset the current session with `/reset`
76
105
 
@@ -118,13 +147,21 @@ automation, and agent execution instead of separate bots and scripts.
118
147
 
119
148
  - Telegram
120
149
  - Zulip
121
- - Slack
150
+ - Slack Agent DMs and mentioned channel threads
151
+ - Mattermost DMs and mentioned channel threads
122
152
 
123
153
  Balda maps each conversation scope to its own session:
124
154
 
125
155
  - Telegram direct chat or personal/group topic
126
156
  - Zulip stream + topic
127
- - Slack thread
157
+ - Slack Agent DM or mentioned channel thread
158
+ - Mattermost DM, channel, or channel thread
159
+
160
+ In Slack channels, every turn requires an explicit `@Balda` mention. A mention
161
+ inside an existing thread can use its preceding accessible discussion and
162
+ persisted files as bounded context; ordinary channel messages never activate
163
+ Balda. With the optional `files:write` scope, generated photos and documents
164
+ are delivered back into the same root thread from bounded local files.
128
165
 
129
166
  ## Docker Compose
130
167
 
@@ -141,7 +178,8 @@ docker compose up -d balda
141
178
  ```
142
179
 
143
180
  Polling mode is the default, so Telegram does not require publishing a port.
144
- Webhook deployment details live in [docs/balda.md](docs/balda.md).
181
+ Webhook deployment details live in the
182
+ [configuration reference](docs/reference/configuration.md).
145
183
 
146
184
  ## Published container image
147
185
 
@@ -178,16 +216,43 @@ ENTRYPOINT ["balda"]
178
216
 
179
217
  ## Core commands
180
218
 
181
- - `/start owner=<owner_token>` — owner bootstrap in direct messages
182
- - `/start invite=<invite_token>` — collaborator onboarding
183
- - `/topic <name>` — open a focused session
184
- - `/goalkeeper <objective>` — run a longer goal loop
185
- - `/goalkeeper clear` — stop active goal work in the current session
186
- - `/cancel` — stop the current turn
187
- - `/reset` or `/restart` — clear the current session and start fresh
188
- - `/locator` — show the current session locator for scheduler/webhook routing
219
+ Balda provides onboarding, session control, GoalKeeper, locator, usage, skill,
220
+ user, and plugin commands. Telegram and Zulip use `/skill`, `/locator`, and
221
+ `/reset`; Slack exposes the conversation-scoped forms `/balda skill`,
222
+ `/balda locator`, and `/balda reset`.
223
+
224
+ Slack formats the response for scanning and copying:
225
+
226
+ ````text
227
+ 📍 *Balda Locator* • *Transport:* `slackagent` • *Locator:* `slackagent:c:T0BFTRBFA94:C0BU4LKUB6W`
189
228
 
190
- Full command behavior is documented in [docs/balda.md](docs/balda.md).
229
+ *Scheduler / webhook configuration*
230
+ ```
231
+ target: locator
232
+ key: slackagent:c:T0BFTRBFA94:C0BU4LKUB6W
233
+ ```
234
+ ````
235
+
236
+ See the [complete command reference](docs/commands.md) for syntax, transport
237
+ availability, access, valid contexts, effects, errors, and examples.
238
+
239
+ Owner plugin lifecycle commands include `install`, explicit origin adoption for
240
+ migrated installs, `upgrade`, `enable`, `disable`, `rollback`, `remove`,
241
+ explicit `purge`, and bounded `status`.
242
+ Every chat command is durably published and executed by `CommandActor`;
243
+ plugin-contributed commands are declarative, revision-pinned normal turns and
244
+ never native plugin handlers.
245
+ `/skill <skill> [prompt...]` selects one uniquely named skill from the current
246
+ session snapshot. Use `/skill <plugin>:<skill> [prompt...]` to select an exact
247
+ plugin source. The optional trailing prompt becomes the turn text; the skill
248
+ body stays lazy until the turn executes. Balda discovers standalone skills from
249
+ the runtime account's `$HOME/.agents/skills`, `$CODEX_HOME/skills` (defaulting
250
+ to `$HOME/.codex/skills`), `<state_dir>/skills`, and the current workspace's
251
+ `.agents/skills`; enabled plugins contribute their own skills. Run `/reset` to
252
+ adopt skills installed or changed after the session was created.
253
+ See [Plugins and session capabilities](docs/reference/plugins.md) for the
254
+ `dev.baldaworks.balda` extension schema and the session-bound command, skill,
255
+ and MCP lifecycle.
191
256
 
192
257
  ## Configuration
193
258
 
@@ -214,10 +279,18 @@ Common settings:
214
279
 
215
280
  - `balda.provider` — which configured provider runtime to use
216
281
  - `balda.telegram.token` — Telegram bot token
282
+
283
+ Explicit `model` and `reasoning_effort` values on an ACP provider are reapplied
284
+ to restored sessions after restart. Persisted values for settings omitted from
285
+ the provider configuration remain unchanged, so changing an explicit setting
286
+ does not require `/reset`. Custom ACP servers can set `model_config_id` and
287
+ `reasoning_effort_config_id` when their advertised option IDs differ.
217
288
  - `balda.telegram.formatting_mode` — Telegram output mode: `rich_markdown`
218
289
  (default), `rich_html`, or `none` for literal plain text
219
290
  - `balda.zulip.*` — Zulip outgoing webhook bot credentials and receiver config
220
- - `balda.slack.*` — Slack bot token, signing secret, and HTTP receiver config
291
+ - `balda.mattermost.*` — Mattermost bot credentials (`enabled`, `server_url`,
292
+ `token`, `bot_user_id`, `bot_username`) for websocket event ingress
293
+ - `balda.slack.*` — Slack Agent credentials plus `agent.*` HTTP/streaming config
221
294
  - `balda.webhooks.*` — optional inbound webhook routes
222
295
  - `balda.scheduler.jobs` — recurring scheduled jobs
223
296
  - `balda.workspace.*` — workspace/worktree behavior for goal execution
@@ -272,8 +345,8 @@ ingress begins accepting messages. See the
272
345
  [Telegram formatting guide](docs/telegram-formatting.md) for rollout and
273
346
  fallback details.
274
347
 
275
- For complete configuration, examples, and provider-specific details, see
276
- [docs/balda.md](docs/balda.md).
348
+ For complete configuration, examples, and provider-specific details, see the
349
+ [configuration reference](docs/reference/configuration.md).
277
350
 
278
351
  ## Troubleshooting
279
352
 
@@ -290,11 +363,17 @@ For complete configuration, examples, and provider-specific details, see
290
363
 
291
364
  ## Docs
292
365
 
293
- - Product and operator docs: [docs/balda.md](docs/balda.md)
366
+ - Technical reference: [docs/balda.md](docs/balda.md)
367
+ - Onboarding: [docs/reference/onboarding.md](docs/reference/onboarding.md)
368
+ - Configuration: [docs/reference/configuration.md](docs/reference/configuration.md)
369
+ - Topic sessions: [docs/reference/topic-sessions.md](docs/reference/topic-sessions.md)
370
+ - Session memory: [docs/reference/session-memory.md](docs/reference/session-memory.md)
371
+ - Operations: [docs/reference/operations.md](docs/reference/operations.md)
294
372
  - Goal workflow: [docs/goal-workflow.md](docs/goal-workflow.md)
295
373
  - Architecture map: [docs/architecture/index.md](docs/architecture/index.md)
296
374
  - Telegram formatting: [docs/telegram-formatting.md](docs/telegram-formatting.md)
297
375
  - Zulip webhook setup: [docs/zulip-webhook.md](docs/zulip-webhook.md)
376
+ - Mattermost setup: [docs/mattermost.md](docs/mattermost.md)
298
377
  - Slack setup: [docs/slack.md](docs/slack.md)
299
378
  - Contributing: [CONTRIBUTING.md](CONTRIBUTING.md)
300
379
 
package/bin/balda CHANGED
@@ -1,4 +1,4 @@
1
1
  [diffend] Oversized file quarantined before diffing.
2
2
  name: package/bin/balda
3
- size: 49283234 bytes
4
- sha256: 250c20a5a5c4491a39376cb0f6b0e1e67900cd9b1f29a8d9c6e47653c80d64f5
3
+ size: 57737378 bytes
4
+ sha256: 5ecf2d299bc871e819e4c61c2c2d1ebcf2af11c9d0d0c846379c78a7848764f1
package/package.json CHANGED
@@ -17,5 +17,5 @@
17
17
  "type": "git",
18
18
  "url": "git+https://github.com/baldaworks/balda.git"
19
19
  },
20
- "version": "0.3.1"
20
+ "version": "0.4.0"
21
21
  }