124 lines
19 KiB
Plaintext
124 lines
19 KiB
Plaintext
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";
|
|
external atom PresentationMountRecord id "atom:org.quixos.presentation-mount";
|
|
import interface PresentationMount;
|
|
import interface AgentWorkspace;
|
|
import interface AgentDirectory;
|
|
import interface Agent;
|
|
import interface AgentThread;
|
|
import interface AgentRequest;
|
|
import interface AgentItem;
|
|
import interface AgentQuestion;
|
|
import interface AgentContextSubject;
|
|
import interface WebStudioPresentable;
|
|
import interface EventStream;
|
|
type AgentSubmission = record {text:string;data:optional<string>;profile:optional<string>;response:optional<string>;sourceKind:string;sourceLabel:string;publication:optional<string>;createdAt:string;contexts:list<interface-ref<AgentContextSubject>>;related:optional<atom-ref<AgentRequestObject>>;retryOf:optional<atom-ref<AgentRequestObject>>;root:optional<atom-ref<AgentRequestObject>>;causalDepth:uint32;};
|
|
type AgentAdmission = record {accepted:bool;reason:optional<string>;thread:optional<atom-ref<AgentThreadObject>>;request:optional<atom-ref<AgentRequestObject>>;};
|
|
type DirectoryData = record {sequence:uint64;pending:uint32;ordinaryPending:uint32;notificationPending:uint32;profiles:string;availability:string;};
|
|
type ThreadData = record {title:string;kind:string;archived:bool;sequence:uint64;pending:uint32;nextItem:uint64;updatedAt:string;};
|
|
type AgentData = record {name:string;description:string;enabled:bool;settings:string;};
|
|
type RequestData = record {text:string;data:optional<string>;configuration:string;configurationDigest:string;responseKind:string;sequence:uint64;createdAt:string;sourceKind:string;sourceLabel:string;publication:optional<string>;causalDepth:uint32;interactive:bool;};
|
|
type RequestState = record {status:string;attempt:string;generation:uint32;reason:string;result:optional<string>;rawOutput:optional<string>;usage:optional<string>;startedAt:optional<string>;endedAt:optional<string>;cancelRequested:bool;retryCount:uint32;notificationPending:bool;};
|
|
type ItemData = record {key:string;kind:string;text:string;phase:string;activity:optional<string>;presentation:optional<string>;sequence:uint64;version:uint64;createdAt:string;updatedAt:string;control:optional<record {attempt:string;generation:uint32;status:string;reason:string;}>;};
|
|
type QuestionData = record {key:string;title:string;options:string;status:string;answer:optional<string>;createdAt:string;expiresAt:string;attempt:string;generation:uint32;};
|
|
type AgentCompletion = record {request:atom-ref<AgentRequestObject>;thread:atom-ref<AgentThreadObject>;status:string;};
|
|
package AgentRuntime id "package:org.quixos.agent:runtime" revision "package:org.quixos.agent:runtime@1" {
|
|
operation workspace_install id "agent:runtime:workspace_install" : record {instructions:string;settings:string;} -> atom-ref<AgentDirectoryObject> mode call execution transaction targets [server] receiver any requires {edge agents id "agents" : optional-one atom AgentDirectoryObject [resolve,connect,disconnect];
|
|
creation create_directory id "create_directory" : AgentDirectoryObject input record {data:DirectoryData;};
|
|
interface directory id "directory" : AgentDirectory using [initialize.call] from input;};
|
|
operation directory_createAgent id "agent:runtime:directory_createAgent" : record {name:string;description:string;instructions:string;settings:string;} -> atom-ref<AgentObject> mode call execution transaction targets [server] receiver any requires {creation create_agent id "create_agent" : AgentObject input record {data:AgentData;instructions:string;directory:atom-ref<AgentDirectoryObject>;completions:interface-ref<EventStream<AgentCompletion>>;};
|
|
creation create_stream id "create_stream" : AgentCompletionStreamObject input unit;};
|
|
operation directory_createThread id "agent:runtime:directory_createThread" : record {agent:atom-ref<AgentObject>;title:string;kind:string;createdAt:string;contexts:list<interface-ref<AgentContextSubject>>;} -> atom-ref<AgentThreadObject> mode call execution transaction targets [server] receiver any requires {state data id "data" : DirectoryData [read,write];
|
|
creation create_thread id "create_thread" : AgentThreadObject input record {contexts:list<record {key:string;target:interface-ref<AgentContextSubject>;}>;data:ThreadData;directory:atom-ref<AgentDirectoryObject>;agent:atom-ref<AgentObject>;};
|
|
interface agent id "agent" : Agent using [directory.resolve] from input;};
|
|
operation directory_admit id "agent:runtime:directory_admit" : record {agent:atom-ref<AgentObject>;thread:optional<atom-ref<AgentThreadObject>>;submission:AgentSubmission;optionalWork:bool;} -> AgentAdmission mode call execution transaction targets [server] receiver any requires {state data id "data" : DirectoryData [read,write];
|
|
edge pending id "pending" : many-unique atom AgentRequestObject [resolve,connect,disconnect];
|
|
creation create_request id "create_request" : AgentRequestObject input record {spawned:uint32;contexts:list<record {key:string;target:interface-ref<AgentContextSubject>;}>;admission:RequestData;progress:RequestState;directory:atom-ref<AgentDirectoryObject>;thread:atom-ref<AgentThreadObject>;related:optional<atom-ref<AgentRequestObject>>;retryOf:optional<atom-ref<AgentRequestObject>>;root:optional<atom-ref<AgentRequestObject>>;};
|
|
creation create_item id "create_item" : AgentItemObject input record {data:ItemData;thread:atom-ref<AgentThreadObject>;request:atom-ref<AgentRequestObject>;subject:optional<interface-ref<WebStudioPresentable>>;presentationMount:optional<interface-ref<PresentationMount>>;};
|
|
interface agent id "agent" : Agent using [data.get,instructions.get,directory.resolve] from input;
|
|
interface thread id "thread" : AgentThread using [data.get,agent.resolve,adjustPending.call,allocateItem.call,contexts.resolve] from input;
|
|
interface root id "root" : AgentRequest using [reserveChild.call] from input;
|
|
interface directory id "directory" : AgentDirectory using [createThread.call] from input;};
|
|
operation directory_reconcileRepair id "agent:runtime:directory_reconcileRepair" : record {key:string;text:string;configuration:string;createdAt:string;confirmedAt:string;publication:string;attempt:string;generation:uint32;startedAt:string;} -> atom-ref<AgentRequestObject> mode call execution transaction targets [server] receiver any requires {
|
|
state data id "data" : DirectoryData [read,write];
|
|
edge repairs id "repairs" : many-unique atom AgentRequestObject keyed "string" [resolve,connect];
|
|
edge pending id "pending" : many-unique atom AgentRequestObject [connect];
|
|
edge defaultAgent id "defaultAgent" : optional-one atom AgentObject [resolve];
|
|
edge initialThread id "initialThread" : optional-one atom AgentThreadObject [resolve];
|
|
creation create_request id "create_request" : AgentRequestObject input record {spawned:uint32;contexts:list<record {key:string;target:interface-ref<AgentContextSubject>;}>;admission:RequestData;progress:RequestState;directory:atom-ref<AgentDirectoryObject>;thread:atom-ref<AgentThreadObject>;related:optional<atom-ref<AgentRequestObject>>;retryOf:optional<atom-ref<AgentRequestObject>>;root:optional<atom-ref<AgentRequestObject>>;};
|
|
creation create_item id "create_item" : AgentItemObject input record {data:ItemData;thread:atom-ref<AgentThreadObject>;request:atom-ref<AgentRequestObject>;subject:optional<interface-ref<WebStudioPresentable>>;presentationMount:optional<interface-ref<PresentationMount>>;};
|
|
interface request id "request" : AgentRequest using [admission.get] from input;
|
|
interface thread id "thread" : AgentThread using [data.get,adjustPending.call,allocateItem.call,activate.call] from input;
|
|
};
|
|
operation directory_settle id "agent:runtime:directory_settle" : record {request:atom-ref<AgentRequestObject>;thread:atom-ref<AgentThreadObject>;interactive:bool;notify:bool;} -> unit mode call execution transaction targets [server] receiver any requires {state data id "data" : DirectoryData [read,write];
|
|
edge pending id "pending" : many-unique atom AgentRequestObject [resolve,connect,disconnect];
|
|
edge notifications id "notifications" : many-unique atom AgentRequestObject [resolve,connect,disconnect];
|
|
interface thread id "thread" : AgentThread using [adjustPending.call,release.call] from input;};
|
|
operation directory_advertise id "agent:runtime:directory_advertise" : record {profiles:string;availability:string;} -> unit mode call execution transaction targets [server] receiver any requires {state data id "data" : DirectoryData [read,write];};
|
|
operation directory_initialize id "agent:runtime:directory_initialize" : record {instructions:string;settings:string;} -> unit mode call execution transaction targets [server] receiver any requires {edge defaultAgent id "defaultAgent" : optional-one atom AgentObject [resolve,connect,disconnect];
|
|
edge initialThread id "initialThread" : optional-one atom AgentThreadObject [resolve,connect,disconnect];
|
|
interface directory id "directory" : AgentDirectory using [createAgent.call,createThread.call] from input;};
|
|
operation directory_notificationSent id "agent:runtime:directory_notificationSent" : atom-ref<AgentRequestObject> -> unit mode call execution transaction targets [server] receiver any requires {state data id "data" : DirectoryData [read,write];edge notifications id "notifications" : many-unique atom AgentRequestObject [resolve,connect,disconnect];};
|
|
operation agent_update id "agent:runtime:agent_update" : record {name:optional<string>;description:optional<string>;enabled:optional<bool>;settings:optional<string>;} -> unit mode call execution transaction targets [server] receiver any requires {state data id "data" : AgentData [read,write];};
|
|
operation agent_createThread id "agent:runtime:agent_createThread" : record {title:string;kind:string;createdAt:string;contexts:list<interface-ref<AgentContextSubject>>;} -> atom-ref<AgentThreadObject> mode call execution transaction targets [server] receiver any requires {interface agent id "agent" : Agent using [directory.resolve] from input;
|
|
interface directory id "directory" : AgentDirectory using [createThread.call] from input;};
|
|
operation agent_request id "agent:runtime:agent_request" : AgentSubmission -> AgentAdmission mode call execution transaction targets [server] receiver any requires {interface agent id "agent" : Agent using [directory.resolve] from input;
|
|
interface directory id "directory" : AgentDirectory using [admit.call] from input;};
|
|
operation agent_tryRequest id "agent:runtime:agent_tryRequest" : AgentSubmission -> AgentAdmission mode call execution transaction targets [server] receiver any requires {interface agent id "agent" : Agent using [directory.resolve] from input;
|
|
interface directory id "directory" : AgentDirectory using [admit.call] from input;};
|
|
operation thread_send id "agent:runtime:thread_send" : AgentSubmission -> atom-ref<AgentRequestObject> mode call execution transaction targets [server] receiver any requires {interface thread id "thread" : AgentThread using [agent.resolve,directory.resolve] from input;
|
|
interface directory id "directory" : AgentDirectory using [admit.call] from input;};
|
|
operation thread_rename id "agent:runtime:thread_rename" : string -> unit mode call execution transaction targets [server] receiver any requires {state data id "data" : ThreadData [read,write];};
|
|
operation thread_archive id "agent:runtime:thread_archive" : bool -> unit mode call execution transaction targets [server] receiver any requires {state data id "data" : ThreadData [read,write];};
|
|
operation thread_activate id "agent:runtime:thread_activate" : atom-ref<AgentRequestObject> -> bool mode call execution transaction targets [server] receiver any requires {edge active id "active" : optional-one atom AgentRequestObject [resolve,connect,disconnect];};
|
|
operation thread_release id "agent:runtime:thread_release" : atom-ref<AgentRequestObject> -> unit mode call execution transaction targets [server] receiver any requires {edge active id "active" : optional-one atom AgentRequestObject [resolve,connect,disconnect];};
|
|
operation thread_adjustPending id "agent:runtime:thread_adjustPending" : record {delta:int32;updatedAt:string;} -> uint64 mode call execution transaction targets [server] receiver any requires {state data id "data" : ThreadData [read,write];};
|
|
operation thread_allocateItem id "agent:runtime:thread_allocateItem" : string -> uint64 mode call execution transaction targets [server] receiver any requires {state data id "data" : ThreadData [read,write];};
|
|
operation request_reserveChild id "agent:runtime:request_reserveChild" : unit -> bool mode call execution transaction targets [server] receiver any requires {state spawned id "spawned" : uint32 [read,write];};
|
|
operation request_correct id "agent:runtime:request_correct" : record {errors:list<string>;maxCorrections:uint32;createdAt:string;} -> optional<atom-ref<AgentRequestObject>> mode call execution transaction targets [server] receiver any requires {
|
|
edge correction id "correction" : optional-one atom AgentRequestObject [resolve,connect];
|
|
interface request id "request" : AgentRequest using [progress.get,admission.get,thread.resolve,retryOf.resolve,root.resolve,contexts.resolve] from input;
|
|
interface thread id "thread" : AgentThread using [send.call] from input;
|
|
};
|
|
operation request_claim id "agent:runtime:request_claim" : record {attempt:string;expectedGeneration:uint32;startedAt:string;recover:bool;} -> record {claimed:bool;generation:uint32;} mode call execution transaction targets [server] receiver any requires {state progress id "progress" : RequestState [read,write];
|
|
interface request id "request" : AgentRequest using [thread.resolve] from input;
|
|
interface thread id "thread" : AgentThread using [activate.call] from input;};
|
|
operation request_transition id "agent:runtime:request_transition" : record {attempt:string;generation:uint32;status:string;reason:string;} -> bool mode call execution transaction targets [server] receiver any requires {state progress id "progress" : RequestState [read,write];};
|
|
operation request_finish id "agent:runtime:request_finish" : record {attempt:string;generation:uint32;status:string;result:optional<string>;rawOutput:optional<string>;usage:optional<string>;reason:string;endedAt:string;} -> bool mode call execution transaction targets [server] receiver any requires {state progress id "progress" : RequestState [read,write];
|
|
state admission id "admission" : RequestData [read,write];
|
|
interface request id "request" : AgentRequest using [thread.resolve,directory.resolve] from input;
|
|
interface directory id "directory" : AgentDirectory using [settle.call] from input;
|
|
interface thread id "thread" : AgentThread using [agent.resolve] from input;
|
|
interface agent id "agent" : Agent using [data.get] from input;};
|
|
operation request_cancel id "agent:runtime:request_cancel" : unit -> bool mode call execution transaction targets [server] receiver any requires {state progress id "progress" : RequestState [read,write];
|
|
interface request id "request" : AgentRequest using [finish.call] from input;};
|
|
operation request_steer id "agent:runtime:request_steer" : record {attempt:string;generation:uint32;key:string;text:string;profile:optional<string>;createdAt:string;} -> atom-ref<AgentItemObject> mode call execution transaction targets [server] receiver any requires {state progress id "progress" : RequestState [read,write];
|
|
interface request id "request" : AgentRequest using [upsertItem.call,directory.resolve] from input;interface directory id "directory" : AgentDirectory using [data.get] from input;};
|
|
operation request_upsertItem id "agent:runtime:request_upsertItem" : record {attempt:string;generation:uint32;data:ItemData;subject:optional<interface-ref<WebStudioPresentable>>;} -> atom-ref<AgentItemObject> mode call execution transaction targets [server] receiver any requires {state progress id "progress" : RequestState [read,write];
|
|
interface request id "request" : AgentRequest using [thread.resolve,items.resolve] from input;
|
|
interface thread id "thread" : AgentThread using [allocateItem.call] from input;
|
|
interface item id "item" : AgentItem using [data.get,checkpoint.call,subject.resolve] from input;interface presentable id "presentable" : WebStudioPresentable using [canPresent.call] from input;
|
|
creation create_mount id "create_mount" : PresentationMountRecord input unit;
|
|
creation create_item id "create_item" : AgentItemObject input record {data:ItemData;thread:atom-ref<AgentThreadObject>;request:atom-ref<AgentRequestObject>;subject:optional<interface-ref<WebStudioPresentable>>;presentationMount:optional<interface-ref<PresentationMount>>;};};
|
|
operation request_ask id "agent:runtime:request_ask" : record {attempt:string;generation:uint32;key:string;title:string;options:string;createdAt:string;expiresAt:string;} -> atom-ref<AgentQuestionObject> mode call execution transaction targets [server] receiver any requires {state progress id "progress" : RequestState [read,write];
|
|
interface request id "request" : AgentRequest using [questions.resolve] from input;
|
|
interface question id "question" : AgentQuestion using [data.get] from input;
|
|
creation create_question id "create_question" : AgentQuestionObject input record {data:QuestionData;request:atom-ref<AgentRequestObject>;};};
|
|
operation request_publishCompletion id "agent:runtime:request_publishCompletion" : unit -> bool mode call execution transaction targets [server] receiver any requires {state progress id "progress" : RequestState [read,write];
|
|
interface request id "request" : AgentRequest using [thread.resolve,directory.resolve] from input;
|
|
interface thread id "thread" : AgentThread using [agent.resolve] from input;
|
|
interface agent id "agent" : Agent using [completions.resolve] from input;
|
|
interface stream id "stream" : EventStream<AgentCompletion> using [publish.call] from input;
|
|
interface directory id "directory" : AgentDirectory using [notificationSent.call] from input;};
|
|
operation item_checkpoint id "agent:runtime:item_checkpoint" : record {attempt:string;generation:uint32;data:ItemData;} -> unit mode call execution transaction targets [server] receiver any requires {state data id "data" : ItemData [read,write];interface item id "item" : AgentItem using [request.resolve] from input;interface request id "request" : AgentRequest using [progress.get] from input;};
|
|
operation question_answer id "agent:runtime:question_answer" : record {answer:string;attempt:string;generation:uint32;answeredAt:string;} -> bool mode call execution transaction targets [server] receiver any requires {state data id "data" : QuestionData [read,write];
|
|
interface question id "question" : AgentQuestion using [request.resolve] from input;
|
|
interface request id "request" : AgentRequest using [progress.get] from input;};
|
|
operation question_cancel id "agent:runtime:question_cancel" : unit -> unit mode call execution transaction targets [server] receiver any requires {state data id "data" : QuestionData [read,write];};
|
|
}
|