daedalion 0.3.1 → 0.3.3
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/dist/commands/build.d.ts.map +1 -1
- package/dist/commands/build.js +14 -64
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +18 -21
- package/dist/commands/validate.js.map +1 -1
- package/dist/discovery.d.ts +16 -0
- package/dist/discovery.d.ts.map +1 -0
- package/dist/discovery.js +74 -0
- package/dist/discovery.js.map +1 -0
- package/dist/generators/pattern-instructions.d.ts +1 -1
- package/dist/generators/pattern-instructions.d.ts.map +1 -1
- package/dist/generators/pattern-instructions.js +5 -11
- package/dist/generators/pattern-instructions.js.map +1 -1
- package/dist/generators/prompt.d.ts +1 -1
- package/dist/generators/prompt.d.ts.map +1 -1
- package/dist/generators/prompt.js +4 -3
- package/dist/generators/prompt.js.map +1 -1
- package/dist/generators/skill.js +6 -3
- package/dist/generators/skill.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/templates/init/.github/prompts/daedalion-compile.prompt.md +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EAId,MAAM,aAAa,CAAC;AAIrB,wBAAsB,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAiH7F"}
|
package/dist/commands/build.js
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
import { existsSync,
|
|
1
|
+
import { existsSync, writeFileSync } from 'fs';
|
|
2
2
|
import { join, relative } from 'path';
|
|
3
3
|
import chalk from 'chalk';
|
|
4
4
|
import { VERSION } from '../version.js';
|
|
5
|
-
import { glob } from 'glob';
|
|
6
5
|
import { loadConfig, resolveOpenspecPath, resolveOutputPath } from '../config.js';
|
|
7
|
-
import {
|
|
8
|
-
import { parseProposal } from '../parsers/proposal.js';
|
|
9
|
-
import { parseTasks } from '../parsers/tasks.js';
|
|
6
|
+
import { discoverSpecs, discoverChanges } from '../discovery.js';
|
|
10
7
|
import { generateSkill } from '../generators/skill.js';
|
|
11
8
|
import { generateAgent } from '../generators/agent.js';
|
|
12
9
|
import { generatePrompt } from '../generators/prompt.js';
|
|
@@ -30,14 +27,14 @@ export async function build(cwd, options = {}) {
|
|
|
30
27
|
const generatedFiles = [];
|
|
31
28
|
// Parse specs
|
|
32
29
|
console.log(' Parsing specs...');
|
|
33
|
-
const specs = await
|
|
30
|
+
const specs = await discoverSpecs(openspecDir);
|
|
34
31
|
for (const spec of specs) {
|
|
35
32
|
console.log(chalk.gray(` ✓ ${relative(cwd, spec.path)}`));
|
|
36
33
|
}
|
|
37
34
|
// Parse changes
|
|
38
35
|
console.log();
|
|
39
36
|
console.log(' Parsing changes...');
|
|
40
|
-
const changes = await
|
|
37
|
+
const changes = await discoverChanges(openspecDir);
|
|
41
38
|
for (const change of changes) {
|
|
42
39
|
console.log(chalk.gray(` ✓ ${relative(cwd, change.proposal.path)}`));
|
|
43
40
|
}
|
|
@@ -58,8 +55,10 @@ export async function build(cwd, options = {}) {
|
|
|
58
55
|
generatedFiles.push(agentResult);
|
|
59
56
|
logGenerated(agentResult.path, cwd, options);
|
|
60
57
|
const patternInstructionsResult = generatePatternInstructions(spec, outputDir, options);
|
|
61
|
-
|
|
62
|
-
|
|
58
|
+
if (patternInstructionsResult !== null) {
|
|
59
|
+
generatedFiles.push(patternInstructionsResult);
|
|
60
|
+
logGenerated(patternInstructionsResult.path, cwd, options);
|
|
61
|
+
}
|
|
63
62
|
}
|
|
64
63
|
// Generate tool stubs if --with-tools flag is set
|
|
65
64
|
if (options.withTools) {
|
|
@@ -78,8 +77,12 @@ export async function build(cwd, options = {}) {
|
|
|
78
77
|
logGenerated(agentsIndexResult.path, cwd, options);
|
|
79
78
|
// Generate prompts from changes
|
|
80
79
|
for (const change of changes) {
|
|
81
|
-
const
|
|
82
|
-
const
|
|
80
|
+
const rawPrimary = change.proposal.frontmatter?.primary_domain;
|
|
81
|
+
const primaryDomain = typeof rawPrimary === 'string' && rawPrimary.length > 0
|
|
82
|
+
? rawPrimary
|
|
83
|
+
: (change.domains[0] ?? 'default');
|
|
84
|
+
const allDomains = change.domains.length > 0 ? change.domains : ['default'];
|
|
85
|
+
const promptResult = generatePrompt(change.proposal, change.tasks, primaryDomain, allDomains, outputDir, options);
|
|
83
86
|
generatedFiles.push(promptResult);
|
|
84
87
|
logGenerated(promptResult.path, cwd, options);
|
|
85
88
|
}
|
|
@@ -117,53 +120,6 @@ function writeManifest(outputDir, generatedFiles, cwd) {
|
|
|
117
120
|
ensureDir(manifestPath);
|
|
118
121
|
writeFileSync(manifestPath, JSON.stringify(manifest, null, 2));
|
|
119
122
|
}
|
|
120
|
-
async function findAndParseSpecs(openspecDir, _options) {
|
|
121
|
-
const specsByDomain = new Map();
|
|
122
|
-
// 1. Canonical specs: openspec/specs/*/spec.md (always take priority)
|
|
123
|
-
const canonicalDir = join(openspecDir, 'specs');
|
|
124
|
-
if (existsSync(canonicalDir)) {
|
|
125
|
-
const files = await glob('*/spec.md', { cwd: canonicalDir });
|
|
126
|
-
for (const file of files) {
|
|
127
|
-
const spec = parseSpec(join(canonicalDir, file));
|
|
128
|
-
specsByDomain.set(spec.domain, spec);
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
// 2. Delta specs: openspec/changes/*/specs/*/spec.md
|
|
132
|
-
// Only used when no canonical spec exists for that domain
|
|
133
|
-
const changesDir = join(openspecDir, 'changes');
|
|
134
|
-
if (existsSync(changesDir)) {
|
|
135
|
-
const files = await glob('*/specs/*/spec.md', { cwd: changesDir });
|
|
136
|
-
for (const file of files) {
|
|
137
|
-
const spec = parseSpec(join(changesDir, file));
|
|
138
|
-
if (!specsByDomain.has(spec.domain)) {
|
|
139
|
-
specsByDomain.set(spec.domain, spec);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
return Array.from(specsByDomain.values());
|
|
144
|
-
}
|
|
145
|
-
async function findAndParseChanges(openspecDir, _options) {
|
|
146
|
-
const changesDir = join(openspecDir, 'changes');
|
|
147
|
-
if (!existsSync(changesDir)) {
|
|
148
|
-
return [];
|
|
149
|
-
}
|
|
150
|
-
const changes = [];
|
|
151
|
-
const changeDirs = readdirSync(changesDir).filter(name => {
|
|
152
|
-
const fullPath = join(changesDir, name);
|
|
153
|
-
return statSync(fullPath).isDirectory();
|
|
154
|
-
});
|
|
155
|
-
for (const changeDir of changeDirs) {
|
|
156
|
-
const proposalPath = join(changesDir, changeDir, 'proposal.md');
|
|
157
|
-
const tasksPath = join(changesDir, changeDir, 'tasks.md');
|
|
158
|
-
if (existsSync(proposalPath)) {
|
|
159
|
-
changes.push({
|
|
160
|
-
proposal: parseProposal(proposalPath),
|
|
161
|
-
tasks: parseTasks(tasksPath)
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
return changes;
|
|
166
|
-
}
|
|
167
123
|
function aggregateTasks(changes) {
|
|
168
124
|
const tasksByDomain = {};
|
|
169
125
|
for (const change of changes) {
|
|
@@ -175,12 +131,6 @@ function aggregateTasks(changes) {
|
|
|
175
131
|
}
|
|
176
132
|
return tasksByDomain;
|
|
177
133
|
}
|
|
178
|
-
function findDomainForChange(change, specs) {
|
|
179
|
-
if (specs.length > 0) {
|
|
180
|
-
return specs[0].domain;
|
|
181
|
-
}
|
|
182
|
-
return 'default';
|
|
183
|
-
}
|
|
184
134
|
function logGenerated(filePath, cwd, options) {
|
|
185
135
|
const relativePath = relative(cwd, filePath);
|
|
186
136
|
if (options.dryRun) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAWA,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAiG5D"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { existsSync, readdirSync, statSync } from 'fs';
|
|
1
|
+
import { existsSync, readFileSync, readdirSync, statSync } from 'fs';
|
|
2
2
|
import { join } from 'path';
|
|
3
3
|
import chalk from 'chalk';
|
|
4
4
|
import { VERSION } from '../version.js';
|
|
5
|
-
import { glob } from 'glob';
|
|
6
5
|
import { loadConfig, resolveOpenspecPath, resolveOutputPath } from '../config.js';
|
|
7
|
-
import {
|
|
6
|
+
import { discoverSpecs } from '../discovery.js';
|
|
8
7
|
import { parseProposal } from '../parsers/proposal.js';
|
|
8
|
+
const MANIFEST_FILENAME = '.daedalion-manifest.json';
|
|
9
9
|
export async function validate(cwd) {
|
|
10
10
|
console.log();
|
|
11
11
|
console.log(chalk.bold(` Daedalion v${VERSION} - Validate`));
|
|
@@ -14,7 +14,7 @@ export async function validate(cwd) {
|
|
|
14
14
|
const openspecDir = resolveOpenspecPath(cwd, config);
|
|
15
15
|
const outputDir = resolveOutputPath(cwd, config);
|
|
16
16
|
const errors = [];
|
|
17
|
-
const specs = await
|
|
17
|
+
const specs = await discoverSpecs(openspecDir);
|
|
18
18
|
const changes = await findAndParseChanges(openspecDir);
|
|
19
19
|
// Rule 1: Every spec has ≥1 requirement
|
|
20
20
|
for (const spec of specs) {
|
|
@@ -56,19 +56,24 @@ export async function validate(cwd) {
|
|
|
56
56
|
});
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
|
-
// Rule 5: No orphaned skills
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
59
|
+
// Rule 5: No orphaned skills (manifest-scoped)
|
|
60
|
+
// Only checks skills Daedalion generated. Hand-maintained skills are not Daedalion's concern.
|
|
61
|
+
// Skips entirely when no manifest exists (build has never been run).
|
|
62
|
+
const manifestPath = join(outputDir, MANIFEST_FILENAME);
|
|
63
|
+
if (existsSync(manifestPath)) {
|
|
64
|
+
const manifest = JSON.parse(readFileSync(manifestPath, 'utf-8'));
|
|
65
|
+
const manifestSkillDomains = manifest.files
|
|
66
|
+
.filter(f => f.includes('/skills/') && f.endsWith('/SKILL.md'))
|
|
67
|
+
.map(f => {
|
|
68
|
+
const parts = f.split('/');
|
|
69
|
+
return parts[parts.indexOf('skills') + 1];
|
|
65
70
|
});
|
|
66
|
-
for (const
|
|
67
|
-
const hasSpec = specs.some((s) => s.domain ===
|
|
71
|
+
for (const domain of manifestSkillDomains) {
|
|
72
|
+
const hasSpec = specs.some((s) => s.domain === domain);
|
|
68
73
|
if (!hasSpec) {
|
|
69
74
|
errors.push({
|
|
70
75
|
rule: 'no-orphan-skills',
|
|
71
|
-
message: `Orphan skill: ${
|
|
76
|
+
message: `Orphan skill: ${domain} has no source spec.\n Run 'daedalion build' again or add openspec/specs/${domain}/spec.md`
|
|
72
77
|
});
|
|
73
78
|
}
|
|
74
79
|
}
|
|
@@ -86,14 +91,6 @@ export async function validate(cwd) {
|
|
|
86
91
|
}
|
|
87
92
|
return false;
|
|
88
93
|
}
|
|
89
|
-
async function findAndParseSpecs(openspecDir) {
|
|
90
|
-
const specsDir = join(openspecDir, 'specs');
|
|
91
|
-
if (!existsSync(specsDir)) {
|
|
92
|
-
return [];
|
|
93
|
-
}
|
|
94
|
-
const specFiles = await glob('*/spec.md', { cwd: specsDir });
|
|
95
|
-
return specFiles.map((file) => parseSpec(join(specsDir, file)));
|
|
96
|
-
}
|
|
97
94
|
async function findAndParseChanges(openspecDir) {
|
|
98
95
|
const changesDir = join(openspecDir, 'changes');
|
|
99
96
|
if (!existsSync(changesDir)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ParsedChange, Spec } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Discovers all specs for the project: canonical specs take priority;
|
|
4
|
+
* delta specs fill in any domain not yet promoted to canonical.
|
|
5
|
+
*
|
|
6
|
+
* Canonical: openspec/specs/<domain>/spec.md
|
|
7
|
+
* Delta: openspec/changes/<change>/specs/<domain>/spec.md
|
|
8
|
+
*/
|
|
9
|
+
export declare function discoverSpecs(openspecDir: string): Promise<Spec[]>;
|
|
10
|
+
/**
|
|
11
|
+
* Discovers all active changes, capturing the delta-spec domains each change
|
|
12
|
+
* introduces. `domains` is sorted alphabetically and is empty when the change
|
|
13
|
+
* has no delta specs.
|
|
14
|
+
*/
|
|
15
|
+
export declare function discoverChanges(openspecDir: string): Promise<ParsedChange[]>;
|
|
16
|
+
//# sourceMappingURL=discovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAErD;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CA0BxE;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAmClF"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { existsSync, readdirSync, statSync } from 'fs';
|
|
2
|
+
import { join } from 'path';
|
|
3
|
+
import { glob } from 'glob';
|
|
4
|
+
import { parseSpec } from './parsers/spec.js';
|
|
5
|
+
import { parseProposal } from './parsers/proposal.js';
|
|
6
|
+
import { parseTasks } from './parsers/tasks.js';
|
|
7
|
+
/**
|
|
8
|
+
* Discovers all specs for the project: canonical specs take priority;
|
|
9
|
+
* delta specs fill in any domain not yet promoted to canonical.
|
|
10
|
+
*
|
|
11
|
+
* Canonical: openspec/specs/<domain>/spec.md
|
|
12
|
+
* Delta: openspec/changes/<change>/specs/<domain>/spec.md
|
|
13
|
+
*/
|
|
14
|
+
export async function discoverSpecs(openspecDir) {
|
|
15
|
+
const specsByDomain = new Map();
|
|
16
|
+
// 1. Canonical specs always win
|
|
17
|
+
const canonicalDir = join(openspecDir, 'specs');
|
|
18
|
+
if (existsSync(canonicalDir)) {
|
|
19
|
+
const files = await glob('*/spec.md', { cwd: canonicalDir });
|
|
20
|
+
for (const file of files) {
|
|
21
|
+
const spec = parseSpec(join(canonicalDir, file));
|
|
22
|
+
specsByDomain.set(spec.domain, spec);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
// 2. Delta specs fill in domains not yet promoted
|
|
26
|
+
const changesDir = join(openspecDir, 'changes');
|
|
27
|
+
if (existsSync(changesDir)) {
|
|
28
|
+
const files = await glob('*/specs/*/spec.md', { cwd: changesDir });
|
|
29
|
+
for (const file of files) {
|
|
30
|
+
const spec = parseSpec(join(changesDir, file));
|
|
31
|
+
if (!specsByDomain.has(spec.domain)) {
|
|
32
|
+
specsByDomain.set(spec.domain, spec);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return Array.from(specsByDomain.values());
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Discovers all active changes, capturing the delta-spec domains each change
|
|
40
|
+
* introduces. `domains` is sorted alphabetically and is empty when the change
|
|
41
|
+
* has no delta specs.
|
|
42
|
+
*/
|
|
43
|
+
export async function discoverChanges(openspecDir) {
|
|
44
|
+
const changesDir = join(openspecDir, 'changes');
|
|
45
|
+
if (!existsSync(changesDir)) {
|
|
46
|
+
return [];
|
|
47
|
+
}
|
|
48
|
+
const changes = [];
|
|
49
|
+
const changeDirs = readdirSync(changesDir).filter(name => {
|
|
50
|
+
const fullPath = join(changesDir, name);
|
|
51
|
+
return statSync(fullPath).isDirectory();
|
|
52
|
+
});
|
|
53
|
+
for (const changeDir of changeDirs) {
|
|
54
|
+
const changeFullPath = join(changesDir, changeDir);
|
|
55
|
+
const proposalPath = join(changeFullPath, 'proposal.md');
|
|
56
|
+
const tasksPath = join(changeFullPath, 'tasks.md');
|
|
57
|
+
if (!existsSync(proposalPath))
|
|
58
|
+
continue;
|
|
59
|
+
// Collect delta spec domain names for this change
|
|
60
|
+
const deltaSpecsDir = join(changeFullPath, 'specs');
|
|
61
|
+
let domains = [];
|
|
62
|
+
if (existsSync(deltaSpecsDir)) {
|
|
63
|
+
const specFiles = await glob('*/spec.md', { cwd: deltaSpecsDir });
|
|
64
|
+
domains = specFiles.map(f => f.replace('/spec.md', '')).sort();
|
|
65
|
+
}
|
|
66
|
+
changes.push({
|
|
67
|
+
proposal: parseProposal(proposalPath),
|
|
68
|
+
tasks: parseTasks(tasksPath),
|
|
69
|
+
domains,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
return changes;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=discovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { GeneratedFile, BuildOptions, Spec } from '../types.js';
|
|
2
|
-
export declare function generatePatternInstructions(spec: Spec, outputDir: string, options?: BuildOptions): GeneratedFile;
|
|
2
|
+
export declare function generatePatternInstructions(spec: Spec, outputDir: string, options?: BuildOptions): GeneratedFile | null;
|
|
3
3
|
//# sourceMappingURL=pattern-instructions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pattern-instructions.d.ts","sourceRoot":"","sources":["../../src/generators/pattern-instructions.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,IAAI,EAAe,MAAM,aAAa,CAAC;AAElF,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,YAAiB,GACzB,aAAa,
|
|
1
|
+
{"version":3,"file":"pattern-instructions.d.ts","sourceRoot":"","sources":["../../src/generators/pattern-instructions.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,IAAI,EAAe,MAAM,aAAa,CAAC;AAElF,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,YAAiB,GACzB,aAAa,GAAG,IAAI,CAqBtB"}
|
|
@@ -2,22 +2,16 @@ import { ensureDir } from '../utils.js';
|
|
|
2
2
|
import { writeFileSync } from 'fs';
|
|
3
3
|
import { join } from 'path';
|
|
4
4
|
export function generatePatternInstructions(spec, outputDir, options = {}) {
|
|
5
|
+
const raw = spec.frontmatter?.file_pattern;
|
|
6
|
+
const filePattern = typeof raw === 'string' && raw.length > 0 ? raw : null;
|
|
7
|
+
if (!filePattern)
|
|
8
|
+
return null;
|
|
5
9
|
const instructionsPath = join(outputDir, 'instructions', `${spec.domain}.instructions.md`);
|
|
6
10
|
const requirementsSummary = spec.requirements
|
|
7
11
|
.slice(0, 5)
|
|
8
12
|
.map((r) => `- **${r.name}**: ${r.description}`)
|
|
9
13
|
.join('\n');
|
|
10
|
-
const content =
|
|
11
|
-
applyTo: "**"
|
|
12
|
-
---
|
|
13
|
-
# ${spec.title}
|
|
14
|
-
|
|
15
|
-
Domain: \`${spec.domain}\` · Skill: \`#${spec.domain}\`
|
|
16
|
-
|
|
17
|
-
## Requirements
|
|
18
|
-
|
|
19
|
-
${requirementsSummary || `See \`.github/skills/${spec.domain}/SKILL.md\` for full requirements.`}
|
|
20
|
-
`;
|
|
14
|
+
const content = `---\napplyTo: "${filePattern}"\n---\n# ${spec.title}\n\nDomain: \`${spec.domain}\` · Skill: \`#${spec.domain}\`\n\n## Requirements\n\n${requirementsSummary || `See \`.github/skills/${spec.domain}/SKILL.md\` for full requirements.`}\n`;
|
|
21
15
|
if (options.dryRun) {
|
|
22
16
|
return { path: instructionsPath, content };
|
|
23
17
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pattern-instructions.js","sourceRoot":"","sources":["../../src/generators/pattern-instructions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B,MAAM,UAAU,2BAA2B,CACzC,IAAU,EACV,SAAiB,EACjB,UAAwB,EAAE;IAE1B,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,MAAM,kBAAkB,CAAC,CAAC;IAE3F,MAAM,mBAAmB,GAAG,IAAI,CAAC,YAAY;SAC1C,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SACX,GAAG,CAAC,CAAC,CAAc,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;SAC5D,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,OAAO,GAAG
|
|
1
|
+
{"version":3,"file":"pattern-instructions.js","sourceRoot":"","sources":["../../src/generators/pattern-instructions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B,MAAM,UAAU,2BAA2B,CACzC,IAAU,EACV,SAAiB,EACjB,UAAwB,EAAE;IAE1B,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC;IAC3C,MAAM,WAAW,GAAG,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3E,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAE9B,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,MAAM,kBAAkB,CAAC,CAAC;IAE3F,MAAM,mBAAmB,GAAG,IAAI,CAAC,YAAY;SAC1C,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SACX,GAAG,CAAC,CAAC,CAAc,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;SAC5D,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,OAAO,GAAG,kBAAkB,WAAW,aAAa,IAAI,CAAC,KAAK,iBAAiB,IAAI,CAAC,MAAM,kBAAkB,IAAI,CAAC,MAAM,4BAA4B,mBAAmB,IAAI,wBAAwB,IAAI,CAAC,MAAM,oCAAoC,IAAI,CAAC;IAE5P,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC;IAC7C,CAAC;IAED,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAC5B,aAAa,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;IACzC,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC;AAC7C,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { BuildOptions, GeneratedFile, Proposal, TasksSummary } from '../types.js';
|
|
2
|
-
export declare function generatePrompt(proposal: Proposal, tasks: TasksSummary,
|
|
2
|
+
export declare function generatePrompt(proposal: Proposal, tasks: TasksSummary, primaryDomain: string, allDomains: string[], outputDir: string, options?: BuildOptions): GeneratedFile;
|
|
3
3
|
export declare function generateCyclePrompt(outputDir: string, options?: BuildOptions): GeneratedFile;
|
|
4
4
|
//# sourceMappingURL=prompt.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/generators/prompt.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEvF,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/generators/prompt.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEvF,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,YAAY,EACnB,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAAE,EACpB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,YAAiB,GACzB,aAAa,CAoCf;AAED,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,YAAiB,GACzB,aAAa,CAwEf"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { ensureDir } from '../utils.js';
|
|
2
2
|
import { writeFileSync } from 'fs';
|
|
3
3
|
import { join } from 'path';
|
|
4
|
-
export function generatePrompt(proposal, tasks,
|
|
4
|
+
export function generatePrompt(proposal, tasks, primaryDomain, allDomains, outputDir, options = {}) {
|
|
5
5
|
const promptPath = join(outputDir, 'prompts', `${proposal.changeName}.prompt.md`);
|
|
6
|
+
const skillLines = allDomains.map(d => `- #${d}`).join('\n');
|
|
6
7
|
const content = `---
|
|
7
8
|
description: ${proposal.title}
|
|
8
|
-
agent: ${
|
|
9
|
+
agent: ${primaryDomain}
|
|
9
10
|
---
|
|
10
11
|
Implement the ${proposal.changeName} change proposal.
|
|
11
12
|
|
|
@@ -20,7 +21,7 @@ ${proposal.what || 'No scope defined.'}
|
|
|
20
21
|
- Tasks: openspec/changes/${proposal.changeName}/tasks.md
|
|
21
22
|
|
|
22
23
|
## Skills
|
|
23
|
-
|
|
24
|
+
${skillLines}
|
|
24
25
|
${tasks && tasks.items.length > 0 ? `
|
|
25
26
|
## Tasks
|
|
26
27
|
${tasks.items.map((t) => `- [ ] ${t}`).join('\n')}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/generators/prompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B,MAAM,UAAU,cAAc,CAC5B,QAAkB,EAClB,KAAmB,EACnB,
|
|
1
|
+
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/generators/prompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B,MAAM,UAAU,cAAc,CAC5B,QAAkB,EAClB,KAAmB,EACnB,aAAqB,EACrB,UAAoB,EACpB,SAAiB,EACjB,UAAwB,EAAE;IAE1B,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC,UAAU,YAAY,CAAC,CAAC;IAElF,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE7D,MAAM,OAAO,GAAG;eACH,QAAQ,CAAC,KAAK;SACpB,aAAa;;gBAEN,QAAQ,CAAC,UAAU;;;EAGjC,QAAQ,CAAC,GAAG,IAAI,sBAAsB;;;EAGtC,QAAQ,CAAC,IAAI,IAAI,mBAAmB;;;+BAGP,QAAQ,CAAC,UAAU;4BACtB,QAAQ,CAAC,UAAU;;;EAG7C,UAAU;EACV,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;;EAElC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;EACvD,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE;CAC5D,CAAC;IAEA,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;IACvC,CAAC;IAED,SAAS,CAAC,UAAU,CAAC,CAAC;IACtB,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACnC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,SAAiB,EACjB,UAAwB,EAAE;IAE1B,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,oCAAoC,CAAC,CAAC;IACpF,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6DjB,CAAC;IAEA,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;IACvC,CAAC;IAED,SAAS,CAAC,UAAU,CAAC,CAAC;IACtB,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACnC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;AACvC,CAAC"}
|
package/dist/generators/skill.js
CHANGED
|
@@ -75,10 +75,13 @@ ${tasks.hasMore ? `\n> Full task list: openspec/changes/*/tasks.md` : ''}`;
|
|
|
75
75
|
function generateDescription(spec) {
|
|
76
76
|
const domain = spec.domain;
|
|
77
77
|
if (spec.requirements.length === 0) {
|
|
78
|
-
return `Use when working on ${domain}
|
|
78
|
+
return `Use when working on ${domain}.`;
|
|
79
79
|
}
|
|
80
|
-
const
|
|
81
|
-
|
|
80
|
+
const reqNames = spec.requirements
|
|
81
|
+
.map(r => r.name.toLowerCase())
|
|
82
|
+
.join(', ');
|
|
83
|
+
const description = `${spec.title} - ${reqNames}. Use when working on ${domain}.`;
|
|
84
|
+
return description.slice(0, 1024);
|
|
82
85
|
}
|
|
83
86
|
function generateSpoke(req) {
|
|
84
87
|
const lines = [`# ${req.name}`, ''];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/generators/skill.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/generators/skill.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -99,6 +99,8 @@ export interface ValidationError {
|
|
|
99
99
|
export interface ParsedChange {
|
|
100
100
|
proposal: Proposal;
|
|
101
101
|
tasks: TasksSummary;
|
|
102
|
+
/** Delta spec domain names for this change (alphabetical). Empty if no delta specs exist. */
|
|
103
|
+
domains: string[];
|
|
102
104
|
}
|
|
103
105
|
/** Validate-only change reference */
|
|
104
106
|
export interface ChangeReference {
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED