import type { AgentBinding } from "../../config/types.js"; import type { ConversationRef, SessionBindingRecord } from "../../infra/outbound/session-binding-service.js"; import type { ChannelConfiguredBindingConversationRef } from "./types.adapters.js"; import type { ChannelConfiguredBindingMatch, ChannelConfiguredBindingProvider } from "./types.adapters.js"; import type { ChannelId } from "./types.public.js"; export type ConfiguredBindingConversation = ConversationRef; export type ConfiguredBindingChannel = ChannelId; export type ConfiguredBindingRuleConfig = AgentBinding; export type StatefulBindingTargetDescriptor = { kind: "stateful"; driverId: string; sessionKey: string; agentId: string; label?: string; }; export type ConfiguredBindingRecordResolution = { record: SessionBindingRecord; statefulTarget: StatefulBindingTargetDescriptor; }; export type ConfiguredBindingTargetFactory = { driverId: string; materialize: (params: { accountId: string; conversation: ChannelConfiguredBindingConversationRef; }) => ConfiguredBindingRecordResolution; }; export type CompiledConfiguredBinding = { channel: ConfiguredBindingChannel; accountPattern?: string; binding: ConfiguredBindingRuleConfig; bindingConversationId: string; target: ChannelConfiguredBindingConversationRef; agentId: string; provider: ChannelConfiguredBindingProvider; targetFactory: ConfiguredBindingTargetFactory; }; export type ConfiguredBindingResolution = ConfiguredBindingRecordResolution & { conversation: ConfiguredBindingConversation; compiledBinding: CompiledConfiguredBinding; match: ChannelConfiguredBindingMatch; };