import type { QuotaObservationReference } from "../runtime/quota.js"; import type { ProviderObservation } from "../hooks/provider.js"; export interface NativeHookTicketAuthority extends Record { ticket_id: string; ticket_version: number; ticket_attempt: number; ticket_actor: string; lease_token: string; } export declare const OMS_EVENT_KINDS: readonly ["native-hook-observed", "provider-observed", "github-observed", "structured-role-completed", "dispatch-delivery-requested", "ticket-resume-due", "run-heartbeat-due", "watchdog-lease-expired", "watchdog-session-stalled", "watchdog-outbox-stalled", "slack-notification-requested"]; export type OmsEventKind = (typeof OMS_EVENT_KINDS)[number]; export interface DispatchDeliveryRequestedPayload extends Record { dispatch_id: string; dispatch_version: 1; worker_record_id: string; ticket_id: string; attempt: number; lease_token: string; requested_at: string; } export interface NativeHookObservedPayload extends Record { delivery_id: string; hook_kind: "session-started" | "session-heartbeat" | "session-stopped" | "quota-exhausted" | "quota-available"; session_id: string; session_version: number; role_id: string; engine: "claude" | "codex"; mode: "pane" | "goal" | "exec"; run_id: string | null; ticket_id: string | null; native_session_ref: string; tmux_pane_id: string | null; observed_at: string; heartbeat_deadline_at: string | null; quota_valid_until: string | null; quota_resume_at: string | null; source_sha256: string; ticket_authority: NativeHookTicketAuthority | null; } export interface GithubObservedPayload extends Record { observation_key: string; observation_kind: "issue" | "comment" | "label" | "branch" | "pull_request" | "review" | "check"; repository: string; source_id_sha256: string; source_version_sha256: string; change: "present" | "removed"; presence_generation: number; observed_at: string; payload_sha256: string; snapshot_file: string; } export interface StructuredRoleCompletedPayload extends Record { schema_version: 1; request_id: string; role_id: "oms.grader.claude" | "oms.bounded-dreamer"; result_gate_id: string; dispatch_id: string; ticket_id: string; claude_session_id: string; submitted_at: string; result_sha256: string; terminal_authority: false; } export interface TicketResumeDuePayload extends Record { ticket_id: string; ticket_version: number; ticket_attempt: number; ticket_actor: string; ticket_lease_token: string | null; role_id: string | null; quota_observation: QuotaObservationReference | null; session_version: number | null; due_at: string; emitted_at: string; latency_ms: number; policy_digest: string; } export interface RunHeartbeatDuePayload extends Record { run_id: string; expected_head_sha256: string; emitted_at: string; } export interface WatchdogLeaseExpiredPayload extends Record { ticket_id: string; ticket_version: number; ticket_attempt: number; ticket_actor: string; lease_token: string; lease_expires_at: string; observed_at: string; } export interface WatchdogSessionStalledPayload extends Record { session_id: string; session_version: number; heartbeat_deadline_at: string; observed_at: string; } export interface WatchdogOutboxStalledPayload extends Record { event_id: string; consumer_id: string; occurred_at: string; observed_at: string; age_ms: number; } export interface SlackNotificationRequestedPayload extends Record { subject_kind: "run" | "ticket" | "session" | "report"; subject_id: string; source_version: number; template_id: string; severity: "info" | "warning" | "error"; artifact_ref: string; channel_ref: string; } export interface EventPayloadMap { "native-hook-observed": NativeHookObservedPayload; "provider-observed": ProviderObservation; "github-observed": GithubObservedPayload; "structured-role-completed": StructuredRoleCompletedPayload; "dispatch-delivery-requested": DispatchDeliveryRequestedPayload; "ticket-resume-due": TicketResumeDuePayload; "run-heartbeat-due": RunHeartbeatDuePayload; "watchdog-lease-expired": WatchdogLeaseExpiredPayload; "watchdog-session-stalled": WatchdogSessionStalledPayload; "watchdog-outbox-stalled": WatchdogOutboxStalledPayload; "slack-notification-requested": SlackNotificationRequestedPayload; }