0xkobold 0.6.4 → 0.6.5

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 (93) hide show
  1. package/dist/package.json +4 -2
  2. package/dist/src/cli/index.js +0 -0
  3. package/package.json +4 -2
  4. package/dist/src/agents/task-router.js +0 -194
  5. package/dist/src/agents/task-router.js.map +0 -1
  6. package/dist/src/agents/tools/index.js +0 -2
  7. package/dist/src/agents/tools/index.js.map +0 -1
  8. package/dist/src/agents/tools/spawn-agent.js +0 -200
  9. package/dist/src/agents/tools/spawn-agent.js.map +0 -1
  10. package/dist/src/agents/types/definitions.js +0 -317
  11. package/dist/src/agents/types/definitions.js.map +0 -1
  12. package/dist/src/agents/types/index.js +0 -2
  13. package/dist/src/agents/types/index.js.map +0 -1
  14. package/dist/src/cli/program-fixed.js +0 -1
  15. package/dist/src/cli/program-fixed.js.map +0 -1
  16. package/dist/src/extensions/core/agent-lifecycle-extension.js +0 -323
  17. package/dist/src/extensions/core/agent-lifecycle-extension.js.map +0 -1
  18. package/dist/src/extensions/core/agent-registry-extension.js +0 -541
  19. package/dist/src/extensions/core/agent-registry-extension.js.map +0 -1
  20. package/dist/src/extensions/core/agent-worker.js +0 -148
  21. package/dist/src/extensions/core/agent-worker.js.map +0 -1
  22. package/dist/src/extensions/core/agent-workspace-extension.js +0 -174
  23. package/dist/src/extensions/core/agent-workspace-extension.js.map +0 -1
  24. package/dist/src/extensions/core/auto-compact-on-error-extension.js +0 -244
  25. package/dist/src/extensions/core/auto-compact-on-error-extension.js.map +0 -1
  26. package/dist/src/extensions/core/autonomous-executor-extension.js +0 -145
  27. package/dist/src/extensions/core/autonomous-executor-extension.js.map +0 -1
  28. package/dist/src/extensions/core/autonomous-subagent-extension.js +0 -333
  29. package/dist/src/extensions/core/autonomous-subagent-extension.js.map +0 -1
  30. package/dist/src/extensions/core/compaction-safeguard-v2.js +0 -95
  31. package/dist/src/extensions/core/compaction-safeguard-v2.js.map +0 -1
  32. package/dist/src/extensions/core/confirm-destructive.js +0 -43
  33. package/dist/src/extensions/core/confirm-destructive.js.map +0 -1
  34. package/dist/src/extensions/core/context-aware-extension.js +0 -124
  35. package/dist/src/extensions/core/context-aware-extension.js.map +0 -1
  36. package/dist/src/extensions/core/deprecated/agent-lifecycle-extension.js +0 -323
  37. package/dist/src/extensions/core/deprecated/agent-lifecycle-extension.js.map +0 -1
  38. package/dist/src/extensions/core/deprecated/autonomous-subagent-extension.js +0 -333
  39. package/dist/src/extensions/core/deprecated/autonomous-subagent-extension.js.map +0 -1
  40. package/dist/src/extensions/core/deprecated/subagent-extension.js +0 -647
  41. package/dist/src/extensions/core/deprecated/subagent-extension.js.map +0 -1
  42. package/dist/src/extensions/core/dirty-repo-guard.js +0 -42
  43. package/dist/src/extensions/core/dirty-repo-guard.js.map +0 -1
  44. package/dist/src/extensions/core/env-loader-extension.js +0 -157
  45. package/dist/src/extensions/core/env-loader-extension.js.map +0 -1
  46. package/dist/src/extensions/core/git-checkpoint.js +0 -46
  47. package/dist/src/extensions/core/git-checkpoint.js.map +0 -1
  48. package/dist/src/extensions/core/handoff-extension.js +0 -206
  49. package/dist/src/extensions/core/handoff-extension.js.map +0 -1
  50. package/dist/src/extensions/core/memory-extension.js +0 -120
  51. package/dist/src/extensions/core/memory-extension.js.map +0 -1
  52. package/dist/src/extensions/core/memory-synthesis-extension.js +0 -137
  53. package/dist/src/extensions/core/memory-synthesis-extension.js.map +0 -1
  54. package/dist/src/extensions/core/mode-manager-extension.js +0 -592
  55. package/dist/src/extensions/core/mode-manager-extension.js.map +0 -1
  56. package/dist/src/extensions/core/ollama-cloud-extension.js +0 -132
  57. package/dist/src/extensions/core/ollama-cloud-extension.js.map +0 -1
  58. package/dist/src/extensions/core/ollama-provider-extension.js +0 -66
  59. package/dist/src/extensions/core/ollama-provider-extension.js.map +0 -1
  60. package/dist/src/extensions/core/ollama-router-extension.js +0 -41
  61. package/dist/src/extensions/core/ollama-router-extension.js.map +0 -1
  62. package/dist/src/extensions/core/protected-paths.js +0 -24
  63. package/dist/src/extensions/core/protected-paths.js.map +0 -1
  64. package/dist/src/extensions/core/questionnaire-extension.js +0 -242
  65. package/dist/src/extensions/core/questionnaire-extension.js.map +0 -1
  66. package/dist/src/extensions/core/session-bridge-extension.js +0 -14
  67. package/dist/src/extensions/core/session-bridge-extension.js.map +0 -1
  68. package/dist/src/extensions/core/session-manager-extension.js +0 -336
  69. package/dist/src/extensions/core/session-manager-extension.js.map +0 -1
  70. package/dist/src/extensions/core/session-name-extension.js +0 -88
  71. package/dist/src/extensions/core/session-name-extension.js.map +0 -1
  72. package/dist/src/extensions/core/session-pruning-extension.js +0 -480
  73. package/dist/src/extensions/core/session-pruning-extension.js.map +0 -1
  74. package/dist/src/extensions/core/subagent-extension.js +0 -647
  75. package/dist/src/extensions/core/subagent-extension.js.map +0 -1
  76. package/dist/src/extensions/core/tui-integration-extension-fixed.js +0 -3
  77. package/dist/src/extensions/core/tui-integration-extension-fixed.js.map +0 -1
  78. package/dist/src/extensions/core/websearch-extension.js +0 -489
  79. package/dist/src/extensions/core/websearch-extension.js.map +0 -1
  80. package/dist/src/extensions/core/websearch-v2-extension.js +0 -303
  81. package/dist/src/extensions/core/websearch-v2-extension.js.map +0 -1
  82. package/dist/src/tui/commands/final-functions.js +0 -39
  83. package/dist/src/tui/commands/final-functions.js.map +0 -1
  84. package/dist/src/tui/commands/orchestration-final-section.js +0 -84
  85. package/dist/src/tui/commands/orchestration-final-section.js.map +0 -1
  86. package/dist/src/tui/components/footer.js +0 -106
  87. package/dist/src/tui/components/footer.js.map +0 -1
  88. package/dist/src/tui/components/sidebar.js +0 -82
  89. package/dist/src/tui/components/sidebar.js.map +0 -1
  90. package/dist/src/tui/gateway-chat-client.js +0 -218
  91. package/dist/src/tui/gateway-chat-client.js.map +0 -1
  92. package/dist/src/tui/pi-tui-integration.js +0 -260
  93. package/dist/src/tui/pi-tui-integration.js.map +0 -1
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "0xkobold",
3
- "version": "0.6.4",
3
+ "version": "0.6.5",
4
4
  "description": "Your digital familiar - Koclaw-style gateway, session management, and multi-agent orchestration",
5
5
  "main": "dist/src/index.js",
6
6
  "types": "dist/src/index.d.ts",
@@ -16,7 +16,9 @@
16
16
  "./package.json": "./package.json"
17
17
  },
18
18
  "scripts": {
19
+ "clean": "rm -rf dist/",
19
20
  "build": "tsc",
21
+ "build:clean": "npm run clean && npm run build",
20
22
  "dev": "tsc --watch",
21
23
  "start": "bun run src/index.ts",
22
24
  "cli": "bun run src/cli/index.ts",
@@ -28,7 +30,7 @@
28
30
  "update:install": "bun run src/cli/index.ts update install",
29
31
  "update:framework": "bun run src/cli/index.ts update framework",
30
32
  "setup-hooks": "bash scripts/install-hooks.sh",
31
- "prepublishOnly": "bun run build",
33
+ "prepublishOnly": "npm run clean && npm run build",
32
34
  "postinstall": "node scripts/postinstall.js && node scripts/link-pi-extensions.js || echo 'Welcome to 0xKobold! Run: 0xkobold setup'"
33
35
  },
34
36
  "keywords": [
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "0xkobold",
3
- "version": "0.6.4",
3
+ "version": "0.6.5",
4
4
  "description": "Your digital familiar - Koclaw-style gateway, session management, and multi-agent orchestration",
5
5
  "main": "dist/src/index.js",
6
6
  "types": "dist/src/index.d.ts",
@@ -16,7 +16,9 @@
16
16
  "./package.json": "./package.json"
17
17
  },
18
18
  "scripts": {
19
+ "clean": "rm -rf dist/",
19
20
  "build": "tsc",
21
+ "build:clean": "npm run clean && npm run build",
20
22
  "dev": "tsc --watch",
21
23
  "start": "bun run src/index.ts",
22
24
  "cli": "bun run src/cli/index.ts",
@@ -28,7 +30,7 @@
28
30
  "update:install": "bun run src/cli/index.ts update install",
29
31
  "update:framework": "bun run src/cli/index.ts update framework",
30
32
  "setup-hooks": "bash scripts/install-hooks.sh",
31
- "prepublishOnly": "bun run build",
33
+ "prepublishOnly": "npm run clean && npm run build",
32
34
  "postinstall": "node scripts/postinstall.js && node scripts/link-pi-extensions.js || echo 'Welcome to 0xKobold! Run: 0xkobold setup'"
33
35
  },
34
36
  "keywords": [
@@ -1,194 +0,0 @@
1
- /**
2
- * Task Router - v0.2.0
3
- *
4
- * Routes tasks to appropriate agent types based on task content.
5
- * Part of the Unified Agent Orchestration system.
6
- */
7
- import { AGENT_TYPES } from "./types/index.js";
8
- /**
9
- * Analyze task and route to appropriate agent
10
- */
11
- export function routeTask(request) {
12
- const task = request.task.toLowerCase();
13
- const context = (request.context || "").toLowerCase();
14
- // Keywords for each agent type
15
- const keywords = {
16
- coordinator: ["plan", "coordinate", "organize", "delegate", "manage", "break down", "multiple"],
17
- researcher: ["research", "find", "search", "investigate", "lookup", "document", "learn about"],
18
- reviewer: ["review", "check", "validate", "audit", "inspect", "quality", "verify"],
19
- specialist: ["optimize", "refactor", "architecture", "design", "expert", "complex", "advanced"],
20
- worker: ["implement", "code", "write", "create", "build", "fix", "test", "update"]
21
- };
22
- // Score each agent type
23
- const scores = {
24
- coordinator: 0,
25
- researcher: 0,
26
- reviewer: 0,
27
- specialist: 0,
28
- worker: 0
29
- };
30
- // Check keywords
31
- for (const [agentType, words] of Object.entries(keywords)) {
32
- for (const word of words) {
33
- if (task.includes(word) || context.includes(word)) {
34
- scores[agentType] += 1;
35
- }
36
- }
37
- }
38
- // Special patterns
39
- if (/\b(design|architect|optimize|performance|security)\b/.test(task + context)) {
40
- scores.specialist += 2;
41
- }
42
- if (/\b(bug|fix|implement|create|write)\b/.test(task + context)) {
43
- scores.worker += 2;
44
- }
45
- if (/\b(review|check|validate|audit)\b/.test(task + context)) {
46
- scores.reviewer += 2;
47
- }
48
- if (/\b(research|find|document|search)\b/.test(task + context)) {
49
- scores.researcher += 2;
50
- }
51
- if (/\b(plan|coordinate|multiple|team|organize)\b/.test(task + context)) {
52
- scores.coordinator += 2;
53
- }
54
- // Find best match
55
- let bestAgent = "worker"; // default
56
- let bestScore = -1;
57
- for (const [agent, score] of Object.entries(scores)) {
58
- if (score > bestScore) {
59
- bestScore = score;
60
- bestAgent = agent;
61
- }
62
- }
63
- // Calculate confidence
64
- const confidence = Math.min(0.95, 0.5 + bestScore * 0.15);
65
- // Get alternatives
66
- const alternatives = Object.entries(scores)
67
- .filter(([agent, score]) => agent !== bestAgent && score > 0)
68
- .sort((a, b) => b[1] - a[1])
69
- .slice(0, 2)
70
- .map(([agent]) => AGENT_TYPES[agent]);
71
- // Estimate complexity
72
- let complexity = "medium";
73
- if (/\b(plan|architecture|design|multiple|coordinate)\b/i.test(task)) {
74
- complexity = "complex";
75
- }
76
- else if (/\b(simple|quick|minor|small)\b/i.test(task)) {
77
- complexity = "simple";
78
- }
79
- // Build reasoning
80
- const reasoning = buildReasoning(bestAgent, request, scores);
81
- return {
82
- recommendedAgent: AGENT_TYPES[bestAgent],
83
- confidence,
84
- reasoning,
85
- alternativeAgents: alternatives,
86
- estimatedComplexity: complexity,
87
- suggestions: generateSuggestions(request, bestAgent)
88
- };
89
- }
90
- /**
91
- * Build human-readable reasoning
92
- */
93
- function buildReasoning(agentType, request, scores) {
94
- const task = request.task;
95
- switch (agentType) {
96
- case "coordinator":
97
- return `Task "${task}" appears to require planning and coordination. It mentions aspects that suggest multiple subtasks or need for delegation.`;
98
- case "researcher":
99
- return `Task "${task}" is primarily about information gathering. A Researcher is best suited to find and synthesize this information.`;
100
- case "reviewer":
101
- return `Task "${task}" involves validation and quality assurance. A Reviewer will ensure standards are met.`;
102
- case "specialist":
103
- return `Task "${task}" requires deep domain expertise. A Specialist ${AGENT_TYPES.specialist.emoji} has the knowledge needed.`;
104
- case "worker":
105
- default:
106
- return `Task "${task}" is an implementation task best handled by a Worker agent. All scores: ${JSON.stringify(scores)}`;
107
- }
108
- }
109
- /**
110
- * Generate helpful suggestions
111
- */
112
- function generateSuggestions(request, agentType) {
113
- const suggestions = [];
114
- if (agentType === "coordinator") {
115
- suggestions.push("Consider breaking this into clearly defined subtasks");
116
- suggestions.push("Identify dependencies between subtasks");
117
- }
118
- if (agentType === "worker") {
119
- const complexity = /\b(complex|multiple|architecture)\b/i.test(request.task) ? "high" : "low";
120
- if (complexity === "high") {
121
- suggestions.push("This appears complex - consider using a Specialist for the design phase");
122
- suggestions.push("A Reviewer could validate the implementation");
123
- }
124
- }
125
- if (agentType === "specialist") {
126
- suggestions.push("Consider having a Worker implement the solution after design");
127
- }
128
- if (!request.expectedOutput) {
129
- suggestions.push("Consider specifying expected output format in the task");
130
- }
131
- return suggestions;
132
- }
133
- /**
134
- * Get quick agent recommendation
135
- */
136
- export function quickRoute(task) {
137
- const result = routeTask({ task });
138
- return result.recommendedAgent;
139
- }
140
- /**
141
- * Check if task should use subagents
142
- */
143
- export function shouldUseSubagents(task) {
144
- const complexity = analyzeComplexity(task);
145
- if (complexity === "simple") {
146
- return {
147
- useSubagents: false,
148
- reason: "Task is simple enough to handle directly",
149
- complexity
150
- };
151
- }
152
- if (complexity === "complex") {
153
- return {
154
- useSubagents: true,
155
- reason: "Complex task would benefit from coordinated subagents",
156
- complexity
157
- };
158
- }
159
- return {
160
- useSubagents: false,
161
- reason: "Medium complexity - use subagents if parallel work is possible",
162
- complexity
163
- };
164
- }
165
- /**
166
- * Analyze task complexity
167
- */
168
- function analyzeComplexity(task) {
169
- const taskLower = task.toLowerCase();
170
- // Complex indicators
171
- const complexIndicators = [
172
- /\b(multiple|several|various)\b/,
173
- /\b(coordinate|orchestrate|plan)\b/,
174
- /\b(architecture|design|refactor)\b/,
175
- /\band\b.*\band\b.*\band\b/, // Multiple "and" clauses
176
- /\b(system|framework|platform)\b/,
177
- /\b(migrate|upgrade|rewrite)\b/,
178
- ];
179
- // Simple indicators
180
- const simpleIndicators = [
181
- /\b(simple|quick|minor|small|fix)\b/,
182
- /^\s*\w+\s+(the|a|an)\s+\w+\s*$/, // Simple action pattern
183
- /^\s*(add|fix|update|remove)\s+/i,
184
- /\b(just|only|single)\b/,
185
- ];
186
- const complexScore = complexIndicators.filter(r => r.test(taskLower)).length;
187
- const simpleScore = simpleIndicators.filter(r => r.test(taskLower)).length;
188
- if (complexScore >= 2)
189
- return "complex";
190
- if (simpleScore >= 2 || task.length < 50)
191
- return "simple";
192
- return "medium";
193
- }
194
- //# sourceMappingURL=task-router.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"task-router.js","sourceRoot":"","sources":["../../../src/agents/task-router.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export { spawnAgent, spawnAgents, getSpawnAgentToolConfig, executeSpawnAgent } from "./spawn-agent.js";
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/agents/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,200 +0,0 @@
1
- /**
2
- * Spawn Agent Tool - v0.2.0
3
- *
4
- * Spawns a subagent of a specific type with appropriate configuration.
5
- * Part of the Unified Agent Orchestration system.
6
- */
7
- import { getAgentType } from "../types/index.js";
8
- import { routeTask } from "../task-router.js";
9
- /**
10
- * Generate unique agent ID
11
- */
12
- function generateAgentId(type) {
13
- const timestamp = Date.now().toString(36).slice(-4);
14
- const random = Math.random().toString(36).slice(2, 6);
15
- return `${type}-${timestamp}-${random}`;
16
- }
17
- /**
18
- * Spawn a specialized agent
19
- */
20
- export async function spawnAgent(params) {
21
- let agentType;
22
- let routingInfo;
23
- // Auto-route if requested or no type specified
24
- if (params.autoRoute || !params.agentType) {
25
- const taskRequest = {
26
- task: params.task,
27
- context: params.context,
28
- priority: params.priority,
29
- };
30
- routingInfo = routeTask(taskRequest);
31
- agentType = routingInfo.recommendedAgent;
32
- }
33
- else {
34
- const found = getAgentType(params.agentType);
35
- if (!found) {
36
- return {
37
- success: false,
38
- agentId: "",
39
- agentType: getAgentType("worker"), // fallback
40
- task: params.task,
41
- systemPrompt: "",
42
- maxIterations: 0,
43
- error: `Unknown agent type: ${params.agentType}. Valid types: coordinator, specialist, researcher, worker, reviewer`,
44
- };
45
- }
46
- agentType = found;
47
- }
48
- const agentId = generateAgentId(agentType.id);
49
- // Build system prompt
50
- const systemPrompt = buildAgentSystemPrompt(agentType, params);
51
- // Override maxIterations if specified
52
- const maxIterations = params.maxIterations || agentType.maxIterations;
53
- return {
54
- success: true,
55
- agentId,
56
- agentType,
57
- task: params.task,
58
- systemPrompt,
59
- maxIterations,
60
- routingInfo,
61
- };
62
- }
63
- /**
64
- * Build system prompt for the agent
65
- */
66
- function buildAgentSystemPrompt(agentType, params) {
67
- const parts = [];
68
- // Agent identity
69
- parts.push(`${agentType.systemPrompt}`);
70
- // Task context
71
- if (params.context) {
72
- parts.push("");
73
- parts.push(`<!-- Task Context -->`);
74
- parts.push(`Additional context: ${params.context}`);
75
- }
76
- // Priority
77
- if (params.priority) {
78
- parts.push("");
79
- parts.push(`<!-- Priority -->`);
80
- parts.push(`Priority: ${params.priority.toUpperCase()}`);
81
- }
82
- // Capabilities reminder
83
- parts.push("");
84
- parts.push(`<!-- Your Capabilities -->`);
85
- parts.push(agentType.capabilities.map(c => `- ${c}`).join("\n"));
86
- // Available tools
87
- parts.push("");
88
- parts.push(`<!-- Available Tools -->`);
89
- parts.push(agentType.tools.map(t => `- ${t}`).join("\n"));
90
- return parts.join("\n\n");
91
- }
92
- /**
93
- * Spawn multiple agents in parallel
94
- */
95
- export async function spawnAgents(tasks) {
96
- const promises = tasks.map((t) => spawnAgent({
97
- task: t.task,
98
- agentType: t.agentType,
99
- context: t.context,
100
- autoRoute: !t.agentType,
101
- }));
102
- return Promise.all(promises);
103
- }
104
- /**
105
- * Get agent spawn configuration for tool registration
106
- */
107
- export function getSpawnAgentToolConfig() {
108
- return {
109
- name: "spawn_agent",
110
- description: `Spawn a specialized subagent to handle a task.
111
-
112
- This tool creates a subagent of a specific type:
113
- - coordinator (🎯): Plans and delegates complex tasks
114
- - specialist (🧠): Deep domain expertise
115
- - researcher (🔍): Gathers information and synthesizes findings
116
- - worker (⚒️): Implements code and executes tasks
117
- - reviewer (👁️): Reviews code and validates quality
118
-
119
- Use autoRoute: true to let the system choose the best agent type.`,
120
- parameters: {
121
- type: "object",
122
- properties: {
123
- task: {
124
- type: "string",
125
- description: "The task to assign to the subagent. Be specific and clear.",
126
- },
127
- agentType: {
128
- type: "string",
129
- enum: ["coordinator", "specialist", "researcher", "worker", "reviewer"],
130
- description: "Type of agent to spawn. Use autoRoute: true to let system choose.",
131
- },
132
- autoRoute: {
133
- type: "boolean",
134
- description: "If true, automatically determine best agent type",
135
- default: true,
136
- },
137
- context: {
138
- type: "string",
139
- description: "Additional context for the agent",
140
- },
141
- priority: {
142
- type: "string",
143
- enum: ["low", "normal", "high"],
144
- default: "normal",
145
- },
146
- },
147
- required: ["task"],
148
- },
149
- };
150
- }
151
- /**
152
- * Spawn agent tool for ExtensionAPI
153
- */
154
- export async function executeSpawnAgent(args) {
155
- const result = await spawnAgent({
156
- task: args.task,
157
- agentType: args.agentType,
158
- autoRoute: args.autoRoute ?? true,
159
- context: args.context,
160
- priority: args.priority ?? "normal",
161
- maxIterations: args.maxIterations,
162
- model: args.model,
163
- });
164
- if (!result.success) {
165
- return {
166
- success: false,
167
- error: result.error,
168
- content: [
169
- {
170
- type: "text",
171
- text: `Failed to spawn agent: ${result.error}`,
172
- },
173
- ],
174
- details: { error: result.error },
175
- };
176
- }
177
- const routingText = result.routingInfo
178
- ? `\n\nAuto-routing analysis:\n${result.routingInfo.reasoning}\n\nConfidence: ${Math.round(result.routingInfo.confidence * 100)}%\n\nAlternative agents: ${result.routingInfo.alternativeAgents
179
- .map((a) => `${a.emoji} ${a.name}`)
180
- .join(", ") || "none"}`
181
- : "";
182
- return {
183
- success: true,
184
- content: [
185
- {
186
- type: "text",
187
- text: `Spawned ${result.agentType.emoji} ${result.agentType.name}\n\nID: ${result.agentId}\nTask: ${result.task}\nMax iterations: ${result.maxIterations}${routingText}`,
188
- },
189
- ],
190
- details: {
191
- agentId: result.agentId,
192
- agentType: result.agentType.id,
193
- task: result.task,
194
- systemPrompt: result.systemPrompt,
195
- maxIterations: result.maxIterations,
196
- routingInfo: result.routingInfo,
197
- },
198
- };
199
- }
200
- //# sourceMappingURL=spawn-agent.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"spawn-agent.js","sourceRoot":"","sources":["../../../../src/agents/tools/spawn-agent.ts"],"names":[],"mappings":"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"}