import type { AutomationRouteBinding } from '../automation/routes.js'; import type { SharedSessionInputIntent, SharedSessionInputRecord, SharedSessionSurfaceReplyBinding } from './session-intents.js'; import type { CreateSharedSessionInput, ParticipantRouteAttachInput, SharedSessionMessage, SharedSessionRecord, SharedSessionSubmission, SubmitSharedSessionMessageInput } from './session-types.js'; import type { SharedSessionMessageSender } from './session-broker-helpers.js'; import type { AppendSharedSessionMessageInput } from './session-broker-messages.js'; import { type SharedSessionInputStore } from './session-broker-inputs.js'; import type { ConversationGateConfigReader } from '../agents/conversation-gate.js'; export interface HandleSharedSessionIntentDeps { readonly sessions: Map; readonly messageSender: SharedSessionMessageSender; start(): Promise; resolveBinding(input: SubmitSharedSessionMessageInput): Promise; createSession(input?: CreateSharedSessionInput): Promise; attachParticipantAndRoute(session: SharedSessionRecord, input: ParticipantRouteAttachInput, binding?: AutomationRouteBinding): Promise; appendMessage(sessionId: string, input: Omit): Promise; sessionInputStore(): SharedSessionInputStore; publishInputLifecycleEvent(event: string, input: SharedSessionInputRecord, extra?: Record): void; resolveActiveAgentId(session: SharedSessionRecord): string | undefined; persist(): Promise; publishUpdate(event: string, payload: unknown): void; announceSurfaceReply(binding: SharedSessionSurfaceReplyBinding): void; /** * Put one unsolicited line on a route's channel. Optional: a host that wired * no delivery path (every broker-level test, an embedder with its own egress) * simply gets no notice, and the rollover is still logged. */ sendSurfaceNotice?: ((routeId: string, text: string) => void) | undefined; buildContinuationTask(sessionId: string): string; /** * Reads `conversationGate.*` for the live-agent handover decision below. * Optional: absent means the defaults in conversation-gate.ts, which gate * every channel surface and exempt local ones, the safe direction, since * the failure mode of gating is an answer instead of a chain. */ readonly conversationGateConfig?: ConversationGateConfigReader | undefined; } export declare function handleSharedSessionIntent(deps: HandleSharedSessionIntentDeps, intent: SharedSessionInputIntent, input: SubmitSharedSessionMessageInput, allowSpawnFallback: boolean): Promise; //# sourceMappingURL=session-broker-intent.d.ts.map