zwarm 3.4.0__tar.gz → 3.7.0__tar.gz

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 (41) hide show
  1. {zwarm-3.4.0 → zwarm-3.7.0}/PKG-INFO +70 -21
  2. {zwarm-3.4.0 → zwarm-3.7.0}/README.md +69 -20
  3. {zwarm-3.4.0 → zwarm-3.7.0}/pyproject.toml +12 -1
  4. {zwarm-3.4.0 → zwarm-3.7.0}/src/zwarm/cli/interactive.py +420 -52
  5. {zwarm-3.4.0 → zwarm-3.7.0}/src/zwarm/cli/main.py +127 -14
  6. {zwarm-3.4.0 → zwarm-3.7.0}/src/zwarm/cli/pilot.py +52 -4
  7. zwarm-3.7.0/src/zwarm/core/costs.py +71 -0
  8. {zwarm-3.4.0 → zwarm-3.7.0}/src/zwarm/core/environment.py +55 -1
  9. zwarm-3.7.0/src/zwarm/core/registry.py +329 -0
  10. {zwarm-3.4.0 → zwarm-3.7.0}/src/zwarm/orchestrator.py +64 -12
  11. zwarm-3.7.0/src/zwarm/sessions/__init__.py +65 -0
  12. zwarm-3.7.0/src/zwarm/sessions/base.py +501 -0
  13. zwarm-3.7.0/src/zwarm/sessions/claude.py +481 -0
  14. {zwarm-3.4.0 → zwarm-3.7.0}/src/zwarm/sessions/manager.py +85 -458
  15. {zwarm-3.4.0 → zwarm-3.7.0}/src/zwarm/tools/delegation.py +126 -61
  16. zwarm-3.4.0/src/zwarm/core/costs.py +0 -199
  17. zwarm-3.4.0/src/zwarm/sessions/__init__.py +0 -26
  18. {zwarm-3.4.0 → zwarm-3.7.0}/.gitignore +0 -0
  19. {zwarm-3.4.0 → zwarm-3.7.0}/src/zwarm/__init__.py +0 -0
  20. {zwarm-3.4.0 → zwarm-3.7.0}/src/zwarm/cli/__init__.py +0 -0
  21. {zwarm-3.4.0 → zwarm-3.7.0}/src/zwarm/core/__init__.py +0 -0
  22. {zwarm-3.4.0 → zwarm-3.7.0}/src/zwarm/core/checkpoints.py +0 -0
  23. {zwarm-3.4.0 → zwarm-3.7.0}/src/zwarm/core/compact.py +0 -0
  24. {zwarm-3.4.0 → zwarm-3.7.0}/src/zwarm/core/config.py +0 -0
  25. {zwarm-3.4.0 → zwarm-3.7.0}/src/zwarm/core/models.py +0 -0
  26. {zwarm-3.4.0 → zwarm-3.7.0}/src/zwarm/core/state.py +0 -0
  27. {zwarm-3.4.0 → zwarm-3.7.0}/src/zwarm/core/test_compact.py +0 -0
  28. {zwarm-3.4.0 → zwarm-3.7.0}/src/zwarm/core/test_config.py +0 -0
  29. {zwarm-3.4.0 → zwarm-3.7.0}/src/zwarm/core/test_models.py +0 -0
  30. {zwarm-3.4.0 → zwarm-3.7.0}/src/zwarm/prompts/__init__.py +0 -0
  31. {zwarm-3.4.0 → zwarm-3.7.0}/src/zwarm/prompts/orchestrator.py +0 -0
  32. {zwarm-3.4.0 → zwarm-3.7.0}/src/zwarm/prompts/pilot.py +0 -0
  33. {zwarm-3.4.0 → zwarm-3.7.0}/src/zwarm/test_orchestrator_watchers.py +0 -0
  34. {zwarm-3.4.0 → zwarm-3.7.0}/src/zwarm/tools/__init__.py +0 -0
  35. {zwarm-3.4.0 → zwarm-3.7.0}/src/zwarm/watchers/__init__.py +0 -0
  36. {zwarm-3.4.0 → zwarm-3.7.0}/src/zwarm/watchers/base.py +0 -0
  37. {zwarm-3.4.0 → zwarm-3.7.0}/src/zwarm/watchers/builtin.py +0 -0
  38. {zwarm-3.4.0 → zwarm-3.7.0}/src/zwarm/watchers/llm_watcher.py +0 -0
  39. {zwarm-3.4.0 → zwarm-3.7.0}/src/zwarm/watchers/manager.py +0 -0
  40. {zwarm-3.4.0 → zwarm-3.7.0}/src/zwarm/watchers/registry.py +0 -0
  41. {zwarm-3.4.0 → zwarm-3.7.0}/src/zwarm/watchers/test_watchers.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: zwarm
3
- Version: 3.4.0
3
+ Version: 3.7.0
4
4
  Summary: Multi-Agent CLI Orchestration Research Platform
5
5
  Requires-Python: <3.14,>=3.13
6
6
  Requires-Dist: prompt-toolkit>=3.0.52
@@ -13,26 +13,30 @@ Description-Content-Type: text/markdown
13
13
 
14
14
  # zwarm
15
15
 
16
- Multi-agent CLI for orchestrating coding agents. Spawn, manage, and converse with multiple Codex sessions in parallel.
16
+ Multi-agent CLI for orchestrating coding agents. Spawn, manage, and converse with multiple coding agent sessions in parallel.
17
+
18
+ **Supports both [Codex CLI](https://github.com/openai/codex) and [Claude Code CLI](https://claude.com/claude-code).**
17
19
 
18
20
  ## Installation
19
21
 
20
22
  ```bash
21
- # From the workspace
22
- cd /path/to/labs
23
- uv sync
23
+ # From PyPI
24
+ pip install zwarm
24
25
 
25
- # Or install directly
26
- uv pip install -e ./zwarm
26
+ # Or with uv
27
+ uv pip install zwarm
27
28
  ```
28
29
 
29
30
  **Requirements:**
30
31
  - Python 3.13+
31
- - `codex` CLI installed and authenticated
32
+ - At least one of:
33
+ - `codex` CLI installed and authenticated (OpenAI)
34
+ - `claude` CLI installed and authenticated (Anthropic)
32
35
 
33
36
  **Environment:**
34
37
  ```bash
35
38
  export OPENAI_API_KEY="sk-..." # Required for Codex
39
+ export ANTHROPIC_API_KEY="sk-..." # Required for Claude
36
40
  export WEAVE_PROJECT="entity/zwarm" # Optional: Weave tracing
37
41
  ```
38
42
 
@@ -78,6 +82,19 @@ zwarm interactive
78
82
 
79
83
  ---
80
84
 
85
+ ## Multi-Adapter Support
86
+
87
+ zwarm supports multiple executor backends:
88
+
89
+ | Adapter | CLI | Models | Config |
90
+ |---------|-----|--------|--------|
91
+ | **Codex** | `codex` | gpt-5.1-codex-mini, etc. | `.zwarm/codex.toml` |
92
+ | **Claude** | `claude` | sonnet, opus, haiku | `.zwarm/claude.toml` |
93
+
94
+ You can mix adapters in the same session - for example, use Claude Opus for complex reasoning tasks and Codex Mini for quick edits.
95
+
96
+ ---
97
+
81
98
  ## Pilot Mode
82
99
 
83
100
  **You chat with an LLM that delegates to coding agents.** Best of both worlds - LLM intelligence with human oversight.
@@ -85,12 +102,14 @@ zwarm interactive
85
102
  ```bash
86
103
  zwarm pilot
87
104
  zwarm pilot --task "Add user authentication"
105
+ zwarm pilot --resume # Resume previous session
88
106
  ```
89
107
 
90
108
  ### Features
91
109
 
92
110
  - **Conversational**: Chat naturally, the LLM handles delegation
93
111
  - **Checkpoints**: Every turn is saved, time-travel with `:goto`
112
+ - **Resume**: Continue where you left off with `--resume`
94
113
  - **Multiline input**: Use `"""` for pasting large prompts
95
114
  - **Status bar**: See token usage, cost estimates, context window
96
115
 
@@ -103,7 +122,8 @@ zwarm pilot --task "Add user authentication"
103
122
  | `:history` | Show turn checkpoints |
104
123
  | `:goto T3` | Jump back to turn 3 |
105
124
  | `:sessions` | List executor sessions |
106
- | `:quit` | Exit |
125
+ | `:save` | Save current state |
126
+ | `:quit` | Exit (auto-saves) |
107
127
 
108
128
  ### Example
109
129
 
@@ -162,7 +182,7 @@ zwarm interactive
162
182
  | Command | Description |
163
183
  |---------|-------------|
164
184
  | `spawn "task" [--search]` | Start a new session (--search enables web) |
165
- | `ls` | Dashboard of all sessions (with costs) |
185
+ | `ls` | Dashboard of all sessions (with costs, models) |
166
186
  | `? ID` / `peek ID` | Quick status check |
167
187
  | `show ID` | Full session details |
168
188
  | `traj ID` | Show trajectory (steps taken) |
@@ -170,6 +190,7 @@ zwarm interactive
170
190
  | `c ID "msg"` | Continue conversation |
171
191
  | `kill ID \| all` | Stop session(s) |
172
192
  | `rm ID \| all` | Delete session(s) |
193
+ | `!command` | Run shell command (e.g., `!git status`) |
173
194
  | `help` | Show all commands |
174
195
  | `quit` | Exit |
175
196
 
@@ -188,9 +209,9 @@ $ zwarm interactive
188
209
  > ls
189
210
  ⟳ 2 running
190
211
 
191
- ID │ │ Task │ Tokens │ Cost
192
- abc123 │ ⟳ │ Add tests for the auth... │ 5,234 │ $0.052
193
- def456 │ ⟳ │ Fix type errors in utils... │ 2,100 │ $0.021
212
+ ID │ │ Task │ Model │ Tokens │ Cost
213
+ abc123 │ ⟳ │ Add tests for the auth... │ codex-mini │ 5,234 │ $0.052
214
+ def456 │ ⟳ │ Fix type errors in utils... │ codex-mini │ 2,100 │ $0.021
194
215
 
195
216
  > watch abc123
196
217
  Watching abc123... (Ctrl+C to stop)
@@ -201,6 +222,11 @@ Watching abc123... (Ctrl+C to stop)
201
222
  > c abc123 "Also add edge case tests"
202
223
  ✓ Injected message, session running
203
224
 
225
+ > !git status
226
+ On branch main
227
+ Changes not staged for commit:
228
+ ...
229
+
204
230
  > kill all
205
231
  ✓ Killed abc123
206
232
  ✓ Killed def456
@@ -225,7 +251,7 @@ The orchestrator LLM has access to:
225
251
 
226
252
  | Tool | Description |
227
253
  |------|-------------|
228
- | `delegate(task, web_search=False)` | Start a new coding session |
254
+ | `delegate(task, adapter="codex")` | Start a new coding session |
229
255
  | `converse(id, msg)` | Continue a session |
230
256
  | `check_session(id)` | Get full session details |
231
257
  | `peek_session(id)` | Quick status check |
@@ -235,7 +261,9 @@ The orchestrator LLM has access to:
235
261
 
236
262
  **Async-first**: All sessions run in the background. The orchestrator uses `sleep()` to wait, then checks on progress.
237
263
 
238
- **Web Search**: Pass `web_search=True` to `delegate()` for tasks needing current info (API docs, latest releases, etc.).
264
+ **Multi-adapter**: Pass `adapter="claude"` or `adapter="codex"` to `delegate()` to choose the backend.
265
+
266
+ **Web Search**: Enable `web_search=True` in config for tasks needing current info (API docs, latest releases, etc.).
239
267
 
240
268
  ### Watchers
241
269
 
@@ -285,9 +313,9 @@ spawn → running → completed/failed/killed
285
313
 
286
314
  ```
287
315
  .zwarm/sessions/<uuid>/
288
- ├── meta.json # Status, task, model, tokens, cost
316
+ ├── meta.json # Status, task, model, adapter, tokens, cost
289
317
  └── turns/
290
- ├── turn_1.jsonl # Raw codex output for turn 1
318
+ ├── turn_1.jsonl # Raw executor output for turn 1
291
319
  ├── turn_2.jsonl # Output after continue
292
320
  └── ...
293
321
  ```
@@ -305,6 +333,7 @@ zwarm init
305
333
  This creates:
306
334
  - `.zwarm/config.toml` - Runtime settings (Weave, watchers)
307
335
  - `.zwarm/codex.toml` - Codex CLI settings (model, reasoning)
336
+ - `.zwarm/claude.toml` - Claude CLI settings (model, permissions)
308
337
  - `zwarm.yaml` - Project context (optional, with `--with-project`)
309
338
 
310
339
  ### Config Files
@@ -318,9 +347,11 @@ project = "your-entity/zwarm"
318
347
  max_steps = 50
319
348
 
320
349
  [executor]
321
- adapter = "codex_mcp"
322
350
  web_search = false # Enable web search for all delegated sessions
323
351
 
352
+ [pilot]
353
+ max_steps_per_turn = 25
354
+
324
355
  [watchers]
325
356
  enabled = ["progress", "budget", "delegation", "delegation_reminder"]
326
357
  ```
@@ -329,6 +360,13 @@ enabled = ["progress", "budget", "delegation", "delegation_reminder"]
329
360
  ```toml
330
361
  model = "gpt-5.1-codex-mini"
331
362
  model_reasoning_effort = "high" # low | medium | high
363
+ full_auto = true
364
+ ```
365
+
366
+ **`.zwarm/claude.toml`** - Controls the Claude Code CLI:
367
+ ```toml
368
+ model = "sonnet" # sonnet | opus | haiku
369
+ full_danger = true # Skip permission prompts
332
370
  ```
333
371
 
334
372
  **`zwarm.yaml`** - Project-specific context:
@@ -355,6 +393,7 @@ zwarm init --yes # Quick setup with defaults
355
393
 
356
394
  # Interfaces
357
395
  zwarm pilot # Conversational LLM guidance (recommended)
396
+ zwarm pilot --resume # Resume previous session
358
397
  zwarm interactive # Direct session control REPL
359
398
  zwarm orchestrate # Fully autonomous LLM
360
399
 
@@ -377,13 +416,15 @@ zwarm reset # Reset .zwarm/ state
377
416
  zwarm/
378
417
  ├── src/zwarm/
379
418
  │ ├── sessions/ # Session substrate
380
- │ │ └── manager.py # CodexSessionManager (ground truth)
419
+ │ │ ├── base.py # BaseSessionManager (ABC)
420
+ │ │ ├── manager.py # CodexSessionManager
421
+ │ │ └── claude.py # ClaudeSessionManager
381
422
  │ ├── cli/
382
423
  │ │ ├── main.py # CLI commands
383
424
  │ │ ├── pilot.py # Pilot REPL
384
425
  │ │ └── interactive.py # Interactive REPL
385
426
  │ ├── tools/
386
- │ │ └── delegation.py # Orchestrator tools
427
+ │ │ └── delegation.py # Orchestrator tools (multi-adapter)
387
428
  │ ├── core/
388
429
  │ │ ├── config.py # Configuration
389
430
  │ │ ├── checkpoints.py # Time-travel primitives
@@ -392,5 +433,13 @@ zwarm/
392
433
  │ ├── watchers/ # Trajectory alignment
393
434
  │ ├── prompts/ # System prompts
394
435
  │ └── orchestrator.py # Orchestrator agent
395
- └── STATE.md # Current project state
436
+ └── docs/
437
+ ├── CONCEPTS.md # Architecture diagrams
438
+ └── INTERNALS.md # Developer documentation
396
439
  ```
440
+
441
+ ---
442
+
443
+ ## License
444
+
445
+ MIT
@@ -1,25 +1,29 @@
1
1
  # zwarm
2
2
 
3
- Multi-agent CLI for orchestrating coding agents. Spawn, manage, and converse with multiple Codex sessions in parallel.
3
+ Multi-agent CLI for orchestrating coding agents. Spawn, manage, and converse with multiple coding agent sessions in parallel.
4
+
5
+ **Supports both [Codex CLI](https://github.com/openai/codex) and [Claude Code CLI](https://claude.com/claude-code).**
4
6
 
5
7
  ## Installation
6
8
 
7
9
  ```bash
8
- # From the workspace
9
- cd /path/to/labs
10
- uv sync
10
+ # From PyPI
11
+ pip install zwarm
11
12
 
12
- # Or install directly
13
- uv pip install -e ./zwarm
13
+ # Or with uv
14
+ uv pip install zwarm
14
15
  ```
15
16
 
16
17
  **Requirements:**
17
18
  - Python 3.13+
18
- - `codex` CLI installed and authenticated
19
+ - At least one of:
20
+ - `codex` CLI installed and authenticated (OpenAI)
21
+ - `claude` CLI installed and authenticated (Anthropic)
19
22
 
20
23
  **Environment:**
21
24
  ```bash
22
25
  export OPENAI_API_KEY="sk-..." # Required for Codex
26
+ export ANTHROPIC_API_KEY="sk-..." # Required for Claude
23
27
  export WEAVE_PROJECT="entity/zwarm" # Optional: Weave tracing
24
28
  ```
25
29
 
@@ -65,6 +69,19 @@ zwarm interactive
65
69
 
66
70
  ---
67
71
 
72
+ ## Multi-Adapter Support
73
+
74
+ zwarm supports multiple executor backends:
75
+
76
+ | Adapter | CLI | Models | Config |
77
+ |---------|-----|--------|--------|
78
+ | **Codex** | `codex` | gpt-5.1-codex-mini, etc. | `.zwarm/codex.toml` |
79
+ | **Claude** | `claude` | sonnet, opus, haiku | `.zwarm/claude.toml` |
80
+
81
+ You can mix adapters in the same session - for example, use Claude Opus for complex reasoning tasks and Codex Mini for quick edits.
82
+
83
+ ---
84
+
68
85
  ## Pilot Mode
69
86
 
70
87
  **You chat with an LLM that delegates to coding agents.** Best of both worlds - LLM intelligence with human oversight.
@@ -72,12 +89,14 @@ zwarm interactive
72
89
  ```bash
73
90
  zwarm pilot
74
91
  zwarm pilot --task "Add user authentication"
92
+ zwarm pilot --resume # Resume previous session
75
93
  ```
76
94
 
77
95
  ### Features
78
96
 
79
97
  - **Conversational**: Chat naturally, the LLM handles delegation
80
98
  - **Checkpoints**: Every turn is saved, time-travel with `:goto`
99
+ - **Resume**: Continue where you left off with `--resume`
81
100
  - **Multiline input**: Use `"""` for pasting large prompts
82
101
  - **Status bar**: See token usage, cost estimates, context window
83
102
 
@@ -90,7 +109,8 @@ zwarm pilot --task "Add user authentication"
90
109
  | `:history` | Show turn checkpoints |
91
110
  | `:goto T3` | Jump back to turn 3 |
92
111
  | `:sessions` | List executor sessions |
93
- | `:quit` | Exit |
112
+ | `:save` | Save current state |
113
+ | `:quit` | Exit (auto-saves) |
94
114
 
95
115
  ### Example
96
116
 
@@ -149,7 +169,7 @@ zwarm interactive
149
169
  | Command | Description |
150
170
  |---------|-------------|
151
171
  | `spawn "task" [--search]` | Start a new session (--search enables web) |
152
- | `ls` | Dashboard of all sessions (with costs) |
172
+ | `ls` | Dashboard of all sessions (with costs, models) |
153
173
  | `? ID` / `peek ID` | Quick status check |
154
174
  | `show ID` | Full session details |
155
175
  | `traj ID` | Show trajectory (steps taken) |
@@ -157,6 +177,7 @@ zwarm interactive
157
177
  | `c ID "msg"` | Continue conversation |
158
178
  | `kill ID \| all` | Stop session(s) |
159
179
  | `rm ID \| all` | Delete session(s) |
180
+ | `!command` | Run shell command (e.g., `!git status`) |
160
181
  | `help` | Show all commands |
161
182
  | `quit` | Exit |
162
183
 
@@ -175,9 +196,9 @@ $ zwarm interactive
175
196
  > ls
176
197
  ⟳ 2 running
177
198
 
178
- ID │ │ Task │ Tokens │ Cost
179
- abc123 │ ⟳ │ Add tests for the auth... │ 5,234 │ $0.052
180
- def456 │ ⟳ │ Fix type errors in utils... │ 2,100 │ $0.021
199
+ ID │ │ Task │ Model │ Tokens │ Cost
200
+ abc123 │ ⟳ │ Add tests for the auth... │ codex-mini │ 5,234 │ $0.052
201
+ def456 │ ⟳ │ Fix type errors in utils... │ codex-mini │ 2,100 │ $0.021
181
202
 
182
203
  > watch abc123
183
204
  Watching abc123... (Ctrl+C to stop)
@@ -188,6 +209,11 @@ Watching abc123... (Ctrl+C to stop)
188
209
  > c abc123 "Also add edge case tests"
189
210
  ✓ Injected message, session running
190
211
 
212
+ > !git status
213
+ On branch main
214
+ Changes not staged for commit:
215
+ ...
216
+
191
217
  > kill all
192
218
  ✓ Killed abc123
193
219
  ✓ Killed def456
@@ -212,7 +238,7 @@ The orchestrator LLM has access to:
212
238
 
213
239
  | Tool | Description |
214
240
  |------|-------------|
215
- | `delegate(task, web_search=False)` | Start a new coding session |
241
+ | `delegate(task, adapter="codex")` | Start a new coding session |
216
242
  | `converse(id, msg)` | Continue a session |
217
243
  | `check_session(id)` | Get full session details |
218
244
  | `peek_session(id)` | Quick status check |
@@ -222,7 +248,9 @@ The orchestrator LLM has access to:
222
248
 
223
249
  **Async-first**: All sessions run in the background. The orchestrator uses `sleep()` to wait, then checks on progress.
224
250
 
225
- **Web Search**: Pass `web_search=True` to `delegate()` for tasks needing current info (API docs, latest releases, etc.).
251
+ **Multi-adapter**: Pass `adapter="claude"` or `adapter="codex"` to `delegate()` to choose the backend.
252
+
253
+ **Web Search**: Enable `web_search=True` in config for tasks needing current info (API docs, latest releases, etc.).
226
254
 
227
255
  ### Watchers
228
256
 
@@ -272,9 +300,9 @@ spawn → running → completed/failed/killed
272
300
 
273
301
  ```
274
302
  .zwarm/sessions/<uuid>/
275
- ├── meta.json # Status, task, model, tokens, cost
303
+ ├── meta.json # Status, task, model, adapter, tokens, cost
276
304
  └── turns/
277
- ├── turn_1.jsonl # Raw codex output for turn 1
305
+ ├── turn_1.jsonl # Raw executor output for turn 1
278
306
  ├── turn_2.jsonl # Output after continue
279
307
  └── ...
280
308
  ```
@@ -292,6 +320,7 @@ zwarm init
292
320
  This creates:
293
321
  - `.zwarm/config.toml` - Runtime settings (Weave, watchers)
294
322
  - `.zwarm/codex.toml` - Codex CLI settings (model, reasoning)
323
+ - `.zwarm/claude.toml` - Claude CLI settings (model, permissions)
295
324
  - `zwarm.yaml` - Project context (optional, with `--with-project`)
296
325
 
297
326
  ### Config Files
@@ -305,9 +334,11 @@ project = "your-entity/zwarm"
305
334
  max_steps = 50
306
335
 
307
336
  [executor]
308
- adapter = "codex_mcp"
309
337
  web_search = false # Enable web search for all delegated sessions
310
338
 
339
+ [pilot]
340
+ max_steps_per_turn = 25
341
+
311
342
  [watchers]
312
343
  enabled = ["progress", "budget", "delegation", "delegation_reminder"]
313
344
  ```
@@ -316,6 +347,13 @@ enabled = ["progress", "budget", "delegation", "delegation_reminder"]
316
347
  ```toml
317
348
  model = "gpt-5.1-codex-mini"
318
349
  model_reasoning_effort = "high" # low | medium | high
350
+ full_auto = true
351
+ ```
352
+
353
+ **`.zwarm/claude.toml`** - Controls the Claude Code CLI:
354
+ ```toml
355
+ model = "sonnet" # sonnet | opus | haiku
356
+ full_danger = true # Skip permission prompts
319
357
  ```
320
358
 
321
359
  **`zwarm.yaml`** - Project-specific context:
@@ -342,6 +380,7 @@ zwarm init --yes # Quick setup with defaults
342
380
 
343
381
  # Interfaces
344
382
  zwarm pilot # Conversational LLM guidance (recommended)
383
+ zwarm pilot --resume # Resume previous session
345
384
  zwarm interactive # Direct session control REPL
346
385
  zwarm orchestrate # Fully autonomous LLM
347
386
 
@@ -364,13 +403,15 @@ zwarm reset # Reset .zwarm/ state
364
403
  zwarm/
365
404
  ├── src/zwarm/
366
405
  │ ├── sessions/ # Session substrate
367
- │ │ └── manager.py # CodexSessionManager (ground truth)
406
+ │ │ ├── base.py # BaseSessionManager (ABC)
407
+ │ │ ├── manager.py # CodexSessionManager
408
+ │ │ └── claude.py # ClaudeSessionManager
368
409
  │ ├── cli/
369
410
  │ │ ├── main.py # CLI commands
370
411
  │ │ ├── pilot.py # Pilot REPL
371
412
  │ │ └── interactive.py # Interactive REPL
372
413
  │ ├── tools/
373
- │ │ └── delegation.py # Orchestrator tools
414
+ │ │ └── delegation.py # Orchestrator tools (multi-adapter)
374
415
  │ ├── core/
375
416
  │ │ ├── config.py # Configuration
376
417
  │ │ ├── checkpoints.py # Time-travel primitives
@@ -379,5 +420,13 @@ zwarm/
379
420
  │ ├── watchers/ # Trajectory alignment
380
421
  │ ├── prompts/ # System prompts
381
422
  │ └── orchestrator.py # Orchestrator agent
382
- └── STATE.md # Current project state
423
+ └── docs/
424
+ ├── CONCEPTS.md # Architecture diagrams
425
+ └── INTERNALS.md # Developer documentation
383
426
  ```
427
+
428
+ ---
429
+
430
+ ## License
431
+
432
+ MIT
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "zwarm"
3
- version = "3.4.0"
3
+ version = "3.7.0"
4
4
  description = "Multi-Agent CLI Orchestration Research Platform"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.13,<3.14"
@@ -41,3 +41,14 @@ dev = [
41
41
  "pytest>=8.0.0",
42
42
  "pytest-asyncio>=1.3.0",
43
43
  ]
44
+
45
+ [tool.coverage.run]
46
+ branch = true
47
+ source = ["zwarm"]
48
+ omit = [
49
+ "src/zwarm/__init__.py",
50
+ ]
51
+
52
+ [tool.coverage.report]
53
+ show_missing = true
54
+ fail_under = 80