claude-flow-novice 1.6.4 → 1.6.6
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/mcp-server-sdk.js +45 -0
- 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/config/.env.example +178 -0
- package/config/DEPLOYMENT_GUIDE.md +692 -0
- package/config/README-CONFIG.md +331 -0
- package/config/coordination-config.sh +327 -0
- package/config/docker/env.development +53 -0
- package/config/docker/env.production +83 -0
- package/config/docker/env.staging +70 -0
- package/config/k8s/configmap-development.yaml +60 -0
- package/config/k8s/configmap-production.yaml +85 -0
- package/config/k8s/configmap-staging.yaml +76 -0
- package/config/k8s/secret-production.yaml +62 -0
- package/config/k8s/secret-staging.yaml +36 -0
- package/package.json +2 -2
- package/scripts/monitoring/alert-monitor.sh +220 -0
- package/scripts/monitoring/dashboards/rate-limiting-dashboard.json +211 -0
- package/scripts/monitoring/quick-test-alerting.sh +118 -0
- package/scripts/monitoring/quick-test-rate-limiting.sh +206 -0
- package/scripts/monitoring/rate-limiting-monitor.sh +380 -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,545 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Phase 5 - Sprint 5.2: Multi-Level Agent Control
|
|
3
|
+
*
|
|
4
|
+
* Implements pause/inject/resume from Level 0 to any child level:
|
|
5
|
+
* - Parent can pause any descendant at any level
|
|
6
|
+
* - Inject commands to paused agents (modify state, update tasks)
|
|
7
|
+
* - Resume agents from Level 0 supervisor
|
|
8
|
+
* - Propagate control commands down hierarchy with <100ms latency
|
|
9
|
+
*
|
|
10
|
+
* @module coordination/v2/sdk/multi-level-control
|
|
11
|
+
*/ import { EventEmitter } from 'node:events';
|
|
12
|
+
import { Logger } from '../../../core/logger.js';
|
|
13
|
+
import { generateId } from '../../../utils/helpers.js';
|
|
14
|
+
// ============================================================================
|
|
15
|
+
// Types and Interfaces
|
|
16
|
+
// ============================================================================
|
|
17
|
+
/**
|
|
18
|
+
* Command types that can be injected into paused agents
|
|
19
|
+
*/ export var InjectedCommandType = /*#__PURE__*/ function(InjectedCommandType) {
|
|
20
|
+
/** Modify agent internal state */ InjectedCommandType["STATE_UPDATE"] = "state_update";
|
|
21
|
+
/** Assign new task to agent */ InjectedCommandType["TASK_UPDATE"] = "task_update";
|
|
22
|
+
/** Update agent priority */ InjectedCommandType["PRIORITY_UPDATE"] = "priority_update";
|
|
23
|
+
/** Modify agent metadata */ InjectedCommandType["METADATA_UPDATE"] = "metadata_update";
|
|
24
|
+
/** Custom command with arbitrary payload */ InjectedCommandType["CUSTOM"] = "custom";
|
|
25
|
+
return InjectedCommandType;
|
|
26
|
+
}({});
|
|
27
|
+
// ============================================================================
|
|
28
|
+
// Multi-Level Control Integration Layer
|
|
29
|
+
// ============================================================================
|
|
30
|
+
/**
|
|
31
|
+
* MultiLevelController - Enables Level 0 to control any descendant
|
|
32
|
+
*
|
|
33
|
+
* Integrates QueryController (pause/resume) with HierarchicalCoordinator
|
|
34
|
+
* (hierarchy management) to provide:
|
|
35
|
+
* - Pause any agent at any level from Level 0
|
|
36
|
+
* - Inject commands into paused agents
|
|
37
|
+
* - Resume agents with injected commands applied
|
|
38
|
+
* - <100ms latency for control operations
|
|
39
|
+
*/ export class MultiLevelController extends EventEmitter {
|
|
40
|
+
logger;
|
|
41
|
+
config;
|
|
42
|
+
queryController;
|
|
43
|
+
hierarchicalCoordinator;
|
|
44
|
+
/** Command injection queue per agent */ commandQueues;
|
|
45
|
+
/** Agent level cache for fast lookups */ agentLevelCache;
|
|
46
|
+
/** Control operation metrics */ metrics;
|
|
47
|
+
constructor(queryController, config = {}){
|
|
48
|
+
super();
|
|
49
|
+
this.logger = new Logger({
|
|
50
|
+
level: 'info',
|
|
51
|
+
format: 'text',
|
|
52
|
+
destination: 'console'
|
|
53
|
+
});
|
|
54
|
+
this.config = {
|
|
55
|
+
maxControlLatencyMs: 100,
|
|
56
|
+
enableCommandQueue: true,
|
|
57
|
+
maxQueuedCommands: 50,
|
|
58
|
+
enableLogging: config.enableLogging ?? true,
|
|
59
|
+
...config
|
|
60
|
+
};
|
|
61
|
+
this.queryController = queryController;
|
|
62
|
+
this.commandQueues = new Map();
|
|
63
|
+
this.agentLevelCache = new Map();
|
|
64
|
+
this.metrics = this.initializeMetrics();
|
|
65
|
+
this.logger.info('MultiLevelController initialized', {
|
|
66
|
+
maxControlLatencyMs: this.config.maxControlLatencyMs,
|
|
67
|
+
enableCommandQueue: this.config.enableCommandQueue
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Register hierarchical coordinator for level tracking
|
|
72
|
+
*/ registerHierarchicalCoordinator(coordinator) {
|
|
73
|
+
this.hierarchicalCoordinator = coordinator;
|
|
74
|
+
// Build agent level cache from hierarchy
|
|
75
|
+
if (coordinator && typeof coordinator.getHierarchyStructure === 'function') {
|
|
76
|
+
const hierarchy = coordinator.getHierarchyStructure();
|
|
77
|
+
for (const agent of hierarchy.agents){
|
|
78
|
+
this.agentLevelCache.set(agent.id, agent.level);
|
|
79
|
+
}
|
|
80
|
+
this.logger.info('Hierarchical coordinator registered', {
|
|
81
|
+
totalAgents: hierarchy.agents.length,
|
|
82
|
+
hierarchyDepth: hierarchy.depth
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Update agent level cache when hierarchy changes
|
|
88
|
+
*/ updateAgentLevel(agentId, level) {
|
|
89
|
+
this.agentLevelCache.set(agentId, level);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Get agent hierarchy level (cached)
|
|
93
|
+
*/ getAgentLevel(agentId) {
|
|
94
|
+
// Try cache first
|
|
95
|
+
const cachedLevel = this.agentLevelCache.get(agentId);
|
|
96
|
+
if (cachedLevel !== undefined) {
|
|
97
|
+
return cachedLevel;
|
|
98
|
+
}
|
|
99
|
+
// Fallback to hierarchical coordinator lookup
|
|
100
|
+
if (this.hierarchicalCoordinator) {
|
|
101
|
+
const agentStatus = this.hierarchicalCoordinator.getAgentStatus(agentId);
|
|
102
|
+
if (agentStatus) {
|
|
103
|
+
this.agentLevelCache.set(agentId, agentStatus.level);
|
|
104
|
+
return agentStatus.level;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
// Default to Level 0 if not found
|
|
108
|
+
return 0;
|
|
109
|
+
}
|
|
110
|
+
// ============================================================================
|
|
111
|
+
// Multi-Level Control Operations (Level 0 → Level N)
|
|
112
|
+
// ============================================================================
|
|
113
|
+
/**
|
|
114
|
+
* Pause agent at any level from Level 0 parent
|
|
115
|
+
*
|
|
116
|
+
* @param parentAgentId - Parent issuing the pause (Level 0 supervisor)
|
|
117
|
+
* @param targetAgentId - Child agent to pause (any level)
|
|
118
|
+
* @param reason - Reason for pause
|
|
119
|
+
* @returns Control operation result
|
|
120
|
+
*/ async pauseChildAgent(parentAgentId, targetAgentId, reason) {
|
|
121
|
+
const startTime = Date.now();
|
|
122
|
+
try {
|
|
123
|
+
const targetLevel = this.getAgentLevel(targetAgentId);
|
|
124
|
+
// Use QueryController to pause agent
|
|
125
|
+
await this.queryController.pauseAgent(targetAgentId, reason ?? `Paused by parent ${parentAgentId}`);
|
|
126
|
+
const latencyMs = Date.now() - startTime;
|
|
127
|
+
// Update metrics
|
|
128
|
+
this.updateControlMetrics(latencyMs);
|
|
129
|
+
this.metrics.totalPauses++;
|
|
130
|
+
const result = {
|
|
131
|
+
operation: 'pause',
|
|
132
|
+
success: true,
|
|
133
|
+
agentId: targetAgentId,
|
|
134
|
+
level: targetLevel,
|
|
135
|
+
latencyMs,
|
|
136
|
+
data: {
|
|
137
|
+
parentAgentId,
|
|
138
|
+
reason
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
if (this.config.enableLogging) {
|
|
142
|
+
this.logger.info('Agent paused from parent', {
|
|
143
|
+
parentAgentId,
|
|
144
|
+
targetAgentId,
|
|
145
|
+
level: targetLevel,
|
|
146
|
+
latencyMs
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
this.emit('agent:paused', result);
|
|
150
|
+
return result;
|
|
151
|
+
} catch (error) {
|
|
152
|
+
const latencyMs = Date.now() - startTime;
|
|
153
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
154
|
+
this.logger.error('Failed to pause child agent', {
|
|
155
|
+
parentAgentId,
|
|
156
|
+
targetAgentId,
|
|
157
|
+
error: errorMessage
|
|
158
|
+
});
|
|
159
|
+
return {
|
|
160
|
+
operation: 'pause',
|
|
161
|
+
success: false,
|
|
162
|
+
agentId: targetAgentId,
|
|
163
|
+
level: this.getAgentLevel(targetAgentId),
|
|
164
|
+
latencyMs,
|
|
165
|
+
error: errorMessage
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Inject command into paused agent at any level
|
|
171
|
+
*
|
|
172
|
+
* Commands are queued and applied when agent resumes.
|
|
173
|
+
* This allows parents to modify child state, assign tasks, update priorities.
|
|
174
|
+
*
|
|
175
|
+
* @param parentAgentId - Parent issuing the command
|
|
176
|
+
* @param targetAgentId - Child agent to receive command
|
|
177
|
+
* @param commandType - Type of command to inject
|
|
178
|
+
* @param payload - Command payload
|
|
179
|
+
* @param immediate - Execute immediately vs queue for resume
|
|
180
|
+
* @returns Injection result
|
|
181
|
+
*/ async injectCommand(parentAgentId, targetAgentId, commandType, payload, immediate = false) {
|
|
182
|
+
const startTime = Date.now();
|
|
183
|
+
try {
|
|
184
|
+
const targetLevel = this.getAgentLevel(targetAgentId);
|
|
185
|
+
// Verify agent is paused
|
|
186
|
+
const session = await this.queryController.getAgentSession(targetAgentId);
|
|
187
|
+
if (!session.isPaused && !immediate) {
|
|
188
|
+
throw new Error(`Agent ${targetAgentId} must be paused before command injection`);
|
|
189
|
+
}
|
|
190
|
+
// Create injected command
|
|
191
|
+
const command = {
|
|
192
|
+
id: generateId('cmd'),
|
|
193
|
+
type: commandType,
|
|
194
|
+
payload,
|
|
195
|
+
issuedBy: parentAgentId,
|
|
196
|
+
targetAgentId,
|
|
197
|
+
targetLevel,
|
|
198
|
+
timestamp: new Date(),
|
|
199
|
+
immediate
|
|
200
|
+
};
|
|
201
|
+
// Queue command for agent
|
|
202
|
+
if (this.config.enableCommandQueue) {
|
|
203
|
+
this.queueCommand(targetAgentId, command);
|
|
204
|
+
}
|
|
205
|
+
// Apply command to agent session metadata
|
|
206
|
+
await this.applyCommandToSession(session, command);
|
|
207
|
+
const latencyMs = Date.now() - startTime;
|
|
208
|
+
// Update metrics
|
|
209
|
+
this.updateControlMetrics(latencyMs);
|
|
210
|
+
this.metrics.totalInjections++;
|
|
211
|
+
const result = {
|
|
212
|
+
success: true,
|
|
213
|
+
commandId: command.id,
|
|
214
|
+
agentId: targetAgentId,
|
|
215
|
+
level: targetLevel,
|
|
216
|
+
latencyMs
|
|
217
|
+
};
|
|
218
|
+
if (this.config.enableLogging) {
|
|
219
|
+
this.logger.info('Command injected', {
|
|
220
|
+
commandId: command.id,
|
|
221
|
+
commandType,
|
|
222
|
+
parentAgentId,
|
|
223
|
+
targetAgentId,
|
|
224
|
+
level: targetLevel,
|
|
225
|
+
latencyMs,
|
|
226
|
+
immediate
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
this.emit('command:injected', {
|
|
230
|
+
command,
|
|
231
|
+
result
|
|
232
|
+
});
|
|
233
|
+
return result;
|
|
234
|
+
} catch (error) {
|
|
235
|
+
const latencyMs = Date.now() - startTime;
|
|
236
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
237
|
+
this.logger.error('Failed to inject command', {
|
|
238
|
+
parentAgentId,
|
|
239
|
+
targetAgentId,
|
|
240
|
+
commandType,
|
|
241
|
+
error: errorMessage
|
|
242
|
+
});
|
|
243
|
+
return {
|
|
244
|
+
success: false,
|
|
245
|
+
commandId: '',
|
|
246
|
+
agentId: targetAgentId,
|
|
247
|
+
level: this.getAgentLevel(targetAgentId),
|
|
248
|
+
latencyMs,
|
|
249
|
+
error: errorMessage
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Resume agent from Level 0 parent
|
|
255
|
+
*
|
|
256
|
+
* Applies all queued commands and resumes agent execution.
|
|
257
|
+
*
|
|
258
|
+
* @param parentAgentId - Parent issuing the resume
|
|
259
|
+
* @param targetAgentId - Child agent to resume
|
|
260
|
+
* @param checkpointId - Optional checkpoint to resume from
|
|
261
|
+
* @returns Control operation result
|
|
262
|
+
*/ async resumeChildAgent(parentAgentId, targetAgentId, checkpointId) {
|
|
263
|
+
const startTime = Date.now();
|
|
264
|
+
try {
|
|
265
|
+
const targetLevel = this.getAgentLevel(targetAgentId);
|
|
266
|
+
// Apply queued commands before resume
|
|
267
|
+
const queuedCommands = this.getQueuedCommands(targetAgentId);
|
|
268
|
+
if (queuedCommands.length > 0) {
|
|
269
|
+
const session = await this.queryController.getAgentSession(targetAgentId);
|
|
270
|
+
for (const command of queuedCommands){
|
|
271
|
+
await this.applyCommandToSession(session, command);
|
|
272
|
+
}
|
|
273
|
+
// Clear command queue
|
|
274
|
+
this.clearCommandQueue(targetAgentId);
|
|
275
|
+
if (this.config.enableLogging) {
|
|
276
|
+
this.logger.debug('Applied queued commands before resume', {
|
|
277
|
+
agentId: targetAgentId,
|
|
278
|
+
commandCount: queuedCommands.length
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
// Resume agent via QueryController
|
|
283
|
+
await this.queryController.resumeAgent(targetAgentId, checkpointId);
|
|
284
|
+
const latencyMs = Date.now() - startTime;
|
|
285
|
+
// Update metrics
|
|
286
|
+
this.updateControlMetrics(latencyMs);
|
|
287
|
+
this.metrics.totalResumes++;
|
|
288
|
+
const result = {
|
|
289
|
+
operation: 'resume',
|
|
290
|
+
success: true,
|
|
291
|
+
agentId: targetAgentId,
|
|
292
|
+
level: targetLevel,
|
|
293
|
+
latencyMs,
|
|
294
|
+
data: {
|
|
295
|
+
parentAgentId,
|
|
296
|
+
checkpointId,
|
|
297
|
+
appliedCommands: queuedCommands.length
|
|
298
|
+
}
|
|
299
|
+
};
|
|
300
|
+
if (this.config.enableLogging) {
|
|
301
|
+
this.logger.info('Agent resumed from parent', {
|
|
302
|
+
parentAgentId,
|
|
303
|
+
targetAgentId,
|
|
304
|
+
level: targetLevel,
|
|
305
|
+
latencyMs,
|
|
306
|
+
appliedCommands: queuedCommands.length
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
this.emit('agent:resumed', result);
|
|
310
|
+
return result;
|
|
311
|
+
} catch (error) {
|
|
312
|
+
const latencyMs = Date.now() - startTime;
|
|
313
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
314
|
+
this.logger.error('Failed to resume child agent', {
|
|
315
|
+
parentAgentId,
|
|
316
|
+
targetAgentId,
|
|
317
|
+
error: errorMessage
|
|
318
|
+
});
|
|
319
|
+
return {
|
|
320
|
+
operation: 'resume',
|
|
321
|
+
success: false,
|
|
322
|
+
agentId: targetAgentId,
|
|
323
|
+
level: this.getAgentLevel(targetAgentId),
|
|
324
|
+
latencyMs,
|
|
325
|
+
error: errorMessage
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Cascade control operation to all descendants
|
|
331
|
+
*
|
|
332
|
+
* Propagates pause/resume down the hierarchy tree.
|
|
333
|
+
*
|
|
334
|
+
* @param parentAgentId - Root parent issuing cascade
|
|
335
|
+
* @param operation - Operation to cascade
|
|
336
|
+
* @returns Array of control operation results
|
|
337
|
+
*/ async cascadeControlOperation(parentAgentId, operation) {
|
|
338
|
+
const results = [];
|
|
339
|
+
if (!this.hierarchicalCoordinator) {
|
|
340
|
+
this.logger.warn('Cannot cascade without hierarchical coordinator');
|
|
341
|
+
return results;
|
|
342
|
+
}
|
|
343
|
+
const parentAgent = this.hierarchicalCoordinator.getAgentStatus(parentAgentId);
|
|
344
|
+
if (!parentAgent) {
|
|
345
|
+
this.logger.warn('Parent agent not found in hierarchy', {
|
|
346
|
+
parentAgentId
|
|
347
|
+
});
|
|
348
|
+
return results;
|
|
349
|
+
}
|
|
350
|
+
// Get all descendants (DFS traversal)
|
|
351
|
+
const descendants = await this.getAllDescendants(parentAgentId);
|
|
352
|
+
if (this.config.enableLogging) {
|
|
353
|
+
this.logger.info('Cascading control operation', {
|
|
354
|
+
parentAgentId,
|
|
355
|
+
operation,
|
|
356
|
+
descendantCount: descendants.length
|
|
357
|
+
});
|
|
358
|
+
}
|
|
359
|
+
// Apply operation to all descendants in parallel
|
|
360
|
+
const operations = descendants.map(async (descendantId)=>{
|
|
361
|
+
if (operation === 'pause') {
|
|
362
|
+
return await this.pauseChildAgent(parentAgentId, descendantId, `Cascaded from ${parentAgentId}`);
|
|
363
|
+
} else {
|
|
364
|
+
return await this.resumeChildAgent(parentAgentId, descendantId);
|
|
365
|
+
}
|
|
366
|
+
});
|
|
367
|
+
results.push(...await Promise.all(operations));
|
|
368
|
+
this.emit('control:cascaded', {
|
|
369
|
+
parentAgentId,
|
|
370
|
+
operation,
|
|
371
|
+
results
|
|
372
|
+
});
|
|
373
|
+
return results;
|
|
374
|
+
}
|
|
375
|
+
// ============================================================================
|
|
376
|
+
// Command Queue Management
|
|
377
|
+
// ============================================================================
|
|
378
|
+
/**
|
|
379
|
+
* Queue command for paused agent
|
|
380
|
+
*/ queueCommand(agentId, command) {
|
|
381
|
+
let queue = this.commandQueues.get(agentId);
|
|
382
|
+
if (!queue) {
|
|
383
|
+
queue = [];
|
|
384
|
+
this.commandQueues.set(agentId, queue);
|
|
385
|
+
}
|
|
386
|
+
// Enforce max queue size
|
|
387
|
+
if (queue.length >= this.config.maxQueuedCommands) {
|
|
388
|
+
this.logger.warn('Command queue full, removing oldest command', {
|
|
389
|
+
agentId,
|
|
390
|
+
maxQueueSize: this.config.maxQueuedCommands
|
|
391
|
+
});
|
|
392
|
+
queue.shift();
|
|
393
|
+
}
|
|
394
|
+
queue.push(command);
|
|
395
|
+
}
|
|
396
|
+
/**
|
|
397
|
+
* Get queued commands for agent
|
|
398
|
+
*/ getQueuedCommands(agentId) {
|
|
399
|
+
return this.commandQueues.get(agentId) ?? [];
|
|
400
|
+
}
|
|
401
|
+
/**
|
|
402
|
+
* Clear command queue for agent
|
|
403
|
+
*/ clearCommandQueue(agentId) {
|
|
404
|
+
this.commandQueues.delete(agentId);
|
|
405
|
+
}
|
|
406
|
+
/**
|
|
407
|
+
* Apply command to agent session
|
|
408
|
+
*/ async applyCommandToSession(session, command) {
|
|
409
|
+
// Store command in session metadata for agent to process
|
|
410
|
+
if (!session.metadata.injectedCommands) {
|
|
411
|
+
session.metadata.injectedCommands = [];
|
|
412
|
+
}
|
|
413
|
+
session.metadata.injectedCommands.push({
|
|
414
|
+
commandId: command.id,
|
|
415
|
+
type: command.type,
|
|
416
|
+
payload: command.payload,
|
|
417
|
+
issuedBy: command.issuedBy,
|
|
418
|
+
timestamp: command.timestamp
|
|
419
|
+
});
|
|
420
|
+
// Apply command effects based on type
|
|
421
|
+
switch(command.type){
|
|
422
|
+
case "state_update":
|
|
423
|
+
if (command.payload.state) {
|
|
424
|
+
session.state = command.payload.state;
|
|
425
|
+
}
|
|
426
|
+
break;
|
|
427
|
+
case "priority_update":
|
|
428
|
+
if (command.payload.priority !== undefined) {
|
|
429
|
+
session.priority = command.payload.priority;
|
|
430
|
+
}
|
|
431
|
+
break;
|
|
432
|
+
case "metadata_update":
|
|
433
|
+
if (command.payload.metadata) {
|
|
434
|
+
session.metadata = {
|
|
435
|
+
...session.metadata,
|
|
436
|
+
...command.payload.metadata
|
|
437
|
+
};
|
|
438
|
+
}
|
|
439
|
+
break;
|
|
440
|
+
case "task_update":
|
|
441
|
+
case "custom":
|
|
442
|
+
break;
|
|
443
|
+
default:
|
|
444
|
+
this.logger.warn('Unknown command type', {
|
|
445
|
+
type: command.type
|
|
446
|
+
});
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
// ============================================================================
|
|
450
|
+
// Hierarchy Traversal Helpers
|
|
451
|
+
// ============================================================================
|
|
452
|
+
/**
|
|
453
|
+
* Get all descendants of an agent (DFS)
|
|
454
|
+
*/ async getAllDescendants(agentId) {
|
|
455
|
+
const descendants = [];
|
|
456
|
+
if (!this.hierarchicalCoordinator) {
|
|
457
|
+
return descendants;
|
|
458
|
+
}
|
|
459
|
+
const agent = this.hierarchicalCoordinator.getAgentStatus(agentId);
|
|
460
|
+
if (!agent) {
|
|
461
|
+
return descendants;
|
|
462
|
+
}
|
|
463
|
+
// DFS traversal
|
|
464
|
+
const stack = [
|
|
465
|
+
...agent.childIds
|
|
466
|
+
];
|
|
467
|
+
while(stack.length > 0){
|
|
468
|
+
const childId = stack.pop();
|
|
469
|
+
descendants.push(childId);
|
|
470
|
+
const child = this.hierarchicalCoordinator.getAgentStatus(childId);
|
|
471
|
+
if (child && child.childIds.length > 0) {
|
|
472
|
+
stack.push(...child.childIds);
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
return descendants;
|
|
476
|
+
}
|
|
477
|
+
// ============================================================================
|
|
478
|
+
// Metrics and Monitoring
|
|
479
|
+
// ============================================================================
|
|
480
|
+
/**
|
|
481
|
+
* Update control operation metrics
|
|
482
|
+
*/ updateControlMetrics(latencyMs) {
|
|
483
|
+
const totalOps = this.metrics.totalPauses + this.metrics.totalInjections + this.metrics.totalResumes;
|
|
484
|
+
this.metrics.averageControlLatencyMs = (this.metrics.averageControlLatencyMs * totalOps + latencyMs) / (totalOps + 1);
|
|
485
|
+
this.metrics.maxControlLatencyMs = Math.max(this.metrics.maxControlLatencyMs, latencyMs);
|
|
486
|
+
// Warn if exceeding latency target
|
|
487
|
+
if (latencyMs > this.config.maxControlLatencyMs) {
|
|
488
|
+
this.logger.warn('Control operation exceeded latency target', {
|
|
489
|
+
latencyMs,
|
|
490
|
+
targetMs: this.config.maxControlLatencyMs
|
|
491
|
+
});
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
/**
|
|
495
|
+
* Get control operation metrics
|
|
496
|
+
*/ getMetrics() {
|
|
497
|
+
return {
|
|
498
|
+
...this.metrics,
|
|
499
|
+
latencyTargetMs: this.config.maxControlLatencyMs,
|
|
500
|
+
withinTarget: this.metrics.averageControlLatencyMs <= this.config.maxControlLatencyMs
|
|
501
|
+
};
|
|
502
|
+
}
|
|
503
|
+
/**
|
|
504
|
+
* Get queued commands count for agent
|
|
505
|
+
*/ getQueuedCommandsCount(agentId) {
|
|
506
|
+
return this.commandQueues.get(agentId)?.length ?? 0;
|
|
507
|
+
}
|
|
508
|
+
/**
|
|
509
|
+
* Cleanup - clear all queues and caches
|
|
510
|
+
*/ async cleanup() {
|
|
511
|
+
this.commandQueues.clear();
|
|
512
|
+
this.agentLevelCache.clear();
|
|
513
|
+
this.removeAllListeners();
|
|
514
|
+
this.logger.info('MultiLevelController cleaned up');
|
|
515
|
+
}
|
|
516
|
+
// ============================================================================
|
|
517
|
+
// Private Helpers
|
|
518
|
+
// ============================================================================
|
|
519
|
+
initializeMetrics() {
|
|
520
|
+
return {
|
|
521
|
+
totalPauses: 0,
|
|
522
|
+
totalInjections: 0,
|
|
523
|
+
totalResumes: 0,
|
|
524
|
+
averageControlLatencyMs: 0,
|
|
525
|
+
maxControlLatencyMs: 0
|
|
526
|
+
};
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
// ============================================================================
|
|
530
|
+
// Factory Functions
|
|
531
|
+
// ============================================================================
|
|
532
|
+
/**
|
|
533
|
+
* Create multi-level controller with QueryController
|
|
534
|
+
*/ export function createMultiLevelController(queryController, config) {
|
|
535
|
+
return new MultiLevelController(queryController, config);
|
|
536
|
+
}
|
|
537
|
+
/**
|
|
538
|
+
* Create multi-level controller with hierarchical coordinator integration
|
|
539
|
+
*/ export function createMultiLevelControllerWithHierarchy(queryController, hierarchicalCoordinator, config) {
|
|
540
|
+
const controller = new MultiLevelController(queryController, config);
|
|
541
|
+
controller.registerHierarchicalCoordinator(hierarchicalCoordinator);
|
|
542
|
+
return controller;
|
|
543
|
+
} // Types are already exported inline above - no duplicate export needed
|
|
544
|
+
|
|
545
|
+
//# sourceMappingURL=multi-level-control.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../src/coordination/archives/v2-sdk-typescript/v2/sdk/multi-level-control.ts"],"names":["EventEmitter","Logger","generateId","InjectedCommandType","MultiLevelController","logger","config","queryController","hierarchicalCoordinator","commandQueues","agentLevelCache","metrics","level","format","destination","maxControlLatencyMs","enableCommandQueue","maxQueuedCommands","enableLogging","Map","initializeMetrics","info","registerHierarchicalCoordinator","coordinator","getHierarchyStructure","hierarchy","agent","agents","set","id","totalAgents","length","hierarchyDepth","depth","updateAgentLevel","agentId","getAgentLevel","cachedLevel","get","undefined","agentStatus","getAgentStatus","pauseChildAgent","parentAgentId","targetAgentId","reason","startTime","Date","now","targetLevel","pauseAgent","latencyMs","updateControlMetrics","totalPauses","result","operation","success","data","emit","error","errorMessage","Error","message","String","injectCommand","commandType","payload","immediate","session","getAgentSession","isPaused","command","type","issuedBy","timestamp","queueCommand","applyCommandToSession","totalInjections","commandId","resumeChildAgent","checkpointId","queuedCommands","getQueuedCommands","clearCommandQueue","debug","commandCount","resumeAgent","totalResumes","appliedCommands","cascadeControlOperation","results","warn","parentAgent","descendants","getAllDescendants","descendantCount","operations","map","descendantId","push","Promise","all","queue","maxQueueSize","shift","delete","metadata","injectedCommands","state","priority","stack","childIds","childId","pop","child","totalOps","averageControlLatencyMs","Math","max","targetMs","getMetrics","latencyTargetMs","withinTarget","getQueuedCommandsCount","cleanup","clear","removeAllListeners","createMultiLevelController","createMultiLevelControllerWithHierarchy","controller"],"mappings":"AAAA;;;;;;;;;;CAUC,GAED,SAASA,YAAY,QAAQ,cAAc;AAC3C,SAASC,MAAM,QAAQ,0BAA0B;AACjD,SAASC,UAAU,QAAQ,4BAA4B;AAKvD,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E;;CAEC,GACD,OAAO,IAAA,AAAKC,6CAAAA;IACV,gCAAgC;IAEhC,6BAA6B;IAE7B,0BAA0B;IAE1B,0BAA0B;IAE1B,0CAA0C;WAThCA;MAWX;AA4ED,+EAA+E;AAC/E,wCAAwC;AACxC,+EAA+E;AAE/E;;;;;;;;;CASC,GACD,OAAO,MAAMC,6BAA6BJ;IACvBK,OAAe;IACfC,OAA0C;IAEnDC,gBAAiC;IACjCC,wBAAkD;IAE1D,sCAAsC,GACtC,AAAQC,cAA8C;IAEtD,uCAAuC,GACvC,AAAQC,gBAAqC;IAE7C,8BAA8B,GAC9B,AAAQC,QAMN;IAEF,YACEJ,eAAgC,EAChCD,SAA2C,CAAC,CAAC,CAC7C;QACA,KAAK;QAEL,IAAI,CAACD,MAAM,GAAG,IAAIJ,OAAO;YACvBW,OAAO;YACPC,QAAQ;YACRC,aAAa;QACf;QAEA,IAAI,CAACR,MAAM,GAAG;YACZS,qBAAqB;YACrBC,oBAAoB;YACpBC,mBAAmB;YACnBC,eAAeZ,OAAOY,aAAa,IAAI;YACvC,GAAGZ,MAAM;QACX;QAEA,IAAI,CAACC,eAAe,GAAGA;QACvB,IAAI,CAACE,aAAa,GAAG,IAAIU;QACzB,IAAI,CAACT,eAAe,GAAG,IAAIS;QAC3B,IAAI,CAACR,OAAO,GAAG,IAAI,CAACS,iBAAiB;QAErC,IAAI,CAACf,MAAM,CAACgB,IAAI,CAAC,oCAAoC;YACnDN,qBAAqB,IAAI,CAACT,MAAM,CAACS,mBAAmB;YACpDC,oBAAoB,IAAI,CAACV,MAAM,CAACU,kBAAkB;QACpD;IACF;IAEA;;GAEC,GACDM,gCAAgCC,WAAoC,EAAQ;QAC1E,IAAI,CAACf,uBAAuB,GAAGe;QAE/B,yCAAyC;QACzC,IAAIA,eAAe,OAAOA,YAAYC,qBAAqB,KAAK,YAAY;YAC1E,MAAMC,YAAYF,YAAYC,qBAAqB;YACnD,KAAK,MAAME,SAASD,UAAUE,MAAM,CAAE;gBACpC,IAAI,CAACjB,eAAe,CAACkB,GAAG,CAACF,MAAMG,EAAE,EAAEH,MAAMd,KAAK;YAChD;YAEA,IAAI,CAACP,MAAM,CAACgB,IAAI,CAAC,uCAAuC;gBACtDS,aAAaL,UAAUE,MAAM,CAACI,MAAM;gBACpCC,gBAAgBP,UAAUQ,KAAK;YACjC;QACF;IACF;IAEA;;GAEC,GACDC,iBAAiBC,OAAe,EAAEvB,KAAa,EAAQ;QACrD,IAAI,CAACF,eAAe,CAACkB,GAAG,CAACO,SAASvB;IACpC;IAEA;;GAEC,GACD,AAAQwB,cAAcD,OAAe,EAAU;QAC7C,kBAAkB;QAClB,MAAME,cAAc,IAAI,CAAC3B,eAAe,CAAC4B,GAAG,CAACH;QAC7C,IAAIE,gBAAgBE,WAAW;YAC7B,OAAOF;QACT;QAEA,8CAA8C;QAC9C,IAAI,IAAI,CAAC7B,uBAAuB,EAAE;YAChC,MAAMgC,cAAc,IAAI,CAAChC,uBAAuB,CAACiC,cAAc,CAACN;YAChE,IAAIK,aAAa;gBACf,IAAI,CAAC9B,eAAe,CAACkB,GAAG,CAACO,SAASK,YAAY5B,KAAK;gBACnD,OAAO4B,YAAY5B,KAAK;YAC1B;QACF;QAEA,kCAAkC;QAClC,OAAO;IACT;IAEA,+EAA+E;IAC/E,qDAAqD;IACrD,+EAA+E;IAE/E;;;;;;;GAOC,GACD,MAAM8B,gBACJC,aAAqB,EACrBC,aAAqB,EACrBC,MAAe,EACkB;QACjC,MAAMC,YAAYC,KAAKC,GAAG;QAE1B,IAAI;YACF,MAAMC,cAAc,IAAI,CAACb,aAAa,CAACQ;YAEvC,qCAAqC;YACrC,MAAM,IAAI,CAACrC,eAAe,CAAC2C,UAAU,CACnCN,eACAC,UAAU,CAAC,iBAAiB,EAAEF,eAAe;YAG/C,MAAMQ,YAAYJ,KAAKC,GAAG,KAAKF;YAE/B,iBAAiB;YACjB,IAAI,CAACM,oBAAoB,CAACD;YAC1B,IAAI,CAACxC,OAAO,CAAC0C,WAAW;YAExB,MAAMC,SAAiC;gBACrCC,WAAW;gBACXC,SAAS;gBACTrB,SAASS;gBACThC,OAAOqC;gBACPE;gBACAM,MAAM;oBACJd;oBACAE;gBACF;YACF;YAEA,IAAI,IAAI,CAACvC,MAAM,CAACY,aAAa,EAAE;gBAC7B,IAAI,CAACb,MAAM,CAACgB,IAAI,CAAC,4BAA4B;oBAC3CsB;oBACAC;oBACAhC,OAAOqC;oBACPE;gBACF;YACF;YAEA,IAAI,CAACO,IAAI,CAAC,gBAAgBJ;YAE1B,OAAOA;QACT,EAAE,OAAOK,OAAO;YACd,MAAMR,YAAYJ,KAAKC,GAAG,KAAKF;YAC/B,MAAMc,eAAeD,iBAAiBE,QAAQF,MAAMG,OAAO,GAAGC,OAAOJ;YAErE,IAAI,CAACtD,MAAM,CAACsD,KAAK,CAAC,+BAA+B;gBAC/ChB;gBACAC;gBACAe,OAAOC;YACT;YAEA,OAAO;gBACLL,WAAW;gBACXC,SAAS;gBACTrB,SAASS;gBACThC,OAAO,IAAI,CAACwB,aAAa,CAACQ;gBAC1BO;gBACAQ,OAAOC;YACT;QACF;IACF;IAEA;;;;;;;;;;;;GAYC,GACD,MAAMI,cACJrB,aAAqB,EACrBC,aAAqB,EACrBqB,WAAgC,EAChCC,OAA4B,EAC5BC,YAAqB,KAAK,EACA;QAC1B,MAAMrB,YAAYC,KAAKC,GAAG;QAE1B,IAAI;YACF,MAAMC,cAAc,IAAI,CAACb,aAAa,CAACQ;YAEvC,yBAAyB;YACzB,MAAMwB,UAAU,MAAM,IAAI,CAAC7D,eAAe,CAAC8D,eAAe,CAACzB;YAC3D,IAAI,CAACwB,QAAQE,QAAQ,IAAI,CAACH,WAAW;gBACnC,MAAM,IAAIN,MAAM,CAAC,MAAM,EAAEjB,cAAc,wCAAwC,CAAC;YAClF;YAEA,0BAA0B;YAC1B,MAAM2B,UAA2B;gBAC/B1C,IAAI3B,WAAW;gBACfsE,MAAMP;gBACNC;gBACAO,UAAU9B;gBACVC;gBACAK;gBACAyB,WAAW,IAAI3B;gBACfoB;YACF;YAEA,0BAA0B;YAC1B,IAAI,IAAI,CAAC7D,MAAM,CAACU,kBAAkB,EAAE;gBAClC,IAAI,CAAC2D,YAAY,CAAC/B,eAAe2B;YACnC;YAEA,0CAA0C;YAC1C,MAAM,IAAI,CAACK,qBAAqB,CAACR,SAASG;YAE1C,MAAMpB,YAAYJ,KAAKC,GAAG,KAAKF;YAE/B,iBAAiB;YACjB,IAAI,CAACM,oBAAoB,CAACD;YAC1B,IAAI,CAACxC,OAAO,CAACkE,eAAe;YAE5B,MAAMvB,SAA0B;gBAC9BE,SAAS;gBACTsB,WAAWP,QAAQ1C,EAAE;gBACrBM,SAASS;gBACThC,OAAOqC;gBACPE;YACF;YAEA,IAAI,IAAI,CAAC7C,MAAM,CAACY,aAAa,EAAE;gBAC7B,IAAI,CAACb,MAAM,CAACgB,IAAI,CAAC,oBAAoB;oBACnCyD,WAAWP,QAAQ1C,EAAE;oBACrBoC;oBACAtB;oBACAC;oBACAhC,OAAOqC;oBACPE;oBACAgB;gBACF;YACF;YAEA,IAAI,CAACT,IAAI,CAAC,oBAAoB;gBAAEa;gBAASjB;YAAO;YAEhD,OAAOA;QACT,EAAE,OAAOK,OAAO;YACd,MAAMR,YAAYJ,KAAKC,GAAG,KAAKF;YAC/B,MAAMc,eAAeD,iBAAiBE,QAAQF,MAAMG,OAAO,GAAGC,OAAOJ;YAErE,IAAI,CAACtD,MAAM,CAACsD,KAAK,CAAC,4BAA4B;gBAC5ChB;gBACAC;gBACAqB;gBACAN,OAAOC;YACT;YAEA,OAAO;gBACLJ,SAAS;gBACTsB,WAAW;gBACX3C,SAASS;gBACThC,OAAO,IAAI,CAACwB,aAAa,CAACQ;gBAC1BO;gBACAQ,OAAOC;YACT;QACF;IACF;IAEA;;;;;;;;;GASC,GACD,MAAMmB,iBACJpC,aAAqB,EACrBC,aAAqB,EACrBoC,YAAqB,EACY;QACjC,MAAMlC,YAAYC,KAAKC,GAAG;QAE1B,IAAI;YACF,MAAMC,cAAc,IAAI,CAACb,aAAa,CAACQ;YAEvC,sCAAsC;YACtC,MAAMqC,iBAAiB,IAAI,CAACC,iBAAiB,CAACtC;YAC9C,IAAIqC,eAAelD,MAAM,GAAG,GAAG;gBAC7B,MAAMqC,UAAU,MAAM,IAAI,CAAC7D,eAAe,CAAC8D,eAAe,CAACzB;gBAC3D,KAAK,MAAM2B,WAAWU,eAAgB;oBACpC,MAAM,IAAI,CAACL,qBAAqB,CAACR,SAASG;gBAC5C;gBAEA,sBAAsB;gBACtB,IAAI,CAACY,iBAAiB,CAACvC;gBAEvB,IAAI,IAAI,CAACtC,MAAM,CAACY,aAAa,EAAE;oBAC7B,IAAI,CAACb,MAAM,CAAC+E,KAAK,CAAC,yCAAyC;wBACzDjD,SAASS;wBACTyC,cAAcJ,eAAelD,MAAM;oBACrC;gBACF;YACF;YAEA,mCAAmC;YACnC,MAAM,IAAI,CAACxB,eAAe,CAAC+E,WAAW,CAAC1C,eAAeoC;YAEtD,MAAM7B,YAAYJ,KAAKC,GAAG,KAAKF;YAE/B,iBAAiB;YACjB,IAAI,CAACM,oBAAoB,CAACD;YAC1B,IAAI,CAACxC,OAAO,CAAC4E,YAAY;YAEzB,MAAMjC,SAAiC;gBACrCC,WAAW;gBACXC,SAAS;gBACTrB,SAASS;gBACThC,OAAOqC;gBACPE;gBACAM,MAAM;oBACJd;oBACAqC;oBACAQ,iBAAiBP,eAAelD,MAAM;gBACxC;YACF;YAEA,IAAI,IAAI,CAACzB,MAAM,CAACY,aAAa,EAAE;gBAC7B,IAAI,CAACb,MAAM,CAACgB,IAAI,CAAC,6BAA6B;oBAC5CsB;oBACAC;oBACAhC,OAAOqC;oBACPE;oBACAqC,iBAAiBP,eAAelD,MAAM;gBACxC;YACF;YAEA,IAAI,CAAC2B,IAAI,CAAC,iBAAiBJ;YAE3B,OAAOA;QACT,EAAE,OAAOK,OAAO;YACd,MAAMR,YAAYJ,KAAKC,GAAG,KAAKF;YAC/B,MAAMc,eAAeD,iBAAiBE,QAAQF,MAAMG,OAAO,GAAGC,OAAOJ;YAErE,IAAI,CAACtD,MAAM,CAACsD,KAAK,CAAC,gCAAgC;gBAChDhB;gBACAC;gBACAe,OAAOC;YACT;YAEA,OAAO;gBACLL,WAAW;gBACXC,SAAS;gBACTrB,SAASS;gBACThC,OAAO,IAAI,CAACwB,aAAa,CAACQ;gBAC1BO;gBACAQ,OAAOC;YACT;QACF;IACF;IAEA;;;;;;;;GAQC,GACD,MAAM6B,wBACJ9C,aAAqB,EACrBY,SAA6B,EACM;QACnC,MAAMmC,UAAoC,EAAE;QAE5C,IAAI,CAAC,IAAI,CAAClF,uBAAuB,EAAE;YACjC,IAAI,CAACH,MAAM,CAACsF,IAAI,CAAC;YACjB,OAAOD;QACT;QAEA,MAAME,cAAc,IAAI,CAACpF,uBAAuB,CAACiC,cAAc,CAACE;QAChE,IAAI,CAACiD,aAAa;YAChB,IAAI,CAACvF,MAAM,CAACsF,IAAI,CAAC,uCAAuC;gBAAEhD;YAAc;YACxE,OAAO+C;QACT;QAEA,sCAAsC;QACtC,MAAMG,cAAc,MAAM,IAAI,CAACC,iBAAiB,CAACnD;QAEjD,IAAI,IAAI,CAACrC,MAAM,CAACY,aAAa,EAAE;YAC7B,IAAI,CAACb,MAAM,CAACgB,IAAI,CAAC,+BAA+B;gBAC9CsB;gBACAY;gBACAwC,iBAAiBF,YAAY9D,MAAM;YACrC;QACF;QAEA,iDAAiD;QACjD,MAAMiE,aAAaH,YAAYI,GAAG,CAAC,OAAOC;YACxC,IAAI3C,cAAc,SAAS;gBACzB,OAAO,MAAM,IAAI,CAACb,eAAe,CAACC,eAAeuD,cAAc,CAAC,cAAc,EAAEvD,eAAe;YACjG,OAAO;gBACL,OAAO,MAAM,IAAI,CAACoC,gBAAgB,CAACpC,eAAeuD;YACpD;QACF;QAEAR,QAAQS,IAAI,IAAK,MAAMC,QAAQC,GAAG,CAACL;QAEnC,IAAI,CAACtC,IAAI,CAAC,oBAAoB;YAAEf;YAAeY;YAAWmC;QAAQ;QAElE,OAAOA;IACT;IAEA,+EAA+E;IAC/E,2BAA2B;IAC3B,+EAA+E;IAE/E;;GAEC,GACD,AAAQf,aAAaxC,OAAe,EAAEoC,OAAwB,EAAQ;QACpE,IAAI+B,QAAQ,IAAI,CAAC7F,aAAa,CAAC6B,GAAG,CAACH;QACnC,IAAI,CAACmE,OAAO;YACVA,QAAQ,EAAE;YACV,IAAI,CAAC7F,aAAa,CAACmB,GAAG,CAACO,SAASmE;QAClC;QAEA,yBAAyB;QACzB,IAAIA,MAAMvE,MAAM,IAAI,IAAI,CAACzB,MAAM,CAACW,iBAAiB,EAAE;YACjD,IAAI,CAACZ,MAAM,CAACsF,IAAI,CAAC,+CAA+C;gBAC9DxD;gBACAoE,cAAc,IAAI,CAACjG,MAAM,CAACW,iBAAiB;YAC7C;YACAqF,MAAME,KAAK;QACb;QAEAF,MAAMH,IAAI,CAAC5B;IACb;IAEA;;GAEC,GACD,AAAQW,kBAAkB/C,OAAe,EAAqB;QAC5D,OAAO,IAAI,CAAC1B,aAAa,CAAC6B,GAAG,CAACH,YAAY,EAAE;IAC9C;IAEA;;GAEC,GACD,AAAQgD,kBAAkBhD,OAAe,EAAQ;QAC/C,IAAI,CAAC1B,aAAa,CAACgG,MAAM,CAACtE;IAC5B;IAEA;;GAEC,GACD,MAAcyC,sBACZR,OAAqB,EACrBG,OAAwB,EACT;QACf,yDAAyD;QACzD,IAAI,CAACH,QAAQsC,QAAQ,CAACC,gBAAgB,EAAE;YACtCvC,QAAQsC,QAAQ,CAACC,gBAAgB,GAAG,EAAE;QACxC;QAEAvC,QAAQsC,QAAQ,CAACC,gBAAgB,CAACR,IAAI,CAAC;YACrCrB,WAAWP,QAAQ1C,EAAE;YACrB2C,MAAMD,QAAQC,IAAI;YAClBN,SAASK,QAAQL,OAAO;YACxBO,UAAUF,QAAQE,QAAQ;YAC1BC,WAAWH,QAAQG,SAAS;QAC9B;QAEA,sCAAsC;QACtC,OAAQH,QAAQC,IAAI;YAClB;gBACE,IAAID,QAAQL,OAAO,CAAC0C,KAAK,EAAE;oBACzBxC,QAAQwC,KAAK,GAAGrC,QAAQL,OAAO,CAAC0C,KAAK;gBACvC;gBACA;YAEF;gBACE,IAAIrC,QAAQL,OAAO,CAAC2C,QAAQ,KAAKtE,WAAW;oBAC1C6B,QAAQyC,QAAQ,GAAGtC,QAAQL,OAAO,CAAC2C,QAAQ;gBAC7C;gBACA;YAEF;gBACE,IAAItC,QAAQL,OAAO,CAACwC,QAAQ,EAAE;oBAC5BtC,QAAQsC,QAAQ,GAAG;wBAAE,GAAGtC,QAAQsC,QAAQ;wBAAE,GAAGnC,QAAQL,OAAO,CAACwC,QAAQ;oBAAC;gBACxE;gBACA;YAEF;YACA;gBAEE;YAEF;gBACE,IAAI,CAACrG,MAAM,CAACsF,IAAI,CAAC,wBAAwB;oBAAEnB,MAAMD,QAAQC,IAAI;gBAAC;QAClE;IACF;IAEA,+EAA+E;IAC/E,8BAA8B;IAC9B,+EAA+E;IAE/E;;GAEC,GACD,MAAcsB,kBAAkB3D,OAAe,EAAqB;QAClE,MAAM0D,cAAwB,EAAE;QAEhC,IAAI,CAAC,IAAI,CAACrF,uBAAuB,EAAE;YACjC,OAAOqF;QACT;QAEA,MAAMnE,QAAQ,IAAI,CAAClB,uBAAuB,CAACiC,cAAc,CAACN;QAC1D,IAAI,CAACT,OAAO;YACV,OAAOmE;QACT;QAEA,gBAAgB;QAChB,MAAMiB,QAAQ;eAAIpF,MAAMqF,QAAQ;SAAC;QACjC,MAAOD,MAAM/E,MAAM,GAAG,EAAG;YACvB,MAAMiF,UAAUF,MAAMG,GAAG;YACzBpB,YAAYM,IAAI,CAACa;YAEjB,MAAME,QAAQ,IAAI,CAAC1G,uBAAuB,CAACiC,cAAc,CAACuE;YAC1D,IAAIE,SAASA,MAAMH,QAAQ,CAAChF,MAAM,GAAG,GAAG;gBACtC+E,MAAMX,IAAI,IAAIe,MAAMH,QAAQ;YAC9B;QACF;QAEA,OAAOlB;IACT;IAEA,+EAA+E;IAC/E,yBAAyB;IACzB,+EAA+E;IAE/E;;GAEC,GACD,AAAQzC,qBAAqBD,SAAiB,EAAQ;QACpD,MAAMgE,WAAW,IAAI,CAACxG,OAAO,CAAC0C,WAAW,GAAG,IAAI,CAAC1C,OAAO,CAACkE,eAAe,GAAG,IAAI,CAAClE,OAAO,CAAC4E,YAAY;QAEpG,IAAI,CAAC5E,OAAO,CAACyG,uBAAuB,GAClC,AAAC,CAAA,IAAI,CAACzG,OAAO,CAACyG,uBAAuB,GAAGD,WAAWhE,SAAQ,IAAMgE,CAAAA,WAAW,CAAA;QAE9E,IAAI,CAACxG,OAAO,CAACI,mBAAmB,GAAGsG,KAAKC,GAAG,CAAC,IAAI,CAAC3G,OAAO,CAACI,mBAAmB,EAAEoC;QAE9E,mCAAmC;QACnC,IAAIA,YAAY,IAAI,CAAC7C,MAAM,CAACS,mBAAmB,EAAE;YAC/C,IAAI,CAACV,MAAM,CAACsF,IAAI,CAAC,6CAA6C;gBAC5DxC;gBACAoE,UAAU,IAAI,CAACjH,MAAM,CAACS,mBAAmB;YAC3C;QACF;IACF;IAEA;;GAEC,GACDyG,aAQE;QACA,OAAO;YACL,GAAG,IAAI,CAAC7G,OAAO;YACf8G,iBAAiB,IAAI,CAACnH,MAAM,CAACS,mBAAmB;YAChD2G,cAAc,IAAI,CAAC/G,OAAO,CAACyG,uBAAuB,IAAI,IAAI,CAAC9G,MAAM,CAACS,mBAAmB;QACvF;IACF;IAEA;;GAEC,GACD4G,uBAAuBxF,OAAe,EAAU;QAC9C,OAAO,IAAI,CAAC1B,aAAa,CAAC6B,GAAG,CAACH,UAAUJ,UAAU;IACpD;IAEA;;GAEC,GACD,MAAM6F,UAAyB;QAC7B,IAAI,CAACnH,aAAa,CAACoH,KAAK;QACxB,IAAI,CAACnH,eAAe,CAACmH,KAAK;QAC1B,IAAI,CAACC,kBAAkB;QAEvB,IAAI,CAACzH,MAAM,CAACgB,IAAI,CAAC;IACnB;IAEA,+EAA+E;IAC/E,kBAAkB;IAClB,+EAA+E;IAEvED,oBAAoB;QAC1B,OAAO;YACLiC,aAAa;YACbwB,iBAAiB;YACjBU,cAAc;YACd6B,yBAAyB;YACzBrG,qBAAqB;QACvB;IACF;AACF;AAEA,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E;;CAEC,GACD,OAAO,SAASgH,2BACdxH,eAAgC,EAChCD,MAAyC;IAEzC,OAAO,IAAIF,qBAAqBG,iBAAiBD;AACnD;AAEA;;CAEC,GACD,OAAO,SAAS0H,wCACdzH,eAAgC,EAChCC,uBAAgD,EAChDF,MAAyC;IAEzC,MAAM2H,aAAa,IAAI7H,qBAAqBG,iBAAiBD;IAC7D2H,WAAW3G,+BAA+B,CAACd;IAC3C,OAAOyH;AACT,EAEA,uEAAuE"}
|