claude-flow-novice 1.6.1 → 1.6.3
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/agents/cfn-loop/product-owner.md +54 -4
- package/.claude/commands/cfn-claude-sync.md +303 -0
- package/.claude/commands/cfn-loop-epic.md +290 -0
- package/.claude/commands/cfn-loop-single.md +168 -0
- package/.claude/commands/cfn-loop-sprints.md +384 -0
- package/.claude/commands/cfn-loop.md +180 -0
- package/.claude/commands/metrics-summary.md +58 -0
- package/.claude/commands/parse-epic.md +357 -0
- package/.claude/settings.json +5 -4
- package/.claude/settings.local.json +9 -2
- package/.claude-flow-novice/.claude/agents/cfn-loop/product-owner.md +792 -0
- package/.claude-flow-novice/dist/mcp/server.js +21 -2
- package/.claude-flow-novice/dist/src/api/auth-service.js +84 -38
- package/.claude-flow-novice/dist/src/api/auth-service.js.map +1 -1
- package/.claude-flow-novice/dist/src/api/claude-client.js +138 -3
- package/.claude-flow-novice/dist/src/api/claude-client.js.map +1 -1
- package/.claude-flow-novice/dist/src/cfn-loop/phase-orchestrator-example.js +1 -1
- package/.claude-flow-novice/dist/src/cfn-loop/scope-control.js +247 -0
- package/.claude-flow-novice/dist/src/cfn-loop/scope-control.js.map +1 -0
- package/.claude-flow-novice/dist/src/cli/commands/swarm.js +32 -15
- package/.claude-flow-novice/dist/src/cli/commands/swarm.js.map +1 -1
- package/.claude-flow-novice/dist/src/cli/commands/transparency.js +455 -0
- package/.claude-flow-novice/dist/src/cli/commands/transparency.js.map +1 -0
- package/.claude-flow-novice/dist/src/cli/simple-commands/init/templates/CLAUDE.md +129 -13
- package/.claude-flow-novice/dist/src/components/visualizations/index.js +9 -0
- package/.claude-flow-novice/dist/src/components/visualizations/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/adapters/v1-coordinator-adapter.js +462 -0
- package/.claude-flow-novice/dist/src/coordination/adapters/v1-coordinator-adapter.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/config-translator.js +248 -0
- package/.claude-flow-novice/dist/src/coordination/config-translator.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/coordination-toggle.js +287 -0
- package/.claude-flow-novice/dist/src/coordination/coordination-toggle.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/distributed-consensus.js +68 -9
- package/.claude-flow-novice/dist/src/coordination/distributed-consensus.js.map +1 -1
- package/.claude-flow-novice/dist/src/coordination/feature-flags.js +166 -0
- package/.claude-flow-novice/dist/src/coordination/feature-flags.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/queen-agent.js +18 -4
- package/.claude-flow-novice/dist/src/coordination/queen-agent.js.map +1 -1
- package/.claude-flow-novice/dist/src/coordination/role-assignment.js +6 -110
- package/.claude-flow-novice/dist/src/coordination/role-assignment.js.map +1 -1
- package/.claude-flow-novice/dist/src/coordination/v2/cache/artifact-cache-optimizer.js +632 -0
- package/.claude-flow-novice/dist/src/coordination/v2/cache/artifact-cache-optimizer.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/cache/index.js +11 -0
- package/.claude-flow-novice/dist/src/coordination/v2/cache/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/checkpoints/checkpoint-compressor.js +318 -0
- package/.claude-flow-novice/dist/src/coordination/v2/checkpoints/checkpoint-compressor.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/coordinators/cascading-shutdown.example.js +364 -0
- package/.claude-flow-novice/dist/src/coordination/v2/coordinators/cascading-shutdown.example.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/coordinators/cascading-shutdown.js +492 -0
- package/.claude-flow-novice/dist/src/coordination/v2/coordinators/cascading-shutdown.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/coordinators/hierarchical-coordinator.js +786 -0
- package/.claude-flow-novice/dist/src/coordination/v2/coordinators/hierarchical-coordinator.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/coordinators/index.js +16 -0
- package/.claude-flow-novice/dist/src/coordination/v2/coordinators/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/coordinators/parent-child-manager.js +342 -0
- package/.claude-flow-novice/dist/src/coordination/v2/coordinators/parent-child-manager.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/coordinators/swarm-coordinator-v2.js +601 -0
- package/.claude-flow-novice/dist/src/coordination/v2/coordinators/swarm-coordinator-v2.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/core/help-request-metrics.js +211 -0
- package/.claude-flow-novice/dist/src/coordination/v2/core/help-request-metrics.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/core/index.js +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/core/index.js.map +1 -1
- package/.claude-flow-novice/dist/src/coordination/v2/core/message-broker.js +365 -6
- package/.claude-flow-novice/dist/src/coordination/v2/core/message-broker.js.map +1 -1
- package/.claude-flow-novice/dist/src/coordination/v2/core/resource-manager-safe.js +478 -0
- package/.claude-flow-novice/dist/src/coordination/v2/core/resource-manager-safe.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/core/state-machine-config.js +5 -2
- package/.claude-flow-novice/dist/src/coordination/v2/core/state-machine-config.js.map +1 -1
- package/.claude-flow-novice/dist/src/coordination/v2/core/state-machine.js +189 -0
- package/.claude-flow-novice/dist/src/coordination/v2/core/state-machine.js.map +1 -1
- package/.claude-flow-novice/dist/src/coordination/v2/deadlock/deadlock-detector.js +424 -0
- package/.claude-flow-novice/dist/src/coordination/v2/deadlock/deadlock-detector.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/deadlock/index.js +9 -0
- package/.claude-flow-novice/dist/src/coordination/v2/deadlock/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/deadlock/resource-manager.js +669 -0
- package/.claude-flow-novice/dist/src/coordination/v2/deadlock/resource-manager.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/dependency/artifact-storage.js +451 -0
- package/.claude-flow-novice/dist/src/coordination/v2/dependency/artifact-storage.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/dependency/cycle-detector.js +271 -0
- package/.claude-flow-novice/dist/src/coordination/v2/dependency/cycle-detector.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/dependency/dependency-graph.js +335 -0
- package/.claude-flow-novice/dist/src/coordination/v2/dependency/dependency-graph.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/dependency/dependency-manager.js +439 -0
- package/.claude-flow-novice/dist/src/coordination/v2/dependency/dependency-manager.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/dependency/dependency-request.js +92 -0
- package/.claude-flow-novice/dist/src/coordination/v2/dependency/dependency-request.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/dependency/index.js +21 -0
- package/.claude-flow-novice/dist/src/coordination/v2/dependency/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/dependency/topological-sort.js +223 -0
- package/.claude-flow-novice/dist/src/coordination/v2/dependency/topological-sort.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/help-system/help-coordinator.js +436 -0
- package/.claude-flow-novice/dist/src/coordination/v2/help-system/help-coordinator.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/help-system/help-matcher.js +278 -0
- package/.claude-flow-novice/dist/src/coordination/v2/help-system/help-matcher.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/help-system/help-request-handler.js +317 -0
- package/.claude-flow-novice/dist/src/coordination/v2/help-system/help-request-handler.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/help-system/help-request.js +273 -0
- package/.claude-flow-novice/dist/src/coordination/v2/help-system/help-request.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/help-system/index.js +15 -0
- package/.claude-flow-novice/dist/src/coordination/v2/help-system/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/help-system/waiting-agent-pool.js +512 -0
- package/.claude-flow-novice/dist/src/coordination/v2/help-system/waiting-agent-pool.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/index.js +6 -0
- package/.claude-flow-novice/dist/src/coordination/v2/index.js.map +1 -1
- package/.claude-flow-novice/dist/src/coordination/v2/integration/help-deadlock-integration.js +557 -0
- package/.claude-flow-novice/dist/src/coordination/v2/integration/help-deadlock-integration.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/integration/index.js +14 -0
- package/.claude-flow-novice/dist/src/coordination/v2/integration/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/integration/message-bus-completion-integration.example.js +212 -0
- package/.claude-flow-novice/dist/src/coordination/v2/integration/message-bus-completion-integration.example.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/integration/message-bus-completion-integration.js +552 -0
- package/.claude-flow-novice/dist/src/coordination/v2/integration/message-bus-completion-integration.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/memory/dependency-storage.js +367 -0
- package/.claude-flow-novice/dist/src/coordination/v2/memory/dependency-storage.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/memory/index.js +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/memory/index.js.map +1 -1
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/channel.js +371 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/channel.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/channels/dependency-channel.js +355 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/channels/dependency-channel.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/channels/help-channel.js +424 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/channels/help-channel.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/channels/index.js +16 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/channels/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/channels/state-channel.js +295 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/channels/state-channel.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/channels/task-channel.js +411 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/channels/task-channel.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/index.js +14 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/message-bus.js +387 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/message-bus.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/message-persistence.js +589 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/message-persistence.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/message-router.js +444 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/message-router.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/checkpoint-manager.js +29 -8
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/checkpoint-manager.js.map +1 -1
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/help-coordinator.js +470 -0
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/help-coordinator.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/hierarchical-background-integration.js +450 -0
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/hierarchical-background-integration.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/index.js +5 -0
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/index.js.map +1 -1
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/multi-level-control.js +545 -0
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/multi-level-control.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/query-controller.js +44 -0
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/query-controller.js.map +1 -1
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/query-message-integration.js +415 -0
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/query-message-integration.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/session-pool-optimizer.js +615 -0
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/session-pool-optimizer.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/security/payload-validator.js +259 -0
- package/.claude-flow-novice/dist/src/coordination/v2/security/payload-validator.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/transparency/index.js +17 -0
- package/.claude-flow-novice/dist/src/coordination/v2/transparency/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/transparency/transparency-integration.js +357 -0
- package/.claude-flow-novice/dist/src/coordination/v2/transparency/transparency-integration.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/transparency/transparency-system.js +679 -0
- package/.claude-flow-novice/dist/src/coordination/v2/transparency/transparency-system.js.map +1 -0
- package/.claude-flow-novice/dist/src/core/agent-manager.js +30 -0
- package/.claude-flow-novice/dist/src/core/agent-manager.js.map +1 -1
- package/.claude-flow-novice/dist/src/mcp/server.js +21 -2
- package/.claude-flow-novice/dist/src/mcp/server.js.map +1 -1
- package/.claude-flow-novice/dist/src/monitoring/apm/apm-integration.js +719 -0
- package/.claude-flow-novice/dist/src/monitoring/apm/apm-integration.js.map +1 -0
- package/.claude-flow-novice/dist/src/monitoring/apm/datadog-collector.js +363 -0
- package/.claude-flow-novice/dist/src/monitoring/apm/datadog-collector.js.map +1 -0
- package/.claude-flow-novice/dist/src/monitoring/apm/index.js +97 -0
- package/.claude-flow-novice/dist/src/monitoring/apm/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/monitoring/apm/newrelic-collector.js +384 -0
- package/.claude-flow-novice/dist/src/monitoring/apm/newrelic-collector.js.map +1 -0
- package/.claude-flow-novice/dist/src/monitoring/apm/performance-optimizer.js +612 -0
- package/.claude-flow-novice/dist/src/monitoring/apm/performance-optimizer.js.map +1 -0
- package/.claude-flow-novice/dist/src/monitoring/metrics-collector.js +282 -0
- package/.claude-flow-novice/dist/src/monitoring/metrics-collector.js.map +1 -0
- package/.claude-flow-novice/dist/src/observability/metrics-counter.js +268 -0
- package/.claude-flow-novice/dist/src/observability/metrics-counter.js.map +1 -0
- package/.claude-flow-novice/dist/src/observability/metrics-storage.js +265 -0
- package/.claude-flow-novice/dist/src/observability/metrics-storage.js.map +1 -0
- package/.claude-flow-novice/dist/src/observability/telemetry.js +26 -0
- package/.claude-flow-novice/dist/src/observability/telemetry.js.map +1 -1
- package/.claude-flow-novice/dist/src/providers/tiered-router.js +64 -10
- package/.claude-flow-novice/dist/src/providers/tiered-router.js.map +1 -1
- package/.claude-flow-novice/dist/src/providers/zai-provider.js +196 -97
- package/.claude-flow-novice/dist/src/providers/zai-provider.js.map +1 -1
- package/.claude-flow-novice/dist/src/slash-commands/cfn-claude-sync.js +533 -0
- package/.claude-flow-novice/dist/src/slash-commands/index.js +5 -0
- package/.claude-flow-novice/dist/src/slash-commands/metrics-summary-class.js +74 -0
- package/.claude-flow-novice/dist/src/slash-commands/metrics-summary.js +335 -0
- package/.claude-flow-novice/dist/src/slash-commands/register-all-commands.js +12 -0
- package/.claude-flow-novice/dist/src/verification/checkpoint-compression-demo.js +96 -0
- package/.claude-flow-novice/dist/src/verification/checkpoint-compression-demo.js.map +1 -0
- package/.claude-flow-novice/dist/src/verification/checkpoint-compression.js +406 -0
- package/.claude-flow-novice/dist/src/verification/checkpoint-compression.js.map +1 -0
- package/.claude-flow-novice/dist/src/verification/checkpoint-manager.js +35 -5
- package/.claude-flow-novice/dist/src/verification/checkpoint-manager.js.map +1 -1
- package/.claude-flow-novice/dist/src/web/api/apm-routes.js +355 -0
- package/.claude-flow-novice/dist/src/web/api/apm-routes.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/api/config/api-config.js +186 -0
- package/.claude-flow-novice/dist/src/web/api/config/api-config.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/api/middleware/auth.js +205 -0
- package/.claude-flow-novice/dist/src/web/api/middleware/auth.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/api/middleware/cache.js +262 -0
- package/.claude-flow-novice/dist/src/web/api/middleware/cache.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/api/middleware/error-handler.js +250 -0
- package/.claude-flow-novice/dist/src/web/api/middleware/error-handler.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/api/middleware/request-logger.js +217 -0
- package/.claude-flow-novice/dist/src/web/api/middleware/request-logger.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/api/middleware/validation.js +325 -0
- package/.claude-flow-novice/dist/src/web/api/middleware/validation.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/api/routes/events.js +465 -0
- package/.claude-flow-novice/dist/src/web/api/routes/events.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/api/routes/hierarchy.js +302 -0
- package/.claude-flow-novice/dist/src/web/api/routes/hierarchy.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/api/routes/index.js +14 -0
- package/.claude-flow-novice/dist/src/web/api/routes/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/api/routes/metrics.js +561 -0
- package/.claude-flow-novice/dist/src/web/api/routes/metrics.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/api/routes/status.js +450 -0
- package/.claude-flow-novice/dist/src/web/api/routes/status.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/api/server.js +451 -0
- package/.claude-flow-novice/dist/src/web/api/server.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/dashboard/hooks/useWebSocket.js +385 -0
- package/.claude-flow-novice/dist/src/web/dashboard/hooks/useWebSocket.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/dashboard/index.js +87 -0
- package/.claude-flow-novice/dist/src/web/dashboard/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/dashboard/types.js +6 -0
- package/.claude-flow-novice/dist/src/web/dashboard/types.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/frontend/src/utils/security.js +425 -0
- package/.claude-flow-novice/dist/src/web/frontend/src/utils/security.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/security/security-middleware.js +379 -0
- package/.claude-flow-novice/dist/src/web/security/security-middleware.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/websocket/apm-websocket-handler.js +441 -0
- package/.claude-flow-novice/dist/src/web/websocket/apm-websocket-handler.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/websocket/websocket-manager.js +255 -1
- package/.claude-flow-novice/dist/src/web/websocket/websocket-manager.js.map +1 -1
- package/.claude-flow-novice/metrics.db +0 -0
- package/.claude-flow-novice/metrics.db-shm +0 -0
- package/.claude-flow-novice/metrics.db-wal +0 -0
- package/AGENT_PERFORMANCE_GUIDELINES.md +88 -0
- package/CLAUDE.md +60 -3
- package/MEMORY_LEAK_ROOT_CAUSE.md +149 -0
- package/README.md +27 -0
- package/config/hooks/post-edit-pipeline.js +36 -2
- package/examples/metrics-counter-demo.ts +106 -0
- package/examples/persistent-metrics-demo.ts +83 -0
- package/examples/phase-5-multi-level-control.ts +282 -0
- package/examples/session-pool-optimizer-example.ts +311 -0
- package/package.json +18 -4
- package/scripts/check-routing-stats.cjs +122 -0
- package/scripts/monitor-loop.sh +65 -0
- package/scripts/monitor-memory.sh +47 -0
- package/scripts/monitor.py +43 -0
- package/scripts/pre-publish-validation.cjs +212 -0
- package/scripts/test-provider-routing.cjs +228 -0
- package/scripts/test-routing-telemetry.cjs +147 -0
- package/scripts/test-zai-10k.cjs +81 -0
- package/scripts/test-zai-api.cjs +191 -0
- package/scripts/test-zai-diagnostic.cjs +151 -0
- package/scripts/test-zai-final.cjs +128 -0
- package/scripts/test-zai-with-env.cjs +85 -0
- package/scripts/validate-coordination-cli.js +69 -0
- package/scripts/validate-coordination-toggle-integration.cjs +501 -0
- package/src/cli/simple-commands/init/templates/CLAUDE.md +29 -0
- package/src/observability/metrics-counter.ts +347 -0
- package/src/observability/metrics-storage.ts +356 -0
- package/src/observability/telemetry.ts +658 -0
- package/src/slash-commands/cfn-claude-sync.js +533 -0
- package/src/slash-commands/index.js +5 -0
- package/src/slash-commands/metrics-summary-class.js +74 -0
- package/src/slash-commands/metrics-summary.js +335 -0
- package/src/slash-commands/register-all-commands.js +12 -0
|
@@ -0,0 +1,512 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Coordination V2 - Waiting Agent Pool
|
|
3
|
+
*
|
|
4
|
+
* Zero-cost agent pool using SDK pause capabilities for dependency waiting.
|
|
5
|
+
* Supports 50+ paused agents with event-driven resume on help request arrival.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Zero token consumption while paused (SDK pause integration)
|
|
9
|
+
* - <50ms resume latency on dependency resolution
|
|
10
|
+
* - Event-driven resume triggers
|
|
11
|
+
* - Timeout and retry logic
|
|
12
|
+
* - Priority-based resume ordering
|
|
13
|
+
* - Dependency tracking per waiting agent
|
|
14
|
+
*
|
|
15
|
+
* @module coordination/v2/help-system/waiting-agent-pool
|
|
16
|
+
*/ import { EventEmitter } from 'node:events';
|
|
17
|
+
import { Logger } from '../../../core/logger.js';
|
|
18
|
+
import { generateId } from '../../../utils/helpers.js';
|
|
19
|
+
/**
|
|
20
|
+
* Waiting Agent Pool - Zero-cost paused agent management.
|
|
21
|
+
*
|
|
22
|
+
* Manages agents waiting for dependencies using SDK pause capabilities.
|
|
23
|
+
* Agents consume zero tokens while waiting, and are resumed within <50ms
|
|
24
|
+
* when their dependencies are resolved.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* const pool = new WaitingAgentPool(queryController);
|
|
29
|
+
* await pool.initialize();
|
|
30
|
+
*
|
|
31
|
+
* // Agent waiting for help
|
|
32
|
+
* await pool.addWaitingAgent({
|
|
33
|
+
* agentId: 'agent-1',
|
|
34
|
+
* sessionId: 'session-1',
|
|
35
|
+
* state: 'waiting',
|
|
36
|
+
* priority: 8,
|
|
37
|
+
* pendingDependencies: ['help-request-123'],
|
|
38
|
+
* metadata: { reason: 'waiting for assistance', taskId: 'task-1' }
|
|
39
|
+
* });
|
|
40
|
+
*
|
|
41
|
+
* // Dependency resolved - agent auto-resumes
|
|
42
|
+
* await pool.resolveDependency('help-request-123');
|
|
43
|
+
*
|
|
44
|
+
* // Cleanup
|
|
45
|
+
* await pool.shutdown();
|
|
46
|
+
* ```
|
|
47
|
+
*/ export class WaitingAgentPool extends EventEmitter {
|
|
48
|
+
logger;
|
|
49
|
+
config;
|
|
50
|
+
queryController;
|
|
51
|
+
waitingAgents;
|
|
52
|
+
agentsByDependency;
|
|
53
|
+
timeoutCheckTimer;
|
|
54
|
+
metrics;
|
|
55
|
+
initialized = false;
|
|
56
|
+
startTime;
|
|
57
|
+
/**
|
|
58
|
+
* Creates a new waiting agent pool.
|
|
59
|
+
*
|
|
60
|
+
* @param queryController - QueryController instance for pause/resume operations
|
|
61
|
+
* @param config - Pool configuration options
|
|
62
|
+
*/ constructor(queryController, config){
|
|
63
|
+
super();
|
|
64
|
+
this.logger = new Logger({
|
|
65
|
+
level: 'info',
|
|
66
|
+
format: 'text',
|
|
67
|
+
destination: 'console'
|
|
68
|
+
});
|
|
69
|
+
this.queryController = queryController;
|
|
70
|
+
this.config = {
|
|
71
|
+
maxConcurrentWaiting: config?.maxConcurrentWaiting ?? 50,
|
|
72
|
+
defaultMaxWaitMs: config?.defaultMaxWaitMs ?? 300000,
|
|
73
|
+
defaultMaxRetries: config?.defaultMaxRetries ?? 3,
|
|
74
|
+
timeoutCheckIntervalMs: config?.timeoutCheckIntervalMs ?? 5000,
|
|
75
|
+
tokenSavingsRate: config?.tokenSavingsRate ?? 0.1
|
|
76
|
+
};
|
|
77
|
+
this.waitingAgents = new Map();
|
|
78
|
+
this.agentsByDependency = new Map();
|
|
79
|
+
this.metrics = this.initializeMetrics();
|
|
80
|
+
this.startTime = Date.now();
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Initializes the waiting agent pool.
|
|
84
|
+
* Starts timeout checker and sets up event listeners.
|
|
85
|
+
*/ async initialize() {
|
|
86
|
+
if (this.initialized) {
|
|
87
|
+
this.logger.warn('WaitingAgentPool already initialized');
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
this.logger.info('Initializing waiting agent pool', {
|
|
91
|
+
maxConcurrentWaiting: this.config.maxConcurrentWaiting,
|
|
92
|
+
defaultMaxWaitMs: this.config.defaultMaxWaitMs
|
|
93
|
+
});
|
|
94
|
+
// Start timeout check timer
|
|
95
|
+
this.startTimeoutChecker();
|
|
96
|
+
// Listen for QueryController resume events
|
|
97
|
+
this.queryController.on('agent:resumed', (event)=>{
|
|
98
|
+
this.handleAgentResumed(event.agentId);
|
|
99
|
+
});
|
|
100
|
+
this.initialized = true;
|
|
101
|
+
this.emit('pool:initialized');
|
|
102
|
+
this.logger.info('Waiting agent pool initialized');
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Adds an agent to the waiting pool with SDK pause.
|
|
106
|
+
*
|
|
107
|
+
* @param config - Waiting agent configuration
|
|
108
|
+
* @returns Waiting agent entry ID
|
|
109
|
+
* @throws Error if pool is at capacity or agent already waiting
|
|
110
|
+
*/ async addWaitingAgent(config) {
|
|
111
|
+
const startTime = Date.now();
|
|
112
|
+
if (!this.initialized) {
|
|
113
|
+
throw new Error('WaitingAgentPool not initialized. Call initialize() first.');
|
|
114
|
+
}
|
|
115
|
+
// Check capacity
|
|
116
|
+
if (this.waitingAgents.size >= this.config.maxConcurrentWaiting) {
|
|
117
|
+
throw new Error(`Waiting agent pool at capacity (${this.config.maxConcurrentWaiting} agents)`);
|
|
118
|
+
}
|
|
119
|
+
// Check if agent already waiting
|
|
120
|
+
const existingAgent = Array.from(this.waitingAgents.values()).find((a)=>a.agentId === config.agentId);
|
|
121
|
+
if (existingAgent) {
|
|
122
|
+
throw new Error(`Agent ${config.agentId} is already in waiting pool`);
|
|
123
|
+
}
|
|
124
|
+
// Validate dependencies
|
|
125
|
+
if (config.pendingDependencies.length === 0) {
|
|
126
|
+
throw new Error('Agent must have at least one pending dependency');
|
|
127
|
+
}
|
|
128
|
+
// Create waiting agent entry
|
|
129
|
+
const waitingId = generateId('waiting');
|
|
130
|
+
const waitingAgent = {
|
|
131
|
+
id: waitingId,
|
|
132
|
+
agentId: config.agentId,
|
|
133
|
+
sessionId: config.sessionId,
|
|
134
|
+
state: config.state,
|
|
135
|
+
priority: config.priority,
|
|
136
|
+
pendingDependencies: [
|
|
137
|
+
...config.pendingDependencies
|
|
138
|
+
],
|
|
139
|
+
waitingSince: new Date(),
|
|
140
|
+
maxWaitMs: config.maxWaitMs ?? this.config.defaultMaxWaitMs,
|
|
141
|
+
retryCount: 0,
|
|
142
|
+
maxRetries: config.maxRetries ?? this.config.defaultMaxRetries,
|
|
143
|
+
metadata: config.metadata
|
|
144
|
+
};
|
|
145
|
+
// Add to pool
|
|
146
|
+
this.waitingAgents.set(waitingId, waitingAgent);
|
|
147
|
+
// Index by dependencies
|
|
148
|
+
for (const depId of config.pendingDependencies){
|
|
149
|
+
if (!this.agentsByDependency.has(depId)) {
|
|
150
|
+
this.agentsByDependency.set(depId, new Set());
|
|
151
|
+
}
|
|
152
|
+
this.agentsByDependency.get(depId).add(config.agentId);
|
|
153
|
+
}
|
|
154
|
+
// Pause agent via SDK (zero token consumption)
|
|
155
|
+
try {
|
|
156
|
+
await this.queryController.interrupt(config.sessionId, `Waiting for dependencies: ${config.pendingDependencies.join(', ')}`);
|
|
157
|
+
this.logger.info('Agent added to waiting pool and paused', {
|
|
158
|
+
agentId: config.agentId,
|
|
159
|
+
waitingId,
|
|
160
|
+
dependencies: config.pendingDependencies,
|
|
161
|
+
priority: config.priority
|
|
162
|
+
});
|
|
163
|
+
} catch (error) {
|
|
164
|
+
// Rollback on pause failure
|
|
165
|
+
this.waitingAgents.delete(waitingId);
|
|
166
|
+
for (const depId of config.pendingDependencies){
|
|
167
|
+
this.agentsByDependency.get(depId)?.delete(config.agentId);
|
|
168
|
+
}
|
|
169
|
+
throw new Error(`Failed to pause agent ${config.agentId}: ${error instanceof Error ? error.message : String(error)}`);
|
|
170
|
+
}
|
|
171
|
+
// Update metrics
|
|
172
|
+
this.metrics.totalWaiting = this.waitingAgents.size;
|
|
173
|
+
this.metrics.totalPaused++;
|
|
174
|
+
this.metrics.maxConcurrentWaiting = Math.max(this.metrics.maxConcurrentWaiting, this.waitingAgents.size);
|
|
175
|
+
const latencyMs = Date.now() - startTime;
|
|
176
|
+
this.emit('agent:waiting', {
|
|
177
|
+
waitingAgent,
|
|
178
|
+
latencyMs
|
|
179
|
+
});
|
|
180
|
+
return waitingId;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Resolves a dependency and resumes all agents waiting for it.
|
|
184
|
+
*
|
|
185
|
+
* @param dependencyId - ID of the resolved dependency
|
|
186
|
+
* @returns Array of resumed agent IDs
|
|
187
|
+
*/ async resolveDependency(dependencyId) {
|
|
188
|
+
const startTime = Date.now();
|
|
189
|
+
const waitingAgentIds = this.agentsByDependency.get(dependencyId);
|
|
190
|
+
if (!waitingAgentIds || waitingAgentIds.size === 0) {
|
|
191
|
+
this.logger.debug('No agents waiting for dependency', {
|
|
192
|
+
dependencyId
|
|
193
|
+
});
|
|
194
|
+
return [];
|
|
195
|
+
}
|
|
196
|
+
const resumedAgents = [];
|
|
197
|
+
// Resume agents waiting for this dependency
|
|
198
|
+
for (const agentId of Array.from(waitingAgentIds)){
|
|
199
|
+
try {
|
|
200
|
+
const resumed = await this.resumeAgentForDependency(agentId, dependencyId);
|
|
201
|
+
if (resumed) {
|
|
202
|
+
resumedAgents.push(agentId);
|
|
203
|
+
}
|
|
204
|
+
} catch (error) {
|
|
205
|
+
this.logger.error('Failed to resume agent for dependency', {
|
|
206
|
+
agentId,
|
|
207
|
+
dependencyId,
|
|
208
|
+
error: error instanceof Error ? error.message : String(error)
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
// Clean up dependency index
|
|
213
|
+
this.agentsByDependency.delete(dependencyId);
|
|
214
|
+
const latencyMs = Date.now() - startTime;
|
|
215
|
+
this.logger.info('Dependency resolved, agents resumed', {
|
|
216
|
+
dependencyId,
|
|
217
|
+
resumedCount: resumedAgents.length,
|
|
218
|
+
latencyMs
|
|
219
|
+
});
|
|
220
|
+
this.emit('dependency:resolved', {
|
|
221
|
+
dependencyId,
|
|
222
|
+
resumedAgents,
|
|
223
|
+
latencyMs
|
|
224
|
+
});
|
|
225
|
+
return resumedAgents;
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Manually resumes a waiting agent.
|
|
229
|
+
*
|
|
230
|
+
* @param agentId - Agent ID to resume
|
|
231
|
+
* @param reason - Reason for manual resume
|
|
232
|
+
* @returns True if agent was resumed, false if not found
|
|
233
|
+
*/ async resumeAgent(agentId, reason = 'Manual resume') {
|
|
234
|
+
const waitingAgent = this.findWaitingAgent(agentId);
|
|
235
|
+
if (!waitingAgent) {
|
|
236
|
+
this.logger.warn('Agent not found in waiting pool', {
|
|
237
|
+
agentId
|
|
238
|
+
});
|
|
239
|
+
return false;
|
|
240
|
+
}
|
|
241
|
+
return await this.resumeWaitingAgent(waitingAgent, {
|
|
242
|
+
type: 'manual',
|
|
243
|
+
agentId,
|
|
244
|
+
metadata: {
|
|
245
|
+
reason
|
|
246
|
+
}
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Removes an agent from the waiting pool without resuming.
|
|
251
|
+
*
|
|
252
|
+
* @param agentId - Agent ID to remove
|
|
253
|
+
* @returns True if removed, false if not found
|
|
254
|
+
*/ removeWaitingAgent(agentId) {
|
|
255
|
+
const waitingAgent = this.findWaitingAgent(agentId);
|
|
256
|
+
if (!waitingAgent) {
|
|
257
|
+
return false;
|
|
258
|
+
}
|
|
259
|
+
// Clean up dependency indices
|
|
260
|
+
for (const depId of waitingAgent.pendingDependencies){
|
|
261
|
+
this.agentsByDependency.get(depId)?.delete(agentId);
|
|
262
|
+
if (this.agentsByDependency.get(depId)?.size === 0) {
|
|
263
|
+
this.agentsByDependency.delete(depId);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
// Remove from pool
|
|
267
|
+
this.waitingAgents.delete(waitingAgent.id);
|
|
268
|
+
this.metrics.totalWaiting = this.waitingAgents.size;
|
|
269
|
+
this.logger.debug('Agent removed from waiting pool', {
|
|
270
|
+
agentId
|
|
271
|
+
});
|
|
272
|
+
this.emit('agent:removed', {
|
|
273
|
+
agentId
|
|
274
|
+
});
|
|
275
|
+
return true;
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Gets all waiting agents sorted by priority (descending).
|
|
279
|
+
*
|
|
280
|
+
* @returns Array of waiting agents
|
|
281
|
+
*/ getWaitingAgents() {
|
|
282
|
+
return Array.from(this.waitingAgents.values()).sort((a, b)=>b.priority - a.priority);
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Gets waiting agent by agent ID.
|
|
286
|
+
*
|
|
287
|
+
* @param agentId - Agent ID to find
|
|
288
|
+
* @returns Waiting agent if found, undefined otherwise
|
|
289
|
+
*/ getWaitingAgent(agentId) {
|
|
290
|
+
return this.findWaitingAgent(agentId);
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Gets all agents waiting for a specific dependency.
|
|
294
|
+
*
|
|
295
|
+
* @param dependencyId - Dependency ID
|
|
296
|
+
* @returns Array of agent IDs
|
|
297
|
+
*/ getAgentsWaitingFor(dependencyId) {
|
|
298
|
+
return Array.from(this.agentsByDependency.get(dependencyId) || []);
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Gets pool metrics.
|
|
302
|
+
*
|
|
303
|
+
* @returns Current pool metrics
|
|
304
|
+
*/ getMetrics() {
|
|
305
|
+
// Update token savings estimate
|
|
306
|
+
const uptimeSeconds = (Date.now() - this.startTime) / 1000;
|
|
307
|
+
this.metrics.estimatedTokensSaved = Math.floor(this.metrics.totalPaused * this.config.tokenSavingsRate * uptimeSeconds);
|
|
308
|
+
return {
|
|
309
|
+
...this.metrics
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* Shuts down the waiting agent pool.
|
|
314
|
+
* Stops timeout checker and cleans up resources.
|
|
315
|
+
*/ async shutdown() {
|
|
316
|
+
if (!this.initialized) {
|
|
317
|
+
return;
|
|
318
|
+
}
|
|
319
|
+
this.logger.info('Shutting down waiting agent pool', {
|
|
320
|
+
waitingAgents: this.waitingAgents.size
|
|
321
|
+
});
|
|
322
|
+
// Stop timeout checker
|
|
323
|
+
if (this.timeoutCheckTimer) {
|
|
324
|
+
clearInterval(this.timeoutCheckTimer);
|
|
325
|
+
this.timeoutCheckTimer = undefined;
|
|
326
|
+
}
|
|
327
|
+
// Clear all data
|
|
328
|
+
this.waitingAgents.clear();
|
|
329
|
+
this.agentsByDependency.clear();
|
|
330
|
+
this.removeAllListeners();
|
|
331
|
+
this.initialized = false;
|
|
332
|
+
this.emit('pool:shutdown');
|
|
333
|
+
this.logger.info('Waiting agent pool shut down');
|
|
334
|
+
}
|
|
335
|
+
// ============================================
|
|
336
|
+
// Private Methods
|
|
337
|
+
// ============================================
|
|
338
|
+
/**
|
|
339
|
+
* Initializes pool metrics.
|
|
340
|
+
*/ initializeMetrics() {
|
|
341
|
+
return {
|
|
342
|
+
totalWaiting: 0,
|
|
343
|
+
totalPaused: 0,
|
|
344
|
+
totalResumes: 0,
|
|
345
|
+
totalTimeouts: 0,
|
|
346
|
+
averageResumeLatencyMs: 0,
|
|
347
|
+
maxConcurrentWaiting: 0,
|
|
348
|
+
totalRetries: 0,
|
|
349
|
+
estimatedTokensSaved: 0
|
|
350
|
+
};
|
|
351
|
+
}
|
|
352
|
+
/**
|
|
353
|
+
* Starts the timeout checker interval.
|
|
354
|
+
*/ startTimeoutChecker() {
|
|
355
|
+
this.timeoutCheckTimer = setInterval(()=>{
|
|
356
|
+
this.checkTimeouts();
|
|
357
|
+
}, this.config.timeoutCheckIntervalMs);
|
|
358
|
+
}
|
|
359
|
+
/**
|
|
360
|
+
* Checks for timed-out waiting agents and handles them.
|
|
361
|
+
*/ checkTimeouts() {
|
|
362
|
+
const now = Date.now();
|
|
363
|
+
for (const waitingAgent of Array.from(this.waitingAgents.values())){
|
|
364
|
+
const waitTimeMs = now - waitingAgent.waitingSince.getTime();
|
|
365
|
+
if (waitTimeMs >= waitingAgent.maxWaitMs) {
|
|
366
|
+
this.handleTimeout(waitingAgent);
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* Handles timeout for a waiting agent.
|
|
372
|
+
*
|
|
373
|
+
* @param waitingAgent - Timed-out agent
|
|
374
|
+
*/ async handleTimeout(waitingAgent) {
|
|
375
|
+
this.logger.warn('Agent wait timeout', {
|
|
376
|
+
agentId: waitingAgent.agentId,
|
|
377
|
+
waitTimeMs: Date.now() - waitingAgent.waitingSince.getTime(),
|
|
378
|
+
maxWaitMs: waitingAgent.maxWaitMs,
|
|
379
|
+
pendingDependencies: waitingAgent.pendingDependencies
|
|
380
|
+
});
|
|
381
|
+
// Check retry count
|
|
382
|
+
if (waitingAgent.retryCount < waitingAgent.maxRetries) {
|
|
383
|
+
// Retry - extend wait time
|
|
384
|
+
waitingAgent.retryCount++;
|
|
385
|
+
waitingAgent.waitingSince = new Date();
|
|
386
|
+
this.metrics.totalRetries++;
|
|
387
|
+
this.logger.info('Retrying timed-out agent', {
|
|
388
|
+
agentId: waitingAgent.agentId,
|
|
389
|
+
retryCount: waitingAgent.retryCount,
|
|
390
|
+
maxRetries: waitingAgent.maxRetries
|
|
391
|
+
});
|
|
392
|
+
this.emit('agent:retry', {
|
|
393
|
+
agentId: waitingAgent.agentId,
|
|
394
|
+
retryCount: waitingAgent.retryCount
|
|
395
|
+
});
|
|
396
|
+
} else {
|
|
397
|
+
// Max retries exceeded - resume with timeout trigger
|
|
398
|
+
this.metrics.totalTimeouts++;
|
|
399
|
+
await this.resumeWaitingAgent(waitingAgent, {
|
|
400
|
+
type: 'timeout',
|
|
401
|
+
agentId: waitingAgent.agentId,
|
|
402
|
+
metadata: {
|
|
403
|
+
reason: 'Max wait time exceeded',
|
|
404
|
+
pendingDependencies: waitingAgent.pendingDependencies
|
|
405
|
+
}
|
|
406
|
+
});
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
/**
|
|
410
|
+
* Resumes an agent waiting for a specific dependency.
|
|
411
|
+
*
|
|
412
|
+
* @param agentId - Agent ID
|
|
413
|
+
* @param dependencyId - Resolved dependency ID
|
|
414
|
+
* @returns True if resumed, false otherwise
|
|
415
|
+
*/ async resumeAgentForDependency(agentId, dependencyId) {
|
|
416
|
+
const waitingAgent = this.findWaitingAgent(agentId);
|
|
417
|
+
if (!waitingAgent) {
|
|
418
|
+
return false;
|
|
419
|
+
}
|
|
420
|
+
// Remove dependency from pending list
|
|
421
|
+
const depIndex = waitingAgent.pendingDependencies.indexOf(dependencyId);
|
|
422
|
+
if (depIndex !== -1) {
|
|
423
|
+
waitingAgent.pendingDependencies.splice(depIndex, 1);
|
|
424
|
+
}
|
|
425
|
+
// Check if all dependencies resolved
|
|
426
|
+
if (waitingAgent.pendingDependencies.length === 0) {
|
|
427
|
+
// All dependencies resolved - resume agent
|
|
428
|
+
return await this.resumeWaitingAgent(waitingAgent, {
|
|
429
|
+
type: 'dependency_resolved',
|
|
430
|
+
agentId,
|
|
431
|
+
resolvedDependencyId: dependencyId
|
|
432
|
+
});
|
|
433
|
+
} else {
|
|
434
|
+
// Still has pending dependencies - keep waiting
|
|
435
|
+
this.logger.debug('Agent still waiting for dependencies', {
|
|
436
|
+
agentId,
|
|
437
|
+
resolvedDependency: dependencyId,
|
|
438
|
+
remainingDependencies: waitingAgent.pendingDependencies
|
|
439
|
+
});
|
|
440
|
+
return false;
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
/**
|
|
444
|
+
* Resumes a waiting agent via SDK.
|
|
445
|
+
*
|
|
446
|
+
* @param waitingAgent - Agent to resume
|
|
447
|
+
* @param trigger - Resume trigger event
|
|
448
|
+
* @returns True if resumed successfully
|
|
449
|
+
*/ async resumeWaitingAgent(waitingAgent, trigger) {
|
|
450
|
+
const startTime = Date.now();
|
|
451
|
+
try {
|
|
452
|
+
// Resume via QueryController
|
|
453
|
+
await this.queryController.resumeSessionAt(waitingAgent.sessionId, undefined, `Resume trigger: ${trigger.type}`);
|
|
454
|
+
// Remove from pool
|
|
455
|
+
this.waitingAgents.delete(waitingAgent.id);
|
|
456
|
+
// Clean up dependency indices
|
|
457
|
+
for (const depId of waitingAgent.pendingDependencies){
|
|
458
|
+
this.agentsByDependency.get(depId)?.delete(waitingAgent.agentId);
|
|
459
|
+
}
|
|
460
|
+
const latencyMs = Date.now() - startTime;
|
|
461
|
+
// Update metrics
|
|
462
|
+
this.metrics.totalWaiting = this.waitingAgents.size;
|
|
463
|
+
this.metrics.totalResumes++;
|
|
464
|
+
this.metrics.averageResumeLatencyMs = (this.metrics.averageResumeLatencyMs * (this.metrics.totalResumes - 1) + latencyMs) / this.metrics.totalResumes;
|
|
465
|
+
this.logger.info('Waiting agent resumed', {
|
|
466
|
+
agentId: waitingAgent.agentId,
|
|
467
|
+
triggerType: trigger.type,
|
|
468
|
+
latencyMs,
|
|
469
|
+
waitTimeMs: Date.now() - waitingAgent.waitingSince.getTime()
|
|
470
|
+
});
|
|
471
|
+
this.emit('agent:resumed', {
|
|
472
|
+
waitingAgent,
|
|
473
|
+
trigger,
|
|
474
|
+
latencyMs
|
|
475
|
+
});
|
|
476
|
+
return true;
|
|
477
|
+
} catch (error) {
|
|
478
|
+
this.logger.error('Failed to resume waiting agent', {
|
|
479
|
+
agentId: waitingAgent.agentId,
|
|
480
|
+
error: error instanceof Error ? error.message : String(error)
|
|
481
|
+
});
|
|
482
|
+
this.emit('agent:resume-failed', {
|
|
483
|
+
agentId: waitingAgent.agentId,
|
|
484
|
+
error
|
|
485
|
+
});
|
|
486
|
+
return false;
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
/**
|
|
490
|
+
* Finds a waiting agent by agent ID.
|
|
491
|
+
*
|
|
492
|
+
* @param agentId - Agent ID to find
|
|
493
|
+
* @returns Waiting agent if found
|
|
494
|
+
*/ findWaitingAgent(agentId) {
|
|
495
|
+
for (const waitingAgent of Array.from(this.waitingAgents.values())){
|
|
496
|
+
if (waitingAgent.agentId === agentId) {
|
|
497
|
+
return waitingAgent;
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
return undefined;
|
|
501
|
+
}
|
|
502
|
+
/**
|
|
503
|
+
* Handles agent resumed event from QueryController.
|
|
504
|
+
*
|
|
505
|
+
* @param agentId - Resumed agent ID
|
|
506
|
+
*/ handleAgentResumed(agentId) {
|
|
507
|
+
// Ensure agent is removed from pool if still present
|
|
508
|
+
this.removeWaitingAgent(agentId);
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
//# sourceMappingURL=waiting-agent-pool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/coordination/v2/help-system/waiting-agent-pool.ts"],"names":["EventEmitter","Logger","generateId","WaitingAgentPool","logger","config","queryController","waitingAgents","agentsByDependency","timeoutCheckTimer","metrics","initialized","startTime","level","format","destination","maxConcurrentWaiting","defaultMaxWaitMs","defaultMaxRetries","timeoutCheckIntervalMs","tokenSavingsRate","Map","initializeMetrics","Date","now","initialize","warn","info","startTimeoutChecker","on","event","handleAgentResumed","agentId","emit","addWaitingAgent","Error","size","existingAgent","Array","from","values","find","a","pendingDependencies","length","waitingId","waitingAgent","id","sessionId","state","priority","waitingSince","maxWaitMs","retryCount","maxRetries","metadata","set","depId","has","Set","get","add","interrupt","join","dependencies","error","delete","message","String","totalWaiting","totalPaused","Math","max","latencyMs","resolveDependency","dependencyId","waitingAgentIds","debug","resumedAgents","resumed","resumeAgentForDependency","push","resumedCount","resumeAgent","reason","findWaitingAgent","resumeWaitingAgent","type","removeWaitingAgent","getWaitingAgents","sort","b","getWaitingAgent","getAgentsWaitingFor","getMetrics","uptimeSeconds","estimatedTokensSaved","floor","shutdown","clearInterval","undefined","clear","removeAllListeners","totalResumes","totalTimeouts","averageResumeLatencyMs","totalRetries","setInterval","checkTimeouts","waitTimeMs","getTime","handleTimeout","depIndex","indexOf","splice","resolvedDependencyId","resolvedDependency","remainingDependencies","trigger","resumeSessionAt","triggerType"],"mappings":"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"}
|
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
* @module coordination/v2
|
|
8
8
|
*/ // Factory for coordinator creation
|
|
9
9
|
export { CoordinatorFactory } from './coordinator-factory.js';
|
|
10
|
+
// Unified SwarmCoordinatorV2 (Phase 9 - integrates all V2 components)
|
|
11
|
+
export { SwarmCoordinatorV2, SwarmTopology } from './coordinators/swarm-coordinator-v2.js';
|
|
10
12
|
// SDK implementation (QueryController)
|
|
11
13
|
export { QueryController } from './sdk/query-controller.js';
|
|
12
14
|
// SDK utilities and helpers
|
|
@@ -18,6 +20,10 @@ export * from './utils/sdk-helpers.js';
|
|
|
18
20
|
export { MessageRouter } from './core/message-router.js';
|
|
19
21
|
export { DeadLetterQueue } from './core/dead-letter-queue.js';
|
|
20
22
|
export { MessageStorage } from './memory/message-storage.js';
|
|
23
|
+
// Help System
|
|
24
|
+
export { HelpRequest, HelpRequestStatus, HelpRequestPriority, HelpMatcher, HelpCoordinator } from './help-system/index.js';
|
|
25
|
+
// Deadlock Detection & Recovery
|
|
26
|
+
export { DeadlockDetector } from './deadlock/index.js';
|
|
21
27
|
/**
|
|
22
28
|
* Quick Start Examples:
|
|
23
29
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/coordination/v2/index.ts"],"names":["CoordinatorFactory","QueryController","BackgroundOrchestrator","BashOutputMonitor","FilesystemArtifactStorage","MessageRouter","DeadLetterQueue","MessageStorage"],"mappings":"AAAA;;;;;;;CAOC,GAED,mCAAmC;AACnC,SAASA,kBAAkB,QAAoD,2BAA2B;AAW1G,uCAAuC;AACvC,SAASC,eAAe,QAAoC,4BAA4B;AAExF,4BAA4B;AAC5B,SAASC,sBAAsB,QAA2C,mCAAmC;AAC7G,SAASC,iBAAiB,QAA4B,+BAA+B;AACrF,SAASC,yBAAyB,QAAoC,4BAA4B;AAClG,cAAc,yBAAyB;AAEvC,4BAA4B;AAC5B,SAASC,aAAa,QAAQ,2BAA2B;AACzD,SAASC,eAAe,QAA+D,8BAA8B;AACrH,SAASC,cAAc,QAAQ,8BAA8B;
|
|
1
|
+
{"version":3,"sources":["../../../../../src/coordination/v2/index.ts"],"names":["CoordinatorFactory","SwarmCoordinatorV2","SwarmTopology","QueryController","BackgroundOrchestrator","BashOutputMonitor","FilesystemArtifactStorage","MessageRouter","DeadLetterQueue","MessageStorage","HelpRequest","HelpRequestStatus","HelpRequestPriority","HelpMatcher","HelpCoordinator","DeadlockDetector"],"mappings":"AAAA;;;;;;;CAOC,GAED,mCAAmC;AACnC,SAASA,kBAAkB,QAAoD,2BAA2B;AAW1G,sEAAsE;AACtE,SACEC,kBAAkB,EAClBC,aAAa,QAKR,yCAAyC;AAEhD,uCAAuC;AACvC,SAASC,eAAe,QAAoC,4BAA4B;AAExF,4BAA4B;AAC5B,SAASC,sBAAsB,QAA2C,mCAAmC;AAC7G,SAASC,iBAAiB,QAA4B,+BAA+B;AACrF,SAASC,yBAAyB,QAAoC,4BAA4B;AAClG,cAAc,yBAAyB;AAEvC,4BAA4B;AAC5B,SAASC,aAAa,QAAQ,2BAA2B;AACzD,SAASC,eAAe,QAA+D,8BAA8B;AACrH,SAASC,cAAc,QAAQ,8BAA8B;AAE7D,cAAc;AACd,SACEC,WAAW,EACXC,iBAAiB,EACjBC,mBAAmB,EACnBC,WAAW,EACXC,eAAe,QAaV,yBAAyB;AAEhC,gCAAgC;AAChC,SACEC,gBAAgB,QAMX,sBAAsB;CAe7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuCC"}
|