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,980 +1,858 @@
|
|
|
1
1
|
// SPARC Pseudocode Phase
|
|
2
2
|
// Generate pseudocode and flow diagrams based on specifications
|
|
3
|
-
|
|
3
|
+
|
|
4
|
+
import { SparcPhase } from './phase-base.js';
|
|
5
|
+
|
|
4
6
|
export class SparcPseudocode extends SparcPhase {
|
|
5
|
-
|
|
7
|
+
constructor(taskDescription, options) {
|
|
8
|
+
super('pseudocode', taskDescription, options);
|
|
9
|
+
this.flowDiagram = null;
|
|
10
|
+
this.pseudocode = [];
|
|
11
|
+
this.algorithms = [];
|
|
12
|
+
this.dataStructures = [];
|
|
13
|
+
this.interfaces = [];
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
6
17
|
* Execute pseudocode phase
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
18
|
+
*/
|
|
19
|
+
async execute() {
|
|
20
|
+
console.log('🔄 Starting Pseudocode Phase');
|
|
21
|
+
|
|
22
|
+
await this.initializePhase();
|
|
23
|
+
|
|
24
|
+
const result = {
|
|
25
|
+
flowDiagram: null,
|
|
26
|
+
pseudocode: [],
|
|
27
|
+
algorithms: [],
|
|
28
|
+
dataStructures: [],
|
|
29
|
+
interfaces: [],
|
|
30
|
+
logicFlow: [],
|
|
31
|
+
edgeCases: [],
|
|
32
|
+
complexityAnalysis: {},
|
|
33
|
+
dependencies: [],
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
try {
|
|
37
|
+
// Load specification from previous phase
|
|
38
|
+
const specification = await this.retrieveFromMemory('specification_complete');
|
|
39
|
+
if (!specification) {
|
|
40
|
+
throw new Error('Specification phase must be completed first');
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// Generate flow diagram
|
|
44
|
+
result.flowDiagram = await this.generateFlowDiagram(specification);
|
|
45
|
+
|
|
46
|
+
// Generate pseudocode
|
|
47
|
+
result.pseudocode = await this.generatePseudocode(specification);
|
|
48
|
+
|
|
49
|
+
// Define algorithms
|
|
50
|
+
result.algorithms = await this.defineAlgorithms(specification);
|
|
51
|
+
|
|
52
|
+
// Define data structures
|
|
53
|
+
result.dataStructures = await this.defineDataStructures(specification);
|
|
54
|
+
|
|
55
|
+
// Define interfaces
|
|
56
|
+
result.interfaces = await this.defineInterfaces(specification);
|
|
57
|
+
|
|
58
|
+
// Map logic flow
|
|
59
|
+
result.logicFlow = await this.mapLogicFlow(specification);
|
|
60
|
+
|
|
61
|
+
// Identify edge cases
|
|
62
|
+
result.edgeCases = await this.identifyEdgeCases(specification);
|
|
63
|
+
|
|
64
|
+
// Analyze complexity
|
|
65
|
+
result.complexityAnalysis = await this.analyzeComplexity(result.pseudocode);
|
|
66
|
+
|
|
67
|
+
// Identify dependencies
|
|
68
|
+
result.dependencies = await this.identifyDependencies(specification);
|
|
69
|
+
|
|
70
|
+
// Generate pseudocode document
|
|
71
|
+
await this.generatePseudocodeDocument(result);
|
|
72
|
+
|
|
73
|
+
// Store in memory
|
|
74
|
+
await this.storeInMemory('pseudocode_complete', result);
|
|
75
|
+
|
|
76
|
+
console.log('✅ Pseudocode phase completed');
|
|
77
|
+
return result;
|
|
78
|
+
} catch (error) {
|
|
79
|
+
console.error('❌ Pseudocode phase failed:', error.message);
|
|
80
|
+
throw error;
|
|
55
81
|
}
|
|
56
|
-
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
57
85
|
* Generate flow diagram
|
|
58
|
-
*/
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
86
|
+
*/
|
|
87
|
+
async generateFlowDiagram(specification) {
|
|
88
|
+
const flowDiagram = {
|
|
89
|
+
title: `Flow Diagram: ${this.taskDescription}`,
|
|
90
|
+
nodes: [],
|
|
91
|
+
edges: [],
|
|
92
|
+
entry: 'start',
|
|
93
|
+
exit: 'end',
|
|
94
|
+
type: 'sequential',
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
// Determine flow type based on requirements
|
|
98
|
+
const requirements = specification.requirements || [];
|
|
99
|
+
const hasApiRequirements = requirements.some((req) => req.toLowerCase().includes('api'));
|
|
100
|
+
const hasUiRequirements = requirements.some(
|
|
101
|
+
(req) => req.toLowerCase().includes('ui') || req.toLowerCase().includes('interface'),
|
|
102
|
+
);
|
|
103
|
+
const hasDataRequirements = requirements.some((req) => req.toLowerCase().includes('data'));
|
|
104
|
+
|
|
105
|
+
if (hasApiRequirements) {
|
|
106
|
+
flowDiagram.type = 'api';
|
|
107
|
+
flowDiagram.nodes = this.generateApiFlowNodes(requirements);
|
|
108
|
+
} else if (hasUiRequirements) {
|
|
109
|
+
flowDiagram.type = 'ui';
|
|
110
|
+
flowDiagram.nodes = this.generateUiFlowNodes(requirements);
|
|
111
|
+
} else if (hasDataRequirements) {
|
|
112
|
+
flowDiagram.type = 'data';
|
|
113
|
+
flowDiagram.nodes = this.generateDataFlowNodes(requirements);
|
|
114
|
+
} else {
|
|
115
|
+
flowDiagram.type = 'general';
|
|
116
|
+
flowDiagram.nodes = this.generateGeneralFlowNodes(requirements);
|
|
88
117
|
}
|
|
89
|
-
|
|
118
|
+
|
|
119
|
+
// Generate edges between nodes
|
|
120
|
+
flowDiagram.edges = this.generateFlowEdges(flowDiagram.nodes);
|
|
121
|
+
|
|
122
|
+
return flowDiagram;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
90
126
|
* Generate API flow nodes
|
|
91
|
-
*/
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
type: 'process',
|
|
111
|
-
label: 'Authorize Access'
|
|
112
|
-
},
|
|
113
|
-
{
|
|
114
|
-
id: 'process_request',
|
|
115
|
-
type: 'process',
|
|
116
|
-
label: 'Process Request'
|
|
117
|
-
},
|
|
118
|
-
{
|
|
119
|
-
id: 'validate_data',
|
|
120
|
-
type: 'decision',
|
|
121
|
-
label: 'Data Valid?'
|
|
122
|
-
},
|
|
123
|
-
{
|
|
124
|
-
id: 'handle_error',
|
|
125
|
-
type: 'process',
|
|
126
|
-
label: 'Handle Error'
|
|
127
|
-
},
|
|
128
|
-
{
|
|
129
|
-
id: 'execute_logic',
|
|
130
|
-
type: 'process',
|
|
131
|
-
label: 'Execute Business Logic'
|
|
132
|
-
},
|
|
133
|
-
{
|
|
134
|
-
id: 'prepare_response',
|
|
135
|
-
type: 'process',
|
|
136
|
-
label: 'Prepare Response'
|
|
137
|
-
},
|
|
138
|
-
{
|
|
139
|
-
id: 'log_activity',
|
|
140
|
-
type: 'process',
|
|
141
|
-
label: 'Log Activity'
|
|
142
|
-
},
|
|
143
|
-
{
|
|
144
|
-
id: 'return_response',
|
|
145
|
-
type: 'process',
|
|
146
|
-
label: 'Return Response'
|
|
147
|
-
},
|
|
148
|
-
{
|
|
149
|
-
id: 'end',
|
|
150
|
-
type: 'end',
|
|
151
|
-
label: 'End'
|
|
152
|
-
}
|
|
153
|
-
];
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
127
|
+
*/
|
|
128
|
+
generateApiFlowNodes(requirements) {
|
|
129
|
+
return [
|
|
130
|
+
{ id: 'start', type: 'start', label: 'Start' },
|
|
131
|
+
{ id: 'validate_input', type: 'process', label: 'Validate Input' },
|
|
132
|
+
{ id: 'authenticate', type: 'process', label: 'Authenticate Request' },
|
|
133
|
+
{ id: 'authorize', type: 'process', label: 'Authorize Access' },
|
|
134
|
+
{ id: 'process_request', type: 'process', label: 'Process Request' },
|
|
135
|
+
{ id: 'validate_data', type: 'decision', label: 'Data Valid?' },
|
|
136
|
+
{ id: 'handle_error', type: 'process', label: 'Handle Error' },
|
|
137
|
+
{ id: 'execute_logic', type: 'process', label: 'Execute Business Logic' },
|
|
138
|
+
{ id: 'prepare_response', type: 'process', label: 'Prepare Response' },
|
|
139
|
+
{ id: 'log_activity', type: 'process', label: 'Log Activity' },
|
|
140
|
+
{ id: 'return_response', type: 'process', label: 'Return Response' },
|
|
141
|
+
{ id: 'end', type: 'end', label: 'End' },
|
|
142
|
+
];
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/**
|
|
156
146
|
* Generate UI flow nodes
|
|
157
|
-
*/
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
label: 'Render Components'
|
|
178
|
-
},
|
|
179
|
-
{
|
|
180
|
-
id: 'wait_user_input',
|
|
181
|
-
type: 'input',
|
|
182
|
-
label: 'Wait for User Input'
|
|
183
|
-
},
|
|
184
|
-
{
|
|
185
|
-
id: 'validate_input',
|
|
186
|
-
type: 'process',
|
|
187
|
-
label: 'Validate Input'
|
|
188
|
-
},
|
|
189
|
-
{
|
|
190
|
-
id: 'input_valid',
|
|
191
|
-
type: 'decision',
|
|
192
|
-
label: 'Input Valid?'
|
|
193
|
-
},
|
|
194
|
-
{
|
|
195
|
-
id: 'show_error',
|
|
196
|
-
type: 'process',
|
|
197
|
-
label: 'Show Error Message'
|
|
198
|
-
},
|
|
199
|
-
{
|
|
200
|
-
id: 'update_state',
|
|
201
|
-
type: 'process',
|
|
202
|
-
label: 'Update State'
|
|
203
|
-
},
|
|
204
|
-
{
|
|
205
|
-
id: 'make_api_call',
|
|
206
|
-
type: 'process',
|
|
207
|
-
label: 'Make API Call'
|
|
208
|
-
},
|
|
209
|
-
{
|
|
210
|
-
id: 'handle_response',
|
|
211
|
-
type: 'process',
|
|
212
|
-
label: 'Handle Response'
|
|
213
|
-
},
|
|
214
|
-
{
|
|
215
|
-
id: 'update_ui',
|
|
216
|
-
type: 'process',
|
|
217
|
-
label: 'Update UI'
|
|
218
|
-
},
|
|
219
|
-
{
|
|
220
|
-
id: 'end',
|
|
221
|
-
type: 'end',
|
|
222
|
-
label: 'End'
|
|
223
|
-
}
|
|
224
|
-
];
|
|
225
|
-
}
|
|
226
|
-
/**
|
|
147
|
+
*/
|
|
148
|
+
generateUiFlowNodes(requirements) {
|
|
149
|
+
return [
|
|
150
|
+
{ id: 'start', type: 'start', label: 'Start' },
|
|
151
|
+
{ id: 'load_interface', type: 'process', label: 'Load Interface' },
|
|
152
|
+
{ id: 'initialize_state', type: 'process', label: 'Initialize State' },
|
|
153
|
+
{ id: 'render_components', type: 'process', label: 'Render Components' },
|
|
154
|
+
{ id: 'wait_user_input', type: 'input', label: 'Wait for User Input' },
|
|
155
|
+
{ id: 'validate_input', type: 'process', label: 'Validate Input' },
|
|
156
|
+
{ id: 'input_valid', type: 'decision', label: 'Input Valid?' },
|
|
157
|
+
{ id: 'show_error', type: 'process', label: 'Show Error Message' },
|
|
158
|
+
{ id: 'update_state', type: 'process', label: 'Update State' },
|
|
159
|
+
{ id: 'make_api_call', type: 'process', label: 'Make API Call' },
|
|
160
|
+
{ id: 'handle_response', type: 'process', label: 'Handle Response' },
|
|
161
|
+
{ id: 'update_ui', type: 'process', label: 'Update UI' },
|
|
162
|
+
{ id: 'end', type: 'end', label: 'End' },
|
|
163
|
+
];
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/**
|
|
227
167
|
* Generate data flow nodes
|
|
228
|
-
*/
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
type: 'process',
|
|
248
|
-
label: 'Begin Transaction'
|
|
249
|
-
},
|
|
250
|
-
{
|
|
251
|
-
id: 'execute_query',
|
|
252
|
-
type: 'process',
|
|
253
|
-
label: 'Execute Query'
|
|
254
|
-
},
|
|
255
|
-
{
|
|
256
|
-
id: 'check_results',
|
|
257
|
-
type: 'decision',
|
|
258
|
-
label: 'Results Valid?'
|
|
259
|
-
},
|
|
260
|
-
{
|
|
261
|
-
id: 'rollback_transaction',
|
|
262
|
-
type: 'process',
|
|
263
|
-
label: 'Rollback Transaction'
|
|
264
|
-
},
|
|
265
|
-
{
|
|
266
|
-
id: 'transform_data',
|
|
267
|
-
type: 'process',
|
|
268
|
-
label: 'Transform Data'
|
|
269
|
-
},
|
|
270
|
-
{
|
|
271
|
-
id: 'validate_constraints',
|
|
272
|
-
type: 'process',
|
|
273
|
-
label: 'Validate Constraints'
|
|
274
|
-
},
|
|
275
|
-
{
|
|
276
|
-
id: 'commit_transaction',
|
|
277
|
-
type: 'process',
|
|
278
|
-
label: 'Commit Transaction'
|
|
279
|
-
},
|
|
280
|
-
{
|
|
281
|
-
id: 'close_connection',
|
|
282
|
-
type: 'process',
|
|
283
|
-
label: 'Close Connection'
|
|
284
|
-
},
|
|
285
|
-
{
|
|
286
|
-
id: 'end',
|
|
287
|
-
type: 'end',
|
|
288
|
-
label: 'End'
|
|
289
|
-
}
|
|
290
|
-
];
|
|
291
|
-
}
|
|
292
|
-
/**
|
|
168
|
+
*/
|
|
169
|
+
generateDataFlowNodes(requirements) {
|
|
170
|
+
return [
|
|
171
|
+
{ id: 'start', type: 'start', label: 'Start' },
|
|
172
|
+
{ id: 'connect_database', type: 'process', label: 'Connect to Database' },
|
|
173
|
+
{ id: 'validate_schema', type: 'process', label: 'Validate Schema' },
|
|
174
|
+
{ id: 'begin_transaction', type: 'process', label: 'Begin Transaction' },
|
|
175
|
+
{ id: 'execute_query', type: 'process', label: 'Execute Query' },
|
|
176
|
+
{ id: 'check_results', type: 'decision', label: 'Results Valid?' },
|
|
177
|
+
{ id: 'rollback_transaction', type: 'process', label: 'Rollback Transaction' },
|
|
178
|
+
{ id: 'transform_data', type: 'process', label: 'Transform Data' },
|
|
179
|
+
{ id: 'validate_constraints', type: 'process', label: 'Validate Constraints' },
|
|
180
|
+
{ id: 'commit_transaction', type: 'process', label: 'Commit Transaction' },
|
|
181
|
+
{ id: 'close_connection', type: 'process', label: 'Close Connection' },
|
|
182
|
+
{ id: 'end', type: 'end', label: 'End' },
|
|
183
|
+
];
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
/**
|
|
293
187
|
* Generate general flow nodes
|
|
294
|
-
*/
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
label: 'Load Configuration'
|
|
310
|
-
},
|
|
311
|
-
{
|
|
312
|
-
id: 'validate_prerequisites',
|
|
313
|
-
type: 'process',
|
|
314
|
-
label: 'Validate Prerequisites'
|
|
315
|
-
},
|
|
316
|
-
{
|
|
317
|
-
id: 'execute_main_logic',
|
|
318
|
-
type: 'process',
|
|
319
|
-
label: 'Execute Main Logic'
|
|
320
|
-
},
|
|
321
|
-
{
|
|
322
|
-
id: 'handle_exceptions',
|
|
323
|
-
type: 'process',
|
|
324
|
-
label: 'Handle Exceptions'
|
|
325
|
-
},
|
|
326
|
-
{
|
|
327
|
-
id: 'cleanup_resources',
|
|
328
|
-
type: 'process',
|
|
329
|
-
label: 'Cleanup Resources'
|
|
330
|
-
},
|
|
331
|
-
{
|
|
332
|
-
id: 'end',
|
|
333
|
-
type: 'end',
|
|
334
|
-
label: 'End'
|
|
335
|
-
}
|
|
336
|
-
];
|
|
337
|
-
}
|
|
338
|
-
/**
|
|
188
|
+
*/
|
|
189
|
+
generateGeneralFlowNodes(requirements) {
|
|
190
|
+
return [
|
|
191
|
+
{ id: 'start', type: 'start', label: 'Start' },
|
|
192
|
+
{ id: 'initialize', type: 'process', label: 'Initialize System' },
|
|
193
|
+
{ id: 'load_configuration', type: 'process', label: 'Load Configuration' },
|
|
194
|
+
{ id: 'validate_prerequisites', type: 'process', label: 'Validate Prerequisites' },
|
|
195
|
+
{ id: 'execute_main_logic', type: 'process', label: 'Execute Main Logic' },
|
|
196
|
+
{ id: 'handle_exceptions', type: 'process', label: 'Handle Exceptions' },
|
|
197
|
+
{ id: 'cleanup_resources', type: 'process', label: 'Cleanup Resources' },
|
|
198
|
+
{ id: 'end', type: 'end', label: 'End' },
|
|
199
|
+
];
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
/**
|
|
339
203
|
* Generate flow edges
|
|
340
|
-
*/
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
to: next.id,
|
|
367
|
-
label: ''
|
|
368
|
-
});
|
|
369
|
-
}
|
|
204
|
+
*/
|
|
205
|
+
generateFlowEdges(nodes) {
|
|
206
|
+
const edges = [];
|
|
207
|
+
|
|
208
|
+
for (let i = 0; i < nodes.length - 1; i++) {
|
|
209
|
+
const current = nodes[i];
|
|
210
|
+
const next = nodes[i + 1];
|
|
211
|
+
|
|
212
|
+
if (current.type === 'decision') {
|
|
213
|
+
// Decision nodes have multiple paths
|
|
214
|
+
edges.push({
|
|
215
|
+
from: current.id,
|
|
216
|
+
to: next.id,
|
|
217
|
+
label: 'Yes',
|
|
218
|
+
condition: true,
|
|
219
|
+
});
|
|
220
|
+
|
|
221
|
+
// Find alternative path (usually error handling)
|
|
222
|
+
const errorNode = nodes.find((n) => n.id.includes('error') || n.id.includes('handle'));
|
|
223
|
+
if (errorNode) {
|
|
224
|
+
edges.push({
|
|
225
|
+
from: current.id,
|
|
226
|
+
to: errorNode.id,
|
|
227
|
+
label: 'No',
|
|
228
|
+
condition: false,
|
|
229
|
+
});
|
|
370
230
|
}
|
|
371
|
-
|
|
231
|
+
} else {
|
|
232
|
+
edges.push({
|
|
233
|
+
from: current.id,
|
|
234
|
+
to: next.id,
|
|
235
|
+
label: '',
|
|
236
|
+
});
|
|
237
|
+
}
|
|
372
238
|
}
|
|
373
|
-
|
|
239
|
+
|
|
240
|
+
return edges;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
/**
|
|
374
244
|
* Generate pseudocode
|
|
375
|
-
*/
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
245
|
+
*/
|
|
246
|
+
async generatePseudocode(specification) {
|
|
247
|
+
const pseudocode = [];
|
|
248
|
+
const requirements = specification.requirements || [];
|
|
249
|
+
|
|
250
|
+
// Main function
|
|
251
|
+
pseudocode.push({
|
|
252
|
+
function: 'main',
|
|
253
|
+
description: 'Main entry point for the system',
|
|
254
|
+
steps: [
|
|
255
|
+
'BEGIN main',
|
|
256
|
+
' INITIALIZE system_configuration',
|
|
257
|
+
' VALIDATE prerequisites',
|
|
258
|
+
' CALL execute_primary_logic()',
|
|
259
|
+
' HANDLE exceptions',
|
|
260
|
+
' CLEANUP resources',
|
|
261
|
+
' RETURN success_status',
|
|
262
|
+
'END main',
|
|
263
|
+
],
|
|
264
|
+
});
|
|
265
|
+
|
|
266
|
+
// Generate pseudocode for each requirement
|
|
267
|
+
for (const [index, requirement] of requirements.entries()) {
|
|
268
|
+
const functionName = this.generateFunctionName(requirement);
|
|
269
|
+
const steps = this.generatePseudocodeSteps(requirement);
|
|
270
|
+
|
|
271
|
+
pseudocode.push({
|
|
272
|
+
function: functionName,
|
|
273
|
+
description: requirement,
|
|
274
|
+
steps: steps,
|
|
275
|
+
complexity: this.estimateComplexity(steps),
|
|
276
|
+
});
|
|
405
277
|
}
|
|
406
|
-
|
|
278
|
+
|
|
279
|
+
return pseudocode;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
/**
|
|
407
283
|
* Generate function name from requirement
|
|
408
|
-
*/
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
284
|
+
*/
|
|
285
|
+
generateFunctionName(requirement) {
|
|
286
|
+
const words = requirement.toLowerCase().split(' ');
|
|
287
|
+
const actionWords = words.filter((word) =>
|
|
288
|
+
[
|
|
289
|
+
'provide',
|
|
290
|
+
'handle',
|
|
291
|
+
'ensure',
|
|
292
|
+
'validate',
|
|
293
|
+
'process',
|
|
294
|
+
'manage',
|
|
295
|
+
'create',
|
|
296
|
+
'update',
|
|
297
|
+
'delete',
|
|
298
|
+
].includes(word),
|
|
299
|
+
);
|
|
300
|
+
const objectWords = words.filter((word) =>
|
|
301
|
+
[
|
|
302
|
+
'api',
|
|
303
|
+
'data',
|
|
304
|
+
'user',
|
|
305
|
+
'system',
|
|
306
|
+
'request',
|
|
307
|
+
'response',
|
|
308
|
+
'authentication',
|
|
309
|
+
'authorization',
|
|
310
|
+
].includes(word),
|
|
311
|
+
);
|
|
312
|
+
|
|
313
|
+
const action = actionWords[0] || 'execute';
|
|
314
|
+
const object = objectWords[0] || 'operation';
|
|
315
|
+
|
|
316
|
+
return `${action}_${object}`;
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
/**
|
|
436
320
|
* Generate pseudocode steps
|
|
437
|
-
*/
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
steps.push(' IF authentication_fails THEN');
|
|
451
|
-
steps.push(' RETURN unauthorized_error');
|
|
452
|
-
steps.push(' END IF');
|
|
453
|
-
}
|
|
454
|
-
if (reqLower.includes('data')) {
|
|
455
|
-
steps.push(' CONNECT to_database');
|
|
456
|
-
steps.push(' BEGIN transaction');
|
|
457
|
-
steps.push(' EXECUTE data_operation');
|
|
458
|
-
steps.push(' IF operation_successful THEN');
|
|
459
|
-
steps.push(' COMMIT transaction');
|
|
460
|
-
steps.push(' ELSE');
|
|
461
|
-
steps.push(' ROLLBACK transaction');
|
|
462
|
-
steps.push(' END IF');
|
|
463
|
-
}
|
|
464
|
-
if (reqLower.includes('api')) {
|
|
465
|
-
steps.push(' PARSE request_parameters');
|
|
466
|
-
steps.push(' VALIDATE request_format');
|
|
467
|
-
steps.push(' EXECUTE business_logic');
|
|
468
|
-
steps.push(' FORMAT response_data');
|
|
469
|
-
steps.push(' RETURN api_response');
|
|
470
|
-
}
|
|
471
|
-
// Generic steps if no specific patterns found
|
|
472
|
-
if (steps.length === 1) {
|
|
473
|
-
steps.push(' INITIALIZE operation_context');
|
|
474
|
-
steps.push(' EXECUTE primary_operation');
|
|
475
|
-
steps.push(' HANDLE potential_errors');
|
|
476
|
-
steps.push(' RETURN operation_result');
|
|
477
|
-
}
|
|
478
|
-
steps.push(`END ${this.generateFunctionName(requirement)}`);
|
|
479
|
-
return steps;
|
|
321
|
+
*/
|
|
322
|
+
generatePseudocodeSteps(requirement) {
|
|
323
|
+
const steps = [];
|
|
324
|
+
const reqLower = requirement.toLowerCase();
|
|
325
|
+
|
|
326
|
+
// Common patterns
|
|
327
|
+
steps.push(`BEGIN ${this.generateFunctionName(requirement)}`);
|
|
328
|
+
|
|
329
|
+
if (reqLower.includes('validate')) {
|
|
330
|
+
steps.push(' VALIDATE input_parameters');
|
|
331
|
+
steps.push(' IF validation_fails THEN');
|
|
332
|
+
steps.push(' RETURN error_response');
|
|
333
|
+
steps.push(' END IF');
|
|
480
334
|
}
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
cyclomatic: decisionSteps.length + 1,
|
|
488
|
-
operations: operationSteps.length,
|
|
489
|
-
lines: steps.length,
|
|
490
|
-
level: decisionSteps.length > 5 ? 'high' : decisionSteps.length > 2 ? 'medium' : 'low'
|
|
491
|
-
};
|
|
335
|
+
|
|
336
|
+
if (reqLower.includes('authenticate')) {
|
|
337
|
+
steps.push(' AUTHENTICATE user_credentials');
|
|
338
|
+
steps.push(' IF authentication_fails THEN');
|
|
339
|
+
steps.push(' RETURN unauthorized_error');
|
|
340
|
+
steps.push(' END IF');
|
|
492
341
|
}
|
|
493
|
-
|
|
342
|
+
|
|
343
|
+
if (reqLower.includes('data')) {
|
|
344
|
+
steps.push(' CONNECT to_database');
|
|
345
|
+
steps.push(' BEGIN transaction');
|
|
346
|
+
steps.push(' EXECUTE data_operation');
|
|
347
|
+
steps.push(' IF operation_successful THEN');
|
|
348
|
+
steps.push(' COMMIT transaction');
|
|
349
|
+
steps.push(' ELSE');
|
|
350
|
+
steps.push(' ROLLBACK transaction');
|
|
351
|
+
steps.push(' END IF');
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
if (reqLower.includes('api')) {
|
|
355
|
+
steps.push(' PARSE request_parameters');
|
|
356
|
+
steps.push(' VALIDATE request_format');
|
|
357
|
+
steps.push(' EXECUTE business_logic');
|
|
358
|
+
steps.push(' FORMAT response_data');
|
|
359
|
+
steps.push(' RETURN api_response');
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
// Generic steps if no specific patterns found
|
|
363
|
+
if (steps.length === 1) {
|
|
364
|
+
steps.push(' INITIALIZE operation_context');
|
|
365
|
+
steps.push(' EXECUTE primary_operation');
|
|
366
|
+
steps.push(' HANDLE potential_errors');
|
|
367
|
+
steps.push(' RETURN operation_result');
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
steps.push(`END ${this.generateFunctionName(requirement)}`);
|
|
371
|
+
|
|
372
|
+
return steps;
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
/**
|
|
376
|
+
* Estimate complexity
|
|
377
|
+
*/
|
|
378
|
+
estimateComplexity(steps) {
|
|
379
|
+
const decisionSteps = steps.filter(
|
|
380
|
+
(step) => step.includes('IF') || step.includes('WHILE') || step.includes('FOR'),
|
|
381
|
+
);
|
|
382
|
+
const operationSteps = steps.filter(
|
|
383
|
+
(step) => step.includes('EXECUTE') || step.includes('CALL'),
|
|
384
|
+
);
|
|
385
|
+
|
|
386
|
+
return {
|
|
387
|
+
cyclomatic: decisionSteps.length + 1,
|
|
388
|
+
operations: operationSteps.length,
|
|
389
|
+
lines: steps.length,
|
|
390
|
+
level: decisionSteps.length > 5 ? 'high' : decisionSteps.length > 2 ? 'medium' : 'low',
|
|
391
|
+
};
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
/**
|
|
494
395
|
* Define algorithms
|
|
495
|
-
*/
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
}
|
|
535
|
-
return algorithms;
|
|
396
|
+
*/
|
|
397
|
+
async defineAlgorithms(specification) {
|
|
398
|
+
const algorithms = [];
|
|
399
|
+
const requirements = specification.requirements || [];
|
|
400
|
+
|
|
401
|
+
// Search for algorithmic requirements
|
|
402
|
+
for (const requirement of requirements) {
|
|
403
|
+
const reqLower = requirement.toLowerCase();
|
|
404
|
+
|
|
405
|
+
if (
|
|
406
|
+
reqLower.includes('sort') ||
|
|
407
|
+
reqLower.includes('search') ||
|
|
408
|
+
reqLower.includes('optimize')
|
|
409
|
+
) {
|
|
410
|
+
algorithms.push({
|
|
411
|
+
name: 'Search and Sort Algorithm',
|
|
412
|
+
purpose: 'Efficient data retrieval and ordering',
|
|
413
|
+
complexity: 'O(n log n)',
|
|
414
|
+
approach: 'Quick sort with binary search optimization',
|
|
415
|
+
});
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
if (reqLower.includes('cache') || reqLower.includes('performance')) {
|
|
419
|
+
algorithms.push({
|
|
420
|
+
name: 'Caching Algorithm',
|
|
421
|
+
purpose: 'Improve response time through intelligent caching',
|
|
422
|
+
complexity: 'O(1) average case',
|
|
423
|
+
approach: 'LRU cache with time-based expiration',
|
|
424
|
+
});
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
if (reqLower.includes('validate') || reqLower.includes('check')) {
|
|
428
|
+
algorithms.push({
|
|
429
|
+
name: 'Validation Algorithm',
|
|
430
|
+
purpose: 'Ensure data integrity and format compliance',
|
|
431
|
+
complexity: 'O(n)',
|
|
432
|
+
approach: 'Rule-based validation with early termination',
|
|
433
|
+
});
|
|
434
|
+
}
|
|
536
435
|
}
|
|
537
|
-
|
|
436
|
+
|
|
437
|
+
// Default algorithms for common patterns
|
|
438
|
+
if (algorithms.length === 0) {
|
|
439
|
+
algorithms.push({
|
|
440
|
+
name: 'Sequential Processing Algorithm',
|
|
441
|
+
purpose: 'Process operations in defined sequence',
|
|
442
|
+
complexity: 'O(n)',
|
|
443
|
+
approach: 'Linear processing with error handling',
|
|
444
|
+
});
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
return algorithms;
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
/**
|
|
538
451
|
* Define data structures
|
|
539
|
-
*/
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
dataStructures.push({
|
|
598
|
-
name: 'Stack',
|
|
599
|
-
purpose: 'Last-in-first-out operations',
|
|
600
|
-
operations: [
|
|
601
|
-
'push',
|
|
602
|
-
'pop',
|
|
603
|
-
'peek',
|
|
604
|
-
'isEmpty'
|
|
605
|
-
],
|
|
606
|
-
complexity: {
|
|
607
|
-
access: 'O(n)',
|
|
608
|
-
insertion: 'O(1)',
|
|
609
|
-
deletion: 'O(1)'
|
|
610
|
-
}
|
|
611
|
-
});
|
|
612
|
-
}
|
|
613
|
-
}
|
|
614
|
-
// Default data structures
|
|
615
|
-
if (dataStructures.length === 0) {
|
|
616
|
-
dataStructures.push({
|
|
617
|
-
name: 'Object',
|
|
618
|
-
purpose: 'Basic data encapsulation',
|
|
619
|
-
operations: [
|
|
620
|
-
'create',
|
|
621
|
-
'read',
|
|
622
|
-
'update',
|
|
623
|
-
'delete'
|
|
624
|
-
],
|
|
625
|
-
complexity: {
|
|
626
|
-
access: 'O(1)',
|
|
627
|
-
insertion: 'O(1)',
|
|
628
|
-
deletion: 'O(1)'
|
|
629
|
-
}
|
|
630
|
-
});
|
|
631
|
-
}
|
|
632
|
-
return dataStructures;
|
|
452
|
+
*/
|
|
453
|
+
async defineDataStructures(specification) {
|
|
454
|
+
const dataStructures = [];
|
|
455
|
+
const requirements = specification.requirements || [];
|
|
456
|
+
|
|
457
|
+
// Analyze requirements for data structure needs
|
|
458
|
+
for (const requirement of requirements) {
|
|
459
|
+
const reqLower = requirement.toLowerCase();
|
|
460
|
+
|
|
461
|
+
if (
|
|
462
|
+
reqLower.includes('list') ||
|
|
463
|
+
reqLower.includes('array') ||
|
|
464
|
+
reqLower.includes('collection')
|
|
465
|
+
) {
|
|
466
|
+
dataStructures.push({
|
|
467
|
+
name: 'Dynamic Array',
|
|
468
|
+
purpose: 'Store variable-length collections',
|
|
469
|
+
operations: ['add', 'remove', 'search', 'iterate'],
|
|
470
|
+
complexity: { access: 'O(1)', insertion: 'O(n)', deletion: 'O(n)' },
|
|
471
|
+
});
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
if (reqLower.includes('map') || reqLower.includes('dictionary') || reqLower.includes('key')) {
|
|
475
|
+
dataStructures.push({
|
|
476
|
+
name: 'Hash Map',
|
|
477
|
+
purpose: 'Key-value pair storage with fast lookup',
|
|
478
|
+
operations: ['put', 'get', 'remove', 'contains'],
|
|
479
|
+
complexity: { access: 'O(1)', insertion: 'O(1)', deletion: 'O(1)' },
|
|
480
|
+
});
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
if (reqLower.includes('queue') || reqLower.includes('fifo') || reqLower.includes('buffer')) {
|
|
484
|
+
dataStructures.push({
|
|
485
|
+
name: 'Queue',
|
|
486
|
+
purpose: 'First-in-first-out data processing',
|
|
487
|
+
operations: ['enqueue', 'dequeue', 'peek', 'isEmpty'],
|
|
488
|
+
complexity: { access: 'O(n)', insertion: 'O(1)', deletion: 'O(1)' },
|
|
489
|
+
});
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
if (reqLower.includes('stack') || reqLower.includes('lifo') || reqLower.includes('undo')) {
|
|
493
|
+
dataStructures.push({
|
|
494
|
+
name: 'Stack',
|
|
495
|
+
purpose: 'Last-in-first-out operations',
|
|
496
|
+
operations: ['push', 'pop', 'peek', 'isEmpty'],
|
|
497
|
+
complexity: { access: 'O(n)', insertion: 'O(1)', deletion: 'O(1)' },
|
|
498
|
+
});
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
// Default data structures
|
|
503
|
+
if (dataStructures.length === 0) {
|
|
504
|
+
dataStructures.push({
|
|
505
|
+
name: 'Object',
|
|
506
|
+
purpose: 'Basic data encapsulation',
|
|
507
|
+
operations: ['create', 'read', 'update', 'delete'],
|
|
508
|
+
complexity: { access: 'O(1)', insertion: 'O(1)', deletion: 'O(1)' },
|
|
509
|
+
});
|
|
633
510
|
}
|
|
634
|
-
|
|
511
|
+
|
|
512
|
+
return dataStructures;
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
/**
|
|
635
516
|
* Define interfaces
|
|
636
|
-
*/
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
purpose: 'Remove resource',
|
|
674
|
-
parameters: [
|
|
675
|
-
'id'
|
|
676
|
-
],
|
|
677
|
-
returns: 'success status'
|
|
678
|
-
}
|
|
679
|
-
]
|
|
680
|
-
});
|
|
681
|
-
}
|
|
682
|
-
// Database interfaces
|
|
683
|
-
if (requirements.some((req)=>req.toLowerCase().includes('data'))) {
|
|
684
|
-
interfaces.push({
|
|
685
|
-
name: 'DatabaseInterface',
|
|
686
|
-
type: 'Data Access Layer',
|
|
687
|
-
methods: [
|
|
688
|
-
{
|
|
689
|
-
name: 'connect',
|
|
690
|
-
purpose: 'Establish connection',
|
|
691
|
-
parameters: [
|
|
692
|
-
'config'
|
|
693
|
-
],
|
|
694
|
-
returns: 'connection object'
|
|
695
|
-
},
|
|
696
|
-
{
|
|
697
|
-
name: 'query',
|
|
698
|
-
purpose: 'Execute query',
|
|
699
|
-
parameters: [
|
|
700
|
-
'sql',
|
|
701
|
-
'params'
|
|
702
|
-
],
|
|
703
|
-
returns: 'result set'
|
|
704
|
-
},
|
|
705
|
-
{
|
|
706
|
-
name: 'transaction',
|
|
707
|
-
purpose: 'Execute transaction',
|
|
708
|
-
parameters: [
|
|
709
|
-
'operations'
|
|
710
|
-
],
|
|
711
|
-
returns: 'transaction result'
|
|
712
|
-
},
|
|
713
|
-
{
|
|
714
|
-
name: 'disconnect',
|
|
715
|
-
purpose: 'Close connection',
|
|
716
|
-
parameters: [],
|
|
717
|
-
returns: 'void'
|
|
718
|
-
}
|
|
719
|
-
]
|
|
720
|
-
});
|
|
721
|
-
}
|
|
722
|
-
// Service interfaces
|
|
723
|
-
interfaces.push({
|
|
724
|
-
name: 'ServiceInterface',
|
|
725
|
-
type: 'Business Logic Layer',
|
|
726
|
-
methods: [
|
|
727
|
-
{
|
|
728
|
-
name: 'initialize',
|
|
729
|
-
purpose: 'Initialize service',
|
|
730
|
-
parameters: [
|
|
731
|
-
'config'
|
|
732
|
-
],
|
|
733
|
-
returns: 'service instance'
|
|
734
|
-
},
|
|
735
|
-
{
|
|
736
|
-
name: 'execute',
|
|
737
|
-
purpose: 'Execute main operation',
|
|
738
|
-
parameters: [
|
|
739
|
-
'request'
|
|
740
|
-
],
|
|
741
|
-
returns: 'response'
|
|
742
|
-
},
|
|
743
|
-
{
|
|
744
|
-
name: 'validate',
|
|
745
|
-
purpose: 'Validate input',
|
|
746
|
-
parameters: [
|
|
747
|
-
'data'
|
|
748
|
-
],
|
|
749
|
-
returns: 'validation result'
|
|
750
|
-
},
|
|
751
|
-
{
|
|
752
|
-
name: 'cleanup',
|
|
753
|
-
purpose: 'Clean up resources',
|
|
754
|
-
parameters: [],
|
|
755
|
-
returns: 'void'
|
|
756
|
-
}
|
|
757
|
-
]
|
|
758
|
-
});
|
|
759
|
-
return interfaces;
|
|
517
|
+
*/
|
|
518
|
+
async defineInterfaces(specification) {
|
|
519
|
+
const interfaces = [];
|
|
520
|
+
const requirements = specification.requirements || [];
|
|
521
|
+
|
|
522
|
+
// API interfaces
|
|
523
|
+
if (requirements.some((req) => req.toLowerCase().includes('api'))) {
|
|
524
|
+
interfaces.push({
|
|
525
|
+
name: 'APIInterface',
|
|
526
|
+
type: 'REST API',
|
|
527
|
+
methods: [
|
|
528
|
+
{
|
|
529
|
+
name: 'GET',
|
|
530
|
+
purpose: 'Retrieve data',
|
|
531
|
+
parameters: ['id', 'filters'],
|
|
532
|
+
returns: 'data object',
|
|
533
|
+
},
|
|
534
|
+
{
|
|
535
|
+
name: 'POST',
|
|
536
|
+
purpose: 'Create new resource',
|
|
537
|
+
parameters: ['data'],
|
|
538
|
+
returns: 'created resource',
|
|
539
|
+
},
|
|
540
|
+
{
|
|
541
|
+
name: 'PUT',
|
|
542
|
+
purpose: 'Update existing resource',
|
|
543
|
+
parameters: ['id', 'data'],
|
|
544
|
+
returns: 'updated resource',
|
|
545
|
+
},
|
|
546
|
+
{
|
|
547
|
+
name: 'DELETE',
|
|
548
|
+
purpose: 'Remove resource',
|
|
549
|
+
parameters: ['id'],
|
|
550
|
+
returns: 'success status',
|
|
551
|
+
},
|
|
552
|
+
],
|
|
553
|
+
});
|
|
760
554
|
}
|
|
761
|
-
|
|
555
|
+
|
|
556
|
+
// Database interfaces
|
|
557
|
+
if (requirements.some((req) => req.toLowerCase().includes('data'))) {
|
|
558
|
+
interfaces.push({
|
|
559
|
+
name: 'DatabaseInterface',
|
|
560
|
+
type: 'Data Access Layer',
|
|
561
|
+
methods: [
|
|
562
|
+
{
|
|
563
|
+
name: 'connect',
|
|
564
|
+
purpose: 'Establish connection',
|
|
565
|
+
parameters: ['config'],
|
|
566
|
+
returns: 'connection object',
|
|
567
|
+
},
|
|
568
|
+
{
|
|
569
|
+
name: 'query',
|
|
570
|
+
purpose: 'Execute query',
|
|
571
|
+
parameters: ['sql', 'params'],
|
|
572
|
+
returns: 'result set',
|
|
573
|
+
},
|
|
574
|
+
{
|
|
575
|
+
name: 'transaction',
|
|
576
|
+
purpose: 'Execute transaction',
|
|
577
|
+
parameters: ['operations'],
|
|
578
|
+
returns: 'transaction result',
|
|
579
|
+
},
|
|
580
|
+
{ name: 'disconnect', purpose: 'Close connection', parameters: [], returns: 'void' },
|
|
581
|
+
],
|
|
582
|
+
});
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
// Service interfaces
|
|
586
|
+
interfaces.push({
|
|
587
|
+
name: 'ServiceInterface',
|
|
588
|
+
type: 'Business Logic Layer',
|
|
589
|
+
methods: [
|
|
590
|
+
{
|
|
591
|
+
name: 'initialize',
|
|
592
|
+
purpose: 'Initialize service',
|
|
593
|
+
parameters: ['config'],
|
|
594
|
+
returns: 'service instance',
|
|
595
|
+
},
|
|
596
|
+
{
|
|
597
|
+
name: 'execute',
|
|
598
|
+
purpose: 'Execute main operation',
|
|
599
|
+
parameters: ['request'],
|
|
600
|
+
returns: 'response',
|
|
601
|
+
},
|
|
602
|
+
{
|
|
603
|
+
name: 'validate',
|
|
604
|
+
purpose: 'Validate input',
|
|
605
|
+
parameters: ['data'],
|
|
606
|
+
returns: 'validation result',
|
|
607
|
+
},
|
|
608
|
+
{ name: 'cleanup', purpose: 'Clean up resources', parameters: [], returns: 'void' },
|
|
609
|
+
],
|
|
610
|
+
});
|
|
611
|
+
|
|
612
|
+
return interfaces;
|
|
613
|
+
}
|
|
614
|
+
|
|
615
|
+
/**
|
|
762
616
|
* Map logic flow
|
|
763
|
-
*/
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
description: requirement,
|
|
789
|
-
inputs: this.identifyInputs(requirement),
|
|
790
|
-
outputs: this.identifyOutputs(requirement),
|
|
791
|
-
conditions: this.identifyConditions(requirement)
|
|
792
|
-
});
|
|
793
|
-
}
|
|
794
|
-
// Final step
|
|
795
|
-
logicFlow.push({
|
|
796
|
-
step: requirements.length + 2,
|
|
797
|
-
name: 'Finalization',
|
|
798
|
-
description: 'Cleanup and result reporting',
|
|
799
|
-
inputs: [
|
|
800
|
-
'execution results'
|
|
801
|
-
],
|
|
802
|
-
outputs: [
|
|
803
|
-
'final status',
|
|
804
|
-
'cleanup confirmation'
|
|
805
|
-
],
|
|
806
|
-
conditions: [
|
|
807
|
-
'all operations completed'
|
|
808
|
-
]
|
|
809
|
-
});
|
|
810
|
-
return logicFlow;
|
|
617
|
+
*/
|
|
618
|
+
async mapLogicFlow(specification) {
|
|
619
|
+
const logicFlow = [];
|
|
620
|
+
const requirements = specification.requirements || [];
|
|
621
|
+
|
|
622
|
+
// Main flow
|
|
623
|
+
logicFlow.push({
|
|
624
|
+
step: 1,
|
|
625
|
+
name: 'Initialization',
|
|
626
|
+
description: 'System startup and configuration',
|
|
627
|
+
inputs: ['configuration', 'environment variables'],
|
|
628
|
+
outputs: ['initialized system'],
|
|
629
|
+
conditions: ['valid configuration', 'available resources'],
|
|
630
|
+
});
|
|
631
|
+
|
|
632
|
+
// Process each requirement as a flow step
|
|
633
|
+
for (const [index, requirement] of requirements.entries()) {
|
|
634
|
+
logicFlow.push({
|
|
635
|
+
step: index + 2,
|
|
636
|
+
name: this.generateFunctionName(requirement),
|
|
637
|
+
description: requirement,
|
|
638
|
+
inputs: this.identifyInputs(requirement),
|
|
639
|
+
outputs: this.identifyOutputs(requirement),
|
|
640
|
+
conditions: this.identifyConditions(requirement),
|
|
641
|
+
});
|
|
811
642
|
}
|
|
812
|
-
|
|
643
|
+
|
|
644
|
+
// Final step
|
|
645
|
+
logicFlow.push({
|
|
646
|
+
step: requirements.length + 2,
|
|
647
|
+
name: 'Finalization',
|
|
648
|
+
description: 'Cleanup and result reporting',
|
|
649
|
+
inputs: ['execution results'],
|
|
650
|
+
outputs: ['final status', 'cleanup confirmation'],
|
|
651
|
+
conditions: ['all operations completed'],
|
|
652
|
+
});
|
|
653
|
+
|
|
654
|
+
return logicFlow;
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
/**
|
|
813
658
|
* Identify inputs for requirement
|
|
814
|
-
*/
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
659
|
+
*/
|
|
660
|
+
identifyInputs(requirement) {
|
|
661
|
+
const inputs = [];
|
|
662
|
+
const reqLower = requirement.toLowerCase();
|
|
663
|
+
|
|
664
|
+
if (reqLower.includes('api')) inputs.push('HTTP request', 'request parameters');
|
|
665
|
+
if (reqLower.includes('data')) inputs.push('data payload', 'database connection');
|
|
666
|
+
if (reqLower.includes('user')) inputs.push('user credentials', 'user input');
|
|
667
|
+
if (reqLower.includes('validate')) inputs.push('validation rules', 'input data');
|
|
668
|
+
if (reqLower.includes('authenticate')) inputs.push('authentication credentials');
|
|
669
|
+
|
|
670
|
+
return inputs.length > 0 ? inputs : ['system input'];
|
|
671
|
+
}
|
|
672
|
+
|
|
673
|
+
/**
|
|
827
674
|
* Identify outputs for requirement
|
|
828
|
-
*/
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
675
|
+
*/
|
|
676
|
+
identifyOutputs(requirement) {
|
|
677
|
+
const outputs = [];
|
|
678
|
+
const reqLower = requirement.toLowerCase();
|
|
679
|
+
|
|
680
|
+
if (reqLower.includes('api')) outputs.push('HTTP response', 'status code');
|
|
681
|
+
if (reqLower.includes('data')) outputs.push('processed data', 'transaction result');
|
|
682
|
+
if (reqLower.includes('validate')) outputs.push('validation result', 'error messages');
|
|
683
|
+
if (reqLower.includes('authenticate')) outputs.push('authentication token', 'user session');
|
|
684
|
+
|
|
685
|
+
return outputs.length > 0 ? outputs : ['operation result'];
|
|
686
|
+
}
|
|
687
|
+
|
|
688
|
+
/**
|
|
840
689
|
* Identify conditions for requirement
|
|
841
|
-
*/
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
690
|
+
*/
|
|
691
|
+
identifyConditions(requirement) {
|
|
692
|
+
const conditions = [];
|
|
693
|
+
const reqLower = requirement.toLowerCase();
|
|
694
|
+
|
|
695
|
+
if (reqLower.includes('validate')) conditions.push('data is valid', 'rules are satisfied');
|
|
696
|
+
if (reqLower.includes('authenticate')) conditions.push('credentials are valid', 'user exists');
|
|
697
|
+
if (reqLower.includes('data'))
|
|
698
|
+
conditions.push('database is available', 'data integrity maintained');
|
|
699
|
+
if (reqLower.includes('api'))
|
|
700
|
+
conditions.push('request format is valid', 'service is available');
|
|
701
|
+
|
|
702
|
+
return conditions.length > 0 ? conditions : ['preconditions met'];
|
|
703
|
+
}
|
|
704
|
+
|
|
705
|
+
/**
|
|
853
706
|
* Identify edge cases
|
|
854
|
-
*/
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
707
|
+
*/
|
|
708
|
+
async identifyEdgeCases(specification) {
|
|
709
|
+
const edgeCases = [];
|
|
710
|
+
const requirements = specification.requirements || [];
|
|
711
|
+
|
|
712
|
+
// Common edge cases
|
|
713
|
+
edgeCases.push({
|
|
714
|
+
case: 'Empty or null input',
|
|
715
|
+
description: 'System receives no input or null values',
|
|
716
|
+
handling: 'Validate inputs and return appropriate error messages',
|
|
717
|
+
severity: 'high',
|
|
718
|
+
});
|
|
719
|
+
|
|
720
|
+
edgeCases.push({
|
|
721
|
+
case: 'Network connectivity issues',
|
|
722
|
+
description: 'External services are unavailable',
|
|
723
|
+
handling: 'Implement retry logic with exponential backoff',
|
|
724
|
+
severity: 'medium',
|
|
725
|
+
});
|
|
726
|
+
|
|
727
|
+
edgeCases.push({
|
|
728
|
+
case: 'Concurrent access',
|
|
729
|
+
description: 'Multiple users access same resources simultaneously',
|
|
730
|
+
handling: 'Implement proper locking and transaction management',
|
|
731
|
+
severity: 'high',
|
|
732
|
+
});
|
|
733
|
+
|
|
734
|
+
edgeCases.push({
|
|
735
|
+
case: 'Resource exhaustion',
|
|
736
|
+
description: 'System runs out of memory or disk space',
|
|
737
|
+
handling: 'Monitor resources and implement graceful degradation',
|
|
738
|
+
severity: 'high',
|
|
739
|
+
});
|
|
740
|
+
|
|
741
|
+
// Requirement-specific edge cases
|
|
742
|
+
for (const requirement of requirements) {
|
|
743
|
+
const reqLower = requirement.toLowerCase();
|
|
744
|
+
|
|
745
|
+
if (reqLower.includes('api')) {
|
|
864
746
|
edgeCases.push({
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
747
|
+
case: 'API rate limiting',
|
|
748
|
+
description: 'Too many requests from single client',
|
|
749
|
+
handling: 'Implement rate limiting and throttling',
|
|
750
|
+
severity: 'medium',
|
|
869
751
|
});
|
|
752
|
+
}
|
|
753
|
+
|
|
754
|
+
if (reqLower.includes('data')) {
|
|
870
755
|
edgeCases.push({
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
756
|
+
case: 'Data corruption',
|
|
757
|
+
description: 'Database contains invalid or corrupted data',
|
|
758
|
+
handling: 'Implement data validation and recovery procedures',
|
|
759
|
+
severity: 'high',
|
|
875
760
|
});
|
|
761
|
+
}
|
|
762
|
+
|
|
763
|
+
if (reqLower.includes('authenticate')) {
|
|
876
764
|
edgeCases.push({
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
765
|
+
case: 'Authentication timeout',
|
|
766
|
+
description: 'User session expires during operation',
|
|
767
|
+
handling: 'Implement session refresh and re-authentication',
|
|
768
|
+
severity: 'medium',
|
|
881
769
|
});
|
|
882
|
-
|
|
883
|
-
for (const requirement of requirements){
|
|
884
|
-
const reqLower = requirement.toLowerCase();
|
|
885
|
-
if (reqLower.includes('api')) {
|
|
886
|
-
edgeCases.push({
|
|
887
|
-
case: 'API rate limiting',
|
|
888
|
-
description: 'Too many requests from single client',
|
|
889
|
-
handling: 'Implement rate limiting and throttling',
|
|
890
|
-
severity: 'medium'
|
|
891
|
-
});
|
|
892
|
-
}
|
|
893
|
-
if (reqLower.includes('data')) {
|
|
894
|
-
edgeCases.push({
|
|
895
|
-
case: 'Data corruption',
|
|
896
|
-
description: 'Database contains invalid or corrupted data',
|
|
897
|
-
handling: 'Implement data validation and recovery procedures',
|
|
898
|
-
severity: 'high'
|
|
899
|
-
});
|
|
900
|
-
}
|
|
901
|
-
if (reqLower.includes('authenticate')) {
|
|
902
|
-
edgeCases.push({
|
|
903
|
-
case: 'Authentication timeout',
|
|
904
|
-
description: 'User session expires during operation',
|
|
905
|
-
handling: 'Implement session refresh and re-authentication',
|
|
906
|
-
severity: 'medium'
|
|
907
|
-
});
|
|
908
|
-
}
|
|
909
|
-
}
|
|
910
|
-
return edgeCases;
|
|
770
|
+
}
|
|
911
771
|
}
|
|
912
|
-
|
|
772
|
+
|
|
773
|
+
return edgeCases;
|
|
774
|
+
}
|
|
775
|
+
|
|
776
|
+
/**
|
|
913
777
|
* Analyze complexity
|
|
914
|
-
*/
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
778
|
+
*/
|
|
779
|
+
async analyzeComplexity(pseudocode) {
|
|
780
|
+
const analysis = {
|
|
781
|
+
overall: 'medium',
|
|
782
|
+
functions: {},
|
|
783
|
+
recommendations: [],
|
|
784
|
+
};
|
|
785
|
+
|
|
786
|
+
let totalComplexity = 0;
|
|
787
|
+
let functionCount = 0;
|
|
788
|
+
|
|
789
|
+
for (const func of pseudocode) {
|
|
790
|
+
if (func.complexity) {
|
|
791
|
+
analysis.functions[func.function] = func.complexity;
|
|
792
|
+
totalComplexity += func.complexity.cyclomatic;
|
|
793
|
+
functionCount++;
|
|
794
|
+
}
|
|
795
|
+
}
|
|
796
|
+
|
|
797
|
+
const averageComplexity = functionCount > 0 ? totalComplexity / functionCount : 1;
|
|
798
|
+
|
|
799
|
+
if (averageComplexity > 10) {
|
|
800
|
+
analysis.overall = 'high';
|
|
801
|
+
analysis.recommendations.push('Consider breaking down complex functions');
|
|
802
|
+
} else if (averageComplexity > 5) {
|
|
803
|
+
analysis.overall = 'medium';
|
|
804
|
+
analysis.recommendations.push('Monitor function complexity during implementation');
|
|
805
|
+
} else {
|
|
806
|
+
analysis.overall = 'low';
|
|
807
|
+
analysis.recommendations.push('Complexity is manageable');
|
|
941
808
|
}
|
|
942
|
-
|
|
809
|
+
|
|
810
|
+
return analysis;
|
|
811
|
+
}
|
|
812
|
+
|
|
813
|
+
/**
|
|
943
814
|
* Identify dependencies
|
|
944
|
-
*/
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
815
|
+
*/
|
|
816
|
+
async identifyDependencies(specification) {
|
|
817
|
+
const dependencies = [];
|
|
818
|
+
const requirements = specification.requirements || [];
|
|
819
|
+
|
|
820
|
+
// Analyze requirements for dependencies
|
|
821
|
+
for (const requirement of requirements) {
|
|
822
|
+
const reqLower = requirement.toLowerCase();
|
|
823
|
+
|
|
824
|
+
if (reqLower.includes('api')) {
|
|
825
|
+
dependencies.push('HTTP client library');
|
|
826
|
+
dependencies.push('JSON parsing library');
|
|
827
|
+
dependencies.push('Authentication middleware');
|
|
828
|
+
}
|
|
829
|
+
|
|
830
|
+
if (reqLower.includes('data')) {
|
|
831
|
+
dependencies.push('Database driver');
|
|
832
|
+
dependencies.push('ORM or query builder');
|
|
833
|
+
dependencies.push('Connection pooling');
|
|
834
|
+
}
|
|
835
|
+
|
|
836
|
+
if (reqLower.includes('validate')) {
|
|
837
|
+
dependencies.push('Validation library');
|
|
838
|
+
dependencies.push('Schema definition');
|
|
839
|
+
}
|
|
840
|
+
|
|
841
|
+
if (reqLower.includes('test')) {
|
|
842
|
+
dependencies.push('Testing framework');
|
|
843
|
+
dependencies.push('Mocking library');
|
|
844
|
+
}
|
|
973
845
|
}
|
|
974
|
-
|
|
846
|
+
|
|
847
|
+
// Remove duplicates
|
|
848
|
+
return [...new Set(dependencies)];
|
|
849
|
+
}
|
|
850
|
+
|
|
851
|
+
/**
|
|
975
852
|
* Generate pseudocode document
|
|
976
|
-
*/
|
|
977
|
-
|
|
853
|
+
*/
|
|
854
|
+
async generatePseudocodeDocument(result) {
|
|
855
|
+
const document = `# ${this.taskDescription} - Pseudocode
|
|
978
856
|
|
|
979
857
|
## Flow Diagram
|
|
980
858
|
**Type**: ${result.flowDiagram.type}
|
|
@@ -982,14 +860,16 @@ export class SparcPseudocode extends SparcPhase {
|
|
|
982
860
|
**Exit**: ${result.flowDiagram.exit}
|
|
983
861
|
|
|
984
862
|
### Nodes
|
|
985
|
-
${result.flowDiagram.nodes.map((node)
|
|
863
|
+
${result.flowDiagram.nodes.map((node) => `- **${node.id}** (${node.type}): ${node.label}`).join('\n')}
|
|
986
864
|
|
|
987
865
|
### Edges
|
|
988
|
-
${result.flowDiagram.edges.map((edge)
|
|
866
|
+
${result.flowDiagram.edges.map((edge) => `- ${edge.from} → ${edge.to} ${edge.label ? `(${edge.label})` : ''}`).join('\n')}
|
|
989
867
|
|
|
990
868
|
## Pseudocode
|
|
991
869
|
|
|
992
|
-
${result.pseudocode
|
|
870
|
+
${result.pseudocode
|
|
871
|
+
.map(
|
|
872
|
+
(func, index) => `
|
|
993
873
|
### ${index + 1}. ${func.function}
|
|
994
874
|
**Description**: ${func.description}
|
|
995
875
|
**Complexity**: ${func.complexity ? `Cyclomatic: ${func.complexity.cyclomatic}, Lines: ${func.complexity.lines}` : 'N/A'}
|
|
@@ -997,84 +877,108 @@ ${result.pseudocode.map((func, index)=>`
|
|
|
997
877
|
\`\`\`
|
|
998
878
|
${func.steps.join('\n')}
|
|
999
879
|
\`\`\`
|
|
1000
|
-
|
|
880
|
+
`,
|
|
881
|
+
)
|
|
882
|
+
.join('\n')}
|
|
1001
883
|
|
|
1002
884
|
## Algorithms
|
|
1003
885
|
|
|
1004
|
-
${result.algorithms
|
|
886
|
+
${result.algorithms
|
|
887
|
+
.map(
|
|
888
|
+
(algo, index) => `
|
|
1005
889
|
### ${index + 1}. ${algo.name}
|
|
1006
890
|
**Purpose**: ${algo.purpose}
|
|
1007
891
|
**Complexity**: ${algo.complexity}
|
|
1008
892
|
**Approach**: ${algo.approach}
|
|
1009
|
-
|
|
893
|
+
`,
|
|
894
|
+
)
|
|
895
|
+
.join('\n')}
|
|
1010
896
|
|
|
1011
897
|
## Data Structures
|
|
1012
898
|
|
|
1013
|
-
${result.dataStructures
|
|
899
|
+
${result.dataStructures
|
|
900
|
+
.map(
|
|
901
|
+
(ds, index) => `
|
|
1014
902
|
### ${index + 1}. ${ds.name}
|
|
1015
903
|
**Purpose**: ${ds.purpose}
|
|
1016
904
|
**Operations**: ${ds.operations.join(', ')}
|
|
1017
905
|
**Complexity**: Access: ${ds.complexity.access}, Insertion: ${ds.complexity.insertion}, Deletion: ${ds.complexity.deletion}
|
|
1018
|
-
|
|
906
|
+
`,
|
|
907
|
+
)
|
|
908
|
+
.join('\n')}
|
|
1019
909
|
|
|
1020
910
|
## Interfaces
|
|
1021
911
|
|
|
1022
|
-
${result.interfaces
|
|
912
|
+
${result.interfaces
|
|
913
|
+
.map(
|
|
914
|
+
(iface, index) => `
|
|
1023
915
|
### ${index + 1}. ${iface.name}
|
|
1024
916
|
**Type**: ${iface.type}
|
|
1025
917
|
|
|
1026
|
-
${iface.methods
|
|
918
|
+
${iface.methods
|
|
919
|
+
.map(
|
|
920
|
+
(method) => `
|
|
1027
921
|
#### ${method.name}
|
|
1028
922
|
- **Purpose**: ${method.purpose}
|
|
1029
923
|
- **Parameters**: ${method.parameters.join(', ')}
|
|
1030
924
|
- **Returns**: ${method.returns}
|
|
1031
|
-
|
|
1032
|
-
|
|
925
|
+
`,
|
|
926
|
+
)
|
|
927
|
+
.join('\n')}
|
|
928
|
+
`,
|
|
929
|
+
)
|
|
930
|
+
.join('\n')}
|
|
1033
931
|
|
|
1034
932
|
## Logic Flow
|
|
1035
933
|
|
|
1036
|
-
${result.logicFlow
|
|
934
|
+
${result.logicFlow
|
|
935
|
+
.map(
|
|
936
|
+
(step) => `
|
|
1037
937
|
### Step ${step.step}: ${step.name}
|
|
1038
938
|
**Description**: ${step.description}
|
|
1039
939
|
**Inputs**: ${step.inputs.join(', ')}
|
|
1040
940
|
**Outputs**: ${step.outputs.join(', ')}
|
|
1041
941
|
**Conditions**: ${step.conditions.join(', ')}
|
|
1042
|
-
|
|
942
|
+
`,
|
|
943
|
+
)
|
|
944
|
+
.join('\n')}
|
|
1043
945
|
|
|
1044
946
|
## Edge Cases
|
|
1045
947
|
|
|
1046
|
-
${result.edgeCases
|
|
948
|
+
${result.edgeCases
|
|
949
|
+
.map(
|
|
950
|
+
(edge, index) => `
|
|
1047
951
|
### ${index + 1}. ${edge.case}
|
|
1048
952
|
**Description**: ${edge.description}
|
|
1049
953
|
**Handling**: ${edge.handling}
|
|
1050
954
|
**Severity**: ${edge.severity}
|
|
1051
|
-
|
|
955
|
+
`,
|
|
956
|
+
)
|
|
957
|
+
.join('\n')}
|
|
1052
958
|
|
|
1053
959
|
## Complexity Analysis
|
|
1054
960
|
**Overall Complexity**: ${result.complexityAnalysis.overall}
|
|
1055
961
|
|
|
1056
962
|
### Function Complexity
|
|
1057
|
-
${Object.entries(result.complexityAnalysis.functions || {})
|
|
963
|
+
${Object.entries(result.complexityAnalysis.functions || {})
|
|
964
|
+
.map(
|
|
965
|
+
([func, complexity]) => `
|
|
1058
966
|
- **${func}**: Cyclomatic: ${complexity.cyclomatic}, Lines: ${complexity.lines}, Level: ${complexity.level}
|
|
1059
|
-
|
|
967
|
+
`,
|
|
968
|
+
)
|
|
969
|
+
.join('\n')}
|
|
1060
970
|
|
|
1061
971
|
### Recommendations
|
|
1062
|
-
${result.complexityAnalysis.recommendations.map((rec)
|
|
972
|
+
${result.complexityAnalysis.recommendations.map((rec) => `- ${rec}`).join('\n')}
|
|
1063
973
|
|
|
1064
974
|
## Dependencies
|
|
1065
|
-
${result.dependencies.map((dep, index)
|
|
975
|
+
${result.dependencies.map((dep, index) => `${index + 1}. ${dep}`).join('\n')}
|
|
1066
976
|
`;
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
super('pseudocode', taskDescription, options);
|
|
1073
|
-
this.flowDiagram = null;
|
|
1074
|
-
this.pseudocode = [];
|
|
1075
|
-
this.algorithms = [];
|
|
1076
|
-
this.dataStructures = [];
|
|
1077
|
-
this.interfaces = [];
|
|
1078
|
-
}
|
|
977
|
+
|
|
978
|
+
// Save document
|
|
979
|
+
await this.saveArtifact('pseudocode.md', document);
|
|
980
|
+
return document;
|
|
981
|
+
}
|
|
1079
982
|
}
|
|
983
|
+
|
|
1080
984
|
export default SparcPseudocode;
|