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 EventStream; 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 AgentData = record {name:string;description:string;enabled:bool;settings:string;}; type AgentCompletion = record {request:atom-ref;thread:atom-ref;status:string;}; interface Agent id "interface:org.quixos.agent:agent" revision "interface:org.quixos.agent:agent@1" { queryable value data id "agent:data" : AgentData {get id "agent:data:get" execution snapshot;} queryable value instructions id "agent:instructions" : string {get id "agent:instructions:get" execution snapshot;edit id "agent:instructions:edit" execution transaction;} queryable relation directory id "agent:directory" : exactly-one atom AgentDirectoryObject {resolve id "agent:directory:resolve" execution snapshot;} queryable relation threads id "agent:threads" : many-unique atom AgentThreadObject {resolve id "agent:threads:resolve" execution snapshot;} queryable relation completions id "agent:completions" : exactly-one interface EventStream {resolve id "agent:completions:resolve" execution snapshot;} operation update id "agent:update" : record {name:optional;description:optional;enabled:optional;settings:optional;} -> unit {call id "agent:update:call" execution transaction;} operation createThread id "agent:create-thread" : record {title:string;kind:string;createdAt:string;contexts:list>;} -> atom-ref {call id "agent:create-thread:call" execution transaction;} operation request id "agent:request" : AgentSubmission -> AgentAdmission {call id "agent:request:call" execution transaction;} operation tryRequest id "agent:try-request" : AgentSubmission -> AgentAdmission {call id "agent:try-request:call" execution transaction;} }