a5c Unified Core (current) โ unified agent loop
agent-core-impl:a5c.core@current
AgentCoreImplagent-stack/core-impls/a5c-core-current.yamlยทOpen in Graph โ {
"id": "agent-core-impl:a5c.core@current",
"_kind": "AgentCoreImpl",
"_file": "agent-stack/core-impls/a5c-core-current.yaml",
"_cluster": "agent-stack",
"attributes": {
"displayName": "a5c Unified Core (current) โ unified agent loop",
"agentVersionId": "agent-version:a5c@current",
"packageRef": "source-ref:a5c-cli",
"loopIteratorPolicy": "custom",
"loopIteratorNotes": "a5c's core is modeled as a native compatibility layer for agent loops, not\nas a wrapper built on top of Pi or any single backend. It can present the\nPi-compatible serialized tool-use loop while also normalizing Claude Code,\nCodex, Gemini, OpenCode, LangGraph/custom graph, and agent-mux style loop\nsemantics behind the same AgentCoreImpl contract.\n",
"contextManagementStrategy": "platform-managed",
"compactionTriggerNotes": "a5c owns the compatibility contract for context and compaction metadata at\nthe platform boundary. Individual backends may use provider-managed,\nrolling-summary, server-managed, or user-managed context; a5c maps those\npostures into one platform-managed profile so legacy Pi-style definitions\nand newer graph/custom-agent definitions remain comparable.\n",
"subagentInvokerPolicy": "platform-mediated",
"subagentInvokerNotes": "Subagent dispatch is mediated by the a5c platform contract. Pi-style\ntool-call handoff, Claude-style subagents, LangGraph subgraphs/supervisors,\nand skill-as-tool execution all normalize to platform-mediated child work\nwithout making a5c depend on any one mechanism.\n",
"resultSynthesisPolicy": "post-processed",
"resultSynthesisNotes": "a5c synthesizes a normalized result envelope from backend-native terminal\nmessages, graph terminal state, streamed text, tool results, and generated\nartifacts. Pi's model-direct final text is a supported profile, not the\nbase implementation.\n",
"stopDetectionStrategy": "structured-end-event",
"transportClientLibrary": "a5c-unified-transport",
"supportedTransportProtocols": [
"model-transport:anthropic-messages",
"model-transport:openai-responses",
"model-transport:openai-chat-completions",
"model-transport:gemini-generate-content",
"model-transport:openai-compat",
"model-transport:openrouter",
"model-transport:github-copilot"
],
"parallelToolCallHandling": "native",
"streamingFidelity": "full",
"thinkingChannelHandling": "model-dependent",
"streamingBlocks": [
"text",
"thinking",
"tool_use"
],
"effortLevelDelegation": "passthrough-to-harness",
"notes": "This node is intentionally the Layer-4 unified contract for a5c. It is\ncapability-compatible with the legacy Pi wrapper's core definition\n(Anthropic/OpenAI transports, tool-use loop, structured end events,\nsequential tool handling) while also covering same-layer alternatives that\nexpose parallel tool calls, graph-defined loops, server-managed loops, or\nprovider-specific thinking channels. Pi is a compatibility target, not an implementation base. Compatibility is modeled as a native a5c contract; there is no depends_on edge to Pi.\n"
},
"outgoingEdges": [
{
"from": "agent-core-impl:a5c.core@current",
"to": "layer:4-agent-core",
"kind": "realizes",
"attributes": {}
},
{
"from": "agent-core-impl:a5c.core@current",
"to": "agent:a5c",
"kind": "composes",
"attributes": {
"role": "core"
}
},
{
"from": "agent-core-impl:a5c.core@current",
"to": "model-transport:anthropic-messages",
"kind": "speaks",
"attributes": {}
},
{
"from": "agent-core-impl:a5c.core@current",
"to": "model-transport:openai-responses",
"kind": "speaks",
"attributes": {}
},
{
"from": "agent-core-impl:a5c.core@current",
"to": "model-transport:openai-chat-completions",
"kind": "speaks",
"attributes": {}
},
{
"from": "agent-core-impl:a5c.core@current",
"to": "model-transport:gemini-generate-content",
"kind": "speaks",
"attributes": {}
},
{
"from": "agent-core-impl:a5c.core@current",
"to": "model-transport:openai-compat",
"kind": "speaks",
"attributes": {}
},
{
"from": "agent-core-impl:a5c.core@current",
"to": "model-transport:openrouter",
"kind": "speaks",
"attributes": {}
},
{
"from": "agent-core-impl:a5c.core@current",
"to": "model-transport:github-copilot",
"kind": "speaks",
"attributes": {}
},
{
"from": "agent-core-impl:a5c.core@current",
"to": "capability:supports-tool-use",
"kind": "supports",
"attributes": {
"versionRange": "*",
"level": "full",
"notes": "Covers Pi-compatible serialized tool calls and richer same-layer tool\ndispatch profiles through the unified a5c core contract.\n"
}
},
{
"from": "agent-core-impl:a5c.core@current",
"to": "capability:parallel-tool-calls",
"kind": "supports",
"attributes": {
"versionRange": "*",
"level": "full",
"notes": "a5c can expose native parallel handling where the selected backend or\ngraph profile supports it, while preserving Pi-compatible sequential\ndispatch as a constrained compatibility mode.\n"
}
},
{
"from": "agent-core-impl:a5c.core@current",
"to": "capability:streaming",
"kind": "supports",
"attributes": {
"versionRange": "*",
"level": "full",
"notes": "Normalizes streamed text, tool-call deltas, graph events, and terminal\nresult envelopes across supported same-layer core alternatives.\n"
}
},
{
"from": "agent-core-impl:a5c.core@current",
"to": "capability:can-multi-turn",
"kind": "supports",
"attributes": {
"versionRange": "*",
"level": "full",
"notes": "Multi-turn is the substrate's default; a5c maintains the journal across\nrun iterations and resumes via AGENT_SESSION_ID.\n"
}
},
{
"from": "agent-core-impl:a5c.core@current",
"to": "capability:supports-thinking",
"kind": "supports",
"attributes": {
"versionRange": "*",
"level": "full",
"notes": "Thinking blocks pass through the a5c-unified-transport unchanged when\nthe bridged backend emits them (thinkingChannelHandling=model-dependent).\n"
}
},
{
"from": "agent-core-impl:a5c.core@current",
"to": "source-ref:a5c-cli",
"kind": "depends_on",
"attributes": {}
},
{
"from": "agent-core-impl:a5c.core@current",
"to": "hook-surface:phase-change",
"kind": "fires_hook",
"attributes": {}
},
{
"from": "agent-core-impl:a5c.core@current",
"to": "hook-surface:phase-change-check",
"kind": "fires_hook",
"attributes": {}
},
{
"from": "agent-core-impl:a5c.core@current",
"to": "hook-surface:wake",
"kind": "fires_hook",
"attributes": {}
},
{
"from": "agent-core-impl:a5c.core@current",
"to": "hook-surface:decision-point",
"kind": "fires_hook",
"attributes": {}
},
{
"from": "agent-core-impl:a5c.core@current",
"to": "hook-surface:start",
"kind": "fires_hook",
"attributes": {}
},
{
"from": "agent-core-impl:a5c.core@current",
"to": "hook-surface:done",
"kind": "fires_hook",
"attributes": {}
},
{
"from": "agent-core-impl:a5c.core@current",
"to": "hook-surface:session-start",
"kind": "fires_hook",
"attributes": {}
},
{
"from": "agent-core-impl:a5c.core@current",
"to": "hook-surface:session-end",
"kind": "fires_hook",
"attributes": {}
},
{
"from": "agent-core-impl:a5c.core@current",
"to": "hook-surface:stop",
"kind": "fires_hook",
"attributes": {}
},
{
"from": "agent-core-impl:a5c.core@current",
"to": "hook-surface:pre-tool-use",
"kind": "fires_hook",
"attributes": {}
},
{
"from": "agent-core-impl:a5c.core@current",
"to": "hook-surface:post-tool-use",
"kind": "fires_hook",
"attributes": {}
}
],
"incomingEdges": [
{
"from": "agent-version:a5c@current",
"to": "agent-core-impl:a5c.core@current",
"kind": "composed_of",
"attributes": {
"role": "core"
}
},
{
"from": "claim:a5c-research-unified-transport-profile",
"to": "agent-core-impl:a5c.core@current",
"kind": "about_subject"
}
]
}