-
Notifications
You must be signed in to change notification settings - Fork 0
Roadmap
skobeltsyn edited this page May 2, 2026
·
2 revisions
Development plan for Agents.KT, organized into four phases through Q4 2026.
The foundation: typed agents, skills, knowledge, all six composition operators, guided generation, and the agentic execution loop.
-
Agent<IN, OUT>with SRP enforcement -
Agent.prompt-- base context string for the LLM - Skills-only execution -- all agents run through
skills { implementedBy { } } -
Skill.description(mandatory) -- sells the skill to the LLM alongside its type signature -
Skill.knowledge("key", "description") { }-- named lazy context providers;loadFile()inside lambdas -
Skill.toLlmDescription()-- auto-generated markdown (name, types, description, knowledge index);llmDescription("...")override -
Skill.toLlmContext()-- full context: description markdown + all knowledge content -
Skill.knowledgeTools()/KnowledgeTool(name, description, call)-- tools model with lazy per-entry loading -
then-- sequential pipeline with composed execution (no runtime casts) -
/-- parallel fan-out with coroutine concurrency -
*-- forum (multi-agent discussion) with concurrent participants, captain, andonMentionEmitteddebate tracking - Single-placement enforcement across all structure types
-
.loop {}-- iterative execution with(OUT) -> IN?feedback block -
.branch {}-- conditional routing on sealed types, composable withthen -
@Generable("desc")/@Guide/@LlmDescription-- runtime reflection:toLlmDescription(),jsonSchema(),promptFragment(),fromLlmOutput<T>(),PartiallyGenerated<T> -
model { }-- Ollama backend;host,port,temperature; injectableModelClientfor tests - Agentic execution loop -- multi-turn tool calling with budget controls (
maxTurns) +onToolUseobservability hook - Skill selection -- predicate-based
skillSelection {}+ automatic LLM routing when multiple skills match - Agent memory --
MemoryBank,memory_read/memory_write/memory_searchauto-injected tools -
>>-- security/education wrap
MCP integration, permissions, compile-time annotation processing, native distribution, and session management.
- MCP client --
mcp { server(name) { url=/command=/host+port= } }agent DSL with HTTP / stdio / TCP transports,McpAuth.Bearer, tool name namespacing (server.tool), in-process mock servers for hermetic tests. (Note: we deliberately did not introduce aTool<IN, OUT>hierarchy with anMcpTool<IN, OUT>subclass — MCP-discovered tools are minted as standardToolDefs, keeping local-tool code untouched.) - MCP server --
McpServer.from(agent) { expose("skill") }.start()exposes agent skills as MCP tools;inputSchemagenerated from@GenerableIN types via reflection - MCP 2025-03-26 conformance --
ping, explicitcapabilities.tools.listChanged,protocolVersionnegotiation,cursor/nextCursor, Content-Type/415, 405 withAllow: POST,Mcp-Session-Id, plain-prose tool descriptions - McpRunner --
McpRunner.serve(agent, args, configure)picocli-style one-linemainfor runnable agent JARs;--port,--expose,-h,-V; JVM shutdown hook + graceful stop -
grants { tools(...) }-- Layer 2 permissions use actualTool<*,*>references - Permission model: 3 states -- Granted (auto-runs), Confirmed (user approval), Absent (unavailable)
- KSP annotation processor -- compile-time
@Generable; constrained decoding (Ollama) + guided JSON mode (Anthropic/OpenAI) - Native CLI binary (GraalVM -- no JRE required);
brew, npm, pip, curl, apt - jlink minimal JRE bundle for runtime (~35MB)
- Session model -- multi-turn
AgentSession, automatic compaction (SUMMARIZE,SLIDING_WINDOW,CUSTOM) - Reactive context hooks --
beforeInference,afterToolCall,onBudgetThreshold -
.spawn {}-- independent sub-agent lifecycle,AgentHandle<OUT>, parent-managed join - Pipeline observability --
observe {}event handler,Flow<PipelineEvent>for streaming UIs - Serialization --
agent.json, A2A AgentCard - JAR bundles and folder-based assembly
- Gradle plugin (auto-wires
application { mainClass }for McpRunner-based agents) - Incoming auth on
McpServer(Bearer / OAuth validation on requests) - OAuth 2.1 client (PKCE flow, token refresh) for
McpClient - Origin header validation +
MCP-Protocol-Versionresponse header (deferred from conformance audit) - Custom tool deserializers -- per-tool / per-server lambdas to map raw MCP
content[]to typed Kotlin values
Full production readiness: advanced structure DSL, testing framework, protocol support, and observability.
- Layer 2: Full Structure DSL with delegates, grants, authority, routing, escalation
- All 37 compile-time validations enforced by Gradle plugin
- AgentUnit testing framework -- unit, semantic (LLM-as-judge), Skill Coverage metrics
- A2A protocol support (server + client)
- File-based knowledge:
skill.md,reference,examples,checklist+ RAG pipeline - Production observability: OpenTelemetry traces
- Team DSL -- swarm coordination (if isolated execution available)
Developer experience, marketplace, and tooling.
- Knowledge packs -- battle-tested prompt libraries for common domains
- Agent generation from natural language (NL -> Kotlin DSL)
- Skillify -- extract reusable skills from session transcripts
- Visual structure editor, UML bidirectional conversion
- Knowledge marketplace
2026
Q1 ████████████████ Phase 1: Core DSL (current)
Q2 ████████████████ Phase 2: Runtime + Distribution
Q3 ████████████████ Phase 3: Production
Q4 ████████████████ Phase 4: Ecosystem
| Capability | Status |
|---|---|
Typed agents with Agent<IN, OUT>
|
Available |
Pure Kotlin skills (implementedBy) |
Available |
LLM-driven skills (tools()) |
Available |
| Knowledge (lazy and eager) | Available |
Sequential pipelines (then) |
Available |
Parallel fan-out (/) |
Available |
Forum deliberation (*) -- concurrent participants, captain verdict, onMentionEmitted
|
Available |
Iterative loops (.loop {}) |
Available |
Conditional branching (.branch {}) |
Available |
| Ollama integration | Available |
Mock testing with ModelClient
|
Available |
Guided generation (@Generable, @Guide) |
Available |
Lenient JSON parsing (fromLlmOutput) |
Available |
Partial generation (PartiallyGenerated) |
Available |
Agent memory (MemoryBank) |
Available |
| Skill selection (predicate + LLM) | Available |
Budget controls (maxTurns) |
Available |
| Observability hooks | Available |
Tool error types (ToolError) |
Available |
MCP client -- mcp { server() } agent DSL (HTTP / stdio / TCP, Bearer auth, namespacing) |
Available |
MCP server -- McpServer.from(agent) { expose() }, @Generable schema gen |
Available |
McpRunner -- picocli-style one-liner main for standalone agent JARs |
Available |
| Capability | ETA |
|---|---|
Incoming auth on McpServer (Bearer / OAuth validation) |
Q2 2026 |
OAuth 2.1 client for McpClient (PKCE, refresh) |
Q2 2026 |
| Permission model | Q2 2026 |
| KSP compile-time generation | Q2 2026 |
| Native CLI (no JRE) | Q2 2026 |
| Gradle plugin (auto-wires McpRunner mainClass) | Q2 2026 |
| Session management | Q2 2026 |
| Pipeline observability | Q2 2026 |
See also: Architecture Overview | API Quick Reference | Installation and Setup
Getting Started
Core Concepts
Composition Operators
LLM Integration
- Model & Tool Calling
- MCP Integration
- Agent Deployment Modes
- Swarm
- Tool Error Recovery
- Skill Selection & Routing
- Budget Controls
- Observability Hooks
Guided Generation
Agent Memory
Reference
- API Quick Reference
- Type Algebra Cheat Sheet
- Glossary
- Best Practices
- Cookbook & Recipes
- Troubleshooting & FAQ
- Roadmap
Contributing