0xkobold 0.4.3 → 0.5.0

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 (130) hide show
  1. package/README.md +226 -383
  2. package/dist/package.json +13 -4
  3. package/dist/src/agent/DraconicCapabilityRouter.js +556 -0
  4. package/dist/src/agent/DraconicCapabilityRouter.js.map +1 -0
  5. package/dist/src/agent/DraconicErrorClassifier.js +606 -0
  6. package/dist/src/agent/DraconicErrorClassifier.js.map +1 -0
  7. package/dist/src/agent/DraconicRunRegistry.js +460 -0
  8. package/dist/src/agent/DraconicRunRegistry.js.map +1 -0
  9. package/dist/src/agent/DraconicTokenPredictor.js +500 -0
  10. package/dist/src/agent/DraconicTokenPredictor.js.map +1 -0
  11. package/dist/src/agent/embedded-runner.js +3 -2
  12. package/dist/src/agent/embedded-runner.js.map +1 -1
  13. package/dist/src/cli/commands/doctor.js +199 -0
  14. package/dist/src/cli/commands/doctor.js.map +1 -0
  15. package/dist/src/cli/commands/migrate-from-openclaw.js +39 -0
  16. package/dist/src/cli/commands/migrate-from-openclaw.js.map +1 -0
  17. package/dist/src/cli/commands/migrate.js +6 -4
  18. package/dist/src/cli/commands/migrate.js.map +1 -1
  19. package/dist/src/cli/program.js +3 -1
  20. package/dist/src/cli/program.js.map +1 -1
  21. package/dist/src/config/unified-config.js +195 -0
  22. package/dist/src/config/unified-config.js.map +1 -0
  23. package/dist/src/cron/notifications.js +1 -1
  24. package/dist/src/cron/notifications.js.map +1 -1
  25. package/dist/src/cron/runner.js +9 -3
  26. package/dist/src/cron/runner.js.map +1 -1
  27. package/dist/src/event-bus/index.js +3 -1
  28. package/dist/src/event-bus/index.js.map +1 -1
  29. package/dist/src/extensions/community/draconic-messenger-wrapper.js +35 -0
  30. package/dist/src/extensions/community/draconic-messenger-wrapper.js.map +1 -0
  31. package/dist/src/extensions/community/draconic-subagents-wrapper.js +115 -0
  32. package/dist/src/extensions/community/draconic-subagents-wrapper.js.map +1 -0
  33. package/dist/src/extensions/core/compaction-safeguard-v2.js +95 -0
  34. package/dist/src/extensions/core/compaction-safeguard-v2.js.map +1 -0
  35. package/dist/src/extensions/core/compaction-safeguard.js +206 -137
  36. package/dist/src/extensions/core/compaction-safeguard.js.map +1 -1
  37. package/dist/src/extensions/core/config-extension.js +122 -0
  38. package/dist/src/extensions/core/config-extension.js.map +1 -0
  39. package/dist/src/extensions/core/draconic-hoard-extension.js +194 -0
  40. package/dist/src/extensions/core/draconic-hoard-extension.js.map +1 -0
  41. package/dist/src/extensions/core/draconic-lair-extension.js +146 -0
  42. package/dist/src/extensions/core/draconic-lair-extension.js.map +1 -0
  43. package/dist/src/extensions/core/draconic-safety-extension.js +402 -0
  44. package/dist/src/extensions/core/draconic-safety-extension.js.map +1 -0
  45. package/dist/src/extensions/core/ext-manager.js +40 -0
  46. package/dist/src/extensions/core/ext-manager.js.map +1 -0
  47. package/dist/src/extensions/core/gateway-extension.js +413 -624
  48. package/dist/src/extensions/core/gateway-extension.js.map +1 -1
  49. package/dist/src/extensions/core/generative-agents-extension.js +704 -0
  50. package/dist/src/extensions/core/generative-agents-extension.js.map +1 -0
  51. package/dist/src/extensions/core/memory-bootstrap-extension.js +279 -0
  52. package/dist/src/extensions/core/memory-bootstrap-extension.js.map +1 -0
  53. package/dist/src/extensions/core/ollama-extension.js +442 -0
  54. package/dist/src/extensions/core/ollama-extension.js.map +1 -0
  55. package/dist/src/extensions/core/ollama-router-extension.js +34 -93
  56. package/dist/src/extensions/core/ollama-router-extension.js.map +1 -1
  57. package/dist/src/extensions/core/perennial-memory-extension.js +5 -2
  58. package/dist/src/extensions/core/perennial-memory-extension.js.map +1 -1
  59. package/dist/src/extensions/core/persona-loader-extension.js +41 -15
  60. package/dist/src/extensions/core/persona-loader-extension.js.map +1 -1
  61. package/dist/src/extensions/core/pi-notify-extension.js +6 -0
  62. package/dist/src/extensions/core/pi-notify-extension.js.map +1 -1
  63. package/dist/src/extensions/core/session-bridge-extension.js +8 -72
  64. package/dist/src/extensions/core/session-bridge-extension.js.map +1 -1
  65. package/dist/src/extensions/core/tui-integration-extension-fixed.js +3 -0
  66. package/dist/src/extensions/core/tui-integration-extension-fixed.js.map +1 -0
  67. package/dist/src/extensions/core/tui-integration-extension.js +984 -0
  68. package/dist/src/extensions/core/tui-integration-extension.js.map +1 -0
  69. package/dist/src/gateway/persistence/AgentStore.js +399 -0
  70. package/dist/src/gateway/persistence/AgentStore.js.map +1 -0
  71. package/dist/src/gateway/persistence/index.js +9 -0
  72. package/dist/src/gateway/persistence/index.js.map +1 -0
  73. package/dist/src/hoard/DraconicHoardSystem.js +465 -0
  74. package/dist/src/hoard/DraconicHoardSystem.js.map +1 -0
  75. package/dist/src/index.js +7 -5
  76. package/dist/src/index.js.map +1 -1
  77. package/dist/src/infra/DraconicConnectionPool.js +492 -0
  78. package/dist/src/infra/DraconicConnectionPool.js.map +1 -0
  79. package/dist/src/lair/DraconicLairSystem.js +387 -0
  80. package/dist/src/lair/DraconicLairSystem.js.map +1 -0
  81. package/dist/src/llm/ollama.js +143 -99
  82. package/dist/src/llm/ollama.js.map +1 -1
  83. package/dist/src/migration/openclaw.js +5 -5
  84. package/dist/src/migration/openclaw.js.map +1 -1
  85. package/dist/src/pi-config.js +52 -27
  86. package/dist/src/pi-config.js.map +1 -1
  87. package/dist/src/sessions/SessionManager.js +416 -0
  88. package/dist/src/sessions/SessionManager.js.map +1 -0
  89. package/dist/src/sessions/SessionStore.js +580 -0
  90. package/dist/src/sessions/SessionStore.js.map +1 -0
  91. package/dist/src/sessions/UnifiedSessionBridge.js +394 -0
  92. package/dist/src/sessions/UnifiedSessionBridge.js.map +1 -0
  93. package/dist/src/sessions/index.js +15 -0
  94. package/dist/src/sessions/index.js.map +1 -0
  95. package/dist/src/sessions/migration/index.js +156 -0
  96. package/dist/src/sessions/migration/index.js.map +1 -0
  97. package/dist/src/sessions/types.js +8 -0
  98. package/dist/src/sessions/types.js.map +1 -0
  99. package/dist/src/skills/framework.js +1 -1
  100. package/dist/src/skills/framework.js.map +1 -1
  101. package/dist/src/tui/commands/final-functions.js +39 -0
  102. package/dist/src/tui/commands/final-functions.js.map +1 -0
  103. package/dist/src/tui/commands/natural-language-commands.js +231 -0
  104. package/dist/src/tui/commands/natural-language-commands.js.map +1 -0
  105. package/dist/src/tui/commands/orchestration-commands.js +340 -0
  106. package/dist/src/tui/commands/orchestration-commands.js.map +1 -0
  107. package/dist/src/tui/commands/orchestration-final-section.js +84 -0
  108. package/dist/src/tui/commands/orchestration-final-section.js.map +1 -0
  109. package/dist/src/tui/components/agent-tree-overlay.js +210 -0
  110. package/dist/src/tui/components/agent-tree-overlay.js.map +1 -0
  111. package/dist/src/tui/components/agent-tree-panel.js +229 -0
  112. package/dist/src/tui/components/agent-tree-panel.js.map +1 -0
  113. package/dist/src/tui/components/sidebar.js +82 -0
  114. package/dist/src/tui/components/sidebar.js.map +1 -0
  115. package/dist/src/tui/components/status-bar.js +115 -0
  116. package/dist/src/tui/components/status-bar.js.map +1 -0
  117. package/dist/src/tui/components/tree-header.js +85 -0
  118. package/dist/src/tui/components/tree-header.js.map +1 -0
  119. package/dist/src/tui/draconic-tui.js +291 -0
  120. package/dist/src/tui/draconic-tui.js.map +1 -0
  121. package/dist/src/tui/index.js +93 -0
  122. package/dist/src/tui/index.js.map +1 -0
  123. package/dist/src/tui/pi-tui-integration.js +260 -0
  124. package/dist/src/tui/pi-tui-integration.js.map +1 -0
  125. package/dist/src/utils/nl-patterns.js +145 -0
  126. package/dist/src/utils/nl-patterns.js.map +1 -0
  127. package/package.json +13 -4
  128. package/scripts/migrate-from-openclaw.sh +498 -0
  129. package/HEARTBEAT.md +0 -121
  130. package/USAGE.md +0 -191
package/dist/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "0xkobold",
3
- "version": "0.4.3",
4
- "description": "Your digital familiar - a personal AI assistant that learns and evolves (v0.3.0 - Multi-Channel, Security, Media Support)",
3
+ "version": "0.5.0",
4
+ "description": "Your digital familiar - multi-agent AI with memory, reflection, and semantic search (v0.5.0 - Draconic Intelligence)",
5
5
  "main": "dist/src/index.js",
6
6
  "types": "dist/src/index.d.ts",
7
7
  "type": "module",
@@ -29,7 +29,7 @@
29
29
  "update:framework": "bun run src/cli/index.ts update framework",
30
30
  "setup-hooks": "bash scripts/install-hooks.sh",
31
31
  "prepublishOnly": "bun run build",
32
- "postinstall": "node scripts/postinstall.js || echo 'Welcome to 0xKobold! Run: 0xkobold setup'"
32
+ "postinstall": "node scripts/postinstall.js && node scripts/link-pi-extensions.js || echo 'Welcome to 0xKobold! Run: 0xkobold setup'"
33
33
  },
34
34
  "keywords": [
35
35
  "ai",
@@ -51,7 +51,14 @@
51
51
  "discord.js": "^14.25.1",
52
52
  "glob": "^10.5.0",
53
53
  "json5": "^2.2.3",
54
+ "node-machine-id": "^1.1.12",
54
55
  "node-telegram-bot-api": "^0.67.0",
56
+ "pi-extmgr": "^0.1.23",
57
+ "pi-librarian": "^1.3.0",
58
+ "pi-memory-md": "^0.1.1",
59
+ "pi-messenger": "^0.13.0",
60
+ "pi-subagents": "^0.11.1",
61
+ "pi-web-access": "^0.10.2",
55
62
  "playwright": "^1.58.2",
56
63
  "react": "^19.2.4",
57
64
  "sharp": "^0.33.5",
@@ -73,11 +80,13 @@
73
80
  "private": false,
74
81
  "files": [
75
82
  "dist",
83
+ "scripts/migrate-from-openclaw.sh",
76
84
  "scripts/postinstall.js",
77
85
  "README.md",
78
86
  "LICENSE",
79
87
  "package.json",
80
- "USAGE.md",
88
+ "SOUL.md",
89
+ "IDENTITY.md",
81
90
  "HEARTBEAT.md",
82
91
  "skills/",
83
92
  ".agents/skills/"
@@ -0,0 +1,556 @@
1
+ /**
2
+ * 🧠 Draconic Capability Router
3
+ *
4
+ * Superior to OpenClaw (which can't route):
5
+ * - Analyzes tasks and routes to best agent
6
+ * - Historical performance tracking
7
+ * - Dynamic model selection
8
+ * - Confidence scoring
9
+ *
10
+ * "Every task finds its perfect agent"
11
+ */
12
+ import { EventEmitter } from "node:events";
13
+ /**
14
+ * 🐉 Draconic Capability Router
15
+ *
16
+ * Superior to OpenClaw: Intelligent task routing
17
+ */
18
+ export class DraconicCapabilityRouter extends EventEmitter {
19
+ // Domain detection patterns
20
+ domainPatterns = [
21
+ {
22
+ patterns: [/code|implement|refactor|fix|debug|write|function|class|method/i],
23
+ domain: "coding",
24
+ weight: 1.0,
25
+ },
26
+ {
27
+ patterns: [/research|search|find|explore|analyze|investigate|look.*up/i],
28
+ domain: "research",
29
+ weight: 1.0,
30
+ },
31
+ {
32
+ patterns: [/plan|design|architect|structure|organize/i],
33
+ domain: "planning",
34
+ weight: 1.0,
35
+ },
36
+ {
37
+ patterns: [/review|check|validate|verify|audit/i],
38
+ domain: "review",
39
+ weight: 1.0,
40
+ },
41
+ {
42
+ patterns: [/document|readme|comment|explain/i],
43
+ domain: "documentation",
44
+ weight: 0.8,
45
+ },
46
+ {
47
+ patterns: [/test|spec|coverage|unit.*test/i],
48
+ domain: "testing",
49
+ weight: 0.9,
50
+ },
51
+ {
52
+ patterns: [/web|http|fetch|api|endpoint|request/i],
53
+ domain: "web",
54
+ weight: 1.0,
55
+ },
56
+ {
57
+ patterns: [/database|sql|query|migration|schema/i],
58
+ domain: "database",
59
+ weight: 1.0,
60
+ },
61
+ {
62
+ patterns: [/security|auth|encrypt|vulnerability|safe/i],
63
+ domain: "security",
64
+ weight: 1.0,
65
+ },
66
+ {
67
+ patterns: [/config|setting|environment|variable/i],
68
+ domain: "configuration",
69
+ weight: 0.7,
70
+ },
71
+ ];
72
+ // Performance tracking
73
+ performanceMetrics = new Map();
74
+ // Model selection preferences - Cloud Ollama Strategy
75
+ // minimax-m2.5:cloud for worker, reviewer, specialist
76
+ // kimi-k2.5:cloud for coordinator, researcher, planner
77
+ modelPreferences = {
78
+ coordinator: ["kimi-k2.5:cloud", "claude-3-opus", "gpt-4"],
79
+ specialist: ["minimax-m2.5:cloud", "claude-3-sonnet", "gpt-4-turbo"],
80
+ researcher: ["kimi-k2.5:cloud", "claude-3-sonnet", "gpt-4-turbo"],
81
+ planner: ["kimi-k2.5:cloud", "claude-3-opus", "gpt-4"],
82
+ reviewer: ["minimax-m2.5:cloud", "claude-3-sonnet", "gpt-4-turbo"],
83
+ worker: ["minimax-m2.5:cloud", "claude-3-haiku", "gpt-3.5-turbo"],
84
+ };
85
+ // Task history
86
+ taskHistory = [];
87
+ static instance = null;
88
+ static getInstance() {
89
+ if (!DraconicCapabilityRouter.instance) {
90
+ DraconicCapabilityRouter.instance = new DraconicCapabilityRouter();
91
+ }
92
+ return DraconicCapabilityRouter.instance;
93
+ }
94
+ constructor() {
95
+ super();
96
+ this.initializeMetrics();
97
+ }
98
+ /**
99
+ * Analyze task and route to best agent
100
+ * Superior to OpenClaw: Deep analysis + confidence
101
+ */
102
+ analyze(task, history) {
103
+ // 1. Extract characteristics
104
+ const characteristics = this.analyzeTask(task);
105
+ // 2. Determine complexity
106
+ const complexity = this.assessComplexity(task, characteristics);
107
+ // 3. Route based on characteristics
108
+ const routing = this.routeByCharacteristics(characteristics, complexity);
109
+ // 4. Adjust based on history
110
+ const adjustedRouting = this.adjustByHistory(routing, history);
111
+ // 5. Generate breakdown
112
+ const subtasks = this.generateSubtasks(task, adjustedRouting.agentType, complexity);
113
+ // 6. Select model
114
+ const suggestedModel = this.selectModel(adjustedRouting.agentType, characteristics);
115
+ // Calculate confidence
116
+ const confidence = this.calculateConfidence(adjustedRouting.agentType, characteristics, adjustedRouting.reason);
117
+ // Estimate duration
118
+ const estimatedDuration = this.estimateDuration(adjustedRouting.agentType, characteristics, complexity);
119
+ // Get suggested capabilities
120
+ const suggestedCapabilities = this.getCapabilitiesFor(adjustedRouting.agentType, characteristics);
121
+ return {
122
+ agentType: adjustedRouting.agentType,
123
+ confidence,
124
+ reason: adjustedRouting.reason,
125
+ subtasks,
126
+ suggestedModel,
127
+ estimatedDuration,
128
+ suggestedCapabilities,
129
+ };
130
+ }
131
+ /**
132
+ * Analyze task characteristics
133
+ */
134
+ analyzeTask(task) {
135
+ const domains = new Map();
136
+ for (const pattern of this.domainPatterns) {
137
+ let matches = 0;
138
+ for (const regex of pattern.patterns) {
139
+ const matchCount = (task.match(regex) || []).length;
140
+ matches += matchCount;
141
+ }
142
+ if (matches > 0) {
143
+ domains.set(pattern.domain, (domains.get(pattern.domain) || 0) + matches * pattern.weight);
144
+ }
145
+ }
146
+ // Sort by score
147
+ const sortedDomains = Array.from(domains.entries())
148
+ .sort((a, b) => b[1] - a[1])
149
+ .map(([d]) => d);
150
+ const requiresResearch = sortedDomains.includes("research");
151
+ const requiresPlanning = sortedDomains.includes("planning");
152
+ const requiresReview = sortedDomains.includes("review");
153
+ // Estimate complexity
154
+ const wordCount = task.split(/\s+/).length;
155
+ const codeCount = (task.match(/```/g) || []).length;
156
+ let complexity;
157
+ if (wordCount > 100 || requiresPlanning)
158
+ complexity = "complex";
159
+ else if (wordCount > 30 || requiresResearch)
160
+ complexity = "medium";
161
+ else
162
+ complexity = "simple";
163
+ // Estimate tokens (rough)
164
+ const estimatedTokens = wordCount * 2 + codeCount * 50;
165
+ return {
166
+ complexity,
167
+ domain: sortedDomains.slice(0, 3), // Top 3 domains
168
+ requiresResearch,
169
+ requiresPlanning,
170
+ requiresReview,
171
+ estimatedDuration: 0, // Will be calculated
172
+ estimatedTokens,
173
+ };
174
+ }
175
+ /**
176
+ * Assess task complexity
177
+ */
178
+ assessComplexity(task, characteristics) {
179
+ // Additional complexity heuristics
180
+ let score = 0;
181
+ // Multiple domains = more complex
182
+ score += characteristics.domain.length * 10;
183
+ // Research requirement
184
+ if (characteristics.requiresResearch)
185
+ score += 20;
186
+ if (characteristics.requiresPlanning)
187
+ score += 30;
188
+ // Keywords indicating complexity
189
+ const complexKeywords = [
190
+ /refactor|restructure|redesign/i,
191
+ /architecture|system|framework/i,
192
+ /optimize|performance|scal/i,
193
+ /security|auth|encrypt/i,
194
+ /database|schema|migration/i,
195
+ ];
196
+ for (const kw of complexKeywords) {
197
+ if (kw.test(task))
198
+ score += 15;
199
+ }
200
+ // Simple keywords reduce complexity
201
+ const simpleKeywords = [/simple|easy|quick|small/i];
202
+ for (const kw of simpleKeywords) {
203
+ if (kw.test(task))
204
+ score -= 10;
205
+ }
206
+ if (score >= 50)
207
+ return "complex";
208
+ if (score >= 20)
209
+ return "medium";
210
+ return "simple";
211
+ }
212
+ /**
213
+ * Route based on characteristics
214
+ */
215
+ routeByCharacteristics(characteristics, complexity) {
216
+ // Domain-based routing logic
217
+ const domains = characteristics.domain;
218
+ // Coordination needed
219
+ if (complexity === "complex" && domains.length > 2) {
220
+ return {
221
+ agentType: "coordinator",
222
+ reason: `Complex multi-domain task (${domains.join(", ")}) requires coordination`,
223
+ };
224
+ }
225
+ // Planning focus
226
+ if (characteristics.requiresPlanning || domains.includes("planning")) {
227
+ return {
228
+ agentType: "planner",
229
+ reason: "Task requires architecture/design planning",
230
+ };
231
+ }
232
+ // Review focus
233
+ if (characteristics.requiresReview || domains.includes("review")) {
234
+ return {
235
+ agentType: "reviewer",
236
+ reason: "Task is primarily review/validation",
237
+ };
238
+ }
239
+ // Research focus
240
+ if (characteristics.requiresResearch || domains.includes("research")) {
241
+ return {
242
+ agentType: "researcher",
243
+ reason: "Task requires exploration and analysis",
244
+ };
245
+ }
246
+ // Coding focus
247
+ if (domains.includes("coding")) {
248
+ // Complex coding = specialist
249
+ if (complexity === "complex") {
250
+ return {
251
+ agentType: "specialist",
252
+ reason: "Complex coding task requires focused implementation",
253
+ };
254
+ }
255
+ // Simple coding = worker
256
+ return {
257
+ agentType: "worker",
258
+ reason: "Straightforward coding task",
259
+ };
260
+ }
261
+ // Default
262
+ if (complexity === "simple") {
263
+ return {
264
+ agentType: "worker",
265
+ reason: "Simple task, general worker suitable",
266
+ };
267
+ }
268
+ return {
269
+ agentType: "specialist",
270
+ reason: "Medium complexity task requiring focused attention",
271
+ };
272
+ }
273
+ /**
274
+ * Adjust routing based on history
275
+ */
276
+ adjustByHistory(routing, history) {
277
+ if (!history || history.tasks.length === 0) {
278
+ return routing;
279
+ }
280
+ // Check recent performance of this agent type
281
+ const recentTasks = history.tasks.slice(-10);
282
+ const agentTasks = recentTasks.filter((t) => t.agentType === routing.agentType);
283
+ if (agentTasks.length >= 3) {
284
+ const successRate = agentTasks.filter((t) => t.success).length / agentTasks.length;
285
+ if (successRate < 0.5) {
286
+ // Low success rate, try alternative
287
+ const alternatives = ["coordinator", "specialist", "worker"];
288
+ const alternative = alternatives.find((a) => a !== routing.agentType);
289
+ if (alternative) {
290
+ return {
291
+ agentType: alternative,
292
+ reason: `${routing.agentType} had low success rate (${(successRate * 100).toFixed(0)}%), trying ${alternative}`,
293
+ };
294
+ }
295
+ }
296
+ }
297
+ return routing;
298
+ }
299
+ /**
300
+ * Generate subtask breakdown
301
+ */
302
+ generateSubtasks(task, agentType, complexity) {
303
+ const subtasks = [];
304
+ let index = 0;
305
+ switch (agentType) {
306
+ case "coordinator":
307
+ subtasks.push({
308
+ index: index++,
309
+ description: "Analyze task requirements",
310
+ agentType: "researcher",
311
+ estimatedTokens: 2000,
312
+ dependencies: [],
313
+ });
314
+ subtasks.push({
315
+ index: index++,
316
+ description: "Plan implementation approach",
317
+ agentType: "planner",
318
+ estimatedTokens: 3000,
319
+ dependencies: [0],
320
+ });
321
+ subtasks.push({
322
+ index: index++,
323
+ description: "Implement solution",
324
+ agentType: "specialist",
325
+ estimatedTokens: 5000,
326
+ dependencies: [1],
327
+ });
328
+ subtasks.push({
329
+ index: index++,
330
+ description: "Review implementation",
331
+ agentType: "reviewer",
332
+ estimatedTokens: 2000,
333
+ dependencies: [2],
334
+ });
335
+ break;
336
+ case "planner":
337
+ subtasks.push({
338
+ index: index++,
339
+ description: "Research existing code patterns",
340
+ agentType: "researcher",
341
+ estimatedTokens: 2000,
342
+ dependencies: [],
343
+ });
344
+ subtasks.push({
345
+ index: index++,
346
+ description: "Design architecture",
347
+ agentType: "planner",
348
+ estimatedTokens: 4000,
349
+ dependencies: [0],
350
+ });
351
+ break;
352
+ default:
353
+ // Single task for specialized agents
354
+ subtasks.push({
355
+ index: 0,
356
+ description: task.slice(0, 100),
357
+ agentType,
358
+ estimatedTokens: complexity === "complex" ? 5000 : complexity === "medium" ? 3000 : 1500,
359
+ dependencies: [],
360
+ });
361
+ }
362
+ return subtasks;
363
+ }
364
+ /**
365
+ * Select best available model
366
+ */
367
+ selectModel(agentType, characteristics) {
368
+ const preferences = this.modelPreferences[agentType];
369
+ // For simple tasks, downgrade
370
+ if (characteristics.complexity === "simple" && preferences.length > 1) {
371
+ return preferences[preferences.length - 1]; // Cheapest/fastest
372
+ }
373
+ // For complex tasks, upgrade
374
+ if (characteristics.complexity === "complex") {
375
+ return preferences[0]; // Best model
376
+ }
377
+ return preferences[Math.floor(preferences.length / 2)]; // Middle option
378
+ }
379
+ /**
380
+ * Calculate confidence score
381
+ */
382
+ calculateConfidence(agentType, characteristics, reason) {
383
+ let confidence = 0.8; // Base
384
+ // Domain clarity increases confidence
385
+ if (characteristics.domain.length === 1)
386
+ confidence += 0.1;
387
+ if (characteristics.domain.length > 3)
388
+ confidence -= 0.1;
389
+ // Known type increases confidence
390
+ const knownTypes = ["coordinator", "specialist", "researcher", "planner", "reviewer", "worker"];
391
+ if (knownTypes.includes(agentType))
392
+ confidence += 0.05;
393
+ // Complexity alignment
394
+ if (characteristics.complexity === "simple" && agentType === "worker")
395
+ confidence += 0.05;
396
+ if (characteristics.complexity === "complex" && agentType === "coordinator")
397
+ confidence += 0.05;
398
+ return Math.min(0.95, confidence);
399
+ }
400
+ /**
401
+ * Estimate duration based on characteristics
402
+ */
403
+ estimateDuration(agentType, characteristics, complexity) {
404
+ const baseDuration = {
405
+ simple: 15000,
406
+ medium: 45000,
407
+ complex: 120000,
408
+ }[complexity];
409
+ const agentMultiplier = {
410
+ coordinator: 1.5, // Coordination overhead
411
+ planner: 1.3,
412
+ researcher: 1.2,
413
+ specialist: 1.0,
414
+ reviewer: 0.8,
415
+ worker: 0.9,
416
+ }[agentType];
417
+ return baseDuration * agentMultiplier;
418
+ }
419
+ /**
420
+ * Get suggested capabilities
421
+ */
422
+ getCapabilitiesFor(agentType, characteristics) {
423
+ const baseCapabilities = {
424
+ coordinator: ["task-delegation", "planning", "coordination"],
425
+ specialist: ["coding", "refactoring", "debugging", "implementation"],
426
+ researcher: ["research", "analysis", "documentation", "search"],
427
+ planner: ["planning", "architecture-design", "task-breakdown"],
428
+ reviewer: ["code-review", "quality-assurance", "security-review"],
429
+ worker: ["file-ops", "shell", "general"],
430
+ };
431
+ const capabilities = [...baseCapabilities[agentType]];
432
+ // Add domain-specific capabilities
433
+ for (const domain of characteristics.domain) {
434
+ capabilities.push(domain);
435
+ }
436
+ return [...new Set(capabilities)];
437
+ }
438
+ /**
439
+ * Record outcome for learning
440
+ */
441
+ recordOutcome(task, agentType, domains, duration, tokens, success) {
442
+ this.taskHistory.push({
443
+ task,
444
+ agentType,
445
+ domains,
446
+ duration,
447
+ tokens,
448
+ success,
449
+ timestamp: Date.now(),
450
+ });
451
+ // Keep only last 1000
452
+ if (this.taskHistory.length > 1000) {
453
+ this.taskHistory = this.taskHistory.slice(-1000);
454
+ }
455
+ // Update metrics
456
+ this.updateMetrics(agentType, success, duration, tokens, domains);
457
+ this.emit("outcome.recorded", { agentType, success, duration });
458
+ }
459
+ /**
460
+ * Update agent performance metrics
461
+ */
462
+ updateMetrics(agentType, success, duration, tokens, domains) {
463
+ const metrics = this.performanceMetrics.get(agentType) ?? this.createEmptyMetrics();
464
+ metrics.totalTasks++;
465
+ if (success)
466
+ metrics.successfulTasks++;
467
+ // Update averages
468
+ metrics.averageDuration = this.ewma(metrics.averageDuration, duration);
469
+ metrics.averageTokens = this.ewma(metrics.averageTokens, tokens);
470
+ metrics.successRate = metrics.successfulTasks / metrics.totalTasks;
471
+ // Update domain stats
472
+ for (const domain of domains) {
473
+ if (!metrics.byDomain[domain]) {
474
+ metrics.byDomain[domain] = { tasks: 0, successRate: 0 };
475
+ }
476
+ const domainStats = metrics.byDomain[domain];
477
+ domainStats.tasks++;
478
+ const prevSuccesses = domainStats.successRate * (domainStats.tasks - 1);
479
+ domainStats.successRate = (prevSuccesses + (success ? 1 : 0)) / domainStats.tasks;
480
+ }
481
+ this.performanceMetrics.set(agentType, metrics);
482
+ }
483
+ /**
484
+ * Exponential weighted moving average
485
+ */
486
+ ewma(current, value, alpha = 0.3) {
487
+ if (current === 0)
488
+ return value;
489
+ return alpha * value + (1 - alpha) * current;
490
+ }
491
+ /**
492
+ * Get agent performance
493
+ */
494
+ getPerformance(agentType) {
495
+ return this.performanceMetrics.get(agentType);
496
+ }
497
+ /**
498
+ * Get all performance metrics
499
+ */
500
+ getAllPerformance() {
501
+ return new Map(this.performanceMetrics);
502
+ }
503
+ /**
504
+ * Get recommendations based on history
505
+ */
506
+ getRecommendations() {
507
+ const recommendations = [];
508
+ for (const [agentType, metrics] of this.performanceMetrics) {
509
+ if (metrics.totalTasks >= 5) {
510
+ if (metrics.successRate < 0.5) {
511
+ recommendations.push({
512
+ observation: `${agentType} has low success rate`,
513
+ recommendation: `Consider using alternative agent types for ${agentType} tasks`,
514
+ confidence: metrics.totalTasks / 20,
515
+ });
516
+ }
517
+ if (metrics.averageDuration > 60000) {
518
+ recommendations.push({
519
+ observation: `${agentType} tasks are slow`,
520
+ recommendation: `Consider breaking ${agentType} tasks into smaller subtasks`,
521
+ confidence: 0.7,
522
+ });
523
+ }
524
+ }
525
+ }
526
+ return recommendations.sort((a, b) => b.confidence - a.confidence);
527
+ }
528
+ /**
529
+ * Initialize empty metrics
530
+ */
531
+ initializeMetrics() {
532
+ const types = ["coordinator", "specialist", "researcher", "planner", "reviewer", "worker"];
533
+ for (const type of types) {
534
+ this.performanceMetrics.set(type, this.createEmptyMetrics());
535
+ }
536
+ }
537
+ createEmptyMetrics() {
538
+ return {
539
+ totalTasks: 0,
540
+ successfulTasks: 0,
541
+ averageDuration: 0,
542
+ averageTokens: 0,
543
+ averageQuality: 0,
544
+ successRate: 0,
545
+ byDomain: {},
546
+ };
547
+ }
548
+ }
549
+ // Export singleton
550
+ export const getDraconicCapabilityRouter = DraconicCapabilityRouter.getInstance;
551
+ // Convenience function
552
+ export function analyzeTask(task, history) {
553
+ return getDraconicCapabilityRouter().analyze(task, history);
554
+ }
555
+ // Types already exported at top of file
556
+ //# sourceMappingURL=DraconicCapabilityRouter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DraconicCapabilityRouter.js","sourceRoot":"","sources":["../../../src/agent/DraconicCapabilityRouter.ts"],"names":[],"mappings":"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"}