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.
Files changed (496) hide show
  1. package/dist/src/cli/commands/guidance.js +668 -487
  2. package/dist/src/cli/commands/index-validate.js +29 -18
  3. package/dist/src/cli/commands/mcp-troubleshoot.js +282 -230
  4. package/dist/src/cli/commands/neural-goal-init.js +125 -92
  5. package/dist/src/cli/commands/swarm-exec.js +393 -317
  6. package/dist/src/cli/commands/validate-framework.js +1100 -983
  7. package/dist/src/cli/commands/validate.js +223 -144
  8. package/dist/src/cli/main.js +1 -1
  9. package/dist/src/cli/simple-commands/__tests__/agent.test.js +277 -265
  10. package/dist/src/cli/simple-commands/__tests__/memory.test.js +7 -6
  11. package/dist/src/cli/simple-commands/__tests__/swarm.test.js +356 -373
  12. package/dist/src/cli/simple-commands/__tests__/task.test.js +7 -6
  13. package/dist/src/cli/simple-commands/agent.js +193 -157
  14. package/dist/src/cli/simple-commands/analysis.js +446 -336
  15. package/dist/src/cli/simple-commands/automation-executor.js +1339 -1095
  16. package/dist/src/cli/simple-commands/automation.js +469 -481
  17. package/dist/src/cli/simple-commands/batch-manager.js +313 -261
  18. package/dist/src/cli/simple-commands/claude-telemetry.js +267 -241
  19. package/dist/src/cli/simple-commands/claude-track.js +90 -68
  20. package/dist/src/cli/simple-commands/concurrent-display.js +320 -266
  21. package/dist/src/cli/simple-commands/config.js +290 -245
  22. package/dist/src/cli/simple-commands/coordination.js +234 -182
  23. package/dist/src/cli/simple-commands/enhanced-ui-views.js +615 -812
  24. package/dist/src/cli/simple-commands/enhanced-webui-complete.js +981 -922
  25. package/dist/src/cli/simple-commands/fix-hook-variables.js +294 -274
  26. package/dist/src/cli/simple-commands/github/gh-coordinator.js +457 -378
  27. package/dist/src/cli/simple-commands/github/github-api.js +574 -535
  28. package/dist/src/cli/simple-commands/github/init.js +303 -276
  29. package/dist/src/cli/simple-commands/github.js +247 -222
  30. package/dist/src/cli/simple-commands/goal.js +63 -51
  31. package/dist/src/cli/simple-commands/hive-mind/auto-save-middleware.js +278 -208
  32. package/dist/src/cli/simple-commands/hive-mind/communication.js +696 -601
  33. package/dist/src/cli/simple-commands/hive-mind/core.js +979 -907
  34. package/dist/src/cli/simple-commands/hive-mind/db-optimizer.js +655 -406
  35. package/dist/src/cli/simple-commands/hive-mind/mcp-wrapper.js +1245 -1125
  36. package/dist/src/cli/simple-commands/hive-mind/memory.js +1090 -854
  37. package/dist/src/cli/simple-commands/hive-mind/performance-optimizer.js +574 -459
  38. package/dist/src/cli/simple-commands/hive-mind/performance-test.js +347 -263
  39. package/dist/src/cli/simple-commands/hive-mind/queen.js +768 -727
  40. package/dist/src/cli/simple-commands/hive-mind/session-manager.js +1049 -745
  41. package/dist/src/cli/simple-commands/hive-mind-optimize.js +283 -227
  42. package/dist/src/cli/simple-commands/hive-mind-wizard.js +217 -174
  43. package/dist/src/cli/simple-commands/hive-mind.js +2282 -1841
  44. package/dist/src/cli/simple-commands/hive.js +79 -90
  45. package/dist/src/cli/simple-commands/hook-safety.js +521 -431
  46. package/dist/src/cli/simple-commands/hooks/session-start-soul.js +254 -203
  47. package/dist/src/cli/simple-commands/hooks.js +1204 -1064
  48. package/dist/src/cli/simple-commands/init/agent-copier.js +319 -294
  49. package/dist/src/cli/simple-commands/init/batch-init.js +562 -496
  50. package/dist/src/cli/simple-commands/init/claude-commands/claude-flow-commands.js +19 -13
  51. package/dist/src/cli/simple-commands/init/claude-commands/optimized-claude-flow-commands.js +19 -13
  52. package/dist/src/cli/simple-commands/init/claude-commands/optimized-slash-commands.js +88 -61
  53. package/dist/src/cli/simple-commands/init/claude-commands/optimized-sparc-commands.js +150 -125
  54. package/dist/src/cli/simple-commands/init/claude-commands/slash-commands.js +49 -42
  55. package/dist/src/cli/simple-commands/init/claude-commands/sparc-commands.js +61 -43
  56. package/dist/src/cli/simple-commands/init/copy-revised-templates.js +147 -141
  57. package/dist/src/cli/simple-commands/init/executable-wrapper.js +44 -31
  58. package/dist/src/cli/simple-commands/init/gitignore-updater.js +90 -64
  59. package/dist/src/cli/simple-commands/init/help.js +107 -104
  60. package/dist/src/cli/simple-commands/init/hive-mind-init.js +528 -509
  61. package/dist/src/cli/simple-commands/init/index.js +1759 -1510
  62. package/dist/src/cli/simple-commands/init/performance-monitor.js +317 -234
  63. package/dist/src/cli/simple-commands/init/rollback/backup-manager.js +504 -441
  64. package/dist/src/cli/simple-commands/init/rollback/index.js +364 -289
  65. package/dist/src/cli/simple-commands/init/rollback/recovery-manager.js +728 -652
  66. package/dist/src/cli/simple-commands/init/rollback/rollback-executor.js +481 -416
  67. package/dist/src/cli/simple-commands/init/rollback/state-tracker.js +448 -369
  68. package/dist/src/cli/simple-commands/init/sparc/roo-readme.js +2 -1
  69. package/dist/src/cli/simple-commands/init/sparc/roomodes-config.js +99 -122
  70. package/dist/src/cli/simple-commands/init/sparc/workflows.js +37 -32
  71. package/dist/src/cli/simple-commands/init/sparc-structure.js +62 -55
  72. package/dist/src/cli/simple-commands/init/template-copier.js +533 -421
  73. package/dist/src/cli/simple-commands/init/templates/coordination-md.js +6 -3
  74. package/dist/src/cli/simple-commands/init/templates/enhanced-templates.js +318 -344
  75. package/dist/src/cli/simple-commands/init/templates/github-safe-enhanced.js +218 -173
  76. package/dist/src/cli/simple-commands/init/templates/github-safe.js +75 -65
  77. package/dist/src/cli/simple-commands/init/templates/memory-bank-md.js +6 -3
  78. package/dist/src/cli/simple-commands/init/templates/readme-files.js +4 -2
  79. package/dist/src/cli/simple-commands/init/templates/safe-hook-patterns.js +230 -187
  80. package/dist/src/cli/simple-commands/init/templates/sparc-modes.js +80 -53
  81. package/dist/src/cli/simple-commands/init/templates/verification-claude-md.js +85 -101
  82. package/dist/src/cli/simple-commands/init/validation/config-validator.js +330 -283
  83. package/dist/src/cli/simple-commands/init/validation/health-checker.js +561 -495
  84. package/dist/src/cli/simple-commands/init/validation/index.js +358 -302
  85. package/dist/src/cli/simple-commands/init/validation/mode-validator.js +359 -308
  86. package/dist/src/cli/simple-commands/init/validation/post-init-validator.js +366 -389
  87. package/dist/src/cli/simple-commands/init/validation/pre-init-validator.js +268 -270
  88. package/dist/src/cli/simple-commands/init/validation/test-runner.js +447 -427
  89. package/dist/src/cli/simple-commands/init.js +2 -1
  90. package/dist/src/cli/simple-commands/mcp-health.js +158 -131
  91. package/dist/src/cli/simple-commands/mcp-integration-layer.js +634 -533
  92. package/dist/src/cli/simple-commands/mcp.js +400 -345
  93. package/dist/src/cli/simple-commands/memory-consolidation.js +537 -426
  94. package/dist/src/cli/simple-commands/memory.js +311 -247
  95. package/dist/src/cli/simple-commands/migrate-hooks.js +46 -39
  96. package/dist/src/cli/simple-commands/monitor.js +363 -294
  97. package/dist/src/cli/simple-commands/neural.js +65 -51
  98. package/dist/src/cli/simple-commands/pair-autofix-only.js +662 -538
  99. package/dist/src/cli/simple-commands/pair-basic.js +656 -528
  100. package/dist/src/cli/simple-commands/pair-old.js +543 -430
  101. package/dist/src/cli/simple-commands/pair-working.js +751 -615
  102. package/dist/src/cli/simple-commands/pair.js +751 -615
  103. package/dist/src/cli/simple-commands/performance-hooks.js +111 -83
  104. package/dist/src/cli/simple-commands/performance-metrics.js +433 -348
  105. package/dist/src/cli/simple-commands/process-ui-enhanced.js +787 -708
  106. package/dist/src/cli/simple-commands/process-ui.js +254 -230
  107. package/dist/src/cli/simple-commands/realtime-update-system.js +611 -525
  108. package/dist/src/cli/simple-commands/sparc/architecture.js +1530 -1704
  109. package/dist/src/cli/simple-commands/sparc/commands.js +516 -438
  110. package/dist/src/cli/simple-commands/sparc/completion.js +1481 -1224
  111. package/dist/src/cli/simple-commands/sparc/coordinator.js +978 -913
  112. package/dist/src/cli/simple-commands/sparc/index.js +298 -241
  113. package/dist/src/cli/simple-commands/sparc/phase-base.js +390 -314
  114. package/dist/src/cli/simple-commands/sparc/pseudocode.js +869 -965
  115. package/dist/src/cli/simple-commands/sparc/refinement.js +1273 -980
  116. package/dist/src/cli/simple-commands/sparc/specification.js +645 -559
  117. package/dist/src/cli/simple-commands/sparc-modes/architect.js +1 -1
  118. package/dist/src/cli/simple-commands/sparc-modes/ask.js +1 -1
  119. package/dist/src/cli/simple-commands/sparc-modes/code.js +1 -1
  120. package/dist/src/cli/simple-commands/sparc-modes/debug.js +1 -1
  121. package/dist/src/cli/simple-commands/sparc-modes/devops.js +1 -1
  122. package/dist/src/cli/simple-commands/sparc-modes/docs-writer.js +1 -1
  123. package/dist/src/cli/simple-commands/sparc-modes/generic.js +1 -1
  124. package/dist/src/cli/simple-commands/sparc-modes/index.js +55 -47
  125. package/dist/src/cli/simple-commands/sparc-modes/integration.js +1 -1
  126. package/dist/src/cli/simple-commands/sparc-modes/mcp.js +1 -1
  127. package/dist/src/cli/simple-commands/sparc-modes/monitoring.js +1 -1
  128. package/dist/src/cli/simple-commands/sparc-modes/optimization.js +1 -1
  129. package/dist/src/cli/simple-commands/sparc-modes/security-review.js +1 -1
  130. package/dist/src/cli/simple-commands/sparc-modes/sparc-orchestrator.js +1 -1
  131. package/dist/src/cli/simple-commands/sparc-modes/spec-pseudocode.js +1 -1
  132. package/dist/src/cli/simple-commands/sparc-modes/supabase-admin.js +1 -1
  133. package/dist/src/cli/simple-commands/sparc-modes/swarm.js +87 -101
  134. package/dist/src/cli/simple-commands/sparc-modes/tdd.js +1 -1
  135. package/dist/src/cli/simple-commands/sparc-modes/tutorial.js +1 -1
  136. package/dist/src/cli/simple-commands/sparc.js +493 -465
  137. package/dist/src/cli/simple-commands/start-ui.js +132 -108
  138. package/dist/src/cli/simple-commands/start-wrapper.js +268 -240
  139. package/dist/src/cli/simple-commands/start.js +1 -1
  140. package/dist/src/cli/simple-commands/status.js +275 -254
  141. package/dist/src/cli/simple-commands/stream-chain-clean.js +171 -128
  142. package/dist/src/cli/simple-commands/stream-chain-fixed.js +82 -61
  143. package/dist/src/cli/simple-commands/stream-chain-real.js +331 -267
  144. package/dist/src/cli/simple-commands/stream-chain-working.js +263 -211
  145. package/dist/src/cli/simple-commands/stream-chain.js +318 -260
  146. package/dist/src/cli/simple-commands/stream-processor.js +315 -290
  147. package/dist/src/cli/simple-commands/swarm-executor.js +222 -189
  148. package/dist/src/cli/simple-commands/swarm-metrics-integration.js +300 -208
  149. package/dist/src/cli/simple-commands/swarm-ui.js +703 -623
  150. package/dist/src/cli/simple-commands/swarm-webui-integration.js +286 -258
  151. package/dist/src/cli/simple-commands/swarm.js +1082 -887
  152. package/dist/src/cli/simple-commands/task.js +206 -161
  153. package/dist/src/cli/simple-commands/timestamp-fix.js +89 -59
  154. package/dist/src/cli/simple-commands/token-tracker.js +316 -258
  155. package/dist/src/cli/simple-commands/tool-execution-framework.js +519 -433
  156. package/dist/src/cli/simple-commands/train-and-stream.js +331 -275
  157. package/dist/src/cli/simple-commands/training-pipeline.js +725 -619
  158. package/dist/src/cli/simple-commands/training.js +227 -170
  159. package/dist/src/cli/simple-commands/verification-hooks.js +284 -261
  160. package/dist/src/cli/simple-commands/verification-integration.js +417 -389
  161. package/dist/src/cli/simple-commands/verification-training-integration.js +606 -486
  162. package/dist/src/cli/simple-commands/verification.js +513 -493
  163. package/dist/src/cli/simple-commands/web-server.js +836 -766
  164. package/dist/src/cli/simple-commands/webui-validator.js +124 -106
  165. package/dist/src/coordination/byzantine-memory-channels.js +25 -1
  166. package/dist/src/coordination/event-bus/demo-wasm-integration.js +251 -212
  167. package/dist/src/coordination/event-bus/qe-event-bus.js +748 -608
  168. package/dist/src/coordination/event-bus/qe-event-bus.test.js +454 -379
  169. package/dist/src/coordination/iteration-tracker.js +454 -363
  170. package/dist/src/index.js +384 -35
  171. package/dist/src/mcp/DEPRECATED.js +60 -46
  172. package/dist/src/mcp/fixes/mcp-error-fixes.js +134 -115
  173. package/dist/src/mcp/implementations/agent-tracker.js +128 -114
  174. package/dist/src/mcp/implementations/daa-tools.js +350 -292
  175. package/dist/src/mcp/implementations/workflow-tools.js +361 -329
  176. package/dist/src/mcp/mcp-config-manager.js +1331 -1183
  177. package/dist/src/mcp/mcp-server-novice-simplified.js +17 -11
  178. package/dist/src/mcp/mcp-server-novice.js +17 -11
  179. package/dist/src/mcp/mcp-server-sdk.js +17 -11
  180. package/dist/src/mcp/mcp-server.js +1484 -1620
  181. package/dist/src/mcp/ruv-swarm-wrapper.js +239 -209
  182. package/dist/src/memory/advanced-serializer.js +589 -609
  183. package/dist/src/memory/enhanced-examples.js +305 -220
  184. package/dist/src/memory/enhanced-memory.js +336 -295
  185. package/dist/src/memory/enhanced-session-serializer.js +492 -408
  186. package/dist/src/memory/fallback-memory-system.js +1021 -900
  187. package/dist/src/memory/fallback-store.js +131 -93
  188. package/dist/src/memory/high-performance-serialization.js +730 -592
  189. package/dist/src/memory/in-memory-store.js +213 -161
  190. package/dist/src/memory/index.js +157 -123
  191. package/dist/src/memory/lock-free-structures.js +764 -578
  192. package/dist/src/memory/memory-mapped-persistence.js +766 -585
  193. package/dist/src/memory/memory-pressure-manager.js +707 -569
  194. package/dist/src/memory/migration.js +445 -358
  195. package/dist/src/memory/shared-memory.js +768 -641
  196. package/dist/src/memory/sqlite-store.js +325 -245
  197. package/dist/src/memory/sqlite-wrapper.js +151 -122
  198. package/dist/src/memory/swarm-memory.js +603 -470
  199. package/dist/src/memory/test-example.js +134 -126
  200. package/dist/src/memory/ultra-fast-memory-store.js +821 -622
  201. package/dist/src/memory/unified-memory-manager.js +437 -356
  202. package/dist/src/swarm/CodeRefactoringSwarm.js +952 -777
  203. package/dist/src/utils/__tests__/github-cli-safety-wrapper.test.js +400 -332
  204. package/dist/src/utils/error-handler.js +2 -36
  205. package/dist/src/utils/github-cli-safe.js +64 -56
  206. package/dist/src/utils/github-cli-safety-wrapper.js +546 -451
  207. package/dist/src/utils/npx-isolated-cache.js +119 -104
  208. package/dist/src/utils/preference-manager.js +652 -622
  209. package/dist/src/utils/timezone-utils.js +105 -86
  210. package/dist/src/web/api/apm-routes.js +353 -0
  211. package/dist/src/web/api/config/api-config.js +184 -0
  212. package/dist/src/web/api/middleware/auth.js +203 -0
  213. package/dist/src/web/api/middleware/cache.js +273 -0
  214. package/dist/src/web/api/middleware/error-handler.js +257 -0
  215. package/dist/src/web/api/middleware/request-logger.js +215 -0
  216. package/dist/src/web/api/middleware/validation.js +323 -0
  217. package/dist/src/web/api/routes/events.js +463 -0
  218. package/dist/src/web/api/routes/hierarchy.js +300 -0
  219. package/dist/src/web/api/routes/index.js +12 -0
  220. package/dist/src/web/api/routes/metrics.js +559 -0
  221. package/dist/src/web/api/routes/parallel-status.js +359 -0
  222. package/dist/src/web/api/routes/status.js +448 -0
  223. package/dist/src/web/api/server.js +462 -0
  224. package/dist/src/web/dashboard/hooks/useWebSocket.js +383 -0
  225. package/dist/src/web/dashboard/index.js +85 -0
  226. package/dist/src/web/dashboard/realtime/CustomSyncManager.js +439 -0
  227. package/dist/src/web/dashboard/realtime/NativeWebSocketManager.js +323 -0
  228. package/dist/src/web/dashboard/realtime/PerformanceBenchmark.js +527 -0
  229. package/dist/src/web/dashboard/realtime/RealtimeCommunicationManager.js +474 -0
  230. package/dist/src/web/dashboard/realtime/RealtimeServer.js +666 -0
  231. package/dist/src/web/dashboard/realtime/SSEManager.js +426 -0
  232. package/dist/src/web/dashboard/types.js +4 -0
  233. package/dist/src/web/messaging/agent-status-tracker.js +453 -0
  234. package/dist/src/web/messaging/human-intervention-system.js +305 -0
  235. package/dist/src/web/messaging/message-filter.js +302 -0
  236. package/dist/src/web/messaging/swarm-message-router.js +324 -0
  237. package/dist/src/web/messaging/transparency-logger.js +421 -0
  238. package/dist/src/web/portal-server.js +460 -0
  239. package/dist/src/web/server.js +322 -0
  240. package/dist/src/web/websocket/apm-websocket-handler.js +453 -0
  241. package/dist/src/web/websocket/websocket-manager.js +780 -0
  242. package/package.json +5 -3
  243. package/dist/src/cli/minimal-main.js +0 -22
  244. package/dist/src/enterprise/analytics-manager.js +0 -1135
  245. package/dist/src/enterprise/audit-manager.js +0 -1115
  246. package/dist/src/enterprise/cloud-manager.js +0 -891
  247. package/dist/src/enterprise/deployment-manager.js +0 -966
  248. package/dist/src/enterprise/index.js +0 -6
  249. package/dist/src/enterprise/project-manager.js +0 -584
  250. package/dist/src/enterprise/security-manager.js +0 -991
  251. package/dist/src/migration/index.js +0 -92
  252. package/dist/src/migration/logger.js +0 -121
  253. package/dist/src/migration/migration-analyzer.js +0 -268
  254. package/dist/src/migration/migration-runner.js +0 -522
  255. package/dist/src/migration/migration-validator.js +0 -285
  256. package/dist/src/migration/progress-reporter.js +0 -150
  257. package/dist/src/migration/rollback-manager.js +0 -321
  258. package/dist/src/migration/tests/migration-system.test.js +0 -7
  259. package/dist/src/migration/types.js +0 -3
  260. package/dist/src/swarm/__tests__/integration.test.js +0 -227
  261. package/dist/src/swarm/__tests__/prompt-copier.test.js +0 -344
  262. package/dist/src/swarm/advanced-orchestrator.js +0 -1095
  263. package/dist/src/swarm/claude-code-interface.js +0 -961
  264. package/dist/src/swarm/claude-flow-executor.js +0 -229
  265. package/dist/src/swarm/consensus-coordinator.js +0 -475
  266. package/dist/src/swarm/coordinator.js +0 -2993
  267. package/dist/src/swarm/direct-executor.js +0 -1180
  268. package/dist/src/swarm/error-recovery/advanced-error-detection.js +0 -691
  269. package/dist/src/swarm/error-recovery/automated-recovery-workflows.js +0 -998
  270. package/dist/src/swarm/error-recovery/error-recovery-coordinator.js +0 -1197
  271. package/dist/src/swarm/error-recovery/recovery-monitoring.js +0 -772
  272. package/dist/src/swarm/error-recovery/resilience-architecture.js +0 -714
  273. package/dist/src/swarm/error-recovery/self-healing-mechanisms.js +0 -1319
  274. package/dist/src/swarm/error-recovery/test-error-recovery-effectiveness.js +0 -808
  275. package/dist/src/swarm/executor-v2.js +0 -322
  276. package/dist/src/swarm/executor.js +0 -815
  277. package/dist/src/swarm/hive-mind-integration.js +0 -703
  278. package/dist/src/swarm/index.js +0 -41
  279. package/dist/src/swarm/json-output-aggregator.js +0 -267
  280. package/dist/src/swarm/large-scale-coordinator.js +0 -542
  281. package/dist/src/swarm/mcp-integration-wrapper.js +0 -628
  282. package/dist/src/swarm/memory.js +0 -1117
  283. package/dist/src/swarm/optimizations/__tests__/optimization.test.js +0 -348
  284. package/dist/src/swarm/optimizations/async-file-manager.js +0 -285
  285. package/dist/src/swarm/optimizations/circular-buffer.js +0 -162
  286. package/dist/src/swarm/optimizations/connection-pool.js +0 -244
  287. package/dist/src/swarm/optimizations/index.js +0 -28
  288. package/dist/src/swarm/optimizations/optimized-executor.js +0 -320
  289. package/dist/src/swarm/optimizations/ttl-map.js +0 -234
  290. package/dist/src/swarm/prompt-cli.js +0 -200
  291. package/dist/src/swarm/prompt-copier-enhanced.js +0 -202
  292. package/dist/src/swarm/prompt-copier.js +0 -381
  293. package/dist/src/swarm/prompt-manager.js +0 -295
  294. package/dist/src/swarm/prompt-utils.js +0 -310
  295. package/dist/src/swarm/result-aggregator.js +0 -718
  296. package/dist/src/swarm/sparc-executor.js +0 -1568
  297. package/dist/src/swarm/strategies/auto.js +0 -758
  298. package/dist/src/swarm/strategies/base.js +0 -128
  299. package/dist/src/swarm/strategies/research.js +0 -914
  300. package/dist/src/swarm/strategies/strategy-metrics-patch.js +0 -2
  301. package/dist/src/swarm/types.js +0 -52
  302. package/dist/src/swarm/workers/copy-worker.js +0 -56
  303. package/dist/src/validators/epic-config-schema.js +0 -214
  304. package/dist/src/validators/index.js +0 -10
  305. package/dist/src/validators/swarm-init-validator.js +0 -259
  306. package/dist/src/validators/todowrite-batching-validator.js +0 -215
  307. package/dist/src/validators/todowrite-integration.js +0 -187
  308. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/documentSymbols/browser/documentSymbols.js +0 -23
  309. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution.js +0 -57
  310. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js +0 -401
  311. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/dropOrPasteInto/browser/defaultProviders.js +0 -181
  312. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorContribution.js +0 -44
  313. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController.js +0 -157
  314. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/dropOrPasteInto/browser/edit.js +0 -71
  315. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/editorState/browser/editorState.js +0 -112
  316. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/find/browser/findController.js +0 -990
  317. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/find/browser/findDecorations.js +0 -296
  318. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/find/browser/findModel.js +0 -488
  319. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/find/browser/findOptionsWidget.js +0 -138
  320. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/find/browser/findState.js +0 -243
  321. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/find/browser/findWidget.js +0 -1177
  322. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/folding/browser/folding.js +0 -1093
  323. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/folding/browser/foldingDecorations.js +0 -133
  324. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/folding/browser/foldingModel.js +0 -538
  325. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/folding/browser/foldingRanges.js +0 -351
  326. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/fontZoom/browser/fontZoom.js +0 -49
  327. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/format/browser/format.js +0 -360
  328. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/format/browser/formatActions.js +0 -263
  329. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/format/browser/formattingEdit.js +0 -54
  330. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/gotoSymbol/browser/link/clickLinkGesture.js +0 -149
  331. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/hover/browser/contentHover.js +0 -874
  332. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/inlineCompletions/browser/commandIds.js +0 -7
  333. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/inlineCompletions/browser/commands.js +0 -199
  334. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/linesOperations/browser/copyLinesCommand.js +0 -70
  335. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/quickAccess/browser/commandsQuickAccess.js +0 -26
  336. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/quickAccess/browser/editorNavigationQuickAccess.js +0 -153
  337. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/readOnlyMessage/browser/contribution.js +0 -33
  338. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/semanticTokens/browser/documentSemanticTokens.js +0 -354
  339. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/smartSelect/browser/bracketSelections.js +0 -146
  340. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/suggest/browser/completionModel.js +0 -224
  341. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js +0 -119
  342. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/edcore.main.js +0 -14
  343. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/editor.all.js +0 -63
  344. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/editor.api.js +0 -55
  345. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/editor.main.js +0 -7
  346. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/editor.worker.js +0 -25
  347. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/editor/standalone/browser/colorizer.js +0 -118
  348. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/language/css/css.worker.js +0 -36869
  349. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/language/css/cssMode.js +0 -2035
  350. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/accessibility/browser/accessibilityService.js +0 -88
  351. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/accessibility/common/accessibility.js +0 -9
  352. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/action/common/action.js +0 -7
  353. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/action/common/actionCommonCategories.js +0 -13
  354. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/actionWidget/browser/actionList.js +0 -276
  355. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/actionWidget/browser/actionWidget.js +0 -248
  356. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/actionWidget/common/actionWidget.js +0 -5
  357. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/actions/common/actions.js +0 -409
  358. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/audioCues/browser/audioCueService.js +0 -176
  359. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/clipboard/browser/clipboardService.js +0 -141
  360. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/clipboard/common/clipboardService.js +0 -6
  361. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/commands/common/commands.js +0 -80
  362. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/configuration/common/configuration.js +0 -86
  363. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/configuration/common/configurationModels.js +0 -554
  364. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/configuration/common/configurationRegistry.js +0 -317
  365. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/configuration/common/configurations.js +0 -41
  366. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextkey/browser/contextKeyService.js +0 -432
  367. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextkey/common/contextkey.js +0 -1547
  368. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextkey/common/contextkeys.js +0 -18
  369. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextview/browser/contextMenuHandler.js +0 -124
  370. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextview/browser/contextMenuService.js +0 -101
  371. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextview/browser/contextView.js +0 -7
  372. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextview/browser/contextViewService.js +0 -72
  373. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/dialogs/common/dialogs.js +0 -2
  374. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/dnd/browser/dnd.js +0 -36
  375. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/editor/common/editor.js +0 -17
  376. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/environment/common/environment.js +0 -2
  377. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/extensions/common/extensions.js +0 -47
  378. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/files/common/files.js +0 -9
  379. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +0 -105
  380. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/instantiation/common/descriptors.js +0 -11
  381. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/instantiation/common/extensions.js +0 -15
  382. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/keybinding/common/abstractKeybindingService.js +0 -277
  383. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/keybinding/common/baseResolvedKeybinding.js +0 -53
  384. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +0 -354
  385. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/theme/browser/defaultStyles.js +0 -162
  386. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/theme/common/colorRegistry.js +0 -482
  387. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/abap/abap.js +0 -10
  388. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/apex/apex.js +0 -10
  389. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/azcli/azcli.js +0 -10
  390. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/bat/bat.js +0 -10
  391. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/bicep/bicep.js +0 -11
  392. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/cameligo/cameligo.js +0 -10
  393. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/clojure/clojure.js +0 -10
  394. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/coffee/coffee.js +0 -10
  395. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/cpp/cpp.js +0 -10
  396. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/csharp/csharp.js +0 -10
  397. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/csp/csp.js +0 -10
  398. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/css/css.js +0 -12
  399. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/cypher/cypher.js +0 -10
  400. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/dart/dart.js +0 -10
  401. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/dockerfile/dockerfile.js +0 -10
  402. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/ecl/ecl.js +0 -10
  403. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/elixir/elixir.js +0 -10
  404. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/flow9/flow9.js +0 -10
  405. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.js +0 -745
  406. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.de.js +0 -31
  407. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.es.js +0 -31
  408. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.fr.js +0 -29
  409. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.it.js +0 -29
  410. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.ja.js +0 -31
  411. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.js +0 -29
  412. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.ko.js +0 -29
  413. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.ru.js +0 -31
  414. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.zh-cn.js +0 -31
  415. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/editor/editor.main.nls.zh-tw.js +0 -29
  416. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/language/css/cssMode.js +0 -13
  417. package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/language/css/cssWorker.js +0 -81
  418. package/dist/src/web/frontend/node_modules/.multicast-dns-iKseM9bB/cli.js +0 -64
  419. package/dist/src/web/frontend/node_modules/.multicast-dns-iKseM9bB/example.js +0 -36
  420. package/dist/src/web/frontend/node_modules/.multicast-dns-iKseM9bB/index.js +0 -205
  421. package/dist/src/web/frontend/node_modules/.multicast-dns-iKseM9bB/test.js +0 -260
  422. package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/async/index.browser.js +0 -34
  423. package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/async/index.js +0 -35
  424. package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/async/index.native.js +0 -26
  425. package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/index.browser.js +0 -34
  426. package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/index.js +0 -45
  427. package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/nanoid.js +0 -1
  428. package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/non-secure/index.js +0 -21
  429. package/dist/src/web/frontend/node_modules/.nanoid-PAMEV9Hd/url-alphabet/index.js +0 -3
  430. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/bin/nodemon.js +0 -16
  431. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/cli/index.js +0 -49
  432. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/cli/parse.js +0 -230
  433. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/config/command.js +0 -43
  434. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/config/defaults.js +0 -34
  435. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/config/exec.js +0 -234
  436. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/config/index.js +0 -93
  437. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/config/load.js +0 -225
  438. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/help/index.js +0 -27
  439. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/index.js +0 -1
  440. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/monitor/index.js +0 -4
  441. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/monitor/match.js +0 -287
  442. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/monitor/run.js +0 -562
  443. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/monitor/signals.js +0 -34
  444. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/monitor/watch.js +0 -244
  445. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/nodemon.js +0 -317
  446. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/rules/add.js +0 -89
  447. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/rules/index.js +0 -53
  448. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/rules/parse.js +0 -43
  449. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/spawn.js +0 -74
  450. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/utils/bus.js +0 -44
  451. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/utils/clone.js +0 -40
  452. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/utils/colour.js +0 -26
  453. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/utils/index.js +0 -103
  454. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/utils/log.js +0 -82
  455. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/utils/merge.js +0 -47
  456. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/lib/version.js +0 -100
  457. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/node_modules/brace-expansion/index.js +0 -201
  458. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/node_modules/has-flag/index.js +0 -8
  459. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/node_modules/minimatch/minimatch.js +0 -947
  460. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/node_modules/supports-color/browser.js +0 -5
  461. package/dist/src/web/frontend/node_modules/.nodemon-QcvNKhKT/node_modules/supports-color/index.js +0 -131
  462. package/dist/src/web/frontend/node_modules/.pidtree-icfat3SQ/bin/pidtree.js +0 -128
  463. package/dist/src/web/frontend/node_modules/.pidtree-icfat3SQ/index.js +0 -49
  464. package/dist/src/web/frontend/node_modules/.pidtree-icfat3SQ/lib/bin.js +0 -61
  465. package/dist/src/web/frontend/node_modules/.pidtree-icfat3SQ/lib/get.js +0 -45
  466. package/dist/src/web/frontend/node_modules/.pidtree-icfat3SQ/lib/pidtree.js +0 -104
  467. package/dist/src/web/frontend/node_modules/.pidtree-icfat3SQ/lib/ps.js +0 -47
  468. package/dist/src/web/frontend/node_modules/.pidtree-icfat3SQ/lib/wmic.js +0 -49
  469. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/doc.js +0 -1270
  470. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/acorn.js +0 -15
  471. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/angular.js +0 -2
  472. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/babel.js +0 -15
  473. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/estree.js +0 -36
  474. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/flow.js +0 -19
  475. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/glimmer.js +0 -29
  476. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/graphql.js +0 -29
  477. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/html.js +0 -22
  478. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/markdown.js +0 -63
  479. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/meriyah.js +0 -4
  480. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/postcss.js +0 -54
  481. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/typescript.js +0 -20
  482. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/plugins/yaml.js +0 -160
  483. package/dist/src/web/frontend/node_modules/.prettier-ApZm3b7s/standalone.js +0 -34
  484. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/bin/react-scripts.js +0 -58
  485. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/env.js +0 -112
  486. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/getHttpsConfig.js +0 -74
  487. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/jest/babelTransform.js +0 -37
  488. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/jest/cssTransform.js +0 -22
  489. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/jest/fileTransform.js +0 -40
  490. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/modules.js +0 -142
  491. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/paths.js +0 -153
  492. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/webpack/persistentCache/createEnvironmentHash.js +0 -9
  493. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/webpack.config.js +0 -796
  494. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/config/webpackDevServer.config.js +0 -135
  495. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/scripts/build.js +0 -225
  496. package/dist/src/web/frontend/node_modules/.react-scripts-OTANyoRb/scripts/eject.js +0 -340
@@ -1,481 +1,584 @@
1
1
  /**
2
2
  * Optimized Pair Programming Command
3
3
  * Interactive pair programming with intelligent verification
4
- */ import fs from "node:fs/promises";
5
- import path from "path";
6
- import { spawn, exec } from "child_process";
7
- import { promisify } from "util";
8
- import readline from "readline";
4
+ */
5
+
6
+ import fs from 'fs/promises';
7
+ import path from 'path';
8
+ import { spawn, exec } from 'child_process';
9
+ import { promisify } from 'util';
10
+ import readline from 'readline';
11
+ import { watch } from 'fs';
12
+
9
13
  const execAsync = promisify(exec);
10
- let PairProgrammingSession = class PairProgrammingSession {
11
- async start() {
12
- await this.saveSession();
13
- this.showWelcome();
14
- if (this.verify) {
15
- this.showVerificationSettings();
16
- // Only run initial verification once
17
- if (this.autoVerify) {
18
- console.log('\nšŸ” Running initial verification...');
19
- await this.runVerification();
20
- }
21
- }
22
- if (this.test) {
23
- await this.setupTestWatcher();
24
- }
25
- await this.startInteractiveMode();
26
- }
27
- showWelcome() {
28
- console.log('\nšŸš€ Starting Pair Programming Session');
29
- console.log('━'.repeat(50));
30
- console.log(`Session ID: ${this.sessionId}`);
31
- console.log(`Mode: ${this.mode}`);
32
- console.log(`Agent: ${this.agent}`);
33
- console.log(`Verification: ${this.verify ? 'āœ… Enabled' : 'āŒ Disabled'}`);
34
- console.log(`Auto-Verify: ${this.autoVerify ? 'āœ… Enabled' : 'āŒ Disabled'}`);
35
- console.log(`Testing: ${this.test ? 'āœ… Enabled' : 'āŒ Disabled'}`);
36
- console.log('━'.repeat(50));
37
- // Show mode details
38
- switch(this.mode){
39
- case 'driver':
40
- console.log('\nšŸ‘¤ You are the DRIVER - Write code while AI assists');
41
- console.log('šŸ¤– AI is the NAVIGATOR - Providing guidance and suggestions');
42
- break;
43
- case 'navigator':
44
- console.log('\nšŸ¤– AI is the DRIVER - Writing code based on your guidance');
45
- console.log('šŸ‘¤ You are the NAVIGATOR - Providing high-level direction');
46
- break;
47
- case 'switch':
48
- console.log('\nšŸ”„ SWITCH MODE - Roles alternate every 10 minutes');
49
- console.log(`šŸ‘¤ Current role: ${this.currentRole.toUpperCase()} (you)`);
50
- console.log('šŸ¤– AI role: ' + (this.currentRole === 'driver' ? 'NAVIGATOR' : 'DRIVER'));
51
- this.startRoleTimer();
52
- break;
53
- }
54
- this.showCommands();
55
- }
56
- showCommands() {
57
- console.log('\nšŸ“ Session Commands:');
58
- console.log(' /help - Show available commands');
59
- console.log(' /switch - Switch driver/navigator roles');
60
- console.log(' /suggest - Get AI suggestions');
61
- console.log(' /review - Request code review');
62
- console.log(' /test - Run tests manually');
63
- console.log(' /verify - Run verification check');
64
- console.log(' /status - Show session status');
65
- console.log(' /metrics - Show quality metrics');
66
- console.log(' /auto - Toggle auto-verification');
67
- console.log(' /watch - Toggle file watching');
68
- console.log(' /commit - Commit with verification');
69
- console.log(' /end - End session');
70
- console.log(' /exit - Exit (same as /end)');
71
- }
72
- showVerificationSettings() {
73
- console.log('\nāœ… Verification Settings:');
74
- console.log(` • Threshold: ${this.threshold}`);
75
- console.log(` • Auto-verify: ${this.autoVerify ? 'Enabled' : 'Disabled'}`);
76
- console.log(` • Manual verify: Always available via /verify`);
77
- if (this.autoVerify) {
78
- console.log(` • Cooldown: ${this.verificationCooldown / 1000}s between checks`);
79
- console.log(' • Use /auto to toggle automatic verification');
80
- }
81
- }
82
- async runVerification() {
83
- // Prevent concurrent verifications
84
- if (this.isVerifying) {
85
- console.log('ā³ Verification already in progress...');
86
- return null;
87
- }
88
- // Check cooldown for automatic verifications
89
- const now = Date.now();
90
- if (this.autoVerify && now - this.lastVerificationTime < this.verificationCooldown) {
91
- const remaining = Math.ceil((this.verificationCooldown - (now - this.lastVerificationTime)) / 1000);
92
- console.log(`ā±ļø Verification cooldown: ${remaining}s remaining`);
93
- return null;
94
- }
95
- this.isVerifying = true;
96
- this.lastVerificationTime = now;
97
- console.log('\nšŸ” Running verification check...');
98
- const checks = [
99
- {
100
- name: 'Type Check',
101
- command: 'npm run typecheck 2>&1 || true',
102
- weight: 0.4
103
- },
104
- {
105
- name: 'Linting',
106
- command: 'npm run lint 2>&1 || true',
107
- weight: 0.3
108
- },
109
- {
110
- name: 'Build',
111
- command: 'npm run build 2>&1 || true',
112
- weight: 0.3
113
- }
114
- ];
115
- let totalScore = 0;
116
- let totalWeight = 0;
117
- const results = [];
118
- for (const check of checks){
119
- try {
120
- const { stdout, stderr } = await execAsync(check.command);
121
- const output = stdout + stderr;
122
- // More intelligent scoring based on actual output
123
- let score = 1.0;
124
- if (output.toLowerCase().includes('error')) {
125
- const errorCount = (output.match(/error/gi) || []).length;
126
- score = Math.max(0.2, 1.0 - errorCount * 0.1); // Deduct 0.1 per error, minimum 0.2
127
- } else if (output.toLowerCase().includes('warning')) {
128
- const warningCount = (output.match(/warning/gi) || []).length;
129
- score = Math.max(0.7, 1.0 - warningCount * 0.05); // Deduct 0.05 per warning, minimum 0.7
130
- }
131
- totalScore += score * check.weight;
132
- totalWeight += check.weight;
133
- const icon = score >= 0.8 ? 'āœ…' : score >= 0.5 ? 'āš ļø' : 'āŒ';
134
- console.log(` ${icon} ${check.name}: ${score.toFixed(2)}`);
135
- results.push({
136
- name: check.name,
137
- score,
138
- output: output.slice(0, 200)
139
- });
140
- } catch (error) {
141
- console.log(` āŒ ${check.name}: 0.00 (failed to run)`);
142
- results.push({
143
- name: check.name,
144
- score: 0,
145
- error: error.message
146
- });
147
- totalWeight += check.weight;
148
- }
149
- }
150
- const averageScore = totalWeight > 0 ? totalScore / totalWeight : 0;
151
- this.verificationScores.push({
152
- score: averageScore,
153
- timestamp: now,
154
- results
155
- });
156
- console.log(`\nšŸ“Š Verification Score: ${averageScore.toFixed(2)}/${this.threshold}`);
157
- if (averageScore < this.threshold) {
158
- console.log('āš ļø Verification threshold not met');
159
- // Only show detailed help if score is very low
160
- if (averageScore < 0.5) {
161
- console.log('\nšŸ’” Suggestions:');
162
- console.log(' • Run /test to check test failures');
163
- console.log(' • Check TypeScript errors with npm run typecheck');
164
- console.log(' • Fix linting issues with npm run lint --fix');
165
- }
166
- } else {
167
- console.log('āœ… Verification passed!');
168
- }
169
- this.isVerifying = false;
170
- return averageScore;
14
+
15
+ class PairProgrammingSession {
16
+ constructor(options = {}) {
17
+ this.sessionId = `pair_${Date.now()}`;
18
+ this.mode = options.mode || 'switch';
19
+ this.agent = options.agent || 'auto';
20
+ this.verify = options.verify || false;
21
+ this.test = options.test || false;
22
+ this.autoVerify = options.autoVerify || false; // New: control automatic verification
23
+ this.threshold = options.threshold || 0.95;
24
+ this.startTime = new Date();
25
+ this.status = 'active';
26
+ this.currentRole = 'driver';
27
+ this.verificationScores = [];
28
+ this.testResults = [];
29
+ this.fileWatchers = new Map();
30
+ this.rl = null;
31
+ this.lastVerificationTime = 0;
32
+ this.verificationCooldown = 60000; // 1 minute cooldown between auto-verifications
33
+ this.isVerifying = false; // Prevent concurrent verifications
34
+ }
35
+
36
+ async start() {
37
+ await this.saveSession();
38
+ this.showWelcome();
39
+
40
+ if (this.verify) {
41
+ this.showVerificationSettings();
42
+
43
+ // Only run initial verification once
44
+ if (this.autoVerify) {
45
+ console.log('\nšŸ” Running initial verification...');
46
+ await this.runVerification();
47
+ }
171
48
  }
172
- async setupTestWatcher() {
173
- console.log('\n🧪 Test Configuration:');
174
- console.log(' • Manual testing via /test command');
175
- console.log(' • File watching available via /watch');
176
- // Don't automatically run tests, wait for user command
49
+
50
+ if (this.test) {
51
+ await this.setupTestWatcher();
177
52
  }
178
- async runTests() {
179
- console.log('\n🧪 Running tests...');
180
- try {
181
- const { stdout, stderr } = await execAsync('npm test 2>&1 || true');
182
- const output = stdout + stderr;
183
- const lines = output.split('\n');
184
- // Parse test results more intelligently
185
- const passLine = lines.find((l)=>l.includes('passed'));
186
- const failLine = lines.find((l)=>l.includes('failed'));
187
- const suitesLine = lines.find((l)=>l.includes('Test Suites:'));
188
- let passed = false;
189
- let summary = 'No test results found';
190
- if (suitesLine) {
191
- summary = suitesLine.trim();
192
- passed = !suitesLine.includes('failed');
193
- } else if (passLine || failLine) {
194
- summary = (passLine || failLine).trim();
195
- passed = !!passLine && !failLine;
196
- }
197
- console.log(` ${passed ? 'āœ…' : 'āŒ'} ${summary}`);
198
- // Extract coverage if available
199
- const coverageLine = lines.find((l)=>l.includes('Coverage') || l.includes('Statements'));
200
- if (coverageLine) {
201
- console.log(` šŸ“Š ${coverageLine.trim()}`);
202
- }
203
- this.testResults.push({
204
- timestamp: new Date(),
205
- passed,
206
- summary
207
- });
208
- return passed;
209
- } catch (error) {
210
- console.log(' āŒ Test execution failed:', error.message);
211
- return false;
212
- }
53
+
54
+ await this.startInteractiveMode();
55
+ }
56
+
57
+ showWelcome() {
58
+ console.log('\nšŸš€ Starting Pair Programming Session');
59
+ console.log('━'.repeat(50));
60
+ console.log(`Session ID: ${this.sessionId}`);
61
+ console.log(`Mode: ${this.mode}`);
62
+ console.log(`Agent: ${this.agent}`);
63
+ console.log(`Verification: ${this.verify ? 'āœ… Enabled' : 'āŒ Disabled'}`);
64
+ console.log(`Auto-Verify: ${this.autoVerify ? 'āœ… Enabled' : 'āŒ Disabled'}`);
65
+ console.log(`Testing: ${this.test ? 'āœ… Enabled' : 'āŒ Disabled'}`);
66
+ console.log('━'.repeat(50));
67
+
68
+ // Show mode details
69
+ switch (this.mode) {
70
+ case 'driver':
71
+ console.log('\nšŸ‘¤ You are the DRIVER - Write code while AI assists');
72
+ console.log('šŸ¤– AI is the NAVIGATOR - Providing guidance and suggestions');
73
+ break;
74
+ case 'navigator':
75
+ console.log('\nšŸ¤– AI is the DRIVER - Writing code based on your guidance');
76
+ console.log('šŸ‘¤ You are the NAVIGATOR - Providing high-level direction');
77
+ break;
78
+ case 'switch':
79
+ console.log('\nšŸ”„ SWITCH MODE - Roles alternate every 10 minutes');
80
+ console.log(`šŸ‘¤ Current role: ${this.currentRole.toUpperCase()} (you)`);
81
+ console.log('šŸ¤– AI role: ' + (this.currentRole === 'driver' ? 'NAVIGATOR' : 'DRIVER'));
82
+ this.startRoleTimer();
83
+ break;
213
84
  }
214
- startRoleTimer() {
215
- if (this.mode !== 'switch') return;
216
- this.roleTimer = setTimeout(()=>{
217
- this.switchRoles();
218
- this.startRoleTimer(); // Restart timer
219
- }, 10 * 60 * 1000); // 10 minutes
85
+
86
+ this.showCommands();
87
+ }
88
+
89
+ showCommands() {
90
+ console.log('\nšŸ“ Session Commands:');
91
+ console.log(' /help - Show available commands');
92
+ console.log(' /switch - Switch driver/navigator roles');
93
+ console.log(' /suggest - Get AI suggestions');
94
+ console.log(' /review - Request code review');
95
+ console.log(' /test - Run tests manually');
96
+ console.log(' /verify - Run verification check');
97
+ console.log(' /status - Show session status');
98
+ console.log(' /metrics - Show quality metrics');
99
+ console.log(' /auto - Toggle auto-verification');
100
+ console.log(' /watch - Toggle file watching');
101
+ console.log(' /commit - Commit with verification');
102
+ console.log(' /end - End session');
103
+ console.log(' /exit - Exit (same as /end)');
104
+ }
105
+
106
+ showVerificationSettings() {
107
+ console.log('\nāœ… Verification Settings:');
108
+ console.log(` • Threshold: ${this.threshold}`);
109
+ console.log(` • Auto-verify: ${this.autoVerify ? 'Enabled' : 'Disabled'}`);
110
+ console.log(` • Manual verify: Always available via /verify`);
111
+
112
+ if (this.autoVerify) {
113
+ console.log(` • Cooldown: ${this.verificationCooldown / 1000}s between checks`);
114
+ console.log(' • Use /auto to toggle automatic verification');
220
115
  }
221
- switchRoles() {
222
- const oldRole = this.currentRole;
223
- this.currentRole = this.currentRole === 'driver' ? 'navigator' : 'driver';
224
- console.log('\nšŸ”„ Role Switch!');
225
- console.log(` Previous role: ${oldRole.toUpperCase()}`);
226
- console.log(` New role: ${this.currentRole.toUpperCase()}`);
227
- console.log(' Take a moment to transition...\n');
116
+ }
117
+
118
+ async runVerification() {
119
+ // Prevent concurrent verifications
120
+ if (this.isVerifying) {
121
+ console.log('ā³ Verification already in progress...');
122
+ return null;
228
123
  }
229
- async startInteractiveMode() {
230
- this.rl = readline.createInterface({
231
- input: process.stdin,
232
- output: process.stdout,
233
- prompt: '\nšŸ’» pair> '
234
- });
235
- console.log('\nšŸ’” Interactive mode active. Type /help for commands.\n');
236
- this.rl.prompt();
237
- this.rl.on('line', async (line)=>{
238
- const input = line.trim();
239
- if (input.startsWith('/')) {
240
- await this.handleCommand(input);
241
- } else if (input) {
242
- // Handle regular input as code discussion
243
- console.log('šŸ¤– AI: Processing your input...');
244
- // In a real implementation, this would send to AI
245
- }
246
- this.rl.prompt();
247
- });
248
- this.rl.on('close', ()=>{
249
- this.end();
250
- });
124
+
125
+ // Check cooldown for automatic verifications
126
+ const now = Date.now();
127
+ if (this.autoVerify && now - this.lastVerificationTime < this.verificationCooldown) {
128
+ const remaining = Math.ceil(
129
+ (this.verificationCooldown - (now - this.lastVerificationTime)) / 1000,
130
+ );
131
+ console.log(`ā±ļø Verification cooldown: ${remaining}s remaining`);
132
+ return null;
251
133
  }
252
- async handleCommand(command) {
253
- const [cmd, ...args] = command.split(' ');
254
- switch(cmd){
255
- case '/help':
256
- this.showCommands();
257
- break;
258
- case '/switch':
259
- this.switchRoles();
260
- break;
261
- case '/suggest':
262
- console.log('šŸ¤– AI Suggestion: Consider using async/await for better readability');
263
- console.log(' Also check error handling in promise chains');
264
- break;
265
- case '/review':
266
- console.log('šŸ” Starting code review...');
267
- await this.runVerification();
268
- break;
269
- case '/test':
270
- await this.runTests();
271
- break;
272
- case '/verify':
273
- await this.runVerification();
274
- break;
275
- case '/status':
276
- await this.showStatus();
277
- break;
278
- case '/metrics':
279
- this.showMetrics();
280
- break;
281
- case '/auto':
282
- this.autoVerify = !this.autoVerify;
283
- console.log(`\nšŸ”„ Auto-verification ${this.autoVerify ? 'enabled' : 'disabled'}`);
284
- if (this.autoVerify) {
285
- console.log(` Cooldown: ${this.verificationCooldown / 1000}s between checks`);
286
- }
287
- break;
288
- case '/watch':
289
- console.log('šŸ“‚ File watching not yet implemented');
290
- console.log(' Use /verify or /test for manual checks');
291
- break;
292
- case '/commit':
293
- await this.commitWithVerification();
294
- break;
295
- case '/end':
296
- case '/exit':
297
- await this.end();
298
- process.exit(0);
299
- break;
300
- default:
301
- console.log(`āŒ Unknown command: ${cmd}`);
302
- console.log('šŸ’” Type /help for available commands');
134
+
135
+ this.isVerifying = true;
136
+ this.lastVerificationTime = now;
137
+
138
+ console.log('\nšŸ” Running verification check...');
139
+
140
+ const checks = [
141
+ {
142
+ name: 'Type Check',
143
+ command: 'npm run typecheck 2>&1 || true',
144
+ weight: 0.4, // Higher weight for type checking
145
+ },
146
+ {
147
+ name: 'Linting',
148
+ command: 'npm run lint 2>&1 || true',
149
+ weight: 0.3,
150
+ },
151
+ {
152
+ name: 'Build',
153
+ command: 'npm run build 2>&1 || true',
154
+ weight: 0.3,
155
+ },
156
+ ];
157
+
158
+ let totalScore = 0;
159
+ let totalWeight = 0;
160
+ const results = [];
161
+
162
+ for (const check of checks) {
163
+ try {
164
+ const { stdout, stderr } = await execAsync(check.command);
165
+ const output = stdout + stderr;
166
+
167
+ // More intelligent scoring based on actual output
168
+ let score = 1.0;
169
+
170
+ if (output.toLowerCase().includes('error')) {
171
+ const errorCount = (output.match(/error/gi) || []).length;
172
+ score = Math.max(0.2, 1.0 - errorCount * 0.1); // Deduct 0.1 per error, minimum 0.2
173
+ } else if (output.toLowerCase().includes('warning')) {
174
+ const warningCount = (output.match(/warning/gi) || []).length;
175
+ score = Math.max(0.7, 1.0 - warningCount * 0.05); // Deduct 0.05 per warning, minimum 0.7
303
176
  }
177
+
178
+ totalScore += score * check.weight;
179
+ totalWeight += check.weight;
180
+
181
+ const icon = score >= 0.8 ? 'āœ…' : score >= 0.5 ? 'āš ļø' : 'āŒ';
182
+ console.log(` ${icon} ${check.name}: ${score.toFixed(2)}`);
183
+
184
+ results.push({ name: check.name, score, output: output.slice(0, 200) });
185
+ } catch (error) {
186
+ console.log(` āŒ ${check.name}: 0.00 (failed to run)`);
187
+ results.push({ name: check.name, score: 0, error: error.message });
188
+ totalWeight += check.weight;
189
+ }
304
190
  }
305
- async showStatus() {
306
- const duration = Math.floor((Date.now() - this.startTime) / 1000 / 60);
307
- console.log('\nšŸ“Š Session Status');
308
- console.log('━'.repeat(40));
309
- console.log(`Session ID: ${this.sessionId}`);
310
- console.log(`Duration: ${duration} minutes`);
311
- console.log(`Current Role: ${this.currentRole.toUpperCase()}`);
312
- console.log(`Mode: ${this.mode}`);
313
- console.log(`Status: ${this.status}`);
314
- console.log(`Auto-Verify: ${this.autoVerify ? 'Enabled' : 'Disabled'}`);
315
- if (this.verify && this.verificationScores.length > 0) {
316
- const recent = this.verificationScores[this.verificationScores.length - 1];
317
- console.log(`Last Verification: ${recent.score.toFixed(2)} (${new Date(recent.timestamp).toLocaleTimeString()})`);
318
- }
319
- if (this.test && this.testResults.length > 0) {
320
- const passed = this.testResults.filter((r)=>r.passed).length;
321
- console.log(`Tests Passed: ${passed}/${this.testResults.length}`);
322
- }
191
+
192
+ const averageScore = totalWeight > 0 ? totalScore / totalWeight : 0;
193
+ this.verificationScores.push({ score: averageScore, timestamp: now, results });
194
+
195
+ console.log(`\nšŸ“Š Verification Score: ${averageScore.toFixed(2)}/${this.threshold}`);
196
+
197
+ if (averageScore < this.threshold) {
198
+ console.log('āš ļø Verification threshold not met');
199
+
200
+ // Only show detailed help if score is very low
201
+ if (averageScore < 0.5) {
202
+ console.log('\nšŸ’” Suggestions:');
203
+ console.log(' • Run /test to check test failures');
204
+ console.log(' • Check TypeScript errors with npm run typecheck');
205
+ console.log(' • Fix linting issues with npm run lint --fix');
206
+ }
207
+ } else {
208
+ console.log('āœ… Verification passed!');
323
209
  }
324
- showMetrics() {
325
- console.log('\nšŸ“ˆ Quality Metrics');
326
- console.log('━'.repeat(40));
327
- if (this.verificationScores.length > 0) {
328
- console.log('\nVerification History:');
329
- this.verificationScores.slice(-5).forEach((item, i)=>{
330
- const bar = 'ā–ˆ'.repeat(Math.floor(item.score * 20));
331
- const time = new Date(item.timestamp).toLocaleTimeString();
332
- console.log(` ${i + 1}. ${bar} ${item.score.toFixed(2)} - ${time}`);
333
- });
334
- // Show average
335
- const avg = this.verificationScores.reduce((sum, item)=>sum + item.score, 0) / this.verificationScores.length;
336
- console.log(`\n Average: ${avg.toFixed(2)}`);
337
- } else {
338
- console.log('\n No verification history yet');
339
- console.log(' Run /verify to check code quality');
340
- }
341
- if (this.testResults.length > 0) {
342
- console.log('\nTest Results:');
343
- this.testResults.slice(-5).forEach((result, i)=>{
344
- console.log(` ${i + 1}. ${result.passed ? 'āœ…' : 'āŒ'} ${new Date(result.timestamp).toLocaleTimeString()}`);
345
- });
346
- // Show success rate
347
- const passed = this.testResults.filter((r)=>r.passed).length;
348
- const rate = (passed / this.testResults.length * 100).toFixed(0);
349
- console.log(`\n Success Rate: ${rate}%`);
350
- } else {
351
- console.log('\n No test history yet');
352
- console.log(' Run /test to execute test suite');
353
- }
210
+
211
+ this.isVerifying = false;
212
+ return averageScore;
213
+ }
214
+
215
+ async setupTestWatcher() {
216
+ console.log('\n🧪 Test Configuration:');
217
+ console.log(' • Manual testing via /test command');
218
+ console.log(' • File watching available via /watch');
219
+
220
+ // Don't automatically run tests, wait for user command
221
+ }
222
+
223
+ async runTests() {
224
+ console.log('\n🧪 Running tests...');
225
+
226
+ try {
227
+ const { stdout, stderr } = await execAsync('npm test 2>&1 || true');
228
+ const output = stdout + stderr;
229
+ const lines = output.split('\n');
230
+
231
+ // Parse test results more intelligently
232
+ const passLine = lines.find((l) => l.includes('passed'));
233
+ const failLine = lines.find((l) => l.includes('failed'));
234
+ const suitesLine = lines.find((l) => l.includes('Test Suites:'));
235
+
236
+ let passed = false;
237
+ let summary = 'No test results found';
238
+
239
+ if (suitesLine) {
240
+ summary = suitesLine.trim();
241
+ passed = !suitesLine.includes('failed');
242
+ } else if (passLine || failLine) {
243
+ summary = (passLine || failLine).trim();
244
+ passed = !!passLine && !failLine;
245
+ }
246
+
247
+ console.log(` ${passed ? 'āœ…' : 'āŒ'} ${summary}`);
248
+
249
+ // Extract coverage if available
250
+ const coverageLine = lines.find((l) => l.includes('Coverage') || l.includes('Statements'));
251
+ if (coverageLine) {
252
+ console.log(` šŸ“Š ${coverageLine.trim()}`);
253
+ }
254
+
255
+ this.testResults.push({
256
+ timestamp: new Date(),
257
+ passed,
258
+ summary,
259
+ });
260
+
261
+ return passed;
262
+ } catch (error) {
263
+ console.log(' āŒ Test execution failed:', error.message);
264
+ return false;
354
265
  }
355
- async commitWithVerification() {
356
- console.log('\nšŸ” Pre-commit verification...');
357
- const score = await this.runVerification();
358
- if (score === null) {
359
- console.log('ā³ Please wait for cooldown or use /verify manually');
360
- return;
361
- }
362
- if (score >= this.threshold) {
363
- console.log('āœ… Verification passed! Ready to commit.');
364
- console.log('\nšŸ’” Next steps:');
365
- console.log(' 1. Review changes: git diff');
366
- console.log(' 2. Stage files: git add .');
367
- console.log(' 3. Commit: git commit -m "your message"');
368
- } else {
369
- console.log('āŒ Verification failed!');
370
- console.log('\nšŸ’” Fix issues before committing:');
371
- console.log(' • Run npm run typecheck to see TypeScript errors');
372
- console.log(' • Run npm run lint to check code style');
373
- console.log(' • Run npm run build to verify compilation');
266
+ }
267
+
268
+ startRoleTimer() {
269
+ if (this.mode !== 'switch') return;
270
+
271
+ this.roleTimer = setTimeout(
272
+ () => {
273
+ this.switchRoles();
274
+ this.startRoleTimer(); // Restart timer
275
+ },
276
+ 10 * 60 * 1000,
277
+ ); // 10 minutes
278
+ }
279
+
280
+ switchRoles() {
281
+ const oldRole = this.currentRole;
282
+ this.currentRole = this.currentRole === 'driver' ? 'navigator' : 'driver';
283
+
284
+ console.log('\nšŸ”„ Role Switch!');
285
+ console.log(` Previous role: ${oldRole.toUpperCase()}`);
286
+ console.log(` New role: ${this.currentRole.toUpperCase()}`);
287
+ console.log(' Take a moment to transition...\n');
288
+ }
289
+
290
+ async startInteractiveMode() {
291
+ this.rl = readline.createInterface({
292
+ input: process.stdin,
293
+ output: process.stdout,
294
+ prompt: '\nšŸ’» pair> ',
295
+ });
296
+
297
+ console.log('\nšŸ’” Interactive mode active. Type /help for commands.\n');
298
+
299
+ this.rl.prompt();
300
+
301
+ this.rl.on('line', async (line) => {
302
+ const input = line.trim();
303
+
304
+ if (input.startsWith('/')) {
305
+ await this.handleCommand(input);
306
+ } else if (input) {
307
+ // Handle regular input as code discussion
308
+ console.log('šŸ¤– AI: Processing your input...');
309
+ // In a real implementation, this would send to AI
310
+ }
311
+
312
+ this.rl.prompt();
313
+ });
314
+
315
+ this.rl.on('close', () => {
316
+ this.end();
317
+ });
318
+ }
319
+
320
+ async handleCommand(command) {
321
+ const [cmd, ...args] = command.split(' ');
322
+
323
+ switch (cmd) {
324
+ case '/help':
325
+ this.showCommands();
326
+ break;
327
+
328
+ case '/switch':
329
+ this.switchRoles();
330
+ break;
331
+
332
+ case '/suggest':
333
+ console.log('šŸ¤– AI Suggestion: Consider using async/await for better readability');
334
+ console.log(' Also check error handling in promise chains');
335
+ break;
336
+
337
+ case '/review':
338
+ console.log('šŸ” Starting code review...');
339
+ await this.runVerification();
340
+ break;
341
+
342
+ case '/test':
343
+ await this.runTests();
344
+ break;
345
+
346
+ case '/verify':
347
+ await this.runVerification();
348
+ break;
349
+
350
+ case '/status':
351
+ await this.showStatus();
352
+ break;
353
+
354
+ case '/metrics':
355
+ this.showMetrics();
356
+ break;
357
+
358
+ case '/auto':
359
+ this.autoVerify = !this.autoVerify;
360
+ console.log(`\nšŸ”„ Auto-verification ${this.autoVerify ? 'enabled' : 'disabled'}`);
361
+ if (this.autoVerify) {
362
+ console.log(` Cooldown: ${this.verificationCooldown / 1000}s between checks`);
374
363
  }
364
+ break;
365
+
366
+ case '/watch':
367
+ console.log('šŸ“‚ File watching not yet implemented');
368
+ console.log(' Use /verify or /test for manual checks');
369
+ break;
370
+
371
+ case '/commit':
372
+ await this.commitWithVerification();
373
+ break;
374
+
375
+ case '/end':
376
+ case '/exit':
377
+ await this.end();
378
+ process.exit(0);
379
+ break;
380
+
381
+ default:
382
+ console.log(`āŒ Unknown command: ${cmd}`);
383
+ console.log('šŸ’” Type /help for available commands');
375
384
  }
376
- async end() {
377
- console.log('\nšŸ›‘ Ending pair programming session...');
378
- // Clear timers
379
- if (this.roleTimer) clearTimeout(this.roleTimer);
380
- if (this.rl) this.rl.close();
381
- // Update session
382
- this.status = 'completed';
383
- await this.saveSession();
384
- // Show summary
385
- const duration = Math.floor((Date.now() - this.startTime) / 1000 / 60);
386
- console.log('\n✨ Session Complete!');
387
- console.log('━'.repeat(40));
388
- console.log(`Duration: ${duration} minutes`);
389
- if (this.verificationScores.length > 0) {
390
- const avg = this.verificationScores.reduce((sum, item)=>sum + item.score, 0) / this.verificationScores.length;
391
- console.log(`Average Verification: ${avg.toFixed(2)}`);
392
- console.log(`Total Checks: ${this.verificationScores.length}`);
393
- }
394
- if (this.testResults.length > 0) {
395
- const passed = this.testResults.filter((r)=>r.passed).length;
396
- console.log(`Test Success Rate: ${(passed / this.testResults.length * 100).toFixed(0)}%`);
397
- console.log(`Total Test Runs: ${this.testResults.length}`);
398
- }
399
- console.log('\nšŸ‘‹ Thanks for pair programming!\n');
385
+ }
386
+
387
+ async showStatus() {
388
+ const duration = Math.floor((Date.now() - this.startTime) / 1000 / 60);
389
+
390
+ console.log('\nšŸ“Š Session Status');
391
+ console.log('━'.repeat(40));
392
+ console.log(`Session ID: ${this.sessionId}`);
393
+ console.log(`Duration: ${duration} minutes`);
394
+ console.log(`Current Role: ${this.currentRole.toUpperCase()}`);
395
+ console.log(`Mode: ${this.mode}`);
396
+ console.log(`Status: ${this.status}`);
397
+ console.log(`Auto-Verify: ${this.autoVerify ? 'Enabled' : 'Disabled'}`);
398
+
399
+ if (this.verify && this.verificationScores.length > 0) {
400
+ const recent = this.verificationScores[this.verificationScores.length - 1];
401
+ console.log(
402
+ `Last Verification: ${recent.score.toFixed(2)} (${new Date(recent.timestamp).toLocaleTimeString()})`,
403
+ );
400
404
  }
401
- async saveSession() {
402
- const sessionPath = '.claude-flow/sessions/pair';
403
- await fs.mkdir(sessionPath, {
404
- recursive: true
405
- });
406
- const sessionData = {
407
- id: this.sessionId,
408
- mode: this.mode,
409
- agent: this.agent,
410
- verify: this.verify,
411
- autoVerify: this.autoVerify,
412
- test: this.test,
413
- threshold: this.threshold,
414
- startTime: this.startTime.toISOString(),
415
- status: this.status,
416
- currentRole: this.currentRole,
417
- verificationScores: this.verificationScores,
418
- testResults: this.testResults
419
- };
420
- await fs.writeFile(path.join(sessionPath, `${this.sessionId}.json`), JSON.stringify(sessionData, null, 2));
405
+
406
+ if (this.test && this.testResults.length > 0) {
407
+ const passed = this.testResults.filter((r) => r.passed).length;
408
+ console.log(`Tests Passed: ${passed}/${this.testResults.length}`);
421
409
  }
422
- constructor(options = {}){
423
- this.sessionId = `pair_${Date.now()}`;
424
- this.mode = options.mode || 'switch';
425
- this.agent = options.agent || 'auto';
426
- this.verify = options.verify || false;
427
- this.test = options.test || false;
428
- this.autoVerify = options.autoVerify || false; // New: control automatic verification
429
- this.threshold = options.threshold || 0.95;
430
- this.startTime = new Date();
431
- this.status = 'active';
432
- this.currentRole = 'driver';
433
- this.verificationScores = [];
434
- this.testResults = [];
435
- this.fileWatchers = new Map();
436
- this.rl = null;
437
- this.lastVerificationTime = 0;
438
- this.verificationCooldown = 60000; // 1 minute cooldown between auto-verifications
439
- this.isVerifying = false; // Prevent concurrent verifications
410
+ }
411
+
412
+ showMetrics() {
413
+ console.log('\nšŸ“ˆ Quality Metrics');
414
+ console.log('━'.repeat(40));
415
+
416
+ if (this.verificationScores.length > 0) {
417
+ console.log('\nVerification History:');
418
+ this.verificationScores.slice(-5).forEach((item, i) => {
419
+ const bar = 'ā–ˆ'.repeat(Math.floor(item.score * 20));
420
+ const time = new Date(item.timestamp).toLocaleTimeString();
421
+ console.log(` ${i + 1}. ${bar} ${item.score.toFixed(2)} - ${time}`);
422
+ });
423
+
424
+ // Show average
425
+ const avg =
426
+ this.verificationScores.reduce((sum, item) => sum + item.score, 0) /
427
+ this.verificationScores.length;
428
+ console.log(`\n Average: ${avg.toFixed(2)}`);
429
+ } else {
430
+ console.log('\n No verification history yet');
431
+ console.log(' Run /verify to check code quality');
440
432
  }
441
- };
442
- async function pairCommand(args = [], flags = {}) {
443
- console.log('\nšŸ‘„ Pair Programming Session');
444
- console.log('━'.repeat(50));
445
- // Handle help flag
446
- if (flags.help || args.includes('--help')) {
447
- showHelp();
448
- return;
433
+
434
+ if (this.testResults.length > 0) {
435
+ console.log('\nTest Results:');
436
+ this.testResults.slice(-5).forEach((result, i) => {
437
+ console.log(
438
+ ` ${i + 1}. ${result.passed ? 'āœ…' : 'āŒ'} ${new Date(result.timestamp).toLocaleTimeString()}`,
439
+ );
440
+ });
441
+
442
+ // Show success rate
443
+ const passed = this.testResults.filter((r) => r.passed).length;
444
+ const rate = ((passed / this.testResults.length) * 100).toFixed(0);
445
+ console.log(`\n Success Rate: ${rate}%`);
446
+ } else {
447
+ console.log('\n No test history yet');
448
+ console.log(' Run /test to execute test suite');
449
449
  }
450
- // Handle background execution
451
- if (flags.background || flags.bg) {
452
- return startBackgroundSession(args, flags);
450
+ }
451
+
452
+ async commitWithVerification() {
453
+ console.log('\nšŸ” Pre-commit verification...');
454
+
455
+ const score = await this.runVerification();
456
+
457
+ if (score === null) {
458
+ console.log('ā³ Please wait for cooldown or use /verify manually');
459
+ return;
453
460
  }
454
- // Handle start flag
455
- if (flags.start) {
456
- const session = new PairProgrammingSession({
457
- mode: flags.mode || 'switch',
458
- agent: flags.agent || 'auto',
459
- verify: flags.verify || false,
460
- test: flags.test || false,
461
- autoVerify: flags.auto || false,
462
- threshold: parseFloat(flags.threshold) || 0.95
463
- });
464
- return await session.start();
461
+
462
+ if (score >= this.threshold) {
463
+ console.log('āœ… Verification passed! Ready to commit.');
464
+ console.log('\nšŸ’” Next steps:');
465
+ console.log(' 1. Review changes: git diff');
466
+ console.log(' 2. Stage files: git add .');
467
+ console.log(' 3. Commit: git commit -m "your message"');
468
+ } else {
469
+ console.log('āŒ Verification failed!');
470
+ console.log('\nšŸ’” Fix issues before committing:');
471
+ console.log(' • Run npm run typecheck to see TypeScript errors');
472
+ console.log(' • Run npm run lint to check code style');
473
+ console.log(' • Run npm run build to verify compilation');
465
474
  }
466
- // Handle status flag
467
- if (flags.status) {
468
- return showSessionStatus();
475
+ }
476
+
477
+ async end() {
478
+ console.log('\nšŸ›‘ Ending pair programming session...');
479
+
480
+ // Clear timers
481
+ if (this.roleTimer) clearTimeout(this.roleTimer);
482
+ if (this.rl) this.rl.close();
483
+
484
+ // Update session
485
+ this.status = 'completed';
486
+ await this.saveSession();
487
+
488
+ // Show summary
489
+ const duration = Math.floor((Date.now() - this.startTime) / 1000 / 60);
490
+ console.log('\n✨ Session Complete!');
491
+ console.log('━'.repeat(40));
492
+ console.log(`Duration: ${duration} minutes`);
493
+
494
+ if (this.verificationScores.length > 0) {
495
+ const avg =
496
+ this.verificationScores.reduce((sum, item) => sum + item.score, 0) /
497
+ this.verificationScores.length;
498
+ console.log(`Average Verification: ${avg.toFixed(2)}`);
499
+ console.log(`Total Checks: ${this.verificationScores.length}`);
469
500
  }
470
- // Handle end flag
471
- if (flags.end) {
472
- return endSession(flags.sessionId || 'current');
501
+
502
+ if (this.testResults.length > 0) {
503
+ const passed = this.testResults.filter((r) => r.passed).length;
504
+ console.log(`Test Success Rate: ${((passed / this.testResults.length) * 100).toFixed(0)}%`);
505
+ console.log(`Total Test Runs: ${this.testResults.length}`);
473
506
  }
474
- // Default: show help
507
+
508
+ console.log('\nšŸ‘‹ Thanks for pair programming!\n');
509
+ }
510
+
511
+ async saveSession() {
512
+ const sessionPath = '.claude-flow/sessions/pair';
513
+ await fs.mkdir(sessionPath, { recursive: true });
514
+
515
+ const sessionData = {
516
+ id: this.sessionId,
517
+ mode: this.mode,
518
+ agent: this.agent,
519
+ verify: this.verify,
520
+ autoVerify: this.autoVerify,
521
+ test: this.test,
522
+ threshold: this.threshold,
523
+ startTime: this.startTime.toISOString(),
524
+ status: this.status,
525
+ currentRole: this.currentRole,
526
+ verificationScores: this.verificationScores,
527
+ testResults: this.testResults,
528
+ };
529
+
530
+ await fs.writeFile(
531
+ path.join(sessionPath, `${this.sessionId}.json`),
532
+ JSON.stringify(sessionData, null, 2),
533
+ );
534
+ }
535
+ }
536
+
537
+ async function pairCommand(args = [], flags = {}) {
538
+ console.log('\nšŸ‘„ Pair Programming Session');
539
+ console.log('━'.repeat(50));
540
+
541
+ // Handle help flag
542
+ if (flags.help || args.includes('--help')) {
475
543
  showHelp();
544
+ return;
545
+ }
546
+
547
+ // Handle background execution
548
+ if (flags.background || flags.bg) {
549
+ return startBackgroundSession(args, flags);
550
+ }
551
+
552
+ // Handle start flag
553
+ if (flags.start) {
554
+ const session = new PairProgrammingSession({
555
+ mode: flags.mode || 'switch',
556
+ agent: flags.agent || 'auto',
557
+ verify: flags.verify || false,
558
+ test: flags.test || false,
559
+ autoVerify: flags.auto || false, // New flag for automatic verification
560
+ threshold: parseFloat(flags.threshold) || 0.95,
561
+ });
562
+
563
+ return await session.start();
564
+ }
565
+
566
+ // Handle status flag
567
+ if (flags.status) {
568
+ return showSessionStatus();
569
+ }
570
+
571
+ // Handle end flag
572
+ if (flags.end) {
573
+ return endSession(flags.sessionId || 'current');
574
+ }
575
+
576
+ // Default: show help
577
+ showHelp();
476
578
  }
579
+
477
580
  function showHelp() {
478
- console.log(`
581
+ console.log(`
479
582
  šŸ“š USAGE:
480
583
  claude-flow-novice pair [options]
481
584
 
@@ -534,90 +637,115 @@ function showHelp() {
534
637
  .claude/commands/pair/README.md
535
638
  `);
536
639
  }
640
+
537
641
  async function startBackgroundSession(args, flags) {
538
- console.log('\nšŸ”„ Starting pair session in background...');
539
- const child = spawn(process.argv[0], [
540
- process.argv[1],
541
- 'pair',
542
- '--start',
543
- ...args.filter((arg)=>arg !== '--background' && arg !== '--bg')
544
- ], {
545
- detached: true,
546
- stdio: 'ignore'
547
- });
548
- child.unref();
549
- const pid = child.pid;
550
- console.log(`āœ… Background session started (PID: ${pid})`);
551
- console.log('\nšŸ“Š Monitor with: claude-flow-novice pair --status');
552
- console.log('šŸ›‘ Stop with: claude-flow-novice pair --end\n');
642
+ console.log('\nšŸ”„ Starting pair session in background...');
643
+
644
+ const child = spawn(
645
+ process.argv[0],
646
+ [
647
+ process.argv[1],
648
+ 'pair',
649
+ '--start',
650
+ ...args.filter((arg) => arg !== '--background' && arg !== '--bg'),
651
+ ],
652
+ {
653
+ detached: true,
654
+ stdio: 'ignore',
655
+ },
656
+ );
657
+
658
+ child.unref();
659
+
660
+ const pid = child.pid;
661
+ console.log(`āœ… Background session started (PID: ${pid})`);
662
+ console.log('\nšŸ“Š Monitor with: claude-flow-novice pair --status');
663
+ console.log('šŸ›‘ Stop with: claude-flow-novice pair --end\n');
553
664
  }
665
+
554
666
  async function showSessionStatus() {
555
- try {
556
- const sessionPath = '.claude-flow/sessions/pair';
557
- const files = await fs.readdir(sessionPath);
558
- const sessions = [];
559
- for (const file of files){
560
- if (file.endsWith('.json')) {
561
- const data = await fs.readFile(path.join(sessionPath, file), 'utf8');
562
- sessions.push(JSON.parse(data));
563
- }
564
- }
565
- if (sessions.length === 0) {
566
- console.log('\nāŒ No active pair programming sessions\n');
567
- return;
568
- }
569
- console.log('\nšŸ“Š Pair Programming Sessions:');
570
- console.log('━'.repeat(50));
571
- for (const session of sessions.filter((s)=>s.status === 'active')){
572
- const duration = Math.floor((Date.now() - new Date(session.startTime).getTime()) / 1000 / 60);
573
- console.log(`\nšŸ”¹ Session: ${session.id}`);
574
- console.log(` Mode: ${session.mode}`);
575
- console.log(` Duration: ${duration} minutes`);
576
- console.log(` Status: ${session.status}`);
577
- console.log(` Verification: ${session.verify ? 'āœ…' : 'āŒ'}`);
578
- console.log(` Auto-Verify: ${session.autoVerify ? 'āœ…' : 'āŒ'}`);
579
- console.log(` Testing: ${session.test ? 'āœ…' : 'āŒ'}`);
580
- if (session.verificationScores && session.verificationScores.length > 0) {
581
- const scores = session.verificationScores.map((s)=>s.score || s);
582
- const avg = scores.reduce((a, b)=>a + b, 0) / scores.length;
583
- console.log(` Avg Verification: ${avg.toFixed(2)}`);
584
- console.log(` Total Checks: ${scores.length}`);
585
- }
586
- }
587
- console.log('━'.repeat(50));
588
- } catch (error) {
589
- console.log('\nāŒ No active pair programming sessions\n');
667
+ try {
668
+ const sessionPath = '.claude-flow/sessions/pair';
669
+ const files = await fs.readdir(sessionPath);
670
+ const sessions = [];
671
+
672
+ for (const file of files) {
673
+ if (file.endsWith('.json')) {
674
+ const data = await fs.readFile(path.join(sessionPath, file), 'utf8');
675
+ sessions.push(JSON.parse(data));
676
+ }
590
677
  }
678
+
679
+ if (sessions.length === 0) {
680
+ console.log('\nāŒ No active pair programming sessions\n');
681
+ return;
682
+ }
683
+
684
+ console.log('\nšŸ“Š Pair Programming Sessions:');
685
+ console.log('━'.repeat(50));
686
+
687
+ for (const session of sessions.filter((s) => s.status === 'active')) {
688
+ const duration = Math.floor((Date.now() - new Date(session.startTime).getTime()) / 1000 / 60);
689
+ console.log(`\nšŸ”¹ Session: ${session.id}`);
690
+ console.log(` Mode: ${session.mode}`);
691
+ console.log(` Duration: ${duration} minutes`);
692
+ console.log(` Status: ${session.status}`);
693
+ console.log(` Verification: ${session.verify ? 'āœ…' : 'āŒ'}`);
694
+ console.log(` Auto-Verify: ${session.autoVerify ? 'āœ…' : 'āŒ'}`);
695
+ console.log(` Testing: ${session.test ? 'āœ…' : 'āŒ'}`);
696
+
697
+ if (session.verificationScores && session.verificationScores.length > 0) {
698
+ const scores = session.verificationScores.map((s) => s.score || s);
699
+ const avg = scores.reduce((a, b) => a + b, 0) / scores.length;
700
+ console.log(` Avg Verification: ${avg.toFixed(2)}`);
701
+ console.log(` Total Checks: ${scores.length}`);
702
+ }
703
+ }
704
+
705
+ console.log('━'.repeat(50));
706
+ } catch (error) {
707
+ console.log('\nāŒ No active pair programming sessions\n');
708
+ }
591
709
  }
710
+
592
711
  async function endSession(sessionId) {
593
- console.log(`\nšŸ›‘ Ending pair programming session: ${sessionId}`);
594
- try {
595
- const sessionPath = '.claude-flow/sessions/pair';
596
- if (sessionId === 'current') {
597
- // End most recent active session
598
- const files = await fs.readdir(sessionPath);
599
- for (const file of files.filter((f)=>f.endsWith('.json'))){
600
- const data = await fs.readFile(path.join(sessionPath, file), 'utf8');
601
- const session = JSON.parse(data);
602
- if (session.status === 'active') {
603
- sessionId = session.id;
604
- break;
605
- }
606
- }
607
- }
608
- const sessionFile = path.join(sessionPath, `${sessionId}.json`);
609
- const data = await fs.readFile(sessionFile, 'utf8');
712
+ console.log(`\nšŸ›‘ Ending pair programming session: ${sessionId}`);
713
+
714
+ try {
715
+ const sessionPath = '.claude-flow/sessions/pair';
716
+
717
+ if (sessionId === 'current') {
718
+ // End most recent active session
719
+ const files = await fs.readdir(sessionPath);
720
+ for (const file of files.filter((f) => f.endsWith('.json'))) {
721
+ const data = await fs.readFile(path.join(sessionPath, file), 'utf8');
610
722
  const session = JSON.parse(data);
611
- session.status = 'completed';
612
- session.endTime = new Date().toISOString();
613
- await fs.writeFile(sessionFile, JSON.stringify(session, null, 2));
614
- console.log('āœ… Session ended successfully');
615
- console.log(`\nšŸ“Š Session Summary:`);
616
- console.log(` Duration: ${Math.floor((new Date(session.endTime) - new Date(session.startTime)) / 1000 / 60)} minutes`);
617
- console.log(` Mode: ${session.mode}`);
618
- console.log(` Agent: ${session.agent}\n`);
619
- } catch (error) {
620
- console.log('āŒ Failed to end session:', error.message);
723
+ if (session.status === 'active') {
724
+ sessionId = session.id;
725
+ break;
726
+ }
727
+ }
621
728
  }
729
+
730
+ const sessionFile = path.join(sessionPath, `${sessionId}.json`);
731
+ const data = await fs.readFile(sessionFile, 'utf8');
732
+ const session = JSON.parse(data);
733
+
734
+ session.status = 'completed';
735
+ session.endTime = new Date().toISOString();
736
+
737
+ await fs.writeFile(sessionFile, JSON.stringify(session, null, 2));
738
+
739
+ console.log('āœ… Session ended successfully');
740
+ console.log(`\nšŸ“Š Session Summary:`);
741
+ console.log(
742
+ ` Duration: ${Math.floor((new Date(session.endTime) - new Date(session.startTime)) / 1000 / 60)} minutes`,
743
+ );
744
+ console.log(` Mode: ${session.mode}`);
745
+ console.log(` Agent: ${session.agent}\n`);
746
+ } catch (error) {
747
+ console.log('āŒ Failed to end session:', error.message);
748
+ }
622
749
  }
750
+
623
751
  export default pairCommand;