@baldaworks/balda-linux-arm64 0.3.0 → 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.
- package/README.md +103 -23
- package/bin/balda +2 -2
- package/package.json +5 -4
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
-
[
|
|
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
|
-
-
|
|
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
|
|
|
@@ -304,5 +383,6 @@ For complete configuration, examples, and provider-specific details, see
|
|
|
304
383
|
- npm package: <https://www.npmjs.com/package/@baldaworks/balda>
|
|
305
384
|
|
|
306
385
|
npm releases are published from Git tags through the Omnidist workflow. The
|
|
307
|
-
|
|
308
|
-
`@baldaworks/balda
|
|
386
|
+
workflow uses npm trusted publishing with GitHub Actions OIDC; it does not use a
|
|
387
|
+
long-lived npm publish token. Each `@baldaworks/balda*` package trusts the
|
|
388
|
+
`baldaworks/balda` repository and the `omnidist-release.yml` workflow.
|
package/bin/balda
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
[diffend] Oversized file quarantined before diffing.
|
|
2
2
|
name: package/bin/balda
|
|
3
|
-
size:
|
|
4
|
-
sha256:
|
|
3
|
+
size: 57737378 bytes
|
|
4
|
+
sha256: 5ecf2d299bc871e819e4c61c2c2d1ebcf2af11c9d0d0c846379c78a7848764f1
|
package/package.json
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
{
|
|
2
|
-
"bin": {
|
|
3
|
-
"balda": "bin/balda"
|
|
4
|
-
},
|
|
5
2
|
"cpu": [
|
|
6
3
|
"arm64"
|
|
7
4
|
],
|
|
@@ -16,5 +13,9 @@
|
|
|
16
13
|
"os": [
|
|
17
14
|
"linux"
|
|
18
15
|
],
|
|
19
|
-
"
|
|
16
|
+
"repository": {
|
|
17
|
+
"type": "git",
|
|
18
|
+
"url": "git+https://github.com/baldaworks/balda.git"
|
|
19
|
+
},
|
|
20
|
+
"version": "0.4.0"
|
|
20
21
|
}
|