Files
hypothesis-machine/src/types.ts
T

99 lines
2.3 KiB
TypeScript

import type { AgentSession } from "@earendil-works/pi-coding-agent";
export type AgentStatus =
| "created" | "running" | "waiting" | "completed" | "failed"
| "cancelled" | "interrupted" | "archived";
export interface AgentSpec {
id: string;
name: string;
parent_id: string | null;
root_run_id: string;
depth: number;
model: string;
thinking_level: string;
can_spawn_agents: boolean;
max_children: number;
tools: string[];
replication_of?: string;
independent_context?: boolean;
role: string;
goal: string;
context: string;
responsibilities: string;
completion_criteria: string;
expected_output: string;
}
export interface AgentRecord {
id: string;
runId: string;
parentId: string | null;
children: string[];
lineage: string[];
depth: number;
task: string;
taskFingerprint: string;
expectedOutput: string;
completionCriteria: string;
specPath: string;
sessionFile?: string;
status: AgentStatus;
createdAt: string;
startedAt?: string;
finishedAt?: string;
result?: AgentResult;
error?: string;
replicationOf?: string;
independentContext?: boolean;
}
export interface AgentResult {
status: "completed" | "failed" | "cancelled";
summary: string;
structured?: unknown;
completedAt: string;
}
export interface SpawnRequest {
parentId: string | null;
name: string;
role: string;
task: string;
expectedOutput: string;
completionCriteria: string;
context?: string;
responsibilities?: string;
tools?: string[];
background?: boolean;
replicationOf?: string;
independentContext?: boolean;
}
export interface AgentRuntime {
readonly sessionFile: string | undefined;
start(prompt: string): Promise<AgentResult>;
steer(message: string): Promise<void>;
followUp(message: string): Promise<void>;
cancel(): Promise<void>;
dispose(): void;
}
export interface AgentRuntimeFactory {
create(record: AgentRecord, spec: AgentSpec): Promise<AgentRuntime>;
}
export interface PiSessionRuntime extends AgentRuntime {
readonly session: AgentSession;
}
export interface ResearchLimits {
max_depth: number;
max_children_per_agent: number;
max_active_agents: number;
max_total_agents_per_run: number;
max_iterations_without_progress: number;
allow_recursive_spawning: boolean;
max_research_iterations: number;
}