claude-flow-novice 2.0.4 → 2.0.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/dist/src/cli/commands/guidance.js +668 -487
- package/dist/src/cli/commands/index-validate.js +29 -18
- package/dist/src/cli/commands/mcp-troubleshoot.js +282 -230
- package/dist/src/cli/commands/neural-goal-init.js +125 -92
- package/dist/src/cli/commands/swarm-exec.js +393 -317
- package/dist/src/cli/commands/validate-framework.js +1100 -983
- package/dist/src/cli/commands/validate.js +223 -144
- package/dist/src/cli/main.js +1 -1
- package/dist/src/cli/simple-commands/__tests__/agent.test.js +277 -265
- package/dist/src/cli/simple-commands/__tests__/memory.test.js +7 -6
- package/dist/src/cli/simple-commands/__tests__/swarm.test.js +356 -373
- package/dist/src/cli/simple-commands/__tests__/task.test.js +7 -6
- package/dist/src/cli/simple-commands/agent.js +193 -157
- package/dist/src/cli/simple-commands/analysis.js +446 -336
- package/dist/src/cli/simple-commands/automation-executor.js +1339 -1095
- package/dist/src/cli/simple-commands/automation.js +469 -481
- package/dist/src/cli/simple-commands/batch-manager.js +313 -261
- package/dist/src/cli/simple-commands/claude-telemetry.js +267 -241
- package/dist/src/cli/simple-commands/claude-track.js +90 -68
- package/dist/src/cli/simple-commands/concurrent-display.js +320 -266
- package/dist/src/cli/simple-commands/config.js +290 -245
- package/dist/src/cli/simple-commands/coordination.js +234 -182
- package/dist/src/cli/simple-commands/enhanced-ui-views.js +615 -812
- package/dist/src/cli/simple-commands/enhanced-webui-complete.js +981 -922
- package/dist/src/cli/simple-commands/fix-hook-variables.js +294 -274
- package/dist/src/cli/simple-commands/github/gh-coordinator.js +457 -378
- package/dist/src/cli/simple-commands/github/github-api.js +574 -535
- package/dist/src/cli/simple-commands/github/init.js +303 -276
- package/dist/src/cli/simple-commands/github.js +247 -222
- package/dist/src/cli/simple-commands/goal.js +63 -51
- package/dist/src/cli/simple-commands/hive-mind/auto-save-middleware.js +278 -208
- package/dist/src/cli/simple-commands/hive-mind/communication.js +696 -601
- package/dist/src/cli/simple-commands/hive-mind/core.js +979 -907
- package/dist/src/cli/simple-commands/hive-mind/db-optimizer.js +655 -406
- package/dist/src/cli/simple-commands/hive-mind/mcp-wrapper.js +1245 -1125
- package/dist/src/cli/simple-commands/hive-mind/memory.js +1090 -854
- package/dist/src/cli/simple-commands/hive-mind/performance-optimizer.js +574 -459
- package/dist/src/cli/simple-commands/hive-mind/performance-test.js +347 -263
- package/dist/src/cli/simple-commands/hive-mind/queen.js +768 -727
- package/dist/src/cli/simple-commands/hive-mind/session-manager.js +1049 -745
- package/dist/src/cli/simple-commands/hive-mind-optimize.js +283 -227
- package/dist/src/cli/simple-commands/hive-mind-wizard.js +217 -174
- package/dist/src/cli/simple-commands/hive-mind.js +2282 -1841
- package/dist/src/cli/simple-commands/hive.js +79 -90
- package/dist/src/cli/simple-commands/hook-safety.js +521 -431
- package/dist/src/cli/simple-commands/hooks/session-start-soul.js +254 -203
- package/dist/src/cli/simple-commands/hooks.js +1204 -1064
- package/dist/src/cli/simple-commands/init/agent-copier.js +319 -294
- package/dist/src/cli/simple-commands/init/batch-init.js +562 -496
- package/dist/src/cli/simple-commands/init/claude-commands/claude-flow-commands.js +19 -13
- package/dist/src/cli/simple-commands/init/claude-commands/optimized-claude-flow-commands.js +19 -13
- package/dist/src/cli/simple-commands/init/claude-commands/optimized-slash-commands.js +88 -61
- package/dist/src/cli/simple-commands/init/claude-commands/optimized-sparc-commands.js +150 -125
- package/dist/src/cli/simple-commands/init/claude-commands/slash-commands.js +49 -42
- package/dist/src/cli/simple-commands/init/claude-commands/sparc-commands.js +61 -43
- package/dist/src/cli/simple-commands/init/copy-revised-templates.js +147 -141
- package/dist/src/cli/simple-commands/init/executable-wrapper.js +44 -31
- package/dist/src/cli/simple-commands/init/gitignore-updater.js +90 -64
- package/dist/src/cli/simple-commands/init/help.js +107 -104
- package/dist/src/cli/simple-commands/init/hive-mind-init.js +528 -509
- package/dist/src/cli/simple-commands/init/index.js +1759 -1510
- package/dist/src/cli/simple-commands/init/performance-monitor.js +317 -234
- package/dist/src/cli/simple-commands/init/rollback/backup-manager.js +504 -441
- package/dist/src/cli/simple-commands/init/rollback/index.js +364 -289
- package/dist/src/cli/simple-commands/init/rollback/recovery-manager.js +728 -652
- package/dist/src/cli/simple-commands/init/rollback/rollback-executor.js +481 -416
- package/dist/src/cli/simple-commands/init/rollback/state-tracker.js +448 -369
- package/dist/src/cli/simple-commands/init/sparc/roo-readme.js +2 -1
- package/dist/src/cli/simple-commands/init/sparc/roomodes-config.js +99 -122
- package/dist/src/cli/simple-commands/init/sparc/workflows.js +37 -32
- package/dist/src/cli/simple-commands/init/sparc-structure.js +62 -55
- package/dist/src/cli/simple-commands/init/template-copier.js +533 -421
- package/dist/src/cli/simple-commands/init/templates/coordination-md.js +6 -3
- package/dist/src/cli/simple-commands/init/templates/enhanced-templates.js +318 -344
- package/dist/src/cli/simple-commands/init/templates/github-safe-enhanced.js +218 -173
- package/dist/src/cli/simple-commands/init/templates/github-safe.js +75 -65
- package/dist/src/cli/simple-commands/init/templates/memory-bank-md.js +6 -3
- package/dist/src/cli/simple-commands/init/templates/readme-files.js +4 -2
- package/dist/src/cli/simple-commands/init/templates/safe-hook-patterns.js +230 -187
- package/dist/src/cli/simple-commands/init/templates/sparc-modes.js +80 -53
- package/dist/src/cli/simple-commands/init/templates/verification-claude-md.js +85 -101
- package/dist/src/cli/simple-commands/init/validation/config-validator.js +330 -283
- package/dist/src/cli/simple-commands/init/validation/health-checker.js +561 -495
- package/dist/src/cli/simple-commands/init/validation/index.js +358 -302
- package/dist/src/cli/simple-commands/init/validation/mode-validator.js +359 -308
- package/dist/src/cli/simple-commands/init/validation/post-init-validator.js +366 -389
- package/dist/src/cli/simple-commands/init/validation/pre-init-validator.js +268 -270
- package/dist/src/cli/simple-commands/init/validation/test-runner.js +447 -427
- package/dist/src/cli/simple-commands/init.js +2 -1
- package/dist/src/cli/simple-commands/mcp-health.js +158 -131
- package/dist/src/cli/simple-commands/mcp-integration-layer.js +634 -533
- package/dist/src/cli/simple-commands/mcp.js +400 -345
- package/dist/src/cli/simple-commands/memory-consolidation.js +537 -426
- package/dist/src/cli/simple-commands/memory.js +311 -247
- package/dist/src/cli/simple-commands/migrate-hooks.js +46 -39
- package/dist/src/cli/simple-commands/monitor.js +363 -294
- package/dist/src/cli/simple-commands/neural.js +65 -51
- package/dist/src/cli/simple-commands/pair-autofix-only.js +662 -538
- package/dist/src/cli/simple-commands/pair-basic.js +656 -528
- package/dist/src/cli/simple-commands/pair-old.js +543 -430
- package/dist/src/cli/simple-commands/pair-working.js +751 -615
- package/dist/src/cli/simple-commands/pair.js +751 -615
- package/dist/src/cli/simple-commands/performance-hooks.js +111 -83
- package/dist/src/cli/simple-commands/performance-metrics.js +433 -348
- package/dist/src/cli/simple-commands/process-ui-enhanced.js +787 -708
- package/dist/src/cli/simple-commands/process-ui.js +254 -230
- package/dist/src/cli/simple-commands/realtime-update-system.js +611 -525
- package/dist/src/cli/simple-commands/sparc/architecture.js +1530 -1704
- package/dist/src/cli/simple-commands/sparc/commands.js +516 -438
- package/dist/src/cli/simple-commands/sparc/completion.js +1481 -1224
- package/dist/src/cli/simple-commands/sparc/coordinator.js +978 -913
- package/dist/src/cli/simple-commands/sparc/index.js +298 -241
- package/dist/src/cli/simple-commands/sparc/phase-base.js +390 -314
- package/dist/src/cli/simple-commands/sparc/pseudocode.js +869 -965
- package/dist/src/cli/simple-commands/sparc/refinement.js +1273 -980
- package/dist/src/cli/simple-commands/sparc/specification.js +645 -559
- package/dist/src/cli/simple-commands/sparc-modes/architect.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/ask.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/code.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/debug.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/devops.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/docs-writer.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/generic.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/index.js +55 -47
- package/dist/src/cli/simple-commands/sparc-modes/integration.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/mcp.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/monitoring.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/optimization.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/security-review.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/sparc-orchestrator.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/spec-pseudocode.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/supabase-admin.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/swarm.js +87 -101
- package/dist/src/cli/simple-commands/sparc-modes/tdd.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/tutorial.js +1 -1
- package/dist/src/cli/simple-commands/sparc.js +493 -465
- package/dist/src/cli/simple-commands/start-ui.js +132 -108
- package/dist/src/cli/simple-commands/start-wrapper.js +268 -240
- package/dist/src/cli/simple-commands/start.js +1 -1
- package/dist/src/cli/simple-commands/status.js +275 -254
- package/dist/src/cli/simple-commands/stream-chain-clean.js +171 -128
- package/dist/src/cli/simple-commands/stream-chain-fixed.js +82 -61
- package/dist/src/cli/simple-commands/stream-chain-real.js +331 -267
- package/dist/src/cli/simple-commands/stream-chain-working.js +263 -211
- package/dist/src/cli/simple-commands/stream-chain.js +318 -260
- package/dist/src/cli/simple-commands/stream-processor.js +315 -290
- package/dist/src/cli/simple-commands/swarm-executor.js +222 -189
- package/dist/src/cli/simple-commands/swarm-metrics-integration.js +300 -208
- package/dist/src/cli/simple-commands/swarm-ui.js +703 -623
- package/dist/src/cli/simple-commands/swarm-webui-integration.js +286 -258
- package/dist/src/cli/simple-commands/swarm.js +1082 -887
- package/dist/src/cli/simple-commands/task.js +206 -161
- package/dist/src/cli/simple-commands/timestamp-fix.js +89 -59
- package/dist/src/cli/simple-commands/token-tracker.js +316 -258
- package/dist/src/cli/simple-commands/tool-execution-framework.js +519 -433
- package/dist/src/cli/simple-commands/train-and-stream.js +331 -275
- package/dist/src/cli/simple-commands/training-pipeline.js +725 -619
- package/dist/src/cli/simple-commands/training.js +227 -170
- package/dist/src/cli/simple-commands/verification-hooks.js +284 -261
- package/dist/src/cli/simple-commands/verification-integration.js +417 -389
- package/dist/src/cli/simple-commands/verification-training-integration.js +606 -486
- package/dist/src/cli/simple-commands/verification.js +513 -493
- package/dist/src/cli/simple-commands/web-server.js +836 -766
- package/dist/src/cli/simple-commands/webui-validator.js +124 -106
- package/dist/src/coordination/byzantine-memory-channels.js +25 -1
- package/dist/src/coordination/event-bus/demo-wasm-integration.js +251 -212
- package/dist/src/coordination/event-bus/qe-event-bus.js +748 -608
- package/dist/src/coordination/event-bus/qe-event-bus.test.js +454 -379
- package/dist/src/coordination/iteration-tracker.js +454 -363
- package/dist/src/index.js +384 -35
- package/dist/src/mcp/DEPRECATED.js +60 -46
- package/dist/src/mcp/fixes/mcp-error-fixes.js +134 -115
- package/dist/src/mcp/implementations/agent-tracker.js +128 -114
- package/dist/src/mcp/implementations/daa-tools.js +350 -292
- package/dist/src/mcp/implementations/workflow-tools.js +361 -329
- package/dist/src/mcp/mcp-config-manager.js +1331 -1183
- package/dist/src/mcp/mcp-server-novice-simplified.js +17 -11
- package/dist/src/mcp/mcp-server-novice.js +17 -11
- package/dist/src/mcp/mcp-server-sdk.js +17 -11
- package/dist/src/mcp/mcp-server.js +1484 -1620
- package/dist/src/mcp/ruv-swarm-wrapper.js +239 -209
- package/dist/src/memory/advanced-serializer.js +589 -609
- package/dist/src/memory/enhanced-examples.js +305 -220
- package/dist/src/memory/enhanced-memory.js +336 -295
- package/dist/src/memory/enhanced-session-serializer.js +492 -408
- package/dist/src/memory/fallback-memory-system.js +1021 -900
- package/dist/src/memory/fallback-store.js +131 -93
- package/dist/src/memory/high-performance-serialization.js +730 -592
- package/dist/src/memory/in-memory-store.js +213 -161
- package/dist/src/memory/index.js +157 -123
- package/dist/src/memory/lock-free-structures.js +764 -578
- package/dist/src/memory/memory-mapped-persistence.js +766 -585
- package/dist/src/memory/memory-pressure-manager.js +707 -569
- package/dist/src/memory/migration.js +445 -358
- package/dist/src/memory/shared-memory.js +768 -641
- package/dist/src/memory/sqlite-store.js +325 -245
- package/dist/src/memory/sqlite-wrapper.js +151 -122
- package/dist/src/memory/swarm-memory.js +603 -470
- package/dist/src/memory/test-example.js +134 -126
- package/dist/src/memory/ultra-fast-memory-store.js +821 -622
- package/dist/src/memory/unified-memory-manager.js +437 -356
- package/dist/src/swarm/CodeRefactoringSwarm.js +952 -777
- package/dist/src/utils/__tests__/github-cli-safety-wrapper.test.js +400 -332
- package/dist/src/utils/error-handler.js +2 -36
- package/dist/src/utils/github-cli-safe.js +64 -56
- package/dist/src/utils/github-cli-safety-wrapper.js +546 -451
- package/dist/src/utils/npx-isolated-cache.js +119 -104
- package/dist/src/utils/preference-manager.js +652 -622
- package/dist/src/utils/timezone-utils.js +105 -86
- package/dist/src/web/api/apm-routes.js +353 -0
- package/dist/src/web/api/config/api-config.js +184 -0
- package/dist/src/web/api/middleware/auth.js +203 -0
- package/dist/src/web/api/middleware/cache.js +273 -0
- package/dist/src/web/api/middleware/error-handler.js +257 -0
- package/dist/src/web/api/middleware/request-logger.js +215 -0
- package/dist/src/web/api/middleware/validation.js +323 -0
- package/dist/src/web/api/routes/events.js +463 -0
- package/dist/src/web/api/routes/hierarchy.js +300 -0
- package/dist/src/web/api/routes/index.js +12 -0
- package/dist/src/web/api/routes/metrics.js +559 -0
- package/dist/src/web/api/routes/parallel-status.js +359 -0
- package/dist/src/web/api/routes/status.js +448 -0
- package/dist/src/web/api/server.js +462 -0
- package/dist/src/web/dashboard/hooks/useWebSocket.js +383 -0
- package/dist/src/web/dashboard/index.js +85 -0
- package/dist/src/web/dashboard/realtime/CustomSyncManager.js +439 -0
- package/dist/src/web/dashboard/realtime/NativeWebSocketManager.js +323 -0
- package/dist/src/web/dashboard/realtime/PerformanceBenchmark.js +527 -0
- package/dist/src/web/dashboard/realtime/RealtimeCommunicationManager.js +474 -0
- package/dist/src/web/dashboard/realtime/RealtimeServer.js +666 -0
- package/dist/src/web/dashboard/realtime/SSEManager.js +426 -0
- package/dist/src/web/dashboard/types.js +4 -0
- package/dist/src/web/messaging/agent-status-tracker.js +453 -0
- package/dist/src/web/messaging/human-intervention-system.js +305 -0
- package/dist/src/web/messaging/message-filter.js +302 -0
- package/dist/src/web/messaging/swarm-message-router.js +324 -0
- package/dist/src/web/messaging/transparency-logger.js +421 -0
- package/dist/src/web/portal-server.js +460 -0
- package/dist/src/web/server.js +322 -0
- package/dist/src/web/websocket/apm-websocket-handler.js +453 -0
- package/dist/src/web/websocket/websocket-manager.js +780 -0
- package/package.json +5 -3
- package/dist/src/cli/minimal-main.js +0 -22
- package/dist/src/enterprise/analytics-manager.js +0 -1135
- package/dist/src/enterprise/audit-manager.js +0 -1115
- package/dist/src/enterprise/cloud-manager.js +0 -891
- package/dist/src/enterprise/deployment-manager.js +0 -966
- package/dist/src/enterprise/index.js +0 -6
- package/dist/src/enterprise/project-manager.js +0 -584
- package/dist/src/enterprise/security-manager.js +0 -991
- package/dist/src/migration/index.js +0 -92
- package/dist/src/migration/logger.js +0 -121
- package/dist/src/migration/migration-analyzer.js +0 -268
- package/dist/src/migration/migration-runner.js +0 -522
- package/dist/src/migration/migration-validator.js +0 -285
- package/dist/src/migration/progress-reporter.js +0 -150
- package/dist/src/migration/rollback-manager.js +0 -321
- package/dist/src/migration/tests/migration-system.test.js +0 -7
- package/dist/src/migration/types.js +0 -3
- package/dist/src/swarm/__tests__/integration.test.js +0 -227
- package/dist/src/swarm/__tests__/prompt-copier.test.js +0 -344
- package/dist/src/swarm/advanced-orchestrator.js +0 -1095
- package/dist/src/swarm/claude-code-interface.js +0 -961
- package/dist/src/swarm/claude-flow-executor.js +0 -229
- package/dist/src/swarm/consensus-coordinator.js +0 -475
- package/dist/src/swarm/coordinator.js +0 -2993
- package/dist/src/swarm/direct-executor.js +0 -1180
- package/dist/src/swarm/error-recovery/advanced-error-detection.js +0 -691
- package/dist/src/swarm/error-recovery/automated-recovery-workflows.js +0 -998
- package/dist/src/swarm/error-recovery/error-recovery-coordinator.js +0 -1197
- package/dist/src/swarm/error-recovery/recovery-monitoring.js +0 -772
- package/dist/src/swarm/error-recovery/resilience-architecture.js +0 -714
- package/dist/src/swarm/error-recovery/self-healing-mechanisms.js +0 -1319
- package/dist/src/swarm/error-recovery/test-error-recovery-effectiveness.js +0 -808
- package/dist/src/swarm/executor-v2.js +0 -322
- package/dist/src/swarm/executor.js +0 -815
- package/dist/src/swarm/hive-mind-integration.js +0 -703
- package/dist/src/swarm/index.js +0 -41
- package/dist/src/swarm/json-output-aggregator.js +0 -267
- package/dist/src/swarm/large-scale-coordinator.js +0 -542
- package/dist/src/swarm/mcp-integration-wrapper.js +0 -628
- package/dist/src/swarm/memory.js +0 -1117
- package/dist/src/swarm/optimizations/__tests__/optimization.test.js +0 -348
- package/dist/src/swarm/optimizations/async-file-manager.js +0 -285
- package/dist/src/swarm/optimizations/circular-buffer.js +0 -162
- package/dist/src/swarm/optimizations/connection-pool.js +0 -244
- package/dist/src/swarm/optimizations/index.js +0 -28
- package/dist/src/swarm/optimizations/optimized-executor.js +0 -320
- package/dist/src/swarm/optimizations/ttl-map.js +0 -234
- package/dist/src/swarm/prompt-cli.js +0 -200
- package/dist/src/swarm/prompt-copier-enhanced.js +0 -202
- package/dist/src/swarm/prompt-copier.js +0 -381
- package/dist/src/swarm/prompt-manager.js +0 -295
- package/dist/src/swarm/prompt-utils.js +0 -310
- package/dist/src/swarm/result-aggregator.js +0 -718
- package/dist/src/swarm/sparc-executor.js +0 -1568
- package/dist/src/swarm/strategies/auto.js +0 -758
- package/dist/src/swarm/strategies/base.js +0 -128
- package/dist/src/swarm/strategies/research.js +0 -914
- package/dist/src/swarm/strategies/strategy-metrics-patch.js +0 -2
- package/dist/src/swarm/types.js +0 -52
- package/dist/src/swarm/workers/copy-worker.js +0 -56
- package/dist/src/validators/epic-config-schema.js +0 -214
- package/dist/src/validators/index.js +0 -10
- package/dist/src/validators/swarm-init-validator.js +0 -259
- package/dist/src/validators/todowrite-batching-validator.js +0 -215
- package/dist/src/validators/todowrite-integration.js +0 -187
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/documentSymbols/browser/documentSymbols.js +0 -23
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution.js +0 -57
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js +0 -401
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/dropOrPasteInto/browser/defaultProviders.js +0 -181
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorContribution.js +0 -44
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController.js +0 -157
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/dropOrPasteInto/browser/edit.js +0 -71
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/editorState/browser/editorState.js +0 -112
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/find/browser/findController.js +0 -990
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/find/browser/findDecorations.js +0 -296
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/find/browser/findModel.js +0 -488
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/find/browser/findOptionsWidget.js +0 -138
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/find/browser/findState.js +0 -243
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/find/browser/findWidget.js +0 -1177
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/folding/browser/folding.js +0 -1093
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/folding/browser/foldingDecorations.js +0 -133
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/folding/browser/foldingModel.js +0 -538
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/folding/browser/foldingRanges.js +0 -351
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/fontZoom/browser/fontZoom.js +0 -49
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/format/browser/format.js +0 -360
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/format/browser/formatActions.js +0 -263
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/format/browser/formattingEdit.js +0 -54
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/gotoSymbol/browser/link/clickLinkGesture.js +0 -149
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/hover/browser/contentHover.js +0 -874
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/inlineCompletions/browser/commandIds.js +0 -7
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/inlineCompletions/browser/commands.js +0 -199
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/linesOperations/browser/copyLinesCommand.js +0 -70
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/quickAccess/browser/commandsQuickAccess.js +0 -26
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/quickAccess/browser/editorNavigationQuickAccess.js +0 -153
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/readOnlyMessage/browser/contribution.js +0 -33
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/semanticTokens/browser/documentSemanticTokens.js +0 -354
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/smartSelect/browser/bracketSelections.js +0 -146
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/suggest/browser/completionModel.js +0 -224
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js +0 -119
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/edcore.main.js +0 -14
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/editor.all.js +0 -63
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/editor.api.js +0 -55
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/editor.main.js +0 -7
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/editor.worker.js +0 -25
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/standalone/browser/colorizer.js +0 -118
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/language/css/css.worker.js +0 -36869
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/language/css/cssMode.js +0 -2035
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/accessibility/browser/accessibilityService.js +0 -88
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/accessibility/common/accessibility.js +0 -9
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/action/common/action.js +0 -7
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/action/common/actionCommonCategories.js +0 -13
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/actionWidget/browser/actionList.js +0 -276
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/actionWidget/browser/actionWidget.js +0 -248
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/actionWidget/common/actionWidget.js +0 -5
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/actions/common/actions.js +0 -409
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/audioCues/browser/audioCueService.js +0 -176
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/clipboard/browser/clipboardService.js +0 -141
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/clipboard/common/clipboardService.js +0 -6
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/commands/common/commands.js +0 -80
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/configuration/common/configuration.js +0 -86
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/configuration/common/configurationModels.js +0 -554
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/configuration/common/configurationRegistry.js +0 -317
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/configuration/common/configurations.js +0 -41
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextkey/browser/contextKeyService.js +0 -432
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextkey/common/contextkey.js +0 -1547
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextkey/common/contextkeys.js +0 -18
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextview/browser/contextMenuHandler.js +0 -124
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextview/browser/contextMenuService.js +0 -101
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextview/browser/contextView.js +0 -7
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextview/browser/contextViewService.js +0 -72
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/dialogs/common/dialogs.js +0 -2
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/dnd/browser/dnd.js +0 -36
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/editor/common/editor.js +0 -17
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/environment/common/environment.js +0 -2
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/extensions/common/extensions.js +0 -47
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/files/common/files.js +0 -9
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +0 -105
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/instantiation/common/descriptors.js +0 -11
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/instantiation/common/extensions.js +0 -15
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/keybinding/common/abstractKeybindingService.js +0 -277
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/keybinding/common/baseResolvedKeybinding.js +0 -53
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +0 -354
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/theme/browser/defaultStyles.js +0 -162
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/theme/common/colorRegistry.js +0 -482
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/abap/abap.js +0 -10
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/apex/apex.js +0 -10
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/azcli/azcli.js +0 -10
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/bat/bat.js +0 -10
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/bicep/bicep.js +0 -11
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/cameligo/cameligo.js +0 -10
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/clojure/clojure.js +0 -10
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/coffee/coffee.js +0 -10
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/cpp/cpp.js +0 -10
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/csharp/csharp.js +0 -10
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/csp/csp.js +0 -10
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/css/css.js +0 -12
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/cypher/cypher.js +0 -10
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/dart/dart.js +0 -10
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/dockerfile/dockerfile.js +0 -10
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/ecl/ecl.js +0 -10
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/elixir/elixir.js +0 -10
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/flow9/flow9.js +0 -10
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.js +0 -745
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.de.js +0 -31
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.es.js +0 -31
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.fr.js +0 -29
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.it.js +0 -29
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.ja.js +0 -31
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.js +0 -29
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.ko.js +0 -29
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.ru.js +0 -31
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.zh-cn.js +0 -31
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.zh-tw.js +0 -29
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/language/css/cssMode.js +0 -13
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/language/css/cssWorker.js +0 -81
- package/dist/src/web/frontend/node_modules/.multicast-dns-iKseM9bB/cli.js +0 -64
- package/dist/src/web/frontend/node_modules/.multicast-dns-iKseM9bB/example.js +0 -36
- package/dist/src/web/frontend/node_modules/.multicast-dns-iKseM9bB/index.js +0 -205
- package/dist/src/web/frontend/node_modules/.multicast-dns-iKseM9bB/test.js +0 -260
- package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/async/index.browser.js +0 -34
- package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/async/index.js +0 -35
- package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/async/index.native.js +0 -26
- package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/index.browser.js +0 -34
- package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/index.js +0 -45
- package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/nanoid.js +0 -1
- package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/non-secure/index.js +0 -21
- package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/url-alphabet/index.js +0 -3
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/bin/nodemon.js +0 -16
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/cli/index.js +0 -49
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/cli/parse.js +0 -230
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/config/command.js +0 -43
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/config/defaults.js +0 -34
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/config/exec.js +0 -234
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/config/index.js +0 -93
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/config/load.js +0 -225
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/help/index.js +0 -27
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/index.js +0 -1
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/monitor/index.js +0 -4
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/monitor/match.js +0 -287
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/monitor/run.js +0 -562
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/monitor/signals.js +0 -34
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/monitor/watch.js +0 -244
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/nodemon.js +0 -317
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/rules/add.js +0 -89
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/rules/index.js +0 -53
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/rules/parse.js +0 -43
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/spawn.js +0 -74
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/utils/bus.js +0 -44
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/utils/clone.js +0 -40
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/utils/colour.js +0 -26
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/utils/index.js +0 -103
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/utils/log.js +0 -82
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/utils/merge.js +0 -47
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/version.js +0 -100
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/node_modules/brace-expansion/index.js +0 -201
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/node_modules/has-flag/index.js +0 -8
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/node_modules/minimatch/minimatch.js +0 -947
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/node_modules/supports-color/browser.js +0 -5
- package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/node_modules/supports-color/index.js +0 -131
- package/dist/src/web/frontend/node_modules/.pidtree-icfat3SQ/bin/pidtree.js +0 -128
- package/dist/src/web/frontend/node_modules/.pidtree-icfat3SQ/index.js +0 -49
- package/dist/src/web/frontend/node_modules/.pidtree-icfat3SQ/lib/bin.js +0 -61
- package/dist/src/web/frontend/node_modules/.pidtree-icfat3SQ/lib/get.js +0 -45
- package/dist/src/web/frontend/node_modules/.pidtree-icfat3SQ/lib/pidtree.js +0 -104
- package/dist/src/web/frontend/node_modules/.pidtree-icfat3SQ/lib/ps.js +0 -47
- package/dist/src/web/frontend/node_modules/.pidtree-icfat3SQ/lib/wmic.js +0 -49
- package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/doc.js +0 -1270
- package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/acorn.js +0 -15
- package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/angular.js +0 -2
- package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/babel.js +0 -15
- package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/estree.js +0 -36
- package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/flow.js +0 -19
- package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/glimmer.js +0 -29
- package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/graphql.js +0 -29
- package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/html.js +0 -22
- package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/markdown.js +0 -63
- package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/meriyah.js +0 -4
- package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/postcss.js +0 -54
- package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/typescript.js +0 -20
- package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/yaml.js +0 -160
- package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/standalone.js +0 -34
- package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/bin/react-scripts.js +0 -58
- package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/env.js +0 -112
- package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/getHttpsConfig.js +0 -74
- package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/jest/babelTransform.js +0 -37
- package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/jest/cssTransform.js +0 -22
- package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/jest/fileTransform.js +0 -40
- package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/modules.js +0 -142
- package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/paths.js +0 -153
- package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/webpack/persistentCache/createEnvironmentHash.js +0 -9
- package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/webpack.config.js +0 -796
- package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/webpackDevServer.config.js +0 -135
- package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/scripts/build.js +0 -225
- package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/scripts/eject.js +0 -340
|
@@ -1,650 +1,736 @@
|
|
|
1
1
|
// SPARC Specification Phase
|
|
2
2
|
// Gather requirements, define acceptance criteria, and establish project scope
|
|
3
|
-
|
|
3
|
+
|
|
4
|
+
import { SparcPhase } from './phase-base.js';
|
|
5
|
+
|
|
4
6
|
export class SparcSpecification extends SparcPhase {
|
|
5
|
-
|
|
7
|
+
constructor(taskDescription, options) {
|
|
8
|
+
super('specification', taskDescription, options);
|
|
9
|
+
this.requirements = [];
|
|
10
|
+
this.acceptanceCriteria = [];
|
|
11
|
+
this.userStories = [];
|
|
12
|
+
this.constraints = [];
|
|
13
|
+
this.assumptions = [];
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
6
17
|
* Execute specification phase
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
18
|
+
*/
|
|
19
|
+
async execute() {
|
|
20
|
+
console.log('📋 Starting Specification Phase');
|
|
21
|
+
|
|
22
|
+
await this.initializePhase();
|
|
23
|
+
|
|
24
|
+
const result = {
|
|
25
|
+
requirements: [],
|
|
26
|
+
acceptanceCriteria: [],
|
|
27
|
+
userStories: [],
|
|
28
|
+
constraints: [],
|
|
29
|
+
assumptions: [],
|
|
30
|
+
stakeholders: [],
|
|
31
|
+
businessValue: '',
|
|
32
|
+
scope: {
|
|
33
|
+
included: [],
|
|
34
|
+
excluded: [],
|
|
35
|
+
},
|
|
36
|
+
timeline: {
|
|
37
|
+
estimated: '',
|
|
38
|
+
phases: [],
|
|
39
|
+
},
|
|
40
|
+
risks: [],
|
|
41
|
+
dependencies: [],
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
try {
|
|
45
|
+
// Analyze task description
|
|
46
|
+
const analysis = await this.analyzeTaskDescription();
|
|
47
|
+
result.analysis = analysis;
|
|
48
|
+
|
|
49
|
+
// Extract requirements
|
|
50
|
+
result.requirements = await this.extractRequirements(analysis);
|
|
51
|
+
|
|
52
|
+
// Define acceptance criteria
|
|
53
|
+
result.acceptanceCriteria = await this.defineAcceptanceCriteria(result.requirements);
|
|
54
|
+
|
|
55
|
+
// Create user stories
|
|
56
|
+
result.userStories = await this.createUserStories(result.requirements);
|
|
57
|
+
|
|
58
|
+
// Identify constraints
|
|
59
|
+
result.constraints = await this.identifyConstraints();
|
|
60
|
+
|
|
61
|
+
// Document assumptions
|
|
62
|
+
result.assumptions = await this.documentAssumptions();
|
|
63
|
+
|
|
64
|
+
// Identify stakeholders
|
|
65
|
+
result.stakeholders = await this.identifyStakeholders();
|
|
66
|
+
|
|
67
|
+
// Define business value
|
|
68
|
+
result.businessValue = await this.defineBusiness();
|
|
69
|
+
|
|
70
|
+
// Define scope
|
|
71
|
+
result.scope = await this.defineScope(result.requirements);
|
|
72
|
+
|
|
73
|
+
// Estimate timeline
|
|
74
|
+
result.timeline = await this.estimateTimeline(result.requirements);
|
|
75
|
+
|
|
76
|
+
// Identify risks
|
|
77
|
+
result.risks = await this.identifyRisks(result.requirements);
|
|
78
|
+
|
|
79
|
+
// Identify dependencies
|
|
80
|
+
result.dependencies = await this.identifyDependencies(result.requirements);
|
|
81
|
+
|
|
82
|
+
// Generate specification document
|
|
83
|
+
await this.generateSpecificationDocument(result);
|
|
84
|
+
|
|
85
|
+
// Store in memory
|
|
86
|
+
await this.storeInMemory('specification_complete', result);
|
|
87
|
+
|
|
88
|
+
console.log('✅ Specification phase completed');
|
|
89
|
+
return result;
|
|
90
|
+
} catch (error) {
|
|
91
|
+
console.error('❌ Specification phase failed:', error.message);
|
|
92
|
+
throw error;
|
|
65
93
|
}
|
|
66
|
-
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
67
97
|
* Analyze task description to extract key information
|
|
68
|
-
*/
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
98
|
+
*/
|
|
99
|
+
async analyzeTaskDescription() {
|
|
100
|
+
const analysis = {
|
|
101
|
+
type: this.categorizeTask(),
|
|
102
|
+
complexity: this.assessComplexity(),
|
|
103
|
+
domain: this.identifyDomain(),
|
|
104
|
+
keywords: this.extractKeywords(),
|
|
105
|
+
verbs: this.extractActionVerbs(),
|
|
106
|
+
entities: this.extractEntities(),
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
return analysis;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
80
113
|
* Categorize the task type
|
|
81
|
-
*/
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
114
|
+
*/
|
|
115
|
+
categorizeTask() {
|
|
116
|
+
const taskLower = this.taskDescription.toLowerCase();
|
|
117
|
+
|
|
118
|
+
if (
|
|
119
|
+
taskLower.includes('api') ||
|
|
120
|
+
taskLower.includes('endpoint') ||
|
|
121
|
+
taskLower.includes('service')
|
|
122
|
+
) {
|
|
123
|
+
return 'api_development';
|
|
124
|
+
} else if (
|
|
125
|
+
taskLower.includes('ui') ||
|
|
126
|
+
taskLower.includes('frontend') ||
|
|
127
|
+
taskLower.includes('interface')
|
|
128
|
+
) {
|
|
129
|
+
return 'frontend_development';
|
|
130
|
+
} else if (
|
|
131
|
+
taskLower.includes('database') ||
|
|
132
|
+
taskLower.includes('data') ||
|
|
133
|
+
taskLower.includes('storage')
|
|
134
|
+
) {
|
|
135
|
+
return 'data_management';
|
|
136
|
+
} else if (taskLower.includes('test') || taskLower.includes('testing')) {
|
|
137
|
+
return 'testing';
|
|
138
|
+
} else if (taskLower.includes('deploy') || taskLower.includes('infrastructure')) {
|
|
139
|
+
return 'deployment';
|
|
140
|
+
} else if (taskLower.includes('refactor') || taskLower.includes('optimize')) {
|
|
141
|
+
return 'refactoring';
|
|
142
|
+
} else {
|
|
143
|
+
return 'general_development';
|
|
98
144
|
}
|
|
99
|
-
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/**
|
|
100
148
|
* Assess task complexity
|
|
101
|
-
*/
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
149
|
+
*/
|
|
150
|
+
assessComplexity() {
|
|
151
|
+
const wordCount = this.taskDescription.split(' ').length;
|
|
152
|
+
const complexityKeywords = [
|
|
153
|
+
'integrate',
|
|
154
|
+
'complex',
|
|
155
|
+
'multiple',
|
|
156
|
+
'advanced',
|
|
157
|
+
'enterprise',
|
|
158
|
+
'scalable',
|
|
159
|
+
];
|
|
160
|
+
const hasComplexityKeywords = complexityKeywords.some((keyword) =>
|
|
161
|
+
this.taskDescription.toLowerCase().includes(keyword),
|
|
162
|
+
);
|
|
163
|
+
|
|
164
|
+
if (wordCount > 20 || hasComplexityKeywords) {
|
|
165
|
+
return 'high';
|
|
166
|
+
} else if (wordCount > 10) {
|
|
167
|
+
return 'medium';
|
|
168
|
+
} else {
|
|
169
|
+
return 'low';
|
|
119
170
|
}
|
|
120
|
-
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/**
|
|
121
174
|
* Identify domain
|
|
122
|
-
*/
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
'ml',
|
|
141
|
-
'ai',
|
|
142
|
-
'machine learning'
|
|
143
|
-
],
|
|
144
|
-
security: [
|
|
145
|
-
'security',
|
|
146
|
-
'auth',
|
|
147
|
-
'authentication',
|
|
148
|
-
'encryption'
|
|
149
|
-
],
|
|
150
|
-
devops: [
|
|
151
|
-
'deploy',
|
|
152
|
-
'ci/cd',
|
|
153
|
-
'docker',
|
|
154
|
-
'kubernetes'
|
|
155
|
-
],
|
|
156
|
-
backend: [
|
|
157
|
-
'api',
|
|
158
|
-
'server',
|
|
159
|
-
'database',
|
|
160
|
-
'backend'
|
|
161
|
-
],
|
|
162
|
-
frontend: [
|
|
163
|
-
'ui',
|
|
164
|
-
'ux',
|
|
165
|
-
'frontend',
|
|
166
|
-
'interface'
|
|
167
|
-
]
|
|
168
|
-
};
|
|
169
|
-
const taskLower = this.taskDescription.toLowerCase();
|
|
170
|
-
for (const [domain, keywords] of Object.entries(domains)){
|
|
171
|
-
if (keywords.some((keyword)=>taskLower.includes(keyword))) {
|
|
172
|
-
return domain;
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
return 'general';
|
|
175
|
+
*/
|
|
176
|
+
identifyDomain() {
|
|
177
|
+
const domains = {
|
|
178
|
+
web: ['web', 'website', 'html', 'css', 'javascript'],
|
|
179
|
+
mobile: ['mobile', 'app', 'android', 'ios'],
|
|
180
|
+
data: ['data', 'analytics', 'ml', 'ai', 'machine learning'],
|
|
181
|
+
security: ['security', 'auth', 'authentication', 'encryption'],
|
|
182
|
+
devops: ['deploy', 'ci/cd', 'docker', 'kubernetes'],
|
|
183
|
+
backend: ['api', 'server', 'database', 'backend'],
|
|
184
|
+
frontend: ['ui', 'ux', 'frontend', 'interface'],
|
|
185
|
+
};
|
|
186
|
+
|
|
187
|
+
const taskLower = this.taskDescription.toLowerCase();
|
|
188
|
+
|
|
189
|
+
for (const [domain, keywords] of Object.entries(domains)) {
|
|
190
|
+
if (keywords.some((keyword) => taskLower.includes(keyword))) {
|
|
191
|
+
return domain;
|
|
192
|
+
}
|
|
176
193
|
}
|
|
177
|
-
|
|
194
|
+
|
|
195
|
+
return 'general';
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
/**
|
|
178
199
|
* Extract keywords from task description
|
|
179
|
-
*/
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
200
|
+
*/
|
|
201
|
+
extractKeywords() {
|
|
202
|
+
const words = this.taskDescription.toLowerCase().split(/\s+/);
|
|
203
|
+
const stopWords = [
|
|
204
|
+
'the',
|
|
205
|
+
'a',
|
|
206
|
+
'an',
|
|
207
|
+
'and',
|
|
208
|
+
'or',
|
|
209
|
+
'but',
|
|
210
|
+
'in',
|
|
211
|
+
'on',
|
|
212
|
+
'at',
|
|
213
|
+
'to',
|
|
214
|
+
'for',
|
|
215
|
+
'of',
|
|
216
|
+
'with',
|
|
217
|
+
'by',
|
|
218
|
+
];
|
|
219
|
+
|
|
220
|
+
return words
|
|
221
|
+
.filter((word) => word.length > 2 && !stopWords.includes(word))
|
|
222
|
+
.filter((word, index, arr) => arr.indexOf(word) === index) // Remove duplicates
|
|
223
|
+
.slice(0, 10); // Top 10 keywords
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
/**
|
|
201
227
|
* Extract action verbs
|
|
202
|
-
*/
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
228
|
+
*/
|
|
229
|
+
extractActionVerbs() {
|
|
230
|
+
const verbs = [
|
|
231
|
+
'create',
|
|
232
|
+
'build',
|
|
233
|
+
'develop',
|
|
234
|
+
'implement',
|
|
235
|
+
'design',
|
|
236
|
+
'setup',
|
|
237
|
+
'configure',
|
|
238
|
+
'deploy',
|
|
239
|
+
'test',
|
|
240
|
+
'optimize',
|
|
241
|
+
'refactor',
|
|
242
|
+
'integrate',
|
|
243
|
+
];
|
|
244
|
+
const taskLower = this.taskDescription.toLowerCase();
|
|
245
|
+
|
|
246
|
+
return verbs.filter((verb) => taskLower.includes(verb));
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
/**
|
|
221
250
|
* Extract entities
|
|
222
|
-
*/
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
251
|
+
*/
|
|
252
|
+
extractEntities() {
|
|
253
|
+
const entities = [];
|
|
254
|
+
const words = this.taskDescription.split(/\s+/);
|
|
255
|
+
|
|
256
|
+
// Look for capitalized words (potential entities)
|
|
257
|
+
for (const word of words) {
|
|
258
|
+
if (
|
|
259
|
+
word.length > 2 &&
|
|
260
|
+
word[0] === word[0].toUpperCase() &&
|
|
261
|
+
word.slice(1) === word.slice(1).toLowerCase()
|
|
262
|
+
) {
|
|
263
|
+
entities.push(word);
|
|
264
|
+
}
|
|
232
265
|
}
|
|
233
|
-
|
|
266
|
+
|
|
267
|
+
return entities;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
/**
|
|
234
271
|
* Extract requirements from analysis
|
|
235
|
-
*/
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
272
|
+
*/
|
|
273
|
+
async extractRequirements(analysis) {
|
|
274
|
+
const requirements = [];
|
|
275
|
+
|
|
276
|
+
// Functional requirements based on task type
|
|
277
|
+
switch (analysis.type) {
|
|
278
|
+
case 'api_development':
|
|
279
|
+
requirements.push(
|
|
280
|
+
'System must provide REST API endpoints',
|
|
281
|
+
'API must handle authentication and authorization',
|
|
282
|
+
'API must return appropriate HTTP status codes',
|
|
283
|
+
'API must validate input data',
|
|
284
|
+
'API must handle errors gracefully',
|
|
285
|
+
);
|
|
286
|
+
break;
|
|
287
|
+
|
|
288
|
+
case 'frontend_development':
|
|
289
|
+
requirements.push(
|
|
290
|
+
'Interface must be responsive and mobile-friendly',
|
|
291
|
+
'User interface must be intuitive and accessible',
|
|
292
|
+
'Application must handle user input validation',
|
|
293
|
+
'Interface must provide feedback for user actions',
|
|
294
|
+
'Application must be cross-browser compatible',
|
|
295
|
+
);
|
|
296
|
+
break;
|
|
297
|
+
|
|
298
|
+
case 'data_management':
|
|
299
|
+
requirements.push(
|
|
300
|
+
'System must ensure data integrity',
|
|
301
|
+
'Data must be properly normalized',
|
|
302
|
+
'System must handle concurrent access',
|
|
303
|
+
'Data must be backed up regularly',
|
|
304
|
+
'System must provide data recovery mechanisms',
|
|
305
|
+
);
|
|
306
|
+
break;
|
|
307
|
+
|
|
308
|
+
case 'testing':
|
|
309
|
+
requirements.push(
|
|
310
|
+
'Test suite must achieve minimum 80% code coverage',
|
|
311
|
+
'Tests must be automated and repeatable',
|
|
312
|
+
'Tests must validate all critical paths',
|
|
313
|
+
'Test data must be properly managed',
|
|
314
|
+
'Tests must run efficiently',
|
|
315
|
+
);
|
|
316
|
+
break;
|
|
317
|
+
|
|
318
|
+
default:
|
|
319
|
+
requirements.push(
|
|
320
|
+
'System must be reliable and performant',
|
|
321
|
+
'Code must be maintainable and well-documented',
|
|
322
|
+
'System must handle edge cases gracefully',
|
|
323
|
+
'Implementation must follow best practices',
|
|
324
|
+
'System must be secure and robust',
|
|
325
|
+
);
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
// Add complexity-specific requirements
|
|
329
|
+
if (analysis.complexity === 'high') {
|
|
330
|
+
requirements.push(
|
|
331
|
+
'System must be scalable and handle high load',
|
|
332
|
+
'Architecture must be modular and extensible',
|
|
333
|
+
'System must have comprehensive monitoring',
|
|
334
|
+
'Implementation must include performance optimization',
|
|
335
|
+
);
|
|
259
336
|
}
|
|
260
|
-
|
|
337
|
+
|
|
338
|
+
return requirements;
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
/**
|
|
261
342
|
* Define acceptance criteria
|
|
262
|
-
*/
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
343
|
+
*/
|
|
344
|
+
async defineAcceptanceCriteria(requirements) {
|
|
345
|
+
const criteria = [];
|
|
346
|
+
|
|
347
|
+
for (const requirement of requirements) {
|
|
348
|
+
const criterion = {
|
|
349
|
+
requirement: requirement,
|
|
350
|
+
given: this.generateGivenCondition(requirement),
|
|
351
|
+
when: this.generateWhenCondition(requirement),
|
|
352
|
+
then: this.generateThenCondition(requirement),
|
|
353
|
+
priority: this.assessRequirementPriority(requirement),
|
|
354
|
+
testable: true,
|
|
355
|
+
};
|
|
356
|
+
|
|
357
|
+
criteria.push(criterion);
|
|
276
358
|
}
|
|
277
|
-
|
|
359
|
+
|
|
360
|
+
return criteria;
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
/**
|
|
278
364
|
* Generate Given condition for acceptance criteria
|
|
279
|
-
*/
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
365
|
+
*/
|
|
366
|
+
generateGivenCondition(requirement) {
|
|
367
|
+
if (requirement.includes('API')) {
|
|
368
|
+
return 'Given a valid API client';
|
|
369
|
+
} else if (requirement.includes('user')) {
|
|
370
|
+
return 'Given a valid user session';
|
|
371
|
+
} else if (requirement.includes('data')) {
|
|
372
|
+
return 'Given valid input data';
|
|
373
|
+
} else {
|
|
374
|
+
return 'Given a properly configured system';
|
|
289
375
|
}
|
|
290
|
-
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
/**
|
|
291
379
|
* Generate When condition for acceptance criteria
|
|
292
|
-
*/
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
380
|
+
*/
|
|
381
|
+
generateWhenCondition(requirement) {
|
|
382
|
+
if (requirement.includes('provide')) {
|
|
383
|
+
return 'When the service is requested';
|
|
384
|
+
} else if (requirement.includes('handle')) {
|
|
385
|
+
return 'When the condition occurs';
|
|
386
|
+
} else if (requirement.includes('ensure')) {
|
|
387
|
+
return 'When the system operates';
|
|
388
|
+
} else {
|
|
389
|
+
return 'When the feature is used';
|
|
302
390
|
}
|
|
303
|
-
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
/**
|
|
304
394
|
* Generate Then condition for acceptance criteria
|
|
305
|
-
*/
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
395
|
+
*/
|
|
396
|
+
generateThenCondition(requirement) {
|
|
397
|
+
if (requirement.includes('must')) {
|
|
398
|
+
return 'Then the requirement must be satisfied';
|
|
399
|
+
} else {
|
|
400
|
+
return 'Then the expected behavior occurs';
|
|
311
401
|
}
|
|
312
|
-
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
/**
|
|
313
405
|
* Assess requirement priority
|
|
314
|
-
*/
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
} else {
|
|
334
|
-
return 'low';
|
|
335
|
-
}
|
|
406
|
+
*/
|
|
407
|
+
assessRequirementPriority(requirement) {
|
|
408
|
+
const highPriorityKeywords = [
|
|
409
|
+
'must',
|
|
410
|
+
'critical',
|
|
411
|
+
'security',
|
|
412
|
+
'authentication',
|
|
413
|
+
'data integrity',
|
|
414
|
+
];
|
|
415
|
+
const mediumPriorityKeywords = ['should', 'performance', 'optimization', 'monitoring'];
|
|
416
|
+
|
|
417
|
+
const reqLower = requirement.toLowerCase();
|
|
418
|
+
|
|
419
|
+
if (highPriorityKeywords.some((keyword) => reqLower.includes(keyword))) {
|
|
420
|
+
return 'high';
|
|
421
|
+
} else if (mediumPriorityKeywords.some((keyword) => reqLower.includes(keyword))) {
|
|
422
|
+
return 'medium';
|
|
423
|
+
} else {
|
|
424
|
+
return 'low';
|
|
336
425
|
}
|
|
337
|
-
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
/**
|
|
338
429
|
* Create user stories
|
|
339
|
-
*/
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
430
|
+
*/
|
|
431
|
+
async createUserStories(requirements) {
|
|
432
|
+
const stories = [];
|
|
433
|
+
|
|
434
|
+
for (const requirement of requirements) {
|
|
435
|
+
const story = {
|
|
436
|
+
title: this.generateStoryTitle(requirement),
|
|
437
|
+
narrative: this.generateStoryNarrative(requirement),
|
|
438
|
+
acceptanceCriteria: this.generateStoryAcceptanceCriteria(requirement),
|
|
439
|
+
priority: this.assessRequirementPriority(requirement),
|
|
440
|
+
estimation: this.estimateStoryPoints(requirement),
|
|
441
|
+
};
|
|
442
|
+
|
|
443
|
+
stories.push(story);
|
|
352
444
|
}
|
|
353
|
-
|
|
445
|
+
|
|
446
|
+
return stories;
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
/**
|
|
354
450
|
* Generate story title
|
|
355
|
-
*/
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
'system'
|
|
368
|
-
].includes(word));
|
|
369
|
-
return `${actionWord || 'Implement'} ${objectWord || 'functionality'}`;
|
|
370
|
-
}
|
|
371
|
-
/**
|
|
451
|
+
*/
|
|
452
|
+
generateStoryTitle(requirement) {
|
|
453
|
+
const words = requirement.split(' ');
|
|
454
|
+
const actionWord = words.find((word) =>
|
|
455
|
+
['provide', 'handle', 'ensure', 'validate'].includes(word.toLowerCase()),
|
|
456
|
+
);
|
|
457
|
+
const objectWord = words.find((word) => ['API', 'data', 'user', 'system'].includes(word));
|
|
458
|
+
|
|
459
|
+
return `${actionWord || 'Implement'} ${objectWord || 'functionality'}`;
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
/**
|
|
372
463
|
* Generate story narrative
|
|
373
|
-
*/
|
|
374
|
-
|
|
375
|
-
}
|
|
376
|
-
|
|
464
|
+
*/
|
|
465
|
+
generateStoryNarrative(requirement) {
|
|
466
|
+
return `As a user, I want the system to ${requirement.toLowerCase()} so that I can achieve my goals effectively.`;
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
/**
|
|
377
470
|
* Generate story acceptance criteria
|
|
378
|
-
*/
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
471
|
+
*/
|
|
472
|
+
generateStoryAcceptanceCriteria(requirement) {
|
|
473
|
+
return [`The system ${requirement.toLowerCase()}`];
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
/**
|
|
384
477
|
* Estimate story points
|
|
385
|
-
*/
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
478
|
+
*/
|
|
479
|
+
estimateStoryPoints(requirement) {
|
|
480
|
+
const complexity = this.assessComplexity();
|
|
481
|
+
const priority = this.assessRequirementPriority(requirement);
|
|
482
|
+
|
|
483
|
+
if (complexity === 'high' && priority === 'high') {
|
|
484
|
+
return 8;
|
|
485
|
+
} else if (complexity === 'high' || priority === 'high') {
|
|
486
|
+
return 5;
|
|
487
|
+
} else if (complexity === 'medium' || priority === 'medium') {
|
|
488
|
+
return 3;
|
|
489
|
+
} else {
|
|
490
|
+
return 1;
|
|
397
491
|
}
|
|
398
|
-
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
/**
|
|
399
495
|
* Identify constraints
|
|
400
|
-
*/
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
496
|
+
*/
|
|
497
|
+
async identifyConstraints() {
|
|
498
|
+
return [
|
|
499
|
+
'Files must be under 500 lines',
|
|
500
|
+
'No hardcoded environment variables',
|
|
501
|
+
'Must follow security best practices',
|
|
502
|
+
'Must be compatible with existing systems',
|
|
503
|
+
'Must maintain backward compatibility',
|
|
504
|
+
'Must handle concurrent users',
|
|
505
|
+
'Must have proper error handling',
|
|
506
|
+
'Must include comprehensive logging',
|
|
507
|
+
];
|
|
508
|
+
}
|
|
509
|
+
|
|
510
|
+
/**
|
|
413
511
|
* Document assumptions
|
|
414
|
-
*/
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
512
|
+
*/
|
|
513
|
+
async documentAssumptions() {
|
|
514
|
+
return [
|
|
515
|
+
'Development environment is properly configured',
|
|
516
|
+
'Required dependencies are available',
|
|
517
|
+
'Database schema is stable',
|
|
518
|
+
'Network connectivity is reliable',
|
|
519
|
+
'Third-party APIs are stable',
|
|
520
|
+
'Security protocols are established',
|
|
521
|
+
'Backup procedures are in place',
|
|
522
|
+
'Monitoring systems are operational',
|
|
523
|
+
];
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
/**
|
|
427
527
|
* Identify stakeholders
|
|
428
|
-
*/
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
},
|
|
442
|
-
{
|
|
443
|
-
role: 'DevOps Team',
|
|
444
|
-
responsibility: 'Deployment and operations'
|
|
445
|
-
},
|
|
446
|
-
{
|
|
447
|
-
role: 'Security Team',
|
|
448
|
-
responsibility: 'Security review'
|
|
449
|
-
},
|
|
450
|
-
{
|
|
451
|
-
role: 'End Users',
|
|
452
|
-
responsibility: 'Feedback and acceptance'
|
|
453
|
-
}
|
|
454
|
-
];
|
|
455
|
-
}
|
|
456
|
-
/**
|
|
528
|
+
*/
|
|
529
|
+
async identifyStakeholders() {
|
|
530
|
+
return [
|
|
531
|
+
{ role: 'Product Owner', responsibility: 'Requirements definition' },
|
|
532
|
+
{ role: 'Development Team', responsibility: 'Implementation' },
|
|
533
|
+
{ role: 'QA Team', responsibility: 'Testing and validation' },
|
|
534
|
+
{ role: 'DevOps Team', responsibility: 'Deployment and operations' },
|
|
535
|
+
{ role: 'Security Team', responsibility: 'Security review' },
|
|
536
|
+
{ role: 'End Users', responsibility: 'Feedback and acceptance' },
|
|
537
|
+
];
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
/**
|
|
457
541
|
* Define business value
|
|
458
|
-
*/
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
542
|
+
*/
|
|
543
|
+
async defineBusiness() {
|
|
544
|
+
const analysis = await this.analyzeTaskDescription();
|
|
545
|
+
|
|
546
|
+
switch (analysis.type) {
|
|
547
|
+
case 'api_development':
|
|
548
|
+
return 'Enables system integration and data exchange, improving operational efficiency';
|
|
549
|
+
case 'frontend_development':
|
|
550
|
+
return 'Improves user experience and engagement, potentially increasing user satisfaction';
|
|
551
|
+
case 'data_management':
|
|
552
|
+
return 'Ensures data integrity and availability, supporting business decisions';
|
|
553
|
+
case 'testing':
|
|
554
|
+
return 'Reduces bugs and improves software quality, minimizing support costs';
|
|
555
|
+
default:
|
|
556
|
+
return 'Addresses business requirements and improves system capabilities';
|
|
472
557
|
}
|
|
473
|
-
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
/**
|
|
474
561
|
* Define scope
|
|
475
|
-
*/
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
562
|
+
*/
|
|
563
|
+
async defineScope(requirements) {
|
|
564
|
+
const included = requirements.slice(0, Math.ceil(requirements.length * 0.8));
|
|
565
|
+
const excluded = [
|
|
566
|
+
'Performance optimization beyond basic requirements',
|
|
567
|
+
'Advanced security features not specified',
|
|
568
|
+
'Integration with non-specified external systems',
|
|
569
|
+
'Custom UI themes and branding',
|
|
570
|
+
'Advanced analytics and reporting',
|
|
571
|
+
'Mobile-specific optimizations',
|
|
572
|
+
'Legacy system migration',
|
|
573
|
+
'Third-party plugin development',
|
|
574
|
+
];
|
|
575
|
+
|
|
576
|
+
return { included, excluded };
|
|
577
|
+
}
|
|
578
|
+
|
|
579
|
+
/**
|
|
493
580
|
* Estimate timeline
|
|
494
|
-
*/
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
{
|
|
514
|
-
name: 'Testing',
|
|
515
|
-
duration: '1 week'
|
|
516
|
-
},
|
|
517
|
-
{
|
|
518
|
-
name: 'Deployment',
|
|
519
|
-
duration: '1 week'
|
|
520
|
-
}
|
|
521
|
-
]
|
|
522
|
-
};
|
|
523
|
-
}
|
|
524
|
-
/**
|
|
581
|
+
*/
|
|
582
|
+
async estimateTimeline(requirements) {
|
|
583
|
+
const totalStoryPoints = requirements.length * 3; // Average 3 points per requirement
|
|
584
|
+
const developmentVelocity = 10; // Points per sprint
|
|
585
|
+
const sprintsNeeded = Math.ceil(totalStoryPoints / developmentVelocity);
|
|
586
|
+
|
|
587
|
+
return {
|
|
588
|
+
estimated: `${sprintsNeeded * 2} weeks`,
|
|
589
|
+
phases: [
|
|
590
|
+
{ name: 'Specification', duration: '1 week' },
|
|
591
|
+
{ name: 'Architecture', duration: '1 week' },
|
|
592
|
+
{ name: 'Development', duration: `${sprintsNeeded} weeks` },
|
|
593
|
+
{ name: 'Testing', duration: '1 week' },
|
|
594
|
+
{ name: 'Deployment', duration: '1 week' },
|
|
595
|
+
],
|
|
596
|
+
};
|
|
597
|
+
}
|
|
598
|
+
|
|
599
|
+
/**
|
|
525
600
|
* Identify risks
|
|
526
|
-
*/
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
601
|
+
*/
|
|
602
|
+
async identifyRisks(requirements) {
|
|
603
|
+
return [
|
|
604
|
+
{
|
|
605
|
+
risk: 'Technical complexity higher than estimated',
|
|
606
|
+
probability: 'Medium',
|
|
607
|
+
impact: 'High',
|
|
608
|
+
mitigation: 'Conduct proof of concept before full implementation',
|
|
609
|
+
},
|
|
610
|
+
{
|
|
611
|
+
risk: 'Requirements change during development',
|
|
612
|
+
probability: 'High',
|
|
613
|
+
impact: 'Medium',
|
|
614
|
+
mitigation: 'Implement agile development with regular reviews',
|
|
615
|
+
},
|
|
616
|
+
{
|
|
617
|
+
risk: 'Integration issues with external systems',
|
|
618
|
+
probability: 'Medium',
|
|
619
|
+
impact: 'High',
|
|
620
|
+
mitigation: 'Early integration testing and API validation',
|
|
621
|
+
},
|
|
622
|
+
{
|
|
623
|
+
risk: 'Performance issues under load',
|
|
624
|
+
probability: 'Low',
|
|
625
|
+
impact: 'High',
|
|
626
|
+
mitigation: 'Load testing and performance monitoring',
|
|
627
|
+
},
|
|
628
|
+
];
|
|
629
|
+
}
|
|
630
|
+
|
|
631
|
+
/**
|
|
555
632
|
* Identify dependencies
|
|
556
|
-
*/
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
...new Set(dependencies)
|
|
574
|
-
]; // Remove duplicates
|
|
633
|
+
*/
|
|
634
|
+
async identifyDependencies(requirements) {
|
|
635
|
+
const dependencies = [];
|
|
636
|
+
|
|
637
|
+
for (const requirement of requirements) {
|
|
638
|
+
if (requirement.includes('API')) {
|
|
639
|
+
dependencies.push('Database schema definition');
|
|
640
|
+
dependencies.push('Authentication service');
|
|
641
|
+
}
|
|
642
|
+
if (requirement.includes('data')) {
|
|
643
|
+
dependencies.push('Data model design');
|
|
644
|
+
dependencies.push('Database setup');
|
|
645
|
+
}
|
|
646
|
+
if (requirement.includes('security')) {
|
|
647
|
+
dependencies.push('Security policy definition');
|
|
648
|
+
dependencies.push('Certificate management');
|
|
649
|
+
}
|
|
575
650
|
}
|
|
576
|
-
|
|
651
|
+
|
|
652
|
+
return [...new Set(dependencies)]; // Remove duplicates
|
|
653
|
+
}
|
|
654
|
+
|
|
655
|
+
/**
|
|
577
656
|
* Generate specification document
|
|
578
|
-
*/
|
|
579
|
-
|
|
657
|
+
*/
|
|
658
|
+
async generateSpecificationDocument(result) {
|
|
659
|
+
const document = `# ${this.taskDescription} - Specification
|
|
580
660
|
|
|
581
661
|
## Overview
|
|
582
662
|
${result.businessValue}
|
|
583
663
|
|
|
584
664
|
## Requirements
|
|
585
|
-
${result.requirements.map((req, index)
|
|
665
|
+
${result.requirements.map((req, index) => `${index + 1}. ${req}`).join('\n')}
|
|
586
666
|
|
|
587
667
|
## Acceptance Criteria
|
|
588
|
-
${result.acceptanceCriteria
|
|
668
|
+
${result.acceptanceCriteria
|
|
669
|
+
.map(
|
|
670
|
+
(criteria, index) => `
|
|
589
671
|
### ${index + 1}. ${criteria.requirement}
|
|
590
672
|
- **Given**: ${criteria.given}
|
|
591
673
|
- **When**: ${criteria.when}
|
|
592
674
|
- **Then**: ${criteria.then}
|
|
593
675
|
- **Priority**: ${criteria.priority}
|
|
594
|
-
|
|
676
|
+
`,
|
|
677
|
+
)
|
|
678
|
+
.join('\n')}
|
|
595
679
|
|
|
596
680
|
## User Stories
|
|
597
|
-
${result.userStories
|
|
681
|
+
${result.userStories
|
|
682
|
+
.map(
|
|
683
|
+
(story, index) => `
|
|
598
684
|
### ${index + 1}. ${story.title}
|
|
599
685
|
${story.narrative}
|
|
600
686
|
**Acceptance Criteria**: ${story.acceptanceCriteria.join(', ')}
|
|
601
687
|
**Priority**: ${story.priority}
|
|
602
688
|
**Estimation**: ${story.estimation} points
|
|
603
|
-
|
|
689
|
+
`,
|
|
690
|
+
)
|
|
691
|
+
.join('\n')}
|
|
604
692
|
|
|
605
693
|
## Constraints
|
|
606
|
-
${result.constraints.map((constraint, index)
|
|
694
|
+
${result.constraints.map((constraint, index) => `${index + 1}. ${constraint}`).join('\n')}
|
|
607
695
|
|
|
608
696
|
## Assumptions
|
|
609
|
-
${result.assumptions.map((assumption, index)
|
|
697
|
+
${result.assumptions.map((assumption, index) => `${index + 1}. ${assumption}`).join('\n')}
|
|
610
698
|
|
|
611
699
|
## Scope
|
|
612
700
|
### Included
|
|
613
|
-
${result.scope.included.map((item, index)
|
|
701
|
+
${result.scope.included.map((item, index) => `${index + 1}. ${item}`).join('\n')}
|
|
614
702
|
|
|
615
703
|
### Excluded
|
|
616
|
-
${result.scope.excluded.map((item, index)
|
|
704
|
+
${result.scope.excluded.map((item, index) => `${index + 1}. ${item}`).join('\n')}
|
|
617
705
|
|
|
618
706
|
## Timeline
|
|
619
707
|
**Estimated Duration**: ${result.timeline.estimated}
|
|
620
708
|
|
|
621
|
-
${result.timeline.phases.map((phase)
|
|
709
|
+
${result.timeline.phases.map((phase) => `- ${phase.name}: ${phase.duration}`).join('\n')}
|
|
622
710
|
|
|
623
711
|
## Risks
|
|
624
|
-
${result.risks
|
|
712
|
+
${result.risks
|
|
713
|
+
.map(
|
|
714
|
+
(risk, index) => `
|
|
625
715
|
### ${index + 1}. ${risk.risk}
|
|
626
716
|
- **Probability**: ${risk.probability}
|
|
627
717
|
- **Impact**: ${risk.impact}
|
|
628
718
|
- **Mitigation**: ${risk.mitigation}
|
|
629
|
-
|
|
719
|
+
`,
|
|
720
|
+
)
|
|
721
|
+
.join('\n')}
|
|
630
722
|
|
|
631
723
|
## Dependencies
|
|
632
|
-
${result.dependencies.map((dep, index)
|
|
724
|
+
${result.dependencies.map((dep, index) => `${index + 1}. ${dep}`).join('\n')}
|
|
633
725
|
|
|
634
726
|
## Stakeholders
|
|
635
|
-
${result.stakeholders.map((stakeholder)
|
|
727
|
+
${result.stakeholders.map((stakeholder) => `- **${stakeholder.role}**: ${stakeholder.responsibility}`).join('\n')}
|
|
636
728
|
`;
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
super('specification', taskDescription, options);
|
|
643
|
-
this.requirements = [];
|
|
644
|
-
this.acceptanceCriteria = [];
|
|
645
|
-
this.userStories = [];
|
|
646
|
-
this.constraints = [];
|
|
647
|
-
this.assumptions = [];
|
|
648
|
-
}
|
|
729
|
+
|
|
730
|
+
// Save document
|
|
731
|
+
await this.saveArtifact('specification.md', document);
|
|
732
|
+
return document;
|
|
733
|
+
}
|
|
649
734
|
}
|
|
735
|
+
|
|
650
736
|
export default SparcSpecification;
|