digital-workers 2.1.1 → 2.3.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 (197) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +136 -180
  3. package/dist/actions.d.ts.map +1 -1
  4. package/dist/actions.js +34 -21
  5. package/dist/actions.js.map +1 -1
  6. package/dist/agent-comms.d.ts +438 -0
  7. package/dist/agent-comms.d.ts.map +1 -0
  8. package/dist/agent-comms.js +677 -0
  9. package/dist/agent-comms.js.map +1 -0
  10. package/dist/approve.d.ts +40 -8
  11. package/dist/approve.d.ts.map +1 -1
  12. package/dist/approve.js +86 -20
  13. package/dist/approve.js.map +1 -1
  14. package/dist/ask.d.ts +38 -7
  15. package/dist/ask.d.ts.map +1 -1
  16. package/dist/ask.js +85 -25
  17. package/dist/ask.js.map +1 -1
  18. package/dist/browse.d.ts +223 -0
  19. package/dist/browse.d.ts.map +1 -0
  20. package/dist/browse.js +392 -0
  21. package/dist/browse.js.map +1 -0
  22. package/dist/capability-tiers.d.ts +230 -0
  23. package/dist/capability-tiers.d.ts.map +1 -0
  24. package/dist/capability-tiers.js +388 -0
  25. package/dist/capability-tiers.js.map +1 -0
  26. package/dist/cascade-context.d.ts +523 -0
  27. package/dist/cascade-context.d.ts.map +1 -0
  28. package/dist/cascade-context.js +494 -0
  29. package/dist/cascade-context.js.map +1 -0
  30. package/dist/client.d.ts +162 -0
  31. package/dist/client.d.ts.map +1 -0
  32. package/dist/client.js +64 -0
  33. package/dist/client.js.map +1 -0
  34. package/dist/decide.d.ts +42 -6
  35. package/dist/decide.d.ts.map +1 -1
  36. package/dist/decide.js +54 -11
  37. package/dist/decide.js.map +1 -1
  38. package/dist/do.d.ts +36 -7
  39. package/dist/do.d.ts.map +1 -1
  40. package/dist/do.js +82 -39
  41. package/dist/do.js.map +1 -1
  42. package/dist/error-escalation.d.ts +416 -0
  43. package/dist/error-escalation.d.ts.map +1 -0
  44. package/dist/error-escalation.js +656 -0
  45. package/dist/error-escalation.js.map +1 -0
  46. package/dist/generate.d.ts +48 -7
  47. package/dist/generate.d.ts.map +1 -1
  48. package/dist/generate.js +49 -8
  49. package/dist/generate.js.map +1 -1
  50. package/dist/goals.d.ts +10 -9
  51. package/dist/goals.d.ts.map +1 -1
  52. package/dist/goals.js +30 -24
  53. package/dist/goals.js.map +1 -1
  54. package/dist/image.d.ts +189 -0
  55. package/dist/image.d.ts.map +1 -0
  56. package/dist/image.js +528 -0
  57. package/dist/image.js.map +1 -0
  58. package/dist/index.d.ts +59 -2
  59. package/dist/index.d.ts.map +1 -1
  60. package/dist/index.js +92 -2
  61. package/dist/index.js.map +1 -1
  62. package/dist/is.d.ts +45 -10
  63. package/dist/is.d.ts.map +1 -1
  64. package/dist/is.js +56 -21
  65. package/dist/is.js.map +1 -1
  66. package/dist/kpis.d.ts +24 -15
  67. package/dist/kpis.d.ts.map +1 -1
  68. package/dist/kpis.js +16 -14
  69. package/dist/kpis.js.map +1 -1
  70. package/dist/load-balancing.d.ts +395 -0
  71. package/dist/load-balancing.d.ts.map +1 -0
  72. package/dist/load-balancing.js +991 -0
  73. package/dist/load-balancing.js.map +1 -0
  74. package/dist/logger.d.ts +76 -0
  75. package/dist/logger.d.ts.map +1 -0
  76. package/dist/logger.js +39 -0
  77. package/dist/logger.js.map +1 -0
  78. package/dist/notify.d.ts +38 -9
  79. package/dist/notify.d.ts.map +1 -1
  80. package/dist/notify.js +72 -17
  81. package/dist/notify.js.map +1 -1
  82. package/dist/role.d.ts +5 -4
  83. package/dist/role.d.ts.map +1 -1
  84. package/dist/role.js +13 -10
  85. package/dist/role.js.map +1 -1
  86. package/dist/runtime.d.ts +310 -0
  87. package/dist/runtime.d.ts.map +1 -0
  88. package/dist/runtime.js +510 -0
  89. package/dist/runtime.js.map +1 -0
  90. package/dist/team.d.ts +11 -6
  91. package/dist/team.d.ts.map +1 -1
  92. package/dist/team.js +22 -15
  93. package/dist/team.js.map +1 -1
  94. package/dist/transports/email.d.ts +318 -0
  95. package/dist/transports/email.d.ts.map +1 -0
  96. package/dist/transports/email.js +779 -0
  97. package/dist/transports/email.js.map +1 -0
  98. package/dist/transports/slack.d.ts +515 -0
  99. package/dist/transports/slack.d.ts.map +1 -0
  100. package/dist/transports/slack.js +844 -0
  101. package/dist/transports/slack.js.map +1 -0
  102. package/dist/transports.d.ts.map +1 -1
  103. package/dist/transports.js +44 -25
  104. package/dist/transports.js.map +1 -1
  105. package/dist/types.d.ts +149 -19
  106. package/dist/types.d.ts.map +1 -1
  107. package/dist/types.js +6 -0
  108. package/dist/types.js.map +1 -1
  109. package/dist/utils/id.d.ts +19 -0
  110. package/dist/utils/id.d.ts.map +1 -0
  111. package/dist/utils/id.js +21 -0
  112. package/dist/utils/id.js.map +1 -0
  113. package/dist/video.d.ts +203 -0
  114. package/dist/video.d.ts.map +1 -0
  115. package/dist/video.js +528 -0
  116. package/dist/video.js.map +1 -0
  117. package/dist/worker.d.ts +343 -0
  118. package/dist/worker.d.ts.map +1 -0
  119. package/dist/worker.js +698 -0
  120. package/dist/worker.js.map +1 -0
  121. package/package.json +24 -5
  122. package/src/actions.ts +48 -38
  123. package/src/agent-comms.ts +1200 -0
  124. package/src/approve.ts +91 -20
  125. package/src/ask.ts +99 -25
  126. package/src/browse.ts +627 -0
  127. package/src/capability-tiers.ts +545 -0
  128. package/src/cascade-context.ts +648 -0
  129. package/src/client.ts +221 -0
  130. package/src/decide.ts +81 -35
  131. package/src/do.ts +98 -52
  132. package/src/error-escalation.ts +1123 -0
  133. package/src/generate.ts +52 -18
  134. package/src/goals.ts +36 -27
  135. package/src/image.ts +816 -0
  136. package/src/index.ts +410 -2
  137. package/src/is.ts +59 -25
  138. package/src/kpis.ts +41 -36
  139. package/src/load-balancing.ts +1467 -0
  140. package/src/logger.ts +93 -0
  141. package/src/notify.ts +78 -17
  142. package/src/role.ts +30 -20
  143. package/src/runtime.ts +796 -0
  144. package/src/team.ts +24 -19
  145. package/src/transports/email.ts +1160 -0
  146. package/src/transports/slack.ts +1320 -0
  147. package/src/transports.ts +58 -43
  148. package/src/types.ts +182 -46
  149. package/src/utils/id.ts +21 -0
  150. package/src/video.ts +906 -0
  151. package/src/worker.ts +1007 -0
  152. package/test/agent-comms.test.ts +1397 -0
  153. package/test/approve.test.ts +305 -0
  154. package/test/ask.test.ts +274 -0
  155. package/test/browse.test.ts +361 -0
  156. package/test/capability-tiers.test.ts +631 -0
  157. package/test/cascade-context.test.ts +692 -0
  158. package/test/decide.test.ts +252 -0
  159. package/test/do.test.ts +144 -0
  160. package/test/error-escalation.test.ts +1205 -0
  161. package/test/error-logging.test.ts +357 -0
  162. package/test/generate.test.ts +319 -0
  163. package/test/image.test.ts +398 -0
  164. package/test/is.test.ts +287 -0
  165. package/test/load-balancing-safety.test.ts +404 -0
  166. package/test/load-balancing-thread-safety.test.ts +464 -0
  167. package/test/load-balancing.test.ts +1145 -0
  168. package/test/notify.test.ts +434 -0
  169. package/test/primitives.test.ts +320 -0
  170. package/test/runtime-integration.test.ts +892 -0
  171. package/test/transports/crypto.test.ts +230 -0
  172. package/test/transports/email.test.ts +866 -0
  173. package/test/transports/id-generation.test.ts +91 -0
  174. package/test/transports/slack.test.ts +760 -0
  175. package/test/type-safety.test.ts +834 -0
  176. package/test/types.test.ts +95 -2
  177. package/test/video.test.ts +530 -0
  178. package/test/worker.test.ts +1433 -0
  179. package/tsconfig.json +4 -1
  180. package/vitest.config.ts +42 -0
  181. package/wrangler.jsonc +36 -0
  182. package/.turbo/turbo-build.log +0 -5
  183. package/src/actions.js +0 -436
  184. package/src/approve.js +0 -234
  185. package/src/ask.js +0 -226
  186. package/src/decide.js +0 -244
  187. package/src/do.js +0 -227
  188. package/src/generate.js +0 -298
  189. package/src/goals.js +0 -205
  190. package/src/index.js +0 -68
  191. package/src/is.js +0 -317
  192. package/src/kpis.js +0 -270
  193. package/src/notify.js +0 -219
  194. package/src/role.js +0 -110
  195. package/src/team.js +0 -130
  196. package/src/transports.js +0 -357
  197. package/src/types.js +0 -71
@@ -0,0 +1,395 @@
1
+ /**
2
+ * Load Balancing and Routing for Agent Coordination
3
+ *
4
+ * Provides intelligent task distribution and priority-based handling for
5
+ * coordinating work across multiple agents. Includes multiple balancing
6
+ * strategies, capability-based routing, and comprehensive metrics.
7
+ *
8
+ * @packageDocumentation
9
+ */
10
+ import type { WorkerStatus, Contacts } from './types.js';
11
+ /**
12
+ * Balancer strategy identifier
13
+ */
14
+ export type BalancerStrategy = 'round-robin' | 'least-busy' | 'capability' | 'priority-queue' | 'custom';
15
+ /**
16
+ * Extended agent information for load balancing
17
+ */
18
+ export interface AgentInfo {
19
+ id: string;
20
+ name: string;
21
+ type: 'agent';
22
+ status: WorkerStatus;
23
+ skills: string[];
24
+ currentLoad: number;
25
+ maxLoad: number;
26
+ contacts: Contacts;
27
+ metadata: Record<string, unknown>;
28
+ }
29
+ /**
30
+ * Task request for routing
31
+ */
32
+ export interface TaskRequest {
33
+ id: string;
34
+ name: string;
35
+ requiredSkills: string[];
36
+ priority: number;
37
+ metadata: Record<string, unknown>;
38
+ enqueuedAt?: Date;
39
+ }
40
+ /**
41
+ * Result of a routing decision
42
+ */
43
+ export interface RouteResult {
44
+ agent: AgentInfo | null;
45
+ task: TaskRequest;
46
+ strategy: BalancerStrategy;
47
+ timestamp: Date;
48
+ reason?: string;
49
+ matchScore?: number;
50
+ matchedRule?: string | null;
51
+ usedDefault?: boolean;
52
+ usedFallback?: boolean;
53
+ strategies?: BalancerStrategy[];
54
+ strategyScores?: Record<string, number>;
55
+ }
56
+ /**
57
+ * Agent availability information
58
+ */
59
+ export interface AgentAvailability {
60
+ status: WorkerStatus;
61
+ lastSeen: Date;
62
+ currentLoad?: number;
63
+ maxLoad?: number;
64
+ }
65
+ /**
66
+ * Routing rule definition
67
+ */
68
+ export interface RoutingRule {
69
+ name: string;
70
+ priority: number;
71
+ condition: RoutingRuleCondition;
72
+ action: (task: TaskRequest, agents: AgentInfo[]) => AgentInfo | null;
73
+ enabled?: boolean;
74
+ }
75
+ /**
76
+ * Routing rule condition - function or declarative
77
+ */
78
+ export type RoutingRuleCondition = ((task: TaskRequest) => boolean) | {
79
+ requiredSkills?: {
80
+ contains: string;
81
+ };
82
+ priority?: {
83
+ gte?: number;
84
+ lte?: number;
85
+ };
86
+ metadata?: Record<string, unknown>;
87
+ };
88
+ /**
89
+ * Routing metrics
90
+ */
91
+ export interface RoutingMetrics {
92
+ totalRouted: number;
93
+ failedRoutes: number;
94
+ averageLatencyMs: number;
95
+ perAgent: Record<string, {
96
+ routedCount: number;
97
+ lastRouted?: Date;
98
+ }>;
99
+ strategyUsage: Record<string, number>;
100
+ }
101
+ /**
102
+ * Composite balancer configuration
103
+ */
104
+ export interface CompositeBalancerConfig {
105
+ strategies: Array<BalancerStrategy | {
106
+ strategy: BalancerStrategy;
107
+ weight: number;
108
+ }>;
109
+ fallbackBehavior?: 'next-strategy' | 'none';
110
+ customStrategies?: Record<string, (task: TaskRequest, agents: AgentInfo[]) => AgentInfo | null>;
111
+ /**
112
+ * Optional metrics collector for isolated metrics tracking.
113
+ * If not provided, uses the default global collector.
114
+ */
115
+ metricsCollector?: MetricsCollector;
116
+ }
117
+ /**
118
+ * Load balancer interface
119
+ */
120
+ export interface LoadBalancer {
121
+ route(task: TaskRequest): RouteResult;
122
+ addAgent(agent: AgentInfo): void;
123
+ removeAgent(agentId: string): void;
124
+ getAgents(): AgentInfo[];
125
+ }
126
+ /**
127
+ * Metrics collector interface for thread-safe metrics collection.
128
+ *
129
+ * Each MetricsCollector instance maintains its own isolated state,
130
+ * allowing multiple balancers to either share a collector for
131
+ * aggregated metrics or use separate collectors for isolated tracking.
132
+ *
133
+ * @remarks
134
+ * Thread-safety is achieved through instance isolation. Each collector
135
+ * maintains its own metrics state, eliminating race conditions between
136
+ * different balancer instances. For shared metrics across multiple
137
+ * balancers, pass the same collector instance to each balancer.
138
+ */
139
+ export interface MetricsCollector {
140
+ /**
141
+ * Record a routing event.
142
+ * @internal This method is called by balancers during routing.
143
+ */
144
+ record(result: RouteResult, latencyMs: number, strategy: BalancerStrategy): void;
145
+ /**
146
+ * Collect current routing metrics.
147
+ * @returns A copy of the current metrics state
148
+ */
149
+ collect(): RoutingMetrics;
150
+ /**
151
+ * Reset all metrics to initial state.
152
+ */
153
+ reset(): void;
154
+ }
155
+ /**
156
+ * Create a new MetricsCollector instance with isolated state.
157
+ *
158
+ * This factory function creates a thread-safe metrics collector that
159
+ * encapsulates all metrics state within the returned instance. Multiple
160
+ * collectors can be used independently without interference.
161
+ *
162
+ * @example
163
+ * ```typescript
164
+ * // Create isolated collectors for different environments
165
+ * const prodCollector = createMetricsCollector()
166
+ * const testCollector = createMetricsCollector()
167
+ *
168
+ * // Balancers with separate metrics
169
+ * const prodBalancer = createRoundRobinBalancer(agents, { metricsCollector: prodCollector })
170
+ * const testBalancer = createRoundRobinBalancer(agents, { metricsCollector: testCollector })
171
+ * ```
172
+ *
173
+ * @example
174
+ * ```typescript
175
+ * // Shared collector for aggregated metrics
176
+ * const sharedCollector = createMetricsCollector()
177
+ * const balancer1 = createRoundRobinBalancer(agents, { metricsCollector: sharedCollector })
178
+ * const balancer2 = createLeastBusyBalancer(agents, { metricsCollector: sharedCollector })
179
+ *
180
+ * // Get combined metrics
181
+ * const metrics = sharedCollector.collect()
182
+ * ```
183
+ *
184
+ * @returns A new MetricsCollector instance
185
+ */
186
+ export declare function createMetricsCollector(): MetricsCollector;
187
+ /**
188
+ * Collect current routing metrics from the default global collector.
189
+ *
190
+ * @remarks
191
+ * This function is provided for backward compatibility. For new code,
192
+ * consider using explicit MetricsCollector instances for better isolation.
193
+ *
194
+ * @returns Current routing metrics
195
+ */
196
+ export declare function collectRoutingMetrics(): RoutingMetrics;
197
+ /**
198
+ * Reset all routing metrics in the default global collector.
199
+ *
200
+ * @remarks
201
+ * This function is provided for backward compatibility. For new code,
202
+ * consider using explicit MetricsCollector instances for better isolation.
203
+ */
204
+ export declare function resetRoutingMetrics(): void;
205
+ /**
206
+ * Options for round-robin load balancer
207
+ */
208
+ interface RoundRobinBalancerOptions {
209
+ /**
210
+ * Optional metrics collector for isolated metrics tracking.
211
+ * If not provided, uses the default global collector.
212
+ */
213
+ metricsCollector?: MetricsCollector;
214
+ }
215
+ /**
216
+ * Create a round-robin load balancer
217
+ *
218
+ * Distributes tasks evenly across all available agents in order.
219
+ *
220
+ * @param initialAgents - Initial set of agents to balance across
221
+ * @param options - Optional configuration including metricsCollector
222
+ * @returns A LoadBalancer instance
223
+ */
224
+ export declare function createRoundRobinBalancer(initialAgents: AgentInfo[], options?: RoundRobinBalancerOptions): LoadBalancer;
225
+ interface LeastBusyBalancer extends LoadBalancer {
226
+ getLoadMetrics(): Record<string, number>;
227
+ releaseLoad(agentId: string): void;
228
+ setLoad(agentId: string, load: number): void;
229
+ }
230
+ /**
231
+ * Options for least-busy load balancer
232
+ */
233
+ interface LeastBusyBalancerOptions {
234
+ /**
235
+ * Optional metrics collector for isolated metrics tracking.
236
+ * If not provided, uses the default global collector.
237
+ */
238
+ metricsCollector?: MetricsCollector;
239
+ }
240
+ /**
241
+ * Create a least-busy load balancer
242
+ *
243
+ * Routes tasks to agents with the lowest current load.
244
+ *
245
+ * @param initialAgents - Initial set of agents to balance across
246
+ * @param options - Optional configuration including metricsCollector
247
+ * @returns A LeastBusyBalancer instance
248
+ */
249
+ export declare function createLeastBusyBalancer(initialAgents: AgentInfo[], options?: LeastBusyBalancerOptions): LeastBusyBalancer;
250
+ /**
251
+ * Options for capability-based router
252
+ */
253
+ interface CapabilityRouterOptions {
254
+ /**
255
+ * Prefer agents with exact skill match over agents with additional skills
256
+ */
257
+ preferExactMatch?: boolean;
258
+ /**
259
+ * Optional metrics collector for isolated metrics tracking.
260
+ * If not provided, uses the default global collector.
261
+ */
262
+ metricsCollector?: MetricsCollector;
263
+ }
264
+ interface CapabilityRouter extends LoadBalancer {
265
+ findAgentsWithSkills(skills: string[]): AgentInfo[];
266
+ getSkillCoverage(): Record<string, number>;
267
+ }
268
+ /**
269
+ * Create a capability-based router
270
+ *
271
+ * Routes tasks to agents that have the required skills.
272
+ *
273
+ * @param initialAgents - Initial set of agents to route to
274
+ * @param options - Optional configuration including metricsCollector
275
+ * @returns A CapabilityRouter instance
276
+ */
277
+ export declare function createCapabilityRouter(initialAgents: AgentInfo[], options?: CapabilityRouterOptions): CapabilityRouter;
278
+ /**
279
+ * Options for priority queue balancer
280
+ */
281
+ interface PriorityQueueOptions {
282
+ /**
283
+ * Enable priority aging to prevent task starvation
284
+ */
285
+ enableAging?: boolean;
286
+ /**
287
+ * Priority boost per second when aging is enabled
288
+ */
289
+ agingBoostPerSecond?: number;
290
+ /**
291
+ * Maximum wait time before task is promoted to highest priority
292
+ */
293
+ maxWaitTime?: number;
294
+ /**
295
+ * Optional metrics collector for isolated metrics tracking.
296
+ * If not provided, uses the default global collector.
297
+ */
298
+ metricsCollector?: MetricsCollector;
299
+ }
300
+ interface PriorityQueueBalancer extends LoadBalancer {
301
+ enqueue(task: TaskRequest): void;
302
+ routeNext(): Promise<RouteResult | null>;
303
+ queueSize(): number;
304
+ clear(): void;
305
+ peek(): TaskRequest | null;
306
+ getEffectivePriority(taskId: string): number;
307
+ }
308
+ /**
309
+ * Create a priority queue balancer
310
+ *
311
+ * Processes tasks in priority order with optional aging to prevent starvation.
312
+ *
313
+ * @param initialAgents - Initial set of agents to balance across
314
+ * @param options - Optional configuration including metricsCollector
315
+ * @returns A PriorityQueueBalancer instance
316
+ */
317
+ export declare function createPriorityQueueBalancer(initialAgents: AgentInfo[], options?: PriorityQueueOptions): PriorityQueueBalancer;
318
+ interface AvailabilityTrackerOptions {
319
+ heartbeatTimeout?: number;
320
+ }
321
+ interface StatusChangeEvent {
322
+ agentId: string;
323
+ previousStatus: WorkerStatus;
324
+ currentStatus: WorkerStatus;
325
+ timestamp: Date;
326
+ }
327
+ interface CapacityInfo {
328
+ total: number;
329
+ used: number;
330
+ available: number;
331
+ utilization: number;
332
+ }
333
+ interface AgentAvailabilityTracker {
334
+ getAvailability(agentId: string): AgentAvailability;
335
+ updateStatus(agentId: string, status: WorkerStatus): void;
336
+ getAvailableAgents(): AgentInfo[];
337
+ heartbeat(agentId: string): void;
338
+ checkTimeouts(): void;
339
+ onStatusChange(handler: (event: StatusChangeEvent) => void): void;
340
+ updateLoad(agentId: string, current: number, max: number): void;
341
+ getCapacityUtilization(): Record<string, number>;
342
+ getOverallCapacity(): CapacityInfo;
343
+ }
344
+ /**
345
+ * Create an agent availability tracker
346
+ *
347
+ * Tracks agent status, heartbeats, and capacity.
348
+ */
349
+ export declare function createAgentAvailabilityTracker(initialAgents: AgentInfo[], options?: AvailabilityTrackerOptions): AgentAvailabilityTracker;
350
+ /**
351
+ * Options for routing rule engine
352
+ */
353
+ interface RoutingRuleEngineOptions {
354
+ /**
355
+ * Default strategy to use when no rules match
356
+ */
357
+ defaultStrategy?: 'round-robin' | 'least-busy' | 'capability';
358
+ /**
359
+ * Optional metrics collector for isolated metrics tracking.
360
+ * If not provided, uses the default global collector.
361
+ */
362
+ metricsCollector?: MetricsCollector;
363
+ }
364
+ interface RoutingRuleEngine extends LoadBalancer {
365
+ addRule(rule: RoutingRule): void;
366
+ removeRule(name: string): void;
367
+ updateRule(name: string, updates: Partial<RoutingRule>): void;
368
+ enableRule(name: string): void;
369
+ disableRule(name: string): void;
370
+ getRules(): RoutingRule[];
371
+ }
372
+ /**
373
+ * Create a routing rule engine
374
+ *
375
+ * Evaluates routing rules in priority order to determine task routing.
376
+ *
377
+ * @param initialAgents - Initial set of agents to route to
378
+ * @param options - Optional configuration including metricsCollector
379
+ * @returns A RoutingRuleEngine instance
380
+ */
381
+ export declare function createRoutingRuleEngine(initialAgents: AgentInfo[], options?: RoutingRuleEngineOptions): RoutingRuleEngine;
382
+ interface CompositeBalancer extends LoadBalancer {
383
+ }
384
+ /**
385
+ * Create a composite load balancer
386
+ *
387
+ * Combines multiple balancing strategies for sophisticated routing decisions.
388
+ *
389
+ * @param initialAgents - Initial set of agents to balance across
390
+ * @param config - Configuration including strategies and optional metricsCollector
391
+ * @returns A CompositeBalancer instance
392
+ */
393
+ export declare function createCompositeBalancer(initialAgents: AgentInfo[], config: CompositeBalancerConfig): CompositeBalancer;
394
+ export {};
395
+ //# sourceMappingURL=load-balancing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load-balancing.d.ts","sourceRoot":"","sources":["../src/load-balancing.ts"],"names":[],"mappings":"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"}