@semanticintent/phoenix-runtime 0.1.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 +66 -0
- package/agents/A-00-SIGNAL-EXTRACTION.md +194 -0
- package/agents/A-01-BUSINESS-LOGIC-EXTRACTOR.md +163 -0
- package/agents/A-02-UI-ARCHAEOLOGIST.md +196 -0
- package/agents/A-03-REQUIREMENTS-SYNTHESIZER.md +193 -0
- package/agents/A-04-SOLUTION-ARCHITECT.md +218 -0
- package/agents/A-05-BUILDER.md +266 -0
- package/agents/A-06-VALIDATOR-CERTIFIER.md +304 -0
- package/bin/phoenix.js +3 -0
- package/dist/cli/commands/episode.d.ts +3 -0
- package/dist/cli/commands/episode.d.ts.map +1 -0
- package/dist/cli/commands/episode.js +125 -0
- package/dist/cli/commands/episode.js.map +1 -0
- package/dist/cli/commands/gate.d.ts +3 -0
- package/dist/cli/commands/gate.d.ts.map +1 -0
- package/dist/cli/commands/gate.js +57 -0
- package/dist/cli/commands/gate.js.map +1 -0
- package/dist/cli/commands/init.d.ts +3 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +77 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/run.d.ts +3 -0
- package/dist/cli/commands/run.d.ts.map +1 -0
- package/dist/cli/commands/run.js +56 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/commands/status.d.ts +3 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +23 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/commands/validate.d.ts +3 -0
- package/dist/cli/commands/validate.d.ts.map +1 -0
- package/dist/cli/commands/validate.js +41 -0
- package/dist/cli/commands/validate.js.map +1 -0
- package/dist/cli/display.d.ts +12 -0
- package/dist/cli/display.d.ts.map +1 -0
- package/dist/cli/display.js +28 -0
- package/dist/cli/display.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +20 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/episodes/manager.d.ts +16 -0
- package/dist/episodes/manager.d.ts.map +1 -0
- package/dist/episodes/manager.js +96 -0
- package/dist/episodes/manager.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/parser/sil.d.ts +15 -0
- package/dist/parser/sil.d.ts.map +1 -0
- package/dist/parser/sil.js +137 -0
- package/dist/parser/sil.js.map +1 -0
- package/dist/pipeline/agents.d.ts +16 -0
- package/dist/pipeline/agents.d.ts.map +1 -0
- package/dist/pipeline/agents.js +72 -0
- package/dist/pipeline/agents.js.map +1 -0
- package/dist/pipeline/orchestrator.d.ts +21 -0
- package/dist/pipeline/orchestrator.d.ts.map +1 -0
- package/dist/pipeline/orchestrator.js +213 -0
- package/dist/pipeline/orchestrator.js.map +1 -0
- package/dist/pipeline/state.d.ts +34 -0
- package/dist/pipeline/state.d.ts.map +1 -0
- package/dist/pipeline/state.js +83 -0
- package/dist/pipeline/state.js.map +1 -0
- package/dist/prompts/loader.d.ts +3 -0
- package/dist/prompts/loader.d.ts.map +1 -0
- package/dist/prompts/loader.js +22 -0
- package/dist/prompts/loader.js.map +1 -0
- package/package.json +56 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { writeFileSync } from 'node:fs';
|
|
2
|
+
import { resolve } from 'node:path';
|
|
3
|
+
import { Command } from 'commander';
|
|
4
|
+
import { prepareRun } from '../../pipeline/orchestrator.js';
|
|
5
|
+
import { display } from '../display.js';
|
|
6
|
+
export const runCommand = new Command('run')
|
|
7
|
+
.argument('<agent-id>', 'agent to run — a-00 through a-06')
|
|
8
|
+
.option('--project <path>', 'path to the Phoenix project', process.cwd())
|
|
9
|
+
.option('--output <file>', 'write prompt to file instead of terminal')
|
|
10
|
+
.description('Prepare and output the prompt for an agent run')
|
|
11
|
+
.action(async (agentId, options) => {
|
|
12
|
+
const projectPath = resolve(options.project);
|
|
13
|
+
display.blank();
|
|
14
|
+
display.info(`Preparing ${agentId.toUpperCase()} — checking prerequisites...`);
|
|
15
|
+
let result;
|
|
16
|
+
try {
|
|
17
|
+
result = await prepareRun(agentId, projectPath);
|
|
18
|
+
}
|
|
19
|
+
catch (err) {
|
|
20
|
+
display.error(err.message);
|
|
21
|
+
process.exit(1);
|
|
22
|
+
}
|
|
23
|
+
if (!result.ready) {
|
|
24
|
+
display.blank();
|
|
25
|
+
display.error(`${agentId.toUpperCase()} is not ready`);
|
|
26
|
+
display.info(` Reason: ${result.reason}`);
|
|
27
|
+
display.blank();
|
|
28
|
+
display.info(' Run `phoenix status` to see the full pipeline state.');
|
|
29
|
+
display.blank();
|
|
30
|
+
process.exit(1);
|
|
31
|
+
}
|
|
32
|
+
// Report what was checked
|
|
33
|
+
if (result.prerequisitesMet.length > 0) {
|
|
34
|
+
for (const prereq of result.prerequisitesMet) {
|
|
35
|
+
display.success(prereq);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
if (result.episodeCount > 0) {
|
|
39
|
+
display.warn(`${result.episodeCount} open episode(s) injected into prompt`);
|
|
40
|
+
}
|
|
41
|
+
const prompt = result.prompt;
|
|
42
|
+
if (options.output) {
|
|
43
|
+
const outPath = resolve(options.output);
|
|
44
|
+
writeFileSync(outPath, prompt, 'utf-8');
|
|
45
|
+
display.blank();
|
|
46
|
+
display.success(`Prompt written to: ${outPath}`);
|
|
47
|
+
display.info(' Open the file and paste its contents into Claude Code.');
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
display.prompt(prompt);
|
|
51
|
+
display.info(' Copy the prompt above and paste it into Claude Code.');
|
|
52
|
+
display.info(' When the agent completes, run: phoenix status');
|
|
53
|
+
}
|
|
54
|
+
display.blank();
|
|
55
|
+
});
|
|
56
|
+
//# sourceMappingURL=run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/cli/commands/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAEvC,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC;KACzC,QAAQ,CAAC,YAAY,EAAE,kCAAkC,CAAC;KAC1D,MAAM,CAAC,kBAAkB,EAAE,6BAA6B,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;KACxE,MAAM,CAAC,iBAAiB,EAAE,0CAA0C,CAAC;KACrE,WAAW,CAAC,gDAAgD,CAAC;KAC7D,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,OAA6C,EAAE,EAAE;IAC/E,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAE5C,OAAO,CAAC,KAAK,EAAE,CAAA;IACf,OAAO,CAAC,IAAI,CAAC,aAAa,OAAO,CAAC,WAAW,EAAE,8BAA8B,CAAC,CAAA;IAE9E,IAAI,MAAM,CAAA;IACV,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;IACjD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAE,GAAa,CAAC,OAAO,CAAC,CAAA;QACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,EAAE,CAAA;QACf,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE,eAAe,CAAC,CAAA;QACtD,OAAO,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;QAC1C,OAAO,CAAC,KAAK,EAAE,CAAA;QACf,OAAO,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAA;QACtE,OAAO,CAAC,KAAK,EAAE,CAAA;QACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,0BAA0B;IAC1B,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvC,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAC7C,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QACzB,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,YAAY,uCAAuC,CAAC,CAAA;IAC7E,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAO,CAAA;IAE7B,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QACvC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QACvC,OAAO,CAAC,KAAK,EAAE,CAAA;QACf,OAAO,CAAC,OAAO,CAAC,sBAAsB,OAAO,EAAE,CAAC,CAAA;QAChD,OAAO,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAA;IAC1E,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACtB,OAAO,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAA;QACtE,OAAO,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAA;IACjE,CAAC;IAED,OAAO,CAAC,KAAK,EAAE,CAAA;AACjB,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAKnC,eAAO,MAAM,aAAa,SAiBtB,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { resolve } from 'node:path';
|
|
2
|
+
import { Command } from 'commander';
|
|
3
|
+
import { readState } from '../../pipeline/state.js';
|
|
4
|
+
import { pipelineSummary } from '../../pipeline/orchestrator.js';
|
|
5
|
+
import { display } from '../display.js';
|
|
6
|
+
export const statusCommand = new Command('status')
|
|
7
|
+
.option('--project <path>', 'path to the Phoenix project', process.cwd())
|
|
8
|
+
.description('Show current pipeline state — agents, gates, artifact counts')
|
|
9
|
+
.action((options) => {
|
|
10
|
+
const projectPath = resolve(options.project);
|
|
11
|
+
let state;
|
|
12
|
+
try {
|
|
13
|
+
state = readState(projectPath);
|
|
14
|
+
}
|
|
15
|
+
catch (err) {
|
|
16
|
+
display.error(err.message);
|
|
17
|
+
process.exit(1);
|
|
18
|
+
}
|
|
19
|
+
display.blank();
|
|
20
|
+
console.log(pipelineSummary(state, projectPath));
|
|
21
|
+
display.blank();
|
|
22
|
+
});
|
|
23
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAEvC,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAC/C,MAAM,CAAC,kBAAkB,EAAE,6BAA6B,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;KACxE,WAAW,CAAC,8DAA8D,CAAC;KAC3E,MAAM,CAAC,CAAC,OAA4B,EAAE,EAAE;IACvC,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAE5C,IAAI,KAAK,CAAA;IACT,IAAI,CAAC;QACH,KAAK,GAAG,SAAS,CAAC,WAAW,CAAC,CAAA;IAChC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAE,GAAa,CAAC,OAAO,CAAC,CAAA;QACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,OAAO,CAAC,KAAK,EAAE,CAAA;IACf,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAA;IAChD,OAAO,CAAC,KAAK,EAAE,CAAA;AACjB,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/validate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAInC,eAAO,MAAM,eAAe,SAsCxB,CAAA"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { resolve } from 'node:path';
|
|
2
|
+
import { Command } from 'commander';
|
|
3
|
+
import { validateArtifacts } from '../../pipeline/orchestrator.js';
|
|
4
|
+
import { display } from '../display.js';
|
|
5
|
+
export const validateCommand = new Command('validate')
|
|
6
|
+
.argument('<agent-id>', 'agent whose outputs to validate — a-00 through a-06')
|
|
7
|
+
.option('--project <path>', 'path to the Phoenix project', process.cwd())
|
|
8
|
+
.description('Check that all expected artifact outputs exist for a completed agent')
|
|
9
|
+
.action((agentId, options) => {
|
|
10
|
+
const projectPath = resolve(options.project);
|
|
11
|
+
let result;
|
|
12
|
+
try {
|
|
13
|
+
result = validateArtifacts(agentId, projectPath);
|
|
14
|
+
}
|
|
15
|
+
catch (err) {
|
|
16
|
+
display.error(err.message);
|
|
17
|
+
process.exit(1);
|
|
18
|
+
}
|
|
19
|
+
display.blank();
|
|
20
|
+
display.header(`Artifact validation — ${agentId.toUpperCase()}`);
|
|
21
|
+
for (const construct of result.expected) {
|
|
22
|
+
const count = result.found[construct] ?? 0;
|
|
23
|
+
const missing = result.missing.includes(construct);
|
|
24
|
+
if (missing) {
|
|
25
|
+
display.error(`${construct.padEnd(16)} 0 files — missing`);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
display.success(`${construct.padEnd(16)} ${count} file${count !== 1 ? 's' : ''}`);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
display.blank();
|
|
32
|
+
if (result.missing.length > 0) {
|
|
33
|
+
display.warn(`${result.missing.length} construct type(s) missing — re-run the agent.`);
|
|
34
|
+
process.exit(1);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
display.success('All expected artifacts present.');
|
|
38
|
+
}
|
|
39
|
+
display.blank();
|
|
40
|
+
});
|
|
41
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/cli/commands/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAEvC,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC;KACnD,QAAQ,CAAC,YAAY,EAAE,qDAAqD,CAAC;KAC7E,MAAM,CAAC,kBAAkB,EAAE,6BAA6B,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;KACxE,WAAW,CAAC,sEAAsE,CAAC;KACnF,MAAM,CAAC,CAAC,OAAe,EAAE,OAA4B,EAAE,EAAE;IACxD,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAE5C,IAAI,MAAM,CAAA;IACV,IAAI,CAAC;QACH,MAAM,GAAG,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;IAClD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAE,GAAa,CAAC,OAAO,CAAC,CAAA;QACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,OAAO,CAAC,KAAK,EAAE,CAAA;IACf,OAAO,CAAC,MAAM,CAAC,yBAAyB,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;IAEhE,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAC1C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;QAClD,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAA;QAC5D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,KAAK,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QACnF,CAAC;IACH,CAAC;IAED,OAAO,CAAC,KAAK,EAAE,CAAA;IAEf,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,gDAAgD,CAAC,CAAA;QACtF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAA;IACpD,CAAC;IAED,OAAO,CAAC,KAAK,EAAE,CAAA;AACjB,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare const display: {
|
|
2
|
+
success: (msg: string) => void;
|
|
3
|
+
error: (msg: string) => void;
|
|
4
|
+
warn: (msg: string) => void;
|
|
5
|
+
info: (msg: string) => void;
|
|
6
|
+
line: () => void;
|
|
7
|
+
blank: () => void;
|
|
8
|
+
header: (title: string) => void;
|
|
9
|
+
label: (key: string, value: string) => void;
|
|
10
|
+
prompt: (text: string) => void;
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=display.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"display.d.ts","sourceRoot":"","sources":["../../src/cli/display.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO;mBACH,MAAM;iBACR,MAAM;gBACP,MAAM;gBACN,MAAM;;;oBAIF,MAAM;iBAMT,MAAM,SAAS,MAAM;mBAGnB,MAAM;CAYtB,CAAA"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
export const display = {
|
|
3
|
+
success: (msg) => console.log(chalk.green('✓ ') + msg),
|
|
4
|
+
error: (msg) => console.error(chalk.red('✗ ') + msg),
|
|
5
|
+
warn: (msg) => console.log(chalk.yellow('⚠ ') + msg),
|
|
6
|
+
info: (msg) => console.log(chalk.dim(msg)),
|
|
7
|
+
line: () => console.log(chalk.dim('─'.repeat(51))),
|
|
8
|
+
blank: () => console.log(''),
|
|
9
|
+
header: (title) => {
|
|
10
|
+
console.log('');
|
|
11
|
+
console.log(chalk.bold(title));
|
|
12
|
+
console.log(chalk.dim('─'.repeat(51)));
|
|
13
|
+
},
|
|
14
|
+
label: (key, value) => console.log(chalk.dim(key.padEnd(12)) + value),
|
|
15
|
+
prompt: (text) => {
|
|
16
|
+
const border = chalk.dim('─'.repeat(51));
|
|
17
|
+
console.log('');
|
|
18
|
+
console.log(border);
|
|
19
|
+
console.log(chalk.bold.hex('#f97316')(' PROMPT — paste into Claude Code'));
|
|
20
|
+
console.log(border);
|
|
21
|
+
console.log('');
|
|
22
|
+
console.log(text);
|
|
23
|
+
console.log('');
|
|
24
|
+
console.log(border);
|
|
25
|
+
console.log('');
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=display.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"display.js","sourceRoot":"","sources":["../../src/cli/display.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,OAAO,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;IAC9D,KAAK,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;IAC5D,IAAI,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;IAC5D,IAAI,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClD,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAClD,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;IAE5B,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;QACxB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;QAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IACxC,CAAC;IAED,KAAK,EAAE,CAAC,GAAW,EAAE,KAAa,EAAE,EAAE,CACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC;IAEhD,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;QACvB,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;QACxC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACf,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAA;QAC3E,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACnB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACjB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACf,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACnB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACjB,CAAC;CACF,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { initCommand } from './commands/init.js';
|
|
3
|
+
import { runCommand } from './commands/run.js';
|
|
4
|
+
import { statusCommand } from './commands/status.js';
|
|
5
|
+
import { gateCommand } from './commands/gate.js';
|
|
6
|
+
import { episodeCommand } from './commands/episode.js';
|
|
7
|
+
import { validateCommand } from './commands/validate.js';
|
|
8
|
+
const program = new Command();
|
|
9
|
+
program
|
|
10
|
+
.name('phoenix')
|
|
11
|
+
.description('Phoenix Pipeline Runtime — orchestrate the 7-agent legacy modernization pipeline')
|
|
12
|
+
.version('0.1.0');
|
|
13
|
+
program.addCommand(initCommand);
|
|
14
|
+
program.addCommand(runCommand);
|
|
15
|
+
program.addCommand(statusCommand);
|
|
16
|
+
program.addCommand(gateCommand);
|
|
17
|
+
program.addCommand(episodeCommand);
|
|
18
|
+
program.addCommand(validateCommand);
|
|
19
|
+
program.parse();
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAExD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;AAE7B,OAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CAAC,kFAAkF,CAAC;KAC/F,OAAO,CAAC,OAAO,CAAC,CAAA;AAEnB,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;AAC/B,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;AAC9B,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;AACjC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;AAC/B,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAA;AAClC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAA;AAEnC,OAAO,CAAC,KAAK,EAAE,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface Episode {
|
|
2
|
+
id: string;
|
|
3
|
+
date: string;
|
|
4
|
+
trigger: string;
|
|
5
|
+
status: 'open' | 'active' | 'resolved';
|
|
6
|
+
change: string;
|
|
7
|
+
reason: string;
|
|
8
|
+
affects: Record<string, string>;
|
|
9
|
+
skip: string[];
|
|
10
|
+
}
|
|
11
|
+
export declare function readOpenEpisodes(projectPath: string): Episode[];
|
|
12
|
+
export declare function episodesForAgent(agentId: string, episodes: Episode[]): Episode[];
|
|
13
|
+
export declare function buildEpisodeContext(episodes: Episode[]): string;
|
|
14
|
+
export declare function writeEpisode(projectPath: string, episode: Episode): void;
|
|
15
|
+
export declare function resolveEpisode(episodeId: string, projectPath: string): void;
|
|
16
|
+
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/episodes/manager.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAA;IACtC,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,IAAI,EAAE,MAAM,EAAE,CAAA;CACf;AAiED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,EAAE,CAO/D;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAIhF;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAY/D;AAED,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAIxE;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAK3E"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { join } from 'node:path';
|
|
2
|
+
import { existsSync } from 'node:fs';
|
|
3
|
+
import { readSil, writeSil, readSilDir } from '../parser/sil.js';
|
|
4
|
+
const EPISODES_DIR = 'episodes';
|
|
5
|
+
// Parse the affects field from .sil lines into a Record<agentId, instruction>
|
|
6
|
+
// Each line looks like: "A-01 → add guest.checkout workflow"
|
|
7
|
+
function parseAffects(raw) {
|
|
8
|
+
const lines = Array.isArray(raw) ? raw : raw.split('\n');
|
|
9
|
+
const result = {};
|
|
10
|
+
for (const line of lines) {
|
|
11
|
+
const match = line.trim().match(/^(A-\d{2})\s+→\s+(.+)$/);
|
|
12
|
+
if (match)
|
|
13
|
+
result[match[1].toLowerCase().replace('-', '-')] = match[2].trim();
|
|
14
|
+
}
|
|
15
|
+
return result;
|
|
16
|
+
}
|
|
17
|
+
// Parse the skip field from .sil lines into string[]
|
|
18
|
+
// Each line looks like: "A-00 → brief unchanged"
|
|
19
|
+
function parseSkip(raw) {
|
|
20
|
+
const lines = Array.isArray(raw) ? raw : raw.split('\n');
|
|
21
|
+
return lines
|
|
22
|
+
.map((l) => {
|
|
23
|
+
const match = l.trim().match(/^(A-\d{2})/);
|
|
24
|
+
return match ? match[1].toLowerCase() : null;
|
|
25
|
+
})
|
|
26
|
+
.filter((v) => v !== null);
|
|
27
|
+
}
|
|
28
|
+
function episodeFromConstruct(construct) {
|
|
29
|
+
const f = construct.fields;
|
|
30
|
+
return {
|
|
31
|
+
id: construct.id,
|
|
32
|
+
date: String(f['date'] ?? ''),
|
|
33
|
+
trigger: String(f['trigger'] ?? ''),
|
|
34
|
+
status: f['status'] ?? 'open',
|
|
35
|
+
change: String(f['change'] ?? ''),
|
|
36
|
+
reason: String(f['reason'] ?? ''),
|
|
37
|
+
affects: f['affects'] ? parseAffects(f['affects']) : {},
|
|
38
|
+
skip: f['skip'] ? parseSkip(f['skip']) : [],
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
function episodeToConstruct(episode) {
|
|
42
|
+
const affectsLines = Object.entries(episode.affects).map(([agentId, instruction]) => `${agentId.toUpperCase()} → ${instruction}`);
|
|
43
|
+
const skipLines = episode.skip.map((agentId) => `${agentId.toUpperCase()} → (skipped)`);
|
|
44
|
+
return {
|
|
45
|
+
construct: 'episode',
|
|
46
|
+
id: episode.id,
|
|
47
|
+
version: 1,
|
|
48
|
+
fields: {
|
|
49
|
+
date: episode.date,
|
|
50
|
+
trigger: episode.trigger,
|
|
51
|
+
status: episode.status,
|
|
52
|
+
change: episode.change,
|
|
53
|
+
reason: episode.reason,
|
|
54
|
+
affects: affectsLines,
|
|
55
|
+
skip: skipLines,
|
|
56
|
+
},
|
|
57
|
+
raw: '',
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
export function readOpenEpisodes(projectPath) {
|
|
61
|
+
const dir = join(projectPath, EPISODES_DIR);
|
|
62
|
+
if (!existsSync(dir))
|
|
63
|
+
return [];
|
|
64
|
+
return readSilDir(dir)
|
|
65
|
+
.filter((c) => c.construct === 'episode')
|
|
66
|
+
.map(episodeFromConstruct)
|
|
67
|
+
.filter((e) => e.status === 'open' || e.status === 'active');
|
|
68
|
+
}
|
|
69
|
+
export function episodesForAgent(agentId, episodes) {
|
|
70
|
+
// Normalize to a-01, a-02 etc for matching
|
|
71
|
+
const normalId = agentId.toLowerCase();
|
|
72
|
+
return episodes.filter((e) => normalId in e.affects);
|
|
73
|
+
}
|
|
74
|
+
export function buildEpisodeContext(episodes) {
|
|
75
|
+
if (episodes.length === 0)
|
|
76
|
+
return '';
|
|
77
|
+
const line = '─'.repeat(42);
|
|
78
|
+
const header = `OPEN EPISODES — READ BEFORE PROCEEDING\n${line}`;
|
|
79
|
+
const blocks = episodes.map((e) => {
|
|
80
|
+
const instruction = Object.values(e.affects).join(', ');
|
|
81
|
+
return `${e.id} (${e.date}) — ${e.change.split('\n')[0]}\n Your attention: ${instruction}`;
|
|
82
|
+
});
|
|
83
|
+
return [header, ...blocks, line].join('\n');
|
|
84
|
+
}
|
|
85
|
+
export function writeEpisode(projectPath, episode) {
|
|
86
|
+
const dir = join(projectPath, EPISODES_DIR);
|
|
87
|
+
const filePath = join(dir, `${episode.id}.sil`);
|
|
88
|
+
writeSil(filePath, episodeToConstruct(episode));
|
|
89
|
+
}
|
|
90
|
+
export function resolveEpisode(episodeId, projectPath) {
|
|
91
|
+
const filePath = join(projectPath, EPISODES_DIR, `${episodeId}.sil`);
|
|
92
|
+
const construct = readSil(filePath);
|
|
93
|
+
construct.fields['status'] = 'resolved';
|
|
94
|
+
writeSil(filePath, construct);
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/episodes/manager.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA;AACpC,cAAc,qBAAqB,CAAA;AACnC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,uBAAuB,CAAA"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA;AACpC,cAAc,qBAAqB,CAAA;AACnC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,uBAAuB,CAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type ConstructType = 'signal' | 'workflow' | 'screen' | 'spec' | 'episode' | 'architecture' | 'blueprint' | 'build' | 'certification';
|
|
2
|
+
export interface SilConstruct {
|
|
3
|
+
construct: ConstructType;
|
|
4
|
+
id: string;
|
|
5
|
+
version: number;
|
|
6
|
+
fields: Record<string, string | string[]>;
|
|
7
|
+
raw: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function parseSil(raw: string): SilConstruct;
|
|
10
|
+
export declare function readSil(filePath: string): SilConstruct;
|
|
11
|
+
export declare function writeSil(filePath: string, construct: SilConstruct): void;
|
|
12
|
+
export declare function readSilDir(dirPath: string): SilConstruct[];
|
|
13
|
+
export declare function readMissionBrief(projectPath: string): SilConstruct;
|
|
14
|
+
export declare function getConfidence(construct: SilConstruct): 'high' | 'medium' | 'low' | null;
|
|
15
|
+
//# sourceMappingURL=sil.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sil.d.ts","sourceRoot":"","sources":["../../src/parser/sil.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,aAAa,GACrB,QAAQ,GACR,UAAU,GACV,QAAQ,GACR,MAAM,GACN,SAAS,GACT,cAAc,GACd,WAAW,GACX,OAAO,GACP,eAAe,CAAA;AAEnB,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,aAAa,CAAA;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAA;IACzC,GAAG,EAAE,MAAM,CAAA;CACZ;AA8GD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAKlD;AAED,wBAAgB,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,CAGtD;AAED,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,GAAG,IAAI,CASxE;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,EAAE,CAI1D;AAED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,CAElE;AAED,wBAAgB,aAAa,CAC3B,SAAS,EAAE,YAAY,GACtB,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,IAAI,CAIlC"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { readFileSync, writeFileSync, readdirSync } from 'node:fs';
|
|
2
|
+
import { join, extname } from 'node:path';
|
|
3
|
+
// The separator is 41 Unicode box-drawing dashes (─, U+2500), not ASCII hyphens
|
|
4
|
+
const SEPARATOR_RE = /^─+$/u;
|
|
5
|
+
const FIELD_RE = /^([a-z]\w*):\s*(.*)$/;
|
|
6
|
+
// ─────────────────────────────────────────
|
|
7
|
+
// Parsing
|
|
8
|
+
// ─────────────────────────────────────────
|
|
9
|
+
function parseHeader(lines) {
|
|
10
|
+
const sepIdx = lines.findIndex((l) => SEPARATOR_RE.test(l.trim()));
|
|
11
|
+
if (sepIdx < 3)
|
|
12
|
+
throw new Error('Invalid .sil file: separator line not found');
|
|
13
|
+
const construct = lines[0].replace(/^CONSTRUCT\s+/, '').trim();
|
|
14
|
+
const id = lines[1].replace(/^ID\s+/, '').trim();
|
|
15
|
+
const version = parseInt(lines[2].replace(/^VERSION\s+/, '').trim(), 10);
|
|
16
|
+
if (!construct)
|
|
17
|
+
throw new Error('Invalid .sil file: missing CONSTRUCT');
|
|
18
|
+
if (!id)
|
|
19
|
+
throw new Error('Invalid .sil file: missing ID');
|
|
20
|
+
if (isNaN(version))
|
|
21
|
+
throw new Error('Invalid .sil file: missing VERSION');
|
|
22
|
+
return { construct, id, version, bodyStart: sepIdx + 1 };
|
|
23
|
+
}
|
|
24
|
+
function parseBody(bodyLines) {
|
|
25
|
+
const fields = {};
|
|
26
|
+
let i = 0;
|
|
27
|
+
while (i < bodyLines.length) {
|
|
28
|
+
const line = bodyLines[i];
|
|
29
|
+
// Skip blank lines and comments at the top level
|
|
30
|
+
if (!line.trim() || line.trimStart().startsWith('#')) {
|
|
31
|
+
i++;
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
// Top-level field: word immediately at column 0
|
|
35
|
+
const fieldMatch = line.match(FIELD_RE);
|
|
36
|
+
if (fieldMatch && !line.startsWith(' ') && !line.startsWith('\t')) {
|
|
37
|
+
const key = fieldMatch[1];
|
|
38
|
+
const inlineValue = fieldMatch[2].trim();
|
|
39
|
+
if (inlineValue) {
|
|
40
|
+
// Simple single-line value
|
|
41
|
+
fields[key] = inlineValue;
|
|
42
|
+
i++;
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
// Multi-line value — collect all indented lines that follow
|
|
46
|
+
i++;
|
|
47
|
+
const valueLines = [];
|
|
48
|
+
while (i < bodyLines.length &&
|
|
49
|
+
(bodyLines[i].startsWith(' ') ||
|
|
50
|
+
bodyLines[i].startsWith('\t') ||
|
|
51
|
+
!bodyLines[i].trim())) {
|
|
52
|
+
if (bodyLines[i].trim())
|
|
53
|
+
valueLines.push(bodyLines[i]);
|
|
54
|
+
i++;
|
|
55
|
+
}
|
|
56
|
+
if (valueLines.length === 0) {
|
|
57
|
+
fields[key] = '';
|
|
58
|
+
}
|
|
59
|
+
else if (valueLines.every((l) => l.trimStart().startsWith('- '))) {
|
|
60
|
+
// Uniform list — store as string[]
|
|
61
|
+
fields[key] = valueLines.map((l) => l.trimStart().replace(/^-\s+/, ''));
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
// Mixed or prose — store as joined string, trimmed
|
|
65
|
+
fields[key] = valueLines.map((l) => l.trim()).join('\n');
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
// Non-field line at top level (e.g. SCREEN blocks in screen constructs)
|
|
71
|
+
// Absorbed into raw; skip here
|
|
72
|
+
i++;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return fields;
|
|
76
|
+
}
|
|
77
|
+
// ─────────────────────────────────────────
|
|
78
|
+
// Serialization
|
|
79
|
+
// ─────────────────────────────────────────
|
|
80
|
+
const SEPARATOR = '─'.repeat(41);
|
|
81
|
+
function serializeFields(fields) {
|
|
82
|
+
const lines = [];
|
|
83
|
+
for (const [key, value] of Object.entries(fields)) {
|
|
84
|
+
if (Array.isArray(value)) {
|
|
85
|
+
lines.push(`${key}:`);
|
|
86
|
+
for (const item of value)
|
|
87
|
+
lines.push(` - ${item}`);
|
|
88
|
+
}
|
|
89
|
+
else if (value.includes('\n')) {
|
|
90
|
+
lines.push(`${key}:`);
|
|
91
|
+
for (const l of value.split('\n'))
|
|
92
|
+
lines.push(` ${l}`);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
lines.push(`${key}: ${value}`);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return lines.join('\n');
|
|
99
|
+
}
|
|
100
|
+
// ─────────────────────────────────────────
|
|
101
|
+
// Public API
|
|
102
|
+
// ─────────────────────────────────────────
|
|
103
|
+
export function parseSil(raw) {
|
|
104
|
+
const lines = raw.split('\n');
|
|
105
|
+
const { construct, id, version, bodyStart } = parseHeader(lines);
|
|
106
|
+
const fields = parseBody(lines.slice(bodyStart));
|
|
107
|
+
return { construct, id, version, fields, raw };
|
|
108
|
+
}
|
|
109
|
+
export function readSil(filePath) {
|
|
110
|
+
const raw = readFileSync(filePath, 'utf-8');
|
|
111
|
+
return parseSil(raw);
|
|
112
|
+
}
|
|
113
|
+
export function writeSil(filePath, construct) {
|
|
114
|
+
const header = [
|
|
115
|
+
`CONSTRUCT ${construct.construct}`,
|
|
116
|
+
`ID ${construct.id}`,
|
|
117
|
+
`VERSION ${construct.version}`,
|
|
118
|
+
SEPARATOR,
|
|
119
|
+
].join('\n');
|
|
120
|
+
const body = serializeFields(construct.fields);
|
|
121
|
+
writeFileSync(filePath, `${header}\n${body}\n`, 'utf-8');
|
|
122
|
+
}
|
|
123
|
+
export function readSilDir(dirPath) {
|
|
124
|
+
return readdirSync(dirPath)
|
|
125
|
+
.filter((f) => extname(f) === '.sil')
|
|
126
|
+
.map((f) => readSil(join(dirPath, f)));
|
|
127
|
+
}
|
|
128
|
+
export function readMissionBrief(projectPath) {
|
|
129
|
+
return readSil(join(projectPath, '_mission.sil'));
|
|
130
|
+
}
|
|
131
|
+
export function getConfidence(construct) {
|
|
132
|
+
const val = construct.fields['confidence'];
|
|
133
|
+
if (val === 'high' || val === 'medium' || val === 'low')
|
|
134
|
+
return val;
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=sil.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sil.js","sourceRoot":"","sources":["../../src/parser/sil.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ConstructType } from '../parser/sil.js';
|
|
2
|
+
export interface AgentDefinition {
|
|
3
|
+
id: string;
|
|
4
|
+
name: string;
|
|
5
|
+
promptFile: string;
|
|
6
|
+
requires: {
|
|
7
|
+
agents: string[];
|
|
8
|
+
gates: string[];
|
|
9
|
+
constructs: ConstructType[];
|
|
10
|
+
};
|
|
11
|
+
produces: ConstructType[];
|
|
12
|
+
humanGate: boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare const AGENTS: AgentDefinition[];
|
|
15
|
+
export declare function getAgent(id: string): AgentDefinition | undefined;
|
|
16
|
+
//# sourceMappingURL=agents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/pipeline/agents.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAErD,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE;QACR,MAAM,EAAE,MAAM,EAAE,CAAA;QAChB,KAAK,EAAE,MAAM,EAAE,CAAA;QACf,UAAU,EAAE,aAAa,EAAE,CAAA;KAC5B,CAAA;IACD,QAAQ,EAAE,aAAa,EAAE,CAAA;IACzB,SAAS,EAAE,OAAO,CAAA;CACnB;AAED,eAAO,MAAM,MAAM,EAAE,eAAe,EAiEnC,CAAA;AAED,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAEhE"}
|