claude-flow-novice 1.6.3 → 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.json +12 -2
- package/.claude/settings.local.json +4 -2
- 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/index.js +3 -0
- package/.claude-flow-novice/dist/src/coordination/index.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/coordination/v1-transparency/interfaces/v1-transparency-system.js +12 -0
- package/.claude-flow-novice/dist/src/coordination/v1-transparency/interfaces/v1-transparency-system.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v1-transparency/v1-to-v2-bridge.js +433 -0
- package/.claude-flow-novice/dist/src/coordination/v1-transparency/v1-to-v2-bridge.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v1-transparency/v1-transparency-adapter.js +1468 -0
- package/.claude-flow-novice/dist/src/coordination/v1-transparency/v1-transparency-adapter.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/monitoring/apm/apm-integration.js +5 -0
- package/.claude-flow-novice/dist/src/monitoring/apm/apm-integration.js.map +1 -1
- package/.claude-flow-novice/dist/src/providers/provider-manager.js +41 -6
- package/.claude-flow-novice/dist/src/providers/provider-manager.js.map +1 -1
- package/.claude-flow-novice/dist/src/providers/tiered-router.js +9 -17
- package/.claude-flow-novice/dist/src/providers/tiered-router.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 +0 -0
- package/.claude-flow-novice/metrics.db-shm +0 -0
- package/.claude-flow-novice/metrics.db-wal +0 -0
- package/CLAUDE.md +72 -0
- package/config/hooks/post-edit-pipeline.js +68 -118
- package/config/hooks/pre-tool-memory-safety.js +209 -0
- package/package.json +7 -4
- package/scripts/cleanup-idle-sessions.sh +59 -0
- package/scripts/monitoring/alert-monitor.sh +220 -0
- package/scripts/monitoring/view-alerts.sh +307 -0
- package/scripts/test-provider-routing.cjs +7 -9
- package/scripts/test-zai-api.cjs +2 -2
- package/src/slash-commands/parse-epic.js +1 -1
- package/wiki/Provider-Routing.md +57 -69
- package/MEMORY_LEAK_ROOT_CAUSE.md +0 -149
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { promises as fs } from 'fs';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
import { Command } from 'commander';
|
|
5
|
+
import chalk from 'chalk';
|
|
6
|
+
import { EpicParser } from '../../parsers/epic-parser.js';
|
|
7
|
+
export const parseEpicCommand = new Command().name('parse-epic').description('Parse epic markdown files into structured JSON configuration').argument('<epic-directory>', 'Path to epic directory containing EPIC_OVERVIEW.md and phase files').option('-o, --output <file>', 'Output file path (default: <epic-name>-config.json)').option('-v, --validate', 'Run validation and report errors without generating output').action(async (epicDirectory, options)=>{
|
|
8
|
+
await executeParseEpic(epicDirectory, options);
|
|
9
|
+
});
|
|
10
|
+
async function executeParseEpic(epicDirectory, options) {
|
|
11
|
+
console.log(chalk.cyan.bold('🔍 Epic Parser - Natural Language to Structured JSON\n'));
|
|
12
|
+
try {
|
|
13
|
+
// Resolve epic directory path
|
|
14
|
+
const absoluteEpicDir = path.resolve(process.cwd(), epicDirectory);
|
|
15
|
+
// Display directory info
|
|
16
|
+
console.log(chalk.white('📂 Epic directory:'), chalk.gray(absoluteEpicDir));
|
|
17
|
+
// Check if directory exists
|
|
18
|
+
try {
|
|
19
|
+
await fs.access(absoluteEpicDir);
|
|
20
|
+
} catch {
|
|
21
|
+
console.error(chalk.red('✗ Epic directory not found:'), absoluteEpicDir);
|
|
22
|
+
process.exit(1);
|
|
23
|
+
}
|
|
24
|
+
// Check for overview file
|
|
25
|
+
const overviewPath = path.join(absoluteEpicDir, 'EPIC_OVERVIEW.md');
|
|
26
|
+
try {
|
|
27
|
+
await fs.access(overviewPath);
|
|
28
|
+
console.log(chalk.white('📄 Overview file:'), chalk.gray('EPIC_OVERVIEW.md'));
|
|
29
|
+
} catch {
|
|
30
|
+
console.error(chalk.red('✗ EPIC_OVERVIEW.md not found in directory'));
|
|
31
|
+
process.exit(1);
|
|
32
|
+
}
|
|
33
|
+
console.log(); // Empty line for spacing
|
|
34
|
+
// Initialize parser
|
|
35
|
+
const parser = new EpicParser({
|
|
36
|
+
epicDirectory: absoluteEpicDir
|
|
37
|
+
});
|
|
38
|
+
// Parse epic configuration
|
|
39
|
+
let epicConfig;
|
|
40
|
+
try {
|
|
41
|
+
epicConfig = parser.parse();
|
|
42
|
+
} catch (error) {
|
|
43
|
+
console.error(chalk.red('✗ Parsing failed:'));
|
|
44
|
+
console.error(chalk.red(error.message));
|
|
45
|
+
process.exit(1);
|
|
46
|
+
}
|
|
47
|
+
// Get validation result with stats
|
|
48
|
+
const validation = parser.getValidationResult();
|
|
49
|
+
// Display parsing results
|
|
50
|
+
if (validation.valid) {
|
|
51
|
+
console.log(chalk.green('✅ Parsed successfully:'));
|
|
52
|
+
console.log(chalk.white(' - Epic:'), chalk.cyan(epicConfig.epicId));
|
|
53
|
+
console.log(chalk.white(' - Phases:'), chalk.cyan(validation.stats?.totalPhases || 0));
|
|
54
|
+
console.log(chalk.white(' - Total Sprints:'), chalk.cyan(validation.stats?.totalSprints || 0));
|
|
55
|
+
console.log(chalk.white(' - Scope boundaries:'), chalk.green('✓'));
|
|
56
|
+
console.log(chalk.white(' - Dependencies:'), chalk.green('✓'));
|
|
57
|
+
if (validation.stats?.completedSprints) {
|
|
58
|
+
console.log(chalk.white(' - Completed:'), chalk.cyan(`${validation.stats.completedSprints}/${validation.stats.totalSprints}`));
|
|
59
|
+
}
|
|
60
|
+
if (validation.stats?.dependencyCount) {
|
|
61
|
+
console.log(chalk.white(' - Dependency count:'), chalk.cyan(validation.stats.dependencyCount));
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
console.log(); // Empty line
|
|
65
|
+
// Display warnings if any
|
|
66
|
+
if (validation.warnings.length > 0) {
|
|
67
|
+
console.log(chalk.yellow(`⚠️ ${validation.warnings.length} warning(s):`));
|
|
68
|
+
validation.warnings.forEach((warn)=>{
|
|
69
|
+
const location = warn.location ? ` (${warn.location.file})` : '';
|
|
70
|
+
console.log(chalk.yellow(` - [${warn.type}] ${warn.message}${location}`));
|
|
71
|
+
});
|
|
72
|
+
console.log(); // Empty line
|
|
73
|
+
}
|
|
74
|
+
// Validation-only mode
|
|
75
|
+
if (options.validate) {
|
|
76
|
+
if (validation.valid) {
|
|
77
|
+
console.log(chalk.green('✅ Validation: PASSED\n'));
|
|
78
|
+
process.exit(0);
|
|
79
|
+
} else {
|
|
80
|
+
console.log(chalk.red('✗ Validation: FAILED\n'));
|
|
81
|
+
console.error(chalk.red('Errors:'));
|
|
82
|
+
validation.errors.forEach((err)=>{
|
|
83
|
+
const location = err.location ? ` at ${err.location.file}` : '';
|
|
84
|
+
console.error(chalk.red(` - [${err.type}] ${err.message}${location}`));
|
|
85
|
+
});
|
|
86
|
+
process.exit(1);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// Generate output file path
|
|
90
|
+
const defaultOutputName = `${epicConfig.epicId}-config.json`;
|
|
91
|
+
const outputPath = options.output ? path.resolve(process.cwd(), options.output) : path.join(absoluteEpicDir, defaultOutputName);
|
|
92
|
+
// Write JSON to output file
|
|
93
|
+
try {
|
|
94
|
+
await fs.writeFile(outputPath, JSON.stringify(epicConfig, null, 2), 'utf-8');
|
|
95
|
+
const relativeOutput = path.relative(process.cwd(), outputPath);
|
|
96
|
+
console.log(chalk.white('📄 Output:'), chalk.cyan(relativeOutput));
|
|
97
|
+
} catch (error) {
|
|
98
|
+
console.error(chalk.red('✗ Failed to write output file:'), error.message);
|
|
99
|
+
process.exit(1);
|
|
100
|
+
}
|
|
101
|
+
// Final status
|
|
102
|
+
if (validation.valid) {
|
|
103
|
+
console.log(chalk.green('✅ Validation: PASSED\n'));
|
|
104
|
+
console.log(chalk.cyan('Ready for CFN Loop execution!'));
|
|
105
|
+
process.exit(0);
|
|
106
|
+
} else {
|
|
107
|
+
console.log(chalk.red('✗ Validation: FAILED (but config generated)\n'));
|
|
108
|
+
console.error(chalk.red('Errors:'));
|
|
109
|
+
validation.errors.forEach((err)=>{
|
|
110
|
+
const location = err.location ? ` at ${err.location.file}` : '';
|
|
111
|
+
console.error(chalk.red(` - [${err.type}] ${err.message}${location}`));
|
|
112
|
+
});
|
|
113
|
+
process.exit(1);
|
|
114
|
+
}
|
|
115
|
+
} catch (error) {
|
|
116
|
+
console.error(chalk.red('\n✗ Unexpected error:'), error.message);
|
|
117
|
+
if (error.stack) {
|
|
118
|
+
console.error(chalk.gray(error.stack));
|
|
119
|
+
}
|
|
120
|
+
process.exit(1);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
// CLI execution when run directly
|
|
124
|
+
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
125
|
+
parseEpicCommand.parse(process.argv);
|
|
126
|
+
}
|
|
127
|
+
export default parseEpicCommand;
|
|
128
|
+
|
|
129
|
+
//# sourceMappingURL=parse-epic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/cli/commands/parse-epic.ts"],"names":["promises","fs","path","Command","chalk","EpicParser","parseEpicCommand","name","description","argument","option","action","epicDirectory","options","executeParseEpic","console","log","cyan","bold","absoluteEpicDir","resolve","process","cwd","white","gray","access","error","red","exit","overviewPath","join","parser","epicConfig","parse","message","validation","getValidationResult","valid","green","epicId","stats","totalPhases","totalSprints","completedSprints","dependencyCount","warnings","length","yellow","forEach","warn","location","file","type","validate","errors","err","defaultOutputName","outputPath","output","writeFile","JSON","stringify","relativeOutput","relative","stack","url","argv"],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ import { Command } from 'commander';
|
|
|
9
9
|
import chalk from 'chalk';
|
|
10
10
|
import { logger } from '../core/logger.js';
|
|
11
11
|
import { configManager } from '../core/config.js';
|
|
12
|
+
import { parseEpicCommand } from './commands/parse-epic.js';
|
|
12
13
|
import { formatError, displayBanner, displayVersion } from './formatter.js';
|
|
13
14
|
import { startREPL } from './repl.js';
|
|
14
15
|
import { CompletionGenerator } from './completion.js';
|
|
@@ -49,6 +50,8 @@ const replCommand = new Command('repl').description('Start interactive REPL mode
|
|
|
49
50
|
await startREPL(options);
|
|
50
51
|
});
|
|
51
52
|
cli.addCommand(replCommand);
|
|
53
|
+
// Add parse-epic command
|
|
54
|
+
cli.addCommand(parseEpicCommand);
|
|
52
55
|
// Add version command
|
|
53
56
|
const versionCommand = new Command('version').description('Show detailed version information').option('--short', 'Show version number only').action(async (options)=>{
|
|
54
57
|
if (options.short) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/cli/index.ts"],"names":["Command","chalk","logger","configManager","formatError","displayBanner","displayVersion","startREPL","CompletionGenerator","VERSION","BUILD_DATE","cli","name","version","description","option","action","options","setupLogging","quiet","console","log","gray","replCommand","banner","addCommand","versionCommand","short","completionCommand","argument","shell","generator","generate","install","handleError","error","formatted","json","JSON","stringify","message","timestamp","Date","toISOString","red","bold","process","env","verbose","exit","logLevel","configure","level","format","destination","config","load","loadDefault","profile","applyProfile","warn","setupSignalHandlers","gracefulShutdown","Deno","addSignalListener","globalOptions","args","includes","noColor","parse"],"mappings":";AACA;;;CAGC,GAED,yEAAyE;AACzE,OAAO,kBAAkB;AACzB,mEAAmE;AACnE,SAASA,OAAO,QAAQ,YAAY;AACpC,OAAOC,WAAW,QAAQ;AAC1B,SAASC,MAAM,QAAQ,oBAAoB;AAC3C,SAASC,aAAa,QAAQ,oBAAoB;AAYlD,SAASC,WAAW,EAAEC,aAAa,EAAEC,cAAc,QAAQ,iBAAiB;AAC5E,SAASC,SAAS,QAAQ,YAAY;AACtC,SAASC,mBAAmB,QAAQ,kBAAkB;AACtD,SAASC,OAAO,EAAEC,UAAU,QAAQ,qBAAqB;AAEzD,mBAAmB;AACnB,MAAMC,MAAM,
|
|
1
|
+
{"version":3,"sources":["../../../../src/cli/index.ts"],"names":["Command","chalk","logger","configManager","parseEpicCommand","formatError","displayBanner","displayVersion","startREPL","CompletionGenerator","VERSION","BUILD_DATE","cli","name","version","description","option","action","options","setupLogging","quiet","console","log","gray","replCommand","banner","addCommand","versionCommand","short","completionCommand","argument","shell","generator","generate","install","handleError","error","formatted","json","JSON","stringify","message","timestamp","Date","toISOString","red","bold","process","env","verbose","exit","logLevel","configure","level","format","destination","config","load","loadDefault","profile","applyProfile","warn","setupSignalHandlers","gracefulShutdown","Deno","addSignalListener","globalOptions","args","includes","noColor","parse"],"mappings":"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"}
|
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI Epic Parser Utility
|
|
3
|
+
*
|
|
4
|
+
* Lightweight wrapper around the core epic parser for CLI-specific use cases.
|
|
5
|
+
* Converts markdown epic files to JSON configuration with validation.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Parse OVERVIEW.md for epic metadata
|
|
9
|
+
* - Parse phase-*.md files for phase details and sprints
|
|
10
|
+
* - Parse dependencies.md for cross-phase requirements
|
|
11
|
+
* - Validate structure and dependencies
|
|
12
|
+
* - Generate JSON output
|
|
13
|
+
*/ import * as fs from "fs";
|
|
14
|
+
import * as path from "path";
|
|
15
|
+
import { EpicParser } from "../../parsers/epic-parser.js";
|
|
16
|
+
// ============================================================================
|
|
17
|
+
// CLI Parser Functions
|
|
18
|
+
// ============================================================================
|
|
19
|
+
/**
|
|
20
|
+
* Parse epic markdown files to JSON configuration
|
|
21
|
+
*
|
|
22
|
+
* @param options - Parser configuration options
|
|
23
|
+
* @returns Parsing result with config, errors, warnings, and stats
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```typescript
|
|
27
|
+
* const result = await parseEpic({
|
|
28
|
+
* epicDirectory: './planning/example-epic',
|
|
29
|
+
* outputFile: './epic-config.json',
|
|
30
|
+
* verbose: true
|
|
31
|
+
* });
|
|
32
|
+
*
|
|
33
|
+
* if (result.success) {
|
|
34
|
+
* console.log(`Parsed ${result.stats.totalPhases} phases`);
|
|
35
|
+
* }
|
|
36
|
+
* ```
|
|
37
|
+
*/ export async function parseEpic(options) {
|
|
38
|
+
try {
|
|
39
|
+
const parser = new EpicParser({
|
|
40
|
+
epicDirectory: options.epicDirectory,
|
|
41
|
+
overviewFile: options.overviewFile
|
|
42
|
+
});
|
|
43
|
+
// Parse epic configuration
|
|
44
|
+
const config = parser.parse();
|
|
45
|
+
const validation = parser.getValidationResult();
|
|
46
|
+
// Log verbose output if requested
|
|
47
|
+
if (options.verbose) {
|
|
48
|
+
logParsingProgress(validation);
|
|
49
|
+
}
|
|
50
|
+
// Write output file if requested and parsing succeeded
|
|
51
|
+
if (options.outputFile && validation.valid) {
|
|
52
|
+
const absolutePath = path.resolve(options.outputFile);
|
|
53
|
+
fs.writeFileSync(absolutePath, JSON.stringify(config, null, 2), "utf-8");
|
|
54
|
+
if (options.verbose) {
|
|
55
|
+
console.log(`✅ Epic configuration saved: ${absolutePath}`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return {
|
|
59
|
+
success: validation.valid,
|
|
60
|
+
config: validation.valid ? config : undefined,
|
|
61
|
+
errors: validation.errors,
|
|
62
|
+
warnings: validation.warnings,
|
|
63
|
+
stats: validation.stats
|
|
64
|
+
};
|
|
65
|
+
} catch (error) {
|
|
66
|
+
const parseError = {
|
|
67
|
+
type: "parsing_error",
|
|
68
|
+
message: `Failed to parse epic: ${error instanceof Error ? error.message : String(error)}`,
|
|
69
|
+
severity: "error",
|
|
70
|
+
details: error
|
|
71
|
+
};
|
|
72
|
+
return {
|
|
73
|
+
success: false,
|
|
74
|
+
errors: [
|
|
75
|
+
parseError
|
|
76
|
+
],
|
|
77
|
+
warnings: []
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Validate epic markdown structure without generating config
|
|
83
|
+
*
|
|
84
|
+
* @param epicDirectory - Path to epic directory
|
|
85
|
+
* @param verbose - Enable verbose logging
|
|
86
|
+
* @returns Validation result
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```typescript
|
|
90
|
+
* const result = await validateEpic('./planning/example-epic', true);
|
|
91
|
+
* if (!result.success) {
|
|
92
|
+
* console.error('Validation errors:', result.errors);
|
|
93
|
+
* }
|
|
94
|
+
* ```
|
|
95
|
+
*/ export async function validateEpic(epicDirectory, verbose = false) {
|
|
96
|
+
return parseEpic({
|
|
97
|
+
epicDirectory,
|
|
98
|
+
validateOnly: true,
|
|
99
|
+
verbose
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Generate epic configuration JSON from markdown files
|
|
104
|
+
*
|
|
105
|
+
* @param epicDirectory - Path to epic directory
|
|
106
|
+
* @param outputPath - Optional output file path (defaults to epic-config.json in epic directory)
|
|
107
|
+
* @returns Parsing result
|
|
108
|
+
*
|
|
109
|
+
* @example
|
|
110
|
+
* ```typescript
|
|
111
|
+
* const result = await generateEpicConfig(
|
|
112
|
+
* './planning/example-epic',
|
|
113
|
+
* './config/epic.json'
|
|
114
|
+
* );
|
|
115
|
+
* ```
|
|
116
|
+
*/ export async function generateEpicConfig(epicDirectory, outputPath) {
|
|
117
|
+
const outputFile = outputPath || path.join(epicDirectory, "epic-config.json");
|
|
118
|
+
return parseEpic({
|
|
119
|
+
epicDirectory,
|
|
120
|
+
outputFile,
|
|
121
|
+
verbose: true
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Quick parse - returns config or throws error
|
|
126
|
+
*
|
|
127
|
+
* @param epicDirectory - Path to epic directory
|
|
128
|
+
* @returns Epic configuration
|
|
129
|
+
* @throws Error if parsing fails
|
|
130
|
+
*
|
|
131
|
+
* @example
|
|
132
|
+
* ```typescript
|
|
133
|
+
* try {
|
|
134
|
+
* const config = await parseEpicOrThrow('./planning/example-epic');
|
|
135
|
+
* console.log(`Epic: ${config.name}`);
|
|
136
|
+
* } catch (error) {
|
|
137
|
+
* console.error('Parse failed:', error);
|
|
138
|
+
* }
|
|
139
|
+
* ```
|
|
140
|
+
*/ export async function parseEpicOrThrow(epicDirectory) {
|
|
141
|
+
const result = await parseEpic({
|
|
142
|
+
epicDirectory
|
|
143
|
+
});
|
|
144
|
+
if (!result.success || !result.config) {
|
|
145
|
+
const errorMessages = result.errors.map((e)=>`[${e.type}] ${e.message}`).join("\n");
|
|
146
|
+
throw new Error(`Epic parsing failed:\n${errorMessages}`);
|
|
147
|
+
}
|
|
148
|
+
return result.config;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Get epic summary statistics without full parsing
|
|
152
|
+
*
|
|
153
|
+
* @param epicDirectory - Path to epic directory
|
|
154
|
+
* @returns Quick stats about the epic
|
|
155
|
+
*/ export async function getEpicStats(epicDirectory) {
|
|
156
|
+
const result = await parseEpic({
|
|
157
|
+
epicDirectory,
|
|
158
|
+
validateOnly: true
|
|
159
|
+
});
|
|
160
|
+
if (!result.success || !result.config) {
|
|
161
|
+
throw new Error("Failed to get epic stats");
|
|
162
|
+
}
|
|
163
|
+
const totalSprints = result.stats?.totalSprints || 0;
|
|
164
|
+
const completedSprints = result.stats?.completedSprints || 0;
|
|
165
|
+
const completionPercentage = totalSprints > 0 ? completedSprints / totalSprints * 100 : 0;
|
|
166
|
+
return {
|
|
167
|
+
name: result.config.name,
|
|
168
|
+
phaseCount: result.stats?.totalPhases || 0,
|
|
169
|
+
sprintCount: totalSprints,
|
|
170
|
+
completionPercentage: Math.round(completionPercentage)
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
// ============================================================================
|
|
174
|
+
// Helper Functions
|
|
175
|
+
// ============================================================================
|
|
176
|
+
/**
|
|
177
|
+
* Log parsing progress and results
|
|
178
|
+
*/ function logParsingProgress(validation) {
|
|
179
|
+
if (validation.valid) {
|
|
180
|
+
console.log("✅ Epic parsing completed successfully");
|
|
181
|
+
} else {
|
|
182
|
+
console.error(`❌ Epic parsing failed with ${validation.errors.length} error(s)`);
|
|
183
|
+
validation.errors.forEach((err)=>{
|
|
184
|
+
const location = err.location ? ` at ${err.location.file}${err.location.line ? `:${err.location.line}` : ""}` : "";
|
|
185
|
+
console.error(` - [${err.type}] ${err.message}${location}`);
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
// Display warnings
|
|
189
|
+
if (validation.warnings.length > 0) {
|
|
190
|
+
console.warn(`⚠️ ${validation.warnings.length} warning(s):`);
|
|
191
|
+
validation.warnings.forEach((warn)=>{
|
|
192
|
+
const location = warn.location ? ` at ${warn.location.file}${warn.location.line ? `:${warn.location.line}` : ""}` : "";
|
|
193
|
+
console.warn(` - [${warn.type}] ${warn.message}${location}`);
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
// Display stats
|
|
197
|
+
if (validation.stats) {
|
|
198
|
+
console.log("\n📊 Epic Statistics:");
|
|
199
|
+
console.log(` - Phases: ${validation.stats.totalPhases}`);
|
|
200
|
+
console.log(` - Sprints: ${validation.stats.totalSprints}`);
|
|
201
|
+
console.log(` - Completed: ${validation.stats.completedSprints}/${validation.stats.totalSprints} (${Math.round(validation.stats.completedSprints / validation.stats.totalSprints * 100)}%)`);
|
|
202
|
+
console.log(` - Dependencies: ${validation.stats.dependencyCount}`);
|
|
203
|
+
if (validation.stats.cyclesDetected > 0) {
|
|
204
|
+
console.warn(` - ⚠️ Dependency cycles detected: ${validation.stats.cyclesDetected}`);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Format errors for CLI display
|
|
210
|
+
*/ export function formatErrors(errors) {
|
|
211
|
+
return errors.map((err)=>{
|
|
212
|
+
const location = err.location ? ` at ${err.location.file}${err.location.line ? `:${err.location.line}` : ""}` : "";
|
|
213
|
+
return `[${err.severity.toUpperCase()}] [${err.type}] ${err.message}${location}`;
|
|
214
|
+
}).join("\n");
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Check if epic directory exists and has required files
|
|
218
|
+
*/ export function validateEpicDirectory(epicDirectory) {
|
|
219
|
+
const errors = [];
|
|
220
|
+
// Check if directory exists
|
|
221
|
+
if (!fs.existsSync(epicDirectory)) {
|
|
222
|
+
errors.push(`Epic directory not found: ${epicDirectory}`);
|
|
223
|
+
return {
|
|
224
|
+
valid: false,
|
|
225
|
+
errors
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
// Check if it's a directory
|
|
229
|
+
const stat = fs.statSync(epicDirectory);
|
|
230
|
+
if (!stat.isDirectory()) {
|
|
231
|
+
errors.push(`Path is not a directory: ${epicDirectory}`);
|
|
232
|
+
return {
|
|
233
|
+
valid: false,
|
|
234
|
+
errors
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
// Check for EPIC_OVERVIEW.md
|
|
238
|
+
const overviewPath = path.join(epicDirectory, "EPIC_OVERVIEW.md");
|
|
239
|
+
if (!fs.existsSync(overviewPath)) {
|
|
240
|
+
errors.push(`Missing EPIC_OVERVIEW.md in ${epicDirectory}`);
|
|
241
|
+
}
|
|
242
|
+
// Check for at least one phase file
|
|
243
|
+
const files = fs.readdirSync(epicDirectory);
|
|
244
|
+
const phaseFiles = files.filter((f)=>f.startsWith("phase-") && f.endsWith(".md"));
|
|
245
|
+
if (phaseFiles.length === 0) {
|
|
246
|
+
errors.push(`No phase-*.md files found in ${epicDirectory}`);
|
|
247
|
+
}
|
|
248
|
+
return {
|
|
249
|
+
valid: errors.length === 0,
|
|
250
|
+
errors
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
// ============================================================================
|
|
254
|
+
// Default Export
|
|
255
|
+
// ============================================================================
|
|
256
|
+
export default {
|
|
257
|
+
parseEpic,
|
|
258
|
+
validateEpic,
|
|
259
|
+
generateEpicConfig,
|
|
260
|
+
parseEpicOrThrow,
|
|
261
|
+
getEpicStats,
|
|
262
|
+
validateEpicDirectory,
|
|
263
|
+
formatErrors
|
|
264
|
+
};
|
|
265
|
+
|
|
266
|
+
//# sourceMappingURL=epic-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/cli/utils/epic-parser.ts"],"names":["fs","path","EpicParser","parseEpic","options","parser","epicDirectory","overviewFile","config","parse","validation","getValidationResult","verbose","logParsingProgress","outputFile","valid","absolutePath","resolve","writeFileSync","JSON","stringify","console","log","success","undefined","errors","warnings","stats","error","parseError","type","message","Error","String","severity","details","validateEpic","validateOnly","generateEpicConfig","outputPath","join","parseEpicOrThrow","result","errorMessages","map","e","getEpicStats","totalSprints","completedSprints","completionPercentage","name","phaseCount","totalPhases","sprintCount","Math","round","length","forEach","err","location","file","line","warn","dependencyCount","cyclesDetected","formatErrors","toUpperCase","validateEpicDirectory","existsSync","push","stat","statSync","isDirectory","overviewPath","files","readdirSync","phaseFiles","filter","f","startsWith","endsWith"],"mappings":"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"}
|