baa-conductor

git clone 

baa-conductor / packages / logging / src
im_wower  ·  2026-03-21

state.ts

 1import {
 2  DEFAULT_RUN_LAYOUT_VERSION,
 3  type RunMetadata,
 4  type RunMetadataInput,
 5  type RunStatePatch,
 6  type RunStateSnapshot,
 7  type RunStateSnapshotInput
 8} from "./contracts";
 9
10export function createRunMetadata(input: RunMetadataInput): RunMetadata {
11  return {
12    layoutVersion: DEFAULT_RUN_LAYOUT_VERSION,
13    taskId: input.taskId,
14    stepId: input.stepId,
15    stepName: input.stepName,
16    runId: input.runId,
17    workerKind: input.workerKind,
18    attempt: input.attempt,
19    repoRoot: input.repoRoot,
20    worktreePath: input.worktreePath,
21    createdAt: input.createdAt,
22    checkpointMode: input.checkpointMode,
23    promptSummary: input.promptSummary,
24    command: input.command
25  };
26}
27
28export function createRunStateSnapshot(input: RunStateSnapshotInput): RunStateSnapshot {
29  return {
30    status: "prepared",
31    attempt: input.attempt,
32    startedAt: input.startedAt,
33    updatedAt: input.startedAt,
34    lastEventSeq: 0,
35    checkpointSeq: input.checkpointSeq ?? 0,
36    summary: input.summary
37  };
38}
39
40export function updateRunState(
41  snapshot: RunStateSnapshot,
42  patch: RunStatePatch
43): RunStateSnapshot {
44  return {
45    ...snapshot,
46    status: patch.status ?? snapshot.status,
47    updatedAt: patch.updatedAt ?? snapshot.updatedAt,
48    finishedAt: patch.finishedAt ?? snapshot.finishedAt,
49    lastEventSeq: patch.lastEventSeq ?? snapshot.lastEventSeq,
50    checkpointSeq: patch.checkpointSeq ?? snapshot.checkpointSeq,
51    summary: patch.summary ?? snapshot.summary,
52    exitCode: patch.exitCode ?? snapshot.exitCode
53  };
54}