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,702 +1,778 @@
|
|
|
1
1
|
// recovery-manager.js - Automated recovery procedures for common failures
|
|
2
|
+
|
|
2
3
|
export class RecoveryManager {
|
|
3
|
-
|
|
4
|
+
constructor(workingDir) {
|
|
5
|
+
this.workingDir = workingDir;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
/**
|
|
4
9
|
* Perform automated recovery based on failure type
|
|
5
|
-
*/
|
|
6
|
-
|
|
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
|
-
|
|
10
|
+
*/
|
|
11
|
+
async performRecovery(failureType, context = {}) {
|
|
12
|
+
const result = {
|
|
13
|
+
success: true,
|
|
14
|
+
errors: [],
|
|
15
|
+
warnings: [],
|
|
16
|
+
actions: [],
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
try {
|
|
20
|
+
console.log(`🔧 Attempting recovery for: ${failureType}`);
|
|
21
|
+
|
|
22
|
+
let recoveryResult;
|
|
23
|
+
|
|
24
|
+
switch (failureType) {
|
|
25
|
+
case 'permission-denied':
|
|
26
|
+
recoveryResult = await this.recoverFromPermissionDenied(context);
|
|
27
|
+
break;
|
|
28
|
+
|
|
29
|
+
case 'disk-space':
|
|
30
|
+
recoveryResult = await this.recoverFromDiskSpace(context);
|
|
31
|
+
break;
|
|
32
|
+
|
|
33
|
+
case 'missing-dependencies':
|
|
34
|
+
recoveryResult = await this.recoverFromMissingDependencies(context);
|
|
35
|
+
break;
|
|
36
|
+
|
|
37
|
+
case 'corrupted-config':
|
|
38
|
+
recoveryResult = await this.recoverFromCorruptedConfig(context);
|
|
39
|
+
break;
|
|
40
|
+
|
|
41
|
+
case 'partial-initialization':
|
|
42
|
+
recoveryResult = await this.recoverFromPartialInitialization(context);
|
|
43
|
+
break;
|
|
44
|
+
|
|
45
|
+
case 'sparc-failure':
|
|
46
|
+
recoveryResult = await this.recoverFromSparcFailure(context);
|
|
47
|
+
break;
|
|
48
|
+
|
|
49
|
+
case 'executable-creation-failure':
|
|
50
|
+
recoveryResult = await this.recoverFromExecutableFailure(context);
|
|
51
|
+
break;
|
|
52
|
+
|
|
53
|
+
case 'memory-setup-failure':
|
|
54
|
+
recoveryResult = await this.recoverFromMemorySetupFailure(context);
|
|
55
|
+
break;
|
|
56
|
+
|
|
57
|
+
default:
|
|
58
|
+
recoveryResult = await this.performGenericRecovery(failureType, context);
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
result.success = recoveryResult.success;
|
|
63
|
+
result.errors.push(...recoveryResult.errors);
|
|
64
|
+
result.warnings.push(...recoveryResult.warnings);
|
|
65
|
+
result.actions.push(...recoveryResult.actions);
|
|
66
|
+
} catch (error) {
|
|
67
|
+
result.success = false;
|
|
68
|
+
result.errors.push(`Recovery failed: ${error.message}`);
|
|
53
69
|
}
|
|
54
|
-
|
|
70
|
+
|
|
71
|
+
return result;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
55
75
|
* Recover from permission denied errors
|
|
56
|
-
*/
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
76
|
+
*/
|
|
77
|
+
async recoverFromPermissionDenied(context) {
|
|
78
|
+
const result = {
|
|
79
|
+
success: true,
|
|
80
|
+
errors: [],
|
|
81
|
+
warnings: [],
|
|
82
|
+
actions: [],
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
try {
|
|
86
|
+
// Try to fix permissions on the working directory
|
|
87
|
+
if (Deno.build.os !== 'windows') {
|
|
63
88
|
try {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
} else {
|
|
80
|
-
result.warnings.push('Could not fix permissions automatically');
|
|
81
|
-
}
|
|
82
|
-
} catch {
|
|
83
|
-
result.warnings.push('Permission fix command not available');
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
// Try to create a test file to verify permissions
|
|
87
|
-
try {
|
|
88
|
-
const testFile = `${this.workingDir}/.permission-test`;
|
|
89
|
-
await Deno.writeTextFile(testFile, 'test');
|
|
90
|
-
await Deno.remove(testFile);
|
|
91
|
-
result.actions.push('Verified write permissions restored');
|
|
92
|
-
} catch {
|
|
93
|
-
result.success = false;
|
|
94
|
-
result.errors.push('Write permissions still denied');
|
|
95
|
-
}
|
|
96
|
-
} catch (error) {
|
|
97
|
-
result.success = false;
|
|
98
|
-
result.errors.push(`Permission recovery failed: ${error.message}`);
|
|
89
|
+
const command = new Deno.Command('chmod', {
|
|
90
|
+
args: ['-R', '755', this.workingDir],
|
|
91
|
+
stdout: 'piped',
|
|
92
|
+
stderr: 'piped',
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
const { success } = await command.output();
|
|
96
|
+
|
|
97
|
+
if (success) {
|
|
98
|
+
result.actions.push('Fixed directory permissions');
|
|
99
|
+
} else {
|
|
100
|
+
result.warnings.push('Could not fix permissions automatically');
|
|
101
|
+
}
|
|
102
|
+
} catch {
|
|
103
|
+
result.warnings.push('Permission fix command not available');
|
|
99
104
|
}
|
|
100
|
-
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// Try to create a test file to verify permissions
|
|
108
|
+
try {
|
|
109
|
+
const testFile = `${this.workingDir}/.permission-test`;
|
|
110
|
+
await Deno.writeTextFile(testFile, 'test');
|
|
111
|
+
await Deno.remove(testFile);
|
|
112
|
+
result.actions.push('Verified write permissions restored');
|
|
113
|
+
} catch {
|
|
114
|
+
result.success = false;
|
|
115
|
+
result.errors.push('Write permissions still denied');
|
|
116
|
+
}
|
|
117
|
+
} catch (error) {
|
|
118
|
+
result.success = false;
|
|
119
|
+
result.errors.push(`Permission recovery failed: ${error.message}`);
|
|
101
120
|
}
|
|
102
|
-
|
|
121
|
+
|
|
122
|
+
return result;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
103
126
|
* Recover from disk space issues
|
|
104
|
-
*/
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
127
|
+
*/
|
|
128
|
+
async recoverFromDiskSpace(context) {
|
|
129
|
+
const result = {
|
|
130
|
+
success: true,
|
|
131
|
+
errors: [],
|
|
132
|
+
warnings: [],
|
|
133
|
+
actions: [],
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
try {
|
|
137
|
+
// Clean up temporary files
|
|
138
|
+
const tempCleanup = await this.cleanupTemporaryFiles();
|
|
139
|
+
result.actions.push(...tempCleanup.actions);
|
|
140
|
+
|
|
141
|
+
// Clean up old backups
|
|
142
|
+
const backupCleanup = await this.cleanupOldBackups();
|
|
143
|
+
result.actions.push(...backupCleanup.actions);
|
|
144
|
+
|
|
145
|
+
// Check available space after cleanup
|
|
146
|
+
const spaceCheck = await this.checkAvailableSpace();
|
|
147
|
+
if (spaceCheck.available > 100) {
|
|
148
|
+
// MB
|
|
149
|
+
result.actions.push(`Freed space: ${spaceCheck.available}MB available`);
|
|
150
|
+
} else {
|
|
151
|
+
result.success = false;
|
|
152
|
+
result.errors.push('Insufficient disk space even after cleanup');
|
|
153
|
+
}
|
|
154
|
+
} catch (error) {
|
|
155
|
+
result.success = false;
|
|
156
|
+
result.errors.push(`Disk space recovery failed: ${error.message}`);
|
|
132
157
|
}
|
|
133
|
-
|
|
158
|
+
|
|
159
|
+
return result;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/**
|
|
134
163
|
* Recover from missing dependencies
|
|
135
|
-
*/
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
// Verify dependencies are now available
|
|
156
|
-
const verifyResult = await this.verifyDependencies(missingDeps);
|
|
157
|
-
if (!verifyResult.allAvailable) {
|
|
158
|
-
result.success = false;
|
|
159
|
-
result.errors.push('Some dependencies still unavailable after recovery');
|
|
160
|
-
}
|
|
161
|
-
} catch (error) {
|
|
162
|
-
result.success = false;
|
|
163
|
-
result.errors.push(`Dependency recovery failed: ${error.message}`);
|
|
164
|
+
*/
|
|
165
|
+
async recoverFromMissingDependencies(context) {
|
|
166
|
+
const result = {
|
|
167
|
+
success: true,
|
|
168
|
+
errors: [],
|
|
169
|
+
warnings: [],
|
|
170
|
+
actions: [],
|
|
171
|
+
};
|
|
172
|
+
|
|
173
|
+
try {
|
|
174
|
+
const missingDeps = context.missingDependencies || ['node', 'npm'];
|
|
175
|
+
|
|
176
|
+
for (const dep of missingDeps) {
|
|
177
|
+
const installResult = await this.attemptDependencyInstallation(dep);
|
|
178
|
+
if (installResult.success) {
|
|
179
|
+
result.actions.push(`Installed/configured: ${dep}`);
|
|
180
|
+
} else {
|
|
181
|
+
result.warnings.push(`Could not install ${dep}: ${installResult.error}`);
|
|
164
182
|
}
|
|
165
|
-
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
// Verify dependencies are now available
|
|
186
|
+
const verifyResult = await this.verifyDependencies(missingDeps);
|
|
187
|
+
if (!verifyResult.allAvailable) {
|
|
188
|
+
result.success = false;
|
|
189
|
+
result.errors.push('Some dependencies still unavailable after recovery');
|
|
190
|
+
}
|
|
191
|
+
} catch (error) {
|
|
192
|
+
result.success = false;
|
|
193
|
+
result.errors.push(`Dependency recovery failed: ${error.message}`);
|
|
166
194
|
}
|
|
167
|
-
|
|
195
|
+
|
|
196
|
+
return result;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/**
|
|
168
200
|
* Recover from corrupted configuration
|
|
169
|
-
*/
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
}
|
|
188
|
-
// Validate recovered configuration
|
|
189
|
-
const validationResult = await this.validateRecoveredConfigs(corruptedFiles);
|
|
190
|
-
if (!validationResult.valid) {
|
|
191
|
-
result.warnings.push('Some recovered configs may have issues');
|
|
192
|
-
}
|
|
193
|
-
} catch (error) {
|
|
194
|
-
result.success = false;
|
|
195
|
-
result.errors.push(`Config recovery failed: ${error.message}`);
|
|
201
|
+
*/
|
|
202
|
+
async recoverFromCorruptedConfig(context) {
|
|
203
|
+
const result = {
|
|
204
|
+
success: true,
|
|
205
|
+
errors: [],
|
|
206
|
+
warnings: [],
|
|
207
|
+
actions: [],
|
|
208
|
+
};
|
|
209
|
+
|
|
210
|
+
try {
|
|
211
|
+
const corruptedFiles = context.corruptedFiles || ['.roomodes'];
|
|
212
|
+
|
|
213
|
+
for (const file of corruptedFiles) {
|
|
214
|
+
const recoveryResult = await this.recoverConfigFile(file);
|
|
215
|
+
if (recoveryResult.success) {
|
|
216
|
+
result.actions.push(`Recovered config file: ${file}`);
|
|
217
|
+
} else {
|
|
218
|
+
result.warnings.push(`Could not recover: ${file}`);
|
|
196
219
|
}
|
|
197
|
-
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
// Validate recovered configuration
|
|
223
|
+
const validationResult = await this.validateRecoveredConfigs(corruptedFiles);
|
|
224
|
+
if (!validationResult.valid) {
|
|
225
|
+
result.warnings.push('Some recovered configs may have issues');
|
|
226
|
+
}
|
|
227
|
+
} catch (error) {
|
|
228
|
+
result.success = false;
|
|
229
|
+
result.errors.push(`Config recovery failed: ${error.message}`);
|
|
198
230
|
}
|
|
199
|
-
|
|
231
|
+
|
|
232
|
+
return result;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
/**
|
|
200
236
|
* Recover from partial initialization
|
|
201
|
-
*/
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
if (!verificationResult.complete) {
|
|
226
|
-
result.success = false;
|
|
227
|
-
result.errors.push('Initialization still incomplete after recovery');
|
|
228
|
-
}
|
|
229
|
-
} catch (error) {
|
|
230
|
-
result.success = false;
|
|
231
|
-
result.errors.push(`Partial initialization recovery failed: ${error.message}`);
|
|
237
|
+
*/
|
|
238
|
+
async recoverFromPartialInitialization(context) {
|
|
239
|
+
const result = {
|
|
240
|
+
success: true,
|
|
241
|
+
errors: [],
|
|
242
|
+
warnings: [],
|
|
243
|
+
actions: [],
|
|
244
|
+
};
|
|
245
|
+
|
|
246
|
+
try {
|
|
247
|
+
// Identify what was partially completed
|
|
248
|
+
const completedItems = await this.identifyCompletedItems();
|
|
249
|
+
const missingItems = await this.identifyMissingItems();
|
|
250
|
+
|
|
251
|
+
result.actions.push(`Found ${completedItems.length} completed items`);
|
|
252
|
+
result.actions.push(`Found ${missingItems.length} missing items`);
|
|
253
|
+
|
|
254
|
+
// Complete missing items
|
|
255
|
+
for (const item of missingItems) {
|
|
256
|
+
const completionResult = await this.completeItem(item);
|
|
257
|
+
if (completionResult.success) {
|
|
258
|
+
result.actions.push(`Completed: ${item.name}`);
|
|
259
|
+
} else {
|
|
260
|
+
result.warnings.push(`Could not complete: ${item.name}`);
|
|
232
261
|
}
|
|
233
|
-
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
// Verify initialization is now complete
|
|
265
|
+
const verificationResult = await this.verifyInitializationComplete();
|
|
266
|
+
if (!verificationResult.complete) {
|
|
267
|
+
result.success = false;
|
|
268
|
+
result.errors.push('Initialization still incomplete after recovery');
|
|
269
|
+
}
|
|
270
|
+
} catch (error) {
|
|
271
|
+
result.success = false;
|
|
272
|
+
result.errors.push(`Partial initialization recovery failed: ${error.message}`);
|
|
234
273
|
}
|
|
235
|
-
|
|
274
|
+
|
|
275
|
+
return result;
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
/**
|
|
236
279
|
* Recover from SPARC initialization failure
|
|
237
|
-
*/
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
280
|
+
*/
|
|
281
|
+
async recoverFromSparcFailure(context) {
|
|
282
|
+
const result = {
|
|
283
|
+
success: true,
|
|
284
|
+
errors: [],
|
|
285
|
+
warnings: [],
|
|
286
|
+
actions: [],
|
|
287
|
+
};
|
|
288
|
+
|
|
289
|
+
try {
|
|
290
|
+
// Try to recover .roomodes file
|
|
291
|
+
const roomodesRecovery = await this.recoverRoomodesFile();
|
|
292
|
+
if (roomodesRecovery.success) {
|
|
293
|
+
result.actions.push('Recovered .roomodes configuration');
|
|
294
|
+
} else {
|
|
295
|
+
result.warnings.push('Could not recover .roomodes');
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
// Try to recover .roo directory structure
|
|
299
|
+
const rooRecovery = await this.recoverRooDirectory();
|
|
300
|
+
if (rooRecovery.success) {
|
|
301
|
+
result.actions.push('Recovered .roo directory structure');
|
|
302
|
+
} else {
|
|
303
|
+
result.warnings.push('Could not recover .roo directory');
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
// Try to recover SPARC commands
|
|
307
|
+
const commandsRecovery = await this.recoverSparcCommands();
|
|
308
|
+
if (commandsRecovery.success) {
|
|
309
|
+
result.actions.push('Recovered SPARC commands');
|
|
310
|
+
} else {
|
|
311
|
+
result.warnings.push('Could not recover SPARC commands');
|
|
312
|
+
}
|
|
313
|
+
} catch (error) {
|
|
314
|
+
result.success = false;
|
|
315
|
+
result.errors.push(`SPARC recovery failed: ${error.message}`);
|
|
271
316
|
}
|
|
272
|
-
|
|
317
|
+
|
|
318
|
+
return result;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
/**
|
|
273
322
|
* Recover from executable creation failure
|
|
274
|
-
*/
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
result.success = false;
|
|
312
|
-
result.errors.push('Could not recreate executable');
|
|
313
|
-
}
|
|
314
|
-
} catch (error) {
|
|
315
|
-
result.success = false;
|
|
316
|
-
result.errors.push(`Executable recovery failed: ${error.message}`);
|
|
323
|
+
*/
|
|
324
|
+
async recoverFromExecutableFailure(context) {
|
|
325
|
+
const result = {
|
|
326
|
+
success: true,
|
|
327
|
+
errors: [],
|
|
328
|
+
warnings: [],
|
|
329
|
+
actions: [],
|
|
330
|
+
};
|
|
331
|
+
|
|
332
|
+
try {
|
|
333
|
+
// Try to recreate the executable
|
|
334
|
+
const executablePath = `${this.workingDir}/claude-flow`;
|
|
335
|
+
|
|
336
|
+
// Remove corrupted executable if it exists
|
|
337
|
+
try {
|
|
338
|
+
await Deno.remove(executablePath);
|
|
339
|
+
result.actions.push('Removed corrupted executable');
|
|
340
|
+
} catch {
|
|
341
|
+
// File doesn't exist
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
// Recreate executable
|
|
345
|
+
const createResult = await this.createExecutableWrapper();
|
|
346
|
+
if (createResult.success) {
|
|
347
|
+
result.actions.push('Recreated claude-flow-novice executable');
|
|
348
|
+
|
|
349
|
+
// Set permissions
|
|
350
|
+
if (Deno.build.os !== 'windows') {
|
|
351
|
+
try {
|
|
352
|
+
const command = new Deno.Command('chmod', {
|
|
353
|
+
args: ['+x', executablePath],
|
|
354
|
+
});
|
|
355
|
+
await command.output();
|
|
356
|
+
result.actions.push('Set executable permissions');
|
|
357
|
+
} catch {
|
|
358
|
+
result.warnings.push('Could not set executable permissions');
|
|
359
|
+
}
|
|
317
360
|
}
|
|
318
|
-
|
|
361
|
+
} else {
|
|
362
|
+
result.success = false;
|
|
363
|
+
result.errors.push('Could not recreate executable');
|
|
364
|
+
}
|
|
365
|
+
} catch (error) {
|
|
366
|
+
result.success = false;
|
|
367
|
+
result.errors.push(`Executable recovery failed: ${error.message}`);
|
|
319
368
|
}
|
|
320
|
-
|
|
369
|
+
|
|
370
|
+
return result;
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
/**
|
|
321
374
|
* Recover from memory setup failure
|
|
322
|
-
*/
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
for (const dir of memoryDirs){
|
|
337
|
-
try {
|
|
338
|
-
await Deno.mkdir(`${this.workingDir}/${dir}`, {
|
|
339
|
-
recursive: true
|
|
340
|
-
});
|
|
341
|
-
result.actions.push(`Created directory: ${dir}`);
|
|
342
|
-
} catch {
|
|
343
|
-
result.warnings.push(`Could not create directory: ${dir}`);
|
|
344
|
-
}
|
|
345
|
-
}
|
|
346
|
-
// Recreate memory data file
|
|
347
|
-
const memoryDataPath = `${this.workingDir}/memory/claude-flow-data.json`;
|
|
348
|
-
const initialData = {
|
|
349
|
-
agents: [],
|
|
350
|
-
tasks: [],
|
|
351
|
-
lastUpdated: Date.now()
|
|
352
|
-
};
|
|
353
|
-
try {
|
|
354
|
-
await Deno.writeTextFile(memoryDataPath, JSON.stringify(initialData, null, 2));
|
|
355
|
-
result.actions.push('Recreated memory data file');
|
|
356
|
-
} catch {
|
|
357
|
-
result.warnings.push('Could not recreate memory data file');
|
|
358
|
-
}
|
|
359
|
-
// Recreate README files
|
|
360
|
-
const readmeFiles = [
|
|
361
|
-
{
|
|
362
|
-
path: 'memory/agents/README.md',
|
|
363
|
-
content: '# Agent Memory\n\nThis directory stores agent-specific memory data.'
|
|
364
|
-
},
|
|
365
|
-
{
|
|
366
|
-
path: 'memory/sessions/README.md',
|
|
367
|
-
content: '# Session Memory\n\nThis directory stores session-specific memory data.'
|
|
368
|
-
}
|
|
369
|
-
];
|
|
370
|
-
for (const readme of readmeFiles){
|
|
371
|
-
try {
|
|
372
|
-
await Deno.writeTextFile(`${this.workingDir}/${readme.path}`, readme.content);
|
|
373
|
-
result.actions.push(`Created ${readme.path}`);
|
|
374
|
-
} catch {
|
|
375
|
-
result.warnings.push(`Could not create ${readme.path}`);
|
|
376
|
-
}
|
|
377
|
-
}
|
|
378
|
-
} catch (error) {
|
|
379
|
-
result.success = false;
|
|
380
|
-
result.errors.push(`Memory setup recovery failed: ${error.message}`);
|
|
381
|
-
}
|
|
382
|
-
return result;
|
|
383
|
-
}
|
|
384
|
-
/**
|
|
385
|
-
* Generic recovery for unknown failure types
|
|
386
|
-
*/ async performGenericRecovery(failureType, context) {
|
|
387
|
-
const result = {
|
|
388
|
-
success: true,
|
|
389
|
-
errors: [],
|
|
390
|
-
warnings: [],
|
|
391
|
-
actions: []
|
|
392
|
-
};
|
|
393
|
-
try {
|
|
394
|
-
// Attempt common recovery procedures
|
|
395
|
-
// 1. Clean up temporary files
|
|
396
|
-
const tempCleanup = await this.cleanupTemporaryFiles();
|
|
397
|
-
result.actions.push(...tempCleanup.actions);
|
|
398
|
-
// 2. Verify basic file permissions
|
|
399
|
-
const permCheck = await this.verifyBasicPermissions();
|
|
400
|
-
if (!permCheck.adequate) {
|
|
401
|
-
result.warnings.push('Permission issues detected');
|
|
402
|
-
}
|
|
403
|
-
// 3. Check for common file conflicts
|
|
404
|
-
const conflictCheck = await this.checkForConflicts();
|
|
405
|
-
if (conflictCheck.conflicts.length > 0) {
|
|
406
|
-
result.warnings.push(`Found ${conflictCheck.conflicts.length} potential conflicts`);
|
|
407
|
-
}
|
|
408
|
-
result.actions.push(`Performed generic recovery for: ${failureType}`);
|
|
409
|
-
result.warnings.push('Generic recovery may not fully resolve the issue');
|
|
410
|
-
} catch (error) {
|
|
411
|
-
result.success = false;
|
|
412
|
-
result.errors.push(`Generic recovery failed: ${error.message}`);
|
|
413
|
-
}
|
|
414
|
-
return result;
|
|
415
|
-
}
|
|
416
|
-
/**
|
|
417
|
-
* Validate recovery system
|
|
418
|
-
*/ async validateRecoverySystem() {
|
|
419
|
-
const result = {
|
|
420
|
-
success: true,
|
|
421
|
-
errors: [],
|
|
422
|
-
warnings: []
|
|
423
|
-
};
|
|
424
|
-
try {
|
|
425
|
-
// Test recovery procedures
|
|
426
|
-
const recoveryTests = [
|
|
427
|
-
'permission-denied',
|
|
428
|
-
'disk-space',
|
|
429
|
-
'corrupted-config'
|
|
430
|
-
];
|
|
431
|
-
for (const test of recoveryTests){
|
|
432
|
-
const testResult = await this.testRecoveryProcedure(test);
|
|
433
|
-
if (!testResult.success) {
|
|
434
|
-
result.warnings.push(`Recovery test failed: ${test}`);
|
|
435
|
-
}
|
|
436
|
-
}
|
|
437
|
-
} catch (error) {
|
|
438
|
-
result.success = false;
|
|
439
|
-
result.errors.push(`Recovery system validation failed: ${error.message}`);
|
|
440
|
-
}
|
|
441
|
-
return result;
|
|
442
|
-
}
|
|
443
|
-
// Helper methods
|
|
444
|
-
async cleanupTemporaryFiles() {
|
|
445
|
-
const result = {
|
|
446
|
-
actions: []
|
|
447
|
-
};
|
|
448
|
-
const tempPatterns = [
|
|
449
|
-
'*.tmp',
|
|
450
|
-
'*.temp',
|
|
451
|
-
'.claude-flow-*-test*'
|
|
452
|
-
];
|
|
453
|
-
for (const pattern of tempPatterns){
|
|
454
|
-
try {
|
|
455
|
-
// Simple cleanup - in a real implementation, use glob matching
|
|
456
|
-
result.actions.push(`Cleaned temporary files: ${pattern}`);
|
|
457
|
-
} catch {
|
|
458
|
-
// Continue with other patterns
|
|
459
|
-
}
|
|
460
|
-
}
|
|
461
|
-
return result;
|
|
462
|
-
}
|
|
463
|
-
async cleanupOldBackups() {
|
|
464
|
-
const result = {
|
|
465
|
-
actions: []
|
|
466
|
-
};
|
|
375
|
+
*/
|
|
376
|
+
async recoverFromMemorySetupFailure(context) {
|
|
377
|
+
const result = {
|
|
378
|
+
success: true,
|
|
379
|
+
errors: [],
|
|
380
|
+
warnings: [],
|
|
381
|
+
actions: [],
|
|
382
|
+
};
|
|
383
|
+
|
|
384
|
+
try {
|
|
385
|
+
// Recreate memory directory structure
|
|
386
|
+
const memoryDirs = ['memory', 'memory/agents', 'memory/sessions'];
|
|
387
|
+
|
|
388
|
+
for (const dir of memoryDirs) {
|
|
467
389
|
try {
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
// Backup cleanup not critical
|
|
390
|
+
await Deno.mkdir(`${this.workingDir}/${dir}`, { recursive: true });
|
|
391
|
+
result.actions.push(`Created directory: ${dir}`);
|
|
392
|
+
} catch {
|
|
393
|
+
result.warnings.push(`Could not create directory: ${dir}`);
|
|
473
394
|
}
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
// Recreate memory data file
|
|
398
|
+
const memoryDataPath = `${this.workingDir}/memory/claude-flow-data.json`;
|
|
399
|
+
const initialData = {
|
|
400
|
+
agents: [],
|
|
401
|
+
tasks: [],
|
|
402
|
+
lastUpdated: Date.now(),
|
|
403
|
+
};
|
|
404
|
+
|
|
405
|
+
try {
|
|
406
|
+
await Deno.writeTextFile(memoryDataPath, JSON.stringify(initialData, null, 2));
|
|
407
|
+
result.actions.push('Recreated memory data file');
|
|
408
|
+
} catch {
|
|
409
|
+
result.warnings.push('Could not recreate memory data file');
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
// Recreate README files
|
|
413
|
+
const readmeFiles = [
|
|
414
|
+
{
|
|
415
|
+
path: 'memory/agents/README.md',
|
|
416
|
+
content: '# Agent Memory\n\nThis directory stores agent-specific memory data.',
|
|
417
|
+
},
|
|
418
|
+
{
|
|
419
|
+
path: 'memory/sessions/README.md',
|
|
420
|
+
content: '# Session Memory\n\nThis directory stores session-specific memory data.',
|
|
421
|
+
},
|
|
422
|
+
];
|
|
423
|
+
|
|
424
|
+
for (const readme of readmeFiles) {
|
|
477
425
|
try {
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
],
|
|
483
|
-
stdout: 'piped'
|
|
484
|
-
});
|
|
485
|
-
const { stdout, success } = await command.output();
|
|
486
|
-
if (success) {
|
|
487
|
-
const output = new TextDecoder().decode(stdout);
|
|
488
|
-
const lines = output.trim().split('\n');
|
|
489
|
-
if (lines.length >= 2) {
|
|
490
|
-
const parts = lines[1].split(/\s+/);
|
|
491
|
-
if (parts.length >= 4) {
|
|
492
|
-
return {
|
|
493
|
-
available: parseInt(parts[3])
|
|
494
|
-
};
|
|
495
|
-
}
|
|
496
|
-
}
|
|
497
|
-
}
|
|
498
|
-
} catch {
|
|
499
|
-
// Can't check space
|
|
426
|
+
await Deno.writeTextFile(`${this.workingDir}/${readme.path}`, readme.content);
|
|
427
|
+
result.actions.push(`Created ${readme.path}`);
|
|
428
|
+
} catch {
|
|
429
|
+
result.warnings.push(`Could not create ${readme.path}`);
|
|
500
430
|
}
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
431
|
+
}
|
|
432
|
+
} catch (error) {
|
|
433
|
+
result.success = false;
|
|
434
|
+
result.errors.push(`Memory setup recovery failed: ${error.message}`);
|
|
504
435
|
}
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
436
|
+
|
|
437
|
+
return result;
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
/**
|
|
441
|
+
* Generic recovery for unknown failure types
|
|
442
|
+
*/
|
|
443
|
+
async performGenericRecovery(failureType, context) {
|
|
444
|
+
const result = {
|
|
445
|
+
success: true,
|
|
446
|
+
errors: [],
|
|
447
|
+
warnings: [],
|
|
448
|
+
actions: [],
|
|
449
|
+
};
|
|
450
|
+
|
|
451
|
+
try {
|
|
452
|
+
// Attempt common recovery procedures
|
|
453
|
+
|
|
454
|
+
// 1. Clean up temporary files
|
|
455
|
+
const tempCleanup = await this.cleanupTemporaryFiles();
|
|
456
|
+
result.actions.push(...tempCleanup.actions);
|
|
457
|
+
|
|
458
|
+
// 2. Verify basic file permissions
|
|
459
|
+
const permCheck = await this.verifyBasicPermissions();
|
|
460
|
+
if (!permCheck.adequate) {
|
|
461
|
+
result.warnings.push('Permission issues detected');
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
// 3. Check for common file conflicts
|
|
465
|
+
const conflictCheck = await this.checkForConflicts();
|
|
466
|
+
if (conflictCheck.conflicts.length > 0) {
|
|
467
|
+
result.warnings.push(`Found ${conflictCheck.conflicts.length} potential conflicts`);
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
result.actions.push(`Performed generic recovery for: ${failureType}`);
|
|
471
|
+
result.warnings.push('Generic recovery may not fully resolve the issue');
|
|
472
|
+
} catch (error) {
|
|
473
|
+
result.success = false;
|
|
474
|
+
result.errors.push(`Generic recovery failed: ${error.message}`);
|
|
514
475
|
}
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
}
|
|
476
|
+
|
|
477
|
+
return result;
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
/**
|
|
481
|
+
* Validate recovery system
|
|
482
|
+
*/
|
|
483
|
+
async validateRecoverySystem() {
|
|
484
|
+
const result = {
|
|
485
|
+
success: true,
|
|
486
|
+
errors: [],
|
|
487
|
+
warnings: [],
|
|
488
|
+
};
|
|
489
|
+
|
|
490
|
+
try {
|
|
491
|
+
// Test recovery procedures
|
|
492
|
+
const recoveryTests = ['permission-denied', 'disk-space', 'corrupted-config'];
|
|
493
|
+
|
|
494
|
+
for (const test of recoveryTests) {
|
|
495
|
+
const testResult = await this.testRecoveryProcedure(test);
|
|
496
|
+
if (!testResult.success) {
|
|
497
|
+
result.warnings.push(`Recovery test failed: ${test}`);
|
|
538
498
|
}
|
|
539
|
-
|
|
499
|
+
}
|
|
500
|
+
} catch (error) {
|
|
501
|
+
result.success = false;
|
|
502
|
+
result.errors.push(`Recovery system validation failed: ${error.message}`);
|
|
540
503
|
}
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
504
|
+
|
|
505
|
+
return result;
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
// Helper methods
|
|
509
|
+
|
|
510
|
+
async cleanupTemporaryFiles() {
|
|
511
|
+
const result = { actions: [] };
|
|
512
|
+
|
|
513
|
+
const tempPatterns = ['*.tmp', '*.temp', '.claude-flow-*-test*'];
|
|
514
|
+
|
|
515
|
+
for (const pattern of tempPatterns) {
|
|
516
|
+
try {
|
|
517
|
+
// Simple cleanup - in a real implementation, use glob matching
|
|
518
|
+
result.actions.push(`Cleaned temporary files: ${pattern}`);
|
|
519
|
+
} catch {
|
|
520
|
+
// Continue with other patterns
|
|
521
|
+
}
|
|
548
522
|
}
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
523
|
+
|
|
524
|
+
return result;
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
async cleanupOldBackups() {
|
|
528
|
+
const result = { actions: [] };
|
|
529
|
+
|
|
530
|
+
try {
|
|
531
|
+
const backupDir = `${this.workingDir}/.claude-flow-backups`;
|
|
532
|
+
|
|
533
|
+
// This would normally integrate with BackupManager
|
|
534
|
+
result.actions.push('Cleaned old backups');
|
|
535
|
+
} catch {
|
|
536
|
+
// Backup cleanup not critical
|
|
553
537
|
}
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
538
|
+
|
|
539
|
+
return result;
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
async checkAvailableSpace() {
|
|
543
|
+
try {
|
|
544
|
+
const command = new Deno.Command('df', {
|
|
545
|
+
args: ['-m', this.workingDir],
|
|
546
|
+
stdout: 'piped',
|
|
547
|
+
});
|
|
548
|
+
|
|
549
|
+
const { stdout, success } = await command.output();
|
|
550
|
+
|
|
551
|
+
if (success) {
|
|
552
|
+
const output = new TextDecoder().decode(stdout);
|
|
553
|
+
const lines = output.trim().split('\n');
|
|
554
|
+
|
|
555
|
+
if (lines.length >= 2) {
|
|
556
|
+
const parts = lines[1].split(/\s+/);
|
|
557
|
+
if (parts.length >= 4) {
|
|
558
|
+
return { available: parseInt(parts[3]) };
|
|
559
|
+
}
|
|
571
560
|
}
|
|
572
|
-
|
|
561
|
+
}
|
|
562
|
+
} catch {
|
|
563
|
+
// Can't check space
|
|
573
564
|
}
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
565
|
+
|
|
566
|
+
return { available: 1000 }; // Assume adequate
|
|
567
|
+
}
|
|
568
|
+
|
|
569
|
+
async attemptDependencyInstallation(dependency) {
|
|
570
|
+
const result = {
|
|
571
|
+
success: false,
|
|
572
|
+
error: null,
|
|
573
|
+
};
|
|
574
|
+
|
|
575
|
+
// This would contain actual dependency installation logic
|
|
576
|
+
// For now, just simulate
|
|
577
|
+
result.success = true;
|
|
578
|
+
return result;
|
|
579
|
+
}
|
|
580
|
+
|
|
581
|
+
async verifyDependencies(dependencies) {
|
|
582
|
+
const result = {
|
|
583
|
+
allAvailable: true,
|
|
584
|
+
missing: [],
|
|
585
|
+
};
|
|
586
|
+
|
|
587
|
+
for (const dep of dependencies) {
|
|
588
|
+
try {
|
|
589
|
+
const command = new Deno.Command(dep, {
|
|
590
|
+
args: ['--version'],
|
|
591
|
+
stdout: 'piped',
|
|
592
|
+
stderr: 'piped',
|
|
593
|
+
});
|
|
594
|
+
|
|
595
|
+
const { success } = await command.output();
|
|
596
|
+
if (!success) {
|
|
597
|
+
result.allAvailable = false;
|
|
598
|
+
result.missing.push(dep);
|
|
591
599
|
}
|
|
592
|
-
|
|
600
|
+
} catch {
|
|
601
|
+
result.allAvailable = false;
|
|
602
|
+
result.missing.push(dep);
|
|
603
|
+
}
|
|
593
604
|
}
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
605
|
+
|
|
606
|
+
return result;
|
|
607
|
+
}
|
|
608
|
+
|
|
609
|
+
async recoverConfigFile(filename) {
|
|
610
|
+
const result = {
|
|
611
|
+
success: true,
|
|
612
|
+
};
|
|
613
|
+
|
|
614
|
+
// This would contain config file recovery logic
|
|
615
|
+
// Generate default config based on filename
|
|
616
|
+
|
|
617
|
+
return result;
|
|
618
|
+
}
|
|
619
|
+
|
|
620
|
+
async validateRecoveredConfigs(filenames) {
|
|
621
|
+
return { valid: true };
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
async identifyCompletedItems() {
|
|
625
|
+
const items = [];
|
|
626
|
+
|
|
627
|
+
const checkFiles = ['CLAUDE.md', 'memory-bank.md', 'coordination.md'];
|
|
628
|
+
|
|
629
|
+
for (const file of checkFiles) {
|
|
630
|
+
try {
|
|
631
|
+
await Deno.stat(`${this.workingDir}/${file}`);
|
|
632
|
+
items.push({ name: file, type: 'file' });
|
|
633
|
+
} catch {
|
|
634
|
+
// File doesn't exist
|
|
635
|
+
}
|
|
600
636
|
}
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
},
|
|
617
|
-
code: {
|
|
618
|
-
description: 'Clean, modular code implementation'
|
|
619
|
-
},
|
|
620
|
-
tdd: {
|
|
621
|
-
description: 'Test-driven development and testing'
|
|
622
|
-
}
|
|
623
|
-
}
|
|
624
|
-
};
|
|
625
|
-
try {
|
|
626
|
-
await Deno.writeTextFile(`${this.workingDir}/.roomodes`, JSON.stringify(basicRoomodes, null, 2));
|
|
627
|
-
} catch {
|
|
628
|
-
result.success = false;
|
|
629
|
-
}
|
|
630
|
-
return result;
|
|
637
|
+
|
|
638
|
+
return items;
|
|
639
|
+
}
|
|
640
|
+
|
|
641
|
+
async identifyMissingItems() {
|
|
642
|
+
const missing = [];
|
|
643
|
+
|
|
644
|
+
const requiredFiles = ['CLAUDE.md', 'memory-bank.md', 'coordination.md', 'claude-flow'];
|
|
645
|
+
|
|
646
|
+
for (const file of requiredFiles) {
|
|
647
|
+
try {
|
|
648
|
+
await Deno.stat(`${this.workingDir}/${file}`);
|
|
649
|
+
} catch {
|
|
650
|
+
missing.push({ name: file, type: 'file' });
|
|
651
|
+
}
|
|
631
652
|
}
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
653
|
+
|
|
654
|
+
return missing;
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
async completeItem(item) {
|
|
658
|
+
const result = {
|
|
659
|
+
success: true,
|
|
660
|
+
};
|
|
661
|
+
|
|
662
|
+
// This would contain item completion logic based on item type
|
|
663
|
+
|
|
664
|
+
return result;
|
|
665
|
+
}
|
|
666
|
+
|
|
667
|
+
async verifyInitializationComplete() {
|
|
668
|
+
return { complete: true };
|
|
669
|
+
}
|
|
670
|
+
|
|
671
|
+
async recoverRoomodesFile() {
|
|
672
|
+
const result = {
|
|
673
|
+
success: true,
|
|
674
|
+
};
|
|
675
|
+
|
|
676
|
+
// Generate basic .roomodes content
|
|
677
|
+
const basicRoomodes = {
|
|
678
|
+
version: '1.0',
|
|
679
|
+
modes: {
|
|
680
|
+
architect: {
|
|
681
|
+
description: 'System design and architecture planning',
|
|
682
|
+
},
|
|
683
|
+
code: {
|
|
684
|
+
description: 'Clean, modular code implementation',
|
|
685
|
+
},
|
|
686
|
+
tdd: {
|
|
687
|
+
description: 'Test-driven development and testing',
|
|
688
|
+
},
|
|
689
|
+
},
|
|
690
|
+
};
|
|
691
|
+
|
|
692
|
+
try {
|
|
693
|
+
await Deno.writeTextFile(
|
|
694
|
+
`${this.workingDir}/.roomodes`,
|
|
695
|
+
JSON.stringify(basicRoomodes, null, 2),
|
|
696
|
+
);
|
|
697
|
+
} catch {
|
|
698
|
+
result.success = false;
|
|
652
699
|
}
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
700
|
+
|
|
701
|
+
return result;
|
|
702
|
+
}
|
|
703
|
+
|
|
704
|
+
async recoverRooDirectory() {
|
|
705
|
+
const result = {
|
|
706
|
+
success: true,
|
|
707
|
+
};
|
|
708
|
+
|
|
709
|
+
try {
|
|
710
|
+
const rooDirs = ['.roo', '.roo/templates', '.roo/workflows', '.roo/modes'];
|
|
711
|
+
|
|
712
|
+
for (const dir of rooDirs) {
|
|
713
|
+
await Deno.mkdir(`${this.workingDir}/${dir}`, { recursive: true });
|
|
714
|
+
}
|
|
715
|
+
} catch {
|
|
716
|
+
result.success = false;
|
|
659
717
|
}
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
718
|
+
|
|
719
|
+
return result;
|
|
720
|
+
}
|
|
721
|
+
|
|
722
|
+
async recoverSparcCommands() {
|
|
723
|
+
const result = {
|
|
724
|
+
success: true,
|
|
725
|
+
};
|
|
726
|
+
|
|
727
|
+
// This would recreate SPARC command files
|
|
728
|
+
return result;
|
|
729
|
+
}
|
|
730
|
+
|
|
731
|
+
async createExecutableWrapper() {
|
|
732
|
+
const result = {
|
|
733
|
+
success: true,
|
|
734
|
+
};
|
|
735
|
+
|
|
736
|
+
const executableContent = `#!/usr/bin/env bash
|
|
665
737
|
# Claude Flow Local Executable Wrapper
|
|
666
738
|
exec deno run --allow-all --unstable-kv --unstable-cron \\
|
|
667
739
|
"${import.meta.url.replace('file://', '').replace(/[^/]*$/, '../../../main.js')}" "$@"
|
|
668
740
|
`;
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
return result;
|
|
675
|
-
}
|
|
676
|
-
async verifyBasicPermissions() {
|
|
677
|
-
const result = {
|
|
678
|
-
adequate: true
|
|
679
|
-
};
|
|
680
|
-
try {
|
|
681
|
-
const testFile = `${this.workingDir}/.permission-test`;
|
|
682
|
-
await Deno.writeTextFile(testFile, 'test');
|
|
683
|
-
await Deno.remove(testFile);
|
|
684
|
-
} catch {
|
|
685
|
-
result.adequate = false;
|
|
686
|
-
}
|
|
687
|
-
return result;
|
|
688
|
-
}
|
|
689
|
-
async checkForConflicts() {
|
|
690
|
-
return {
|
|
691
|
-
conflicts: []
|
|
692
|
-
};
|
|
693
|
-
}
|
|
694
|
-
async testRecoveryProcedure(procedureName) {
|
|
695
|
-
return {
|
|
696
|
-
success: true
|
|
697
|
-
};
|
|
741
|
+
|
|
742
|
+
try {
|
|
743
|
+
await Deno.writeTextFile(`${this.workingDir}/claude-flow`, executableContent);
|
|
744
|
+
} catch {
|
|
745
|
+
result.success = false;
|
|
698
746
|
}
|
|
699
|
-
|
|
700
|
-
|
|
747
|
+
|
|
748
|
+
return result;
|
|
749
|
+
}
|
|
750
|
+
|
|
751
|
+
async verifyBasicPermissions() {
|
|
752
|
+
const result = {
|
|
753
|
+
adequate: true,
|
|
754
|
+
};
|
|
755
|
+
|
|
756
|
+
try {
|
|
757
|
+
const testFile = `${this.workingDir}/.permission-test`;
|
|
758
|
+
await Deno.writeTextFile(testFile, 'test');
|
|
759
|
+
await Deno.remove(testFile);
|
|
760
|
+
} catch {
|
|
761
|
+
result.adequate = false;
|
|
701
762
|
}
|
|
763
|
+
|
|
764
|
+
return result;
|
|
765
|
+
}
|
|
766
|
+
|
|
767
|
+
async checkForConflicts() {
|
|
768
|
+
return {
|
|
769
|
+
conflicts: [],
|
|
770
|
+
};
|
|
771
|
+
}
|
|
772
|
+
|
|
773
|
+
async testRecoveryProcedure(procedureName) {
|
|
774
|
+
return {
|
|
775
|
+
success: true,
|
|
776
|
+
};
|
|
777
|
+
}
|
|
702
778
|
}
|