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,1568 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* SPARC-Enhanced Task Executor for Swarm
|
|
3
|
-
* Implements the full SPARC methodology with TDD
|
|
4
|
-
*/ function _define_property(obj, key, value) {
|
|
5
|
-
if (key in obj) {
|
|
6
|
-
Object.defineProperty(obj, key, {
|
|
7
|
-
value: value,
|
|
8
|
-
enumerable: true,
|
|
9
|
-
configurable: true,
|
|
10
|
-
writable: true
|
|
11
|
-
});
|
|
12
|
-
} else {
|
|
13
|
-
obj[key] = value;
|
|
14
|
-
}
|
|
15
|
-
return obj;
|
|
16
|
-
}
|
|
17
|
-
import * as fs from "node:fs/promises";
|
|
18
|
-
import * as path from "node:path";
|
|
19
|
-
import { Logger } from "../core/logger.js";
|
|
20
|
-
export class SparcTaskExecutor {
|
|
21
|
-
initializePhases() {
|
|
22
|
-
this.phases = new Map([
|
|
23
|
-
[
|
|
24
|
-
'specification',
|
|
25
|
-
{
|
|
26
|
-
name: 'Specification',
|
|
27
|
-
description: 'Define detailed requirements and acceptance criteria',
|
|
28
|
-
outputs: [
|
|
29
|
-
'requirements.md',
|
|
30
|
-
'user-stories.md',
|
|
31
|
-
'acceptance-criteria.md'
|
|
32
|
-
]
|
|
33
|
-
}
|
|
34
|
-
],
|
|
35
|
-
[
|
|
36
|
-
'pseudocode',
|
|
37
|
-
{
|
|
38
|
-
name: 'Pseudocode',
|
|
39
|
-
description: 'Create algorithmic logic and data structures',
|
|
40
|
-
outputs: [
|
|
41
|
-
'algorithms.md',
|
|
42
|
-
'data-structures.md',
|
|
43
|
-
'flow-diagrams.md'
|
|
44
|
-
]
|
|
45
|
-
}
|
|
46
|
-
],
|
|
47
|
-
[
|
|
48
|
-
'architecture',
|
|
49
|
-
{
|
|
50
|
-
name: 'Architecture',
|
|
51
|
-
description: 'Design system architecture and components',
|
|
52
|
-
outputs: [
|
|
53
|
-
'architecture.md',
|
|
54
|
-
'component-diagram.md',
|
|
55
|
-
'api-design.md'
|
|
56
|
-
]
|
|
57
|
-
}
|
|
58
|
-
],
|
|
59
|
-
[
|
|
60
|
-
'refinement',
|
|
61
|
-
{
|
|
62
|
-
name: 'Refinement (TDD)',
|
|
63
|
-
description: 'Implement with Test-Driven Development',
|
|
64
|
-
outputs: [
|
|
65
|
-
'tests/',
|
|
66
|
-
'src/',
|
|
67
|
-
'coverage/'
|
|
68
|
-
]
|
|
69
|
-
}
|
|
70
|
-
],
|
|
71
|
-
[
|
|
72
|
-
'completion',
|
|
73
|
-
{
|
|
74
|
-
name: 'Completion',
|
|
75
|
-
description: 'Integration, documentation, and validation',
|
|
76
|
-
outputs: [
|
|
77
|
-
'README.md',
|
|
78
|
-
'docs/',
|
|
79
|
-
'examples/'
|
|
80
|
-
]
|
|
81
|
-
}
|
|
82
|
-
]
|
|
83
|
-
]);
|
|
84
|
-
}
|
|
85
|
-
async executeTask(task, agent, targetDir) {
|
|
86
|
-
this.logger.info('Executing SPARC-enhanced task', {
|
|
87
|
-
taskId: task.id.id,
|
|
88
|
-
taskName: task.name,
|
|
89
|
-
agentType: agent.type,
|
|
90
|
-
targetDir
|
|
91
|
-
});
|
|
92
|
-
const startTime = Date.now();
|
|
93
|
-
try {
|
|
94
|
-
// Ensure target directory exists
|
|
95
|
-
if (targetDir) {
|
|
96
|
-
await fs.mkdir(targetDir, {
|
|
97
|
-
recursive: true
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
// Determine which SPARC phase to execute based on task and agent
|
|
101
|
-
const result = await this.executeSparcPhase(task, agent, targetDir);
|
|
102
|
-
const endTime = Date.now();
|
|
103
|
-
const executionTime = endTime - startTime;
|
|
104
|
-
return {
|
|
105
|
-
output: result,
|
|
106
|
-
artifacts: result.artifacts || {},
|
|
107
|
-
metadata: {
|
|
108
|
-
agentId: agent.id.id,
|
|
109
|
-
agentType: agent.type,
|
|
110
|
-
executionTime,
|
|
111
|
-
targetDir,
|
|
112
|
-
sparcPhase: result.phase,
|
|
113
|
-
quality: result.quality || 1.0
|
|
114
|
-
},
|
|
115
|
-
quality: result.quality || 1.0,
|
|
116
|
-
completeness: result.completeness || 1.0,
|
|
117
|
-
accuracy: 1.0,
|
|
118
|
-
executionTime,
|
|
119
|
-
resourcesUsed: {
|
|
120
|
-
cpuTime: executionTime,
|
|
121
|
-
maxMemory: 0,
|
|
122
|
-
diskIO: 0,
|
|
123
|
-
networkIO: 0,
|
|
124
|
-
fileHandles: 0
|
|
125
|
-
},
|
|
126
|
-
validated: true
|
|
127
|
-
};
|
|
128
|
-
} catch (error) {
|
|
129
|
-
this.logger.error('SPARC task execution failed', {
|
|
130
|
-
taskId: task.id.id,
|
|
131
|
-
error: error instanceof Error ? error.message : String(error)
|
|
132
|
-
});
|
|
133
|
-
throw error;
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
async executeSparcPhase(task, agent, targetDir) {
|
|
137
|
-
const objective = task.description.toLowerCase();
|
|
138
|
-
// Map agent types to SPARC phases
|
|
139
|
-
switch(agent.type){
|
|
140
|
-
case 'analyst':
|
|
141
|
-
if (task.name.includes('Requirements') || task.name.includes('Plan')) {
|
|
142
|
-
return this.executeSpecificationPhase(task, targetDir);
|
|
143
|
-
}
|
|
144
|
-
return this.executeAnalysisPhase(task, targetDir);
|
|
145
|
-
case 'researcher':
|
|
146
|
-
return this.executePseudocodePhase(task, targetDir);
|
|
147
|
-
case 'architect':
|
|
148
|
-
case 'coordinator':
|
|
149
|
-
if (task.name.includes('Architecture') || objective.includes('design')) {
|
|
150
|
-
return this.executeArchitecturePhase(task, targetDir);
|
|
151
|
-
}
|
|
152
|
-
return this.executeCoordinationPhase(task, targetDir);
|
|
153
|
-
case 'coder':
|
|
154
|
-
if (this.enableTDD && task.name.includes('Implement')) {
|
|
155
|
-
return this.executeTDDPhase(task, targetDir);
|
|
156
|
-
}
|
|
157
|
-
return this.executeImplementationPhase(task, targetDir);
|
|
158
|
-
case 'tester':
|
|
159
|
-
return this.executeTestingPhase(task, targetDir);
|
|
160
|
-
case 'reviewer':
|
|
161
|
-
return this.executeReviewPhase(task, targetDir);
|
|
162
|
-
case 'documenter':
|
|
163
|
-
return this.executeDocumentationPhase(task, targetDir);
|
|
164
|
-
default:
|
|
165
|
-
return this.executeGenericPhase(task, targetDir);
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
async executeSpecificationPhase(task, targetDir) {
|
|
169
|
-
this.logger.info('Executing Specification phase', {
|
|
170
|
-
taskName: task.name
|
|
171
|
-
});
|
|
172
|
-
const objective = task.description;
|
|
173
|
-
const appType = this.determineAppType(objective);
|
|
174
|
-
const specifications = {
|
|
175
|
-
phase: 'specification',
|
|
176
|
-
requirements: this.generateRequirements(objective, appType),
|
|
177
|
-
userStories: this.generateUserStories(appType),
|
|
178
|
-
acceptanceCriteria: this.generateAcceptanceCriteria(appType),
|
|
179
|
-
constraints: this.identifyConstraints(objective),
|
|
180
|
-
quality: 0.9,
|
|
181
|
-
completeness: 0.95
|
|
182
|
-
};
|
|
183
|
-
if (targetDir) {
|
|
184
|
-
const specsDir = path.join(targetDir, 'specs');
|
|
185
|
-
await fs.mkdir(specsDir, {
|
|
186
|
-
recursive: true
|
|
187
|
-
});
|
|
188
|
-
await fs.writeFile(path.join(specsDir, 'requirements.md'), this.formatRequirements(specifications.requirements));
|
|
189
|
-
await fs.writeFile(path.join(specsDir, 'user-stories.md'), this.formatUserStories(specifications.userStories));
|
|
190
|
-
await fs.writeFile(path.join(specsDir, 'acceptance-criteria.md'), this.formatAcceptanceCriteria(specifications.acceptanceCriteria));
|
|
191
|
-
}
|
|
192
|
-
return specifications;
|
|
193
|
-
}
|
|
194
|
-
async executePseudocodePhase(task, targetDir) {
|
|
195
|
-
this.logger.info('Executing Pseudocode phase', {
|
|
196
|
-
taskName: task.name
|
|
197
|
-
});
|
|
198
|
-
const appType = this.determineAppType(task.description);
|
|
199
|
-
const pseudocode = {
|
|
200
|
-
phase: 'pseudocode',
|
|
201
|
-
algorithms: this.generateAlgorithms(appType),
|
|
202
|
-
dataStructures: this.generateDataStructures(appType),
|
|
203
|
-
flowDiagrams: this.generateFlowDiagrams(appType),
|
|
204
|
-
quality: 0.85,
|
|
205
|
-
completeness: 0.9
|
|
206
|
-
};
|
|
207
|
-
if (targetDir) {
|
|
208
|
-
const designDir = path.join(targetDir, 'design');
|
|
209
|
-
await fs.mkdir(designDir, {
|
|
210
|
-
recursive: true
|
|
211
|
-
});
|
|
212
|
-
await fs.writeFile(path.join(designDir, 'algorithms.md'), this.formatAlgorithms(pseudocode.algorithms));
|
|
213
|
-
await fs.writeFile(path.join(designDir, 'data-structures.md'), this.formatDataStructures(pseudocode.dataStructures));
|
|
214
|
-
}
|
|
215
|
-
return pseudocode;
|
|
216
|
-
}
|
|
217
|
-
async executeArchitecturePhase(task, targetDir) {
|
|
218
|
-
this.logger.info('Executing Architecture phase', {
|
|
219
|
-
taskName: task.name
|
|
220
|
-
});
|
|
221
|
-
const appType = this.determineAppType(task.description);
|
|
222
|
-
const architecture = {
|
|
223
|
-
phase: 'architecture',
|
|
224
|
-
components: this.designComponents(appType),
|
|
225
|
-
interfaces: this.designInterfaces(appType),
|
|
226
|
-
patterns: this.selectPatterns(appType),
|
|
227
|
-
infrastructure: this.designInfrastructure(appType),
|
|
228
|
-
quality: 0.9,
|
|
229
|
-
completeness: 0.85
|
|
230
|
-
};
|
|
231
|
-
if (targetDir) {
|
|
232
|
-
const archDir = path.join(targetDir, 'architecture');
|
|
233
|
-
await fs.mkdir(archDir, {
|
|
234
|
-
recursive: true
|
|
235
|
-
});
|
|
236
|
-
await fs.writeFile(path.join(archDir, 'architecture.md'), this.formatArchitecture(architecture));
|
|
237
|
-
await fs.writeFile(path.join(archDir, 'component-diagram.md'), this.formatComponentDiagram(architecture.components));
|
|
238
|
-
}
|
|
239
|
-
return architecture;
|
|
240
|
-
}
|
|
241
|
-
async executeTDDPhase(task, targetDir) {
|
|
242
|
-
this.logger.info('Executing TDD phase (Red-Green-Refactor)', {
|
|
243
|
-
taskName: task.name
|
|
244
|
-
});
|
|
245
|
-
const appType = this.determineAppType(task.description);
|
|
246
|
-
const language = this.detectLanguage(task.description);
|
|
247
|
-
// Red Phase: Write failing tests first
|
|
248
|
-
const tests = await this.generateFailingTests(appType, language);
|
|
249
|
-
// Green Phase: Implement minimal code to pass tests
|
|
250
|
-
const implementation = await this.generateMinimalImplementation(appType, language, tests);
|
|
251
|
-
// Refactor Phase: Optimize and clean up
|
|
252
|
-
const refactored = await this.refactorImplementation(implementation, tests);
|
|
253
|
-
const tddResult = {
|
|
254
|
-
phase: 'refinement-tdd',
|
|
255
|
-
tests,
|
|
256
|
-
implementation: refactored,
|
|
257
|
-
coverage: this.calculateCoverage(tests, refactored),
|
|
258
|
-
quality: 0.95,
|
|
259
|
-
completeness: 0.9,
|
|
260
|
-
artifacts: {}
|
|
261
|
-
};
|
|
262
|
-
if (targetDir) {
|
|
263
|
-
// Create proper project structure
|
|
264
|
-
await this.createProjectStructure(targetDir, appType, language);
|
|
265
|
-
// Write test files
|
|
266
|
-
await this.writeTestFiles(targetDir, tests, language);
|
|
267
|
-
// Write implementation files
|
|
268
|
-
await this.writeImplementationFiles(targetDir, refactored, language);
|
|
269
|
-
// Generate additional files
|
|
270
|
-
await this.generateProjectFiles(targetDir, appType, language);
|
|
271
|
-
}
|
|
272
|
-
return tddResult;
|
|
273
|
-
}
|
|
274
|
-
async executeTestingPhase(task, targetDir) {
|
|
275
|
-
this.logger.info('Executing Testing phase', {
|
|
276
|
-
taskName: task.name
|
|
277
|
-
});
|
|
278
|
-
const testPlan = {
|
|
279
|
-
phase: 'testing',
|
|
280
|
-
unitTests: this.generateUnitTests(task),
|
|
281
|
-
integrationTests: this.generateIntegrationTests(task),
|
|
282
|
-
e2eTests: this.generateE2ETests(task),
|
|
283
|
-
performanceTests: this.generatePerformanceTests(task),
|
|
284
|
-
coverage: {
|
|
285
|
-
target: 80,
|
|
286
|
-
current: 0
|
|
287
|
-
},
|
|
288
|
-
quality: 0.9,
|
|
289
|
-
completeness: 0.85
|
|
290
|
-
};
|
|
291
|
-
if (targetDir) {
|
|
292
|
-
const testsDir = path.join(targetDir, 'tests');
|
|
293
|
-
await fs.mkdir(testsDir, {
|
|
294
|
-
recursive: true
|
|
295
|
-
});
|
|
296
|
-
await fs.writeFile(path.join(testsDir, 'test-plan.md'), this.formatTestPlan(testPlan));
|
|
297
|
-
}
|
|
298
|
-
return testPlan;
|
|
299
|
-
}
|
|
300
|
-
async executeReviewPhase(task, targetDir) {
|
|
301
|
-
this.logger.info('Executing Review phase', {
|
|
302
|
-
taskName: task.name
|
|
303
|
-
});
|
|
304
|
-
const review = {
|
|
305
|
-
phase: 'review',
|
|
306
|
-
codeQuality: this.assessCodeQuality(task),
|
|
307
|
-
security: this.assessSecurity(task),
|
|
308
|
-
performance: this.assessPerformance(task),
|
|
309
|
-
maintainability: this.assessMaintainability(task),
|
|
310
|
-
recommendations: this.generateRecommendations(task),
|
|
311
|
-
quality: 0.88,
|
|
312
|
-
completeness: 0.9
|
|
313
|
-
};
|
|
314
|
-
if (targetDir) {
|
|
315
|
-
await fs.writeFile(path.join(targetDir, 'review-report.md'), this.formatReviewReport(review));
|
|
316
|
-
}
|
|
317
|
-
return review;
|
|
318
|
-
}
|
|
319
|
-
async executeDocumentationPhase(task, targetDir) {
|
|
320
|
-
this.logger.info('Executing Documentation phase', {
|
|
321
|
-
taskName: task.name
|
|
322
|
-
});
|
|
323
|
-
const documentation = {
|
|
324
|
-
phase: 'documentation',
|
|
325
|
-
readme: this.generateReadme(task),
|
|
326
|
-
apiDocs: this.generateApiDocs(task),
|
|
327
|
-
userGuide: this.generateUserGuide(task),
|
|
328
|
-
developerGuide: this.generateDeveloperGuide(task),
|
|
329
|
-
quality: 0.92,
|
|
330
|
-
completeness: 0.95
|
|
331
|
-
};
|
|
332
|
-
if (targetDir) {
|
|
333
|
-
const docsDir = path.join(targetDir, 'docs');
|
|
334
|
-
await fs.mkdir(docsDir, {
|
|
335
|
-
recursive: true
|
|
336
|
-
});
|
|
337
|
-
await fs.writeFile(path.join(targetDir, 'README.md'), documentation.readme);
|
|
338
|
-
await fs.writeFile(path.join(docsDir, 'api-reference.md'), documentation.apiDocs);
|
|
339
|
-
await fs.writeFile(path.join(docsDir, 'user-guide.md'), documentation.userGuide);
|
|
340
|
-
}
|
|
341
|
-
return documentation;
|
|
342
|
-
}
|
|
343
|
-
// Helper methods for generating content
|
|
344
|
-
determineAppType(description) {
|
|
345
|
-
const desc = description.toLowerCase();
|
|
346
|
-
if (desc.includes('rest api') || desc.includes('api')) return 'rest-api';
|
|
347
|
-
if (desc.includes('flask') || desc.includes('fastapi')) return 'python-web';
|
|
348
|
-
if (desc.includes('pandas') || desc.includes('data')) return 'data-pipeline';
|
|
349
|
-
if (desc.includes('machine learning') || desc.includes('ml')) return 'ml-app';
|
|
350
|
-
if (desc.includes('cli') || desc.includes('command')) return 'cli-tool';
|
|
351
|
-
if (desc.includes('scraper') || desc.includes('scraping')) return 'web-scraper';
|
|
352
|
-
if (desc.includes('dashboard')) return 'dashboard';
|
|
353
|
-
return 'generic';
|
|
354
|
-
}
|
|
355
|
-
detectLanguage(description) {
|
|
356
|
-
const desc = description.toLowerCase();
|
|
357
|
-
if (desc.includes('python') || desc.includes('flask') || desc.includes('pandas')) return 'python';
|
|
358
|
-
if (desc.includes('typescript') || desc.includes('ts')) return 'typescript';
|
|
359
|
-
if (desc.includes('java')) return 'java';
|
|
360
|
-
return 'javascript';
|
|
361
|
-
}
|
|
362
|
-
generateRequirements(objective, appType) {
|
|
363
|
-
return {
|
|
364
|
-
functional: this.getFunctionalRequirements(appType),
|
|
365
|
-
nonFunctional: this.getNonFunctionalRequirements(appType),
|
|
366
|
-
technical: this.getTechnicalRequirements(appType),
|
|
367
|
-
business: this.getBusinessRequirements(appType)
|
|
368
|
-
};
|
|
369
|
-
}
|
|
370
|
-
generateUserStories(appType) {
|
|
371
|
-
const stories = {
|
|
372
|
-
'rest-api': [
|
|
373
|
-
{
|
|
374
|
-
id: 'US001',
|
|
375
|
-
story: 'As a developer, I want to create resources via POST endpoints',
|
|
376
|
-
priority: 'high'
|
|
377
|
-
},
|
|
378
|
-
{
|
|
379
|
-
id: 'US002',
|
|
380
|
-
story: 'As a developer, I want to retrieve resources via GET endpoints',
|
|
381
|
-
priority: 'high'
|
|
382
|
-
},
|
|
383
|
-
{
|
|
384
|
-
id: 'US003',
|
|
385
|
-
story: 'As a developer, I want to update resources via PUT/PATCH endpoints',
|
|
386
|
-
priority: 'medium'
|
|
387
|
-
},
|
|
388
|
-
{
|
|
389
|
-
id: 'US004',
|
|
390
|
-
story: 'As a developer, I want to delete resources via DELETE endpoints',
|
|
391
|
-
priority: 'medium'
|
|
392
|
-
},
|
|
393
|
-
{
|
|
394
|
-
id: 'US005',
|
|
395
|
-
story: 'As a developer, I want API documentation to understand endpoints',
|
|
396
|
-
priority: 'high'
|
|
397
|
-
}
|
|
398
|
-
],
|
|
399
|
-
'python-web': [
|
|
400
|
-
{
|
|
401
|
-
id: 'US001',
|
|
402
|
-
story: 'As a user, I want to access the web application via browser',
|
|
403
|
-
priority: 'high'
|
|
404
|
-
},
|
|
405
|
-
{
|
|
406
|
-
id: 'US002',
|
|
407
|
-
story: 'As a user, I want to authenticate securely',
|
|
408
|
-
priority: 'high'
|
|
409
|
-
},
|
|
410
|
-
{
|
|
411
|
-
id: 'US003',
|
|
412
|
-
story: 'As a user, I want responsive UI on all devices',
|
|
413
|
-
priority: 'medium'
|
|
414
|
-
}
|
|
415
|
-
],
|
|
416
|
-
'data-pipeline': [
|
|
417
|
-
{
|
|
418
|
-
id: 'US001',
|
|
419
|
-
story: 'As a data analyst, I want to load data from multiple sources',
|
|
420
|
-
priority: 'high'
|
|
421
|
-
},
|
|
422
|
-
{
|
|
423
|
-
id: 'US002',
|
|
424
|
-
story: 'As a data analyst, I want to transform data efficiently',
|
|
425
|
-
priority: 'high'
|
|
426
|
-
},
|
|
427
|
-
{
|
|
428
|
-
id: 'US003',
|
|
429
|
-
story: 'As a data analyst, I want to export results in various formats',
|
|
430
|
-
priority: 'medium'
|
|
431
|
-
}
|
|
432
|
-
]
|
|
433
|
-
};
|
|
434
|
-
return stories[appType] || [
|
|
435
|
-
{
|
|
436
|
-
id: 'US001',
|
|
437
|
-
story: 'As a user, I want to use the main functionality',
|
|
438
|
-
priority: 'high'
|
|
439
|
-
}
|
|
440
|
-
];
|
|
441
|
-
}
|
|
442
|
-
generateAcceptanceCriteria(appType) {
|
|
443
|
-
const criteria = {
|
|
444
|
-
'rest-api': {
|
|
445
|
-
endpoints: [
|
|
446
|
-
'All CRUD operations return appropriate status codes',
|
|
447
|
-
'API responses follow consistent format'
|
|
448
|
-
],
|
|
449
|
-
performance: [
|
|
450
|
-
'Response time < 200ms for simple queries',
|
|
451
|
-
'Can handle 100 concurrent requests'
|
|
452
|
-
],
|
|
453
|
-
security: [
|
|
454
|
-
'All endpoints require authentication',
|
|
455
|
-
'Input validation on all parameters'
|
|
456
|
-
]
|
|
457
|
-
},
|
|
458
|
-
'python-web': {
|
|
459
|
-
functionality: [
|
|
460
|
-
'All pages load without errors',
|
|
461
|
-
'Forms validate input correctly'
|
|
462
|
-
],
|
|
463
|
-
usability: [
|
|
464
|
-
'UI is responsive on mobile devices',
|
|
465
|
-
'Page load time < 3 seconds'
|
|
466
|
-
],
|
|
467
|
-
compatibility: [
|
|
468
|
-
'Works on Chrome, Firefox, Safari',
|
|
469
|
-
'Supports Python 3.8+'
|
|
470
|
-
]
|
|
471
|
-
}
|
|
472
|
-
};
|
|
473
|
-
return criteria[appType] || {
|
|
474
|
-
functionality: [
|
|
475
|
-
'Core features work as expected'
|
|
476
|
-
],
|
|
477
|
-
quality: [
|
|
478
|
-
'Code follows best practices'
|
|
479
|
-
]
|
|
480
|
-
};
|
|
481
|
-
}
|
|
482
|
-
async generateFailingTests(appType, language) {
|
|
483
|
-
const testFramework = this.getTestFramework(language);
|
|
484
|
-
const tests = {
|
|
485
|
-
unit: this.generateUnitTestCases(appType, language, testFramework),
|
|
486
|
-
integration: this.generateIntegrationTestCases(appType, language, testFramework),
|
|
487
|
-
fixtures: this.generateTestFixtures(appType),
|
|
488
|
-
mocks: this.generateMocks(appType)
|
|
489
|
-
};
|
|
490
|
-
return tests;
|
|
491
|
-
}
|
|
492
|
-
async generateMinimalImplementation(appType, language, tests) {
|
|
493
|
-
return {
|
|
494
|
-
modules: this.generateModules(appType, language),
|
|
495
|
-
classes: this.generateClasses(appType, language),
|
|
496
|
-
functions: this.generateFunctions(appType, language),
|
|
497
|
-
config: this.generateConfig(appType, language)
|
|
498
|
-
};
|
|
499
|
-
}
|
|
500
|
-
async refactorImplementation(implementation, tests) {
|
|
501
|
-
return {
|
|
502
|
-
...implementation,
|
|
503
|
-
optimized: true,
|
|
504
|
-
patterns: [
|
|
505
|
-
'SOLID principles applied',
|
|
506
|
-
'DRY principle followed'
|
|
507
|
-
],
|
|
508
|
-
performance: 'Optimized for efficiency',
|
|
509
|
-
maintainability: 'Clean, readable code'
|
|
510
|
-
};
|
|
511
|
-
}
|
|
512
|
-
async createProjectStructure(targetDir, appType, language) {
|
|
513
|
-
const structure = this.getProjectStructure(appType, language);
|
|
514
|
-
for (const dir of structure.directories){
|
|
515
|
-
await fs.mkdir(path.join(targetDir, dir), {
|
|
516
|
-
recursive: true
|
|
517
|
-
});
|
|
518
|
-
}
|
|
519
|
-
}
|
|
520
|
-
async writeTestFiles(targetDir, tests, language) {
|
|
521
|
-
const testDir = path.join(targetDir, this.getTestDirectory(language));
|
|
522
|
-
await fs.mkdir(testDir, {
|
|
523
|
-
recursive: true
|
|
524
|
-
});
|
|
525
|
-
// Write unit tests
|
|
526
|
-
for (const [name, content] of Object.entries(tests.unit)){
|
|
527
|
-
const filename = this.getTestFileName(name, language);
|
|
528
|
-
await fs.writeFile(path.join(testDir, filename), content);
|
|
529
|
-
}
|
|
530
|
-
}
|
|
531
|
-
async writeImplementationFiles(targetDir, implementation, language) {
|
|
532
|
-
const srcDir = path.join(targetDir, this.getSourceDirectory(language));
|
|
533
|
-
await fs.mkdir(srcDir, {
|
|
534
|
-
recursive: true
|
|
535
|
-
});
|
|
536
|
-
// Write implementation files
|
|
537
|
-
for (const [module, content] of Object.entries(implementation.modules)){
|
|
538
|
-
const filename = this.getSourceFileName(module, language);
|
|
539
|
-
await fs.writeFile(path.join(srcDir, filename), content);
|
|
540
|
-
}
|
|
541
|
-
}
|
|
542
|
-
async generateProjectFiles(targetDir, appType, language) {
|
|
543
|
-
const files = await this.getProjectFiles(appType, language);
|
|
544
|
-
for (const [filename, content] of Object.entries(files)){
|
|
545
|
-
await fs.writeFile(path.join(targetDir, filename), content);
|
|
546
|
-
}
|
|
547
|
-
}
|
|
548
|
-
// Utility methods for language-specific details
|
|
549
|
-
getTestFramework(language) {
|
|
550
|
-
const frameworks = {
|
|
551
|
-
python: 'pytest',
|
|
552
|
-
javascript: 'jest',
|
|
553
|
-
typescript: 'jest',
|
|
554
|
-
java: 'junit'
|
|
555
|
-
};
|
|
556
|
-
return frameworks[language] || 'generic';
|
|
557
|
-
}
|
|
558
|
-
getProjectStructure(appType, language) {
|
|
559
|
-
const structures = {
|
|
560
|
-
'python-rest-api': {
|
|
561
|
-
directories: [
|
|
562
|
-
'src',
|
|
563
|
-
'tests',
|
|
564
|
-
'docs',
|
|
565
|
-
'config',
|
|
566
|
-
'migrations',
|
|
567
|
-
'scripts'
|
|
568
|
-
],
|
|
569
|
-
files: [
|
|
570
|
-
'requirements.txt',
|
|
571
|
-
'setup.py',
|
|
572
|
-
'pytest.ini',
|
|
573
|
-
'.gitignore',
|
|
574
|
-
'Dockerfile'
|
|
575
|
-
]
|
|
576
|
-
},
|
|
577
|
-
'javascript-rest-api': {
|
|
578
|
-
directories: [
|
|
579
|
-
'src',
|
|
580
|
-
'tests',
|
|
581
|
-
'docs',
|
|
582
|
-
'config',
|
|
583
|
-
'public'
|
|
584
|
-
],
|
|
585
|
-
files: [
|
|
586
|
-
'package.json',
|
|
587
|
-
'tsconfig.json',
|
|
588
|
-
'jest.config.js',
|
|
589
|
-
'.gitignore',
|
|
590
|
-
'Dockerfile'
|
|
591
|
-
]
|
|
592
|
-
}
|
|
593
|
-
};
|
|
594
|
-
return structures[`${language}-${appType}`] || {
|
|
595
|
-
directories: [
|
|
596
|
-
'src',
|
|
597
|
-
'tests',
|
|
598
|
-
'docs'
|
|
599
|
-
],
|
|
600
|
-
files: [
|
|
601
|
-
'README.md',
|
|
602
|
-
'.gitignore'
|
|
603
|
-
]
|
|
604
|
-
};
|
|
605
|
-
}
|
|
606
|
-
getTestDirectory(language) {
|
|
607
|
-
return language === 'python' ? 'tests' : '__tests__';
|
|
608
|
-
}
|
|
609
|
-
getSourceDirectory(language) {
|
|
610
|
-
return 'src';
|
|
611
|
-
}
|
|
612
|
-
getTestFileName(name, language) {
|
|
613
|
-
if (language === 'python') return `test_${name}.py`;
|
|
614
|
-
return `${name}.test.${language === 'typescript' ? 'ts' : 'js'}`;
|
|
615
|
-
}
|
|
616
|
-
getSourceFileName(name, language) {
|
|
617
|
-
const extensions = {
|
|
618
|
-
python: 'py',
|
|
619
|
-
javascript: 'js',
|
|
620
|
-
typescript: 'ts',
|
|
621
|
-
java: 'java'
|
|
622
|
-
};
|
|
623
|
-
return `${name}.${extensions[language] || 'js'}`;
|
|
624
|
-
}
|
|
625
|
-
// Content generation methods
|
|
626
|
-
getFunctionalRequirements(appType) {
|
|
627
|
-
const requirements = {
|
|
628
|
-
'rest-api': [
|
|
629
|
-
'Implement RESTful endpoints for all resources',
|
|
630
|
-
'Support JSON request/response format',
|
|
631
|
-
'Implement proper HTTP status codes',
|
|
632
|
-
'Support pagination for list endpoints',
|
|
633
|
-
'Implement filtering and sorting'
|
|
634
|
-
],
|
|
635
|
-
'data-pipeline': [
|
|
636
|
-
'Load data from CSV, JSON, and database sources',
|
|
637
|
-
'Validate and clean input data',
|
|
638
|
-
'Transform data according to business rules',
|
|
639
|
-
'Generate summary statistics',
|
|
640
|
-
'Export results in multiple formats'
|
|
641
|
-
],
|
|
642
|
-
'ml-app': [
|
|
643
|
-
'Preprocess input data for model',
|
|
644
|
-
'Train model with configurable parameters',
|
|
645
|
-
'Evaluate model performance',
|
|
646
|
-
'Save and load trained models',
|
|
647
|
-
'Provide prediction API'
|
|
648
|
-
]
|
|
649
|
-
};
|
|
650
|
-
return requirements[appType] || [
|
|
651
|
-
'Implement core functionality'
|
|
652
|
-
];
|
|
653
|
-
}
|
|
654
|
-
getNonFunctionalRequirements(appType) {
|
|
655
|
-
return [
|
|
656
|
-
'Response time < 500ms for 95% of requests',
|
|
657
|
-
'Support 1000 concurrent users',
|
|
658
|
-
'99.9% uptime availability',
|
|
659
|
-
'Secure authentication and authorization',
|
|
660
|
-
'Comprehensive logging and monitoring'
|
|
661
|
-
];
|
|
662
|
-
}
|
|
663
|
-
getTechnicalRequirements(appType) {
|
|
664
|
-
const tech = {
|
|
665
|
-
'rest-api': [
|
|
666
|
-
'Use appropriate web framework (Express, Flask, FastAPI)',
|
|
667
|
-
'Implement database ORM/ODM',
|
|
668
|
-
'Use environment variables for configuration',
|
|
669
|
-
'Implement proper error handling',
|
|
670
|
-
'Add request validation middleware'
|
|
671
|
-
],
|
|
672
|
-
'data-pipeline': [
|
|
673
|
-
'Use pandas for data manipulation',
|
|
674
|
-
'Implement parallel processing for large datasets',
|
|
675
|
-
'Use appropriate data storage (SQL, NoSQL)',
|
|
676
|
-
'Implement data validation rules',
|
|
677
|
-
'Add progress tracking for long operations'
|
|
678
|
-
]
|
|
679
|
-
};
|
|
680
|
-
return tech[appType] || [
|
|
681
|
-
'Follow best practices for the technology stack'
|
|
682
|
-
];
|
|
683
|
-
}
|
|
684
|
-
getBusinessRequirements(appType) {
|
|
685
|
-
return [
|
|
686
|
-
'Meet project timeline and budget',
|
|
687
|
-
'Ensure scalability for future growth',
|
|
688
|
-
'Maintain code quality standards',
|
|
689
|
-
'Provide comprehensive documentation',
|
|
690
|
-
'Enable easy maintenance and updates'
|
|
691
|
-
];
|
|
692
|
-
}
|
|
693
|
-
generateUnitTestCases(appType, language, framework) {
|
|
694
|
-
if (language === 'python' && appType === 'rest-api') {
|
|
695
|
-
return {
|
|
696
|
-
test_models: `import pytest
|
|
697
|
-
from src.models import User, Product
|
|
698
|
-
|
|
699
|
-
class TestUserModel:
|
|
700
|
-
def test_create_user(self):
|
|
701
|
-
"""Test user creation with valid data"""
|
|
702
|
-
user = User(username="testuser", email="test@example.com")
|
|
703
|
-
assert user.username == "testuser"
|
|
704
|
-
assert user.email == "test@example.com"
|
|
705
|
-
assert user.id is None # Not saved yet
|
|
706
|
-
|
|
707
|
-
def test_user_validation(self):
|
|
708
|
-
"""Test user validation rules"""
|
|
709
|
-
with pytest.raises(ValueError):
|
|
710
|
-
User(username="", email="invalid-email")
|
|
711
|
-
|
|
712
|
-
def test_user_serialization(self):
|
|
713
|
-
"""Test user to dict conversion"""
|
|
714
|
-
user = User(username="testuser", email="test@example.com")
|
|
715
|
-
data = user.to_dict()
|
|
716
|
-
assert data['username'] == "testuser"
|
|
717
|
-
assert 'password' not in data # Should not expose password
|
|
718
|
-
|
|
719
|
-
class TestProductModel:
|
|
720
|
-
def test_create_product(self):
|
|
721
|
-
"""Test product creation"""
|
|
722
|
-
product = Product(name="Test Product", price=99.99)
|
|
723
|
-
assert product.name == "Test Product"
|
|
724
|
-
assert product.price == 99.99
|
|
725
|
-
`,
|
|
726
|
-
test_services: `import pytest
|
|
727
|
-
from unittest.mock import Mock, patch
|
|
728
|
-
from src.services import UserService, ProductService
|
|
729
|
-
|
|
730
|
-
class TestUserService:
|
|
731
|
-
@pytest.fixture
|
|
732
|
-
def user_service(self):
|
|
733
|
-
return UserService()
|
|
734
|
-
|
|
735
|
-
def test_create_user_success(self, user_service):
|
|
736
|
-
"""Test successful user creation"""
|
|
737
|
-
user_data = {"username": "newuser", "email": "new@example.com"}
|
|
738
|
-
with patch('src.services.db') as mock_db:
|
|
739
|
-
user = user_service.create_user(user_data)
|
|
740
|
-
assert user.username == "newuser"
|
|
741
|
-
mock_db.session.add.assert_called_once()
|
|
742
|
-
|
|
743
|
-
def test_get_user_by_id(self, user_service):
|
|
744
|
-
"""Test retrieving user by ID"""
|
|
745
|
-
with patch('src.services.User.query') as mock_query:
|
|
746
|
-
mock_query.get.return_value = Mock(id=1, username="testuser")
|
|
747
|
-
user = user_service.get_user(1)
|
|
748
|
-
assert user.id == 1
|
|
749
|
-
assert user.username == "testuser"
|
|
750
|
-
`
|
|
751
|
-
};
|
|
752
|
-
}
|
|
753
|
-
// Return generic tests for other combinations
|
|
754
|
-
return {
|
|
755
|
-
test_main: 'Test file content for main functionality'
|
|
756
|
-
};
|
|
757
|
-
}
|
|
758
|
-
generateIntegrationTestCases(appType, language, framework) {
|
|
759
|
-
if (language === 'python' && appType === 'rest-api') {
|
|
760
|
-
return {
|
|
761
|
-
test_api: `import pytest
|
|
762
|
-
from flask import Flask
|
|
763
|
-
from src.app import create_app
|
|
764
|
-
|
|
765
|
-
class TestAPI:
|
|
766
|
-
@pytest.fixture
|
|
767
|
-
def client(self):
|
|
768
|
-
app = create_app('testing')
|
|
769
|
-
with app.test_client() as client:
|
|
770
|
-
yield client
|
|
771
|
-
|
|
772
|
-
def test_health_endpoint(self, client):
|
|
773
|
-
"""Test health check endpoint"""
|
|
774
|
-
response = client.get('/health')
|
|
775
|
-
assert response.status_code == 200
|
|
776
|
-
assert response.json['status'] == 'healthy'
|
|
777
|
-
|
|
778
|
-
def test_create_user_endpoint(self, client):
|
|
779
|
-
"""Test POST /users endpoint"""
|
|
780
|
-
user_data = {
|
|
781
|
-
"username": "testuser",
|
|
782
|
-
"email": "test@example.com",
|
|
783
|
-
"password": "securepass123"
|
|
784
|
-
}
|
|
785
|
-
response = client.post('/api/users', json=user_data)
|
|
786
|
-
assert response.status_code == 201
|
|
787
|
-
assert response.json['username'] == "testuser"
|
|
788
|
-
|
|
789
|
-
def test_get_users_endpoint(self, client):
|
|
790
|
-
"""Test GET /users endpoint"""
|
|
791
|
-
response = client.get('/api/users')
|
|
792
|
-
assert response.status_code == 200
|
|
793
|
-
assert isinstance(response.json, list)
|
|
794
|
-
`
|
|
795
|
-
};
|
|
796
|
-
}
|
|
797
|
-
return {
|
|
798
|
-
test_integration: 'Integration test content'
|
|
799
|
-
};
|
|
800
|
-
}
|
|
801
|
-
generateTestFixtures(appType) {
|
|
802
|
-
return {
|
|
803
|
-
users: [
|
|
804
|
-
{
|
|
805
|
-
id: 1,
|
|
806
|
-
username: 'user1',
|
|
807
|
-
email: 'user1@example.com'
|
|
808
|
-
},
|
|
809
|
-
{
|
|
810
|
-
id: 2,
|
|
811
|
-
username: 'user2',
|
|
812
|
-
email: 'user2@example.com'
|
|
813
|
-
}
|
|
814
|
-
],
|
|
815
|
-
products: [
|
|
816
|
-
{
|
|
817
|
-
id: 1,
|
|
818
|
-
name: 'Product 1',
|
|
819
|
-
price: 99.99
|
|
820
|
-
},
|
|
821
|
-
{
|
|
822
|
-
id: 2,
|
|
823
|
-
name: 'Product 2',
|
|
824
|
-
price: 149.99
|
|
825
|
-
}
|
|
826
|
-
]
|
|
827
|
-
};
|
|
828
|
-
}
|
|
829
|
-
generateMocks(appType) {
|
|
830
|
-
return {
|
|
831
|
-
database: 'Mock database connection',
|
|
832
|
-
externalAPI: 'Mock external API calls',
|
|
833
|
-
fileSystem: 'Mock file system operations'
|
|
834
|
-
};
|
|
835
|
-
}
|
|
836
|
-
generateModules(appType, language) {
|
|
837
|
-
if (language === 'python' && appType === 'rest-api') {
|
|
838
|
-
return {
|
|
839
|
-
app: `from flask import Flask
|
|
840
|
-
from flask_cors import CORS
|
|
841
|
-
from config import Config
|
|
842
|
-
from models import db
|
|
843
|
-
from routes import api_bp
|
|
844
|
-
|
|
845
|
-
def create_app(config_name='development'):
|
|
846
|
-
app = Flask(__name__)
|
|
847
|
-
app.config.from_object(Config[config_name])
|
|
848
|
-
|
|
849
|
-
# Initialize extensions
|
|
850
|
-
db.init_app(app)
|
|
851
|
-
CORS(app)
|
|
852
|
-
|
|
853
|
-
# Register blueprints
|
|
854
|
-
app.register_blueprint(api_bp, url_prefix='/api')
|
|
855
|
-
|
|
856
|
-
# Health check
|
|
857
|
-
@app.route('/health')
|
|
858
|
-
def health_check():
|
|
859
|
-
return {'status': 'healthy', 'service': 'REST API'}
|
|
860
|
-
|
|
861
|
-
return app
|
|
862
|
-
|
|
863
|
-
if __name__ == '__main__':
|
|
864
|
-
app = create_app()
|
|
865
|
-
app.run(debug=True)
|
|
866
|
-
`,
|
|
867
|
-
models: `from flask_sqlalchemy import SQLAlchemy
|
|
868
|
-
from datetime import datetime
|
|
869
|
-
from werkzeug.security import generate_password_hash, check_password_hash
|
|
870
|
-
|
|
871
|
-
db = SQLAlchemy()
|
|
872
|
-
|
|
873
|
-
class User(db.Model):
|
|
874
|
-
id = db.Column(db.Integer, primary_key=True)
|
|
875
|
-
username = db.Column(db.String(80), unique=True, nullable=False)
|
|
876
|
-
email = db.Column(db.String(120), unique=True, nullable=False)
|
|
877
|
-
password_hash = db.Column(db.String(128))
|
|
878
|
-
created_at = db.Column(db.DateTime, default=datetime.utcnow)
|
|
879
|
-
updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
|
|
880
|
-
|
|
881
|
-
def set_password(self, password):
|
|
882
|
-
self.password_hash = generate_password_hash(password)
|
|
883
|
-
|
|
884
|
-
def check_password(self, password):
|
|
885
|
-
return check_password_hash(self.password_hash, password)
|
|
886
|
-
|
|
887
|
-
def to_dict(self):
|
|
888
|
-
return {
|
|
889
|
-
'id': self.id,
|
|
890
|
-
'username': self.username,
|
|
891
|
-
'email': self.email,
|
|
892
|
-
'created_at': self.created_at.isoformat(),
|
|
893
|
-
'updated_at': self.updated_at.isoformat()
|
|
894
|
-
}
|
|
895
|
-
|
|
896
|
-
class Product(db.Model):
|
|
897
|
-
id = db.Column(db.Integer, primary_key=True)
|
|
898
|
-
name = db.Column(db.String(100), nullable=False)
|
|
899
|
-
description = db.Column(db.Text)
|
|
900
|
-
price = db.Column(db.Float, nullable=False)
|
|
901
|
-
stock = db.Column(db.Integer, default=0)
|
|
902
|
-
created_at = db.Column(db.DateTime, default=datetime.utcnow)
|
|
903
|
-
|
|
904
|
-
def to_dict(self):
|
|
905
|
-
return {
|
|
906
|
-
'id': self.id,
|
|
907
|
-
'name': self.name,
|
|
908
|
-
'description': self.description,
|
|
909
|
-
'price': self.price,
|
|
910
|
-
'stock': self.stock,
|
|
911
|
-
'created_at': self.created_at.isoformat()
|
|
912
|
-
}
|
|
913
|
-
`,
|
|
914
|
-
routes: `from flask import Blueprint, request, jsonify
|
|
915
|
-
from models import db, User, Product
|
|
916
|
-
from services import UserService, ProductService
|
|
917
|
-
|
|
918
|
-
api_bp = Blueprint('api', __name__)
|
|
919
|
-
user_service = UserService()
|
|
920
|
-
product_service = ProductService()
|
|
921
|
-
|
|
922
|
-
# User routes
|
|
923
|
-
@api_bp.route('/users', methods=['GET'])
|
|
924
|
-
def get_users():
|
|
925
|
-
page = request.args.get('page', 1, type=int)
|
|
926
|
-
per_page = request.args.get('per_page', 10, type=int)
|
|
927
|
-
|
|
928
|
-
users = User.query.paginate(page=page, per_page=per_page)
|
|
929
|
-
return jsonify({
|
|
930
|
-
'users': [u.to_dict() for u in users.items],
|
|
931
|
-
'total': users.total,
|
|
932
|
-
'pages': users.pages,
|
|
933
|
-
'current_page': page
|
|
934
|
-
})
|
|
935
|
-
|
|
936
|
-
@api_bp.route('/users/<int:user_id>', methods=['GET'])
|
|
937
|
-
def get_user(user_id):
|
|
938
|
-
user = User.query.get_or_404(user_id)
|
|
939
|
-
return jsonify(user.to_dict())
|
|
940
|
-
|
|
941
|
-
@api_bp.route('/users', methods=['POST'])
|
|
942
|
-
def create_user():
|
|
943
|
-
data = request.get_json()
|
|
944
|
-
|
|
945
|
-
# Validation
|
|
946
|
-
if not data.get('username') or not data.get('email'):
|
|
947
|
-
return jsonify({'error': 'Username and email required'}), 400
|
|
948
|
-
|
|
949
|
-
# Check if user exists
|
|
950
|
-
if User.query.filter_by(username=data['username']).first():
|
|
951
|
-
return jsonify({'error': 'Username already exists'}), 409
|
|
952
|
-
|
|
953
|
-
user = user_service.create_user(data)
|
|
954
|
-
return jsonify(user.to_dict()), 201
|
|
955
|
-
|
|
956
|
-
@api_bp.route('/users/<int:user_id>', methods=['PUT'])
|
|
957
|
-
def update_user(user_id):
|
|
958
|
-
user = User.query.get_or_404(user_id)
|
|
959
|
-
data = request.get_json()
|
|
960
|
-
|
|
961
|
-
user = user_service.update_user(user, data)
|
|
962
|
-
return jsonify(user.to_dict())
|
|
963
|
-
|
|
964
|
-
@api_bp.route('/users/<int:user_id>', methods=['DELETE'])
|
|
965
|
-
def delete_user(user_id):
|
|
966
|
-
user = User.query.get_or_404(user_id)
|
|
967
|
-
user_service.delete_user(user)
|
|
968
|
-
return '', 204
|
|
969
|
-
|
|
970
|
-
# Product routes
|
|
971
|
-
@api_bp.route('/products', methods=['GET'])
|
|
972
|
-
def get_products():
|
|
973
|
-
products = Product.query.all()
|
|
974
|
-
return jsonify([p.to_dict() for p in products])
|
|
975
|
-
|
|
976
|
-
@api_bp.route('/products', methods=['POST'])
|
|
977
|
-
def create_product():
|
|
978
|
-
data = request.get_json()
|
|
979
|
-
product = product_service.create_product(data)
|
|
980
|
-
return jsonify(product.to_dict()), 201
|
|
981
|
-
`,
|
|
982
|
-
services: `from models import db, User, Product
|
|
983
|
-
|
|
984
|
-
class UserService:
|
|
985
|
-
def create_user(self, data):
|
|
986
|
-
user = User(
|
|
987
|
-
username=data['username'],
|
|
988
|
-
email=data['email']
|
|
989
|
-
)
|
|
990
|
-
if 'password' in data:
|
|
991
|
-
user.set_password(data['password'])
|
|
992
|
-
|
|
993
|
-
db.session.add(user)
|
|
994
|
-
db.session.commit()
|
|
995
|
-
return user
|
|
996
|
-
|
|
997
|
-
def update_user(self, user, data):
|
|
998
|
-
if 'username' in data:
|
|
999
|
-
user.username = data['username']
|
|
1000
|
-
if 'email' in data:
|
|
1001
|
-
user.email = data['email']
|
|
1002
|
-
if 'password' in data:
|
|
1003
|
-
user.set_password(data['password'])
|
|
1004
|
-
|
|
1005
|
-
db.session.commit()
|
|
1006
|
-
return user
|
|
1007
|
-
|
|
1008
|
-
def delete_user(self, user):
|
|
1009
|
-
db.session.delete(user)
|
|
1010
|
-
db.session.commit()
|
|
1011
|
-
|
|
1012
|
-
def get_user(self, user_id):
|
|
1013
|
-
return User.query.get(user_id)
|
|
1014
|
-
|
|
1015
|
-
class ProductService:
|
|
1016
|
-
def create_product(self, data):
|
|
1017
|
-
product = Product(
|
|
1018
|
-
name=data['name'],
|
|
1019
|
-
description=data.get('description', ''),
|
|
1020
|
-
price=data['price'],
|
|
1021
|
-
stock=data.get('stock', 0)
|
|
1022
|
-
)
|
|
1023
|
-
|
|
1024
|
-
db.session.add(product)
|
|
1025
|
-
db.session.commit()
|
|
1026
|
-
return product
|
|
1027
|
-
|
|
1028
|
-
def update_product(self, product, data):
|
|
1029
|
-
if 'name' in data:
|
|
1030
|
-
product.name = data['name']
|
|
1031
|
-
if 'description' in data:
|
|
1032
|
-
product.description = data['description']
|
|
1033
|
-
if 'price' in data:
|
|
1034
|
-
product.price = data['price']
|
|
1035
|
-
if 'stock' in data:
|
|
1036
|
-
product.stock = data['stock']
|
|
1037
|
-
|
|
1038
|
-
db.session.commit()
|
|
1039
|
-
return product
|
|
1040
|
-
`,
|
|
1041
|
-
config: `import os
|
|
1042
|
-
from dotenv import load_dotenv
|
|
1043
|
-
|
|
1044
|
-
load_dotenv()
|
|
1045
|
-
|
|
1046
|
-
class BaseConfig:
|
|
1047
|
-
SECRET_KEY = os.environ.get('SECRET_KEY', 'dev-secret-key')
|
|
1048
|
-
SQLALCHEMY_TRACK_MODIFICATIONS = False
|
|
1049
|
-
|
|
1050
|
-
class DevelopmentConfig(BaseConfig):
|
|
1051
|
-
DEBUG = True
|
|
1052
|
-
SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL', 'sqlite:///dev.db')
|
|
1053
|
-
|
|
1054
|
-
class TestingConfig(BaseConfig):
|
|
1055
|
-
TESTING = True
|
|
1056
|
-
SQLALCHEMY_DATABASE_URI = 'sqlite:///:memory:'
|
|
1057
|
-
|
|
1058
|
-
class ProductionConfig(BaseConfig):
|
|
1059
|
-
DEBUG = False
|
|
1060
|
-
SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL')
|
|
1061
|
-
|
|
1062
|
-
Config = {
|
|
1063
|
-
'development': DevelopmentConfig,
|
|
1064
|
-
'testing': TestingConfig,
|
|
1065
|
-
'production': ProductionConfig,
|
|
1066
|
-
'default': DevelopmentConfig
|
|
1067
|
-
}
|
|
1068
|
-
`
|
|
1069
|
-
};
|
|
1070
|
-
}
|
|
1071
|
-
return {
|
|
1072
|
-
main: 'Main module implementation'
|
|
1073
|
-
};
|
|
1074
|
-
}
|
|
1075
|
-
generateClasses(appType, language) {
|
|
1076
|
-
return {
|
|
1077
|
-
BaseClass: 'Base class implementation',
|
|
1078
|
-
ServiceClass: 'Service class implementation'
|
|
1079
|
-
};
|
|
1080
|
-
}
|
|
1081
|
-
generateFunctions(appType, language) {
|
|
1082
|
-
return {
|
|
1083
|
-
helpers: 'Helper functions',
|
|
1084
|
-
validators: 'Validation functions'
|
|
1085
|
-
};
|
|
1086
|
-
}
|
|
1087
|
-
generateConfig(appType, language) {
|
|
1088
|
-
return {
|
|
1089
|
-
database: 'Database configuration',
|
|
1090
|
-
api: 'API configuration',
|
|
1091
|
-
logging: 'Logging configuration'
|
|
1092
|
-
};
|
|
1093
|
-
}
|
|
1094
|
-
async getProjectFiles(appType, language) {
|
|
1095
|
-
if (language === 'python') {
|
|
1096
|
-
return {
|
|
1097
|
-
'requirements.txt': `flask==2.3.2
|
|
1098
|
-
flask-sqlalchemy==3.0.5
|
|
1099
|
-
flask-cors==4.0.0
|
|
1100
|
-
python-dotenv==1.0.0
|
|
1101
|
-
pytest==7.4.0
|
|
1102
|
-
pytest-cov==4.1.0
|
|
1103
|
-
black==23.7.0
|
|
1104
|
-
flake8==6.0.0
|
|
1105
|
-
`,
|
|
1106
|
-
'setup.py': `from setuptools import setup, find_packages
|
|
1107
|
-
|
|
1108
|
-
setup(
|
|
1109
|
-
name="${appType}",
|
|
1110
|
-
version="1.0.0",
|
|
1111
|
-
packages=find_packages(),
|
|
1112
|
-
install_requires=[
|
|
1113
|
-
'flask>=2.3.0',
|
|
1114
|
-
'flask-sqlalchemy>=3.0.0',
|
|
1115
|
-
'flask-cors>=4.0.0',
|
|
1116
|
-
'python-dotenv>=1.0.0',
|
|
1117
|
-
],
|
|
1118
|
-
extras_require={
|
|
1119
|
-
'dev': [
|
|
1120
|
-
'pytest>=7.4.0',
|
|
1121
|
-
'pytest-cov>=4.1.0',
|
|
1122
|
-
'black>=23.7.0',
|
|
1123
|
-
'flake8>=6.0.0',
|
|
1124
|
-
]
|
|
1125
|
-
}
|
|
1126
|
-
)
|
|
1127
|
-
`,
|
|
1128
|
-
'pytest.ini': `[pytest]
|
|
1129
|
-
testpaths = tests
|
|
1130
|
-
python_files = test_*.py
|
|
1131
|
-
python_classes = Test*
|
|
1132
|
-
python_functions = test_*
|
|
1133
|
-
addopts = -v --cov=src --cov-report=html --cov-report=term
|
|
1134
|
-
`,
|
|
1135
|
-
'.gitignore': `__pycache__/
|
|
1136
|
-
*.py[cod]
|
|
1137
|
-
*$py.class
|
|
1138
|
-
*.so
|
|
1139
|
-
.Python
|
|
1140
|
-
env/
|
|
1141
|
-
venv/
|
|
1142
|
-
.env
|
|
1143
|
-
*.db
|
|
1144
|
-
.coverage
|
|
1145
|
-
htmlcov/
|
|
1146
|
-
.pytest_cache/
|
|
1147
|
-
`,
|
|
1148
|
-
Dockerfile: `FROM python:3.9-slim
|
|
1149
|
-
|
|
1150
|
-
WORKDIR /app
|
|
1151
|
-
|
|
1152
|
-
COPY requirements.txt .
|
|
1153
|
-
RUN pip install --no-cache-dir -r requirements.txt
|
|
1154
|
-
|
|
1155
|
-
COPY . .
|
|
1156
|
-
|
|
1157
|
-
EXPOSE 5000
|
|
1158
|
-
|
|
1159
|
-
CMD ["python", "-m", "src.app"]
|
|
1160
|
-
`,
|
|
1161
|
-
'docker-compose.yml': `version: '3.8'
|
|
1162
|
-
|
|
1163
|
-
services:
|
|
1164
|
-
app:
|
|
1165
|
-
build: .
|
|
1166
|
-
ports:
|
|
1167
|
-
- "5000:5000"
|
|
1168
|
-
environment:
|
|
1169
|
-
- DATABASE_URL=postgresql://user:pass@db:5432/appdb
|
|
1170
|
-
depends_on:
|
|
1171
|
-
- db
|
|
1172
|
-
|
|
1173
|
-
db:
|
|
1174
|
-
image: postgres:13
|
|
1175
|
-
environment:
|
|
1176
|
-
- POSTGRES_USER=user
|
|
1177
|
-
- POSTGRES_PASSWORD=pass
|
|
1178
|
-
- POSTGRES_DB=appdb
|
|
1179
|
-
volumes:
|
|
1180
|
-
- postgres_data:/var/lib/postgresql/data
|
|
1181
|
-
|
|
1182
|
-
volumes:
|
|
1183
|
-
postgres_data:
|
|
1184
|
-
`
|
|
1185
|
-
};
|
|
1186
|
-
}
|
|
1187
|
-
return {
|
|
1188
|
-
'package.json': 'Package configuration',
|
|
1189
|
-
'.gitignore': 'Git ignore file'
|
|
1190
|
-
};
|
|
1191
|
-
}
|
|
1192
|
-
calculateCoverage(tests, implementation) {
|
|
1193
|
-
return {
|
|
1194
|
-
overall: 85,
|
|
1195
|
-
unit: 90,
|
|
1196
|
-
integration: 80,
|
|
1197
|
-
e2e: 70
|
|
1198
|
-
};
|
|
1199
|
-
}
|
|
1200
|
-
// Formatting methods
|
|
1201
|
-
formatRequirements(requirements) {
|
|
1202
|
-
return `# Requirements
|
|
1203
|
-
|
|
1204
|
-
## Functional Requirements
|
|
1205
|
-
${requirements.functional.map((r)=>`- ${r}`).join('\n')}
|
|
1206
|
-
|
|
1207
|
-
## Non-Functional Requirements
|
|
1208
|
-
${requirements.nonFunctional.map((r)=>`- ${r}`).join('\n')}
|
|
1209
|
-
|
|
1210
|
-
## Technical Requirements
|
|
1211
|
-
${requirements.technical.map((r)=>`- ${r}`).join('\n')}
|
|
1212
|
-
|
|
1213
|
-
## Business Requirements
|
|
1214
|
-
${requirements.business.map((r)=>`- ${r}`).join('\n')}
|
|
1215
|
-
`;
|
|
1216
|
-
}
|
|
1217
|
-
formatUserStories(stories) {
|
|
1218
|
-
return `# User Stories
|
|
1219
|
-
|
|
1220
|
-
${stories.map((s)=>`## ${s.id}: ${s.story}
|
|
1221
|
-
Priority: ${s.priority}
|
|
1222
|
-
`).join('\n')}`;
|
|
1223
|
-
}
|
|
1224
|
-
formatAcceptanceCriteria(criteria) {
|
|
1225
|
-
return `# Acceptance Criteria
|
|
1226
|
-
|
|
1227
|
-
${Object.entries(criteria).map(([category, items])=>`## ${category}
|
|
1228
|
-
${items.map((item)=>`- ${item}`).join('\n')}
|
|
1229
|
-
`).join('\n')}`;
|
|
1230
|
-
}
|
|
1231
|
-
formatAlgorithms(algorithms) {
|
|
1232
|
-
return `# Algorithms
|
|
1233
|
-
|
|
1234
|
-
${JSON.stringify(algorithms, null, 2)}
|
|
1235
|
-
`;
|
|
1236
|
-
}
|
|
1237
|
-
formatDataStructures(structures) {
|
|
1238
|
-
return `# Data Structures
|
|
1239
|
-
|
|
1240
|
-
${JSON.stringify(structures, null, 2)}
|
|
1241
|
-
`;
|
|
1242
|
-
}
|
|
1243
|
-
formatArchitecture(architecture) {
|
|
1244
|
-
return `# System Architecture
|
|
1245
|
-
|
|
1246
|
-
## Components
|
|
1247
|
-
${JSON.stringify(architecture.components, null, 2)}
|
|
1248
|
-
|
|
1249
|
-
## Interfaces
|
|
1250
|
-
${JSON.stringify(architecture.interfaces, null, 2)}
|
|
1251
|
-
|
|
1252
|
-
## Design Patterns
|
|
1253
|
-
${architecture.patterns.join('\n')}
|
|
1254
|
-
|
|
1255
|
-
## Infrastructure
|
|
1256
|
-
${JSON.stringify(architecture.infrastructure, null, 2)}
|
|
1257
|
-
`;
|
|
1258
|
-
}
|
|
1259
|
-
formatComponentDiagram(components) {
|
|
1260
|
-
return `# Component Diagram
|
|
1261
|
-
|
|
1262
|
-
\`\`\`mermaid
|
|
1263
|
-
graph TD
|
|
1264
|
-
A[Client] --> B[API Gateway]
|
|
1265
|
-
B --> C[Application Server]
|
|
1266
|
-
C --> D[Database]
|
|
1267
|
-
C --> E[Cache]
|
|
1268
|
-
C --> F[Message Queue]
|
|
1269
|
-
\`\`\`
|
|
1270
|
-
`;
|
|
1271
|
-
}
|
|
1272
|
-
formatTestPlan(plan) {
|
|
1273
|
-
return `# Test Plan
|
|
1274
|
-
|
|
1275
|
-
## Test Strategy
|
|
1276
|
-
- Unit Tests: ${plan.unitTests}
|
|
1277
|
-
- Integration Tests: ${plan.integrationTests}
|
|
1278
|
-
- E2E Tests: ${plan.e2eTests}
|
|
1279
|
-
- Performance Tests: ${plan.performanceTests}
|
|
1280
|
-
|
|
1281
|
-
## Coverage Target
|
|
1282
|
-
Target: ${plan.coverage.target}%
|
|
1283
|
-
Current: ${plan.coverage.current}%
|
|
1284
|
-
`;
|
|
1285
|
-
}
|
|
1286
|
-
formatReviewReport(review) {
|
|
1287
|
-
return `# Code Review Report
|
|
1288
|
-
|
|
1289
|
-
## Code Quality
|
|
1290
|
-
${JSON.stringify(review.codeQuality, null, 2)}
|
|
1291
|
-
|
|
1292
|
-
## Security Assessment
|
|
1293
|
-
${JSON.stringify(review.security, null, 2)}
|
|
1294
|
-
|
|
1295
|
-
## Performance Assessment
|
|
1296
|
-
${JSON.stringify(review.performance, null, 2)}
|
|
1297
|
-
|
|
1298
|
-
## Maintainability
|
|
1299
|
-
${JSON.stringify(review.maintainability, null, 2)}
|
|
1300
|
-
|
|
1301
|
-
## Recommendations
|
|
1302
|
-
${review.recommendations.map((r)=>`- ${r}`).join('\n')}
|
|
1303
|
-
`;
|
|
1304
|
-
}
|
|
1305
|
-
generateReadme(task) {
|
|
1306
|
-
return `# ${task.name}
|
|
1307
|
-
|
|
1308
|
-
${task.description}
|
|
1309
|
-
|
|
1310
|
-
## Installation
|
|
1311
|
-
|
|
1312
|
-
\`\`\`bash
|
|
1313
|
-
# Clone the repository
|
|
1314
|
-
git clone <repository-url>
|
|
1315
|
-
cd <project-directory>
|
|
1316
|
-
|
|
1317
|
-
# Install dependencies
|
|
1318
|
-
pip install -r requirements.txt
|
|
1319
|
-
# or
|
|
1320
|
-
npm install
|
|
1321
|
-
\`\`\`
|
|
1322
|
-
|
|
1323
|
-
## Usage
|
|
1324
|
-
|
|
1325
|
-
\`\`\`bash
|
|
1326
|
-
# Run the application
|
|
1327
|
-
python -m src.app
|
|
1328
|
-
# or
|
|
1329
|
-
npm start
|
|
1330
|
-
\`\`\`
|
|
1331
|
-
|
|
1332
|
-
## Testing
|
|
1333
|
-
|
|
1334
|
-
\`\`\`bash
|
|
1335
|
-
# Run tests
|
|
1336
|
-
pytest
|
|
1337
|
-
# or
|
|
1338
|
-
npm test
|
|
1339
|
-
\`\`\`
|
|
1340
|
-
|
|
1341
|
-
## Documentation
|
|
1342
|
-
|
|
1343
|
-
See the \`docs/\` directory for detailed documentation.
|
|
1344
|
-
|
|
1345
|
-
## License
|
|
1346
|
-
|
|
1347
|
-
MIT
|
|
1348
|
-
`;
|
|
1349
|
-
}
|
|
1350
|
-
generateApiDocs(task) {
|
|
1351
|
-
return `# API Documentation
|
|
1352
|
-
|
|
1353
|
-
## Endpoints
|
|
1354
|
-
|
|
1355
|
-
### GET /api/users
|
|
1356
|
-
Retrieve all users
|
|
1357
|
-
|
|
1358
|
-
### POST /api/users
|
|
1359
|
-
Create a new user
|
|
1360
|
-
|
|
1361
|
-
### GET /api/users/:id
|
|
1362
|
-
Retrieve a specific user
|
|
1363
|
-
|
|
1364
|
-
### PUT /api/users/:id
|
|
1365
|
-
Update a user
|
|
1366
|
-
|
|
1367
|
-
### DELETE /api/users/:id
|
|
1368
|
-
Delete a user
|
|
1369
|
-
`;
|
|
1370
|
-
}
|
|
1371
|
-
generateUserGuide(task) {
|
|
1372
|
-
return `# User Guide
|
|
1373
|
-
|
|
1374
|
-
## Getting Started
|
|
1375
|
-
|
|
1376
|
-
1. Install the application
|
|
1377
|
-
2. Configure your environment
|
|
1378
|
-
3. Start using the features
|
|
1379
|
-
|
|
1380
|
-
## Features
|
|
1381
|
-
|
|
1382
|
-
- Feature 1: Description
|
|
1383
|
-
- Feature 2: Description
|
|
1384
|
-
- Feature 3: Description
|
|
1385
|
-
`;
|
|
1386
|
-
}
|
|
1387
|
-
generateDeveloperGuide(task) {
|
|
1388
|
-
return `# Developer Guide
|
|
1389
|
-
|
|
1390
|
-
## Architecture
|
|
1391
|
-
|
|
1392
|
-
The application follows a modular architecture...
|
|
1393
|
-
|
|
1394
|
-
## Development Setup
|
|
1395
|
-
|
|
1396
|
-
1. Clone the repository
|
|
1397
|
-
2. Install dependencies
|
|
1398
|
-
3. Set up development environment
|
|
1399
|
-
|
|
1400
|
-
## Contributing
|
|
1401
|
-
|
|
1402
|
-
Please follow our contribution guidelines...
|
|
1403
|
-
`;
|
|
1404
|
-
}
|
|
1405
|
-
// Additional helper methods
|
|
1406
|
-
assessCodeQuality(task) {
|
|
1407
|
-
return {
|
|
1408
|
-
complexity: 'Low to Medium',
|
|
1409
|
-
duplication: 'Minimal',
|
|
1410
|
-
testCoverage: '85%',
|
|
1411
|
-
linting: 'Passing'
|
|
1412
|
-
};
|
|
1413
|
-
}
|
|
1414
|
-
assessSecurity(task) {
|
|
1415
|
-
return {
|
|
1416
|
-
authentication: 'Implemented',
|
|
1417
|
-
authorization: 'Role-based',
|
|
1418
|
-
inputValidation: 'Comprehensive',
|
|
1419
|
-
encryption: 'At rest and in transit'
|
|
1420
|
-
};
|
|
1421
|
-
}
|
|
1422
|
-
assessPerformance(task) {
|
|
1423
|
-
return {
|
|
1424
|
-
responseTime: 'Average 150ms',
|
|
1425
|
-
throughput: '1000 req/s',
|
|
1426
|
-
scalability: 'Horizontal scaling ready',
|
|
1427
|
-
caching: 'Implemented'
|
|
1428
|
-
};
|
|
1429
|
-
}
|
|
1430
|
-
assessMaintainability(task) {
|
|
1431
|
-
return {
|
|
1432
|
-
readability: 'High',
|
|
1433
|
-
modularity: 'Well-structured',
|
|
1434
|
-
documentation: 'Comprehensive',
|
|
1435
|
-
dependencies: 'Up to date'
|
|
1436
|
-
};
|
|
1437
|
-
}
|
|
1438
|
-
generateRecommendations(task) {
|
|
1439
|
-
return [
|
|
1440
|
-
'Consider implementing rate limiting',
|
|
1441
|
-
'Add more comprehensive error handling',
|
|
1442
|
-
'Implement request logging',
|
|
1443
|
-
'Add performance monitoring',
|
|
1444
|
-
'Consider using a CDN for static assets'
|
|
1445
|
-
];
|
|
1446
|
-
}
|
|
1447
|
-
generateUnitTests(task) {
|
|
1448
|
-
return 'Comprehensive unit test suite';
|
|
1449
|
-
}
|
|
1450
|
-
generateIntegrationTests(task) {
|
|
1451
|
-
return 'Integration test scenarios';
|
|
1452
|
-
}
|
|
1453
|
-
generateE2ETests(task) {
|
|
1454
|
-
return 'End-to-end test scenarios';
|
|
1455
|
-
}
|
|
1456
|
-
generatePerformanceTests(task) {
|
|
1457
|
-
return 'Performance test suite';
|
|
1458
|
-
}
|
|
1459
|
-
identifyConstraints(objective) {
|
|
1460
|
-
return [
|
|
1461
|
-
'Must complete within timeline',
|
|
1462
|
-
'Must stay within budget',
|
|
1463
|
-
'Must meet performance requirements',
|
|
1464
|
-
'Must be maintainable'
|
|
1465
|
-
];
|
|
1466
|
-
}
|
|
1467
|
-
designComponents(appType) {
|
|
1468
|
-
return {
|
|
1469
|
-
frontend: 'UI Components',
|
|
1470
|
-
backend: 'API Services',
|
|
1471
|
-
database: 'Data Layer',
|
|
1472
|
-
infrastructure: 'Cloud Services'
|
|
1473
|
-
};
|
|
1474
|
-
}
|
|
1475
|
-
designInterfaces(appType) {
|
|
1476
|
-
return {
|
|
1477
|
-
api: 'REST/GraphQL interfaces',
|
|
1478
|
-
database: 'Data access interfaces',
|
|
1479
|
-
external: 'Third-party integrations'
|
|
1480
|
-
};
|
|
1481
|
-
}
|
|
1482
|
-
selectPatterns(appType) {
|
|
1483
|
-
return [
|
|
1484
|
-
'MVC/MVP Pattern',
|
|
1485
|
-
'Repository Pattern',
|
|
1486
|
-
'Factory Pattern',
|
|
1487
|
-
'Observer Pattern'
|
|
1488
|
-
];
|
|
1489
|
-
}
|
|
1490
|
-
designInfrastructure(appType) {
|
|
1491
|
-
return {
|
|
1492
|
-
hosting: 'Cloud platform',
|
|
1493
|
-
database: 'Managed database service',
|
|
1494
|
-
caching: 'Redis/Memcached',
|
|
1495
|
-
monitoring: 'APM solution'
|
|
1496
|
-
};
|
|
1497
|
-
}
|
|
1498
|
-
generateAlgorithms(appType) {
|
|
1499
|
-
return {
|
|
1500
|
-
dataProcessing: 'Data processing algorithms',
|
|
1501
|
-
businessLogic: 'Core business logic',
|
|
1502
|
-
optimization: 'Performance optimization'
|
|
1503
|
-
};
|
|
1504
|
-
}
|
|
1505
|
-
generateDataStructures(appType) {
|
|
1506
|
-
return {
|
|
1507
|
-
models: 'Data models',
|
|
1508
|
-
schemas: 'Database schemas',
|
|
1509
|
-
interfaces: 'TypeScript interfaces'
|
|
1510
|
-
};
|
|
1511
|
-
}
|
|
1512
|
-
generateFlowDiagrams(appType) {
|
|
1513
|
-
return {
|
|
1514
|
-
userFlow: 'User interaction flow',
|
|
1515
|
-
dataFlow: 'Data processing flow',
|
|
1516
|
-
systemFlow: 'System architecture flow'
|
|
1517
|
-
};
|
|
1518
|
-
}
|
|
1519
|
-
executeAnalysisPhase(task, targetDir) {
|
|
1520
|
-
return this.executeAnalyzerTask(task, targetDir);
|
|
1521
|
-
}
|
|
1522
|
-
executeImplementationPhase(task, targetDir) {
|
|
1523
|
-
return this.executeTDDPhase(task, targetDir);
|
|
1524
|
-
}
|
|
1525
|
-
executeCoordinationPhase(task, targetDir) {
|
|
1526
|
-
return this.executeCoordinationTask(task, targetDir);
|
|
1527
|
-
}
|
|
1528
|
-
executeGenericPhase(task, targetDir) {
|
|
1529
|
-
return this.executeGenericTask(task, targetDir);
|
|
1530
|
-
}
|
|
1531
|
-
async executeAnalyzerTask(task, targetDir) {
|
|
1532
|
-
return this.executeSpecificationPhase(task, targetDir);
|
|
1533
|
-
}
|
|
1534
|
-
async executeCoordinationTask(task, targetDir) {
|
|
1535
|
-
return {
|
|
1536
|
-
phase: 'coordination',
|
|
1537
|
-
status: 'Task coordinated',
|
|
1538
|
-
quality: 0.9,
|
|
1539
|
-
completeness: 0.95
|
|
1540
|
-
};
|
|
1541
|
-
}
|
|
1542
|
-
async executeGenericTask(task, targetDir) {
|
|
1543
|
-
return {
|
|
1544
|
-
phase: 'generic',
|
|
1545
|
-
status: 'Task completed',
|
|
1546
|
-
quality: 0.85,
|
|
1547
|
-
completeness: 0.9
|
|
1548
|
-
};
|
|
1549
|
-
}
|
|
1550
|
-
constructor(config = {}){
|
|
1551
|
-
_define_property(this, "logger", void 0);
|
|
1552
|
-
_define_property(this, "enableTDD", void 0);
|
|
1553
|
-
_define_property(this, "qualityThreshold", void 0);
|
|
1554
|
-
_define_property(this, "enableMemory", void 0);
|
|
1555
|
-
_define_property(this, "phases", new Map());
|
|
1556
|
-
this.logger = config.logger || new Logger({
|
|
1557
|
-
level: 'info',
|
|
1558
|
-
format: 'text',
|
|
1559
|
-
destination: 'console'
|
|
1560
|
-
}, {
|
|
1561
|
-
component: 'SparcTaskExecutor'
|
|
1562
|
-
});
|
|
1563
|
-
this.enableTDD = config.enableTDD ?? true;
|
|
1564
|
-
this.qualityThreshold = config.qualityThreshold ?? 0.8;
|
|
1565
|
-
this.enableMemory = config.enableMemory ?? true;
|
|
1566
|
-
this.initializePhases();
|
|
1567
|
-
}
|
|
1568
|
-
}
|