pilot-workers 0.3.0__tar.gz → 0.5.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 (97) hide show
  1. {pilot_workers-0.3.0/src/pilot_workers.egg-info → pilot_workers-0.5.0}/PKG-INFO +31 -20
  2. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/README.md +30 -19
  3. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/pyproject.toml +1 -1
  4. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/src/pilot_workers/cli/dispatch.py +298 -71
  5. pilot_workers-0.5.0/src/pilot_workers/cli/fanout.py +653 -0
  6. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/src/pilot_workers/cli/install.py +146 -208
  7. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/src/pilot_workers/cli/main.py +10 -4
  8. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/src/pilot_workers/cli/run.py +86 -63
  9. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/src/pilot_workers/cli/status.py +79 -47
  10. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/src/pilot_workers/data/providers/ds.yaml +3 -0
  11. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/src/pilot_workers/data/providers/glm.yaml +3 -0
  12. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/src/pilot_workers/data/providers/kimi-k3.yaml +3 -0
  13. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/src/pilot_workers/integrations/README.md +2 -2
  14. pilot_workers-0.5.0/src/pilot_workers/integrations/claude-host/skills/pilot-workers/SKILL.md +198 -0
  15. pilot_workers-0.5.0/src/pilot_workers/integrations/codex-host/skills/pilot-workers/SKILL.md +183 -0
  16. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/src/pilot_workers/maintain.py +99 -1
  17. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/src/pilot_workers/policy.py +35 -3
  18. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/src/pilot_workers/prompts/code.md +11 -0
  19. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/src/pilot_workers/prompts/common.md +5 -1
  20. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/src/pilot_workers/prompts/explore.md +8 -0
  21. pilot_workers-0.5.0/src/pilot_workers/prompts/review.md +17 -0
  22. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/src/pilot_workers/prompts/test.md +10 -0
  23. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/src/pilot_workers/providers.py +24 -0
  24. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/src/pilot_workers/runners/base.py +2 -1
  25. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/src/pilot_workers/runners/opencode_runner.py +47 -2
  26. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/src/pilot_workers/runtime.py +144 -5
  27. {pilot_workers-0.3.0 → pilot_workers-0.5.0/src/pilot_workers.egg-info}/PKG-INFO +31 -20
  28. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/src/pilot_workers.egg-info/SOURCES.txt +10 -26
  29. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/tests/test_cli_main.py +2 -1
  30. pilot_workers-0.5.0/tests/test_dispatch.py +474 -0
  31. pilot_workers-0.5.0/tests/test_fanout.py +449 -0
  32. pilot_workers-0.5.0/tests/test_fanout_watchdog.py +415 -0
  33. pilot_workers-0.5.0/tests/test_install.py +420 -0
  34. pilot_workers-0.5.0/tests/test_integrations.py +143 -0
  35. pilot_workers-0.5.0/tests/test_maintain.py +277 -0
  36. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/tests/test_policy.py +100 -0
  37. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/tests/test_providers.py +89 -0
  38. pilot_workers-0.5.0/tests/test_result_extract.py +163 -0
  39. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/tests/test_run_cli.py +2 -1
  40. pilot_workers-0.5.0/tests/test_runner_cache.py +225 -0
  41. pilot_workers-0.5.0/tests/test_sandbox.py +314 -0
  42. pilot_workers-0.5.0/tests/test_status.py +168 -0
  43. pilot_workers-0.3.0/src/pilot_workers/integrations/claude-host/agents/ds-coder.md +0 -66
  44. pilot_workers-0.3.0/src/pilot_workers/integrations/claude-host/agents/ds-explorer.md +0 -56
  45. pilot_workers-0.3.0/src/pilot_workers/integrations/claude-host/agents/ds-reviewer.md +0 -50
  46. pilot_workers-0.3.0/src/pilot_workers/integrations/claude-host/agents/ds-tester.md +0 -46
  47. pilot_workers-0.3.0/src/pilot_workers/integrations/claude-host/agents/glm-coder.md +0 -66
  48. pilot_workers-0.3.0/src/pilot_workers/integrations/claude-host/agents/glm-explorer.md +0 -56
  49. pilot_workers-0.3.0/src/pilot_workers/integrations/claude-host/agents/glm-reviewer.md +0 -50
  50. pilot_workers-0.3.0/src/pilot_workers/integrations/claude-host/agents/glm-tester.md +0 -46
  51. pilot_workers-0.3.0/src/pilot_workers/integrations/claude-host/agents/kimi-coder.md +0 -66
  52. pilot_workers-0.3.0/src/pilot_workers/integrations/claude-host/agents/kimi-explorer.md +0 -56
  53. pilot_workers-0.3.0/src/pilot_workers/integrations/claude-host/agents/kimi-reviewer.md +0 -50
  54. pilot_workers-0.3.0/src/pilot_workers/integrations/claude-host/agents/kimi-tester.md +0 -50
  55. pilot_workers-0.3.0/src/pilot_workers/integrations/claude-host/commands/glm/code.md +0 -48
  56. pilot_workers-0.3.0/src/pilot_workers/integrations/claude-host/commands/glm/explore.md +0 -38
  57. pilot_workers-0.3.0/src/pilot_workers/integrations/claude-host/commands/glm/review.md +0 -38
  58. pilot_workers-0.3.0/src/pilot_workers/integrations/claude-host/commands/glm/test.md +0 -30
  59. pilot_workers-0.3.0/src/pilot_workers/integrations/claude-host/commands/kimi/code.md +0 -47
  60. pilot_workers-0.3.0/src/pilot_workers/integrations/claude-host/commands/kimi/explore.md +0 -38
  61. pilot_workers-0.3.0/src/pilot_workers/integrations/claude-host/commands/kimi/review.md +0 -38
  62. pilot_workers-0.3.0/src/pilot_workers/integrations/claude-host/commands/kimi/test.md +0 -32
  63. pilot_workers-0.3.0/src/pilot_workers/integrations/codex-host/ds/SKILL.md +0 -15
  64. pilot_workers-0.3.0/src/pilot_workers/integrations/codex-host/ds/openai.yaml +0 -4
  65. pilot_workers-0.3.0/src/pilot_workers/integrations/codex-host/glm/SKILL.md +0 -15
  66. pilot_workers-0.3.0/src/pilot_workers/integrations/codex-host/glm/openai.yaml +0 -4
  67. pilot_workers-0.3.0/src/pilot_workers/integrations/codex-host/kimi/SKILL.md +0 -15
  68. pilot_workers-0.3.0/src/pilot_workers/integrations/codex-host/kimi/openai.yaml +0 -4
  69. pilot_workers-0.3.0/src/pilot_workers/prompts/review.md +0 -5
  70. pilot_workers-0.3.0/tests/test_dispatch.py +0 -192
  71. pilot_workers-0.3.0/tests/test_install.py +0 -366
  72. pilot_workers-0.3.0/tests/test_status.py +0 -123
  73. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/LICENSE +0 -0
  74. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/setup.cfg +0 -0
  75. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/src/pilot_workers/__init__.py +0 -0
  76. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/src/pilot_workers/__main__.py +0 -0
  77. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/src/pilot_workers/cli/__init__.py +0 -0
  78. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/src/pilot_workers/credentials.py +0 -0
  79. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/src/pilot_workers/data/permissions/README.md +0 -0
  80. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/src/pilot_workers/data/permissions/relaxed.yaml +0 -0
  81. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/src/pilot_workers/data/permissions/strict.yaml +0 -0
  82. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/src/pilot_workers/data/providers/README.md +0 -0
  83. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/src/pilot_workers/data/templates/code.md +0 -0
  84. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/src/pilot_workers/data/templates/explore.md +0 -0
  85. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/src/pilot_workers/data/templates/review.md +0 -0
  86. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/src/pilot_workers/data/templates/test.md +0 -0
  87. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/src/pilot_workers/fmt_events.py +0 -0
  88. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/src/pilot_workers/runners/__init__.py +0 -0
  89. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/src/pilot_workers/scripts/install_runtime.sh +0 -0
  90. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/src/pilot_workers.egg-info/dependency_links.txt +0 -0
  91. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/src/pilot_workers.egg-info/entry_points.txt +0 -0
  92. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/src/pilot_workers.egg-info/requires.txt +0 -0
  93. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/src/pilot_workers.egg-info/top_level.txt +0 -0
  94. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/tests/test_credentials.py +0 -0
  95. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/tests/test_opencode_runner.py +0 -0
  96. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/tests/test_render_unified.py +0 -0
  97. {pilot_workers-0.3.0 → pilot_workers-0.5.0}/tests/test_runtime.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pilot-workers
3
- Version: 0.3.0
3
+ Version: 0.5.0
4
4
  Summary: Dispatch bounded tasks to isolated LLM workers (GLM, Kimi, and more)
5
5
  License-Expression: MIT
6
6
  Requires-Python: >=3.11
@@ -24,8 +24,9 @@ Dispatch bounded tasks to isolated LLM workers. Your main AI agent (Claude, Code
24
24
  - **Security by default**: API keys never appear in CLI args, environment variables, task contracts, or logs. Output is auto-redacted.
25
25
  - **Five modes**: `code` (edit), `explore` (read-only), `test` (run tests), `review` (read-only audit), `resume` (continue a prior code session).
26
26
  - **Pluggable runners**: the runner adapter layer (`Runner` ABC) abstracts engine-specific details. Currently ships with OpenCode; designed for future alternatives.
27
- - **Observable**: two-line JSON contract (`started` + `verdict`) for AI planners; human-readable `latest.log` for `tail -f`.
28
- - **Per-provider installs**: `install glm on claude` deploys only GLM's integration to Claude Code. Mix and match providers × hosts.
27
+ - **Observable**: two-line JSON contract (`started` + structured `verdict` carrying `parse_state`, a per-mode `result`, and `final_text_path`) for AI planners; human-readable `latest.log` for `tail -f`.
28
+ - **Per-run sandboxes**: every dispatch runs inside its own isolated XDG tree (`providers/<key>/runs/<run_id>/`) with a zero-copy symlink to the canonical credential and a shared per-provider cache; resume (`--session` + `--run-id`) reuses the original sandbox.
29
+ - **Host-level playbook**: one `pilot-workers` playbook skill per host (Claude Code or Codex). `install claude` / `install codex` deploys the same engine-neutral playbook regardless of which providers you've configured.
29
30
 
30
31
  ## Install
31
32
 
@@ -44,10 +45,10 @@ pilot-workers credentials glm
44
45
  pilot-workers credentials kimi-k3
45
46
  pilot-workers credentials ds
46
47
 
47
- # 3. Deploy integrations to your host
48
- pilot-workers install all on claude # Claude Code: 12 agents + 8 slash commands
49
- pilot-workers install all on codex # Codex: $glm / $kimi / $ds skills
50
- pilot-workers install glm on claude # or just one provider on one host
48
+ # 3. Deploy the playbook skill to your host
49
+ pilot-workers install claude # Claude Code: pilot-workers playbook skill
50
+ pilot-workers install codex # Codex: same playbook skill
51
+ pilot-workers install all # both hosts
51
52
 
52
53
  # 4. Check everything is ready
53
54
  pilot-workers status
@@ -69,18 +70,22 @@ pilot-workers <subcommand> [args]
69
70
 
70
71
  run Dispatch a task (streaming output).
71
72
  dispatch Deterministic wrapper around run (two-line JSON: started + verdict).
73
+ fanout Dispatch several jobs concurrently; stdout = one JSON array of verdicts.
72
74
  template Print the task template for a mode (code|explore|test|review).
73
- install Install integrations or runner.
74
- install <provider|all> on <host|all>
75
+ install Install host playbook skill or runner.
76
+ install <host|all>
75
77
  install runner <name>
76
- uninstall Remove integrations or runner.
77
- uninstall <provider|all> on <host|all>
78
+ uninstall Remove host playbook skill or runner.
79
+ uninstall <host|all>
78
80
  uninstall runner <name>
79
81
  status Show provider credentials, host installs, and runner state.
80
82
  status [--json]
81
- status <provider> on <host>
83
+ status <host>
82
84
  credentials Configure isolated worker credentials.
83
- maintain Worker log and worktree lifecycle tools.
85
+ maintain Worker log, run-sandbox, and worktree lifecycle tools.
86
+ maintain logs --older-than-days N
87
+ maintain runs --older-than-days N [--keep M]
88
+ maintain worktrees list|remove <path>
84
89
  ```
85
90
 
86
91
  ## Adding a new provider
@@ -97,20 +102,26 @@ context_tokens: 128000
97
102
  output_tokens: 8192
98
103
  # runner: opencode # optional, default opencode
99
104
  # permissions: relaxed # optional, reference a permission profile
100
- # asset_prefix: my-model # optional, default = key; used for integration file naming
105
+ # asset_prefix: my-model # optional, default = key (legacy; no longer used for file naming)
106
+ # strengths: ... # optional, surfaced by `pilot-workers status`
107
+ # suitable_modes: ... # optional, surfaced by `pilot-workers status`
108
+ # notes: ... # optional, surfaced by `pilot-workers status`
101
109
  ```
102
110
 
103
- Then `pilot-workers credentials my-model` and `pilot-workers install my-model on claude`.
111
+ Then `pilot-workers credentials my-model` and `pilot-workers install claude` (or `codex`) to deploy/refresh the host playbook skill.
104
112
 
105
113
  Reserved keys (cannot be used as provider key): `runner`, `all`, `on`, `claude`, `codex`.
106
114
 
107
115
  ## Host integration
108
116
 
109
- The **host** is whatever AI agent acts as the planner. `integrations/` has ready-made configs:
110
- - **`claude-host/`**: 12 agents (glm/kimi/ds × coder/explorer/reviewer/tester) + 8 slash commands
111
- - **`codex-host/`**: `$glm` / `$kimi` / `$ds` skill entry points
117
+ The **host** is whatever AI agent acts as the planner. Each host ships ONE `pilot-workers` playbook skill (a doctrine playbook, not provider-specific syntax):
112
118
 
113
- Adding a new host: create `integrations/<name>-host/`, put whatever config your host needs, point it at `pilot-workers dispatch`. See `integrations/README.md`.
119
+ - **`claude-host/skills/pilot-workers/`**: playbook skill for Claude Code (installed to `~/.claude/skills/pilot-workers/`)
120
+ - **`codex-host/skills/pilot-workers/`**: the same playbook skill for Codex (installed to `$CODEX_HOME/skills/pilot-workers/`)
121
+
122
+ `pilot-workers install <host>` copies the skill into the host's skill directory; it carries no engine-specific knowledge and is the same regardless of which providers you've configured. (The v0.4.0 12-agents + 8-commands matrix is gone.)
123
+
124
+ Adding a new host: create `integrations/<name>-host/skills/pilot-workers/`, put whatever config your host needs, point it at `pilot-workers dispatch`. See `integrations/README.md`.
114
125
 
115
126
  ## Architecture
116
127
 
@@ -120,7 +131,7 @@ See [CLAUDE.md](CLAUDE.md) for the current architecture, module reference, and c
120
131
 
121
132
  ```bash
122
133
  python3 -m venv .venv && .venv/bin/pip install -e ".[dev]"
123
- .venv/bin/pytest # 130 tests, all offline
134
+ .venv/bin/pytest # 297 tests, all offline
124
135
  ```
125
136
 
126
137
  ## License
@@ -9,8 +9,9 @@ Dispatch bounded tasks to isolated LLM workers. Your main AI agent (Claude, Code
9
9
  - **Security by default**: API keys never appear in CLI args, environment variables, task contracts, or logs. Output is auto-redacted.
10
10
  - **Five modes**: `code` (edit), `explore` (read-only), `test` (run tests), `review` (read-only audit), `resume` (continue a prior code session).
11
11
  - **Pluggable runners**: the runner adapter layer (`Runner` ABC) abstracts engine-specific details. Currently ships with OpenCode; designed for future alternatives.
12
- - **Observable**: two-line JSON contract (`started` + `verdict`) for AI planners; human-readable `latest.log` for `tail -f`.
13
- - **Per-provider installs**: `install glm on claude` deploys only GLM's integration to Claude Code. Mix and match providers × hosts.
12
+ - **Observable**: two-line JSON contract (`started` + structured `verdict` carrying `parse_state`, a per-mode `result`, and `final_text_path`) for AI planners; human-readable `latest.log` for `tail -f`.
13
+ - **Per-run sandboxes**: every dispatch runs inside its own isolated XDG tree (`providers/<key>/runs/<run_id>/`) with a zero-copy symlink to the canonical credential and a shared per-provider cache; resume (`--session` + `--run-id`) reuses the original sandbox.
14
+ - **Host-level playbook**: one `pilot-workers` playbook skill per host (Claude Code or Codex). `install claude` / `install codex` deploys the same engine-neutral playbook regardless of which providers you've configured.
14
15
 
15
16
  ## Install
16
17
 
@@ -29,10 +30,10 @@ pilot-workers credentials glm
29
30
  pilot-workers credentials kimi-k3
30
31
  pilot-workers credentials ds
31
32
 
32
- # 3. Deploy integrations to your host
33
- pilot-workers install all on claude # Claude Code: 12 agents + 8 slash commands
34
- pilot-workers install all on codex # Codex: $glm / $kimi / $ds skills
35
- pilot-workers install glm on claude # or just one provider on one host
33
+ # 3. Deploy the playbook skill to your host
34
+ pilot-workers install claude # Claude Code: pilot-workers playbook skill
35
+ pilot-workers install codex # Codex: same playbook skill
36
+ pilot-workers install all # both hosts
36
37
 
37
38
  # 4. Check everything is ready
38
39
  pilot-workers status
@@ -54,18 +55,22 @@ pilot-workers <subcommand> [args]
54
55
 
55
56
  run Dispatch a task (streaming output).
56
57
  dispatch Deterministic wrapper around run (two-line JSON: started + verdict).
58
+ fanout Dispatch several jobs concurrently; stdout = one JSON array of verdicts.
57
59
  template Print the task template for a mode (code|explore|test|review).
58
- install Install integrations or runner.
59
- install <provider|all> on <host|all>
60
+ install Install host playbook skill or runner.
61
+ install <host|all>
60
62
  install runner <name>
61
- uninstall Remove integrations or runner.
62
- uninstall <provider|all> on <host|all>
63
+ uninstall Remove host playbook skill or runner.
64
+ uninstall <host|all>
63
65
  uninstall runner <name>
64
66
  status Show provider credentials, host installs, and runner state.
65
67
  status [--json]
66
- status <provider> on <host>
68
+ status <host>
67
69
  credentials Configure isolated worker credentials.
68
- maintain Worker log and worktree lifecycle tools.
70
+ maintain Worker log, run-sandbox, and worktree lifecycle tools.
71
+ maintain logs --older-than-days N
72
+ maintain runs --older-than-days N [--keep M]
73
+ maintain worktrees list|remove <path>
69
74
  ```
70
75
 
71
76
  ## Adding a new provider
@@ -82,20 +87,26 @@ context_tokens: 128000
82
87
  output_tokens: 8192
83
88
  # runner: opencode # optional, default opencode
84
89
  # permissions: relaxed # optional, reference a permission profile
85
- # asset_prefix: my-model # optional, default = key; used for integration file naming
90
+ # asset_prefix: my-model # optional, default = key (legacy; no longer used for file naming)
91
+ # strengths: ... # optional, surfaced by `pilot-workers status`
92
+ # suitable_modes: ... # optional, surfaced by `pilot-workers status`
93
+ # notes: ... # optional, surfaced by `pilot-workers status`
86
94
  ```
87
95
 
88
- Then `pilot-workers credentials my-model` and `pilot-workers install my-model on claude`.
96
+ Then `pilot-workers credentials my-model` and `pilot-workers install claude` (or `codex`) to deploy/refresh the host playbook skill.
89
97
 
90
98
  Reserved keys (cannot be used as provider key): `runner`, `all`, `on`, `claude`, `codex`.
91
99
 
92
100
  ## Host integration
93
101
 
94
- The **host** is whatever AI agent acts as the planner. `integrations/` has ready-made configs:
95
- - **`claude-host/`**: 12 agents (glm/kimi/ds × coder/explorer/reviewer/tester) + 8 slash commands
96
- - **`codex-host/`**: `$glm` / `$kimi` / `$ds` skill entry points
102
+ The **host** is whatever AI agent acts as the planner. Each host ships ONE `pilot-workers` playbook skill (a doctrine playbook, not provider-specific syntax):
97
103
 
98
- Adding a new host: create `integrations/<name>-host/`, put whatever config your host needs, point it at `pilot-workers dispatch`. See `integrations/README.md`.
104
+ - **`claude-host/skills/pilot-workers/`**: playbook skill for Claude Code (installed to `~/.claude/skills/pilot-workers/`)
105
+ - **`codex-host/skills/pilot-workers/`**: the same playbook skill for Codex (installed to `$CODEX_HOME/skills/pilot-workers/`)
106
+
107
+ `pilot-workers install <host>` copies the skill into the host's skill directory; it carries no engine-specific knowledge and is the same regardless of which providers you've configured. (The v0.4.0 12-agents + 8-commands matrix is gone.)
108
+
109
+ Adding a new host: create `integrations/<name>-host/skills/pilot-workers/`, put whatever config your host needs, point it at `pilot-workers dispatch`. See `integrations/README.md`.
99
110
 
100
111
  ## Architecture
101
112
 
@@ -105,7 +116,7 @@ See [CLAUDE.md](CLAUDE.md) for the current architecture, module reference, and c
105
116
 
106
117
  ```bash
107
118
  python3 -m venv .venv && .venv/bin/pip install -e ".[dev]"
108
- .venv/bin/pytest # 130 tests, all offline
119
+ .venv/bin/pytest # 297 tests, all offline
109
120
  ```
110
121
 
111
122
  ## License
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "pilot-workers"
7
- version = "0.3.0"
7
+ version = "0.5.0"
8
8
  description = "Dispatch bounded tasks to isolated LLM workers (GLM, Kimi, and more)"
9
9
  readme = "README.md"
10
10
  license = "MIT"