agent: add MCP server mode with task tool

This commit is contained in:
Adrià Arrufat
2026-04-30 17:11:48 +02:00
parent 85f2a08128
commit 300fdfb34c
13 changed files with 406 additions and 111 deletions

View File

@@ -196,6 +196,24 @@ fn run(allocator: Allocator, main_arena: Allocator) !void {
fn agentThread(allocator: std.mem.Allocator, app: *App, opts: Config.Agent, failed: *bool) void {
defer app.network.stop();
if (opts.mcp) {
var stdout = std.fs.File.stdout().writer(&.{});
var server = lp.agent.McpServer.init(allocator, app, opts, &stdout.interface) catch |err| {
log.fatal(.app, "agent mcp init error", .{ .err = err });
failed.* = true;
return;
};
defer server.deinit();
var stdin_buf: [64 * 1024]u8 = undefined;
var stdin = std.fs.File.stdin().reader(&stdin_buf);
lp.mcp.router.processRequests(server, &stdin.interface) catch |err| {
log.err(.app, "agent mcp error", .{ .err = err });
failed.* = true;
};
return;
}
var agent_instance = lp.agent.Agent.init(allocator, app, opts) catch |err| {
log.fatal(.app, "agent init error", .{ .err = err });
failed.* = true;