open-local-audit 0.65.0 → 0.67.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.
@@ -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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"}
@@ -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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-status.js","sourceRoot":"","sources":["../src/workflow-status.ts"],"names":[],"mappings":"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"}
@@ -5,10 +5,12 @@ import { type ShortlistRunOptions } from "./shortlist-runner.js";
5
5
  import type { ShortlistResult } from "./shortlist.js";
6
6
  import { resolveGoogleMapsApiKey } from "./secrets.js";
7
7
  import { readWorkflowConfig, type ResolvedWorkflowConfig, type WorkflowManagedPaths } from "./workflow-config.js";
8
+ import { writeWorkflowState } from "./workflow-state.js";
8
9
  export type WorkflowStatus = "success" | "failed";
9
10
  export type WorkflowStageStatus = "success" | "failed" | "skipped" | "not-run";
10
11
  export type WorkflowStageName = "discovery" | "shortlist" | "review" | "packaging";
11
12
  export type WorkflowPackageStatus = "packaged" | "skipped" | "failed";
13
+ export { workflowConfigFingerprint } from "./workflow-config.js";
12
14
  export interface WorkflowDiscoveryStageSummary {
13
15
  status: WorkflowStageStatus;
14
16
  totalCandidates?: number;
@@ -75,14 +77,28 @@ export interface WorkflowDependencies {
75
77
  summarizeReviewCsvFile: typeof summarizeReviewCsvFile;
76
78
  packageReport: (options: Parameters<typeof packageReport>[0]) => Promise<ReportPackResult>;
77
79
  resolveGoogleMapsApiKey: typeof resolveGoogleMapsApiKey;
80
+ now: () => Date;
81
+ writeWorkflowState: typeof writeWorkflowState;
78
82
  }
79
83
  export interface WorkflowRunOptions {
80
84
  resume?: boolean;
81
85
  }
86
+ export type WorkflowCheckpointInspection = {
87
+ kind: "missing";
88
+ } | {
89
+ kind: "invalid";
90
+ message: string;
91
+ } | {
92
+ kind: "valid";
93
+ summary: WorkflowSummary;
94
+ checkpointPath: string;
95
+ checkpointHash: string;
96
+ };
82
97
  export declare class WorkflowRunError extends Error {
83
98
  readonly summary: WorkflowSummary;
84
99
  constructor(summary: WorkflowSummary);
85
100
  }
86
101
  export declare function safeLeadSlug(leadKey: string, companyName: string): string;
102
+ export declare function inspectWorkflowCheckpoint(config: ResolvedWorkflowConfig): Promise<WorkflowCheckpointInspection>;
87
103
  export declare function runWorkflow(configPath: string, dependencies?: Partial<WorkflowDependencies>, options?: WorkflowRunOptions): Promise<WorkflowSummary>;
88
104
  export declare function runResolvedWorkflow(config: ResolvedWorkflowConfig, dependencies?: Partial<WorkflowDependencies>, options?: WorkflowRunOptions): Promise<WorkflowSummary>;