opencastle 0.15.0 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencastle",
3
- "version": "0.15.0",
3
+ "version": "0.16.0",
4
4
  "type": "module",
5
5
  "description": "Multi-agent orchestration framework for AI coding assistants",
6
6
  "bin": {
@@ -1,25 +1,25 @@
1
1
  {
2
- "hash": "4d31b055",
2
+ "hash": "f5f05037",
3
3
  "configHash": "30f8ea04",
4
- "lockfileHash": "cbad4e8c",
5
- "browserHash": "a1ae7e1e",
4
+ "lockfileHash": "99d70434",
5
+ "browserHash": "d43a2a07",
6
6
  "optimized": {
7
7
  "astro > cssesc": {
8
8
  "src": "../../../../../node_modules/cssesc/cssesc.js",
9
9
  "file": "astro___cssesc.js",
10
- "fileHash": "4a8534ee",
10
+ "fileHash": "29d5277e",
11
11
  "needsInterop": true
12
12
  },
13
13
  "astro > aria-query": {
14
14
  "src": "../../../../../node_modules/aria-query/lib/index.js",
15
15
  "file": "astro___aria-query.js",
16
- "fileHash": "85939f45",
16
+ "fileHash": "4ca620a4",
17
17
  "needsInterop": true
18
18
  },
19
19
  "astro > axobject-query": {
20
20
  "src": "../../../../../node_modules/axobject-query/lib/index.js",
21
21
  "file": "astro___axobject-query.js",
22
- "fileHash": "dc75bd79",
22
+ "fileHash": "4072a265",
23
23
  "needsInterop": true
24
24
  }
25
25
  },
@@ -17,9 +17,9 @@ handoffs:
17
17
  - label: Quick Refinement
18
18
  agent: 'Team Lead (OpenCastle)'
19
19
  prompt: 'Use the quick-refinement prompt to handle these follow-up refinements (UI tweaks, polish, adjustments):'
20
- - label: Generate Task Spec
20
+ - label: Generate Convoy Spec
21
21
  agent: 'Team Lead (OpenCastle)'
22
- prompt: 'Use the generate-task-spec prompt to create an opencastle.tasks.yml spec for autonomous overnight runs based on:'
22
+ prompt: 'Use the generate-task-spec prompt to create a .convoy.yml spec for autonomous convoy runs based on:'
23
23
  - label: Resolve PR Comments
24
24
  agent: 'Team Lead (OpenCastle)'
25
25
  prompt: 'Use the resolve-pr-comments prompt to resolve the GitHub PR review comments on this PR:'
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: 'Generate a valid .tasks.yml spec file for autonomous overnight runs based on a high-level description of what needs to be done.'
2
+ description: 'Generate a valid .convoy.yml spec file for autonomous convoy runs based on a high-level description of what needs to be done.'
3
3
  agent: 'Team Lead (OpenCastle)'
4
4
  ---
5
5
 
@@ -7,7 +7,7 @@ agent: 'Team Lead (OpenCastle)'
7
7
 
8
8
  # Generate Task Spec for Autonomous Run
9
9
 
10
- You are the Team Lead. The user wants to run `opencastle run` to execute a batch of tasks autonomously (e.g., overnight). Your job is to produce a valid `.tasks.yml` file they can feed to the CLI. Derive a short, descriptive, kebab-case filename from the user's goal (2–4 words max) and use it as the filename — for example `auth-refactor.tasks.yml` or `add-search.tasks.yml`. Always use the `.tasks.yml` extension.
10
+ You are the Team Lead. The user wants to run `opencastle run` to execute a batch of tasks autonomously (e.g., overnight). Your job is to produce a valid `.convoy.yml` file they can feed to the CLI. Derive a short, descriptive, kebab-case filename from the user's goal (2–4 words max) and use it as the filename — for example `auth-refactor.convoy.yml` or `add-search.convoy.yml`. Always use the `.convoy.yml` extension.
11
11
 
12
12
  ## User Goal
13
13
 
@@ -28,9 +28,13 @@ The output file must conform to the following schema. Fields marked **(required)
28
28
  | Field | Type | Required | Default | Description |
29
29
  |-------|------|----------|---------|-------------|
30
30
  | `name` | string | **yes** | — | Human-readable name for the run |
31
+ | `version` | integer | **yes** | — | Spec schema version. Always `1` for convoy specs |
31
32
  | `concurrency` | integer ≥ 1 | no | `1` | Max tasks executing in parallel |
32
33
  | `on_failure` | `continue` \| `stop` | no | `continue` | Behaviour when a task fails |
33
34
  | `adapter` | string | no | auto-detect | Default CLI adapter (`claude-code`, `copilot`, `cursor`). Omit to let the CLI auto-detect the first available adapter. |
35
+ | `branch` | string | no | — | Git feature branch name — created if missing |
36
+ | `defaults` | object | no | — | Worker defaults merged into each task. Keys: `timeout`, `model`, `max_retries`, `agent` |
37
+ | `gates` | array of strings | no | — | Shell commands run after all tasks complete; each must exit 0 |
34
38
  | `tasks` | list | **yes** | — | Non-empty list of task objects |
35
39
 
36
40
  ### Task Fields
@@ -44,6 +48,8 @@ The output file must conform to the following schema. Fields marked **(required)
44
48
  | `depends_on` | list of ids | no | `[]` | Task ids that must finish before this one starts |
45
49
  | `files` | list of globs | no | `[]` | File scope the agent is allowed to modify |
46
50
  | `timeout` | duration | no | `30m` | Max wall time (`<number><s|m|h>`, e.g. `10m`, `1h`) |
51
+ | `max_retries` | integer | no | from `defaults` or `1` | Max retry attempts for this task |
52
+ | `model` | string | no | — | AI model override for this task |
47
53
 
48
54
  ### Agent Roster
49
55
 
@@ -97,6 +103,9 @@ For each workstream, break it down into the smallest meaningful unit of work tha
97
103
  - `concurrency` — set to 2–3 for overnight runs; keep at 1 if tasks share files or the machine is constrained.
98
104
  - `on_failure` — use `continue` (default) when tasks are independent so one failure doesn't waste the whole run. Use `stop` when every subsequent task depends on success.
99
105
  - `adapter` — **omit this field** to let the CLI auto-detect the first available adapter (priority: `copilot` → `claude-code` → `cursor`). Only set this explicitly if the user requests a specific adapter.
106
+ - `branch` — derive from the goal, e.g., `feat/auth-refactor`. Use a descriptive branch name.
107
+ - `defaults` — set sensible defaults for timeout and max_retries. Model can be left unset for auto-detection.
108
+ - `gates` — include standard validation gates (lint, type-check, test) unless the user specifies otherwise.
100
109
 
101
110
  ### 5. Write the Prompts
102
111
 
@@ -128,11 +137,16 @@ Before presenting the YAML, mentally verify:
128
137
  Return the final YAML inside a fenced code block with a filename annotation:
129
138
 
130
139
  ````yaml
131
- # <feature-name>.tasks.yml
140
+ # <feature-name>.convoy.yml
132
141
  name: <run name>
142
+ version: 1
133
143
  concurrency: <n>
134
144
  on_failure: <continue|stop>
135
- # adapter: <adapter> # Omit for auto-detection; set only when user requests a specific adapter
145
+ branch: <branch-name>
146
+
147
+ defaults:
148
+ timeout: 30m
149
+ max_retries: 1
136
150
 
137
151
  tasks:
138
152
  - id: <task-id>
@@ -148,9 +162,16 @@ tasks:
148
162
  depends_on:
149
163
  - <task-id>
150
164
  ...
165
+
166
+ gates:
167
+ - <lint command>
168
+ - <type-check command>
169
+ - <test command>
151
170
  ````
152
171
 
153
172
  Also provide:
154
173
  1. A **DAG summary** showing the phase structure so the user can verify execution order.
155
174
  2. An **estimated total duration** (sum of timeouts on the critical path).
156
- 3. A `--dry-run` command they can use to validate: `npx opencastle run --file <feature-name>.tasks.yml --dry-run`
175
+ 3. A `--dry-run` command they can use to validate: `npx opencastle run --file <feature-name>.convoy.yml --dry-run`
176
+
177
+ > **Backward compatibility:** `.tasks.yml` files without `version` still work with the legacy executor. Only spec files with `version: 1` are routed to the convoy engine.