0xkobold 0.6.4 → 0.6.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/README.md +9 -3
  2. package/dist/package.json +4 -2
  3. package/dist/src/cli/index.js +0 -0
  4. package/dist/src/extensions/core/workspace-footer-extension.js +2 -11
  5. package/dist/src/extensions/core/workspace-footer-extension.js.map +1 -1
  6. package/dist/src/index.js +31 -5
  7. package/dist/src/index.js.map +1 -1
  8. package/package.json +4 -2
  9. package/dist/src/agents/task-router.js +0 -194
  10. package/dist/src/agents/task-router.js.map +0 -1
  11. package/dist/src/agents/tools/index.js +0 -2
  12. package/dist/src/agents/tools/index.js.map +0 -1
  13. package/dist/src/agents/tools/spawn-agent.js +0 -200
  14. package/dist/src/agents/tools/spawn-agent.js.map +0 -1
  15. package/dist/src/agents/types/definitions.js +0 -317
  16. package/dist/src/agents/types/definitions.js.map +0 -1
  17. package/dist/src/agents/types/index.js +0 -2
  18. package/dist/src/agents/types/index.js.map +0 -1
  19. package/dist/src/cli/program-fixed.js +0 -1
  20. package/dist/src/cli/program-fixed.js.map +0 -1
  21. package/dist/src/extensions/core/agent-lifecycle-extension.js +0 -323
  22. package/dist/src/extensions/core/agent-lifecycle-extension.js.map +0 -1
  23. package/dist/src/extensions/core/agent-registry-extension.js +0 -541
  24. package/dist/src/extensions/core/agent-registry-extension.js.map +0 -1
  25. package/dist/src/extensions/core/agent-worker.js +0 -148
  26. package/dist/src/extensions/core/agent-worker.js.map +0 -1
  27. package/dist/src/extensions/core/agent-workspace-extension.js +0 -174
  28. package/dist/src/extensions/core/agent-workspace-extension.js.map +0 -1
  29. package/dist/src/extensions/core/auto-compact-on-error-extension.js +0 -244
  30. package/dist/src/extensions/core/auto-compact-on-error-extension.js.map +0 -1
  31. package/dist/src/extensions/core/autonomous-executor-extension.js +0 -145
  32. package/dist/src/extensions/core/autonomous-executor-extension.js.map +0 -1
  33. package/dist/src/extensions/core/autonomous-subagent-extension.js +0 -333
  34. package/dist/src/extensions/core/autonomous-subagent-extension.js.map +0 -1
  35. package/dist/src/extensions/core/compaction-safeguard-v2.js +0 -95
  36. package/dist/src/extensions/core/compaction-safeguard-v2.js.map +0 -1
  37. package/dist/src/extensions/core/confirm-destructive.js +0 -43
  38. package/dist/src/extensions/core/confirm-destructive.js.map +0 -1
  39. package/dist/src/extensions/core/context-aware-extension.js +0 -124
  40. package/dist/src/extensions/core/context-aware-extension.js.map +0 -1
  41. package/dist/src/extensions/core/deprecated/agent-lifecycle-extension.js +0 -323
  42. package/dist/src/extensions/core/deprecated/agent-lifecycle-extension.js.map +0 -1
  43. package/dist/src/extensions/core/deprecated/autonomous-subagent-extension.js +0 -333
  44. package/dist/src/extensions/core/deprecated/autonomous-subagent-extension.js.map +0 -1
  45. package/dist/src/extensions/core/deprecated/subagent-extension.js +0 -647
  46. package/dist/src/extensions/core/deprecated/subagent-extension.js.map +0 -1
  47. package/dist/src/extensions/core/dirty-repo-guard.js +0 -42
  48. package/dist/src/extensions/core/dirty-repo-guard.js.map +0 -1
  49. package/dist/src/extensions/core/env-loader-extension.js +0 -157
  50. package/dist/src/extensions/core/env-loader-extension.js.map +0 -1
  51. package/dist/src/extensions/core/git-checkpoint.js +0 -46
  52. package/dist/src/extensions/core/git-checkpoint.js.map +0 -1
  53. package/dist/src/extensions/core/handoff-extension.js +0 -206
  54. package/dist/src/extensions/core/handoff-extension.js.map +0 -1
  55. package/dist/src/extensions/core/memory-extension.js +0 -120
  56. package/dist/src/extensions/core/memory-extension.js.map +0 -1
  57. package/dist/src/extensions/core/memory-synthesis-extension.js +0 -137
  58. package/dist/src/extensions/core/memory-synthesis-extension.js.map +0 -1
  59. package/dist/src/extensions/core/mode-manager-extension.js +0 -592
  60. package/dist/src/extensions/core/mode-manager-extension.js.map +0 -1
  61. package/dist/src/extensions/core/ollama-cloud-extension.js +0 -132
  62. package/dist/src/extensions/core/ollama-cloud-extension.js.map +0 -1
  63. package/dist/src/extensions/core/ollama-provider-extension.js +0 -66
  64. package/dist/src/extensions/core/ollama-provider-extension.js.map +0 -1
  65. package/dist/src/extensions/core/ollama-router-extension.js +0 -41
  66. package/dist/src/extensions/core/ollama-router-extension.js.map +0 -1
  67. package/dist/src/extensions/core/protected-paths.js +0 -24
  68. package/dist/src/extensions/core/protected-paths.js.map +0 -1
  69. package/dist/src/extensions/core/questionnaire-extension.js +0 -242
  70. package/dist/src/extensions/core/questionnaire-extension.js.map +0 -1
  71. package/dist/src/extensions/core/session-bridge-extension.js +0 -14
  72. package/dist/src/extensions/core/session-bridge-extension.js.map +0 -1
  73. package/dist/src/extensions/core/session-manager-extension.js +0 -336
  74. package/dist/src/extensions/core/session-manager-extension.js.map +0 -1
  75. package/dist/src/extensions/core/session-name-extension.js +0 -88
  76. package/dist/src/extensions/core/session-name-extension.js.map +0 -1
  77. package/dist/src/extensions/core/session-pruning-extension.js +0 -480
  78. package/dist/src/extensions/core/session-pruning-extension.js.map +0 -1
  79. package/dist/src/extensions/core/subagent-extension.js +0 -647
  80. package/dist/src/extensions/core/subagent-extension.js.map +0 -1
  81. package/dist/src/extensions/core/tui-integration-extension-fixed.js +0 -3
  82. package/dist/src/extensions/core/tui-integration-extension-fixed.js.map +0 -1
  83. package/dist/src/extensions/core/websearch-extension.js +0 -489
  84. package/dist/src/extensions/core/websearch-extension.js.map +0 -1
  85. package/dist/src/extensions/core/websearch-v2-extension.js +0 -303
  86. package/dist/src/extensions/core/websearch-v2-extension.js.map +0 -1
  87. package/dist/src/tui/commands/final-functions.js +0 -39
  88. package/dist/src/tui/commands/final-functions.js.map +0 -1
  89. package/dist/src/tui/commands/orchestration-final-section.js +0 -84
  90. package/dist/src/tui/commands/orchestration-final-section.js.map +0 -1
  91. package/dist/src/tui/components/footer.js +0 -106
  92. package/dist/src/tui/components/footer.js.map +0 -1
  93. package/dist/src/tui/components/sidebar.js +0 -82
  94. package/dist/src/tui/components/sidebar.js.map +0 -1
  95. package/dist/src/tui/gateway-chat-client.js +0 -218
  96. package/dist/src/tui/gateway-chat-client.js.map +0 -1
  97. package/dist/src/tui/pi-tui-integration.js +0 -260
  98. package/dist/src/tui/pi-tui-integration.js.map +0 -1
@@ -1,317 +0,0 @@
1
- /**
2
- * Agent Type Definitions - v0.2.0
3
- *
4
- * Defines the five agent types for the sub-agent system:
5
- * - Coordinator: Plans and delegates
6
- * - Specialist: Deep domain expertise
7
- * - Researcher: Information gathering
8
- * - Worker: Implementation
9
- * - Reviewer: Code review and validation
10
- */
11
- export const AGENT_TYPES = {
12
- coordinator: {
13
- id: "coordinator",
14
- name: "Coordinator",
15
- emoji: "🎯",
16
- description: "Plans and delegates complex tasks to other agents",
17
- purpose: `You are a Coordinator agent. Your job is to break down complex tasks
18
- into manageable pieces and delegate them to appropriate specialist agents.
19
-
20
- You should:
21
- 1. Analyze the task and identify what needs to be done
22
- 2. Break it down into subtasks with clear dependencies
23
- 3. Delegate each subtask to the right agent type
24
- 4. Monitor progress and integrate results
25
- 5. Handle failures by replanning
26
-
27
- You rarely write code yourself - you coordinate others who do.`,
28
- systemPrompt: `You are a Coordinator agent (🎯).
29
-
30
- Your role is to plan and delegate. When given a task:
31
- 1. Analyze requirements thoroughly
32
- 2. Identify subtasks and dependencies
33
- 3. Delegate to appropriate agents:
34
- - Researcher for information gathering
35
- - Specialist for domain-specific work
36
- - Worker for implementation
37
- - Reviewer for validation
38
- 4. Track progress and integrate results
39
- 5. Report back with final outcome
40
-
41
- Guidelines:
42
- - Think before acting: create a plan first
43
- - Delegate work, don't do it yourself
44
- - Monitor and coordinate multiple agents
45
- - Handle failures gracefully
46
- - Keep the user informed of progress`,
47
- capabilities: [
48
- "task-decomposition",
49
- "agent-delegation",
50
- "progress-tracking",
51
- "result-integration",
52
- "failure-recovery"
53
- ],
54
- tools: [
55
- "agent_orchestrate",
56
- "task_breakdown",
57
- "perennial_search",
58
- "read",
59
- "bash"
60
- ],
61
- maxIterations: 20,
62
- thinkLevel: "deep",
63
- modelPreference: "smart"
64
- },
65
- specialist: {
66
- id: "specialist",
67
- name: "Specialist",
68
- emoji: "🧠",
69
- description: "Deep domain expertise on specific technologies",
70
- purpose: `You are a Specialist agent with deep expertise in specific domains.
71
- You know one or more technologies extremely well and provide expert-level work.
72
-
73
- Domains you might specialize in:
74
- - Database optimization (SQL, PostgreSQL, MongoDB)
75
- - Frontend frameworks (React, Vue, Svelte)
76
- - API design (REST, GraphQL, gRPC)
77
- - DevOps (Docker, Kubernetes, CI/CD)
78
- - Security (auth, crypto, best practices)
79
- - Performance optimization
80
-
81
- You should:
82
- - Apply deep domain knowledge
83
- - Follow best practices in your specialty
84
- - Provide expert recommendations
85
- - Solve complex domain-specific problems`,
86
- systemPrompt: `You are a Specialist agent (🧠) with deep domain expertise.
87
-
88
- You are an expert in a specific domain. When assigned a task:
89
- 1. Apply your deep knowledge immediately
90
- 2. Follow domain best practices
91
- 3. Consider edge cases and gotchas
92
- 4. Provide expert-level recommendations
93
- 5. Deliver production-quality work
94
-
95
- Your expertise makes you the go-to agent for difficult problems
96
- in your domain. You're thorough, precise, and deliver excellent results.
97
-
98
- You work independently but ask for clarification if requirements
99
- are ambiguous or incomplete.`,
100
- capabilities: [
101
- "deep-domain-knowledge",
102
- "best-practices",
103
- "complex-problem-solving",
104
- "optimization",
105
- "expert-recommendations"
106
- ],
107
- tools: [
108
- "read",
109
- "edit",
110
- "write",
111
- "bash",
112
- "web_search",
113
- "perennial_search"
114
- ],
115
- maxIterations: 15,
116
- thinkLevel: "deep",
117
- modelPreference: "smart"
118
- },
119
- researcher: {
120
- id: "researcher",
121
- name: "Researcher",
122
- emoji: "🔍",
123
- description: "Gathers information and synthesizes findings",
124
- purpose: `You are a Researcher agent. Your job is to gather information,
125
- analyze data, and provide comprehensive findings.
126
-
127
- You should:
128
- - Search for relevant information thoroughly
129
- - Read documentation and source materials
130
- - Synthesize findings into clear summaries
131
- - Provide citations and sources
132
- - Identify gaps in available information
133
-
134
- You are curious, thorough, and excellent at finding answers.`,
135
- systemPrompt: `You are a Researcher agent (🔍).
136
-
137
- Your mission: Find information and synthesize findings.
138
-
139
- When given a research task:
140
- 1. Identify what information is needed
141
- 2. Search web, documentation, codebase
142
- 3. Read and analyze source materials
143
- 4. Synthesize findings into clear summaries
144
- 5. Provide sources and citations
145
- 6. Note any information gaps
146
-
147
- Guidelines:
148
- - Be thorough - check multiple sources
149
- - Synthesize, don't just copy
150
- - Provide specific details with citations
151
- - Structure findings clearly
152
- - Note confidence levels when uncertain
153
- - Flag when information is incomplete`,
154
- capabilities: [
155
- "information-gathering",
156
- "web-research",
157
- "documentation-analysis",
158
- "synthesis",
159
- "citation-tracking"
160
- ],
161
- tools: [
162
- "web_search",
163
- "web_fetch",
164
- "web_research",
165
- "read",
166
- "perennial_search",
167
- "bash"
168
- ],
169
- maxIterations: 12,
170
- thinkLevel: "normal",
171
- modelPreference: "fast"
172
- },
173
- worker: {
174
- id: "worker",
175
- name: "Worker",
176
- emoji: "⚒️",
177
- description: "Implements code and executes tasks efficiently",
178
- purpose: `You are a Worker agent. Your job is to implement code,
179
- write tests, and execute tasks efficiently.
180
-
181
- You should:
182
- - Write clean, working code
183
- - Follow existing patterns in the codebase
184
- - Test your changes
185
- - Handle errors gracefully
186
- - Deliver complete, working solutions
187
-
188
- You are efficient, practical, and focused on delivering results.`,
189
- systemPrompt: `You are a Worker agent (⚒️).
190
-
191
- Your mission: Implement, execute, deliver.
192
-
193
- When assigned a task:
194
- 1. Understand the requirements clearly
195
- 2. Check existing patterns in the codebase
196
- 3. Implement the solution efficiently
197
- 4. Test your changes
198
- 5. Handle errors gracefully
199
- 6. Deliver working code
200
-
201
- Guidelines:
202
- - Follow existing code patterns
203
- - Write clean, readable code
204
- - Test before claiming done
205
- - Handle edge cases
206
- - Comment complex logic
207
- - Don't over-engineer
208
- - Deliver complete solutions, not partial work`,
209
- capabilities: [
210
- "implementation",
211
- "code-generation",
212
- "testing",
213
- "debugging",
214
- "pattern-matching"
215
- ],
216
- tools: [
217
- "read",
218
- "edit",
219
- "write",
220
- "bash",
221
- "perennial_save",
222
- "memory_save"
223
- ],
224
- maxIterations: 15,
225
- thinkLevel: "normal",
226
- modelPreference: "fast"
227
- },
228
- reviewer: {
229
- id: "reviewer",
230
- name: "Reviewer",
231
- emoji: "👁️",
232
- description: "Reviews code, validates solutions, checks quality",
233
- purpose: `You are a Reviewer agent. Your job is to validate work,
234
- review code, and ensure quality standards are met.
235
-
236
- You should:
237
- - Review code for correctness and style
238
- - Check for bugs and edge cases
239
- - Validate against requirements
240
- - Provide constructive feedback
241
- - Suggest improvements
242
-
243
- You are thorough, critical, and fair. You catch issues others miss.`,
244
- systemPrompt: `You are a Reviewer agent (👁️).
245
-
246
- Your mission: Validate, review, ensure quality.
247
-
248
- When reviewing work:
249
- 1. Check against requirements
250
- 2. Review code for correctness
251
- 3. Identify bugs and edge cases
252
- 4. Check for security issues
253
- 5. Validate test coverage
254
- 6. Assess code quality
255
- 7. Provide constructive feedback
256
-
257
- Guidelines:
258
- - Be thorough, not superficial
259
- - Explain why something is wrong
260
- - Suggest specific improvements
261
- - Check edge cases
262
- - Validate test coverage
263
- - Consider security implications
264
- - Be constructive, not harsh
265
- - Focus on important issues`,
266
- capabilities: [
267
- "code-review",
268
- "validation",
269
- "quality-assurance",
270
- "security-review",
271
- "test-coverage-analysis"
272
- ],
273
- tools: [
274
- "read",
275
- "bash",
276
- "perennial_search",
277
- "web_search"
278
- ],
279
- maxIterations: 10,
280
- thinkLevel: "deep",
281
- modelPreference: "smart"
282
- }
283
- };
284
- /**
285
- * Get agent type by ID
286
- */
287
- export function getAgentType(id) {
288
- return AGENT_TYPES[id.toLowerCase()];
289
- }
290
- /**
291
- * Get all agent types
292
- */
293
- export function getAllAgentTypes() {
294
- return Object.values(AGENT_TYPES);
295
- }
296
- /**
297
- * Get agent types that can handle a task
298
- */
299
- export function getAgentTypesForTask(taskType) {
300
- const taskLower = taskType.toLowerCase();
301
- if (taskLower.includes("research") || taskLower.includes("find") || taskLower.includes("search")) {
302
- return [AGENT_TYPES.researcher];
303
- }
304
- if (taskLower.includes("review") || taskLower.includes("check") || taskLower.includes("validate")) {
305
- return [AGENT_TYPES.reviewer];
306
- }
307
- if (taskLower.includes("implement") || taskLower.includes("code") || taskLower.includes("write")) {
308
- return [AGENT_TYPES.worker, AGENT_TYPES.specialist];
309
- }
310
- if (taskLower.includes("plan") || taskLower.includes("coordinate") || taskLower.includes("organize")) {
311
- return [AGENT_TYPES.coordinator];
312
- }
313
- // Default: Worker can handle most tasks
314
- return [AGENT_TYPES.worker];
315
- }
316
- export default AGENT_TYPES;
317
- //# sourceMappingURL=definitions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../../../src/agents/types/definitions.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export { AGENT_TYPES, getAgentType, getAllAgentTypes, getAgentTypesForTask } from "./definitions.js";
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/agents/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1 +0,0 @@
1
- //# sourceMappingURL=program-fixed.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"program-fixed.js","sourceRoot":"","sources":["../../../src/cli/program-fixed.ts"],"names":[],"mappings":""}
@@ -1,323 +0,0 @@
1
- /**
2
- * Agent Lifecycle Extension - v0.2.0
3
- *
4
- * Manages main agent process lifecycle:
5
- * - Start/stop/restart agents
6
- * - Process management and monitoring
7
- * - State persistence
8
- *
9
- * Each main agent runs as a separate pi-coding-agent process
10
- * with its own workspace and configuration.
11
- *
12
- * @version 0.2.0
13
- */
14
- import { Type } from "@sinclair/typebox";
15
- import { spawn } from "node:child_process";
16
- import * as fs from "node:fs/promises";
17
- import * as path from "node:path";
18
- import { homedir } from "node:os";
19
- const runningAgents = new Map();
20
- const AGENTS_DIR = path.join(homedir(), ".0xkobold", "agents");
21
- const STATE_FILE = path.join(homedir(), ".0xkobold", "agent-state.json");
22
- // Load persisted state
23
- async function loadState() {
24
- try {
25
- const content = await fs.readFile(STATE_FILE, "utf-8");
26
- return JSON.parse(content);
27
- }
28
- catch {
29
- return {};
30
- }
31
- }
32
- // Save state
33
- async function saveState() {
34
- const state = {};
35
- for (const [name, agent] of runningAgents) {
36
- state[name] = {
37
- pid: agent.pid,
38
- startedAt: agent.startedAt.toISOString(),
39
- status: agent.status,
40
- };
41
- }
42
- await fs.writeFile(STATE_FILE, JSON.stringify(state, null, 2));
43
- }
44
- // Start a main agent
45
- async function startAgent(name, ctx) {
46
- if (runningAgents.has(name)) {
47
- return { success: false, error: "Agent already running" };
48
- }
49
- const agentDir = path.join(AGENTS_DIR, name);
50
- const workspaceDir = path.join(agentDir, "workspace");
51
- const logsDir = path.join(agentDir, "logs");
52
- // Ensure logs directory exists
53
- await fs.mkdir(logsDir, { recursive: true });
54
- // Generate unique port for this agent's gateway
55
- const port = 18790 + runningAgents.size + 1;
56
- // Build environment
57
- const env = {
58
- ...process.env,
59
- KOBOLD_AGENT_NAME: name,
60
- KOBOLD_AGENT_MODE: "main",
61
- KOBOLD_WORKSPACE: workspaceDir,
62
- PI_CODING_AGENT_DIR: agentDir,
63
- // Gateway config
64
- GATEWAY_PORT: port.toString(),
65
- GATEWAY_HOST: "127.0.0.1",
66
- };
67
- // Spawn the agent process
68
- const logFile = path.join(logsDir, "agent.log");
69
- return new Promise((resolve) => {
70
- const child = spawn("bun", ["run", "src/cli/index.ts", "--local"], {
71
- cwd: process.cwd(),
72
- env,
73
- stdio: ["ignore", "pipe", "pipe"],
74
- detached: true, // Allows process to run independently
75
- });
76
- if (!child.pid) {
77
- resolve({ success: false, error: "Failed to spawn process" });
78
- return;
79
- }
80
- const agentProcess = {
81
- name,
82
- process: child,
83
- pid: child.pid,
84
- startedAt: new Date(),
85
- status: "starting",
86
- port,
87
- };
88
- runningAgents.set(name, agentProcess);
89
- // Handle stdout
90
- let buffer = "";
91
- child.stdout?.on("data", (data) => {
92
- const text = data.toString();
93
- buffer += text;
94
- // Check for ready signal
95
- if (text.includes("🐉 0xKobold starting") || text.includes("Extension loaded")) {
96
- agentProcess.status = "running";
97
- saveState();
98
- }
99
- // Log to file
100
- fs.appendFile(logFile, `[${new Date().toISOString()}] ${text}`).catch(() => { });
101
- });
102
- // Handle stderr
103
- child.stderr?.on("data", (data) => {
104
- const text = data.toString();
105
- fs.appendFile(logFile, `[${new Date().toISOString()}] ERROR: ${text}`).catch(() => { });
106
- });
107
- // Handle process exit
108
- child.on("exit", (code) => {
109
- runningAgents.delete(name);
110
- saveState();
111
- if (code !== 0 && code !== null) {
112
- console.log(`[AgentLifecycle] Agent ${name} exited with code ${code}`);
113
- }
114
- });
115
- // Wait for startup or timeout
116
- const checkInterval = setInterval(() => {
117
- if (agentProcess.status === "running") {
118
- clearInterval(checkInterval);
119
- clearTimeout(timeout);
120
- resolve({ success: true, pid: child.pid });
121
- }
122
- }, 100);
123
- const timeout = setTimeout(() => {
124
- clearInterval(checkInterval);
125
- if (agentProcess.status === "starting") {
126
- agentProcess.status = "error";
127
- agentProcess.lastError = "Startup timeout";
128
- resolve({ success: false, error: "Agent startup timeout (30s)" });
129
- }
130
- }, 30000);
131
- });
132
- }
133
- // Stop a main agent
134
- async function stopAgent(name) {
135
- const agent = runningAgents.get(name);
136
- if (!agent) {
137
- return { success: false, error: "Agent not running" };
138
- }
139
- // Graceful shutdown
140
- agent.process.kill("SIGTERM");
141
- // Wait for exit or force kill
142
- return new Promise((resolve) => {
143
- const timeout = setTimeout(() => {
144
- // Force kill if still running
145
- agent.process.kill("SIGKILL");
146
- runningAgents.delete(name);
147
- saveState();
148
- resolve({ success: true });
149
- }, 5000);
150
- agent.process.on("exit", () => {
151
- clearTimeout(timeout);
152
- runningAgents.delete(name);
153
- saveState();
154
- resolve({ success: true });
155
- });
156
- });
157
- }
158
- export default async function agentLifecycleExtension(pi) {
159
- console.log("[AgentLifecycle] Extension loaded");
160
- // Load persisted state
161
- const state = await loadState();
162
- console.log(`[AgentLifecycle] Loaded state for ${Object.keys(state).length} agents`);
163
- // TOOL: agent_start
164
- pi.registerTool({
165
- name: "agent_start",
166
- label: "Start Main Agent",
167
- description: "Start a main agent as a background process",
168
- parameters: Type.Object({
169
- name: Type.String({ description: "Agent name" }),
170
- }),
171
- async execute(_toolCallId, params, _signal, _onUpdate, ctx) {
172
- const name = params.name;
173
- ctx.ui.notify(`🚀 Starting agent: ${name}...`, "info");
174
- const result = await startAgent(name, ctx);
175
- if (result.success) {
176
- ctx.ui.notify(`✅ Agent ${name} started (PID: ${result.pid})`, "info");
177
- return {
178
- content: [{
179
- type: "text",
180
- text: `✅ Agent '${name}' started\nPID: ${result.pid}\nPort: ${runningAgents.get(name)?.port}`,
181
- }],
182
- details: { name, pid: result.pid, status: "running" },
183
- };
184
- }
185
- else {
186
- ctx.ui.notify(`❌ Failed to start ${name}: ${result.error}`, "error");
187
- return {
188
- content: [{ type: "text", text: `❌ Failed: ${result.error}` }],
189
- details: { error: result.error },
190
- };
191
- }
192
- },
193
- });
194
- // TOOL: agent_stop
195
- pi.registerTool({
196
- name: "agent_stop",
197
- label: "Stop Main Agent",
198
- description: "Stop a running main agent",
199
- parameters: Type.Object({
200
- name: Type.String({ description: "Agent name" }),
201
- }),
202
- async execute(_toolCallId, params, _signal, _onUpdate, ctx) {
203
- const name = params.name;
204
- ctx.ui.notify(`🛑 Stopping agent: ${name}...`, "info");
205
- const result = await stopAgent(name);
206
- if (result.success) {
207
- ctx.ui.notify(`✅ Agent ${name} stopped`, "info");
208
- return {
209
- content: [{ type: "text", text: `✅ Agent '${name}' stopped` }],
210
- details: { name, status: "stopped" },
211
- };
212
- }
213
- else {
214
- return {
215
- content: [{ type: "text", text: `❌ Failed: ${result.error}` }],
216
- details: { error: result.error },
217
- };
218
- }
219
- },
220
- });
221
- // TOOL: agent_status
222
- pi.registerTool({
223
- name: "agent_status",
224
- label: "Get Agent Status",
225
- description: "Get status of a main agent",
226
- parameters: Type.Object({
227
- name: Type.Optional(Type.String({ description: "Agent name (omit for all)" })),
228
- }),
229
- async execute(_toolCallId, params, _signal, _onUpdate, ctx) {
230
- if (params.name) {
231
- const agent = runningAgents.get(params.name);
232
- if (!agent) {
233
- return {
234
- content: [{ type: "text", text: `Agent '${params.name}' is not running` }],
235
- details: { name: params.name, status: "stopped", agents: undefined },
236
- };
237
- }
238
- return {
239
- content: [{
240
- type: "text",
241
- text: `Agent: ${agent.name}\nStatus: ${agent.status}\nPID: ${agent.pid}\nStarted: ${agent.startedAt.toISOString()}`,
242
- }],
243
- details: {
244
- name: agent.name,
245
- status: agent.status,
246
- pid: agent.pid,
247
- startedAt: agent.startedAt.toISOString(),
248
- agents: undefined
249
- },
250
- };
251
- }
252
- // All agents
253
- const list = Array.from(runningAgents.entries()).map(([name, info]) => ({
254
- name,
255
- status: info.status,
256
- pid: info.pid,
257
- uptime: Date.now() - info.startedAt.getTime(),
258
- }));
259
- return {
260
- content: [{
261
- type: "text",
262
- text: `${list.length} agents running:\n\n${list.map(a => `- ${a.name}: ${a.status} (PID: ${a.pid})`).join('\n')}`,
263
- }],
264
- details: { name: undefined, status: undefined, agents: list },
265
- };
266
- },
267
- });
268
- // COMMAND: /agent-start
269
- pi.registerCommand("agent-start", {
270
- description: "Start a main agent: /agent-start <name>",
271
- handler: async (args, ctx) => {
272
- const name = args.trim();
273
- if (!name) {
274
- ctx.ui.notify("❌ Usage: /agent-start <name>", "error");
275
- return;
276
- }
277
- await startAgent(name, ctx);
278
- },
279
- });
280
- // COMMAND: /agent-stop
281
- pi.registerCommand("agent-stop", {
282
- description: "Stop a main agent: /agent-stop <name>",
283
- handler: async (args, ctx) => {
284
- const name = args.trim();
285
- if (!name) {
286
- ctx.ui.notify("❌ Usage: /agent-stop <name>", "error");
287
- return;
288
- }
289
- await stopAgent(name);
290
- },
291
- });
292
- // COMMAND: /agent-status
293
- pi.registerCommand("agent-status", {
294
- description: "Check agent status: /agent-status [name]",
295
- handler: async (args, ctx) => {
296
- const name = args.trim();
297
- if (name) {
298
- const agent = runningAgents.get(name);
299
- if (agent) {
300
- const uptime = Math.floor((Date.now() - agent.startedAt.getTime()) / 1000);
301
- ctx.ui.notify(`${name}: ${agent.status} (PID: ${agent.pid}, uptime: ${uptime}s)`, agent.status === "running" ? "info" : "warning");
302
- }
303
- else {
304
- ctx.ui.notify(`${name}: not running`, "info");
305
- }
306
- }
307
- else {
308
- const count = runningAgents.size;
309
- ctx.ui.notify(`${count} agents running`, "info");
310
- }
311
- },
312
- });
313
- // Cleanup on shutdown
314
- process.on("SIGTERM", async () => {
315
- console.log("[AgentLifecycle] Shutting down agents...");
316
- for (const [name, agent] of runningAgents) {
317
- agent.process.kill("SIGTERM");
318
- }
319
- await saveState();
320
- });
321
- console.log("[AgentLifecycle] Ready");
322
- }
323
- //# sourceMappingURL=agent-lifecycle-extension.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-lifecycle-extension.js","sourceRoot":"","sources":["../../../../src/extensions/core/agent-lifecycle-extension.ts"],"names":[],"mappings":"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"}