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,25 +1,25 @@
|
|
|
1
1
|
{
|
|
2
|
-
"hash": "
|
|
2
|
+
"hash": "f5f05037",
|
|
3
3
|
"configHash": "30f8ea04",
|
|
4
|
-
"lockfileHash": "
|
|
5
|
-
"browserHash": "
|
|
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": "
|
|
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": "
|
|
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": "
|
|
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
|
|
20
|
+
- label: Generate Convoy Spec
|
|
21
21
|
agent: 'Team Lead (OpenCastle)'
|
|
22
|
-
prompt: 'Use the generate-task-spec prompt to create
|
|
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 .
|
|
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 `.
|
|
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>.
|
|
140
|
+
# <feature-name>.convoy.yml
|
|
132
141
|
name: <run name>
|
|
142
|
+
version: 1
|
|
133
143
|
concurrency: <n>
|
|
134
144
|
on_failure: <continue|stop>
|
|
135
|
-
|
|
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>.
|
|
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.
|