claude-flow-novice 1.6.4 → 1.6.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/commands/parse-epic.js +180 -0
- package/.claude/settings.local.json +2 -1
- package/.claude-flow-novice/dist/mcp/mcp-server-novice.js +37 -2
- package/.claude-flow-novice/dist/mcp/transports/base.js +5 -0
- package/.claude-flow-novice/dist/mcp/transports/base.js.map +1 -0
- package/.claude-flow-novice/dist/mcp/transports/http.js +414 -0
- package/.claude-flow-novice/dist/mcp/transports/http.js.map +1 -0
- package/.claude-flow-novice/dist/mcp/transports/stdio.js +217 -0
- package/.claude-flow-novice/dist/mcp/transports/stdio.js.map +1 -0
- package/.claude-flow-novice/dist/src/cli/commands/parse-epic.js +129 -0
- package/.claude-flow-novice/dist/src/cli/commands/parse-epic.js.map +1 -0
- package/.claude-flow-novice/dist/src/cli/index.js +3 -0
- package/.claude-flow-novice/dist/src/cli/index.js.map +1 -1
- package/.claude-flow-novice/dist/src/cli/utils/epic-parser.js +266 -0
- package/.claude-flow-novice/dist/src/cli/utils/epic-parser.js.map +1 -0
- package/.claude-flow-novice/dist/src/communication/message-bus.js +105 -2
- package/.claude-flow-novice/dist/src/communication/message-bus.js.map +1 -1
- package/.claude-flow-novice/dist/src/coordination/adapters/v1-coordinator-adapter.js +1 -1
- package/.claude-flow-novice/dist/src/coordination/adapters/v1-coordinator-adapter.js.map +1 -1
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/cache/artifact-cache-optimizer.js +632 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/cache/artifact-cache-optimizer.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/cache/index.js +11 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/cache/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/checkpoints/checkpoint-compressor.js +318 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/checkpoints/checkpoint-compressor.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/completion/completion-detector.js +234 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/completion/completion-detector.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/completion/hierarchical-detector.js +347 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/completion/hierarchical-detector.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/completion/index.js +13 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/completion/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/completion/lamport-clock.js +173 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/completion/lamport-clock.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/completion/mesh-detector.js +526 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/completion/mesh-detector.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/completion/sdk-completion-detector.js +443 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/completion/sdk-completion-detector.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/completion/swarm-shutdown.js +366 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/completion/swarm-shutdown.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/coordinator-factory.js +287 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/coordinator-factory.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/coordinators/cascading-shutdown.example.js +364 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/coordinators/cascading-shutdown.example.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/coordinators/cascading-shutdown.js +492 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/coordinators/cascading-shutdown.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/coordinators/hierarchical-coordinator.js +786 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/coordinators/hierarchical-coordinator.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/coordinators/index.js +16 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/coordinators/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/coordinators/parent-child-manager.js +342 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/coordinators/parent-child-manager.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/coordinators/swarm-coordinator-v2.js +601 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/coordinators/swarm-coordinator-v2.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/agent-state.js +9 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/agent-state.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/dead-letter-queue.js +413 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/dead-letter-queue.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/dependency-graph.js +471 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/dependency-graph.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/dependency-node.js +379 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/dependency-node.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/dependency-resolver.js +335 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/dependency-resolver.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/help-request-metrics.js +211 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/help-request-metrics.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/index.js +33 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/message-broker.js +920 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/message-broker.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/message-router.js +385 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/message-router.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/message.js +138 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/message.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/resource-manager-safe.js +478 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/resource-manager-safe.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/state-machine-config.js +358 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/state-machine-config.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/state-machine.js +588 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/state-machine.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/state-transition.js +153 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/state-transition.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/task-scheduler.js +360 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/task-scheduler.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/topic-manager.js +337 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/topic-manager.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/deadlock/deadlock-detector.js +424 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/deadlock/deadlock-detector.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/deadlock/index.js +9 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/deadlock/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/deadlock/resource-manager.js +669 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/deadlock/resource-manager.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/dependency/artifact-storage.js +451 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/dependency/artifact-storage.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/dependency/cycle-detector.js +271 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/dependency/cycle-detector.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/dependency/dependency-graph.js +335 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/dependency/dependency-graph.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/dependency/dependency-manager.js +439 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/dependency/dependency-manager.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/dependency/dependency-request.js +92 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/dependency/dependency-request.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/dependency/index.js +21 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/dependency/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/dependency/topological-sort.js +223 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/dependency/topological-sort.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/help-system/help-coordinator.js +436 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/help-system/help-coordinator.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/help-system/help-matcher.js +278 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/help-system/help-matcher.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/help-system/help-request-handler.js +317 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/help-system/help-request-handler.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/help-system/help-request.js +273 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/help-system/help-request.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/help-system/index.js +15 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/help-system/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/help-system/waiting-agent-pool.js +512 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/help-system/waiting-agent-pool.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/index.js +67 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/integration/help-deadlock-integration.js +557 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/integration/help-deadlock-integration.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/integration/index.js +14 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/integration/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/integration/message-bus-completion-integration.example.js +212 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/integration/message-bus-completion-integration.example.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/integration/message-bus-completion-integration.js +552 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/integration/message-bus-completion-integration.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/integration/state-machine-integration.js +635 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/integration/state-machine-integration.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/interfaces/IArtifactStorage.js +28 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/interfaces/IArtifactStorage.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/interfaces/ICoordinator.js +9 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/interfaces/ICoordinator.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/interfaces/ISessionStore.js +25 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/interfaces/ISessionStore.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/interfaces/index.js +14 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/interfaces/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/memory/artifact-adapter.js +308 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/memory/artifact-adapter.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/memory/completion-storage.js +439 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/memory/completion-storage.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/memory/dependency-graph-storage.js +540 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/memory/dependency-graph-storage.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/memory/dependency-storage.js +367 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/memory/dependency-storage.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/memory/index.js +14 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/memory/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/memory/message-storage.js +518 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/memory/message-storage.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/memory/state-storage.js +377 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/memory/state-storage.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/messaging/channel.js +371 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/messaging/channel.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/messaging/channels/dependency-channel.js +355 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/messaging/channels/dependency-channel.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/messaging/channels/help-channel.js +424 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/messaging/channels/help-channel.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/messaging/channels/index.js +16 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/messaging/channels/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/messaging/channels/state-channel.js +295 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/messaging/channels/state-channel.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/messaging/channels/task-channel.js +411 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/messaging/channels/task-channel.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/messaging/index.js +14 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/messaging/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/messaging/message-bus.js +387 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/messaging/message-bus.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/messaging/message-persistence.js +589 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/messaging/message-persistence.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/messaging/message-router.js +444 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/messaging/message-router.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/artifact-storage.js +560 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/artifact-storage.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/background-orchestrator.js +335 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/background-orchestrator.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/bash-output-monitor.js +104 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/bash-output-monitor.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/checkpoint-manager.js +847 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/checkpoint-manager.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/help-coordinator.js +470 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/help-coordinator.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/hierarchical-background-integration.js +450 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/hierarchical-background-integration.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/index.js +13 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/message-bus-integration.js +625 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/message-bus-integration.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/multi-level-control.js +545 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/multi-level-control.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/query-controller.js +740 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/query-controller.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/query-message-integration.js +415 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/query-message-integration.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/session-pool-optimizer.js +615 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/session-pool-optimizer.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/state-machine-integration.js +547 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/state-machine-integration.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/state-sdk-integration.js +342 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/state-sdk-integration.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/security/payload-validator.js +259 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/security/payload-validator.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/truth/framework-registry.js +273 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/truth/framework-registry.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/truth/index.js +8 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/truth/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/truth/truth-config-manager.js +310 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/truth/truth-config-manager.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/truth/truth-validator.js +218 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/truth/truth-validator.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/types/sdk.js +9 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/types/sdk.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/utils/index.js +6 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/utils/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/utils/priority-queue.js +145 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/utils/priority-queue.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/utils/sdk-helpers.js +122 -0
- package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/utils/sdk-helpers.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/config-translator.js +17 -43
- package/.claude-flow-novice/dist/src/coordination/config-translator.js.map +1 -1
- package/.claude-flow-novice/dist/src/coordination/coordination-toggle.js +34 -76
- package/.claude-flow-novice/dist/src/coordination/coordination-toggle.js.map +1 -1
- package/.claude-flow-novice/dist/src/coordination/shared/core/agent-state.js +172 -0
- package/.claude-flow-novice/dist/src/coordination/shared/core/agent-state.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/shared/core/index.js +7 -0
- package/.claude-flow-novice/dist/src/coordination/shared/core/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/shared/index.js +19 -0
- package/.claude-flow-novice/dist/src/coordination/shared/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/shared/interfaces/ICoordinator.js +24 -0
- package/.claude-flow-novice/dist/src/coordination/shared/interfaces/ICoordinator.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/shared/interfaces/index.js +7 -0
- package/.claude-flow-novice/dist/src/coordination/shared/interfaces/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/shared/message-broker.js +920 -0
- package/.claude-flow-novice/dist/src/coordination/shared/message-broker.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/shared/message.js +138 -0
- package/.claude-flow-novice/dist/src/coordination/shared/message.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/shared/security/payload-validator.js +259 -0
- package/.claude-flow-novice/dist/src/coordination/shared/security/payload-validator.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/shared/transparency/index.js +17 -0
- package/.claude-flow-novice/dist/src/coordination/shared/transparency/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/shared/transparency/interfaces/transparency-system.js +19 -0
- package/.claude-flow-novice/dist/src/coordination/shared/transparency/interfaces/transparency-system.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/shared/transparency/transparency-integration.js +357 -0
- package/.claude-flow-novice/dist/src/coordination/shared/transparency/transparency-integration.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/shared/transparency/transparency-system.js +679 -0
- package/.claude-flow-novice/dist/src/coordination/shared/transparency/transparency-system.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/shared/types/index.js +7 -0
- package/.claude-flow-novice/dist/src/coordination/shared/types/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/shared/types/sdk.js +10 -0
- package/.claude-flow-novice/dist/src/coordination/shared/types/sdk.js.map +1 -0
- package/.claude-flow-novice/dist/src/feature-flags/core/FeatureFlagManager.js +52 -2
- package/.claude-flow-novice/dist/src/feature-flags/core/FeatureFlagManager.js.map +1 -1
- package/.claude-flow-novice/dist/src/mcp/mcp-server-novice.js +37 -2
- package/.claude-flow-novice/dist/src/mcp/session-manager.js +3 -1
- package/.claude-flow-novice/dist/src/mcp/session-manager.js.map +1 -1
- package/.claude-flow-novice/dist/src/providers/provider-manager.js +36 -3
- package/.claude-flow-novice/dist/src/providers/provider-manager.js.map +1 -1
- package/.claude-flow-novice/dist/src/utils/markdown-sanitizer.js +65 -41
- package/.claude-flow-novice/dist/src/utils/markdown-sanitizer.js.map +1 -1
- package/.claude-flow-novice/dist/src/web/api/server.js +1 -1
- package/.claude-flow-novice/dist/src/web/api/server.js.map +1 -1
- package/.claude-flow-novice/dist/src/workflows/progressive-rollout-manager.js +30 -0
- package/.claude-flow-novice/dist/src/workflows/progressive-rollout-manager.js.map +1 -1
- package/.claude-flow-novice/metrics.db-shm +0 -0
- package/.claude-flow-novice/metrics.db-wal +0 -0
- package/package.json +2 -2
- package/scripts/monitoring/alert-monitor.sh +220 -0
- package/scripts/monitoring/view-alerts.sh +307 -0
- package/scripts/test-zai-api.cjs +2 -2
- package/src/slash-commands/parse-epic.js +1 -1
|
@@ -0,0 +1,635 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Coordination V2 - State Machine Integration
|
|
3
|
+
*
|
|
4
|
+
* Bidirectional synchronization between Phase 01 state machine and Phase 02 dependency graph.
|
|
5
|
+
* Bridges agent lifecycle states with task scheduling and dependency resolution.
|
|
6
|
+
*
|
|
7
|
+
* Integration flow:
|
|
8
|
+
* - State machine transitions → Task status updates
|
|
9
|
+
* - Task assignments → Agent state transitions
|
|
10
|
+
* - Completion events → Dependency resolution
|
|
11
|
+
* - Error handling → Blocked state propagation
|
|
12
|
+
*
|
|
13
|
+
* Performance Requirements:
|
|
14
|
+
* - Dependency resolution: <50ms (p95)
|
|
15
|
+
* - State transition handling: <100ms (p99)
|
|
16
|
+
* - Agent assignment: <20ms (p95)
|
|
17
|
+
* - Memory leak prevention: Automatic listener cleanup
|
|
18
|
+
*
|
|
19
|
+
* @module coordination/v2/integration/state-machine-integration
|
|
20
|
+
*/ import { EventEmitter } from 'node:events';
|
|
21
|
+
import { AgentState } from '../../shared/core/agent-state.js';
|
|
22
|
+
import { DependencyNodeStatus } from '../core/dependency-node.js';
|
|
23
|
+
import { Logger } from '../../../core/logger.js';
|
|
24
|
+
/**
|
|
25
|
+
* StateMachineIntegration - Bidirectional synchronization layer
|
|
26
|
+
*
|
|
27
|
+
* Responsibilities:
|
|
28
|
+
* 1. Listen to state machine events and update task statuses
|
|
29
|
+
* 2. Listen to scheduler events and trigger state transitions
|
|
30
|
+
* 3. Manage agent-task assignments
|
|
31
|
+
* 4. Propagate errors and handle retries
|
|
32
|
+
* 5. Maintain consistency between state machine and dependency graph
|
|
33
|
+
*/ export class StateMachineIntegration extends EventEmitter {
|
|
34
|
+
logger;
|
|
35
|
+
stateMachine;
|
|
36
|
+
scheduler;
|
|
37
|
+
graph;
|
|
38
|
+
config;
|
|
39
|
+
agentTaskMappings;
|
|
40
|
+
taskAgentMappings;
|
|
41
|
+
taskRetryCount;
|
|
42
|
+
statistics;
|
|
43
|
+
isRunning;
|
|
44
|
+
schedulingInterval;
|
|
45
|
+
constructor(stateMachine, scheduler, graph, config){
|
|
46
|
+
super();
|
|
47
|
+
this.logger = new Logger({
|
|
48
|
+
level: 'info',
|
|
49
|
+
format: 'text',
|
|
50
|
+
destination: 'console'
|
|
51
|
+
});
|
|
52
|
+
this.stateMachine = stateMachine;
|
|
53
|
+
this.scheduler = scheduler;
|
|
54
|
+
this.graph = graph;
|
|
55
|
+
this.config = {
|
|
56
|
+
autoAssignAgents: config?.autoAssignAgents ?? true,
|
|
57
|
+
maxRetryAttempts: config?.maxRetryAttempts ?? 3,
|
|
58
|
+
validateTaskStatus: config?.validateTaskStatus ?? true,
|
|
59
|
+
enableConsistencyChecks: config?.enableConsistencyChecks ?? true
|
|
60
|
+
};
|
|
61
|
+
this.agentTaskMappings = new Map();
|
|
62
|
+
this.taskAgentMappings = new Map();
|
|
63
|
+
this.taskRetryCount = new Map();
|
|
64
|
+
this.isRunning = false;
|
|
65
|
+
this.statistics = {
|
|
66
|
+
totalAssignments: 0,
|
|
67
|
+
totalCompletions: 0,
|
|
68
|
+
totalFailures: 0,
|
|
69
|
+
totalRetries: 0,
|
|
70
|
+
activeAssignments: 0,
|
|
71
|
+
consistencyChecksPassed: 0,
|
|
72
|
+
consistencyChecksFailed: 0
|
|
73
|
+
};
|
|
74
|
+
this.setupEventListeners();
|
|
75
|
+
this.logger.info('StateMachineIntegration initialized', {
|
|
76
|
+
autoAssignAgents: this.config.autoAssignAgents,
|
|
77
|
+
maxRetryAttempts: this.config.maxRetryAttempts
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Setup bidirectional event listeners
|
|
82
|
+
*/ setupEventListeners() {
|
|
83
|
+
// State machine → Scheduler (agent state changes affect tasks)
|
|
84
|
+
this.stateMachine.on('state:transition', this.onAgentStateChange.bind(this));
|
|
85
|
+
// Scheduler → State machine (task events trigger agent state changes)
|
|
86
|
+
this.scheduler.on('task:scheduled', this.onTaskScheduled.bind(this));
|
|
87
|
+
this.scheduler.on('task:completed', this.onTaskCompleted.bind(this));
|
|
88
|
+
// Custom event for task failures (emitted by scheduler or manually)
|
|
89
|
+
this.on('task:failed', this.onTaskFailed.bind(this));
|
|
90
|
+
this.logger.debug('Event listeners configured');
|
|
91
|
+
}
|
|
92
|
+
// ============================================
|
|
93
|
+
// State Machine → Scheduler Integration
|
|
94
|
+
// ============================================
|
|
95
|
+
/**
|
|
96
|
+
* Handle agent state transitions
|
|
97
|
+
* Maps state machine events to task status updates
|
|
98
|
+
*/ async onAgentStateChange(event) {
|
|
99
|
+
const { agentId, fromState, toState } = event;
|
|
100
|
+
this.logger.debug('Agent state changed', {
|
|
101
|
+
agentId,
|
|
102
|
+
fromState,
|
|
103
|
+
toState,
|
|
104
|
+
timestamp: event.timestamp
|
|
105
|
+
});
|
|
106
|
+
const mapping = this.agentTaskMappings.get(agentId);
|
|
107
|
+
if (!mapping) {
|
|
108
|
+
// Agent has no assigned task, this is normal for IDLE agents
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
const taskId = mapping.taskId;
|
|
112
|
+
const node = this.graph.getNode(taskId);
|
|
113
|
+
if (!node) {
|
|
114
|
+
this.logger.warn('Task not found in graph', {
|
|
115
|
+
taskId,
|
|
116
|
+
agentId
|
|
117
|
+
});
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
// Update mapping status
|
|
121
|
+
mapping.status = toState;
|
|
122
|
+
// Map agent states to task statuses
|
|
123
|
+
try {
|
|
124
|
+
if (toState === AgentState.WORKING) {
|
|
125
|
+
// Agent started working → task is executing
|
|
126
|
+
await this.updateTaskStatus(node, DependencyNodeStatus.EXECUTING, {
|
|
127
|
+
agentId,
|
|
128
|
+
startedAt: Date.now()
|
|
129
|
+
});
|
|
130
|
+
} else if (toState === AgentState.COMPLETED) {
|
|
131
|
+
// Agent completed → mark task as completed
|
|
132
|
+
await this.updateTaskStatus(node, DependencyNodeStatus.COMPLETED, {
|
|
133
|
+
agentId,
|
|
134
|
+
completedAt: Date.now()
|
|
135
|
+
});
|
|
136
|
+
// Notify scheduler of completion
|
|
137
|
+
await this.scheduler.onTaskComplete(taskId);
|
|
138
|
+
// Clear assignment
|
|
139
|
+
this.clearAgentAssignment(agentId);
|
|
140
|
+
} else if (toState === AgentState.BLOCKED || toState === AgentState.ERROR) {
|
|
141
|
+
// Agent blocked/errored → task failed
|
|
142
|
+
const error = new Error(`Agent ${agentId} transitioned to ${toState}`);
|
|
143
|
+
await this.handleTaskFailure(taskId, agentId, error);
|
|
144
|
+
} else if (toState === AgentState.WAITING) {
|
|
145
|
+
// Agent waiting → task pending dependencies
|
|
146
|
+
await this.updateTaskStatus(node, DependencyNodeStatus.PENDING, {
|
|
147
|
+
agentId,
|
|
148
|
+
waitingAt: Date.now()
|
|
149
|
+
});
|
|
150
|
+
} else if (toState === AgentState.IDLE) {
|
|
151
|
+
// Agent returned to idle → ready for new assignment
|
|
152
|
+
// Only clear if task was previously completed
|
|
153
|
+
if (fromState === AgentState.COMPLETED) {
|
|
154
|
+
this.clearAgentAssignment(agentId);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
// Consistency check
|
|
158
|
+
if (this.config.enableConsistencyChecks) {
|
|
159
|
+
await this.validateStateConsistency(agentId, taskId);
|
|
160
|
+
}
|
|
161
|
+
} catch (error) {
|
|
162
|
+
this.logger.error('Failed to handle agent state change', {
|
|
163
|
+
agentId,
|
|
164
|
+
taskId,
|
|
165
|
+
error: error instanceof Error ? error.message : String(error)
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
// ============================================
|
|
170
|
+
// Scheduler → State Machine Integration
|
|
171
|
+
// ============================================
|
|
172
|
+
/**
|
|
173
|
+
* Handle task scheduled event
|
|
174
|
+
* Assigns tasks to available agents
|
|
175
|
+
*/ async onTaskScheduled(event) {
|
|
176
|
+
const { taskId, priority } = event;
|
|
177
|
+
this.logger.debug('Task scheduled', {
|
|
178
|
+
taskId,
|
|
179
|
+
priority,
|
|
180
|
+
dependenciesMet: event.dependenciesMet
|
|
181
|
+
});
|
|
182
|
+
// Only assign if dependencies are met and auto-assignment is enabled
|
|
183
|
+
if (!event.dependenciesMet || !this.config.autoAssignAgents) {
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
try {
|
|
187
|
+
// Find available agent
|
|
188
|
+
const agentId = await this.findAvailableAgent();
|
|
189
|
+
if (!agentId) {
|
|
190
|
+
this.logger.debug('No available agents for task assignment', {
|
|
191
|
+
taskId
|
|
192
|
+
});
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
// Assign task to agent
|
|
196
|
+
await this.assignTaskToAgent(taskId, agentId);
|
|
197
|
+
} catch (error) {
|
|
198
|
+
this.logger.error('Failed to assign task', {
|
|
199
|
+
taskId,
|
|
200
|
+
error: error instanceof Error ? error.message : String(error)
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Handle task completion event
|
|
206
|
+
* Transitions agent to completed state
|
|
207
|
+
*/ async onTaskCompleted(event) {
|
|
208
|
+
const { taskId, agentId } = event;
|
|
209
|
+
this.logger.info('Task completed', {
|
|
210
|
+
taskId,
|
|
211
|
+
agentId,
|
|
212
|
+
completionTime: event.completionTime,
|
|
213
|
+
newlyReadyTasks: event.newlyReadyTasks
|
|
214
|
+
});
|
|
215
|
+
if (!agentId) {
|
|
216
|
+
this.logger.warn('Task completed without assigned agent', {
|
|
217
|
+
taskId
|
|
218
|
+
});
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
try {
|
|
222
|
+
// Transition agent to COMPLETED then IDLE
|
|
223
|
+
const currentState = this.stateMachine.getState(agentId);
|
|
224
|
+
if (currentState !== AgentState.COMPLETED) {
|
|
225
|
+
await this.stateMachine.transition(agentId, AgentState.COMPLETED, {
|
|
226
|
+
metadata: {
|
|
227
|
+
taskId,
|
|
228
|
+
completedAt: Date.now()
|
|
229
|
+
}
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
// Then to IDLE for next assignment
|
|
233
|
+
await this.stateMachine.transition(agentId, AgentState.IDLE);
|
|
234
|
+
// Update statistics
|
|
235
|
+
this.statistics.totalCompletions++;
|
|
236
|
+
this.statistics.activeAssignments--;
|
|
237
|
+
// Emit completion event
|
|
238
|
+
this.emit('integration:task-completed', {
|
|
239
|
+
taskId,
|
|
240
|
+
agentId
|
|
241
|
+
});
|
|
242
|
+
} catch (error) {
|
|
243
|
+
this.logger.error('Failed to handle task completion', {
|
|
244
|
+
taskId,
|
|
245
|
+
agentId,
|
|
246
|
+
error: error instanceof Error ? error.message : String(error)
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Handle task failure event
|
|
252
|
+
* Manages retries and agent error states
|
|
253
|
+
*/ async onTaskFailed(event) {
|
|
254
|
+
const { taskId, agentId, error } = event;
|
|
255
|
+
this.logger.warn('Task failed', {
|
|
256
|
+
taskId,
|
|
257
|
+
agentId,
|
|
258
|
+
error: error.message
|
|
259
|
+
});
|
|
260
|
+
try {
|
|
261
|
+
await this.handleTaskFailure(taskId, agentId, error);
|
|
262
|
+
} catch (handlingError) {
|
|
263
|
+
this.logger.error('Failed to handle task failure', {
|
|
264
|
+
taskId,
|
|
265
|
+
agentId,
|
|
266
|
+
error: handlingError instanceof Error ? handlingError.message : String(handlingError)
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
// ============================================
|
|
271
|
+
// Agent Assignment Logic
|
|
272
|
+
// ============================================
|
|
273
|
+
/**
|
|
274
|
+
* Assign a task to an available agent
|
|
275
|
+
*/ async assignTaskToAgent(taskId, agentId) {
|
|
276
|
+
const node = this.graph.getNode(taskId);
|
|
277
|
+
if (!node) {
|
|
278
|
+
throw new Error(`Task ${taskId} not found in graph`);
|
|
279
|
+
}
|
|
280
|
+
this.logger.info('Assigning task to agent', {
|
|
281
|
+
taskId,
|
|
282
|
+
agentId
|
|
283
|
+
});
|
|
284
|
+
// Create mapping
|
|
285
|
+
const mapping = {
|
|
286
|
+
agentId,
|
|
287
|
+
taskId,
|
|
288
|
+
assignedAt: Date.now(),
|
|
289
|
+
status: AgentState.WORKING
|
|
290
|
+
};
|
|
291
|
+
this.agentTaskMappings.set(agentId, mapping);
|
|
292
|
+
this.taskAgentMappings.set(taskId, agentId);
|
|
293
|
+
// Update statistics
|
|
294
|
+
this.statistics.totalAssignments++;
|
|
295
|
+
this.statistics.activeAssignments++;
|
|
296
|
+
// Transition agent to WORKING
|
|
297
|
+
await this.stateMachine.transition(agentId, AgentState.WORKING, {
|
|
298
|
+
metadata: {
|
|
299
|
+
taskId,
|
|
300
|
+
assignedAt: Date.now()
|
|
301
|
+
}
|
|
302
|
+
});
|
|
303
|
+
// Update task node
|
|
304
|
+
await this.updateTaskStatus(node, DependencyNodeStatus.EXECUTING, {
|
|
305
|
+
agentId,
|
|
306
|
+
assignedAt: Date.now()
|
|
307
|
+
});
|
|
308
|
+
// Emit assignment event
|
|
309
|
+
const event = {
|
|
310
|
+
taskId,
|
|
311
|
+
agentId,
|
|
312
|
+
timestamp: new Date()
|
|
313
|
+
};
|
|
314
|
+
this.emit('task:assigned', event);
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Find an available agent (IDLE or WAITING state)
|
|
318
|
+
*/ async findAvailableAgent() {
|
|
319
|
+
const allStates = this.stateMachine.getAllStates();
|
|
320
|
+
for (const [agentId, state] of allStates){
|
|
321
|
+
// Agent is available if idle or waiting
|
|
322
|
+
if (state === AgentState.IDLE || state === AgentState.WAITING) {
|
|
323
|
+
// Check not already assigned
|
|
324
|
+
if (!this.agentTaskMappings.has(agentId)) {
|
|
325
|
+
return agentId;
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
return undefined;
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Clear agent assignment
|
|
333
|
+
*/ clearAgentAssignment(agentId) {
|
|
334
|
+
const mapping = this.agentTaskMappings.get(agentId);
|
|
335
|
+
if (mapping) {
|
|
336
|
+
this.taskAgentMappings.delete(mapping.taskId);
|
|
337
|
+
this.agentTaskMappings.delete(agentId);
|
|
338
|
+
this.statistics.activeAssignments--;
|
|
339
|
+
this.logger.debug('Cleared agent assignment', {
|
|
340
|
+
agentId,
|
|
341
|
+
taskId: mapping.taskId
|
|
342
|
+
});
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
// ============================================
|
|
346
|
+
// Error Handling & Retry Logic
|
|
347
|
+
// ============================================
|
|
348
|
+
/**
|
|
349
|
+
* Handle task failure with retry logic
|
|
350
|
+
*/ async handleTaskFailure(taskId, agentId, error) {
|
|
351
|
+
const node = this.graph.getNode(taskId);
|
|
352
|
+
if (!node) {
|
|
353
|
+
this.logger.warn('Task not found for failure handling', {
|
|
354
|
+
taskId
|
|
355
|
+
});
|
|
356
|
+
return;
|
|
357
|
+
}
|
|
358
|
+
// Update statistics
|
|
359
|
+
this.statistics.totalFailures++;
|
|
360
|
+
// Check retry count
|
|
361
|
+
const retryCount = this.taskRetryCount.get(taskId) || 0;
|
|
362
|
+
if (retryCount < this.config.maxRetryAttempts) {
|
|
363
|
+
// Retry task
|
|
364
|
+
this.taskRetryCount.set(taskId, retryCount + 1);
|
|
365
|
+
this.statistics.totalRetries++;
|
|
366
|
+
this.logger.info('Retrying failed task', {
|
|
367
|
+
taskId,
|
|
368
|
+
attempt: retryCount + 1,
|
|
369
|
+
maxAttempts: this.config.maxRetryAttempts
|
|
370
|
+
});
|
|
371
|
+
// Reset task to READY status
|
|
372
|
+
await this.updateTaskStatus(node, DependencyNodeStatus.READY, {
|
|
373
|
+
retryCount: retryCount + 1,
|
|
374
|
+
lastError: error.message
|
|
375
|
+
});
|
|
376
|
+
// Transition agent to ERROR then IDLE
|
|
377
|
+
if (this.stateMachine.getState(agentId) !== AgentState.ERROR) {
|
|
378
|
+
await this.stateMachine.transition(agentId, AgentState.ERROR, {
|
|
379
|
+
metadata: {
|
|
380
|
+
taskId,
|
|
381
|
+
error: error.message
|
|
382
|
+
}
|
|
383
|
+
});
|
|
384
|
+
}
|
|
385
|
+
await this.stateMachine.transition(agentId, AgentState.IDLE);
|
|
386
|
+
// Clear assignment
|
|
387
|
+
this.clearAgentAssignment(agentId);
|
|
388
|
+
// Re-schedule task
|
|
389
|
+
await this.scheduler.scheduleTask(node);
|
|
390
|
+
} else {
|
|
391
|
+
// Max retries exceeded → permanent failure
|
|
392
|
+
this.logger.error('Task failed permanently after max retries', {
|
|
393
|
+
taskId,
|
|
394
|
+
attempts: retryCount + 1,
|
|
395
|
+
error: error.message
|
|
396
|
+
});
|
|
397
|
+
// Mark as failed
|
|
398
|
+
await this.updateTaskStatus(node, DependencyNodeStatus.FAILED, {
|
|
399
|
+
error: error.message,
|
|
400
|
+
failedAt: Date.now()
|
|
401
|
+
});
|
|
402
|
+
// Transition agent to ERROR then IDLE
|
|
403
|
+
if (this.stateMachine.getState(agentId) !== AgentState.ERROR) {
|
|
404
|
+
await this.stateMachine.transition(agentId, AgentState.ERROR, {
|
|
405
|
+
metadata: {
|
|
406
|
+
taskId,
|
|
407
|
+
error: error.message
|
|
408
|
+
}
|
|
409
|
+
});
|
|
410
|
+
}
|
|
411
|
+
await this.stateMachine.transition(agentId, AgentState.IDLE);
|
|
412
|
+
// Clear assignment
|
|
413
|
+
this.clearAgentAssignment(agentId);
|
|
414
|
+
// Emit permanent failure event
|
|
415
|
+
this.emit('integration:task-permanent-failure', {
|
|
416
|
+
taskId,
|
|
417
|
+
agentId,
|
|
418
|
+
error
|
|
419
|
+
});
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
// ============================================
|
|
423
|
+
// Helper Methods
|
|
424
|
+
// ============================================
|
|
425
|
+
/**
|
|
426
|
+
* Update task status in graph
|
|
427
|
+
*/ async updateTaskStatus(node, status, metadata = {}) {
|
|
428
|
+
if (this.config.validateTaskStatus) {
|
|
429
|
+
// Validate status transition
|
|
430
|
+
const currentStatus = node.status;
|
|
431
|
+
if (!this.isValidTaskStatusTransition(currentStatus, status)) {
|
|
432
|
+
throw new Error(`Invalid task status transition: ${currentStatus} -> ${status}`);
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
// Update node (requires mutable access, assume graph handles this)
|
|
436
|
+
// Note: DependencyNode interface is readonly, but implementation may provide update methods
|
|
437
|
+
const mutableNode = node;
|
|
438
|
+
mutableNode._status = status;
|
|
439
|
+
mutableNode._metadata = {
|
|
440
|
+
...node.metadata,
|
|
441
|
+
...metadata
|
|
442
|
+
};
|
|
443
|
+
mutableNode._updatedAt = Date.now();
|
|
444
|
+
this.logger.debug('Updated task status', {
|
|
445
|
+
taskId: node.taskId,
|
|
446
|
+
status,
|
|
447
|
+
metadata
|
|
448
|
+
});
|
|
449
|
+
}
|
|
450
|
+
/**
|
|
451
|
+
* Validate task status transition
|
|
452
|
+
*/ isValidTaskStatusTransition(current, next) {
|
|
453
|
+
const validTransitions = {
|
|
454
|
+
[DependencyNodeStatus.PENDING]: [
|
|
455
|
+
DependencyNodeStatus.READY,
|
|
456
|
+
DependencyNodeStatus.FAILED
|
|
457
|
+
],
|
|
458
|
+
[DependencyNodeStatus.READY]: [
|
|
459
|
+
DependencyNodeStatus.EXECUTING,
|
|
460
|
+
DependencyNodeStatus.FAILED
|
|
461
|
+
],
|
|
462
|
+
[DependencyNodeStatus.EXECUTING]: [
|
|
463
|
+
DependencyNodeStatus.COMPLETED,
|
|
464
|
+
DependencyNodeStatus.FAILED,
|
|
465
|
+
DependencyNodeStatus.READY
|
|
466
|
+
],
|
|
467
|
+
[DependencyNodeStatus.COMPLETED]: [],
|
|
468
|
+
[DependencyNodeStatus.FAILED]: [
|
|
469
|
+
DependencyNodeStatus.READY
|
|
470
|
+
]
|
|
471
|
+
};
|
|
472
|
+
return validTransitions[current]?.includes(next) ?? false;
|
|
473
|
+
}
|
|
474
|
+
/**
|
|
475
|
+
* Validate state consistency between agent and task
|
|
476
|
+
*/ async validateStateConsistency(agentId, taskId) {
|
|
477
|
+
const agentState = this.stateMachine.getState(agentId);
|
|
478
|
+
const node = this.graph.getNode(taskId);
|
|
479
|
+
if (!agentState || !node) {
|
|
480
|
+
this.statistics.consistencyChecksFailed++;
|
|
481
|
+
return false;
|
|
482
|
+
}
|
|
483
|
+
// Define expected mappings
|
|
484
|
+
const expectedMappings = {
|
|
485
|
+
[AgentState.IDLE]: [
|
|
486
|
+
DependencyNodeStatus.PENDING,
|
|
487
|
+
DependencyNodeStatus.READY
|
|
488
|
+
],
|
|
489
|
+
[AgentState.WORKING]: [
|
|
490
|
+
DependencyNodeStatus.EXECUTING
|
|
491
|
+
],
|
|
492
|
+
[AgentState.WAITING]: [
|
|
493
|
+
DependencyNodeStatus.PENDING
|
|
494
|
+
],
|
|
495
|
+
[AgentState.COMPLETED]: [
|
|
496
|
+
DependencyNodeStatus.COMPLETED
|
|
497
|
+
],
|
|
498
|
+
[AgentState.ERROR]: [
|
|
499
|
+
DependencyNodeStatus.FAILED
|
|
500
|
+
],
|
|
501
|
+
[AgentState.BLOCKED]: [
|
|
502
|
+
DependencyNodeStatus.FAILED,
|
|
503
|
+
DependencyNodeStatus.PENDING
|
|
504
|
+
],
|
|
505
|
+
[AgentState.HELPING]: [
|
|
506
|
+
DependencyNodeStatus.EXECUTING
|
|
507
|
+
],
|
|
508
|
+
[AgentState.PAUSED]: [
|
|
509
|
+
DependencyNodeStatus.EXECUTING,
|
|
510
|
+
DependencyNodeStatus.PENDING
|
|
511
|
+
],
|
|
512
|
+
[AgentState.TERMINATED]: [
|
|
513
|
+
DependencyNodeStatus.COMPLETED,
|
|
514
|
+
DependencyNodeStatus.FAILED
|
|
515
|
+
]
|
|
516
|
+
};
|
|
517
|
+
const allowedStatuses = expectedMappings[agentState] || [];
|
|
518
|
+
const isConsistent = allowedStatuses.includes(node.status);
|
|
519
|
+
if (isConsistent) {
|
|
520
|
+
this.statistics.consistencyChecksPassed++;
|
|
521
|
+
} else {
|
|
522
|
+
this.statistics.consistencyChecksFailed++;
|
|
523
|
+
this.logger.warn('State inconsistency detected', {
|
|
524
|
+
agentId,
|
|
525
|
+
taskId,
|
|
526
|
+
agentState,
|
|
527
|
+
taskStatus: node.status,
|
|
528
|
+
expectedTaskStatuses: allowedStatuses
|
|
529
|
+
});
|
|
530
|
+
}
|
|
531
|
+
return isConsistent;
|
|
532
|
+
}
|
|
533
|
+
/**
|
|
534
|
+
* Get task for agent
|
|
535
|
+
*/ async getTaskForAgent(agentId) {
|
|
536
|
+
const mapping = this.agentTaskMappings.get(agentId);
|
|
537
|
+
return mapping?.taskId;
|
|
538
|
+
}
|
|
539
|
+
/**
|
|
540
|
+
* Get agent for task
|
|
541
|
+
*/ getAgentForTask(taskId) {
|
|
542
|
+
return this.taskAgentMappings.get(taskId);
|
|
543
|
+
}
|
|
544
|
+
// ============================================
|
|
545
|
+
// Public API
|
|
546
|
+
// ============================================
|
|
547
|
+
/**
|
|
548
|
+
* Start the integration layer
|
|
549
|
+
* Begins automatic agent assignment and scheduling
|
|
550
|
+
*/ async start() {
|
|
551
|
+
if (this.isRunning) {
|
|
552
|
+
this.logger.warn('Integration already running');
|
|
553
|
+
return;
|
|
554
|
+
}
|
|
555
|
+
this.isRunning = true;
|
|
556
|
+
// Start automatic task scheduling loop
|
|
557
|
+
if (this.config.autoAssignAgents) {
|
|
558
|
+
this.schedulingInterval = setInterval(()=>{
|
|
559
|
+
this.processReadyTasks();
|
|
560
|
+
}, 1000); // Check every second
|
|
561
|
+
}
|
|
562
|
+
this.logger.info('StateMachineIntegration started');
|
|
563
|
+
}
|
|
564
|
+
/**
|
|
565
|
+
* Stop the integration layer
|
|
566
|
+
*/ async stop() {
|
|
567
|
+
if (!this.isRunning) {
|
|
568
|
+
return;
|
|
569
|
+
}
|
|
570
|
+
this.isRunning = false;
|
|
571
|
+
// Clear scheduling interval
|
|
572
|
+
if (this.schedulingInterval) {
|
|
573
|
+
clearInterval(this.schedulingInterval);
|
|
574
|
+
this.schedulingInterval = undefined;
|
|
575
|
+
}
|
|
576
|
+
this.logger.info('StateMachineIntegration stopped');
|
|
577
|
+
}
|
|
578
|
+
/**
|
|
579
|
+
* Process ready tasks and assign to available agents
|
|
580
|
+
*/ async processReadyTasks() {
|
|
581
|
+
try {
|
|
582
|
+
const readyTasks = this.graph.getReadyTasks();
|
|
583
|
+
for (const node of readyTasks){
|
|
584
|
+
// Skip if already assigned
|
|
585
|
+
if (this.taskAgentMappings.has(node.taskId)) {
|
|
586
|
+
continue;
|
|
587
|
+
}
|
|
588
|
+
// Find available agent
|
|
589
|
+
const agentId = await this.findAvailableAgent();
|
|
590
|
+
if (!agentId) {
|
|
591
|
+
break; // No more agents available
|
|
592
|
+
}
|
|
593
|
+
// Assign task
|
|
594
|
+
await this.assignTaskToAgent(node.taskId, agentId);
|
|
595
|
+
}
|
|
596
|
+
} catch (error) {
|
|
597
|
+
this.logger.error('Error processing ready tasks', {
|
|
598
|
+
error: error instanceof Error ? error.message : String(error)
|
|
599
|
+
});
|
|
600
|
+
}
|
|
601
|
+
}
|
|
602
|
+
/**
|
|
603
|
+
* Get integration statistics
|
|
604
|
+
*/ getStatistics() {
|
|
605
|
+
return {
|
|
606
|
+
...this.statistics
|
|
607
|
+
};
|
|
608
|
+
}
|
|
609
|
+
/**
|
|
610
|
+
* Get all active agent-task assignments
|
|
611
|
+
*/ getActiveAssignments() {
|
|
612
|
+
return Array.from(this.agentTaskMappings.values());
|
|
613
|
+
}
|
|
614
|
+
/**
|
|
615
|
+
* Cleanup and reset integration state
|
|
616
|
+
*/ async cleanup() {
|
|
617
|
+
await this.stop();
|
|
618
|
+
this.agentTaskMappings.clear();
|
|
619
|
+
this.taskAgentMappings.clear();
|
|
620
|
+
this.taskRetryCount.clear();
|
|
621
|
+
this.statistics = {
|
|
622
|
+
totalAssignments: 0,
|
|
623
|
+
totalCompletions: 0,
|
|
624
|
+
totalFailures: 0,
|
|
625
|
+
totalRetries: 0,
|
|
626
|
+
activeAssignments: 0,
|
|
627
|
+
consistencyChecksPassed: 0,
|
|
628
|
+
consistencyChecksFailed: 0
|
|
629
|
+
};
|
|
630
|
+
this.removeAllListeners();
|
|
631
|
+
this.logger.info('StateMachineIntegration cleaned up');
|
|
632
|
+
}
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
//# sourceMappingURL=state-machine-integration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../src/coordination/archives/v2-sdk-typescript/v2/integration/state-machine-integration.ts"],"names":["EventEmitter","AgentState","DependencyNodeStatus","Logger","StateMachineIntegration","logger","stateMachine","scheduler","graph","config","agentTaskMappings","taskAgentMappings","taskRetryCount","statistics","isRunning","schedulingInterval","level","format","destination","autoAssignAgents","maxRetryAttempts","validateTaskStatus","enableConsistencyChecks","Map","totalAssignments","totalCompletions","totalFailures","totalRetries","activeAssignments","consistencyChecksPassed","consistencyChecksFailed","setupEventListeners","info","on","onAgentStateChange","bind","onTaskScheduled","onTaskCompleted","onTaskFailed","debug","event","agentId","fromState","toState","timestamp","mapping","get","taskId","node","getNode","warn","status","WORKING","updateTaskStatus","EXECUTING","startedAt","Date","now","COMPLETED","completedAt","onTaskComplete","clearAgentAssignment","BLOCKED","ERROR","error","Error","handleTaskFailure","WAITING","PENDING","waitingAt","IDLE","validateStateConsistency","message","String","priority","dependenciesMet","findAvailableAgent","assignTaskToAgent","completionTime","newlyReadyTasks","currentState","getState","transition","metadata","emit","handlingError","assignedAt","set","allStates","getAllStates","state","has","undefined","delete","retryCount","attempt","maxAttempts","READY","lastError","scheduleTask","attempts","FAILED","failedAt","currentStatus","isValidTaskStatusTransition","mutableNode","_status","_metadata","_updatedAt","current","next","validTransitions","includes","agentState","expectedMappings","HELPING","PAUSED","TERMINATED","allowedStatuses","isConsistent","taskStatus","expectedTaskStatuses","getTaskForAgent","getAgentForTask","start","setInterval","processReadyTasks","stop","clearInterval","readyTasks","getReadyTasks","getStatistics","getActiveAssignments","Array","from","values","cleanup","clear","removeAllListeners"],"mappings":"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"}
|