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
|
@@ -1,40 +1,292 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* WebSocket Manager - Real-time communication for swarm transparency
|
|
3
3
|
* Integrates with Claude Flow and ruv-swarm MCP systems
|
|
4
|
-
*/
|
|
4
|
+
*/ const MESSAGE_SCHEMAS = {
|
|
5
|
+
'join-swarm': {
|
|
6
|
+
type: 'join-swarm',
|
|
7
|
+
required: [
|
|
8
|
+
'swarmId'
|
|
9
|
+
],
|
|
10
|
+
validate: (data)=>{
|
|
11
|
+
return typeof data.swarmId === 'string' && data.swarmId.length > 0 && data.swarmId.length <= 100 && (!data.userId || typeof data.userId === 'string' && data.userId.length <= 100);
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
'leave-swarm': {
|
|
15
|
+
type: 'leave-swarm',
|
|
16
|
+
required: [
|
|
17
|
+
'swarmId'
|
|
18
|
+
],
|
|
19
|
+
validate: (data)=>{
|
|
20
|
+
return typeof data.swarmId === 'string' && data.swarmId.length > 0 && data.swarmId.length <= 100;
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
'send-intervention': {
|
|
24
|
+
type: 'send-intervention',
|
|
25
|
+
required: [
|
|
26
|
+
'swarmId',
|
|
27
|
+
'message',
|
|
28
|
+
'action'
|
|
29
|
+
],
|
|
30
|
+
validate: (data)=>{
|
|
31
|
+
return typeof data.swarmId === 'string' && data.swarmId.length > 0 && data.swarmId.length <= 100 && typeof data.message === 'string' && data.message.length > 0 && data.message.length <= 5000 && typeof data.action === 'string' && data.action.length > 0 && data.action.length <= 100 && (!data.agentId || typeof data.agentId === 'string' && data.agentId.length <= 100);
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
'request-status': {
|
|
35
|
+
type: 'request-status',
|
|
36
|
+
required: [],
|
|
37
|
+
validate: (data)=>{
|
|
38
|
+
return (!data.swarmId || typeof data.swarmId === 'string' && data.swarmId.length <= 100) && (!data.agentId || typeof data.agentId === 'string' && data.agentId.length <= 100);
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
'set-filter': {
|
|
42
|
+
type: 'set-filter',
|
|
43
|
+
required: [],
|
|
44
|
+
validate: (data)=>{
|
|
45
|
+
// Allow any JSON object but limit size
|
|
46
|
+
return JSON.stringify(data).length <= 10000;
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
'claude-flow-command': {
|
|
50
|
+
type: 'claude-flow-command',
|
|
51
|
+
required: [
|
|
52
|
+
'command'
|
|
53
|
+
],
|
|
54
|
+
validate: (data)=>{
|
|
55
|
+
const allowedCommands = [
|
|
56
|
+
'swarm_status',
|
|
57
|
+
'agent_list',
|
|
58
|
+
'task_orchestrate',
|
|
59
|
+
'swarm_init',
|
|
60
|
+
'memory_usage'
|
|
61
|
+
];
|
|
62
|
+
return typeof data.command === 'string' && allowedCommands.includes(data.command) && (!data.swarmId || typeof data.swarmId === 'string' && data.swarmId.length <= 100);
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
'ruv-swarm-command': {
|
|
66
|
+
type: 'ruv-swarm-command',
|
|
67
|
+
required: [
|
|
68
|
+
'command'
|
|
69
|
+
],
|
|
70
|
+
validate: (data)=>{
|
|
71
|
+
const allowedCommands = [
|
|
72
|
+
'swarm_status',
|
|
73
|
+
'agent_list',
|
|
74
|
+
'swarm_monitor',
|
|
75
|
+
'performance_report'
|
|
76
|
+
];
|
|
77
|
+
return typeof data.command === 'string' && allowedCommands.includes(data.command) && (!data.swarmId || typeof data.swarmId === 'string' && data.swarmId.length <= 100);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
export class WebSocketManager {
|
|
5
82
|
io;
|
|
6
83
|
logger;
|
|
7
84
|
connections = new Map();
|
|
8
85
|
swarmSubscriptions = new Map();
|
|
86
|
+
rateLimiting = new Map();
|
|
87
|
+
RATE_LIMIT_WINDOW = 60000;
|
|
88
|
+
RATE_LIMIT_MAX_REQUESTS = 100;
|
|
89
|
+
ALLOWED_ORIGINS = [
|
|
90
|
+
'http://localhost:3000',
|
|
91
|
+
'http://localhost:3001',
|
|
92
|
+
'https://localhost:3000',
|
|
93
|
+
'https://localhost:3001'
|
|
94
|
+
];
|
|
9
95
|
constructor(io, logger){
|
|
10
96
|
this.io = io;
|
|
11
97
|
this.logger = logger;
|
|
98
|
+
this.setupSecurityMiddleware();
|
|
12
99
|
this.setupSocketHandlers();
|
|
13
100
|
}
|
|
101
|
+
setupSecurityMiddleware() {
|
|
102
|
+
// Add origin validation middleware
|
|
103
|
+
this.io.use((socket, next)=>{
|
|
104
|
+
const origin = socket.handshake.headers.origin;
|
|
105
|
+
if (!origin) {
|
|
106
|
+
this.logger.warn('WebSocket connection rejected: No origin header', {
|
|
107
|
+
socketId: socket.id,
|
|
108
|
+
ip: socket.handshake.address
|
|
109
|
+
});
|
|
110
|
+
return next(new Error('Origin header required'));
|
|
111
|
+
}
|
|
112
|
+
if (!this.ALLOWED_ORIGINS.includes(origin)) {
|
|
113
|
+
this.logger.warn('WebSocket connection rejected: Invalid origin', {
|
|
114
|
+
socketId: socket.id,
|
|
115
|
+
origin,
|
|
116
|
+
ip: socket.handshake.address
|
|
117
|
+
});
|
|
118
|
+
return next(new Error('Origin not allowed'));
|
|
119
|
+
}
|
|
120
|
+
next();
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
validateMessage(messageType, data) {
|
|
124
|
+
const schema = MESSAGE_SCHEMAS[messageType];
|
|
125
|
+
if (!schema) {
|
|
126
|
+
this.logger.warn('Unknown message type', {
|
|
127
|
+
messageType
|
|
128
|
+
});
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
// Check required fields
|
|
132
|
+
for (const field of schema.required){
|
|
133
|
+
if (!(field in data)) {
|
|
134
|
+
this.logger.warn('Missing required field', {
|
|
135
|
+
messageType,
|
|
136
|
+
field
|
|
137
|
+
});
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
// Run custom validation
|
|
142
|
+
if (!schema.validate(data)) {
|
|
143
|
+
this.logger.warn('Message validation failed', {
|
|
144
|
+
messageType,
|
|
145
|
+
data
|
|
146
|
+
});
|
|
147
|
+
return false;
|
|
148
|
+
}
|
|
149
|
+
return true;
|
|
150
|
+
}
|
|
151
|
+
checkRateLimit(socketId) {
|
|
152
|
+
const now = Date.now();
|
|
153
|
+
const rateLimitEntry = this.rateLimiting.get(socketId);
|
|
154
|
+
if (!rateLimitEntry) {
|
|
155
|
+
this.rateLimiting.set(socketId, {
|
|
156
|
+
count: 1,
|
|
157
|
+
lastReset: now
|
|
158
|
+
});
|
|
159
|
+
return true;
|
|
160
|
+
}
|
|
161
|
+
// Reset counter if window has expired
|
|
162
|
+
if (now - rateLimitEntry.lastReset > this.RATE_LIMIT_WINDOW) {
|
|
163
|
+
this.rateLimiting.set(socketId, {
|
|
164
|
+
count: 1,
|
|
165
|
+
lastReset: now
|
|
166
|
+
});
|
|
167
|
+
return true;
|
|
168
|
+
}
|
|
169
|
+
// Check if rate limit exceeded
|
|
170
|
+
if (rateLimitEntry.count >= this.RATE_LIMIT_MAX_REQUESTS) {
|
|
171
|
+
this.logger.warn('Rate limit exceeded', {
|
|
172
|
+
socketId,
|
|
173
|
+
count: rateLimitEntry.count,
|
|
174
|
+
window: this.RATE_LIMIT_WINDOW
|
|
175
|
+
});
|
|
176
|
+
return false;
|
|
177
|
+
}
|
|
178
|
+
// Increment counter
|
|
179
|
+
rateLimitEntry.count++;
|
|
180
|
+
return true;
|
|
181
|
+
}
|
|
14
182
|
setupSocketHandlers() {
|
|
15
183
|
this.io.on('connection', (socket)=>{
|
|
16
184
|
this.handleNewConnection(socket);
|
|
17
185
|
socket.on('join-swarm', (data)=>{
|
|
186
|
+
if (!this.checkRateLimit(socket.id)) {
|
|
187
|
+
socket.emit('error', {
|
|
188
|
+
message: 'Rate limit exceeded'
|
|
189
|
+
});
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
if (!this.validateMessage('join-swarm', data)) {
|
|
193
|
+
socket.emit('error', {
|
|
194
|
+
message: 'Invalid message format'
|
|
195
|
+
});
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
18
198
|
this.handleJoinSwarm(socket, data);
|
|
19
199
|
});
|
|
20
200
|
socket.on('leave-swarm', (data)=>{
|
|
201
|
+
if (!this.checkRateLimit(socket.id)) {
|
|
202
|
+
socket.emit('error', {
|
|
203
|
+
message: 'Rate limit exceeded'
|
|
204
|
+
});
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
if (!this.validateMessage('leave-swarm', data)) {
|
|
208
|
+
socket.emit('error', {
|
|
209
|
+
message: 'Invalid message format'
|
|
210
|
+
});
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
21
213
|
this.handleLeaveSwarm(socket, data);
|
|
22
214
|
});
|
|
23
215
|
socket.on('send-intervention', (data)=>{
|
|
216
|
+
if (!this.checkRateLimit(socket.id)) {
|
|
217
|
+
socket.emit('error', {
|
|
218
|
+
message: 'Rate limit exceeded'
|
|
219
|
+
});
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
if (!this.validateMessage('send-intervention', data)) {
|
|
223
|
+
socket.emit('error', {
|
|
224
|
+
message: 'Invalid message format'
|
|
225
|
+
});
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
24
228
|
this.handleHumanIntervention(socket, data);
|
|
25
229
|
});
|
|
26
230
|
socket.on('request-status', (data)=>{
|
|
231
|
+
if (!this.checkRateLimit(socket.id)) {
|
|
232
|
+
socket.emit('error', {
|
|
233
|
+
message: 'Rate limit exceeded'
|
|
234
|
+
});
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
if (!this.validateMessage('request-status', data)) {
|
|
238
|
+
socket.emit('error', {
|
|
239
|
+
message: 'Invalid message format'
|
|
240
|
+
});
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
27
243
|
this.handleStatusRequest(socket, data);
|
|
28
244
|
});
|
|
29
245
|
socket.on('set-filter', (filterConfig)=>{
|
|
246
|
+
if (!this.checkRateLimit(socket.id)) {
|
|
247
|
+
socket.emit('error', {
|
|
248
|
+
message: 'Rate limit exceeded'
|
|
249
|
+
});
|
|
250
|
+
return;
|
|
251
|
+
}
|
|
252
|
+
if (!this.validateMessage('set-filter', filterConfig)) {
|
|
253
|
+
socket.emit('error', {
|
|
254
|
+
message: 'Invalid message format'
|
|
255
|
+
});
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
30
258
|
this.handleFilterUpdate(socket, filterConfig);
|
|
31
259
|
});
|
|
32
260
|
// Claude Flow MCP integration events
|
|
33
261
|
socket.on('claude-flow-command', (data)=>{
|
|
262
|
+
if (!this.checkRateLimit(socket.id)) {
|
|
263
|
+
socket.emit('error', {
|
|
264
|
+
message: 'Rate limit exceeded'
|
|
265
|
+
});
|
|
266
|
+
return;
|
|
267
|
+
}
|
|
268
|
+
if (!this.validateMessage('claude-flow-command', data)) {
|
|
269
|
+
socket.emit('error', {
|
|
270
|
+
message: 'Invalid message format'
|
|
271
|
+
});
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
34
274
|
this.handleClaudeFlowCommand(socket, data);
|
|
35
275
|
});
|
|
36
276
|
// ruv-swarm MCP integration events
|
|
37
277
|
socket.on('ruv-swarm-command', (data)=>{
|
|
278
|
+
if (!this.checkRateLimit(socket.id)) {
|
|
279
|
+
socket.emit('error', {
|
|
280
|
+
message: 'Rate limit exceeded'
|
|
281
|
+
});
|
|
282
|
+
return;
|
|
283
|
+
}
|
|
284
|
+
if (!this.validateMessage('ruv-swarm-command', data)) {
|
|
285
|
+
socket.emit('error', {
|
|
286
|
+
message: 'Invalid message format'
|
|
287
|
+
});
|
|
288
|
+
return;
|
|
289
|
+
}
|
|
38
290
|
this.handleRuvSwarmCommand(socket, data);
|
|
39
291
|
});
|
|
40
292
|
socket.on('disconnect', ()=>{
|
|
@@ -245,6 +497,8 @@
|
|
|
245
497
|
}
|
|
246
498
|
}
|
|
247
499
|
}
|
|
500
|
+
// Clean up rate limiting data
|
|
501
|
+
this.rateLimiting.delete(socket.id);
|
|
248
502
|
this.connections.delete(socket.id);
|
|
249
503
|
this.logger.info('WebSocket client disconnected', {
|
|
250
504
|
socketId: socket.id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/web/websocket/websocket-manager.ts"],"names":["WebSocketManager","connections","Map","swarmSubscriptions","io","logger","setupSocketHandlers","on","socket","handleNewConnection","data","handleJoinSwarm","handleLeaveSwarm","handleHumanIntervention","handleStatusRequest","filterConfig","handleFilterUpdate","handleClaudeFlowCommand","handleRuvSwarmCommand","handleDisconnection","connection","socketId","id","joinedSwarms","Set","lastActivity","Date","toISOString","set","info","clientsCount","size","emit","serverTime","supportedEvents","get","add","swarmId","userId","has","join","timestamp","subscribersCount","requestSwarmStatusFromMCP","delete","swarmSubs","leave","agentId","action","forwardInterventionToClaudeFlow","to","fromClient","error","message","originalData","requestAgentStatusFromMCP","filters","status","command","result","executeClaudeFlowMCPCommand","params","executeRuvSwarmMCPCommand","broadcastToSwarm","event","type","debug","eventType","sendToClient","sockets","getConnectionStats","activeSwarms","totalSubscriptions","Array","from","values","reduce","sum","subs","totalConnections","averageSubscriptionsPerSwarm","swarmStatus","source","ruvSwarmStatus","verbose","ruvError","claudeFlowResult","ruvSwarmResult","Promise","allSettled","filter","responses","claudeFlowData","value","ruvSwarmData","intervention","task","strategy","priority","metadata","humanIntervention","targetAgent","interventionId","taskId","mcpResponse","Error","agents","tasks","active","completed","failed","now","topology","performance","efficiency","memory","usage","capabilities","getActiveSwarms","keys","getSwarmClients"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../src/web/websocket/websocket-manager.ts"],"names":["MESSAGE_SCHEMAS","type","required","validate","data","swarmId","length","userId","message","action","agentId","JSON","stringify","allowedCommands","command","includes","WebSocketManager","connections","Map","swarmSubscriptions","rateLimiting","RATE_LIMIT_WINDOW","RATE_LIMIT_MAX_REQUESTS","ALLOWED_ORIGINS","io","logger","setupSecurityMiddleware","setupSocketHandlers","use","socket","next","origin","handshake","headers","warn","socketId","id","ip","address","Error","validateMessage","messageType","schema","field","checkRateLimit","now","Date","rateLimitEntry","get","set","count","lastReset","window","on","handleNewConnection","emit","handleJoinSwarm","handleLeaveSwarm","handleHumanIntervention","handleStatusRequest","filterConfig","handleFilterUpdate","handleClaudeFlowCommand","handleRuvSwarmCommand","handleDisconnection","connection","joinedSwarms","Set","lastActivity","toISOString","info","clientsCount","size","serverTime","supportedEvents","add","has","join","timestamp","subscribersCount","requestSwarmStatusFromMCP","delete","swarmSubs","leave","forwardInterventionToClaudeFlow","to","fromClient","error","originalData","requestAgentStatusFromMCP","filters","status","result","executeClaudeFlowMCPCommand","params","executeRuvSwarmMCPCommand","broadcastToSwarm","event","debug","eventType","sendToClient","sockets","getConnectionStats","activeSwarms","totalSubscriptions","Array","from","values","reduce","sum","subs","totalConnections","averageSubscriptionsPerSwarm","swarmStatus","source","ruvSwarmStatus","verbose","ruvError","claudeFlowResult","ruvSwarmResult","Promise","allSettled","filter","responses","claudeFlowData","value","ruvSwarmData","intervention","task","strategy","priority","metadata","humanIntervention","targetAgent","interventionId","taskId","mcpResponse","agents","tasks","active","completed","failed","topology","performance","efficiency","memory","usage","capabilities","getActiveSwarms","keys","getSwarmClients"],"mappings":"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"}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# Agent Performance Guidelines - WSL Windows Paths
|
|
2
|
+
|
|
3
|
+
## 🚨 CRITICAL: Avoid `find` on Windows Paths
|
|
4
|
+
|
|
5
|
+
**Problem:** Running `find` on `/mnt/c/` paths is extremely slow in WSL (2-10 seconds per command)
|
|
6
|
+
|
|
7
|
+
**Impact:**
|
|
8
|
+
- 3 agents running `find` concurrently = 6-30 seconds
|
|
9
|
+
- Memory accumulation from buffered output
|
|
10
|
+
- Agents stuck in "Waiting..." state
|
|
11
|
+
|
|
12
|
+
## ✅ Use These Instead
|
|
13
|
+
|
|
14
|
+
### ❌ DON'T USE
|
|
15
|
+
```bash
|
|
16
|
+
find /mnt/c/Users/masha/Documents/claude-flow-novice -type f -name "*.test.*"
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
### ✅ USE CLAUDE CODE GLOB TOOL
|
|
20
|
+
```javascript
|
|
21
|
+
Glob("**/*.test.*") // Fast, uses native file system
|
|
22
|
+
Glob("**/*.spec.*")
|
|
23
|
+
Glob("**/Dockerfile")
|
|
24
|
+
Glob("**/*.{yml,yaml}")
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### ✅ OR USE `fd` (if installed)
|
|
28
|
+
```bash
|
|
29
|
+
fd -e test.js // 10x faster than find
|
|
30
|
+
fd -e spec.ts
|
|
31
|
+
fd Dockerfile
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### ✅ OR USE `git ls-files` (for tracked files)
|
|
35
|
+
```bash
|
|
36
|
+
git ls-files '*.test.*' // Instant (uses git index)
|
|
37
|
+
git ls-files '*.spec.*'
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Performance Comparison
|
|
41
|
+
|
|
42
|
+
| Tool | Time | Memory | Use Case |
|
|
43
|
+
|------|------|--------|----------|
|
|
44
|
+
| `find /mnt/c/...` | 2-10s | High | ❌ Avoid on WSL |
|
|
45
|
+
| `Glob("**/*")` | <100ms | Low | ✅ Best for agents |
|
|
46
|
+
| `fd -e test.js` | 200ms | Low | ✅ Good alternative |
|
|
47
|
+
| `git ls-files` | <50ms | Low | ✅ For tracked files only |
|
|
48
|
+
|
|
49
|
+
## Agent Best Practices
|
|
50
|
+
|
|
51
|
+
1. **Use Glob tool** for file discovery (not Bash find)
|
|
52
|
+
2. **Batch operations** in single message (not sequential)
|
|
53
|
+
3. **Read with limits** (`Read(file, {limit: 100})`) for large files
|
|
54
|
+
4. **Avoid recursive operations** when possible
|
|
55
|
+
|
|
56
|
+
## Example: Security Audit Pattern
|
|
57
|
+
|
|
58
|
+
### ❌ Slow (causes memory leak)
|
|
59
|
+
```bash
|
|
60
|
+
find /mnt/c/.../claude-flow-novice -type f -name "*.test.*" -o -name "*.spec.*" | grep security
|
|
61
|
+
find /mnt/c/.../claude-flow-novice -type f -name "Dockerfile"
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### ✅ Fast (proper approach)
|
|
65
|
+
```javascript
|
|
66
|
+
[Single Message]:
|
|
67
|
+
Glob("**/*.{test,spec}.*") // Get test files
|
|
68
|
+
Glob("**/Dockerfile") // Get Dockerfiles
|
|
69
|
+
Read(files[0], {limit: 100}) // Read with limits
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Memory Leak Prevention
|
|
73
|
+
|
|
74
|
+
- **Limit to 2-3 agents** per batch (not 6+)
|
|
75
|
+
- **Use Glob instead of find** (100x faster)
|
|
76
|
+
- **Read files with limits** (not full files)
|
|
77
|
+
- **Kill stuck processes**: `pkill -f "find /mnt/c"`
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
**If agents are stuck in "Waiting...":**
|
|
82
|
+
```bash
|
|
83
|
+
# Check for stuck find processes
|
|
84
|
+
ps aux | grep "find /mnt/c" | grep -v grep
|
|
85
|
+
|
|
86
|
+
# Kill them
|
|
87
|
+
pkill -f "find /mnt/c"
|
|
88
|
+
```
|
package/CLAUDE.md
CHANGED
|
@@ -33,7 +33,33 @@
|
|
|
33
33
|
- Refactoring or optimization work
|
|
34
34
|
- ANY feature development (even "simple" ones)
|
|
35
35
|
|
|
36
|
-
## 🚨 CRITICAL:
|
|
36
|
+
## 🚨 CRITICAL: Memory Leak Prevention (WSL/Windows)
|
|
37
|
+
|
|
38
|
+
**NEVER use `find` on Windows paths** - causes catastrophic memory leaks in WSL.
|
|
39
|
+
|
|
40
|
+
### 🔴 FORBIDDEN COMMANDS (MEMORY BOMBS)
|
|
41
|
+
```bash
|
|
42
|
+
# ❌ NEVER USE - Causes heap out of memory crash
|
|
43
|
+
find /mnt/c/Users/... -type f -name "*.test.*"
|
|
44
|
+
find /mnt/c/... -name "*.js"
|
|
45
|
+
find . -type f # On Windows paths via WSL
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
**Why:** `find` on `/mnt/c/` takes 2-10 seconds per command, buffers output in memory, and causes heap exhaustion with multiple concurrent agents.
|
|
49
|
+
|
|
50
|
+
### ✅ USE THESE INSTEAD
|
|
51
|
+
```javascript
|
|
52
|
+
// FAST: Use Glob tool (<100ms, minimal memory)
|
|
53
|
+
Glob("**/*.test.*")
|
|
54
|
+
Glob("**/*.spec.*")
|
|
55
|
+
Glob("**/Dockerfile")
|
|
56
|
+
Glob("**/*.{yml,yaml}")
|
|
57
|
+
|
|
58
|
+
// OR: Use git ls-files for tracked files (<50ms)
|
|
59
|
+
git ls-files '*.test.*'
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### 🚨 CRITICAL: Safe Test Execution
|
|
37
63
|
|
|
38
64
|
**NEVER run tests inside agents** - causes memory leaks from orphaned processes.
|
|
39
65
|
|
|
@@ -50,14 +76,16 @@ pkill -f vitest; pkill -f "npm test"
|
|
|
50
76
|
```
|
|
51
77
|
|
|
52
78
|
### Forbidden:
|
|
79
|
+
- ❌ `find /mnt/c/...` - 2-10s per command, memory bomb on WSL
|
|
53
80
|
- ❌ `Task("agent", "run npm test", "type")` - spawns orphaned process
|
|
54
81
|
- ❌ Multiple agents running tests concurrently - 3x memory usage
|
|
55
82
|
- ❌ Long-running test commands without timeout cleanup
|
|
56
83
|
|
|
57
84
|
### Memory Impact:
|
|
85
|
+
- Each `find /mnt/c/`: 2-10 seconds + 50-200MB buffered output
|
|
58
86
|
- Each test run: 65MB+ heap
|
|
59
|
-
- Concurrent
|
|
60
|
-
-
|
|
87
|
+
- Concurrent operations: Memory × agent_count
|
|
88
|
+
- Result: Heap out of memory crash (19GB+ usage)
|
|
61
89
|
### Agent Requirements by Task Complexity
|
|
62
90
|
|
|
63
91
|
| Task Size | Steps | Agent Count | Example Team Composition |
|
|
@@ -390,6 +418,35 @@ claude mcp add claude-flow-novice npx claude-flow-novice mcp start
|
|
|
390
418
|
}
|
|
391
419
|
```
|
|
392
420
|
|
|
421
|
+
**🚨 MANDATORY: Post-Edit Hook Execution**
|
|
422
|
+
|
|
423
|
+
**CRITICAL**: Every primary swarm agent MUST run the post-edit-pipeline hook after EVERY file edit:
|
|
424
|
+
|
|
425
|
+
```bash
|
|
426
|
+
# REQUIRED after each file modification
|
|
427
|
+
node config/hooks/post-edit-pipeline.js "[FILE_PATH]" --memory-key "swarm/[agent]/[step]"
|
|
428
|
+
```
|
|
429
|
+
|
|
430
|
+
**Agent Instructions Template:**
|
|
431
|
+
```
|
|
432
|
+
Task("Agent Name", `
|
|
433
|
+
Your implementation task here...
|
|
434
|
+
|
|
435
|
+
MANDATORY: After EVERY file edit, run:
|
|
436
|
+
node config/hooks/post-edit-pipeline.js "[FILE_PATH]" --memory-key "swarm/[agent-name]/step-[N]"
|
|
437
|
+
|
|
438
|
+
Report confidence score when complete.
|
|
439
|
+
`, "agent-type")
|
|
440
|
+
```
|
|
441
|
+
|
|
442
|
+
**Post-Edit Hook Benefits:**
|
|
443
|
+
- Real-time validation (formatting, linting, type checking)
|
|
444
|
+
- Security scanning (hardcoded credentials, XSS, eval())
|
|
445
|
+
- Single-file testing (1-5s vs 10-60s full suite)
|
|
446
|
+
- TDD compliance detection (Red-Green-Refactor phases)
|
|
447
|
+
- Rust quality checks (unwrap/expect/panic with line numbers)
|
|
448
|
+
- Coverage tracking (Jest, pytest, cargo-tarpaulin)
|
|
449
|
+
|
|
393
450
|
**Confidence Score Interpretation:**
|
|
394
451
|
- **0.90-1.00**: Excellent - production ready
|
|
395
452
|
- **0.75-0.89**: Good - minor improvements possible
|