Commit Graph

32 Commits

Author SHA1 Message Date
Peter Steinberger
7bd3bf6bd6 refactor: normalize main session key handling 2026-01-09 22:30:15 +01:00
Peter Steinberger
1f0df6dfe7 feat: add TUI bootstrap start 2026-01-09 16:25:29 +01:00
Azade
3d40e40589 feat(sessions): expose label in sessions.list and support label lookup in sessions_send
- Add `label` field to session entries and expose it in `sessions.list`
- Display label column in the web UI sessions table
- Support `label` parameter in `sessions_send` for lookup by label instead of sessionKey

- `sessions.patch`: Accept and store `label` field
- `sessions.list`: Return `label` in session entries
- `sessions_spawn`: Pass label through to registry and announce flow
- `sessions_send`: Accept optional `label` param, lookup session by label if sessionKey not provided
- `agent` method: Accept `label` and `spawnedBy` params (stored in session entry)

- Add `label` column to sessions table in web UI

- Changed session store writes to merge with existing entry (`{ ...existing, ...new }`)
  to preserve fields like `label` that might be set separately

We attempted to implement label persistence "properly" by passing the label
through the `agent` call and storing it during session initialization. However,
the auto-reply flow has multiple write points that overwrite the session entry,
and making all of them merge-aware proved unreliable.

The working solution patches the label in the `finally` block of
`runSubagentAnnounceFlow`, after all other session writes complete.
This is a workaround but robust - the patch happens at the very end,
just before potential cleanup.

A future refactor could make session writes consistently merge-based,
which would allow the cleaner approach of setting label at spawn time.

```typescript
// Spawn with label
sessions_spawn({ task: "...", label: "my-worker" })

// Later, find by label
sessions_send({ label: "my-worker", message: "continue..." })

// Or use sessions_list to see labels
sessions_list() // includes label field in response
```
2026-01-09 15:32:49 +01:00
Peter Steinberger
947844117c feat: wire multi-agent config and routing
Co-authored-by: Mark Pors <1078320+pors@users.noreply.github.com>
2026-01-09 12:48:42 +00:00
Peter Steinberger
276f0b0407 feat: add usage cost reporting 2026-01-09 02:29:54 +00:00
Jonathan D. Rhyne
62d0999a0f fix(tui): status bar not updating after /verbose, /reasoning, /think commands
The status bar refresh failed because refreshSessionInfo() compared
currentSessionKey (e.g. 'main') against the canonical session keys
returned by the gateway (e.g. 'agent:default:main').

This fix uses parseAgentSessionKey to also match canonical keys by
their 'rest' component, allowing 'main' to match 'agent:default:main'.

Fixes: status bar showing stale values after setting changes
AI-assisted: yes (Claude)
Testing: lightly tested (build passes, logic verified)
2026-01-09 01:05:10 +01:00
Peter Steinberger
0c63327fdf feat(tui): add agent picker and agents list rpc 2026-01-09 01:05:10 +01:00
Peter Steinberger
f6180e2111 feat: add /reasoning reasoning visibility 2026-01-07 06:17:31 +01:00
Peter Steinberger
882bcaf414 feat: multi-agent routing + multi-account providers 2026-01-06 18:33:37 +00:00
Peter Steinberger
eedbfa56df feat(tui): add /elev alias 2026-01-06 08:41:04 +01:00
Peter Steinberger
8474b9a6b2 fix(tui): support pi-tui 0.36 key exports 2026-01-05 13:59:50 +00:00
Peter Steinberger
5fc6fa0c2a refactor(tui): use key helper predicates 2026-01-05 13:55:43 +00:00
Peter Steinberger
da8ed6928d refactor: align agent lifecycle 2026-01-05 05:55:02 +01:00
Peter Steinberger
24f24a2fb7 chore: format custom editor 2026-01-05 05:32:30 +01:00
Peter Steinberger
c5d12c2251 chore: update deps 2026-01-05 05:27:58 +01:00
Peter Steinberger
f7cb3846f1 chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
Peter Steinberger
5d2bfa8421 feat: add elevated bash mode 2026-01-04 05:15:59 +00:00
Peter Steinberger
a923d622a5 feat: add sessions tools and send policy 2026-01-03 23:44:42 +01:00
Peter Steinberger
eea33dfc6a style: tidy imports and formatting 2026-01-03 12:35:23 +00:00
Peter Steinberger
f6f0bb8eac fix: default low thinking for reasoning models 2026-01-03 12:19:06 +00:00
Peter Steinberger
38b755935c feat: centralize tool display metadata 2026-01-03 13:18:27 +01:00
Peter Steinberger
a5340a920b feat: support configurable gateway port 2026-01-03 12:00:17 +01:00
Peter Steinberger
0c4c365db0 chore: update appcast and TUI streaming handling 2026-01-03 11:06:49 +01:00
Peter Steinberger
a7e475ac91 fix: avoid unsafe string coercion in tui 2026-01-03 06:44:17 +01:00
Peter Steinberger
260dbf69c3 fix: align sessions.patch and tui typing 2026-01-03 06:37:40 +01:00
Peter Steinberger
a7a583064d feat: overhaul tui controller 2026-01-03 06:27:38 +01:00
Peter Steinberger
f3d524491c feat: add tui ui kit 2026-01-03 06:22:20 +01:00
Peter Steinberger
68d80b5976 feat: expand tui gateway client 2026-01-03 06:17:33 +01:00
Peter Steinberger
ef1f126c7a chore: fix lint ordering 2026-01-03 05:38:29 +01:00
Peter Steinberger
d220e62082 fix: repair discord action typing 2026-01-03 05:33:57 +01:00
Peter Steinberger
cf01d0344e chore: apply biome lint fixes 2026-01-03 05:10:09 +01:00
Peter Steinberger
95e4408099 feat: add gateway TUI 2026-01-03 04:47:34 +01:00