@weavelogic/knowledge-graph-agent 0.6.0 → 0.7.1

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 (219) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +70 -3
  3. package/dist/_virtual/__vite-browser-external.js +2 -2
  4. package/dist/_virtual/__vite-browser-external.js.map +1 -1
  5. package/dist/_virtual/index12.js +7 -0
  6. package/dist/_virtual/index12.js.map +1 -0
  7. package/dist/_virtual/ort-web.min.js +8 -0
  8. package/dist/_virtual/ort-web.min.js.map +1 -0
  9. package/dist/_virtual/ort-web.min2.js +5 -0
  10. package/dist/_virtual/ort-web.min2.js.map +1 -0
  11. package/dist/agents/base-agent.d.ts +63 -0
  12. package/dist/agents/base-agent.d.ts.map +1 -1
  13. package/dist/agents/base-agent.js +139 -0
  14. package/dist/agents/base-agent.js.map +1 -1
  15. package/dist/agents/coordinator-agent.d.ts +422 -0
  16. package/dist/agents/coordinator-agent.d.ts.map +1 -0
  17. package/dist/agents/documenter-agent.d.ts +298 -0
  18. package/dist/agents/documenter-agent.d.ts.map +1 -0
  19. package/dist/agents/index.d.ts +11 -1
  20. package/dist/agents/index.d.ts.map +1 -1
  21. package/dist/agents/index.js +4 -0
  22. package/dist/agents/index.js.map +1 -1
  23. package/dist/agents/mixins/index.d.ts +9 -0
  24. package/dist/agents/mixins/index.d.ts.map +1 -0
  25. package/dist/agents/mixins/trajectory-mixin.d.ts +112 -0
  26. package/dist/agents/mixins/trajectory-mixin.d.ts.map +1 -0
  27. package/dist/agents/optimizer-agent.d.ts +388 -0
  28. package/dist/agents/optimizer-agent.d.ts.map +1 -0
  29. package/dist/agents/planner-agent.d.ts +395 -0
  30. package/dist/agents/planner-agent.d.ts.map +1 -0
  31. package/dist/agents/registry.d.ts.map +1 -1
  32. package/dist/agents/registry.js +5 -0
  33. package/dist/agents/registry.js.map +1 -1
  34. package/dist/agents/reviewer-agent.d.ts +330 -0
  35. package/dist/agents/reviewer-agent.d.ts.map +1 -0
  36. package/dist/agents/types.d.ts +12 -1
  37. package/dist/agents/types.d.ts.map +1 -1
  38. package/dist/agents/types.js +1 -0
  39. package/dist/agents/types.js.map +1 -1
  40. package/dist/cli/commands/hive-mind/add-frontmatter.d.ts +102 -0
  41. package/dist/cli/commands/hive-mind/add-frontmatter.d.ts.map +1 -0
  42. package/dist/cli/commands/hive-mind/add-frontmatter.js +439 -0
  43. package/dist/cli/commands/hive-mind/add-frontmatter.js.map +1 -0
  44. package/dist/cli/commands/hive-mind/analyze-links.d.ts +80 -0
  45. package/dist/cli/commands/hive-mind/analyze-links.d.ts.map +1 -0
  46. package/dist/cli/commands/hive-mind/analyze-links.js +367 -0
  47. package/dist/cli/commands/hive-mind/analyze-links.js.map +1 -0
  48. package/dist/cli/commands/hive-mind/find-connections.d.ts +75 -0
  49. package/dist/cli/commands/hive-mind/find-connections.d.ts.map +1 -0
  50. package/dist/cli/commands/hive-mind/find-connections.js +347 -0
  51. package/dist/cli/commands/hive-mind/find-connections.js.map +1 -0
  52. package/dist/cli/commands/hive-mind/index.d.ts +37 -0
  53. package/dist/cli/commands/hive-mind/index.d.ts.map +1 -0
  54. package/dist/cli/commands/hive-mind/index.js +33 -0
  55. package/dist/cli/commands/hive-mind/index.js.map +1 -0
  56. package/dist/cli/commands/hive-mind/validate-names.d.ts +79 -0
  57. package/dist/cli/commands/hive-mind/validate-names.d.ts.map +1 -0
  58. package/dist/cli/commands/hive-mind/validate-names.js +353 -0
  59. package/dist/cli/commands/hive-mind/validate-names.js.map +1 -0
  60. package/dist/cli/commands/vector.js +2 -0
  61. package/dist/cli/commands/vector.js.map +1 -1
  62. package/dist/cli/index.d.ts.map +1 -1
  63. package/dist/cli/index.js +7 -0
  64. package/dist/cli/index.js.map +1 -1
  65. package/dist/equilibrium/agent-equilibrium.d.ts +194 -0
  66. package/dist/equilibrium/agent-equilibrium.d.ts.map +1 -0
  67. package/dist/equilibrium/agent-equilibrium.js +304 -0
  68. package/dist/equilibrium/agent-equilibrium.js.map +1 -0
  69. package/dist/equilibrium/graph-equilibrium.d.ts +177 -0
  70. package/dist/equilibrium/graph-equilibrium.d.ts.map +1 -0
  71. package/dist/equilibrium/index.d.ts +11 -0
  72. package/dist/equilibrium/index.d.ts.map +1 -0
  73. package/dist/equilibrium/memory-equilibrium.d.ts +153 -0
  74. package/dist/equilibrium/memory-equilibrium.d.ts.map +1 -0
  75. package/dist/graphql/resolvers/index.d.ts.map +1 -1
  76. package/dist/graphql/resolvers/queries.d.ts +11 -0
  77. package/dist/graphql/resolvers/queries.d.ts.map +1 -1
  78. package/dist/index.d.ts +2 -0
  79. package/dist/index.d.ts.map +1 -1
  80. package/dist/index.js +10 -4
  81. package/dist/index.js.map +1 -1
  82. package/dist/inference/index.d.ts +9 -0
  83. package/dist/inference/index.d.ts.map +1 -0
  84. package/dist/inference/model-selection.d.ts +131 -0
  85. package/dist/inference/model-selection.d.ts.map +1 -0
  86. package/dist/integrations/agentic-flow/adapters/agent-booster-adapter.d.ts +265 -0
  87. package/dist/integrations/agentic-flow/adapters/agent-booster-adapter.d.ts.map +1 -0
  88. package/dist/integrations/agentic-flow/adapters/agentdb-adapter.d.ts +197 -0
  89. package/dist/integrations/agentic-flow/adapters/agentdb-adapter.d.ts.map +1 -0
  90. package/dist/integrations/agentic-flow/adapters/agentdb-vector-store.d.ts +249 -0
  91. package/dist/integrations/agentic-flow/adapters/agentdb-vector-store.d.ts.map +1 -0
  92. package/dist/integrations/agentic-flow/adapters/base-adapter.d.ts +120 -0
  93. package/dist/integrations/agentic-flow/adapters/base-adapter.d.ts.map +1 -0
  94. package/dist/integrations/agentic-flow/adapters/federation-hub-adapter.d.ts +444 -0
  95. package/dist/integrations/agentic-flow/adapters/federation-hub-adapter.d.ts.map +1 -0
  96. package/dist/integrations/agentic-flow/adapters/index.d.ts +17 -0
  97. package/dist/integrations/agentic-flow/adapters/index.d.ts.map +1 -0
  98. package/dist/integrations/agentic-flow/adapters/model-router-adapter.d.ts +242 -0
  99. package/dist/integrations/agentic-flow/adapters/model-router-adapter.d.ts.map +1 -0
  100. package/dist/integrations/agentic-flow/adapters/quic-transport-adapter.d.ts +364 -0
  101. package/dist/integrations/agentic-flow/adapters/quic-transport-adapter.d.ts.map +1 -0
  102. package/dist/integrations/agentic-flow/adapters/reasoning-bank-adapter.d.ts +209 -0
  103. package/dist/integrations/agentic-flow/adapters/reasoning-bank-adapter.d.ts.map +1 -0
  104. package/dist/integrations/agentic-flow/benchmark/index.d.ts +9 -0
  105. package/dist/integrations/agentic-flow/benchmark/index.d.ts.map +1 -0
  106. package/dist/integrations/agentic-flow/benchmark/vector-benchmark.d.ts +253 -0
  107. package/dist/integrations/agentic-flow/benchmark/vector-benchmark.d.ts.map +1 -0
  108. package/dist/integrations/agentic-flow/config.d.ts +109 -0
  109. package/dist/integrations/agentic-flow/config.d.ts.map +1 -0
  110. package/dist/integrations/agentic-flow/feature-flags.d.ts +140 -0
  111. package/dist/integrations/agentic-flow/feature-flags.d.ts.map +1 -0
  112. package/dist/integrations/agentic-flow/index.d.ts +22 -0
  113. package/dist/integrations/agentic-flow/index.d.ts.map +1 -0
  114. package/dist/integrations/agentic-flow/migration/index.d.ts +9 -0
  115. package/dist/integrations/agentic-flow/migration/index.d.ts.map +1 -0
  116. package/dist/integrations/agentic-flow/migration/migrate-to-agentdb.d.ts +242 -0
  117. package/dist/integrations/agentic-flow/migration/migrate-to-agentdb.d.ts.map +1 -0
  118. package/dist/learning/index.d.ts +91 -0
  119. package/dist/learning/index.d.ts.map +1 -0
  120. package/dist/learning/learning-loop.d.ts +176 -0
  121. package/dist/learning/learning-loop.d.ts.map +1 -0
  122. package/dist/learning/services/ab-testing-framework.d.ts +135 -0
  123. package/dist/learning/services/ab-testing-framework.d.ts.map +1 -0
  124. package/dist/learning/services/agent-priming-service.d.ts +207 -0
  125. package/dist/learning/services/agent-priming-service.d.ts.map +1 -0
  126. package/dist/learning/services/daily-log-generator.d.ts +113 -0
  127. package/dist/learning/services/daily-log-generator.d.ts.map +1 -0
  128. package/dist/learning/services/index.d.ts +14 -0
  129. package/dist/learning/services/index.d.ts.map +1 -0
  130. package/dist/learning/services/memory-extraction-service.d.ts +87 -0
  131. package/dist/learning/services/memory-extraction-service.d.ts.map +1 -0
  132. package/dist/learning/services/task-completion-consumer.d.ts +162 -0
  133. package/dist/learning/services/task-completion-consumer.d.ts.map +1 -0
  134. package/dist/learning/services/trajectory-tracker.d.ts +174 -0
  135. package/dist/learning/services/trajectory-tracker.d.ts.map +1 -0
  136. package/dist/learning/types.d.ts +516 -0
  137. package/dist/learning/types.d.ts.map +1 -0
  138. package/dist/mcp/clients/claude-flow-memory-client.d.ts +259 -0
  139. package/dist/mcp/clients/claude-flow-memory-client.d.ts.map +1 -0
  140. package/dist/mcp/clients/claude-flow-memory-client.js +305 -0
  141. package/dist/mcp/clients/claude-flow-memory-client.js.map +1 -0
  142. package/dist/mcp/clients/index.d.ts +11 -0
  143. package/dist/mcp/clients/index.d.ts.map +1 -0
  144. package/dist/mcp/clients/mcp-client-adapter.d.ts +146 -0
  145. package/dist/mcp/clients/mcp-client-adapter.d.ts.map +1 -0
  146. package/dist/mcp/clients/mcp-client-adapter.js +372 -0
  147. package/dist/mcp/clients/mcp-client-adapter.js.map +1 -0
  148. package/dist/mcp/index.d.ts +10 -0
  149. package/dist/mcp/index.d.ts.map +1 -0
  150. package/dist/memory/vault-sync.d.ts +12 -0
  151. package/dist/memory/vault-sync.d.ts.map +1 -1
  152. package/dist/memory/vault-sync.js +94 -11
  153. package/dist/memory/vault-sync.js.map +1 -1
  154. package/dist/node_modules/@huggingface/jinja/dist/index.js +118 -0
  155. package/dist/node_modules/@huggingface/jinja/dist/index.js.map +1 -0
  156. package/dist/node_modules/@typescript-eslint/project-service/dist/index.js +1 -1
  157. package/dist/node_modules/@xenova/transformers/src/backends/onnx.js +24 -0
  158. package/dist/node_modules/@xenova/transformers/src/backends/onnx.js.map +1 -0
  159. package/dist/node_modules/@xenova/transformers/src/configs.js +52 -0
  160. package/dist/node_modules/@xenova/transformers/src/configs.js.map +1 -0
  161. package/dist/node_modules/@xenova/transformers/src/env.js +35 -0
  162. package/dist/node_modules/@xenova/transformers/src/env.js.map +1 -0
  163. package/dist/node_modules/@xenova/transformers/src/models.js +3852 -0
  164. package/dist/node_modules/@xenova/transformers/src/models.js.map +1 -0
  165. package/dist/node_modules/@xenova/transformers/src/tokenizers.js +144 -0
  166. package/dist/node_modules/@xenova/transformers/src/tokenizers.js.map +1 -0
  167. package/dist/node_modules/@xenova/transformers/src/utils/core.js +52 -0
  168. package/dist/node_modules/@xenova/transformers/src/utils/core.js.map +1 -0
  169. package/dist/node_modules/@xenova/transformers/src/utils/generation.js +623 -0
  170. package/dist/node_modules/@xenova/transformers/src/utils/generation.js.map +1 -0
  171. package/dist/node_modules/@xenova/transformers/src/utils/hub.js +395 -0
  172. package/dist/node_modules/@xenova/transformers/src/utils/hub.js.map +1 -0
  173. package/dist/node_modules/@xenova/transformers/src/utils/image.js +12 -0
  174. package/dist/node_modules/@xenova/transformers/src/utils/image.js.map +1 -0
  175. package/dist/node_modules/@xenova/transformers/src/utils/maths.js +89 -0
  176. package/dist/node_modules/@xenova/transformers/src/utils/maths.js.map +1 -0
  177. package/dist/node_modules/@xenova/transformers/src/utils/tensor.js +750 -0
  178. package/dist/node_modules/@xenova/transformers/src/utils/tensor.js.map +1 -0
  179. package/dist/node_modules/fdir/dist/index.js +13 -13
  180. package/dist/node_modules/fdir/dist/index.js.map +1 -1
  181. package/dist/node_modules/onnxruntime-common/dist/lib/backend-impl.js +67 -0
  182. package/dist/node_modules/onnxruntime-common/dist/lib/backend-impl.js.map +1 -0
  183. package/dist/node_modules/onnxruntime-common/dist/lib/env-impl.js +24 -0
  184. package/dist/node_modules/onnxruntime-common/dist/lib/env-impl.js.map +1 -0
  185. package/dist/node_modules/onnxruntime-common/dist/lib/env.js +6 -0
  186. package/dist/node_modules/onnxruntime-common/dist/lib/env.js.map +1 -0
  187. package/dist/node_modules/onnxruntime-common/dist/lib/index.js +11 -0
  188. package/dist/node_modules/onnxruntime-common/dist/lib/index.js.map +1 -0
  189. package/dist/node_modules/onnxruntime-common/dist/lib/inference-session-impl.js +162 -0
  190. package/dist/node_modules/onnxruntime-common/dist/lib/inference-session-impl.js.map +1 -0
  191. package/dist/node_modules/onnxruntime-common/dist/lib/inference-session.js +6 -0
  192. package/dist/node_modules/onnxruntime-common/dist/lib/inference-session.js.map +1 -0
  193. package/dist/node_modules/onnxruntime-common/dist/lib/tensor-impl.js +393 -0
  194. package/dist/node_modules/onnxruntime-common/dist/lib/tensor-impl.js.map +1 -0
  195. package/dist/node_modules/onnxruntime-common/dist/lib/tensor.js +6 -0
  196. package/dist/node_modules/onnxruntime-common/dist/lib/tensor.js.map +1 -0
  197. package/dist/node_modules/onnxruntime-web/dist/ort-web.min.js +12919 -0
  198. package/dist/node_modules/onnxruntime-web/dist/ort-web.min.js.map +1 -0
  199. package/dist/node_modules/tinyglobby/dist/index.js +14 -14
  200. package/dist/node_modules/tinyglobby/dist/index.js.map +1 -1
  201. package/dist/node_modules/typescript/lib/typescript.js +24 -24
  202. package/dist/node_modules/typescript/lib/typescript.js.map +1 -1
  203. package/dist/transport/agent-transport.d.ts +269 -0
  204. package/dist/transport/agent-transport.d.ts.map +1 -0
  205. package/dist/transport/index.d.ts +10 -0
  206. package/dist/transport/index.d.ts.map +1 -0
  207. package/dist/vector/index.d.ts +1 -1
  208. package/dist/vector/index.d.ts.map +1 -1
  209. package/dist/vector/services/embedding-service.d.ts +244 -0
  210. package/dist/vector/services/embedding-service.d.ts.map +1 -0
  211. package/dist/vector/services/embedding-service.js +10 -0
  212. package/dist/vector/services/embedding-service.js.map +1 -0
  213. package/dist/vector/services/hybrid-search.d.ts +320 -0
  214. package/dist/vector/services/hybrid-search.d.ts.map +1 -0
  215. package/dist/vector/services/hybrid-search.js +3 -0
  216. package/dist/vector/services/hybrid-search.js.map +1 -0
  217. package/dist/vector/services/index.d.ts +4 -0
  218. package/dist/vector/services/index.d.ts.map +1 -1
  219. package/package.json +10 -1
@@ -0,0 +1,395 @@
1
+ /**
2
+ * Planner Agent
3
+ *
4
+ * Specialized agent for task planning, decomposition, dependency analysis,
5
+ * resource allocation, timeline estimation, and risk assessment.
6
+ * Extends BaseAgent with planning capabilities and knowledge graph integration.
7
+ *
8
+ * @module agents/planner-agent
9
+ */
10
+ import { BaseAgent } from './base-agent.js';
11
+ import { AgentType, type AgentTask, type AgentResult, type PlannerAgentConfig } from './types.js';
12
+ import { KnowledgeGraphManager } from '../core/graph.js';
13
+ /**
14
+ * Task priority levels for planning
15
+ */
16
+ export type PlannerPriority = 'critical' | 'high' | 'medium' | 'low';
17
+ /**
18
+ * Dependency relationship types
19
+ */
20
+ export type DependencyType = 'blocks' | 'requires' | 'suggests';
21
+ /**
22
+ * Risk probability levels
23
+ */
24
+ export type RiskProbability = 'high' | 'medium' | 'low';
25
+ /**
26
+ * Risk impact levels
27
+ */
28
+ export type RiskImpact = 'high' | 'medium' | 'low';
29
+ /**
30
+ * Task effort estimation
31
+ */
32
+ export interface EffortEstimate {
33
+ /** Minimum hours */
34
+ min: number;
35
+ /** Most likely hours */
36
+ likely: number;
37
+ /** Maximum hours */
38
+ max: number;
39
+ /** Calculated expected value (PERT) */
40
+ expected: number;
41
+ }
42
+ /**
43
+ * Subtask definition
44
+ */
45
+ export interface Subtask {
46
+ /** Unique subtask identifier */
47
+ id: string;
48
+ /** Task description */
49
+ description: string;
50
+ /** Estimated effort */
51
+ estimatedEffort: string;
52
+ /** Parsed effort estimate */
53
+ effortEstimate: EffortEstimate;
54
+ /** Required capabilities to execute */
55
+ requiredCapabilities: string[];
56
+ /** Dependencies on other subtask IDs */
57
+ dependencies: string[];
58
+ /** Task priority */
59
+ priority: PlannerPriority;
60
+ /** Optional assigned agent type */
61
+ assignedAgentType?: AgentType;
62
+ }
63
+ /**
64
+ * Task decomposition result
65
+ */
66
+ export interface TaskDecomposition {
67
+ /** Original root task description */
68
+ rootTask: string;
69
+ /** Decomposed subtasks */
70
+ subtasks: Subtask[];
71
+ /** Total estimated effort */
72
+ totalEstimate: string;
73
+ /** Total effort in hours */
74
+ totalHours: number;
75
+ /** Decomposition timestamp */
76
+ timestamp: Date;
77
+ }
78
+ /**
79
+ * Dependency graph node
80
+ */
81
+ export interface DependencyNode {
82
+ /** Node identifier */
83
+ id: string;
84
+ /** Node label/description */
85
+ label: string;
86
+ /** Node metadata */
87
+ metadata?: Record<string, unknown>;
88
+ }
89
+ /**
90
+ * Dependency graph edge
91
+ */
92
+ export interface DependencyEdge {
93
+ /** Source node ID */
94
+ from: string;
95
+ /** Target node ID */
96
+ to: string;
97
+ /** Relationship type */
98
+ type: DependencyType;
99
+ }
100
+ /**
101
+ * Dependency graph analysis result
102
+ */
103
+ export interface DependencyGraph {
104
+ /** Graph nodes */
105
+ nodes: DependencyNode[];
106
+ /** Graph edges */
107
+ edges: DependencyEdge[];
108
+ /** Critical path (longest path through graph) */
109
+ criticalPath: string[];
110
+ /** Sets of parallelizable tasks */
111
+ parallelizable: string[][];
112
+ /** Topological order for execution */
113
+ executionOrder: string[];
114
+ /** Detected cycles (should be empty for valid DAG) */
115
+ cycles: string[][];
116
+ }
117
+ /**
118
+ * Agent information for resource allocation
119
+ */
120
+ export interface AgentInfo {
121
+ /** Agent identifier */
122
+ id: string;
123
+ /** Agent type */
124
+ type: AgentType;
125
+ /** Agent capabilities */
126
+ capabilities: string[];
127
+ /** Current availability (0-1) */
128
+ availability: number;
129
+ /** Performance score (0-100) */
130
+ performanceScore?: number;
131
+ }
132
+ /**
133
+ * Resource assignment
134
+ */
135
+ export interface ResourceAssignment {
136
+ /** Task identifier */
137
+ taskId: string;
138
+ /** Assigned agent identifier */
139
+ agentId: string;
140
+ /** Agent type */
141
+ agentType: AgentType;
142
+ /** Planned start time */
143
+ startTime?: Date;
144
+ /** Estimated duration */
145
+ estimatedDuration: string;
146
+ /** Duration in hours */
147
+ durationHours: number;
148
+ /** Assignment confidence score */
149
+ confidence: number;
150
+ }
151
+ /**
152
+ * Resource allocation result
153
+ */
154
+ export interface ResourceAllocation {
155
+ /** Task-to-agent assignments */
156
+ assignments: ResourceAssignment[];
157
+ /** Agent utilization map (agent ID -> utilization percentage) */
158
+ utilization: Map<string, number>;
159
+ /** Identified bottlenecks */
160
+ bottlenecks: string[];
161
+ /** Unassigned tasks (no matching capability) */
162
+ unassignedTasks: string[];
163
+ /** Allocation timestamp */
164
+ timestamp: Date;
165
+ }
166
+ /**
167
+ * Milestone definition
168
+ */
169
+ export interface Milestone {
170
+ /** Milestone name */
171
+ name: string;
172
+ /** Target date */
173
+ date: Date;
174
+ /** Deliverables for this milestone */
175
+ deliverables: string[];
176
+ /** Task IDs that must complete for milestone */
177
+ requiredTasks: string[];
178
+ }
179
+ /**
180
+ * Phase definition
181
+ */
182
+ export interface Phase {
183
+ /** Phase name */
184
+ name: string;
185
+ /** Phase start date */
186
+ start: Date;
187
+ /** Phase end date */
188
+ end: Date;
189
+ /** Tasks in this phase */
190
+ tasks: string[];
191
+ /** Phase description */
192
+ description?: string;
193
+ }
194
+ /**
195
+ * Timeline estimate result
196
+ */
197
+ export interface TimelineEstimate {
198
+ /** Project start date */
199
+ startDate: Date;
200
+ /** Project end date */
201
+ endDate: Date;
202
+ /** Total duration in business days */
203
+ totalDays: number;
204
+ /** Project milestones */
205
+ milestones: Milestone[];
206
+ /** Project phases */
207
+ phases: Phase[];
208
+ /** Estimation confidence (0-100) */
209
+ confidence: number;
210
+ /** Buffer percentage included */
211
+ bufferPercentage: number;
212
+ /** Estimation timestamp */
213
+ timestamp: Date;
214
+ }
215
+ /**
216
+ * Risk definition
217
+ */
218
+ export interface Risk {
219
+ /** Risk identifier */
220
+ id: string;
221
+ /** Risk description */
222
+ description: string;
223
+ /** Probability of occurrence */
224
+ probability: RiskProbability;
225
+ /** Impact if it occurs */
226
+ impact: RiskImpact;
227
+ /** Risk score (probability * impact) */
228
+ score: number;
229
+ /** Mitigation strategy */
230
+ mitigation: string;
231
+ /** Contingency plan */
232
+ contingency: string;
233
+ /** Related task IDs */
234
+ relatedTasks?: string[];
235
+ /** Risk category */
236
+ category: 'technical' | 'resource' | 'schedule' | 'scope' | 'external';
237
+ }
238
+ /**
239
+ * Risk assessment result
240
+ */
241
+ export interface RiskAssessment {
242
+ /** Identified risks */
243
+ risks: Risk[];
244
+ /** Overall risk level */
245
+ overallRisk: RiskProbability;
246
+ /** Risk score (0-100) */
247
+ riskScore: number;
248
+ /** Recommendations for risk mitigation */
249
+ recommendations: string[];
250
+ /** Assessment timestamp */
251
+ timestamp: Date;
252
+ }
253
+ /**
254
+ * Complete execution plan
255
+ */
256
+ export interface ExecutionPlan {
257
+ /** Plan identifier */
258
+ id: string;
259
+ /** Plan name */
260
+ name: string;
261
+ /** Task decomposition */
262
+ decomposition: TaskDecomposition;
263
+ /** Dependency graph */
264
+ dependencies: DependencyGraph;
265
+ /** Resource allocation */
266
+ resources: ResourceAllocation;
267
+ /** Timeline estimate */
268
+ timeline: TimelineEstimate;
269
+ /** Risk assessment */
270
+ risks: RiskAssessment;
271
+ /** Plan status */
272
+ status: 'draft' | 'approved' | 'in_progress' | 'completed' | 'cancelled';
273
+ /** Plan creation timestamp */
274
+ createdAt: Date;
275
+ /** Last update timestamp */
276
+ updatedAt: Date;
277
+ }
278
+ /**
279
+ * Planner task type
280
+ */
281
+ export type PlannerTaskType = 'decompose' | 'dependencies' | 'allocate' | 'timeline' | 'risks' | 'plan';
282
+ /**
283
+ * Planner Agent
284
+ *
285
+ * Capabilities:
286
+ * - Hierarchical task decomposition
287
+ * - Dependency graph analysis with critical path
288
+ * - Capability-based resource allocation
289
+ * - Timeline estimation with milestones
290
+ * - Risk assessment with mitigations
291
+ *
292
+ * @example
293
+ * ```typescript
294
+ * const planner = new PlannerAgent({
295
+ * name: 'planner-agent',
296
+ * estimationStrategy: 'realistic',
297
+ * });
298
+ *
299
+ * const decomposition = await planner.decomposeTask(
300
+ * 'Build a REST API with authentication'
301
+ * );
302
+ *
303
+ * const plan = await planner.createExecutionPlan(
304
+ * 'API Project',
305
+ * 'Build a REST API with authentication',
306
+ * availableAgents
307
+ * );
308
+ * ```
309
+ */
310
+ export declare class PlannerAgent extends BaseAgent {
311
+ /** Knowledge graph reference */
312
+ private knowledgeGraph;
313
+ /** Estimation strategy */
314
+ private readonly estimationStrategy;
315
+ /** Include risk assessment by default */
316
+ private readonly includeRiskAssessment;
317
+ /** Maximum parallel tasks */
318
+ private readonly maxParallelTasks;
319
+ /** Task ID counter */
320
+ private taskIdCounter;
321
+ constructor(config: Partial<PlannerAgentConfig> & {
322
+ name: string;
323
+ });
324
+ /**
325
+ * Set knowledge graph for context-aware planning
326
+ */
327
+ setKnowledgeGraph(graph: KnowledgeGraphManager): void;
328
+ /**
329
+ * Execute planner task
330
+ */
331
+ protected executeTask(task: AgentTask): Promise<AgentResult>;
332
+ /**
333
+ * Decompose a complex task into subtasks
334
+ *
335
+ * Uses hierarchical decomposition to break down tasks
336
+ * into manageable, estimable units.
337
+ */
338
+ decomposeTask(task: string): Promise<TaskDecomposition>;
339
+ /**
340
+ * Generate subtasks from a task description
341
+ */
342
+ private generateSubtasks;
343
+ private identifyTaskPatterns;
344
+ private generateApiSubtasks;
345
+ private generateAuthSubtasks;
346
+ private generateDatabaseSubtasks;
347
+ private generateUiSubtasks;
348
+ private generateTestSubtasks;
349
+ private createSubtask;
350
+ private calculateEffortEstimate;
351
+ private setupDependencies;
352
+ /**
353
+ * Analyze dependencies between tasks and build a dependency graph
354
+ */
355
+ analyzeDependencies(subtasks: Subtask[]): Promise<DependencyGraph>;
356
+ private buildNodes;
357
+ private buildEdges;
358
+ private detectCycles;
359
+ private topologicalSort;
360
+ private findCriticalPath;
361
+ private findParallelGroups;
362
+ /**
363
+ * Allocate resources (agents) to tasks based on capabilities
364
+ */
365
+ allocateResources(subtasks: Subtask[], availableAgents: AgentInfo[]): Promise<ResourceAllocation>;
366
+ private findBestAgent;
367
+ private calculateCapabilityMatch;
368
+ private calculateAssignmentConfidence;
369
+ /**
370
+ * Estimate project timeline with milestones
371
+ */
372
+ estimateTimeline(decomposition: TaskDecomposition): Promise<TimelineEstimate>;
373
+ private createPhases;
374
+ private createMilestones;
375
+ private getPhaseDeliverables;
376
+ private calculateTimelineConfidence;
377
+ private addBusinessDays;
378
+ /**
379
+ * Assess risks in an execution plan
380
+ */
381
+ assessRisks(decomposition: TaskDecomposition, dependencies: DependencyGraph, resources?: ResourceAllocation): Promise<RiskAssessment>;
382
+ private generateRiskRecommendations;
383
+ /**
384
+ * Create a complete execution plan
385
+ */
386
+ createExecutionPlan(planName: string, task: string, availableAgents: AgentInfo[]): Promise<ExecutionPlan>;
387
+ private handleDecomposeTask;
388
+ private handleDependenciesTask;
389
+ private handleAllocateTask;
390
+ private handleTimelineTask;
391
+ private handleRisksTask;
392
+ private handlePlanTask;
393
+ private formatDuration;
394
+ }
395
+ //# sourceMappingURL=planner-agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planner-agent.d.ts","sourceRoot":"","sources":["../../src/agents/planner-agent.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/agents/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/agents/registry.ts"],"names":[],"mappings":"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"}
@@ -398,6 +398,11 @@ function registerDefaultAgents(registry, factories) {
398
398
  { name: "document", description: "Documentation generation" },
399
399
  { name: "format", description: "Documentation formatting" }
400
400
  ],
401
+ [AgentType.PLANNER]: [
402
+ { name: "plan", description: "Task planning and decomposition" },
403
+ { name: "schedule", description: "Timeline estimation" },
404
+ { name: "risk", description: "Risk assessment" }
405
+ ],
401
406
  [AgentType.CUSTOM]: []
402
407
  };
403
408
  for (const type of Object.values(AgentType)) {
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sources":["../../src/agents/registry.ts"],"sourcesContent":["/**\n * Agent Registry\n *\n * Manages agent type registration, instantiation, and lifecycle.\n * Provides a factory pattern for creating agents dynamically.\n *\n * @module agents/registry\n */\n\nimport { getLogger, type Logger } from '../utils/index.js';\nimport {\n AgentType,\n AgentStatus,\n type AgentConfig,\n type AgentFactory,\n type AgentInstance,\n type AgentState,\n type AgentCapability,\n type AgentHealthCheck,\n createAgentId,\n} from './types.js';\n\n// ============================================================================\n// Registry Types\n// ============================================================================\n\n/**\n * Agent registration entry\n */\ninterface AgentRegistration {\n /** Agent type */\n type: AgentType;\n\n /** Factory function */\n factory: AgentFactory;\n\n /** Default configuration */\n defaultConfig?: Partial<AgentConfig>;\n\n /** Agent capabilities */\n capabilities: AgentCapability[];\n\n /** Registration metadata */\n metadata?: Record<string, unknown>;\n\n /** Registration timestamp */\n registeredAt: Date;\n}\n\n/**\n * Registry configuration options\n */\nexport interface RegistryOptions {\n /** Logger instance */\n logger?: Logger;\n\n /** Maximum agents per type */\n maxAgentsPerType?: number;\n\n /** Default task timeout */\n defaultTimeout?: number;\n\n /** Enable health monitoring */\n enableHealthMonitoring?: boolean;\n\n /** Health check interval in ms */\n healthCheckInterval?: number;\n}\n\n/**\n * Agent spawn options\n */\nexport interface SpawnOptions {\n /** Custom agent ID */\n id?: string;\n\n /** Override default configuration */\n configOverrides?: Partial<AgentConfig>;\n\n /** Start immediately after spawn */\n autoStart?: boolean;\n}\n\n// ============================================================================\n// Agent Registry Class\n// ============================================================================\n\n/**\n * Agent Registry\n *\n * Central registry for managing agent types and instances.\n * Supports registration, spawning, lifecycle management, and health monitoring.\n *\n * @example\n * ```typescript\n * const registry = new AgentRegistry();\n *\n * // Register an agent type\n * registry.register(AgentType.RESEARCHER, researcherFactory, {\n * capabilities: [{ name: 'search', description: 'Search capabilities' }]\n * });\n *\n * // Spawn an agent\n * const agent = await registry.spawn(AgentType.RESEARCHER, {\n * name: 'Research Assistant',\n * });\n *\n * // Execute a task\n * const result = await agent.execute(task);\n * ```\n */\nexport class AgentRegistry {\n private registrations: Map<AgentType, AgentRegistration> = new Map();\n private instances: Map<string, AgentInstance> = new Map();\n private instancesByType: Map<AgentType, Set<string>> = new Map();\n private logger: Logger;\n private options: Required<RegistryOptions>;\n private healthCheckTimer?: NodeJS.Timeout;\n\n constructor(options: RegistryOptions = {}) {\n this.logger = options.logger ?? getLogger().child('agent-registry');\n this.options = {\n logger: this.logger,\n maxAgentsPerType: options.maxAgentsPerType ?? 10,\n defaultTimeout: options.defaultTimeout ?? 30000,\n enableHealthMonitoring: options.enableHealthMonitoring ?? false,\n healthCheckInterval: options.healthCheckInterval ?? 30000,\n };\n\n // Initialize type tracking\n for (const type of Object.values(AgentType)) {\n this.instancesByType.set(type, new Set());\n }\n\n // Start health monitoring if enabled\n if (this.options.enableHealthMonitoring) {\n this.startHealthMonitoring();\n }\n }\n\n // ============================================================================\n // Registration Methods\n // ============================================================================\n\n /**\n * Register an agent type with its factory function\n */\n register(\n type: AgentType,\n factory: AgentFactory,\n options?: {\n defaultConfig?: Partial<AgentConfig>;\n capabilities?: AgentCapability[];\n metadata?: Record<string, unknown>;\n }\n ): void {\n if (this.registrations.has(type)) {\n this.logger.warn(`Overwriting existing registration for agent type: ${type}`);\n }\n\n const registration: AgentRegistration = {\n type,\n factory,\n defaultConfig: options?.defaultConfig,\n capabilities: options?.capabilities ?? [],\n metadata: options?.metadata,\n registeredAt: new Date(),\n };\n\n this.registrations.set(type, registration);\n this.logger.info(`Registered agent type: ${type}`, {\n capabilities: registration.capabilities.map(c => c.name),\n });\n }\n\n /**\n * Unregister an agent type\n */\n unregister(type: AgentType): boolean {\n // Terminate all instances of this type first\n const instances = this.instancesByType.get(type);\n if (instances) {\n for (const id of instances) {\n void this.terminateAgent(id);\n }\n }\n\n const result = this.registrations.delete(type);\n if (result) {\n this.logger.info(`Unregistered agent type: ${type}`);\n }\n return result;\n }\n\n /**\n * Check if an agent type is registered\n */\n isRegistered(type: AgentType): boolean {\n return this.registrations.has(type);\n }\n\n /**\n * Get registration info for an agent type\n */\n getRegistration(type: AgentType): AgentRegistration | undefined {\n return this.registrations.get(type);\n }\n\n // ============================================================================\n // Agent Lifecycle Methods\n // ============================================================================\n\n /**\n * Spawn a new agent instance\n */\n async spawn(\n type: AgentType,\n config: Omit<AgentConfig, 'type'>,\n options?: SpawnOptions\n ): Promise<AgentInstance> {\n const registration = this.registrations.get(type);\n if (!registration) {\n throw new Error(`Agent type not registered: ${type}`);\n }\n\n // Check max agents limit\n const existingCount = this.instancesByType.get(type)?.size ?? 0;\n if (existingCount >= this.options.maxAgentsPerType) {\n throw new Error(\n `Maximum agents of type ${type} reached (${this.options.maxAgentsPerType})`\n );\n }\n\n // Merge configurations\n const fullConfig: AgentConfig = {\n ...registration.defaultConfig,\n ...config,\n type,\n id: options?.id ?? createAgentId(type),\n ...options?.configOverrides,\n };\n\n this.logger.debug(`Spawning agent: ${fullConfig.id}`, {\n type,\n name: fullConfig.name,\n });\n\n try {\n // Create agent using factory\n const agent = await registration.factory(fullConfig);\n\n // Track instance\n this.instances.set(fullConfig.id!, agent);\n this.instancesByType.get(type)?.add(fullConfig.id!);\n\n this.logger.info(`Agent spawned: ${fullConfig.id}`, {\n type,\n name: fullConfig.name,\n capabilities: fullConfig.capabilities,\n });\n\n return agent;\n } catch (error) {\n this.logger.error(\n `Failed to spawn agent: ${fullConfig.id}`,\n error instanceof Error ? error : new Error(String(error))\n );\n throw error;\n }\n }\n\n /**\n * Spawn multiple agents in parallel\n */\n async spawnMultiple(\n specs: Array<{\n type: AgentType;\n config: Omit<AgentConfig, 'type'>;\n options?: SpawnOptions;\n }>\n ): Promise<AgentInstance[]> {\n const results = await Promise.allSettled(\n specs.map(spec => this.spawn(spec.type, spec.config, spec.options))\n );\n\n const agents: AgentInstance[] = [];\n const errors: Error[] = [];\n\n for (const result of results) {\n if (result.status === 'fulfilled') {\n agents.push(result.value);\n } else {\n errors.push(result.reason);\n }\n }\n\n if (errors.length > 0) {\n this.logger.warn(`${errors.length} agents failed to spawn`, {\n totalRequested: specs.length,\n spawned: agents.length,\n failed: errors.length,\n });\n }\n\n return agents;\n }\n\n /**\n * Get an agent instance by ID\n */\n get(id: string): AgentInstance | undefined {\n return this.instances.get(id);\n }\n\n /**\n * Get all agent instances\n */\n getAll(): AgentInstance[] {\n return Array.from(this.instances.values());\n }\n\n /**\n * Get agents by type\n */\n getByType(type: AgentType): AgentInstance[] {\n const ids = this.instancesByType.get(type);\n if (!ids) return [];\n\n return Array.from(ids)\n .map(id => this.instances.get(id))\n .filter((agent): agent is AgentInstance => agent !== undefined);\n }\n\n /**\n * List all registered agent types\n */\n listTypes(): Array<{\n type: AgentType;\n capabilities: AgentCapability[];\n instanceCount: number;\n }> {\n return Array.from(this.registrations.entries()).map(([type, reg]) => ({\n type,\n capabilities: reg.capabilities,\n instanceCount: this.instancesByType.get(type)?.size ?? 0,\n }));\n }\n\n /**\n * List all active agent instances\n */\n listInstances(): Array<{\n id: string;\n type: AgentType;\n name: string;\n status: AgentStatus;\n }> {\n return Array.from(this.instances.entries()).map(([id, agent]) => ({\n id,\n type: agent.config.type,\n name: agent.config.name,\n status: agent.getStatus(),\n }));\n }\n\n /**\n * Terminate an agent instance\n */\n async terminateAgent(id: string): Promise<boolean> {\n const agent = this.instances.get(id);\n if (!agent) {\n return false;\n }\n\n try {\n await agent.terminate();\n this.instances.delete(id);\n this.instancesByType.get(agent.config.type)?.delete(id);\n\n this.logger.info(`Agent terminated: ${id}`);\n return true;\n } catch (error) {\n this.logger.error(\n `Failed to terminate agent: ${id}`,\n error instanceof Error ? error : new Error(String(error))\n );\n // Force remove from tracking even if termination failed\n this.instances.delete(id);\n this.instancesByType.get(agent.config.type)?.delete(id);\n return false;\n }\n }\n\n /**\n * Terminate all agents of a specific type\n */\n async terminateByType(type: AgentType): Promise<number> {\n const ids = this.instancesByType.get(type);\n if (!ids || ids.size === 0) return 0;\n\n const results = await Promise.allSettled(\n Array.from(ids).map(id => this.terminateAgent(id))\n );\n\n return results.filter(r => r.status === 'fulfilled' && r.value).length;\n }\n\n /**\n * Terminate all agents\n */\n async terminateAll(): Promise<number> {\n const ids = Array.from(this.instances.keys());\n const results = await Promise.allSettled(\n ids.map(id => this.terminateAgent(id))\n );\n\n return results.filter(r => r.status === 'fulfilled' && r.value).length;\n }\n\n // ============================================================================\n // Health Monitoring Methods\n // ============================================================================\n\n /**\n * Start health monitoring\n */\n private startHealthMonitoring(): void {\n if (this.healthCheckTimer) {\n clearInterval(this.healthCheckTimer);\n }\n\n this.healthCheckTimer = setInterval(async () => {\n await this.performHealthChecks();\n }, this.options.healthCheckInterval);\n\n this.logger.debug('Health monitoring started', {\n interval: this.options.healthCheckInterval,\n });\n }\n\n /**\n * Stop health monitoring\n */\n stopHealthMonitoring(): void {\n if (this.healthCheckTimer) {\n clearInterval(this.healthCheckTimer);\n this.healthCheckTimer = undefined;\n this.logger.debug('Health monitoring stopped');\n }\n }\n\n /**\n * Perform health checks on all agents\n */\n async performHealthChecks(): Promise<AgentHealthCheck[]> {\n const checks: AgentHealthCheck[] = [];\n\n for (const [id, agent] of this.instances) {\n const check: AgentHealthCheck = {\n agentId: id,\n healthy: true,\n status: agent.getStatus(),\n lastHeartbeat: new Date(),\n };\n\n // Check for stuck agents\n if (agent.state.status === AgentStatus.RUNNING) {\n const stuckThreshold = this.options.defaultTimeout * 2;\n const elapsed = Date.now() - agent.state.lastActivity.getTime();\n\n if (elapsed > stuckThreshold) {\n check.healthy = false;\n check.error = `Agent appears stuck (${elapsed}ms since last activity)`;\n }\n }\n\n // Check error count\n if (agent.state.errorCount > 5) {\n check.healthy = false;\n check.error = `High error count: ${agent.state.errorCount}`;\n }\n\n checks.push(check);\n\n if (!check.healthy) {\n this.logger.warn(`Unhealthy agent detected: ${id}`, {\n status: check.status,\n error: check.error,\n });\n }\n }\n\n return checks;\n }\n\n /**\n * Get health status for a specific agent\n */\n async getAgentHealth(id: string): Promise<AgentHealthCheck | null> {\n const agent = this.instances.get(id);\n if (!agent) return null;\n\n return {\n agentId: id,\n healthy: agent.state.errorCount < 5,\n status: agent.getStatus(),\n lastHeartbeat: agent.state.lastActivity,\n error: agent.state.errorCount >= 5\n ? `High error count: ${agent.state.errorCount}`\n : undefined,\n };\n }\n\n // ============================================================================\n // Utility Methods\n // ============================================================================\n\n /**\n * Get registry statistics\n */\n getStats(): {\n registeredTypes: number;\n totalInstances: number;\n instancesByType: Record<string, number>;\n instancesByStatus: Record<string, number>;\n } {\n const instancesByStatus: Record<string, number> = {};\n\n for (const agent of this.instances.values()) {\n const status = agent.getStatus();\n instancesByStatus[status] = (instancesByStatus[status] ?? 0) + 1;\n }\n\n return {\n registeredTypes: this.registrations.size,\n totalInstances: this.instances.size,\n instancesByType: Object.fromEntries(\n Array.from(this.instancesByType.entries()).map(([type, ids]) => [\n type,\n ids.size,\n ])\n ),\n instancesByStatus,\n };\n }\n\n /**\n * Clear all registrations and instances\n */\n async clear(): Promise<void> {\n await this.terminateAll();\n this.registrations.clear();\n this.stopHealthMonitoring();\n this.logger.info('Registry cleared');\n }\n\n /**\n * Dispose of the registry\n */\n async dispose(): Promise<void> {\n await this.clear();\n this.logger.info('Registry disposed');\n }\n}\n\n// ============================================================================\n// Default Registry Instance\n// ============================================================================\n\nlet defaultRegistry: AgentRegistry | null = null;\n\n/**\n * Get or create the default registry instance\n */\nexport function getRegistry(): AgentRegistry {\n if (!defaultRegistry) {\n defaultRegistry = new AgentRegistry();\n }\n return defaultRegistry;\n}\n\n/**\n * Create a new registry instance\n */\nexport function createRegistry(options?: RegistryOptions): AgentRegistry {\n return new AgentRegistry(options);\n}\n\n/**\n * Set the default registry instance\n */\nexport function setDefaultRegistry(registry: AgentRegistry): void {\n defaultRegistry = registry;\n}\n\n// ============================================================================\n// Built-in Agent Registration Helpers\n// ============================================================================\n\n/**\n * Register default agent types with a registry\n *\n * This registers placeholder factories that should be replaced\n * with actual implementations.\n */\nexport function registerDefaultAgents(\n registry: AgentRegistry,\n factories?: Partial<Record<AgentType, AgentFactory>>\n): void {\n const defaultCapabilities: Record<AgentType, AgentCapability[]> = {\n [AgentType.RESEARCHER]: [\n { name: 'search', description: 'Information search' },\n { name: 'analyze', description: 'Data analysis' },\n ],\n [AgentType.CODER]: [\n { name: 'code', description: 'Code generation' },\n { name: 'refactor', description: 'Code refactoring' },\n ],\n [AgentType.TESTER]: [\n { name: 'test', description: 'Test generation' },\n { name: 'coverage', description: 'Coverage analysis' },\n ],\n [AgentType.ANALYST]: [\n { name: 'analyze', description: 'Pattern analysis' },\n { name: 'report', description: 'Report generation' },\n ],\n [AgentType.ARCHITECT]: [\n { name: 'design', description: 'System design' },\n { name: 'document', description: 'Architecture documentation' },\n ],\n [AgentType.REVIEWER]: [\n { name: 'review', description: 'Code review' },\n { name: 'feedback', description: 'Feedback generation' },\n ],\n [AgentType.COORDINATOR]: [\n { name: 'orchestrate', description: 'Task orchestration' },\n { name: 'delegate', description: 'Task delegation' },\n ],\n [AgentType.OPTIMIZER]: [\n { name: 'optimize', description: 'Performance optimization' },\n { name: 'benchmark', description: 'Benchmarking' },\n ],\n [AgentType.DOCUMENTER]: [\n { name: 'document', description: 'Documentation generation' },\n { name: 'format', description: 'Documentation formatting' },\n ],\n [AgentType.CUSTOM]: [],\n };\n\n for (const type of Object.values(AgentType)) {\n const factory = factories?.[type];\n if (factory) {\n registry.register(type, factory, {\n capabilities: defaultCapabilities[type],\n });\n }\n }\n}\n"],"names":[],"mappings":";;AA+GO,MAAM,cAAc;AAAA,EACjB,oCAAuD,IAAA;AAAA,EACvD,gCAA4C,IAAA;AAAA,EAC5C,sCAAmD,IAAA;AAAA,EACnD;AAAA,EACA;AAAA,EACA;AAAA,EAER,YAAY,UAA2B,IAAI;AACzC,SAAK,SAAS,QAAQ,UAAU,UAAA,EAAY,MAAM,gBAAgB;AAClE,SAAK,UAAU;AAAA,MACb,QAAQ,KAAK;AAAA,MACb,kBAAkB,QAAQ,oBAAoB;AAAA,MAC9C,gBAAgB,QAAQ,kBAAkB;AAAA,MAC1C,wBAAwB,QAAQ,0BAA0B;AAAA,MAC1D,qBAAqB,QAAQ,uBAAuB;AAAA,IAAA;AAItD,eAAW,QAAQ,OAAO,OAAO,SAAS,GAAG;AAC3C,WAAK,gBAAgB,IAAI,MAAM,oBAAI,KAAK;AAAA,IAC1C;AAGA,QAAI,KAAK,QAAQ,wBAAwB;AACvC,WAAK,sBAAA;AAAA,IACP;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,SACE,MACA,SACA,SAKM;AACN,QAAI,KAAK,cAAc,IAAI,IAAI,GAAG;AAChC,WAAK,OAAO,KAAK,qDAAqD,IAAI,EAAE;AAAA,IAC9E;AAEA,UAAM,eAAkC;AAAA,MACtC;AAAA,MACA;AAAA,MACA,eAAe,SAAS;AAAA,MACxB,cAAc,SAAS,gBAAgB,CAAA;AAAA,MACvC,UAAU,SAAS;AAAA,MACnB,kCAAkB,KAAA;AAAA,IAAK;AAGzB,SAAK,cAAc,IAAI,MAAM,YAAY;AACzC,SAAK,OAAO,KAAK,0BAA0B,IAAI,IAAI;AAAA,MACjD,cAAc,aAAa,aAAa,IAAI,CAAA,MAAK,EAAE,IAAI;AAAA,IAAA,CACxD;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,WAAW,MAA0B;AAEnC,UAAM,YAAY,KAAK,gBAAgB,IAAI,IAAI;AAC/C,QAAI,WAAW;AACb,iBAAW,MAAM,WAAW;AAC1B,aAAK,KAAK,eAAe,EAAE;AAAA,MAC7B;AAAA,IACF;AAEA,UAAM,SAAS,KAAK,cAAc,OAAO,IAAI;AAC7C,QAAI,QAAQ;AACV,WAAK,OAAO,KAAK,4BAA4B,IAAI,EAAE;AAAA,IACrD;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,aAAa,MAA0B;AACrC,WAAO,KAAK,cAAc,IAAI,IAAI;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA,EAKA,gBAAgB,MAAgD;AAC9D,WAAO,KAAK,cAAc,IAAI,IAAI;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,MACJ,MACA,QACA,SACwB;AACxB,UAAM,eAAe,KAAK,cAAc,IAAI,IAAI;AAChD,QAAI,CAAC,cAAc;AACjB,YAAM,IAAI,MAAM,8BAA8B,IAAI,EAAE;AAAA,IACtD;AAGA,UAAM,gBAAgB,KAAK,gBAAgB,IAAI,IAAI,GAAG,QAAQ;AAC9D,QAAI,iBAAiB,KAAK,QAAQ,kBAAkB;AAClD,YAAM,IAAI;AAAA,QACR,0BAA0B,IAAI,aAAa,KAAK,QAAQ,gBAAgB;AAAA,MAAA;AAAA,IAE5E;AAGA,UAAM,aAA0B;AAAA,MAC9B,GAAG,aAAa;AAAA,MAChB,GAAG;AAAA,MACH;AAAA,MACA,IAAI,SAAS,MAAM,cAAc,IAAI;AAAA,MACrC,GAAG,SAAS;AAAA,IAAA;AAGd,SAAK,OAAO,MAAM,mBAAmB,WAAW,EAAE,IAAI;AAAA,MACpD;AAAA,MACA,MAAM,WAAW;AAAA,IAAA,CAClB;AAED,QAAI;AAEF,YAAM,QAAQ,MAAM,aAAa,QAAQ,UAAU;AAGnD,WAAK,UAAU,IAAI,WAAW,IAAK,KAAK;AACxC,WAAK,gBAAgB,IAAI,IAAI,GAAG,IAAI,WAAW,EAAG;AAElD,WAAK,OAAO,KAAK,kBAAkB,WAAW,EAAE,IAAI;AAAA,QAClD;AAAA,QACA,MAAM,WAAW;AAAA,QACjB,cAAc,WAAW;AAAA,MAAA,CAC1B;AAED,aAAO;AAAA,IACT,SAAS,OAAO;AACd,WAAK,OAAO;AAAA,QACV,0BAA0B,WAAW,EAAE;AAAA,QACvC,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,KAAK,CAAC;AAAA,MAAA;AAE1D,YAAM;AAAA,IACR;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,cACJ,OAK0B;AAC1B,UAAM,UAAU,MAAM,QAAQ;AAAA,MAC5B,MAAM,IAAI,CAAA,SAAQ,KAAK,MAAM,KAAK,MAAM,KAAK,QAAQ,KAAK,OAAO,CAAC;AAAA,IAAA;AAGpE,UAAM,SAA0B,CAAA;AAChC,UAAM,SAAkB,CAAA;AAExB,eAAW,UAAU,SAAS;AAC5B,UAAI,OAAO,WAAW,aAAa;AACjC,eAAO,KAAK,OAAO,KAAK;AAAA,MAC1B,OAAO;AACL,eAAO,KAAK,OAAO,MAAM;AAAA,MAC3B;AAAA,IACF;AAEA,QAAI,OAAO,SAAS,GAAG;AACrB,WAAK,OAAO,KAAK,GAAG,OAAO,MAAM,2BAA2B;AAAA,QAC1D,gBAAgB,MAAM;AAAA,QACtB,SAAS,OAAO;AAAA,QAChB,QAAQ,OAAO;AAAA,MAAA,CAChB;AAAA,IACH;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,IAAuC;AACzC,WAAO,KAAK,UAAU,IAAI,EAAE;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA,EAKA,SAA0B;AACxB,WAAO,MAAM,KAAK,KAAK,UAAU,QAAQ;AAAA,EAC3C;AAAA;AAAA;AAAA;AAAA,EAKA,UAAU,MAAkC;AAC1C,UAAM,MAAM,KAAK,gBAAgB,IAAI,IAAI;AACzC,QAAI,CAAC,IAAK,QAAO,CAAA;AAEjB,WAAO,MAAM,KAAK,GAAG,EAClB,IAAI,QAAM,KAAK,UAAU,IAAI,EAAE,CAAC,EAChC,OAAO,CAAC,UAAkC,UAAU,MAAS;AAAA,EAClE;AAAA;AAAA;AAAA;AAAA,EAKA,YAIG;AACD,WAAO,MAAM,KAAK,KAAK,cAAc,SAAS,EAAE,IAAI,CAAC,CAAC,MAAM,GAAG,OAAO;AAAA,MACpE;AAAA,MACA,cAAc,IAAI;AAAA,MAClB,eAAe,KAAK,gBAAgB,IAAI,IAAI,GAAG,QAAQ;AAAA,IAAA,EACvD;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAKA,gBAKG;AACD,WAAO,MAAM,KAAK,KAAK,UAAU,SAAS,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO;AAAA,MAChE;AAAA,MACA,MAAM,MAAM,OAAO;AAAA,MACnB,MAAM,MAAM,OAAO;AAAA,MACnB,QAAQ,MAAM,UAAA;AAAA,IAAU,EACxB;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,eAAe,IAA8B;AACjD,UAAM,QAAQ,KAAK,UAAU,IAAI,EAAE;AACnC,QAAI,CAAC,OAAO;AACV,aAAO;AAAA,IACT;AAEA,QAAI;AACF,YAAM,MAAM,UAAA;AACZ,WAAK,UAAU,OAAO,EAAE;AACxB,WAAK,gBAAgB,IAAI,MAAM,OAAO,IAAI,GAAG,OAAO,EAAE;AAEtD,WAAK,OAAO,KAAK,qBAAqB,EAAE,EAAE;AAC1C,aAAO;AAAA,IACT,SAAS,OAAO;AACd,WAAK,OAAO;AAAA,QACV,8BAA8B,EAAE;AAAA,QAChC,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,KAAK,CAAC;AAAA,MAAA;AAG1D,WAAK,UAAU,OAAO,EAAE;AACxB,WAAK,gBAAgB,IAAI,MAAM,OAAO,IAAI,GAAG,OAAO,EAAE;AACtD,aAAO;AAAA,IACT;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,gBAAgB,MAAkC;AACtD,UAAM,MAAM,KAAK,gBAAgB,IAAI,IAAI;AACzC,QAAI,CAAC,OAAO,IAAI,SAAS,EAAG,QAAO;AAEnC,UAAM,UAAU,MAAM,QAAQ;AAAA,MAC5B,MAAM,KAAK,GAAG,EAAE,IAAI,CAAA,OAAM,KAAK,eAAe,EAAE,CAAC;AAAA,IAAA;AAGnD,WAAO,QAAQ,OAAO,CAAA,MAAK,EAAE,WAAW,eAAe,EAAE,KAAK,EAAE;AAAA,EAClE;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,eAAgC;AACpC,UAAM,MAAM,MAAM,KAAK,KAAK,UAAU,MAAM;AAC5C,UAAM,UAAU,MAAM,QAAQ;AAAA,MAC5B,IAAI,IAAI,CAAA,OAAM,KAAK,eAAe,EAAE,CAAC;AAAA,IAAA;AAGvC,WAAO,QAAQ,OAAO,CAAA,MAAK,EAAE,WAAW,eAAe,EAAE,KAAK,EAAE;AAAA,EAClE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASQ,wBAA8B;AACpC,QAAI,KAAK,kBAAkB;AACzB,oBAAc,KAAK,gBAAgB;AAAA,IACrC;AAEA,SAAK,mBAAmB,YAAY,YAAY;AAC9C,YAAM,KAAK,oBAAA;AAAA,IACb,GAAG,KAAK,QAAQ,mBAAmB;AAEnC,SAAK,OAAO,MAAM,6BAA6B;AAAA,MAC7C,UAAU,KAAK,QAAQ;AAAA,IAAA,CACxB;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,uBAA6B;AAC3B,QAAI,KAAK,kBAAkB;AACzB,oBAAc,KAAK,gBAAgB;AACnC,WAAK,mBAAmB;AACxB,WAAK,OAAO,MAAM,2BAA2B;AAAA,IAC/C;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,sBAAmD;AACvD,UAAM,SAA6B,CAAA;AAEnC,eAAW,CAAC,IAAI,KAAK,KAAK,KAAK,WAAW;AACxC,YAAM,QAA0B;AAAA,QAC9B,SAAS;AAAA,QACT,SAAS;AAAA,QACT,QAAQ,MAAM,UAAA;AAAA,QACd,mCAAmB,KAAA;AAAA,MAAK;AAI1B,UAAI,MAAM,MAAM,WAAW,YAAY,SAAS;AAC9C,cAAM,iBAAiB,KAAK,QAAQ,iBAAiB;AACrD,cAAM,UAAU,KAAK,IAAA,IAAQ,MAAM,MAAM,aAAa,QAAA;AAEtD,YAAI,UAAU,gBAAgB;AAC5B,gBAAM,UAAU;AAChB,gBAAM,QAAQ,wBAAwB,OAAO;AAAA,QAC/C;AAAA,MACF;AAGA,UAAI,MAAM,MAAM,aAAa,GAAG;AAC9B,cAAM,UAAU;AAChB,cAAM,QAAQ,qBAAqB,MAAM,MAAM,UAAU;AAAA,MAC3D;AAEA,aAAO,KAAK,KAAK;AAEjB,UAAI,CAAC,MAAM,SAAS;AAClB,aAAK,OAAO,KAAK,6BAA6B,EAAE,IAAI;AAAA,UAClD,QAAQ,MAAM;AAAA,UACd,OAAO,MAAM;AAAA,QAAA,CACd;AAAA,MACH;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,eAAe,IAA8C;AACjE,UAAM,QAAQ,KAAK,UAAU,IAAI,EAAE;AACnC,QAAI,CAAC,MAAO,QAAO;AAEnB,WAAO;AAAA,MACL,SAAS;AAAA,MACT,SAAS,MAAM,MAAM,aAAa;AAAA,MAClC,QAAQ,MAAM,UAAA;AAAA,MACd,eAAe,MAAM,MAAM;AAAA,MAC3B,OAAO,MAAM,MAAM,cAAc,IAC7B,qBAAqB,MAAM,MAAM,UAAU,KAC3C;AAAA,IAAA;AAAA,EAER;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,WAKE;AACA,UAAM,oBAA4C,CAAA;AAElD,eAAW,SAAS,KAAK,UAAU,OAAA,GAAU;AAC3C,YAAM,SAAS,MAAM,UAAA;AACrB,wBAAkB,MAAM,KAAK,kBAAkB,MAAM,KAAK,KAAK;AAAA,IACjE;AAEA,WAAO;AAAA,MACL,iBAAiB,KAAK,cAAc;AAAA,MACpC,gBAAgB,KAAK,UAAU;AAAA,MAC/B,iBAAiB,OAAO;AAAA,QACtB,MAAM,KAAK,KAAK,gBAAgB,QAAA,CAAS,EAAE,IAAI,CAAC,CAAC,MAAM,GAAG,MAAM;AAAA,UAC9D;AAAA,UACA,IAAI;AAAA,QAAA,CACL;AAAA,MAAA;AAAA,MAEH;AAAA,IAAA;AAAA,EAEJ;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,QAAuB;AAC3B,UAAM,KAAK,aAAA;AACX,SAAK,cAAc,MAAA;AACnB,SAAK,qBAAA;AACL,SAAK,OAAO,KAAK,kBAAkB;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,UAAyB;AAC7B,UAAM,KAAK,MAAA;AACX,SAAK,OAAO,KAAK,mBAAmB;AAAA,EACtC;AACF;AAMA,IAAI,kBAAwC;AAKrC,SAAS,cAA6B;AAC3C,MAAI,CAAC,iBAAiB;AACpB,sBAAkB,IAAI,cAAA;AAAA,EACxB;AACA,SAAO;AACT;AAKO,SAAS,eAAe,SAA0C;AACvE,SAAO,IAAI,cAAc,OAAO;AAClC;AAKO,SAAS,mBAAmB,UAA+B;AAChE,oBAAkB;AACpB;AAYO,SAAS,sBACd,UACA,WACM;AACN,QAAM,sBAA4D;AAAA,IAChE,CAAC,UAAU,UAAU,GAAG;AAAA,MACtB,EAAE,MAAM,UAAU,aAAa,qBAAA;AAAA,MAC/B,EAAE,MAAM,WAAW,aAAa,gBAAA;AAAA,IAAgB;AAAA,IAElD,CAAC,UAAU,KAAK,GAAG;AAAA,MACjB,EAAE,MAAM,QAAQ,aAAa,kBAAA;AAAA,MAC7B,EAAE,MAAM,YAAY,aAAa,mBAAA;AAAA,IAAmB;AAAA,IAEtD,CAAC,UAAU,MAAM,GAAG;AAAA,MAClB,EAAE,MAAM,QAAQ,aAAa,kBAAA;AAAA,MAC7B,EAAE,MAAM,YAAY,aAAa,oBAAA;AAAA,IAAoB;AAAA,IAEvD,CAAC,UAAU,OAAO,GAAG;AAAA,MACnB,EAAE,MAAM,WAAW,aAAa,mBAAA;AAAA,MAChC,EAAE,MAAM,UAAU,aAAa,oBAAA;AAAA,IAAoB;AAAA,IAErD,CAAC,UAAU,SAAS,GAAG;AAAA,MACrB,EAAE,MAAM,UAAU,aAAa,gBAAA;AAAA,MAC/B,EAAE,MAAM,YAAY,aAAa,6BAAA;AAAA,IAA6B;AAAA,IAEhE,CAAC,UAAU,QAAQ,GAAG;AAAA,MACpB,EAAE,MAAM,UAAU,aAAa,cAAA;AAAA,MAC/B,EAAE,MAAM,YAAY,aAAa,sBAAA;AAAA,IAAsB;AAAA,IAEzD,CAAC,UAAU,WAAW,GAAG;AAAA,MACvB,EAAE,MAAM,eAAe,aAAa,qBAAA;AAAA,MACpC,EAAE,MAAM,YAAY,aAAa,kBAAA;AAAA,IAAkB;AAAA,IAErD,CAAC,UAAU,SAAS,GAAG;AAAA,MACrB,EAAE,MAAM,YAAY,aAAa,2BAAA;AAAA,MACjC,EAAE,MAAM,aAAa,aAAa,eAAA;AAAA,IAAe;AAAA,IAEnD,CAAC,UAAU,UAAU,GAAG;AAAA,MACtB,EAAE,MAAM,YAAY,aAAa,2BAAA;AAAA,MACjC,EAAE,MAAM,UAAU,aAAa,2BAAA;AAAA,IAA2B;AAAA,IAE5D,CAAC,UAAU,MAAM,GAAG,CAAA;AAAA,EAAC;AAGvB,aAAW,QAAQ,OAAO,OAAO,SAAS,GAAG;AAC3C,UAAM,UAAU,YAAY,IAAI;AAChC,QAAI,SAAS;AACX,eAAS,SAAS,MAAM,SAAS;AAAA,QAC/B,cAAc,oBAAoB,IAAI;AAAA,MAAA,CACvC;AAAA,IACH;AAAA,EACF;AACF;"}
1
+ {"version":3,"file":"registry.js","sources":["../../src/agents/registry.ts"],"sourcesContent":["/**\n * Agent Registry\n *\n * Manages agent type registration, instantiation, and lifecycle.\n * Provides a factory pattern for creating agents dynamically.\n *\n * @module agents/registry\n */\n\nimport { getLogger, type Logger } from '../utils/index.js';\nimport {\n AgentType,\n AgentStatus,\n type AgentConfig,\n type AgentFactory,\n type AgentInstance,\n type AgentState,\n type AgentCapability,\n type AgentHealthCheck,\n createAgentId,\n} from './types.js';\n\n// ============================================================================\n// Registry Types\n// ============================================================================\n\n/**\n * Agent registration entry\n */\ninterface AgentRegistration {\n /** Agent type */\n type: AgentType;\n\n /** Factory function */\n factory: AgentFactory;\n\n /** Default configuration */\n defaultConfig?: Partial<AgentConfig>;\n\n /** Agent capabilities */\n capabilities: AgentCapability[];\n\n /** Registration metadata */\n metadata?: Record<string, unknown>;\n\n /** Registration timestamp */\n registeredAt: Date;\n}\n\n/**\n * Registry configuration options\n */\nexport interface RegistryOptions {\n /** Logger instance */\n logger?: Logger;\n\n /** Maximum agents per type */\n maxAgentsPerType?: number;\n\n /** Default task timeout */\n defaultTimeout?: number;\n\n /** Enable health monitoring */\n enableHealthMonitoring?: boolean;\n\n /** Health check interval in ms */\n healthCheckInterval?: number;\n}\n\n/**\n * Agent spawn options\n */\nexport interface SpawnOptions {\n /** Custom agent ID */\n id?: string;\n\n /** Override default configuration */\n configOverrides?: Partial<AgentConfig>;\n\n /** Start immediately after spawn */\n autoStart?: boolean;\n}\n\n// ============================================================================\n// Agent Registry Class\n// ============================================================================\n\n/**\n * Agent Registry\n *\n * Central registry for managing agent types and instances.\n * Supports registration, spawning, lifecycle management, and health monitoring.\n *\n * @example\n * ```typescript\n * const registry = new AgentRegistry();\n *\n * // Register an agent type\n * registry.register(AgentType.RESEARCHER, researcherFactory, {\n * capabilities: [{ name: 'search', description: 'Search capabilities' }]\n * });\n *\n * // Spawn an agent\n * const agent = await registry.spawn(AgentType.RESEARCHER, {\n * name: 'Research Assistant',\n * });\n *\n * // Execute a task\n * const result = await agent.execute(task);\n * ```\n */\nexport class AgentRegistry {\n private registrations: Map<AgentType, AgentRegistration> = new Map();\n private instances: Map<string, AgentInstance> = new Map();\n private instancesByType: Map<AgentType, Set<string>> = new Map();\n private logger: Logger;\n private options: Required<RegistryOptions>;\n private healthCheckTimer?: NodeJS.Timeout;\n\n constructor(options: RegistryOptions = {}) {\n this.logger = options.logger ?? getLogger().child('agent-registry');\n this.options = {\n logger: this.logger,\n maxAgentsPerType: options.maxAgentsPerType ?? 10,\n defaultTimeout: options.defaultTimeout ?? 30000,\n enableHealthMonitoring: options.enableHealthMonitoring ?? false,\n healthCheckInterval: options.healthCheckInterval ?? 30000,\n };\n\n // Initialize type tracking\n for (const type of Object.values(AgentType)) {\n this.instancesByType.set(type, new Set());\n }\n\n // Start health monitoring if enabled\n if (this.options.enableHealthMonitoring) {\n this.startHealthMonitoring();\n }\n }\n\n // ============================================================================\n // Registration Methods\n // ============================================================================\n\n /**\n * Register an agent type with its factory function\n */\n register(\n type: AgentType,\n factory: AgentFactory,\n options?: {\n defaultConfig?: Partial<AgentConfig>;\n capabilities?: AgentCapability[];\n metadata?: Record<string, unknown>;\n }\n ): void {\n if (this.registrations.has(type)) {\n this.logger.warn(`Overwriting existing registration for agent type: ${type}`);\n }\n\n const registration: AgentRegistration = {\n type,\n factory,\n defaultConfig: options?.defaultConfig,\n capabilities: options?.capabilities ?? [],\n metadata: options?.metadata,\n registeredAt: new Date(),\n };\n\n this.registrations.set(type, registration);\n this.logger.info(`Registered agent type: ${type}`, {\n capabilities: registration.capabilities.map(c => c.name),\n });\n }\n\n /**\n * Unregister an agent type\n */\n unregister(type: AgentType): boolean {\n // Terminate all instances of this type first\n const instances = this.instancesByType.get(type);\n if (instances) {\n for (const id of instances) {\n void this.terminateAgent(id);\n }\n }\n\n const result = this.registrations.delete(type);\n if (result) {\n this.logger.info(`Unregistered agent type: ${type}`);\n }\n return result;\n }\n\n /**\n * Check if an agent type is registered\n */\n isRegistered(type: AgentType): boolean {\n return this.registrations.has(type);\n }\n\n /**\n * Get registration info for an agent type\n */\n getRegistration(type: AgentType): AgentRegistration | undefined {\n return this.registrations.get(type);\n }\n\n // ============================================================================\n // Agent Lifecycle Methods\n // ============================================================================\n\n /**\n * Spawn a new agent instance\n */\n async spawn(\n type: AgentType,\n config: Omit<AgentConfig, 'type'>,\n options?: SpawnOptions\n ): Promise<AgentInstance> {\n const registration = this.registrations.get(type);\n if (!registration) {\n throw new Error(`Agent type not registered: ${type}`);\n }\n\n // Check max agents limit\n const existingCount = this.instancesByType.get(type)?.size ?? 0;\n if (existingCount >= this.options.maxAgentsPerType) {\n throw new Error(\n `Maximum agents of type ${type} reached (${this.options.maxAgentsPerType})`\n );\n }\n\n // Merge configurations\n const fullConfig: AgentConfig = {\n ...registration.defaultConfig,\n ...config,\n type,\n id: options?.id ?? createAgentId(type),\n ...options?.configOverrides,\n };\n\n this.logger.debug(`Spawning agent: ${fullConfig.id}`, {\n type,\n name: fullConfig.name,\n });\n\n try {\n // Create agent using factory\n const agent = await registration.factory(fullConfig);\n\n // Track instance\n this.instances.set(fullConfig.id!, agent);\n this.instancesByType.get(type)?.add(fullConfig.id!);\n\n this.logger.info(`Agent spawned: ${fullConfig.id}`, {\n type,\n name: fullConfig.name,\n capabilities: fullConfig.capabilities,\n });\n\n return agent;\n } catch (error) {\n this.logger.error(\n `Failed to spawn agent: ${fullConfig.id}`,\n error instanceof Error ? error : new Error(String(error))\n );\n throw error;\n }\n }\n\n /**\n * Spawn multiple agents in parallel\n */\n async spawnMultiple(\n specs: Array<{\n type: AgentType;\n config: Omit<AgentConfig, 'type'>;\n options?: SpawnOptions;\n }>\n ): Promise<AgentInstance[]> {\n const results = await Promise.allSettled(\n specs.map(spec => this.spawn(spec.type, spec.config, spec.options))\n );\n\n const agents: AgentInstance[] = [];\n const errors: Error[] = [];\n\n for (const result of results) {\n if (result.status === 'fulfilled') {\n agents.push(result.value);\n } else {\n errors.push(result.reason);\n }\n }\n\n if (errors.length > 0) {\n this.logger.warn(`${errors.length} agents failed to spawn`, {\n totalRequested: specs.length,\n spawned: agents.length,\n failed: errors.length,\n });\n }\n\n return agents;\n }\n\n /**\n * Get an agent instance by ID\n */\n get(id: string): AgentInstance | undefined {\n return this.instances.get(id);\n }\n\n /**\n * Get all agent instances\n */\n getAll(): AgentInstance[] {\n return Array.from(this.instances.values());\n }\n\n /**\n * Get agents by type\n */\n getByType(type: AgentType): AgentInstance[] {\n const ids = this.instancesByType.get(type);\n if (!ids) return [];\n\n return Array.from(ids)\n .map(id => this.instances.get(id))\n .filter((agent): agent is AgentInstance => agent !== undefined);\n }\n\n /**\n * List all registered agent types\n */\n listTypes(): Array<{\n type: AgentType;\n capabilities: AgentCapability[];\n instanceCount: number;\n }> {\n return Array.from(this.registrations.entries()).map(([type, reg]) => ({\n type,\n capabilities: reg.capabilities,\n instanceCount: this.instancesByType.get(type)?.size ?? 0,\n }));\n }\n\n /**\n * List all active agent instances\n */\n listInstances(): Array<{\n id: string;\n type: AgentType;\n name: string;\n status: AgentStatus;\n }> {\n return Array.from(this.instances.entries()).map(([id, agent]) => ({\n id,\n type: agent.config.type,\n name: agent.config.name,\n status: agent.getStatus(),\n }));\n }\n\n /**\n * Terminate an agent instance\n */\n async terminateAgent(id: string): Promise<boolean> {\n const agent = this.instances.get(id);\n if (!agent) {\n return false;\n }\n\n try {\n await agent.terminate();\n this.instances.delete(id);\n this.instancesByType.get(agent.config.type)?.delete(id);\n\n this.logger.info(`Agent terminated: ${id}`);\n return true;\n } catch (error) {\n this.logger.error(\n `Failed to terminate agent: ${id}`,\n error instanceof Error ? error : new Error(String(error))\n );\n // Force remove from tracking even if termination failed\n this.instances.delete(id);\n this.instancesByType.get(agent.config.type)?.delete(id);\n return false;\n }\n }\n\n /**\n * Terminate all agents of a specific type\n */\n async terminateByType(type: AgentType): Promise<number> {\n const ids = this.instancesByType.get(type);\n if (!ids || ids.size === 0) return 0;\n\n const results = await Promise.allSettled(\n Array.from(ids).map(id => this.terminateAgent(id))\n );\n\n return results.filter(r => r.status === 'fulfilled' && r.value).length;\n }\n\n /**\n * Terminate all agents\n */\n async terminateAll(): Promise<number> {\n const ids = Array.from(this.instances.keys());\n const results = await Promise.allSettled(\n ids.map(id => this.terminateAgent(id))\n );\n\n return results.filter(r => r.status === 'fulfilled' && r.value).length;\n }\n\n // ============================================================================\n // Health Monitoring Methods\n // ============================================================================\n\n /**\n * Start health monitoring\n */\n private startHealthMonitoring(): void {\n if (this.healthCheckTimer) {\n clearInterval(this.healthCheckTimer);\n }\n\n this.healthCheckTimer = setInterval(async () => {\n await this.performHealthChecks();\n }, this.options.healthCheckInterval);\n\n this.logger.debug('Health monitoring started', {\n interval: this.options.healthCheckInterval,\n });\n }\n\n /**\n * Stop health monitoring\n */\n stopHealthMonitoring(): void {\n if (this.healthCheckTimer) {\n clearInterval(this.healthCheckTimer);\n this.healthCheckTimer = undefined;\n this.logger.debug('Health monitoring stopped');\n }\n }\n\n /**\n * Perform health checks on all agents\n */\n async performHealthChecks(): Promise<AgentHealthCheck[]> {\n const checks: AgentHealthCheck[] = [];\n\n for (const [id, agent] of this.instances) {\n const check: AgentHealthCheck = {\n agentId: id,\n healthy: true,\n status: agent.getStatus(),\n lastHeartbeat: new Date(),\n };\n\n // Check for stuck agents\n if (agent.state.status === AgentStatus.RUNNING) {\n const stuckThreshold = this.options.defaultTimeout * 2;\n const elapsed = Date.now() - agent.state.lastActivity.getTime();\n\n if (elapsed > stuckThreshold) {\n check.healthy = false;\n check.error = `Agent appears stuck (${elapsed}ms since last activity)`;\n }\n }\n\n // Check error count\n if (agent.state.errorCount > 5) {\n check.healthy = false;\n check.error = `High error count: ${agent.state.errorCount}`;\n }\n\n checks.push(check);\n\n if (!check.healthy) {\n this.logger.warn(`Unhealthy agent detected: ${id}`, {\n status: check.status,\n error: check.error,\n });\n }\n }\n\n return checks;\n }\n\n /**\n * Get health status for a specific agent\n */\n async getAgentHealth(id: string): Promise<AgentHealthCheck | null> {\n const agent = this.instances.get(id);\n if (!agent) return null;\n\n return {\n agentId: id,\n healthy: agent.state.errorCount < 5,\n status: agent.getStatus(),\n lastHeartbeat: agent.state.lastActivity,\n error: agent.state.errorCount >= 5\n ? `High error count: ${agent.state.errorCount}`\n : undefined,\n };\n }\n\n // ============================================================================\n // Utility Methods\n // ============================================================================\n\n /**\n * Get registry statistics\n */\n getStats(): {\n registeredTypes: number;\n totalInstances: number;\n instancesByType: Record<string, number>;\n instancesByStatus: Record<string, number>;\n } {\n const instancesByStatus: Record<string, number> = {};\n\n for (const agent of this.instances.values()) {\n const status = agent.getStatus();\n instancesByStatus[status] = (instancesByStatus[status] ?? 0) + 1;\n }\n\n return {\n registeredTypes: this.registrations.size,\n totalInstances: this.instances.size,\n instancesByType: Object.fromEntries(\n Array.from(this.instancesByType.entries()).map(([type, ids]) => [\n type,\n ids.size,\n ])\n ),\n instancesByStatus,\n };\n }\n\n /**\n * Clear all registrations and instances\n */\n async clear(): Promise<void> {\n await this.terminateAll();\n this.registrations.clear();\n this.stopHealthMonitoring();\n this.logger.info('Registry cleared');\n }\n\n /**\n * Dispose of the registry\n */\n async dispose(): Promise<void> {\n await this.clear();\n this.logger.info('Registry disposed');\n }\n}\n\n// ============================================================================\n// Default Registry Instance\n// ============================================================================\n\nlet defaultRegistry: AgentRegistry | null = null;\n\n/**\n * Get or create the default registry instance\n */\nexport function getRegistry(): AgentRegistry {\n if (!defaultRegistry) {\n defaultRegistry = new AgentRegistry();\n }\n return defaultRegistry;\n}\n\n/**\n * Create a new registry instance\n */\nexport function createRegistry(options?: RegistryOptions): AgentRegistry {\n return new AgentRegistry(options);\n}\n\n/**\n * Set the default registry instance\n */\nexport function setDefaultRegistry(registry: AgentRegistry): void {\n defaultRegistry = registry;\n}\n\n// ============================================================================\n// Built-in Agent Registration Helpers\n// ============================================================================\n\n/**\n * Register default agent types with a registry\n *\n * This registers placeholder factories that should be replaced\n * with actual implementations.\n */\nexport function registerDefaultAgents(\n registry: AgentRegistry,\n factories?: Partial<Record<AgentType, AgentFactory>>\n): void {\n const defaultCapabilities: Record<AgentType, AgentCapability[]> = {\n [AgentType.RESEARCHER]: [\n { name: 'search', description: 'Information search' },\n { name: 'analyze', description: 'Data analysis' },\n ],\n [AgentType.CODER]: [\n { name: 'code', description: 'Code generation' },\n { name: 'refactor', description: 'Code refactoring' },\n ],\n [AgentType.TESTER]: [\n { name: 'test', description: 'Test generation' },\n { name: 'coverage', description: 'Coverage analysis' },\n ],\n [AgentType.ANALYST]: [\n { name: 'analyze', description: 'Pattern analysis' },\n { name: 'report', description: 'Report generation' },\n ],\n [AgentType.ARCHITECT]: [\n { name: 'design', description: 'System design' },\n { name: 'document', description: 'Architecture documentation' },\n ],\n [AgentType.REVIEWER]: [\n { name: 'review', description: 'Code review' },\n { name: 'feedback', description: 'Feedback generation' },\n ],\n [AgentType.COORDINATOR]: [\n { name: 'orchestrate', description: 'Task orchestration' },\n { name: 'delegate', description: 'Task delegation' },\n ],\n [AgentType.OPTIMIZER]: [\n { name: 'optimize', description: 'Performance optimization' },\n { name: 'benchmark', description: 'Benchmarking' },\n ],\n [AgentType.DOCUMENTER]: [\n { name: 'document', description: 'Documentation generation' },\n { name: 'format', description: 'Documentation formatting' },\n ],\n [AgentType.PLANNER]: [\n { name: 'plan', description: 'Task planning and decomposition' },\n { name: 'schedule', description: 'Timeline estimation' },\n { name: 'risk', description: 'Risk assessment' },\n ],\n [AgentType.CUSTOM]: [],\n };\n\n for (const type of Object.values(AgentType)) {\n const factory = factories?.[type];\n if (factory) {\n registry.register(type, factory, {\n capabilities: defaultCapabilities[type],\n });\n }\n }\n}\n"],"names":[],"mappings":"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"}