@bastani/atomic 0.6.6 → 0.6.7-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 (49) hide show
  1. package/README.md +22 -16
  2. package/dist/sdk/components/compact-switcher.d.ts.map +1 -1
  3. package/dist/sdk/components/connectors.d.ts +1 -0
  4. package/dist/sdk/components/connectors.d.ts.map +1 -1
  5. package/dist/sdk/components/edge.d.ts +1 -1
  6. package/dist/sdk/components/edge.d.ts.map +1 -1
  7. package/dist/sdk/components/graph-theme.d.ts.map +1 -1
  8. package/dist/sdk/components/header.d.ts.map +1 -1
  9. package/dist/sdk/components/node-card.d.ts.map +1 -1
  10. package/dist/sdk/components/orchestrator-panel.d.ts +7 -1
  11. package/dist/sdk/components/orchestrator-panel.d.ts.map +1 -1
  12. package/dist/sdk/components/renderer-background.d.ts +9 -0
  13. package/dist/sdk/components/renderer-background.d.ts.map +1 -0
  14. package/dist/sdk/components/session-graph-panel.d.ts.map +1 -1
  15. package/dist/sdk/components/statusline.d.ts.map +1 -1
  16. package/dist/sdk/components/tui-diagnostics.d.ts +56 -0
  17. package/dist/sdk/components/tui-diagnostics.d.ts.map +1 -0
  18. package/dist/sdk/components/workflow-picker-panel.d.ts +2 -1
  19. package/dist/sdk/components/workflow-picker-panel.d.ts.map +1 -1
  20. package/dist/sdk/runtime/executor.d.ts.map +1 -1
  21. package/dist/sdk/runtime/theme.d.ts +4 -0
  22. package/dist/sdk/runtime/theme.d.ts.map +1 -1
  23. package/dist/theme/colors.d.ts +2 -0
  24. package/dist/theme/colors.d.ts.map +1 -1
  25. package/package.json +2 -1
  26. package/src/cli.ts +3 -3
  27. package/src/commands/cli/management-commands.ts +4 -3
  28. package/src/commands/cli/session.test.ts +79 -6
  29. package/src/commands/cli/session.ts +65 -9
  30. package/src/completions/fish.ts +9 -3
  31. package/src/completions/powershell.ts +27 -3
  32. package/src/completions/zsh.ts +9 -2
  33. package/src/sdk/components/compact-switcher.tsx +10 -5
  34. package/src/sdk/components/connectors.ts +4 -0
  35. package/src/sdk/components/edge.tsx +5 -3
  36. package/src/sdk/components/graph-theme.ts +2 -3
  37. package/src/sdk/components/header.tsx +21 -9
  38. package/src/sdk/components/node-card.tsx +13 -7
  39. package/src/sdk/components/orchestrator-panel.tsx +47 -2
  40. package/src/sdk/components/renderer-background.ts +49 -0
  41. package/src/sdk/components/session-graph-panel.tsx +9 -2
  42. package/src/sdk/components/statusline.tsx +26 -22
  43. package/src/sdk/components/tui-diagnostics.ts +273 -0
  44. package/src/sdk/components/workflow-picker-panel.tsx +33 -22
  45. package/src/sdk/runtime/executor.ts +28 -1
  46. package/src/sdk/runtime/theme.ts +28 -36
  47. package/src/services/system/install-ui.ts +16 -17
  48. package/src/theme/colors.ts +14 -9
  49. package/src/theme/logo.ts +23 -12
package/README.md CHANGED
@@ -283,7 +283,10 @@ Every chat and workflow runs inside an isolated [tmux](https://github.com/tmux/t
283
283
  atomic session list # all sessions
284
284
  atomic session connect # interactive fuzzy picker
285
285
  atomic session connect <name> # by name
286
- atomic session kill <name> # kill one (or all, with confirmation)
286
+ atomic session kill # interactive multi-select
287
+ atomic session kill <name> # kill one session by name
288
+ atomic session kill --all # select all matching sessions, then confirm
289
+ atomic session kill --all --yes # kill all matching sessions without prompts
287
290
  ```
288
291
 
289
292
  Session names follow `atomic-chat-<id>` or `atomic-wf-<workflow>-<id>`. Scope with `atomic chat session …` or `atomic workflow session …`.
@@ -1080,7 +1083,7 @@ During `atomic chat`, there is no Atomic-owned TUI — `atomic chat -a <agent>`
1080
1083
  | `atomic workflow list` | List available workflows, grouped by source |
1081
1084
  | `atomic session list` | List all running sessions on the atomic tmux socket |
1082
1085
  | `atomic session connect [name]` | Attach to a session (interactive picker when no name given) |
1083
- | `atomic session kill [name]` | Kill a session by name, or all sessions when no name is given |
1086
+ | `atomic session kill [name]` | Kill one session, or pick sessions interactively when no name is given |
1084
1087
  | `atomic completions <shell>` | Output shell completion script (bash, zsh, fish, powershell) |
1085
1088
  | `atomic config set <k> <v>` | Set configuration values (supports `telemetry` and `scm`) |
1086
1089
 
@@ -1096,19 +1099,19 @@ During `atomic chat`, there is no Atomic-owned TUI — `atomic chat -a <agent>`
1096
1099
 
1097
1100
  Available at three levels — scoped or global:
1098
1101
 
1099
- | Command | Description |
1100
- | ---------------------------------------- | ----------------------------------------------------- |
1101
- | `atomic session list` | List all running sessions |
1102
- | `atomic session connect [name]` | Attach to a session (interactive picker when no name) |
1103
- | `atomic session kill [name]` | Kill a session, or all sessions when no name is given |
1104
- | `atomic chat session list` | List running chat sessions only |
1105
- | `atomic chat session connect [name]` | Attach to a chat session |
1106
- | `atomic chat session kill [name]` | Kill a chat session, or all chat sessions |
1107
- | `atomic workflow session list` | List running workflow sessions only |
1108
- | `atomic workflow session connect [name]` | Attach to a workflow session |
1109
- | `atomic workflow session kill [name]` | Kill a workflow session, or all workflow sessions |
1102
+ | Command | Description |
1103
+ | ---------------------------------------- | ------------------------------------------------------- |
1104
+ | `atomic session list` | List all running sessions |
1105
+ | `atomic session connect [name]` | Attach to a session (interactive picker when no name) |
1106
+ | `atomic session kill [name]` | Kill one session, or interactively pick sessions |
1107
+ | `atomic chat session list` | List running chat sessions only |
1108
+ | `atomic chat session connect [name]` | Attach to a chat session |
1109
+ | `atomic chat session kill [name]` | Kill one chat session, or interactively pick chat sessions |
1110
+ | `atomic workflow session list` | List running workflow sessions only |
1111
+ | `atomic workflow session connect [name]` | Attach to a workflow session |
1112
+ | `atomic workflow session kill [name]` | Kill one workflow session, or interactively pick workflow sessions |
1110
1113
 
1111
- `list`, `connect`, and `kill` accept `-a <agent>` (repeatable) to filter by agent. `kill` prompts for confirmation.
1114
+ `list`, `connect`, and `kill` accept `-a <agent>` (repeatable) to filter by agent. `kill` confirms before terminating sessions unless `-y` / `--yes` is passed. When no session name is given, `kill` opens a checkbox picker with an "All matching sessions" option; use `--all` to skip the picker and preselect every matching session.
1112
1115
 
1113
1116
  ```bash
1114
1117
  atomic session list # all sessions
@@ -1117,8 +1120,11 @@ atomic session connect my-session # attach by name
1117
1120
  atomic session connect # interactive picker
1118
1121
  atomic chat session list -a copilot # chat sessions for Copilot only
1119
1122
  atomic session kill my-session # kill one session by name
1120
- atomic session kill # kill all sessions (with confirmation)
1121
- atomic workflow session kill -a claude # kill all Claude workflow sessions
1123
+ atomic session kill # choose sessions with a multi-select picker
1124
+ atomic session kill --all # kill all sessions after confirmation
1125
+ atomic session kill --all --yes # kill all sessions without prompts
1126
+ atomic workflow session kill -a claude # choose Claude workflow sessions to kill
1127
+ atomic workflow session kill -a claude --all --yes
1122
1128
  ```
1123
1129
 
1124
1130
  #### `atomic chat` Flags
@@ -1 +1 @@
1
- {"version":3,"file":"compact-switcher.d.ts","sourceRoot":"","sources":["../../../src/sdk/components/compact-switcher.tsx"],"names":[],"mappings":"AAAA,sCAAsC;AACtC;;;GAGG;AAMH,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,eAAe,CAAC,EAAE,aAAa,EAAE,EAAE,oBAAoB,6BA0DtE"}
1
+ {"version":3,"file":"compact-switcher.d.ts","sourceRoot":"","sources":["../../../src/sdk/components/compact-switcher.tsx"],"names":[],"mappings":"AAAA,sCAAsC;AACtC;;;GAGG;AAMH,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,eAAe,CAAC,EAAE,aAAa,EAAE,EAAE,oBAAoB,6BA+DtE"}
@@ -7,6 +7,7 @@ export interface ConnectorResult {
7
7
  width: number;
8
8
  height: number;
9
9
  color: string;
10
+ backgroundColor: string;
10
11
  }
11
12
  /** Fan-out connector: one parent branching down to one or more tree children. */
12
13
  export declare function buildConnector(parent: LayoutNode, rowH: Record<number, number>, theme: GraphTheme): ConnectorResult | null;
@@ -1 +1 @@
1
- {"version":3,"file":"connectors.d.ts","sourceRoot":"","sources":["../../../src/sdk/components/connectors.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,iFAAiF;AACjF,wBAAgB,cAAc,CAC5B,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,KAAK,EAAE,UAAU,GAChB,eAAe,GAAG,IAAI,CAqExB;AAED,kFAAkF;AAClF,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EACpC,KAAK,EAAE,UAAU,GAChB,eAAe,GAAG,IAAI,CA2DxB"}
1
+ {"version":3,"file":"connectors.d.ts","sourceRoot":"","sources":["../../../src/sdk/components/connectors.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,iFAAiF;AACjF,wBAAgB,cAAc,CAC5B,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,KAAK,EAAE,UAAU,GAChB,eAAe,GAAG,IAAI,CAuExB;AAED,kFAAkF;AAClF,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EACpC,KAAK,EAAE,UAAU,GAChB,eAAe,GAAG,IAAI,CA4DxB"}
@@ -1,4 +1,4 @@
1
1
  /** @jsxImportSource @opentui/react */
2
2
  import type { ConnectorResult } from "./connectors.ts";
3
- export declare function Edge({ text, col, row, width, height, color: edgeColor }: ConnectorResult): import("react").ReactNode;
3
+ export declare function Edge({ text, col, row, width, height, color: edgeColor, backgroundColor }: ConnectorResult): import("react").ReactNode;
4
4
  //# sourceMappingURL=edge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"edge.d.ts","sourceRoot":"","sources":["../../../src/sdk/components/edge.tsx"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,wBAAgB,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,eAAe,6BAMxF"}
1
+ {"version":3,"file":"edge.d.ts","sourceRoot":"","sources":["../../../src/sdk/components/edge.tsx"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,wBAAgB,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE,eAAe,6BAQzG"}
@@ -1 +1 @@
1
- {"version":3,"file":"graph-theme.d.ts","sourceRoot":"","sources":["../../../src/sdk/components/graph-theme.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,aAAa,GAAG,UAAU,CAgB7D"}
1
+ {"version":3,"file":"graph-theme.d.ts","sourceRoot":"","sources":["../../../src/sdk/components/graph-theme.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,aAAa,GAAG,UAAU,CAgB7D"}
@@ -1 +1 @@
1
- {"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../../src/sdk/components/header.tsx"],"names":[],"mappings":"AAAA,sCAAsC;AAoBtC,wBAAgB,MAAM,8BAoDrB"}
1
+ {"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../../src/sdk/components/header.tsx"],"names":[],"mappings":"AAAA,sCAAsC;AA8BtC,wBAAgB,MAAM,8BAsDrB"}
@@ -1 +1 @@
1
- {"version":3,"file":"node-card.d.ts","sourceRoot":"","sources":["../../../src/sdk/components/node-card.tsx"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAU,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAEtD,eAAO,MAAM,QAAQ,uEAKlB;IACD,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB,qBAkEC,CAAC"}
1
+ {"version":3,"file":"node-card.d.ts","sourceRoot":"","sources":["../../../src/sdk/components/node-card.tsx"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAU,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAEtD,eAAO,MAAM,QAAQ,uEAKlB;IACD,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB,qBAwEC,CAAC"}
@@ -9,6 +9,9 @@ export declare class OrchestratorPanel {
9
9
  private store;
10
10
  private renderer;
11
11
  private destroyed;
12
+ private terminalBackgroundSynced;
13
+ private diagnostics;
14
+ private unsubscribeDiagnostics;
12
15
  private constructor();
13
16
  /**
14
17
  * Create a new OrchestratorPanel with the default CLI renderer.
@@ -18,7 +21,9 @@ export declare class OrchestratorPanel {
18
21
  */
19
22
  static create(options: PanelOptions): Promise<OrchestratorPanel>;
20
23
  /** Create with an externally-provided renderer (e.g. a test renderer). */
21
- static createWithRenderer(renderer: CliRenderer, options: PanelOptions): OrchestratorPanel;
24
+ static createWithRenderer(renderer: CliRenderer, options: PanelOptions, { syncTerminalBackground }?: {
25
+ syncTerminalBackground?: boolean;
26
+ }): OrchestratorPanel;
22
27
  /**
23
28
  * Display the workflow overview in the TUI — name, agent, session graph,
24
29
  * and the user prompt. Call once after construction before sessions start.
@@ -76,5 +81,6 @@ export declare class OrchestratorPanel {
76
81
  completionReached: boolean;
77
82
  sessions: readonly SessionData[];
78
83
  };
84
+ private getDiagnosticSnapshot;
79
85
  }
80
86
  //# sourceMappingURL=orchestrator-panel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator-panel.d.ts","sourceRoot":"","sources":["../../../src/sdk/components/orchestrator-panel.tsx"],"names":[],"mappings":"AAAA,sCAAsC;AACtC;;;GAGG;AAEH,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAOpE,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAI7F,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,SAAS,CAAS;IAE1B,OAAO;IAsCP;;;;;OAKG;WACU,MAAM,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAQtE,0EAA0E;IAC1E,MAAM,CAAC,kBAAkB,CACvB,QAAQ,EAAE,WAAW,EACrB,OAAO,EAAE,YAAY,GACpB,iBAAiB;IAOpB;;;OAGG;IACH,gBAAgB,CACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,YAAY,EAAE,EACxB,MAAM,EAAE,MAAM,GACb,IAAI;IAIP,iDAAiD;IACjD,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIhC,gEAAgE;IAChE,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIlC,8EAA8E;IAC9E,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAIjD,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIxC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIlC,0DAA0D;IAC1D,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAUjD,8EAA8E;IAC9E,qBAAqB,IAAI,IAAI;IAI7B,8EAA8E;IAC9E,sBAAsB,IAAI,IAAI;IAI9B,0EAA0E;IAC1E,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI;IAInE,+CAA+C;IAC/C,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIrC;;;OAGG;IACH,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5B;;;OAGG;IACH,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAM7B,yEAAyE;IACzE,OAAO,IAAI,IAAI;IAQf;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAIrC;;;;;OAKG;IACH,WAAW,IAAI;QACb,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,iBAAiB,EAAE,OAAO,CAAC;QAC3B,QAAQ,EAAE,SAAS,WAAW,EAAE,CAAC;KAClC;CAUF"}
1
+ {"version":3,"file":"orchestrator-panel.d.ts","sourceRoot":"","sources":["../../../src/sdk/components/orchestrator-panel.tsx"],"names":[],"mappings":"AAAA,sCAAsC;AACtC;;;GAGG;AAEH,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAOpE,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAU7F,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,wBAAwB,CAAU;IAC1C,OAAO,CAAC,WAAW,CAA+B;IAClD,OAAO,CAAC,sBAAsB,CAA6B;IAE3D,OAAO;IAkDP;;;;;OAKG;WACU,MAAM,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAQtE,0EAA0E;IAC1E,MAAM,CAAC,kBAAkB,CACvB,QAAQ,EAAE,WAAW,EACrB,OAAO,EAAE,YAAY,EACrB,EAAE,sBAA8B,EAAE,GAAE;QAAE,sBAAsB,CAAC,EAAE,OAAO,CAAA;KAAO,GAC5E,iBAAiB;IAQpB;;;OAGG;IACH,gBAAgB,CACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,YAAY,EAAE,EACxB,MAAM,EAAE,MAAM,GACb,IAAI;IAIP,iDAAiD;IACjD,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIhC,gEAAgE;IAChE,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIlC,8EAA8E;IAC9E,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAIjD,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIxC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIlC,0DAA0D;IAC1D,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAUjD,8EAA8E;IAC9E,qBAAqB,IAAI,IAAI;IAI7B,8EAA8E;IAC9E,sBAAsB,IAAI,IAAI;IAI9B,0EAA0E;IAC1E,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI;IAInE,+CAA+C;IAC/C,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIrC;;;OAGG;IACH,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5B;;;OAGG;IACH,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAM7B,yEAAyE;IACzE,OAAO,IAAI,IAAI;IAgBf;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAIrC;;;;;OAKG;IACH,WAAW,IAAI;QACb,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,iBAAiB,EAAE,OAAO,CAAC;QAC3B,QAAQ,EAAE,SAAS,WAAW,EAAE,CAAC;KAClC;IAWD,OAAO,CAAC,qBAAqB;CAa9B"}
@@ -0,0 +1,9 @@
1
+ import type { CliRenderer } from "@opentui/core";
2
+ export declare function setRendererBackground(renderer: CliRenderer, color: string, { syncTerminalDefault }?: {
3
+ syncTerminalDefault?: boolean;
4
+ }): void;
5
+ export declare function requestRendererBackgroundRepaint(renderer: CliRenderer): void;
6
+ export declare function resetRendererTerminalBackground(renderer: CliRenderer): void;
7
+ export declare function terminalBackgroundColorSequence(color: string): string;
8
+ export declare function wrapForTmuxIfNeeded(sequence: string): string;
9
+ //# sourceMappingURL=renderer-background.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderer-background.d.ts","sourceRoot":"","sources":["../../../src/sdk/components/renderer-background.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,WAAW,EACrB,KAAK,EAAE,MAAM,EACb,EAAE,mBAA2B,EAAE,GAAE;IAAE,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAAO,GACtE,IAAI,CAKN;AAED,wBAAgB,gCAAgC,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAM5E;AAED,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAO3E;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQrE;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQ5D"}
@@ -1 +1 @@
1
- {"version":3,"file":"session-graph-panel.d.ts","sourceRoot":"","sources":["../../../src/sdk/components/session-graph-panel.tsx"],"names":[],"mappings":"AAAA,sCAAsC;AACtC;;;GAGG;AAyCH,wBAAgB,iBAAiB,8BAkahC"}
1
+ {"version":3,"file":"session-graph-panel.d.ts","sourceRoot":"","sources":["../../../src/sdk/components/session-graph-panel.tsx"],"names":[],"mappings":"AAAA,sCAAsC;AACtC;;;GAGG;AAyCH,wBAAgB,iBAAiB,8BAyahC"}
@@ -1 +1 @@
1
- {"version":3,"file":"statusline.d.ts","sourceRoot":"","sources":["../../../src/sdk/components/statusline.tsx"],"names":[],"mappings":"AAAA,sCAAsC;AAItC,wBAAgB,UAAU,CAAC,EACzB,SAAS,GACV,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;CACnB,6BAuDA"}
1
+ {"version":3,"file":"statusline.d.ts","sourceRoot":"","sources":["../../../src/sdk/components/statusline.tsx"],"names":[],"mappings":"AAAA,sCAAsC;AAItC,wBAAgB,UAAU,CAAC,EACzB,SAAS,GACV,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;CACnB,6BA2DA"}
@@ -0,0 +1,56 @@
1
+ import type { CliRenderer, OptimizedBuffer } from "@opentui/core";
2
+ import type { GraphTheme } from "./graph-theme.ts";
3
+ import type { SessionData } from "./orchestrator-panel-types.ts";
4
+ type BackgroundRun = {
5
+ x: number;
6
+ width: number;
7
+ color: string;
8
+ };
9
+ type BufferRowDiagnostic = {
10
+ y: number;
11
+ text: string;
12
+ backgrounds: BackgroundRun[];
13
+ };
14
+ type ColorCount = {
15
+ color: string;
16
+ count: number;
17
+ percent: number;
18
+ };
19
+ export type BufferDiagnostic = {
20
+ width: number;
21
+ height: number;
22
+ topBackgrounds: ColorCount[];
23
+ yellowHueCells: number;
24
+ yellowHueSamples: Array<{
25
+ x: number;
26
+ y: number;
27
+ color: string;
28
+ char: string;
29
+ }>;
30
+ rows: BufferRowDiagnostic[];
31
+ };
32
+ export type WorkflowDiagnosticSnapshot = {
33
+ workflowName: string;
34
+ agent: string;
35
+ prompt: string;
36
+ fatalError: string | null;
37
+ completionReached: boolean;
38
+ sessions: readonly SessionData[];
39
+ backgroundTaskCount: number;
40
+ viewMode: string;
41
+ activeAgentId: string;
42
+ };
43
+ export type TuiDiagnostics = {
44
+ capture: (reason: string) => void;
45
+ dispose: () => void;
46
+ };
47
+ type TuiDiagnosticsOptions = {
48
+ renderer: CliRenderer;
49
+ graphTheme: GraphTheme;
50
+ getSnapshot: () => WorkflowDiagnosticSnapshot;
51
+ };
52
+ export declare function isTuiDiagnosticsEnabled(): boolean;
53
+ export declare function createTuiDiagnostics({ renderer, graphTheme, getSnapshot, }: TuiDiagnosticsOptions): TuiDiagnostics | null;
54
+ export declare function summarizeBuffer(buffer: OptimizedBuffer): BufferDiagnostic;
55
+ export {};
56
+ //# sourceMappingURL=tui-diagnostics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tui-diagnostics.d.ts","sourceRoot":"","sources":["../../../src/sdk/components/tui-diagnostics.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEjE,KAAK,aAAa,GAAG;IACnB,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,KAAK,mBAAmB,GAAG;IACzB,CAAC,EAAE,MAAM,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,aAAa,EAAE,CAAC;CAC9B,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,UAAU,EAAE,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,KAAK,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/E,IAAI,EAAE,mBAAmB,EAAE,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,QAAQ,EAAE,SAAS,WAAW,EAAE,CAAC;IACjC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF,KAAK,qBAAqB,GAAG;IAC3B,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,EAAE,UAAU,CAAC;IACvB,WAAW,EAAE,MAAM,0BAA0B,CAAC;CAC/C,CAAC;AAKF,wBAAgB,uBAAuB,IAAI,OAAO,CAGjD;AAED,wBAAgB,oBAAoB,CAAC,EACnC,QAAQ,EACR,UAAU,EACV,WAAW,GACZ,EAAE,qBAAqB,GAAG,cAAc,GAAG,IAAI,CAkE/C;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,gBAAgB,CA+DzE"}
@@ -45,7 +45,7 @@ export interface PickerTheme {
45
45
  border: string;
46
46
  borderActive: string;
47
47
  }
48
- export declare function buildPickerTheme(base: TerminalTheme, isDark: boolean): PickerTheme;
48
+ export declare function buildPickerTheme(base: TerminalTheme): PickerTheme;
49
49
  /** The payload the picker resolves with on successful submission. */
50
50
  export interface WorkflowPickerResult {
51
51
  /** The workflow the user committed to running. */
@@ -99,6 +99,7 @@ export declare class WorkflowPickerPanel {
99
99
  private renderer;
100
100
  private root;
101
101
  private destroyed;
102
+ private terminalBackgroundSynced;
102
103
  private resolveSelection;
103
104
  private selectionPromise;
104
105
  private constructor();
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-picker-panel.d.ts","sourceRoot":"","sources":["../../../src/sdk/components/workflow-picker-panel.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow-picker-panel.d.ts","sourceRoot":"","sources":["../../../src/sdk/components/workflow-picker-panel.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/sdk/runtime/executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/sdk/runtime/executor.ts"],"names":[],"mappings":"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"}
@@ -9,13 +9,17 @@
9
9
  import type { ThemeMode } from "@opentui/core";
10
10
  export interface TerminalTheme {
11
11
  bg: string;
12
+ backgroundPanel: string;
13
+ backgroundElement: string;
12
14
  surface: string;
13
15
  selection: string;
14
16
  border: string;
15
17
  borderDim: string;
16
18
  accent: string;
17
19
  text: string;
20
+ textMuted: string;
18
21
  dim: string;
22
+ info: string;
19
23
  success: string;
20
24
  error: string;
21
25
  warning: string;
@@ -1 +1 @@
1
- {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../src/sdk/runtime/theme.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAM/C,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AA4CD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,GAAG,aAAa,CAElE"}
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../src/sdk/runtime/theme.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAO/C,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AA+BD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,GAAG,aAAa,CAElE"}
@@ -1,3 +1,4 @@
1
+ import { type ColorName } from "@catppuccin/palette";
1
2
  export declare const COLORS: {
2
3
  readonly bold: "\u001B[1m";
3
4
  readonly dim: "\u001B[2m";
@@ -16,6 +17,7 @@ export declare const COLORS: {
16
17
  readonly blue: "";
17
18
  };
18
19
  export type PaletteKey = "text" | "dim" | "accent" | "success" | "error" | "warning" | "mauve" | "info";
20
+ export declare function paletteRgb(name: ColorName): readonly [number, number, number];
19
21
  export declare const PALETTE: Record<PaletteKey, readonly [number, number, number]>;
20
22
  export interface PaintOptions {
21
23
  bold?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../src/theme/colors.ts"],"names":[],"mappings":"AA0BA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;CAA2C,CAAC;AAU/D,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAExG,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CASzE,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY,KAAK,MAAM,CAAC;AAEnF;;;;;;;GAOG;AACH,wBAAgB,aAAa,IAAI,KAAK,CA2BrC"}
1
+ {"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../src/theme/colors.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AA0B9D,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;CAA2C,CAAC;AAS/D,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAExG,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAG7E;AAED,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CASzE,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY,KAAK,MAAM,CAAC;AAEnF;;;;;;;GAOG;AACH,wBAAgB,aAAa,IAAI,KAAK,CA2BrC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bastani/atomic",
3
- "version": "0.6.6",
3
+ "version": "0.6.7-0",
4
4
  "description": "Configuration management CLI and SDK for coding agents",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -77,6 +77,7 @@
77
77
  },
78
78
  "dependencies": {
79
79
  "@anthropic-ai/claude-agent-sdk": "^0.2.126",
80
+ "@catppuccin/palette": "^1.8.0",
80
81
  "@clack/prompts": "^1.3.0",
81
82
  "@commander-js/extra-typings": "^14.0.0",
82
83
  "@github/copilot-sdk": "^0.3.0",
package/src/cli.ts CHANGED
@@ -15,7 +15,7 @@
15
15
  * atomic workflow session connect <id> Attach to a session
16
16
  * atomic session list List all running sessions
17
17
  * atomic session connect [id] Interactive session picker
18
- * atomic session kill [id] [-y] Kill a session (or all when no id); -y skips prompt
18
+ * atomic session kill [id] [--all] [-y] Kill sessions; no id opens multi-select
19
19
  * atomic config set <key> <value> Set configuration value
20
20
  * atomic --version Show version
21
21
  * atomic --help Show help
@@ -87,7 +87,7 @@ Examples:
87
87
  $ atomic chat -a claude "fix the bug" Claude with initial prompt
88
88
  $ atomic chat session list List running sessions
89
89
  $ atomic chat session connect <id> Attach to a session
90
- $ atomic chat session kill [id] Kill a chat session (or all)`,
90
+ $ atomic chat session kill [id] Kill a chat session (multi-select when no id)`,
91
91
  )
92
92
  .action(async (localOpts, cmd) => {
93
93
  const validAgents = Object.keys(AGENT_CONFIG);
@@ -156,7 +156,7 @@ Examples:
156
156
  $ atomic workflow status <id> Query a single workflow's status
157
157
  $ atomic workflow session list List running sessions
158
158
  $ atomic workflow session connect <id> Attach to a session
159
- $ atomic workflow session kill [id] -y Kill a workflow session (or all), no prompt`,
159
+ $ atomic workflow session kill --all -y Kill all workflow sessions, no prompt`,
160
160
  );
161
161
 
162
162
  program.addCommand(workflowCommand);
@@ -67,14 +67,15 @@ export function addSessionSubcommand(
67
67
 
68
68
  sessionCmd
69
69
  .command("kill")
70
- .description("Kill a running session (omit id to kill all in scope)")
71
- .argument("[session_id]", "Session name to kill (omit to kill all)")
70
+ .description("Kill running sessions (interactive multi-select when no id given)")
71
+ .argument("[session_id]", "Session name to kill (omit for interactive multi-select)")
72
72
  .option(
73
73
  "-a, --agent <name>",
74
74
  "Filter by agent backend (claude, copilot, opencode); repeatable",
75
75
  collectAgent,
76
76
  [] as string[],
77
77
  )
78
+ .option("--all", "Select all matching sessions (kills immediately with --yes)")
78
79
  .option("-y, --yes", "Skip the confirmation prompt (required for agent callers)")
79
80
  .action(async (sessionId, localOpts) => {
80
81
  const { sessionKillCommand } = await import("./session.ts");
@@ -83,7 +84,7 @@ export function addSessionSubcommand(
83
84
  localOpts.agent,
84
85
  scope,
85
86
  undefined,
86
- { yes: localOpts.yes === true },
87
+ { yes: localOpts.yes === true, all: localOpts.all === true },
87
88
  );
88
89
  process.exit(exitCode);
89
90
  });
@@ -288,6 +288,8 @@ const tmuxMocks = {
288
288
  spawnMuxAttach: mock(() => ({ exited: Promise.resolve(0) }) as never),
289
289
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
290
290
  select: mock<(...args: any[]) => Promise<string | symbol>>(() => Promise.resolve("my-session")),
291
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
292
+ multiselect: mock<(...args: any[]) => Promise<string[] | symbol>>(() => Promise.resolve([])),
291
293
  killSession: mock<(name: string) => void>(() => {}),
292
294
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
293
295
  confirm: mock<(...args: any[]) => Promise<boolean | symbol>>(() => Promise.resolve(true)),
@@ -309,6 +311,7 @@ function resetTmuxMocks(): void {
309
311
  tmuxMocks.detachAndAttachAtomic.mockReset();
310
312
  tmuxMocks.spawnMuxAttach.mockReset().mockReturnValue({ exited: Promise.resolve(0) } as never);
311
313
  tmuxMocks.select.mockReset().mockResolvedValue("my-session");
314
+ tmuxMocks.multiselect.mockReset().mockResolvedValue([]);
312
315
  tmuxMocks.killSession.mockReset();
313
316
  tmuxMocks.confirm.mockReset().mockResolvedValue(true);
314
317
  }
@@ -628,24 +631,29 @@ describe("sessionKillCommand", () => {
628
631
  }
629
632
  });
630
633
 
631
- // (h) omitted id, N sessions, user confirms → killSession called for each, return 0
632
- test("omitted id prompts and kills all sessions on confirm", async () => {
634
+ // (h) omitted id, N sessions, user selects sessions and confirms → killSession called for selected, return 0
635
+ test("omitted id prompts with multiselect and kills selected sessions on confirm", async () => {
633
636
  const now = new Date().toISOString();
634
637
  tmuxMocks.listSessions.mockReturnValue([
635
638
  { name: "session-a", windows: 1, created: now, attached: false, type: "chat" as const, agent: "claude" },
636
639
  { name: "session-b", windows: 1, created: now, attached: false, type: "workflow" as const, agent: "opencode" },
637
640
  { name: "session-c", windows: 1, created: now, attached: false, type: "chat" as const, agent: "copilot" },
638
641
  ]);
642
+ tmuxMocks.multiselect.mockResolvedValue(["session-a", "session-c"]);
639
643
  tmuxMocks.confirm.mockResolvedValue(true);
640
644
  const origWrite = process.stdout.write;
641
645
  process.stdout.write = (() => true) as typeof process.stdout.write;
642
646
  try {
643
647
  const code = await sessionKillCommand(undefined, [], "all", makeDeps());
644
648
  expect(code).toBe(0);
645
- expect(tmuxMocks.killSession).toHaveBeenCalledTimes(3);
649
+ expect(tmuxMocks.multiselect).toHaveBeenCalledTimes(1);
650
+ expect(tmuxMocks.multiselect).toHaveBeenCalledWith(expect.objectContaining({
651
+ message: "Select sessions to kill (Space toggles, Enter continues)",
652
+ }));
653
+ expect(tmuxMocks.killSession).toHaveBeenCalledTimes(2);
646
654
  expect(tmuxMocks.killSession).toHaveBeenCalledWith("session-a");
647
- expect(tmuxMocks.killSession).toHaveBeenCalledWith("session-b");
648
655
  expect(tmuxMocks.killSession).toHaveBeenCalledWith("session-c");
656
+ expect(tmuxMocks.killSession).not.toHaveBeenCalledWith("session-b");
649
657
  } finally {
650
658
  process.stdout.write = origWrite;
651
659
  }
@@ -658,6 +666,7 @@ describe("sessionKillCommand", () => {
658
666
  { name: "chat-session", windows: 1, created: now, attached: false, type: "chat" as const, agent: "claude" },
659
667
  { name: "wf-session", windows: 1, created: now, attached: false, type: "workflow" as const, agent: "opencode" },
660
668
  ]);
669
+ tmuxMocks.multiselect.mockResolvedValue(["chat-session"]);
661
670
  tmuxMocks.confirm.mockResolvedValue(true);
662
671
  const origWrite = process.stdout.write;
663
672
  process.stdout.write = (() => true) as typeof process.stdout.write;
@@ -679,6 +688,7 @@ describe("sessionKillCommand", () => {
679
688
  { name: "chat-session", windows: 1, created: now, attached: false, type: "chat" as const, agent: "claude" },
680
689
  { name: "wf-session", windows: 1, created: now, attached: false, type: "workflow" as const, agent: "opencode" },
681
690
  ]);
691
+ tmuxMocks.multiselect.mockResolvedValue(["wf-session"]);
682
692
  tmuxMocks.confirm.mockResolvedValue(true);
683
693
  const origWrite = process.stdout.write;
684
694
  process.stdout.write = (() => true) as typeof process.stdout.write;
@@ -700,6 +710,7 @@ describe("sessionKillCommand", () => {
700
710
  { name: "session-x", windows: 1, created: now, attached: false, type: "chat" as const },
701
711
  { name: "session-y", windows: 1, created: now, attached: false, type: "workflow" as const },
702
712
  ]);
713
+ tmuxMocks.multiselect.mockResolvedValue(["session-x", "session-y"]);
703
714
  tmuxMocks.confirm.mockResolvedValue(false);
704
715
  const origWrite = process.stdout.write;
705
716
  process.stdout.write = (() => true) as typeof process.stdout.write;
@@ -736,19 +747,81 @@ describe("sessionKillCommand", () => {
736
747
  }
737
748
  });
738
749
 
739
- // (m) -y on kill-all: skip prompt and kill every in-scope session
740
- test("yes flag skips the prompt for kill-all and kills every in-scope session", async () => {
750
+ // (m) -y on omitted id: skip confirm after selection and kill selected sessions
751
+ test("yes flag skips the confirmation prompt after selecting sessions", async () => {
741
752
  const now = new Date().toISOString();
742
753
  tmuxMocks.listSessions.mockReturnValue([
743
754
  { name: "session-a", windows: 1, created: now, attached: false, type: "chat" as const, agent: "claude" },
744
755
  { name: "session-b", windows: 1, created: now, attached: false, type: "workflow" as const, agent: "opencode" },
745
756
  ]);
757
+ tmuxMocks.multiselect.mockResolvedValue(["session-b"]);
746
758
  const origWrite = process.stdout.write;
747
759
  process.stdout.write = (() => true) as typeof process.stdout.write;
748
760
  try {
749
761
  const code = await sessionKillCommand(undefined, [], "all", makeDeps(), { yes: true });
750
762
  expect(code).toBe(0);
751
763
  expect(tmuxMocks.confirm).not.toHaveBeenCalled();
764
+ expect(tmuxMocks.killSession).toHaveBeenCalledTimes(1);
765
+ expect(tmuxMocks.killSession).toHaveBeenCalledWith("session-b");
766
+ } finally {
767
+ process.stdout.write = origWrite;
768
+ }
769
+ });
770
+
771
+ test("selecting the all option kills every matching session after confirmation", async () => {
772
+ const now = new Date().toISOString();
773
+ tmuxMocks.listSessions.mockReturnValue([
774
+ { name: "session-a", windows: 1, created: now, attached: false, type: "chat" as const, agent: "claude" },
775
+ { name: "session-b", windows: 1, created: now, attached: false, type: "workflow" as const, agent: "opencode" },
776
+ ]);
777
+ tmuxMocks.multiselect.mockResolvedValue(["__atomic_select_all_sessions__"]);
778
+ tmuxMocks.confirm.mockResolvedValue(true);
779
+ const origWrite = process.stdout.write;
780
+ process.stdout.write = (() => true) as typeof process.stdout.write;
781
+ try {
782
+ const code = await sessionKillCommand(undefined, [], "all", makeDeps());
783
+ expect(code).toBe(0);
784
+ expect(tmuxMocks.killSession).toHaveBeenCalledTimes(2);
785
+ expect(tmuxMocks.killSession).toHaveBeenCalledWith("session-a");
786
+ expect(tmuxMocks.killSession).toHaveBeenCalledWith("session-b");
787
+ } finally {
788
+ process.stdout.write = origWrite;
789
+ }
790
+ });
791
+
792
+ test("all flag skips multiselect and confirms every matching session", async () => {
793
+ const now = new Date().toISOString();
794
+ tmuxMocks.listSessions.mockReturnValue([
795
+ { name: "session-a", windows: 1, created: now, attached: false, type: "chat" as const, agent: "claude" },
796
+ { name: "session-b", windows: 1, created: now, attached: false, type: "workflow" as const, agent: "opencode" },
797
+ ]);
798
+ tmuxMocks.confirm.mockResolvedValue(true);
799
+ const origWrite = process.stdout.write;
800
+ process.stdout.write = (() => true) as typeof process.stdout.write;
801
+ try {
802
+ const code = await sessionKillCommand(undefined, [], "all", makeDeps(), { all: true });
803
+ expect(code).toBe(0);
804
+ expect(tmuxMocks.multiselect).not.toHaveBeenCalled();
805
+ expect(tmuxMocks.confirm).toHaveBeenCalledTimes(1);
806
+ expect(tmuxMocks.killSession).toHaveBeenCalledTimes(2);
807
+ } finally {
808
+ process.stdout.write = origWrite;
809
+ }
810
+ });
811
+
812
+ test("all and yes flags kill every matching session without prompts", async () => {
813
+ const now = new Date().toISOString();
814
+ tmuxMocks.listSessions.mockReturnValue([
815
+ { name: "session-a", windows: 1, created: now, attached: false, type: "chat" as const, agent: "claude" },
816
+ { name: "session-b", windows: 1, created: now, attached: false, type: "workflow" as const, agent: "opencode" },
817
+ ]);
818
+ const origWrite = process.stdout.write;
819
+ process.stdout.write = (() => true) as typeof process.stdout.write;
820
+ try {
821
+ const code = await sessionKillCommand(undefined, [], "all", makeDeps(), { all: true, yes: true });
822
+ expect(code).toBe(0);
823
+ expect(tmuxMocks.multiselect).not.toHaveBeenCalled();
824
+ expect(tmuxMocks.confirm).not.toHaveBeenCalled();
752
825
  expect(tmuxMocks.killSession).toHaveBeenCalledTimes(2);
753
826
  } finally {
754
827
  process.stdout.write = origWrite;