baa-conductor


baa-conductor / apps / claude-coded / src
im_wower  ·  2026-03-28

contracts.ts

  1export type ClaudeCodedCliAction = "config" | "help" | "start" | "status";
  2export type ClaudeCodedChildStatus = "failed" | "idle" | "running" | "starting" | "stopped";
  3export type ClaudeCodedEventLevel = "error" | "info" | "warn";
  4
  5export type ClaudeCodedEnvironment = Record<string, string | undefined>;
  6
  7export interface ClaudeCodedRuntimePaths {
  8  repoRoot: string;
  9  logsRootDir: string;
 10  stateRootDir: string;
 11  logsDir: string;
 12  stateDir: string;
 13  structuredEventLogPath: string;
 14  stdoutLogPath: string;
 15  stderrLogPath: string;
 16  identityPath: string;
 17  daemonStatePath: string;
 18}
 19
 20export interface ClaudeCodedChildConfig {
 21  command: string;
 22  args: string[];
 23  cwd: string;
 24  model: string | null;
 25  extraArgs: string[];
 26}
 27
 28export interface ClaudeCodedServiceConfig {
 29  localApiBase: string;
 30}
 31
 32export interface ClaudeCodedResolvedConfig {
 33  nodeId: string;
 34  version: string | null;
 35  eventCacheSize: number;
 36  turnTimeoutMs: number;
 37  paths: ClaudeCodedRuntimePaths;
 38  service: ClaudeCodedServiceConfig;
 39  child: ClaudeCodedChildConfig;
 40}
 41
 42export interface ClaudeCodedDaemonIdentity {
 43  daemonId: string;
 44  nodeId: string;
 45  repoRoot: string;
 46  createdAt: string;
 47  version: string | null;
 48}
 49
 50export interface ClaudeCodedManagedChildState {
 51  status: ClaudeCodedChildStatus;
 52  command: string | null;
 53  args: string[];
 54  cwd: string | null;
 55  pid: number | null;
 56  startedAt: string | null;
 57  exitedAt: string | null;
 58  exitCode: number | null;
 59  signal: string | null;
 60  lastError: string | null;
 61  restartCount: number;
 62}
 63
 64export interface ClaudeCodedDaemonState {
 65  started: boolean;
 66  startedAt: string | null;
 67  stoppedAt: string | null;
 68  updatedAt: string;
 69  pid: number | null;
 70  child: ClaudeCodedManagedChildState;
 71}
 72
 73export interface ClaudeCodedRecentEvent {
 74  seq: number;
 75  createdAt: string;
 76  level: ClaudeCodedEventLevel;
 77  type: string;
 78  message: string;
 79  detail: Record<string, unknown> | null;
 80}
 81
 82export interface ClaudeCodedRecentEventCache {
 83  maxEntries: number;
 84  updatedAt: string | null;
 85  events: ClaudeCodedRecentEvent[];
 86}
 87
 88export interface ClaudeCodedStatusSnapshot {
 89  config: ClaudeCodedResolvedConfig;
 90  identity: ClaudeCodedDaemonIdentity;
 91  daemon: ClaudeCodedDaemonState;
 92  recentEvents: ClaudeCodedRecentEventCache;
 93}
 94
 95export interface ClaudeCodedStreamEvent {
 96  type: string;
 97  [key: string]: unknown;
 98}
 99
100export interface ClaudeCodedAskResult {
101  ok: boolean;
102  result: string | null;
103  sessionId: string | null;
104  costUsd: number | null;
105  durationMs: number | null;
106  isError: boolean;
107  events: ClaudeCodedStreamEvent[];
108}