@pruddiman/dispatch 1.4.2 → 1.4.4

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
@@ -2,6 +2,8 @@
2
2
 
3
3
  AI agent orchestration CLI — parse work items from GitHub Issues, Azure DevOps, or local markdown files, dispatch each unit of work to a coding agent (OpenCode, GitHub Copilot, Claude Code, or OpenAI Codex), and commit results with conventional commits.
4
4
 
5
+ > **Note:** **Claude Code** (`--provider claude`) and **OpenAI Codex** (`--provider codex`) are largely untested. Expect rough edges and potential failures when using these providers.
6
+
5
7
  ## What it does
6
8
 
7
9
  Dispatch closes the gap between issue trackers and AI coding agents. It:
@@ -76,26 +78,9 @@ export OPENAI_API_KEY=sk-...
76
78
 
77
79
  Default model: `o4-mini`. Available models: `o4-mini`, `o3-mini`, `codex-mini-latest`.
78
80
 
79
- ### Issue tracker (choose based on your repo)
80
-
81
- **GitHub** (`--source github`):
81
+ ### Issue tracker
82
82
 
83
- ```sh
84
- # Install the GitHub CLI
85
- # https://cli.github.com/
86
-
87
- gh auth login
88
- ```
89
-
90
- **Azure DevOps** (`--source azdevops`):
91
-
92
- ```sh
93
- # Install the Azure CLI
94
- # https://learn.microsoft.com/en-us/cli/azure/install-azure-cli
95
-
96
- az login
97
- az extension add --name azure-devops
98
- ```
83
+ **GitHub** (`--source github`), **Azure DevOps** (`--source azdevops`): No external CLI tools required — Dispatch authenticates directly via browser-based OAuth device flow. See [Authentication](#authentication) below.
99
84
 
100
85
  **Local markdown** (`--source md`): No external tools or authentication required.
101
86
 
@@ -135,15 +120,43 @@ dispatch --provider copilot
135
120
 
136
121
  # Generate specs from issues (before dispatching)
137
122
  dispatch --spec 42,43
123
+
124
+ # Generate a spec from an inline text description
125
+ dispatch --spec "add dark mode toggle to settings page"
126
+
127
+ # Regenerate all existing specs
128
+ dispatch --respec
129
+
130
+ # Group issues into a single feature branch and PR
131
+ dispatch --feature my-feature
132
+
133
+ # Run tests and fix failures via AI
134
+ dispatch --fix-tests
138
135
  ```
139
136
 
137
+ ## Authentication
138
+
139
+ Dispatch authenticates with GitHub and Azure DevOps using the **OAuth device flow** — no external CLI tools (`gh`, `az`) are required.
140
+
141
+ On first use (or when a cached token is missing/expired), Dispatch will:
142
+
143
+ 1. Display a **one-time code** and open your browser to the provider's verification page.
144
+ 2. You sign in and authorize Dispatch in the browser.
145
+ 3. The token is cached locally at **`~/.dispatch/auth.json`** for future runs.
146
+
147
+ Authentication happens **early in the CLI lifecycle** — during `dispatch config` (right after datasource selection) or at startup for `dispatch` and `dispatch --spec` runs — before any pipeline work begins. If tokens are already cached the check is instant; otherwise the device-code prompt appears while the terminal is still free, so it is never buried under pipeline output. No separate login step is needed.
148
+
149
+ **Re-authenticating:** Delete `~/.dispatch/auth.json` (or just the relevant platform key inside it) and run `dispatch` again to re-trigger the device flow.
150
+
140
151
  ## Pipeline modes
141
152
 
142
153
  | Mode | Flag | Description |
143
154
  |------|------|-------------|
144
155
  | **Dispatch** | *(default)* | Plan and execute tasks; manage full git lifecycle |
145
156
  | **Spec generation** | `--spec` | Convert issues into structured markdown spec files |
157
+ | **Respec** | `--respec` | Regenerate existing specs (all, by ID, or by glob) |
146
158
  | **Fix tests** | `--fix-tests` | Detect and auto-fix failing tests via AI |
159
+ | **Feature** | `--feature [name]` | Group issues into a single feature branch and PR |
147
160
 
148
161
  ## Task files
149
162
 
@@ -192,7 +205,14 @@ Config is stored at `.dispatch/config.json` (relative to the working directory w
192
205
  | `provider` | AI backend: `opencode` (default), `copilot`, `claude`, or `codex` |
193
206
  | `model` | Model to use when spawning agents (provider-specific format) |
194
207
  | `source` | Issue tracker: `github`, `azdevops`, or `md` |
195
- | `testTimeout` | Test execution timeout in seconds (default: 60) |
208
+ | `testTimeout` | Test execution timeout in minutes (default: 5, range: 1–120) |
209
+ | `planTimeout` | Planning timeout in minutes (default: 30, range: 1–120) |
210
+ | `concurrency` | Max parallel dispatches (range: 1–64) |
211
+ | `org` | Azure DevOps organization URL |
212
+ | `project` | Azure DevOps project name |
213
+ | `workItemType` | Azure DevOps work item type filter |
214
+ | `iteration` | Azure DevOps iteration path filter |
215
+ | `area` | Azure DevOps area path filter |
196
216
 
197
217
  ## Options reference
198
218
 
@@ -206,22 +226,36 @@ Config is stored at `.dispatch/config.json` (relative to the working directory w
206
226
  | `--dry-run` | `false` | List tasks without executing |
207
227
  | `--no-plan` | `false` | Skip planner phase, execute directly |
208
228
  | `--no-branch` | `false` | Skip branch/push/PR lifecycle |
209
- | `--concurrency <n>` | *(cpu/memory)* | Max parallel dispatches |
210
- | `--plan-timeout <min>` | `10` | Planning timeout in minutes |
211
- | `--plan-retries <n>` | `1` | Retries after planning timeout |
229
+ | `--no-worktree` | `false` | Skip git worktree isolation for parallel issues |
230
+ | `--feature [name]` | *(off)* | Group issues into a single feature branch and PR |
231
+ | `--force` | `false` | Ignore prior run state and re-run all tasks |
232
+ | `--concurrency <n>` | *(cpu/memory)* | Max parallel dispatches (max: 64) |
233
+ | `--plan-timeout <min>` | `30` | Planning timeout in minutes |
234
+ | `--retries <n>` | `3` | Retry attempts for all agents |
235
+ | `--plan-retries <n>` | *(from --retries)* | Retry attempts for the planner agent (overrides `--retries`) |
236
+ | `--test-timeout <min>` | `5` | Test timeout in minutes |
212
237
  | `--server-url <url>` | *(none)* | Connect to a running provider server |
213
238
  | `--cwd <dir>` | `process.cwd()` | Working directory |
214
239
  | `--verbose` | `false` | Show detailed debug output |
215
240
 
241
+ In interactive dispatch runs, exhausted automatic retries pause the failed task in the dispatch UI so you can manually rerun it in place. A rerun re-enters the normal task lifecycle, including planning unless `--no-plan` is set; verbose or non-interactive runs will not wait for input and instead stop predictably with the task left failed.
242
+
216
243
  ### Spec mode
217
244
 
218
245
  | Option | Description |
219
246
  |--------|-------------|
220
- | `--spec [values...]` | Issue numbers, glob pattern, or description. Activates spec mode. Pass no args to regenerate all existing specs. |
247
+ | `--spec <values...>` | Issue numbers, glob pattern, or inline text description. Activates spec mode. |
248
+ | `--respec [values...]` | Regenerate specs: issue numbers, glob, or omit to regenerate all existing specs. |
221
249
  | `--source <name>` | Datasource override (auto-detected if omitted) |
222
250
  | `--output-dir <dir>` | Output directory for spec files (default: `.dispatch/specs`) |
223
- | `--org <url>` | Azure DevOps organization URL (required for `azdevops`) |
224
- | `--project <name>` | Azure DevOps project name (required for `azdevops`) |
251
+ | `--org <url>` | Azure DevOps organization URL |
252
+ | `--project <name>` | Azure DevOps project name |
253
+
254
+ ### Fix tests mode
255
+
256
+ | Option | Description |
257
+ |--------|-------------|
258
+ | `--fix-tests [issue-ids...]` | Run tests and fix failures via AI. Optionally pass issue IDs to target specific branches in worktrees. |
225
259
 
226
260
  ## Datasource auto-detection
227
261
 
@@ -249,14 +283,21 @@ For local-only workflows, pass `--source md` explicitly.
249
283
  Full documentation is in the [`docs/`](docs/) directory:
250
284
 
251
285
  - [Architecture Overview](docs/architecture.md)
286
+ - [Agent System](docs/agent-system/overview.md)
252
287
  - [CLI & Orchestration](docs/cli-orchestration/overview.md)
253
288
  - [Datasource System](docs/datasource-system/overview.md)
254
- - [Provider System](docs/provider-system/provider-overview.md)
289
+ - [Provider System](docs/provider-system/overview.md)
255
290
  - [Task Parsing](docs/task-parsing/overview.md)
256
291
  - [Planning & Dispatch](docs/planning-and-dispatch/overview.md)
257
292
  - [Spec Generation](docs/spec-generation/overview.md)
293
+ - [Issue Fetching](docs/issue-fetching/overview.md)
294
+ - [Git & Worktree](docs/git-and-worktree/overview.md)
295
+ - [Prerequisites & Safety](docs/prereqs-and-safety/overview.md)
296
+ - [Shared Types](docs/shared-types/overview.md)
297
+ - [Shared Utilities](docs/shared-utilities/overview.md)
258
298
  - [Testing](docs/testing/overview.md)
259
299
  - [Windows](docs/windows.md)
300
+ - [Changelog](docs/changelog.md)
260
301
 
261
302
  ## License
262
303