@sudocode-ai/local-server 0.1.6 → 0.1.8

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 (361) hide show
  1. package/README.md +6 -0
  2. package/dist/errors/agent-errors.d.ts +43 -0
  3. package/dist/errors/agent-errors.d.ts.map +1 -0
  4. package/dist/errors/agent-errors.js +69 -0
  5. package/dist/errors/agent-errors.js.map +1 -0
  6. package/dist/execution/adapters/claude-adapter.d.ts +63 -0
  7. package/dist/execution/adapters/claude-adapter.d.ts.map +1 -0
  8. package/dist/execution/adapters/claude-adapter.js +82 -0
  9. package/dist/execution/adapters/claude-adapter.js.map +1 -0
  10. package/dist/execution/adapters/codex-adapter.d.ts +67 -0
  11. package/dist/execution/adapters/codex-adapter.d.ts.map +1 -0
  12. package/dist/execution/adapters/codex-adapter.js +183 -0
  13. package/dist/execution/adapters/codex-adapter.js.map +1 -0
  14. package/dist/execution/adapters/codex-config-builder.d.ts +30 -0
  15. package/dist/execution/adapters/codex-config-builder.d.ts.map +1 -0
  16. package/dist/execution/adapters/codex-config-builder.js +110 -0
  17. package/dist/execution/adapters/codex-config-builder.js.map +1 -0
  18. package/dist/execution/adapters/copilot-adapter.d.ts +94 -0
  19. package/dist/execution/adapters/copilot-adapter.d.ts.map +1 -0
  20. package/dist/execution/adapters/copilot-adapter.js +163 -0
  21. package/dist/execution/adapters/copilot-adapter.js.map +1 -0
  22. package/dist/execution/adapters/copilot-config-builder.d.ts +48 -0
  23. package/dist/execution/adapters/copilot-config-builder.d.ts.map +1 -0
  24. package/dist/execution/adapters/copilot-config-builder.js +125 -0
  25. package/dist/execution/adapters/copilot-config-builder.js.map +1 -0
  26. package/dist/execution/adapters/cursor-adapter.d.ts +66 -0
  27. package/dist/execution/adapters/cursor-adapter.d.ts.map +1 -0
  28. package/dist/execution/adapters/cursor-adapter.js +121 -0
  29. package/dist/execution/adapters/cursor-adapter.js.map +1 -0
  30. package/dist/execution/adapters/cursor-config-builder.d.ts +29 -0
  31. package/dist/execution/adapters/cursor-config-builder.d.ts.map +1 -0
  32. package/dist/execution/adapters/cursor-config-builder.js +49 -0
  33. package/dist/execution/adapters/cursor-config-builder.js.map +1 -0
  34. package/dist/execution/adapters/shared/config-presets.d.ts +102 -0
  35. package/dist/execution/adapters/shared/config-presets.d.ts.map +1 -0
  36. package/dist/execution/adapters/shared/config-presets.js +205 -0
  37. package/dist/execution/adapters/shared/config-presets.js.map +1 -0
  38. package/dist/execution/adapters/shared/config-utils.d.ts +95 -0
  39. package/dist/execution/adapters/shared/config-utils.d.ts.map +1 -0
  40. package/dist/execution/adapters/shared/config-utils.js +163 -0
  41. package/dist/execution/adapters/shared/config-utils.js.map +1 -0
  42. package/dist/execution/adapters/shared/index.d.ts +8 -0
  43. package/dist/execution/adapters/shared/index.d.ts.map +1 -0
  44. package/dist/execution/adapters/shared/index.js +8 -0
  45. package/dist/execution/adapters/shared/index.js.map +1 -0
  46. package/dist/execution/executors/agent-executor-wrapper.d.ts +153 -0
  47. package/dist/execution/executors/agent-executor-wrapper.d.ts.map +1 -0
  48. package/dist/execution/executors/agent-executor-wrapper.js +652 -0
  49. package/dist/execution/executors/agent-executor-wrapper.js.map +1 -0
  50. package/dist/execution/executors/executor-factory.d.ts +95 -0
  51. package/dist/execution/executors/executor-factory.d.ts.map +1 -0
  52. package/dist/execution/executors/executor-factory.js +120 -0
  53. package/dist/execution/executors/executor-factory.js.map +1 -0
  54. package/dist/execution/output/ag-ui-adapter.d.ts +0 -2
  55. package/dist/execution/output/ag-ui-adapter.d.ts.map +1 -1
  56. package/dist/execution/output/ag-ui-adapter.js +0 -2
  57. package/dist/execution/output/ag-ui-adapter.js.map +1 -1
  58. package/dist/execution/output/index.d.ts +0 -3
  59. package/dist/execution/output/index.d.ts.map +1 -1
  60. package/dist/execution/output/index.js +0 -2
  61. package/dist/execution/output/index.js.map +1 -1
  62. package/dist/execution/output/normalized-to-ag-ui-adapter.d.ts +108 -0
  63. package/dist/execution/output/normalized-to-ag-ui-adapter.d.ts.map +1 -0
  64. package/dist/execution/output/normalized-to-ag-ui-adapter.js +321 -0
  65. package/dist/execution/output/normalized-to-ag-ui-adapter.js.map +1 -0
  66. package/dist/execution/process/builders/claude.d.ts +25 -58
  67. package/dist/execution/process/builders/claude.d.ts.map +1 -1
  68. package/dist/execution/process/builders/claude.js +153 -19
  69. package/dist/execution/process/builders/claude.js.map +1 -1
  70. package/dist/execution/transport/ipc-transport-manager.d.ts +74 -0
  71. package/dist/execution/transport/ipc-transport-manager.d.ts.map +1 -0
  72. package/dist/execution/transport/ipc-transport-manager.js +104 -0
  73. package/dist/execution/transport/ipc-transport-manager.js.map +1 -0
  74. package/dist/execution/transport/transport-manager.d.ts.map +1 -1
  75. package/dist/execution/transport/transport-manager.js +3 -0
  76. package/dist/execution/transport/transport-manager.js.map +1 -1
  77. package/dist/execution/worktree/conflict-detector.d.ts +85 -0
  78. package/dist/execution/worktree/conflict-detector.d.ts.map +1 -0
  79. package/dist/execution/worktree/conflict-detector.js +129 -0
  80. package/dist/execution/worktree/conflict-detector.js.map +1 -0
  81. package/dist/execution/worktree/git-cli.d.ts +9 -0
  82. package/dist/execution/worktree/git-cli.d.ts.map +1 -1
  83. package/dist/execution/worktree/git-cli.js +10 -0
  84. package/dist/execution/worktree/git-cli.js.map +1 -1
  85. package/dist/execution/worktree/git-sync-cli.d.ts +187 -0
  86. package/dist/execution/worktree/git-sync-cli.d.ts.map +1 -0
  87. package/dist/execution/worktree/git-sync-cli.js +350 -0
  88. package/dist/execution/worktree/git-sync-cli.js.map +1 -0
  89. package/dist/execution/worktree/manager.d.ts +18 -0
  90. package/dist/execution/worktree/manager.d.ts.map +1 -1
  91. package/dist/execution/worktree/manager.js +9 -3
  92. package/dist/execution/worktree/manager.js.map +1 -1
  93. package/dist/index.d.ts +1 -3
  94. package/dist/index.d.ts.map +1 -1
  95. package/dist/index.js +175 -195
  96. package/dist/index.js.map +1 -1
  97. package/dist/middleware/project-context.d.ts +37 -0
  98. package/dist/middleware/project-context.d.ts.map +1 -0
  99. package/dist/middleware/project-context.js +91 -0
  100. package/dist/middleware/project-context.js.map +1 -0
  101. package/dist/public/assets/index-Bb_W5bUr.css +1 -0
  102. package/dist/public/assets/index-CFKL113G.js +710 -0
  103. package/dist/public/assets/index-CFKL113G.js.map +1 -0
  104. package/dist/public/assets/{react-vendor-ByUx1V_q.js → react-vendor-DiL5hC7l.js} +2 -2
  105. package/dist/public/assets/{react-vendor-ByUx1V_q.js.map → react-vendor-DiL5hC7l.js.map} +1 -1
  106. package/dist/public/assets/ui-vendor-B4WMPEfa.js +54 -0
  107. package/dist/public/assets/ui-vendor-B4WMPEfa.js.map +1 -0
  108. package/dist/public/index.html +4 -4
  109. package/dist/routes/agents.d.ts +3 -0
  110. package/dist/routes/agents.d.ts.map +1 -0
  111. package/dist/routes/agents.js +62 -0
  112. package/dist/routes/agents.js.map +1 -0
  113. package/dist/routes/config.d.ts +3 -0
  114. package/dist/routes/config.d.ts.map +1 -0
  115. package/dist/routes/config.js +25 -0
  116. package/dist/routes/config.js.map +1 -0
  117. package/dist/routes/editors.d.ts +15 -0
  118. package/dist/routes/editors.d.ts.map +1 -0
  119. package/dist/routes/editors.js +98 -0
  120. package/dist/routes/editors.js.map +1 -0
  121. package/dist/routes/executions-stream.d.ts +8 -5
  122. package/dist/routes/executions-stream.d.ts.map +1 -1
  123. package/dist/routes/executions-stream.js +10 -6
  124. package/dist/routes/executions-stream.js.map +1 -1
  125. package/dist/routes/executions.d.ts +6 -10
  126. package/dist/routes/executions.d.ts.map +1 -1
  127. package/dist/routes/executions.js +506 -54
  128. package/dist/routes/executions.js.map +1 -1
  129. package/dist/routes/feedback.d.ts +3 -2
  130. package/dist/routes/feedback.d.ts.map +1 -1
  131. package/dist/routes/feedback.js +32 -22
  132. package/dist/routes/feedback.js.map +1 -1
  133. package/dist/routes/files.d.ts +18 -0
  134. package/dist/routes/files.d.ts.map +1 -0
  135. package/dist/routes/files.js +89 -0
  136. package/dist/routes/files.js.map +1 -0
  137. package/dist/routes/issues.d.ts +3 -2
  138. package/dist/routes/issues.d.ts.map +1 -1
  139. package/dist/routes/issues.js +19 -18
  140. package/dist/routes/issues.js.map +1 -1
  141. package/dist/routes/projects.d.ts +11 -0
  142. package/dist/routes/projects.d.ts.map +1 -0
  143. package/dist/routes/projects.js +447 -0
  144. package/dist/routes/projects.js.map +1 -0
  145. package/dist/routes/relationships.d.ts +3 -2
  146. package/dist/routes/relationships.d.ts.map +1 -1
  147. package/dist/routes/relationships.js +12 -10
  148. package/dist/routes/relationships.js.map +1 -1
  149. package/dist/routes/repo-info.d.ts +3 -0
  150. package/dist/routes/repo-info.d.ts.map +1 -0
  151. package/dist/routes/repo-info.js +126 -0
  152. package/dist/routes/repo-info.js.map +1 -0
  153. package/dist/routes/specs.d.ts +3 -2
  154. package/dist/routes/specs.d.ts.map +1 -1
  155. package/dist/routes/specs.js +19 -18
  156. package/dist/routes/specs.js.map +1 -1
  157. package/dist/services/agent-registry.d.ts +140 -0
  158. package/dist/services/agent-registry.d.ts.map +1 -0
  159. package/dist/services/agent-registry.js +272 -0
  160. package/dist/services/agent-registry.js.map +1 -0
  161. package/dist/services/db.d.ts.map +1 -1
  162. package/dist/services/db.js +19 -14
  163. package/dist/services/db.js.map +1 -1
  164. package/dist/services/editor-service.d.ts +57 -0
  165. package/dist/services/editor-service.d.ts.map +1 -0
  166. package/dist/services/editor-service.js +204 -0
  167. package/dist/services/editor-service.js.map +1 -0
  168. package/dist/services/execution-changes-service.d.ts +92 -0
  169. package/dist/services/execution-changes-service.d.ts.map +1 -0
  170. package/dist/services/execution-changes-service.js +546 -0
  171. package/dist/services/execution-changes-service.js.map +1 -0
  172. package/dist/services/execution-lifecycle.d.ts +1 -0
  173. package/dist/services/execution-lifecycle.d.ts.map +1 -1
  174. package/dist/services/execution-lifecycle.js +37 -7
  175. package/dist/services/execution-lifecycle.js.map +1 -1
  176. package/dist/services/execution-logs-store.d.ts +75 -0
  177. package/dist/services/execution-logs-store.d.ts.map +1 -1
  178. package/dist/services/execution-logs-store.js +142 -2
  179. package/dist/services/execution-logs-store.js.map +1 -1
  180. package/dist/services/execution-service.d.ts +50 -58
  181. package/dist/services/execution-service.d.ts.map +1 -1
  182. package/dist/services/execution-service.js +433 -448
  183. package/dist/services/execution-service.js.map +1 -1
  184. package/dist/services/execution-worker-pool.d.ts +116 -0
  185. package/dist/services/execution-worker-pool.d.ts.map +1 -0
  186. package/dist/services/execution-worker-pool.js +326 -0
  187. package/dist/services/execution-worker-pool.js.map +1 -0
  188. package/dist/services/executions.d.ts +3 -0
  189. package/dist/services/executions.d.ts.map +1 -1
  190. package/dist/services/executions.js +11 -2
  191. package/dist/services/executions.js.map +1 -1
  192. package/dist/services/export.d.ts +8 -2
  193. package/dist/services/export.d.ts.map +1 -1
  194. package/dist/services/export.js +29 -23
  195. package/dist/services/export.js.map +1 -1
  196. package/dist/services/feedback.d.ts +16 -0
  197. package/dist/services/feedback.d.ts.map +1 -1
  198. package/dist/services/feedback.js +25 -1
  199. package/dist/services/feedback.js.map +1 -1
  200. package/dist/services/file-search/git-ls-files-strategy.d.ts +72 -0
  201. package/dist/services/file-search/git-ls-files-strategy.d.ts.map +1 -0
  202. package/dist/services/file-search/git-ls-files-strategy.js +176 -0
  203. package/dist/services/file-search/git-ls-files-strategy.js.map +1 -0
  204. package/dist/services/file-search/index.d.ts +9 -0
  205. package/dist/services/file-search/index.d.ts.map +1 -0
  206. package/dist/services/file-search/index.js +10 -0
  207. package/dist/services/file-search/index.js.map +1 -0
  208. package/dist/services/file-search/registry.d.ts +97 -0
  209. package/dist/services/file-search/registry.d.ts.map +1 -0
  210. package/dist/services/file-search/registry.js +140 -0
  211. package/dist/services/file-search/registry.js.map +1 -0
  212. package/dist/services/file-search/strategy.d.ts +58 -0
  213. package/dist/services/file-search/strategy.d.ts.map +1 -0
  214. package/dist/services/file-search/strategy.js +8 -0
  215. package/dist/services/file-search/strategy.js.map +1 -0
  216. package/dist/services/project-context.d.ts +69 -0
  217. package/dist/services/project-context.d.ts.map +1 -0
  218. package/dist/services/project-context.js +113 -0
  219. package/dist/services/project-context.js.map +1 -0
  220. package/dist/services/project-manager.d.ts +95 -0
  221. package/dist/services/project-manager.d.ts.map +1 -0
  222. package/dist/services/project-manager.js +388 -0
  223. package/dist/services/project-manager.js.map +1 -0
  224. package/dist/services/project-registry.d.ts +98 -0
  225. package/dist/services/project-registry.d.ts.map +1 -0
  226. package/dist/services/project-registry.js +289 -0
  227. package/dist/services/project-registry.js.map +1 -0
  228. package/dist/services/prompt-resolver.d.ts +97 -0
  229. package/dist/services/prompt-resolver.d.ts.map +1 -0
  230. package/dist/services/prompt-resolver.js +377 -0
  231. package/dist/services/prompt-resolver.js.map +1 -0
  232. package/dist/services/repo-info.d.ts +29 -0
  233. package/dist/services/repo-info.d.ts.map +1 -0
  234. package/dist/services/repo-info.js +99 -0
  235. package/dist/services/repo-info.js.map +1 -0
  236. package/dist/services/watcher.d.ts +3 -4
  237. package/dist/services/watcher.d.ts.map +1 -1
  238. package/dist/services/watcher.js +18 -35
  239. package/dist/services/watcher.js.map +1 -1
  240. package/dist/services/websocket.d.ts +51 -15
  241. package/dist/services/websocket.d.ts.map +1 -1
  242. package/dist/services/websocket.js +169 -40
  243. package/dist/services/websocket.js.map +1 -1
  244. package/dist/services/worktree-sync-service.d.ts +228 -0
  245. package/dist/services/worktree-sync-service.d.ts.map +1 -0
  246. package/dist/services/worktree-sync-service.js +563 -0
  247. package/dist/services/worktree-sync-service.js.map +1 -0
  248. package/dist/types/editor.d.ts +49 -0
  249. package/dist/types/editor.d.ts.map +1 -0
  250. package/dist/types/editor.js +50 -0
  251. package/dist/types/editor.js.map +1 -0
  252. package/dist/types/project.d.ts +58 -0
  253. package/dist/types/project.d.ts.map +1 -0
  254. package/dist/types/project.js +10 -0
  255. package/dist/types/project.js.map +1 -0
  256. package/dist/utils/executable-check.d.ts +36 -0
  257. package/dist/utils/executable-check.d.ts.map +1 -0
  258. package/dist/utils/executable-check.js +79 -0
  259. package/dist/utils/executable-check.js.map +1 -0
  260. package/dist/workers/execution-worker.d.ts +18 -0
  261. package/dist/workers/execution-worker.d.ts.map +1 -0
  262. package/dist/workers/execution-worker.js +340 -0
  263. package/dist/workers/execution-worker.js.map +1 -0
  264. package/dist/workers/worker-ipc.d.ts +84 -0
  265. package/dist/workers/worker-ipc.d.ts.map +1 -0
  266. package/dist/workers/worker-ipc.js +29 -0
  267. package/dist/workers/worker-ipc.js.map +1 -0
  268. package/package.json +6 -4
  269. package/dist/execution/engine/engine.d.ts +0 -103
  270. package/dist/execution/engine/engine.d.ts.map +0 -1
  271. package/dist/execution/engine/engine.js +0 -10
  272. package/dist/execution/engine/engine.js.map +0 -1
  273. package/dist/execution/engine/simple-engine.d.ts +0 -190
  274. package/dist/execution/engine/simple-engine.d.ts.map +0 -1
  275. package/dist/execution/engine/simple-engine.js +0 -611
  276. package/dist/execution/engine/simple-engine.js.map +0 -1
  277. package/dist/execution/engine/types.d.ts +0 -116
  278. package/dist/execution/engine/types.d.ts.map +0 -1
  279. package/dist/execution/engine/types.js +0 -10
  280. package/dist/execution/engine/types.js.map +0 -1
  281. package/dist/execution/output/ag-ui-integration.d.ts +0 -96
  282. package/dist/execution/output/ag-ui-integration.d.ts.map +0 -1
  283. package/dist/execution/output/ag-ui-integration.js +0 -96
  284. package/dist/execution/output/ag-ui-integration.js.map +0 -1
  285. package/dist/execution/output/claude-code-output-processor.d.ts +0 -321
  286. package/dist/execution/output/claude-code-output-processor.d.ts.map +0 -1
  287. package/dist/execution/output/claude-code-output-processor.js +0 -769
  288. package/dist/execution/output/claude-code-output-processor.js.map +0 -1
  289. package/dist/execution/process/index.d.ts +0 -15
  290. package/dist/execution/process/index.d.ts.map +0 -1
  291. package/dist/execution/process/index.js +0 -15
  292. package/dist/execution/process/index.js.map +0 -1
  293. package/dist/execution/process/manager.d.ts +0 -133
  294. package/dist/execution/process/manager.d.ts.map +0 -1
  295. package/dist/execution/process/manager.js +0 -10
  296. package/dist/execution/process/manager.js.map +0 -1
  297. package/dist/execution/process/simple-manager.d.ts +0 -102
  298. package/dist/execution/process/simple-manager.d.ts.map +0 -1
  299. package/dist/execution/process/simple-manager.js +0 -336
  300. package/dist/execution/process/simple-manager.js.map +0 -1
  301. package/dist/execution/process/types.d.ts +0 -105
  302. package/dist/execution/process/types.d.ts.map +0 -1
  303. package/dist/execution/process/types.js +0 -10
  304. package/dist/execution/process/types.js.map +0 -1
  305. package/dist/execution/process/utils.d.ts +0 -53
  306. package/dist/execution/process/utils.d.ts.map +0 -1
  307. package/dist/execution/process/utils.js +0 -97
  308. package/dist/execution/process/utils.js.map +0 -1
  309. package/dist/execution/resilience/circuit-breaker.d.ts +0 -170
  310. package/dist/execution/resilience/circuit-breaker.d.ts.map +0 -1
  311. package/dist/execution/resilience/circuit-breaker.js +0 -291
  312. package/dist/execution/resilience/circuit-breaker.js.map +0 -1
  313. package/dist/execution/resilience/executor.d.ts +0 -109
  314. package/dist/execution/resilience/executor.d.ts.map +0 -1
  315. package/dist/execution/resilience/executor.js +0 -10
  316. package/dist/execution/resilience/executor.js.map +0 -1
  317. package/dist/execution/resilience/index.d.ts +0 -14
  318. package/dist/execution/resilience/index.d.ts.map +0 -1
  319. package/dist/execution/resilience/index.js +0 -15
  320. package/dist/execution/resilience/index.js.map +0 -1
  321. package/dist/execution/resilience/resilient-executor.d.ts +0 -86
  322. package/dist/execution/resilience/resilient-executor.d.ts.map +0 -1
  323. package/dist/execution/resilience/resilient-executor.js +0 -261
  324. package/dist/execution/resilience/resilient-executor.js.map +0 -1
  325. package/dist/execution/resilience/retry.d.ts +0 -161
  326. package/dist/execution/resilience/retry.d.ts.map +0 -1
  327. package/dist/execution/resilience/retry.js +0 -234
  328. package/dist/execution/resilience/retry.js.map +0 -1
  329. package/dist/execution/resilience/types.d.ts +0 -226
  330. package/dist/execution/resilience/types.d.ts.map +0 -1
  331. package/dist/execution/resilience/types.js +0 -30
  332. package/dist/execution/resilience/types.js.map +0 -1
  333. package/dist/execution/workflow/index.d.ts +0 -13
  334. package/dist/execution/workflow/index.d.ts.map +0 -1
  335. package/dist/execution/workflow/index.js +0 -13
  336. package/dist/execution/workflow/index.js.map +0 -1
  337. package/dist/execution/workflow/linear-orchestrator.d.ts +0 -216
  338. package/dist/execution/workflow/linear-orchestrator.d.ts.map +0 -1
  339. package/dist/execution/workflow/linear-orchestrator.js +0 -683
  340. package/dist/execution/workflow/linear-orchestrator.js.map +0 -1
  341. package/dist/execution/workflow/memory-storage.d.ts +0 -54
  342. package/dist/execution/workflow/memory-storage.d.ts.map +0 -1
  343. package/dist/execution/workflow/memory-storage.js +0 -68
  344. package/dist/execution/workflow/memory-storage.js.map +0 -1
  345. package/dist/execution/workflow/orchestrator.d.ts +0 -158
  346. package/dist/execution/workflow/orchestrator.d.ts.map +0 -1
  347. package/dist/execution/workflow/orchestrator.js +0 -9
  348. package/dist/execution/workflow/orchestrator.js.map +0 -1
  349. package/dist/execution/workflow/types.d.ts +0 -172
  350. package/dist/execution/workflow/types.d.ts.map +0 -1
  351. package/dist/execution/workflow/types.js +0 -9
  352. package/dist/execution/workflow/types.js.map +0 -1
  353. package/dist/execution/workflow/utils.d.ts +0 -89
  354. package/dist/execution/workflow/utils.d.ts.map +0 -1
  355. package/dist/execution/workflow/utils.js +0 -152
  356. package/dist/execution/workflow/utils.js.map +0 -1
  357. package/dist/public/assets/index-BvlblDHK.js +0 -570
  358. package/dist/public/assets/index-BvlblDHK.js.map +0 -1
  359. package/dist/public/assets/index-BwuKdLgN.css +0 -1
  360. package/dist/public/assets/ui-vendor-CotR6bx9.js +0 -54
  361. package/dist/public/assets/ui-vendor-CotR6bx9.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/execution/worktree/manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/execution/worktree/manager.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,8 +1,6 @@
1
- import type Database from "better-sqlite3";
2
1
  import { TransportManager } from "./execution/transport/transport-manager.js";
3
2
  declare const app: import("express-serve-static-core").Express;
4
- declare let db: Database.Database;
5
3
  declare let transportManager: TransportManager;
6
4
  export default app;
7
- export { db, transportManager };
5
+ export { transportManager };
8
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAsB3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAkB9E,QAAA,MAAM,GAAG,6CAAY,CAAC;AAetB,QAAA,IAAI,EAAE,EAAG,QAAQ,CAAC,QAAQ,CAAC;AAE3B,QAAA,IAAI,gBAAgB,EAAG,gBAAgB,CAAC;AAibxC,eAAe,GAAG,CAAC;AACnB,OAAO,EAAE,EAAE,EAAE,gBAAgB,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAW9E,QAAA,MAAM,GAAG,6CAAY,CAAC;AAKtB,QAAA,IAAI,gBAAgB,EAAG,gBAAgB,CAAC;AA+bxC,eAAe,GAAG,CAAC;AACnB,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
package/dist/index.js CHANGED
@@ -1,6 +1,5 @@
1
1
  import express from "express";
2
2
  import cors from "cors";
3
- import dotenv from "dotenv";
4
3
  import * as path from "path";
5
4
  import * as http from "http";
6
5
  import { fileURLToPath } from "url";
@@ -8,178 +7,137 @@ import { readFileSync, existsSync } from "fs";
8
7
  // ES Module __dirname equivalent
9
8
  const __filename = fileURLToPath(import.meta.url);
10
9
  const __dirname = path.dirname(__filename);
11
- import { initDatabase, getDatabaseInfo } from "./services/db.js";
12
- import { ExecutionLifecycleService } from "./services/execution-lifecycle.js";
13
- import { ExecutionService } from "./services/execution-service.js";
14
- import { ExecutionLogsStore } from "./services/execution-logs-store.js";
15
- // import {
16
- // ExecutionLogsCleanup,
17
- // DEFAULT_CLEANUP_CONFIG,
18
- // type CleanupConfig,
19
- // } from "./services/execution-logs-cleanup.js";
20
- import { WorktreeManager } from "./execution/worktree/manager.js";
21
- import { getWorktreeConfig } from "./execution/worktree/config.js";
22
10
  import { createIssuesRouter } from "./routes/issues.js";
23
11
  import { createSpecsRouter } from "./routes/specs.js";
24
12
  import { createRelationshipsRouter } from "./routes/relationships.js";
25
13
  import { createFeedbackRouter } from "./routes/feedback.js";
26
14
  import { createExecutionsRouter } from "./routes/executions.js";
27
15
  import { createExecutionStreamRoutes } from "./routes/executions-stream.js";
16
+ import { createEditorsRouter } from "./routes/editors.js";
17
+ import { createProjectsRouter } from "./routes/projects.js";
18
+ import { createConfigRouter } from "./routes/config.js";
19
+ import { createFilesRouter } from "./routes/files.js";
20
+ import { createRepoInfoRouter } from "./routes/repo-info.js";
21
+ import { createAgentsRouter } from "./routes/agents.js";
28
22
  import { TransportManager } from "./execution/transport/transport-manager.js";
29
- import { getIssueById } from "./services/issues.js";
30
- import { getSpecById } from "./services/specs.js";
31
- import { startServerWatcher, } from "./services/watcher.js";
32
- import { initWebSocketServer, getWebSocketStats, shutdownWebSocketServer, broadcastIssueUpdate, broadcastSpecUpdate, } from "./services/websocket.js";
33
- // Load environment variables
34
- dotenv.config();
23
+ import { ProjectRegistry } from "./services/project-registry.js";
24
+ import { ProjectManager } from "./services/project-manager.js";
25
+ import { requireProject } from "./middleware/project-context.js";
26
+ import { initWebSocketServer, getWebSocketStats, shutdownWebSocketServer, getWebSocketServer, } from "./services/websocket.js";
35
27
  const app = express();
36
28
  const DEFAULT_PORT = 3000;
37
29
  const MAX_PORT_ATTEMPTS = 20;
38
- // Falls back to current directory for development/testing
39
- const SUDOCODE_DIR = process.env.SUDOCODE_DIR || path.join(process.cwd(), ".sudocode");
40
- const DB_PATH = path.join(SUDOCODE_DIR, "cache.db");
41
- // TODO: Include sudocode install package for serving static files.
42
- // Derive repo root from SUDOCODE_DIR (which is <repo>/.sudocode)
43
- // This ensures consistency across database and execution paths
44
- const REPO_ROOT = path.dirname(SUDOCODE_DIR);
45
- // Initialize database and transport manager
46
- let db;
47
- let watcher = null;
30
+ // Initialize transport manager
48
31
  let transportManager;
49
- let logsStore;
50
- // let logsCleanup: ExecutionLogsCleanup | null = null;
51
- let executionService = null;
32
+ // Multi-project infrastructure
33
+ let projectRegistry;
34
+ let projectManager;
35
+ // Start file watcher (enabled by default, disable with SUDOCODE_WATCH=false)
36
+ const WATCH_ENABLED = process.env.SUDOCODE_WATCH !== "false";
52
37
  // Async initialization function
53
38
  async function initialize() {
54
39
  try {
55
- console.log(`Initializing database at: ${DB_PATH}`);
56
- db = initDatabase({ path: DB_PATH });
57
- const info = getDatabaseInfo(db);
58
- console.log(`Database initialized with ${info.tables.length} tables`);
59
- if (!info.hasCliTables) {
60
- // TODO: Automatically import and sync.
61
- console.warn("Warning: CLI tables not found. Run 'sudocode sync' to initialize the database.");
40
+ // Initialize ProjectRegistry and ProjectManager for multi-project support
41
+ projectRegistry = new ProjectRegistry();
42
+ await projectRegistry.load();
43
+ console.log(`ProjectRegistry loaded from: ${projectRegistry.getConfigPath()}`);
44
+ projectManager = new ProjectManager(projectRegistry, {
45
+ watchEnabled: WATCH_ENABLED,
46
+ });
47
+ // Auto-open strategy:
48
+ // 1. If current directory has .sudocode, open it (highest priority)
49
+ // 2. Otherwise, open the most recently opened project (if available)
50
+ const currentDir = process.cwd();
51
+ const sudocodeDir = path.join(currentDir, ".sudocode");
52
+ const hasLocalProject = existsSync(sudocodeDir);
53
+ if (hasLocalProject) {
54
+ console.log(`Found .sudocode in current directory, opening: ${currentDir}`);
55
+ const openResult = await projectManager.openProject(currentDir);
56
+ if (!openResult.ok) {
57
+ const errorMsg = "message" in openResult.error
58
+ ? openResult.error.message
59
+ : `${openResult.error.type}`;
60
+ console.warn(`Failed to open local project: ${errorMsg}`);
61
+ console.log("Server will start with no projects open");
62
+ }
63
+ else {
64
+ const projectInfo = projectRegistry.getProject(openResult.value.id);
65
+ console.log(`Auto-opened local project: ${projectInfo?.name || path.basename(currentDir)}`);
66
+ }
62
67
  }
63
- // Initialize transport manager for SSE streaming
64
- transportManager = new TransportManager();
65
- console.log("Transport manager initialized");
66
- // Initialize execution logs store
67
- logsStore = new ExecutionLogsStore(db);
68
- console.log("Execution logs store initialized");
69
- // Initialize execution logs cleanup service
70
- // TODO: Enable auto-cleanup config via .sudocode/config.json
71
- // const cleanupConfig: CleanupConfig = {
72
- // enabled: process.env.CLEANUP_ENABLED !== "false",
73
- // intervalMs: parseInt(
74
- // process.env.CLEANUP_INTERVAL_MS ||
75
- // String(DEFAULT_CLEANUP_CONFIG.intervalMs),
76
- // 10
77
- // ),
78
- // retentionMs: parseInt(
79
- // process.env.CLEANUP_RETENTION_MS ||
80
- // String(DEFAULT_CLEANUP_CONFIG.retentionMs),
81
- // 10
82
- // ),
83
- // };
84
- // logsCleanup = new ExecutionLogsCleanup(logsStore, cleanupConfig);
85
- // logsCleanup.start();
86
- // Initialize execution service globally for cleanup on shutdown
87
- executionService = new ExecutionService(db, REPO_ROOT, undefined, transportManager, logsStore);
88
- console.log("Execution service initialized");
89
- // Cleanup orphaned worktrees on startup (if configured)
90
- const worktreeConfig = getWorktreeConfig(REPO_ROOT);
91
- if (worktreeConfig.cleanupOrphanedWorktreesOnStartup) {
92
- try {
93
- // TODO: Log if there are worktrees to cleanup
94
- const worktreeManager = new WorktreeManager(worktreeConfig);
95
- const lifecycleService = new ExecutionLifecycleService(db, REPO_ROOT, worktreeManager);
96
- console.log("Cleaning up orphaned worktrees...");
97
- await lifecycleService.cleanupOrphanedWorktrees();
98
- console.log("Orphaned worktree cleanup complete");
68
+ else {
69
+ // No local project, try most recent
70
+ const recentProjects = projectRegistry.getRecentProjects();
71
+ if (recentProjects.length > 0) {
72
+ const mostRecent = recentProjects[0];
73
+ console.log(`Auto-opening most recent project: ${mostRecent.name} (${mostRecent.path})`);
74
+ const openResult = await projectManager.openProject(mostRecent.path);
75
+ if (!openResult.ok) {
76
+ const errorMsg = "message" in openResult.error
77
+ ? openResult.error.message
78
+ : `${openResult.error.type}`;
79
+ console.warn(`Failed to auto-open most recent project: ${errorMsg}`);
80
+ console.log("Server will start with no projects open");
81
+ }
82
+ else {
83
+ console.log(`Auto-opened project: ${mostRecent.name}`);
84
+ }
99
85
  }
100
- catch (error) {
101
- console.error("Failed to cleanup orphaned worktrees:", error);
102
- // Don't exit - this is best-effort cleanup
86
+ else {
87
+ console.log("No recent projects found. Server will start with no projects open");
103
88
  }
104
89
  }
90
+ // Initialize transport manager for SSE streaming
91
+ transportManager = new TransportManager();
92
+ console.log("Transport manager initialized");
105
93
  }
106
94
  catch (error) {
107
- console.error("Failed to initialize database:", error);
95
+ console.error("Failed to initialize server:", error);
108
96
  process.exit(1);
109
97
  }
110
98
  }
111
99
  // Run initialization
112
100
  await initialize();
113
- // Start file watcher (enabled by default, disable with WATCH=false)
114
- const WATCH_ENABLED = process.env.WATCH !== "false";
115
- const SYNC_JSONL_TO_MARKDOWN = process.env.SYNC_JSONL_TO_MARKDOWN === "true";
116
- if (WATCH_ENABLED) {
117
- try {
118
- watcher = startServerWatcher({
119
- db,
120
- baseDir: SUDOCODE_DIR,
121
- debounceDelay: parseInt(process.env.WATCH_DEBOUNCE || "2000", 10),
122
- syncJSONLToMarkdown: SYNC_JSONL_TO_MARKDOWN,
123
- onFileChange: (info) => {
124
- console.log(`[server] File change detected: ${info.entityType || "unknown"} ${info.entityId || ""}`);
125
- // Broadcast WebSocket updates for issue and spec changes
126
- if (info.entityType === "issue" && info.entityId) {
127
- if (info.entityId === "*") {
128
- // Wildcard update (JSONL file changed) - broadcast to all issue subscribers
129
- broadcastIssueUpdate("*", "updated", null);
130
- }
131
- else {
132
- // Specific issue update - fetch and broadcast the specific issue
133
- const issue = getIssueById(db, info.entityId);
134
- if (issue) {
135
- broadcastIssueUpdate(info.entityId, "updated", issue);
136
- }
137
- }
138
- }
139
- else if (info.entityType === "spec" && info.entityId) {
140
- if (info.entityId === "*") {
141
- // Wildcard update (JSONL file changed) - broadcast to all spec subscribers
142
- broadcastSpecUpdate("*", "updated", null);
143
- }
144
- else {
145
- // Specific spec update - fetch and broadcast the specific spec
146
- const spec = getSpecById(db, info.entityId);
147
- if (spec) {
148
- broadcastSpecUpdate(info.entityId, "updated", spec);
149
- }
150
- }
151
- }
152
- },
153
- });
154
- console.log(`[server] File watcher started on: ${SUDOCODE_DIR}`);
155
- }
156
- catch (error) {
157
- console.error("Failed to start file watcher:", error);
158
- console.warn("Continuing without file watcher. Set WATCH=false to suppress this warning.");
159
- }
160
- }
161
101
  // Middleware
162
102
  app.use(cors());
163
103
  app.use(express.json());
164
104
  // API Routes
165
- app.use("/api/issues", createIssuesRouter(db));
166
- app.use("/api/specs", createSpecsRouter(db));
167
- app.use("/api/relationships", createRelationshipsRouter(db));
168
- app.use("/api/feedback", createFeedbackRouter(db));
105
+ // Project management routes (no project context required)
106
+ app.use("/api/projects", createProjectsRouter(projectManager, projectRegistry));
107
+ // Entity routes (require project context via X-Project-ID header)
108
+ app.use("/api/issues", requireProject(projectManager), createIssuesRouter());
109
+ app.use("/api/specs", requireProject(projectManager), createSpecsRouter());
110
+ app.use("/api/relationships", requireProject(projectManager), createRelationshipsRouter());
111
+ app.use("/api/feedback", requireProject(projectManager), createFeedbackRouter());
112
+ app.use("/api/config", requireProject(projectManager), createConfigRouter());
113
+ app.use("/api/repo-info", requireProject(projectManager), createRepoInfoRouter());
114
+ // File search endpoint (requires project context)
115
+ app.use("/api/files", requireProject(projectManager), createFilesRouter());
116
+ // Agents endpoint - global, not project-specific
117
+ app.use("/api/agents", createAgentsRouter());
169
118
  // Mount execution routes (must be before stream routes to avoid conflicts)
170
- app.use("/api", createExecutionsRouter(db, REPO_ROOT, transportManager, executionService, logsStore));
171
- app.use("/api/executions", createExecutionStreamRoutes(transportManager));
119
+ // TODO: Make these all relative to /executions
120
+ app.use("/api", requireProject(projectManager), createExecutionsRouter());
121
+ app.use("/api/executions", requireProject(projectManager), createExecutionStreamRoutes());
122
+ // Mount editor routes
123
+ app.use("/api", requireProject(projectManager), createEditorsRouter());
172
124
  // Health check endpoint
173
125
  app.get("/health", (_req, res) => {
174
- const dbInfo = getDatabaseInfo(db);
126
+ const openProjects = projectManager.getAllOpenProjects();
175
127
  res.status(200).json({
176
128
  status: "ok",
177
129
  timestamp: new Date().toISOString(),
178
130
  uptime: process.uptime(),
179
- database: {
180
- path: DB_PATH,
181
- tables: dbInfo.tables.length,
182
- hasCliTables: dbInfo.hasCliTables,
131
+ projects: {
132
+ totalOpen: openProjects.length,
133
+ openProjects: openProjects.map((p) => {
134
+ const projectInfo = projectRegistry.getProject(p.id);
135
+ return {
136
+ id: p.id,
137
+ name: projectInfo?.name || path.basename(p.path),
138
+ path: p.path,
139
+ };
140
+ }),
183
141
  },
184
142
  });
185
143
  });
@@ -195,26 +153,21 @@ app.get("/api/version", (_req, res) => {
195
153
  const serverPackage = JSON.parse(readFileSync(serverPackagePath, "utf-8"));
196
154
  const frontendPackage = JSON.parse(readFileSync(frontendPackagePath, "utf-8"));
197
155
  res.status(200).json({
198
- cli: cliPackage.version,
199
- server: serverPackage.version,
200
- frontend: frontendPackage.version,
156
+ success: true,
157
+ data: {
158
+ cli: cliPackage.version,
159
+ server: serverPackage.version,
160
+ frontend: frontendPackage.version,
161
+ },
201
162
  });
202
163
  }
203
164
  catch (error) {
204
165
  console.error("Failed to read version information:", error);
205
- res.status(500).json({ error: "Failed to read version information" });
206
- }
207
- });
208
- // Config endpoint - returns sudocode configuration
209
- app.get("/api/config", (_req, res) => {
210
- try {
211
- const configPath = path.join(SUDOCODE_DIR, "config.json");
212
- const config = JSON.parse(readFileSync(configPath, "utf-8"));
213
- res.status(200).json(config);
214
- }
215
- catch (error) {
216
- console.error("Failed to read config:", error);
217
- res.status(500).json({ error: "Failed to read config" });
166
+ res.status(500).json({
167
+ success: false,
168
+ data: null,
169
+ message: "Failed to read version information",
170
+ });
218
171
  }
219
172
  });
220
173
  // WebSocket stats endpoint
@@ -248,15 +201,18 @@ app.get("*", (req, res) => {
248
201
  // Create HTTP server
249
202
  const server = http.createServer(app);
250
203
  /**
251
- * Attempts to start the server on the given port, incrementing if unavailable.
204
+ * Attempts to start the server (HTTP + WebSocket) on the given port, incrementing if unavailable.
252
205
  * Only scans for ports if no explicit PORT was provided.
206
+ * Both HTTP and WebSocket must successfully initialize on the same port.
253
207
  */
254
208
  async function startServer(initialPort, maxAttempts) {
255
- const explicitPort = process.env.PORT;
209
+ const explicitPort = process.env.SUDOCODE_PORT;
256
210
  const shouldScan = !explicitPort;
257
211
  for (let attempt = 0; attempt < maxAttempts; attempt++) {
258
212
  const port = initialPort + attempt;
213
+ let httpStarted = false;
259
214
  try {
215
+ // First, try to bind the HTTP server
260
216
  await new Promise((resolve, reject) => {
261
217
  const errorHandler = (err) => {
262
218
  server.removeListener("error", errorHandler);
@@ -271,19 +227,50 @@ async function startServer(initialPort, maxAttempts) {
271
227
  server.once("listening", listeningHandler);
272
228
  server.listen(port);
273
229
  });
274
- // Success! Return the port we successfully bound to
230
+ httpStarted = true;
231
+ console.log(`[server] HTTP server bound to port ${port}`);
232
+ // Now try to initialize WebSocket on the same server
233
+ console.log(`[server] Initializing WebSocket server on port ${port}...`);
234
+ initWebSocketServer(server, "/ws");
235
+ // Verify WebSocket server is accessible
236
+ const wss = getWebSocketServer();
237
+ if (!wss) {
238
+ throw new Error("WebSocket server failed to initialize - server instance is null");
239
+ }
240
+ console.log(`[server] WebSocket server successfully initialized on port ${port}`);
241
+ // Both HTTP and WebSocket succeeded! Return the port
275
242
  return port;
276
243
  }
277
244
  catch (err) {
278
245
  const error = err;
279
- if (error.code === "EADDRINUSE") {
246
+ // Clean up if we partially started
247
+ if (httpStarted) {
248
+ console.log(`[server] Cleaning up HTTP server on port ${port}...`);
249
+ await new Promise((resolve) => {
250
+ server.close(() => resolve());
251
+ });
252
+ }
253
+ // Clean up WebSocket if it was partially initialized
254
+ const wss = getWebSocketServer();
255
+ if (wss) {
256
+ console.log(`[server] Cleaning up WebSocket server on port ${port}...`);
257
+ await shutdownWebSocketServer();
258
+ }
259
+ // Determine if we should retry
260
+ const isPortConflict = error.code === "EADDRINUSE" ||
261
+ (error.message && error.message.includes("address already in use"));
262
+ if (isPortConflict ||
263
+ (httpStarted && error.message?.includes("WebSocket"))) {
280
264
  if (!shouldScan) {
281
265
  // Explicit port was specified and it's in use - fail immediately
282
- throw new Error(`Port ${port} is already in use. Please specify a different PORT.`);
266
+ throw new Error(`Port ${port} is already in use or WebSocket initialization failed. Please specify a different SUDOCODE_PORT.`);
283
267
  }
284
- // Port is in use, try next one if we have attempts left
268
+ // Port is in use or WebSocket failed, try next one if we have attempts left
285
269
  if (attempt < maxAttempts - 1) {
286
- console.log(`Port ${port} is already in use, trying ${port + 1}...`);
270
+ const reason = httpStarted
271
+ ? "WebSocket initialization failed"
272
+ : "port is already in use";
273
+ console.log(`[server] Port ${port} ${reason}, trying ${port + 1}...`);
287
274
  continue;
288
275
  }
289
276
  else {
@@ -292,19 +279,18 @@ async function startServer(initialPort, maxAttempts) {
292
279
  }
293
280
  else {
294
281
  // Some other error - fail immediately
282
+ console.error(`[server] Unexpected error on port ${port}:`, error.message);
295
283
  throw error;
296
284
  }
297
285
  }
298
286
  }
299
287
  throw new Error(`Could not start server after ${maxAttempts} attempts`);
300
288
  }
301
- // Start listening with port scanning
302
- const startPort = process.env.PORT
303
- ? parseInt(process.env.PORT, 10)
289
+ // Start listening with port scanning (includes both HTTP and WebSocket)
290
+ const startPort = process.env.SUDOCODE_PORT
291
+ ? parseInt(process.env.SUDOCODE_PORT, 10)
304
292
  : DEFAULT_PORT;
305
293
  const actualPort = await startServer(startPort, MAX_PORT_ATTEMPTS);
306
- // Initialize WebSocket server AFTER successfully binding to a port
307
- initWebSocketServer(server, "/ws");
308
294
  // Format URLs as clickable links with color
309
295
  const httpUrl = `http://localhost:${actualPort}`;
310
296
  const wsUrl = `ws://localhost:${actualPort}/ws`;
@@ -313,8 +299,22 @@ const green = "\u001b[32m";
313
299
  const bold = "\u001b[1m";
314
300
  const reset = "\u001b[0m";
315
301
  const makeClickable = (url, text) => `\u001b]8;;${url}\u001b\\${text}\u001b]8;;\u001b\\`;
316
- console.log(`WebSocket server available at: ${makeClickable(wsUrl, wsUrl)}`);
302
+ // ASCII art banner (split-line version for narrower terminals)
303
+ console.log(`\n${green}${bold}`);
304
+ console.log(" ███████╗ ██╗ ██╗ ██████╗ ██████╗ ");
305
+ console.log(" ██╔════╝ ██║ ██║ ██╔══██╗ ██╔═══██╗");
306
+ console.log(" ███████╗ ██║ ██║ ██║ ██║ ██║ ██║");
307
+ console.log(" ╚════██║ ██║ ██║ ██║ ██║ ██║ ██║");
308
+ console.log(" ███████║ ╚██████╔╝ ██████╔╝ ╚██████╔╝");
309
+ console.log(" ╚══════╝ ╚═════╝ ╚═════╝ ╚═════╝ ");
310
+ console.log(" ██████╗ ██████╗ ██████╗ ███████╗");
311
+ console.log(" ██╔════╝ ██╔═══██╗ ██╔══██╗ ██╔════╝");
312
+ console.log(" ██║ ██║ ██║ ██║ ██║ █████╗ ");
313
+ console.log(" ██║ ██║ ██║ ██║ ██║ ██╔══╝ ");
314
+ console.log(" ╚██████╗ ╚██████╔╝ ██████╔╝ ███████╗");
315
+ console.log(` ╚═════╝ ╚═════╝ ╚═════╝ ╚══════╝${reset}\n`);
317
316
  console.log(`${bold}${green}sudocode local server running on: ${makeClickable(httpUrl, httpUrl)}${reset}`);
317
+ console.log(`WebSocket server available at: ${makeClickable(wsUrl, wsUrl)}`);
318
318
  // Error handlers for debugging
319
319
  process.on("uncaughtException", (error) => {
320
320
  console.error("Uncaught exception:", error);
@@ -327,18 +327,10 @@ process.on("unhandledRejection", (reason, promise) => {
327
327
  // Graceful shutdown
328
328
  process.on("SIGINT", async () => {
329
329
  console.log("\nShutting down server...");
330
- // Shutdown execution service (cancel active executions)
331
- if (executionService) {
332
- await executionService.shutdown();
333
- }
334
- // Stop logs cleanup service
335
- // TODO: Re-enable when logs cleanup is supported
336
- // if (logsCleanup) {
337
- // logsCleanup.stop();
338
- // }
339
- // Stop file watcher
340
- if (watcher) {
341
- await watcher.stop();
330
+ // Shutdown ProjectManager (closes all projects and their watchers)
331
+ // This will shutdown all per-project ExecutionServices and close all databases
332
+ if (projectManager) {
333
+ await projectManager.shutdown();
342
334
  }
343
335
  // Shutdown WebSocket server
344
336
  await shutdownWebSocketServer();
@@ -347,8 +339,6 @@ process.on("SIGINT", async () => {
347
339
  transportManager.shutdown();
348
340
  console.log("Transport manager shutdown complete");
349
341
  }
350
- // Close database
351
- db.close();
352
342
  // Close HTTP server
353
343
  server.close(() => {
354
344
  console.log("Server closed");
@@ -362,18 +352,10 @@ process.on("SIGINT", async () => {
362
352
  });
363
353
  process.on("SIGTERM", async () => {
364
354
  console.log("\nShutting down server...");
365
- // Shutdown execution service (cancel active executions)
366
- if (executionService) {
367
- await executionService.shutdown();
368
- }
369
- // Stop logs cleanup service
370
- // TODO: Re-enable when logs cleanup is supported
371
- // if (logsCleanup) {
372
- // logsCleanup.stop();
373
- // }
374
- // Stop file watcher
375
- if (watcher) {
376
- await watcher.stop();
355
+ // Shutdown ProjectManager (closes all projects and their watchers)
356
+ // This will shutdown all per-project ExecutionServices and close all databases
357
+ if (projectManager) {
358
+ await projectManager.shutdown();
377
359
  }
378
360
  // Shutdown WebSocket server
379
361
  await shutdownWebSocketServer();
@@ -382,8 +364,6 @@ process.on("SIGTERM", async () => {
382
364
  transportManager.shutdown();
383
365
  console.log("Transport manager shutdown complete");
384
366
  }
385
- // Close database
386
- db.close();
387
367
  // Close HTTP server
388
368
  server.close(() => {
389
369
  console.log("Server closed");
@@ -391,5 +371,5 @@ process.on("SIGTERM", async () => {
391
371
  });
392
372
  });
393
373
  export default app;
394
- export { db, transportManager };
374
+ export { transportManager };
395
375
  //# sourceMappingURL=index.js.map