moflo 4.8.19 → 4.8.20
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.
- package/.claude/guidance/shipped/moflo.md +45 -0
- package/.claude/helpers/statusline.cjs +1 -1
- package/.claude/workflow-state.json +9 -0
- package/package.json +2 -2
- package/src/@claude-flow/cli/dist/src/init/statusline-generator.js +1 -1
- package/src/@claude-flow/cli/dist/src/services/agentic-flow-bridge.js +5 -3
- package/src/@claude-flow/cli/package.json +1 -1
- package/src/@claude-flow/memory/dist/agent-memory-scope.d.ts +131 -0
- package/src/@claude-flow/memory/dist/agent-memory-scope.js +223 -0
- package/src/@claude-flow/memory/dist/agent-memory-scope.test.d.ts +8 -0
- package/src/@claude-flow/memory/dist/agent-memory-scope.test.js +466 -0
- package/src/@claude-flow/memory/dist/agentdb-adapter.d.ts +165 -0
- package/src/@claude-flow/memory/dist/agentdb-adapter.js +806 -0
- package/src/@claude-flow/memory/dist/agentdb-backend.d.ts +212 -0
- package/src/@claude-flow/memory/dist/agentdb-backend.js +842 -0
- package/src/@claude-flow/memory/dist/agentdb-backend.test.d.ts +7 -0
- package/src/@claude-flow/memory/dist/agentdb-backend.test.js +258 -0
- package/src/@claude-flow/memory/dist/application/commands/delete-memory.command.d.ts +65 -0
- package/src/@claude-flow/memory/dist/application/commands/delete-memory.command.js +129 -0
- package/src/@claude-flow/memory/dist/application/commands/store-memory.command.d.ts +48 -0
- package/src/@claude-flow/memory/dist/application/commands/store-memory.command.js +72 -0
- package/src/@claude-flow/memory/dist/application/index.d.ts +12 -0
- package/src/@claude-flow/memory/dist/application/index.js +15 -0
- package/src/@claude-flow/memory/dist/application/queries/search-memory.query.d.ts +72 -0
- package/src/@claude-flow/memory/dist/application/queries/search-memory.query.js +143 -0
- package/src/@claude-flow/memory/dist/application/services/memory-application-service.d.ts +121 -0
- package/src/@claude-flow/memory/dist/application/services/memory-application-service.js +190 -0
- package/src/@claude-flow/memory/dist/auto-memory-bridge.d.ts +226 -0
- package/src/@claude-flow/memory/dist/auto-memory-bridge.js +709 -0
- package/src/@claude-flow/memory/dist/auto-memory-bridge.test.d.ts +8 -0
- package/src/@claude-flow/memory/dist/auto-memory-bridge.test.js +757 -0
- package/src/@claude-flow/memory/dist/benchmark.test.d.ts +2 -0
- package/src/@claude-flow/memory/dist/benchmark.test.js +277 -0
- package/src/@claude-flow/memory/dist/cache-manager.d.ts +134 -0
- package/src/@claude-flow/memory/dist/cache-manager.js +407 -0
- package/src/@claude-flow/memory/dist/controller-registry.d.ts +216 -0
- package/src/@claude-flow/memory/dist/controller-registry.js +893 -0
- package/src/@claude-flow/memory/dist/controller-registry.test.d.ts +14 -0
- package/src/@claude-flow/memory/dist/controller-registry.test.js +593 -0
- package/src/@claude-flow/memory/dist/database-provider.d.ts +87 -0
- package/src/@claude-flow/memory/dist/database-provider.js +372 -0
- package/src/@claude-flow/memory/dist/database-provider.test.d.ts +7 -0
- package/src/@claude-flow/memory/dist/database-provider.test.js +287 -0
- package/src/@claude-flow/memory/dist/domain/entities/memory-entry.d.ts +143 -0
- package/src/@claude-flow/memory/dist/domain/entities/memory-entry.js +226 -0
- package/src/@claude-flow/memory/dist/domain/index.d.ts +11 -0
- package/src/@claude-flow/memory/dist/domain/index.js +12 -0
- package/src/@claude-flow/memory/dist/domain/repositories/memory-repository.interface.d.ts +102 -0
- package/src/@claude-flow/memory/dist/domain/repositories/memory-repository.interface.js +11 -0
- package/src/@claude-flow/memory/dist/domain/services/memory-domain-service.d.ts +105 -0
- package/src/@claude-flow/memory/dist/domain/services/memory-domain-service.js +297 -0
- package/src/@claude-flow/memory/dist/hnsw-index.d.ts +111 -0
- package/src/@claude-flow/memory/dist/hnsw-index.js +781 -0
- package/src/@claude-flow/memory/dist/hnsw-lite.d.ts +23 -0
- package/src/@claude-flow/memory/dist/hnsw-lite.js +168 -0
- package/src/@claude-flow/memory/dist/index.d.ts +204 -0
- package/src/@claude-flow/memory/dist/index.js +358 -0
- package/src/@claude-flow/memory/dist/infrastructure/index.d.ts +17 -0
- package/src/@claude-flow/memory/dist/infrastructure/index.js +16 -0
- package/src/@claude-flow/memory/dist/infrastructure/repositories/hybrid-memory-repository.d.ts +66 -0
- package/src/@claude-flow/memory/dist/infrastructure/repositories/hybrid-memory-repository.js +409 -0
- package/src/@claude-flow/memory/dist/learning-bridge.d.ts +137 -0
- package/src/@claude-flow/memory/dist/learning-bridge.js +335 -0
- package/src/@claude-flow/memory/dist/learning-bridge.test.d.ts +8 -0
- package/src/@claude-flow/memory/dist/learning-bridge.test.js +578 -0
- package/src/@claude-flow/memory/dist/memory-graph.d.ts +100 -0
- package/src/@claude-flow/memory/dist/memory-graph.js +333 -0
- package/src/@claude-flow/memory/dist/memory-graph.test.d.ts +8 -0
- package/src/@claude-flow/memory/dist/memory-graph.test.js +609 -0
- package/src/@claude-flow/memory/dist/migration.d.ts +68 -0
- package/src/@claude-flow/memory/dist/migration.js +513 -0
- package/src/@claude-flow/memory/dist/persistent-sona.d.ts +144 -0
- package/src/@claude-flow/memory/dist/persistent-sona.js +332 -0
- package/src/@claude-flow/memory/dist/query-builder.d.ts +211 -0
- package/src/@claude-flow/memory/dist/query-builder.js +438 -0
- package/src/@claude-flow/memory/dist/rvf-backend.d.ts +51 -0
- package/src/@claude-flow/memory/dist/rvf-backend.js +481 -0
- package/src/@claude-flow/memory/dist/rvf-learning-store.d.ts +139 -0
- package/src/@claude-flow/memory/dist/rvf-learning-store.js +295 -0
- package/src/@claude-flow/memory/dist/rvf-migration.d.ts +45 -0
- package/src/@claude-flow/memory/dist/rvf-migration.js +234 -0
- package/src/@claude-flow/memory/dist/sqljs-backend.d.ts +127 -0
- package/src/@claude-flow/memory/dist/sqljs-backend.js +600 -0
- package/src/@claude-flow/memory/dist/types.d.ts +484 -0
- package/src/@claude-flow/memory/dist/types.js +58 -0
- package/src/@claude-flow/shared/dist/core/config/defaults.d.ts +41 -0
- package/src/@claude-flow/shared/dist/core/config/defaults.js +186 -0
- package/src/@claude-flow/shared/dist/core/config/index.d.ts +8 -0
- package/src/@claude-flow/shared/dist/core/config/index.js +12 -0
- package/src/@claude-flow/shared/dist/core/config/loader.d.ts +45 -0
- package/src/@claude-flow/shared/dist/core/config/loader.js +222 -0
- package/src/@claude-flow/shared/dist/core/config/schema.d.ts +1134 -0
- package/src/@claude-flow/shared/dist/core/config/schema.js +158 -0
- package/src/@claude-flow/shared/dist/core/config/validator.d.ts +92 -0
- package/src/@claude-flow/shared/dist/core/config/validator.js +147 -0
- package/src/@claude-flow/shared/dist/core/event-bus.d.ts +31 -0
- package/src/@claude-flow/shared/dist/core/event-bus.js +197 -0
- package/src/@claude-flow/shared/dist/core/index.d.ts +15 -0
- package/src/@claude-flow/shared/dist/core/index.js +19 -0
- package/src/@claude-flow/shared/dist/core/interfaces/agent.interface.d.ts +200 -0
- package/src/@claude-flow/shared/dist/core/interfaces/agent.interface.js +6 -0
- package/src/@claude-flow/shared/dist/core/interfaces/coordinator.interface.d.ts +310 -0
- package/src/@claude-flow/shared/dist/core/interfaces/coordinator.interface.js +7 -0
- package/src/@claude-flow/shared/dist/core/interfaces/event.interface.d.ts +224 -0
- package/src/@claude-flow/shared/dist/core/interfaces/event.interface.js +46 -0
- package/src/@claude-flow/shared/dist/core/interfaces/index.d.ts +10 -0
- package/src/@claude-flow/shared/dist/core/interfaces/index.js +15 -0
- package/src/@claude-flow/shared/dist/core/interfaces/memory.interface.d.ts +298 -0
- package/src/@claude-flow/shared/dist/core/interfaces/memory.interface.js +7 -0
- package/src/@claude-flow/shared/dist/core/interfaces/task.interface.d.ts +185 -0
- package/src/@claude-flow/shared/dist/core/interfaces/task.interface.js +6 -0
- package/src/@claude-flow/shared/dist/core/orchestrator/event-coordinator.d.ts +35 -0
- package/src/@claude-flow/shared/dist/core/orchestrator/event-coordinator.js +101 -0
- package/src/@claude-flow/shared/dist/core/orchestrator/health-monitor.d.ts +60 -0
- package/src/@claude-flow/shared/dist/core/orchestrator/health-monitor.js +166 -0
- package/src/@claude-flow/shared/dist/core/orchestrator/index.d.ts +46 -0
- package/src/@claude-flow/shared/dist/core/orchestrator/index.js +64 -0
- package/src/@claude-flow/shared/dist/core/orchestrator/lifecycle-manager.d.ts +56 -0
- package/src/@claude-flow/shared/dist/core/orchestrator/lifecycle-manager.js +195 -0
- package/src/@claude-flow/shared/dist/core/orchestrator/session-manager.d.ts +83 -0
- package/src/@claude-flow/shared/dist/core/orchestrator/session-manager.js +193 -0
- package/src/@claude-flow/shared/dist/core/orchestrator/task-manager.d.ts +49 -0
- package/src/@claude-flow/shared/dist/core/orchestrator/task-manager.js +253 -0
- package/src/@claude-flow/shared/dist/events/domain-events.d.ts +282 -0
- package/src/@claude-flow/shared/dist/events/domain-events.js +165 -0
- package/src/@claude-flow/shared/dist/events/event-store.d.ts +126 -0
- package/src/@claude-flow/shared/dist/events/event-store.js +432 -0
- package/src/@claude-flow/shared/dist/events/event-store.test.d.ts +8 -0
- package/src/@claude-flow/shared/dist/events/event-store.test.js +297 -0
- package/src/@claude-flow/shared/dist/events/example-usage.d.ts +10 -0
- package/src/@claude-flow/shared/dist/events/example-usage.js +193 -0
- package/src/@claude-flow/shared/dist/events/index.d.ts +21 -0
- package/src/@claude-flow/shared/dist/events/index.js +22 -0
- package/src/@claude-flow/shared/dist/events/projections.d.ts +177 -0
- package/src/@claude-flow/shared/dist/events/projections.js +421 -0
- package/src/@claude-flow/shared/dist/events/rvf-event-log.d.ts +82 -0
- package/src/@claude-flow/shared/dist/events/rvf-event-log.js +340 -0
- package/src/@claude-flow/shared/dist/events/state-reconstructor.d.ts +101 -0
- package/src/@claude-flow/shared/dist/events/state-reconstructor.js +263 -0
- package/src/@claude-flow/shared/dist/events.d.ts +80 -0
- package/src/@claude-flow/shared/dist/events.js +249 -0
- package/src/@claude-flow/shared/dist/hooks/example-usage.d.ts +42 -0
- package/src/@claude-flow/shared/dist/hooks/example-usage.js +351 -0
- package/src/@claude-flow/shared/dist/hooks/executor.d.ts +100 -0
- package/src/@claude-flow/shared/dist/hooks/executor.js +267 -0
- package/src/@claude-flow/shared/dist/hooks/hooks.test.d.ts +9 -0
- package/src/@claude-flow/shared/dist/hooks/hooks.test.js +322 -0
- package/src/@claude-flow/shared/dist/hooks/index.d.ts +52 -0
- package/src/@claude-flow/shared/dist/hooks/index.js +51 -0
- package/src/@claude-flow/shared/dist/hooks/registry.d.ts +133 -0
- package/src/@claude-flow/shared/dist/hooks/registry.js +277 -0
- package/src/@claude-flow/shared/dist/hooks/safety/bash-safety.d.ts +105 -0
- package/src/@claude-flow/shared/dist/hooks/safety/bash-safety.js +481 -0
- package/src/@claude-flow/shared/dist/hooks/safety/file-organization.d.ts +144 -0
- package/src/@claude-flow/shared/dist/hooks/safety/file-organization.js +328 -0
- package/src/@claude-flow/shared/dist/hooks/safety/git-commit.d.ts +158 -0
- package/src/@claude-flow/shared/dist/hooks/safety/git-commit.js +450 -0
- package/src/@claude-flow/shared/dist/hooks/safety/index.d.ts +17 -0
- package/src/@claude-flow/shared/dist/hooks/safety/index.js +17 -0
- package/src/@claude-flow/shared/dist/hooks/session-hooks.d.ts +234 -0
- package/src/@claude-flow/shared/dist/hooks/session-hooks.js +334 -0
- package/src/@claude-flow/shared/dist/hooks/task-hooks.d.ts +163 -0
- package/src/@claude-flow/shared/dist/hooks/task-hooks.js +326 -0
- package/src/@claude-flow/shared/dist/hooks/types.d.ts +267 -0
- package/src/@claude-flow/shared/dist/hooks/types.js +62 -0
- package/src/@claude-flow/shared/dist/hooks/verify-exports.test.d.ts +9 -0
- package/src/@claude-flow/shared/dist/hooks/verify-exports.test.js +93 -0
- package/src/@claude-flow/shared/dist/index.d.ts +20 -0
- package/src/@claude-flow/shared/dist/index.js +50 -0
- package/src/@claude-flow/shared/dist/mcp/connection-pool.d.ts +98 -0
- package/src/@claude-flow/shared/dist/mcp/connection-pool.js +364 -0
- package/src/@claude-flow/shared/dist/mcp/index.d.ts +69 -0
- package/src/@claude-flow/shared/dist/mcp/index.js +84 -0
- package/src/@claude-flow/shared/dist/mcp/server.d.ts +166 -0
- package/src/@claude-flow/shared/dist/mcp/server.js +593 -0
- package/src/@claude-flow/shared/dist/mcp/session-manager.d.ts +136 -0
- package/src/@claude-flow/shared/dist/mcp/session-manager.js +335 -0
- package/src/@claude-flow/shared/dist/mcp/tool-registry.d.ts +178 -0
- package/src/@claude-flow/shared/dist/mcp/tool-registry.js +439 -0
- package/src/@claude-flow/shared/dist/mcp/transport/http.d.ts +104 -0
- package/src/@claude-flow/shared/dist/mcp/transport/http.js +476 -0
- package/src/@claude-flow/shared/dist/mcp/transport/index.d.ts +102 -0
- package/src/@claude-flow/shared/dist/mcp/transport/index.js +238 -0
- package/src/@claude-flow/shared/dist/mcp/transport/stdio.d.ts +104 -0
- package/src/@claude-flow/shared/dist/mcp/transport/stdio.js +263 -0
- package/src/@claude-flow/shared/dist/mcp/transport/websocket.d.ts +133 -0
- package/src/@claude-flow/shared/dist/mcp/transport/websocket.js +396 -0
- package/src/@claude-flow/shared/dist/mcp/types.d.ts +438 -0
- package/src/@claude-flow/shared/dist/mcp/types.js +54 -0
- package/src/@claude-flow/shared/dist/plugin-interface.d.ts +544 -0
- package/src/@claude-flow/shared/dist/plugin-interface.js +23 -0
- package/src/@claude-flow/shared/dist/plugin-loader.d.ts +139 -0
- package/src/@claude-flow/shared/dist/plugin-loader.js +434 -0
- package/src/@claude-flow/shared/dist/plugin-registry.d.ts +183 -0
- package/src/@claude-flow/shared/dist/plugin-registry.js +457 -0
- package/src/@claude-flow/shared/dist/plugins/index.d.ts +10 -0
- package/src/@claude-flow/shared/dist/plugins/index.js +10 -0
- package/src/@claude-flow/shared/dist/plugins/official/hive-mind-plugin.d.ts +106 -0
- package/src/@claude-flow/shared/dist/plugins/official/hive-mind-plugin.js +241 -0
- package/src/@claude-flow/shared/dist/plugins/official/index.d.ts +10 -0
- package/src/@claude-flow/shared/dist/plugins/official/index.js +10 -0
- package/src/@claude-flow/shared/dist/plugins/official/maestro-plugin.d.ts +121 -0
- package/src/@claude-flow/shared/dist/plugins/official/maestro-plugin.js +355 -0
- package/src/@claude-flow/shared/dist/plugins/types.d.ts +93 -0
- package/src/@claude-flow/shared/dist/plugins/types.js +9 -0
- package/src/@claude-flow/shared/dist/resilience/bulkhead.d.ts +105 -0
- package/src/@claude-flow/shared/dist/resilience/bulkhead.js +206 -0
- package/src/@claude-flow/shared/dist/resilience/circuit-breaker.d.ts +132 -0
- package/src/@claude-flow/shared/dist/resilience/circuit-breaker.js +233 -0
- package/src/@claude-flow/shared/dist/resilience/index.d.ts +19 -0
- package/src/@claude-flow/shared/dist/resilience/index.js +19 -0
- package/src/@claude-flow/shared/dist/resilience/rate-limiter.d.ts +168 -0
- package/src/@claude-flow/shared/dist/resilience/rate-limiter.js +314 -0
- package/src/@claude-flow/shared/dist/resilience/retry.d.ts +91 -0
- package/src/@claude-flow/shared/dist/resilience/retry.js +159 -0
- package/src/@claude-flow/shared/dist/security/index.d.ts +10 -0
- package/src/@claude-flow/shared/dist/security/index.js +12 -0
- package/src/@claude-flow/shared/dist/security/input-validation.d.ts +73 -0
- package/src/@claude-flow/shared/dist/security/input-validation.js +201 -0
- package/src/@claude-flow/shared/dist/security/secure-random.d.ts +92 -0
- package/src/@claude-flow/shared/dist/security/secure-random.js +142 -0
- package/src/@claude-flow/shared/dist/services/index.d.ts +7 -0
- package/src/@claude-flow/shared/dist/services/index.js +7 -0
- package/src/@claude-flow/shared/dist/services/v3-progress.service.d.ts +124 -0
- package/src/@claude-flow/shared/dist/services/v3-progress.service.js +402 -0
- package/src/@claude-flow/shared/dist/types/agent.types.d.ts +137 -0
- package/src/@claude-flow/shared/dist/types/agent.types.js +6 -0
- package/src/@claude-flow/shared/dist/types/index.d.ts +11 -0
- package/src/@claude-flow/shared/dist/types/index.js +17 -0
- package/src/@claude-flow/shared/dist/types/mcp.types.d.ts +266 -0
- package/src/@claude-flow/shared/dist/types/mcp.types.js +7 -0
- package/src/@claude-flow/shared/dist/types/memory.types.d.ts +236 -0
- package/src/@claude-flow/shared/dist/types/memory.types.js +7 -0
- package/src/@claude-flow/shared/dist/types/swarm.types.d.ts +186 -0
- package/src/@claude-flow/shared/dist/types/swarm.types.js +65 -0
- package/src/@claude-flow/shared/dist/types/task.types.d.ts +178 -0
- package/src/@claude-flow/shared/dist/types/task.types.js +32 -0
- package/src/@claude-flow/shared/dist/types.d.ts +197 -0
- package/src/@claude-flow/shared/dist/types.js +21 -0
- package/src/@claude-flow/shared/dist/utils/secure-logger.d.ts +69 -0
- package/src/@claude-flow/shared/dist/utils/secure-logger.js +208 -0
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V3 Task Interfaces
|
|
3
|
+
* Domain-Driven Design - Task Bounded Context
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Task priority levels
|
|
7
|
+
*/
|
|
8
|
+
export type TaskPriority = 'critical' | 'high' | 'medium' | 'low';
|
|
9
|
+
/**
|
|
10
|
+
* Task status throughout its lifecycle
|
|
11
|
+
*/
|
|
12
|
+
export type TaskStatus = 'pending' | 'queued' | 'assigned' | 'running' | 'completed' | 'failed' | 'cancelled' | 'timeout';
|
|
13
|
+
/**
|
|
14
|
+
* Core task entity
|
|
15
|
+
*/
|
|
16
|
+
export interface ITask {
|
|
17
|
+
readonly id: string;
|
|
18
|
+
readonly type: string;
|
|
19
|
+
readonly description: string;
|
|
20
|
+
readonly priority: number;
|
|
21
|
+
readonly createdAt: Date;
|
|
22
|
+
status: TaskStatus;
|
|
23
|
+
assignedAgent?: string;
|
|
24
|
+
startedAt?: Date;
|
|
25
|
+
completedAt?: Date;
|
|
26
|
+
timeout?: number;
|
|
27
|
+
input?: Record<string, unknown>;
|
|
28
|
+
output?: Record<string, unknown>;
|
|
29
|
+
error?: Error;
|
|
30
|
+
metadata?: {
|
|
31
|
+
requiredCapabilities?: string[];
|
|
32
|
+
retryCount?: number;
|
|
33
|
+
maxRetries?: number;
|
|
34
|
+
critical?: boolean;
|
|
35
|
+
parentTaskId?: string;
|
|
36
|
+
childTaskIds?: string[];
|
|
37
|
+
tags?: string[];
|
|
38
|
+
[key: string]: unknown;
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Task creation parameters
|
|
43
|
+
*/
|
|
44
|
+
export interface ITaskCreate {
|
|
45
|
+
type: string;
|
|
46
|
+
description: string;
|
|
47
|
+
priority?: number;
|
|
48
|
+
timeout?: number;
|
|
49
|
+
assignedAgent?: string;
|
|
50
|
+
input?: Record<string, unknown>;
|
|
51
|
+
metadata?: ITask['metadata'];
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Task result after completion
|
|
55
|
+
*/
|
|
56
|
+
export interface ITaskResult {
|
|
57
|
+
taskId: string;
|
|
58
|
+
success: boolean;
|
|
59
|
+
output?: Record<string, unknown>;
|
|
60
|
+
error?: Error;
|
|
61
|
+
duration: number;
|
|
62
|
+
agentId?: string;
|
|
63
|
+
metrics?: {
|
|
64
|
+
tokensUsed?: number;
|
|
65
|
+
memoryPeakMb?: number;
|
|
66
|
+
retryCount?: number;
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Task queue interface for managing task ordering and processing
|
|
71
|
+
*/
|
|
72
|
+
export interface ITaskQueue {
|
|
73
|
+
/**
|
|
74
|
+
* Add a task to the queue
|
|
75
|
+
*/
|
|
76
|
+
enqueue(task: ITask): Promise<void>;
|
|
77
|
+
/**
|
|
78
|
+
* Remove and return the highest priority task
|
|
79
|
+
*/
|
|
80
|
+
dequeue(): Promise<ITask | undefined>;
|
|
81
|
+
/**
|
|
82
|
+
* Peek at the next task without removing it
|
|
83
|
+
*/
|
|
84
|
+
peek(): Promise<ITask | undefined>;
|
|
85
|
+
/**
|
|
86
|
+
* Get the current queue size
|
|
87
|
+
*/
|
|
88
|
+
size(): number;
|
|
89
|
+
/**
|
|
90
|
+
* Check if the queue is empty
|
|
91
|
+
*/
|
|
92
|
+
isEmpty(): boolean;
|
|
93
|
+
/**
|
|
94
|
+
* Clear all tasks from the queue
|
|
95
|
+
*/
|
|
96
|
+
clear(): Promise<void>;
|
|
97
|
+
/**
|
|
98
|
+
* Get all queued tasks (for inspection)
|
|
99
|
+
*/
|
|
100
|
+
getAll(): Promise<ITask[]>;
|
|
101
|
+
/**
|
|
102
|
+
* Remove a specific task by ID
|
|
103
|
+
*/
|
|
104
|
+
remove(taskId: string): Promise<boolean>;
|
|
105
|
+
/**
|
|
106
|
+
* Update task priority
|
|
107
|
+
*/
|
|
108
|
+
updatePriority(taskId: string, priority: number): Promise<boolean>;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Task manager interface for lifecycle management
|
|
112
|
+
*/
|
|
113
|
+
export interface ITaskManager {
|
|
114
|
+
/**
|
|
115
|
+
* Create a new task
|
|
116
|
+
*/
|
|
117
|
+
createTask(params: ITaskCreate): Promise<ITask>;
|
|
118
|
+
/**
|
|
119
|
+
* Get a task by ID
|
|
120
|
+
*/
|
|
121
|
+
getTask(taskId: string): ITask | undefined;
|
|
122
|
+
/**
|
|
123
|
+
* Get all tasks matching optional filter
|
|
124
|
+
*/
|
|
125
|
+
getTasks(filter?: Partial<Pick<ITask, 'status' | 'type' | 'assignedAgent'>>): ITask[];
|
|
126
|
+
/**
|
|
127
|
+
* Assign a task to an agent
|
|
128
|
+
*/
|
|
129
|
+
assignTask(taskId: string, agentId: string): Promise<void>;
|
|
130
|
+
/**
|
|
131
|
+
* Start task execution
|
|
132
|
+
*/
|
|
133
|
+
startTask(taskId: string): Promise<void>;
|
|
134
|
+
/**
|
|
135
|
+
* Complete a task with result
|
|
136
|
+
*/
|
|
137
|
+
completeTask(taskId: string, result: ITaskResult): Promise<void>;
|
|
138
|
+
/**
|
|
139
|
+
* Fail a task with error
|
|
140
|
+
*/
|
|
141
|
+
failTask(taskId: string, error: Error): Promise<void>;
|
|
142
|
+
/**
|
|
143
|
+
* Cancel a task
|
|
144
|
+
*/
|
|
145
|
+
cancelTask(taskId: string, reason?: string): Promise<void>;
|
|
146
|
+
/**
|
|
147
|
+
* Retry a failed task
|
|
148
|
+
*/
|
|
149
|
+
retryTask(taskId: string): Promise<void>;
|
|
150
|
+
/**
|
|
151
|
+
* Get task metrics
|
|
152
|
+
*/
|
|
153
|
+
getMetrics(): TaskManagerMetrics;
|
|
154
|
+
/**
|
|
155
|
+
* Clean up old completed/failed tasks
|
|
156
|
+
*/
|
|
157
|
+
cleanup(olderThan: Date): Promise<number>;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Task manager metrics
|
|
161
|
+
*/
|
|
162
|
+
export interface TaskManagerMetrics {
|
|
163
|
+
totalTasks: number;
|
|
164
|
+
pendingTasks: number;
|
|
165
|
+
runningTasks: number;
|
|
166
|
+
completedTasks: number;
|
|
167
|
+
failedTasks: number;
|
|
168
|
+
cancelledTasks: number;
|
|
169
|
+
avgDuration: number;
|
|
170
|
+
avgWaitTime: number;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Task assignment strategy interface
|
|
174
|
+
*/
|
|
175
|
+
export interface ITaskAssignmentStrategy {
|
|
176
|
+
/**
|
|
177
|
+
* Select the best agent for a task
|
|
178
|
+
*/
|
|
179
|
+
selectAgent(task: ITask, availableAgents: string[]): Promise<string | undefined>;
|
|
180
|
+
/**
|
|
181
|
+
* Score an agent for a task (higher is better)
|
|
182
|
+
*/
|
|
183
|
+
scoreAgent(task: ITask, agentId: string): Promise<number>;
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=task.interface.d.ts.map
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V3 Event Coordinator
|
|
3
|
+
* Decomposed from orchestrator.ts - Event routing
|
|
4
|
+
* ~100 lines (target achieved)
|
|
5
|
+
*/
|
|
6
|
+
import type { IEvent, IEventBus, IEventHandler, IEventCoordinator } from '../interfaces/event.interface.js';
|
|
7
|
+
/**
|
|
8
|
+
* Event coordinator implementation
|
|
9
|
+
*/
|
|
10
|
+
export declare class EventCoordinator implements IEventCoordinator {
|
|
11
|
+
private eventBus;
|
|
12
|
+
private handlers;
|
|
13
|
+
private initialized;
|
|
14
|
+
constructor(eventBus: IEventBus);
|
|
15
|
+
initialize(): Promise<void>;
|
|
16
|
+
shutdown(): Promise<void>;
|
|
17
|
+
route(event: IEvent): Promise<void>;
|
|
18
|
+
registerHandler(type: string, handler: IEventHandler): void;
|
|
19
|
+
unregisterHandler(type: string, handler: IEventHandler): void;
|
|
20
|
+
getEventBus(): IEventBus;
|
|
21
|
+
private registerSystemHandlers;
|
|
22
|
+
/**
|
|
23
|
+
* Get registered handler count for a type
|
|
24
|
+
*/
|
|
25
|
+
getHandlerCount(type: string): number;
|
|
26
|
+
/**
|
|
27
|
+
* Get all registered event types
|
|
28
|
+
*/
|
|
29
|
+
getRegisteredTypes(): string[];
|
|
30
|
+
/**
|
|
31
|
+
* Check if coordinator is initialized
|
|
32
|
+
*/
|
|
33
|
+
isInitialized(): boolean;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=event-coordinator.d.ts.map
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V3 Event Coordinator
|
|
3
|
+
* Decomposed from orchestrator.ts - Event routing
|
|
4
|
+
* ~100 lines (target achieved)
|
|
5
|
+
*/
|
|
6
|
+
import { SystemEventTypes } from '../interfaces/event.interface.js';
|
|
7
|
+
/**
|
|
8
|
+
* Event coordinator implementation
|
|
9
|
+
*/
|
|
10
|
+
export class EventCoordinator {
|
|
11
|
+
eventBus;
|
|
12
|
+
handlers = new Map();
|
|
13
|
+
initialized = false;
|
|
14
|
+
constructor(eventBus) {
|
|
15
|
+
this.eventBus = eventBus;
|
|
16
|
+
}
|
|
17
|
+
async initialize() {
|
|
18
|
+
if (this.initialized) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
// Register default system event handlers
|
|
22
|
+
this.registerSystemHandlers();
|
|
23
|
+
this.initialized = true;
|
|
24
|
+
}
|
|
25
|
+
async shutdown() {
|
|
26
|
+
// Clear all handlers
|
|
27
|
+
this.handlers.clear();
|
|
28
|
+
this.initialized = false;
|
|
29
|
+
}
|
|
30
|
+
async route(event) {
|
|
31
|
+
const handlers = this.handlers.get(event.type);
|
|
32
|
+
if (!handlers || handlers.size === 0) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
const handlerPromises = Array.from(handlers).map(async (handler) => {
|
|
36
|
+
try {
|
|
37
|
+
await handler(event);
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
// Log error but don't throw
|
|
41
|
+
console.error(`Error in event handler for ${event.type}:`, error);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
await Promise.allSettled(handlerPromises);
|
|
45
|
+
}
|
|
46
|
+
registerHandler(type, handler) {
|
|
47
|
+
let handlers = this.handlers.get(type);
|
|
48
|
+
if (!handlers) {
|
|
49
|
+
handlers = new Set();
|
|
50
|
+
this.handlers.set(type, handlers);
|
|
51
|
+
}
|
|
52
|
+
handlers.add(handler);
|
|
53
|
+
// Also register with event bus
|
|
54
|
+
this.eventBus.on(type, handler);
|
|
55
|
+
}
|
|
56
|
+
unregisterHandler(type, handler) {
|
|
57
|
+
const handlers = this.handlers.get(type);
|
|
58
|
+
if (handlers) {
|
|
59
|
+
handlers.delete(handler);
|
|
60
|
+
if (handlers.size === 0) {
|
|
61
|
+
this.handlers.delete(type);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
// Also unregister from event bus
|
|
65
|
+
this.eventBus.off(type, handler);
|
|
66
|
+
}
|
|
67
|
+
getEventBus() {
|
|
68
|
+
return this.eventBus;
|
|
69
|
+
}
|
|
70
|
+
registerSystemHandlers() {
|
|
71
|
+
// Error handling
|
|
72
|
+
this.eventBus.on(SystemEventTypes.SYSTEM_ERROR, (event) => {
|
|
73
|
+
const { error, component } = event.payload;
|
|
74
|
+
console.error(`System error in ${component}:`, error);
|
|
75
|
+
});
|
|
76
|
+
// Deadlock detection
|
|
77
|
+
this.eventBus.on(SystemEventTypes.DEADLOCK_DETECTED, (event) => {
|
|
78
|
+
const { agents, resources } = event.payload;
|
|
79
|
+
console.warn('Deadlock detected:', { agents, resources });
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Get registered handler count for a type
|
|
84
|
+
*/
|
|
85
|
+
getHandlerCount(type) {
|
|
86
|
+
return this.handlers.get(type)?.size ?? 0;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Get all registered event types
|
|
90
|
+
*/
|
|
91
|
+
getRegisteredTypes() {
|
|
92
|
+
return Array.from(this.handlers.keys());
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Check if coordinator is initialized
|
|
96
|
+
*/
|
|
97
|
+
isInitialized() {
|
|
98
|
+
return this.initialized;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=event-coordinator.js.map
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V3 Health Monitor
|
|
3
|
+
* Decomposed from orchestrator.ts - Agent health checks
|
|
4
|
+
* ~150 lines (target achieved)
|
|
5
|
+
*/
|
|
6
|
+
import type { IHealthMonitor, IHealthStatus, IComponentHealth } from '../interfaces/coordinator.interface.js';
|
|
7
|
+
import type { IEventBus } from '../interfaces/event.interface.js';
|
|
8
|
+
/**
|
|
9
|
+
* Health check function type
|
|
10
|
+
*/
|
|
11
|
+
export type HealthCheckFn = () => Promise<{
|
|
12
|
+
healthy: boolean;
|
|
13
|
+
error?: string;
|
|
14
|
+
metrics?: Record<string, number>;
|
|
15
|
+
}>;
|
|
16
|
+
/**
|
|
17
|
+
* Health monitor configuration
|
|
18
|
+
*/
|
|
19
|
+
export interface HealthMonitorConfig {
|
|
20
|
+
checkInterval: number;
|
|
21
|
+
historyLimit: number;
|
|
22
|
+
degradedThreshold: number;
|
|
23
|
+
unhealthyThreshold: number;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Health monitor implementation
|
|
27
|
+
*/
|
|
28
|
+
export declare class HealthMonitor implements IHealthMonitor {
|
|
29
|
+
private eventBus;
|
|
30
|
+
private config;
|
|
31
|
+
private checks;
|
|
32
|
+
private history;
|
|
33
|
+
private interval?;
|
|
34
|
+
private listeners;
|
|
35
|
+
private running;
|
|
36
|
+
constructor(eventBus: IEventBus, config?: HealthMonitorConfig);
|
|
37
|
+
start(): void;
|
|
38
|
+
stop(): void;
|
|
39
|
+
getStatus(): Promise<IHealthStatus>;
|
|
40
|
+
registerCheck(name: string, check: HealthCheckFn): void;
|
|
41
|
+
unregisterCheck(name: string): void;
|
|
42
|
+
getHistory(limit?: number): IHealthStatus[];
|
|
43
|
+
onHealthChange(callback: (status: IHealthStatus) => void): () => void;
|
|
44
|
+
private addToHistory;
|
|
45
|
+
private notifyListeners;
|
|
46
|
+
private timeout;
|
|
47
|
+
/**
|
|
48
|
+
* Get component health by name
|
|
49
|
+
*/
|
|
50
|
+
getComponentHealth(name: string): Promise<IComponentHealth | undefined>;
|
|
51
|
+
/**
|
|
52
|
+
* Check if system is healthy
|
|
53
|
+
*/
|
|
54
|
+
isHealthy(): Promise<boolean>;
|
|
55
|
+
/**
|
|
56
|
+
* Get registered check names
|
|
57
|
+
*/
|
|
58
|
+
getRegisteredChecks(): string[];
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=health-monitor.d.ts.map
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V3 Health Monitor
|
|
3
|
+
* Decomposed from orchestrator.ts - Agent health checks
|
|
4
|
+
* ~150 lines (target achieved)
|
|
5
|
+
*/
|
|
6
|
+
import { SystemEventTypes } from '../interfaces/event.interface.js';
|
|
7
|
+
/**
|
|
8
|
+
* Health monitor implementation
|
|
9
|
+
*/
|
|
10
|
+
export class HealthMonitor {
|
|
11
|
+
eventBus;
|
|
12
|
+
config;
|
|
13
|
+
checks = new Map();
|
|
14
|
+
history = [];
|
|
15
|
+
interval;
|
|
16
|
+
listeners = [];
|
|
17
|
+
running = false;
|
|
18
|
+
constructor(eventBus, config = {
|
|
19
|
+
checkInterval: 30000,
|
|
20
|
+
historyLimit: 100,
|
|
21
|
+
degradedThreshold: 1,
|
|
22
|
+
unhealthyThreshold: 2,
|
|
23
|
+
}) {
|
|
24
|
+
this.eventBus = eventBus;
|
|
25
|
+
this.config = config;
|
|
26
|
+
}
|
|
27
|
+
start() {
|
|
28
|
+
if (this.running) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
this.running = true;
|
|
32
|
+
this.interval = setInterval(async () => {
|
|
33
|
+
const status = await this.getStatus();
|
|
34
|
+
this.addToHistory(status);
|
|
35
|
+
this.notifyListeners(status);
|
|
36
|
+
this.eventBus.emit(SystemEventTypes.SYSTEM_HEALTHCHECK, { status });
|
|
37
|
+
}, this.config.checkInterval);
|
|
38
|
+
}
|
|
39
|
+
stop() {
|
|
40
|
+
if (this.interval) {
|
|
41
|
+
clearInterval(this.interval);
|
|
42
|
+
this.interval = undefined;
|
|
43
|
+
}
|
|
44
|
+
this.running = false;
|
|
45
|
+
}
|
|
46
|
+
async getStatus() {
|
|
47
|
+
const components = {};
|
|
48
|
+
let unhealthyCount = 0;
|
|
49
|
+
let degradedCount = 0;
|
|
50
|
+
const checkPromises = Array.from(this.checks.entries()).map(async ([name, check]) => {
|
|
51
|
+
try {
|
|
52
|
+
const result = await Promise.race([
|
|
53
|
+
check(),
|
|
54
|
+
this.timeout(5000, 'Health check timeout'),
|
|
55
|
+
]);
|
|
56
|
+
const health = {
|
|
57
|
+
name,
|
|
58
|
+
status: result.healthy ? 'healthy' : 'unhealthy',
|
|
59
|
+
lastCheck: new Date(),
|
|
60
|
+
error: result.error,
|
|
61
|
+
metrics: result.metrics,
|
|
62
|
+
};
|
|
63
|
+
return { name, health };
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
return {
|
|
67
|
+
name,
|
|
68
|
+
health: {
|
|
69
|
+
name,
|
|
70
|
+
status: 'unhealthy',
|
|
71
|
+
lastCheck: new Date(),
|
|
72
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
const results = await Promise.allSettled(checkPromises);
|
|
78
|
+
for (const result of results) {
|
|
79
|
+
if (result.status === 'fulfilled') {
|
|
80
|
+
const { name, health } = result.value;
|
|
81
|
+
components[name] = health;
|
|
82
|
+
if (health.status === 'unhealthy') {
|
|
83
|
+
unhealthyCount++;
|
|
84
|
+
}
|
|
85
|
+
else if (health.status === 'degraded') {
|
|
86
|
+
degradedCount++;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
let overallStatus = 'healthy';
|
|
91
|
+
if (unhealthyCount >= this.config.unhealthyThreshold) {
|
|
92
|
+
overallStatus = 'unhealthy';
|
|
93
|
+
}
|
|
94
|
+
else if (unhealthyCount > 0 ||
|
|
95
|
+
degradedCount >= this.config.degradedThreshold) {
|
|
96
|
+
overallStatus = 'degraded';
|
|
97
|
+
}
|
|
98
|
+
return {
|
|
99
|
+
status: overallStatus,
|
|
100
|
+
components,
|
|
101
|
+
timestamp: new Date(),
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
registerCheck(name, check) {
|
|
105
|
+
this.checks.set(name, check);
|
|
106
|
+
}
|
|
107
|
+
unregisterCheck(name) {
|
|
108
|
+
this.checks.delete(name);
|
|
109
|
+
}
|
|
110
|
+
getHistory(limit) {
|
|
111
|
+
const count = limit ?? this.config.historyLimit;
|
|
112
|
+
return this.history.slice(-count);
|
|
113
|
+
}
|
|
114
|
+
onHealthChange(callback) {
|
|
115
|
+
this.listeners.push(callback);
|
|
116
|
+
return () => {
|
|
117
|
+
const index = this.listeners.indexOf(callback);
|
|
118
|
+
if (index !== -1) {
|
|
119
|
+
this.listeners.splice(index, 1);
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
addToHistory(status) {
|
|
124
|
+
this.history.push(status);
|
|
125
|
+
// Trim history to limit
|
|
126
|
+
if (this.history.length > this.config.historyLimit) {
|
|
127
|
+
this.history = this.history.slice(-this.config.historyLimit);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
notifyListeners(status) {
|
|
131
|
+
for (const listener of this.listeners) {
|
|
132
|
+
try {
|
|
133
|
+
listener(status);
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
// Ignore listener errors
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
timeout(ms, message) {
|
|
141
|
+
return new Promise((_, reject) => {
|
|
142
|
+
setTimeout(() => reject(new Error(message)), ms);
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Get component health by name
|
|
147
|
+
*/
|
|
148
|
+
async getComponentHealth(name) {
|
|
149
|
+
const status = await this.getStatus();
|
|
150
|
+
return status.components[name];
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Check if system is healthy
|
|
154
|
+
*/
|
|
155
|
+
async isHealthy() {
|
|
156
|
+
const status = await this.getStatus();
|
|
157
|
+
return status.status === 'healthy';
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Get registered check names
|
|
161
|
+
*/
|
|
162
|
+
getRegisteredChecks() {
|
|
163
|
+
return Array.from(this.checks.keys());
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=health-monitor.js.map
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V3 Orchestrator Facade
|
|
3
|
+
* Unified interface to decomposed orchestrator components
|
|
4
|
+
* ~50 lines (target achieved)
|
|
5
|
+
*/
|
|
6
|
+
import { TaskManager } from './task-manager.js';
|
|
7
|
+
import { SessionManager, type SessionManagerConfig } from './session-manager.js';
|
|
8
|
+
import { HealthMonitor, type HealthMonitorConfig } from './health-monitor.js';
|
|
9
|
+
import { LifecycleManager, type LifecycleManagerConfig } from './lifecycle-manager.js';
|
|
10
|
+
import { EventCoordinator } from './event-coordinator.js';
|
|
11
|
+
import { EventBus } from '../event-bus.js';
|
|
12
|
+
export * from './task-manager.js';
|
|
13
|
+
export * from './session-manager.js';
|
|
14
|
+
export * from './health-monitor.js';
|
|
15
|
+
export * from './lifecycle-manager.js';
|
|
16
|
+
export * from './event-coordinator.js';
|
|
17
|
+
/**
|
|
18
|
+
* Orchestrator facade configuration
|
|
19
|
+
* (Note: For schema-validated config, use OrchestratorConfig from config/schema.ts)
|
|
20
|
+
*/
|
|
21
|
+
export interface OrchestratorFacadeConfig {
|
|
22
|
+
session: SessionManagerConfig;
|
|
23
|
+
health: HealthMonitorConfig;
|
|
24
|
+
lifecycle: LifecycleManagerConfig;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Default orchestrator facade configuration
|
|
28
|
+
*/
|
|
29
|
+
export declare const defaultOrchestratorFacadeConfig: OrchestratorFacadeConfig;
|
|
30
|
+
/**
|
|
31
|
+
* Create orchestrator components
|
|
32
|
+
*/
|
|
33
|
+
export declare function createOrchestrator(config?: Partial<OrchestratorFacadeConfig>): {
|
|
34
|
+
eventBus: EventBus;
|
|
35
|
+
taskManager: TaskManager;
|
|
36
|
+
sessionManager: SessionManager;
|
|
37
|
+
healthMonitor: HealthMonitor;
|
|
38
|
+
lifecycleManager: LifecycleManager;
|
|
39
|
+
eventCoordinator: EventCoordinator;
|
|
40
|
+
config: OrchestratorFacadeConfig;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Orchestrator type for facade
|
|
44
|
+
*/
|
|
45
|
+
export type OrchestratorComponents = ReturnType<typeof createOrchestrator>;
|
|
46
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V3 Orchestrator Facade
|
|
3
|
+
* Unified interface to decomposed orchestrator components
|
|
4
|
+
* ~50 lines (target achieved)
|
|
5
|
+
*/
|
|
6
|
+
import { TaskManager } from './task-manager.js';
|
|
7
|
+
import { SessionManager } from './session-manager.js';
|
|
8
|
+
import { HealthMonitor } from './health-monitor.js';
|
|
9
|
+
import { LifecycleManager } from './lifecycle-manager.js';
|
|
10
|
+
import { EventCoordinator } from './event-coordinator.js';
|
|
11
|
+
import { EventBus } from '../event-bus.js';
|
|
12
|
+
export * from './task-manager.js';
|
|
13
|
+
export * from './session-manager.js';
|
|
14
|
+
export * from './health-monitor.js';
|
|
15
|
+
export * from './lifecycle-manager.js';
|
|
16
|
+
export * from './event-coordinator.js';
|
|
17
|
+
/**
|
|
18
|
+
* Default orchestrator facade configuration
|
|
19
|
+
*/
|
|
20
|
+
export const defaultOrchestratorFacadeConfig = {
|
|
21
|
+
session: {
|
|
22
|
+
persistSessions: true,
|
|
23
|
+
dataDir: './data',
|
|
24
|
+
sessionRetentionMs: 3600000,
|
|
25
|
+
},
|
|
26
|
+
health: {
|
|
27
|
+
checkInterval: 30000,
|
|
28
|
+
historyLimit: 100,
|
|
29
|
+
degradedThreshold: 1,
|
|
30
|
+
unhealthyThreshold: 2,
|
|
31
|
+
},
|
|
32
|
+
lifecycle: {
|
|
33
|
+
maxConcurrentAgents: 20,
|
|
34
|
+
spawnTimeout: 30000,
|
|
35
|
+
terminateTimeout: 10000,
|
|
36
|
+
maxSpawnRetries: 3,
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Create orchestrator components
|
|
41
|
+
*/
|
|
42
|
+
export function createOrchestrator(config = {}) {
|
|
43
|
+
const mergedConfig = {
|
|
44
|
+
session: { ...defaultOrchestratorFacadeConfig.session, ...config.session },
|
|
45
|
+
health: { ...defaultOrchestratorFacadeConfig.health, ...config.health },
|
|
46
|
+
lifecycle: { ...defaultOrchestratorFacadeConfig.lifecycle, ...config.lifecycle },
|
|
47
|
+
};
|
|
48
|
+
const eventBus = new EventBus();
|
|
49
|
+
const taskManager = new TaskManager(eventBus);
|
|
50
|
+
const sessionManager = new SessionManager(eventBus, mergedConfig.session);
|
|
51
|
+
const healthMonitor = new HealthMonitor(eventBus, mergedConfig.health);
|
|
52
|
+
const lifecycleManager = new LifecycleManager(eventBus, mergedConfig.lifecycle);
|
|
53
|
+
const eventCoordinator = new EventCoordinator(eventBus);
|
|
54
|
+
return {
|
|
55
|
+
eventBus,
|
|
56
|
+
taskManager,
|
|
57
|
+
sessionManager,
|
|
58
|
+
healthMonitor,
|
|
59
|
+
lifecycleManager,
|
|
60
|
+
eventCoordinator,
|
|
61
|
+
config: mergedConfig,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=index.js.map
|