Coding-agent nodes for workgraph
import {
"totto2727/workgraph-agent-cli"
}pub(open) trait CodingAgentSession {
fn id(Self) -> SessionId?
async fn execute(Self, CodingAgentRequest) -> CodingAgentResponse
async fn close(Self) -> Unit
}pub struct CodingAgent {
id : CodingAgentId
open : async (CodingAgentOpenContext) -> &CodingAgentSession
}fn CodingAgent::CodingAgent(id : CodingAgentId, open : async (CodingAgentOpenContext) -> &CodingAgentSession) -> CodingAgentpub struct CodingAgentNodeSpec[S, P] {
agent : CodingAgent
resource_key : ResourceKey
resource_scope : ResourceScope
open_context : (NodeContext, S) -> CodingAgentOpenContext raise
build_request : (NodeContext, S) -> CodingAgentRequest raise
decode_response : (S, CodingAgentResponse) -> NodeOutput[P] raise
}fn[S, P] CodingAgentNodeSpec::CodingAgentNodeSpec(agent~ : CodingAgent, resource_key~ : ResourceKey, resource_scope~ : ResourceScope, open_context~ : (NodeContext, S) -> CodingAgentOpenContext raise, build_request~ : (NodeContext, S) -> CodingAgentRequest raise, decode_response~ : (S, CodingAgentResponse) -> NodeOutput[P] raise) -> CodingAgentNodeSpec[S, P]pub struct CodingAgentOpenContext {
run_id : RunId
task_group : TaskGroup[Unit]
workspace : WorkspaceRef
approval : ApprovalPolicy
network : NetworkPolicy
environment : HashMap[String, String]
events : EventSink
}fn CodingAgentOpenContext::CodingAgentOpenContext(run_id~ : RunId, task_group~ : TaskGroup[Unit], workspace~ : WorkspaceRef, approval~ : ApprovalPolicy, network~ : NetworkPolicy, environment~ : HashMap[String, String], events~ : EventSink) -> CodingAgentOpenContextfn CodingAgentRequest::CodingAgentRequest(instruction : String, context_files : ReadOnlyArray[Path]) -> CodingAgentRequestpub struct CodingAgentResponse {
status : CodingAgentStatus
summary : String?
continuation_id : String?
changed_files : ReadOnlyArray[Path]
} derive(Debug)fn CodingAgentResponse::CodingAgentResponse(status~ : CodingAgentStatus, summary~ : String?, continuation_id~ : String?, changed_files~ : ReadOnlyArray[Path]) -> CodingAgentResponsefn WorkspaceRef::WorkspaceRef(root : Path, additional_writable_roots : ReadOnlyArray[Path]) -> WorkspaceReffn[S, P] coding_agent_node(id : NodeId, metadata : NodeMetadata, spec : CodingAgentNodeSpec[S, P]) -> Node[S, P]