open-local-audit 0.66.0 → 0.68.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/CHANGELOG.md +18 -0
- package/README.md +47 -2
- package/dist/cli.js +43 -6
- package/dist/cli.js.map +1 -1
- package/dist/discovery-location.d.ts +13 -0
- package/dist/discovery-location.js +99 -0
- package/dist/discovery-location.js.map +1 -0
- package/dist/discovery-runner.d.ts +26 -0
- package/dist/discovery-runner.js +70 -6
- package/dist/discovery-runner.js.map +1 -1
- package/dist/discovery.d.ts +15 -3
- package/dist/discovery.js +56 -12
- package/dist/discovery.js.map +1 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/overture.d.ts +13 -0
- package/dist/overture.js +319 -0
- package/dist/overture.js.map +1 -0
- package/dist/schema.d.ts +19 -4
- package/dist/schema.js +6 -1
- package/dist/schema.js.map +1 -1
- package/dist/website-enrichment.d.ts +21 -0
- package/dist/website-enrichment.js +400 -0
- package/dist/website-enrichment.js.map +1 -0
- package/dist/workflow-config.d.ts +47 -1
- package/dist/workflow-config.js +34 -1
- package/dist/workflow-config.js.map +1 -1
- package/dist/workflow-plan.d.ts +1 -1
- package/dist/workflow-plan.js +4 -1
- package/dist/workflow-plan.js.map +1 -1
- package/dist/workflow-preflight.d.ts +1 -1
- package/dist/workflow-preflight.js +2 -2
- package/dist/workflow-preflight.js.map +1 -1
- package/dist/workflow-state.d.ts +35 -0
- package/dist/workflow-state.js +294 -0
- package/dist/workflow-state.js.map +1 -0
- package/dist/workflow-status.d.ts +26 -0
- package/dist/workflow-status.js +154 -0
- package/dist/workflow-status.js.map +1 -0
- package/dist/workflow.d.ts +16 -0
- package/dist/workflow.js +193 -113
- package/dist/workflow.js.map +1 -1
- package/docs/architecture/workflow-command.md +8 -3
- package/docs/architecture/workflow-status.md +137 -0
- package/docs/guides/free-discovery.md +87 -0
- package/package.json +12 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-plan.js","sourceRoot":"","sources":["../src/workflow-plan.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"workflow-plan.js","sourceRoot":"","sources":["../src/workflow-plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@ export interface WorkflowPreflightReport {
|
|
|
15
15
|
version: 1;
|
|
16
16
|
status: WorkflowPreflightStatus;
|
|
17
17
|
checks: WorkflowPreflightCheck[];
|
|
18
|
-
provider?: "
|
|
18
|
+
provider?: ResolvedWorkflowConfig["discovery"]["provider"];
|
|
19
19
|
stages?: WorkflowPreflightStage[];
|
|
20
20
|
outputs?: {
|
|
21
21
|
outDir: string;
|
|
@@ -145,7 +145,7 @@ export async function runWorkflowPreflightEvaluationWithDependencies(configPath,
|
|
|
145
145
|
path: config.discovery.input
|
|
146
146
|
});
|
|
147
147
|
}
|
|
148
|
-
else {
|
|
148
|
+
else if (config.discovery.provider === "google-places") {
|
|
149
149
|
const hasApiKey = Boolean(dependencies.resolveGoogleMapsApiKey()?.trim());
|
|
150
150
|
checks.push({
|
|
151
151
|
id: "google-api-key",
|
|
@@ -205,7 +205,7 @@ export async function runWorkflowPreflightEvaluationWithDependencies(configPath,
|
|
|
205
205
|
stages,
|
|
206
206
|
outputs: { outDir: config.outDir, ...config.paths },
|
|
207
207
|
limits: {
|
|
208
|
-
maxCandidates: config.discovery.provider
|
|
208
|
+
maxCandidates: config.discovery.provider !== "manual-csv" ? config.discovery.limit : null,
|
|
209
209
|
maxAudits: config.discovery.maxAudits ?? null
|
|
210
210
|
}
|
|
211
211
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-preflight.js","sourceRoot":"","sources":["../src/workflow-preflight.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"workflow-preflight.js","sourceRoot":"","sources":["../src/workflow-preflight.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { type ResolvedWorkflowConfig } from "./workflow-config.js";
|
|
2
|
+
import type { WorkflowStageName, WorkflowSummary } from "./workflow.js";
|
|
3
|
+
export type WorkflowLifecyclePhase = "running" | "failed" | "completed";
|
|
4
|
+
export interface WorkflowState {
|
|
5
|
+
version: 1;
|
|
6
|
+
configFingerprint: string;
|
|
7
|
+
phase: WorkflowLifecyclePhase;
|
|
8
|
+
currentStage: WorkflowStageName | null;
|
|
9
|
+
checkpointHash: string | null;
|
|
10
|
+
startedAt: string;
|
|
11
|
+
updatedAt: string;
|
|
12
|
+
summary: WorkflowSummary;
|
|
13
|
+
}
|
|
14
|
+
export type WorkflowStateReadResult = {
|
|
15
|
+
kind: "missing";
|
|
16
|
+
} | {
|
|
17
|
+
kind: "invalid";
|
|
18
|
+
message: string;
|
|
19
|
+
} | {
|
|
20
|
+
kind: "valid";
|
|
21
|
+
state: WorkflowState;
|
|
22
|
+
};
|
|
23
|
+
export interface WorkflowStateTransition {
|
|
24
|
+
phase: WorkflowLifecyclePhase;
|
|
25
|
+
currentStage: WorkflowStageName | null;
|
|
26
|
+
checkpointHash: string | null;
|
|
27
|
+
summary: WorkflowSummary;
|
|
28
|
+
}
|
|
29
|
+
export declare function workflowStatePath(config: ResolvedWorkflowConfig): string;
|
|
30
|
+
export declare function createWorkflowState(config: ResolvedWorkflowConfig, summary: WorkflowSummary, timestamp?: string): WorkflowState;
|
|
31
|
+
export declare function transitionWorkflowState(state: WorkflowState, transition: WorkflowStateTransition, timestamp?: string): WorkflowState;
|
|
32
|
+
export declare function parseWorkflowState(value: unknown, config?: ResolvedWorkflowConfig): WorkflowStateReadResult;
|
|
33
|
+
export declare function readWorkflowState(config: ResolvedWorkflowConfig): Promise<WorkflowStateReadResult>;
|
|
34
|
+
export declare function writeWorkflowState(config: ResolvedWorkflowConfig, state: WorkflowState): Promise<void>;
|
|
35
|
+
export declare function hashWorkflowCheckpoint(config: ResolvedWorkflowConfig): Promise<string | null>;
|
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { lstat, readFile } from "node:fs/promises";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { workflowConfigFingerprint } from "./workflow-config.js";
|
|
5
|
+
import { writeWorkflowOutputFile } from "./workflow-output.js";
|
|
6
|
+
const stateKeys = [
|
|
7
|
+
"version",
|
|
8
|
+
"configFingerprint",
|
|
9
|
+
"phase",
|
|
10
|
+
"currentStage",
|
|
11
|
+
"checkpointHash",
|
|
12
|
+
"startedAt",
|
|
13
|
+
"updatedAt",
|
|
14
|
+
"summary"
|
|
15
|
+
];
|
|
16
|
+
const workflowStageNames = ["discovery", "shortlist", "review", "packaging"];
|
|
17
|
+
const workflowStageStatuses = ["success", "failed", "skipped", "not-run"];
|
|
18
|
+
const workflowPackageStatuses = ["packaged", "skipped", "failed"];
|
|
19
|
+
const workflowManagedPathKeys = [
|
|
20
|
+
"leadsCsv",
|
|
21
|
+
"discoverySummaryJson",
|
|
22
|
+
"shortlistCsv",
|
|
23
|
+
"shortlistSummaryJson",
|
|
24
|
+
"reviewSummaryJson",
|
|
25
|
+
"workflowSummaryJson",
|
|
26
|
+
"reportsDir",
|
|
27
|
+
"packagesDir"
|
|
28
|
+
];
|
|
29
|
+
export function workflowStatePath(config) {
|
|
30
|
+
return join(config.outDir, "workflow-state.json");
|
|
31
|
+
}
|
|
32
|
+
export function createWorkflowState(config, summary, timestamp = new Date().toISOString()) {
|
|
33
|
+
return {
|
|
34
|
+
version: 1,
|
|
35
|
+
configFingerprint: workflowConfigFingerprint(config),
|
|
36
|
+
phase: "running",
|
|
37
|
+
currentStage: null,
|
|
38
|
+
checkpointHash: null,
|
|
39
|
+
startedAt: timestamp,
|
|
40
|
+
updatedAt: timestamp,
|
|
41
|
+
summary
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
export function transitionWorkflowState(state, transition, timestamp = new Date().toISOString()) {
|
|
45
|
+
return {
|
|
46
|
+
...state,
|
|
47
|
+
...transition,
|
|
48
|
+
updatedAt: timestamp
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
export function parseWorkflowState(value, config) {
|
|
52
|
+
if (!isWorkflowState(value, config)) {
|
|
53
|
+
return { kind: "invalid", message: "Workflow state is invalid" };
|
|
54
|
+
}
|
|
55
|
+
return { kind: "valid", state: value };
|
|
56
|
+
}
|
|
57
|
+
export async function readWorkflowState(config) {
|
|
58
|
+
const path = workflowStatePath(config);
|
|
59
|
+
let content;
|
|
60
|
+
try {
|
|
61
|
+
const info = await lstat(path);
|
|
62
|
+
if (!info.isFile() || info.isSymbolicLink()) {
|
|
63
|
+
return { kind: "invalid", message: "Workflow state is invalid" };
|
|
64
|
+
}
|
|
65
|
+
content = await readFile(path, "utf8");
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
if (isMissingPath(error)) {
|
|
69
|
+
return { kind: "missing" };
|
|
70
|
+
}
|
|
71
|
+
return { kind: "invalid", message: "Workflow state is invalid" };
|
|
72
|
+
}
|
|
73
|
+
try {
|
|
74
|
+
return parseWorkflowState(JSON.parse(content), config);
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
return { kind: "invalid", message: "Workflow state is invalid" };
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
export async function writeWorkflowState(config, state) {
|
|
81
|
+
const parsed = parseWorkflowState(state, config);
|
|
82
|
+
if (parsed.kind !== "valid") {
|
|
83
|
+
throw new Error(parsed.kind === "invalid" ? parsed.message : "Workflow state is missing");
|
|
84
|
+
}
|
|
85
|
+
const path = workflowStatePath(config);
|
|
86
|
+
try {
|
|
87
|
+
const info = await lstat(path);
|
|
88
|
+
if (!info.isFile() || info.isSymbolicLink()) {
|
|
89
|
+
throw new Error("Workflow state must be a regular file");
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
if (!isMissingPath(error)) {
|
|
94
|
+
throw error;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
await writeWorkflowOutputFile(path, `${JSON.stringify(parsed.state, null, 2)}\n`, {
|
|
98
|
+
managedOutputRoot: config.outDir
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
export async function hashWorkflowCheckpoint(config) {
|
|
102
|
+
const checkpointPath = join(config.outDir, "workflow-checkpoint.json");
|
|
103
|
+
try {
|
|
104
|
+
const info = await lstat(checkpointPath);
|
|
105
|
+
if (!info.isFile() || info.isSymbolicLink()) {
|
|
106
|
+
throw new Error("Workflow checkpoint must be a regular file");
|
|
107
|
+
}
|
|
108
|
+
return createHash("sha256").update(await readFile(checkpointPath)).digest("hex");
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
if (isMissingPath(error)) {
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
throw error;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
function isMissingPath(error) {
|
|
118
|
+
return Boolean(error && typeof error === "object" && "code" in error && error.code === "ENOENT");
|
|
119
|
+
}
|
|
120
|
+
function isRecord(value) {
|
|
121
|
+
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
122
|
+
}
|
|
123
|
+
function hasExactKeys(value, keys) {
|
|
124
|
+
return Object.keys(value).length === keys.length && keys.every((key) => Object.hasOwn(value, key));
|
|
125
|
+
}
|
|
126
|
+
function hasOnlyKeys(value, keys) {
|
|
127
|
+
return Object.keys(value).every((key) => keys.includes(key));
|
|
128
|
+
}
|
|
129
|
+
function isHash(value) {
|
|
130
|
+
return typeof value === "string" && /^[a-f0-9]{64}$/.test(value);
|
|
131
|
+
}
|
|
132
|
+
function isTimestamp(value) {
|
|
133
|
+
if (typeof value !== "string") {
|
|
134
|
+
return false;
|
|
135
|
+
}
|
|
136
|
+
const parsed = Date.parse(value);
|
|
137
|
+
return Number.isFinite(parsed) && new Date(parsed).toISOString() === value;
|
|
138
|
+
}
|
|
139
|
+
function isCount(value) {
|
|
140
|
+
return typeof value === "number" && Number.isSafeInteger(value) && value >= 0;
|
|
141
|
+
}
|
|
142
|
+
function isStageName(value) {
|
|
143
|
+
return typeof value === "string" && workflowStageNames.includes(value);
|
|
144
|
+
}
|
|
145
|
+
function isStageSummary(value, countKeys) {
|
|
146
|
+
return (isRecord(value) &&
|
|
147
|
+
hasOnlyKeys(value, ["status", ...countKeys]) &&
|
|
148
|
+
typeof value.status === "string" &&
|
|
149
|
+
workflowStageStatuses.includes(value.status) &&
|
|
150
|
+
countKeys.every((key) => value[key] === undefined || isCount(value[key])));
|
|
151
|
+
}
|
|
152
|
+
function isPackageEntry(value) {
|
|
153
|
+
if (!isRecord(value) || typeof value.leadKey !== "string" || typeof value.companyName !== "string") {
|
|
154
|
+
return false;
|
|
155
|
+
}
|
|
156
|
+
if (value.status === "packaged") {
|
|
157
|
+
return hasExactKeys(value, ["leadKey", "companyName", "status", "outDir"]) && typeof value.outDir === "string";
|
|
158
|
+
}
|
|
159
|
+
if (value.status === "skipped") {
|
|
160
|
+
return hasExactKeys(value, ["leadKey", "companyName", "status"]);
|
|
161
|
+
}
|
|
162
|
+
return (value.status === "failed" &&
|
|
163
|
+
hasExactKeys(value, ["leadKey", "companyName", "status", "error"]) &&
|
|
164
|
+
typeof value.error === "string");
|
|
165
|
+
}
|
|
166
|
+
function isWorkflowSummary(value) {
|
|
167
|
+
if (!isRecord(value) ||
|
|
168
|
+
!hasOnlyKeys(value, ["version", "status", "stages", "outputs", "discoveredLeads", "selectedLeads", "packages", "error"]) ||
|
|
169
|
+
value.version !== 1 ||
|
|
170
|
+
(value.status !== "success" && value.status !== "failed") ||
|
|
171
|
+
!isRecord(value.stages) ||
|
|
172
|
+
!hasExactKeys(value.stages, workflowStageNames) ||
|
|
173
|
+
!isRecord(value.outputs) ||
|
|
174
|
+
!hasExactKeys(value.outputs, workflowManagedPathKeys) ||
|
|
175
|
+
!isCount(value.discoveredLeads) ||
|
|
176
|
+
!isCount(value.selectedLeads) ||
|
|
177
|
+
!isRecord(value.packages) ||
|
|
178
|
+
!hasExactKeys(value.packages, ["packaged", "skipped", "failed", "entries"])) {
|
|
179
|
+
return false;
|
|
180
|
+
}
|
|
181
|
+
const stages = value.stages;
|
|
182
|
+
const outputs = value.outputs;
|
|
183
|
+
const packages = value.packages;
|
|
184
|
+
const error = value.error;
|
|
185
|
+
return (isStageSummary(stages.discovery, ["totalCandidates", "suppressedCandidates", "audited"]) &&
|
|
186
|
+
isStageSummary(stages.shortlist, ["totalRows", "suppressedRows", "filteredRows", "selected"]) &&
|
|
187
|
+
isStageSummary(stages.review, ["totalRows", "reviewedRows", "actionableLeads", "staleRows", "invalidReviewedAtRows", "unreviewedRows"]) &&
|
|
188
|
+
isStageSummary(stages.packaging, ["packaged", "skipped", "failed"]) &&
|
|
189
|
+
workflowManagedPathKeys.every((key) => typeof outputs[key] === "string") &&
|
|
190
|
+
isCount(packages.packaged) &&
|
|
191
|
+
isCount(packages.skipped) &&
|
|
192
|
+
isCount(packages.failed) &&
|
|
193
|
+
Array.isArray(packages.entries) &&
|
|
194
|
+
packages.entries.every(isPackageEntry) &&
|
|
195
|
+
(error === undefined || (isRecord(error) && hasExactKeys(error, ["stage", "message"]) && isStageName(error.stage) && typeof error.message === "string")));
|
|
196
|
+
}
|
|
197
|
+
function isWorkflowState(value, config) {
|
|
198
|
+
if (!isRecord(value) || !hasExactKeys(value, stateKeys)) {
|
|
199
|
+
return false;
|
|
200
|
+
}
|
|
201
|
+
const structuralValidity = value.version === 1 &&
|
|
202
|
+
isHash(value.configFingerprint) &&
|
|
203
|
+
(value.phase === "running" || value.phase === "failed" || value.phase === "completed") &&
|
|
204
|
+
(value.currentStage === null || isStageName(value.currentStage)) &&
|
|
205
|
+
(value.checkpointHash === null || isHash(value.checkpointHash)) &&
|
|
206
|
+
isTimestamp(value.startedAt) &&
|
|
207
|
+
isTimestamp(value.updatedAt);
|
|
208
|
+
if (!structuralValidity || !isWorkflowSummary(value.summary)) {
|
|
209
|
+
return false;
|
|
210
|
+
}
|
|
211
|
+
const summary = value.summary;
|
|
212
|
+
const phase = value.phase;
|
|
213
|
+
const currentStage = value.currentStage;
|
|
214
|
+
if (config &&
|
|
215
|
+
(value.configFingerprint !== workflowConfigFingerprint(config) ||
|
|
216
|
+
!workflowManagedPathKeys.every((key) => summary.outputs[key] === config.paths[key]))) {
|
|
217
|
+
return false;
|
|
218
|
+
}
|
|
219
|
+
if (phase === "completed") {
|
|
220
|
+
return (summary.status === "success" &&
|
|
221
|
+
summary.error === undefined &&
|
|
222
|
+
currentStage === null &&
|
|
223
|
+
hasValidStageProgress(summary, phase, currentStage, config));
|
|
224
|
+
}
|
|
225
|
+
if (phase === "failed") {
|
|
226
|
+
return (summary.status === "failed" &&
|
|
227
|
+
summary.error !== undefined &&
|
|
228
|
+
currentStage === summary.error.stage &&
|
|
229
|
+
hasValidStageProgress(summary, phase, currentStage, config));
|
|
230
|
+
}
|
|
231
|
+
return (summary.status === "success" &&
|
|
232
|
+
summary.error === undefined &&
|
|
233
|
+
hasValidStageProgress(summary, phase, currentStage, config));
|
|
234
|
+
}
|
|
235
|
+
function hasValidStageProgress(summary, phase, currentStage, config) {
|
|
236
|
+
const stageStatuses = workflowStageNames.map((name) => [name, summary.stages[name].status]);
|
|
237
|
+
const enabled = (stage) => stage === "discovery" ||
|
|
238
|
+
stage === "shortlist" ||
|
|
239
|
+
(stage === "review"
|
|
240
|
+
? config === undefined || config.review !== undefined
|
|
241
|
+
: config === undefined || config.packageReports);
|
|
242
|
+
const isOptional = (stage) => stage === "review" || stage === "packaging";
|
|
243
|
+
if (stageStatuses.some(([stage, status]) => {
|
|
244
|
+
if (!isOptional(stage)) {
|
|
245
|
+
return status === "skipped";
|
|
246
|
+
}
|
|
247
|
+
if (config) {
|
|
248
|
+
return enabled(stage) ? status === "skipped" : status !== "skipped";
|
|
249
|
+
}
|
|
250
|
+
return false;
|
|
251
|
+
})) {
|
|
252
|
+
return false;
|
|
253
|
+
}
|
|
254
|
+
const activeStages = stageStatuses.filter(([stage, status]) => !(isOptional(stage) && status === "skipped"));
|
|
255
|
+
if (phase === "completed") {
|
|
256
|
+
return activeStages.every(([, status]) => status === "success");
|
|
257
|
+
}
|
|
258
|
+
if (phase === "running") {
|
|
259
|
+
if (activeStages.some(([, status]) => status !== "success" && status !== "not-run")) {
|
|
260
|
+
return false;
|
|
261
|
+
}
|
|
262
|
+
let foundNotRun = false;
|
|
263
|
+
for (const [stage, status] of activeStages) {
|
|
264
|
+
if (status === "not-run") {
|
|
265
|
+
foundNotRun = true;
|
|
266
|
+
}
|
|
267
|
+
else if (foundNotRun || status !== "success") {
|
|
268
|
+
return false;
|
|
269
|
+
}
|
|
270
|
+
if (currentStage === stage && status !== "not-run") {
|
|
271
|
+
return false;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
return currentStage === null || (enabled(currentStage) && summary.stages[currentStage].status === "not-run");
|
|
275
|
+
}
|
|
276
|
+
if (!currentStage || summary.stages[currentStage].status !== "failed" || !enabled(currentStage)) {
|
|
277
|
+
return false;
|
|
278
|
+
}
|
|
279
|
+
let foundFailedStage = false;
|
|
280
|
+
for (const [stage, status] of activeStages) {
|
|
281
|
+
if (stage === currentStage) {
|
|
282
|
+
foundFailedStage = true;
|
|
283
|
+
if (status !== "failed") {
|
|
284
|
+
return false;
|
|
285
|
+
}
|
|
286
|
+
continue;
|
|
287
|
+
}
|
|
288
|
+
if (!foundFailedStage ? status !== "success" : status !== "not-run") {
|
|
289
|
+
return false;
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
return foundFailedStage;
|
|
293
|
+
}
|
|
294
|
+
//# sourceMappingURL=workflow-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-state.js","sourceRoot":"","sources":["../src/workflow-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type WorkflowStageName, type WorkflowSummary } from "./workflow.js";
|
|
2
|
+
export type WorkflowStatusReportStatus = "not-started" | "running-or-interrupted" | "failed" | "completed" | "invalid";
|
|
3
|
+
export type WorkflowArtifactValidation = "valid" | "invalid" | "not-applicable";
|
|
4
|
+
export type WorkflowStatusNextActionKind = "run" | "resume" | "confirm-active-process" | "none" | "inspect";
|
|
5
|
+
export interface WorkflowStatusNextAction {
|
|
6
|
+
kind: WorkflowStatusNextActionKind;
|
|
7
|
+
argv: string[] | null;
|
|
8
|
+
message: string;
|
|
9
|
+
}
|
|
10
|
+
export interface WorkflowStatusReport {
|
|
11
|
+
version: 1;
|
|
12
|
+
status: WorkflowStatusReportStatus;
|
|
13
|
+
currentStage: WorkflowStageName | null;
|
|
14
|
+
lastSuccessfulStage: WorkflowStageName | null;
|
|
15
|
+
resumeAvailable: boolean;
|
|
16
|
+
updatedAt: string | null;
|
|
17
|
+
stages: WorkflowSummary["stages"];
|
|
18
|
+
artifactValidation: WorkflowArtifactValidation;
|
|
19
|
+
nextAction: WorkflowStatusNextAction;
|
|
20
|
+
error: {
|
|
21
|
+
message: string;
|
|
22
|
+
} | null;
|
|
23
|
+
}
|
|
24
|
+
export declare function runWorkflowStatus(configPath: string): Promise<WorkflowStatusReport>;
|
|
25
|
+
export declare function renderWorkflowStatusTerminal(report: WorkflowStatusReport, configPath: string): string;
|
|
26
|
+
export declare function renderWorkflowStatusJson(report: WorkflowStatusReport): string;
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { readWorkflowConfig } from "./workflow-config.js";
|
|
2
|
+
import { readWorkflowState } from "./workflow-state.js";
|
|
3
|
+
import { inspectWorkflowCheckpoint } from "./workflow.js";
|
|
4
|
+
const stageNames = ["discovery", "shortlist", "review", "packaging"];
|
|
5
|
+
function initialStages(config) {
|
|
6
|
+
return {
|
|
7
|
+
discovery: { status: "not-run" },
|
|
8
|
+
shortlist: { status: "not-run" },
|
|
9
|
+
review: { status: config.review ? "not-run" : "skipped" },
|
|
10
|
+
packaging: { status: config.packageReports ? "not-run" : "skipped" }
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
function lastSuccessfulStage(stages) {
|
|
14
|
+
let last = null;
|
|
15
|
+
for (const stage of stageNames) {
|
|
16
|
+
if (stages[stage].status === "success") {
|
|
17
|
+
last = stage;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return last;
|
|
21
|
+
}
|
|
22
|
+
function nextIncompleteStage(stages) {
|
|
23
|
+
return stageNames.find((stage) => stages[stage].status !== "success" && stages[stage].status !== "skipped") ?? null;
|
|
24
|
+
}
|
|
25
|
+
function runAction(configPath) {
|
|
26
|
+
return {
|
|
27
|
+
kind: "run",
|
|
28
|
+
argv: ["workflow", "--config", configPath],
|
|
29
|
+
message: "Run the workflow from the beginning."
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
function resumeAction(configPath) {
|
|
33
|
+
return {
|
|
34
|
+
kind: "resume",
|
|
35
|
+
argv: ["workflow", "--config", configPath, "--resume"],
|
|
36
|
+
message: "Resume from the latest validated checkpoint."
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function runningAction(configPath, resumeAvailable) {
|
|
40
|
+
return {
|
|
41
|
+
kind: "confirm-active-process",
|
|
42
|
+
argv: resumeAvailable ? ["workflow", "--config", configPath, "--resume"] : ["workflow", "--config", configPath],
|
|
43
|
+
message: "Confirm that no workflow process is active before running this command."
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
function invalidReport(stages, artifactValidation, message) {
|
|
47
|
+
return {
|
|
48
|
+
version: 1,
|
|
49
|
+
status: "invalid",
|
|
50
|
+
currentStage: null,
|
|
51
|
+
lastSuccessfulStage: lastSuccessfulStage(stages),
|
|
52
|
+
resumeAvailable: false,
|
|
53
|
+
updatedAt: null,
|
|
54
|
+
stages,
|
|
55
|
+
artifactValidation,
|
|
56
|
+
nextAction: { kind: "inspect", argv: null, message: "Inspect workflow state and checkpoint files before running." },
|
|
57
|
+
error: { message }
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
function hasCompletedStages(stages) {
|
|
61
|
+
return stageNames.every((stage) => stages[stage].status === "success" || stages[stage].status === "skipped");
|
|
62
|
+
}
|
|
63
|
+
function checkpointIsUsable(inspection, hash) {
|
|
64
|
+
return inspection.kind === "valid" && hash !== null && inspection.checkpointHash === hash;
|
|
65
|
+
}
|
|
66
|
+
export async function runWorkflowStatus(configPath) {
|
|
67
|
+
const config = await readWorkflowConfig(configPath);
|
|
68
|
+
const [stateResult, checkpoint] = await Promise.all([readWorkflowState(config), inspectWorkflowCheckpoint(config)]);
|
|
69
|
+
if (stateResult.kind === "invalid") {
|
|
70
|
+
return invalidReport(initialStages(config), "invalid", "Workflow state is invalid.");
|
|
71
|
+
}
|
|
72
|
+
if (stateResult.kind === "missing") {
|
|
73
|
+
if (checkpoint.kind === "missing") {
|
|
74
|
+
const stages = initialStages(config);
|
|
75
|
+
return {
|
|
76
|
+
version: 1,
|
|
77
|
+
status: "not-started",
|
|
78
|
+
currentStage: null,
|
|
79
|
+
lastSuccessfulStage: null,
|
|
80
|
+
resumeAvailable: false,
|
|
81
|
+
updatedAt: null,
|
|
82
|
+
stages,
|
|
83
|
+
artifactValidation: "not-applicable",
|
|
84
|
+
nextAction: runAction(configPath),
|
|
85
|
+
error: null
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
if (checkpoint.kind === "invalid") {
|
|
89
|
+
return invalidReport(initialStages(config), "invalid", "Workflow checkpoint is invalid.");
|
|
90
|
+
}
|
|
91
|
+
const completed = hasCompletedStages(checkpoint.summary.stages);
|
|
92
|
+
return {
|
|
93
|
+
version: 1,
|
|
94
|
+
status: completed ? "completed" : "running-or-interrupted",
|
|
95
|
+
currentStage: completed ? null : nextIncompleteStage(checkpoint.summary.stages),
|
|
96
|
+
lastSuccessfulStage: lastSuccessfulStage(checkpoint.summary.stages),
|
|
97
|
+
resumeAvailable: !completed,
|
|
98
|
+
updatedAt: null,
|
|
99
|
+
stages: checkpoint.summary.stages,
|
|
100
|
+
artifactValidation: "valid",
|
|
101
|
+
nextAction: completed
|
|
102
|
+
? { kind: "none", argv: null, message: "Workflow completion is recorded." }
|
|
103
|
+
: runningAction(configPath, true),
|
|
104
|
+
error: null
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
const state = stateResult.state;
|
|
108
|
+
const stages = state.summary.stages;
|
|
109
|
+
if (state.checkpointHash !== null && !checkpointIsUsable(checkpoint, state.checkpointHash)) {
|
|
110
|
+
return invalidReport(stages, "invalid", "Workflow checkpoint is missing, invalid, or does not match the state.");
|
|
111
|
+
}
|
|
112
|
+
if (state.phase === "completed" && !checkpointIsUsable(checkpoint, state.checkpointHash)) {
|
|
113
|
+
return invalidReport(stages, "invalid", "Completed workflow state requires a matching checkpoint.");
|
|
114
|
+
}
|
|
115
|
+
const resumeAvailable = checkpointIsUsable(checkpoint, state.checkpointHash);
|
|
116
|
+
const status = state.phase === "running" ? "running-or-interrupted" : state.phase === "failed" ? "failed" : "completed";
|
|
117
|
+
const nextAction = state.phase === "running"
|
|
118
|
+
? runningAction(configPath, resumeAvailable)
|
|
119
|
+
: state.phase === "failed"
|
|
120
|
+
? resumeAvailable
|
|
121
|
+
? resumeAction(configPath)
|
|
122
|
+
: runAction(configPath)
|
|
123
|
+
: { kind: "none", argv: null, message: "Workflow completion is recorded." };
|
|
124
|
+
return {
|
|
125
|
+
version: 1,
|
|
126
|
+
status,
|
|
127
|
+
currentStage: state.currentStage,
|
|
128
|
+
lastSuccessfulStage: lastSuccessfulStage(stages),
|
|
129
|
+
resumeAvailable,
|
|
130
|
+
updatedAt: state.updatedAt,
|
|
131
|
+
stages,
|
|
132
|
+
artifactValidation: resumeAvailable ? "valid" : "not-applicable",
|
|
133
|
+
nextAction,
|
|
134
|
+
error: state.phase === "failed" && state.currentStage ? { message: `Workflow failed during ${state.currentStage}` } : null
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
export function renderWorkflowStatusTerminal(report, configPath) {
|
|
138
|
+
const command = report.nextAction.argv === null ? [] : [`Command: ${report.nextAction.argv.join(" ")}`];
|
|
139
|
+
const error = report.error === null ? [] : [`Error: ${report.error.message}`];
|
|
140
|
+
return `${[
|
|
141
|
+
`Workflow status: ${report.status.toUpperCase().replaceAll("-", " ")}`,
|
|
142
|
+
`Config: ${configPath}`,
|
|
143
|
+
`Current stage: ${report.currentStage ?? "none"}`,
|
|
144
|
+
`Last successful stage: ${report.lastSuccessfulStage ?? "none"}`,
|
|
145
|
+
`Artifact validation: ${report.artifactValidation.toUpperCase().replaceAll("-", " ")}`,
|
|
146
|
+
`Next action: ${report.nextAction.kind.toUpperCase().replaceAll("-", " ")}`,
|
|
147
|
+
...command,
|
|
148
|
+
...error
|
|
149
|
+
].join("\n")}\n`;
|
|
150
|
+
}
|
|
151
|
+
export function renderWorkflowStatusJson(report) {
|
|
152
|
+
return `${JSON.stringify(report, null, 2)}\n`;
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=workflow-status.js.map
|