@jait/gateway 0.1.460 → 0.1.462

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 (353) hide show
  1. package/dist/cli/doctor.js +1 -1
  2. package/dist/cli/doctor.js.map +1 -1
  3. package/dist/db/connection.js +3 -3
  4. package/dist/db/connection.js.map +1 -1
  5. package/dist/db/migrations.d.ts.map +1 -1
  6. package/dist/db/migrations.js +64 -0
  7. package/dist/db/migrations.js.map +1 -1
  8. package/dist/db/schema.d.ts +35 -35
  9. package/dist/db/schema.d.ts.map +1 -1
  10. package/dist/db/schema.js +19 -19
  11. package/dist/db/schema.js.map +1 -1
  12. package/dist/index.js +67 -67
  13. package/dist/index.js.map +1 -1
  14. package/dist/memory/contracts.d.ts +1 -1
  15. package/dist/memory/contracts.d.ts.map +1 -1
  16. package/dist/memory/service.js +1 -1
  17. package/dist/memory/service.js.map +1 -1
  18. package/dist/plugins/contracts.d.ts +1 -1
  19. package/dist/plugins/contracts.d.ts.map +1 -1
  20. package/dist/plugins/manager.d.ts +2 -2
  21. package/dist/plugins/manager.d.ts.map +1 -1
  22. package/dist/plugins/manager.js +3 -3
  23. package/dist/plugins/manager.js.map +1 -1
  24. package/dist/providers/jait-provider.js +6 -6
  25. package/dist/providers/jait-provider.js.map +1 -1
  26. package/dist/providers/model-fetchers.d.ts +18 -0
  27. package/dist/providers/model-fetchers.d.ts.map +1 -0
  28. package/dist/providers/model-fetchers.js +136 -0
  29. package/dist/providers/model-fetchers.js.map +1 -0
  30. package/dist/providers/provider-auth.d.ts.map +1 -1
  31. package/dist/providers/provider-auth.js +11 -2
  32. package/dist/providers/provider-auth.js.map +1 -1
  33. package/dist/providers/registry.d.ts +1 -1
  34. package/dist/providers/registry.d.ts.map +1 -1
  35. package/dist/providers/registry.js +2 -2
  36. package/dist/providers/registry.js.map +1 -1
  37. package/dist/routes/architecture.js +10 -10
  38. package/dist/routes/architecture.js.map +1 -1
  39. package/dist/routes/auth.js +10 -10
  40. package/dist/routes/auth.js.map +1 -1
  41. package/dist/routes/chat.d.ts +2 -2
  42. package/dist/routes/chat.d.ts.map +1 -1
  43. package/dist/routes/chat.js +29 -29
  44. package/dist/routes/chat.js.map +1 -1
  45. package/dist/routes/environment.d.ts +2 -2
  46. package/dist/routes/environment.d.ts.map +1 -1
  47. package/dist/routes/environment.js +11 -11
  48. package/dist/routes/environment.js.map +1 -1
  49. package/dist/routes/filesystem.d.ts +1 -1
  50. package/dist/routes/filesystem.js +1 -1
  51. package/dist/routes/git.js +1 -1
  52. package/dist/routes/git.js.map +1 -1
  53. package/dist/routes/jobs.js +2 -2
  54. package/dist/routes/jobs.js.map +1 -1
  55. package/dist/routes/mcp-server.d.ts +1 -1
  56. package/dist/routes/mcp-server.d.ts.map +1 -1
  57. package/dist/routes/mcp-server.js +13 -13
  58. package/dist/routes/mcp-server.js.map +1 -1
  59. package/dist/routes/preview.js +1 -1
  60. package/dist/routes/preview.js.map +1 -1
  61. package/dist/routes/project.d.ts +16 -0
  62. package/dist/routes/project.d.ts.map +1 -0
  63. package/dist/routes/{workspace.js → project.js} +100 -100
  64. package/dist/routes/project.js.map +1 -0
  65. package/dist/routes/projects.d.ts +15 -0
  66. package/dist/routes/projects.d.ts.map +1 -0
  67. package/dist/routes/{workspaces.js → projects.js} +98 -98
  68. package/dist/routes/projects.js.map +1 -0
  69. package/dist/routes/providers.d.ts.map +1 -1
  70. package/dist/routes/providers.js +1 -96
  71. package/dist/routes/providers.js.map +1 -1
  72. package/dist/routes/reminders.d.ts +2 -2
  73. package/dist/routes/reminders.d.ts.map +1 -1
  74. package/dist/routes/reminders.js +17 -17
  75. package/dist/routes/reminders.js.map +1 -1
  76. package/dist/routes/repo-proposals.js +1 -1
  77. package/dist/routes/repo-proposals.js.map +1 -1
  78. package/dist/routes/repositories.d.ts +2 -2
  79. package/dist/routes/repositories.d.ts.map +1 -1
  80. package/dist/routes/repositories.js +6 -6
  81. package/dist/routes/repositories.js.map +1 -1
  82. package/dist/routes/sessions.d.ts +2 -2
  83. package/dist/routes/sessions.d.ts.map +1 -1
  84. package/dist/routes/sessions.js +20 -20
  85. package/dist/routes/sessions.js.map +1 -1
  86. package/dist/routes/terminals.js +7 -7
  87. package/dist/routes/terminals.js.map +1 -1
  88. package/dist/routes/threads.js +2 -2
  89. package/dist/routes/threads.js.map +1 -1
  90. package/dist/scheduler/hooks.d.ts +1 -1
  91. package/dist/scheduler/hooks.d.ts.map +1 -1
  92. package/dist/scheduler/hooks.js +5 -5
  93. package/dist/scheduler/hooks.js.map +1 -1
  94. package/dist/scheduler/service.d.ts +3 -3
  95. package/dist/scheduler/service.d.ts.map +1 -1
  96. package/dist/scheduler/service.js +8 -8
  97. package/dist/scheduler/service.js.map +1 -1
  98. package/dist/security/path-guard.d.ts +6 -6
  99. package/dist/security/path-guard.d.ts.map +1 -1
  100. package/dist/security/path-guard.js +8 -8
  101. package/dist/security/path-guard.js.map +1 -1
  102. package/dist/security/sandbox-manager.d.ts +5 -5
  103. package/dist/security/sandbox-manager.d.ts.map +1 -1
  104. package/dist/security/sandbox-manager.js +14 -14
  105. package/dist/security/sandbox-manager.js.map +1 -1
  106. package/dist/security/tool-permissions.d.ts +1 -1
  107. package/dist/security/tool-permissions.d.ts.map +1 -1
  108. package/dist/security/tool-profiles.js +12 -12
  109. package/dist/security/tool-profiles.js.map +1 -1
  110. package/dist/server.d.ts +4 -4
  111. package/dist/server.d.ts.map +1 -1
  112. package/dist/server.js +16 -16
  113. package/dist/server.js.map +1 -1
  114. package/dist/services/architecture-diagrams.d.ts +3 -3
  115. package/dist/services/architecture-diagrams.d.ts.map +1 -1
  116. package/dist/services/architecture-diagrams.js +19 -19
  117. package/dist/services/architecture-diagrams.js.map +1 -1
  118. package/dist/services/git.d.ts +1 -1
  119. package/dist/services/git.d.ts.map +1 -1
  120. package/dist/services/git.js +3 -3
  121. package/dist/services/git.js.map +1 -1
  122. package/dist/services/live-view-manager.d.ts +1 -1
  123. package/dist/services/live-view-manager.d.ts.map +1 -1
  124. package/dist/services/live-view-manager.js +2 -2
  125. package/dist/services/live-view-manager.js.map +1 -1
  126. package/dist/services/preview-runner.d.ts +5 -5
  127. package/dist/services/preview-runner.d.ts.map +1 -1
  128. package/dist/services/preview-runner.js +19 -19
  129. package/dist/services/preview-runner.js.map +1 -1
  130. package/dist/services/preview.d.ts +2 -2
  131. package/dist/services/preview.d.ts.map +1 -1
  132. package/dist/services/preview.js +8 -8
  133. package/dist/services/preview.js.map +1 -1
  134. package/dist/services/project-repositories.d.ts +35 -0
  135. package/dist/services/project-repositories.d.ts.map +1 -0
  136. package/dist/services/{workspace-repositories.js → project-repositories.js} +34 -34
  137. package/dist/services/project-repositories.js.map +1 -0
  138. package/dist/services/project-state.d.ts +8 -0
  139. package/dist/services/project-state.d.ts.map +1 -0
  140. package/dist/services/{workspace-state.js → project-state.js} +25 -25
  141. package/dist/services/project-state.js.map +1 -0
  142. package/dist/services/{workspace-watcher.d.ts → project-watcher.d.ts} +8 -8
  143. package/dist/services/project-watcher.d.ts.map +1 -0
  144. package/dist/services/{workspace-watcher.js → project-watcher.js} +7 -7
  145. package/dist/services/project-watcher.js.map +1 -0
  146. package/dist/services/{workspaces.d.ts → projects.d.ts} +13 -13
  147. package/dist/services/projects.d.ts.map +1 -0
  148. package/dist/services/{workspaces.js → projects.js} +54 -54
  149. package/dist/services/projects.js.map +1 -0
  150. package/dist/services/reminders.d.ts +4 -4
  151. package/dist/services/reminders.d.ts.map +1 -1
  152. package/dist/services/reminders.js +10 -10
  153. package/dist/services/reminders.js.map +1 -1
  154. package/dist/services/session-state.js +1 -1
  155. package/dist/services/sessions.d.ts +22 -22
  156. package/dist/services/sessions.d.ts.map +1 -1
  157. package/dist/services/sessions.js +21 -21
  158. package/dist/services/sessions.js.map +1 -1
  159. package/dist/services/users.d.ts +4 -4
  160. package/dist/services/users.d.ts.map +1 -1
  161. package/dist/services/users.js +16 -16
  162. package/dist/services/users.js.map +1 -1
  163. package/dist/sessions/contracts.d.ts +4 -4
  164. package/dist/sessions/contracts.d.ts.map +1 -1
  165. package/dist/skills/index.d.ts +1 -1
  166. package/dist/skills/index.d.ts.map +1 -1
  167. package/dist/surfaces/browser.js +1 -1
  168. package/dist/surfaces/browser.js.map +1 -1
  169. package/dist/surfaces/contracts.d.ts +1 -1
  170. package/dist/surfaces/contracts.d.ts.map +1 -1
  171. package/dist/surfaces/filesystem.d.ts +1 -1
  172. package/dist/surfaces/filesystem.d.ts.map +1 -1
  173. package/dist/surfaces/filesystem.js +18 -18
  174. package/dist/surfaces/filesystem.js.map +1 -1
  175. package/dist/surfaces/remote-filesystem.d.ts +2 -2
  176. package/dist/surfaces/remote-filesystem.d.ts.map +1 -1
  177. package/dist/surfaces/remote-filesystem.js +6 -6
  178. package/dist/surfaces/remote-filesystem.js.map +1 -1
  179. package/dist/surfaces/terminal.js +2 -2
  180. package/dist/surfaces/terminal.js.map +1 -1
  181. package/dist/tools/agent-loop.js +1 -1
  182. package/dist/tools/agent-loop.js.map +1 -1
  183. package/dist/tools/agent-tools.js +1 -1
  184. package/dist/tools/agent-tools.js.map +1 -1
  185. package/dist/tools/architecture-tools.js +8 -8
  186. package/dist/tools/architecture-tools.js.map +1 -1
  187. package/dist/tools/browser-tools.d.ts +1 -1
  188. package/dist/tools/browser-tools.d.ts.map +1 -1
  189. package/dist/tools/browser-tools.js +3 -3
  190. package/dist/tools/browser-tools.js.map +1 -1
  191. package/dist/tools/contracts.d.ts +1 -1
  192. package/dist/tools/contracts.d.ts.map +1 -1
  193. package/dist/tools/core/execute.d.ts +1 -1
  194. package/dist/tools/core/execute.d.ts.map +1 -1
  195. package/dist/tools/core/execute.js +1 -1
  196. package/dist/tools/core/execute.js.map +1 -1
  197. package/dist/tools/core/get-fs.d.ts +9 -9
  198. package/dist/tools/core/get-fs.d.ts.map +1 -1
  199. package/dist/tools/core/get-fs.js +20 -20
  200. package/dist/tools/core/get-fs.js.map +1 -1
  201. package/dist/tools/core/jait.d.ts +3 -3
  202. package/dist/tools/core/jait.d.ts.map +1 -1
  203. package/dist/tools/core/jait.js +9 -9
  204. package/dist/tools/core/jait.js.map +1 -1
  205. package/dist/tools/core/read.d.ts +1 -1
  206. package/dist/tools/core/read.d.ts.map +1 -1
  207. package/dist/tools/core/search.d.ts +2 -2
  208. package/dist/tools/core/search.d.ts.map +1 -1
  209. package/dist/tools/core/search.js +5 -5
  210. package/dist/tools/core/search.js.map +1 -1
  211. package/dist/tools/cron-tools.js +2 -2
  212. package/dist/tools/cron-tools.js.map +1 -1
  213. package/dist/tools/elevated-tools.js +3 -3
  214. package/dist/tools/elevated-tools.js.map +1 -1
  215. package/dist/tools/file-tools.js +4 -4
  216. package/dist/tools/file-tools.js.map +1 -1
  217. package/dist/tools/index.d.ts +3 -3
  218. package/dist/tools/index.d.ts.map +1 -1
  219. package/dist/tools/index.js +5 -5
  220. package/dist/tools/index.js.map +1 -1
  221. package/dist/tools/memory-tools.d.ts +4 -4
  222. package/dist/tools/memory-tools.d.ts.map +1 -1
  223. package/dist/tools/memory-tools.js +11 -11
  224. package/dist/tools/memory-tools.js.map +1 -1
  225. package/dist/tools/preview-tools.d.ts +1 -1
  226. package/dist/tools/preview-tools.d.ts.map +1 -1
  227. package/dist/tools/preview-tools.js +10 -10
  228. package/dist/tools/preview-tools.js.map +1 -1
  229. package/dist/tools/{workspace-tools.d.ts → project-tools.d.ts} +4 -4
  230. package/dist/tools/project-tools.d.ts.map +1 -0
  231. package/dist/tools/{workspace-tools.js → project-tools.js} +28 -28
  232. package/dist/tools/project-tools.js.map +1 -0
  233. package/dist/tools/prompts/claude-prompt.js +4 -4
  234. package/dist/tools/prompts/default-openai-prompt.js +1 -1
  235. package/dist/tools/prompts/default-prompt.js +1 -1
  236. package/dist/tools/prompts/gemini-prompt.js +4 -4
  237. package/dist/tools/prompts/gpt5-prompt.js +3 -3
  238. package/dist/tools/prompts/gpt51-prompt.js +2 -2
  239. package/dist/tools/prompts/gpt52-prompt.js +2 -2
  240. package/dist/tools/prompts/prompt-registry.d.ts +2 -2
  241. package/dist/tools/prompts/prompt-registry.d.ts.map +1 -1
  242. package/dist/tools/prompts/prompt-registry.js +5 -5
  243. package/dist/tools/prompts/prompt-registry.js.map +1 -1
  244. package/dist/tools/prompts/shared-sections.d.ts +2 -2
  245. package/dist/tools/prompts/shared-sections.d.ts.map +1 -1
  246. package/dist/tools/prompts/shared-sections.js +7 -7
  247. package/dist/tools/prompts/shared-sections.js.map +1 -1
  248. package/dist/tools/prompts/xai-prompt.js +2 -2
  249. package/dist/tools/remote-executor.d.ts +7 -7
  250. package/dist/tools/remote-executor.d.ts.map +1 -1
  251. package/dist/tools/remote-executor.js +13 -13
  252. package/dist/tools/remote-executor.js.map +1 -1
  253. package/dist/tools/repo-proposal-tools.js +5 -5
  254. package/dist/tools/repo-proposal-tools.js.map +1 -1
  255. package/dist/tools/ssh-tools.js +1 -1
  256. package/dist/tools/ssh-tools.js.map +1 -1
  257. package/dist/tools/surface-tools.d.ts +1 -1
  258. package/dist/tools/surface-tools.d.ts.map +1 -1
  259. package/dist/tools/surface-tools.js +2 -2
  260. package/dist/tools/surface-tools.js.map +1 -1
  261. package/dist/tools/terminal-tools.d.ts +2 -2
  262. package/dist/tools/terminal-tools.d.ts.map +1 -1
  263. package/dist/tools/terminal-tools.js +10 -10
  264. package/dist/tools/terminal-tools.js.map +1 -1
  265. package/dist/tools/thread-tools.js +8 -8
  266. package/dist/tools/thread-tools.js.map +1 -1
  267. package/dist/tools/tool-names.d.ts +1 -1
  268. package/dist/tools/tool-names.js +1 -1
  269. package/dist/tools/tool-names.js.map +1 -1
  270. package/dist/voice-assistant/service.d.ts +1 -1
  271. package/dist/voice-assistant/service.js +4 -4
  272. package/dist/voice-assistant/tools.d.ts +2 -2
  273. package/dist/voice-assistant/tools.d.ts.map +1 -1
  274. package/dist/voice-assistant/tools.js +14 -14
  275. package/dist/voice-assistant/tools.js.map +1 -1
  276. package/dist/ws.d.ts +1 -1
  277. package/dist/ws.d.ts.map +1 -1
  278. package/dist/ws.js +2 -2
  279. package/dist/ws.js.map +1 -1
  280. package/package.json +1 -1
  281. package/web-dist/assets/{_basePickBy-BxTNhXHf.js → _basePickBy-BUJIW_9x.js} +1 -1
  282. package/web-dist/assets/{_baseUniq-BzmTBuCK.js → _baseUniq-DK1B22lY.js} +1 -1
  283. package/web-dist/assets/{arc-D_str31s.js → arc-C-QiRnH7.js} +1 -1
  284. package/web-dist/assets/{architectureDiagram-2XIMDMQ5-iGpZ5eMv.js → architectureDiagram-2XIMDMQ5-BZmbQ_3h.js} +1 -1
  285. package/web-dist/assets/{blockDiagram-WCTKOSBZ-CzaQqynl.js → blockDiagram-WCTKOSBZ-G9mYf55q.js} +1 -1
  286. package/web-dist/assets/{c4Diagram-IC4MRINW-PyiTG4vY.js → c4Diagram-IC4MRINW-CuPwcNfs.js} +1 -1
  287. package/web-dist/assets/channel-BLa9-bs3.js +1 -0
  288. package/web-dist/assets/{chunk-4BX2VUAB-D0T3UNJp.js → chunk-4BX2VUAB-CMVUcixG.js} +1 -1
  289. package/web-dist/assets/{chunk-55IACEB6-CEZ65WgK.js → chunk-55IACEB6-B8tSmPKt.js} +1 -1
  290. package/web-dist/assets/{chunk-FMBD7UC4-P5kWRofC.js → chunk-FMBD7UC4-DVj-CvM1.js} +1 -1
  291. package/web-dist/assets/{chunk-JSJVCQXG-Cn1owVt4.js → chunk-JSJVCQXG-Cmnljb4L.js} +1 -1
  292. package/web-dist/assets/{chunk-KX2RTZJC-CC0b6eqX.js → chunk-KX2RTZJC-7m5AdtzG.js} +1 -1
  293. package/web-dist/assets/{chunk-NQ4KR5QH-CNIgo-1z.js → chunk-NQ4KR5QH-B5v6IJ6l.js} +1 -1
  294. package/web-dist/assets/{chunk-QZHKN3VN-DF6TeuK6.js → chunk-QZHKN3VN-B4UYeBP1.js} +1 -1
  295. package/web-dist/assets/{chunk-WL4C6EOR-DaZTFehP.js → chunk-WL4C6EOR-CGFIlzJa.js} +1 -1
  296. package/web-dist/assets/classDiagram-VBA2DB6C-BIrMmcNF.js +1 -0
  297. package/web-dist/assets/classDiagram-v2-RAHNMMFH-BIrMmcNF.js +1 -0
  298. package/web-dist/assets/clone-Cz7Wvqij.js +1 -0
  299. package/web-dist/assets/{cose-bilkent-S5V4N54A-BxdF5cV-.js → cose-bilkent-S5V4N54A-Bu4BMP0s.js} +1 -1
  300. package/web-dist/assets/{dagre-KLK3FWXG-Dm4scFIL.js → dagre-KLK3FWXG-RPC70-Xe.js} +1 -1
  301. package/web-dist/assets/{diagram-E7M64L7V-Bne6RKl6.js → diagram-E7M64L7V-Dd4nOsHW.js} +1 -1
  302. package/web-dist/assets/{diagram-IFDJBPK2-j2mQ5C5l.js → diagram-IFDJBPK2-CzpziBn0.js} +1 -1
  303. package/web-dist/assets/{diagram-P4PSJMXO-CdzuLWEw.js → diagram-P4PSJMXO-DkmCba9Q.js} +1 -1
  304. package/web-dist/assets/{erDiagram-INFDFZHY-DZrdptsJ.js → erDiagram-INFDFZHY-Bj_Bs6AV.js} +1 -1
  305. package/web-dist/assets/{flowDiagram-PKNHOUZH-DgjJzAMy.js → flowDiagram-PKNHOUZH-C0xS0K4m.js} +1 -1
  306. package/web-dist/assets/{ganttDiagram-A5KZAMGK-BUK9KV20.js → ganttDiagram-A5KZAMGK-BsMXCAFW.js} +1 -1
  307. package/web-dist/assets/{gitGraphDiagram-K3NZZRJ6-D30kLUud.js → gitGraphDiagram-K3NZZRJ6-DdHtQ6nv.js} +1 -1
  308. package/web-dist/assets/{graph-Uq5Ey2rZ.js → graph-CdALIWH3.js} +1 -1
  309. package/web-dist/assets/{index-CPsRY9iy.js → index-BXqMB-YW.js} +375 -375
  310. package/web-dist/assets/{index-Dl_78WX8.js → index-BvAA5A4d.js} +1 -1
  311. package/web-dist/assets/{index-Ceg7oKI4.js → index-CORE-1FI.js} +1 -1
  312. package/web-dist/assets/{infoDiagram-LFFYTUFH-CcayyObn.js → infoDiagram-LFFYTUFH-CjnqZWNv.js} +1 -1
  313. package/web-dist/assets/{ishikawaDiagram-PHBUUO56-CoNyYrRv.js → ishikawaDiagram-PHBUUO56-D9jI-RC-.js} +1 -1
  314. package/web-dist/assets/{journeyDiagram-4ABVD52K-DhNuQwoO.js → journeyDiagram-4ABVD52K-DcqN6kzs.js} +1 -1
  315. package/web-dist/assets/{kanban-definition-K7BYSVSG-CiBoEtT_.js → kanban-definition-K7BYSVSG-DX89gI7K.js} +1 -1
  316. package/web-dist/assets/{layout-CclAjc31.js → layout-Cf5OI4nz.js} +1 -1
  317. package/web-dist/assets/{linear-D0T2Ue4i.js → linear-2kubajXl.js} +1 -1
  318. package/web-dist/assets/{mindmap-definition-YRQLILUH-Bs5KOLlF.js → mindmap-definition-YRQLILUH-B-vwF3Yf.js} +1 -1
  319. package/web-dist/assets/{pieDiagram-SKSYHLDU-D5ft8t9O.js → pieDiagram-SKSYHLDU-_g7lolAP.js} +1 -1
  320. package/web-dist/assets/{quadrantDiagram-337W2JSQ-CTrNOfNq.js → quadrantDiagram-337W2JSQ-CRzTvfRY.js} +1 -1
  321. package/web-dist/assets/{requirementDiagram-Z7DCOOCP-Lfkxswx5.js → requirementDiagram-Z7DCOOCP-D2IzaFED.js} +1 -1
  322. package/web-dist/assets/{sankeyDiagram-WA2Y5GQK-D7VXd1gH.js → sankeyDiagram-WA2Y5GQK-BWRYnDOv.js} +1 -1
  323. package/web-dist/assets/{sequenceDiagram-2WXFIKYE-BobMUXZE.js → sequenceDiagram-2WXFIKYE-CrhP8n1p.js} +1 -1
  324. package/web-dist/assets/{stateDiagram-RAJIS63D-BiTIuwsM.js → stateDiagram-RAJIS63D-DlhLnVxX.js} +1 -1
  325. package/web-dist/assets/stateDiagram-v2-FVOUBMTO-9ImNIYTQ.js +1 -0
  326. package/web-dist/assets/{timeline-definition-YZTLITO2-rKlur9hp.js → timeline-definition-YZTLITO2-DtSHcXX1.js} +1 -1
  327. package/web-dist/assets/{treemap-KZPCXAKY-BtERtPNk.js → treemap-KZPCXAKY-x6GBkxTu.js} +1 -1
  328. package/web-dist/assets/{vennDiagram-LZ73GAT5-Ke0QhSrP.js → vennDiagram-LZ73GAT5-DbxbFwgH.js} +1 -1
  329. package/web-dist/assets/{xychartDiagram-JWTSCODW-Cl96gv3X.js → xychartDiagram-JWTSCODW-B0PWrXcw.js} +1 -1
  330. package/web-dist/index.html +1 -1
  331. package/dist/routes/workspace.d.ts +0 -16
  332. package/dist/routes/workspace.d.ts.map +0 -1
  333. package/dist/routes/workspace.js.map +0 -1
  334. package/dist/routes/workspaces.d.ts +0 -15
  335. package/dist/routes/workspaces.d.ts.map +0 -1
  336. package/dist/routes/workspaces.js.map +0 -1
  337. package/dist/services/workspace-repositories.d.ts +0 -35
  338. package/dist/services/workspace-repositories.d.ts.map +0 -1
  339. package/dist/services/workspace-repositories.js.map +0 -1
  340. package/dist/services/workspace-state.d.ts +0 -8
  341. package/dist/services/workspace-state.d.ts.map +0 -1
  342. package/dist/services/workspace-state.js.map +0 -1
  343. package/dist/services/workspace-watcher.d.ts.map +0 -1
  344. package/dist/services/workspace-watcher.js.map +0 -1
  345. package/dist/services/workspaces.d.ts.map +0 -1
  346. package/dist/services/workspaces.js.map +0 -1
  347. package/dist/tools/workspace-tools.d.ts.map +0 -1
  348. package/dist/tools/workspace-tools.js.map +0 -1
  349. package/web-dist/assets/channel-Dpmc9iFy.js +0 -1
  350. package/web-dist/assets/classDiagram-VBA2DB6C-yqgzo6kv.js +0 -1
  351. package/web-dist/assets/classDiagram-v2-RAHNMMFH-yqgzo6kv.js +0 -1
  352. package/web-dist/assets/clone-BV2MQMkR.js +0 -1
  353. package/web-dist/assets/stateDiagram-v2-FVOUBMTO-BxQjvEWb.js +0 -1
@@ -1,8 +1,8 @@
1
1
  /**
2
- * Workspace Routes — REST API for server-side file browsing.
2
+ * Project Routes — REST API for server-side file browsing.
3
3
  *
4
4
  * Exposes the FileSystemSurface's list/read/stat operations
5
- * so the web UI can browse a remote workspace without needing
5
+ * so the web UI can browse a remote project without needing
6
6
  * the browser's File System Access API.
7
7
  */
8
8
  import { exec } from "node:child_process";
@@ -98,11 +98,11 @@ async function nodeFileSearch(root, query, maxResults) {
98
98
  await walk(root);
99
99
  return results.join("\n");
100
100
  }
101
- async function runWorkspaceSearch(workspaceRoot, query, mode, maxResults) {
101
+ async function runProjectSearch(projectRoot, query, mode, maxResults) {
102
102
  const isWin = platform() === "win32";
103
- const safeDir = workspaceRoot.replace(/"/g, '\\"');
103
+ const safeDir = projectRoot.replace(/"/g, '\\"');
104
104
  const safeQuery = query.replace(/"/g, '\\"');
105
- const execOpts = { timeout: 15_000, maxBuffer: 2 * 1024 * 1024, cwd: workspaceRoot };
105
+ const execOpts = { timeout: 15_000, maxBuffer: 2 * 1024 * 1024, cwd: projectRoot };
106
106
  try {
107
107
  if (mode === "content") {
108
108
  let stdout = "";
@@ -112,7 +112,7 @@ async function runWorkspaceSearch(workspaceRoot, query, mode, maxResults) {
112
112
  }
113
113
  catch {
114
114
  // rg not available — use Node.js-based search
115
- stdout = await nodeContentSearch(workspaceRoot, query, maxResults);
115
+ stdout = await nodeContentSearch(projectRoot, query, maxResults);
116
116
  }
117
117
  const lines = stdout.trim().split("\n").filter(Boolean).slice(0, maxResults);
118
118
  const matches = lines.map((line) => {
@@ -120,8 +120,8 @@ async function runWorkspaceSearch(workspaceRoot, query, mode, maxResults) {
120
120
  if (!match)
121
121
  return null;
122
122
  const absPath = match[1];
123
- const relPath = absPath.includes(workspaceRoot.replace(/\\/g, "/")) || absPath.includes(workspaceRoot)
124
- ? relative(workspaceRoot, absPath).replace(/\\/g, "/")
123
+ const relPath = absPath.includes(projectRoot.replace(/\\/g, "/")) || absPath.includes(projectRoot)
124
+ ? relative(projectRoot, absPath).replace(/\\/g, "/")
125
125
  : absPath.replace(/\\/g, "/");
126
126
  return { file: relPath, line: parseInt(match[2], 10), content: match[3].trim() };
127
127
  }).filter(Boolean);
@@ -144,13 +144,13 @@ async function runWorkspaceSearch(workspaceRoot, query, mode, maxResults) {
144
144
  }
145
145
  catch {
146
146
  // rg not available — use Node.js-based search
147
- stdout = await nodeFileSearch(workspaceRoot, cleanedQuery, maxResults);
147
+ stdout = await nodeFileSearch(projectRoot, cleanedQuery, maxResults);
148
148
  }
149
149
  const files = stdout.trim().split("\n").filter(Boolean).slice(0, maxResults).map((rawPath) => {
150
150
  const trimmed = rawPath.trim();
151
151
  // git ls-files returns relative paths; others return absolute
152
- const relPath = trimmed.includes(workspaceRoot.replace(/\\/g, "/")) || trimmed.includes(workspaceRoot)
153
- ? relative(workspaceRoot, trimmed).replace(/\\/g, "/")
152
+ const relPath = trimmed.includes(projectRoot.replace(/\\/g, "/")) || trimmed.includes(projectRoot)
153
+ ? relative(projectRoot, trimmed).replace(/\\/g, "/")
154
154
  : trimmed.replace(/\\/g, "/");
155
155
  const name = relPath.split("/").pop() || relPath;
156
156
  return { path: relPath, name };
@@ -213,29 +213,29 @@ function findFsSurfaceWithBackup(registry, filePath, preferredSurfaceId) {
213
213
  }
214
214
  return preferred ?? null;
215
215
  }
216
- export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sessionService, ws, workspaceService, workspaceState) {
217
- // GET /api/workspace/info — returns the active workspace root + surface ID
218
- app.get("/api/workspace/info", async (_req, reply) => {
216
+ export function registerProjectRoutes(app, surfaceRegistry, sessionState, sessionService, ws, projectService, projectState) {
217
+ // GET /api/project/info — returns the active project root + surface ID
218
+ app.get("/api/project/info", async (_req, reply) => {
219
219
  const fs = findFsSurface(surfaceRegistry);
220
220
  if (!fs) {
221
- return reply.status(404).send({ error: "NO_WORKSPACE", message: "No filesystem surface is running" });
221
+ return reply.status(404).send({ error: "NO_PROJECT", message: "No filesystem surface is running" });
222
222
  }
223
223
  const snap = fs.snapshot();
224
224
  return {
225
225
  surfaceId: snap.id,
226
- workspaceRoot: snap.metadata?.workspaceRoot ?? null,
226
+ projectRoot: snap.metadata?.projectRoot ?? null,
227
227
  state: snap.state,
228
228
  };
229
229
  });
230
- // POST /api/workspace/open — create a filesystem surface for the given path
230
+ // POST /api/project/open — create a filesystem surface for the given path
231
231
  // This is called when a client picks a directory (e.g. Electron native dialog)
232
232
  // so that ALL clients on the session can browse files via the gateway REST API.
233
- app.post("/api/workspace/open", async (req, reply) => {
233
+ app.post("/api/project/open", async (req, reply) => {
234
234
  const body = req.body;
235
- const workspacePath = body?.path;
235
+ const projectPath = body?.path;
236
236
  const sessionId = body?.sessionId;
237
237
  let nodeId = body?.nodeId || "gateway";
238
- if (!workspacePath) {
238
+ if (!projectPath) {
239
239
  return reply.status(400).send({ error: "VALIDATION_ERROR", message: "path is required" });
240
240
  }
241
241
  if (!sessionId) {
@@ -247,7 +247,7 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
247
247
  if (!isRemote && nodeId !== "gateway") {
248
248
  const { stat: fsStat } = await import("node:fs/promises");
249
249
  try {
250
- const info = await fsStat(workspacePath);
250
+ const info = await fsStat(projectPath);
251
251
  if (info.isDirectory()) {
252
252
  // Path exists locally — use gateway node instead of the stale remote one
253
253
  nodeId = "gateway";
@@ -263,7 +263,7 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
263
263
  if (isRemote) {
264
264
  // Remote node — verify path exists via WS proxy
265
265
  try {
266
- const info = await ws.proxyFsOp(nodeId, "stat", { path: workspacePath });
266
+ const info = await ws.proxyFsOp(nodeId, "stat", { path: projectPath });
267
267
  if (!info.isDirectory) {
268
268
  return reply.status(400).send({ error: "NOT_A_DIRECTORY", message: "The specified path is not a directory" });
269
269
  }
@@ -276,7 +276,7 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
276
276
  // Local gateway — verify the path exists on the local filesystem
277
277
  const { stat } = await import("node:fs/promises");
278
278
  try {
279
- const info = await stat(workspacePath);
279
+ const info = await stat(projectPath);
280
280
  if (!info.isDirectory()) {
281
281
  return reply.status(400).send({ error: "NOT_A_DIRECTORY", message: "The specified path is not a directory" });
282
282
  }
@@ -297,14 +297,14 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
297
297
  if (isRemote) {
298
298
  await surfaceRegistry.startSurface("remote-filesystem", surfaceId, {
299
299
  sessionId,
300
- workspaceRoot: workspacePath,
300
+ projectRoot: projectPath,
301
301
  nodeId,
302
302
  });
303
303
  }
304
304
  else {
305
305
  await surfaceRegistry.startSurface("filesystem", surfaceId, {
306
306
  sessionId,
307
- workspaceRoot: workspacePath,
307
+ projectRoot: projectPath,
308
308
  });
309
309
  }
310
310
  }
@@ -315,32 +315,32 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
315
315
  });
316
316
  }
317
317
  const session = sessionService?.getById(sessionId);
318
- let workspaceId = session?.workspaceId ?? null;
318
+ let projectId = session?.projectId ?? null;
319
319
  try {
320
- if (!workspaceId && session?.userId && workspaceService) {
321
- const workspace = workspaceService.getOrCreateForRoot({
320
+ if (!projectId && session?.userId && projectService) {
321
+ const project = projectService.getOrCreateForRoot({
322
322
  userId: session.userId,
323
- rootPath: workspacePath,
323
+ rootPath: projectPath,
324
324
  nodeId,
325
325
  });
326
- workspaceId = workspace.id;
327
- sessionService?.update(sessionId, { workspaceId, workspacePath });
326
+ projectId = project.id;
327
+ sessionService?.update(sessionId, { projectId, projectPath });
328
328
  }
329
329
  else {
330
- sessionService?.update(sessionId, { workspacePath });
330
+ sessionService?.update(sessionId, { projectPath });
331
331
  }
332
- if (workspaceId)
333
- workspaceService?.touch(workspaceId);
332
+ if (projectId)
333
+ projectService?.touch(projectId);
334
334
  }
335
335
  catch { /* best effort */ }
336
- const panelState = { open: true, remotePath: workspacePath, surfaceId, nodeId };
336
+ const panelState = { open: true, remotePath: projectPath, surfaceId, nodeId };
337
337
  if (sessionId && sessionState) {
338
- sessionState.set(sessionId, { "workspace.panel": panelState });
338
+ sessionState.set(sessionId, { "project.panel": panelState });
339
339
  }
340
- if (workspaceId && workspaceState) {
341
- const existing = workspaceState.get(workspaceId, ["workspace.ui"])["workspace.ui"];
342
- workspaceState.set(workspaceId, {
343
- "workspace.ui": {
340
+ if (projectId && projectState) {
341
+ const existing = projectState.get(projectId, ["project.ui"])["project.ui"];
342
+ projectState.set(projectId, {
343
+ "project.ui": {
344
344
  panel: panelState,
345
345
  tabs: existing?.tabs ?? null,
346
346
  layout: existing?.layout ?? null,
@@ -349,18 +349,18 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
349
349
  },
350
350
  });
351
351
  }
352
- return { surfaceId, workspaceRoot: workspacePath, nodeId, workspaceId };
352
+ return { surfaceId, projectRoot: projectPath, nodeId, projectId };
353
353
  });
354
- // GET /api/workspace/list?path=&surfaceId= — list directory entries
355
- app.get("/api/workspace/list", async (req, reply) => {
354
+ // GET /api/project/list?path=&surfaceId= — list directory entries
355
+ app.get("/api/project/list", async (req, reply) => {
356
356
  const { path: dirPath, surfaceId } = req.query;
357
357
  const fs = findFsSurface(surfaceRegistry, surfaceId, dirPath, { fallbackWhenTargetDisallowed: true });
358
358
  if (!fs) {
359
- return reply.status(404).send({ error: "NO_WORKSPACE", message: "No filesystem surface is running" });
359
+ return reply.status(404).send({ error: "NO_PROJECT", message: "No filesystem surface is running" });
360
360
  }
361
361
  try {
362
362
  const snap = fs.snapshot();
363
- const root = snap.metadata?.workspaceRoot;
363
+ const root = snap.metadata?.projectRoot;
364
364
  const targetPath = dirPath || root || ".";
365
365
  const entries = await fs.list(targetPath);
366
366
  return { path: targetPath, entries };
@@ -372,12 +372,12 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
372
372
  });
373
373
  }
374
374
  });
375
- // GET /api/workspace/read?path=&surfaceId= — read a file
376
- app.get("/api/workspace/read", async (req, reply) => {
375
+ // GET /api/project/read?path=&surfaceId= — read a file
376
+ app.get("/api/project/read", async (req, reply) => {
377
377
  const { path: filePath, surfaceId } = req.query;
378
378
  const fs = findFsSurface(surfaceRegistry, surfaceId, filePath, { fallbackWhenTargetDisallowed: true });
379
379
  if (!fs) {
380
- return reply.status(404).send({ error: "NO_WORKSPACE", message: "No filesystem surface is running" });
380
+ return reply.status(404).send({ error: "NO_PROJECT", message: "No filesystem surface is running" });
381
381
  }
382
382
  if (!filePath) {
383
383
  return reply.status(400).send({ error: "VALIDATION_ERROR", message: "path query parameter is required" });
@@ -394,8 +394,8 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
394
394
  });
395
395
  }
396
396
  });
397
- // POST /api/workspace/write — write a file while preserving undo backups
398
- app.post("/api/workspace/write", async (req, reply) => {
397
+ // POST /api/project/write — write a file while preserving undo backups
398
+ app.post("/api/project/write", async (req, reply) => {
399
399
  const body = req.body;
400
400
  const filePath = body?.path;
401
401
  const content = body?.content;
@@ -407,7 +407,7 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
407
407
  }
408
408
  const fs = findFsSurfaceWithBackup(surfaceRegistry, filePath, body?.surfaceId);
409
409
  if (!fs) {
410
- return reply.status(404).send({ error: "NO_WORKSPACE", message: "No filesystem surface is running" });
410
+ return reply.status(404).send({ error: "NO_PROJECT", message: "No filesystem surface is running" });
411
411
  }
412
412
  try {
413
413
  await fs.write(filePath, content);
@@ -415,10 +415,10 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
415
415
  }
416
416
  catch (err) {
417
417
  const message = err instanceof Error ? err.message : "Failed to write file";
418
- const isValidationError = err instanceof PathTraversalError || (err instanceof Error && (message.includes("outside workspace root")
418
+ const isValidationError = err instanceof PathTraversalError || (err instanceof Error && (message.includes("outside project root")
419
419
  || message.includes("refers to a symlink")
420
420
  || message.includes("must be relative")
421
- || message.includes("escapes workspace boundary")
421
+ || message.includes("escapes project boundary")
422
422
  || message.includes("path traversal")));
423
423
  return reply.status(isValidationError ? 400 : 500).send({
424
424
  error: isValidationError ? "VALIDATION_ERROR" : "WRITE_FAILED",
@@ -426,12 +426,12 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
426
426
  });
427
427
  }
428
428
  });
429
- // GET /api/workspace/stat?path=&surfaceId= — stat a file or directory
430
- app.get("/api/workspace/stat", async (req, reply) => {
429
+ // GET /api/project/stat?path=&surfaceId= — stat a file or directory
430
+ app.get("/api/project/stat", async (req, reply) => {
431
431
  const { path: targetPath, surfaceId } = req.query;
432
432
  const fs = findFsSurface(surfaceRegistry, surfaceId, targetPath, { fallbackWhenTargetDisallowed: true });
433
433
  if (!fs) {
434
- return reply.status(404).send({ error: "NO_WORKSPACE", message: "No filesystem surface is running" });
434
+ return reply.status(404).send({ error: "NO_PROJECT", message: "No filesystem surface is running" });
435
435
  }
436
436
  if (!targetPath) {
437
437
  return reply.status(400).send({ error: "VALIDATION_ERROR", message: "path query parameter is required" });
@@ -447,8 +447,8 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
447
447
  });
448
448
  }
449
449
  });
450
- // POST /api/workspace/undo — restore a file to its pre-modification state
451
- app.post("/api/workspace/undo", async (req, reply) => {
450
+ // POST /api/project/undo — restore a file to its pre-modification state
451
+ app.post("/api/project/undo", async (req, reply) => {
452
452
  const body = req.body;
453
453
  const filePath = body?.path;
454
454
  if (!filePath) {
@@ -456,7 +456,7 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
456
456
  }
457
457
  const fs = findFsSurfaceWithBackup(surfaceRegistry, filePath, body?.surfaceId);
458
458
  if (!fs) {
459
- return reply.status(404).send({ error: "NO_WORKSPACE", message: "No filesystem surface is running" });
459
+ return reply.status(404).send({ error: "NO_PROJECT", message: "No filesystem surface is running" });
460
460
  }
461
461
  try {
462
462
  const restored = await fs.restore(filePath);
@@ -472,12 +472,12 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
472
472
  });
473
473
  }
474
474
  });
475
- // GET /api/workspace/backup?path= — get the original (backed-up) content of a file
476
- app.get("/api/workspace/backup", async (req, reply) => {
475
+ // GET /api/project/backup?path= — get the original (backed-up) content of a file
476
+ app.get("/api/project/backup", async (req, reply) => {
477
477
  const { path: filePath, surfaceId } = req.query;
478
478
  const fs = findFsSurface(surfaceRegistry, surfaceId, filePath, { fallbackWhenTargetDisallowed: true });
479
479
  if (!fs) {
480
- return reply.status(404).send({ error: "NO_WORKSPACE", message: "No filesystem surface is running" });
480
+ return reply.status(404).send({ error: "NO_PROJECT", message: "No filesystem surface is running" });
481
481
  }
482
482
  if (!filePath) {
483
483
  return reply.status(400).send({ error: "VALIDATION_ERROR", message: "path query parameter is required" });
@@ -502,8 +502,8 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
502
502
  hasBackup: true,
503
503
  };
504
504
  });
505
- // POST /api/workspace/apply-diff — apply merged file content and clear backup
506
- app.post("/api/workspace/apply-diff", async (req, reply) => {
505
+ // POST /api/project/apply-diff — apply merged file content and clear backup
506
+ app.post("/api/project/apply-diff", async (req, reply) => {
507
507
  const body = req.body;
508
508
  const filePath = body?.path;
509
509
  const content = body?.content;
@@ -512,7 +512,7 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
512
512
  }
513
513
  const fs = findFsSurface(surfaceRegistry, body?.surfaceId, filePath);
514
514
  if (!fs) {
515
- return reply.status(404).send({ error: "NO_WORKSPACE", message: "No filesystem surface is running" });
515
+ return reply.status(404).send({ error: "NO_PROJECT", message: "No filesystem surface is running" });
516
516
  }
517
517
  try {
518
518
  // If content is provided, write it through the surface to keep path validation
@@ -525,10 +525,10 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
525
525
  }
526
526
  catch (err) {
527
527
  const message = err instanceof Error ? err.message : "Failed to apply diff";
528
- const isValidationError = err instanceof PathTraversalError || (err instanceof Error && (message.includes("outside workspace root")
528
+ const isValidationError = err instanceof PathTraversalError || (err instanceof Error && (message.includes("outside project root")
529
529
  || message.includes("refers to a symlink")
530
530
  || message.includes("must be relative")
531
- || message.includes("escapes workspace boundary")
531
+ || message.includes("escapes project boundary")
532
532
  || message.includes("path traversal")));
533
533
  return reply.status(isValidationError ? 400 : 500).send({
534
534
  error: isValidationError ? "VALIDATION_ERROR" : "APPLY_FAILED",
@@ -536,8 +536,8 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
536
536
  });
537
537
  }
538
538
  });
539
- // POST /api/workspace/undo-all — restore all modified files to pre-modification state
540
- app.post("/api/workspace/undo-all", async (req, reply) => {
539
+ // POST /api/project/undo-all — restore all modified files to pre-modification state
540
+ app.post("/api/project/undo-all", async (req, reply) => {
541
541
  const body = req.body;
542
542
  const paths = body?.paths;
543
543
  if (!paths || paths.length === 0) {
@@ -560,8 +560,8 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
560
560
  }
561
561
  return { ok: true, results };
562
562
  });
563
- // POST /api/workspace/delete — delete a file or directory
564
- app.post("/api/workspace/delete", async (req, reply) => {
563
+ // POST /api/project/delete — delete a file or directory
564
+ app.post("/api/project/delete", async (req, reply) => {
565
565
  const body = req.body;
566
566
  const targetPath = body?.path;
567
567
  if (!targetPath) {
@@ -569,10 +569,10 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
569
569
  }
570
570
  const fs = findFsSurface(surfaceRegistry, body?.surfaceId, targetPath);
571
571
  if (!fs) {
572
- return reply.status(404).send({ error: "NO_WORKSPACE", message: "No filesystem surface is running" });
572
+ return reply.status(404).send({ error: "NO_PROJECT", message: "No filesystem surface is running" });
573
573
  }
574
574
  if (!(fs instanceof FileSystemSurface)) {
575
- return reply.status(501).send({ error: "NOT_SUPPORTED", message: "File management not supported on remote workspaces yet" });
575
+ return reply.status(501).send({ error: "NOT_SUPPORTED", message: "File management not supported on remote projects yet" });
576
576
  }
577
577
  try {
578
578
  if (body?.isDirectory) {
@@ -588,8 +588,8 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
588
588
  return reply.status(500).send({ error: "DELETE_FAILED", message });
589
589
  }
590
590
  });
591
- // POST /api/workspace/rename — rename a file or directory
592
- app.post("/api/workspace/rename", async (req, reply) => {
591
+ // POST /api/project/rename — rename a file or directory
592
+ app.post("/api/project/rename", async (req, reply) => {
593
593
  const body = req.body;
594
594
  const targetPath = body?.path;
595
595
  const newName = body?.newName;
@@ -602,10 +602,10 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
602
602
  }
603
603
  const fs = findFsSurface(surfaceRegistry, body?.surfaceId, targetPath);
604
604
  if (!fs) {
605
- return reply.status(404).send({ error: "NO_WORKSPACE", message: "No filesystem surface is running" });
605
+ return reply.status(404).send({ error: "NO_PROJECT", message: "No filesystem surface is running" });
606
606
  }
607
607
  if (!(fs instanceof FileSystemSurface)) {
608
- return reply.status(501).send({ error: "NOT_SUPPORTED", message: "File management not supported on remote workspaces yet" });
608
+ return reply.status(501).send({ error: "NOT_SUPPORTED", message: "File management not supported on remote projects yet" });
609
609
  }
610
610
  try {
611
611
  const newPath = await fs.renameFile(targetPath, newName);
@@ -616,8 +616,8 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
616
616
  return reply.status(500).send({ error: "RENAME_FAILED", message });
617
617
  }
618
618
  });
619
- // POST /api/workspace/move — move a file or directory to a new parent
620
- app.post("/api/workspace/move", async (req, reply) => {
619
+ // POST /api/project/move — move a file or directory to a new parent
620
+ app.post("/api/project/move", async (req, reply) => {
621
621
  const body = req.body;
622
622
  const srcPath = body?.srcPath;
623
623
  const destDir = body?.destDir;
@@ -626,10 +626,10 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
626
626
  }
627
627
  const fs = findFsSurface(surfaceRegistry, body?.surfaceId, srcPath);
628
628
  if (!fs) {
629
- return reply.status(404).send({ error: "NO_WORKSPACE", message: "No filesystem surface is running" });
629
+ return reply.status(404).send({ error: "NO_PROJECT", message: "No filesystem surface is running" });
630
630
  }
631
631
  if (!(fs instanceof FileSystemSurface)) {
632
- return reply.status(501).send({ error: "NOT_SUPPORTED", message: "File management not supported on remote workspaces yet" });
632
+ return reply.status(501).send({ error: "NOT_SUPPORTED", message: "File management not supported on remote projects yet" });
633
633
  }
634
634
  try {
635
635
  const newPath = await fs.moveFile(srcPath, destDir);
@@ -640,8 +640,8 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
640
640
  return reply.status(500).send({ error: "MOVE_FAILED", message });
641
641
  }
642
642
  });
643
- // POST /api/workspace/create-file — create a new empty file
644
- app.post("/api/workspace/create-file", async (req, reply) => {
643
+ // POST /api/project/create-file — create a new empty file
644
+ app.post("/api/project/create-file", async (req, reply) => {
645
645
  const body = req.body;
646
646
  const filePath = body?.path;
647
647
  if (!filePath) {
@@ -649,10 +649,10 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
649
649
  }
650
650
  const fs = findFsSurface(surfaceRegistry, body?.surfaceId, filePath);
651
651
  if (!fs) {
652
- return reply.status(404).send({ error: "NO_WORKSPACE", message: "No filesystem surface is running" });
652
+ return reply.status(404).send({ error: "NO_PROJECT", message: "No filesystem surface is running" });
653
653
  }
654
654
  if (!(fs instanceof FileSystemSurface)) {
655
- return reply.status(501).send({ error: "NOT_SUPPORTED", message: "File management not supported on remote workspaces yet" });
655
+ return reply.status(501).send({ error: "NOT_SUPPORTED", message: "File management not supported on remote projects yet" });
656
656
  }
657
657
  try {
658
658
  await fs.createFile(filePath, body?.content ?? "");
@@ -663,8 +663,8 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
663
663
  return reply.status(500).send({ error: "CREATE_FAILED", message });
664
664
  }
665
665
  });
666
- // POST /api/workspace/create-directory — create a new directory
667
- app.post("/api/workspace/create-directory", async (req, reply) => {
666
+ // POST /api/project/create-directory — create a new directory
667
+ app.post("/api/project/create-directory", async (req, reply) => {
668
668
  const body = req.body;
669
669
  const dirPath = body?.path;
670
670
  if (!dirPath) {
@@ -672,10 +672,10 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
672
672
  }
673
673
  const fs = findFsSurface(surfaceRegistry, body?.surfaceId, dirPath);
674
674
  if (!fs) {
675
- return reply.status(404).send({ error: "NO_WORKSPACE", message: "No filesystem surface is running" });
675
+ return reply.status(404).send({ error: "NO_PROJECT", message: "No filesystem surface is running" });
676
676
  }
677
677
  if (!(fs instanceof FileSystemSurface)) {
678
- return reply.status(501).send({ error: "NOT_SUPPORTED", message: "File management not supported on remote workspaces yet" });
678
+ return reply.status(501).send({ error: "NOT_SUPPORTED", message: "File management not supported on remote projects yet" });
679
679
  }
680
680
  try {
681
681
  await fs.createDirectory(dirPath);
@@ -686,9 +686,9 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
686
686
  return reply.status(500).send({ error: "CREATE_DIR_FAILED", message });
687
687
  }
688
688
  });
689
- // GET /api/workspace/search?query=&mode=&limit=&surfaceId=
689
+ // GET /api/project/search?query=&mode=&limit=&surfaceId=
690
690
  // mode: "files" (filename search) | "content" (grep/ripgrep content search)
691
- app.get("/api/workspace/search", async (req, reply) => {
691
+ app.get("/api/project/search", async (req, reply) => {
692
692
  const { query, mode = "files", limit: limitStr, surfaceId } = req.query;
693
693
  if (!query) {
694
694
  return reply.status(400).send({ error: "VALIDATION_ERROR", message: "query is required" });
@@ -696,28 +696,28 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
696
696
  const maxResults = Math.min(Math.max(parseInt(limitStr || "50", 10) || 50, 1), 200);
697
697
  const fs = findFsSurface(surfaceRegistry, surfaceId);
698
698
  if (!fs) {
699
- return reply.status(404).send({ error: "NO_WORKSPACE", message: "No filesystem surface is running" });
699
+ return reply.status(404).send({ error: "NO_PROJECT", message: "No filesystem surface is running" });
700
700
  }
701
701
  const snap = fs.snapshot();
702
- const workspaceRoot = snap.metadata?.workspaceRoot;
703
- if (!workspaceRoot) {
704
- return reply.status(400).send({ error: "NO_ROOT", message: "No workspace root configured" });
702
+ const projectRoot = snap.metadata?.projectRoot;
703
+ if (!projectRoot) {
704
+ return reply.status(400).send({ error: "NO_ROOT", message: "No project root configured" });
705
705
  }
706
706
  try {
707
707
  if (fs instanceof RemoteFileSystemSurface) {
708
708
  const nodeId = fs.nodeId ?? snap.metadata?.nodeId;
709
709
  if (!nodeId || !ws) {
710
- return reply.status(501).send({ error: "NOT_SUPPORTED", message: "Workspace search is not available for this remote workspace" });
710
+ return reply.status(501).send({ error: "NOT_SUPPORTED", message: "Project search is not available for this remote project" });
711
711
  }
712
- const result = await ws.proxyFsOp(nodeId, "search-workspace", {
713
- path: workspaceRoot,
712
+ const result = await ws.proxyFsOp(nodeId, "search-project", {
713
+ path: projectRoot,
714
714
  query,
715
715
  mode,
716
716
  limit: maxResults,
717
717
  }, 20_000);
718
718
  return result;
719
719
  }
720
- return await runWorkspaceSearch(workspaceRoot, query, mode === "content" ? "content" : "files", maxResults);
720
+ return await runProjectSearch(projectRoot, query, mode === "content" ? "content" : "files", maxResults);
721
721
  }
722
722
  catch (err) {
723
723
  const message = err instanceof Error ? err.message : "Search failed";
@@ -725,4 +725,4 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
725
725
  }
726
726
  });
727
727
  }
728
- //# sourceMappingURL=workspace.js.map
728
+ //# sourceMappingURL=project.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/routes/project.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { FastifyInstance } from "fastify";
2
+ import type { AppConfig } from "../config.js";
3
+ import type { ProjectService } from "../services/projects.js";
4
+ import type { SessionService } from "../services/sessions.js";
5
+ import type { ProjectStateService } from "../services/project-state.js";
6
+ import type { RepositoryService } from "../services/repositories.js";
7
+ import { GitService } from "../services/git.js";
8
+ import type { WsControlPlane } from "../ws.js";
9
+ export interface ProjectEntityRouteDeps {
10
+ repoService?: RepositoryService;
11
+ gitService?: GitService;
12
+ ws?: WsControlPlane;
13
+ }
14
+ export declare function registerProjectEntityRoutes(app: FastifyInstance, config: AppConfig, projectService: ProjectService, sessionService: SessionService, projectState?: ProjectStateService, deps?: ProjectEntityRouteDeps): void;
15
+ //# sourceMappingURL=projects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/routes/projects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAgB,MAAM,SAAS,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAMhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG/C,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,EAAE,CAAC,EAAE,cAAc,CAAC;CACrB;AAED,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,eAAe,EACpB,MAAM,EAAE,SAAS,EACjB,cAAc,EAAE,cAAc,EAC9B,cAAc,EAAE,cAAc,EAC9B,YAAY,CAAC,EAAE,mBAAmB,EAClC,IAAI,GAAE,sBAA2B,QAsRlC"}