external atom AgentDirectoryObject id "atom:org.quixos.agent:directory"; external atom AgentObject id "atom:org.quixos.agent:agent"; external atom AgentThreadObject id "atom:org.quixos.agent:thread"; external atom AgentRequestObject id "atom:org.quixos.agent:request"; external atom AgentItemObject id "atom:org.quixos.agent:item"; external atom AgentQuestionObject id "atom:org.quixos.agent:question"; external atom AgentCompletionStreamObject id "atom:org.quixos.agent:completion-stream"; import interface AgentContextSubject; type AgentSubmission = record {text:string;data:optional;profile:optional;response:optional;sourceKind:string;sourceLabel:string;publication:optional;createdAt:string;contexts:list>;related:optional>;retryOf:optional>;root:optional>;causalDepth:uint32;}; type AgentAdmission = record {accepted:bool;reason:optional;thread:optional>;request:optional>;}; type DirectoryData = record {sequence:uint64;pending:uint32;ordinaryPending:uint32;notificationPending:uint32;profiles:string;availability:string;}; interface AgentDirectory id "interface:org.quixos.agent:directory" revision "interface:org.quixos.agent:directory@1" { queryable value data id "agent:directory:data" : DirectoryData {get id "agent:directory:data:get" execution snapshot;} queryable relation agents id "agent:directory:agents" : many-unique atom AgentObject {resolve id "agent:directory:agents:resolve" execution snapshot;} queryable relation threads id "agent:directory:threads" : many-unique atom AgentThreadObject {resolve id "agent:directory:threads:resolve" execution snapshot;} queryable relation pending id "agent:directory:pending" : many-unique atom AgentRequestObject {resolve id "agent:directory:pending:resolve" execution snapshot;} queryable relation notifications id "agent:directory:notifications" : many-unique atom AgentRequestObject {resolve id "agent:directory:notifications:resolve" execution snapshot;} queryable relation defaultAgent id "agent:directory:default-agent" : optional-one atom AgentObject {resolve id "agent:directory:default-agent:resolve" execution snapshot;} queryable relation initialThread id "agent:directory:initial-thread" : optional-one atom AgentThreadObject {resolve id "agent:directory:initial-thread:resolve" execution snapshot;} operation createAgent id "agent:directory:create-agent" : record {name:string;description:string;instructions:string;settings:string;} -> atom-ref {call id "agent:directory:create-agent:call" execution transaction;} operation createThread id "agent:directory:create-thread" : record {agent:atom-ref;title:string;kind:string;createdAt:string;contexts:list>;} -> atom-ref {call id "agent:directory:create-thread:call" execution transaction;} operation admit id "agent:directory:admit" : record {agent:atom-ref;thread:optional>;submission:AgentSubmission;optionalWork:bool;} -> AgentAdmission {call id "agent:directory:admit:call" execution transaction;} operation reconcileRepair id "agent:directory:reconcile-repair" : record {key:string;text:string;configuration:string;createdAt:string;confirmedAt:string;publication:string;attempt:string;generation:uint32;startedAt:string;} -> atom-ref {call id "agent:directory:reconcile-repair:call" execution transaction;} operation settle id "agent:directory:settle" : record {request:atom-ref;thread:atom-ref;interactive:bool;notify:bool;} -> unit {call id "agent:directory:settle:call" execution transaction;} operation advertise id "agent:directory:advertise" : record {profiles:string;availability:string;} -> unit {call id "agent:directory:advertise:call" execution transaction;} operation initialize id "agent:directory:initialize" : record {instructions:string;settings:string;} -> unit {call id "agent:directory:initialize:call" execution transaction;} operation notificationSent id "agent:directory:notification-sent" : atom-ref -> unit {call id "agent:directory:notification-sent:call" execution transaction;} }