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 CHANGED
@@ -4,10 +4,12 @@ Full-screen terminal dashboard for monitoring AI agent sessions — standalone,
4
4
 
5
5
  ![Sidekick CLI Dashboard](https://raw.githubusercontent.com/cesarandreslopez/sidekick-agent-hub/main/assets/sidekick-cli.gif)
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%\\opencode\\`
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|account|handoff|search|context|extract [options]
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 open the dashboard directly to a specific panel or run a one-shot query. All accept `--project` and `--provider` flags.
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` and `--json` also apply.
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>`, `--tags <csv>` |
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
- When multi-account is enabled, `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`.
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 account [options]
324
+ sidekick accounts [command]
322
325
  ```
323
326
 
324
- Manage accounts across providers — save, list, switch, and remove without manual login/logout cycles. Supports Claude Code and Codex profiles. Account data is stored in `~/.config/sidekick/accounts/` with strict file permissions and atomic writes with rollback on failure.
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
- On first CLI startup, Sidekick auto-registers the active system Claude Code and Codex credentials as a **"Default"** account (when no saved account exists for that provider yet). Existing manually saved accounts are never overwritten — the flags below are only needed to add additional accounts or switch between them.
327
-
328
- | Flag | Description |
329
- | -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
330
- | `--provider <id>` | Provider: `claude-code` (default), `codex`, or `all` |
331
- | `--add` | Save the currently signed-in account |
332
- | `--login` | Sign in and save a **new** account via a provider-isolated login flow, without disturbing the active account until finalization |
333
- | `--label <name>` | Label for the account (required for Codex and `--login`; optional for Claude `--add`) |
334
- | `--switch` | Switch to the next saved account |
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
- With no flags, lists all saved accounts and marks the active one. `--provider all` lists Claude and Codex accounts together. Use `--json` for machine-readable output (provider-keyed when `--provider all`).
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
- `--remove` prints the resolved account and asks for an interactive y/N answer (default No). Pass `-y`/`--yes` (or `--force`) 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`**.
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** | Discovered agent plans from `~/.claude/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%\\opencode\\`
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`.