opencastle 0.27.3 → 0.29.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/README.md +12 -3
- package/bin/cli.mjs +13 -5
- package/dist/cli/convoy/engine.d.ts.map +1 -1
- package/dist/cli/convoy/engine.js +2 -11
- package/dist/cli/convoy/engine.js.map +1 -1
- package/dist/cli/convoy/engine.test.js +2 -1
- package/dist/cli/convoy/engine.test.js.map +1 -1
- package/dist/cli/convoy/export.d.ts +1 -3
- package/dist/cli/convoy/export.d.ts.map +1 -1
- package/dist/cli/convoy/export.js +9 -88
- package/dist/cli/convoy/export.js.map +1 -1
- package/dist/cli/convoy/export.test.js +7 -186
- package/dist/cli/convoy/export.test.js.map +1 -1
- package/dist/cli/convoy/issues.js +3 -3
- package/dist/cli/convoy/issues.js.map +1 -1
- package/dist/cli/convoy/issues.test.js +4 -3
- package/dist/cli/convoy/issues.test.js.map +1 -1
- package/dist/cli/convoy/pipeline.d.ts.map +1 -1
- package/dist/cli/convoy/pipeline.js +0 -21
- package/dist/cli/convoy/pipeline.js.map +1 -1
- package/dist/cli/convoy/pipeline.test.js +0 -21
- package/dist/cli/convoy/pipeline.test.js.map +1 -1
- package/dist/cli/dashboard.d.ts.map +1 -1
- package/dist/cli/dashboard.js +32 -8
- package/dist/cli/dashboard.js.map +1 -1
- package/dist/cli/destroy.d.ts.map +1 -1
- package/dist/cli/destroy.js +13 -0
- package/dist/cli/destroy.js.map +1 -1
- package/dist/cli/dispute.d.ts +3 -0
- package/dist/cli/dispute.d.ts.map +1 -0
- package/dist/cli/dispute.js +25 -0
- package/dist/cli/dispute.js.map +1 -0
- package/dist/cli/doctor.d.ts +1 -1
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +14 -1
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/eject.d.ts.map +1 -1
- package/dist/cli/eject.js +14 -0
- package/dist/cli/eject.js.map +1 -1
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +14 -0
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/log.d.ts +0 -11
- package/dist/cli/log.d.ts.map +1 -1
- package/dist/cli/log.js +2 -114
- package/dist/cli/log.js.map +1 -1
- package/dist/cli/pipeline.d.ts +3 -0
- package/dist/cli/pipeline.d.ts.map +1 -0
- package/dist/cli/pipeline.js +321 -0
- package/dist/cli/pipeline.js.map +1 -0
- package/dist/cli/plan.d.ts +37 -0
- package/dist/cli/plan.d.ts.map +1 -1
- package/dist/cli/plan.js +321 -161
- package/dist/cli/plan.js.map +1 -1
- package/dist/cli/run.js +2 -2
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/update.d.ts.map +1 -1
- package/dist/cli/update.js +16 -0
- package/dist/cli/update.js.map +1 -1
- package/dist/cli/validate.d.ts +3 -0
- package/dist/cli/validate.d.ts.map +1 -0
- package/dist/cli/validate.js +60 -0
- package/dist/cli/validate.js.map +1 -0
- package/dist/cli/watch.d.ts.map +1 -1
- package/dist/cli/watch.js +1 -3
- package/dist/cli/watch.js.map +1 -1
- package/package.json +5 -4
- package/src/cli/convoy/engine.test.ts +2 -1
- package/src/cli/convoy/engine.ts +2 -5
- package/src/cli/convoy/export.test.ts +7 -224
- package/src/cli/convoy/export.ts +10 -106
- package/src/cli/convoy/issues.test.ts +3 -2
- package/src/cli/convoy/issues.ts +3 -3
- package/src/cli/convoy/pipeline.test.ts +0 -25
- package/src/cli/convoy/pipeline.ts +0 -19
- package/src/cli/dashboard.ts +33 -8
- package/src/cli/destroy.ts +15 -0
- package/src/cli/dispute.ts +28 -0
- package/src/cli/doctor.ts +16 -1
- package/src/cli/eject.ts +16 -0
- package/src/cli/init.ts +16 -0
- package/src/cli/log.ts +2 -120
- package/src/cli/pipeline.ts +362 -0
- package/src/cli/plan.ts +357 -153
- package/src/cli/run.ts +2 -2
- package/src/cli/update.ts +18 -0
- package/src/cli/validate.ts +65 -0
- package/src/cli/watch.ts +1 -3
- package/src/dashboard/dist/_astro/index.Je1YjU_y.css +1 -0
- package/src/dashboard/dist/data/convoy-list.json +54 -9
- package/src/dashboard/dist/data/convoys/demo-api-v2.json +177 -0
- package/src/dashboard/dist/data/convoys/demo-auth-revamp.json +239 -0
- package/src/dashboard/dist/data/convoys/demo-dashboard-ui.json +328 -0
- package/src/dashboard/dist/data/convoys/demo-data-pipeline.json +187 -0
- package/src/dashboard/dist/data/convoys/demo-deploy-ci.json +153 -0
- package/src/dashboard/dist/data/convoys/demo-docs-update.json +154 -0
- package/src/dashboard/dist/data/convoys/demo-perf-opt.json +227 -0
- package/src/dashboard/dist/data/events.ndjson +115 -0
- package/src/dashboard/dist/data/overall-stats.json +56 -13
- package/src/dashboard/dist/data/pipelines.ndjson +5285 -0
- package/src/dashboard/dist/index.html +165 -1392
- package/src/dashboard/node_modules/.vite/deps/_metadata.json +6 -6
- package/src/dashboard/public/data/convoy-list.json +54 -9
- package/src/dashboard/public/data/convoys/demo-api-v2.json +177 -0
- package/src/dashboard/public/data/convoys/demo-auth-revamp.json +239 -0
- package/src/dashboard/public/data/convoys/demo-dashboard-ui.json +328 -0
- package/src/dashboard/public/data/convoys/demo-data-pipeline.json +187 -0
- package/src/dashboard/public/data/convoys/demo-deploy-ci.json +153 -0
- package/src/dashboard/public/data/convoys/demo-docs-update.json +154 -0
- package/src/dashboard/public/data/convoys/demo-perf-opt.json +227 -0
- package/src/dashboard/public/data/events.ndjson +115 -0
- package/src/dashboard/public/data/overall-stats.json +56 -13
- package/src/dashboard/public/data/pipelines.ndjson +5285 -0
- package/src/dashboard/scripts/etl.test.ts +4 -62
- package/src/dashboard/scripts/etl.ts +11 -10
- package/src/dashboard/scripts/generate-demo-db.ts +482 -115
- package/src/dashboard/src/pages/index.astro +235 -1638
- package/src/dashboard/src/styles/dashboard.css +473 -7
- package/src/orchestrator/prompts/brainstorm.prompt.md +1 -0
- package/src/orchestrator/prompts/fix-convoy.prompt.md +79 -0
- package/src/orchestrator/prompts/generate-convoy.prompt.md +60 -58
- package/src/orchestrator/prompts/generate-prd.prompt.md +126 -0
- package/src/orchestrator/prompts/validate-convoy.prompt.md +89 -0
- package/src/orchestrator/prompts/validate-prd.prompt.md +83 -0
- package/dist/cli/convoy/log-merge.test.d.ts +0 -2
- package/dist/cli/convoy/log-merge.test.d.ts.map +0 -1
- package/dist/cli/convoy/log-merge.test.js +0 -147
- package/dist/cli/convoy/log-merge.test.js.map +0 -1
- package/src/cli/convoy/log-merge.test.ts +0 -179
- package/src/dashboard/dist/_astro/index.6L3_HsPT.css +0 -1
package/dist/cli/plan.js
CHANGED
|
@@ -8,81 +8,28 @@ import { c } from './prompt.js';
|
|
|
8
8
|
const HELP = `
|
|
9
9
|
opencastle plan [options]
|
|
10
10
|
|
|
11
|
-
Generate a convoy spec from a task description
|
|
12
|
-
|
|
11
|
+
Generate a convoy spec (or other AI output) from a task description by running
|
|
12
|
+
it through a prompt template via an AI adapter.
|
|
13
13
|
|
|
14
14
|
Options:
|
|
15
|
-
--file, -f <path> Path to a text file
|
|
16
|
-
--
|
|
17
|
-
--
|
|
15
|
+
--file, -f <path> Path to a text file (fills {{goal}} in the template)
|
|
16
|
+
--text, -t <text> Inline text to use as {{goal}} (alternative to --file)
|
|
17
|
+
--template <name> Prompt template name (default: generate-convoy)
|
|
18
|
+
Built-in templates:
|
|
19
|
+
generate-prd — Write a PRD from a feature prompt
|
|
20
|
+
validate-prd — Check a PRD for completeness
|
|
21
|
+
generate-convoy — Generate a convoy spec from a PRD (default)
|
|
22
|
+
validate-convoy — Check a convoy spec for correctness
|
|
23
|
+
fix-convoy — Fix validation errors in a convoy spec
|
|
24
|
+
--context <path> Optional path to an additional context file (fills {{context}})
|
|
25
|
+
--context-text <text> Inline text to fill {{context}} (alternative to --context)
|
|
26
|
+
--output, -o <path> Output path override (skipped for validation output)
|
|
18
27
|
--adapter, -a <name> Override agent runtime adapter
|
|
19
28
|
--verbose Show full agent output
|
|
20
|
-
--dry-run Print the prompt
|
|
29
|
+
--dry-run Print the assembled prompt without executing
|
|
21
30
|
--help, -h Show this help
|
|
22
31
|
`;
|
|
23
|
-
|
|
24
|
-
const opts = {
|
|
25
|
-
file: null,
|
|
26
|
-
context: null,
|
|
27
|
-
output: null,
|
|
28
|
-
adapter: null,
|
|
29
|
-
verbose: false,
|
|
30
|
-
dryRun: false,
|
|
31
|
-
help: false,
|
|
32
|
-
};
|
|
33
|
-
for (let i = 0; i < args.length; i++) {
|
|
34
|
-
const arg = args[i];
|
|
35
|
-
switch (arg) {
|
|
36
|
-
case '--help':
|
|
37
|
-
case '-h':
|
|
38
|
-
opts.help = true;
|
|
39
|
-
break;
|
|
40
|
-
case '--file':
|
|
41
|
-
case '-f':
|
|
42
|
-
if (i + 1 >= args.length) {
|
|
43
|
-
console.error(' ✗ --file requires a path');
|
|
44
|
-
process.exit(1);
|
|
45
|
-
}
|
|
46
|
-
opts.file = args[++i];
|
|
47
|
-
break;
|
|
48
|
-
case '--context':
|
|
49
|
-
if (i + 1 >= args.length) {
|
|
50
|
-
console.error(' ✗ --context requires a path');
|
|
51
|
-
process.exit(1);
|
|
52
|
-
}
|
|
53
|
-
opts.context = args[++i];
|
|
54
|
-
break;
|
|
55
|
-
case '--output':
|
|
56
|
-
case '-o':
|
|
57
|
-
if (i + 1 >= args.length) {
|
|
58
|
-
console.error(' ✗ --output requires a path');
|
|
59
|
-
process.exit(1);
|
|
60
|
-
}
|
|
61
|
-
opts.output = args[++i];
|
|
62
|
-
break;
|
|
63
|
-
case '--adapter':
|
|
64
|
-
case '-a':
|
|
65
|
-
if (i + 1 >= args.length) {
|
|
66
|
-
console.error(' ✗ --adapter requires a name');
|
|
67
|
-
process.exit(1);
|
|
68
|
-
}
|
|
69
|
-
opts.adapter = args[++i];
|
|
70
|
-
break;
|
|
71
|
-
case '--verbose':
|
|
72
|
-
opts.verbose = true;
|
|
73
|
-
break;
|
|
74
|
-
case '--dry-run':
|
|
75
|
-
case '--dryRun':
|
|
76
|
-
opts.dryRun = true;
|
|
77
|
-
break;
|
|
78
|
-
default:
|
|
79
|
-
console.error(` ✗ Unknown option: ${arg}`);
|
|
80
|
-
console.log(HELP);
|
|
81
|
-
process.exit(1);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
return opts;
|
|
85
|
-
}
|
|
32
|
+
// ── Private helpers ─────────────────────────────────────────────────────────
|
|
86
33
|
function printAdapterError(detectionFailed, adapterName) {
|
|
87
34
|
if (detectionFailed) {
|
|
88
35
|
console.error(` ✗ No agent CLI found on your PATH.\n` +
|
|
@@ -96,7 +43,7 @@ function printAdapterError(detectionFailed, adapterName) {
|
|
|
96
43
|
}
|
|
97
44
|
else {
|
|
98
45
|
const hints = {
|
|
99
|
-
|
|
46
|
+
claude: ' Install: npm install -g @anthropic-ai/claude-code\n' +
|
|
100
47
|
' Docs: https://docs.anthropic.com/en/docs/claude-code',
|
|
101
48
|
copilot: ' Requires the Copilot CLI installed and authenticated:\n' +
|
|
102
49
|
' https://docs.github.com/en/copilot/how-tos/set-up/install-copilot-cli\n' +
|
|
@@ -114,9 +61,7 @@ function printAdapterError(detectionFailed, adapterName) {
|
|
|
114
61
|
hint);
|
|
115
62
|
}
|
|
116
63
|
}
|
|
117
|
-
/**
|
|
118
|
-
* Strip YAML frontmatter (everything between first and second --- lines).
|
|
119
|
-
*/
|
|
64
|
+
/** Strip YAML frontmatter (everything between first and second --- delimiters). */
|
|
120
65
|
function stripFrontmatter(text) {
|
|
121
66
|
const lines = text.split('\n');
|
|
122
67
|
if (lines[0]?.trim() !== '---')
|
|
@@ -126,9 +71,23 @@ function stripFrontmatter(text) {
|
|
|
126
71
|
return text;
|
|
127
72
|
return lines.slice(closingIdx + 1).join('\n').trimStart();
|
|
128
73
|
}
|
|
129
|
-
/**
|
|
130
|
-
|
|
131
|
-
|
|
74
|
+
/** Extract key: value pairs from YAML frontmatter (top-level scalar values only). */
|
|
75
|
+
function parseFrontmatter(text) {
|
|
76
|
+
const result = {};
|
|
77
|
+
const lines = text.split('\n');
|
|
78
|
+
if (lines[0]?.trim() !== '---')
|
|
79
|
+
return result;
|
|
80
|
+
const closingIdx = lines.findIndex((line, i) => i > 0 && line.trim() === '---');
|
|
81
|
+
if (closingIdx === -1)
|
|
82
|
+
return result;
|
|
83
|
+
for (let i = 1; i < closingIdx; i++) {
|
|
84
|
+
const match = lines[i].match(/^(\w[\w-]*):\s*['"]?([^'"]+?)['"]?\s*$/);
|
|
85
|
+
if (match)
|
|
86
|
+
result[match[1]] = match[2].trim();
|
|
87
|
+
}
|
|
88
|
+
return result;
|
|
89
|
+
}
|
|
90
|
+
/** Extract YAML content from a fenced ```yaml ... ``` block. */
|
|
132
91
|
function extractYamlBlock(text) {
|
|
133
92
|
const match = text.match(/```ya?ml\s*\n([\s\S]*?)```/);
|
|
134
93
|
if (!match)
|
|
@@ -136,17 +95,14 @@ function extractYamlBlock(text) {
|
|
|
136
95
|
return match[1].trim();
|
|
137
96
|
}
|
|
138
97
|
/**
|
|
139
|
-
* Derive
|
|
140
|
-
* Checks for a
|
|
98
|
+
* Derive a .convoy.yml filename from YAML content.
|
|
99
|
+
* Checks for a first-line comment, then falls back to the `name:` field.
|
|
141
100
|
*/
|
|
142
101
|
function deriveOutputFilename(yaml) {
|
|
143
|
-
// First line comment: # .opencastle/convoys/some-name.convoy.yml
|
|
144
102
|
const firstLine = yaml.split('\n')[0] ?? '';
|
|
145
103
|
const commentMatch = firstLine.match(/^#\s*(.+\.convoy\.ya?ml)\s*$/);
|
|
146
|
-
if (commentMatch)
|
|
104
|
+
if (commentMatch)
|
|
147
105
|
return basename(commentMatch[1]);
|
|
148
|
-
}
|
|
149
|
-
// Fall back to `name:` field
|
|
150
106
|
const nameMatch = yaml.match(/^name:\s*['"]?([^'"\n]+)['"]?\s*$/m);
|
|
151
107
|
if (nameMatch) {
|
|
152
108
|
const kebab = nameMatch[1].trim().toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '');
|
|
@@ -155,62 +111,98 @@ function deriveOutputFilename(yaml) {
|
|
|
155
111
|
}
|
|
156
112
|
return 'convoy-plan.convoy.yml';
|
|
157
113
|
}
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
114
|
+
/**
|
|
115
|
+
* Derive a .prd.md filename from PRD Markdown content.
|
|
116
|
+
* Looks for a # Heading to extract a kebab-case name.
|
|
117
|
+
*/
|
|
118
|
+
function derivePrdFilename(content) {
|
|
119
|
+
const headingMatch = content.match(/^#\s+(.+?)(?:\s*[-—–]+\s*PRD)?\s*$/m);
|
|
120
|
+
if (headingMatch) {
|
|
121
|
+
const kebab = headingMatch[1]
|
|
122
|
+
.trim()
|
|
123
|
+
.toLowerCase()
|
|
124
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
125
|
+
.replace(/^-|-$/g, '');
|
|
126
|
+
if (kebab)
|
|
127
|
+
return `${kebab}.prd.md`;
|
|
163
128
|
}
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
129
|
+
return `prd-${Date.now()}.prd.md`;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Extract Markdown body from AI output.
|
|
133
|
+
* Strips wrapping ```markdown / ```md fences if present.
|
|
134
|
+
* If a heading is present but prefixed with preamble, trims to the first heading.
|
|
135
|
+
*/
|
|
136
|
+
function extractMarkdownBody(output) {
|
|
137
|
+
// Strip explicit markdown fence
|
|
138
|
+
const mdFenceMatch = output.match(/^```(?:markdown|md)\s*\n([\s\S]*?)```\s*$/m);
|
|
139
|
+
if (mdFenceMatch)
|
|
140
|
+
return mdFenceMatch[1].trim();
|
|
141
|
+
const lines = output.trim().split('\n');
|
|
142
|
+
// Strip plain ``` wrapping (first and last line are fences)
|
|
143
|
+
if (lines[0]?.startsWith('```') && lines[lines.length - 1]?.trim() === '```') {
|
|
144
|
+
return lines.slice(1, -1).join('\n').trim();
|
|
169
145
|
}
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
146
|
+
// If there's preamble before the first heading, strip it
|
|
147
|
+
const headingIdx = lines.findIndex((l) => /^#{1,3}\s/.test(l));
|
|
148
|
+
if (headingIdx > 0)
|
|
149
|
+
return lines.slice(headingIdx).join('\n').trim();
|
|
150
|
+
return output.trim();
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Parse a validation AI response for VALID / INVALID verdict.
|
|
154
|
+
* INVALID takes precedence because VALID is a substring of INVALID.
|
|
155
|
+
*/
|
|
156
|
+
function parseValidationResult(output) {
|
|
157
|
+
const trimmed = output.trim();
|
|
158
|
+
const hasInvalid = /\bINVALID\b/.test(trimmed);
|
|
159
|
+
const hasValid = /\bVALID\b/.test(trimmed);
|
|
160
|
+
if (hasValid && !hasInvalid)
|
|
161
|
+
return { isValid: true, errors: '' };
|
|
162
|
+
const errorsMatch = trimmed.match(/(?:Issues|Errors):\s*\n([\s\S]+)/i);
|
|
163
|
+
return { isValid: false, errors: errorsMatch ? errorsMatch[1].trim() : trimmed };
|
|
164
|
+
}
|
|
165
|
+
// ── Exported programmatic API ───────────────────────────────────────────────
|
|
166
|
+
/**
|
|
167
|
+
* Execute a single prompt template step via an AI adapter.
|
|
168
|
+
* Used by the pipeline command to chain steps programmatically.
|
|
169
|
+
*/
|
|
170
|
+
export async function runPromptStep(opts) {
|
|
171
|
+
const templateName = opts.template ?? 'generate-convoy';
|
|
172
|
+
const templatePath = join(opts.pkgRoot, 'src', 'orchestrator', 'prompts', `${templateName}.prompt.md`);
|
|
173
|
+
if (!existsSync(templatePath)) {
|
|
174
|
+
throw new Error(`Prompt template not found: ${templatePath}`);
|
|
174
175
|
}
|
|
175
|
-
|
|
176
|
-
const
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
if (!existsSync(
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
}
|
|
185
|
-
contextContent = await readFile(contextPath, 'utf8');
|
|
176
|
+
const rawTemplate = await readFile(templatePath, 'utf8');
|
|
177
|
+
const frontmatter = parseFrontmatter(rawTemplate);
|
|
178
|
+
const outputType = (frontmatter['output'] ?? 'convoy-spec');
|
|
179
|
+
const template = stripFrontmatter(rawTemplate);
|
|
180
|
+
let goalContent = opts.goalText ?? '';
|
|
181
|
+
if (!goalContent && opts.filePath) {
|
|
182
|
+
if (!existsSync(opts.filePath))
|
|
183
|
+
throw new Error(`File not found: ${opts.filePath}`);
|
|
184
|
+
goalContent = await readFile(opts.filePath, 'utf8');
|
|
186
185
|
}
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
186
|
+
let contextContent = opts.contextText ?? '';
|
|
187
|
+
if (!contextContent && opts.contextPath) {
|
|
188
|
+
if (!existsSync(opts.contextPath))
|
|
189
|
+
throw new Error(`Context file not found: ${opts.contextPath}`);
|
|
190
|
+
contextContent = await readFile(opts.contextPath, 'utf8');
|
|
192
191
|
}
|
|
193
|
-
const rawTemplate = await readFile(promptTemplatePath, 'utf8');
|
|
194
|
-
const template = stripFrontmatter(rawTemplate);
|
|
195
192
|
const assembledPrompt = template
|
|
196
|
-
.replace(
|
|
197
|
-
.replace(
|
|
198
|
-
// ── Dry-run: print prompt and exit ────────────────────────────
|
|
193
|
+
.replace(/\{\{goal\}\}/g, goalContent.trim())
|
|
194
|
+
.replace(/\{\{context\}\}/g, contextContent.trim());
|
|
199
195
|
if (opts.dryRun) {
|
|
200
|
-
console.log(c.bold(c.cyan(
|
|
196
|
+
console.log(c.bold(c.cyan(` [${templateName}] Assembled prompt (dry-run):\n`)));
|
|
201
197
|
console.log(assembledPrompt);
|
|
202
|
-
return;
|
|
203
|
-
}
|
|
204
|
-
// ── Resolve adapter ───────────────────────────────────────────
|
|
205
|
-
let adapterName;
|
|
206
|
-
if (opts.adapter) {
|
|
207
|
-
adapterName = opts.adapter;
|
|
198
|
+
return { outputPath: null, rawOutput: assembledPrompt, outputType };
|
|
208
199
|
}
|
|
209
|
-
|
|
200
|
+
let adapterName = opts.adapterName ?? '';
|
|
201
|
+
if (!adapterName) {
|
|
210
202
|
const detected = await detectAdapter();
|
|
211
203
|
if (!detected) {
|
|
212
204
|
printAdapterError(true, '');
|
|
213
|
-
|
|
205
|
+
throw new Error('No adapter available');
|
|
214
206
|
}
|
|
215
207
|
adapterName = detected;
|
|
216
208
|
}
|
|
@@ -220,69 +212,237 @@ export default async function plan({ args, pkgRoot }) {
|
|
|
220
212
|
}
|
|
221
213
|
catch {
|
|
222
214
|
printAdapterError(false, adapterName);
|
|
223
|
-
|
|
215
|
+
throw new Error(`Adapter "${adapterName}" failed to load`);
|
|
224
216
|
}
|
|
225
|
-
|
|
226
|
-
if (!available) {
|
|
217
|
+
if (!(await adapter.isAvailable())) {
|
|
227
218
|
printAdapterError(false, adapterName);
|
|
228
|
-
|
|
219
|
+
throw new Error(`Adapter "${adapterName}" is not available`);
|
|
229
220
|
}
|
|
230
|
-
|
|
231
|
-
console.log(c.dim(` Generating convoy spec from: ${opts.file}\n`));
|
|
232
|
-
// ── Execute the prompt through the adapter ────────────────────
|
|
221
|
+
const agentField = (frontmatter['agent'] ?? 'team-lead').toLowerCase().replace(/\s+/g, '-');
|
|
233
222
|
const task = {
|
|
234
|
-
id:
|
|
223
|
+
id: templateName,
|
|
235
224
|
prompt: assembledPrompt,
|
|
236
|
-
agent:
|
|
225
|
+
agent: agentField,
|
|
237
226
|
timeout: '10m',
|
|
238
227
|
depends_on: [],
|
|
239
228
|
files: [],
|
|
240
|
-
description: '
|
|
229
|
+
description: frontmatter['description'] ?? templateName,
|
|
241
230
|
max_retries: 1,
|
|
242
231
|
};
|
|
243
|
-
const
|
|
244
|
-
|
|
245
|
-
|
|
232
|
+
const execResult = await adapter.execute(task, { verbose: opts.verbose ?? false });
|
|
233
|
+
const rawOutput = execResult.output;
|
|
234
|
+
if (outputType === 'validation') {
|
|
235
|
+
const { isValid, errors } = parseValidationResult(rawOutput);
|
|
236
|
+
return { outputPath: null, rawOutput, outputType, isValid, errors };
|
|
237
|
+
}
|
|
238
|
+
if (outputType === 'prd') {
|
|
239
|
+
const content = extractMarkdownBody(rawOutput);
|
|
240
|
+
let outputPath = opts.outputPath ?? null;
|
|
241
|
+
if (!outputPath) {
|
|
242
|
+
const prdDir = resolve(process.cwd(), '.opencastle', 'prds');
|
|
243
|
+
await mkdir(prdDir, { recursive: true });
|
|
244
|
+
outputPath = join(prdDir, derivePrdFilename(content));
|
|
245
|
+
}
|
|
246
|
+
await mkdir(resolve(outputPath, '..'), { recursive: true });
|
|
247
|
+
await writeFile(outputPath, content + '\n', 'utf8');
|
|
248
|
+
return { outputPath, rawOutput, outputType };
|
|
249
|
+
}
|
|
250
|
+
// convoy-spec (default)
|
|
251
|
+
const yamlContent = extractYamlBlock(rawOutput);
|
|
246
252
|
if (!yamlContent) {
|
|
247
|
-
const preview =
|
|
248
|
-
|
|
249
|
-
console.error(c.dim(` Raw output (truncated):\n${preview}`));
|
|
250
|
-
process.exit(1);
|
|
253
|
+
const preview = rawOutput.slice(0, 500);
|
|
254
|
+
throw new Error(`No YAML code block found in the agent response.\n\nRaw output (truncated):\n${preview}`);
|
|
251
255
|
}
|
|
252
|
-
|
|
253
|
-
let validationWarning = false;
|
|
256
|
+
let schemaValid = true;
|
|
254
257
|
try {
|
|
255
258
|
parseTaskSpecText(yamlContent);
|
|
256
259
|
}
|
|
257
260
|
catch (err) {
|
|
258
|
-
|
|
261
|
+
schemaValid = false;
|
|
259
262
|
const msg = err instanceof Error ? err.message : String(err);
|
|
260
263
|
console.warn(c.yellow(` ⚠ YAML validation warning: ${msg}`));
|
|
261
264
|
console.warn(c.dim(` The file will still be written — you may need to edit it before running.\n`));
|
|
262
265
|
}
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
if (opts.output) {
|
|
266
|
-
outputPath = resolve(process.cwd(), opts.output);
|
|
267
|
-
}
|
|
268
|
-
else {
|
|
266
|
+
let outputPath = opts.outputPath ?? null;
|
|
267
|
+
if (!outputPath) {
|
|
269
268
|
const convoyDir = resolve(process.cwd(), '.opencastle', 'convoys');
|
|
270
269
|
await mkdir(convoyDir, { recursive: true });
|
|
271
|
-
|
|
272
|
-
outputPath = join(convoyDir, filename);
|
|
270
|
+
outputPath = join(convoyDir, deriveOutputFilename(yamlContent));
|
|
273
271
|
}
|
|
274
272
|
await mkdir(resolve(outputPath, '..'), { recursive: true });
|
|
275
273
|
await writeFile(outputPath, yamlContent + '\n', 'utf8');
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
274
|
+
return { outputPath, rawOutput, outputType, isValid: schemaValid };
|
|
275
|
+
}
|
|
276
|
+
// ── CLI argument parsing ────────────────────────────────────────────────────
|
|
277
|
+
function parseArgs(args) {
|
|
278
|
+
const opts = {
|
|
279
|
+
file: null,
|
|
280
|
+
text: null,
|
|
281
|
+
template: 'generate-convoy',
|
|
282
|
+
context: null,
|
|
283
|
+
contextText: null,
|
|
284
|
+
output: null,
|
|
285
|
+
adapter: null,
|
|
286
|
+
verbose: false,
|
|
287
|
+
dryRun: false,
|
|
288
|
+
help: false,
|
|
289
|
+
};
|
|
290
|
+
for (let i = 0; i < args.length; i++) {
|
|
291
|
+
const arg = args[i];
|
|
292
|
+
switch (arg) {
|
|
293
|
+
case '--help':
|
|
294
|
+
case '-h':
|
|
295
|
+
opts.help = true;
|
|
296
|
+
break;
|
|
297
|
+
case '--file':
|
|
298
|
+
case '-f':
|
|
299
|
+
if (i + 1 >= args.length) {
|
|
300
|
+
console.error(' ✗ --file requires a path');
|
|
301
|
+
process.exit(1);
|
|
302
|
+
}
|
|
303
|
+
opts.file = args[++i];
|
|
304
|
+
break;
|
|
305
|
+
case '--text':
|
|
306
|
+
case '-t':
|
|
307
|
+
if (i + 1 >= args.length) {
|
|
308
|
+
console.error(' ✗ --text requires a value');
|
|
309
|
+
process.exit(1);
|
|
310
|
+
}
|
|
311
|
+
opts.text = args[++i];
|
|
312
|
+
break;
|
|
313
|
+
case '--template':
|
|
314
|
+
if (i + 1 >= args.length) {
|
|
315
|
+
console.error(' ✗ --template requires a name');
|
|
316
|
+
process.exit(1);
|
|
317
|
+
}
|
|
318
|
+
opts.template = args[++i];
|
|
319
|
+
break;
|
|
320
|
+
case '--context':
|
|
321
|
+
if (i + 1 >= args.length) {
|
|
322
|
+
console.error(' ✗ --context requires a path');
|
|
323
|
+
process.exit(1);
|
|
324
|
+
}
|
|
325
|
+
opts.context = args[++i];
|
|
326
|
+
break;
|
|
327
|
+
case '--context-text':
|
|
328
|
+
if (i + 1 >= args.length) {
|
|
329
|
+
console.error(' ✗ --context-text requires a value');
|
|
330
|
+
process.exit(1);
|
|
331
|
+
}
|
|
332
|
+
opts.contextText = args[++i];
|
|
333
|
+
break;
|
|
334
|
+
case '--output':
|
|
335
|
+
case '-o':
|
|
336
|
+
if (i + 1 >= args.length) {
|
|
337
|
+
console.error(' ✗ --output requires a path');
|
|
338
|
+
process.exit(1);
|
|
339
|
+
}
|
|
340
|
+
opts.output = args[++i];
|
|
341
|
+
break;
|
|
342
|
+
case '--adapter':
|
|
343
|
+
case '-a':
|
|
344
|
+
if (i + 1 >= args.length) {
|
|
345
|
+
console.error(' ✗ --adapter requires a name');
|
|
346
|
+
process.exit(1);
|
|
347
|
+
}
|
|
348
|
+
opts.adapter = args[++i];
|
|
349
|
+
break;
|
|
350
|
+
case '--verbose':
|
|
351
|
+
opts.verbose = true;
|
|
352
|
+
break;
|
|
353
|
+
case '--dry-run':
|
|
354
|
+
case '--dryRun':
|
|
355
|
+
opts.dryRun = true;
|
|
356
|
+
break;
|
|
357
|
+
default:
|
|
358
|
+
console.error(` ✗ Unknown option: ${arg}`);
|
|
359
|
+
console.log(HELP);
|
|
360
|
+
process.exit(1);
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
return opts;
|
|
364
|
+
}
|
|
365
|
+
// ── CLI entrypoint ──────────────────────────────────────────────────────────
|
|
366
|
+
export default async function plan({ args, pkgRoot }) {
|
|
367
|
+
const opts = parseArgs(args);
|
|
368
|
+
if (opts.help) {
|
|
369
|
+
console.log(HELP);
|
|
370
|
+
return;
|
|
371
|
+
}
|
|
372
|
+
if (!opts.file && !opts.text) {
|
|
373
|
+
console.error(` ✗ Either --file or --text is required.`);
|
|
374
|
+
console.log(HELP);
|
|
375
|
+
process.exit(1);
|
|
376
|
+
}
|
|
377
|
+
if (opts.file && opts.text) {
|
|
378
|
+
console.error(` ✗ --file and --text are mutually exclusive.`);
|
|
379
|
+
process.exit(1);
|
|
380
|
+
}
|
|
381
|
+
const filePath = opts.file ? resolve(process.cwd(), opts.file) : undefined;
|
|
382
|
+
if (filePath && !existsSync(filePath)) {
|
|
383
|
+
console.error(` ✗ File not found: ${opts.file}`);
|
|
384
|
+
process.exit(1);
|
|
385
|
+
}
|
|
386
|
+
const outputPath = opts.output ? resolve(process.cwd(), opts.output) : undefined;
|
|
387
|
+
const source = opts.file
|
|
388
|
+
? opts.file
|
|
389
|
+
: `"${(opts.text ?? '').slice(0, 60)}${(opts.text ?? '').length > 60 ? '…' : ''}"`;
|
|
390
|
+
console.log(c.dim(` Template: ${opts.template}`));
|
|
391
|
+
console.log(c.dim(` Input: ${source}\n`));
|
|
392
|
+
let result;
|
|
393
|
+
try {
|
|
394
|
+
result = await runPromptStep({
|
|
395
|
+
template: opts.template,
|
|
396
|
+
filePath,
|
|
397
|
+
goalText: opts.text ?? undefined,
|
|
398
|
+
contextPath: opts.context ?? undefined,
|
|
399
|
+
contextText: opts.contextText ?? undefined,
|
|
400
|
+
outputPath,
|
|
401
|
+
adapterName: opts.adapter ?? undefined,
|
|
402
|
+
verbose: opts.verbose,
|
|
403
|
+
dryRun: opts.dryRun,
|
|
404
|
+
pkgRoot,
|
|
405
|
+
});
|
|
406
|
+
}
|
|
407
|
+
catch (err) {
|
|
408
|
+
console.error(` ✗ ${err instanceof Error ? err.message : String(err)}`);
|
|
409
|
+
process.exit(1);
|
|
282
410
|
}
|
|
283
|
-
|
|
411
|
+
if (opts.dryRun)
|
|
412
|
+
return;
|
|
413
|
+
switch (result.outputType) {
|
|
414
|
+
case 'validation': {
|
|
415
|
+
if (result.isValid) {
|
|
416
|
+
console.log(c.green(` ✓ VALID`));
|
|
417
|
+
}
|
|
418
|
+
else {
|
|
419
|
+
console.log(c.red(` ✗ INVALID\n`));
|
|
420
|
+
console.log(result.errors ?? result.rawOutput);
|
|
421
|
+
process.exit(1);
|
|
422
|
+
}
|
|
423
|
+
break;
|
|
424
|
+
}
|
|
425
|
+
case 'prd': {
|
|
426
|
+
const relPath = result.outputPath.startsWith(process.cwd())
|
|
427
|
+
? result.outputPath.slice(process.cwd().length + 1)
|
|
428
|
+
: result.outputPath;
|
|
429
|
+
console.log(c.green(` ✓ PRD written to ${relPath}`));
|
|
430
|
+
console.log(`\n ${c.dim('Next step:')} opencastle plan --file ${relPath} --template validate-prd`);
|
|
431
|
+
break;
|
|
432
|
+
}
|
|
433
|
+
default: {
|
|
434
|
+
const relPath = result.outputPath.startsWith(process.cwd())
|
|
435
|
+
? result.outputPath.slice(process.cwd().length + 1)
|
|
436
|
+
: result.outputPath;
|
|
437
|
+
console.log(c.green(` ✓ Convoy spec written to ${relPath}`));
|
|
438
|
+
if (result.isValid === false) {
|
|
439
|
+
console.log(c.yellow(` (contains validation warnings — review before running)`));
|
|
440
|
+
}
|
|
441
|
+
console.log(`
|
|
284
442
|
${c.dim('Preview:')} npx opencastle run -f ${relPath} --dry-run
|
|
285
443
|
${c.dim('Execute:')} npx opencastle run -f ${relPath}
|
|
286
444
|
`);
|
|
445
|
+
}
|
|
446
|
+
}
|
|
287
447
|
}
|
|
288
448
|
//# sourceMappingURL=plan.js.map
|
package/dist/cli/plan.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/cli/plan.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/cli/plan.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/run.js
CHANGED
|
@@ -806,7 +806,7 @@ export default async function run({ args, pkgRoot }) {
|
|
|
806
806
|
}
|
|
807
807
|
printPipelineResult(pipelineResult);
|
|
808
808
|
if (pipelineDashboardResult) {
|
|
809
|
-
console.log(`\n ${c.dim('Results saved to .opencastle/
|
|
809
|
+
console.log(`\n ${c.dim('Results saved to .opencastle/convoy.db')}`);
|
|
810
810
|
console.log(` ${c.dim('View again:')} opencastle dashboard`);
|
|
811
811
|
pipelineDashboardResult.server.close();
|
|
812
812
|
}
|
|
@@ -895,7 +895,7 @@ export default async function run({ args, pkgRoot }) {
|
|
|
895
895
|
}
|
|
896
896
|
printConvoyResult(result);
|
|
897
897
|
if (dashboardResult) {
|
|
898
|
-
console.log(`\n ${c.dim('Results saved to .opencastle/
|
|
898
|
+
console.log(`\n ${c.dim('Results saved to .opencastle/convoy.db')}`);
|
|
899
899
|
console.log(` ${c.dim('View again:')} opencastle dashboard`);
|
|
900
900
|
dashboardResult.server.close();
|
|
901
901
|
}
|