Files
podman/shared/src/hermes-job.ts
T
2026-06-28 08:33:52 +00:00

80 lines
1.6 KiB
TypeScript

export type HermesJobStatus =
| 'queued'
| 'running'
| 'waiting_for_confirmation'
| 'aborting'
| 'aborted'
| 'failed'
| 'completed';
export type HermesJobEventType =
| 'accepted'
| 'heartbeat'
| 'step_started'
| 'step_output'
| 'needs_confirmation'
| 'step_completed'
| 'aborted'
| 'failed'
| 'completed';
export type HermesContextScope =
| 'current_pod'
| 'current_repo'
| 'current_file'
| 'github'
| 'mongodb'
| 'terminal'
| 'full_workspace';
export type HermesRiskLevel = 'read_only' | 'safe_write' | 'commit_allowed' | 'deploy_allowed';
export interface HermesJobInput {
prompt: string;
contextScope: HermesContextScope;
targetRepository?: string;
riskLevel: HermesRiskLevel;
requiresConfirmation?: boolean;
successCriteria: string[];
podId: string;
identity: string;
sessionId: string;
conversationRoom?: string;
parentJobId?: string;
}
export interface HermesJob {
id: string;
podId: string;
identity: string;
sessionId: string;
conversationRoom?: string;
prompt: string;
contextScope: HermesContextScope;
targetRepository: string;
riskLevel: HermesRiskLevel;
requiresConfirmation: boolean;
successCriteria: string[];
parentJobId?: string;
status: HermesJobStatus;
finalSummary?: string;
error?: string;
createdAt: string;
updatedAt: string;
startedAt?: string;
completedAt?: string;
lastHeartbeatAt?: string;
abortRequestedAt?: string;
}
export interface HermesJobEvent {
id: string;
jobId: string;
podId: string;
sessionId: string;
type: HermesJobEventType;
message: string;
data?: Record<string, unknown>;
createdAt: string;
}