[{"data":1,"prerenderedAt":12652},["ShallowReactive",2],{"blog-2026-02-05-intelliteam-multi-agent-orchestration":3},{"id":4,"title":5,"author":6,"body":7,"date":12635,"description":12636,"extension":12637,"language":12638,"meta":12639,"navigation":196,"path":12641,"seo":12642,"stem":12643,"tags":12644,"__hash__":12651},"blog/blog/2026-02-05-intelliteam-multi-agent-orchestration.md","intelliTeam: Building a Production Multi-Agent System with Human-in-the-Loop","NeoAI",{"type":8,"value":9,"toc":12613},"minimark",[10,14,41,48,82,85,88,93,104,108,113,124,2622,2626,2639,3821,4666,5783,5787,5794,9076,9080,9087,9761,10315,10317,10321,10328,10921,11013,11015,11019,11026,11893,11900,11985,11987,11991,11995,12001,12007,12011,12017,12019,12023,12027,12090,12097,12101,12397,12401,12408,12419,12421,12425,12428,12455,12462,12464,12468,12587,12595,12597,12609],[11,12,5],"h1",{"id":13},"intelliteam-building-a-production-multi-agent-system-with-human-in-the-loop",[15,16,17,18,22,23,30,31,36,37,40],"p",{},"The future of AI isn't a single superintelligent model — it's ",[19,20,21],"strong",{},"coordinated teams of specialized agents"," working together. While Anthropic recently ",[24,25,29],"a",{"href":26,"rel":27},"https://www.anthropic.com/engineering/multi-agent-research-system",[28],"nofollow","published their approach"," to multi-agent research systems, and tools like ",[24,32,35],{"href":33,"rel":34},"https://github.com/ruvnet/claude-flow",[28],"claude-flow"," are pushing 60+ agent orchestration, there's been surprisingly little focus on ",[19,38,39],{},"human-agent communication"," as a first-class concern.",[15,42,43,44,47],{},"Today, we're open-sourcing the architecture behind ",[19,45,46],{},"intelliTeam"," — a production-ready multi-agent orchestration system that puts human accessibility at its core. Unlike pure automation systems, intelliTeam features:",[49,50,51,58,64,70,76],"ul",{},[52,53,54,57],"li",{},[19,55,56],{},"Multi-channel human interface"," (Telegram, WhatsApp, Discord, Signal, Slack)",[52,59,60,63],{},[19,61,62],{},"Concierge service"," that triages and routes human queries",[52,65,66,69],{},[19,67,68],{},"Mission Control"," for workspace/project state management",[52,71,72,75],{},[19,73,74],{},"Autonomous worker agents"," that execute complex tasks",[52,77,78,81],{},[19,79,80],{},"Full observability"," into agent activities and decisions",[15,83,84],{},"Let's build it from scratch.",[86,87],"hr",{},[89,90,92],"h2",{"id":91},"architecture-overview","Architecture Overview",[94,95,100],"pre",{"className":96,"code":98,"language":99},[97],"language-text","┌─────────────────────────────────────────────────────────────────────────────┐\n│                              HUMAN LAYER                                    │\n├─────────────────────────────────────────────────────────────────────────────┤\n│  📱 Telegram  │  💬 WhatsApp  │  🎮 Discord  │  📡 Signal  │  💼 Slack    │\n└───────┬───────┴───────┬───────┴───────┬──────┴──────┬──────┴───────┬───────┘\n        │               │               │             │              │\n        └───────────────┴───────┬───────┴─────────────┴──────────────┘\n                                │\n                    ┌───────────▼───────────┐\n                    │   🚪 GATEWAY LAYER    │\n                    │   (Channel Adapters)  │\n                    └───────────┬───────────┘\n                                │\n                    ┌───────────▼───────────┐\n                    │  🛎️ CONCIERGE AGENT   │\n                    │   • Query Analysis    │\n                    │   • Intent Detection  │\n                    │   • Routing Decisions │\n                    └───────────┬───────────┘\n                                │\n                    ┌───────────▼───────────┐\n                    │  🎛️ MISSION CONTROL    │\n                    │   (Convex Database)   │\n                    │   • Workspace State   │\n                    │   • Agent Registry    │\n                    │   • Task Queue        │\n                    │   • Event Log         │\n                    └───────────┬───────────┘\n                                │\n        ┌───────────────────────┼───────────────────────┐\n        │                       │                       │\n┌───────▼───────┐       ┌───────▼───────┐       ┌───────▼───────┐\n│  🔨 CODER     │       │  🔍 REVIEWER   │       │  🧪 TESTER    │\n│   Agent       │       │    Agent       │       │    Agent      │\n└───────────────┘       └───────────────┘       └───────────────┘\n        │                       │                       │\n        └───────────────────────┼───────────────────────┘\n                                │\n                    ┌───────────▼───────────┐\n                    │  🧠 CLAUDE API        │\n                    │   (Agent SDK)         │\n                    └───────────────────────┘\n","text",[101,102,98],"code",{"__ignoreMap":103},"",[89,105,107],{"id":106},"core-components","Core Components",[109,110,112],"h3",{"id":111},"_1-the-concierge-agent","1. The Concierge Agent",[15,114,115,116,119,120,123],{},"The Concierge is the ",[19,117,118],{},"single point of contact"," for all human interactions. It doesn't execute tasks — it ",[19,121,122],{},"understands, routes, and responds",".",[94,125,129],{"className":126,"code":127,"language":128,"meta":103,"style":103},"language-typescript shiki shiki-themes github-light github-dark","// src/agents/concierge.ts\nimport Anthropic from \"@anthropic-ai/sdk\";\nimport { ConvexClient } from \"convex/browser\";\nimport { api } from \"../convex/_generated/api\";\n\nconst CONCIERGE_SYSTEM_PROMPT = `You are the Concierge for intelliTeam, a multi-agent AI system.\n\nYour responsibilities:\n1. UNDERSTAND: Analyze incoming human queries for intent and context\n2. INFORM: Answer questions about workspace state, project progress, agent activities\n3. ROUTE: Forward complex tasks to appropriate specialist agents\n4. SUMMARIZE: Provide human-readable updates on ongoing work\n\nYou have access to Mission Control via tools. Use them to:\n- Query workspace state (projects, tasks, progress)\n- Check agent availability and current assignments\n- Create new tasks and assign to agents\n- Retrieve recent activity logs\n\nNEVER execute coding tasks yourself. Route them to specialist agents.\nALWAYS respond in the human's language.\nKeep responses concise but complete.`;\n\nexport class ConciergeAgent {\n  private anthropic: Anthropic;\n  private convex: ConvexClient;\n  private channelId: string;\n\n  constructor(channelId: string) {\n    this.anthropic = new Anthropic();\n    this.convex = new ConvexClient(process.env.CONVEX_URL!);\n    this.channelId = channelId;\n  }\n\n  async handleMessage(userId: string, message: string): Promise\u003Cstring> {\n    // Log incoming message\n    await this.convex.mutation(api.events.log, {\n      type: \"human_message\",\n      channelId: this.channelId,\n      userId,\n      content: message,\n    });\n\n    // Run agent loop with tools\n    const response = await this.anthropic.messages.create({\n      model: \"claude-sonnet-4-20250514\",\n      max_tokens: 4096,\n      system: CONCIERGE_SYSTEM_PROMPT,\n      tools: this.getMissionControlTools(),\n      messages: [{ role: \"user\", content: message }],\n    });\n\n    // Process tool calls in a loop\n    let currentResponse = response;\n    const messages: Anthropic.MessageParam[] = [\n      { role: \"user\", content: message },\n    ];\n\n    while (currentResponse.stop_reason === \"tool_use\") {\n      const assistantContent = currentResponse.content;\n      messages.push({ role: \"assistant\", content: assistantContent });\n\n      const toolResults = await this.executeTools(assistantContent);\n      messages.push({ role: \"user\", content: toolResults });\n\n      currentResponse = await this.anthropic.messages.create({\n        model: \"claude-sonnet-4-20250514\",\n        max_tokens: 4096,\n        system: CONCIERGE_SYSTEM_PROMPT,\n        tools: this.getMissionControlTools(),\n        messages,\n      });\n    }\n\n    // Extract text response\n    const textBlock = currentResponse.content.find(\n      (block) => block.type === \"text\"\n    );\n    const reply = textBlock?.text || \"I couldn't process that request.\";\n\n    // Log response\n    await this.convex.mutation(api.events.log, {\n      type: \"concierge_response\",\n      channelId: this.channelId,\n      userId,\n      content: reply,\n    });\n\n    return reply;\n  }\n\n  private getMissionControlTools(): Anthropic.Tool[] {\n    return [\n      {\n        name: \"get_workspaces\",\n        description: \"List all workspaces/projects known to the team\",\n        input_schema: {\n          type: \"object\" as const,\n          properties: {\n            status: {\n              type: \"string\",\n              enum: [\"active\", \"archived\", \"all\"],\n              description: \"Filter by workspace status\",\n            },\n          },\n        },\n      },\n      {\n        name: \"get_workspace_state\",\n        description: \"Get detailed state of a specific workspace\",\n        input_schema: {\n          type: \"object\" as const,\n          properties: {\n            workspaceId: { type: \"string\", description: \"Workspace ID\" },\n          },\n          required: [\"workspaceId\"],\n        },\n      },\n      {\n        name: \"get_agent_status\",\n        description: \"Get status of all agents or a specific agent\",\n        input_schema: {\n          type: \"object\" as const,\n          properties: {\n            agentId: {\n              type: \"string\",\n              description: \"Optional: specific agent ID\",\n            },\n          },\n        },\n      },\n      {\n        name: \"create_task\",\n        description: \"Create a new task and optionally assign to an agent\",\n        input_schema: {\n          type: \"object\" as const,\n          properties: {\n            workspaceId: { type: \"string\" },\n            title: { type: \"string\" },\n            description: { type: \"string\" },\n            priority: { type: \"string\", enum: [\"low\", \"medium\", \"high\", \"urgent\"] },\n            assignTo: { type: \"string\", description: \"Agent type: coder, reviewer, tester\" },\n          },\n          required: [\"workspaceId\", \"title\", \"description\"],\n        },\n      },\n      {\n        name: \"get_recent_activity\",\n        description: \"Get recent activity log for a workspace or agent\",\n        input_schema: {\n          type: \"object\" as const,\n          properties: {\n            workspaceId: { type: \"string\" },\n            agentId: { type: \"string\" },\n            limit: { type: \"number\", description: \"Max events to return\" },\n          },\n        },\n      },\n      {\n        name: \"send_to_agent\",\n        description: \"Forward a message/task to a specialist agent\",\n        input_schema: {\n          type: \"object\" as const,\n          properties: {\n            agentType: {\n              type: \"string\",\n              enum: [\"coder\", \"reviewer\", \"tester\", \"architect\", \"devops\"],\n            },\n            taskId: { type: \"string\" },\n            message: { type: \"string\" },\n            priority: { type: \"string\", enum: [\"normal\", \"urgent\"] },\n          },\n          required: [\"agentType\", \"message\"],\n        },\n      },\n    ];\n  }\n\n  private async executeTools(\n    content: Anthropic.ContentBlock[]\n  ): Promise\u003CAnthropic.ToolResultBlockParam[]> {\n    const results: Anthropic.ToolResultBlockParam[] = [];\n\n    for (const block of content) {\n      if (block.type === \"tool_use\") {\n        const result = await this.executeTool(block.name, block.input);\n        results.push({\n          type: \"tool_result\",\n          tool_use_id: block.id,\n          content: JSON.stringify(result),\n        });\n      }\n    }\n\n    return results;\n  }\n\n  private async executeTool(name: string, input: unknown): Promise\u003Cunknown> {\n    const params = input as Record\u003Cstring, unknown>;\n\n    switch (name) {\n      case \"get_workspaces\":\n        return this.convex.query(api.workspaces.list, {\n          status: params.status as string,\n        });\n\n      case \"get_workspace_state\":\n        return this.convex.query(api.workspaces.getState, {\n          id: params.workspaceId as string,\n        });\n\n      case \"get_agent_status\":\n        return this.convex.query(api.agents.getStatus, {\n          agentId: params.agentId as string,\n        });\n\n      case \"create_task\":\n        return this.convex.mutation(api.tasks.create, {\n          workspaceId: params.workspaceId as string,\n          title: params.title as string,\n          description: params.description as string,\n          priority: params.priority as string,\n          assignTo: params.assignTo as string,\n        });\n\n      case \"get_recent_activity\":\n        return this.convex.query(api.events.getRecent, {\n          workspaceId: params.workspaceId as string,\n          agentId: params.agentId as string,\n          limit: (params.limit as number) || 20,\n        });\n\n      case \"send_to_agent\":\n        return this.convex.mutation(api.agents.sendMessage, {\n          agentType: params.agentType as string,\n          taskId: params.taskId as string,\n          message: params.message as string,\n          priority: params.priority as string,\n        });\n\n      default:\n        return { error: `Unknown tool: ${name}` };\n    }\n  }\n}\n","typescript",[101,130,131,140,161,176,191,198,214,219,225,231,237,243,249,254,260,266,272,278,284,289,295,301,309,314,330,348,363,378,383,402,422,448,461,467,472,517,523,541,553,565,571,577,583,588,594,619,630,641,652,668,680,685,690,696,710,735,746,752,757,774,788,806,811,833,847,852,870,880,890,900,914,920,926,932,937,943,962,985,991,1012,1017,1023,1036,1046,1055,1060,1066,1071,1076,1085,1090,1095,1118,1125,1131,1142,1153,1159,1176,1182,1188,1199,1221,1232,1238,1244,1250,1256,1261,1271,1281,1286,1299,1304,1321,1326,1337,1342,1347,1352,1362,1372,1377,1390,1395,1401,1410,1420,1425,1430,1435,1440,1445,1455,1465,1470,1483,1488,1497,1507,1517,1549,1564,1569,1588,1593,1598,1603,1613,1623,1628,1641,1646,1655,1665,1681,1686,1691,1696,1701,1711,1721,1726,1739,1744,1750,1759,1789,1794,1804,1814,1832,1837,1852,1857,1862,1867,1872,1877,1890,1908,1931,1954,1959,1979,1994,2017,2027,2037,2043,2060,2066,2072,2077,2082,2090,2095,2100,2142,2172,2177,2186,2198,2214,2226,2231,2236,2246,2260,2272,2277,2282,2292,2306,2318,2323,2328,2338,2352,2364,2376,2388,2400,2412,2417,2422,2432,2446,2457,2468,2488,2493,2498,2508,2522,2534,2546,2558,2569,2574,2579,2587,2606,2611,2616],{"__ignoreMap":103},[132,133,136],"span",{"class":134,"line":135},"line",1,[132,137,139],{"class":138},"sJ8bj","// src/agents/concierge.ts\n",[132,141,143,147,151,154,158],{"class":134,"line":142},2,[132,144,146],{"class":145},"szBVR","import",[132,148,150],{"class":149},"sVt8B"," Anthropic ",[132,152,153],{"class":145},"from",[132,155,157],{"class":156},"sZZnC"," \"@anthropic-ai/sdk\"",[132,159,160],{"class":149},";\n",[132,162,164,166,169,171,174],{"class":134,"line":163},3,[132,165,146],{"class":145},[132,167,168],{"class":149}," { ConvexClient } ",[132,170,153],{"class":145},[132,172,173],{"class":156}," \"convex/browser\"",[132,175,160],{"class":149},[132,177,179,181,184,186,189],{"class":134,"line":178},4,[132,180,146],{"class":145},[132,182,183],{"class":149}," { api } ",[132,185,153],{"class":145},[132,187,188],{"class":156}," \"../convex/_generated/api\"",[132,190,160],{"class":149},[132,192,194],{"class":134,"line":193},5,[132,195,197],{"emptyLinePlaceholder":196},true,"\n",[132,199,201,204,208,211],{"class":134,"line":200},6,[132,202,203],{"class":145},"const",[132,205,207],{"class":206},"sj4cs"," CONCIERGE_SYSTEM_PROMPT",[132,209,210],{"class":145}," =",[132,212,213],{"class":156}," `You are the Concierge for intelliTeam, a multi-agent AI system.\n",[132,215,217],{"class":134,"line":216},7,[132,218,197],{"emptyLinePlaceholder":196},[132,220,222],{"class":134,"line":221},8,[132,223,224],{"class":156},"Your responsibilities:\n",[132,226,228],{"class":134,"line":227},9,[132,229,230],{"class":156},"1. UNDERSTAND: Analyze incoming human queries for intent and context\n",[132,232,234],{"class":134,"line":233},10,[132,235,236],{"class":156},"2. INFORM: Answer questions about workspace state, project progress, agent activities\n",[132,238,240],{"class":134,"line":239},11,[132,241,242],{"class":156},"3. ROUTE: Forward complex tasks to appropriate specialist agents\n",[132,244,246],{"class":134,"line":245},12,[132,247,248],{"class":156},"4. SUMMARIZE: Provide human-readable updates on ongoing work\n",[132,250,252],{"class":134,"line":251},13,[132,253,197],{"emptyLinePlaceholder":196},[132,255,257],{"class":134,"line":256},14,[132,258,259],{"class":156},"You have access to Mission Control via tools. Use them to:\n",[132,261,263],{"class":134,"line":262},15,[132,264,265],{"class":156},"- Query workspace state (projects, tasks, progress)\n",[132,267,269],{"class":134,"line":268},16,[132,270,271],{"class":156},"- Check agent availability and current assignments\n",[132,273,275],{"class":134,"line":274},17,[132,276,277],{"class":156},"- Create new tasks and assign to agents\n",[132,279,281],{"class":134,"line":280},18,[132,282,283],{"class":156},"- Retrieve recent activity logs\n",[132,285,287],{"class":134,"line":286},19,[132,288,197],{"emptyLinePlaceholder":196},[132,290,292],{"class":134,"line":291},20,[132,293,294],{"class":156},"NEVER execute coding tasks yourself. Route them to specialist agents.\n",[132,296,298],{"class":134,"line":297},21,[132,299,300],{"class":156},"ALWAYS respond in the human's language.\n",[132,302,304,307],{"class":134,"line":303},22,[132,305,306],{"class":156},"Keep responses concise but complete.`",[132,308,160],{"class":149},[132,310,312],{"class":134,"line":311},23,[132,313,197],{"emptyLinePlaceholder":196},[132,315,317,320,323,327],{"class":134,"line":316},24,[132,318,319],{"class":145},"export",[132,321,322],{"class":145}," class",[132,324,326],{"class":325},"sScJk"," ConciergeAgent",[132,328,329],{"class":149}," {\n",[132,331,333,336,340,343,346],{"class":134,"line":332},25,[132,334,335],{"class":145},"  private",[132,337,339],{"class":338},"s4XuR"," anthropic",[132,341,342],{"class":145},":",[132,344,345],{"class":325}," Anthropic",[132,347,160],{"class":149},[132,349,351,353,356,358,361],{"class":134,"line":350},26,[132,352,335],{"class":145},[132,354,355],{"class":338}," convex",[132,357,342],{"class":145},[132,359,360],{"class":325}," ConvexClient",[132,362,160],{"class":149},[132,364,366,368,371,373,376],{"class":134,"line":365},27,[132,367,335],{"class":145},[132,369,370],{"class":338}," channelId",[132,372,342],{"class":145},[132,374,375],{"class":206}," string",[132,377,160],{"class":149},[132,379,381],{"class":134,"line":380},28,[132,382,197],{"emptyLinePlaceholder":196},[132,384,386,389,392,395,397,399],{"class":134,"line":385},29,[132,387,388],{"class":145},"  constructor",[132,390,391],{"class":149},"(",[132,393,394],{"class":338},"channelId",[132,396,342],{"class":145},[132,398,375],{"class":206},[132,400,401],{"class":149},") {\n",[132,403,405,408,411,414,417,419],{"class":134,"line":404},30,[132,406,407],{"class":206},"    this",[132,409,410],{"class":149},".anthropic ",[132,412,413],{"class":145},"=",[132,415,416],{"class":145}," new",[132,418,345],{"class":325},[132,420,421],{"class":149},"();\n",[132,423,425,427,430,432,434,436,439,442,445],{"class":134,"line":424},31,[132,426,407],{"class":206},[132,428,429],{"class":149},".convex ",[132,431,413],{"class":145},[132,433,416],{"class":145},[132,435,360],{"class":325},[132,437,438],{"class":149},"(process.env.",[132,440,441],{"class":206},"CONVEX_URL",[132,443,444],{"class":145},"!",[132,446,447],{"class":149},");\n",[132,449,451,453,456,458],{"class":134,"line":450},32,[132,452,407],{"class":206},[132,454,455],{"class":149},".channelId ",[132,457,413],{"class":145},[132,459,460],{"class":149}," channelId;\n",[132,462,464],{"class":134,"line":463},33,[132,465,466],{"class":149},"  }\n",[132,468,470],{"class":134,"line":469},34,[132,471,197],{"emptyLinePlaceholder":196},[132,473,475,478,481,483,486,488,490,493,496,498,500,503,505,508,511,514],{"class":134,"line":474},35,[132,476,477],{"class":145},"  async",[132,479,480],{"class":325}," handleMessage",[132,482,391],{"class":149},[132,484,485],{"class":338},"userId",[132,487,342],{"class":145},[132,489,375],{"class":206},[132,491,492],{"class":149},", ",[132,494,495],{"class":338},"message",[132,497,342],{"class":145},[132,499,375],{"class":206},[132,501,502],{"class":149},")",[132,504,342],{"class":145},[132,506,507],{"class":325}," Promise",[132,509,510],{"class":149},"\u003C",[132,512,513],{"class":206},"string",[132,515,516],{"class":149},"> {\n",[132,518,520],{"class":134,"line":519},36,[132,521,522],{"class":138},"    // Log incoming message\n",[132,524,526,529,532,535,538],{"class":134,"line":525},37,[132,527,528],{"class":145},"    await",[132,530,531],{"class":206}," this",[132,533,534],{"class":149},".convex.",[132,536,537],{"class":325},"mutation",[132,539,540],{"class":149},"(api.events.log, {\n",[132,542,544,547,550],{"class":134,"line":543},38,[132,545,546],{"class":149},"      type: ",[132,548,549],{"class":156},"\"human_message\"",[132,551,552],{"class":149},",\n",[132,554,556,559,562],{"class":134,"line":555},39,[132,557,558],{"class":149},"      channelId: ",[132,560,561],{"class":206},"this",[132,563,564],{"class":149},".channelId,\n",[132,566,568],{"class":134,"line":567},40,[132,569,570],{"class":149},"      userId,\n",[132,572,574],{"class":134,"line":573},41,[132,575,576],{"class":149},"      content: message,\n",[132,578,580],{"class":134,"line":579},42,[132,581,582],{"class":149},"    });\n",[132,584,586],{"class":134,"line":585},43,[132,587,197],{"emptyLinePlaceholder":196},[132,589,591],{"class":134,"line":590},44,[132,592,593],{"class":138},"    // Run agent loop with tools\n",[132,595,597,600,603,605,608,610,613,616],{"class":134,"line":596},45,[132,598,599],{"class":145},"    const",[132,601,602],{"class":206}," response",[132,604,210],{"class":145},[132,606,607],{"class":145}," await",[132,609,531],{"class":206},[132,611,612],{"class":149},".anthropic.messages.",[132,614,615],{"class":325},"create",[132,617,618],{"class":149},"({\n",[132,620,622,625,628],{"class":134,"line":621},46,[132,623,624],{"class":149},"      model: ",[132,626,627],{"class":156},"\"claude-sonnet-4-20250514\"",[132,629,552],{"class":149},[132,631,633,636,639],{"class":134,"line":632},47,[132,634,635],{"class":149},"      max_tokens: ",[132,637,638],{"class":206},"4096",[132,640,552],{"class":149},[132,642,644,647,650],{"class":134,"line":643},48,[132,645,646],{"class":149},"      system: ",[132,648,649],{"class":206},"CONCIERGE_SYSTEM_PROMPT",[132,651,552],{"class":149},[132,653,655,658,660,662,665],{"class":134,"line":654},49,[132,656,657],{"class":149},"      tools: ",[132,659,561],{"class":206},[132,661,123],{"class":149},[132,663,664],{"class":325},"getMissionControlTools",[132,666,667],{"class":149},"(),\n",[132,669,671,674,677],{"class":134,"line":670},50,[132,672,673],{"class":149},"      messages: [{ role: ",[132,675,676],{"class":156},"\"user\"",[132,678,679],{"class":149},", content: message }],\n",[132,681,683],{"class":134,"line":682},51,[132,684,582],{"class":149},[132,686,688],{"class":134,"line":687},52,[132,689,197],{"emptyLinePlaceholder":196},[132,691,693],{"class":134,"line":692},53,[132,694,695],{"class":138},"    // Process tool calls in a loop\n",[132,697,699,702,705,707],{"class":134,"line":698},54,[132,700,701],{"class":145},"    let",[132,703,704],{"class":149}," currentResponse ",[132,706,413],{"class":145},[132,708,709],{"class":149}," response;\n",[132,711,713,715,718,720,722,724,727,730,732],{"class":134,"line":712},55,[132,714,599],{"class":145},[132,716,717],{"class":206}," messages",[132,719,342],{"class":145},[132,721,345],{"class":325},[132,723,123],{"class":149},[132,725,726],{"class":325},"MessageParam",[132,728,729],{"class":149},"[] ",[132,731,413],{"class":145},[132,733,734],{"class":149}," [\n",[132,736,738,741,743],{"class":134,"line":737},56,[132,739,740],{"class":149},"      { role: ",[132,742,676],{"class":156},[132,744,745],{"class":149},", content: message },\n",[132,747,749],{"class":134,"line":748},57,[132,750,751],{"class":149},"    ];\n",[132,753,755],{"class":134,"line":754},58,[132,756,197],{"emptyLinePlaceholder":196},[132,758,760,763,766,769,772],{"class":134,"line":759},59,[132,761,762],{"class":145},"    while",[132,764,765],{"class":149}," (currentResponse.stop_reason ",[132,767,768],{"class":145},"===",[132,770,771],{"class":156}," \"tool_use\"",[132,773,401],{"class":149},[132,775,777,780,783,785],{"class":134,"line":776},60,[132,778,779],{"class":145},"      const",[132,781,782],{"class":206}," assistantContent",[132,784,210],{"class":145},[132,786,787],{"class":149}," currentResponse.content;\n",[132,789,791,794,797,800,803],{"class":134,"line":790},61,[132,792,793],{"class":149},"      messages.",[132,795,796],{"class":325},"push",[132,798,799],{"class":149},"({ role: ",[132,801,802],{"class":156},"\"assistant\"",[132,804,805],{"class":149},", content: assistantContent });\n",[132,807,809],{"class":134,"line":808},62,[132,810,197],{"emptyLinePlaceholder":196},[132,812,814,816,819,821,823,825,827,830],{"class":134,"line":813},63,[132,815,779],{"class":145},[132,817,818],{"class":206}," toolResults",[132,820,210],{"class":145},[132,822,607],{"class":145},[132,824,531],{"class":206},[132,826,123],{"class":149},[132,828,829],{"class":325},"executeTools",[132,831,832],{"class":149},"(assistantContent);\n",[132,834,836,838,840,842,844],{"class":134,"line":835},64,[132,837,793],{"class":149},[132,839,796],{"class":325},[132,841,799],{"class":149},[132,843,676],{"class":156},[132,845,846],{"class":149},", content: toolResults });\n",[132,848,850],{"class":134,"line":849},65,[132,851,197],{"emptyLinePlaceholder":196},[132,853,855,858,860,862,864,866,868],{"class":134,"line":854},66,[132,856,857],{"class":149},"      currentResponse ",[132,859,413],{"class":145},[132,861,607],{"class":145},[132,863,531],{"class":206},[132,865,612],{"class":149},[132,867,615],{"class":325},[132,869,618],{"class":149},[132,871,873,876,878],{"class":134,"line":872},67,[132,874,875],{"class":149},"        model: ",[132,877,627],{"class":156},[132,879,552],{"class":149},[132,881,883,886,888],{"class":134,"line":882},68,[132,884,885],{"class":149},"        max_tokens: ",[132,887,638],{"class":206},[132,889,552],{"class":149},[132,891,893,896,898],{"class":134,"line":892},69,[132,894,895],{"class":149},"        system: ",[132,897,649],{"class":206},[132,899,552],{"class":149},[132,901,903,906,908,910,912],{"class":134,"line":902},70,[132,904,905],{"class":149},"        tools: ",[132,907,561],{"class":206},[132,909,123],{"class":149},[132,911,664],{"class":325},[132,913,667],{"class":149},[132,915,917],{"class":134,"line":916},71,[132,918,919],{"class":149},"        messages,\n",[132,921,923],{"class":134,"line":922},72,[132,924,925],{"class":149},"      });\n",[132,927,929],{"class":134,"line":928},73,[132,930,931],{"class":149},"    }\n",[132,933,935],{"class":134,"line":934},74,[132,936,197],{"emptyLinePlaceholder":196},[132,938,940],{"class":134,"line":939},75,[132,941,942],{"class":138},"    // Extract text response\n",[132,944,946,948,951,953,956,959],{"class":134,"line":945},76,[132,947,599],{"class":145},[132,949,950],{"class":206}," textBlock",[132,952,210],{"class":145},[132,954,955],{"class":149}," currentResponse.content.",[132,957,958],{"class":325},"find",[132,960,961],{"class":149},"(\n",[132,963,965,968,971,974,977,980,982],{"class":134,"line":964},77,[132,966,967],{"class":149},"      (",[132,969,970],{"class":338},"block",[132,972,973],{"class":149},") ",[132,975,976],{"class":145},"=>",[132,978,979],{"class":149}," block.type ",[132,981,768],{"class":145},[132,983,984],{"class":156}," \"text\"\n",[132,986,988],{"class":134,"line":987},78,[132,989,990],{"class":149},"    );\n",[132,992,994,996,999,1001,1004,1007,1010],{"class":134,"line":993},79,[132,995,599],{"class":145},[132,997,998],{"class":206}," reply",[132,1000,210],{"class":145},[132,1002,1003],{"class":149}," textBlock?.text ",[132,1005,1006],{"class":145},"||",[132,1008,1009],{"class":156}," \"I couldn't process that request.\"",[132,1011,160],{"class":149},[132,1013,1015],{"class":134,"line":1014},80,[132,1016,197],{"emptyLinePlaceholder":196},[132,1018,1020],{"class":134,"line":1019},81,[132,1021,1022],{"class":138},"    // Log response\n",[132,1024,1026,1028,1030,1032,1034],{"class":134,"line":1025},82,[132,1027,528],{"class":145},[132,1029,531],{"class":206},[132,1031,534],{"class":149},[132,1033,537],{"class":325},[132,1035,540],{"class":149},[132,1037,1039,1041,1044],{"class":134,"line":1038},83,[132,1040,546],{"class":149},[132,1042,1043],{"class":156},"\"concierge_response\"",[132,1045,552],{"class":149},[132,1047,1049,1051,1053],{"class":134,"line":1048},84,[132,1050,558],{"class":149},[132,1052,561],{"class":206},[132,1054,564],{"class":149},[132,1056,1058],{"class":134,"line":1057},85,[132,1059,570],{"class":149},[132,1061,1063],{"class":134,"line":1062},86,[132,1064,1065],{"class":149},"      content: reply,\n",[132,1067,1069],{"class":134,"line":1068},87,[132,1070,582],{"class":149},[132,1072,1074],{"class":134,"line":1073},88,[132,1075,197],{"emptyLinePlaceholder":196},[132,1077,1079,1082],{"class":134,"line":1078},89,[132,1080,1081],{"class":145},"    return",[132,1083,1084],{"class":149}," reply;\n",[132,1086,1088],{"class":134,"line":1087},90,[132,1089,466],{"class":149},[132,1091,1093],{"class":134,"line":1092},91,[132,1094,197],{"emptyLinePlaceholder":196},[132,1096,1098,1100,1103,1106,1108,1110,1112,1115],{"class":134,"line":1097},92,[132,1099,335],{"class":145},[132,1101,1102],{"class":325}," getMissionControlTools",[132,1104,1105],{"class":149},"()",[132,1107,342],{"class":145},[132,1109,345],{"class":325},[132,1111,123],{"class":149},[132,1113,1114],{"class":325},"Tool",[132,1116,1117],{"class":149},"[] {\n",[132,1119,1121,1123],{"class":134,"line":1120},93,[132,1122,1081],{"class":145},[132,1124,734],{"class":149},[132,1126,1128],{"class":134,"line":1127},94,[132,1129,1130],{"class":149},"      {\n",[132,1132,1134,1137,1140],{"class":134,"line":1133},95,[132,1135,1136],{"class":149},"        name: ",[132,1138,1139],{"class":156},"\"get_workspaces\"",[132,1141,552],{"class":149},[132,1143,1145,1148,1151],{"class":134,"line":1144},96,[132,1146,1147],{"class":149},"        description: ",[132,1149,1150],{"class":156},"\"List all workspaces/projects known to the team\"",[132,1152,552],{"class":149},[132,1154,1156],{"class":134,"line":1155},97,[132,1157,1158],{"class":149},"        input_schema: {\n",[132,1160,1162,1165,1168,1171,1174],{"class":134,"line":1161},98,[132,1163,1164],{"class":149},"          type: ",[132,1166,1167],{"class":156},"\"object\"",[132,1169,1170],{"class":145}," as",[132,1172,1173],{"class":145}," const",[132,1175,552],{"class":149},[132,1177,1179],{"class":134,"line":1178},99,[132,1180,1181],{"class":149},"          properties: {\n",[132,1183,1185],{"class":134,"line":1184},100,[132,1186,1187],{"class":149},"            status: {\n",[132,1189,1191,1194,1197],{"class":134,"line":1190},101,[132,1192,1193],{"class":149},"              type: ",[132,1195,1196],{"class":156},"\"string\"",[132,1198,552],{"class":149},[132,1200,1202,1205,1208,1210,1213,1215,1218],{"class":134,"line":1201},102,[132,1203,1204],{"class":149},"              enum: [",[132,1206,1207],{"class":156},"\"active\"",[132,1209,492],{"class":149},[132,1211,1212],{"class":156},"\"archived\"",[132,1214,492],{"class":149},[132,1216,1217],{"class":156},"\"all\"",[132,1219,1220],{"class":149},"],\n",[132,1222,1224,1227,1230],{"class":134,"line":1223},103,[132,1225,1226],{"class":149},"              description: ",[132,1228,1229],{"class":156},"\"Filter by workspace status\"",[132,1231,552],{"class":149},[132,1233,1235],{"class":134,"line":1234},104,[132,1236,1237],{"class":149},"            },\n",[132,1239,1241],{"class":134,"line":1240},105,[132,1242,1243],{"class":149},"          },\n",[132,1245,1247],{"class":134,"line":1246},106,[132,1248,1249],{"class":149},"        },\n",[132,1251,1253],{"class":134,"line":1252},107,[132,1254,1255],{"class":149},"      },\n",[132,1257,1259],{"class":134,"line":1258},108,[132,1260,1130],{"class":149},[132,1262,1264,1266,1269],{"class":134,"line":1263},109,[132,1265,1136],{"class":149},[132,1267,1268],{"class":156},"\"get_workspace_state\"",[132,1270,552],{"class":149},[132,1272,1274,1276,1279],{"class":134,"line":1273},110,[132,1275,1147],{"class":149},[132,1277,1278],{"class":156},"\"Get detailed state of a specific workspace\"",[132,1280,552],{"class":149},[132,1282,1284],{"class":134,"line":1283},111,[132,1285,1158],{"class":149},[132,1287,1289,1291,1293,1295,1297],{"class":134,"line":1288},112,[132,1290,1164],{"class":149},[132,1292,1167],{"class":156},[132,1294,1170],{"class":145},[132,1296,1173],{"class":145},[132,1298,552],{"class":149},[132,1300,1302],{"class":134,"line":1301},113,[132,1303,1181],{"class":149},[132,1305,1307,1310,1312,1315,1318],{"class":134,"line":1306},114,[132,1308,1309],{"class":149},"            workspaceId: { type: ",[132,1311,1196],{"class":156},[132,1313,1314],{"class":149},", description: ",[132,1316,1317],{"class":156},"\"Workspace ID\"",[132,1319,1320],{"class":149}," },\n",[132,1322,1324],{"class":134,"line":1323},115,[132,1325,1243],{"class":149},[132,1327,1329,1332,1335],{"class":134,"line":1328},116,[132,1330,1331],{"class":149},"          required: [",[132,1333,1334],{"class":156},"\"workspaceId\"",[132,1336,1220],{"class":149},[132,1338,1340],{"class":134,"line":1339},117,[132,1341,1249],{"class":149},[132,1343,1345],{"class":134,"line":1344},118,[132,1346,1255],{"class":149},[132,1348,1350],{"class":134,"line":1349},119,[132,1351,1130],{"class":149},[132,1353,1355,1357,1360],{"class":134,"line":1354},120,[132,1356,1136],{"class":149},[132,1358,1359],{"class":156},"\"get_agent_status\"",[132,1361,552],{"class":149},[132,1363,1365,1367,1370],{"class":134,"line":1364},121,[132,1366,1147],{"class":149},[132,1368,1369],{"class":156},"\"Get status of all agents or a specific agent\"",[132,1371,552],{"class":149},[132,1373,1375],{"class":134,"line":1374},122,[132,1376,1158],{"class":149},[132,1378,1380,1382,1384,1386,1388],{"class":134,"line":1379},123,[132,1381,1164],{"class":149},[132,1383,1167],{"class":156},[132,1385,1170],{"class":145},[132,1387,1173],{"class":145},[132,1389,552],{"class":149},[132,1391,1393],{"class":134,"line":1392},124,[132,1394,1181],{"class":149},[132,1396,1398],{"class":134,"line":1397},125,[132,1399,1400],{"class":149},"            agentId: {\n",[132,1402,1404,1406,1408],{"class":134,"line":1403},126,[132,1405,1193],{"class":149},[132,1407,1196],{"class":156},[132,1409,552],{"class":149},[132,1411,1413,1415,1418],{"class":134,"line":1412},127,[132,1414,1226],{"class":149},[132,1416,1417],{"class":156},"\"Optional: specific agent ID\"",[132,1419,552],{"class":149},[132,1421,1423],{"class":134,"line":1422},128,[132,1424,1237],{"class":149},[132,1426,1428],{"class":134,"line":1427},129,[132,1429,1243],{"class":149},[132,1431,1433],{"class":134,"line":1432},130,[132,1434,1249],{"class":149},[132,1436,1438],{"class":134,"line":1437},131,[132,1439,1255],{"class":149},[132,1441,1443],{"class":134,"line":1442},132,[132,1444,1130],{"class":149},[132,1446,1448,1450,1453],{"class":134,"line":1447},133,[132,1449,1136],{"class":149},[132,1451,1452],{"class":156},"\"create_task\"",[132,1454,552],{"class":149},[132,1456,1458,1460,1463],{"class":134,"line":1457},134,[132,1459,1147],{"class":149},[132,1461,1462],{"class":156},"\"Create a new task and optionally assign to an agent\"",[132,1464,552],{"class":149},[132,1466,1468],{"class":134,"line":1467},135,[132,1469,1158],{"class":149},[132,1471,1473,1475,1477,1479,1481],{"class":134,"line":1472},136,[132,1474,1164],{"class":149},[132,1476,1167],{"class":156},[132,1478,1170],{"class":145},[132,1480,1173],{"class":145},[132,1482,552],{"class":149},[132,1484,1486],{"class":134,"line":1485},137,[132,1487,1181],{"class":149},[132,1489,1491,1493,1495],{"class":134,"line":1490},138,[132,1492,1309],{"class":149},[132,1494,1196],{"class":156},[132,1496,1320],{"class":149},[132,1498,1500,1503,1505],{"class":134,"line":1499},139,[132,1501,1502],{"class":149},"            title: { type: ",[132,1504,1196],{"class":156},[132,1506,1320],{"class":149},[132,1508,1510,1513,1515],{"class":134,"line":1509},140,[132,1511,1512],{"class":149},"            description: { type: ",[132,1514,1196],{"class":156},[132,1516,1320],{"class":149},[132,1518,1520,1523,1525,1528,1531,1533,1536,1538,1541,1543,1546],{"class":134,"line":1519},141,[132,1521,1522],{"class":149},"            priority: { type: ",[132,1524,1196],{"class":156},[132,1526,1527],{"class":149},", enum: [",[132,1529,1530],{"class":156},"\"low\"",[132,1532,492],{"class":149},[132,1534,1535],{"class":156},"\"medium\"",[132,1537,492],{"class":149},[132,1539,1540],{"class":156},"\"high\"",[132,1542,492],{"class":149},[132,1544,1545],{"class":156},"\"urgent\"",[132,1547,1548],{"class":149},"] },\n",[132,1550,1552,1555,1557,1559,1562],{"class":134,"line":1551},142,[132,1553,1554],{"class":149},"            assignTo: { type: ",[132,1556,1196],{"class":156},[132,1558,1314],{"class":149},[132,1560,1561],{"class":156},"\"Agent type: coder, reviewer, tester\"",[132,1563,1320],{"class":149},[132,1565,1567],{"class":134,"line":1566},143,[132,1568,1243],{"class":149},[132,1570,1572,1574,1576,1578,1581,1583,1586],{"class":134,"line":1571},144,[132,1573,1331],{"class":149},[132,1575,1334],{"class":156},[132,1577,492],{"class":149},[132,1579,1580],{"class":156},"\"title\"",[132,1582,492],{"class":149},[132,1584,1585],{"class":156},"\"description\"",[132,1587,1220],{"class":149},[132,1589,1591],{"class":134,"line":1590},145,[132,1592,1249],{"class":149},[132,1594,1596],{"class":134,"line":1595},146,[132,1597,1255],{"class":149},[132,1599,1601],{"class":134,"line":1600},147,[132,1602,1130],{"class":149},[132,1604,1606,1608,1611],{"class":134,"line":1605},148,[132,1607,1136],{"class":149},[132,1609,1610],{"class":156},"\"get_recent_activity\"",[132,1612,552],{"class":149},[132,1614,1616,1618,1621],{"class":134,"line":1615},149,[132,1617,1147],{"class":149},[132,1619,1620],{"class":156},"\"Get recent activity log for a workspace or agent\"",[132,1622,552],{"class":149},[132,1624,1626],{"class":134,"line":1625},150,[132,1627,1158],{"class":149},[132,1629,1631,1633,1635,1637,1639],{"class":134,"line":1630},151,[132,1632,1164],{"class":149},[132,1634,1167],{"class":156},[132,1636,1170],{"class":145},[132,1638,1173],{"class":145},[132,1640,552],{"class":149},[132,1642,1644],{"class":134,"line":1643},152,[132,1645,1181],{"class":149},[132,1647,1649,1651,1653],{"class":134,"line":1648},153,[132,1650,1309],{"class":149},[132,1652,1196],{"class":156},[132,1654,1320],{"class":149},[132,1656,1658,1661,1663],{"class":134,"line":1657},154,[132,1659,1660],{"class":149},"            agentId: { type: ",[132,1662,1196],{"class":156},[132,1664,1320],{"class":149},[132,1666,1668,1671,1674,1676,1679],{"class":134,"line":1667},155,[132,1669,1670],{"class":149},"            limit: { type: ",[132,1672,1673],{"class":156},"\"number\"",[132,1675,1314],{"class":149},[132,1677,1678],{"class":156},"\"Max events to return\"",[132,1680,1320],{"class":149},[132,1682,1684],{"class":134,"line":1683},156,[132,1685,1243],{"class":149},[132,1687,1689],{"class":134,"line":1688},157,[132,1690,1249],{"class":149},[132,1692,1694],{"class":134,"line":1693},158,[132,1695,1255],{"class":149},[132,1697,1699],{"class":134,"line":1698},159,[132,1700,1130],{"class":149},[132,1702,1704,1706,1709],{"class":134,"line":1703},160,[132,1705,1136],{"class":149},[132,1707,1708],{"class":156},"\"send_to_agent\"",[132,1710,552],{"class":149},[132,1712,1714,1716,1719],{"class":134,"line":1713},161,[132,1715,1147],{"class":149},[132,1717,1718],{"class":156},"\"Forward a message/task to a specialist agent\"",[132,1720,552],{"class":149},[132,1722,1724],{"class":134,"line":1723},162,[132,1725,1158],{"class":149},[132,1727,1729,1731,1733,1735,1737],{"class":134,"line":1728},163,[132,1730,1164],{"class":149},[132,1732,1167],{"class":156},[132,1734,1170],{"class":145},[132,1736,1173],{"class":145},[132,1738,552],{"class":149},[132,1740,1742],{"class":134,"line":1741},164,[132,1743,1181],{"class":149},[132,1745,1747],{"class":134,"line":1746},165,[132,1748,1749],{"class":149},"            agentType: {\n",[132,1751,1753,1755,1757],{"class":134,"line":1752},166,[132,1754,1193],{"class":149},[132,1756,1196],{"class":156},[132,1758,552],{"class":149},[132,1760,1762,1764,1767,1769,1772,1774,1777,1779,1782,1784,1787],{"class":134,"line":1761},167,[132,1763,1204],{"class":149},[132,1765,1766],{"class":156},"\"coder\"",[132,1768,492],{"class":149},[132,1770,1771],{"class":156},"\"reviewer\"",[132,1773,492],{"class":149},[132,1775,1776],{"class":156},"\"tester\"",[132,1778,492],{"class":149},[132,1780,1781],{"class":156},"\"architect\"",[132,1783,492],{"class":149},[132,1785,1786],{"class":156},"\"devops\"",[132,1788,1220],{"class":149},[132,1790,1792],{"class":134,"line":1791},168,[132,1793,1237],{"class":149},[132,1795,1797,1800,1802],{"class":134,"line":1796},169,[132,1798,1799],{"class":149},"            taskId: { type: ",[132,1801,1196],{"class":156},[132,1803,1320],{"class":149},[132,1805,1807,1810,1812],{"class":134,"line":1806},170,[132,1808,1809],{"class":149},"            message: { type: ",[132,1811,1196],{"class":156},[132,1813,1320],{"class":149},[132,1815,1817,1819,1821,1823,1826,1828,1830],{"class":134,"line":1816},171,[132,1818,1522],{"class":149},[132,1820,1196],{"class":156},[132,1822,1527],{"class":149},[132,1824,1825],{"class":156},"\"normal\"",[132,1827,492],{"class":149},[132,1829,1545],{"class":156},[132,1831,1548],{"class":149},[132,1833,1835],{"class":134,"line":1834},172,[132,1836,1243],{"class":149},[132,1838,1840,1842,1845,1847,1850],{"class":134,"line":1839},173,[132,1841,1331],{"class":149},[132,1843,1844],{"class":156},"\"agentType\"",[132,1846,492],{"class":149},[132,1848,1849],{"class":156},"\"message\"",[132,1851,1220],{"class":149},[132,1853,1855],{"class":134,"line":1854},174,[132,1856,1249],{"class":149},[132,1858,1860],{"class":134,"line":1859},175,[132,1861,1255],{"class":149},[132,1863,1865],{"class":134,"line":1864},176,[132,1866,751],{"class":149},[132,1868,1870],{"class":134,"line":1869},177,[132,1871,466],{"class":149},[132,1873,1875],{"class":134,"line":1874},178,[132,1876,197],{"emptyLinePlaceholder":196},[132,1878,1880,1882,1885,1888],{"class":134,"line":1879},179,[132,1881,335],{"class":145},[132,1883,1884],{"class":145}," async",[132,1886,1887],{"class":325}," executeTools",[132,1889,961],{"class":149},[132,1891,1893,1896,1898,1900,1902,1905],{"class":134,"line":1892},180,[132,1894,1895],{"class":338},"    content",[132,1897,342],{"class":145},[132,1899,345],{"class":325},[132,1901,123],{"class":149},[132,1903,1904],{"class":325},"ContentBlock",[132,1906,1907],{"class":149},"[]\n",[132,1909,1911,1914,1916,1918,1920,1923,1925,1928],{"class":134,"line":1910},181,[132,1912,1913],{"class":149},"  )",[132,1915,342],{"class":145},[132,1917,507],{"class":325},[132,1919,510],{"class":149},[132,1921,1922],{"class":325},"Anthropic",[132,1924,123],{"class":149},[132,1926,1927],{"class":325},"ToolResultBlockParam",[132,1929,1930],{"class":149},"[]> {\n",[132,1932,1934,1936,1939,1941,1943,1945,1947,1949,1951],{"class":134,"line":1933},182,[132,1935,599],{"class":145},[132,1937,1938],{"class":206}," results",[132,1940,342],{"class":145},[132,1942,345],{"class":325},[132,1944,123],{"class":149},[132,1946,1927],{"class":325},[132,1948,729],{"class":149},[132,1950,413],{"class":145},[132,1952,1953],{"class":149}," [];\n",[132,1955,1957],{"class":134,"line":1956},183,[132,1958,197],{"emptyLinePlaceholder":196},[132,1960,1962,1965,1968,1970,1973,1976],{"class":134,"line":1961},184,[132,1963,1964],{"class":145},"    for",[132,1966,1967],{"class":149}," (",[132,1969,203],{"class":145},[132,1971,1972],{"class":206}," block",[132,1974,1975],{"class":145}," of",[132,1977,1978],{"class":149}," content) {\n",[132,1980,1982,1985,1988,1990,1992],{"class":134,"line":1981},185,[132,1983,1984],{"class":145},"      if",[132,1986,1987],{"class":149}," (block.type ",[132,1989,768],{"class":145},[132,1991,771],{"class":156},[132,1993,401],{"class":149},[132,1995,1997,2000,2003,2005,2007,2009,2011,2014],{"class":134,"line":1996},186,[132,1998,1999],{"class":145},"        const",[132,2001,2002],{"class":206}," result",[132,2004,210],{"class":145},[132,2006,607],{"class":145},[132,2008,531],{"class":206},[132,2010,123],{"class":149},[132,2012,2013],{"class":325},"executeTool",[132,2015,2016],{"class":149},"(block.name, block.input);\n",[132,2018,2020,2023,2025],{"class":134,"line":2019},187,[132,2021,2022],{"class":149},"        results.",[132,2024,796],{"class":325},[132,2026,618],{"class":149},[132,2028,2030,2032,2035],{"class":134,"line":2029},188,[132,2031,1164],{"class":149},[132,2033,2034],{"class":156},"\"tool_result\"",[132,2036,552],{"class":149},[132,2038,2040],{"class":134,"line":2039},189,[132,2041,2042],{"class":149},"          tool_use_id: block.id,\n",[132,2044,2046,2049,2052,2054,2057],{"class":134,"line":2045},190,[132,2047,2048],{"class":149},"          content: ",[132,2050,2051],{"class":206},"JSON",[132,2053,123],{"class":149},[132,2055,2056],{"class":325},"stringify",[132,2058,2059],{"class":149},"(result),\n",[132,2061,2063],{"class":134,"line":2062},191,[132,2064,2065],{"class":149},"        });\n",[132,2067,2069],{"class":134,"line":2068},192,[132,2070,2071],{"class":149},"      }\n",[132,2073,2075],{"class":134,"line":2074},193,[132,2076,931],{"class":149},[132,2078,2080],{"class":134,"line":2079},194,[132,2081,197],{"emptyLinePlaceholder":196},[132,2083,2085,2087],{"class":134,"line":2084},195,[132,2086,1081],{"class":145},[132,2088,2089],{"class":149}," results;\n",[132,2091,2093],{"class":134,"line":2092},196,[132,2094,466],{"class":149},[132,2096,2098],{"class":134,"line":2097},197,[132,2099,197],{"emptyLinePlaceholder":196},[132,2101,2103,2105,2107,2110,2112,2115,2117,2119,2121,2124,2126,2129,2131,2133,2135,2137,2140],{"class":134,"line":2102},198,[132,2104,335],{"class":145},[132,2106,1884],{"class":145},[132,2108,2109],{"class":325}," executeTool",[132,2111,391],{"class":149},[132,2113,2114],{"class":338},"name",[132,2116,342],{"class":145},[132,2118,375],{"class":206},[132,2120,492],{"class":149},[132,2122,2123],{"class":338},"input",[132,2125,342],{"class":145},[132,2127,2128],{"class":206}," unknown",[132,2130,502],{"class":149},[132,2132,342],{"class":145},[132,2134,507],{"class":325},[132,2136,510],{"class":149},[132,2138,2139],{"class":206},"unknown",[132,2141,516],{"class":149},[132,2143,2145,2147,2150,2152,2155,2158,2161,2163,2165,2167,2169],{"class":134,"line":2144},199,[132,2146,599],{"class":145},[132,2148,2149],{"class":206}," params",[132,2151,210],{"class":145},[132,2153,2154],{"class":149}," input ",[132,2156,2157],{"class":145},"as",[132,2159,2160],{"class":325}," Record",[132,2162,510],{"class":149},[132,2164,513],{"class":206},[132,2166,492],{"class":149},[132,2168,2139],{"class":206},[132,2170,2171],{"class":149},">;\n",[132,2173,2175],{"class":134,"line":2174},200,[132,2176,197],{"emptyLinePlaceholder":196},[132,2178,2180,2183],{"class":134,"line":2179},201,[132,2181,2182],{"class":145},"    switch",[132,2184,2185],{"class":149}," (name) {\n",[132,2187,2189,2192,2195],{"class":134,"line":2188},202,[132,2190,2191],{"class":145},"      case",[132,2193,2194],{"class":156}," \"get_workspaces\"",[132,2196,2197],{"class":149},":\n",[132,2199,2201,2204,2206,2208,2211],{"class":134,"line":2200},203,[132,2202,2203],{"class":145},"        return",[132,2205,531],{"class":206},[132,2207,534],{"class":149},[132,2209,2210],{"class":325},"query",[132,2212,2213],{"class":149},"(api.workspaces.list, {\n",[132,2215,2217,2220,2222,2224],{"class":134,"line":2216},204,[132,2218,2219],{"class":149},"          status: params.status ",[132,2221,2157],{"class":145},[132,2223,375],{"class":206},[132,2225,552],{"class":149},[132,2227,2229],{"class":134,"line":2228},205,[132,2230,2065],{"class":149},[132,2232,2234],{"class":134,"line":2233},206,[132,2235,197],{"emptyLinePlaceholder":196},[132,2237,2239,2241,2244],{"class":134,"line":2238},207,[132,2240,2191],{"class":145},[132,2242,2243],{"class":156}," \"get_workspace_state\"",[132,2245,2197],{"class":149},[132,2247,2249,2251,2253,2255,2257],{"class":134,"line":2248},208,[132,2250,2203],{"class":145},[132,2252,531],{"class":206},[132,2254,534],{"class":149},[132,2256,2210],{"class":325},[132,2258,2259],{"class":149},"(api.workspaces.getState, {\n",[132,2261,2263,2266,2268,2270],{"class":134,"line":2262},209,[132,2264,2265],{"class":149},"          id: params.workspaceId ",[132,2267,2157],{"class":145},[132,2269,375],{"class":206},[132,2271,552],{"class":149},[132,2273,2275],{"class":134,"line":2274},210,[132,2276,2065],{"class":149},[132,2278,2280],{"class":134,"line":2279},211,[132,2281,197],{"emptyLinePlaceholder":196},[132,2283,2285,2287,2290],{"class":134,"line":2284},212,[132,2286,2191],{"class":145},[132,2288,2289],{"class":156}," \"get_agent_status\"",[132,2291,2197],{"class":149},[132,2293,2295,2297,2299,2301,2303],{"class":134,"line":2294},213,[132,2296,2203],{"class":145},[132,2298,531],{"class":206},[132,2300,534],{"class":149},[132,2302,2210],{"class":325},[132,2304,2305],{"class":149},"(api.agents.getStatus, {\n",[132,2307,2309,2312,2314,2316],{"class":134,"line":2308},214,[132,2310,2311],{"class":149},"          agentId: params.agentId ",[132,2313,2157],{"class":145},[132,2315,375],{"class":206},[132,2317,552],{"class":149},[132,2319,2321],{"class":134,"line":2320},215,[132,2322,2065],{"class":149},[132,2324,2326],{"class":134,"line":2325},216,[132,2327,197],{"emptyLinePlaceholder":196},[132,2329,2331,2333,2336],{"class":134,"line":2330},217,[132,2332,2191],{"class":145},[132,2334,2335],{"class":156}," \"create_task\"",[132,2337,2197],{"class":149},[132,2339,2341,2343,2345,2347,2349],{"class":134,"line":2340},218,[132,2342,2203],{"class":145},[132,2344,531],{"class":206},[132,2346,534],{"class":149},[132,2348,537],{"class":325},[132,2350,2351],{"class":149},"(api.tasks.create, {\n",[132,2353,2355,2358,2360,2362],{"class":134,"line":2354},219,[132,2356,2357],{"class":149},"          workspaceId: params.workspaceId ",[132,2359,2157],{"class":145},[132,2361,375],{"class":206},[132,2363,552],{"class":149},[132,2365,2367,2370,2372,2374],{"class":134,"line":2366},220,[132,2368,2369],{"class":149},"          title: params.title ",[132,2371,2157],{"class":145},[132,2373,375],{"class":206},[132,2375,552],{"class":149},[132,2377,2379,2382,2384,2386],{"class":134,"line":2378},221,[132,2380,2381],{"class":149},"          description: params.description ",[132,2383,2157],{"class":145},[132,2385,375],{"class":206},[132,2387,552],{"class":149},[132,2389,2391,2394,2396,2398],{"class":134,"line":2390},222,[132,2392,2393],{"class":149},"          priority: params.priority ",[132,2395,2157],{"class":145},[132,2397,375],{"class":206},[132,2399,552],{"class":149},[132,2401,2403,2406,2408,2410],{"class":134,"line":2402},223,[132,2404,2405],{"class":149},"          assignTo: params.assignTo ",[132,2407,2157],{"class":145},[132,2409,375],{"class":206},[132,2411,552],{"class":149},[132,2413,2415],{"class":134,"line":2414},224,[132,2416,2065],{"class":149},[132,2418,2420],{"class":134,"line":2419},225,[132,2421,197],{"emptyLinePlaceholder":196},[132,2423,2425,2427,2430],{"class":134,"line":2424},226,[132,2426,2191],{"class":145},[132,2428,2429],{"class":156}," \"get_recent_activity\"",[132,2431,2197],{"class":149},[132,2433,2435,2437,2439,2441,2443],{"class":134,"line":2434},227,[132,2436,2203],{"class":145},[132,2438,531],{"class":206},[132,2440,534],{"class":149},[132,2442,2210],{"class":325},[132,2444,2445],{"class":149},"(api.events.getRecent, {\n",[132,2447,2449,2451,2453,2455],{"class":134,"line":2448},228,[132,2450,2357],{"class":149},[132,2452,2157],{"class":145},[132,2454,375],{"class":206},[132,2456,552],{"class":149},[132,2458,2460,2462,2464,2466],{"class":134,"line":2459},229,[132,2461,2311],{"class":149},[132,2463,2157],{"class":145},[132,2465,375],{"class":206},[132,2467,552],{"class":149},[132,2469,2471,2474,2476,2479,2481,2483,2486],{"class":134,"line":2470},230,[132,2472,2473],{"class":149},"          limit: (params.limit ",[132,2475,2157],{"class":145},[132,2477,2478],{"class":206}," number",[132,2480,973],{"class":149},[132,2482,1006],{"class":145},[132,2484,2485],{"class":206}," 20",[132,2487,552],{"class":149},[132,2489,2491],{"class":134,"line":2490},231,[132,2492,2065],{"class":149},[132,2494,2496],{"class":134,"line":2495},232,[132,2497,197],{"emptyLinePlaceholder":196},[132,2499,2501,2503,2506],{"class":134,"line":2500},233,[132,2502,2191],{"class":145},[132,2504,2505],{"class":156}," \"send_to_agent\"",[132,2507,2197],{"class":149},[132,2509,2511,2513,2515,2517,2519],{"class":134,"line":2510},234,[132,2512,2203],{"class":145},[132,2514,531],{"class":206},[132,2516,534],{"class":149},[132,2518,537],{"class":325},[132,2520,2521],{"class":149},"(api.agents.sendMessage, {\n",[132,2523,2525,2528,2530,2532],{"class":134,"line":2524},235,[132,2526,2527],{"class":149},"          agentType: params.agentType ",[132,2529,2157],{"class":145},[132,2531,375],{"class":206},[132,2533,552],{"class":149},[132,2535,2537,2540,2542,2544],{"class":134,"line":2536},236,[132,2538,2539],{"class":149},"          taskId: params.taskId ",[132,2541,2157],{"class":145},[132,2543,375],{"class":206},[132,2545,552],{"class":149},[132,2547,2549,2552,2554,2556],{"class":134,"line":2548},237,[132,2550,2551],{"class":149},"          message: params.message ",[132,2553,2157],{"class":145},[132,2555,375],{"class":206},[132,2557,552],{"class":149},[132,2559,2561,2563,2565,2567],{"class":134,"line":2560},238,[132,2562,2393],{"class":149},[132,2564,2157],{"class":145},[132,2566,375],{"class":206},[132,2568,552],{"class":149},[132,2570,2572],{"class":134,"line":2571},239,[132,2573,2065],{"class":149},[132,2575,2577],{"class":134,"line":2576},240,[132,2578,197],{"emptyLinePlaceholder":196},[132,2580,2582,2585],{"class":134,"line":2581},241,[132,2583,2584],{"class":145},"      default",[132,2586,2197],{"class":149},[132,2588,2590,2592,2595,2598,2600,2603],{"class":134,"line":2589},242,[132,2591,2203],{"class":145},[132,2593,2594],{"class":149}," { error: ",[132,2596,2597],{"class":156},"`Unknown tool: ${",[132,2599,2114],{"class":149},[132,2601,2602],{"class":156},"}`",[132,2604,2605],{"class":149}," };\n",[132,2607,2609],{"class":134,"line":2608},243,[132,2610,931],{"class":149},[132,2612,2614],{"class":134,"line":2613},244,[132,2615,466],{"class":149},[132,2617,2619],{"class":134,"line":2618},245,[132,2620,2621],{"class":149},"}\n",[109,2623,2625],{"id":2624},"_2-mission-control-convex-database","2. Mission Control (Convex Database)",[15,2627,2628,2629,2632,2633,2638],{},"Mission Control is the ",[19,2630,2631],{},"single source of truth"," for all system state. We use ",[24,2634,2637],{"href":2635,"rel":2636},"https://convex.dev",[28],"Convex"," for its real-time subscriptions and seamless TypeScript integration.",[94,2640,2642],{"className":126,"code":2641,"language":128,"meta":103,"style":103},"// convex/schema.ts\nimport { defineSchema, defineTable } from \"convex/server\";\nimport { v } from \"convex/values\";\n\nexport default defineSchema({\n  // Workspaces/Projects\n  workspaces: defineTable({\n    name: v.string(),\n    description: v.string(),\n    repoUrl: v.optional(v.string()),\n    status: v.union(v.literal(\"active\"), v.literal(\"paused\"), v.literal(\"archived\")),\n    createdAt: v.number(),\n    updatedAt: v.number(),\n    metadata: v.optional(v.any()),\n  }).index(\"by_status\", [\"status\"]),\n\n  // Agent Registry\n  agents: defineTable({\n    type: v.union(\n      v.literal(\"concierge\"),\n      v.literal(\"coder\"),\n      v.literal(\"reviewer\"),\n      v.literal(\"tester\"),\n      v.literal(\"architect\"),\n      v.literal(\"devops\")\n    ),\n    instanceId: v.string(),\n    status: v.union(v.literal(\"idle\"), v.literal(\"busy\"), v.literal(\"offline\")),\n    currentTaskId: v.optional(v.id(\"tasks\")),\n    lastHeartbeat: v.number(),\n    capabilities: v.array(v.string()),\n    metadata: v.optional(v.any()),\n  })\n    .index(\"by_type\", [\"type\"])\n    .index(\"by_status\", [\"status\"]),\n\n  // Task Queue\n  tasks: defineTable({\n    workspaceId: v.id(\"workspaces\"),\n    title: v.string(),\n    description: v.string(),\n    status: v.union(\n      v.literal(\"pending\"),\n      v.literal(\"assigned\"),\n      v.literal(\"in_progress\"),\n      v.literal(\"review\"),\n      v.literal(\"completed\"),\n      v.literal(\"failed\")\n    ),\n    priority: v.union(\n      v.literal(\"low\"),\n      v.literal(\"medium\"),\n      v.literal(\"high\"),\n      v.literal(\"urgent\")\n    ),\n    assignedAgentId: v.optional(v.id(\"agents\")),\n    assignedAgentType: v.optional(v.string()),\n    createdAt: v.number(),\n    updatedAt: v.number(),\n    completedAt: v.optional(v.number()),\n    result: v.optional(v.any()),\n    parentTaskId: v.optional(v.id(\"tasks\")),\n  })\n    .index(\"by_workspace\", [\"workspaceId\"])\n    .index(\"by_status\", [\"status\"])\n    .index(\"by_agent\", [\"assignedAgentId\"]),\n\n  // Event Log (Activity Stream)\n  events: defineTable({\n    type: v.string(),\n    workspaceId: v.optional(v.id(\"workspaces\")),\n    agentId: v.optional(v.id(\"agents\")),\n    taskId: v.optional(v.id(\"tasks\")),\n    channelId: v.optional(v.string()),\n    userId: v.optional(v.string()),\n    content: v.string(),\n    metadata: v.optional(v.any()),\n    timestamp: v.number(),\n  })\n    .index(\"by_workspace\", [\"workspaceId\", \"timestamp\"])\n    .index(\"by_agent\", [\"agentId\", \"timestamp\"])\n    .index(\"by_type\", [\"type\", \"timestamp\"]),\n\n  // Agent Messages (Inter-agent communication)\n  messages: defineTable({\n    fromAgentId: v.optional(v.id(\"agents\")),\n    toAgentType: v.string(),\n    taskId: v.optional(v.id(\"tasks\")),\n    content: v.string(),\n    priority: v.union(v.literal(\"normal\"), v.literal(\"urgent\")),\n    status: v.union(v.literal(\"pending\"), v.literal(\"delivered\"), v.literal(\"processed\")),\n    createdAt: v.number(),\n    processedAt: v.optional(v.number()),\n  })\n    .index(\"by_recipient\", [\"toAgentType\", \"status\"])\n    .index(\"by_task\", [\"taskId\"]),\n});\n",[101,2643,2644,2649,2663,2677,2681,2693,2698,2708,2717,2726,2742,2780,2790,2799,2813,2835,2839,2844,2853,2862,2877,2889,2901,2913,2925,2938,2943,2952,2987,3006,3015,3029,3041,3046,3066,3082,3086,3091,3100,3114,3123,3131,3139,3152,3165,3178,3191,3204,3217,3221,3230,3242,3254,3266,3278,3282,3300,3313,3321,3329,3342,3355,3372,3376,3393,3409,3427,3431,3436,3445,3453,3469,3486,3503,3516,3529,3538,3550,3559,3563,3584,3605,3625,3629,3634,3643,3660,3669,3685,3693,3717,3751,3759,3772,3776,3798,3816],{"__ignoreMap":103},[132,2645,2646],{"class":134,"line":135},[132,2647,2648],{"class":138},"// convex/schema.ts\n",[132,2650,2651,2653,2656,2658,2661],{"class":134,"line":142},[132,2652,146],{"class":145},[132,2654,2655],{"class":149}," { defineSchema, defineTable } ",[132,2657,153],{"class":145},[132,2659,2660],{"class":156}," \"convex/server\"",[132,2662,160],{"class":149},[132,2664,2665,2667,2670,2672,2675],{"class":134,"line":163},[132,2666,146],{"class":145},[132,2668,2669],{"class":149}," { v } ",[132,2671,153],{"class":145},[132,2673,2674],{"class":156}," \"convex/values\"",[132,2676,160],{"class":149},[132,2678,2679],{"class":134,"line":178},[132,2680,197],{"emptyLinePlaceholder":196},[132,2682,2683,2685,2688,2691],{"class":134,"line":193},[132,2684,319],{"class":145},[132,2686,2687],{"class":145}," default",[132,2689,2690],{"class":325}," defineSchema",[132,2692,618],{"class":149},[132,2694,2695],{"class":134,"line":200},[132,2696,2697],{"class":138},"  // Workspaces/Projects\n",[132,2699,2700,2703,2706],{"class":134,"line":216},[132,2701,2702],{"class":149},"  workspaces: ",[132,2704,2705],{"class":325},"defineTable",[132,2707,618],{"class":149},[132,2709,2710,2713,2715],{"class":134,"line":221},[132,2711,2712],{"class":149},"    name: v.",[132,2714,513],{"class":325},[132,2716,667],{"class":149},[132,2718,2719,2722,2724],{"class":134,"line":227},[132,2720,2721],{"class":149},"    description: v.",[132,2723,513],{"class":325},[132,2725,667],{"class":149},[132,2727,2728,2731,2734,2737,2739],{"class":134,"line":233},[132,2729,2730],{"class":149},"    repoUrl: v.",[132,2732,2733],{"class":325},"optional",[132,2735,2736],{"class":149},"(v.",[132,2738,513],{"class":325},[132,2740,2741],{"class":149},"()),\n",[132,2743,2744,2747,2750,2752,2755,2757,2759,2762,2764,2766,2769,2771,2773,2775,2777],{"class":134,"line":239},[132,2745,2746],{"class":149},"    status: v.",[132,2748,2749],{"class":325},"union",[132,2751,2736],{"class":149},[132,2753,2754],{"class":325},"literal",[132,2756,391],{"class":149},[132,2758,1207],{"class":156},[132,2760,2761],{"class":149},"), v.",[132,2763,2754],{"class":325},[132,2765,391],{"class":149},[132,2767,2768],{"class":156},"\"paused\"",[132,2770,2761],{"class":149},[132,2772,2754],{"class":325},[132,2774,391],{"class":149},[132,2776,1212],{"class":156},[132,2778,2779],{"class":149},")),\n",[132,2781,2782,2785,2788],{"class":134,"line":245},[132,2783,2784],{"class":149},"    createdAt: v.",[132,2786,2787],{"class":325},"number",[132,2789,667],{"class":149},[132,2791,2792,2795,2797],{"class":134,"line":251},[132,2793,2794],{"class":149},"    updatedAt: v.",[132,2796,2787],{"class":325},[132,2798,667],{"class":149},[132,2800,2801,2804,2806,2808,2811],{"class":134,"line":256},[132,2802,2803],{"class":149},"    metadata: v.",[132,2805,2733],{"class":325},[132,2807,2736],{"class":149},[132,2809,2810],{"class":325},"any",[132,2812,2741],{"class":149},[132,2814,2815,2818,2821,2823,2826,2829,2832],{"class":134,"line":262},[132,2816,2817],{"class":149},"  }).",[132,2819,2820],{"class":325},"index",[132,2822,391],{"class":149},[132,2824,2825],{"class":156},"\"by_status\"",[132,2827,2828],{"class":149},", [",[132,2830,2831],{"class":156},"\"status\"",[132,2833,2834],{"class":149},"]),\n",[132,2836,2837],{"class":134,"line":268},[132,2838,197],{"emptyLinePlaceholder":196},[132,2840,2841],{"class":134,"line":274},[132,2842,2843],{"class":138},"  // Agent Registry\n",[132,2845,2846,2849,2851],{"class":134,"line":280},[132,2847,2848],{"class":149},"  agents: ",[132,2850,2705],{"class":325},[132,2852,618],{"class":149},[132,2854,2855,2858,2860],{"class":134,"line":286},[132,2856,2857],{"class":149},"    type: v.",[132,2859,2749],{"class":325},[132,2861,961],{"class":149},[132,2863,2864,2867,2869,2871,2874],{"class":134,"line":291},[132,2865,2866],{"class":149},"      v.",[132,2868,2754],{"class":325},[132,2870,391],{"class":149},[132,2872,2873],{"class":156},"\"concierge\"",[132,2875,2876],{"class":149},"),\n",[132,2878,2879,2881,2883,2885,2887],{"class":134,"line":297},[132,2880,2866],{"class":149},[132,2882,2754],{"class":325},[132,2884,391],{"class":149},[132,2886,1766],{"class":156},[132,2888,2876],{"class":149},[132,2890,2891,2893,2895,2897,2899],{"class":134,"line":303},[132,2892,2866],{"class":149},[132,2894,2754],{"class":325},[132,2896,391],{"class":149},[132,2898,1771],{"class":156},[132,2900,2876],{"class":149},[132,2902,2903,2905,2907,2909,2911],{"class":134,"line":311},[132,2904,2866],{"class":149},[132,2906,2754],{"class":325},[132,2908,391],{"class":149},[132,2910,1776],{"class":156},[132,2912,2876],{"class":149},[132,2914,2915,2917,2919,2921,2923],{"class":134,"line":316},[132,2916,2866],{"class":149},[132,2918,2754],{"class":325},[132,2920,391],{"class":149},[132,2922,1781],{"class":156},[132,2924,2876],{"class":149},[132,2926,2927,2929,2931,2933,2935],{"class":134,"line":332},[132,2928,2866],{"class":149},[132,2930,2754],{"class":325},[132,2932,391],{"class":149},[132,2934,1786],{"class":156},[132,2936,2937],{"class":149},")\n",[132,2939,2940],{"class":134,"line":350},[132,2941,2942],{"class":149},"    ),\n",[132,2944,2945,2948,2950],{"class":134,"line":365},[132,2946,2947],{"class":149},"    instanceId: v.",[132,2949,513],{"class":325},[132,2951,667],{"class":149},[132,2953,2954,2956,2958,2960,2962,2964,2967,2969,2971,2973,2976,2978,2980,2982,2985],{"class":134,"line":380},[132,2955,2746],{"class":149},[132,2957,2749],{"class":325},[132,2959,2736],{"class":149},[132,2961,2754],{"class":325},[132,2963,391],{"class":149},[132,2965,2966],{"class":156},"\"idle\"",[132,2968,2761],{"class":149},[132,2970,2754],{"class":325},[132,2972,391],{"class":149},[132,2974,2975],{"class":156},"\"busy\"",[132,2977,2761],{"class":149},[132,2979,2754],{"class":325},[132,2981,391],{"class":149},[132,2983,2984],{"class":156},"\"offline\"",[132,2986,2779],{"class":149},[132,2988,2989,2992,2994,2996,2999,3001,3004],{"class":134,"line":385},[132,2990,2991],{"class":149},"    currentTaskId: v.",[132,2993,2733],{"class":325},[132,2995,2736],{"class":149},[132,2997,2998],{"class":325},"id",[132,3000,391],{"class":149},[132,3002,3003],{"class":156},"\"tasks\"",[132,3005,2779],{"class":149},[132,3007,3008,3011,3013],{"class":134,"line":404},[132,3009,3010],{"class":149},"    lastHeartbeat: v.",[132,3012,2787],{"class":325},[132,3014,667],{"class":149},[132,3016,3017,3020,3023,3025,3027],{"class":134,"line":424},[132,3018,3019],{"class":149},"    capabilities: v.",[132,3021,3022],{"class":325},"array",[132,3024,2736],{"class":149},[132,3026,513],{"class":325},[132,3028,2741],{"class":149},[132,3030,3031,3033,3035,3037,3039],{"class":134,"line":450},[132,3032,2803],{"class":149},[132,3034,2733],{"class":325},[132,3036,2736],{"class":149},[132,3038,2810],{"class":325},[132,3040,2741],{"class":149},[132,3042,3043],{"class":134,"line":463},[132,3044,3045],{"class":149},"  })\n",[132,3047,3048,3051,3053,3055,3058,3060,3063],{"class":134,"line":469},[132,3049,3050],{"class":149},"    .",[132,3052,2820],{"class":325},[132,3054,391],{"class":149},[132,3056,3057],{"class":156},"\"by_type\"",[132,3059,2828],{"class":149},[132,3061,3062],{"class":156},"\"type\"",[132,3064,3065],{"class":149},"])\n",[132,3067,3068,3070,3072,3074,3076,3078,3080],{"class":134,"line":474},[132,3069,3050],{"class":149},[132,3071,2820],{"class":325},[132,3073,391],{"class":149},[132,3075,2825],{"class":156},[132,3077,2828],{"class":149},[132,3079,2831],{"class":156},[132,3081,2834],{"class":149},[132,3083,3084],{"class":134,"line":519},[132,3085,197],{"emptyLinePlaceholder":196},[132,3087,3088],{"class":134,"line":525},[132,3089,3090],{"class":138},"  // Task Queue\n",[132,3092,3093,3096,3098],{"class":134,"line":543},[132,3094,3095],{"class":149},"  tasks: ",[132,3097,2705],{"class":325},[132,3099,618],{"class":149},[132,3101,3102,3105,3107,3109,3112],{"class":134,"line":555},[132,3103,3104],{"class":149},"    workspaceId: v.",[132,3106,2998],{"class":325},[132,3108,391],{"class":149},[132,3110,3111],{"class":156},"\"workspaces\"",[132,3113,2876],{"class":149},[132,3115,3116,3119,3121],{"class":134,"line":567},[132,3117,3118],{"class":149},"    title: v.",[132,3120,513],{"class":325},[132,3122,667],{"class":149},[132,3124,3125,3127,3129],{"class":134,"line":573},[132,3126,2721],{"class":149},[132,3128,513],{"class":325},[132,3130,667],{"class":149},[132,3132,3133,3135,3137],{"class":134,"line":579},[132,3134,2746],{"class":149},[132,3136,2749],{"class":325},[132,3138,961],{"class":149},[132,3140,3141,3143,3145,3147,3150],{"class":134,"line":585},[132,3142,2866],{"class":149},[132,3144,2754],{"class":325},[132,3146,391],{"class":149},[132,3148,3149],{"class":156},"\"pending\"",[132,3151,2876],{"class":149},[132,3153,3154,3156,3158,3160,3163],{"class":134,"line":590},[132,3155,2866],{"class":149},[132,3157,2754],{"class":325},[132,3159,391],{"class":149},[132,3161,3162],{"class":156},"\"assigned\"",[132,3164,2876],{"class":149},[132,3166,3167,3169,3171,3173,3176],{"class":134,"line":596},[132,3168,2866],{"class":149},[132,3170,2754],{"class":325},[132,3172,391],{"class":149},[132,3174,3175],{"class":156},"\"in_progress\"",[132,3177,2876],{"class":149},[132,3179,3180,3182,3184,3186,3189],{"class":134,"line":621},[132,3181,2866],{"class":149},[132,3183,2754],{"class":325},[132,3185,391],{"class":149},[132,3187,3188],{"class":156},"\"review\"",[132,3190,2876],{"class":149},[132,3192,3193,3195,3197,3199,3202],{"class":134,"line":632},[132,3194,2866],{"class":149},[132,3196,2754],{"class":325},[132,3198,391],{"class":149},[132,3200,3201],{"class":156},"\"completed\"",[132,3203,2876],{"class":149},[132,3205,3206,3208,3210,3212,3215],{"class":134,"line":643},[132,3207,2866],{"class":149},[132,3209,2754],{"class":325},[132,3211,391],{"class":149},[132,3213,3214],{"class":156},"\"failed\"",[132,3216,2937],{"class":149},[132,3218,3219],{"class":134,"line":654},[132,3220,2942],{"class":149},[132,3222,3223,3226,3228],{"class":134,"line":670},[132,3224,3225],{"class":149},"    priority: v.",[132,3227,2749],{"class":325},[132,3229,961],{"class":149},[132,3231,3232,3234,3236,3238,3240],{"class":134,"line":682},[132,3233,2866],{"class":149},[132,3235,2754],{"class":325},[132,3237,391],{"class":149},[132,3239,1530],{"class":156},[132,3241,2876],{"class":149},[132,3243,3244,3246,3248,3250,3252],{"class":134,"line":687},[132,3245,2866],{"class":149},[132,3247,2754],{"class":325},[132,3249,391],{"class":149},[132,3251,1535],{"class":156},[132,3253,2876],{"class":149},[132,3255,3256,3258,3260,3262,3264],{"class":134,"line":692},[132,3257,2866],{"class":149},[132,3259,2754],{"class":325},[132,3261,391],{"class":149},[132,3263,1540],{"class":156},[132,3265,2876],{"class":149},[132,3267,3268,3270,3272,3274,3276],{"class":134,"line":698},[132,3269,2866],{"class":149},[132,3271,2754],{"class":325},[132,3273,391],{"class":149},[132,3275,1545],{"class":156},[132,3277,2937],{"class":149},[132,3279,3280],{"class":134,"line":712},[132,3281,2942],{"class":149},[132,3283,3284,3287,3289,3291,3293,3295,3298],{"class":134,"line":737},[132,3285,3286],{"class":149},"    assignedAgentId: v.",[132,3288,2733],{"class":325},[132,3290,2736],{"class":149},[132,3292,2998],{"class":325},[132,3294,391],{"class":149},[132,3296,3297],{"class":156},"\"agents\"",[132,3299,2779],{"class":149},[132,3301,3302,3305,3307,3309,3311],{"class":134,"line":748},[132,3303,3304],{"class":149},"    assignedAgentType: v.",[132,3306,2733],{"class":325},[132,3308,2736],{"class":149},[132,3310,513],{"class":325},[132,3312,2741],{"class":149},[132,3314,3315,3317,3319],{"class":134,"line":754},[132,3316,2784],{"class":149},[132,3318,2787],{"class":325},[132,3320,667],{"class":149},[132,3322,3323,3325,3327],{"class":134,"line":759},[132,3324,2794],{"class":149},[132,3326,2787],{"class":325},[132,3328,667],{"class":149},[132,3330,3331,3334,3336,3338,3340],{"class":134,"line":776},[132,3332,3333],{"class":149},"    completedAt: v.",[132,3335,2733],{"class":325},[132,3337,2736],{"class":149},[132,3339,2787],{"class":325},[132,3341,2741],{"class":149},[132,3343,3344,3347,3349,3351,3353],{"class":134,"line":790},[132,3345,3346],{"class":149},"    result: v.",[132,3348,2733],{"class":325},[132,3350,2736],{"class":149},[132,3352,2810],{"class":325},[132,3354,2741],{"class":149},[132,3356,3357,3360,3362,3364,3366,3368,3370],{"class":134,"line":808},[132,3358,3359],{"class":149},"    parentTaskId: v.",[132,3361,2733],{"class":325},[132,3363,2736],{"class":149},[132,3365,2998],{"class":325},[132,3367,391],{"class":149},[132,3369,3003],{"class":156},[132,3371,2779],{"class":149},[132,3373,3374],{"class":134,"line":813},[132,3375,3045],{"class":149},[132,3377,3378,3380,3382,3384,3387,3389,3391],{"class":134,"line":835},[132,3379,3050],{"class":149},[132,3381,2820],{"class":325},[132,3383,391],{"class":149},[132,3385,3386],{"class":156},"\"by_workspace\"",[132,3388,2828],{"class":149},[132,3390,1334],{"class":156},[132,3392,3065],{"class":149},[132,3394,3395,3397,3399,3401,3403,3405,3407],{"class":134,"line":849},[132,3396,3050],{"class":149},[132,3398,2820],{"class":325},[132,3400,391],{"class":149},[132,3402,2825],{"class":156},[132,3404,2828],{"class":149},[132,3406,2831],{"class":156},[132,3408,3065],{"class":149},[132,3410,3411,3413,3415,3417,3420,3422,3425],{"class":134,"line":854},[132,3412,3050],{"class":149},[132,3414,2820],{"class":325},[132,3416,391],{"class":149},[132,3418,3419],{"class":156},"\"by_agent\"",[132,3421,2828],{"class":149},[132,3423,3424],{"class":156},"\"assignedAgentId\"",[132,3426,2834],{"class":149},[132,3428,3429],{"class":134,"line":872},[132,3430,197],{"emptyLinePlaceholder":196},[132,3432,3433],{"class":134,"line":882},[132,3434,3435],{"class":138},"  // Event Log (Activity Stream)\n",[132,3437,3438,3441,3443],{"class":134,"line":892},[132,3439,3440],{"class":149},"  events: ",[132,3442,2705],{"class":325},[132,3444,618],{"class":149},[132,3446,3447,3449,3451],{"class":134,"line":902},[132,3448,2857],{"class":149},[132,3450,513],{"class":325},[132,3452,667],{"class":149},[132,3454,3455,3457,3459,3461,3463,3465,3467],{"class":134,"line":916},[132,3456,3104],{"class":149},[132,3458,2733],{"class":325},[132,3460,2736],{"class":149},[132,3462,2998],{"class":325},[132,3464,391],{"class":149},[132,3466,3111],{"class":156},[132,3468,2779],{"class":149},[132,3470,3471,3474,3476,3478,3480,3482,3484],{"class":134,"line":922},[132,3472,3473],{"class":149},"    agentId: v.",[132,3475,2733],{"class":325},[132,3477,2736],{"class":149},[132,3479,2998],{"class":325},[132,3481,391],{"class":149},[132,3483,3297],{"class":156},[132,3485,2779],{"class":149},[132,3487,3488,3491,3493,3495,3497,3499,3501],{"class":134,"line":928},[132,3489,3490],{"class":149},"    taskId: v.",[132,3492,2733],{"class":325},[132,3494,2736],{"class":149},[132,3496,2998],{"class":325},[132,3498,391],{"class":149},[132,3500,3003],{"class":156},[132,3502,2779],{"class":149},[132,3504,3505,3508,3510,3512,3514],{"class":134,"line":934},[132,3506,3507],{"class":149},"    channelId: v.",[132,3509,2733],{"class":325},[132,3511,2736],{"class":149},[132,3513,513],{"class":325},[132,3515,2741],{"class":149},[132,3517,3518,3521,3523,3525,3527],{"class":134,"line":939},[132,3519,3520],{"class":149},"    userId: v.",[132,3522,2733],{"class":325},[132,3524,2736],{"class":149},[132,3526,513],{"class":325},[132,3528,2741],{"class":149},[132,3530,3531,3534,3536],{"class":134,"line":945},[132,3532,3533],{"class":149},"    content: v.",[132,3535,513],{"class":325},[132,3537,667],{"class":149},[132,3539,3540,3542,3544,3546,3548],{"class":134,"line":964},[132,3541,2803],{"class":149},[132,3543,2733],{"class":325},[132,3545,2736],{"class":149},[132,3547,2810],{"class":325},[132,3549,2741],{"class":149},[132,3551,3552,3555,3557],{"class":134,"line":987},[132,3553,3554],{"class":149},"    timestamp: v.",[132,3556,2787],{"class":325},[132,3558,667],{"class":149},[132,3560,3561],{"class":134,"line":993},[132,3562,3045],{"class":149},[132,3564,3565,3567,3569,3571,3573,3575,3577,3579,3582],{"class":134,"line":1014},[132,3566,3050],{"class":149},[132,3568,2820],{"class":325},[132,3570,391],{"class":149},[132,3572,3386],{"class":156},[132,3574,2828],{"class":149},[132,3576,1334],{"class":156},[132,3578,492],{"class":149},[132,3580,3581],{"class":156},"\"timestamp\"",[132,3583,3065],{"class":149},[132,3585,3586,3588,3590,3592,3594,3596,3599,3601,3603],{"class":134,"line":1019},[132,3587,3050],{"class":149},[132,3589,2820],{"class":325},[132,3591,391],{"class":149},[132,3593,3419],{"class":156},[132,3595,2828],{"class":149},[132,3597,3598],{"class":156},"\"agentId\"",[132,3600,492],{"class":149},[132,3602,3581],{"class":156},[132,3604,3065],{"class":149},[132,3606,3607,3609,3611,3613,3615,3617,3619,3621,3623],{"class":134,"line":1025},[132,3608,3050],{"class":149},[132,3610,2820],{"class":325},[132,3612,391],{"class":149},[132,3614,3057],{"class":156},[132,3616,2828],{"class":149},[132,3618,3062],{"class":156},[132,3620,492],{"class":149},[132,3622,3581],{"class":156},[132,3624,2834],{"class":149},[132,3626,3627],{"class":134,"line":1038},[132,3628,197],{"emptyLinePlaceholder":196},[132,3630,3631],{"class":134,"line":1048},[132,3632,3633],{"class":138},"  // Agent Messages (Inter-agent communication)\n",[132,3635,3636,3639,3641],{"class":134,"line":1057},[132,3637,3638],{"class":149},"  messages: ",[132,3640,2705],{"class":325},[132,3642,618],{"class":149},[132,3644,3645,3648,3650,3652,3654,3656,3658],{"class":134,"line":1062},[132,3646,3647],{"class":149},"    fromAgentId: v.",[132,3649,2733],{"class":325},[132,3651,2736],{"class":149},[132,3653,2998],{"class":325},[132,3655,391],{"class":149},[132,3657,3297],{"class":156},[132,3659,2779],{"class":149},[132,3661,3662,3665,3667],{"class":134,"line":1068},[132,3663,3664],{"class":149},"    toAgentType: v.",[132,3666,513],{"class":325},[132,3668,667],{"class":149},[132,3670,3671,3673,3675,3677,3679,3681,3683],{"class":134,"line":1073},[132,3672,3490],{"class":149},[132,3674,2733],{"class":325},[132,3676,2736],{"class":149},[132,3678,2998],{"class":325},[132,3680,391],{"class":149},[132,3682,3003],{"class":156},[132,3684,2779],{"class":149},[132,3686,3687,3689,3691],{"class":134,"line":1078},[132,3688,3533],{"class":149},[132,3690,513],{"class":325},[132,3692,667],{"class":149},[132,3694,3695,3697,3699,3701,3703,3705,3707,3709,3711,3713,3715],{"class":134,"line":1087},[132,3696,3225],{"class":149},[132,3698,2749],{"class":325},[132,3700,2736],{"class":149},[132,3702,2754],{"class":325},[132,3704,391],{"class":149},[132,3706,1825],{"class":156},[132,3708,2761],{"class":149},[132,3710,2754],{"class":325},[132,3712,391],{"class":149},[132,3714,1545],{"class":156},[132,3716,2779],{"class":149},[132,3718,3719,3721,3723,3725,3727,3729,3731,3733,3735,3737,3740,3742,3744,3746,3749],{"class":134,"line":1092},[132,3720,2746],{"class":149},[132,3722,2749],{"class":325},[132,3724,2736],{"class":149},[132,3726,2754],{"class":325},[132,3728,391],{"class":149},[132,3730,3149],{"class":156},[132,3732,2761],{"class":149},[132,3734,2754],{"class":325},[132,3736,391],{"class":149},[132,3738,3739],{"class":156},"\"delivered\"",[132,3741,2761],{"class":149},[132,3743,2754],{"class":325},[132,3745,391],{"class":149},[132,3747,3748],{"class":156},"\"processed\"",[132,3750,2779],{"class":149},[132,3752,3753,3755,3757],{"class":134,"line":1097},[132,3754,2784],{"class":149},[132,3756,2787],{"class":325},[132,3758,667],{"class":149},[132,3760,3761,3764,3766,3768,3770],{"class":134,"line":1120},[132,3762,3763],{"class":149},"    processedAt: v.",[132,3765,2733],{"class":325},[132,3767,2736],{"class":149},[132,3769,2787],{"class":325},[132,3771,2741],{"class":149},[132,3773,3774],{"class":134,"line":1127},[132,3775,3045],{"class":149},[132,3777,3778,3780,3782,3784,3787,3789,3792,3794,3796],{"class":134,"line":1133},[132,3779,3050],{"class":149},[132,3781,2820],{"class":325},[132,3783,391],{"class":149},[132,3785,3786],{"class":156},"\"by_recipient\"",[132,3788,2828],{"class":149},[132,3790,3791],{"class":156},"\"toAgentType\"",[132,3793,492],{"class":149},[132,3795,2831],{"class":156},[132,3797,3065],{"class":149},[132,3799,3800,3802,3804,3806,3809,3811,3814],{"class":134,"line":1144},[132,3801,3050],{"class":149},[132,3803,2820],{"class":325},[132,3805,391],{"class":149},[132,3807,3808],{"class":156},"\"by_task\"",[132,3810,2828],{"class":149},[132,3812,3813],{"class":156},"\"taskId\"",[132,3815,2834],{"class":149},[132,3817,3818],{"class":134,"line":1155},[132,3819,3820],{"class":149},"});\n",[94,3822,3824],{"className":126,"code":3823,"language":128,"meta":103,"style":103},"// convex/workspaces.ts\nimport { query, mutation } from \"./_generated/server\";\nimport { v } from \"convex/values\";\n\nexport const list = query({\n  args: { status: v.optional(v.string()) },\n  handler: async (ctx, args) => {\n    if (args.status && args.status !== \"all\") {\n      return ctx.db\n        .query(\"workspaces\")\n        .withIndex(\"by_status\", (q) => q.eq(\"status\", args.status as any))\n        .collect();\n    }\n    return ctx.db.query(\"workspaces\").collect();\n  },\n});\n\nexport const getState = query({\n  args: { id: v.string() },\n  handler: async (ctx, args) => {\n    const workspace = await ctx.db\n      .query(\"workspaces\")\n      .filter((q) => q.eq(q.field(\"_id\"), args.id))\n      .first();\n\n    if (!workspace) return null;\n\n    // Get active tasks\n    const tasks = await ctx.db\n      .query(\"tasks\")\n      .withIndex(\"by_workspace\", (q) => q.eq(\"workspaceId\", workspace._id))\n      .collect();\n\n    // Get recent events\n    const events = await ctx.db\n      .query(\"events\")\n      .withIndex(\"by_workspace\", (q) => q.eq(\"workspaceId\", workspace._id))\n      .order(\"desc\")\n      .take(10);\n\n    // Calculate stats\n    const stats = {\n      totalTasks: tasks.length,\n      pendingTasks: tasks.filter((t) => t.status === \"pending\").length,\n      inProgressTasks: tasks.filter((t) => t.status === \"in_progress\").length,\n      completedTasks: tasks.filter((t) => t.status === \"completed\").length,\n    };\n\n    return {\n      ...workspace,\n      tasks,\n      recentEvents: events,\n      stats,\n    };\n  },\n});\n\nexport const create = mutation({\n  args: {\n    name: v.string(),\n    description: v.string(),\n    repoUrl: v.optional(v.string()),\n  },\n  handler: async (ctx, args) => {\n    const now = Date.now();\n    return ctx.db.insert(\"workspaces\", {\n      ...args,\n      status: \"active\",\n      createdAt: now,\n      updatedAt: now,\n    });\n  },\n});\n",[101,3825,3826,3831,3845,3857,3861,3877,3891,3918,3940,3948,3961,4003,4012,4016,4036,4041,4045,4049,4064,4074,4096,4109,4122,4156,4165,4169,4188,4192,4197,4210,4222,4251,4259,4263,4268,4281,4294,4322,4336,4350,4354,4359,4370,4380,4410,4438,4466,4471,4475,4481,4489,4494,4499,4504,4508,4512,4516,4520,4536,4541,4549,4557,4569,4573,4595,4612,4628,4635,4644,4649,4654,4658,4662],{"__ignoreMap":103},[132,3827,3828],{"class":134,"line":135},[132,3829,3830],{"class":138},"// convex/workspaces.ts\n",[132,3832,3833,3835,3838,3840,3843],{"class":134,"line":142},[132,3834,146],{"class":145},[132,3836,3837],{"class":149}," { query, mutation } ",[132,3839,153],{"class":145},[132,3841,3842],{"class":156}," \"./_generated/server\"",[132,3844,160],{"class":149},[132,3846,3847,3849,3851,3853,3855],{"class":134,"line":163},[132,3848,146],{"class":145},[132,3850,2669],{"class":149},[132,3852,153],{"class":145},[132,3854,2674],{"class":156},[132,3856,160],{"class":149},[132,3858,3859],{"class":134,"line":178},[132,3860,197],{"emptyLinePlaceholder":196},[132,3862,3863,3865,3867,3870,3872,3875],{"class":134,"line":193},[132,3864,319],{"class":145},[132,3866,1173],{"class":145},[132,3868,3869],{"class":206}," list",[132,3871,210],{"class":145},[132,3873,3874],{"class":325}," query",[132,3876,618],{"class":149},[132,3878,3879,3882,3884,3886,3888],{"class":134,"line":200},[132,3880,3881],{"class":149},"  args: { status: v.",[132,3883,2733],{"class":325},[132,3885,2736],{"class":149},[132,3887,513],{"class":325},[132,3889,3890],{"class":149},"()) },\n",[132,3892,3893,3896,3899,3902,3904,3907,3909,3912,3914,3916],{"class":134,"line":216},[132,3894,3895],{"class":325},"  handler",[132,3897,3898],{"class":149},": ",[132,3900,3901],{"class":145},"async",[132,3903,1967],{"class":149},[132,3905,3906],{"class":338},"ctx",[132,3908,492],{"class":149},[132,3910,3911],{"class":338},"args",[132,3913,973],{"class":149},[132,3915,976],{"class":145},[132,3917,329],{"class":149},[132,3919,3920,3923,3926,3929,3932,3935,3938],{"class":134,"line":221},[132,3921,3922],{"class":145},"    if",[132,3924,3925],{"class":149}," (args.status ",[132,3927,3928],{"class":145},"&&",[132,3930,3931],{"class":149}," args.status ",[132,3933,3934],{"class":145},"!==",[132,3936,3937],{"class":156}," \"all\"",[132,3939,401],{"class":149},[132,3941,3942,3945],{"class":134,"line":227},[132,3943,3944],{"class":145},"      return",[132,3946,3947],{"class":149}," ctx.db\n",[132,3949,3950,3953,3955,3957,3959],{"class":134,"line":233},[132,3951,3952],{"class":149},"        .",[132,3954,2210],{"class":325},[132,3956,391],{"class":149},[132,3958,3111],{"class":156},[132,3960,2937],{"class":149},[132,3962,3963,3965,3968,3970,3972,3975,3978,3980,3982,3985,3988,3990,3992,3995,3997,4000],{"class":134,"line":239},[132,3964,3952],{"class":149},[132,3966,3967],{"class":325},"withIndex",[132,3969,391],{"class":149},[132,3971,2825],{"class":156},[132,3973,3974],{"class":149},", (",[132,3976,3977],{"class":338},"q",[132,3979,973],{"class":149},[132,3981,976],{"class":145},[132,3983,3984],{"class":149}," q.",[132,3986,3987],{"class":325},"eq",[132,3989,391],{"class":149},[132,3991,2831],{"class":156},[132,3993,3994],{"class":149},", args.status ",[132,3996,2157],{"class":145},[132,3998,3999],{"class":206}," any",[132,4001,4002],{"class":149},"))\n",[132,4004,4005,4007,4010],{"class":134,"line":245},[132,4006,3952],{"class":149},[132,4008,4009],{"class":325},"collect",[132,4011,421],{"class":149},[132,4013,4014],{"class":134,"line":251},[132,4015,931],{"class":149},[132,4017,4018,4020,4023,4025,4027,4029,4032,4034],{"class":134,"line":256},[132,4019,1081],{"class":145},[132,4021,4022],{"class":149}," ctx.db.",[132,4024,2210],{"class":325},[132,4026,391],{"class":149},[132,4028,3111],{"class":156},[132,4030,4031],{"class":149},").",[132,4033,4009],{"class":325},[132,4035,421],{"class":149},[132,4037,4038],{"class":134,"line":262},[132,4039,4040],{"class":149},"  },\n",[132,4042,4043],{"class":134,"line":268},[132,4044,3820],{"class":149},[132,4046,4047],{"class":134,"line":274},[132,4048,197],{"emptyLinePlaceholder":196},[132,4050,4051,4053,4055,4058,4060,4062],{"class":134,"line":280},[132,4052,319],{"class":145},[132,4054,1173],{"class":145},[132,4056,4057],{"class":206}," getState",[132,4059,210],{"class":145},[132,4061,3874],{"class":325},[132,4063,618],{"class":149},[132,4065,4066,4069,4071],{"class":134,"line":286},[132,4067,4068],{"class":149},"  args: { id: v.",[132,4070,513],{"class":325},[132,4072,4073],{"class":149},"() },\n",[132,4075,4076,4078,4080,4082,4084,4086,4088,4090,4092,4094],{"class":134,"line":291},[132,4077,3895],{"class":325},[132,4079,3898],{"class":149},[132,4081,3901],{"class":145},[132,4083,1967],{"class":149},[132,4085,3906],{"class":338},[132,4087,492],{"class":149},[132,4089,3911],{"class":338},[132,4091,973],{"class":149},[132,4093,976],{"class":145},[132,4095,329],{"class":149},[132,4097,4098,4100,4103,4105,4107],{"class":134,"line":297},[132,4099,599],{"class":145},[132,4101,4102],{"class":206}," workspace",[132,4104,210],{"class":145},[132,4106,607],{"class":145},[132,4108,3947],{"class":149},[132,4110,4111,4114,4116,4118,4120],{"class":134,"line":303},[132,4112,4113],{"class":149},"      .",[132,4115,2210],{"class":325},[132,4117,391],{"class":149},[132,4119,3111],{"class":156},[132,4121,2937],{"class":149},[132,4123,4124,4126,4129,4132,4134,4136,4138,4140,4142,4145,4148,4150,4153],{"class":134,"line":311},[132,4125,4113],{"class":149},[132,4127,4128],{"class":325},"filter",[132,4130,4131],{"class":149},"((",[132,4133,3977],{"class":338},[132,4135,973],{"class":149},[132,4137,976],{"class":145},[132,4139,3984],{"class":149},[132,4141,3987],{"class":325},[132,4143,4144],{"class":149},"(q.",[132,4146,4147],{"class":325},"field",[132,4149,391],{"class":149},[132,4151,4152],{"class":156},"\"_id\"",[132,4154,4155],{"class":149},"), args.id))\n",[132,4157,4158,4160,4163],{"class":134,"line":316},[132,4159,4113],{"class":149},[132,4161,4162],{"class":325},"first",[132,4164,421],{"class":149},[132,4166,4167],{"class":134,"line":332},[132,4168,197],{"emptyLinePlaceholder":196},[132,4170,4171,4173,4175,4177,4180,4183,4186],{"class":134,"line":350},[132,4172,3922],{"class":145},[132,4174,1967],{"class":149},[132,4176,444],{"class":145},[132,4178,4179],{"class":149},"workspace) ",[132,4181,4182],{"class":145},"return",[132,4184,4185],{"class":206}," null",[132,4187,160],{"class":149},[132,4189,4190],{"class":134,"line":365},[132,4191,197],{"emptyLinePlaceholder":196},[132,4193,4194],{"class":134,"line":380},[132,4195,4196],{"class":138},"    // Get active tasks\n",[132,4198,4199,4201,4204,4206,4208],{"class":134,"line":385},[132,4200,599],{"class":145},[132,4202,4203],{"class":206}," tasks",[132,4205,210],{"class":145},[132,4207,607],{"class":145},[132,4209,3947],{"class":149},[132,4211,4212,4214,4216,4218,4220],{"class":134,"line":404},[132,4213,4113],{"class":149},[132,4215,2210],{"class":325},[132,4217,391],{"class":149},[132,4219,3003],{"class":156},[132,4221,2937],{"class":149},[132,4223,4224,4226,4228,4230,4232,4234,4236,4238,4240,4242,4244,4246,4248],{"class":134,"line":424},[132,4225,4113],{"class":149},[132,4227,3967],{"class":325},[132,4229,391],{"class":149},[132,4231,3386],{"class":156},[132,4233,3974],{"class":149},[132,4235,3977],{"class":338},[132,4237,973],{"class":149},[132,4239,976],{"class":145},[132,4241,3984],{"class":149},[132,4243,3987],{"class":325},[132,4245,391],{"class":149},[132,4247,1334],{"class":156},[132,4249,4250],{"class":149},", workspace._id))\n",[132,4252,4253,4255,4257],{"class":134,"line":450},[132,4254,4113],{"class":149},[132,4256,4009],{"class":325},[132,4258,421],{"class":149},[132,4260,4261],{"class":134,"line":463},[132,4262,197],{"emptyLinePlaceholder":196},[132,4264,4265],{"class":134,"line":469},[132,4266,4267],{"class":138},"    // Get recent events\n",[132,4269,4270,4272,4275,4277,4279],{"class":134,"line":474},[132,4271,599],{"class":145},[132,4273,4274],{"class":206}," events",[132,4276,210],{"class":145},[132,4278,607],{"class":145},[132,4280,3947],{"class":149},[132,4282,4283,4285,4287,4289,4292],{"class":134,"line":519},[132,4284,4113],{"class":149},[132,4286,2210],{"class":325},[132,4288,391],{"class":149},[132,4290,4291],{"class":156},"\"events\"",[132,4293,2937],{"class":149},[132,4295,4296,4298,4300,4302,4304,4306,4308,4310,4312,4314,4316,4318,4320],{"class":134,"line":525},[132,4297,4113],{"class":149},[132,4299,3967],{"class":325},[132,4301,391],{"class":149},[132,4303,3386],{"class":156},[132,4305,3974],{"class":149},[132,4307,3977],{"class":338},[132,4309,973],{"class":149},[132,4311,976],{"class":145},[132,4313,3984],{"class":149},[132,4315,3987],{"class":325},[132,4317,391],{"class":149},[132,4319,1334],{"class":156},[132,4321,4250],{"class":149},[132,4323,4324,4326,4329,4331,4334],{"class":134,"line":543},[132,4325,4113],{"class":149},[132,4327,4328],{"class":325},"order",[132,4330,391],{"class":149},[132,4332,4333],{"class":156},"\"desc\"",[132,4335,2937],{"class":149},[132,4337,4338,4340,4343,4345,4348],{"class":134,"line":555},[132,4339,4113],{"class":149},[132,4341,4342],{"class":325},"take",[132,4344,391],{"class":149},[132,4346,4347],{"class":206},"10",[132,4349,447],{"class":149},[132,4351,4352],{"class":134,"line":567},[132,4353,197],{"emptyLinePlaceholder":196},[132,4355,4356],{"class":134,"line":573},[132,4357,4358],{"class":138},"    // Calculate stats\n",[132,4360,4361,4363,4366,4368],{"class":134,"line":579},[132,4362,599],{"class":145},[132,4364,4365],{"class":206}," stats",[132,4367,210],{"class":145},[132,4369,329],{"class":149},[132,4371,4372,4375,4378],{"class":134,"line":585},[132,4373,4374],{"class":149},"      totalTasks: tasks.",[132,4376,4377],{"class":206},"length",[132,4379,552],{"class":149},[132,4381,4382,4385,4387,4389,4392,4394,4396,4399,4401,4404,4406,4408],{"class":134,"line":590},[132,4383,4384],{"class":149},"      pendingTasks: tasks.",[132,4386,4128],{"class":325},[132,4388,4131],{"class":149},[132,4390,4391],{"class":338},"t",[132,4393,973],{"class":149},[132,4395,976],{"class":145},[132,4397,4398],{"class":149}," t.status ",[132,4400,768],{"class":145},[132,4402,4403],{"class":156}," \"pending\"",[132,4405,4031],{"class":149},[132,4407,4377],{"class":206},[132,4409,552],{"class":149},[132,4411,4412,4415,4417,4419,4421,4423,4425,4427,4429,4432,4434,4436],{"class":134,"line":596},[132,4413,4414],{"class":149},"      inProgressTasks: tasks.",[132,4416,4128],{"class":325},[132,4418,4131],{"class":149},[132,4420,4391],{"class":338},[132,4422,973],{"class":149},[132,4424,976],{"class":145},[132,4426,4398],{"class":149},[132,4428,768],{"class":145},[132,4430,4431],{"class":156}," \"in_progress\"",[132,4433,4031],{"class":149},[132,4435,4377],{"class":206},[132,4437,552],{"class":149},[132,4439,4440,4443,4445,4447,4449,4451,4453,4455,4457,4460,4462,4464],{"class":134,"line":621},[132,4441,4442],{"class":149},"      completedTasks: tasks.",[132,4444,4128],{"class":325},[132,4446,4131],{"class":149},[132,4448,4391],{"class":338},[132,4450,973],{"class":149},[132,4452,976],{"class":145},[132,4454,4398],{"class":149},[132,4456,768],{"class":145},[132,4458,4459],{"class":156}," \"completed\"",[132,4461,4031],{"class":149},[132,4463,4377],{"class":206},[132,4465,552],{"class":149},[132,4467,4468],{"class":134,"line":632},[132,4469,4470],{"class":149},"    };\n",[132,4472,4473],{"class":134,"line":643},[132,4474,197],{"emptyLinePlaceholder":196},[132,4476,4477,4479],{"class":134,"line":654},[132,4478,1081],{"class":145},[132,4480,329],{"class":149},[132,4482,4483,4486],{"class":134,"line":670},[132,4484,4485],{"class":145},"      ...",[132,4487,4488],{"class":149},"workspace,\n",[132,4490,4491],{"class":134,"line":682},[132,4492,4493],{"class":149},"      tasks,\n",[132,4495,4496],{"class":134,"line":687},[132,4497,4498],{"class":149},"      recentEvents: events,\n",[132,4500,4501],{"class":134,"line":692},[132,4502,4503],{"class":149},"      stats,\n",[132,4505,4506],{"class":134,"line":698},[132,4507,4470],{"class":149},[132,4509,4510],{"class":134,"line":712},[132,4511,4040],{"class":149},[132,4513,4514],{"class":134,"line":737},[132,4515,3820],{"class":149},[132,4517,4518],{"class":134,"line":748},[132,4519,197],{"emptyLinePlaceholder":196},[132,4521,4522,4524,4526,4529,4531,4534],{"class":134,"line":754},[132,4523,319],{"class":145},[132,4525,1173],{"class":145},[132,4527,4528],{"class":206}," create",[132,4530,210],{"class":145},[132,4532,4533],{"class":325}," mutation",[132,4535,618],{"class":149},[132,4537,4538],{"class":134,"line":759},[132,4539,4540],{"class":149},"  args: {\n",[132,4542,4543,4545,4547],{"class":134,"line":776},[132,4544,2712],{"class":149},[132,4546,513],{"class":325},[132,4548,667],{"class":149},[132,4550,4551,4553,4555],{"class":134,"line":790},[132,4552,2721],{"class":149},[132,4554,513],{"class":325},[132,4556,667],{"class":149},[132,4558,4559,4561,4563,4565,4567],{"class":134,"line":808},[132,4560,2730],{"class":149},[132,4562,2733],{"class":325},[132,4564,2736],{"class":149},[132,4566,513],{"class":325},[132,4568,2741],{"class":149},[132,4570,4571],{"class":134,"line":813},[132,4572,4040],{"class":149},[132,4574,4575,4577,4579,4581,4583,4585,4587,4589,4591,4593],{"class":134,"line":835},[132,4576,3895],{"class":325},[132,4578,3898],{"class":149},[132,4580,3901],{"class":145},[132,4582,1967],{"class":149},[132,4584,3906],{"class":338},[132,4586,492],{"class":149},[132,4588,3911],{"class":338},[132,4590,973],{"class":149},[132,4592,976],{"class":145},[132,4594,329],{"class":149},[132,4596,4597,4599,4602,4604,4607,4610],{"class":134,"line":849},[132,4598,599],{"class":145},[132,4600,4601],{"class":206}," now",[132,4603,210],{"class":145},[132,4605,4606],{"class":149}," Date.",[132,4608,4609],{"class":325},"now",[132,4611,421],{"class":149},[132,4613,4614,4616,4618,4621,4623,4625],{"class":134,"line":854},[132,4615,1081],{"class":145},[132,4617,4022],{"class":149},[132,4619,4620],{"class":325},"insert",[132,4622,391],{"class":149},[132,4624,3111],{"class":156},[132,4626,4627],{"class":149},", {\n",[132,4629,4630,4632],{"class":134,"line":872},[132,4631,4485],{"class":145},[132,4633,4634],{"class":149},"args,\n",[132,4636,4637,4640,4642],{"class":134,"line":882},[132,4638,4639],{"class":149},"      status: ",[132,4641,1207],{"class":156},[132,4643,552],{"class":149},[132,4645,4646],{"class":134,"line":892},[132,4647,4648],{"class":149},"      createdAt: now,\n",[132,4650,4651],{"class":134,"line":902},[132,4652,4653],{"class":149},"      updatedAt: now,\n",[132,4655,4656],{"class":134,"line":916},[132,4657,582],{"class":149},[132,4659,4660],{"class":134,"line":922},[132,4661,4040],{"class":149},[132,4663,4664],{"class":134,"line":928},[132,4665,3820],{"class":149},[94,4667,4669],{"className":126,"code":4668,"language":128,"meta":103,"style":103},"// convex/agents.ts\nimport { query, mutation } from \"./_generated/server\";\nimport { v } from \"convex/values\";\n\nexport const getStatus = query({\n  args: { agentId: v.optional(v.string()) },\n  handler: async (ctx, args) => {\n    if (args.agentId) {\n      return ctx.db\n        .query(\"agents\")\n        .filter((q) => q.eq(q.field(\"_id\"), args.agentId))\n        .first();\n    }\n\n    // Return all agents with their current tasks\n    const agents = await ctx.db.query(\"agents\").collect();\n\n    return Promise.all(\n      agents.map(async (agent) => {\n        let currentTask = null;\n        if (agent.currentTaskId) {\n          currentTask = await ctx.db.get(agent.currentTaskId);\n        }\n        return { ...agent, currentTask };\n      })\n    );\n  },\n});\n\nexport const register = mutation({\n  args: {\n    type: v.string(),\n    instanceId: v.string(),\n    capabilities: v.array(v.string()),\n  },\n  handler: async (ctx, args) => {\n    // Check if already registered\n    const existing = await ctx.db\n      .query(\"agents\")\n      .filter((q) => q.eq(q.field(\"instanceId\"), args.instanceId))\n      .first();\n\n    if (existing) {\n      // Update heartbeat\n      await ctx.db.patch(existing._id, {\n        status: \"idle\",\n        lastHeartbeat: Date.now(),\n      });\n      return existing._id;\n    }\n\n    return ctx.db.insert(\"agents\", {\n      type: args.type as any,\n      instanceId: args.instanceId,\n      status: \"idle\",\n      lastHeartbeat: Date.now(),\n      capabilities: args.capabilities,\n    });\n  },\n});\n\nexport const heartbeat = mutation({\n  args: { agentId: v.id(\"agents\") },\n  handler: async (ctx, args) => {\n    await ctx.db.patch(args.agentId, {\n      lastHeartbeat: Date.now(),\n    });\n  },\n});\n\nexport const sendMessage = mutation({\n  args: {\n    agentType: v.string(),\n    taskId: v.optional(v.string()),\n    message: v.string(),\n    priority: v.optional(v.string()),\n  },\n  handler: async (ctx, args) => {\n    return ctx.db.insert(\"messages\", {\n      toAgentType: args.agentType,\n      taskId: args.taskId as any,\n      content: args.message,\n      priority: (args.priority as any) || \"normal\",\n      status: \"pending\",\n      createdAt: Date.now(),\n    });\n  },\n});\n\nexport const claimMessages = mutation({\n  args: {\n    agentType: v.string(),\n    agentId: v.id(\"agents\"),\n    limit: v.optional(v.number()),\n  },\n  handler: async (ctx, args) => {\n    const messages = await ctx.db\n      .query(\"messages\")\n      .withIndex(\"by_recipient\", (q) =>\n        q.eq(\"toAgentType\", args.agentType).eq(\"status\", \"pending\")\n      )\n      .take(args.limit || 1);\n\n    // Mark as delivered\n    for (const msg of messages) {\n      await ctx.db.patch(msg._id, { status: \"delivered\" });\n    }\n\n    // Update agent status\n    if (messages.length > 0) {\n      await ctx.db.patch(args.agentId, { status: \"busy\" });\n    }\n\n    return messages;\n  },\n});\n",[101,4670,4671,4676,4688,4700,4704,4719,4732,4754,4761,4767,4779,4808,4816,4820,4824,4829,4854,4858,4871,4894,4908,4916,4933,4938,4951,4956,4960,4964,4968,4972,4987,4991,4999,5007,5019,5023,5045,5050,5063,5075,5105,5113,5117,5124,5129,5142,5151,5160,5164,5171,5175,5179,5193,5204,5209,5217,5226,5231,5235,5239,5243,5247,5262,5275,5297,5308,5316,5320,5324,5328,5332,5347,5351,5360,5372,5381,5393,5397,5419,5434,5439,5450,5455,5473,5481,5490,5494,5498,5502,5506,5521,5525,5533,5545,5558,5562,5584,5596,5608,5627,5653,5658,5674,5678,5683,5699,5715,5719,5723,5728,5745,5760,5764,5768,5775,5779],{"__ignoreMap":103},[132,4672,4673],{"class":134,"line":135},[132,4674,4675],{"class":138},"// convex/agents.ts\n",[132,4677,4678,4680,4682,4684,4686],{"class":134,"line":142},[132,4679,146],{"class":145},[132,4681,3837],{"class":149},[132,4683,153],{"class":145},[132,4685,3842],{"class":156},[132,4687,160],{"class":149},[132,4689,4690,4692,4694,4696,4698],{"class":134,"line":163},[132,4691,146],{"class":145},[132,4693,2669],{"class":149},[132,4695,153],{"class":145},[132,4697,2674],{"class":156},[132,4699,160],{"class":149},[132,4701,4702],{"class":134,"line":178},[132,4703,197],{"emptyLinePlaceholder":196},[132,4705,4706,4708,4710,4713,4715,4717],{"class":134,"line":193},[132,4707,319],{"class":145},[132,4709,1173],{"class":145},[132,4711,4712],{"class":206}," getStatus",[132,4714,210],{"class":145},[132,4716,3874],{"class":325},[132,4718,618],{"class":149},[132,4720,4721,4724,4726,4728,4730],{"class":134,"line":200},[132,4722,4723],{"class":149},"  args: { agentId: v.",[132,4725,2733],{"class":325},[132,4727,2736],{"class":149},[132,4729,513],{"class":325},[132,4731,3890],{"class":149},[132,4733,4734,4736,4738,4740,4742,4744,4746,4748,4750,4752],{"class":134,"line":216},[132,4735,3895],{"class":325},[132,4737,3898],{"class":149},[132,4739,3901],{"class":145},[132,4741,1967],{"class":149},[132,4743,3906],{"class":338},[132,4745,492],{"class":149},[132,4747,3911],{"class":338},[132,4749,973],{"class":149},[132,4751,976],{"class":145},[132,4753,329],{"class":149},[132,4755,4756,4758],{"class":134,"line":221},[132,4757,3922],{"class":145},[132,4759,4760],{"class":149}," (args.agentId) {\n",[132,4762,4763,4765],{"class":134,"line":227},[132,4764,3944],{"class":145},[132,4766,3947],{"class":149},[132,4768,4769,4771,4773,4775,4777],{"class":134,"line":233},[132,4770,3952],{"class":149},[132,4772,2210],{"class":325},[132,4774,391],{"class":149},[132,4776,3297],{"class":156},[132,4778,2937],{"class":149},[132,4780,4781,4783,4785,4787,4789,4791,4793,4795,4797,4799,4801,4803,4805],{"class":134,"line":239},[132,4782,3952],{"class":149},[132,4784,4128],{"class":325},[132,4786,4131],{"class":149},[132,4788,3977],{"class":338},[132,4790,973],{"class":149},[132,4792,976],{"class":145},[132,4794,3984],{"class":149},[132,4796,3987],{"class":325},[132,4798,4144],{"class":149},[132,4800,4147],{"class":325},[132,4802,391],{"class":149},[132,4804,4152],{"class":156},[132,4806,4807],{"class":149},"), args.agentId))\n",[132,4809,4810,4812,4814],{"class":134,"line":245},[132,4811,3952],{"class":149},[132,4813,4162],{"class":325},[132,4815,421],{"class":149},[132,4817,4818],{"class":134,"line":251},[132,4819,931],{"class":149},[132,4821,4822],{"class":134,"line":256},[132,4823,197],{"emptyLinePlaceholder":196},[132,4825,4826],{"class":134,"line":262},[132,4827,4828],{"class":138},"    // Return all agents with their current tasks\n",[132,4830,4831,4833,4836,4838,4840,4842,4844,4846,4848,4850,4852],{"class":134,"line":268},[132,4832,599],{"class":145},[132,4834,4835],{"class":206}," agents",[132,4837,210],{"class":145},[132,4839,607],{"class":145},[132,4841,4022],{"class":149},[132,4843,2210],{"class":325},[132,4845,391],{"class":149},[132,4847,3297],{"class":156},[132,4849,4031],{"class":149},[132,4851,4009],{"class":325},[132,4853,421],{"class":149},[132,4855,4856],{"class":134,"line":274},[132,4857,197],{"emptyLinePlaceholder":196},[132,4859,4860,4862,4864,4866,4869],{"class":134,"line":280},[132,4861,1081],{"class":145},[132,4863,507],{"class":206},[132,4865,123],{"class":149},[132,4867,4868],{"class":325},"all",[132,4870,961],{"class":149},[132,4872,4873,4876,4879,4881,4883,4885,4888,4890,4892],{"class":134,"line":286},[132,4874,4875],{"class":149},"      agents.",[132,4877,4878],{"class":325},"map",[132,4880,391],{"class":149},[132,4882,3901],{"class":145},[132,4884,1967],{"class":149},[132,4886,4887],{"class":338},"agent",[132,4889,973],{"class":149},[132,4891,976],{"class":145},[132,4893,329],{"class":149},[132,4895,4896,4899,4902,4904,4906],{"class":134,"line":291},[132,4897,4898],{"class":145},"        let",[132,4900,4901],{"class":149}," currentTask ",[132,4903,413],{"class":145},[132,4905,4185],{"class":206},[132,4907,160],{"class":149},[132,4909,4910,4913],{"class":134,"line":297},[132,4911,4912],{"class":145},"        if",[132,4914,4915],{"class":149}," (agent.currentTaskId) {\n",[132,4917,4918,4921,4923,4925,4927,4930],{"class":134,"line":303},[132,4919,4920],{"class":149},"          currentTask ",[132,4922,413],{"class":145},[132,4924,607],{"class":145},[132,4926,4022],{"class":149},[132,4928,4929],{"class":325},"get",[132,4931,4932],{"class":149},"(agent.currentTaskId);\n",[132,4934,4935],{"class":134,"line":311},[132,4936,4937],{"class":149},"        }\n",[132,4939,4940,4942,4945,4948],{"class":134,"line":316},[132,4941,2203],{"class":145},[132,4943,4944],{"class":149}," { ",[132,4946,4947],{"class":145},"...",[132,4949,4950],{"class":149},"agent, currentTask };\n",[132,4952,4953],{"class":134,"line":332},[132,4954,4955],{"class":149},"      })\n",[132,4957,4958],{"class":134,"line":350},[132,4959,990],{"class":149},[132,4961,4962],{"class":134,"line":365},[132,4963,4040],{"class":149},[132,4965,4966],{"class":134,"line":380},[132,4967,3820],{"class":149},[132,4969,4970],{"class":134,"line":385},[132,4971,197],{"emptyLinePlaceholder":196},[132,4973,4974,4976,4978,4981,4983,4985],{"class":134,"line":404},[132,4975,319],{"class":145},[132,4977,1173],{"class":145},[132,4979,4980],{"class":206}," register",[132,4982,210],{"class":145},[132,4984,4533],{"class":325},[132,4986,618],{"class":149},[132,4988,4989],{"class":134,"line":424},[132,4990,4540],{"class":149},[132,4992,4993,4995,4997],{"class":134,"line":450},[132,4994,2857],{"class":149},[132,4996,513],{"class":325},[132,4998,667],{"class":149},[132,5000,5001,5003,5005],{"class":134,"line":463},[132,5002,2947],{"class":149},[132,5004,513],{"class":325},[132,5006,667],{"class":149},[132,5008,5009,5011,5013,5015,5017],{"class":134,"line":469},[132,5010,3019],{"class":149},[132,5012,3022],{"class":325},[132,5014,2736],{"class":149},[132,5016,513],{"class":325},[132,5018,2741],{"class":149},[132,5020,5021],{"class":134,"line":474},[132,5022,4040],{"class":149},[132,5024,5025,5027,5029,5031,5033,5035,5037,5039,5041,5043],{"class":134,"line":519},[132,5026,3895],{"class":325},[132,5028,3898],{"class":149},[132,5030,3901],{"class":145},[132,5032,1967],{"class":149},[132,5034,3906],{"class":338},[132,5036,492],{"class":149},[132,5038,3911],{"class":338},[132,5040,973],{"class":149},[132,5042,976],{"class":145},[132,5044,329],{"class":149},[132,5046,5047],{"class":134,"line":525},[132,5048,5049],{"class":138},"    // Check if already registered\n",[132,5051,5052,5054,5057,5059,5061],{"class":134,"line":543},[132,5053,599],{"class":145},[132,5055,5056],{"class":206}," existing",[132,5058,210],{"class":145},[132,5060,607],{"class":145},[132,5062,3947],{"class":149},[132,5064,5065,5067,5069,5071,5073],{"class":134,"line":555},[132,5066,4113],{"class":149},[132,5068,2210],{"class":325},[132,5070,391],{"class":149},[132,5072,3297],{"class":156},[132,5074,2937],{"class":149},[132,5076,5077,5079,5081,5083,5085,5087,5089,5091,5093,5095,5097,5099,5102],{"class":134,"line":567},[132,5078,4113],{"class":149},[132,5080,4128],{"class":325},[132,5082,4131],{"class":149},[132,5084,3977],{"class":338},[132,5086,973],{"class":149},[132,5088,976],{"class":145},[132,5090,3984],{"class":149},[132,5092,3987],{"class":325},[132,5094,4144],{"class":149},[132,5096,4147],{"class":325},[132,5098,391],{"class":149},[132,5100,5101],{"class":156},"\"instanceId\"",[132,5103,5104],{"class":149},"), args.instanceId))\n",[132,5106,5107,5109,5111],{"class":134,"line":573},[132,5108,4113],{"class":149},[132,5110,4162],{"class":325},[132,5112,421],{"class":149},[132,5114,5115],{"class":134,"line":579},[132,5116,197],{"emptyLinePlaceholder":196},[132,5118,5119,5121],{"class":134,"line":585},[132,5120,3922],{"class":145},[132,5122,5123],{"class":149}," (existing) {\n",[132,5125,5126],{"class":134,"line":590},[132,5127,5128],{"class":138},"      // Update heartbeat\n",[132,5130,5131,5134,5136,5139],{"class":134,"line":596},[132,5132,5133],{"class":145},"      await",[132,5135,4022],{"class":149},[132,5137,5138],{"class":325},"patch",[132,5140,5141],{"class":149},"(existing._id, {\n",[132,5143,5144,5147,5149],{"class":134,"line":621},[132,5145,5146],{"class":149},"        status: ",[132,5148,2966],{"class":156},[132,5150,552],{"class":149},[132,5152,5153,5156,5158],{"class":134,"line":632},[132,5154,5155],{"class":149},"        lastHeartbeat: Date.",[132,5157,4609],{"class":325},[132,5159,667],{"class":149},[132,5161,5162],{"class":134,"line":643},[132,5163,925],{"class":149},[132,5165,5166,5168],{"class":134,"line":654},[132,5167,3944],{"class":145},[132,5169,5170],{"class":149}," existing._id;\n",[132,5172,5173],{"class":134,"line":670},[132,5174,931],{"class":149},[132,5176,5177],{"class":134,"line":682},[132,5178,197],{"emptyLinePlaceholder":196},[132,5180,5181,5183,5185,5187,5189,5191],{"class":134,"line":687},[132,5182,1081],{"class":145},[132,5184,4022],{"class":149},[132,5186,4620],{"class":325},[132,5188,391],{"class":149},[132,5190,3297],{"class":156},[132,5192,4627],{"class":149},[132,5194,5195,5198,5200,5202],{"class":134,"line":692},[132,5196,5197],{"class":149},"      type: args.type ",[132,5199,2157],{"class":145},[132,5201,3999],{"class":206},[132,5203,552],{"class":149},[132,5205,5206],{"class":134,"line":698},[132,5207,5208],{"class":149},"      instanceId: args.instanceId,\n",[132,5210,5211,5213,5215],{"class":134,"line":712},[132,5212,4639],{"class":149},[132,5214,2966],{"class":156},[132,5216,552],{"class":149},[132,5218,5219,5222,5224],{"class":134,"line":737},[132,5220,5221],{"class":149},"      lastHeartbeat: Date.",[132,5223,4609],{"class":325},[132,5225,667],{"class":149},[132,5227,5228],{"class":134,"line":748},[132,5229,5230],{"class":149},"      capabilities: args.capabilities,\n",[132,5232,5233],{"class":134,"line":754},[132,5234,582],{"class":149},[132,5236,5237],{"class":134,"line":759},[132,5238,4040],{"class":149},[132,5240,5241],{"class":134,"line":776},[132,5242,3820],{"class":149},[132,5244,5245],{"class":134,"line":790},[132,5246,197],{"emptyLinePlaceholder":196},[132,5248,5249,5251,5253,5256,5258,5260],{"class":134,"line":808},[132,5250,319],{"class":145},[132,5252,1173],{"class":145},[132,5254,5255],{"class":206}," heartbeat",[132,5257,210],{"class":145},[132,5259,4533],{"class":325},[132,5261,618],{"class":149},[132,5263,5264,5266,5268,5270,5272],{"class":134,"line":813},[132,5265,4723],{"class":149},[132,5267,2998],{"class":325},[132,5269,391],{"class":149},[132,5271,3297],{"class":156},[132,5273,5274],{"class":149},") },\n",[132,5276,5277,5279,5281,5283,5285,5287,5289,5291,5293,5295],{"class":134,"line":835},[132,5278,3895],{"class":325},[132,5280,3898],{"class":149},[132,5282,3901],{"class":145},[132,5284,1967],{"class":149},[132,5286,3906],{"class":338},[132,5288,492],{"class":149},[132,5290,3911],{"class":338},[132,5292,973],{"class":149},[132,5294,976],{"class":145},[132,5296,329],{"class":149},[132,5298,5299,5301,5303,5305],{"class":134,"line":849},[132,5300,528],{"class":145},[132,5302,4022],{"class":149},[132,5304,5138],{"class":325},[132,5306,5307],{"class":149},"(args.agentId, {\n",[132,5309,5310,5312,5314],{"class":134,"line":854},[132,5311,5221],{"class":149},[132,5313,4609],{"class":325},[132,5315,667],{"class":149},[132,5317,5318],{"class":134,"line":872},[132,5319,582],{"class":149},[132,5321,5322],{"class":134,"line":882},[132,5323,4040],{"class":149},[132,5325,5326],{"class":134,"line":892},[132,5327,3820],{"class":149},[132,5329,5330],{"class":134,"line":902},[132,5331,197],{"emptyLinePlaceholder":196},[132,5333,5334,5336,5338,5341,5343,5345],{"class":134,"line":916},[132,5335,319],{"class":145},[132,5337,1173],{"class":145},[132,5339,5340],{"class":206}," sendMessage",[132,5342,210],{"class":145},[132,5344,4533],{"class":325},[132,5346,618],{"class":149},[132,5348,5349],{"class":134,"line":922},[132,5350,4540],{"class":149},[132,5352,5353,5356,5358],{"class":134,"line":928},[132,5354,5355],{"class":149},"    agentType: v.",[132,5357,513],{"class":325},[132,5359,667],{"class":149},[132,5361,5362,5364,5366,5368,5370],{"class":134,"line":934},[132,5363,3490],{"class":149},[132,5365,2733],{"class":325},[132,5367,2736],{"class":149},[132,5369,513],{"class":325},[132,5371,2741],{"class":149},[132,5373,5374,5377,5379],{"class":134,"line":939},[132,5375,5376],{"class":149},"    message: v.",[132,5378,513],{"class":325},[132,5380,667],{"class":149},[132,5382,5383,5385,5387,5389,5391],{"class":134,"line":945},[132,5384,3225],{"class":149},[132,5386,2733],{"class":325},[132,5388,2736],{"class":149},[132,5390,513],{"class":325},[132,5392,2741],{"class":149},[132,5394,5395],{"class":134,"line":964},[132,5396,4040],{"class":149},[132,5398,5399,5401,5403,5405,5407,5409,5411,5413,5415,5417],{"class":134,"line":987},[132,5400,3895],{"class":325},[132,5402,3898],{"class":149},[132,5404,3901],{"class":145},[132,5406,1967],{"class":149},[132,5408,3906],{"class":338},[132,5410,492],{"class":149},[132,5412,3911],{"class":338},[132,5414,973],{"class":149},[132,5416,976],{"class":145},[132,5418,329],{"class":149},[132,5420,5421,5423,5425,5427,5429,5432],{"class":134,"line":993},[132,5422,1081],{"class":145},[132,5424,4022],{"class":149},[132,5426,4620],{"class":325},[132,5428,391],{"class":149},[132,5430,5431],{"class":156},"\"messages\"",[132,5433,4627],{"class":149},[132,5435,5436],{"class":134,"line":1014},[132,5437,5438],{"class":149},"      toAgentType: args.agentType,\n",[132,5440,5441,5444,5446,5448],{"class":134,"line":1019},[132,5442,5443],{"class":149},"      taskId: args.taskId ",[132,5445,2157],{"class":145},[132,5447,3999],{"class":206},[132,5449,552],{"class":149},[132,5451,5452],{"class":134,"line":1025},[132,5453,5454],{"class":149},"      content: args.message,\n",[132,5456,5457,5460,5462,5464,5466,5468,5471],{"class":134,"line":1038},[132,5458,5459],{"class":149},"      priority: (args.priority ",[132,5461,2157],{"class":145},[132,5463,3999],{"class":206},[132,5465,973],{"class":149},[132,5467,1006],{"class":145},[132,5469,5470],{"class":156}," \"normal\"",[132,5472,552],{"class":149},[132,5474,5475,5477,5479],{"class":134,"line":1048},[132,5476,4639],{"class":149},[132,5478,3149],{"class":156},[132,5480,552],{"class":149},[132,5482,5483,5486,5488],{"class":134,"line":1057},[132,5484,5485],{"class":149},"      createdAt: Date.",[132,5487,4609],{"class":325},[132,5489,667],{"class":149},[132,5491,5492],{"class":134,"line":1062},[132,5493,582],{"class":149},[132,5495,5496],{"class":134,"line":1068},[132,5497,4040],{"class":149},[132,5499,5500],{"class":134,"line":1073},[132,5501,3820],{"class":149},[132,5503,5504],{"class":134,"line":1078},[132,5505,197],{"emptyLinePlaceholder":196},[132,5507,5508,5510,5512,5515,5517,5519],{"class":134,"line":1087},[132,5509,319],{"class":145},[132,5511,1173],{"class":145},[132,5513,5514],{"class":206}," claimMessages",[132,5516,210],{"class":145},[132,5518,4533],{"class":325},[132,5520,618],{"class":149},[132,5522,5523],{"class":134,"line":1092},[132,5524,4540],{"class":149},[132,5526,5527,5529,5531],{"class":134,"line":1097},[132,5528,5355],{"class":149},[132,5530,513],{"class":325},[132,5532,667],{"class":149},[132,5534,5535,5537,5539,5541,5543],{"class":134,"line":1120},[132,5536,3473],{"class":149},[132,5538,2998],{"class":325},[132,5540,391],{"class":149},[132,5542,3297],{"class":156},[132,5544,2876],{"class":149},[132,5546,5547,5550,5552,5554,5556],{"class":134,"line":1127},[132,5548,5549],{"class":149},"    limit: v.",[132,5551,2733],{"class":325},[132,5553,2736],{"class":149},[132,5555,2787],{"class":325},[132,5557,2741],{"class":149},[132,5559,5560],{"class":134,"line":1133},[132,5561,4040],{"class":149},[132,5563,5564,5566,5568,5570,5572,5574,5576,5578,5580,5582],{"class":134,"line":1144},[132,5565,3895],{"class":325},[132,5567,3898],{"class":149},[132,5569,3901],{"class":145},[132,5571,1967],{"class":149},[132,5573,3906],{"class":338},[132,5575,492],{"class":149},[132,5577,3911],{"class":338},[132,5579,973],{"class":149},[132,5581,976],{"class":145},[132,5583,329],{"class":149},[132,5585,5586,5588,5590,5592,5594],{"class":134,"line":1155},[132,5587,599],{"class":145},[132,5589,717],{"class":206},[132,5591,210],{"class":145},[132,5593,607],{"class":145},[132,5595,3947],{"class":149},[132,5597,5598,5600,5602,5604,5606],{"class":134,"line":1161},[132,5599,4113],{"class":149},[132,5601,2210],{"class":325},[132,5603,391],{"class":149},[132,5605,5431],{"class":156},[132,5607,2937],{"class":149},[132,5609,5610,5612,5614,5616,5618,5620,5622,5624],{"class":134,"line":1178},[132,5611,4113],{"class":149},[132,5613,3967],{"class":325},[132,5615,391],{"class":149},[132,5617,3786],{"class":156},[132,5619,3974],{"class":149},[132,5621,3977],{"class":338},[132,5623,973],{"class":149},[132,5625,5626],{"class":145},"=>\n",[132,5628,5629,5632,5634,5636,5638,5641,5643,5645,5647,5649,5651],{"class":134,"line":1184},[132,5630,5631],{"class":149},"        q.",[132,5633,3987],{"class":325},[132,5635,391],{"class":149},[132,5637,3791],{"class":156},[132,5639,5640],{"class":149},", args.agentType).",[132,5642,3987],{"class":325},[132,5644,391],{"class":149},[132,5646,2831],{"class":156},[132,5648,492],{"class":149},[132,5650,3149],{"class":156},[132,5652,2937],{"class":149},[132,5654,5655],{"class":134,"line":1190},[132,5656,5657],{"class":149},"      )\n",[132,5659,5660,5662,5664,5667,5669,5672],{"class":134,"line":1201},[132,5661,4113],{"class":149},[132,5663,4342],{"class":325},[132,5665,5666],{"class":149},"(args.limit ",[132,5668,1006],{"class":145},[132,5670,5671],{"class":206}," 1",[132,5673,447],{"class":149},[132,5675,5676],{"class":134,"line":1223},[132,5677,197],{"emptyLinePlaceholder":196},[132,5679,5680],{"class":134,"line":1234},[132,5681,5682],{"class":138},"    // Mark as delivered\n",[132,5684,5685,5687,5689,5691,5694,5696],{"class":134,"line":1240},[132,5686,1964],{"class":145},[132,5688,1967],{"class":149},[132,5690,203],{"class":145},[132,5692,5693],{"class":206}," msg",[132,5695,1975],{"class":145},[132,5697,5698],{"class":149}," messages) {\n",[132,5700,5701,5703,5705,5707,5710,5712],{"class":134,"line":1246},[132,5702,5133],{"class":145},[132,5704,4022],{"class":149},[132,5706,5138],{"class":325},[132,5708,5709],{"class":149},"(msg._id, { status: ",[132,5711,3739],{"class":156},[132,5713,5714],{"class":149}," });\n",[132,5716,5717],{"class":134,"line":1252},[132,5718,931],{"class":149},[132,5720,5721],{"class":134,"line":1258},[132,5722,197],{"emptyLinePlaceholder":196},[132,5724,5725],{"class":134,"line":1263},[132,5726,5727],{"class":138},"    // Update agent status\n",[132,5729,5730,5732,5735,5737,5740,5743],{"class":134,"line":1273},[132,5731,3922],{"class":145},[132,5733,5734],{"class":149}," (messages.",[132,5736,4377],{"class":206},[132,5738,5739],{"class":145}," >",[132,5741,5742],{"class":206}," 0",[132,5744,401],{"class":149},[132,5746,5747,5749,5751,5753,5756,5758],{"class":134,"line":1283},[132,5748,5133],{"class":145},[132,5750,4022],{"class":149},[132,5752,5138],{"class":325},[132,5754,5755],{"class":149},"(args.agentId, { status: ",[132,5757,2975],{"class":156},[132,5759,5714],{"class":149},[132,5761,5762],{"class":134,"line":1288},[132,5763,931],{"class":149},[132,5765,5766],{"class":134,"line":1301},[132,5767,197],{"emptyLinePlaceholder":196},[132,5769,5770,5772],{"class":134,"line":1306},[132,5771,1081],{"class":145},[132,5773,5774],{"class":149}," messages;\n",[132,5776,5777],{"class":134,"line":1323},[132,5778,4040],{"class":149},[132,5780,5781],{"class":134,"line":1328},[132,5782,3820],{"class":149},[109,5784,5786],{"id":5785},"_3-worker-agents","3. Worker Agents",[15,5788,5789,5790,5793],{},"Worker agents are ",[19,5791,5792],{},"specialized executors"," that claim tasks from the queue and process them autonomously.",[94,5795,5797],{"className":126,"code":5796,"language":128,"meta":103,"style":103},"// src/agents/worker.ts\nimport Anthropic from \"@anthropic-ai/sdk\";\nimport { ConvexClient } from \"convex/browser\";\nimport { api } from \"../convex/_generated/api\";\nimport { spawn } from \"child_process\";\n\ninterface WorkerConfig {\n  type: \"coder\" | \"reviewer\" | \"tester\" | \"architect\" | \"devops\";\n  instanceId: string;\n  workDir: string;\n}\n\nconst AGENT_PROMPTS: Record\u003Cstring, string> = {\n  coder: `You are a Senior Software Engineer agent. Your job is to:\n1. Implement features and fix bugs based on task descriptions\n2. Write clean, well-documented, tested code\n3. Follow project conventions and best practices\n4. Report progress and blockers to Mission Control\n\nYou have access to file system tools and can execute commands.\nAlways explain your changes before making them.`,\n\n  reviewer: `You are a Code Review Specialist agent. Your job is to:\n1. Review code changes for quality, security, and best practices\n2. Identify potential bugs, performance issues, and security vulnerabilities\n3. Suggest improvements with clear explanations\n4. Approve or request changes with actionable feedback\n\nBe thorough but constructive. Focus on significant issues.`,\n\n  tester: `You are a QA Engineer agent. Your job is to:\n1. Write and run tests for new features\n2. Identify edge cases and potential failure modes\n3. Verify bug fixes actually resolve the issue\n4. Report test coverage and results\n\nPrioritize critical paths and high-risk areas.`,\n};\n\nexport class WorkerAgent {\n  private anthropic: Anthropic;\n  private convex: ConvexClient;\n  private config: WorkerConfig;\n  private agentId: string | null = null;\n\n  constructor(config: WorkerConfig) {\n    this.anthropic = new Anthropic();\n    this.convex = new ConvexClient(process.env.CONVEX_URL!);\n    this.config = config;\n  }\n\n  async start(): Promise\u003Cvoid> {\n    // Register with Mission Control\n    this.agentId = await this.convex.mutation(api.agents.register, {\n      type: this.config.type,\n      instanceId: this.config.instanceId,\n      capabilities: this.getCapabilities(),\n    });\n\n    console.log(`[${this.config.type}] Registered as ${this.agentId}`);\n\n    // Start heartbeat\n    setInterval(() => this.heartbeat(), 30000);\n\n    // Start work loop\n    this.workLoop();\n  }\n\n  private getCapabilities(): string[] {\n    switch (this.config.type) {\n      case \"coder\":\n        return [\"read_file\", \"write_file\", \"execute_command\", \"git\"];\n      case \"reviewer\":\n        return [\"read_file\", \"git_diff\", \"comment\"];\n      case \"tester\":\n        return [\"read_file\", \"execute_command\", \"test_runner\"];\n      default:\n        return [\"read_file\"];\n    }\n  }\n\n  private async heartbeat(): Promise\u003Cvoid> {\n    if (this.agentId) {\n      await this.convex.mutation(api.agents.heartbeat, {\n        agentId: this.agentId as any,\n      });\n    }\n  }\n\n  private async workLoop(): Promise\u003Cvoid> {\n    while (true) {\n      try {\n        // Check for messages\n        const messages = await this.convex.mutation(api.agents.claimMessages, {\n          agentType: this.config.type,\n          agentId: this.agentId as any,\n          limit: 1,\n        });\n\n        if (messages.length > 0) {\n          await this.processMessage(messages[0]);\n        } else {\n          // No work, wait before checking again\n          await this.sleep(5000);\n        }\n      } catch (error) {\n        console.error(`[${this.config.type}] Error in work loop:`, error);\n        await this.sleep(10000);\n      }\n    }\n  }\n\n  private async processMessage(message: any): Promise\u003Cvoid> {\n    console.log(`[${this.config.type}] Processing: ${message.content.slice(0, 100)}...`);\n\n    await this.convex.mutation(api.events.log, {\n      type: \"agent_task_start\",\n      agentId: this.agentId as any,\n      taskId: message.taskId,\n      content: `Started processing: ${message.content.slice(0, 100)}`,\n      timestamp: Date.now(),\n    });\n\n    // Run agent with tools\n    const response = await this.runAgent(message.content);\n\n    // Log completion\n    await this.convex.mutation(api.events.log, {\n      type: \"agent_task_complete\",\n      agentId: this.agentId as any,\n      taskId: message.taskId,\n      content: response,\n      timestamp: Date.now(),\n    });\n\n    // Mark message as processed\n    await this.convex.mutation(api.messages.markProcessed, {\n      messageId: message._id,\n    });\n\n    // Update agent status\n    await this.convex.mutation(api.agents.setStatus, {\n      agentId: this.agentId as any,\n      status: \"idle\",\n    });\n  }\n\n  private async runAgent(task: string): Promise\u003Cstring> {\n    const messages: Anthropic.MessageParam[] = [{ role: \"user\", content: task }];\n\n    let response = await this.anthropic.messages.create({\n      model: \"claude-sonnet-4-20250514\",\n      max_tokens: 8192,\n      system: AGENT_PROMPTS[this.config.type],\n      tools: this.getTools(),\n      messages,\n    });\n\n    // Tool use loop\n    while (response.stop_reason === \"tool_use\") {\n      messages.push({ role: \"assistant\", content: response.content });\n\n      const toolResults = await this.executeTools(response.content);\n      messages.push({ role: \"user\", content: toolResults });\n\n      response = await this.anthropic.messages.create({\n        model: \"claude-sonnet-4-20250514\",\n        max_tokens: 8192,\n        system: AGENT_PROMPTS[this.config.type],\n        tools: this.getTools(),\n        messages,\n      });\n    }\n\n    const textBlock = response.content.find((b) => b.type === \"text\");\n    return textBlock?.text || \"Task completed.\";\n  }\n\n  private getTools(): Anthropic.Tool[] {\n    const baseTools: Anthropic.Tool[] = [\n      {\n        name: \"read_file\",\n        description: \"Read contents of a file\",\n        input_schema: {\n          type: \"object\" as const,\n          properties: {\n            path: { type: \"string\", description: \"File path relative to workspace\" },\n          },\n          required: [\"path\"],\n        },\n      },\n      {\n        name: \"list_directory\",\n        description: \"List files in a directory\",\n        input_schema: {\n          type: \"object\" as const,\n          properties: {\n            path: { type: \"string\", description: \"Directory path\" },\n          },\n          required: [\"path\"],\n        },\n      },\n    ];\n\n    if (this.config.type === \"coder\") {\n      baseTools.push(\n        {\n          name: \"write_file\",\n          description: \"Write content to a file\",\n          input_schema: {\n            type: \"object\" as const,\n            properties: {\n              path: { type: \"string\" },\n              content: { type: \"string\" },\n            },\n            required: [\"path\", \"content\"],\n          },\n        },\n        {\n          name: \"execute_command\",\n          description: \"Execute a shell command\",\n          input_schema: {\n            type: \"object\" as const,\n            properties: {\n              command: { type: \"string\" },\n              cwd: { type: \"string\", description: \"Working directory\" },\n            },\n            required: [\"command\"],\n          },\n        }\n      );\n    }\n\n    return baseTools;\n  }\n\n  private async executeTools(\n    content: Anthropic.ContentBlock[]\n  ): Promise\u003CAnthropic.ToolResultBlockParam[]> {\n    const results: Anthropic.ToolResultBlockParam[] = [];\n\n    for (const block of content) {\n      if (block.type === \"tool_use\") {\n        try {\n          const result = await this.executeTool(block.name, block.input);\n          results.push({\n            type: \"tool_result\",\n            tool_use_id: block.id,\n            content: typeof result === \"string\" ? result : JSON.stringify(result),\n          });\n        } catch (error) {\n          results.push({\n            type: \"tool_result\",\n            tool_use_id: block.id,\n            content: `Error: ${error}`,\n            is_error: true,\n          });\n        }\n      }\n    }\n\n    return results;\n  }\n\n  private async executeTool(name: string, input: unknown): Promise\u003Cunknown> {\n    const params = input as Record\u003Cstring, unknown>;\n    const path = require(\"path\");\n    const fs = require(\"fs\").promises;\n\n    const resolvePath = (p: string) =>\n      path.resolve(this.config.workDir, p);\n\n    switch (name) {\n      case \"read_file\":\n        return fs.readFile(resolvePath(params.path as string), \"utf-8\");\n\n      case \"list_directory\":\n        return fs.readdir(resolvePath(params.path as string));\n\n      case \"write_file\":\n        await fs.writeFile(\n          resolvePath(params.path as string),\n          params.content as string\n        );\n        return \"File written successfully\";\n\n      case \"execute_command\":\n        return this.executeCommand(\n          params.command as string,\n          params.cwd ? resolvePath(params.cwd as string) : this.config.workDir\n        );\n\n      default:\n        throw new Error(`Unknown tool: ${name}`);\n    }\n  }\n\n  private executeCommand(command: string, cwd: string): Promise\u003Cstring> {\n    return new Promise((resolve, reject) => {\n      const child = spawn(\"sh\", [\"-c\", command], { cwd });\n      let stdout = \"\";\n      let stderr = \"\";\n\n      child.stdout.on(\"data\", (data) => (stdout += data));\n      child.stderr.on(\"data\", (data) => (stderr += data));\n\n      child.on(\"close\", (code) => {\n        if (code === 0) {\n          resolve(stdout || \"Command completed successfully\");\n        } else {\n          reject(new Error(`Exit code ${code}: ${stderr}`));\n        }\n      });\n    });\n  }\n\n  private sleep(ms: number): Promise\u003Cvoid> {\n    return new Promise((resolve) => setTimeout(resolve, ms));\n  }\n}\n",[101,5798,5799,5804,5816,5828,5840,5854,5858,5868,5901,5912,5923,5927,5931,5957,5965,5970,5975,5980,5985,5989,5994,6001,6005,6013,6018,6023,6028,6033,6037,6044,6048,6056,6061,6066,6071,6076,6080,6087,6092,6096,6107,6119,6131,6144,6165,6169,6184,6198,6218,6230,6234,6238,6258,6263,6283,6292,6302,6316,6320,6324,6362,6366,6371,6396,6400,6405,6416,6420,6424,6439,6450,6458,6486,6494,6514,6522,6541,6547,6557,6561,6565,6569,6589,6600,6613,6628,6632,6636,6640,6644,6665,6676,6683,6688,6707,6716,6731,6741,6745,6749,6763,6784,6794,6799,6817,6821,6832,6860,6878,6882,6886,6890,6894,6923,6974,6978,6990,6999,7014,7019,7051,7060,7064,7068,7073,7093,7097,7102,7114,7123,7137,7141,7146,7154,7158,7162,7167,7180,7185,7189,7193,7197,7210,7224,7232,7236,7240,7244,7274,7300,7304,7323,7331,7340,7355,7368,7373,7377,7381,7386,7399,7412,7416,7435,7447,7451,7468,7476,7484,7496,7508,7512,7516,7520,7524,7556,7569,7573,7577,7596,7617,7621,7629,7638,7642,7654,7658,7672,7676,7685,7689,7693,7697,7706,7715,7719,7731,7735,7748,7752,7760,7764,7768,7772,7776,7793,7802,7807,7816,7826,7831,7844,7849,7858,7867,7871,7885,7889,7893,7897,7905,7914,7918,7930,7934,7943,7957,7961,7970,7974,7978,7983,7987,7991,7998,8002,8006,8016,8030,8048,8068,8072,8086,8098,8105,8124,8134,8143,8149,8182,8188,8197,8206,8215,8220,8234,8244,8249,8254,8259,8264,8269,8276,8281,8286,8323,8348,8367,8387,8392,8414,8430,8435,8442,8452,8483,8488,8498,8521,8526,8536,8548,8562,8573,8579,8589,8594,8604,8618,8630,8657,8662,8667,8674,8695,8700,8705,8710,8748,8772,8798,8814,8828,8833,8865,8892,8897,8920,8934,8950,8959,8989,8994,8999,9004,9009,9014,9043,9066,9071],{"__ignoreMap":103},[132,5800,5801],{"class":134,"line":135},[132,5802,5803],{"class":138},"// src/agents/worker.ts\n",[132,5805,5806,5808,5810,5812,5814],{"class":134,"line":142},[132,5807,146],{"class":145},[132,5809,150],{"class":149},[132,5811,153],{"class":145},[132,5813,157],{"class":156},[132,5815,160],{"class":149},[132,5817,5818,5820,5822,5824,5826],{"class":134,"line":163},[132,5819,146],{"class":145},[132,5821,168],{"class":149},[132,5823,153],{"class":145},[132,5825,173],{"class":156},[132,5827,160],{"class":149},[132,5829,5830,5832,5834,5836,5838],{"class":134,"line":178},[132,5831,146],{"class":145},[132,5833,183],{"class":149},[132,5835,153],{"class":145},[132,5837,188],{"class":156},[132,5839,160],{"class":149},[132,5841,5842,5844,5847,5849,5852],{"class":134,"line":193},[132,5843,146],{"class":145},[132,5845,5846],{"class":149}," { spawn } ",[132,5848,153],{"class":145},[132,5850,5851],{"class":156}," \"child_process\"",[132,5853,160],{"class":149},[132,5855,5856],{"class":134,"line":200},[132,5857,197],{"emptyLinePlaceholder":196},[132,5859,5860,5863,5866],{"class":134,"line":216},[132,5861,5862],{"class":145},"interface",[132,5864,5865],{"class":325}," WorkerConfig",[132,5867,329],{"class":149},[132,5869,5870,5873,5875,5878,5881,5884,5886,5889,5891,5894,5896,5899],{"class":134,"line":221},[132,5871,5872],{"class":338},"  type",[132,5874,342],{"class":145},[132,5876,5877],{"class":156}," \"coder\"",[132,5879,5880],{"class":145}," |",[132,5882,5883],{"class":156}," \"reviewer\"",[132,5885,5880],{"class":145},[132,5887,5888],{"class":156}," \"tester\"",[132,5890,5880],{"class":145},[132,5892,5893],{"class":156}," \"architect\"",[132,5895,5880],{"class":145},[132,5897,5898],{"class":156}," \"devops\"",[132,5900,160],{"class":149},[132,5902,5903,5906,5908,5910],{"class":134,"line":227},[132,5904,5905],{"class":338},"  instanceId",[132,5907,342],{"class":145},[132,5909,375],{"class":206},[132,5911,160],{"class":149},[132,5913,5914,5917,5919,5921],{"class":134,"line":233},[132,5915,5916],{"class":338},"  workDir",[132,5918,342],{"class":145},[132,5920,375],{"class":206},[132,5922,160],{"class":149},[132,5924,5925],{"class":134,"line":239},[132,5926,2621],{"class":149},[132,5928,5929],{"class":134,"line":245},[132,5930,197],{"emptyLinePlaceholder":196},[132,5932,5933,5935,5938,5940,5942,5944,5946,5948,5950,5953,5955],{"class":134,"line":251},[132,5934,203],{"class":145},[132,5936,5937],{"class":206}," AGENT_PROMPTS",[132,5939,342],{"class":145},[132,5941,2160],{"class":325},[132,5943,510],{"class":149},[132,5945,513],{"class":206},[132,5947,492],{"class":149},[132,5949,513],{"class":206},[132,5951,5952],{"class":149},"> ",[132,5954,413],{"class":145},[132,5956,329],{"class":149},[132,5958,5959,5962],{"class":134,"line":256},[132,5960,5961],{"class":149},"  coder: ",[132,5963,5964],{"class":156},"`You are a Senior Software Engineer agent. Your job is to:\n",[132,5966,5967],{"class":134,"line":262},[132,5968,5969],{"class":156},"1. Implement features and fix bugs based on task descriptions\n",[132,5971,5972],{"class":134,"line":268},[132,5973,5974],{"class":156},"2. Write clean, well-documented, tested code\n",[132,5976,5977],{"class":134,"line":274},[132,5978,5979],{"class":156},"3. Follow project conventions and best practices\n",[132,5981,5982],{"class":134,"line":280},[132,5983,5984],{"class":156},"4. Report progress and blockers to Mission Control\n",[132,5986,5987],{"class":134,"line":286},[132,5988,197],{"emptyLinePlaceholder":196},[132,5990,5991],{"class":134,"line":291},[132,5992,5993],{"class":156},"You have access to file system tools and can execute commands.\n",[132,5995,5996,5999],{"class":134,"line":297},[132,5997,5998],{"class":156},"Always explain your changes before making them.`",[132,6000,552],{"class":149},[132,6002,6003],{"class":134,"line":303},[132,6004,197],{"emptyLinePlaceholder":196},[132,6006,6007,6010],{"class":134,"line":311},[132,6008,6009],{"class":149},"  reviewer: ",[132,6011,6012],{"class":156},"`You are a Code Review Specialist agent. Your job is to:\n",[132,6014,6015],{"class":134,"line":316},[132,6016,6017],{"class":156},"1. Review code changes for quality, security, and best practices\n",[132,6019,6020],{"class":134,"line":332},[132,6021,6022],{"class":156},"2. Identify potential bugs, performance issues, and security vulnerabilities\n",[132,6024,6025],{"class":134,"line":350},[132,6026,6027],{"class":156},"3. Suggest improvements with clear explanations\n",[132,6029,6030],{"class":134,"line":365},[132,6031,6032],{"class":156},"4. Approve or request changes with actionable feedback\n",[132,6034,6035],{"class":134,"line":380},[132,6036,197],{"emptyLinePlaceholder":196},[132,6038,6039,6042],{"class":134,"line":385},[132,6040,6041],{"class":156},"Be thorough but constructive. Focus on significant issues.`",[132,6043,552],{"class":149},[132,6045,6046],{"class":134,"line":404},[132,6047,197],{"emptyLinePlaceholder":196},[132,6049,6050,6053],{"class":134,"line":424},[132,6051,6052],{"class":149},"  tester: ",[132,6054,6055],{"class":156},"`You are a QA Engineer agent. Your job is to:\n",[132,6057,6058],{"class":134,"line":450},[132,6059,6060],{"class":156},"1. Write and run tests for new features\n",[132,6062,6063],{"class":134,"line":463},[132,6064,6065],{"class":156},"2. Identify edge cases and potential failure modes\n",[132,6067,6068],{"class":134,"line":469},[132,6069,6070],{"class":156},"3. Verify bug fixes actually resolve the issue\n",[132,6072,6073],{"class":134,"line":474},[132,6074,6075],{"class":156},"4. Report test coverage and results\n",[132,6077,6078],{"class":134,"line":519},[132,6079,197],{"emptyLinePlaceholder":196},[132,6081,6082,6085],{"class":134,"line":525},[132,6083,6084],{"class":156},"Prioritize critical paths and high-risk areas.`",[132,6086,552],{"class":149},[132,6088,6089],{"class":134,"line":543},[132,6090,6091],{"class":149},"};\n",[132,6093,6094],{"class":134,"line":555},[132,6095,197],{"emptyLinePlaceholder":196},[132,6097,6098,6100,6102,6105],{"class":134,"line":567},[132,6099,319],{"class":145},[132,6101,322],{"class":145},[132,6103,6104],{"class":325}," WorkerAgent",[132,6106,329],{"class":149},[132,6108,6109,6111,6113,6115,6117],{"class":134,"line":573},[132,6110,335],{"class":145},[132,6112,339],{"class":338},[132,6114,342],{"class":145},[132,6116,345],{"class":325},[132,6118,160],{"class":149},[132,6120,6121,6123,6125,6127,6129],{"class":134,"line":579},[132,6122,335],{"class":145},[132,6124,355],{"class":338},[132,6126,342],{"class":145},[132,6128,360],{"class":325},[132,6130,160],{"class":149},[132,6132,6133,6135,6138,6140,6142],{"class":134,"line":585},[132,6134,335],{"class":145},[132,6136,6137],{"class":338}," config",[132,6139,342],{"class":145},[132,6141,5865],{"class":325},[132,6143,160],{"class":149},[132,6145,6146,6148,6151,6153,6155,6157,6159,6161,6163],{"class":134,"line":590},[132,6147,335],{"class":145},[132,6149,6150],{"class":338}," agentId",[132,6152,342],{"class":145},[132,6154,375],{"class":206},[132,6156,5880],{"class":145},[132,6158,4185],{"class":206},[132,6160,210],{"class":145},[132,6162,4185],{"class":206},[132,6164,160],{"class":149},[132,6166,6167],{"class":134,"line":596},[132,6168,197],{"emptyLinePlaceholder":196},[132,6170,6171,6173,6175,6178,6180,6182],{"class":134,"line":621},[132,6172,388],{"class":145},[132,6174,391],{"class":149},[132,6176,6177],{"class":338},"config",[132,6179,342],{"class":145},[132,6181,5865],{"class":325},[132,6183,401],{"class":149},[132,6185,6186,6188,6190,6192,6194,6196],{"class":134,"line":632},[132,6187,407],{"class":206},[132,6189,410],{"class":149},[132,6191,413],{"class":145},[132,6193,416],{"class":145},[132,6195,345],{"class":325},[132,6197,421],{"class":149},[132,6199,6200,6202,6204,6206,6208,6210,6212,6214,6216],{"class":134,"line":643},[132,6201,407],{"class":206},[132,6203,429],{"class":149},[132,6205,413],{"class":145},[132,6207,416],{"class":145},[132,6209,360],{"class":325},[132,6211,438],{"class":149},[132,6213,441],{"class":206},[132,6215,444],{"class":145},[132,6217,447],{"class":149},[132,6219,6220,6222,6225,6227],{"class":134,"line":654},[132,6221,407],{"class":206},[132,6223,6224],{"class":149},".config ",[132,6226,413],{"class":145},[132,6228,6229],{"class":149}," config;\n",[132,6231,6232],{"class":134,"line":670},[132,6233,466],{"class":149},[132,6235,6236],{"class":134,"line":682},[132,6237,197],{"emptyLinePlaceholder":196},[132,6239,6240,6242,6245,6247,6249,6251,6253,6256],{"class":134,"line":687},[132,6241,477],{"class":145},[132,6243,6244],{"class":325}," start",[132,6246,1105],{"class":149},[132,6248,342],{"class":145},[132,6250,507],{"class":325},[132,6252,510],{"class":149},[132,6254,6255],{"class":206},"void",[132,6257,516],{"class":149},[132,6259,6260],{"class":134,"line":692},[132,6261,6262],{"class":138},"    // Register with Mission Control\n",[132,6264,6265,6267,6270,6272,6274,6276,6278,6280],{"class":134,"line":698},[132,6266,407],{"class":206},[132,6268,6269],{"class":149},".agentId ",[132,6271,413],{"class":145},[132,6273,607],{"class":145},[132,6275,531],{"class":206},[132,6277,534],{"class":149},[132,6279,537],{"class":325},[132,6281,6282],{"class":149},"(api.agents.register, {\n",[132,6284,6285,6287,6289],{"class":134,"line":712},[132,6286,546],{"class":149},[132,6288,561],{"class":206},[132,6290,6291],{"class":149},".config.type,\n",[132,6293,6294,6297,6299],{"class":134,"line":737},[132,6295,6296],{"class":149},"      instanceId: ",[132,6298,561],{"class":206},[132,6300,6301],{"class":149},".config.instanceId,\n",[132,6303,6304,6307,6309,6311,6314],{"class":134,"line":748},[132,6305,6306],{"class":149},"      capabilities: ",[132,6308,561],{"class":206},[132,6310,123],{"class":149},[132,6312,6313],{"class":325},"getCapabilities",[132,6315,667],{"class":149},[132,6317,6318],{"class":134,"line":754},[132,6319,582],{"class":149},[132,6321,6322],{"class":134,"line":759},[132,6323,197],{"emptyLinePlaceholder":196},[132,6325,6326,6329,6332,6334,6337,6339,6341,6343,6345,6348,6351,6353,6355,6358,6360],{"class":134,"line":776},[132,6327,6328],{"class":149},"    console.",[132,6330,6331],{"class":325},"log",[132,6333,391],{"class":149},[132,6335,6336],{"class":156},"`[${",[132,6338,561],{"class":206},[132,6340,123],{"class":156},[132,6342,6177],{"class":149},[132,6344,123],{"class":156},[132,6346,6347],{"class":149},"type",[132,6349,6350],{"class":156},"}] Registered as ${",[132,6352,561],{"class":206},[132,6354,123],{"class":156},[132,6356,6357],{"class":149},"agentId",[132,6359,2602],{"class":156},[132,6361,447],{"class":149},[132,6363,6364],{"class":134,"line":790},[132,6365,197],{"emptyLinePlaceholder":196},[132,6367,6368],{"class":134,"line":808},[132,6369,6370],{"class":138},"    // Start heartbeat\n",[132,6372,6373,6376,6379,6381,6383,6385,6388,6391,6394],{"class":134,"line":813},[132,6374,6375],{"class":325},"    setInterval",[132,6377,6378],{"class":149},"(() ",[132,6380,976],{"class":145},[132,6382,531],{"class":206},[132,6384,123],{"class":149},[132,6386,6387],{"class":325},"heartbeat",[132,6389,6390],{"class":149},"(), ",[132,6392,6393],{"class":206},"30000",[132,6395,447],{"class":149},[132,6397,6398],{"class":134,"line":835},[132,6399,197],{"emptyLinePlaceholder":196},[132,6401,6402],{"class":134,"line":849},[132,6403,6404],{"class":138},"    // Start work loop\n",[132,6406,6407,6409,6411,6414],{"class":134,"line":854},[132,6408,407],{"class":206},[132,6410,123],{"class":149},[132,6412,6413],{"class":325},"workLoop",[132,6415,421],{"class":149},[132,6417,6418],{"class":134,"line":872},[132,6419,466],{"class":149},[132,6421,6422],{"class":134,"line":882},[132,6423,197],{"emptyLinePlaceholder":196},[132,6425,6426,6428,6431,6433,6435,6437],{"class":134,"line":892},[132,6427,335],{"class":145},[132,6429,6430],{"class":325}," getCapabilities",[132,6432,1105],{"class":149},[132,6434,342],{"class":145},[132,6436,375],{"class":206},[132,6438,1117],{"class":149},[132,6440,6441,6443,6445,6447],{"class":134,"line":902},[132,6442,2182],{"class":145},[132,6444,1967],{"class":149},[132,6446,561],{"class":206},[132,6448,6449],{"class":149},".config.type) {\n",[132,6451,6452,6454,6456],{"class":134,"line":916},[132,6453,2191],{"class":145},[132,6455,5877],{"class":156},[132,6457,2197],{"class":149},[132,6459,6460,6462,6465,6468,6470,6473,6475,6478,6480,6483],{"class":134,"line":922},[132,6461,2203],{"class":145},[132,6463,6464],{"class":149}," [",[132,6466,6467],{"class":156},"\"read_file\"",[132,6469,492],{"class":149},[132,6471,6472],{"class":156},"\"write_file\"",[132,6474,492],{"class":149},[132,6476,6477],{"class":156},"\"execute_command\"",[132,6479,492],{"class":149},[132,6481,6482],{"class":156},"\"git\"",[132,6484,6485],{"class":149},"];\n",[132,6487,6488,6490,6492],{"class":134,"line":928},[132,6489,2191],{"class":145},[132,6491,5883],{"class":156},[132,6493,2197],{"class":149},[132,6495,6496,6498,6500,6502,6504,6507,6509,6512],{"class":134,"line":934},[132,6497,2203],{"class":145},[132,6499,6464],{"class":149},[132,6501,6467],{"class":156},[132,6503,492],{"class":149},[132,6505,6506],{"class":156},"\"git_diff\"",[132,6508,492],{"class":149},[132,6510,6511],{"class":156},"\"comment\"",[132,6513,6485],{"class":149},[132,6515,6516,6518,6520],{"class":134,"line":939},[132,6517,2191],{"class":145},[132,6519,5888],{"class":156},[132,6521,2197],{"class":149},[132,6523,6524,6526,6528,6530,6532,6534,6536,6539],{"class":134,"line":945},[132,6525,2203],{"class":145},[132,6527,6464],{"class":149},[132,6529,6467],{"class":156},[132,6531,492],{"class":149},[132,6533,6477],{"class":156},[132,6535,492],{"class":149},[132,6537,6538],{"class":156},"\"test_runner\"",[132,6540,6485],{"class":149},[132,6542,6543,6545],{"class":134,"line":964},[132,6544,2584],{"class":145},[132,6546,2197],{"class":149},[132,6548,6549,6551,6553,6555],{"class":134,"line":987},[132,6550,2203],{"class":145},[132,6552,6464],{"class":149},[132,6554,6467],{"class":156},[132,6556,6485],{"class":149},[132,6558,6559],{"class":134,"line":993},[132,6560,931],{"class":149},[132,6562,6563],{"class":134,"line":1014},[132,6564,466],{"class":149},[132,6566,6567],{"class":134,"line":1019},[132,6568,197],{"emptyLinePlaceholder":196},[132,6570,6571,6573,6575,6577,6579,6581,6583,6585,6587],{"class":134,"line":1025},[132,6572,335],{"class":145},[132,6574,1884],{"class":145},[132,6576,5255],{"class":325},[132,6578,1105],{"class":149},[132,6580,342],{"class":145},[132,6582,507],{"class":325},[132,6584,510],{"class":149},[132,6586,6255],{"class":206},[132,6588,516],{"class":149},[132,6590,6591,6593,6595,6597],{"class":134,"line":1038},[132,6592,3922],{"class":145},[132,6594,1967],{"class":149},[132,6596,561],{"class":206},[132,6598,6599],{"class":149},".agentId) {\n",[132,6601,6602,6604,6606,6608,6610],{"class":134,"line":1048},[132,6603,5133],{"class":145},[132,6605,531],{"class":206},[132,6607,534],{"class":149},[132,6609,537],{"class":325},[132,6611,6612],{"class":149},"(api.agents.heartbeat, {\n",[132,6614,6615,6618,6620,6622,6624,6626],{"class":134,"line":1057},[132,6616,6617],{"class":149},"        agentId: ",[132,6619,561],{"class":206},[132,6621,6269],{"class":149},[132,6623,2157],{"class":145},[132,6625,3999],{"class":206},[132,6627,552],{"class":149},[132,6629,6630],{"class":134,"line":1062},[132,6631,925],{"class":149},[132,6633,6634],{"class":134,"line":1068},[132,6635,931],{"class":149},[132,6637,6638],{"class":134,"line":1073},[132,6639,466],{"class":149},[132,6641,6642],{"class":134,"line":1078},[132,6643,197],{"emptyLinePlaceholder":196},[132,6645,6646,6648,6650,6653,6655,6657,6659,6661,6663],{"class":134,"line":1087},[132,6647,335],{"class":145},[132,6649,1884],{"class":145},[132,6651,6652],{"class":325}," workLoop",[132,6654,1105],{"class":149},[132,6656,342],{"class":145},[132,6658,507],{"class":325},[132,6660,510],{"class":149},[132,6662,6255],{"class":206},[132,6664,516],{"class":149},[132,6666,6667,6669,6671,6674],{"class":134,"line":1092},[132,6668,762],{"class":145},[132,6670,1967],{"class":149},[132,6672,6673],{"class":206},"true",[132,6675,401],{"class":149},[132,6677,6678,6681],{"class":134,"line":1097},[132,6679,6680],{"class":145},"      try",[132,6682,329],{"class":149},[132,6684,6685],{"class":134,"line":1120},[132,6686,6687],{"class":138},"        // Check for messages\n",[132,6689,6690,6692,6694,6696,6698,6700,6702,6704],{"class":134,"line":1127},[132,6691,1999],{"class":145},[132,6693,717],{"class":206},[132,6695,210],{"class":145},[132,6697,607],{"class":145},[132,6699,531],{"class":206},[132,6701,534],{"class":149},[132,6703,537],{"class":325},[132,6705,6706],{"class":149},"(api.agents.claimMessages, {\n",[132,6708,6709,6712,6714],{"class":134,"line":1133},[132,6710,6711],{"class":149},"          agentType: ",[132,6713,561],{"class":206},[132,6715,6291],{"class":149},[132,6717,6718,6721,6723,6725,6727,6729],{"class":134,"line":1144},[132,6719,6720],{"class":149},"          agentId: ",[132,6722,561],{"class":206},[132,6724,6269],{"class":149},[132,6726,2157],{"class":145},[132,6728,3999],{"class":206},[132,6730,552],{"class":149},[132,6732,6733,6736,6739],{"class":134,"line":1155},[132,6734,6735],{"class":149},"          limit: ",[132,6737,6738],{"class":206},"1",[132,6740,552],{"class":149},[132,6742,6743],{"class":134,"line":1161},[132,6744,2065],{"class":149},[132,6746,6747],{"class":134,"line":1178},[132,6748,197],{"emptyLinePlaceholder":196},[132,6750,6751,6753,6755,6757,6759,6761],{"class":134,"line":1184},[132,6752,4912],{"class":145},[132,6754,5734],{"class":149},[132,6756,4377],{"class":206},[132,6758,5739],{"class":145},[132,6760,5742],{"class":206},[132,6762,401],{"class":149},[132,6764,6765,6768,6770,6772,6775,6778,6781],{"class":134,"line":1190},[132,6766,6767],{"class":145},"          await",[132,6769,531],{"class":206},[132,6771,123],{"class":149},[132,6773,6774],{"class":325},"processMessage",[132,6776,6777],{"class":149},"(messages[",[132,6779,6780],{"class":206},"0",[132,6782,6783],{"class":149},"]);\n",[132,6785,6786,6789,6792],{"class":134,"line":1201},[132,6787,6788],{"class":149},"        } ",[132,6790,6791],{"class":145},"else",[132,6793,329],{"class":149},[132,6795,6796],{"class":134,"line":1223},[132,6797,6798],{"class":138},"          // No work, wait before checking again\n",[132,6800,6801,6803,6805,6807,6810,6812,6815],{"class":134,"line":1234},[132,6802,6767],{"class":145},[132,6804,531],{"class":206},[132,6806,123],{"class":149},[132,6808,6809],{"class":325},"sleep",[132,6811,391],{"class":149},[132,6813,6814],{"class":206},"5000",[132,6816,447],{"class":149},[132,6818,6819],{"class":134,"line":1240},[132,6820,4937],{"class":149},[132,6822,6823,6826,6829],{"class":134,"line":1246},[132,6824,6825],{"class":149},"      } ",[132,6827,6828],{"class":145},"catch",[132,6830,6831],{"class":149}," (error) {\n",[132,6833,6834,6837,6840,6842,6844,6846,6848,6850,6852,6854,6857],{"class":134,"line":1252},[132,6835,6836],{"class":149},"        console.",[132,6838,6839],{"class":325},"error",[132,6841,391],{"class":149},[132,6843,6336],{"class":156},[132,6845,561],{"class":206},[132,6847,123],{"class":156},[132,6849,6177],{"class":149},[132,6851,123],{"class":156},[132,6853,6347],{"class":149},[132,6855,6856],{"class":156},"}] Error in work loop:`",[132,6858,6859],{"class":149},", error);\n",[132,6861,6862,6865,6867,6869,6871,6873,6876],{"class":134,"line":1258},[132,6863,6864],{"class":145},"        await",[132,6866,531],{"class":206},[132,6868,123],{"class":149},[132,6870,6809],{"class":325},[132,6872,391],{"class":149},[132,6874,6875],{"class":206},"10000",[132,6877,447],{"class":149},[132,6879,6880],{"class":134,"line":1263},[132,6881,2071],{"class":149},[132,6883,6884],{"class":134,"line":1273},[132,6885,931],{"class":149},[132,6887,6888],{"class":134,"line":1283},[132,6889,466],{"class":149},[132,6891,6892],{"class":134,"line":1288},[132,6893,197],{"emptyLinePlaceholder":196},[132,6895,6896,6898,6900,6903,6905,6907,6909,6911,6913,6915,6917,6919,6921],{"class":134,"line":1301},[132,6897,335],{"class":145},[132,6899,1884],{"class":145},[132,6901,6902],{"class":325}," processMessage",[132,6904,391],{"class":149},[132,6906,495],{"class":338},[132,6908,342],{"class":145},[132,6910,3999],{"class":206},[132,6912,502],{"class":149},[132,6914,342],{"class":145},[132,6916,507],{"class":325},[132,6918,510],{"class":149},[132,6920,6255],{"class":206},[132,6922,516],{"class":149},[132,6924,6925,6927,6929,6931,6933,6935,6937,6939,6941,6943,6946,6948,6950,6953,6955,6958,6960,6962,6964,6967,6969,6972],{"class":134,"line":1306},[132,6926,6328],{"class":149},[132,6928,6331],{"class":325},[132,6930,391],{"class":149},[132,6932,6336],{"class":156},[132,6934,561],{"class":206},[132,6936,123],{"class":156},[132,6938,6177],{"class":149},[132,6940,123],{"class":156},[132,6942,6347],{"class":149},[132,6944,6945],{"class":156},"}] Processing: ${",[132,6947,495],{"class":149},[132,6949,123],{"class":156},[132,6951,6952],{"class":149},"content",[132,6954,123],{"class":156},[132,6956,6957],{"class":325},"slice",[132,6959,391],{"class":156},[132,6961,6780],{"class":206},[132,6963,492],{"class":156},[132,6965,6966],{"class":206},"100",[132,6968,502],{"class":156},[132,6970,6971],{"class":156},"}...`",[132,6973,447],{"class":149},[132,6975,6976],{"class":134,"line":1323},[132,6977,197],{"emptyLinePlaceholder":196},[132,6979,6980,6982,6984,6986,6988],{"class":134,"line":1328},[132,6981,528],{"class":145},[132,6983,531],{"class":206},[132,6985,534],{"class":149},[132,6987,537],{"class":325},[132,6989,540],{"class":149},[132,6991,6992,6994,6997],{"class":134,"line":1339},[132,6993,546],{"class":149},[132,6995,6996],{"class":156},"\"agent_task_start\"",[132,6998,552],{"class":149},[132,7000,7001,7004,7006,7008,7010,7012],{"class":134,"line":1344},[132,7002,7003],{"class":149},"      agentId: ",[132,7005,561],{"class":206},[132,7007,6269],{"class":149},[132,7009,2157],{"class":145},[132,7011,3999],{"class":206},[132,7013,552],{"class":149},[132,7015,7016],{"class":134,"line":1349},[132,7017,7018],{"class":149},"      taskId: message.taskId,\n",[132,7020,7021,7024,7027,7029,7031,7033,7035,7037,7039,7041,7043,7045,7047,7049],{"class":134,"line":1354},[132,7022,7023],{"class":149},"      content: ",[132,7025,7026],{"class":156},"`Started processing: ${",[132,7028,495],{"class":149},[132,7030,123],{"class":156},[132,7032,6952],{"class":149},[132,7034,123],{"class":156},[132,7036,6957],{"class":325},[132,7038,391],{"class":156},[132,7040,6780],{"class":206},[132,7042,492],{"class":156},[132,7044,6966],{"class":206},[132,7046,502],{"class":156},[132,7048,2602],{"class":156},[132,7050,552],{"class":149},[132,7052,7053,7056,7058],{"class":134,"line":1364},[132,7054,7055],{"class":149},"      timestamp: Date.",[132,7057,4609],{"class":325},[132,7059,667],{"class":149},[132,7061,7062],{"class":134,"line":1374},[132,7063,582],{"class":149},[132,7065,7066],{"class":134,"line":1379},[132,7067,197],{"emptyLinePlaceholder":196},[132,7069,7070],{"class":134,"line":1392},[132,7071,7072],{"class":138},"    // Run agent with tools\n",[132,7074,7075,7077,7079,7081,7083,7085,7087,7090],{"class":134,"line":1397},[132,7076,599],{"class":145},[132,7078,602],{"class":206},[132,7080,210],{"class":145},[132,7082,607],{"class":145},[132,7084,531],{"class":206},[132,7086,123],{"class":149},[132,7088,7089],{"class":325},"runAgent",[132,7091,7092],{"class":149},"(message.content);\n",[132,7094,7095],{"class":134,"line":1403},[132,7096,197],{"emptyLinePlaceholder":196},[132,7098,7099],{"class":134,"line":1412},[132,7100,7101],{"class":138},"    // Log completion\n",[132,7103,7104,7106,7108,7110,7112],{"class":134,"line":1422},[132,7105,528],{"class":145},[132,7107,531],{"class":206},[132,7109,534],{"class":149},[132,7111,537],{"class":325},[132,7113,540],{"class":149},[132,7115,7116,7118,7121],{"class":134,"line":1427},[132,7117,546],{"class":149},[132,7119,7120],{"class":156},"\"agent_task_complete\"",[132,7122,552],{"class":149},[132,7124,7125,7127,7129,7131,7133,7135],{"class":134,"line":1432},[132,7126,7003],{"class":149},[132,7128,561],{"class":206},[132,7130,6269],{"class":149},[132,7132,2157],{"class":145},[132,7134,3999],{"class":206},[132,7136,552],{"class":149},[132,7138,7139],{"class":134,"line":1437},[132,7140,7018],{"class":149},[132,7142,7143],{"class":134,"line":1442},[132,7144,7145],{"class":149},"      content: response,\n",[132,7147,7148,7150,7152],{"class":134,"line":1447},[132,7149,7055],{"class":149},[132,7151,4609],{"class":325},[132,7153,667],{"class":149},[132,7155,7156],{"class":134,"line":1457},[132,7157,582],{"class":149},[132,7159,7160],{"class":134,"line":1467},[132,7161,197],{"emptyLinePlaceholder":196},[132,7163,7164],{"class":134,"line":1472},[132,7165,7166],{"class":138},"    // Mark message as processed\n",[132,7168,7169,7171,7173,7175,7177],{"class":134,"line":1485},[132,7170,528],{"class":145},[132,7172,531],{"class":206},[132,7174,534],{"class":149},[132,7176,537],{"class":325},[132,7178,7179],{"class":149},"(api.messages.markProcessed, {\n",[132,7181,7182],{"class":134,"line":1490},[132,7183,7184],{"class":149},"      messageId: message._id,\n",[132,7186,7187],{"class":134,"line":1499},[132,7188,582],{"class":149},[132,7190,7191],{"class":134,"line":1509},[132,7192,197],{"emptyLinePlaceholder":196},[132,7194,7195],{"class":134,"line":1519},[132,7196,5727],{"class":138},[132,7198,7199,7201,7203,7205,7207],{"class":134,"line":1551},[132,7200,528],{"class":145},[132,7202,531],{"class":206},[132,7204,534],{"class":149},[132,7206,537],{"class":325},[132,7208,7209],{"class":149},"(api.agents.setStatus, {\n",[132,7211,7212,7214,7216,7218,7220,7222],{"class":134,"line":1566},[132,7213,7003],{"class":149},[132,7215,561],{"class":206},[132,7217,6269],{"class":149},[132,7219,2157],{"class":145},[132,7221,3999],{"class":206},[132,7223,552],{"class":149},[132,7225,7226,7228,7230],{"class":134,"line":1571},[132,7227,4639],{"class":149},[132,7229,2966],{"class":156},[132,7231,552],{"class":149},[132,7233,7234],{"class":134,"line":1590},[132,7235,582],{"class":149},[132,7237,7238],{"class":134,"line":1595},[132,7239,466],{"class":149},[132,7241,7242],{"class":134,"line":1600},[132,7243,197],{"emptyLinePlaceholder":196},[132,7245,7246,7248,7250,7253,7255,7258,7260,7262,7264,7266,7268,7270,7272],{"class":134,"line":1605},[132,7247,335],{"class":145},[132,7249,1884],{"class":145},[132,7251,7252],{"class":325}," runAgent",[132,7254,391],{"class":149},[132,7256,7257],{"class":338},"task",[132,7259,342],{"class":145},[132,7261,375],{"class":206},[132,7263,502],{"class":149},[132,7265,342],{"class":145},[132,7267,507],{"class":325},[132,7269,510],{"class":149},[132,7271,513],{"class":206},[132,7273,516],{"class":149},[132,7275,7276,7278,7280,7282,7284,7286,7288,7290,7292,7295,7297],{"class":134,"line":1615},[132,7277,599],{"class":145},[132,7279,717],{"class":206},[132,7281,342],{"class":145},[132,7283,345],{"class":325},[132,7285,123],{"class":149},[132,7287,726],{"class":325},[132,7289,729],{"class":149},[132,7291,413],{"class":145},[132,7293,7294],{"class":149}," [{ role: ",[132,7296,676],{"class":156},[132,7298,7299],{"class":149},", content: task }];\n",[132,7301,7302],{"class":134,"line":1625},[132,7303,197],{"emptyLinePlaceholder":196},[132,7305,7306,7308,7311,7313,7315,7317,7319,7321],{"class":134,"line":1630},[132,7307,701],{"class":145},[132,7309,7310],{"class":149}," response ",[132,7312,413],{"class":145},[132,7314,607],{"class":145},[132,7316,531],{"class":206},[132,7318,612],{"class":149},[132,7320,615],{"class":325},[132,7322,618],{"class":149},[132,7324,7325,7327,7329],{"class":134,"line":1643},[132,7326,624],{"class":149},[132,7328,627],{"class":156},[132,7330,552],{"class":149},[132,7332,7333,7335,7338],{"class":134,"line":1648},[132,7334,635],{"class":149},[132,7336,7337],{"class":206},"8192",[132,7339,552],{"class":149},[132,7341,7342,7344,7347,7350,7352],{"class":134,"line":1657},[132,7343,646],{"class":149},[132,7345,7346],{"class":206},"AGENT_PROMPTS",[132,7348,7349],{"class":149},"[",[132,7351,561],{"class":206},[132,7353,7354],{"class":149},".config.type],\n",[132,7356,7357,7359,7361,7363,7366],{"class":134,"line":1667},[132,7358,657],{"class":149},[132,7360,561],{"class":206},[132,7362,123],{"class":149},[132,7364,7365],{"class":325},"getTools",[132,7367,667],{"class":149},[132,7369,7370],{"class":134,"line":1683},[132,7371,7372],{"class":149},"      messages,\n",[132,7374,7375],{"class":134,"line":1688},[132,7376,582],{"class":149},[132,7378,7379],{"class":134,"line":1693},[132,7380,197],{"emptyLinePlaceholder":196},[132,7382,7383],{"class":134,"line":1698},[132,7384,7385],{"class":138},"    // Tool use loop\n",[132,7387,7388,7390,7393,7395,7397],{"class":134,"line":1703},[132,7389,762],{"class":145},[132,7391,7392],{"class":149}," (response.stop_reason ",[132,7394,768],{"class":145},[132,7396,771],{"class":156},[132,7398,401],{"class":149},[132,7400,7401,7403,7405,7407,7409],{"class":134,"line":1713},[132,7402,793],{"class":149},[132,7404,796],{"class":325},[132,7406,799],{"class":149},[132,7408,802],{"class":156},[132,7410,7411],{"class":149},", content: response.content });\n",[132,7413,7414],{"class":134,"line":1723},[132,7415,197],{"emptyLinePlaceholder":196},[132,7417,7418,7420,7422,7424,7426,7428,7430,7432],{"class":134,"line":1728},[132,7419,779],{"class":145},[132,7421,818],{"class":206},[132,7423,210],{"class":145},[132,7425,607],{"class":145},[132,7427,531],{"class":206},[132,7429,123],{"class":149},[132,7431,829],{"class":325},[132,7433,7434],{"class":149},"(response.content);\n",[132,7436,7437,7439,7441,7443,7445],{"class":134,"line":1741},[132,7438,793],{"class":149},[132,7440,796],{"class":325},[132,7442,799],{"class":149},[132,7444,676],{"class":156},[132,7446,846],{"class":149},[132,7448,7449],{"class":134,"line":1746},[132,7450,197],{"emptyLinePlaceholder":196},[132,7452,7453,7456,7458,7460,7462,7464,7466],{"class":134,"line":1752},[132,7454,7455],{"class":149},"      response ",[132,7457,413],{"class":145},[132,7459,607],{"class":145},[132,7461,531],{"class":206},[132,7463,612],{"class":149},[132,7465,615],{"class":325},[132,7467,618],{"class":149},[132,7469,7470,7472,7474],{"class":134,"line":1761},[132,7471,875],{"class":149},[132,7473,627],{"class":156},[132,7475,552],{"class":149},[132,7477,7478,7480,7482],{"class":134,"line":1791},[132,7479,885],{"class":149},[132,7481,7337],{"class":206},[132,7483,552],{"class":149},[132,7485,7486,7488,7490,7492,7494],{"class":134,"line":1796},[132,7487,895],{"class":149},[132,7489,7346],{"class":206},[132,7491,7349],{"class":149},[132,7493,561],{"class":206},[132,7495,7354],{"class":149},[132,7497,7498,7500,7502,7504,7506],{"class":134,"line":1806},[132,7499,905],{"class":149},[132,7501,561],{"class":206},[132,7503,123],{"class":149},[132,7505,7365],{"class":325},[132,7507,667],{"class":149},[132,7509,7510],{"class":134,"line":1816},[132,7511,919],{"class":149},[132,7513,7514],{"class":134,"line":1834},[132,7515,925],{"class":149},[132,7517,7518],{"class":134,"line":1839},[132,7519,931],{"class":149},[132,7521,7522],{"class":134,"line":1854},[132,7523,197],{"emptyLinePlaceholder":196},[132,7525,7526,7528,7530,7532,7535,7537,7539,7542,7544,7546,7549,7551,7554],{"class":134,"line":1859},[132,7527,599],{"class":145},[132,7529,950],{"class":206},[132,7531,210],{"class":145},[132,7533,7534],{"class":149}," response.content.",[132,7536,958],{"class":325},[132,7538,4131],{"class":149},[132,7540,7541],{"class":338},"b",[132,7543,973],{"class":149},[132,7545,976],{"class":145},[132,7547,7548],{"class":149}," b.type ",[132,7550,768],{"class":145},[132,7552,7553],{"class":156}," \"text\"",[132,7555,447],{"class":149},[132,7557,7558,7560,7562,7564,7567],{"class":134,"line":1864},[132,7559,1081],{"class":145},[132,7561,1003],{"class":149},[132,7563,1006],{"class":145},[132,7565,7566],{"class":156}," \"Task completed.\"",[132,7568,160],{"class":149},[132,7570,7571],{"class":134,"line":1869},[132,7572,466],{"class":149},[132,7574,7575],{"class":134,"line":1874},[132,7576,197],{"emptyLinePlaceholder":196},[132,7578,7579,7581,7584,7586,7588,7590,7592,7594],{"class":134,"line":1879},[132,7580,335],{"class":145},[132,7582,7583],{"class":325}," getTools",[132,7585,1105],{"class":149},[132,7587,342],{"class":145},[132,7589,345],{"class":325},[132,7591,123],{"class":149},[132,7593,1114],{"class":325},[132,7595,1117],{"class":149},[132,7597,7598,7600,7603,7605,7607,7609,7611,7613,7615],{"class":134,"line":1892},[132,7599,599],{"class":145},[132,7601,7602],{"class":206}," baseTools",[132,7604,342],{"class":145},[132,7606,345],{"class":325},[132,7608,123],{"class":149},[132,7610,1114],{"class":325},[132,7612,729],{"class":149},[132,7614,413],{"class":145},[132,7616,734],{"class":149},[132,7618,7619],{"class":134,"line":1910},[132,7620,1130],{"class":149},[132,7622,7623,7625,7627],{"class":134,"line":1933},[132,7624,1136],{"class":149},[132,7626,6467],{"class":156},[132,7628,552],{"class":149},[132,7630,7631,7633,7636],{"class":134,"line":1956},[132,7632,1147],{"class":149},[132,7634,7635],{"class":156},"\"Read contents of a file\"",[132,7637,552],{"class":149},[132,7639,7640],{"class":134,"line":1961},[132,7641,1158],{"class":149},[132,7643,7644,7646,7648,7650,7652],{"class":134,"line":1981},[132,7645,1164],{"class":149},[132,7647,1167],{"class":156},[132,7649,1170],{"class":145},[132,7651,1173],{"class":145},[132,7653,552],{"class":149},[132,7655,7656],{"class":134,"line":1996},[132,7657,1181],{"class":149},[132,7659,7660,7663,7665,7667,7670],{"class":134,"line":2019},[132,7661,7662],{"class":149},"            path: { type: ",[132,7664,1196],{"class":156},[132,7666,1314],{"class":149},[132,7668,7669],{"class":156},"\"File path relative to workspace\"",[132,7671,1320],{"class":149},[132,7673,7674],{"class":134,"line":2029},[132,7675,1243],{"class":149},[132,7677,7678,7680,7683],{"class":134,"line":2039},[132,7679,1331],{"class":149},[132,7681,7682],{"class":156},"\"path\"",[132,7684,1220],{"class":149},[132,7686,7687],{"class":134,"line":2045},[132,7688,1249],{"class":149},[132,7690,7691],{"class":134,"line":2062},[132,7692,1255],{"class":149},[132,7694,7695],{"class":134,"line":2068},[132,7696,1130],{"class":149},[132,7698,7699,7701,7704],{"class":134,"line":2074},[132,7700,1136],{"class":149},[132,7702,7703],{"class":156},"\"list_directory\"",[132,7705,552],{"class":149},[132,7707,7708,7710,7713],{"class":134,"line":2079},[132,7709,1147],{"class":149},[132,7711,7712],{"class":156},"\"List files in a directory\"",[132,7714,552],{"class":149},[132,7716,7717],{"class":134,"line":2084},[132,7718,1158],{"class":149},[132,7720,7721,7723,7725,7727,7729],{"class":134,"line":2092},[132,7722,1164],{"class":149},[132,7724,1167],{"class":156},[132,7726,1170],{"class":145},[132,7728,1173],{"class":145},[132,7730,552],{"class":149},[132,7732,7733],{"class":134,"line":2097},[132,7734,1181],{"class":149},[132,7736,7737,7739,7741,7743,7746],{"class":134,"line":2102},[132,7738,7662],{"class":149},[132,7740,1196],{"class":156},[132,7742,1314],{"class":149},[132,7744,7745],{"class":156},"\"Directory path\"",[132,7747,1320],{"class":149},[132,7749,7750],{"class":134,"line":2144},[132,7751,1243],{"class":149},[132,7753,7754,7756,7758],{"class":134,"line":2174},[132,7755,1331],{"class":149},[132,7757,7682],{"class":156},[132,7759,1220],{"class":149},[132,7761,7762],{"class":134,"line":2179},[132,7763,1249],{"class":149},[132,7765,7766],{"class":134,"line":2188},[132,7767,1255],{"class":149},[132,7769,7770],{"class":134,"line":2200},[132,7771,751],{"class":149},[132,7773,7774],{"class":134,"line":2216},[132,7775,197],{"emptyLinePlaceholder":196},[132,7777,7778,7780,7782,7784,7787,7789,7791],{"class":134,"line":2228},[132,7779,3922],{"class":145},[132,7781,1967],{"class":149},[132,7783,561],{"class":206},[132,7785,7786],{"class":149},".config.type ",[132,7788,768],{"class":145},[132,7790,5877],{"class":156},[132,7792,401],{"class":149},[132,7794,7795,7798,7800],{"class":134,"line":2233},[132,7796,7797],{"class":149},"      baseTools.",[132,7799,796],{"class":325},[132,7801,961],{"class":149},[132,7803,7804],{"class":134,"line":2238},[132,7805,7806],{"class":149},"        {\n",[132,7808,7809,7812,7814],{"class":134,"line":2248},[132,7810,7811],{"class":149},"          name: ",[132,7813,6472],{"class":156},[132,7815,552],{"class":149},[132,7817,7818,7821,7824],{"class":134,"line":2262},[132,7819,7820],{"class":149},"          description: ",[132,7822,7823],{"class":156},"\"Write content to a file\"",[132,7825,552],{"class":149},[132,7827,7828],{"class":134,"line":2274},[132,7829,7830],{"class":149},"          input_schema: {\n",[132,7832,7833,7836,7838,7840,7842],{"class":134,"line":2279},[132,7834,7835],{"class":149},"            type: ",[132,7837,1167],{"class":156},[132,7839,1170],{"class":145},[132,7841,1173],{"class":145},[132,7843,552],{"class":149},[132,7845,7846],{"class":134,"line":2284},[132,7847,7848],{"class":149},"            properties: {\n",[132,7850,7851,7854,7856],{"class":134,"line":2294},[132,7852,7853],{"class":149},"              path: { type: ",[132,7855,1196],{"class":156},[132,7857,1320],{"class":149},[132,7859,7860,7863,7865],{"class":134,"line":2308},[132,7861,7862],{"class":149},"              content: { type: ",[132,7864,1196],{"class":156},[132,7866,1320],{"class":149},[132,7868,7869],{"class":134,"line":2320},[132,7870,1237],{"class":149},[132,7872,7873,7876,7878,7880,7883],{"class":134,"line":2325},[132,7874,7875],{"class":149},"            required: [",[132,7877,7682],{"class":156},[132,7879,492],{"class":149},[132,7881,7882],{"class":156},"\"content\"",[132,7884,1220],{"class":149},[132,7886,7887],{"class":134,"line":2330},[132,7888,1243],{"class":149},[132,7890,7891],{"class":134,"line":2340},[132,7892,1249],{"class":149},[132,7894,7895],{"class":134,"line":2354},[132,7896,7806],{"class":149},[132,7898,7899,7901,7903],{"class":134,"line":2366},[132,7900,7811],{"class":149},[132,7902,6477],{"class":156},[132,7904,552],{"class":149},[132,7906,7907,7909,7912],{"class":134,"line":2378},[132,7908,7820],{"class":149},[132,7910,7911],{"class":156},"\"Execute a shell command\"",[132,7913,552],{"class":149},[132,7915,7916],{"class":134,"line":2390},[132,7917,7830],{"class":149},[132,7919,7920,7922,7924,7926,7928],{"class":134,"line":2402},[132,7921,7835],{"class":149},[132,7923,1167],{"class":156},[132,7925,1170],{"class":145},[132,7927,1173],{"class":145},[132,7929,552],{"class":149},[132,7931,7932],{"class":134,"line":2414},[132,7933,7848],{"class":149},[132,7935,7936,7939,7941],{"class":134,"line":2419},[132,7937,7938],{"class":149},"              command: { type: ",[132,7940,1196],{"class":156},[132,7942,1320],{"class":149},[132,7944,7945,7948,7950,7952,7955],{"class":134,"line":2424},[132,7946,7947],{"class":149},"              cwd: { type: ",[132,7949,1196],{"class":156},[132,7951,1314],{"class":149},[132,7953,7954],{"class":156},"\"Working directory\"",[132,7956,1320],{"class":149},[132,7958,7959],{"class":134,"line":2434},[132,7960,1237],{"class":149},[132,7962,7963,7965,7968],{"class":134,"line":2448},[132,7964,7875],{"class":149},[132,7966,7967],{"class":156},"\"command\"",[132,7969,1220],{"class":149},[132,7971,7972],{"class":134,"line":2459},[132,7973,1243],{"class":149},[132,7975,7976],{"class":134,"line":2470},[132,7977,4937],{"class":149},[132,7979,7980],{"class":134,"line":2490},[132,7981,7982],{"class":149},"      );\n",[132,7984,7985],{"class":134,"line":2495},[132,7986,931],{"class":149},[132,7988,7989],{"class":134,"line":2500},[132,7990,197],{"emptyLinePlaceholder":196},[132,7992,7993,7995],{"class":134,"line":2510},[132,7994,1081],{"class":145},[132,7996,7997],{"class":149}," baseTools;\n",[132,7999,8000],{"class":134,"line":2524},[132,8001,466],{"class":149},[132,8003,8004],{"class":134,"line":2536},[132,8005,197],{"emptyLinePlaceholder":196},[132,8007,8008,8010,8012,8014],{"class":134,"line":2548},[132,8009,335],{"class":145},[132,8011,1884],{"class":145},[132,8013,1887],{"class":325},[132,8015,961],{"class":149},[132,8017,8018,8020,8022,8024,8026,8028],{"class":134,"line":2560},[132,8019,1895],{"class":338},[132,8021,342],{"class":145},[132,8023,345],{"class":325},[132,8025,123],{"class":149},[132,8027,1904],{"class":325},[132,8029,1907],{"class":149},[132,8031,8032,8034,8036,8038,8040,8042,8044,8046],{"class":134,"line":2571},[132,8033,1913],{"class":149},[132,8035,342],{"class":145},[132,8037,507],{"class":325},[132,8039,510],{"class":149},[132,8041,1922],{"class":325},[132,8043,123],{"class":149},[132,8045,1927],{"class":325},[132,8047,1930],{"class":149},[132,8049,8050,8052,8054,8056,8058,8060,8062,8064,8066],{"class":134,"line":2576},[132,8051,599],{"class":145},[132,8053,1938],{"class":206},[132,8055,342],{"class":145},[132,8057,345],{"class":325},[132,8059,123],{"class":149},[132,8061,1927],{"class":325},[132,8063,729],{"class":149},[132,8065,413],{"class":145},[132,8067,1953],{"class":149},[132,8069,8070],{"class":134,"line":2581},[132,8071,197],{"emptyLinePlaceholder":196},[132,8073,8074,8076,8078,8080,8082,8084],{"class":134,"line":2589},[132,8075,1964],{"class":145},[132,8077,1967],{"class":149},[132,8079,203],{"class":145},[132,8081,1972],{"class":206},[132,8083,1975],{"class":145},[132,8085,1978],{"class":149},[132,8087,8088,8090,8092,8094,8096],{"class":134,"line":2608},[132,8089,1984],{"class":145},[132,8091,1987],{"class":149},[132,8093,768],{"class":145},[132,8095,771],{"class":156},[132,8097,401],{"class":149},[132,8099,8100,8103],{"class":134,"line":2613},[132,8101,8102],{"class":145},"        try",[132,8104,329],{"class":149},[132,8106,8107,8110,8112,8114,8116,8118,8120,8122],{"class":134,"line":2618},[132,8108,8109],{"class":145},"          const",[132,8111,2002],{"class":206},[132,8113,210],{"class":145},[132,8115,607],{"class":145},[132,8117,531],{"class":206},[132,8119,123],{"class":149},[132,8121,2013],{"class":325},[132,8123,2016],{"class":149},[132,8125,8127,8130,8132],{"class":134,"line":8126},246,[132,8128,8129],{"class":149},"          results.",[132,8131,796],{"class":325},[132,8133,618],{"class":149},[132,8135,8137,8139,8141],{"class":134,"line":8136},247,[132,8138,7835],{"class":149},[132,8140,2034],{"class":156},[132,8142,552],{"class":149},[132,8144,8146],{"class":134,"line":8145},248,[132,8147,8148],{"class":149},"            tool_use_id: block.id,\n",[132,8150,8152,8155,8158,8161,8163,8166,8169,8171,8173,8176,8178,8180],{"class":134,"line":8151},249,[132,8153,8154],{"class":149},"            content: ",[132,8156,8157],{"class":145},"typeof",[132,8159,8160],{"class":149}," result ",[132,8162,768],{"class":145},[132,8164,8165],{"class":156}," \"string\"",[132,8167,8168],{"class":145}," ?",[132,8170,8160],{"class":149},[132,8172,342],{"class":145},[132,8174,8175],{"class":206}," JSON",[132,8177,123],{"class":149},[132,8179,2056],{"class":325},[132,8181,2059],{"class":149},[132,8183,8185],{"class":134,"line":8184},250,[132,8186,8187],{"class":149},"          });\n",[132,8189,8191,8193,8195],{"class":134,"line":8190},251,[132,8192,6788],{"class":149},[132,8194,6828],{"class":145},[132,8196,6831],{"class":149},[132,8198,8200,8202,8204],{"class":134,"line":8199},252,[132,8201,8129],{"class":149},[132,8203,796],{"class":325},[132,8205,618],{"class":149},[132,8207,8209,8211,8213],{"class":134,"line":8208},253,[132,8210,7835],{"class":149},[132,8212,2034],{"class":156},[132,8214,552],{"class":149},[132,8216,8218],{"class":134,"line":8217},254,[132,8219,8148],{"class":149},[132,8221,8223,8225,8228,8230,8232],{"class":134,"line":8222},255,[132,8224,8154],{"class":149},[132,8226,8227],{"class":156},"`Error: ${",[132,8229,6839],{"class":149},[132,8231,2602],{"class":156},[132,8233,552],{"class":149},[132,8235,8237,8240,8242],{"class":134,"line":8236},256,[132,8238,8239],{"class":149},"            is_error: ",[132,8241,6673],{"class":206},[132,8243,552],{"class":149},[132,8245,8247],{"class":134,"line":8246},257,[132,8248,8187],{"class":149},[132,8250,8252],{"class":134,"line":8251},258,[132,8253,4937],{"class":149},[132,8255,8257],{"class":134,"line":8256},259,[132,8258,2071],{"class":149},[132,8260,8262],{"class":134,"line":8261},260,[132,8263,931],{"class":149},[132,8265,8267],{"class":134,"line":8266},261,[132,8268,197],{"emptyLinePlaceholder":196},[132,8270,8272,8274],{"class":134,"line":8271},262,[132,8273,1081],{"class":145},[132,8275,2089],{"class":149},[132,8277,8279],{"class":134,"line":8278},263,[132,8280,466],{"class":149},[132,8282,8284],{"class":134,"line":8283},264,[132,8285,197],{"emptyLinePlaceholder":196},[132,8287,8289,8291,8293,8295,8297,8299,8301,8303,8305,8307,8309,8311,8313,8315,8317,8319,8321],{"class":134,"line":8288},265,[132,8290,335],{"class":145},[132,8292,1884],{"class":145},[132,8294,2109],{"class":325},[132,8296,391],{"class":149},[132,8298,2114],{"class":338},[132,8300,342],{"class":145},[132,8302,375],{"class":206},[132,8304,492],{"class":149},[132,8306,2123],{"class":338},[132,8308,342],{"class":145},[132,8310,2128],{"class":206},[132,8312,502],{"class":149},[132,8314,342],{"class":145},[132,8316,507],{"class":325},[132,8318,510],{"class":149},[132,8320,2139],{"class":206},[132,8322,516],{"class":149},[132,8324,8326,8328,8330,8332,8334,8336,8338,8340,8342,8344,8346],{"class":134,"line":8325},266,[132,8327,599],{"class":145},[132,8329,2149],{"class":206},[132,8331,210],{"class":145},[132,8333,2154],{"class":149},[132,8335,2157],{"class":145},[132,8337,2160],{"class":325},[132,8339,510],{"class":149},[132,8341,513],{"class":206},[132,8343,492],{"class":149},[132,8345,2139],{"class":206},[132,8347,2171],{"class":149},[132,8349,8351,8353,8356,8358,8361,8363,8365],{"class":134,"line":8350},267,[132,8352,599],{"class":145},[132,8354,8355],{"class":206}," path",[132,8357,210],{"class":145},[132,8359,8360],{"class":325}," require",[132,8362,391],{"class":149},[132,8364,7682],{"class":156},[132,8366,447],{"class":149},[132,8368,8370,8372,8375,8377,8379,8381,8384],{"class":134,"line":8369},268,[132,8371,599],{"class":145},[132,8373,8374],{"class":206}," fs",[132,8376,210],{"class":145},[132,8378,8360],{"class":325},[132,8380,391],{"class":149},[132,8382,8383],{"class":156},"\"fs\"",[132,8385,8386],{"class":149},").promises;\n",[132,8388,8390],{"class":134,"line":8389},269,[132,8391,197],{"emptyLinePlaceholder":196},[132,8393,8395,8397,8400,8402,8404,8406,8408,8410,8412],{"class":134,"line":8394},270,[132,8396,599],{"class":145},[132,8398,8399],{"class":325}," resolvePath",[132,8401,210],{"class":145},[132,8403,1967],{"class":149},[132,8405,15],{"class":338},[132,8407,342],{"class":145},[132,8409,375],{"class":206},[132,8411,973],{"class":149},[132,8413,5626],{"class":145},[132,8415,8417,8420,8423,8425,8427],{"class":134,"line":8416},271,[132,8418,8419],{"class":149},"      path.",[132,8421,8422],{"class":325},"resolve",[132,8424,391],{"class":149},[132,8426,561],{"class":206},[132,8428,8429],{"class":149},".config.workDir, p);\n",[132,8431,8433],{"class":134,"line":8432},272,[132,8434,197],{"emptyLinePlaceholder":196},[132,8436,8438,8440],{"class":134,"line":8437},273,[132,8439,2182],{"class":145},[132,8441,2185],{"class":149},[132,8443,8445,8447,8450],{"class":134,"line":8444},274,[132,8446,2191],{"class":145},[132,8448,8449],{"class":156}," \"read_file\"",[132,8451,2197],{"class":149},[132,8453,8455,8457,8460,8463,8465,8468,8471,8473,8475,8478,8481],{"class":134,"line":8454},275,[132,8456,2203],{"class":145},[132,8458,8459],{"class":149}," fs.",[132,8461,8462],{"class":325},"readFile",[132,8464,391],{"class":149},[132,8466,8467],{"class":325},"resolvePath",[132,8469,8470],{"class":149},"(params.path ",[132,8472,2157],{"class":145},[132,8474,375],{"class":206},[132,8476,8477],{"class":149},"), ",[132,8479,8480],{"class":156},"\"utf-8\"",[132,8482,447],{"class":149},[132,8484,8486],{"class":134,"line":8485},276,[132,8487,197],{"emptyLinePlaceholder":196},[132,8489,8491,8493,8496],{"class":134,"line":8490},277,[132,8492,2191],{"class":145},[132,8494,8495],{"class":156}," \"list_directory\"",[132,8497,2197],{"class":149},[132,8499,8501,8503,8505,8508,8510,8512,8514,8516,8518],{"class":134,"line":8500},278,[132,8502,2203],{"class":145},[132,8504,8459],{"class":149},[132,8506,8507],{"class":325},"readdir",[132,8509,391],{"class":149},[132,8511,8467],{"class":325},[132,8513,8470],{"class":149},[132,8515,2157],{"class":145},[132,8517,375],{"class":206},[132,8519,8520],{"class":149},"));\n",[132,8522,8524],{"class":134,"line":8523},279,[132,8525,197],{"emptyLinePlaceholder":196},[132,8527,8529,8531,8534],{"class":134,"line":8528},280,[132,8530,2191],{"class":145},[132,8532,8533],{"class":156}," \"write_file\"",[132,8535,2197],{"class":149},[132,8537,8539,8541,8543,8546],{"class":134,"line":8538},281,[132,8540,6864],{"class":145},[132,8542,8459],{"class":149},[132,8544,8545],{"class":325},"writeFile",[132,8547,961],{"class":149},[132,8549,8551,8554,8556,8558,8560],{"class":134,"line":8550},282,[132,8552,8553],{"class":325},"          resolvePath",[132,8555,8470],{"class":149},[132,8557,2157],{"class":145},[132,8559,375],{"class":206},[132,8561,2876],{"class":149},[132,8563,8565,8568,8570],{"class":134,"line":8564},283,[132,8566,8567],{"class":149},"          params.content ",[132,8569,2157],{"class":145},[132,8571,8572],{"class":206}," string\n",[132,8574,8576],{"class":134,"line":8575},284,[132,8577,8578],{"class":149},"        );\n",[132,8580,8582,8584,8587],{"class":134,"line":8581},285,[132,8583,2203],{"class":145},[132,8585,8586],{"class":156}," \"File written successfully\"",[132,8588,160],{"class":149},[132,8590,8592],{"class":134,"line":8591},286,[132,8593,197],{"emptyLinePlaceholder":196},[132,8595,8597,8599,8602],{"class":134,"line":8596},287,[132,8598,2191],{"class":145},[132,8600,8601],{"class":156}," \"execute_command\"",[132,8603,2197],{"class":149},[132,8605,8607,8609,8611,8613,8616],{"class":134,"line":8606},288,[132,8608,2203],{"class":145},[132,8610,531],{"class":206},[132,8612,123],{"class":149},[132,8614,8615],{"class":325},"executeCommand",[132,8617,961],{"class":149},[132,8619,8621,8624,8626,8628],{"class":134,"line":8620},289,[132,8622,8623],{"class":149},"          params.command ",[132,8625,2157],{"class":145},[132,8627,375],{"class":206},[132,8629,552],{"class":149},[132,8631,8633,8636,8639,8641,8644,8646,8648,8650,8652,8654],{"class":134,"line":8632},290,[132,8634,8635],{"class":149},"          params.cwd ",[132,8637,8638],{"class":145},"?",[132,8640,8399],{"class":325},[132,8642,8643],{"class":149},"(params.cwd ",[132,8645,2157],{"class":145},[132,8647,375],{"class":206},[132,8649,973],{"class":149},[132,8651,342],{"class":145},[132,8653,531],{"class":206},[132,8655,8656],{"class":149},".config.workDir\n",[132,8658,8660],{"class":134,"line":8659},291,[132,8661,8578],{"class":149},[132,8663,8665],{"class":134,"line":8664},292,[132,8666,197],{"emptyLinePlaceholder":196},[132,8668,8670,8672],{"class":134,"line":8669},293,[132,8671,2584],{"class":145},[132,8673,2197],{"class":149},[132,8675,8677,8680,8682,8685,8687,8689,8691,8693],{"class":134,"line":8676},294,[132,8678,8679],{"class":145},"        throw",[132,8681,416],{"class":145},[132,8683,8684],{"class":325}," Error",[132,8686,391],{"class":149},[132,8688,2597],{"class":156},[132,8690,2114],{"class":149},[132,8692,2602],{"class":156},[132,8694,447],{"class":149},[132,8696,8698],{"class":134,"line":8697},295,[132,8699,931],{"class":149},[132,8701,8703],{"class":134,"line":8702},296,[132,8704,466],{"class":149},[132,8706,8708],{"class":134,"line":8707},297,[132,8709,197],{"emptyLinePlaceholder":196},[132,8711,8713,8715,8718,8720,8723,8725,8727,8729,8732,8734,8736,8738,8740,8742,8744,8746],{"class":134,"line":8712},298,[132,8714,335],{"class":145},[132,8716,8717],{"class":325}," executeCommand",[132,8719,391],{"class":149},[132,8721,8722],{"class":338},"command",[132,8724,342],{"class":145},[132,8726,375],{"class":206},[132,8728,492],{"class":149},[132,8730,8731],{"class":338},"cwd",[132,8733,342],{"class":145},[132,8735,375],{"class":206},[132,8737,502],{"class":149},[132,8739,342],{"class":145},[132,8741,507],{"class":325},[132,8743,510],{"class":149},[132,8745,513],{"class":206},[132,8747,516],{"class":149},[132,8749,8751,8753,8755,8757,8759,8761,8763,8766,8768,8770],{"class":134,"line":8750},299,[132,8752,1081],{"class":145},[132,8754,416],{"class":145},[132,8756,507],{"class":206},[132,8758,4131],{"class":149},[132,8760,8422],{"class":338},[132,8762,492],{"class":149},[132,8764,8765],{"class":338},"reject",[132,8767,973],{"class":149},[132,8769,976],{"class":145},[132,8771,329],{"class":149},[132,8773,8775,8777,8780,8782,8785,8787,8790,8792,8795],{"class":134,"line":8774},300,[132,8776,779],{"class":145},[132,8778,8779],{"class":206}," child",[132,8781,210],{"class":145},[132,8783,8784],{"class":325}," spawn",[132,8786,391],{"class":149},[132,8788,8789],{"class":156},"\"sh\"",[132,8791,2828],{"class":149},[132,8793,8794],{"class":156},"\"-c\"",[132,8796,8797],{"class":149},", command], { cwd });\n",[132,8799,8801,8804,8807,8809,8812],{"class":134,"line":8800},301,[132,8802,8803],{"class":145},"      let",[132,8805,8806],{"class":149}," stdout ",[132,8808,413],{"class":145},[132,8810,8811],{"class":156}," \"\"",[132,8813,160],{"class":149},[132,8815,8817,8819,8822,8824,8826],{"class":134,"line":8816},302,[132,8818,8803],{"class":145},[132,8820,8821],{"class":149}," stderr ",[132,8823,413],{"class":145},[132,8825,8811],{"class":156},[132,8827,160],{"class":149},[132,8829,8831],{"class":134,"line":8830},303,[132,8832,197],{"emptyLinePlaceholder":196},[132,8834,8836,8839,8842,8844,8847,8849,8852,8854,8856,8859,8862],{"class":134,"line":8835},304,[132,8837,8838],{"class":149},"      child.stdout.",[132,8840,8841],{"class":325},"on",[132,8843,391],{"class":149},[132,8845,8846],{"class":156},"\"data\"",[132,8848,3974],{"class":149},[132,8850,8851],{"class":338},"data",[132,8853,973],{"class":149},[132,8855,976],{"class":145},[132,8857,8858],{"class":149}," (stdout ",[132,8860,8861],{"class":145},"+=",[132,8863,8864],{"class":149}," data));\n",[132,8866,8868,8871,8873,8875,8877,8879,8881,8883,8885,8888,8890],{"class":134,"line":8867},305,[132,8869,8870],{"class":149},"      child.stderr.",[132,8872,8841],{"class":325},[132,8874,391],{"class":149},[132,8876,8846],{"class":156},[132,8878,3974],{"class":149},[132,8880,8851],{"class":338},[132,8882,973],{"class":149},[132,8884,976],{"class":145},[132,8886,8887],{"class":149}," (stderr ",[132,8889,8861],{"class":145},[132,8891,8864],{"class":149},[132,8893,8895],{"class":134,"line":8894},306,[132,8896,197],{"emptyLinePlaceholder":196},[132,8898,8900,8903,8905,8907,8910,8912,8914,8916,8918],{"class":134,"line":8899},307,[132,8901,8902],{"class":149},"      child.",[132,8904,8841],{"class":325},[132,8906,391],{"class":149},[132,8908,8909],{"class":156},"\"close\"",[132,8911,3974],{"class":149},[132,8913,101],{"class":338},[132,8915,973],{"class":149},[132,8917,976],{"class":145},[132,8919,329],{"class":149},[132,8921,8923,8925,8928,8930,8932],{"class":134,"line":8922},308,[132,8924,4912],{"class":145},[132,8926,8927],{"class":149}," (code ",[132,8929,768],{"class":145},[132,8931,5742],{"class":206},[132,8933,401],{"class":149},[132,8935,8937,8940,8943,8945,8948],{"class":134,"line":8936},309,[132,8938,8939],{"class":325},"          resolve",[132,8941,8942],{"class":149},"(stdout ",[132,8944,1006],{"class":145},[132,8946,8947],{"class":156}," \"Command completed successfully\"",[132,8949,447],{"class":149},[132,8951,8953,8955,8957],{"class":134,"line":8952},310,[132,8954,6788],{"class":149},[132,8956,6791],{"class":145},[132,8958,329],{"class":149},[132,8960,8962,8965,8967,8970,8972,8974,8977,8979,8982,8985,8987],{"class":134,"line":8961},311,[132,8963,8964],{"class":325},"          reject",[132,8966,391],{"class":149},[132,8968,8969],{"class":145},"new",[132,8971,8684],{"class":325},[132,8973,391],{"class":149},[132,8975,8976],{"class":156},"`Exit code ${",[132,8978,101],{"class":149},[132,8980,8981],{"class":156},"}: ${",[132,8983,8984],{"class":149},"stderr",[132,8986,2602],{"class":156},[132,8988,8520],{"class":149},[132,8990,8992],{"class":134,"line":8991},312,[132,8993,4937],{"class":149},[132,8995,8997],{"class":134,"line":8996},313,[132,8998,925],{"class":149},[132,9000,9002],{"class":134,"line":9001},314,[132,9003,582],{"class":149},[132,9005,9007],{"class":134,"line":9006},315,[132,9008,466],{"class":149},[132,9010,9012],{"class":134,"line":9011},316,[132,9013,197],{"emptyLinePlaceholder":196},[132,9015,9017,9019,9022,9024,9027,9029,9031,9033,9035,9037,9039,9041],{"class":134,"line":9016},317,[132,9018,335],{"class":145},[132,9020,9021],{"class":325}," sleep",[132,9023,391],{"class":149},[132,9025,9026],{"class":338},"ms",[132,9028,342],{"class":145},[132,9030,2478],{"class":206},[132,9032,502],{"class":149},[132,9034,342],{"class":145},[132,9036,507],{"class":325},[132,9038,510],{"class":149},[132,9040,6255],{"class":206},[132,9042,516],{"class":149},[132,9044,9046,9048,9050,9052,9054,9056,9058,9060,9063],{"class":134,"line":9045},318,[132,9047,1081],{"class":145},[132,9049,416],{"class":145},[132,9051,507],{"class":206},[132,9053,4131],{"class":149},[132,9055,8422],{"class":338},[132,9057,973],{"class":149},[132,9059,976],{"class":145},[132,9061,9062],{"class":325}," setTimeout",[132,9064,9065],{"class":149},"(resolve, ms));\n",[132,9067,9069],{"class":134,"line":9068},319,[132,9070,466],{"class":149},[132,9072,9074],{"class":134,"line":9073},320,[132,9075,2621],{"class":149},[109,9077,9079],{"id":9078},"_4-channel-adapters-multi-channel-gateway","4. Channel Adapters (Multi-Channel Gateway)",[15,9081,9082,9083,9086],{},"The Gateway layer handles ",[19,9084,9085],{},"channel-specific protocols"," and normalizes messages for the Concierge.",[94,9088,9090],{"className":126,"code":9089,"language":128,"meta":103,"style":103},"// src/gateway/telegram.ts\nimport { Telegraf } from \"telegraf\";\nimport { ConciergeAgent } from \"../agents/concierge\";\n\nexport function createTelegramGateway(token: string): Telegraf {\n  const bot = new Telegraf(token);\n  const concierge = new ConciergeAgent(\"telegram\");\n\n  bot.on(\"text\", async (ctx) => {\n    const userId = ctx.from.id.toString();\n    const message = ctx.message.text;\n\n    // Show typing indicator\n    await ctx.sendChatAction(\"typing\");\n\n    try {\n      const response = await concierge.handleMessage(userId, message);\n\n      // Split long messages\n      const chunks = splitMessage(response, 4000);\n      for (const chunk of chunks) {\n        await ctx.reply(chunk, { parse_mode: \"Markdown\" });\n      }\n    } catch (error) {\n      console.error(\"Telegram handler error:\", error);\n      await ctx.reply(\"Sorry, I encountered an error processing your request.\");\n    }\n  });\n\n  return bot;\n}\n\nfunction splitMessage(text: string, maxLength: number): string[] {\n  if (text.length \u003C= maxLength) return [text];\n\n  const chunks: string[] = [];\n  let remaining = text;\n\n  while (remaining.length > 0) {\n    if (remaining.length \u003C= maxLength) {\n      chunks.push(remaining);\n      break;\n    }\n\n    // Find a good split point\n    let splitAt = remaining.lastIndexOf(\"\\n\\n\", maxLength);\n    if (splitAt === -1) splitAt = remaining.lastIndexOf(\"\\n\", maxLength);\n    if (splitAt === -1) splitAt = remaining.lastIndexOf(\" \", maxLength);\n    if (splitAt === -1) splitAt = maxLength;\n\n    chunks.push(remaining.slice(0, splitAt));\n    remaining = remaining.slice(splitAt).trim();\n  }\n\n  return chunks;\n}\n",[101,9091,9092,9097,9111,9125,9129,9157,9174,9194,9198,9224,9241,9253,9257,9262,9279,9283,9290,9309,9313,9318,9338,9355,9372,9376,9385,9399,9414,9418,9423,9427,9435,9439,9443,9475,9496,9500,9516,9529,9533,9549,9562,9572,9579,9583,9587,9592,9620,9654,9681,9700,9704,9723,9742,9746,9750,9757],{"__ignoreMap":103},[132,9093,9094],{"class":134,"line":135},[132,9095,9096],{"class":138},"// src/gateway/telegram.ts\n",[132,9098,9099,9101,9104,9106,9109],{"class":134,"line":142},[132,9100,146],{"class":145},[132,9102,9103],{"class":149}," { Telegraf } ",[132,9105,153],{"class":145},[132,9107,9108],{"class":156}," \"telegraf\"",[132,9110,160],{"class":149},[132,9112,9113,9115,9118,9120,9123],{"class":134,"line":163},[132,9114,146],{"class":145},[132,9116,9117],{"class":149}," { ConciergeAgent } ",[132,9119,153],{"class":145},[132,9121,9122],{"class":156}," \"../agents/concierge\"",[132,9124,160],{"class":149},[132,9126,9127],{"class":134,"line":178},[132,9128,197],{"emptyLinePlaceholder":196},[132,9130,9131,9133,9136,9139,9141,9144,9146,9148,9150,9152,9155],{"class":134,"line":193},[132,9132,319],{"class":145},[132,9134,9135],{"class":145}," function",[132,9137,9138],{"class":325}," createTelegramGateway",[132,9140,391],{"class":149},[132,9142,9143],{"class":338},"token",[132,9145,342],{"class":145},[132,9147,375],{"class":206},[132,9149,502],{"class":149},[132,9151,342],{"class":145},[132,9153,9154],{"class":325}," Telegraf",[132,9156,329],{"class":149},[132,9158,9159,9162,9165,9167,9169,9171],{"class":134,"line":200},[132,9160,9161],{"class":145},"  const",[132,9163,9164],{"class":206}," bot",[132,9166,210],{"class":145},[132,9168,416],{"class":145},[132,9170,9154],{"class":325},[132,9172,9173],{"class":149},"(token);\n",[132,9175,9176,9178,9181,9183,9185,9187,9189,9192],{"class":134,"line":216},[132,9177,9161],{"class":145},[132,9179,9180],{"class":206}," concierge",[132,9182,210],{"class":145},[132,9184,416],{"class":145},[132,9186,326],{"class":325},[132,9188,391],{"class":149},[132,9190,9191],{"class":156},"\"telegram\"",[132,9193,447],{"class":149},[132,9195,9196],{"class":134,"line":221},[132,9197,197],{"emptyLinePlaceholder":196},[132,9199,9200,9203,9205,9207,9210,9212,9214,9216,9218,9220,9222],{"class":134,"line":227},[132,9201,9202],{"class":149},"  bot.",[132,9204,8841],{"class":325},[132,9206,391],{"class":149},[132,9208,9209],{"class":156},"\"text\"",[132,9211,492],{"class":149},[132,9213,3901],{"class":145},[132,9215,1967],{"class":149},[132,9217,3906],{"class":338},[132,9219,973],{"class":149},[132,9221,976],{"class":145},[132,9223,329],{"class":149},[132,9225,9226,9228,9231,9233,9236,9239],{"class":134,"line":233},[132,9227,599],{"class":145},[132,9229,9230],{"class":206}," userId",[132,9232,210],{"class":145},[132,9234,9235],{"class":149}," ctx.from.id.",[132,9237,9238],{"class":325},"toString",[132,9240,421],{"class":149},[132,9242,9243,9245,9248,9250],{"class":134,"line":239},[132,9244,599],{"class":145},[132,9246,9247],{"class":206}," message",[132,9249,210],{"class":145},[132,9251,9252],{"class":149}," ctx.message.text;\n",[132,9254,9255],{"class":134,"line":245},[132,9256,197],{"emptyLinePlaceholder":196},[132,9258,9259],{"class":134,"line":251},[132,9260,9261],{"class":138},"    // Show typing indicator\n",[132,9263,9264,9266,9269,9272,9274,9277],{"class":134,"line":256},[132,9265,528],{"class":145},[132,9267,9268],{"class":149}," ctx.",[132,9270,9271],{"class":325},"sendChatAction",[132,9273,391],{"class":149},[132,9275,9276],{"class":156},"\"typing\"",[132,9278,447],{"class":149},[132,9280,9281],{"class":134,"line":262},[132,9282,197],{"emptyLinePlaceholder":196},[132,9284,9285,9288],{"class":134,"line":268},[132,9286,9287],{"class":145},"    try",[132,9289,329],{"class":149},[132,9291,9292,9294,9296,9298,9300,9303,9306],{"class":134,"line":274},[132,9293,779],{"class":145},[132,9295,602],{"class":206},[132,9297,210],{"class":145},[132,9299,607],{"class":145},[132,9301,9302],{"class":149}," concierge.",[132,9304,9305],{"class":325},"handleMessage",[132,9307,9308],{"class":149},"(userId, message);\n",[132,9310,9311],{"class":134,"line":280},[132,9312,197],{"emptyLinePlaceholder":196},[132,9314,9315],{"class":134,"line":286},[132,9316,9317],{"class":138},"      // Split long messages\n",[132,9319,9320,9322,9325,9327,9330,9333,9336],{"class":134,"line":291},[132,9321,779],{"class":145},[132,9323,9324],{"class":206}," chunks",[132,9326,210],{"class":145},[132,9328,9329],{"class":325}," splitMessage",[132,9331,9332],{"class":149},"(response, ",[132,9334,9335],{"class":206},"4000",[132,9337,447],{"class":149},[132,9339,9340,9343,9345,9347,9350,9352],{"class":134,"line":297},[132,9341,9342],{"class":145},"      for",[132,9344,1967],{"class":149},[132,9346,203],{"class":145},[132,9348,9349],{"class":206}," chunk",[132,9351,1975],{"class":145},[132,9353,9354],{"class":149}," chunks) {\n",[132,9356,9357,9359,9361,9364,9367,9370],{"class":134,"line":303},[132,9358,6864],{"class":145},[132,9360,9268],{"class":149},[132,9362,9363],{"class":325},"reply",[132,9365,9366],{"class":149},"(chunk, { parse_mode: ",[132,9368,9369],{"class":156},"\"Markdown\"",[132,9371,5714],{"class":149},[132,9373,9374],{"class":134,"line":311},[132,9375,2071],{"class":149},[132,9377,9378,9381,9383],{"class":134,"line":316},[132,9379,9380],{"class":149},"    } ",[132,9382,6828],{"class":145},[132,9384,6831],{"class":149},[132,9386,9387,9390,9392,9394,9397],{"class":134,"line":332},[132,9388,9389],{"class":149},"      console.",[132,9391,6839],{"class":325},[132,9393,391],{"class":149},[132,9395,9396],{"class":156},"\"Telegram handler error:\"",[132,9398,6859],{"class":149},[132,9400,9401,9403,9405,9407,9409,9412],{"class":134,"line":350},[132,9402,5133],{"class":145},[132,9404,9268],{"class":149},[132,9406,9363],{"class":325},[132,9408,391],{"class":149},[132,9410,9411],{"class":156},"\"Sorry, I encountered an error processing your request.\"",[132,9413,447],{"class":149},[132,9415,9416],{"class":134,"line":365},[132,9417,931],{"class":149},[132,9419,9420],{"class":134,"line":380},[132,9421,9422],{"class":149},"  });\n",[132,9424,9425],{"class":134,"line":385},[132,9426,197],{"emptyLinePlaceholder":196},[132,9428,9429,9432],{"class":134,"line":404},[132,9430,9431],{"class":145},"  return",[132,9433,9434],{"class":149}," bot;\n",[132,9436,9437],{"class":134,"line":424},[132,9438,2621],{"class":149},[132,9440,9441],{"class":134,"line":450},[132,9442,197],{"emptyLinePlaceholder":196},[132,9444,9445,9448,9450,9452,9454,9456,9458,9460,9463,9465,9467,9469,9471,9473],{"class":134,"line":463},[132,9446,9447],{"class":145},"function",[132,9449,9329],{"class":325},[132,9451,391],{"class":149},[132,9453,99],{"class":338},[132,9455,342],{"class":145},[132,9457,375],{"class":206},[132,9459,492],{"class":149},[132,9461,9462],{"class":338},"maxLength",[132,9464,342],{"class":145},[132,9466,2478],{"class":206},[132,9468,502],{"class":149},[132,9470,342],{"class":145},[132,9472,375],{"class":206},[132,9474,1117],{"class":149},[132,9476,9477,9480,9483,9485,9488,9491,9493],{"class":134,"line":469},[132,9478,9479],{"class":145},"  if",[132,9481,9482],{"class":149}," (text.",[132,9484,4377],{"class":206},[132,9486,9487],{"class":145}," \u003C=",[132,9489,9490],{"class":149}," maxLength) ",[132,9492,4182],{"class":145},[132,9494,9495],{"class":149}," [text];\n",[132,9497,9498],{"class":134,"line":474},[132,9499,197],{"emptyLinePlaceholder":196},[132,9501,9502,9504,9506,9508,9510,9512,9514],{"class":134,"line":519},[132,9503,9161],{"class":145},[132,9505,9324],{"class":206},[132,9507,342],{"class":145},[132,9509,375],{"class":206},[132,9511,729],{"class":149},[132,9513,413],{"class":145},[132,9515,1953],{"class":149},[132,9517,9518,9521,9524,9526],{"class":134,"line":525},[132,9519,9520],{"class":145},"  let",[132,9522,9523],{"class":149}," remaining ",[132,9525,413],{"class":145},[132,9527,9528],{"class":149}," text;\n",[132,9530,9531],{"class":134,"line":543},[132,9532,197],{"emptyLinePlaceholder":196},[132,9534,9535,9538,9541,9543,9545,9547],{"class":134,"line":555},[132,9536,9537],{"class":145},"  while",[132,9539,9540],{"class":149}," (remaining.",[132,9542,4377],{"class":206},[132,9544,5739],{"class":145},[132,9546,5742],{"class":206},[132,9548,401],{"class":149},[132,9550,9551,9553,9555,9557,9559],{"class":134,"line":567},[132,9552,3922],{"class":145},[132,9554,9540],{"class":149},[132,9556,4377],{"class":206},[132,9558,9487],{"class":145},[132,9560,9561],{"class":149}," maxLength) {\n",[132,9563,9564,9567,9569],{"class":134,"line":573},[132,9565,9566],{"class":149},"      chunks.",[132,9568,796],{"class":325},[132,9570,9571],{"class":149},"(remaining);\n",[132,9573,9574,9577],{"class":134,"line":579},[132,9575,9576],{"class":145},"      break",[132,9578,160],{"class":149},[132,9580,9581],{"class":134,"line":585},[132,9582,931],{"class":149},[132,9584,9585],{"class":134,"line":590},[132,9586,197],{"emptyLinePlaceholder":196},[132,9588,9589],{"class":134,"line":596},[132,9590,9591],{"class":138},"    // Find a good split point\n",[132,9593,9594,9596,9599,9601,9604,9607,9609,9612,9615,9617],{"class":134,"line":621},[132,9595,701],{"class":145},[132,9597,9598],{"class":149}," splitAt ",[132,9600,413],{"class":145},[132,9602,9603],{"class":149}," remaining.",[132,9605,9606],{"class":325},"lastIndexOf",[132,9608,391],{"class":149},[132,9610,9611],{"class":156},"\"",[132,9613,9614],{"class":206},"\\n\\n",[132,9616,9611],{"class":156},[132,9618,9619],{"class":149},", maxLength);\n",[132,9621,9622,9624,9627,9629,9632,9634,9637,9639,9641,9643,9645,9647,9650,9652],{"class":134,"line":632},[132,9623,3922],{"class":145},[132,9625,9626],{"class":149}," (splitAt ",[132,9628,768],{"class":145},[132,9630,9631],{"class":145}," -",[132,9633,6738],{"class":206},[132,9635,9636],{"class":149},") splitAt ",[132,9638,413],{"class":145},[132,9640,9603],{"class":149},[132,9642,9606],{"class":325},[132,9644,391],{"class":149},[132,9646,9611],{"class":156},[132,9648,9649],{"class":206},"\\n",[132,9651,9611],{"class":156},[132,9653,9619],{"class":149},[132,9655,9656,9658,9660,9662,9664,9666,9668,9670,9672,9674,9676,9679],{"class":134,"line":643},[132,9657,3922],{"class":145},[132,9659,9626],{"class":149},[132,9661,768],{"class":145},[132,9663,9631],{"class":145},[132,9665,6738],{"class":206},[132,9667,9636],{"class":149},[132,9669,413],{"class":145},[132,9671,9603],{"class":149},[132,9673,9606],{"class":325},[132,9675,391],{"class":149},[132,9677,9678],{"class":156},"\" \"",[132,9680,9619],{"class":149},[132,9682,9683,9685,9687,9689,9691,9693,9695,9697],{"class":134,"line":654},[132,9684,3922],{"class":145},[132,9686,9626],{"class":149},[132,9688,768],{"class":145},[132,9690,9631],{"class":145},[132,9692,6738],{"class":206},[132,9694,9636],{"class":149},[132,9696,413],{"class":145},[132,9698,9699],{"class":149}," maxLength;\n",[132,9701,9702],{"class":134,"line":670},[132,9703,197],{"emptyLinePlaceholder":196},[132,9705,9706,9709,9711,9714,9716,9718,9720],{"class":134,"line":682},[132,9707,9708],{"class":149},"    chunks.",[132,9710,796],{"class":325},[132,9712,9713],{"class":149},"(remaining.",[132,9715,6957],{"class":325},[132,9717,391],{"class":149},[132,9719,6780],{"class":206},[132,9721,9722],{"class":149},", splitAt));\n",[132,9724,9725,9728,9730,9732,9734,9737,9740],{"class":134,"line":687},[132,9726,9727],{"class":149},"    remaining ",[132,9729,413],{"class":145},[132,9731,9603],{"class":149},[132,9733,6957],{"class":325},[132,9735,9736],{"class":149},"(splitAt).",[132,9738,9739],{"class":325},"trim",[132,9741,421],{"class":149},[132,9743,9744],{"class":134,"line":692},[132,9745,466],{"class":149},[132,9747,9748],{"class":134,"line":698},[132,9749,197],{"emptyLinePlaceholder":196},[132,9751,9752,9754],{"class":134,"line":712},[132,9753,9431],{"class":145},[132,9755,9756],{"class":149}," chunks;\n",[132,9758,9759],{"class":134,"line":737},[132,9760,2621],{"class":149},[94,9762,9764],{"className":126,"code":9763,"language":128,"meta":103,"style":103},"// src/gateway/discord.ts\nimport { Client, GatewayIntentBits, Events } from \"discord.js\";\nimport { ConciergeAgent } from \"../agents/concierge\";\n\nexport function createDiscordGateway(token: string): Client {\n  const client = new Client({\n    intents: [\n      GatewayIntentBits.Guilds,\n      GatewayIntentBits.GuildMessages,\n      GatewayIntentBits.MessageContent,\n      GatewayIntentBits.DirectMessages,\n    ],\n  });\n\n  const concierge = new ConciergeAgent(\"discord\");\n\n  client.once(Events.ClientReady, () => {\n    console.log(`Discord gateway ready as ${client.user?.tag}`);\n  });\n\n  client.on(Events.MessageCreate, async (message) => {\n    // Ignore bots\n    if (message.author.bot) return;\n\n    // Only respond to mentions or DMs\n    const isMentioned = message.mentions.has(client.user!);\n    const isDM = !message.guild;\n\n    if (!isMentioned && !isDM) return;\n\n    const userId = message.author.id;\n    const content = message.content\n      .replace(`\u003C@${client.user!.id}>`, \"\")\n      .trim();\n\n    if (!content) return;\n\n    try {\n      await message.channel.sendTyping();\n      const response = await concierge.handleMessage(userId, content);\n\n      // Discord has 2000 char limit\n      const chunks = splitMessage(response, 1900);\n      for (const chunk of chunks) {\n        await message.reply(chunk);\n      }\n    } catch (error) {\n      console.error(\"Discord handler error:\", error);\n      await message.reply(\"Sorry, I encountered an error.\");\n    }\n  });\n\n  client.login(token);\n  return client;\n}\n",[101,9765,9766,9771,9785,9797,9801,9827,9842,9847,9852,9857,9862,9867,9872,9876,9880,9899,9903,9918,9947,9951,9955,9976,9981,9992,9996,10001,10023,10038,10042,10064,10068,10079,10091,10125,10133,10137,10152,10156,10162,10174,10191,10195,10200,10217,10231,10243,10247,10255,10268,10283,10287,10291,10295,10304,10311],{"__ignoreMap":103},[132,9767,9768],{"class":134,"line":135},[132,9769,9770],{"class":138},"// src/gateway/discord.ts\n",[132,9772,9773,9775,9778,9780,9783],{"class":134,"line":142},[132,9774,146],{"class":145},[132,9776,9777],{"class":149}," { Client, GatewayIntentBits, Events } ",[132,9779,153],{"class":145},[132,9781,9782],{"class":156}," \"discord.js\"",[132,9784,160],{"class":149},[132,9786,9787,9789,9791,9793,9795],{"class":134,"line":163},[132,9788,146],{"class":145},[132,9790,9117],{"class":149},[132,9792,153],{"class":145},[132,9794,9122],{"class":156},[132,9796,160],{"class":149},[132,9798,9799],{"class":134,"line":178},[132,9800,197],{"emptyLinePlaceholder":196},[132,9802,9803,9805,9807,9810,9812,9814,9816,9818,9820,9822,9825],{"class":134,"line":193},[132,9804,319],{"class":145},[132,9806,9135],{"class":145},[132,9808,9809],{"class":325}," createDiscordGateway",[132,9811,391],{"class":149},[132,9813,9143],{"class":338},[132,9815,342],{"class":145},[132,9817,375],{"class":206},[132,9819,502],{"class":149},[132,9821,342],{"class":145},[132,9823,9824],{"class":325}," Client",[132,9826,329],{"class":149},[132,9828,9829,9831,9834,9836,9838,9840],{"class":134,"line":200},[132,9830,9161],{"class":145},[132,9832,9833],{"class":206}," client",[132,9835,210],{"class":145},[132,9837,416],{"class":145},[132,9839,9824],{"class":325},[132,9841,618],{"class":149},[132,9843,9844],{"class":134,"line":216},[132,9845,9846],{"class":149},"    intents: [\n",[132,9848,9849],{"class":134,"line":221},[132,9850,9851],{"class":149},"      GatewayIntentBits.Guilds,\n",[132,9853,9854],{"class":134,"line":227},[132,9855,9856],{"class":149},"      GatewayIntentBits.GuildMessages,\n",[132,9858,9859],{"class":134,"line":233},[132,9860,9861],{"class":149},"      GatewayIntentBits.MessageContent,\n",[132,9863,9864],{"class":134,"line":239},[132,9865,9866],{"class":149},"      GatewayIntentBits.DirectMessages,\n",[132,9868,9869],{"class":134,"line":245},[132,9870,9871],{"class":149},"    ],\n",[132,9873,9874],{"class":134,"line":251},[132,9875,9422],{"class":149},[132,9877,9878],{"class":134,"line":256},[132,9879,197],{"emptyLinePlaceholder":196},[132,9881,9882,9884,9886,9888,9890,9892,9894,9897],{"class":134,"line":262},[132,9883,9161],{"class":145},[132,9885,9180],{"class":206},[132,9887,210],{"class":145},[132,9889,416],{"class":145},[132,9891,326],{"class":325},[132,9893,391],{"class":149},[132,9895,9896],{"class":156},"\"discord\"",[132,9898,447],{"class":149},[132,9900,9901],{"class":134,"line":268},[132,9902,197],{"emptyLinePlaceholder":196},[132,9904,9905,9908,9911,9914,9916],{"class":134,"line":274},[132,9906,9907],{"class":149},"  client.",[132,9909,9910],{"class":325},"once",[132,9912,9913],{"class":149},"(Events.ClientReady, () ",[132,9915,976],{"class":145},[132,9917,329],{"class":149},[132,9919,9920,9922,9924,9926,9929,9932,9934,9937,9940,9943,9945],{"class":134,"line":280},[132,9921,6328],{"class":149},[132,9923,6331],{"class":325},[132,9925,391],{"class":149},[132,9927,9928],{"class":156},"`Discord gateway ready as ${",[132,9930,9931],{"class":149},"client",[132,9933,123],{"class":156},[132,9935,9936],{"class":149},"user",[132,9938,9939],{"class":156},"?.",[132,9941,9942],{"class":149},"tag",[132,9944,2602],{"class":156},[132,9946,447],{"class":149},[132,9948,9949],{"class":134,"line":286},[132,9950,9422],{"class":149},[132,9952,9953],{"class":134,"line":291},[132,9954,197],{"emptyLinePlaceholder":196},[132,9956,9957,9959,9961,9964,9966,9968,9970,9972,9974],{"class":134,"line":297},[132,9958,9907],{"class":149},[132,9960,8841],{"class":325},[132,9962,9963],{"class":149},"(Events.MessageCreate, ",[132,9965,3901],{"class":145},[132,9967,1967],{"class":149},[132,9969,495],{"class":338},[132,9971,973],{"class":149},[132,9973,976],{"class":145},[132,9975,329],{"class":149},[132,9977,9978],{"class":134,"line":303},[132,9979,9980],{"class":138},"    // Ignore bots\n",[132,9982,9983,9985,9988,9990],{"class":134,"line":311},[132,9984,3922],{"class":145},[132,9986,9987],{"class":149}," (message.author.bot) ",[132,9989,4182],{"class":145},[132,9991,160],{"class":149},[132,9993,9994],{"class":134,"line":316},[132,9995,197],{"emptyLinePlaceholder":196},[132,9997,9998],{"class":134,"line":332},[132,9999,10000],{"class":138},"    // Only respond to mentions or DMs\n",[132,10002,10003,10005,10008,10010,10013,10016,10019,10021],{"class":134,"line":350},[132,10004,599],{"class":145},[132,10006,10007],{"class":206}," isMentioned",[132,10009,210],{"class":145},[132,10011,10012],{"class":149}," message.mentions.",[132,10014,10015],{"class":325},"has",[132,10017,10018],{"class":149},"(client.user",[132,10020,444],{"class":145},[132,10022,447],{"class":149},[132,10024,10025,10027,10030,10032,10035],{"class":134,"line":365},[132,10026,599],{"class":145},[132,10028,10029],{"class":206}," isDM",[132,10031,210],{"class":145},[132,10033,10034],{"class":145}," !",[132,10036,10037],{"class":149},"message.guild;\n",[132,10039,10040],{"class":134,"line":380},[132,10041,197],{"emptyLinePlaceholder":196},[132,10043,10044,10046,10048,10050,10053,10055,10057,10060,10062],{"class":134,"line":385},[132,10045,3922],{"class":145},[132,10047,1967],{"class":149},[132,10049,444],{"class":145},[132,10051,10052],{"class":149},"isMentioned ",[132,10054,3928],{"class":145},[132,10056,10034],{"class":145},[132,10058,10059],{"class":149},"isDM) ",[132,10061,4182],{"class":145},[132,10063,160],{"class":149},[132,10065,10066],{"class":134,"line":404},[132,10067,197],{"emptyLinePlaceholder":196},[132,10069,10070,10072,10074,10076],{"class":134,"line":424},[132,10071,599],{"class":145},[132,10073,9230],{"class":206},[132,10075,210],{"class":145},[132,10077,10078],{"class":149}," message.author.id;\n",[132,10080,10081,10083,10086,10088],{"class":134,"line":450},[132,10082,599],{"class":145},[132,10084,10085],{"class":206}," content",[132,10087,210],{"class":145},[132,10089,10090],{"class":149}," message.content\n",[132,10092,10093,10095,10098,10100,10103,10105,10107,10109,10111,10113,10115,10118,10120,10123],{"class":134,"line":463},[132,10094,4113],{"class":149},[132,10096,10097],{"class":325},"replace",[132,10099,391],{"class":149},[132,10101,10102],{"class":156},"`\u003C@${",[132,10104,9931],{"class":149},[132,10106,123],{"class":156},[132,10108,9936],{"class":149},[132,10110,444],{"class":145},[132,10112,123],{"class":156},[132,10114,2998],{"class":149},[132,10116,10117],{"class":156},"}>`",[132,10119,492],{"class":149},[132,10121,10122],{"class":156},"\"\"",[132,10124,2937],{"class":149},[132,10126,10127,10129,10131],{"class":134,"line":469},[132,10128,4113],{"class":149},[132,10130,9739],{"class":325},[132,10132,421],{"class":149},[132,10134,10135],{"class":134,"line":474},[132,10136,197],{"emptyLinePlaceholder":196},[132,10138,10139,10141,10143,10145,10148,10150],{"class":134,"line":519},[132,10140,3922],{"class":145},[132,10142,1967],{"class":149},[132,10144,444],{"class":145},[132,10146,10147],{"class":149},"content) ",[132,10149,4182],{"class":145},[132,10151,160],{"class":149},[132,10153,10154],{"class":134,"line":525},[132,10155,197],{"emptyLinePlaceholder":196},[132,10157,10158,10160],{"class":134,"line":543},[132,10159,9287],{"class":145},[132,10161,329],{"class":149},[132,10163,10164,10166,10169,10172],{"class":134,"line":555},[132,10165,5133],{"class":145},[132,10167,10168],{"class":149}," message.channel.",[132,10170,10171],{"class":325},"sendTyping",[132,10173,421],{"class":149},[132,10175,10176,10178,10180,10182,10184,10186,10188],{"class":134,"line":567},[132,10177,779],{"class":145},[132,10179,602],{"class":206},[132,10181,210],{"class":145},[132,10183,607],{"class":145},[132,10185,9302],{"class":149},[132,10187,9305],{"class":325},[132,10189,10190],{"class":149},"(userId, content);\n",[132,10192,10193],{"class":134,"line":573},[132,10194,197],{"emptyLinePlaceholder":196},[132,10196,10197],{"class":134,"line":579},[132,10198,10199],{"class":138},"      // Discord has 2000 char limit\n",[132,10201,10202,10204,10206,10208,10210,10212,10215],{"class":134,"line":585},[132,10203,779],{"class":145},[132,10205,9324],{"class":206},[132,10207,210],{"class":145},[132,10209,9329],{"class":325},[132,10211,9332],{"class":149},[132,10213,10214],{"class":206},"1900",[132,10216,447],{"class":149},[132,10218,10219,10221,10223,10225,10227,10229],{"class":134,"line":590},[132,10220,9342],{"class":145},[132,10222,1967],{"class":149},[132,10224,203],{"class":145},[132,10226,9349],{"class":206},[132,10228,1975],{"class":145},[132,10230,9354],{"class":149},[132,10232,10233,10235,10238,10240],{"class":134,"line":596},[132,10234,6864],{"class":145},[132,10236,10237],{"class":149}," message.",[132,10239,9363],{"class":325},[132,10241,10242],{"class":149},"(chunk);\n",[132,10244,10245],{"class":134,"line":621},[132,10246,2071],{"class":149},[132,10248,10249,10251,10253],{"class":134,"line":632},[132,10250,9380],{"class":149},[132,10252,6828],{"class":145},[132,10254,6831],{"class":149},[132,10256,10257,10259,10261,10263,10266],{"class":134,"line":643},[132,10258,9389],{"class":149},[132,10260,6839],{"class":325},[132,10262,391],{"class":149},[132,10264,10265],{"class":156},"\"Discord handler error:\"",[132,10267,6859],{"class":149},[132,10269,10270,10272,10274,10276,10278,10281],{"class":134,"line":654},[132,10271,5133],{"class":145},[132,10273,10237],{"class":149},[132,10275,9363],{"class":325},[132,10277,391],{"class":149},[132,10279,10280],{"class":156},"\"Sorry, I encountered an error.\"",[132,10282,447],{"class":149},[132,10284,10285],{"class":134,"line":670},[132,10286,931],{"class":149},[132,10288,10289],{"class":134,"line":682},[132,10290,9422],{"class":149},[132,10292,10293],{"class":134,"line":687},[132,10294,197],{"emptyLinePlaceholder":196},[132,10296,10297,10299,10302],{"class":134,"line":692},[132,10298,9907],{"class":149},[132,10300,10301],{"class":325},"login",[132,10303,9173],{"class":149},[132,10305,10306,10308],{"class":134,"line":698},[132,10307,9431],{"class":145},[132,10309,10310],{"class":149}," client;\n",[132,10312,10313],{"class":134,"line":712},[132,10314,2621],{"class":149},[86,10316],{},[89,10318,10320],{"id":10319},"docker-compose-deployment","Docker Compose Deployment",[15,10322,10323,10324,10327],{},"The entire system runs as a ",[19,10325,10326],{},"Docker Compose stack"," with isolated containers for each component.",[94,10329,10333],{"className":10330,"code":10331,"language":10332,"meta":103,"style":103},"language-yaml shiki shiki-themes github-light github-dark","# docker-compose.yml\nversion: \"3.9\"\n\nservices:\n  # Gateway - Multi-channel message router\n  gateway:\n    build:\n      context: .\n      dockerfile: Dockerfile.gateway\n    environment:\n      - CONVEX_URL=${CONVEX_URL}\n      - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}\n      - TELEGRAM_BOT_TOKEN=${TELEGRAM_BOT_TOKEN}\n      - DISCORD_BOT_TOKEN=${DISCORD_BOT_TOKEN}\n      - SLACK_BOT_TOKEN=${SLACK_BOT_TOKEN}\n      - SLACK_APP_TOKEN=${SLACK_APP_TOKEN}\n    restart: unless-stopped\n    networks:\n      - intelliteam\n\n  # Concierge - Human interface agent\n  concierge:\n    build:\n      context: .\n      dockerfile: Dockerfile.agent\n    environment:\n      - AGENT_TYPE=concierge\n      - INSTANCE_ID=concierge-${HOSTNAME:-main}\n      - CONVEX_URL=${CONVEX_URL}\n      - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}\n    restart: unless-stopped\n    networks:\n      - intelliteam\n\n  # Coder Agent\n  coder:\n    build:\n      context: .\n      dockerfile: Dockerfile.agent\n    environment:\n      - AGENT_TYPE=coder\n      - INSTANCE_ID=coder-${HOSTNAME:-main}\n      - CONVEX_URL=${CONVEX_URL}\n      - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}\n    volumes:\n      - workspaces:/workspaces\n    restart: unless-stopped\n    networks:\n      - intelliteam\n\n  # Reviewer Agent\n  reviewer:\n    build:\n      context: .\n      dockerfile: Dockerfile.agent\n    environment:\n      - AGENT_TYPE=reviewer\n      - INSTANCE_ID=reviewer-${HOSTNAME:-main}\n      - CONVEX_URL=${CONVEX_URL}\n      - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}\n    volumes:\n      - workspaces:/workspaces:ro\n    restart: unless-stopped\n    networks:\n      - intelliteam\n\n  # Tester Agent\n  tester:\n    build:\n      context: .\n      dockerfile: Dockerfile.agent\n    environment:\n      - AGENT_TYPE=tester\n      - INSTANCE_ID=tester-${HOSTNAME:-main}\n      - CONVEX_URL=${CONVEX_URL}\n      - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}\n    volumes:\n      - workspaces:/workspaces\n    restart: unless-stopped\n    networks:\n      - intelliteam\n\nvolumes:\n  workspaces:\n\nnetworks:\n  intelliteam:\n    driver: bridge\n","yaml",[101,10334,10335,10340,10351,10355,10362,10367,10374,10381,10391,10401,10408,10416,10423,10430,10437,10444,10451,10461,10468,10475,10479,10484,10491,10497,10505,10514,10520,10527,10534,10540,10546,10554,10560,10566,10570,10575,10582,10588,10596,10604,10610,10617,10624,10630,10636,10643,10650,10658,10664,10670,10674,10679,10686,10692,10700,10708,10714,10721,10728,10734,10740,10746,10753,10761,10767,10773,10777,10782,10789,10795,10803,10811,10817,10824,10831,10837,10843,10849,10855,10863,10869,10875,10879,10886,10893,10897,10904,10911],{"__ignoreMap":103},[132,10336,10337],{"class":134,"line":135},[132,10338,10339],{"class":138},"# docker-compose.yml\n",[132,10341,10342,10346,10348],{"class":134,"line":142},[132,10343,10345],{"class":10344},"s9eBZ","version",[132,10347,3898],{"class":149},[132,10349,10350],{"class":156},"\"3.9\"\n",[132,10352,10353],{"class":134,"line":163},[132,10354,197],{"emptyLinePlaceholder":196},[132,10356,10357,10360],{"class":134,"line":178},[132,10358,10359],{"class":10344},"services",[132,10361,2197],{"class":149},[132,10363,10364],{"class":134,"line":193},[132,10365,10366],{"class":138},"  # Gateway - Multi-channel message router\n",[132,10368,10369,10372],{"class":134,"line":200},[132,10370,10371],{"class":10344},"  gateway",[132,10373,2197],{"class":149},[132,10375,10376,10379],{"class":134,"line":216},[132,10377,10378],{"class":10344},"    build",[132,10380,2197],{"class":149},[132,10382,10383,10386,10388],{"class":134,"line":221},[132,10384,10385],{"class":10344},"      context",[132,10387,3898],{"class":149},[132,10389,10390],{"class":206},".\n",[132,10392,10393,10396,10398],{"class":134,"line":227},[132,10394,10395],{"class":10344},"      dockerfile",[132,10397,3898],{"class":149},[132,10399,10400],{"class":156},"Dockerfile.gateway\n",[132,10402,10403,10406],{"class":134,"line":233},[132,10404,10405],{"class":10344},"    environment",[132,10407,2197],{"class":149},[132,10409,10410,10413],{"class":134,"line":239},[132,10411,10412],{"class":149},"      - ",[132,10414,10415],{"class":156},"CONVEX_URL=${CONVEX_URL}\n",[132,10417,10418,10420],{"class":134,"line":245},[132,10419,10412],{"class":149},[132,10421,10422],{"class":156},"ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}\n",[132,10424,10425,10427],{"class":134,"line":251},[132,10426,10412],{"class":149},[132,10428,10429],{"class":156},"TELEGRAM_BOT_TOKEN=${TELEGRAM_BOT_TOKEN}\n",[132,10431,10432,10434],{"class":134,"line":256},[132,10433,10412],{"class":149},[132,10435,10436],{"class":156},"DISCORD_BOT_TOKEN=${DISCORD_BOT_TOKEN}\n",[132,10438,10439,10441],{"class":134,"line":262},[132,10440,10412],{"class":149},[132,10442,10443],{"class":156},"SLACK_BOT_TOKEN=${SLACK_BOT_TOKEN}\n",[132,10445,10446,10448],{"class":134,"line":268},[132,10447,10412],{"class":149},[132,10449,10450],{"class":156},"SLACK_APP_TOKEN=${SLACK_APP_TOKEN}\n",[132,10452,10453,10456,10458],{"class":134,"line":274},[132,10454,10455],{"class":10344},"    restart",[132,10457,3898],{"class":149},[132,10459,10460],{"class":156},"unless-stopped\n",[132,10462,10463,10466],{"class":134,"line":280},[132,10464,10465],{"class":10344},"    networks",[132,10467,2197],{"class":149},[132,10469,10470,10472],{"class":134,"line":286},[132,10471,10412],{"class":149},[132,10473,10474],{"class":156},"intelliteam\n",[132,10476,10477],{"class":134,"line":291},[132,10478,197],{"emptyLinePlaceholder":196},[132,10480,10481],{"class":134,"line":297},[132,10482,10483],{"class":138},"  # Concierge - Human interface agent\n",[132,10485,10486,10489],{"class":134,"line":303},[132,10487,10488],{"class":10344},"  concierge",[132,10490,2197],{"class":149},[132,10492,10493,10495],{"class":134,"line":311},[132,10494,10378],{"class":10344},[132,10496,2197],{"class":149},[132,10498,10499,10501,10503],{"class":134,"line":316},[132,10500,10385],{"class":10344},[132,10502,3898],{"class":149},[132,10504,10390],{"class":206},[132,10506,10507,10509,10511],{"class":134,"line":332},[132,10508,10395],{"class":10344},[132,10510,3898],{"class":149},[132,10512,10513],{"class":156},"Dockerfile.agent\n",[132,10515,10516,10518],{"class":134,"line":350},[132,10517,10405],{"class":10344},[132,10519,2197],{"class":149},[132,10521,10522,10524],{"class":134,"line":365},[132,10523,10412],{"class":149},[132,10525,10526],{"class":156},"AGENT_TYPE=concierge\n",[132,10528,10529,10531],{"class":134,"line":380},[132,10530,10412],{"class":149},[132,10532,10533],{"class":156},"INSTANCE_ID=concierge-${HOSTNAME:-main}\n",[132,10535,10536,10538],{"class":134,"line":385},[132,10537,10412],{"class":149},[132,10539,10415],{"class":156},[132,10541,10542,10544],{"class":134,"line":404},[132,10543,10412],{"class":149},[132,10545,10422],{"class":156},[132,10547,10548,10550,10552],{"class":134,"line":424},[132,10549,10455],{"class":10344},[132,10551,3898],{"class":149},[132,10553,10460],{"class":156},[132,10555,10556,10558],{"class":134,"line":450},[132,10557,10465],{"class":10344},[132,10559,2197],{"class":149},[132,10561,10562,10564],{"class":134,"line":463},[132,10563,10412],{"class":149},[132,10565,10474],{"class":156},[132,10567,10568],{"class":134,"line":469},[132,10569,197],{"emptyLinePlaceholder":196},[132,10571,10572],{"class":134,"line":474},[132,10573,10574],{"class":138},"  # Coder Agent\n",[132,10576,10577,10580],{"class":134,"line":519},[132,10578,10579],{"class":10344},"  coder",[132,10581,2197],{"class":149},[132,10583,10584,10586],{"class":134,"line":525},[132,10585,10378],{"class":10344},[132,10587,2197],{"class":149},[132,10589,10590,10592,10594],{"class":134,"line":543},[132,10591,10385],{"class":10344},[132,10593,3898],{"class":149},[132,10595,10390],{"class":206},[132,10597,10598,10600,10602],{"class":134,"line":555},[132,10599,10395],{"class":10344},[132,10601,3898],{"class":149},[132,10603,10513],{"class":156},[132,10605,10606,10608],{"class":134,"line":567},[132,10607,10405],{"class":10344},[132,10609,2197],{"class":149},[132,10611,10612,10614],{"class":134,"line":573},[132,10613,10412],{"class":149},[132,10615,10616],{"class":156},"AGENT_TYPE=coder\n",[132,10618,10619,10621],{"class":134,"line":579},[132,10620,10412],{"class":149},[132,10622,10623],{"class":156},"INSTANCE_ID=coder-${HOSTNAME:-main}\n",[132,10625,10626,10628],{"class":134,"line":585},[132,10627,10412],{"class":149},[132,10629,10415],{"class":156},[132,10631,10632,10634],{"class":134,"line":590},[132,10633,10412],{"class":149},[132,10635,10422],{"class":156},[132,10637,10638,10641],{"class":134,"line":596},[132,10639,10640],{"class":10344},"    volumes",[132,10642,2197],{"class":149},[132,10644,10645,10647],{"class":134,"line":621},[132,10646,10412],{"class":149},[132,10648,10649],{"class":156},"workspaces:/workspaces\n",[132,10651,10652,10654,10656],{"class":134,"line":632},[132,10653,10455],{"class":10344},[132,10655,3898],{"class":149},[132,10657,10460],{"class":156},[132,10659,10660,10662],{"class":134,"line":643},[132,10661,10465],{"class":10344},[132,10663,2197],{"class":149},[132,10665,10666,10668],{"class":134,"line":654},[132,10667,10412],{"class":149},[132,10669,10474],{"class":156},[132,10671,10672],{"class":134,"line":670},[132,10673,197],{"emptyLinePlaceholder":196},[132,10675,10676],{"class":134,"line":682},[132,10677,10678],{"class":138},"  # Reviewer Agent\n",[132,10680,10681,10684],{"class":134,"line":687},[132,10682,10683],{"class":10344},"  reviewer",[132,10685,2197],{"class":149},[132,10687,10688,10690],{"class":134,"line":692},[132,10689,10378],{"class":10344},[132,10691,2197],{"class":149},[132,10693,10694,10696,10698],{"class":134,"line":698},[132,10695,10385],{"class":10344},[132,10697,3898],{"class":149},[132,10699,10390],{"class":206},[132,10701,10702,10704,10706],{"class":134,"line":712},[132,10703,10395],{"class":10344},[132,10705,3898],{"class":149},[132,10707,10513],{"class":156},[132,10709,10710,10712],{"class":134,"line":737},[132,10711,10405],{"class":10344},[132,10713,2197],{"class":149},[132,10715,10716,10718],{"class":134,"line":748},[132,10717,10412],{"class":149},[132,10719,10720],{"class":156},"AGENT_TYPE=reviewer\n",[132,10722,10723,10725],{"class":134,"line":754},[132,10724,10412],{"class":149},[132,10726,10727],{"class":156},"INSTANCE_ID=reviewer-${HOSTNAME:-main}\n",[132,10729,10730,10732],{"class":134,"line":759},[132,10731,10412],{"class":149},[132,10733,10415],{"class":156},[132,10735,10736,10738],{"class":134,"line":776},[132,10737,10412],{"class":149},[132,10739,10422],{"class":156},[132,10741,10742,10744],{"class":134,"line":790},[132,10743,10640],{"class":10344},[132,10745,2197],{"class":149},[132,10747,10748,10750],{"class":134,"line":808},[132,10749,10412],{"class":149},[132,10751,10752],{"class":156},"workspaces:/workspaces:ro\n",[132,10754,10755,10757,10759],{"class":134,"line":813},[132,10756,10455],{"class":10344},[132,10758,3898],{"class":149},[132,10760,10460],{"class":156},[132,10762,10763,10765],{"class":134,"line":835},[132,10764,10465],{"class":10344},[132,10766,2197],{"class":149},[132,10768,10769,10771],{"class":134,"line":849},[132,10770,10412],{"class":149},[132,10772,10474],{"class":156},[132,10774,10775],{"class":134,"line":854},[132,10776,197],{"emptyLinePlaceholder":196},[132,10778,10779],{"class":134,"line":872},[132,10780,10781],{"class":138},"  # Tester Agent\n",[132,10783,10784,10787],{"class":134,"line":882},[132,10785,10786],{"class":10344},"  tester",[132,10788,2197],{"class":149},[132,10790,10791,10793],{"class":134,"line":892},[132,10792,10378],{"class":10344},[132,10794,2197],{"class":149},[132,10796,10797,10799,10801],{"class":134,"line":902},[132,10798,10385],{"class":10344},[132,10800,3898],{"class":149},[132,10802,10390],{"class":206},[132,10804,10805,10807,10809],{"class":134,"line":916},[132,10806,10395],{"class":10344},[132,10808,3898],{"class":149},[132,10810,10513],{"class":156},[132,10812,10813,10815],{"class":134,"line":922},[132,10814,10405],{"class":10344},[132,10816,2197],{"class":149},[132,10818,10819,10821],{"class":134,"line":928},[132,10820,10412],{"class":149},[132,10822,10823],{"class":156},"AGENT_TYPE=tester\n",[132,10825,10826,10828],{"class":134,"line":934},[132,10827,10412],{"class":149},[132,10829,10830],{"class":156},"INSTANCE_ID=tester-${HOSTNAME:-main}\n",[132,10832,10833,10835],{"class":134,"line":939},[132,10834,10412],{"class":149},[132,10836,10415],{"class":156},[132,10838,10839,10841],{"class":134,"line":945},[132,10840,10412],{"class":149},[132,10842,10422],{"class":156},[132,10844,10845,10847],{"class":134,"line":964},[132,10846,10640],{"class":10344},[132,10848,2197],{"class":149},[132,10850,10851,10853],{"class":134,"line":987},[132,10852,10412],{"class":149},[132,10854,10649],{"class":156},[132,10856,10857,10859,10861],{"class":134,"line":993},[132,10858,10455],{"class":10344},[132,10860,3898],{"class":149},[132,10862,10460],{"class":156},[132,10864,10865,10867],{"class":134,"line":1014},[132,10866,10465],{"class":10344},[132,10868,2197],{"class":149},[132,10870,10871,10873],{"class":134,"line":1019},[132,10872,10412],{"class":149},[132,10874,10474],{"class":156},[132,10876,10877],{"class":134,"line":1025},[132,10878,197],{"emptyLinePlaceholder":196},[132,10880,10881,10884],{"class":134,"line":1038},[132,10882,10883],{"class":10344},"volumes",[132,10885,2197],{"class":149},[132,10887,10888,10891],{"class":134,"line":1048},[132,10889,10890],{"class":10344},"  workspaces",[132,10892,2197],{"class":149},[132,10894,10895],{"class":134,"line":1057},[132,10896,197],{"emptyLinePlaceholder":196},[132,10898,10899,10902],{"class":134,"line":1062},[132,10900,10901],{"class":10344},"networks",[132,10903,2197],{"class":149},[132,10905,10906,10909],{"class":134,"line":1068},[132,10907,10908],{"class":10344},"  intelliteam",[132,10910,2197],{"class":149},[132,10912,10913,10916,10918],{"class":134,"line":1073},[132,10914,10915],{"class":10344},"    driver",[132,10917,3898],{"class":149},[132,10919,10920],{"class":156},"bridge\n",[94,10922,10926],{"className":10923,"code":10924,"language":10925,"meta":103,"style":103},"language-dockerfile shiki shiki-themes github-light github-dark","# Dockerfile.agent\nFROM node:22-alpine\n\nWORKDIR /app\n\n# Install dependencies\nCOPY package*.json ./\nRUN npm ci --production\n\n# Copy source\nCOPY dist/ ./dist/\nCOPY convex/ ./convex/\n\n# Health check\nHEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \\\n  CMD node -e \"process.exit(0)\"\n\nCMD [\"node\", \"dist/agent.js\"]\n","dockerfile",[101,10927,10928,10933,10938,10942,10947,10951,10956,10961,10966,10970,10975,10980,10985,10989,10994,10999,11004,11008],{"__ignoreMap":103},[132,10929,10930],{"class":134,"line":135},[132,10931,10932],{},"# Dockerfile.agent\n",[132,10934,10935],{"class":134,"line":142},[132,10936,10937],{},"FROM node:22-alpine\n",[132,10939,10940],{"class":134,"line":163},[132,10941,197],{"emptyLinePlaceholder":196},[132,10943,10944],{"class":134,"line":178},[132,10945,10946],{},"WORKDIR /app\n",[132,10948,10949],{"class":134,"line":193},[132,10950,197],{"emptyLinePlaceholder":196},[132,10952,10953],{"class":134,"line":200},[132,10954,10955],{},"# Install dependencies\n",[132,10957,10958],{"class":134,"line":216},[132,10959,10960],{},"COPY package*.json ./\n",[132,10962,10963],{"class":134,"line":221},[132,10964,10965],{},"RUN npm ci --production\n",[132,10967,10968],{"class":134,"line":227},[132,10969,197],{"emptyLinePlaceholder":196},[132,10971,10972],{"class":134,"line":233},[132,10973,10974],{},"# Copy source\n",[132,10976,10977],{"class":134,"line":239},[132,10978,10979],{},"COPY dist/ ./dist/\n",[132,10981,10982],{"class":134,"line":245},[132,10983,10984],{},"COPY convex/ ./convex/\n",[132,10986,10987],{"class":134,"line":251},[132,10988,197],{"emptyLinePlaceholder":196},[132,10990,10991],{"class":134,"line":256},[132,10992,10993],{},"# Health check\n",[132,10995,10996],{"class":134,"line":262},[132,10997,10998],{},"HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \\\n",[132,11000,11001],{"class":134,"line":268},[132,11002,11003],{},"  CMD node -e \"process.exit(0)\"\n",[132,11005,11006],{"class":134,"line":274},[132,11007,197],{"emptyLinePlaceholder":196},[132,11009,11010],{"class":134,"line":280},[132,11011,11012],{},"CMD [\"node\", \"dist/agent.js\"]\n",[86,11014],{},[89,11016,11018],{"id":11017},"mcp-integration","MCP Integration",[15,11020,11021,11022,11025],{},"For teams using Claude Code or Claude Desktop, intelliTeam exposes an ",[19,11023,11024],{},"MCP server"," for direct integration.",[94,11027,11029],{"className":126,"code":11028,"language":128,"meta":103,"style":103},"// src/mcp/server.ts\nimport { Server } from \"@modelcontextprotocol/sdk/server/index.js\";\nimport { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\";\nimport { ConvexClient } from \"convex/browser\";\nimport { api } from \"../convex/_generated/api\";\n\nconst server = new Server(\n  { name: \"intelliteam\", version: \"1.0.0\" },\n  { capabilities: { tools: {}, resources: {} } }\n);\n\nconst convex = new ConvexClient(process.env.CONVEX_URL!);\n\n// Tools\nserver.setRequestHandler(\"tools/list\", async () => ({\n  tools: [\n    {\n      name: \"team_status\",\n      description: \"Get status of all intelliTeam agents and workspaces\",\n      inputSchema: { type: \"object\", properties: {} },\n    },\n    {\n      name: \"assign_task\",\n      description: \"Assign a task to a specific agent type\",\n      inputSchema: {\n        type: \"object\",\n        properties: {\n          agentType: {\n            type: \"string\",\n            enum: [\"coder\", \"reviewer\", \"tester\"],\n          },\n          workspaceId: { type: \"string\" },\n          task: { type: \"string\" },\n          priority: {\n            type: \"string\",\n            enum: [\"low\", \"medium\", \"high\", \"urgent\"],\n          },\n        },\n        required: [\"agentType\", \"task\"],\n      },\n    },\n    {\n      name: \"get_workspace\",\n      description: \"Get detailed state of a workspace\",\n      inputSchema: {\n        type: \"object\",\n        properties: {\n          workspaceId: { type: \"string\" },\n        },\n        required: [\"workspaceId\"],\n      },\n    },\n  ],\n}));\n\nserver.setRequestHandler(\"tools/call\", async (request) => {\n  const { name, arguments: args } = request.params;\n\n  switch (name) {\n    case \"team_status\":\n      const agents = await convex.query(api.agents.getStatus, {});\n      const workspaces = await convex.query(api.workspaces.list, { status: \"active\" });\n      return {\n        content: [\n          {\n            type: \"text\",\n            text: JSON.stringify({ agents, workspaces }, null, 2),\n          },\n        ],\n      };\n\n    case \"assign_task\":\n      const messageId = await convex.mutation(api.agents.sendMessage, {\n        agentType: args.agentType,\n        message: args.task,\n        priority: args.priority || \"medium\",\n      });\n      return {\n        content: [\n          { type: \"text\", text: `Task assigned. Message ID: ${messageId}` },\n        ],\n      };\n\n    case \"get_workspace\":\n      const state = await convex.query(api.workspaces.getState, {\n        id: args.workspaceId,\n      });\n      return {\n        content: [{ type: \"text\", text: JSON.stringify(state, null, 2) }],\n      };\n\n    default:\n      throw new Error(`Unknown tool: ${name}`);\n  }\n});\n\n// Start server\nconst transport = new StdioServerTransport();\nawait server.connect(transport);\n",[101,11030,11031,11036,11050,11064,11076,11088,11092,11108,11124,11129,11133,11137,11157,11161,11166,11191,11196,11201,11211,11221,11231,11236,11240,11249,11258,11263,11272,11277,11282,11290,11307,11311,11320,11329,11334,11342,11362,11366,11370,11384,11388,11392,11396,11405,11414,11418,11426,11430,11438,11442,11450,11454,11458,11463,11468,11472,11498,11523,11527,11534,11544,11562,11584,11590,11595,11600,11608,11632,11636,11641,11646,11650,11659,11676,11681,11686,11698,11702,11708,11712,11732,11736,11740,11744,11753,11770,11775,11779,11785,11812,11816,11820,11827,11846,11850,11854,11858,11863,11879],{"__ignoreMap":103},[132,11032,11033],{"class":134,"line":135},[132,11034,11035],{"class":138},"// src/mcp/server.ts\n",[132,11037,11038,11040,11043,11045,11048],{"class":134,"line":142},[132,11039,146],{"class":145},[132,11041,11042],{"class":149}," { Server } ",[132,11044,153],{"class":145},[132,11046,11047],{"class":156}," \"@modelcontextprotocol/sdk/server/index.js\"",[132,11049,160],{"class":149},[132,11051,11052,11054,11057,11059,11062],{"class":134,"line":163},[132,11053,146],{"class":145},[132,11055,11056],{"class":149}," { StdioServerTransport } ",[132,11058,153],{"class":145},[132,11060,11061],{"class":156}," \"@modelcontextprotocol/sdk/server/stdio.js\"",[132,11063,160],{"class":149},[132,11065,11066,11068,11070,11072,11074],{"class":134,"line":178},[132,11067,146],{"class":145},[132,11069,168],{"class":149},[132,11071,153],{"class":145},[132,11073,173],{"class":156},[132,11075,160],{"class":149},[132,11077,11078,11080,11082,11084,11086],{"class":134,"line":193},[132,11079,146],{"class":145},[132,11081,183],{"class":149},[132,11083,153],{"class":145},[132,11085,188],{"class":156},[132,11087,160],{"class":149},[132,11089,11090],{"class":134,"line":200},[132,11091,197],{"emptyLinePlaceholder":196},[132,11093,11094,11096,11099,11101,11103,11106],{"class":134,"line":216},[132,11095,203],{"class":145},[132,11097,11098],{"class":206}," server",[132,11100,210],{"class":145},[132,11102,416],{"class":145},[132,11104,11105],{"class":325}," Server",[132,11107,961],{"class":149},[132,11109,11110,11113,11116,11119,11122],{"class":134,"line":221},[132,11111,11112],{"class":149},"  { name: ",[132,11114,11115],{"class":156},"\"intelliteam\"",[132,11117,11118],{"class":149},", version: ",[132,11120,11121],{"class":156},"\"1.0.0\"",[132,11123,1320],{"class":149},[132,11125,11126],{"class":134,"line":227},[132,11127,11128],{"class":149},"  { capabilities: { tools: {}, resources: {} } }\n",[132,11130,11131],{"class":134,"line":233},[132,11132,447],{"class":149},[132,11134,11135],{"class":134,"line":239},[132,11136,197],{"emptyLinePlaceholder":196},[132,11138,11139,11141,11143,11145,11147,11149,11151,11153,11155],{"class":134,"line":245},[132,11140,203],{"class":145},[132,11142,355],{"class":206},[132,11144,210],{"class":145},[132,11146,416],{"class":145},[132,11148,360],{"class":325},[132,11150,438],{"class":149},[132,11152,441],{"class":206},[132,11154,444],{"class":145},[132,11156,447],{"class":149},[132,11158,11159],{"class":134,"line":251},[132,11160,197],{"emptyLinePlaceholder":196},[132,11162,11163],{"class":134,"line":256},[132,11164,11165],{"class":138},"// Tools\n",[132,11167,11168,11171,11174,11176,11179,11181,11183,11186,11188],{"class":134,"line":262},[132,11169,11170],{"class":149},"server.",[132,11172,11173],{"class":325},"setRequestHandler",[132,11175,391],{"class":149},[132,11177,11178],{"class":156},"\"tools/list\"",[132,11180,492],{"class":149},[132,11182,3901],{"class":145},[132,11184,11185],{"class":149}," () ",[132,11187,976],{"class":145},[132,11189,11190],{"class":149}," ({\n",[132,11192,11193],{"class":134,"line":268},[132,11194,11195],{"class":149},"  tools: [\n",[132,11197,11198],{"class":134,"line":274},[132,11199,11200],{"class":149},"    {\n",[132,11202,11203,11206,11209],{"class":134,"line":280},[132,11204,11205],{"class":149},"      name: ",[132,11207,11208],{"class":156},"\"team_status\"",[132,11210,552],{"class":149},[132,11212,11213,11216,11219],{"class":134,"line":286},[132,11214,11215],{"class":149},"      description: ",[132,11217,11218],{"class":156},"\"Get status of all intelliTeam agents and workspaces\"",[132,11220,552],{"class":149},[132,11222,11223,11226,11228],{"class":134,"line":291},[132,11224,11225],{"class":149},"      inputSchema: { type: ",[132,11227,1167],{"class":156},[132,11229,11230],{"class":149},", properties: {} },\n",[132,11232,11233],{"class":134,"line":297},[132,11234,11235],{"class":149},"    },\n",[132,11237,11238],{"class":134,"line":303},[132,11239,11200],{"class":149},[132,11241,11242,11244,11247],{"class":134,"line":311},[132,11243,11205],{"class":149},[132,11245,11246],{"class":156},"\"assign_task\"",[132,11248,552],{"class":149},[132,11250,11251,11253,11256],{"class":134,"line":316},[132,11252,11215],{"class":149},[132,11254,11255],{"class":156},"\"Assign a task to a specific agent type\"",[132,11257,552],{"class":149},[132,11259,11260],{"class":134,"line":332},[132,11261,11262],{"class":149},"      inputSchema: {\n",[132,11264,11265,11268,11270],{"class":134,"line":350},[132,11266,11267],{"class":149},"        type: ",[132,11269,1167],{"class":156},[132,11271,552],{"class":149},[132,11273,11274],{"class":134,"line":365},[132,11275,11276],{"class":149},"        properties: {\n",[132,11278,11279],{"class":134,"line":380},[132,11280,11281],{"class":149},"          agentType: {\n",[132,11283,11284,11286,11288],{"class":134,"line":385},[132,11285,7835],{"class":149},[132,11287,1196],{"class":156},[132,11289,552],{"class":149},[132,11291,11292,11295,11297,11299,11301,11303,11305],{"class":134,"line":404},[132,11293,11294],{"class":149},"            enum: [",[132,11296,1766],{"class":156},[132,11298,492],{"class":149},[132,11300,1771],{"class":156},[132,11302,492],{"class":149},[132,11304,1776],{"class":156},[132,11306,1220],{"class":149},[132,11308,11309],{"class":134,"line":424},[132,11310,1243],{"class":149},[132,11312,11313,11316,11318],{"class":134,"line":450},[132,11314,11315],{"class":149},"          workspaceId: { type: ",[132,11317,1196],{"class":156},[132,11319,1320],{"class":149},[132,11321,11322,11325,11327],{"class":134,"line":463},[132,11323,11324],{"class":149},"          task: { type: ",[132,11326,1196],{"class":156},[132,11328,1320],{"class":149},[132,11330,11331],{"class":134,"line":469},[132,11332,11333],{"class":149},"          priority: {\n",[132,11335,11336,11338,11340],{"class":134,"line":474},[132,11337,7835],{"class":149},[132,11339,1196],{"class":156},[132,11341,552],{"class":149},[132,11343,11344,11346,11348,11350,11352,11354,11356,11358,11360],{"class":134,"line":519},[132,11345,11294],{"class":149},[132,11347,1530],{"class":156},[132,11349,492],{"class":149},[132,11351,1535],{"class":156},[132,11353,492],{"class":149},[132,11355,1540],{"class":156},[132,11357,492],{"class":149},[132,11359,1545],{"class":156},[132,11361,1220],{"class":149},[132,11363,11364],{"class":134,"line":525},[132,11365,1243],{"class":149},[132,11367,11368],{"class":134,"line":543},[132,11369,1249],{"class":149},[132,11371,11372,11375,11377,11379,11382],{"class":134,"line":555},[132,11373,11374],{"class":149},"        required: [",[132,11376,1844],{"class":156},[132,11378,492],{"class":149},[132,11380,11381],{"class":156},"\"task\"",[132,11383,1220],{"class":149},[132,11385,11386],{"class":134,"line":567},[132,11387,1255],{"class":149},[132,11389,11390],{"class":134,"line":573},[132,11391,11235],{"class":149},[132,11393,11394],{"class":134,"line":579},[132,11395,11200],{"class":149},[132,11397,11398,11400,11403],{"class":134,"line":585},[132,11399,11205],{"class":149},[132,11401,11402],{"class":156},"\"get_workspace\"",[132,11404,552],{"class":149},[132,11406,11407,11409,11412],{"class":134,"line":590},[132,11408,11215],{"class":149},[132,11410,11411],{"class":156},"\"Get detailed state of a workspace\"",[132,11413,552],{"class":149},[132,11415,11416],{"class":134,"line":596},[132,11417,11262],{"class":149},[132,11419,11420,11422,11424],{"class":134,"line":621},[132,11421,11267],{"class":149},[132,11423,1167],{"class":156},[132,11425,552],{"class":149},[132,11427,11428],{"class":134,"line":632},[132,11429,11276],{"class":149},[132,11431,11432,11434,11436],{"class":134,"line":643},[132,11433,11315],{"class":149},[132,11435,1196],{"class":156},[132,11437,1320],{"class":149},[132,11439,11440],{"class":134,"line":654},[132,11441,1249],{"class":149},[132,11443,11444,11446,11448],{"class":134,"line":670},[132,11445,11374],{"class":149},[132,11447,1334],{"class":156},[132,11449,1220],{"class":149},[132,11451,11452],{"class":134,"line":682},[132,11453,1255],{"class":149},[132,11455,11456],{"class":134,"line":687},[132,11457,11235],{"class":149},[132,11459,11460],{"class":134,"line":692},[132,11461,11462],{"class":149},"  ],\n",[132,11464,11465],{"class":134,"line":698},[132,11466,11467],{"class":149},"}));\n",[132,11469,11470],{"class":134,"line":712},[132,11471,197],{"emptyLinePlaceholder":196},[132,11473,11474,11476,11478,11480,11483,11485,11487,11489,11492,11494,11496],{"class":134,"line":737},[132,11475,11170],{"class":149},[132,11477,11173],{"class":325},[132,11479,391],{"class":149},[132,11481,11482],{"class":156},"\"tools/call\"",[132,11484,492],{"class":149},[132,11486,3901],{"class":145},[132,11488,1967],{"class":149},[132,11490,11491],{"class":338},"request",[132,11493,973],{"class":149},[132,11495,976],{"class":145},[132,11497,329],{"class":149},[132,11499,11500,11502,11504,11506,11508,11511,11513,11515,11518,11520],{"class":134,"line":748},[132,11501,9161],{"class":145},[132,11503,4944],{"class":149},[132,11505,2114],{"class":206},[132,11507,492],{"class":149},[132,11509,11510],{"class":338},"arguments",[132,11512,3898],{"class":149},[132,11514,3911],{"class":206},[132,11516,11517],{"class":149}," } ",[132,11519,413],{"class":145},[132,11521,11522],{"class":149}," request.params;\n",[132,11524,11525],{"class":134,"line":754},[132,11526,197],{"emptyLinePlaceholder":196},[132,11528,11529,11532],{"class":134,"line":759},[132,11530,11531],{"class":145},"  switch",[132,11533,2185],{"class":149},[132,11535,11536,11539,11542],{"class":134,"line":776},[132,11537,11538],{"class":145},"    case",[132,11540,11541],{"class":156}," \"team_status\"",[132,11543,2197],{"class":149},[132,11545,11546,11548,11550,11552,11554,11557,11559],{"class":134,"line":790},[132,11547,779],{"class":145},[132,11549,4835],{"class":206},[132,11551,210],{"class":145},[132,11553,607],{"class":145},[132,11555,11556],{"class":149}," convex.",[132,11558,2210],{"class":325},[132,11560,11561],{"class":149},"(api.agents.getStatus, {});\n",[132,11563,11564,11566,11569,11571,11573,11575,11577,11580,11582],{"class":134,"line":808},[132,11565,779],{"class":145},[132,11567,11568],{"class":206}," workspaces",[132,11570,210],{"class":145},[132,11572,607],{"class":145},[132,11574,11556],{"class":149},[132,11576,2210],{"class":325},[132,11578,11579],{"class":149},"(api.workspaces.list, { status: ",[132,11581,1207],{"class":156},[132,11583,5714],{"class":149},[132,11585,11586,11588],{"class":134,"line":813},[132,11587,3944],{"class":145},[132,11589,329],{"class":149},[132,11591,11592],{"class":134,"line":835},[132,11593,11594],{"class":149},"        content: [\n",[132,11596,11597],{"class":134,"line":849},[132,11598,11599],{"class":149},"          {\n",[132,11601,11602,11604,11606],{"class":134,"line":854},[132,11603,7835],{"class":149},[132,11605,9209],{"class":156},[132,11607,552],{"class":149},[132,11609,11610,11613,11615,11617,11619,11622,11625,11627,11630],{"class":134,"line":872},[132,11611,11612],{"class":149},"            text: ",[132,11614,2051],{"class":206},[132,11616,123],{"class":149},[132,11618,2056],{"class":325},[132,11620,11621],{"class":149},"({ agents, workspaces }, ",[132,11623,11624],{"class":206},"null",[132,11626,492],{"class":149},[132,11628,11629],{"class":206},"2",[132,11631,2876],{"class":149},[132,11633,11634],{"class":134,"line":882},[132,11635,1243],{"class":149},[132,11637,11638],{"class":134,"line":892},[132,11639,11640],{"class":149},"        ],\n",[132,11642,11643],{"class":134,"line":902},[132,11644,11645],{"class":149},"      };\n",[132,11647,11648],{"class":134,"line":916},[132,11649,197],{"emptyLinePlaceholder":196},[132,11651,11652,11654,11657],{"class":134,"line":922},[132,11653,11538],{"class":145},[132,11655,11656],{"class":156}," \"assign_task\"",[132,11658,2197],{"class":149},[132,11660,11661,11663,11666,11668,11670,11672,11674],{"class":134,"line":928},[132,11662,779],{"class":145},[132,11664,11665],{"class":206}," messageId",[132,11667,210],{"class":145},[132,11669,607],{"class":145},[132,11671,11556],{"class":149},[132,11673,537],{"class":325},[132,11675,2521],{"class":149},[132,11677,11678],{"class":134,"line":934},[132,11679,11680],{"class":149},"        agentType: args.agentType,\n",[132,11682,11683],{"class":134,"line":939},[132,11684,11685],{"class":149},"        message: args.task,\n",[132,11687,11688,11691,11693,11696],{"class":134,"line":945},[132,11689,11690],{"class":149},"        priority: args.priority ",[132,11692,1006],{"class":145},[132,11694,11695],{"class":156}," \"medium\"",[132,11697,552],{"class":149},[132,11699,11700],{"class":134,"line":964},[132,11701,925],{"class":149},[132,11703,11704,11706],{"class":134,"line":987},[132,11705,3944],{"class":145},[132,11707,329],{"class":149},[132,11709,11710],{"class":134,"line":993},[132,11711,11594],{"class":149},[132,11713,11714,11717,11719,11722,11725,11728,11730],{"class":134,"line":1014},[132,11715,11716],{"class":149},"          { type: ",[132,11718,9209],{"class":156},[132,11720,11721],{"class":149},", text: ",[132,11723,11724],{"class":156},"`Task assigned. Message ID: ${",[132,11726,11727],{"class":149},"messageId",[132,11729,2602],{"class":156},[132,11731,1320],{"class":149},[132,11733,11734],{"class":134,"line":1019},[132,11735,11640],{"class":149},[132,11737,11738],{"class":134,"line":1025},[132,11739,11645],{"class":149},[132,11741,11742],{"class":134,"line":1038},[132,11743,197],{"emptyLinePlaceholder":196},[132,11745,11746,11748,11751],{"class":134,"line":1048},[132,11747,11538],{"class":145},[132,11749,11750],{"class":156}," \"get_workspace\"",[132,11752,2197],{"class":149},[132,11754,11755,11757,11760,11762,11764,11766,11768],{"class":134,"line":1057},[132,11756,779],{"class":145},[132,11758,11759],{"class":206}," state",[132,11761,210],{"class":145},[132,11763,607],{"class":145},[132,11765,11556],{"class":149},[132,11767,2210],{"class":325},[132,11769,2259],{"class":149},[132,11771,11772],{"class":134,"line":1062},[132,11773,11774],{"class":149},"        id: args.workspaceId,\n",[132,11776,11777],{"class":134,"line":1068},[132,11778,925],{"class":149},[132,11780,11781,11783],{"class":134,"line":1073},[132,11782,3944],{"class":145},[132,11784,329],{"class":149},[132,11786,11787,11790,11792,11794,11796,11798,11800,11803,11805,11807,11809],{"class":134,"line":1078},[132,11788,11789],{"class":149},"        content: [{ type: ",[132,11791,9209],{"class":156},[132,11793,11721],{"class":149},[132,11795,2051],{"class":206},[132,11797,123],{"class":149},[132,11799,2056],{"class":325},[132,11801,11802],{"class":149},"(state, ",[132,11804,11624],{"class":206},[132,11806,492],{"class":149},[132,11808,11629],{"class":206},[132,11810,11811],{"class":149},") }],\n",[132,11813,11814],{"class":134,"line":1087},[132,11815,11645],{"class":149},[132,11817,11818],{"class":134,"line":1092},[132,11819,197],{"emptyLinePlaceholder":196},[132,11821,11822,11825],{"class":134,"line":1097},[132,11823,11824],{"class":145},"    default",[132,11826,2197],{"class":149},[132,11828,11829,11832,11834,11836,11838,11840,11842,11844],{"class":134,"line":1120},[132,11830,11831],{"class":145},"      throw",[132,11833,416],{"class":145},[132,11835,8684],{"class":325},[132,11837,391],{"class":149},[132,11839,2597],{"class":156},[132,11841,2114],{"class":149},[132,11843,2602],{"class":156},[132,11845,447],{"class":149},[132,11847,11848],{"class":134,"line":1127},[132,11849,466],{"class":149},[132,11851,11852],{"class":134,"line":1133},[132,11853,3820],{"class":149},[132,11855,11856],{"class":134,"line":1144},[132,11857,197],{"emptyLinePlaceholder":196},[132,11859,11860],{"class":134,"line":1155},[132,11861,11862],{"class":138},"// Start server\n",[132,11864,11865,11867,11870,11872,11874,11877],{"class":134,"line":1161},[132,11866,203],{"class":145},[132,11868,11869],{"class":206}," transport",[132,11871,210],{"class":145},[132,11873,416],{"class":145},[132,11875,11876],{"class":325}," StdioServerTransport",[132,11878,421],{"class":149},[132,11880,11881,11884,11887,11890],{"class":134,"line":1178},[132,11882,11883],{"class":145},"await",[132,11885,11886],{"class":149}," server.",[132,11888,11889],{"class":325},"connect",[132,11891,11892],{"class":149},"(transport);\n",[15,11894,11895,11896,11899],{},"Add to Claude Desktop config (",[101,11897,11898],{},"~/Library/Application Support/Claude/claude_desktop_config.json"," on macOS):",[94,11901,11905],{"className":11902,"code":11903,"language":11904,"meta":103,"style":103},"language-json shiki shiki-themes github-light github-dark","{\n  \"mcpServers\": {\n    \"intelliteam\": {\n      \"command\": \"node\",\n      \"args\": [\"/path/to/intelliteam/dist/mcp/server.js\"],\n      \"env\": {\n        \"CONVEX_URL\": \"https://your-project.convex.cloud\"\n      }\n    }\n  }\n}\n","json",[101,11906,11907,11912,11920,11927,11939,11952,11959,11969,11973,11977,11981],{"__ignoreMap":103},[132,11908,11909],{"class":134,"line":135},[132,11910,11911],{"class":149},"{\n",[132,11913,11914,11917],{"class":134,"line":142},[132,11915,11916],{"class":206},"  \"mcpServers\"",[132,11918,11919],{"class":149},": {\n",[132,11921,11922,11925],{"class":134,"line":163},[132,11923,11924],{"class":206},"    \"intelliteam\"",[132,11926,11919],{"class":149},[132,11928,11929,11932,11934,11937],{"class":134,"line":178},[132,11930,11931],{"class":206},"      \"command\"",[132,11933,3898],{"class":149},[132,11935,11936],{"class":156},"\"node\"",[132,11938,552],{"class":149},[132,11940,11941,11944,11947,11950],{"class":134,"line":193},[132,11942,11943],{"class":206},"      \"args\"",[132,11945,11946],{"class":149},": [",[132,11948,11949],{"class":156},"\"/path/to/intelliteam/dist/mcp/server.js\"",[132,11951,1220],{"class":149},[132,11953,11954,11957],{"class":134,"line":200},[132,11955,11956],{"class":206},"      \"env\"",[132,11958,11919],{"class":149},[132,11960,11961,11964,11966],{"class":134,"line":216},[132,11962,11963],{"class":206},"        \"CONVEX_URL\"",[132,11965,3898],{"class":149},[132,11967,11968],{"class":156},"\"https://your-project.convex.cloud\"\n",[132,11970,11971],{"class":134,"line":221},[132,11972,2071],{"class":149},[132,11974,11975],{"class":134,"line":227},[132,11976,931],{"class":149},[132,11978,11979],{"class":134,"line":233},[132,11980,466],{"class":149},[132,11982,11983],{"class":134,"line":239},[132,11984,2621],{"class":149},[86,11986],{},[89,11988,11990],{"id":11989},"usage-examples","Usage Examples",[109,11992,11994],{"id":11993},"via-telegram","Via Telegram",[94,11996,11999],{"className":11997,"code":11998,"language":99},[97],"You: What projects is the team working on?\n\n🛎️ Concierge: Currently tracking 3 active workspaces:\n\n1. **intelliteam-core** - The orchestration system itself\n   - 2 tasks in progress (coder: auth refactor, tester: integration tests)\n   - 5 tasks completed this week\n\n2. **customer-portal** - React dashboard\n   - 1 task in review\n   - Waiting for reviewer agent\n\n3. **api-v2** - New API endpoints\n   - 3 pending tasks\n   - No agent assigned yet\n\nWould you like details on any specific project?\n",[101,12000,11998],{"__ignoreMap":103},[94,12002,12005],{"className":12003,"code":12004,"language":99},[97],"You: Have the coder implement dark mode for customer-portal\n\n🛎️ Concierge: ✅ Task created and assigned to Coder agent:\n\n**Task:** Implement dark mode for customer-portal\n**Priority:** Medium\n**Status:** Assigned → In Progress\n\nThe coder agent is now working on this. I'll notify you when it's ready for review.\n",[101,12006,12004],{"__ignoreMap":103},[109,12008,12010],{"id":12009},"via-mcp-claude-code","Via MCP (Claude Code)",[94,12012,12015],{"className":12013,"code":12014,"language":99},[97],"> /mcp intelliteam team_status\n\n{\n  \"agents\": [\n    { \"type\": \"coder\", \"status\": \"busy\", \"currentTask\": \"Implement dark mode\" },\n    { \"type\": \"reviewer\", \"status\": \"idle\" },\n    { \"type\": \"tester\", \"status\": \"idle\" }\n  ],\n  \"workspaces\": [\n    { \"name\": \"customer-portal\", \"status\": \"active\", \"tasks\": 4 }\n  ]\n}\n\n> /mcp intelliteam assign_task --agentType=reviewer --task=\"Review dark mode PR #42\"\n\nTask assigned. Message ID: msg_abc123\n",[101,12016,12014],{"__ignoreMap":103},[86,12018],{},[89,12020,12022],{"id":12021},"scaling-considerations","Scaling Considerations",[109,12024,12026],{"id":12025},"horizontal-scaling","Horizontal Scaling",[94,12028,12030],{"className":10330,"code":12029,"language":10332,"meta":103,"style":103},"# docker-compose.scale.yml\nservices:\n  coder:\n    deploy:\n      replicas: 3\n      resources:\n        limits:\n          memory: 2G\n",[101,12031,12032,12037,12043,12049,12056,12066,12073,12080],{"__ignoreMap":103},[132,12033,12034],{"class":134,"line":135},[132,12035,12036],{"class":138},"# docker-compose.scale.yml\n",[132,12038,12039,12041],{"class":134,"line":142},[132,12040,10359],{"class":10344},[132,12042,2197],{"class":149},[132,12044,12045,12047],{"class":134,"line":163},[132,12046,10579],{"class":10344},[132,12048,2197],{"class":149},[132,12050,12051,12054],{"class":134,"line":178},[132,12052,12053],{"class":10344},"    deploy",[132,12055,2197],{"class":149},[132,12057,12058,12061,12063],{"class":134,"line":193},[132,12059,12060],{"class":10344},"      replicas",[132,12062,3898],{"class":149},[132,12064,12065],{"class":206},"3\n",[132,12067,12068,12071],{"class":134,"line":200},[132,12069,12070],{"class":10344},"      resources",[132,12072,2197],{"class":149},[132,12074,12075,12078],{"class":134,"line":216},[132,12076,12077],{"class":10344},"        limits",[132,12079,2197],{"class":149},[132,12081,12082,12085,12087],{"class":134,"line":221},[132,12083,12084],{"class":10344},"          memory",[132,12086,3898],{"class":149},[132,12088,12089],{"class":156},"2G\n",[15,12091,12092,12093,12096],{},"Each coder instance registers with a unique ",[101,12094,12095],{},"instanceId"," and claims tasks independently. Convex handles the coordination.",[109,12098,12100],{"id":12099},"priority-queues","Priority Queues",[94,12102,12104],{"className":126,"code":12103,"language":128,"meta":103,"style":103},"// convex/messages.ts - Priority-aware claiming\nexport const claimMessages = mutation({\n  handler: async (ctx, args) => {\n    // Urgent first\n    let messages = await ctx.db\n      .query(\"messages\")\n      .withIndex(\"by_recipient\", (q) =>\n        q.eq(\"toAgentType\", args.agentType).eq(\"status\", \"pending\")\n      )\n      .filter((q) => q.eq(q.field(\"priority\"), \"urgent\"))\n      .take(1);\n\n    // Then normal\n    if (messages.length === 0) {\n      messages = await ctx.db\n        .query(\"messages\")\n        .withIndex(\"by_recipient\", (q) =>\n          q.eq(\"toAgentType\", args.agentType).eq(\"status\", \"pending\")\n        )\n        .take(1);\n    }\n\n    return messages;\n  },\n});\n",[101,12105,12106,12111,12125,12147,12152,12165,12177,12195,12219,12223,12256,12268,12272,12277,12292,12303,12315,12333,12358,12363,12375,12379,12383,12389,12393],{"__ignoreMap":103},[132,12107,12108],{"class":134,"line":135},[132,12109,12110],{"class":138},"// convex/messages.ts - Priority-aware claiming\n",[132,12112,12113,12115,12117,12119,12121,12123],{"class":134,"line":142},[132,12114,319],{"class":145},[132,12116,1173],{"class":145},[132,12118,5514],{"class":206},[132,12120,210],{"class":145},[132,12122,4533],{"class":325},[132,12124,618],{"class":149},[132,12126,12127,12129,12131,12133,12135,12137,12139,12141,12143,12145],{"class":134,"line":163},[132,12128,3895],{"class":325},[132,12130,3898],{"class":149},[132,12132,3901],{"class":145},[132,12134,1967],{"class":149},[132,12136,3906],{"class":338},[132,12138,492],{"class":149},[132,12140,3911],{"class":338},[132,12142,973],{"class":149},[132,12144,976],{"class":145},[132,12146,329],{"class":149},[132,12148,12149],{"class":134,"line":178},[132,12150,12151],{"class":138},"    // Urgent first\n",[132,12153,12154,12156,12159,12161,12163],{"class":134,"line":193},[132,12155,701],{"class":145},[132,12157,12158],{"class":149}," messages ",[132,12160,413],{"class":145},[132,12162,607],{"class":145},[132,12164,3947],{"class":149},[132,12166,12167,12169,12171,12173,12175],{"class":134,"line":200},[132,12168,4113],{"class":149},[132,12170,2210],{"class":325},[132,12172,391],{"class":149},[132,12174,5431],{"class":156},[132,12176,2937],{"class":149},[132,12178,12179,12181,12183,12185,12187,12189,12191,12193],{"class":134,"line":216},[132,12180,4113],{"class":149},[132,12182,3967],{"class":325},[132,12184,391],{"class":149},[132,12186,3786],{"class":156},[132,12188,3974],{"class":149},[132,12190,3977],{"class":338},[132,12192,973],{"class":149},[132,12194,5626],{"class":145},[132,12196,12197,12199,12201,12203,12205,12207,12209,12211,12213,12215,12217],{"class":134,"line":221},[132,12198,5631],{"class":149},[132,12200,3987],{"class":325},[132,12202,391],{"class":149},[132,12204,3791],{"class":156},[132,12206,5640],{"class":149},[132,12208,3987],{"class":325},[132,12210,391],{"class":149},[132,12212,2831],{"class":156},[132,12214,492],{"class":149},[132,12216,3149],{"class":156},[132,12218,2937],{"class":149},[132,12220,12221],{"class":134,"line":227},[132,12222,5657],{"class":149},[132,12224,12225,12227,12229,12231,12233,12235,12237,12239,12241,12243,12245,12247,12250,12252,12254],{"class":134,"line":233},[132,12226,4113],{"class":149},[132,12228,4128],{"class":325},[132,12230,4131],{"class":149},[132,12232,3977],{"class":338},[132,12234,973],{"class":149},[132,12236,976],{"class":145},[132,12238,3984],{"class":149},[132,12240,3987],{"class":325},[132,12242,4144],{"class":149},[132,12244,4147],{"class":325},[132,12246,391],{"class":149},[132,12248,12249],{"class":156},"\"priority\"",[132,12251,8477],{"class":149},[132,12253,1545],{"class":156},[132,12255,4002],{"class":149},[132,12257,12258,12260,12262,12264,12266],{"class":134,"line":239},[132,12259,4113],{"class":149},[132,12261,4342],{"class":325},[132,12263,391],{"class":149},[132,12265,6738],{"class":206},[132,12267,447],{"class":149},[132,12269,12270],{"class":134,"line":245},[132,12271,197],{"emptyLinePlaceholder":196},[132,12273,12274],{"class":134,"line":251},[132,12275,12276],{"class":138},"    // Then normal\n",[132,12278,12279,12281,12283,12285,12288,12290],{"class":134,"line":256},[132,12280,3922],{"class":145},[132,12282,5734],{"class":149},[132,12284,4377],{"class":206},[132,12286,12287],{"class":145}," ===",[132,12289,5742],{"class":206},[132,12291,401],{"class":149},[132,12293,12294,12297,12299,12301],{"class":134,"line":262},[132,12295,12296],{"class":149},"      messages ",[132,12298,413],{"class":145},[132,12300,607],{"class":145},[132,12302,3947],{"class":149},[132,12304,12305,12307,12309,12311,12313],{"class":134,"line":268},[132,12306,3952],{"class":149},[132,12308,2210],{"class":325},[132,12310,391],{"class":149},[132,12312,5431],{"class":156},[132,12314,2937],{"class":149},[132,12316,12317,12319,12321,12323,12325,12327,12329,12331],{"class":134,"line":274},[132,12318,3952],{"class":149},[132,12320,3967],{"class":325},[132,12322,391],{"class":149},[132,12324,3786],{"class":156},[132,12326,3974],{"class":149},[132,12328,3977],{"class":338},[132,12330,973],{"class":149},[132,12332,5626],{"class":145},[132,12334,12335,12338,12340,12342,12344,12346,12348,12350,12352,12354,12356],{"class":134,"line":280},[132,12336,12337],{"class":149},"          q.",[132,12339,3987],{"class":325},[132,12341,391],{"class":149},[132,12343,3791],{"class":156},[132,12345,5640],{"class":149},[132,12347,3987],{"class":325},[132,12349,391],{"class":149},[132,12351,2831],{"class":156},[132,12353,492],{"class":149},[132,12355,3149],{"class":156},[132,12357,2937],{"class":149},[132,12359,12360],{"class":134,"line":286},[132,12361,12362],{"class":149},"        )\n",[132,12364,12365,12367,12369,12371,12373],{"class":134,"line":291},[132,12366,3952],{"class":149},[132,12368,4342],{"class":325},[132,12370,391],{"class":149},[132,12372,6738],{"class":206},[132,12374,447],{"class":149},[132,12376,12377],{"class":134,"line":297},[132,12378,931],{"class":149},[132,12380,12381],{"class":134,"line":303},[132,12382,197],{"emptyLinePlaceholder":196},[132,12384,12385,12387],{"class":134,"line":311},[132,12386,1081],{"class":145},[132,12388,5774],{"class":149},[132,12390,12391],{"class":134,"line":316},[132,12392,4040],{"class":149},[132,12394,12395],{"class":134,"line":332},[132,12396,3820],{"class":149},[109,12398,12400],{"id":12399},"observability","Observability",[15,12402,12403,12404,12407],{},"The event log in Convex provides full ",[19,12405,12406],{},"audit trail"," and enables:",[49,12409,12410,12413,12416],{},[52,12411,12412],{},"Real-time dashboards (Convex subscriptions)",[52,12414,12415],{},"Metrics export to Prometheus/Grafana",[52,12417,12418],{},"Alert rules on stuck tasks or agent failures",[86,12420],{},[89,12422,12424],{"id":12423},"whats-next","What's Next",[15,12426,12427],{},"intelliTeam is just the beginning. We're working on:",[12429,12430,12431,12437,12443,12449],"ol",{},[52,12432,12433,12436],{},[19,12434,12435],{},"Self-healing agents"," — Automatic restart and task reassignment on failures",[52,12438,12439,12442],{},[19,12440,12441],{},"Learning from outcomes"," — Agents that improve based on review feedback",[52,12444,12445,12448],{},[19,12446,12447],{},"Cross-workspace context"," — Agents that understand relationships between projects",[52,12450,12451,12454],{},[19,12452,12453],{},"Voice interface"," — WhatsApp/Telegram voice messages → transcription → Concierge",[15,12456,12457,12458,12461],{},"The future of software development isn't humans OR AI — it's ",[19,12459,12460],{},"humans WITH teams of specialized AI agents",", communicating through the channels we already use every day.",[86,12463],{},[89,12465,12467],{"id":12466},"getting-started","Getting Started",[94,12469,12473],{"className":12470,"code":12471,"language":12472,"meta":103,"style":103},"language-bash shiki shiki-themes github-light github-dark","# Clone the repo\ngit clone https://github.com/intellibrain/intelliteam\ncd intelliteam\n\n# Setup Convex\nnpx convex dev\n\n# Configure environment\ncp .env.example .env\n# Add your ANTHROPIC_API_KEY, TELEGRAM_BOT_TOKEN, etc.\n\n# Start the stack\ndocker compose up -d\n\n# Check status\ndocker compose logs -f\n","bash",[101,12474,12475,12480,12491,12499,12503,12508,12518,12522,12527,12538,12543,12547,12552,12566,12570,12575],{"__ignoreMap":103},[132,12476,12477],{"class":134,"line":135},[132,12478,12479],{"class":138},"# Clone the repo\n",[132,12481,12482,12485,12488],{"class":134,"line":142},[132,12483,12484],{"class":325},"git",[132,12486,12487],{"class":156}," clone",[132,12489,12490],{"class":156}," https://github.com/intellibrain/intelliteam\n",[132,12492,12493,12496],{"class":134,"line":163},[132,12494,12495],{"class":206},"cd",[132,12497,12498],{"class":156}," intelliteam\n",[132,12500,12501],{"class":134,"line":178},[132,12502,197],{"emptyLinePlaceholder":196},[132,12504,12505],{"class":134,"line":193},[132,12506,12507],{"class":138},"# Setup Convex\n",[132,12509,12510,12513,12515],{"class":134,"line":200},[132,12511,12512],{"class":325},"npx",[132,12514,355],{"class":156},[132,12516,12517],{"class":156}," dev\n",[132,12519,12520],{"class":134,"line":216},[132,12521,197],{"emptyLinePlaceholder":196},[132,12523,12524],{"class":134,"line":221},[132,12525,12526],{"class":138},"# Configure environment\n",[132,12528,12529,12532,12535],{"class":134,"line":227},[132,12530,12531],{"class":325},"cp",[132,12533,12534],{"class":156}," .env.example",[132,12536,12537],{"class":156}," .env\n",[132,12539,12540],{"class":134,"line":233},[132,12541,12542],{"class":138},"# Add your ANTHROPIC_API_KEY, TELEGRAM_BOT_TOKEN, etc.\n",[132,12544,12545],{"class":134,"line":239},[132,12546,197],{"emptyLinePlaceholder":196},[132,12548,12549],{"class":134,"line":245},[132,12550,12551],{"class":138},"# Start the stack\n",[132,12553,12554,12557,12560,12563],{"class":134,"line":251},[132,12555,12556],{"class":325},"docker",[132,12558,12559],{"class":156}," compose",[132,12561,12562],{"class":156}," up",[132,12564,12565],{"class":206}," -d\n",[132,12567,12568],{"class":134,"line":256},[132,12569,197],{"emptyLinePlaceholder":196},[132,12571,12572],{"class":134,"line":262},[132,12573,12574],{"class":138},"# Check status\n",[132,12576,12577,12579,12581,12584],{"class":134,"line":268},[132,12578,12556],{"class":325},[132,12580,12559],{"class":156},[132,12582,12583],{"class":156}," logs",[132,12585,12586],{"class":206}," -f\n",[15,12588,12589,12590],{},"Full source code and documentation: ",[24,12591,12594],{"href":12592,"rel":12593},"https://github.com/intellibrain/intelliteam",[28],"github.com/intellibrain/intelliteam",[86,12596],{},[15,12598,12599],{},[12600,12601,12602,12603,12608],"em",{},"intelliTeam is developed by ",[24,12604,12607],{"href":12605,"rel":12606},"https://intellibrain.ch",[28],"intellibrain"," — building the future of human-AI collaboration.",[12610,12611,12612],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}",{"title":103,"searchDepth":142,"depth":142,"links":12614},[12615,12616,12622,12623,12624,12628,12633,12634],{"id":91,"depth":142,"text":92},{"id":106,"depth":142,"text":107,"children":12617},[12618,12619,12620,12621],{"id":111,"depth":163,"text":112},{"id":2624,"depth":163,"text":2625},{"id":5785,"depth":163,"text":5786},{"id":9078,"depth":163,"text":9079},{"id":10319,"depth":142,"text":10320},{"id":11017,"depth":142,"text":11018},{"id":11989,"depth":142,"text":11990,"children":12625},[12626,12627],{"id":11993,"depth":163,"text":11994},{"id":12009,"depth":163,"text":12010},{"id":12021,"depth":142,"text":12022,"children":12629},[12630,12631,12632],{"id":12025,"depth":163,"text":12026},{"id":12099,"depth":163,"text":12100},{"id":12399,"depth":163,"text":12400},{"id":12423,"depth":142,"text":12424},{"id":12466,"depth":142,"text":12467},"2026-02-05","A complete guide to building intelliTeam — a multi-channel AI agent orchestration system featuring a concierge service, mission control, and autonomous worker agents. Built with Claude Agent SDK, TypeScript, and Convex DB.","md",null,{"image":12640},"/blog/intelliteam-architecture.png","/blog/2026-02-05-intelliteam-multi-agent-orchestration",{"title":5,"description":12636},"blog/2026-02-05-intelliteam-multi-agent-orchestration",[12645,12646,12647,12648,12649,128,12650,12556],"ai","agents","multi-agent","orchestration","claude","convex","xdGMUFTM3BuQFLvPEEunqZUG0D_hZkj56a-qqI8nuJQ",1784088102147]