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,518 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Coordination V2 - Message Storage Implementation
|
|
3
|
+
*
|
|
4
|
+
* MessagePack + Gzip persistence for message bus with queue management.
|
|
5
|
+
* Performance targets:
|
|
6
|
+
* - Save/load: <20ms p95
|
|
7
|
+
* - Compression ratio: >2x
|
|
8
|
+
* - Message queue persistence (undelivered messages)
|
|
9
|
+
* - Dead letter queue persistence
|
|
10
|
+
*
|
|
11
|
+
* Features:
|
|
12
|
+
* - Binary MessagePack serialization (3x faster than JSON)
|
|
13
|
+
* - Gzip compression for storage efficiency
|
|
14
|
+
* - Message queue state persistence
|
|
15
|
+
* - Dead letter queue persistence
|
|
16
|
+
* - Integrity verification with checksums
|
|
17
|
+
* - Schema versioning for backward compatibility
|
|
18
|
+
*
|
|
19
|
+
* @module coordination/v2/memory/message-storage
|
|
20
|
+
*/ import * as msgpack from 'msgpack-lite';
|
|
21
|
+
import { gzip, gunzip } from 'zlib';
|
|
22
|
+
import { promisify } from 'util';
|
|
23
|
+
const gzipAsync = promisify(gzip);
|
|
24
|
+
const gunzipAsync = promisify(gunzip);
|
|
25
|
+
/**
|
|
26
|
+
* Schema version for forward/backward compatibility
|
|
27
|
+
*/ const SCHEMA_VERSION = 1;
|
|
28
|
+
/**
|
|
29
|
+
* MessageStorage - Artifact-backed message persistence
|
|
30
|
+
*
|
|
31
|
+
* Provides high-performance storage for message bus state using:
|
|
32
|
+
* - MessagePack binary serialization (smaller payloads)
|
|
33
|
+
* - Gzip compression (additional size reduction)
|
|
34
|
+
* - Message queue state preservation
|
|
35
|
+
* - Dead letter queue persistence
|
|
36
|
+
* - Schema versioning for compatibility
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```typescript
|
|
40
|
+
* const storage = new MessageStorage(artifactStorage);
|
|
41
|
+
* await storage.initialize();
|
|
42
|
+
*
|
|
43
|
+
* // Save messages and queues
|
|
44
|
+
* await storage.saveMessages('bus-1', messages, queues, deadLetterMessages);
|
|
45
|
+
*
|
|
46
|
+
* // Load messages and queues
|
|
47
|
+
* const state = await storage.loadMessages('bus-1');
|
|
48
|
+
*
|
|
49
|
+
* // Incremental updates
|
|
50
|
+
* await storage.saveMessage('bus-1', message);
|
|
51
|
+
* await storage.saveQueue('bus-1', queue);
|
|
52
|
+
* ```
|
|
53
|
+
*/ export class MessageStorage {
|
|
54
|
+
artifactStorage;
|
|
55
|
+
metrics;
|
|
56
|
+
latencyBuffer = [];
|
|
57
|
+
ready = false;
|
|
58
|
+
constructor(artifactStorage){
|
|
59
|
+
this.artifactStorage = artifactStorage;
|
|
60
|
+
this.metrics = this.initializeMetrics();
|
|
61
|
+
}
|
|
62
|
+
// ===========================
|
|
63
|
+
// Lifecycle
|
|
64
|
+
// ===========================
|
|
65
|
+
/**
|
|
66
|
+
* Initialize storage backend
|
|
67
|
+
*/ async initialize() {
|
|
68
|
+
if (!this.artifactStorage.isReady()) {
|
|
69
|
+
await this.artifactStorage.initialize();
|
|
70
|
+
}
|
|
71
|
+
this.ready = true;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Close storage connections
|
|
75
|
+
*/ async close() {
|
|
76
|
+
this.ready = false;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Check if storage is ready
|
|
80
|
+
*/ isReady() {
|
|
81
|
+
return this.ready && this.artifactStorage.isReady();
|
|
82
|
+
}
|
|
83
|
+
// ===========================
|
|
84
|
+
// Core Persistence Operations
|
|
85
|
+
// ===========================
|
|
86
|
+
/**
|
|
87
|
+
* Save complete message bus state to artifact storage
|
|
88
|
+
*
|
|
89
|
+
* Performance target: <20ms p95
|
|
90
|
+
*
|
|
91
|
+
* @param storageId - Unique storage identifier
|
|
92
|
+
* @param messages - Messages to persist
|
|
93
|
+
* @param queues - Message queues to persist
|
|
94
|
+
* @param deadLetterMessages - Dead letter queue messages
|
|
95
|
+
* @throws Error if serialization or storage fails
|
|
96
|
+
*/ async saveMessages(storageId, messages, queues, deadLetterMessages) {
|
|
97
|
+
this.ensureReady();
|
|
98
|
+
const startTime = Date.now();
|
|
99
|
+
try {
|
|
100
|
+
// 1. Serialize message bus state to compact format
|
|
101
|
+
const serialized = this.serializeMessageStorage(storageId, messages, queues, deadLetterMessages);
|
|
102
|
+
// 2. Encode with MessagePack (binary)
|
|
103
|
+
const packed = msgpack.encode(serialized);
|
|
104
|
+
// 3. Compress with gzip
|
|
105
|
+
const compressed = await gzipAsync(packed);
|
|
106
|
+
// Calculate compression ratio
|
|
107
|
+
const compressionRatio = packed.length / compressed.length;
|
|
108
|
+
// 4. Store in artifact storage
|
|
109
|
+
await this.artifactStorage.uploadArtifact('message-bus', storageId, compressed, {
|
|
110
|
+
type: 'message-storage',
|
|
111
|
+
filename: `${storageId}.msgpack.gz`,
|
|
112
|
+
tags: [
|
|
113
|
+
'message-bus',
|
|
114
|
+
'storage',
|
|
115
|
+
storageId
|
|
116
|
+
],
|
|
117
|
+
metadata: {
|
|
118
|
+
schemaVersion: SCHEMA_VERSION,
|
|
119
|
+
messageCount: messages.length,
|
|
120
|
+
queueCount: queues.length,
|
|
121
|
+
deadLetterCount: deadLetterMessages.length,
|
|
122
|
+
uncompressedBytes: packed.length,
|
|
123
|
+
compressedBytes: compressed.length,
|
|
124
|
+
compressionRatio
|
|
125
|
+
},
|
|
126
|
+
forceCompression: false // Already compressed
|
|
127
|
+
});
|
|
128
|
+
// Update metrics
|
|
129
|
+
const latency = Date.now() - startTime;
|
|
130
|
+
this.updateSaveMetrics(latency, messages.length, compressionRatio);
|
|
131
|
+
// Performance warning if exceeds target
|
|
132
|
+
if (latency > 20) {
|
|
133
|
+
console.warn(`[MessageStorage] Save latency ${latency}ms exceeds 20ms target for storage ${storageId}`);
|
|
134
|
+
}
|
|
135
|
+
} catch (error) {
|
|
136
|
+
throw new Error(`Failed to save messages for ${storageId}: ${error instanceof Error ? error.message : String(error)}`);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Load message bus state from artifact storage
|
|
141
|
+
*
|
|
142
|
+
* Performance target: <20ms p95
|
|
143
|
+
*
|
|
144
|
+
* @param storageId - Storage identifier
|
|
145
|
+
* @returns Reconstructed message bus state
|
|
146
|
+
* @throws Error if storage not found or deserialization fails
|
|
147
|
+
*/ async loadMessages(storageId) {
|
|
148
|
+
this.ensureReady();
|
|
149
|
+
const startTime = Date.now();
|
|
150
|
+
try {
|
|
151
|
+
// 1. Query for storage artifacts
|
|
152
|
+
const artifacts = await this.artifactStorage.queryArtifacts({
|
|
153
|
+
sessionId: storageId,
|
|
154
|
+
type: [
|
|
155
|
+
'message-storage'
|
|
156
|
+
],
|
|
157
|
+
sortBy: 'createdAt',
|
|
158
|
+
sortOrder: 'desc',
|
|
159
|
+
limit: 1
|
|
160
|
+
});
|
|
161
|
+
if (artifacts.length === 0) {
|
|
162
|
+
// Return empty state if no storage found
|
|
163
|
+
return {
|
|
164
|
+
messages: [],
|
|
165
|
+
queues: [],
|
|
166
|
+
deadLetterMessages: []
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
// 2. Download artifact
|
|
170
|
+
const result = await this.artifactStorage.downloadArtifact(artifacts[0].artifactId);
|
|
171
|
+
// SEC-013: Validate compressed size before decompression
|
|
172
|
+
const MAX_COMPRESSED_SIZE = 50 * 1024 * 1024; // 50MB
|
|
173
|
+
if (result.content.length > MAX_COMPRESSED_SIZE) {
|
|
174
|
+
throw new Error(`Compressed data too large: ${result.content.length} bytes (max: ${MAX_COMPRESSED_SIZE})`);
|
|
175
|
+
}
|
|
176
|
+
// 3. Decompress
|
|
177
|
+
const decompressed = await gunzipAsync(result.content);
|
|
178
|
+
// SEC-013: Validate decompressed size to prevent compression bombs
|
|
179
|
+
const MAX_UNCOMPRESSED_SIZE = 500 * 1024 * 1024; // 500MB
|
|
180
|
+
if (decompressed.length > MAX_UNCOMPRESSED_SIZE) {
|
|
181
|
+
throw new Error(`Decompressed data too large: ${decompressed.length} bytes (max: ${MAX_UNCOMPRESSED_SIZE})`);
|
|
182
|
+
}
|
|
183
|
+
// SEC-013: Validate compression ratio (max 10x expansion)
|
|
184
|
+
const compressionRatio = decompressed.length / result.content.length;
|
|
185
|
+
if (compressionRatio > 10) {
|
|
186
|
+
throw new Error(`Compression ratio too high: ${compressionRatio.toFixed(2)}x (max: 10x) - possible compression bomb`);
|
|
187
|
+
}
|
|
188
|
+
// 4. Decode MessagePack
|
|
189
|
+
const serialized = msgpack.decode(decompressed);
|
|
190
|
+
// 5. Validate schema version
|
|
191
|
+
if (serialized.version > SCHEMA_VERSION) {
|
|
192
|
+
throw new Error(`Unsupported schema version ${serialized.version}, current: ${SCHEMA_VERSION}`);
|
|
193
|
+
}
|
|
194
|
+
// 6. Reconstruct message bus state
|
|
195
|
+
const state = this.deserializeMessageStorage(serialized);
|
|
196
|
+
// Update metrics
|
|
197
|
+
const latency = Date.now() - startTime;
|
|
198
|
+
this.updateLoadMetrics(latency, state.messages.length);
|
|
199
|
+
// Performance warning if exceeds target
|
|
200
|
+
if (latency > 20) {
|
|
201
|
+
console.warn(`[MessageStorage] Load latency ${latency}ms exceeds 20ms target for storage ${storageId}`);
|
|
202
|
+
}
|
|
203
|
+
return state;
|
|
204
|
+
} catch (error) {
|
|
205
|
+
throw new Error(`Failed to load messages for ${storageId}: ${error instanceof Error ? error.message : String(error)}`);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
// ===========================
|
|
209
|
+
// Incremental Update Operations
|
|
210
|
+
// ===========================
|
|
211
|
+
/**
|
|
212
|
+
* Save single message without full reload
|
|
213
|
+
*
|
|
214
|
+
* Performance target: <5ms p95
|
|
215
|
+
*
|
|
216
|
+
* @param storageId - Storage identifier
|
|
217
|
+
* @param message - Message to save
|
|
218
|
+
*/ async saveMessage(storageId, message) {
|
|
219
|
+
this.ensureReady();
|
|
220
|
+
const startTime = Date.now();
|
|
221
|
+
try {
|
|
222
|
+
// Load current state
|
|
223
|
+
const state = await this.loadMessages(storageId);
|
|
224
|
+
// Add or update message
|
|
225
|
+
const existingIndex = state.messages.findIndex((m)=>m.id === message.id);
|
|
226
|
+
if (existingIndex >= 0) {
|
|
227
|
+
state.messages[existingIndex] = message;
|
|
228
|
+
} else {
|
|
229
|
+
state.messages.push(message);
|
|
230
|
+
}
|
|
231
|
+
// Save updated state
|
|
232
|
+
await this.saveMessages(storageId, state.messages, state.queues, state.deadLetterMessages);
|
|
233
|
+
const latency = Date.now() - startTime;
|
|
234
|
+
if (latency > 5) {
|
|
235
|
+
console.warn(`[MessageStorage] Message save ${latency}ms exceeds 5ms target`);
|
|
236
|
+
}
|
|
237
|
+
} catch (error) {
|
|
238
|
+
throw new Error(`Failed to save message ${message.id}: ${error instanceof Error ? error.message : String(error)}`);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Save queue state without full reload
|
|
243
|
+
*
|
|
244
|
+
* Performance target: <5ms p95
|
|
245
|
+
*
|
|
246
|
+
* @param storageId - Storage identifier
|
|
247
|
+
* @param queue - Queue to save
|
|
248
|
+
*/ async saveQueue(storageId, queue) {
|
|
249
|
+
this.ensureReady();
|
|
250
|
+
const startTime = Date.now();
|
|
251
|
+
try {
|
|
252
|
+
// Load current state
|
|
253
|
+
const state = await this.loadMessages(storageId);
|
|
254
|
+
// Add or update queue
|
|
255
|
+
const existingIndex = state.queues.findIndex((q)=>q.id === queue.id);
|
|
256
|
+
if (existingIndex >= 0) {
|
|
257
|
+
state.queues[existingIndex] = queue;
|
|
258
|
+
} else {
|
|
259
|
+
state.queues.push(queue);
|
|
260
|
+
}
|
|
261
|
+
// Save updated state
|
|
262
|
+
await this.saveMessages(storageId, state.messages, state.queues, state.deadLetterMessages);
|
|
263
|
+
const latency = Date.now() - startTime;
|
|
264
|
+
if (latency > 5) {
|
|
265
|
+
console.warn(`[MessageStorage] Queue save ${latency}ms exceeds 5ms target`);
|
|
266
|
+
}
|
|
267
|
+
} catch (error) {
|
|
268
|
+
throw new Error(`Failed to save queue ${queue.id}: ${error instanceof Error ? error.message : String(error)}`);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Add message to dead letter queue
|
|
273
|
+
*
|
|
274
|
+
* @param storageId - Storage identifier
|
|
275
|
+
* @param message - Failed message
|
|
276
|
+
*/ async addToDeadLetterQueue(storageId, message) {
|
|
277
|
+
this.ensureReady();
|
|
278
|
+
try {
|
|
279
|
+
// Load current state
|
|
280
|
+
const state = await this.loadMessages(storageId);
|
|
281
|
+
// Add to dead letter queue
|
|
282
|
+
state.deadLetterMessages.push(message);
|
|
283
|
+
// Save updated state
|
|
284
|
+
await this.saveMessages(storageId, state.messages, state.queues, state.deadLetterMessages);
|
|
285
|
+
} catch (error) {
|
|
286
|
+
throw new Error(`Failed to add message ${message.id} to dead letter queue: ${error instanceof Error ? error.message : String(error)}`);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
// ===========================
|
|
290
|
+
// Serialization Helpers
|
|
291
|
+
// ===========================
|
|
292
|
+
/**
|
|
293
|
+
* Serialize message bus state to compact binary-friendly format
|
|
294
|
+
*/ serializeMessageStorage(storageId, messages, queues, deadLetterMessages) {
|
|
295
|
+
// Serialize messages
|
|
296
|
+
const serializedMessages = messages.map((msg)=>({
|
|
297
|
+
id: msg.id,
|
|
298
|
+
type: msg.type,
|
|
299
|
+
sender: {
|
|
300
|
+
id: msg.sender.id,
|
|
301
|
+
name: msg.sender.name
|
|
302
|
+
},
|
|
303
|
+
receivers: msg.receivers.map((r)=>({
|
|
304
|
+
id: r.id,
|
|
305
|
+
name: r.name
|
|
306
|
+
})),
|
|
307
|
+
content: msg.content,
|
|
308
|
+
metadata: msg.metadata,
|
|
309
|
+
timestamp: msg.timestamp.getTime(),
|
|
310
|
+
expiresAt: msg.expiresAt?.getTime(),
|
|
311
|
+
priority: msg.priority,
|
|
312
|
+
reliability: msg.reliability
|
|
313
|
+
}));
|
|
314
|
+
// Serialize dead letter messages
|
|
315
|
+
const serializedDeadLetterMessages = deadLetterMessages.map((msg)=>({
|
|
316
|
+
id: msg.id,
|
|
317
|
+
type: msg.type,
|
|
318
|
+
sender: {
|
|
319
|
+
id: msg.sender.id,
|
|
320
|
+
name: msg.sender.name
|
|
321
|
+
},
|
|
322
|
+
receivers: msg.receivers.map((r)=>({
|
|
323
|
+
id: r.id,
|
|
324
|
+
name: r.name
|
|
325
|
+
})),
|
|
326
|
+
content: msg.content,
|
|
327
|
+
metadata: msg.metadata,
|
|
328
|
+
timestamp: msg.timestamp.getTime(),
|
|
329
|
+
expiresAt: msg.expiresAt?.getTime(),
|
|
330
|
+
priority: msg.priority,
|
|
331
|
+
reliability: msg.reliability
|
|
332
|
+
}));
|
|
333
|
+
// Serialize queues
|
|
334
|
+
const serializedQueues = queues.map((queue)=>({
|
|
335
|
+
id: queue.id,
|
|
336
|
+
name: queue.name,
|
|
337
|
+
type: queue.type,
|
|
338
|
+
messageIds: queue.messages.map((m)=>m.id),
|
|
339
|
+
config: queue.config,
|
|
340
|
+
subscribers: queue.subscribers.map((sub)=>({
|
|
341
|
+
id: sub.id,
|
|
342
|
+
agentId: sub.agent.id,
|
|
343
|
+
agentName: sub.agent.name,
|
|
344
|
+
ackMode: sub.ackMode,
|
|
345
|
+
prefetchCount: sub.prefetchCount,
|
|
346
|
+
lastActivity: sub.lastActivity.getTime()
|
|
347
|
+
})),
|
|
348
|
+
statistics: queue.statistics
|
|
349
|
+
}));
|
|
350
|
+
return {
|
|
351
|
+
version: SCHEMA_VERSION,
|
|
352
|
+
metadata: {
|
|
353
|
+
storageId,
|
|
354
|
+
createdAt: Date.now(),
|
|
355
|
+
updatedAt: Date.now(),
|
|
356
|
+
messageCount: messages.length,
|
|
357
|
+
queueCount: queues.length
|
|
358
|
+
},
|
|
359
|
+
messages: serializedMessages,
|
|
360
|
+
queues: serializedQueues,
|
|
361
|
+
deadLetterMessages: serializedDeadLetterMessages
|
|
362
|
+
};
|
|
363
|
+
}
|
|
364
|
+
/**
|
|
365
|
+
* Deserialize message bus state from storage format
|
|
366
|
+
*/ deserializeMessageStorage(serialized) {
|
|
367
|
+
// Reconstruct messages
|
|
368
|
+
const messages = serialized.messages.map((msg)=>({
|
|
369
|
+
id: msg.id,
|
|
370
|
+
type: msg.type,
|
|
371
|
+
sender: {
|
|
372
|
+
id: msg.sender.id,
|
|
373
|
+
name: msg.sender.name
|
|
374
|
+
},
|
|
375
|
+
receivers: msg.receivers.map((r)=>({
|
|
376
|
+
id: r.id,
|
|
377
|
+
name: r.name
|
|
378
|
+
})),
|
|
379
|
+
content: msg.content,
|
|
380
|
+
metadata: msg.metadata,
|
|
381
|
+
timestamp: new Date(msg.timestamp),
|
|
382
|
+
expiresAt: msg.expiresAt ? new Date(msg.expiresAt) : undefined,
|
|
383
|
+
priority: msg.priority,
|
|
384
|
+
reliability: msg.reliability
|
|
385
|
+
}));
|
|
386
|
+
// Reconstruct dead letter messages
|
|
387
|
+
const deadLetterMessages = serialized.deadLetterMessages.map((msg)=>({
|
|
388
|
+
id: msg.id,
|
|
389
|
+
type: msg.type,
|
|
390
|
+
sender: {
|
|
391
|
+
id: msg.sender.id,
|
|
392
|
+
name: msg.sender.name
|
|
393
|
+
},
|
|
394
|
+
receivers: msg.receivers.map((r)=>({
|
|
395
|
+
id: r.id,
|
|
396
|
+
name: r.name
|
|
397
|
+
})),
|
|
398
|
+
content: msg.content,
|
|
399
|
+
metadata: msg.metadata,
|
|
400
|
+
timestamp: new Date(msg.timestamp),
|
|
401
|
+
expiresAt: msg.expiresAt ? new Date(msg.expiresAt) : undefined,
|
|
402
|
+
priority: msg.priority,
|
|
403
|
+
reliability: msg.reliability
|
|
404
|
+
}));
|
|
405
|
+
// Build message lookup map
|
|
406
|
+
const messageMap = new Map(messages.map((m)=>[
|
|
407
|
+
m.id,
|
|
408
|
+
m
|
|
409
|
+
]));
|
|
410
|
+
// Reconstruct queues
|
|
411
|
+
const queues = serialized.queues.map((queue)=>({
|
|
412
|
+
id: queue.id,
|
|
413
|
+
name: queue.name,
|
|
414
|
+
type: queue.type,
|
|
415
|
+
messages: queue.messageIds.map((id)=>messageMap.get(id)).filter(Boolean),
|
|
416
|
+
config: queue.config,
|
|
417
|
+
subscribers: queue.subscribers.map((sub)=>({
|
|
418
|
+
id: sub.id,
|
|
419
|
+
agent: {
|
|
420
|
+
id: sub.agentId,
|
|
421
|
+
name: sub.agentName
|
|
422
|
+
},
|
|
423
|
+
ackMode: sub.ackMode,
|
|
424
|
+
prefetchCount: sub.prefetchCount,
|
|
425
|
+
lastActivity: new Date(sub.lastActivity)
|
|
426
|
+
})),
|
|
427
|
+
statistics: queue.statistics
|
|
428
|
+
}));
|
|
429
|
+
return {
|
|
430
|
+
messages,
|
|
431
|
+
queues,
|
|
432
|
+
deadLetterMessages
|
|
433
|
+
};
|
|
434
|
+
}
|
|
435
|
+
// ===========================
|
|
436
|
+
// Utility Methods
|
|
437
|
+
// ===========================
|
|
438
|
+
/**
|
|
439
|
+
* Ensure storage is ready for operations
|
|
440
|
+
*/ ensureReady() {
|
|
441
|
+
if (!this.ready) {
|
|
442
|
+
throw new Error('MessageStorage not initialized. Call initialize() first.');
|
|
443
|
+
}
|
|
444
|
+
if (!this.artifactStorage.isReady()) {
|
|
445
|
+
throw new Error('Artifact storage backend not ready');
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
// ===========================
|
|
449
|
+
// Metrics & Monitoring
|
|
450
|
+
// ===========================
|
|
451
|
+
/**
|
|
452
|
+
* Get storage performance metrics
|
|
453
|
+
*/ getMetrics() {
|
|
454
|
+
return {
|
|
455
|
+
...this.metrics
|
|
456
|
+
};
|
|
457
|
+
}
|
|
458
|
+
/**
|
|
459
|
+
* Initialize metrics structure
|
|
460
|
+
*/ initializeMetrics() {
|
|
461
|
+
return {
|
|
462
|
+
totalSaves: 0,
|
|
463
|
+
totalLoads: 0,
|
|
464
|
+
totalMessagesSaved: 0,
|
|
465
|
+
totalMessagesLoaded: 0,
|
|
466
|
+
averageSaveMs: 0,
|
|
467
|
+
averageLoadMs: 0,
|
|
468
|
+
p95SaveMs: 0,
|
|
469
|
+
p95LoadMs: 0,
|
|
470
|
+
averageCompressionRatio: 0,
|
|
471
|
+
lastOperationMs: 0
|
|
472
|
+
};
|
|
473
|
+
}
|
|
474
|
+
/**
|
|
475
|
+
* Update save operation metrics
|
|
476
|
+
*/ updateSaveMetrics(latency, messageCount, compressionRatio) {
|
|
477
|
+
this.metrics.totalSaves++;
|
|
478
|
+
this.metrics.totalMessagesSaved += messageCount;
|
|
479
|
+
this.metrics.averageSaveMs = this.updateAverage(this.metrics.averageSaveMs, latency, this.metrics.totalSaves);
|
|
480
|
+
this.latencyBuffer.push(latency);
|
|
481
|
+
this.metrics.p95SaveMs = this.calculateP95();
|
|
482
|
+
this.metrics.lastOperationMs = latency;
|
|
483
|
+
// Update compression ratio
|
|
484
|
+
const totalRatio = this.metrics.averageCompressionRatio * (this.metrics.totalSaves - 1) + compressionRatio;
|
|
485
|
+
this.metrics.averageCompressionRatio = totalRatio / this.metrics.totalSaves;
|
|
486
|
+
}
|
|
487
|
+
/**
|
|
488
|
+
* Update load operation metrics
|
|
489
|
+
*/ updateLoadMetrics(latency, messageCount) {
|
|
490
|
+
this.metrics.totalLoads++;
|
|
491
|
+
this.metrics.totalMessagesLoaded += messageCount;
|
|
492
|
+
this.metrics.averageLoadMs = this.updateAverage(this.metrics.averageLoadMs, latency, this.metrics.totalLoads);
|
|
493
|
+
this.latencyBuffer.push(latency);
|
|
494
|
+
this.metrics.p95LoadMs = this.calculateP95();
|
|
495
|
+
this.metrics.lastOperationMs = latency;
|
|
496
|
+
}
|
|
497
|
+
/**
|
|
498
|
+
* Calculate rolling average
|
|
499
|
+
*/ updateAverage(current, newValue, count) {
|
|
500
|
+
return (current * (count - 1) + newValue) / count;
|
|
501
|
+
}
|
|
502
|
+
/**
|
|
503
|
+
* Calculate 95th percentile latency
|
|
504
|
+
*/ calculateP95() {
|
|
505
|
+
if (this.latencyBuffer.length === 0) return 0;
|
|
506
|
+
// Keep buffer size manageable
|
|
507
|
+
if (this.latencyBuffer.length > 1000) {
|
|
508
|
+
this.latencyBuffer = this.latencyBuffer.slice(-1000);
|
|
509
|
+
}
|
|
510
|
+
const sorted = [
|
|
511
|
+
...this.latencyBuffer
|
|
512
|
+
].sort((a, b)=>a - b);
|
|
513
|
+
const index = Math.floor(sorted.length * 0.95);
|
|
514
|
+
return sorted[index] || 0;
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
//# sourceMappingURL=message-storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../src/coordination/archives/v2-sdk-typescript/v2/memory/message-storage.ts"],"names":["msgpack","gzip","gunzip","promisify","gzipAsync","gunzipAsync","SCHEMA_VERSION","MessageStorage","artifactStorage","metrics","latencyBuffer","ready","initializeMetrics","initialize","isReady","close","saveMessages","storageId","messages","queues","deadLetterMessages","ensureReady","startTime","Date","now","serialized","serializeMessageStorage","packed","encode","compressed","compressionRatio","length","uploadArtifact","type","filename","tags","metadata","schemaVersion","messageCount","queueCount","deadLetterCount","uncompressedBytes","compressedBytes","forceCompression","latency","updateSaveMetrics","console","warn","error","Error","message","String","loadMessages","artifacts","queryArtifacts","sessionId","sortBy","sortOrder","limit","result","downloadArtifact","artifactId","MAX_COMPRESSED_SIZE","content","decompressed","MAX_UNCOMPRESSED_SIZE","toFixed","decode","version","state","deserializeMessageStorage","updateLoadMetrics","saveMessage","existingIndex","findIndex","m","id","push","saveQueue","queue","q","addToDeadLetterQueue","serializedMessages","map","msg","sender","name","receivers","r","timestamp","getTime","expiresAt","priority","reliability","serializedDeadLetterMessages","serializedQueues","messageIds","config","subscribers","sub","agentId","agent","agentName","ackMode","prefetchCount","lastActivity","statistics","createdAt","updatedAt","undefined","messageMap","Map","get","filter","Boolean","getMetrics","totalSaves","totalLoads","totalMessagesSaved","totalMessagesLoaded","averageSaveMs","averageLoadMs","p95SaveMs","p95LoadMs","averageCompressionRatio","lastOperationMs","updateAverage","calculateP95","totalRatio","current","newValue","count","slice","sorted","sort","a","b","index","Math","floor"],"mappings":"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"}
|