sidekick-agent-hub 0.26.5 → 0.27.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 +62 -45
- package/dist/sidekick-cli.mjs +18 -10
- package/dist/sidekick-main.mjs +615 -650
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -4,10 +4,12 @@ Full-screen terminal dashboard for monitoring AI agent sessions — standalone,
|
|
|
4
4
|
|
|
5
5
|

|
|
6
6
|
|
|
7
|
-
Sidekick CLI reads from `~/.config/sidekick/` — the same data files the [VS Code extension](https://marketplace.visualstudio.com/items?itemName=CesarAndresLopez.sidekick-for-max) writes. Browse sessions, tasks, decisions, knowledge notes, mind maps, and more in an interactive terminal UI.
|
|
7
|
+
Sidekick CLI reads from `~/.config/sidekick/` (`%APPDATA%\sidekick\` on Windows) — the same data files the [VS Code extension](https://marketplace.visualstudio.com/items?itemName=CesarAndresLopez.sidekick-for-max) writes. Browse sessions, tasks, decisions, knowledge notes, mind maps, and more in an interactive terminal UI.
|
|
8
8
|
|
|
9
9
|
## What's New
|
|
10
10
|
|
|
11
|
+
- **0.27.0: Opus 5.5 pricing and GPT-6 summaries** — cost estimates for Claude Opus 5.5 (`claude-opus-5-5`) sessions use its own rates ($4 / $20 per 1M tokens, $0.20 cache reads) instead of Opus 5's, GPT-6 Sol and Luna sessions are priced, and OpenAI API dashboard summaries use `gpt-6-luna`.
|
|
12
|
+
- **0.26.6: `sidekick accounts`** — an interactive picker plus `list`, `add`, `switch`, `login`, `remove`, `shell`, `env`, `undo`, `doctor`, and `config` subcommands. Logins you already use are registered automatically, every switch is verified against the live credential store and undoable, expired credentials are refused with a sign-in hint, running apps that keep the previous login are named, and `env` / `shell` run a second account side by side on bash, zsh, fish, PowerShell, and cmd. The dashboard gains an accounts overlay (`A`) and a health-coloured status bar account. `sidekick account --…` flags remain as a deprecated alias.
|
|
11
13
|
- **0.26.5: cheaper dashboard watching** — newer-session detection reconciles each watched-file event with one stat, and catch-up polls cost one stat per unchanged directory instead of walking every session file.
|
|
12
14
|
- **0.26.4: sharper authentication and policy guidance** — AI summary failures recognize expired-login and re-authentication messages with guidance matched to the credential kind, distinguish a rejected refresh token from an expired conversation, and treat `Permission denied by policy` (including HTTP 403) as an execution-policy denial.
|
|
13
15
|
- **0.26.3: provider failure diagnosis and status evidence** — AI summary failures distinguish authentication, provider sessions, service, connection, timeout, rate-limit, execution-policy, runtime, and context-limit problems with provider-specific guidance, without signing in, switching providers, or replaying. `sidekick status`, the dashboard, and `doctor` show unavailable or partial public status instead of implying normal operation, and `status --json` adds `serviceStatus` with an `availability` discriminator.
|
|
@@ -56,7 +58,7 @@ OpenCode session data lives in OpenCode's platform-specific data directory:
|
|
|
56
58
|
|
|
57
59
|
- Linux: `~/.local/share/opencode/`
|
|
58
60
|
- macOS: `~/Library/Application Support/opencode/`
|
|
59
|
-
- Windows: `%APPDATA
|
|
61
|
+
- Windows: `%LOCALAPPDATA%\opencode\` (falls back to `%APPDATA%`)
|
|
60
62
|
|
|
61
63
|
If `sqlite3` is missing or not executable in the current shell environment, Sidekick prints an actionable OpenCode-specific notice instead of silently failing session detection.
|
|
62
64
|
|
|
@@ -64,22 +66,22 @@ If `sqlite3` is missing or not executable in the current shell environment, Side
|
|
|
64
66
|
|
|
65
67
|
```bash
|
|
66
68
|
sidekick dashboard [options]
|
|
67
|
-
sidekick tasks|decisions|notes|stats|import|blocks|daily|weekly|monthly|sessions|quota|status|
|
|
68
|
-
sidekick today|doctor|statusline|mcp [options]
|
|
69
|
+
sidekick tasks|decisions|notes|stats|import|blocks|daily|weekly|monthly|sessions|quota|status|accounts|handoff|search|context|extract [options]
|
|
70
|
+
sidekick dump|history|report|peak|today|doctor|statusline|mcp [options]
|
|
69
71
|
sidekick tasks add|tasks done|note add|decision add [args]
|
|
70
72
|
```
|
|
71
73
|
|
|
72
|
-
The standalone commands
|
|
74
|
+
The standalone commands run one-shot queries and print to stdout; only `dashboard` opens the TUI. All accept the global `--project` and `--provider` flags.
|
|
73
75
|
|
|
74
|
-
| Flag | Description
|
|
75
|
-
| ---------------------- |
|
|
76
|
-
| `--project <path>` | Override project path (default: current working directory)
|
|
77
|
-
| `--provider <id>` | Session provider: `claude-code`, `opencode`, `codex`, or `auto` (default)
|
|
78
|
-
| `--no-color` | Disable colored output (also honors `NO_COLOR`)
|
|
79
|
-
| `--offline` | Price from the cached catalog only (also `SIDEKICK_OFFLINE=1`)
|
|
80
|
-
| `--output-file <path>` | Write a command's stdout to a file, without colour codes
|
|
81
|
-
| `--session <id>` | Follow a specific session by ID
|
|
82
|
-
| `--replay` | Replay existing events from the beginning before streaming live
|
|
76
|
+
| Flag | Description |
|
|
77
|
+
| ---------------------- | ---------------------------------------------------------------------------------- |
|
|
78
|
+
| `--project <path>` | Override project path (default: current working directory) |
|
|
79
|
+
| `--provider <id>` | Session provider: `claude-code`, `opencode`, `codex`, or `auto` (default) |
|
|
80
|
+
| `--no-color` | Disable colored output (also honors `NO_COLOR`) |
|
|
81
|
+
| `--offline` | Price from the cached catalog only (also `SIDEKICK_OFFLINE=1`) |
|
|
82
|
+
| `--output-file <path>` | Write a command's stdout to a file, without colour codes |
|
|
83
|
+
| `--session <id>` | Follow a specific session by ID (`dashboard`, `dump`, `report`, `handoff open`) |
|
|
84
|
+
| `--replay` | Replay existing events from the beginning before streaming live (`dashboard` only) |
|
|
83
85
|
|
|
84
86
|
## Daily Brief & Statusline
|
|
85
87
|
|
|
@@ -96,12 +98,12 @@ sidekick statusline
|
|
|
96
98
|
sidekick doctor
|
|
97
99
|
```
|
|
98
100
|
|
|
99
|
-
Diagnose project identity, sessions, accounts, providers, and dependencies in one typed health report — the same diagnostics behind the VS Code `Sidekick: Run Doctor` command. Global flags `--project
|
|
101
|
+
Diagnose project identity, sessions, accounts, providers, and dependencies in one typed health report — the same diagnostics behind the VS Code `Sidekick: Run Doctor` command. Global flags `--project`, `--provider`, and `--json` also apply.
|
|
100
102
|
|
|
101
103
|
## Billing Blocks
|
|
102
104
|
|
|
103
105
|
```bash
|
|
104
|
-
sidekick blocks [--active | --recent | --since <time>] [--csv]
|
|
106
|
+
sidekick blocks [--active | --recent | --since <time>] [--csv] [--no-cache]
|
|
105
107
|
```
|
|
106
108
|
|
|
107
109
|
Five-hour billing blocks computed from session logs (ccusage-style: a block opens at the first usage event, aligned to the UTC hour, lasts five hours, and a longer gap opens a new one). Each block shows its cache-inclusive token total, cost with provenance, burn rate, and — for the open block — projected end-of-block tokens and cost plus the time remaining. Sessions are read once and cached by size and mtime under the Sidekick config directory. When the status line has persisted an official Claude Code rate-limit sample, it is shown beneath the local estimate for comparison. `--since` accepts an ISO date, `YYYY-MM-DD`, or a relative window such as `7d`; `--json` prints the full report and `--csv` one row per block.
|
|
@@ -117,7 +119,7 @@ Fold finished sessions from every provider into the history store that `sidekick
|
|
|
117
119
|
## Usage Reports
|
|
118
120
|
|
|
119
121
|
```bash
|
|
120
|
-
sidekick daily|weekly|monthly|sessions [--since <time>] [--until <time>] [--breakdown] [--by-project] [--utc] [--csv]
|
|
122
|
+
sidekick daily|weekly|monthly|sessions [--since <time>] [--until <time>] [--breakdown] [--by-project] [--utc] [--csv] [--no-cache]
|
|
121
123
|
```
|
|
122
124
|
|
|
123
125
|
Usage computed straight from session logs — no VS Code extension or history store required — for every provider with session data side by side (`--provider` narrows to one). Rows are bucketed by the time of each usage event on the local calendar (`--utc` for UTC), so a session that crosses midnight is split across both days; weeks start on Monday. `--breakdown` adds per-model sub-rows, `--by-project` groups by project, `sessions` prints one row per session, and `--json` / `--csv` feed scripts. Defaults: 30 days, 12 weeks, 12 calendar months, 30 days.
|
|
@@ -133,12 +135,12 @@ sidekick decision add "Store history as JSONL" --rationale "Append-only, crash-s
|
|
|
133
135
|
|
|
134
136
|
Capture tasks, knowledge notes, and decisions from the terminal without opening the dashboard. Writes use the shared atomic merge writers, so concurrent captures from VS Code or other terminals are never lost (the extension's Kanban board picks them up live).
|
|
135
137
|
|
|
136
|
-
| Command | Flags
|
|
137
|
-
| ---------------------------- |
|
|
138
|
-
| `tasks add <subject>` | `--description <text>`, `--tags <csv>`
|
|
139
|
-
| `tasks done <id>` | Accepts a task ID or unique prefix
|
|
140
|
-
| `note add <content>` | `--file <path>`, `--title <title>`, `--type <type>` (`gotcha`/`pattern`/`guideline`/`tip`), `--importance <level
|
|
141
|
-
| `decision add <description>` | `--rationale <text>`, `--chosen <text>`, `--alternatives <csv>`, `--tags <csv>`
|
|
138
|
+
| Command | Flags |
|
|
139
|
+
| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
140
|
+
| `tasks add <subject>` | `--description <text>`, `--tags <csv>` |
|
|
141
|
+
| `tasks done <id>` | Accepts a task ID or unique prefix |
|
|
142
|
+
| `note add <content>` | `--file <path>`, `--title <title>`, `--type <type>` (`gotcha`/`pattern`/`guideline`/`tip`, default `tip`), `--importance <level>` (`critical`/`high`/`medium`/`low`, default `medium`), `--tags <csv>`; `--file` defaults to `.` |
|
|
143
|
+
| `decision add <description>` | `--rationale <text>`, `--chosen <text>`, `--alternatives <csv>`, `--tags <csv>` |
|
|
142
144
|
|
|
143
145
|
The global flag `--project` also applies.
|
|
144
146
|
|
|
@@ -173,6 +175,7 @@ Export session data as text, markdown, or JSON.
|
|
|
173
175
|
| `--session <id>` | Target a specific session (default: most recent) |
|
|
174
176
|
| `--list` | List available sessions and exit |
|
|
175
177
|
| `--limit <n>` | Maximum sessions listed with `--list` (default: 50) |
|
|
178
|
+
| `--csv` | With `--list`, print the session table as CSV |
|
|
176
179
|
|
|
177
180
|
Global flags `--project` and `--provider` also apply.
|
|
178
181
|
|
|
@@ -291,7 +294,7 @@ Codex quota commands and `sidekick mcp`'s `get_quota_status` always ask the API
|
|
|
291
294
|
|
|
292
295
|
Use `--json` for machine-readable output; it includes `resolution`, `source`, `capturedSource`, `freshness`, and `ageMs`, plus `failureKind`, `httpStatus`, and `retryAfterMs` on unavailable responses. The `failure` descriptor explains an API failure even when fallback data is available. Claude Code requires active credentials (read from the system Keychain on macOS, or `~/.claude/.credentials.json` on Linux/Windows).
|
|
293
296
|
|
|
294
|
-
|
|
297
|
+
`sidekick quota` shows the currently logged-in account email above the quota bars — resolved live from the provider's auth, so it stays correct even after a native `claude login` / `codex login`.
|
|
295
298
|
|
|
296
299
|
Use `sidekick quota --all` to show Claude and Codex quota together in a single run, plus z.ai when API quota is available or z.ai traffic is active. Each provider degrades independently — if one provider's quota can't be fetched, its error is shown inline and the others still render (the command never aborts on a single provider's failure). The combined view uses the same policy as the single-provider view; live values can change between calls. `--all --json` emits a provider-keyed payload for dashboards and automation.
|
|
297
300
|
|
|
@@ -311,36 +314,48 @@ Mon ··▒▒▓█▒░· ·░░·· ·▒▓
|
|
|
311
314
|
Peak 92% · Avg 38% · Samples 612
|
|
312
315
|
```
|
|
313
316
|
|
|
314
|
-
Flags: `--weeks <n>` (1-26, default 13), `--provider claude|codex|zai` (default all available, stacked), `--workspace <path>` (default `cwd`), `--window 5h|7d|max` (default `5h`), `--csv`. `--json` emits a `{ workspaceId, weeks, window, providers, generatedAt }` payload — the same shape consumed by the VS Code dashboard's Quota History panel. Cells are local calendar days.
|
|
317
|
+
Flags: `--weeks <n>` (1-26, default 13), `--provider claude|codex|zai` (`claude-code` and `z.ai` are accepted aliases; default all available, stacked), `--workspace <path>` (default `cwd`), `--window 5h|7d|max` (default `5h`), `--csv`. `--json` emits a `{ workspaceId, weeks, window, providers, generatedAt }` payload — the same shape consumed by the VS Code dashboard's Quota History panel. Cells are local calendar days.
|
|
315
318
|
|
|
316
319
|
History is stored at `~/.config/sidekick/quota-history/<workspaceId>/<provider>.jsonl` (mode `0600`, 60-second debounce, 91-day retention). The workspace id is `sha256(realpath)[0..16]`, so the same folder yields the same store whether sampled from the CLI or VS Code.
|
|
317
320
|
|
|
318
321
|
## Account Management
|
|
319
322
|
|
|
320
323
|
```bash
|
|
321
|
-
sidekick
|
|
324
|
+
sidekick accounts [command]
|
|
322
325
|
```
|
|
323
326
|
|
|
324
|
-
|
|
327
|
+
Keep several Claude Code and Codex logins on one machine and switch between them without `/logout` cycles. Sidekick registers the login you are already using automatically (labelled with its email), verifies every switch by reading the live credential store back, warns about running apps that still hold the previous login, and flags expiring credentials before they fail. Account data is stored in `~/.config/sidekick/accounts/` with strict file permissions and atomic writes with rollback on failure. See the [Account Switcher](https://cesarandreslopez.github.io/sidekick-agent-hub/features/account-switcher/) guide for the per-app reachability table and platform notes.
|
|
328
|
+
|
|
329
|
+
| Command | Description |
|
|
330
|
+
| ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
331
|
+
| `sidekick accounts` | Interactive picker (arrow keys, `Enter` switch, `a` add, `l` sign in again, `r` remove, `s` shell, `u` undo, `?` help, `q` quit). Prints the list when piped |
|
|
332
|
+
| `accounts list` | Saved accounts with health and expiry |
|
|
333
|
+
| `accounts add [--label <name>] [--current] [-y]` | Sign in to a new account in an isolated profile; `--current` registers or relabels the live login |
|
|
334
|
+
| `accounts switch <name> \| --next [--force]` | Make an account active (label, email, id, or unique prefix); `--force` ignores an expired health verdict |
|
|
335
|
+
| `accounts login <name>` | Sign in again to an existing (expired) account, keeping its id and label |
|
|
336
|
+
| `accounts remove <name> [-y]` | Delete a saved account and its credentials (prompts unless `--yes`/`--force`; required for `--json`/non-TTY) |
|
|
337
|
+
| `accounts shell <name> [-- <cmd…>]` | Subshell, or one command, where `claude`/`codex` use the account |
|
|
338
|
+
| `accounts env <name> [--shell <kind>]` | Print the environment for `eval` (`bash`, `zsh`, `fish`, `powershell`, `cmd`; default detected) |
|
|
339
|
+
| `accounts undo` | Revert the last switch |
|
|
340
|
+
| `accounts doctor` | Credential expiry, running apps, Codex credential store, keep-alive state |
|
|
341
|
+
| `accounts config auto-switch <pct\|off>` | Persist the auto-switch quota threshold (continuous auto-switching runs in a long-running host such as VS Code) |
|
|
342
|
+
| `accounts config keep-alive <on\|off\|run>` | Refresh inactive accounts through the official CLIs (the dashboard runs it hourly); `run` executes one pass now |
|
|
343
|
+
|
|
344
|
+
`sidekick accounts` and `accounts list` accept `--provider claude-code|codex|all`; the per-account subcommands accept `claude-code|codex`; `config` takes no provider. The global `--json` applies everywhere. A switch prints `✓ verified` once the live store reads back the new credential, one `!` line per running app that still holds the previous login, and the undo command. A switch to an `expired` or `missing` account is refused with a sign-in hint unless you pass `--force`.
|
|
325
345
|
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
| `--switch-to <id>` | Switch to a specific account by email, label, or ID |
|
|
336
|
-
| `--remove <id>` | Remove a saved account by email, label, or ID (prompts for y/N confirmation first) |
|
|
337
|
-
| `-y`, `--yes` / `--force` | Skip the `--remove` confirmation prompt (required for `--json` or non-interactive runs) |
|
|
338
|
-
| `--launcher <name>` | Create an opt-in per-account terminal launcher for the active account |
|
|
339
|
-
| `--auto-switch <pct\|off>` | Persist the auto-switch quota threshold (1–100), or `off` to disable. Continuous auto-switching runs in a long-running host such as VS Code |
|
|
346
|
+
```bash
|
|
347
|
+
sidekick accounts # interactive picker
|
|
348
|
+
sidekick accounts list --json # { accounts, activeByProvider, registeredNow }
|
|
349
|
+
sidekick accounts add --label Work # sign in to a second account; current login untouched
|
|
350
|
+
sidekick accounts switch work # switch by label, email, or id
|
|
351
|
+
eval "$(sidekick accounts env work)" # this shell only: claude/codex use Work
|
|
352
|
+
sidekick accounts shell work -- claude # one claude session as Work
|
|
353
|
+
sidekick accounts doctor # what would break a switch right now
|
|
354
|
+
```
|
|
340
355
|
|
|
341
|
-
|
|
356
|
+
`remove` prints the resolved account and asks for an interactive y/N answer (default No). Pass `-y`/`--yes` to skip the prompt; `--json` and non-TTY contexts require the flag and exit `1` without it — **unattended automation that removes accounts must add `--yes`**.
|
|
342
357
|
|
|
343
|
-
|
|
358
|
+
The legacy `sidekick account --add | --login | --switch | --switch-to <id> | --remove <id> | --launcher <name> | --auto-switch <pct|off>` flags still work and print the equivalent `sidekick accounts …` command on stderr. `--launcher` writes a POSIX launcher script; `accounts shell` and `accounts env` are the cross-platform replacements.
|
|
344
359
|
|
|
345
360
|
## Dashboard Panels
|
|
346
361
|
|
|
@@ -353,7 +368,7 @@ The dashboard is a two-pane terminal UI. The left side shows a navigable list, t
|
|
|
353
368
|
| 3 | **Kanban** | Task board with status columns |
|
|
354
369
|
| 4 | **Notes** | Knowledge notes attached to files |
|
|
355
370
|
| 5 | **Decisions** | Architectural decisions from sessions |
|
|
356
|
-
| 6 | **Plans** |
|
|
371
|
+
| 6 | **Plans** | Agent plans persisted in the project store from Claude Code, OpenCode, and Codex sessions |
|
|
357
372
|
| 7 | **Events** | Live event stream with type badges, timestamps, and keyword-highlighted summaries |
|
|
358
373
|
| 8 | **Charts** | Tool frequency bars, event distribution, activity heatmap, and pattern analysis |
|
|
359
374
|
|
|
@@ -425,10 +440,12 @@ Press `z` to cycle through layout modes:
|
|
|
425
440
|
| `/` | Open filter overlay (supports substring, fuzzy, regex, and date modes — Tab cycles modes) |
|
|
426
441
|
| `x` | Open context menu for selected item |
|
|
427
442
|
| `M` | Toggle mouse capture (turn off to restore terminal text selection/copy) |
|
|
443
|
+
| `A` | Open the accounts overlay (`Enter` switches, `u` undoes the last switch) |
|
|
428
444
|
| `?` | Show help |
|
|
429
445
|
| `R` | Refresh persisted project data (tasks, notes, decisions, plans) from disk |
|
|
430
446
|
| `r` | Generate HTML report for the current session |
|
|
431
447
|
| `V` | Show version / changelog |
|
|
448
|
+
| `Esc` | Clear the filter, close an overlay, or return focus to the side list |
|
|
432
449
|
| `q` / `Ctrl+C` | Quit |
|
|
433
450
|
|
|
434
451
|
## Mouse Support
|
|
@@ -448,7 +465,7 @@ Auto-detects the most recently active session provider:
|
|
|
448
465
|
|
|
449
466
|
- **Claude Code** — `~/.claude/projects/`
|
|
450
467
|
- **OpenCode** — OpenCode's data directory:
|
|
451
|
-
Linux `~/.local/share/opencode/`, macOS `~/Library/Application Support/opencode/`, Windows `%APPDATA
|
|
468
|
+
Linux `~/.local/share/opencode/`, macOS `~/Library/Application Support/opencode/`, Windows `%LOCALAPPDATA%\opencode\` (falls back to `%APPDATA%`)
|
|
452
469
|
- **Codex** — `~/.codex/`
|
|
453
470
|
|
|
454
471
|
Override with `--provider claude-code`, `--provider opencode`, or `--provider codex`.
|