Files
pikasTech-HWLAB/internal/workbench/contracts.ts
T

78 lines
2.7 KiB
TypeScript

export type WorkbenchActor = {
id: string;
role?: string | null;
};
export type WorkbenchMode = "native-test" | "agentrun-native" | "temporal";
export type WorkbenchCommand =
| { operation: "health" }
| { operation: "session.create"; actor: WorkbenchActor; params: Record<string, unknown> }
| { operation: "turn.submit"; actor: WorkbenchActor; params: Record<string, unknown>; traceId?: string }
| { operation: "turn.steer"; actor: WorkbenchActor; traceId: string; params: Record<string, unknown> }
| { operation: "turn.cancel"; actor: WorkbenchActor; traceId: string; params?: Record<string, unknown> };
export type WorkbenchCommandResult = {
ok: boolean;
operation: WorkbenchCommand["operation"];
mode: WorkbenchMode;
data?: Record<string, unknown>;
error?: { code: string; message: string; details?: unknown };
};
export type WorkbenchTurnInput = {
actor: WorkbenchActor;
traceId: string;
sessionId: string;
params: Record<string, unknown>;
};
export type WorkbenchSteerInput = {
actor: WorkbenchActor;
sessionId: string;
targetTraceId: string;
steerTraceId: string;
params: Record<string, unknown>;
};
export type WorkbenchActivityConfig = {
startToCloseTimeoutMs: number;
retryInitialIntervalMs: number;
retryMaximumIntervalMs: number;
retryMaximumAttempts: number;
};
export type WorkbenchTemporalResult = Record<string, unknown> & {
workflowId: string;
workflowRunId: string;
reused: boolean;
};
export interface WorkbenchEventPublisher {
publish(input: {
traceId: string;
sessionId: string;
event: Record<string, unknown>;
}): Promise<Record<string, unknown>>;
close?(): Promise<void>;
}
export interface WorkbenchApplication {
health(): Promise<Record<string, unknown>>;
createSession(input: { actor: WorkbenchActor; params: Record<string, unknown> }): Promise<Record<string, unknown>>;
admitTurn(input: WorkbenchTurnInput): Promise<WorkbenchTurnInput>;
dispatchTurn(input: WorkbenchTurnInput): Promise<Record<string, unknown>>;
steerTurn(input: WorkbenchSteerInput): Promise<Record<string, unknown>>;
cancelTurn(input: { actor: WorkbenchActor; traceId: string; params: Record<string, unknown> }): Promise<Record<string, unknown>>;
providerModelCatalog?(profile: string): Promise<Record<string, unknown>>;
snapshot?(): Promise<{ sessions: Record<string, Record<string, unknown>>; turns: Record<string, Record<string, unknown>> }>;
close?(): Promise<void>;
}
export interface WorkbenchTemporalGateway {
submit(input: WorkbenchTurnInput): Promise<WorkbenchTemporalResult>;
steer(input: WorkbenchSteerInput): Promise<WorkbenchTemporalResult>;
cancel(input: { actor: WorkbenchActor; traceId: string; params: Record<string, unknown> }): Promise<WorkbenchTemporalResult>;
close(): Promise<void>;
}