soturail 0.6.1 → 0.7.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 +41 -14
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/diagram.d.ts +2 -0
- package/dist/commands/diagram.js +24 -0
- package/dist/commands/diagram.js.map +1 -0
- package/dist/commands/harness.js +1 -1
- package/dist/commands/harness.js.map +1 -1
- package/dist/commands/release.js +9 -2
- package/dist/commands/release.js.map +1 -1
- package/dist/commands/workflow.js +29 -5
- package/dist/commands/workflow.js.map +1 -1
- package/dist/core/config.d.ts +5 -0
- package/dist/core/config.js +9 -2
- package/dist/core/config.js.map +1 -1
- package/dist/core/context-intelligence.js +1 -1
- package/dist/core/context-intelligence.js.map +1 -1
- package/dist/core/diagram-rail.d.ts +31 -0
- package/dist/core/diagram-rail.js +235 -0
- package/dist/core/diagram-rail.js.map +1 -0
- package/dist/core/evidence-pack.js +50 -0
- package/dist/core/evidence-pack.js.map +1 -1
- package/dist/core/harness-rail.js +35 -1
- package/dist/core/harness-rail.js.map +1 -1
- package/dist/core/release-preflight.js +1 -1
- package/dist/core/release-preflight.js.map +1 -1
- package/dist/core/version.d.ts +1 -1
- package/dist/core/version.js +1 -1
- package/dist/core/workflow-store.d.ts +68 -0
- package/dist/core/workflow-store.js +360 -6
- package/dist/core/workflow-store.js.map +1 -1
- package/docs/diagram-rail.md +55 -130
- package/docs/harness-rail.md +60 -109
- package/docs/release-checklist.md +14 -0
- package/docs/release-workflow.md +34 -1
- package/docs/releases/README.md +27 -0
- package/docs/releases/RELEASE_NOTES_v0.2.1.md +19 -0
- package/docs/releases/RELEASE_NOTES_v0.2.2.md +48 -0
- package/docs/releases/RELEASE_NOTES_v0.2.3.md +36 -0
- package/docs/releases/RELEASE_NOTES_v0.3.0.md +42 -0
- package/docs/releases/RELEASE_NOTES_v0.3.1.md +37 -0
- package/docs/releases/RELEASE_NOTES_v0.3.2.md +33 -0
- package/docs/releases/RELEASE_NOTES_v0.3.3.md +31 -0
- package/docs/releases/RELEASE_NOTES_v0.4.0.md +35 -0
- package/docs/releases/RELEASE_NOTES_v0.4.1.md +37 -0
- package/docs/releases/RELEASE_NOTES_v0.5.0.md +21 -0
- package/docs/releases/RELEASE_NOTES_v0.5.1.md +19 -0
- package/docs/releases/RELEASE_NOTES_v0.5.2.md +27 -0
- package/docs/releases/RELEASE_NOTES_v0.6.0.md +33 -0
- package/docs/releases/RELEASE_NOTES_v0.6.1.md +37 -0
- package/docs/releases/RELEASE_NOTES_v0.7.0.md +33 -0
- package/docs/spec-driven-workflow.md +27 -38
- package/docs/workflow-rail.md +81 -164
- package/package.json +1 -1
|
@@ -15,10 +15,78 @@ export interface WorkflowStartOptions {
|
|
|
15
15
|
export interface WorkflowCleanupResult {
|
|
16
16
|
lines: string[];
|
|
17
17
|
}
|
|
18
|
+
export interface WorkflowPlanRecord {
|
|
19
|
+
schemaVersion: "soturail.workflow.plan.v2";
|
|
20
|
+
id: string;
|
|
21
|
+
title: string;
|
|
22
|
+
status: WorkflowState;
|
|
23
|
+
phase: "plan";
|
|
24
|
+
createdAt: string;
|
|
25
|
+
tasks: string[];
|
|
26
|
+
acceptanceGates: string[];
|
|
27
|
+
rolePacks: string[];
|
|
28
|
+
contextRoutes: string[];
|
|
29
|
+
linkedRunWorkspace: string | null;
|
|
30
|
+
evidencePath: string;
|
|
31
|
+
}
|
|
32
|
+
export interface WorkflowReviewReport {
|
|
33
|
+
schemaVersion: "soturail.workflow.review.v1";
|
|
34
|
+
id: string;
|
|
35
|
+
workflowId: string;
|
|
36
|
+
createdAt: string;
|
|
37
|
+
perspectives: Array<{
|
|
38
|
+
name: WorkflowReviewPerspective;
|
|
39
|
+
result: "pass" | "warn";
|
|
40
|
+
notes: string[];
|
|
41
|
+
}>;
|
|
42
|
+
}
|
|
43
|
+
export type WorkflowReviewPerspective = "security" | "docs" | "tests" | "release" | "context" | "agent-readiness";
|
|
44
|
+
export interface WorkflowVerifyReport {
|
|
45
|
+
schemaVersion: "soturail.workflow.verify.v1";
|
|
46
|
+
id: string;
|
|
47
|
+
workflowId: string;
|
|
48
|
+
createdAt: string;
|
|
49
|
+
summary: {
|
|
50
|
+
harnessContract: string;
|
|
51
|
+
policy: string;
|
|
52
|
+
evidence: string;
|
|
53
|
+
diagram: string;
|
|
54
|
+
evalReport: string;
|
|
55
|
+
releasePreflight: string;
|
|
56
|
+
};
|
|
57
|
+
paths: {
|
|
58
|
+
json: string;
|
|
59
|
+
markdown: string;
|
|
60
|
+
review: string;
|
|
61
|
+
harnessContract: string;
|
|
62
|
+
policyQueue: string;
|
|
63
|
+
policyDecisions: string;
|
|
64
|
+
diagramValidation: string;
|
|
65
|
+
evalReport: string;
|
|
66
|
+
releaseNotes: string;
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
export declare function setupWorkflowRail(root?: string): Promise<string>;
|
|
18
70
|
export declare function createWorkflow(title: string, root?: string, now?: string): Promise<WorkflowRecord>;
|
|
19
71
|
export declare function listWorkflows(root?: string): Promise<WorkflowRecord[]>;
|
|
20
72
|
export declare function readWorkflow(id: string, root?: string): Promise<WorkflowRecord>;
|
|
21
73
|
export declare function planWorkflow(id: string, root?: string): Promise<WorkflowRecord>;
|
|
74
|
+
export declare function createWorkflowPlan(title: string, root?: string): Promise<{
|
|
75
|
+
record: WorkflowRecord;
|
|
76
|
+
plan: WorkflowPlanRecord;
|
|
77
|
+
output: string;
|
|
78
|
+
}>;
|
|
79
|
+
export declare function currentWorkflowId(root?: string): Promise<string | null>;
|
|
80
|
+
export declare function workflowWork(id: string | undefined, note?: string, root?: string): Promise<string>;
|
|
81
|
+
export declare function reviewWorkflow(id: string | undefined, options?: {
|
|
82
|
+
all?: boolean;
|
|
83
|
+
perspective?: string;
|
|
84
|
+
}, root?: string): Promise<{
|
|
85
|
+
report: WorkflowReviewReport;
|
|
86
|
+
markdownPath: string;
|
|
87
|
+
jsonPath: string;
|
|
88
|
+
output: string;
|
|
89
|
+
}>;
|
|
22
90
|
export declare function startWorkflow(id: string, options?: WorkflowStartOptions, root?: string): Promise<string>;
|
|
23
91
|
export declare function statusWorkflow(id: string, root?: string): Promise<string>;
|
|
24
92
|
export declare function verifyWorkflow(id: string, root?: string): Promise<string>;
|
|
@@ -1,8 +1,32 @@
|
|
|
1
1
|
import { promises as fs } from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
|
-
import { ensureWorkspace, getWorkspacePaths, relativeToRoot } from "./config.js";
|
|
3
|
+
import { ensureWorkspace, getWorkspacePaths, readJsonl, relativeToRoot, writeJson } from "./config.js";
|
|
4
4
|
import { planWorktree } from "./worktree-manager.js";
|
|
5
5
|
const states = ["draft", "planned", "active", "verifying", "ready_for_review", "closed", "blocked"];
|
|
6
|
+
const reviewPerspectives = ["security", "docs", "tests", "release", "context", "agent-readiness"];
|
|
7
|
+
export async function setupWorkflowRail(root = process.cwd()) {
|
|
8
|
+
await ensureWorkspace(root);
|
|
9
|
+
const paths = getWorkspacePaths(root);
|
|
10
|
+
await fs.mkdir(paths.workflowTemplatesDir, { recursive: true });
|
|
11
|
+
await writeFileIfMissing(path.join(paths.workflowTemplatesDir, "feature.md"), workflowTemplate("feature"));
|
|
12
|
+
await writeFileIfMissing(path.join(paths.workflowTemplatesDir, "release.md"), workflowTemplate("release"));
|
|
13
|
+
if (!(await exists(paths.workflowIndexFile)))
|
|
14
|
+
await writeJson(paths.workflowIndexFile, { schemaVersion: "soturail.workflow.index.v2", workflows: [] });
|
|
15
|
+
if (!(await exists(paths.workflowCurrentFile)))
|
|
16
|
+
await writeJson(paths.workflowCurrentFile, { schemaVersion: "soturail.workflow.current.v1", id: null });
|
|
17
|
+
return [
|
|
18
|
+
"SotuRail workflow setup",
|
|
19
|
+
`workflows_dir: ${relativeToRoot(root, paths.workflowsDir)}`,
|
|
20
|
+
`templates_dir: ${relativeToRoot(root, paths.workflowTemplatesDir)}`,
|
|
21
|
+
`index: ${relativeToRoot(root, paths.workflowIndexFile)}`,
|
|
22
|
+
`current: ${relativeToRoot(root, paths.workflowCurrentFile)}`,
|
|
23
|
+
"next_commands:",
|
|
24
|
+
"- soturail workflow plan \"Task title\"",
|
|
25
|
+
"- soturail workflow work",
|
|
26
|
+
"- soturail workflow review --all",
|
|
27
|
+
"- soturail workflow verify"
|
|
28
|
+
].join("\n") + "\n";
|
|
29
|
+
}
|
|
6
30
|
export async function createWorkflow(title, root = process.cwd(), now = new Date().toISOString()) {
|
|
7
31
|
await ensureWorkspace(root);
|
|
8
32
|
const id = `${now.slice(0, 10).replace(/-/g, "")}-${slug(title)}`;
|
|
@@ -14,14 +38,18 @@ export async function createWorkflow(title, root = process.cwd(), now = new Date
|
|
|
14
38
|
await fs.writeFile(path.join(dir, "plan.md"), `# Plan: ${title}\n\nAdd reviewed plan steps here.\n`, "utf8");
|
|
15
39
|
await fs.writeFile(path.join(dir, "tasks.md"), `# Tasks: ${title}\n\n- [ ] Define the change.\n- [ ] Run explicit verification.\n`, "utf8");
|
|
16
40
|
await fs.writeFile(path.join(dir, "verification.md"), `# Verification: ${title}\n\nConfigured checks: none yet.\n\nChecklist:\n- [ ] npm run build\n- [ ] npm test\n- [ ] npm audit --omit=dev\n`, "utf8");
|
|
41
|
+
await setCurrentWorkflow(id, root);
|
|
42
|
+
await refreshWorkflowIndex(root);
|
|
17
43
|
return record;
|
|
18
44
|
}
|
|
19
45
|
export async function listWorkflows(root = process.cwd()) {
|
|
20
46
|
const paths = getWorkspacePaths(root);
|
|
21
|
-
const entries = await fs.readdir(paths.workflowsDir).catch(() => []);
|
|
47
|
+
const entries = await fs.readdir(paths.workflowsDir, { withFileTypes: true }).catch(() => []);
|
|
22
48
|
const records = [];
|
|
23
49
|
for (const entry of entries) {
|
|
24
|
-
|
|
50
|
+
if (!entry.isDirectory() || entry.name === "templates")
|
|
51
|
+
continue;
|
|
52
|
+
const record = await readWorkflow(entry.name, root).catch(() => null);
|
|
25
53
|
if (record)
|
|
26
54
|
records.push(record);
|
|
27
55
|
}
|
|
@@ -43,8 +71,121 @@ export async function planWorkflow(id, root = process.cwd()) {
|
|
|
43
71
|
const record = await updateWorkflow(id, root, { state: "planned" });
|
|
44
72
|
const planPath = path.join(getWorkspacePaths(root).workflowsDir, id, "plan.md");
|
|
45
73
|
await appendIfMissing(planPath, "\n## Reviewed Scope\n\n- Problem statement\n- Safety notes\n- Verification plan\n");
|
|
74
|
+
await writeWorkflowPlanRecord(record, root);
|
|
75
|
+
await setCurrentWorkflow(id, root);
|
|
46
76
|
return record;
|
|
47
77
|
}
|
|
78
|
+
export async function createWorkflowPlan(title, root = process.cwd()) {
|
|
79
|
+
await setupWorkflowRail(root);
|
|
80
|
+
const created = await createWorkflow(title, root);
|
|
81
|
+
const record = await planWorkflow(created.id, root);
|
|
82
|
+
const plan = await writeWorkflowPlanRecord(record, root);
|
|
83
|
+
return {
|
|
84
|
+
record,
|
|
85
|
+
plan,
|
|
86
|
+
output: [
|
|
87
|
+
"SotuRail workflow plan",
|
|
88
|
+
`id: ${record.id}`,
|
|
89
|
+
`title: ${record.title}`,
|
|
90
|
+
`status: ${record.state}`,
|
|
91
|
+
`phase: ${plan.phase}`,
|
|
92
|
+
`plan: ${relativeToRoot(root, path.join(getWorkspacePaths(root).workflowsDir, record.id, "plan.json"))}`,
|
|
93
|
+
`evidence_path: ${plan.evidencePath}`,
|
|
94
|
+
"next_commands:",
|
|
95
|
+
`- soturail workflow work ${record.id}`,
|
|
96
|
+
`- soturail workflow review ${record.id} --all`,
|
|
97
|
+
`- soturail workflow verify ${record.id}`
|
|
98
|
+
].join("\n") + "\n"
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
export async function currentWorkflowId(root = process.cwd()) {
|
|
102
|
+
const paths = getWorkspacePaths(root);
|
|
103
|
+
const raw = await fs.readFile(paths.workflowCurrentFile, "utf8").catch(() => "");
|
|
104
|
+
if (raw) {
|
|
105
|
+
try {
|
|
106
|
+
const parsed = JSON.parse(raw);
|
|
107
|
+
if (parsed.id)
|
|
108
|
+
return parsed.id;
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
// Fall back to newest workflow below.
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return (await listWorkflows(root))[0]?.id ?? null;
|
|
115
|
+
}
|
|
116
|
+
export async function workflowWork(id, note = "Progress recorded.", root = process.cwd()) {
|
|
117
|
+
const workflowId = id ?? await requiredCurrentWorkflow(root);
|
|
118
|
+
const record = await updateWorkflow(workflowId, root, { state: "active" });
|
|
119
|
+
const paths = getWorkspacePaths(root);
|
|
120
|
+
const dir = path.join(paths.workflowsDir, workflowId);
|
|
121
|
+
const workPath = path.join(dir, "work.md");
|
|
122
|
+
const changedFiles = await gitChangedFiles(root);
|
|
123
|
+
const rawRecords = await readJsonl(paths.rawIndex);
|
|
124
|
+
const failures = await readJsonl(paths.harnessFailuresFile);
|
|
125
|
+
await appendIfMissing(workPath, `# Work: ${record.title}\n`);
|
|
126
|
+
await fs.appendFile(workPath, [
|
|
127
|
+
"",
|
|
128
|
+
`## ${new Date().toISOString()}`,
|
|
129
|
+
"",
|
|
130
|
+
note,
|
|
131
|
+
"",
|
|
132
|
+
`- changed_files: ${changedFiles.length}`,
|
|
133
|
+
`- raw_ids: ${rawRecords.length}`,
|
|
134
|
+
`- harness_failures: ${failures.filter((failure) => failure.workflowId === workflowId || !failure.workflowId).length}`,
|
|
135
|
+
""
|
|
136
|
+
].join("\n"), "utf8");
|
|
137
|
+
await setCurrentWorkflow(workflowId, root);
|
|
138
|
+
return [
|
|
139
|
+
"SotuRail workflow work",
|
|
140
|
+
`id: ${workflowId}`,
|
|
141
|
+
`phase: work`,
|
|
142
|
+
`state: ${record.state}`,
|
|
143
|
+
`work_path: ${relativeToRoot(root, workPath)}`,
|
|
144
|
+
`progress_appended: ${note}`,
|
|
145
|
+
`changed_files: ${changedFiles.length}`,
|
|
146
|
+
`raw_ids: ${rawRecords.length}`,
|
|
147
|
+
`harness_failures: ${failures.length}`
|
|
148
|
+
].join("\n") + "\n";
|
|
149
|
+
}
|
|
150
|
+
export async function reviewWorkflow(id, options = {}, root = process.cwd()) {
|
|
151
|
+
const workflowId = id ?? await requiredCurrentWorkflow(root);
|
|
152
|
+
const record = await updateWorkflow(workflowId, root, { state: "ready_for_review" });
|
|
153
|
+
const selected = options.all || !options.perspective
|
|
154
|
+
? reviewPerspectives
|
|
155
|
+
: parsePerspective(options.perspective);
|
|
156
|
+
const paths = getWorkspacePaths(root);
|
|
157
|
+
const dir = path.join(paths.workflowsDir, workflowId);
|
|
158
|
+
const changedFiles = await gitChangedFiles(root);
|
|
159
|
+
const failures = await readJsonl(paths.harnessFailuresFile);
|
|
160
|
+
const report = {
|
|
161
|
+
schemaVersion: "soturail.workflow.review.v1",
|
|
162
|
+
id: `${workflowId}-review`,
|
|
163
|
+
workflowId,
|
|
164
|
+
createdAt: new Date().toISOString(),
|
|
165
|
+
perspectives: selected.map((name) => ({
|
|
166
|
+
name,
|
|
167
|
+
result: reviewResultFor(name, changedFiles, failures),
|
|
168
|
+
notes: reviewNotesFor(name, record, changedFiles, failures)
|
|
169
|
+
}))
|
|
170
|
+
};
|
|
171
|
+
const jsonPath = path.join(dir, "review.json");
|
|
172
|
+
const markdownPath = path.join(dir, "review.md");
|
|
173
|
+
await writeJson(jsonPath, report);
|
|
174
|
+
await fs.writeFile(markdownPath, renderReviewMarkdown(report, record), "utf8");
|
|
175
|
+
await setCurrentWorkflow(workflowId, root);
|
|
176
|
+
return {
|
|
177
|
+
report,
|
|
178
|
+
markdownPath,
|
|
179
|
+
jsonPath,
|
|
180
|
+
output: [
|
|
181
|
+
"SotuRail workflow review",
|
|
182
|
+
`id: ${workflowId}`,
|
|
183
|
+
`perspectives: ${selected.join(", ")}`,
|
|
184
|
+
`review_json: ${relativeToRoot(root, jsonPath)}`,
|
|
185
|
+
`review_md: ${relativeToRoot(root, markdownPath)}`
|
|
186
|
+
].join("\n") + "\n"
|
|
187
|
+
};
|
|
188
|
+
}
|
|
48
189
|
export async function startWorkflow(id, options = {}, root = process.cwd()) {
|
|
49
190
|
const record = await readWorkflow(id, root);
|
|
50
191
|
const lines = [`SotuRail workflow start ${id}${options.worktree ? " --worktree" : ""}${options.dryRun ? " --dry-run" : ""}`];
|
|
@@ -75,12 +216,25 @@ export async function statusWorkflow(id, root = process.cwd()) {
|
|
|
75
216
|
}
|
|
76
217
|
export async function verifyWorkflow(id, root = process.cwd()) {
|
|
77
218
|
await updateWorkflow(id, root, { state: "verifying" });
|
|
78
|
-
const
|
|
219
|
+
const paths = getWorkspacePaths(root);
|
|
220
|
+
const verificationPath = path.join(paths.workflowsDir, id, "verification.md");
|
|
79
221
|
const verification = await fs.readFile(verificationPath, "utf8").catch(() => "");
|
|
80
222
|
const configured = verification.match(/^Configured checks:\s*(.+)$/m)?.[1]?.trim();
|
|
223
|
+
const report = await writeVerificationReport(id, root);
|
|
224
|
+
const baseLines = [
|
|
225
|
+
`SotuRail workflow verify ${id}`,
|
|
226
|
+
`verify_json: ${relativeToRoot(root, report.paths.json)}`,
|
|
227
|
+
`verify_md: ${relativeToRoot(root, report.paths.markdown)}`,
|
|
228
|
+
`harness_contract: ${report.summary.harnessContract}`,
|
|
229
|
+
`policy_status: ${report.summary.policy}`,
|
|
230
|
+
`evidence_completeness: ${report.summary.evidence}`,
|
|
231
|
+
`diagram_validation: ${report.summary.diagram}`,
|
|
232
|
+
`eval_report: ${report.summary.evalReport}`,
|
|
233
|
+
`release_preflight: ${report.summary.releasePreflight}`
|
|
234
|
+
];
|
|
81
235
|
if (!configured || configured === "none yet.") {
|
|
82
236
|
return [
|
|
83
|
-
|
|
237
|
+
...baseLines,
|
|
84
238
|
"configured_checks: none",
|
|
85
239
|
"No commands were run.",
|
|
86
240
|
"Checklist:",
|
|
@@ -90,7 +244,7 @@ export async function verifyWorkflow(id, root = process.cwd()) {
|
|
|
90
244
|
].join("\n") + "\n";
|
|
91
245
|
}
|
|
92
246
|
return [
|
|
93
|
-
|
|
247
|
+
...baseLines,
|
|
94
248
|
`configured_checks: ${configured}`,
|
|
95
249
|
"SotuRail only runs explicitly configured safe checks through reviewed workflow docs."
|
|
96
250
|
].join("\n") + "\n";
|
|
@@ -161,6 +315,7 @@ async function updateWorkflow(id, root, patch) {
|
|
|
161
315
|
const record = await readWorkflow(id, root);
|
|
162
316
|
const next = { ...record, ...patch, updated_at: new Date().toISOString() };
|
|
163
317
|
await writeWorkflowRecord(dir, next);
|
|
318
|
+
await refreshWorkflowIndex(root);
|
|
164
319
|
return next;
|
|
165
320
|
}
|
|
166
321
|
async function writeWorkflowRecord(dir, record) {
|
|
@@ -210,6 +365,205 @@ async function appendIfMissing(filePath, content) {
|
|
|
210
365
|
await fs.appendFile(filePath, content, "utf8");
|
|
211
366
|
}
|
|
212
367
|
}
|
|
368
|
+
async function writeWorkflowPlanRecord(record, root) {
|
|
369
|
+
const paths = getWorkspacePaths(root);
|
|
370
|
+
const dir = path.join(paths.workflowsDir, record.id);
|
|
371
|
+
const plan = {
|
|
372
|
+
schemaVersion: "soturail.workflow.plan.v2",
|
|
373
|
+
id: record.id,
|
|
374
|
+
title: record.title,
|
|
375
|
+
status: record.state,
|
|
376
|
+
phase: "plan",
|
|
377
|
+
createdAt: record.created_at,
|
|
378
|
+
tasks: ["Define the change", "Run explicit verification", "Record evidence"],
|
|
379
|
+
acceptanceGates: ["build", "typecheck", "test", "policy", "evidence"],
|
|
380
|
+
rolePacks: ["planner", "executor", "reviewer"],
|
|
381
|
+
contextRoutes: ["workflow", "code", "security"],
|
|
382
|
+
linkedRunWorkspace: await latestRunWorkspaceId(root),
|
|
383
|
+
evidencePath: relativeToRoot(root, path.join(paths.reportsDir, `evidence_${record.id}.md`))
|
|
384
|
+
};
|
|
385
|
+
await writeJson(path.join(dir, "plan.json"), plan);
|
|
386
|
+
return plan;
|
|
387
|
+
}
|
|
388
|
+
async function writeVerificationReport(id, root) {
|
|
389
|
+
const paths = getWorkspacePaths(root);
|
|
390
|
+
const dir = path.join(paths.workflowsDir, id);
|
|
391
|
+
const queue = await readJsonl(paths.policyQueueFile);
|
|
392
|
+
const decisions = await readJsonl(paths.policyDecisionsFile);
|
|
393
|
+
const failures = await readJsonl(paths.harnessFailuresFile);
|
|
394
|
+
const rawRecords = await readJsonl(paths.rawIndex);
|
|
395
|
+
const reviewPath = path.join(dir, "review.json");
|
|
396
|
+
const diagramValidationPath = path.join(paths.diagramsDir, "validation.json");
|
|
397
|
+
const evalPath = path.join(paths.workspace, "eval", "latest.json");
|
|
398
|
+
const harnessContractPath = path.join(paths.harnessContractsDir, "default.json");
|
|
399
|
+
const releaseNotesPath = await currentReleaseNotesPath(root);
|
|
400
|
+
const jsonPath = path.join(dir, "verify.json");
|
|
401
|
+
const markdownPath = path.join(dir, "verify.md");
|
|
402
|
+
const report = {
|
|
403
|
+
schemaVersion: "soturail.workflow.verify.v1",
|
|
404
|
+
id: `${id}-verify`,
|
|
405
|
+
workflowId: id,
|
|
406
|
+
createdAt: new Date().toISOString(),
|
|
407
|
+
summary: {
|
|
408
|
+
harnessContract: await exists(harnessContractPath) ? "present" : "missing",
|
|
409
|
+
policy: queue.length === 0 ? `clear (${decisions.length} decisions)` : `${queue.length} pending`,
|
|
410
|
+
evidence: rawRecords.length > 0 || failures.length > 0 || await exists(reviewPath) ? "partial" : "needs evidence",
|
|
411
|
+
diagram: await exists(diagramValidationPath) ? "validated" : "not validated",
|
|
412
|
+
evalReport: await exists(evalPath) ? relativeToRoot(root, evalPath) : "missing",
|
|
413
|
+
releasePreflight: releaseNotesPath ? `release notes: ${releaseNotesPath}` : "not release-focused"
|
|
414
|
+
},
|
|
415
|
+
paths: {
|
|
416
|
+
json: jsonPath,
|
|
417
|
+
markdown: markdownPath,
|
|
418
|
+
review: relativeToRoot(root, reviewPath),
|
|
419
|
+
harnessContract: relativeToRoot(root, harnessContractPath),
|
|
420
|
+
policyQueue: relativeToRoot(root, paths.policyQueueFile),
|
|
421
|
+
policyDecisions: relativeToRoot(root, paths.policyDecisionsFile),
|
|
422
|
+
diagramValidation: relativeToRoot(root, diagramValidationPath),
|
|
423
|
+
evalReport: await exists(evalPath) ? relativeToRoot(root, evalPath) : "missing",
|
|
424
|
+
releaseNotes: releaseNotesPath ?? "missing"
|
|
425
|
+
}
|
|
426
|
+
};
|
|
427
|
+
await writeJson(jsonPath, report);
|
|
428
|
+
await fs.writeFile(markdownPath, renderVerifyMarkdown(report), "utf8");
|
|
429
|
+
return report;
|
|
430
|
+
}
|
|
431
|
+
function renderReviewMarkdown(report, record) {
|
|
432
|
+
return [
|
|
433
|
+
`# Workflow Review: ${record.title}`,
|
|
434
|
+
"",
|
|
435
|
+
`workflow_id: ${report.workflowId}`,
|
|
436
|
+
`createdAt: ${report.createdAt}`,
|
|
437
|
+
"",
|
|
438
|
+
...report.perspectives.flatMap((perspective) => [
|
|
439
|
+
`## ${perspective.name}`,
|
|
440
|
+
"",
|
|
441
|
+
`result: ${perspective.result}`,
|
|
442
|
+
...perspective.notes.map((note) => `- ${note}`),
|
|
443
|
+
""
|
|
444
|
+
])
|
|
445
|
+
].join("\n");
|
|
446
|
+
}
|
|
447
|
+
function renderVerifyMarkdown(report) {
|
|
448
|
+
return [
|
|
449
|
+
`# Workflow Verification: ${report.workflowId}`,
|
|
450
|
+
"",
|
|
451
|
+
`createdAt: ${report.createdAt}`,
|
|
452
|
+
"",
|
|
453
|
+
"## Summary",
|
|
454
|
+
"",
|
|
455
|
+
...Object.entries(report.summary).map(([key, value]) => `- ${key}: ${value}`),
|
|
456
|
+
"",
|
|
457
|
+
"## Paths",
|
|
458
|
+
"",
|
|
459
|
+
...Object.entries(report.paths).map(([key, value]) => `- ${key}: ${value}`),
|
|
460
|
+
""
|
|
461
|
+
].join("\n");
|
|
462
|
+
}
|
|
463
|
+
function parsePerspective(value) {
|
|
464
|
+
const normalized = value;
|
|
465
|
+
if (!reviewPerspectives.includes(normalized))
|
|
466
|
+
throw new Error(`Unknown review perspective "${value}". Supported: ${reviewPerspectives.join(", ")}`);
|
|
467
|
+
return [normalized];
|
|
468
|
+
}
|
|
469
|
+
function reviewResultFor(name, changedFiles, failures) {
|
|
470
|
+
if (name === "tests" && changedFiles.length === 0)
|
|
471
|
+
return "warn";
|
|
472
|
+
if (name === "agent-readiness" && failures.length > 0)
|
|
473
|
+
return "warn";
|
|
474
|
+
return "pass";
|
|
475
|
+
}
|
|
476
|
+
function reviewNotesFor(name, record, changedFiles, failures) {
|
|
477
|
+
const common = `Workflow ${record.id} is in state ${record.state}.`;
|
|
478
|
+
const map = {
|
|
479
|
+
security: [common, "Check secrets, raw log exposure, policy queue and MCP exposure before handoff."],
|
|
480
|
+
docs: [common, "Confirm README/docs/release notes reflect changed behavior."],
|
|
481
|
+
tests: [common, changedFiles.length > 0 ? "Changed files detected; verify tests cover the change." : "No changed files detected; add evidence before claiming implementation."],
|
|
482
|
+
release: [common, "Release actions remain manual; npm publish and GitHub release require explicit human action."],
|
|
483
|
+
context: [common, "Use context route/select and role packs instead of dumping the whole repo."],
|
|
484
|
+
"agent-readiness": [common, failures.length > 0 ? "Harness failures exist; convert them into rules/docs/memory/workflow checks." : "No harness failures recorded for this workflow."]
|
|
485
|
+
};
|
|
486
|
+
return map[name];
|
|
487
|
+
}
|
|
488
|
+
async function setCurrentWorkflow(id, root) {
|
|
489
|
+
const paths = getWorkspacePaths(root);
|
|
490
|
+
await writeJson(paths.workflowCurrentFile, { schemaVersion: "soturail.workflow.current.v1", id });
|
|
491
|
+
}
|
|
492
|
+
async function refreshWorkflowIndex(root) {
|
|
493
|
+
const paths = getWorkspacePaths(root);
|
|
494
|
+
const workflows = await listWorkflows(root).catch(() => []);
|
|
495
|
+
await writeJson(paths.workflowIndexFile, { schemaVersion: "soturail.workflow.index.v2", workflows });
|
|
496
|
+
}
|
|
497
|
+
async function requiredCurrentWorkflow(root) {
|
|
498
|
+
const id = await currentWorkflowId(root);
|
|
499
|
+
if (!id)
|
|
500
|
+
throw new Error("No current workflow found. Run: soturail workflow plan \"Task title\"");
|
|
501
|
+
return id;
|
|
502
|
+
}
|
|
503
|
+
async function latestRunWorkspaceId(root) {
|
|
504
|
+
const dir = getWorkspacePaths(root).runsDir;
|
|
505
|
+
const entries = await fs.readdir(dir).catch(() => []);
|
|
506
|
+
return entries.sort().at(-1) ?? null;
|
|
507
|
+
}
|
|
508
|
+
async function currentReleaseNotesPath(root) {
|
|
509
|
+
const packagePath = path.join(root, "package.json");
|
|
510
|
+
const raw = await fs.readFile(packagePath, "utf8").catch(() => "");
|
|
511
|
+
if (!raw)
|
|
512
|
+
return null;
|
|
513
|
+
try {
|
|
514
|
+
const version = JSON.parse(raw).version;
|
|
515
|
+
if (!version)
|
|
516
|
+
return null;
|
|
517
|
+
const notes = path.join(root, "docs", "releases", `RELEASE_NOTES_v${version}.md`);
|
|
518
|
+
return await exists(notes) ? relativeToRoot(root, notes) : null;
|
|
519
|
+
}
|
|
520
|
+
catch {
|
|
521
|
+
return null;
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
async function gitChangedFiles(root) {
|
|
525
|
+
const git = await import("node:child_process");
|
|
526
|
+
const util = await import("node:util");
|
|
527
|
+
const execFileAsync = util.promisify(git.execFile);
|
|
528
|
+
try {
|
|
529
|
+
const { stdout } = await execFileAsync("git", ["diff", "--name-only", "--", "."], { cwd: root, timeout: 3000, windowsHide: true });
|
|
530
|
+
return stdout.split(/\r?\n/).map((line) => line.trim()).filter(Boolean);
|
|
531
|
+
}
|
|
532
|
+
catch {
|
|
533
|
+
return [];
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
async function writeFileIfMissing(filePath, content) {
|
|
537
|
+
await fs.mkdir(path.dirname(filePath), { recursive: true });
|
|
538
|
+
if (!(await exists(filePath)))
|
|
539
|
+
await fs.writeFile(filePath, content, "utf8");
|
|
540
|
+
}
|
|
541
|
+
function workflowTemplate(kind) {
|
|
542
|
+
return [
|
|
543
|
+
`# ${kind === "feature" ? "Feature" : "Release"} Workflow Template`,
|
|
544
|
+
"",
|
|
545
|
+
"## Phases",
|
|
546
|
+
"",
|
|
547
|
+
"- setup",
|
|
548
|
+
"- plan",
|
|
549
|
+
"- work",
|
|
550
|
+
"- review",
|
|
551
|
+
"- verify",
|
|
552
|
+
"- evidence",
|
|
553
|
+
"",
|
|
554
|
+
"## Acceptance Gates",
|
|
555
|
+
"",
|
|
556
|
+
"- build",
|
|
557
|
+
"- typecheck",
|
|
558
|
+
"- test",
|
|
559
|
+
"- policy",
|
|
560
|
+
"- evidence",
|
|
561
|
+
""
|
|
562
|
+
].join("\n");
|
|
563
|
+
}
|
|
564
|
+
async function exists(filePath) {
|
|
565
|
+
return fs.access(filePath).then(() => true).catch(() => false);
|
|
566
|
+
}
|
|
213
567
|
function slug(value) {
|
|
214
568
|
return value.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 48) || "workflow";
|
|
215
569
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-store.js","sourceRoot":"","sources":["../../src/core/workflow-store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"workflow-store.js","sourceRoot":"","sources":["../../src/core/workflow-store.ts"],"names":[],"mappings":"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"}
|