@surething/cockpit 1.0.213 → 1.0.214

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 (566) hide show
  1. package/.next-prod/BUILD_ID +1 -1
  2. package/.next-prod/app-path-routes-manifest.json +7 -3
  3. package/.next-prod/build-manifest.json +2 -2
  4. package/.next-prod/prerender-manifest.json +3 -3
  5. package/.next-prod/routes-manifest.json +24 -0
  6. package/.next-prod/server/app/_global-error/page.js +3 -3
  7. package/.next-prod/server/app/_global-error/page.js.nft.json +1 -1
  8. package/.next-prod/server/app/_global-error/page_client-reference-manifest.js +1 -1
  9. package/.next-prod/server/app/_global-error.html +1 -1
  10. package/.next-prod/server/app/_global-error.rsc +1 -1
  11. package/.next-prod/server/app/_global-error.segments/_full.segment.rsc +1 -1
  12. package/.next-prod/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  13. package/.next-prod/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  14. package/.next-prod/server/app/_global-error.segments/_head.segment.rsc +1 -1
  15. package/.next-prod/server/app/_global-error.segments/_index.segment.rsc +1 -1
  16. package/.next-prod/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  17. package/.next-prod/server/app/_not-found/page.js +2 -2
  18. package/.next-prod/server/app/_not-found/page.js.nft.json +1 -1
  19. package/.next-prod/server/app/_not-found/page_client-reference-manifest.js +1 -1
  20. package/.next-prod/server/app/_not-found.html +1 -1
  21. package/.next-prod/server/app/_not-found.rsc +2 -2
  22. package/.next-prod/server/app/_not-found.segments/_full.segment.rsc +2 -2
  23. package/.next-prod/server/app/_not-found.segments/_head.segment.rsc +1 -1
  24. package/.next-prod/server/app/_not-found.segments/_index.segment.rsc +2 -2
  25. package/.next-prod/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  26. package/.next-prod/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  27. package/.next-prod/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  28. package/.next-prod/server/app/api/agent/test/route.js +1 -1
  29. package/.next-prod/server/app/api/agent/test/route.js.nft.json +1 -1
  30. package/.next-prod/server/app/api/bash/route.js +1 -1
  31. package/.next-prod/server/app/api/bash/route.js.nft.json +1 -1
  32. package/.next-prod/server/app/api/chat/codex/route.js +2 -2
  33. package/.next-prod/server/app/api/chat/codex/route.js.nft.json +1 -1
  34. package/.next-prod/server/app/api/chat/deepseek/route.js +1 -1
  35. package/.next-prod/server/app/api/chat/deepseek/route.js.nft.json +1 -1
  36. package/.next-prod/server/app/api/chat/kimi/route.js +2 -2
  37. package/.next-prod/server/app/api/chat/kimi/route.js.nft.json +1 -1
  38. package/.next-prod/server/app/api/chat/ollama/route.js +3 -3
  39. package/.next-prod/server/app/api/chat/ollama/route.js.nft.json +1 -1
  40. package/.next-prod/server/app/api/chat/route.js +2 -2
  41. package/.next-prod/server/app/api/chat/route.js.nft.json +1 -1
  42. package/.next-prod/server/app/api/claude-stats/route.js +1 -1
  43. package/.next-prod/server/app/api/claude-stats/route.js.nft.json +1 -1
  44. package/.next-prod/server/app/api/commands/route.js +1 -1
  45. package/.next-prod/server/app/api/commands/route.js.nft.json +1 -1
  46. package/.next-prod/server/app/api/comments/route.js +1 -1
  47. package/.next-prod/server/app/api/comments/route.js.nft.json +1 -1
  48. package/.next-prod/server/app/api/db/columns/route.js +2 -2
  49. package/.next-prod/server/app/api/db/columns/route.js.nft.json +1 -1
  50. package/.next-prod/server/app/api/db/connect/route.js +1 -1
  51. package/.next-prod/server/app/api/db/connect/route.js.nft.json +1 -1
  52. package/.next-prod/server/app/api/db/disconnect/route.js +1 -1
  53. package/.next-prod/server/app/api/db/disconnect/route.js.nft.json +1 -1
  54. package/.next-prod/server/app/api/db/export/route.js +1 -1
  55. package/.next-prod/server/app/api/db/export/route.js.nft.json +1 -1
  56. package/.next-prod/server/app/api/db/query/route.js +1 -1
  57. package/.next-prod/server/app/api/db/query/route.js.nft.json +1 -1
  58. package/.next-prod/server/app/api/db/schemas/route.js +1 -1
  59. package/.next-prod/server/app/api/db/schemas/route.js.nft.json +1 -1
  60. package/.next-prod/server/app/api/dev/spans/route.js +1 -1
  61. package/.next-prod/server/app/api/dev/spans/route.js.nft.json +1 -1
  62. package/.next-prod/server/app/api/extension/version/route.js +1 -1
  63. package/.next-prod/server/app/api/extension/version/route.js.nft.json +1 -1
  64. package/.next-prod/server/app/api/file/route.js +1 -1
  65. package/.next-prod/server/app/api/file/route.js.nft.json +1 -1
  66. package/.next-prod/server/app/api/files/blame/route.js +1 -1
  67. package/.next-prod/server/app/api/files/blame/route.js.nft.json +1 -1
  68. package/.next-prod/server/app/api/files/clipboard/route.js +1 -1
  69. package/.next-prod/server/app/api/files/clipboard/route.js.nft.json +1 -1
  70. package/.next-prod/server/app/api/files/copy/route.js +1 -1
  71. package/.next-prod/server/app/api/files/copy/route.js.nft.json +1 -1
  72. package/.next-prod/server/app/api/files/delete/route.js +1 -1
  73. package/.next-prod/server/app/api/files/delete/route.js.nft.json +1 -1
  74. package/.next-prod/server/app/api/files/expanded/route.js +1 -1
  75. package/.next-prod/server/app/api/files/expanded/route.js.nft.json +1 -1
  76. package/.next-prod/server/app/api/files/index/route.js +1 -1
  77. package/.next-prod/server/app/api/files/index/route.js.nft.json +1 -1
  78. package/.next-prod/server/app/api/files/init/route.js +1 -1
  79. package/.next-prod/server/app/api/files/init/route.js.nft.json +1 -1
  80. package/.next-prod/server/app/api/files/paste/route.js +1 -1
  81. package/.next-prod/server/app/api/files/paste/route.js.nft.json +1 -1
  82. package/.next-prod/server/app/api/files/read/route.js +1 -1
  83. package/.next-prod/server/app/api/files/read/route.js.nft.json +1 -1
  84. package/.next-prod/server/app/api/files/readdir/route.js +1 -1
  85. package/.next-prod/server/app/api/files/readdir/route.js.nft.json +1 -1
  86. package/.next-prod/server/app/api/files/recent/route.js +1 -1
  87. package/.next-prod/server/app/api/files/recent/route.js.nft.json +1 -1
  88. package/.next-prod/server/app/api/files/save/route.js +1 -1
  89. package/.next-prod/server/app/api/files/save/route.js.nft.json +1 -1
  90. package/.next-prod/server/app/api/files/search/route.js +1 -1
  91. package/.next-prod/server/app/api/files/search/route.js.nft.json +1 -1
  92. package/.next-prod/server/app/api/files/stat/route.js +1 -1
  93. package/.next-prod/server/app/api/files/stat/route.js.nft.json +1 -1
  94. package/.next-prod/server/app/api/files/text/route.js +1 -1
  95. package/.next-prod/server/app/api/files/text/route.js.nft.json +1 -1
  96. package/.next-prod/server/app/api/git/branch-diff/route.js +1 -1
  97. package/.next-prod/server/app/api/git/branch-diff/route.js.nft.json +1 -1
  98. package/.next-prod/server/app/api/git/branches/route.js +1 -1
  99. package/.next-prod/server/app/api/git/branches/route.js.nft.json +1 -1
  100. package/.next-prod/server/app/api/git/commit-diff/route.js +1 -1
  101. package/.next-prod/server/app/api/git/commit-diff/route.js.nft.json +1 -1
  102. package/.next-prod/server/app/api/git/commits/route.js +1 -1
  103. package/.next-prod/server/app/api/git/commits/route.js.nft.json +1 -1
  104. package/.next-prod/server/app/api/git/diff/route.js +1 -1
  105. package/.next-prod/server/app/api/git/diff/route.js.nft.json +1 -1
  106. package/.next-prod/server/app/api/git/discard/route.js +1 -1
  107. package/.next-prod/server/app/api/git/discard/route.js.nft.json +1 -1
  108. package/.next-prod/server/app/api/git/stage/route.js +1 -1
  109. package/.next-prod/server/app/api/git/stage/route.js.nft.json +1 -1
  110. package/.next-prod/server/app/api/git/status/route.js +1 -1
  111. package/.next-prod/server/app/api/git/status/route.js.nft.json +1 -1
  112. package/.next-prod/server/app/api/git/unstage/route.js +1 -1
  113. package/.next-prod/server/app/api/git/unstage/route.js.nft.json +1 -1
  114. package/.next-prod/server/app/api/git/worktree/route.js +1 -1
  115. package/.next-prod/server/app/api/git/worktree/route.js.nft.json +1 -1
  116. package/.next-prod/server/app/api/global-state/route.js +1 -1
  117. package/.next-prod/server/app/api/global-state/route.js.nft.json +1 -1
  118. package/.next-prod/server/app/api/jupyter/load/route.js +1 -1
  119. package/.next-prod/server/app/api/jupyter/load/route.js.nft.json +1 -1
  120. package/.next-prod/server/app/api/jupyter/save/route.js +1 -1
  121. package/.next-prod/server/app/api/jupyter/save/route.js.nft.json +1 -1
  122. package/.next-prod/server/app/api/jupyter/shutdown/route.js +1 -1
  123. package/.next-prod/server/app/api/jupyter/shutdown/route.js.nft.json +1 -1
  124. package/.next-prod/server/app/api/lsp/definition/route.js +1 -1
  125. package/.next-prod/server/app/api/lsp/definition/route.js.nft.json +1 -1
  126. package/.next-prod/server/app/api/lsp/hover/route.js +1 -1
  127. package/.next-prod/server/app/api/lsp/hover/route.js.nft.json +1 -1
  128. package/.next-prod/server/app/api/lsp/references/route.js +1 -1
  129. package/.next-prod/server/app/api/lsp/references/route.js.nft.json +1 -1
  130. package/.next-prod/server/app/api/lsp/status/route.js +1 -1
  131. package/.next-prod/server/app/api/lsp/status/route.js.nft.json +1 -1
  132. package/.next-prod/server/app/api/lsp/warmup/route.js +1 -1
  133. package/.next-prod/server/app/api/lsp/warmup/route.js.nft.json +1 -1
  134. package/.next-prod/server/app/api/mysql/columns/route.js +1 -1
  135. package/.next-prod/server/app/api/mysql/columns/route.js.nft.json +1 -1
  136. package/.next-prod/server/app/api/mysql/connect/route.js +1 -1
  137. package/.next-prod/server/app/api/mysql/connect/route.js.nft.json +1 -1
  138. package/.next-prod/server/app/api/mysql/disconnect/route.js +1 -1
  139. package/.next-prod/server/app/api/mysql/disconnect/route.js.nft.json +1 -1
  140. package/.next-prod/server/app/api/mysql/export/route.js +1 -1
  141. package/.next-prod/server/app/api/mysql/export/route.js.nft.json +1 -1
  142. package/.next-prod/server/app/api/mysql/query/route.js +1 -1
  143. package/.next-prod/server/app/api/mysql/query/route.js.nft.json +1 -1
  144. package/.next-prod/server/app/api/mysql/schemas/route.js +1 -1
  145. package/.next-prod/server/app/api/mysql/schemas/route.js.nft.json +1 -1
  146. package/.next-prod/server/app/api/neo4j/connect/route.js +1 -1
  147. package/.next-prod/server/app/api/neo4j/connect/route.js.nft.json +1 -1
  148. package/.next-prod/server/app/api/neo4j/disconnect/route.js +1 -1
  149. package/.next-prod/server/app/api/neo4j/disconnect/route.js.nft.json +1 -1
  150. package/.next-prod/server/app/api/neo4j/query/route.js +1 -1
  151. package/.next-prod/server/app/api/neo4j/query/route.js.nft.json +1 -1
  152. package/.next-prod/server/app/api/neo4j/schema/route.js +1 -1
  153. package/.next-prod/server/app/api/neo4j/schema/route.js.nft.json +1 -1
  154. package/.next-prod/server/app/api/note/route.js +1 -1
  155. package/.next-prod/server/app/api/note/route.js.nft.json +1 -1
  156. package/.next-prod/server/app/api/ollama/models/route.js +1 -1
  157. package/.next-prod/server/app/api/ollama/models/route.js.nft.json +1 -1
  158. package/.next-prod/server/app/api/ollama/start/route.js +1 -1
  159. package/.next-prod/server/app/api/ollama/start/route.js.nft.json +1 -1
  160. package/.next-prod/server/app/api/open-cursor/route.js +1 -1
  161. package/.next-prod/server/app/api/open-cursor/route.js.nft.json +1 -1
  162. package/.next-prod/server/app/api/open-vscode/route.js +1 -1
  163. package/.next-prod/server/app/api/open-vscode/route.js.nft.json +1 -1
  164. package/.next-prod/server/app/api/pick-folder/route.js +1 -1
  165. package/.next-prod/server/app/api/pick-folder/route.js.nft.json +1 -1
  166. package/.next-prod/server/app/api/pinned-sessions/route.js +1 -1
  167. package/.next-prod/server/app/api/pinned-sessions/route.js.nft.json +1 -1
  168. package/.next-prod/server/app/api/project-settings/route.js +1 -1
  169. package/.next-prod/server/app/api/project-settings/route.js.nft.json +1 -1
  170. package/.next-prod/server/app/api/project-state/route.js +1 -1
  171. package/.next-prod/server/app/api/project-state/route.js.nft.json +1 -1
  172. package/.next-prod/server/app/api/projectGraph/affected/route.js +1 -0
  173. package/.next-prod/server/app/api/projectGraph/affected/route.js.nft.json +1 -0
  174. package/.next-prod/server/app/api/projectGraph/affected/route_client-reference-manifest.js +1 -0
  175. package/.next-prod/server/app/api/projectGraph/callees/route.js +1 -1
  176. package/.next-prod/server/app/api/projectGraph/callees/route.js.nft.json +1 -1
  177. package/.next-prod/server/app/api/projectGraph/callers/route.js +1 -1
  178. package/.next-prod/server/app/api/projectGraph/callers/route.js.nft.json +1 -1
  179. package/.next-prod/server/app/api/projectGraph/coedit/route.js +1 -1
  180. package/.next-prod/server/app/api/projectGraph/coedit/route.js.nft.json +1 -1
  181. package/.next-prod/server/app/api/projectGraph/context/route.js +1 -0
  182. package/.next-prod/server/app/api/projectGraph/context/route.js.nft.json +1 -0
  183. package/.next-prod/server/app/api/projectGraph/context/route_client-reference-manifest.js +1 -0
  184. package/.next-prod/server/app/api/projectGraph/file/route.js +1 -1
  185. package/.next-prod/server/app/api/projectGraph/file/route.js.nft.json +1 -1
  186. package/.next-prod/server/app/api/projectGraph/file-functions/route.js +1 -1
  187. package/.next-prod/server/app/api/projectGraph/file-functions/route.js.nft.json +1 -1
  188. package/.next-prod/server/app/api/projectGraph/impact/route.js +1 -1
  189. package/.next-prod/server/app/api/projectGraph/impact/route.js.nft.json +1 -1
  190. package/.next-prod/server/app/api/projectGraph/related/route.js +1 -0
  191. package/.next-prod/server/app/api/projectGraph/related/route.js.nft.json +1 -0
  192. package/.next-prod/server/app/api/projectGraph/related/route_client-reference-manifest.js +1 -0
  193. package/.next-prod/server/app/api/projectGraph/risk/route.js +1 -0
  194. package/.next-prod/server/app/api/projectGraph/risk/route.js.nft.json +1 -0
  195. package/.next-prod/server/app/api/projectGraph/risk/route_client-reference-manifest.js +1 -0
  196. package/.next-prod/server/app/api/projectGraph/search/route.js +1 -1
  197. package/.next-prod/server/app/api/projectGraph/search/route.js.nft.json +1 -1
  198. package/.next-prod/server/app/api/projects/route.js +1 -1
  199. package/.next-prod/server/app/api/projects/route.js.nft.json +1 -1
  200. package/.next-prod/server/app/api/redis/command/route.js +1 -1
  201. package/.next-prod/server/app/api/redis/command/route.js.nft.json +1 -1
  202. package/.next-prod/server/app/api/redis/connect/route.js +1 -1
  203. package/.next-prod/server/app/api/redis/connect/route.js.nft.json +1 -1
  204. package/.next-prod/server/app/api/redis/delete/route.js +1 -1
  205. package/.next-prod/server/app/api/redis/delete/route.js.nft.json +1 -1
  206. package/.next-prod/server/app/api/redis/disconnect/route.js +1 -1
  207. package/.next-prod/server/app/api/redis/disconnect/route.js.nft.json +1 -1
  208. package/.next-prod/server/app/api/redis/get/route.js +1 -1
  209. package/.next-prod/server/app/api/redis/get/route.js.nft.json +1 -1
  210. package/.next-prod/server/app/api/redis/keys/route.js +1 -1
  211. package/.next-prod/server/app/api/redis/keys/route.js.nft.json +1 -1
  212. package/.next-prod/server/app/api/redis/set/route.js +1 -1
  213. package/.next-prod/server/app/api/redis/set/route.js.nft.json +1 -1
  214. package/.next-prod/server/app/api/review/[id]/comments/route.js +1 -1
  215. package/.next-prod/server/app/api/review/[id]/comments/route.js.nft.json +1 -1
  216. package/.next-prod/server/app/api/review/[id]/replies/route.js +1 -1
  217. package/.next-prod/server/app/api/review/[id]/replies/route.js.nft.json +1 -1
  218. package/.next-prod/server/app/api/review/[id]/route.js +1 -1
  219. package/.next-prod/server/app/api/review/[id]/route.js.nft.json +1 -1
  220. package/.next-prod/server/app/api/review/identify/route.js +1 -1
  221. package/.next-prod/server/app/api/review/identify/route.js.nft.json +1 -1
  222. package/.next-prod/server/app/api/review/order/route.js +1 -1
  223. package/.next-prod/server/app/api/review/order/route.js.nft.json +1 -1
  224. package/.next-prod/server/app/api/review/route.js +1 -1
  225. package/.next-prod/server/app/api/review/route.js.nft.json +1 -1
  226. package/.next-prod/server/app/api/review/share-info/route.js +1 -1
  227. package/.next-prod/server/app/api/review/share-info/route.js.nft.json +1 -1
  228. package/.next-prod/server/app/api/review/users/route.js +1 -1
  229. package/.next-prod/server/app/api/review/users/route.js.nft.json +1 -1
  230. package/.next-prod/server/app/api/scheduled-tasks/route.js +1 -1
  231. package/.next-prod/server/app/api/scheduled-tasks/route.js.nft.json +1 -1
  232. package/.next-prod/server/app/api/services/config/route.js +1 -1
  233. package/.next-prod/server/app/api/services/config/route.js.nft.json +1 -1
  234. package/.next-prod/server/app/api/services/scripts/route.js +1 -1
  235. package/.next-prod/server/app/api/services/scripts/route.js.nft.json +1 -1
  236. package/.next-prod/server/app/api/session/[sessionId]/fork/route.js +1 -1
  237. package/.next-prod/server/app/api/session/[sessionId]/fork/route.js.nft.json +1 -1
  238. package/.next-prod/server/app/api/session/[sessionId]/history/route.js +1 -1
  239. package/.next-prod/server/app/api/session/[sessionId]/history/route.js.nft.json +1 -1
  240. package/.next-prod/server/app/api/session-by-path/route.js +1 -1
  241. package/.next-prod/server/app/api/session-by-path/route.js.nft.json +1 -1
  242. package/.next-prod/server/app/api/sessions/projects/[encodedPath]/route.js +1 -1
  243. package/.next-prod/server/app/api/sessions/projects/[encodedPath]/route.js.nft.json +1 -1
  244. package/.next-prod/server/app/api/sessions/projects/route.js +1 -1
  245. package/.next-prod/server/app/api/sessions/projects/route.js.nft.json +1 -1
  246. package/.next-prod/server/app/api/sessions/route.js +1 -1
  247. package/.next-prod/server/app/api/sessions/route.js.nft.json +1 -1
  248. package/.next-prod/server/app/api/settings/route.js +1 -1
  249. package/.next-prod/server/app/api/settings/route.js.nft.json +1 -1
  250. package/.next-prod/server/app/api/skills/[id]/route.js +1 -1
  251. package/.next-prod/server/app/api/skills/[id]/route.js.nft.json +1 -1
  252. package/.next-prod/server/app/api/skills/content/route.js +1 -1
  253. package/.next-prod/server/app/api/skills/content/route.js.nft.json +1 -1
  254. package/.next-prod/server/app/api/skills/route.js +1 -1
  255. package/.next-prod/server/app/api/skills/route.js.nft.json +1 -1
  256. package/.next-prod/server/app/api/terminal/aliases/route.js +1 -1
  257. package/.next-prod/server/app/api/terminal/aliases/route.js.nft.json +1 -1
  258. package/.next-prod/server/app/api/terminal/autocomplete/route.js +1 -1
  259. package/.next-prod/server/app/api/terminal/autocomplete/route.js.nft.json +1 -1
  260. package/.next-prod/server/app/api/terminal/bubble-order/route.js +1 -1
  261. package/.next-prod/server/app/api/terminal/bubble-order/route.js.nft.json +1 -1
  262. package/.next-prod/server/app/api/terminal/env/route.js +1 -1
  263. package/.next-prod/server/app/api/terminal/env/route.js.nft.json +1 -1
  264. package/.next-prod/server/app/api/terminal/history/route.js +1 -1
  265. package/.next-prod/server/app/api/terminal/history/route.js.nft.json +1 -1
  266. package/.next-prod/server/app/api/version/route.js +1 -1
  267. package/.next-prod/server/app/api/version/route.js.nft.json +1 -1
  268. package/.next-prod/server/app/favicon.ico/route.js +1 -1
  269. package/.next-prod/server/app/favicon.ico/route.js.nft.json +1 -1
  270. package/.next-prod/server/app/manifest.webmanifest/route.js +2 -2
  271. package/.next-prod/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  272. package/.next-prod/server/app/page.js +2 -2
  273. package/.next-prod/server/app/page.js.nft.json +1 -1
  274. package/.next-prod/server/app/page_client-reference-manifest.js +1 -1
  275. package/.next-prod/server/app/project/page.js +2 -2
  276. package/.next-prod/server/app/project/page.js.nft.json +1 -1
  277. package/.next-prod/server/app/project/page_client-reference-manifest.js +1 -1
  278. package/.next-prod/server/app/review/[id]/page.js +2 -2
  279. package/.next-prod/server/app/review/[id]/page.js.nft.json +1 -1
  280. package/.next-prod/server/app/review/[id]/page_client-reference-manifest.js +1 -1
  281. package/.next-prod/server/app-paths-manifest.json +7 -3
  282. package/.next-prod/server/chunks/2540.js +1 -0
  283. package/.next-prod/server/chunks/2939.js +1 -1
  284. package/.next-prod/server/chunks/4008.js +1 -0
  285. package/.next-prod/server/chunks/7828.js +79 -2
  286. package/.next-prod/server/chunks/9658.js +3 -3
  287. package/.next-prod/server/middleware-build-manifest.js +1 -1
  288. package/.next-prod/server/pages/404.html +1 -1
  289. package/.next-prod/server/pages/500.html +1 -1
  290. package/.next-prod/server/server-reference-manifest.json +1 -1
  291. package/.next-prod/static/chunks/2171-1d5aa2a301006dfb.js +1 -0
  292. package/.next-prod/static/chunks/{5188-3337a5d88efc5fc1.js → 5188-38f55b21ae1eeb28.js} +1 -1
  293. package/.next-prod/static/chunks/6345-fc2d45a72316c5f8.js +14 -0
  294. package/.next-prod/static/chunks/{aaea2bcf-be8b39a8f32280f3.js → aaea2bcf-56770c8875ee56c9.js} +1 -1
  295. package/.next-prod/static/chunks/app/_global-error/page-8ae56b9359db0996.js +1 -0
  296. package/.next-prod/static/chunks/app/api/agent/test/route-8ae56b9359db0996.js +1 -0
  297. package/.next-prod/static/chunks/app/api/bash/route-8ae56b9359db0996.js +1 -0
  298. package/.next-prod/static/chunks/app/api/chat/codex/route-8ae56b9359db0996.js +1 -0
  299. package/.next-prod/static/chunks/app/api/chat/deepseek/route-8ae56b9359db0996.js +1 -0
  300. package/.next-prod/static/chunks/app/api/chat/kimi/route-8ae56b9359db0996.js +1 -0
  301. package/.next-prod/static/chunks/app/api/chat/ollama/route-8ae56b9359db0996.js +1 -0
  302. package/.next-prod/static/chunks/app/api/chat/route-8ae56b9359db0996.js +1 -0
  303. package/.next-prod/static/chunks/app/api/claude-stats/route-8ae56b9359db0996.js +1 -0
  304. package/.next-prod/static/chunks/app/api/commands/route-8ae56b9359db0996.js +1 -0
  305. package/.next-prod/static/chunks/app/api/comments/route-8ae56b9359db0996.js +1 -0
  306. package/.next-prod/static/chunks/app/api/db/columns/route-8ae56b9359db0996.js +1 -0
  307. package/.next-prod/static/chunks/app/api/db/connect/route-8ae56b9359db0996.js +1 -0
  308. package/.next-prod/static/chunks/app/api/db/disconnect/route-8ae56b9359db0996.js +1 -0
  309. package/.next-prod/static/chunks/app/api/db/export/route-8ae56b9359db0996.js +1 -0
  310. package/.next-prod/static/chunks/app/api/db/query/route-8ae56b9359db0996.js +1 -0
  311. package/.next-prod/static/chunks/app/api/db/schemas/route-8ae56b9359db0996.js +1 -0
  312. package/.next-prod/static/chunks/app/api/dev/spans/route-8ae56b9359db0996.js +1 -0
  313. package/.next-prod/static/chunks/app/api/extension/version/route-8ae56b9359db0996.js +1 -0
  314. package/.next-prod/static/chunks/app/api/file/route-8ae56b9359db0996.js +1 -0
  315. package/.next-prod/static/chunks/app/api/files/blame/route-8ae56b9359db0996.js +1 -0
  316. package/.next-prod/static/chunks/app/api/files/clipboard/route-8ae56b9359db0996.js +1 -0
  317. package/.next-prod/static/chunks/app/api/files/copy/route-8ae56b9359db0996.js +1 -0
  318. package/.next-prod/static/chunks/app/api/files/delete/route-8ae56b9359db0996.js +1 -0
  319. package/.next-prod/static/chunks/app/api/files/expanded/route-8ae56b9359db0996.js +1 -0
  320. package/.next-prod/static/chunks/app/api/files/index/route-8ae56b9359db0996.js +1 -0
  321. package/.next-prod/static/chunks/app/api/files/init/route-8ae56b9359db0996.js +1 -0
  322. package/.next-prod/static/chunks/app/api/files/paste/route-8ae56b9359db0996.js +1 -0
  323. package/.next-prod/static/chunks/app/api/files/read/route-8ae56b9359db0996.js +1 -0
  324. package/.next-prod/static/chunks/app/api/files/readdir/route-8ae56b9359db0996.js +1 -0
  325. package/.next-prod/static/chunks/app/api/files/recent/route-8ae56b9359db0996.js +1 -0
  326. package/.next-prod/static/chunks/app/api/files/save/route-8ae56b9359db0996.js +1 -0
  327. package/.next-prod/static/chunks/app/api/files/search/route-8ae56b9359db0996.js +1 -0
  328. package/.next-prod/static/chunks/app/api/files/stat/route-8ae56b9359db0996.js +1 -0
  329. package/.next-prod/static/chunks/app/api/files/text/route-8ae56b9359db0996.js +1 -0
  330. package/.next-prod/static/chunks/app/api/git/branch-diff/route-8ae56b9359db0996.js +1 -0
  331. package/.next-prod/static/chunks/app/api/git/branches/route-8ae56b9359db0996.js +1 -0
  332. package/.next-prod/static/chunks/app/api/git/commit-diff/route-8ae56b9359db0996.js +1 -0
  333. package/.next-prod/static/chunks/app/api/git/commits/route-8ae56b9359db0996.js +1 -0
  334. package/.next-prod/static/chunks/app/api/git/diff/route-8ae56b9359db0996.js +1 -0
  335. package/.next-prod/static/chunks/app/api/git/discard/route-8ae56b9359db0996.js +1 -0
  336. package/.next-prod/static/chunks/app/api/git/stage/route-8ae56b9359db0996.js +1 -0
  337. package/.next-prod/static/chunks/app/api/git/status/route-8ae56b9359db0996.js +1 -0
  338. package/.next-prod/static/chunks/app/api/git/unstage/route-8ae56b9359db0996.js +1 -0
  339. package/.next-prod/static/chunks/app/api/git/worktree/route-8ae56b9359db0996.js +1 -0
  340. package/.next-prod/static/chunks/app/api/global-state/route-8ae56b9359db0996.js +1 -0
  341. package/.next-prod/static/chunks/app/api/jupyter/load/route-8ae56b9359db0996.js +1 -0
  342. package/.next-prod/static/chunks/app/api/jupyter/save/route-8ae56b9359db0996.js +1 -0
  343. package/.next-prod/static/chunks/app/api/jupyter/shutdown/route-8ae56b9359db0996.js +1 -0
  344. package/.next-prod/static/chunks/app/api/lsp/definition/route-8ae56b9359db0996.js +1 -0
  345. package/.next-prod/static/chunks/app/api/lsp/hover/route-8ae56b9359db0996.js +1 -0
  346. package/.next-prod/static/chunks/app/api/lsp/references/route-8ae56b9359db0996.js +1 -0
  347. package/.next-prod/static/chunks/app/api/lsp/status/route-8ae56b9359db0996.js +1 -0
  348. package/.next-prod/static/chunks/app/api/lsp/warmup/route-8ae56b9359db0996.js +1 -0
  349. package/.next-prod/static/chunks/app/api/mysql/columns/route-8ae56b9359db0996.js +1 -0
  350. package/.next-prod/static/chunks/app/api/mysql/connect/route-8ae56b9359db0996.js +1 -0
  351. package/.next-prod/static/chunks/app/api/mysql/disconnect/route-8ae56b9359db0996.js +1 -0
  352. package/.next-prod/static/chunks/app/api/mysql/export/route-8ae56b9359db0996.js +1 -0
  353. package/.next-prod/static/chunks/app/api/mysql/query/route-8ae56b9359db0996.js +1 -0
  354. package/.next-prod/static/chunks/app/api/mysql/schemas/route-8ae56b9359db0996.js +1 -0
  355. package/.next-prod/static/chunks/app/api/neo4j/connect/route-8ae56b9359db0996.js +1 -0
  356. package/.next-prod/static/chunks/app/api/neo4j/disconnect/route-8ae56b9359db0996.js +1 -0
  357. package/.next-prod/static/chunks/app/api/neo4j/query/route-8ae56b9359db0996.js +1 -0
  358. package/.next-prod/static/chunks/app/api/neo4j/schema/route-8ae56b9359db0996.js +1 -0
  359. package/.next-prod/static/chunks/app/api/note/route-8ae56b9359db0996.js +1 -0
  360. package/.next-prod/static/chunks/app/api/ollama/models/route-8ae56b9359db0996.js +1 -0
  361. package/.next-prod/static/chunks/app/api/ollama/start/route-8ae56b9359db0996.js +1 -0
  362. package/.next-prod/static/chunks/app/api/open-cursor/route-8ae56b9359db0996.js +1 -0
  363. package/.next-prod/static/chunks/app/api/open-vscode/route-8ae56b9359db0996.js +1 -0
  364. package/.next-prod/static/chunks/app/api/pick-folder/route-8ae56b9359db0996.js +1 -0
  365. package/.next-prod/static/chunks/app/api/pinned-sessions/route-8ae56b9359db0996.js +1 -0
  366. package/.next-prod/static/chunks/app/api/project-settings/route-8ae56b9359db0996.js +1 -0
  367. package/.next-prod/static/chunks/app/api/project-state/route-8ae56b9359db0996.js +1 -0
  368. package/.next-prod/static/chunks/app/api/projectGraph/affected/route-8ae56b9359db0996.js +1 -0
  369. package/.next-prod/static/chunks/app/api/projectGraph/callees/route-8ae56b9359db0996.js +1 -0
  370. package/.next-prod/static/chunks/app/api/projectGraph/callers/route-8ae56b9359db0996.js +1 -0
  371. package/.next-prod/static/chunks/app/api/projectGraph/coedit/route-8ae56b9359db0996.js +1 -0
  372. package/.next-prod/static/chunks/app/api/projectGraph/context/route-8ae56b9359db0996.js +1 -0
  373. package/.next-prod/static/chunks/app/api/projectGraph/file/route-8ae56b9359db0996.js +1 -0
  374. package/.next-prod/static/chunks/app/api/projectGraph/file-functions/route-8ae56b9359db0996.js +1 -0
  375. package/.next-prod/static/chunks/app/api/projectGraph/impact/route-8ae56b9359db0996.js +1 -0
  376. package/.next-prod/static/chunks/app/api/projectGraph/related/route-8ae56b9359db0996.js +1 -0
  377. package/.next-prod/static/chunks/app/api/projectGraph/risk/route-8ae56b9359db0996.js +1 -0
  378. package/.next-prod/static/chunks/app/api/projectGraph/search/route-8ae56b9359db0996.js +1 -0
  379. package/.next-prod/static/chunks/app/api/projects/route-8ae56b9359db0996.js +1 -0
  380. package/.next-prod/static/chunks/app/api/redis/command/route-8ae56b9359db0996.js +1 -0
  381. package/.next-prod/static/chunks/app/api/redis/connect/route-8ae56b9359db0996.js +1 -0
  382. package/.next-prod/static/chunks/app/api/redis/delete/route-8ae56b9359db0996.js +1 -0
  383. package/.next-prod/static/chunks/app/api/redis/disconnect/route-8ae56b9359db0996.js +1 -0
  384. package/.next-prod/static/chunks/app/api/redis/get/route-8ae56b9359db0996.js +1 -0
  385. package/.next-prod/static/chunks/app/api/redis/keys/route-8ae56b9359db0996.js +1 -0
  386. package/.next-prod/static/chunks/app/api/redis/set/route-8ae56b9359db0996.js +1 -0
  387. package/.next-prod/static/chunks/app/api/review/[id]/comments/route-8ae56b9359db0996.js +1 -0
  388. package/.next-prod/static/chunks/app/api/review/[id]/replies/route-8ae56b9359db0996.js +1 -0
  389. package/.next-prod/static/chunks/app/api/review/[id]/route-8ae56b9359db0996.js +1 -0
  390. package/.next-prod/static/chunks/app/api/review/identify/route-8ae56b9359db0996.js +1 -0
  391. package/.next-prod/static/chunks/app/api/review/order/route-8ae56b9359db0996.js +1 -0
  392. package/.next-prod/static/chunks/app/api/review/route-8ae56b9359db0996.js +1 -0
  393. package/.next-prod/static/chunks/app/api/review/share-info/route-8ae56b9359db0996.js +1 -0
  394. package/.next-prod/static/chunks/app/api/review/users/route-8ae56b9359db0996.js +1 -0
  395. package/.next-prod/static/chunks/app/api/scheduled-tasks/route-8ae56b9359db0996.js +1 -0
  396. package/.next-prod/static/chunks/app/api/services/config/route-8ae56b9359db0996.js +1 -0
  397. package/.next-prod/static/chunks/app/api/services/scripts/route-8ae56b9359db0996.js +1 -0
  398. package/.next-prod/static/chunks/app/api/session/[sessionId]/fork/route-8ae56b9359db0996.js +1 -0
  399. package/.next-prod/static/chunks/app/api/session/[sessionId]/history/route-8ae56b9359db0996.js +1 -0
  400. package/.next-prod/static/chunks/app/api/session-by-path/route-8ae56b9359db0996.js +1 -0
  401. package/.next-prod/static/chunks/app/api/sessions/projects/[encodedPath]/route-8ae56b9359db0996.js +1 -0
  402. package/.next-prod/static/chunks/app/api/sessions/projects/route-8ae56b9359db0996.js +1 -0
  403. package/.next-prod/static/chunks/app/api/sessions/route-8ae56b9359db0996.js +1 -0
  404. package/.next-prod/static/chunks/app/api/settings/route-8ae56b9359db0996.js +1 -0
  405. package/.next-prod/static/chunks/app/api/skills/[id]/route-8ae56b9359db0996.js +1 -0
  406. package/.next-prod/static/chunks/app/api/skills/content/route-8ae56b9359db0996.js +1 -0
  407. package/.next-prod/static/chunks/app/api/skills/route-8ae56b9359db0996.js +1 -0
  408. package/.next-prod/static/chunks/app/api/terminal/aliases/route-8ae56b9359db0996.js +1 -0
  409. package/.next-prod/static/chunks/app/api/terminal/autocomplete/route-8ae56b9359db0996.js +1 -0
  410. package/.next-prod/static/chunks/app/api/terminal/bubble-order/route-8ae56b9359db0996.js +1 -0
  411. package/.next-prod/static/chunks/app/api/terminal/env/route-8ae56b9359db0996.js +1 -0
  412. package/.next-prod/static/chunks/app/api/terminal/history/route-8ae56b9359db0996.js +1 -0
  413. package/.next-prod/static/chunks/app/api/version/route-8ae56b9359db0996.js +1 -0
  414. package/.next-prod/static/chunks/app/manifest.webmanifest/route-8ae56b9359db0996.js +1 -0
  415. package/.next-prod/static/chunks/next/dist/client/components/builtin/app-error-8ae56b9359db0996.js +1 -0
  416. package/.next-prod/static/chunks/next/dist/client/components/builtin/forbidden-8ae56b9359db0996.js +1 -0
  417. package/.next-prod/static/chunks/next/dist/client/components/builtin/not-found-8ae56b9359db0996.js +1 -0
  418. package/.next-prod/static/chunks/next/dist/client/components/builtin/unauthorized-8ae56b9359db0996.js +1 -0
  419. package/.next-prod/static/ekMRRxcvpy2AIjMrVn4lK/_buildManifest.js +1 -0
  420. package/.next-prod/trace +13 -12
  421. package/.next-prod/trace-build +1 -1
  422. package/.next-prod/types/app/api/projectGraph/affected/route.ts +351 -0
  423. package/.next-prod/types/app/api/projectGraph/context/route.ts +351 -0
  424. package/.next-prod/types/app/api/projectGraph/related/route.ts +351 -0
  425. package/.next-prod/types/app/api/projectGraph/risk/route.ts +351 -0
  426. package/.next-prod/types/routes.d.ts +5 -1
  427. package/.next-prod/types/validator.ts +36 -0
  428. package/README.md +0 -1
  429. package/README.zh.md +0 -1
  430. package/bin/cock-affected.mjs +190 -0
  431. package/bin/cock-terminal.mjs +471 -159
  432. package/bin/cock.mjs +9 -1
  433. package/dist/cache-GIQJA4HL.mjs +502 -0
  434. package/dist/chunk-7P6ASYW6.mjs +9 -0
  435. package/dist/{chunk-OWUW2O3D.mjs → chunk-CZWJPTRO.mjs} +4 -2
  436. package/dist/{chunk-FBR4KJI5.mjs → chunk-KRTISG5I.mjs} +213 -2
  437. package/dist/{chunk-TXBVUZVH.mjs → chunk-ZJ6CC3MH.mjs} +0 -7
  438. package/dist/httpApi.mjs +203 -17
  439. package/dist/scheduledTasks.mjs +3 -2
  440. package/dist/{server-E7G55DY7.mjs → server-OSOMFNXR.mjs} +27 -4
  441. package/dist/wsServer.mjs +8 -34
  442. package/package.json +3 -1
  443. package/.next-prod/static/-BWPF5YtAsgnego1UPtt9/_buildManifest.js +0 -1
  444. package/.next-prod/static/chunks/2171-5163d946ec03ce80.js +0 -1
  445. package/.next-prod/static/chunks/6345-4299a3385983e28c.js +0 -14
  446. package/.next-prod/static/chunks/app/_global-error/page-994734ef0d317687.js +0 -1
  447. package/.next-prod/static/chunks/app/api/agent/test/route-994734ef0d317687.js +0 -1
  448. package/.next-prod/static/chunks/app/api/bash/route-994734ef0d317687.js +0 -1
  449. package/.next-prod/static/chunks/app/api/chat/codex/route-994734ef0d317687.js +0 -1
  450. package/.next-prod/static/chunks/app/api/chat/deepseek/route-994734ef0d317687.js +0 -1
  451. package/.next-prod/static/chunks/app/api/chat/kimi/route-994734ef0d317687.js +0 -1
  452. package/.next-prod/static/chunks/app/api/chat/ollama/route-994734ef0d317687.js +0 -1
  453. package/.next-prod/static/chunks/app/api/chat/route-994734ef0d317687.js +0 -1
  454. package/.next-prod/static/chunks/app/api/claude-stats/route-994734ef0d317687.js +0 -1
  455. package/.next-prod/static/chunks/app/api/commands/route-994734ef0d317687.js +0 -1
  456. package/.next-prod/static/chunks/app/api/comments/route-994734ef0d317687.js +0 -1
  457. package/.next-prod/static/chunks/app/api/db/columns/route-994734ef0d317687.js +0 -1
  458. package/.next-prod/static/chunks/app/api/db/connect/route-994734ef0d317687.js +0 -1
  459. package/.next-prod/static/chunks/app/api/db/disconnect/route-994734ef0d317687.js +0 -1
  460. package/.next-prod/static/chunks/app/api/db/export/route-994734ef0d317687.js +0 -1
  461. package/.next-prod/static/chunks/app/api/db/query/route-994734ef0d317687.js +0 -1
  462. package/.next-prod/static/chunks/app/api/db/schemas/route-994734ef0d317687.js +0 -1
  463. package/.next-prod/static/chunks/app/api/dev/spans/route-994734ef0d317687.js +0 -1
  464. package/.next-prod/static/chunks/app/api/extension/version/route-994734ef0d317687.js +0 -1
  465. package/.next-prod/static/chunks/app/api/file/route-994734ef0d317687.js +0 -1
  466. package/.next-prod/static/chunks/app/api/files/blame/route-994734ef0d317687.js +0 -1
  467. package/.next-prod/static/chunks/app/api/files/clipboard/route-994734ef0d317687.js +0 -1
  468. package/.next-prod/static/chunks/app/api/files/copy/route-994734ef0d317687.js +0 -1
  469. package/.next-prod/static/chunks/app/api/files/delete/route-994734ef0d317687.js +0 -1
  470. package/.next-prod/static/chunks/app/api/files/expanded/route-994734ef0d317687.js +0 -1
  471. package/.next-prod/static/chunks/app/api/files/index/route-994734ef0d317687.js +0 -1
  472. package/.next-prod/static/chunks/app/api/files/init/route-994734ef0d317687.js +0 -1
  473. package/.next-prod/static/chunks/app/api/files/paste/route-994734ef0d317687.js +0 -1
  474. package/.next-prod/static/chunks/app/api/files/read/route-994734ef0d317687.js +0 -1
  475. package/.next-prod/static/chunks/app/api/files/readdir/route-994734ef0d317687.js +0 -1
  476. package/.next-prod/static/chunks/app/api/files/recent/route-994734ef0d317687.js +0 -1
  477. package/.next-prod/static/chunks/app/api/files/save/route-994734ef0d317687.js +0 -1
  478. package/.next-prod/static/chunks/app/api/files/search/route-994734ef0d317687.js +0 -1
  479. package/.next-prod/static/chunks/app/api/files/stat/route-994734ef0d317687.js +0 -1
  480. package/.next-prod/static/chunks/app/api/files/text/route-994734ef0d317687.js +0 -1
  481. package/.next-prod/static/chunks/app/api/git/branch-diff/route-994734ef0d317687.js +0 -1
  482. package/.next-prod/static/chunks/app/api/git/branches/route-994734ef0d317687.js +0 -1
  483. package/.next-prod/static/chunks/app/api/git/commit-diff/route-994734ef0d317687.js +0 -1
  484. package/.next-prod/static/chunks/app/api/git/commits/route-994734ef0d317687.js +0 -1
  485. package/.next-prod/static/chunks/app/api/git/diff/route-994734ef0d317687.js +0 -1
  486. package/.next-prod/static/chunks/app/api/git/discard/route-994734ef0d317687.js +0 -1
  487. package/.next-prod/static/chunks/app/api/git/stage/route-994734ef0d317687.js +0 -1
  488. package/.next-prod/static/chunks/app/api/git/status/route-994734ef0d317687.js +0 -1
  489. package/.next-prod/static/chunks/app/api/git/unstage/route-994734ef0d317687.js +0 -1
  490. package/.next-prod/static/chunks/app/api/git/worktree/route-994734ef0d317687.js +0 -1
  491. package/.next-prod/static/chunks/app/api/global-state/route-994734ef0d317687.js +0 -1
  492. package/.next-prod/static/chunks/app/api/jupyter/load/route-994734ef0d317687.js +0 -1
  493. package/.next-prod/static/chunks/app/api/jupyter/save/route-994734ef0d317687.js +0 -1
  494. package/.next-prod/static/chunks/app/api/jupyter/shutdown/route-994734ef0d317687.js +0 -1
  495. package/.next-prod/static/chunks/app/api/lsp/definition/route-994734ef0d317687.js +0 -1
  496. package/.next-prod/static/chunks/app/api/lsp/hover/route-994734ef0d317687.js +0 -1
  497. package/.next-prod/static/chunks/app/api/lsp/references/route-994734ef0d317687.js +0 -1
  498. package/.next-prod/static/chunks/app/api/lsp/status/route-994734ef0d317687.js +0 -1
  499. package/.next-prod/static/chunks/app/api/lsp/warmup/route-994734ef0d317687.js +0 -1
  500. package/.next-prod/static/chunks/app/api/mysql/columns/route-994734ef0d317687.js +0 -1
  501. package/.next-prod/static/chunks/app/api/mysql/connect/route-994734ef0d317687.js +0 -1
  502. package/.next-prod/static/chunks/app/api/mysql/disconnect/route-994734ef0d317687.js +0 -1
  503. package/.next-prod/static/chunks/app/api/mysql/export/route-994734ef0d317687.js +0 -1
  504. package/.next-prod/static/chunks/app/api/mysql/query/route-994734ef0d317687.js +0 -1
  505. package/.next-prod/static/chunks/app/api/mysql/schemas/route-994734ef0d317687.js +0 -1
  506. package/.next-prod/static/chunks/app/api/neo4j/connect/route-994734ef0d317687.js +0 -1
  507. package/.next-prod/static/chunks/app/api/neo4j/disconnect/route-994734ef0d317687.js +0 -1
  508. package/.next-prod/static/chunks/app/api/neo4j/query/route-994734ef0d317687.js +0 -1
  509. package/.next-prod/static/chunks/app/api/neo4j/schema/route-994734ef0d317687.js +0 -1
  510. package/.next-prod/static/chunks/app/api/note/route-994734ef0d317687.js +0 -1
  511. package/.next-prod/static/chunks/app/api/ollama/models/route-994734ef0d317687.js +0 -1
  512. package/.next-prod/static/chunks/app/api/ollama/start/route-994734ef0d317687.js +0 -1
  513. package/.next-prod/static/chunks/app/api/open-cursor/route-994734ef0d317687.js +0 -1
  514. package/.next-prod/static/chunks/app/api/open-vscode/route-994734ef0d317687.js +0 -1
  515. package/.next-prod/static/chunks/app/api/pick-folder/route-994734ef0d317687.js +0 -1
  516. package/.next-prod/static/chunks/app/api/pinned-sessions/route-994734ef0d317687.js +0 -1
  517. package/.next-prod/static/chunks/app/api/project-settings/route-994734ef0d317687.js +0 -1
  518. package/.next-prod/static/chunks/app/api/project-state/route-994734ef0d317687.js +0 -1
  519. package/.next-prod/static/chunks/app/api/projectGraph/callees/route-994734ef0d317687.js +0 -1
  520. package/.next-prod/static/chunks/app/api/projectGraph/callers/route-994734ef0d317687.js +0 -1
  521. package/.next-prod/static/chunks/app/api/projectGraph/coedit/route-994734ef0d317687.js +0 -1
  522. package/.next-prod/static/chunks/app/api/projectGraph/file/route-994734ef0d317687.js +0 -1
  523. package/.next-prod/static/chunks/app/api/projectGraph/file-functions/route-994734ef0d317687.js +0 -1
  524. package/.next-prod/static/chunks/app/api/projectGraph/impact/route-994734ef0d317687.js +0 -1
  525. package/.next-prod/static/chunks/app/api/projectGraph/search/route-994734ef0d317687.js +0 -1
  526. package/.next-prod/static/chunks/app/api/projects/route-994734ef0d317687.js +0 -1
  527. package/.next-prod/static/chunks/app/api/redis/command/route-994734ef0d317687.js +0 -1
  528. package/.next-prod/static/chunks/app/api/redis/connect/route-994734ef0d317687.js +0 -1
  529. package/.next-prod/static/chunks/app/api/redis/delete/route-994734ef0d317687.js +0 -1
  530. package/.next-prod/static/chunks/app/api/redis/disconnect/route-994734ef0d317687.js +0 -1
  531. package/.next-prod/static/chunks/app/api/redis/get/route-994734ef0d317687.js +0 -1
  532. package/.next-prod/static/chunks/app/api/redis/keys/route-994734ef0d317687.js +0 -1
  533. package/.next-prod/static/chunks/app/api/redis/set/route-994734ef0d317687.js +0 -1
  534. package/.next-prod/static/chunks/app/api/review/[id]/comments/route-994734ef0d317687.js +0 -1
  535. package/.next-prod/static/chunks/app/api/review/[id]/replies/route-994734ef0d317687.js +0 -1
  536. package/.next-prod/static/chunks/app/api/review/[id]/route-994734ef0d317687.js +0 -1
  537. package/.next-prod/static/chunks/app/api/review/identify/route-994734ef0d317687.js +0 -1
  538. package/.next-prod/static/chunks/app/api/review/order/route-994734ef0d317687.js +0 -1
  539. package/.next-prod/static/chunks/app/api/review/route-994734ef0d317687.js +0 -1
  540. package/.next-prod/static/chunks/app/api/review/share-info/route-994734ef0d317687.js +0 -1
  541. package/.next-prod/static/chunks/app/api/review/users/route-994734ef0d317687.js +0 -1
  542. package/.next-prod/static/chunks/app/api/scheduled-tasks/route-994734ef0d317687.js +0 -1
  543. package/.next-prod/static/chunks/app/api/services/config/route-994734ef0d317687.js +0 -1
  544. package/.next-prod/static/chunks/app/api/services/scripts/route-994734ef0d317687.js +0 -1
  545. package/.next-prod/static/chunks/app/api/session/[sessionId]/fork/route-994734ef0d317687.js +0 -1
  546. package/.next-prod/static/chunks/app/api/session/[sessionId]/history/route-994734ef0d317687.js +0 -1
  547. package/.next-prod/static/chunks/app/api/session-by-path/route-994734ef0d317687.js +0 -1
  548. package/.next-prod/static/chunks/app/api/sessions/projects/[encodedPath]/route-994734ef0d317687.js +0 -1
  549. package/.next-prod/static/chunks/app/api/sessions/projects/route-994734ef0d317687.js +0 -1
  550. package/.next-prod/static/chunks/app/api/sessions/route-994734ef0d317687.js +0 -1
  551. package/.next-prod/static/chunks/app/api/settings/route-994734ef0d317687.js +0 -1
  552. package/.next-prod/static/chunks/app/api/skills/[id]/route-994734ef0d317687.js +0 -1
  553. package/.next-prod/static/chunks/app/api/skills/content/route-994734ef0d317687.js +0 -1
  554. package/.next-prod/static/chunks/app/api/skills/route-994734ef0d317687.js +0 -1
  555. package/.next-prod/static/chunks/app/api/terminal/aliases/route-994734ef0d317687.js +0 -1
  556. package/.next-prod/static/chunks/app/api/terminal/autocomplete/route-994734ef0d317687.js +0 -1
  557. package/.next-prod/static/chunks/app/api/terminal/bubble-order/route-994734ef0d317687.js +0 -1
  558. package/.next-prod/static/chunks/app/api/terminal/env/route-994734ef0d317687.js +0 -1
  559. package/.next-prod/static/chunks/app/api/terminal/history/route-994734ef0d317687.js +0 -1
  560. package/.next-prod/static/chunks/app/api/version/route-994734ef0d317687.js +0 -1
  561. package/.next-prod/static/chunks/app/manifest.webmanifest/route-994734ef0d317687.js +0 -1
  562. package/.next-prod/static/chunks/next/dist/client/components/builtin/app-error-994734ef0d317687.js +0 -1
  563. package/.next-prod/static/chunks/next/dist/client/components/builtin/forbidden-994734ef0d317687.js +0 -1
  564. package/.next-prod/static/chunks/next/dist/client/components/builtin/not-found-994734ef0d317687.js +0 -1
  565. package/.next-prod/static/chunks/next/dist/client/components/builtin/unauthorized-994734ef0d317687.js +0 -1
  566. /package/.next-prod/static/{-BWPF5YtAsgnego1UPtt9 → ekMRRxcvpy2AIjMrVn4lK}/_ssgManifest.js +0 -0
@@ -2,7 +2,7 @@ import {
2
2
  ensureParentDir,
3
3
  getTerminalHistoryPath,
4
4
  getTerminalOutputPath
5
- } from "./chunk-TXBVUZVH.mjs";
5
+ } from "./chunk-ZJ6CC3MH.mjs";
6
6
 
7
7
  // packages/feature/console/src/server/plugins/browser/BrowserBridge.ts
8
8
  import { WebSocket } from "ws";
@@ -481,23 +481,38 @@ import fs from "fs/promises";
481
481
  var MAX_OUTPUT_LINES = 5e3;
482
482
  var OUTPUT_FILE_THRESHOLD = 4096;
483
483
  var PTY_RING_BUFFER_MAX = 2 * 1024 * 1024;
484
+ function countNewlines(s) {
485
+ let n = 0;
486
+ for (let i = 0; i < s.length; i++) {
487
+ if (s.charCodeAt(i) === 10) n++;
488
+ }
489
+ return n;
490
+ }
484
491
  var PtyRingBuffer = class {
485
492
  constructor(max = PTY_RING_BUFFER_MAX) {
486
493
  this.chunks = [];
487
494
  this.totalLen = 0;
495
+ /** Monotonic count of `\n` chars ever appended. Never decreases. */
496
+ this._totalLinesEverWritten = 0;
497
+ /** Global line number of the first complete line currently in the ring. */
498
+ this._firstAvailableLine = 0;
488
499
  this.max = max;
489
500
  }
490
501
  append(data) {
491
502
  if (!data) return;
492
503
  this.chunks.push(data);
493
504
  this.totalLen += data.length;
505
+ this._totalLinesEverWritten += countNewlines(data);
494
506
  while (this.totalLen > this.max && this.chunks.length > 0) {
495
507
  const overflow = this.totalLen - this.max;
496
508
  const oldest = this.chunks[0];
497
509
  if (oldest.length <= overflow) {
510
+ this._firstAvailableLine += countNewlines(oldest);
498
511
  this.chunks.shift();
499
512
  this.totalLen -= oldest.length;
500
513
  } else {
514
+ const cut = oldest.slice(0, overflow);
515
+ this._firstAvailableLine += countNewlines(cut);
501
516
  this.chunks[0] = oldest.slice(overflow);
502
517
  this.totalLen -= overflow;
503
518
  }
@@ -509,6 +524,14 @@ var PtyRingBuffer = class {
509
524
  get length() {
510
525
  return this.totalLen;
511
526
  }
527
+ /** Total `\n` chars ever written — monotonic global "next line number". */
528
+ get totalLinesEverWritten() {
529
+ return this._totalLinesEverWritten;
530
+ }
531
+ /** Global line number of the first complete line still in the ring. */
532
+ get firstAvailableLine() {
533
+ return this._firstAvailableLine;
534
+ }
512
535
  };
513
536
  function findSafeStart(s) {
514
537
  const lf = s.indexOf("\n");
@@ -541,6 +564,7 @@ function registerCommand(cmd) {
541
564
  ...cmd,
542
565
  outputLines: [],
543
566
  outputPartial: "",
567
+ totalLinesEverWritten: 0,
544
568
  // Only PTY commands get a ring buffer — pipe mode replay still uses outputLines.
545
569
  ...cmd.ptyProcess ? { ptyRingBuffer: new PtyRingBuffer() } : {}
546
570
  };
@@ -552,6 +576,10 @@ function registerCommand(cmd) {
552
576
  const pty = cmd.ptyProcess;
553
577
  pty.onData((data) => {
554
578
  entry.ptyRingBuffer?.append(data);
579
+ if (entry.ptyRingBuffer) {
580
+ entry.totalLinesEverWritten = entry.ptyRingBuffer.totalLinesEverWritten;
581
+ }
582
+ entry.lastOutputAt = Date.now();
555
583
  notifyOutputListeners(cmd.commandId, data);
556
584
  });
557
585
  const ptyPid = cmd.pid;
@@ -595,6 +623,7 @@ function appendCommandOutput(commandId, data) {
595
623
  cmd.outputPartial = parts.pop() || "";
596
624
  if (parts.length > 0) {
597
625
  cmd.outputLines.push(...parts);
626
+ cmd.totalLinesEverWritten += parts.length;
598
627
  if (cmd.outputLines.length > MAX_OUTPUT_LINES) {
599
628
  cmd.outputLines.splice(0, cmd.outputLines.length - MAX_OUTPUT_LINES);
600
629
  if (cmd.outputLines.length > 0) {
@@ -602,8 +631,13 @@ function appendCommandOutput(commandId, data) {
602
631
  }
603
632
  }
604
633
  }
634
+ cmd.lastOutputAt = Date.now();
605
635
  notifyOutputListeners(commandId, data);
606
636
  }
637
+ function getFirstAvailableLine(cmd) {
638
+ if (cmd.ptyRingBuffer) return cmd.ptyRingBuffer.firstAvailableLine;
639
+ return cmd.totalLinesEverWritten - cmd.outputLines.length;
640
+ }
607
641
  function getBufferedOutput(cmd) {
608
642
  const lines = cmd.outputLines.join("\n");
609
643
  if (cmd.outputPartial) {
@@ -726,6 +760,172 @@ async function finalizeCommand(commandId, exitCode, pid) {
726
760
  await fs.writeFile(historyPath, existingLines.join("\n") + "\n", "utf-8");
727
761
  }
728
762
 
763
+ // packages/feature/console/src/server/terminal/writeStdin.ts
764
+ function writeStdinToCommand(cmd, data) {
765
+ if (cmd.usePty && cmd.ptyProcess) {
766
+ try {
767
+ cmd.ptyProcess.write(data);
768
+ } catch {
769
+ }
770
+ return true;
771
+ }
772
+ if (data === "" && cmd.pid) {
773
+ try {
774
+ process.kill(-cmd.pid, "SIGINT");
775
+ } catch {
776
+ try {
777
+ process.kill(cmd.pid, "SIGINT");
778
+ } catch {
779
+ }
780
+ }
781
+ return true;
782
+ }
783
+ if (data === "" && cmd.pid) {
784
+ try {
785
+ process.kill(cmd.pid, "SIGTSTP");
786
+ } catch {
787
+ }
788
+ return true;
789
+ }
790
+ if (data === "") {
791
+ try {
792
+ cmd.process.stdin?.end();
793
+ } catch {
794
+ }
795
+ return true;
796
+ }
797
+ if (cmd.process.stdin?.writable) {
798
+ cmd.process.stdin.write(data);
799
+ return true;
800
+ }
801
+ return false;
802
+ }
803
+
804
+ // packages/feature/console/src/server/terminal/outputQuery.ts
805
+ var ANSI_RE = /[\x1b\x9B][[\]()#;?]*(?:(?:(?:[a-zA-Z0-9]*(?:;[a-zA-Z0-9]*)*)?\x07)|(?:(?:\d{1,4}(?:;\d{0,4})*)?[\dA-PRZcf-ntqry=><~]))/g;
806
+ function stripAnsi(s) {
807
+ return s.replace(ANSI_RE, "");
808
+ }
809
+ function collapseCarriageReturn(line) {
810
+ const s = line.replace(/\r+$/, "");
811
+ const idx = s.lastIndexOf("\r");
812
+ return idx === -1 ? s : s.slice(idx + 1);
813
+ }
814
+ function getLinesView(cmd, opts = {}) {
815
+ const stripAnsiFlag = opts.stripAnsi ?? true;
816
+ const collapseCrFlag = opts.collapseCr ?? true;
817
+ if (cmd.ptyRingBuffer) {
818
+ let snap = cmd.ptyRingBuffer.snapshot();
819
+ if (stripAnsiFlag) snap = stripAnsi(snap);
820
+ const parts = snap.split("\n");
821
+ parts.pop();
822
+ let lines2 = parts;
823
+ if (collapseCrFlag) {
824
+ lines2 = lines2.map(collapseCarriageReturn);
825
+ }
826
+ return {
827
+ lines: lines2,
828
+ firstLineGlobal: cmd.ptyRingBuffer.firstAvailableLine,
829
+ nextLineGlobal: cmd.ptyRingBuffer.firstAvailableLine + lines2.length
830
+ };
831
+ }
832
+ let lines = cmd.outputLines.slice();
833
+ if (stripAnsiFlag) lines = lines.map(stripAnsi);
834
+ if (collapseCrFlag) lines = lines.map(collapseCarriageReturn);
835
+ const firstLineGlobal = getFirstAvailableLine(cmd);
836
+ return {
837
+ lines,
838
+ firstLineGlobal,
839
+ nextLineGlobal: firstLineGlobal + lines.length
840
+ };
841
+ }
842
+ function emptyResult(view) {
843
+ return {
844
+ matches: [],
845
+ next: view.nextLineGlobal,
846
+ firstAvailable: view.firstLineGlobal,
847
+ totalLines: view.nextLineGlobal,
848
+ truncated: false
849
+ };
850
+ }
851
+ function sliceView(view, localStart, localEnd, truncated) {
852
+ const clampedStart = Math.max(0, Math.min(localStart, view.lines.length));
853
+ const clampedEnd = Math.max(clampedStart, Math.min(localEnd, view.lines.length));
854
+ const matches = [];
855
+ for (let i = clampedStart; i < clampedEnd; i++) {
856
+ matches.push({
857
+ lineno: view.firstLineGlobal + i,
858
+ text: view.lines[i]
859
+ });
860
+ }
861
+ return {
862
+ matches,
863
+ next: view.nextLineGlobal,
864
+ firstAvailable: view.firstLineGlobal,
865
+ totalLines: view.nextLineGlobal,
866
+ truncated
867
+ };
868
+ }
869
+ function readSince(cmd, since, opts = {}) {
870
+ const view = getLinesView(cmd, opts);
871
+ if (view.lines.length === 0) return emptyResult(view);
872
+ const localStart = since - view.firstLineGlobal;
873
+ const truncated = since < view.firstLineGlobal;
874
+ return sliceView(view, Math.max(0, localStart), view.lines.length, truncated);
875
+ }
876
+ function readTail(cmd, n, opts = {}) {
877
+ const view = getLinesView(cmd, opts);
878
+ if (view.lines.length === 0) return emptyResult(view);
879
+ const localStart = Math.max(0, view.lines.length - n);
880
+ const truncated = view.firstLineGlobal > 0 && n > view.lines.length;
881
+ return sliceView(view, localStart, view.lines.length, truncated);
882
+ }
883
+ function readHead(cmd, n, opts = {}) {
884
+ const view = getLinesView(cmd, opts);
885
+ if (view.lines.length === 0) return emptyResult(view);
886
+ const truncated = view.firstLineGlobal > 0;
887
+ return sliceView(view, 0, Math.min(n, view.lines.length), truncated);
888
+ }
889
+ function readAround(cmd, lineno, context, opts = {}) {
890
+ const view = getLinesView(cmd, opts);
891
+ if (view.lines.length === 0) return emptyResult(view);
892
+ const wantStart = Math.max(0, lineno - context);
893
+ const wantEnd = lineno + context + 1;
894
+ const localStart = wantStart - view.firstLineGlobal;
895
+ const localEnd = wantEnd - view.firstLineGlobal;
896
+ const truncated = wantStart < view.firstLineGlobal;
897
+ return sliceView(view, Math.max(0, localStart), Math.max(0, localEnd), truncated);
898
+ }
899
+ function grepOutput(cmd, pattern, opts = {}) {
900
+ const view = getLinesView(cmd, opts);
901
+ if (view.lines.length === 0) return emptyResult(view);
902
+ const flags = opts.ignoreCase ? "i" : "";
903
+ let re;
904
+ try {
905
+ re = new RegExp(pattern, flags);
906
+ } catch {
907
+ return emptyResult(view);
908
+ }
909
+ const since = opts.since ?? 0;
910
+ const maxMatches = opts.maxMatches ?? 1e3;
911
+ const matches = [];
912
+ for (let i = 0; i < view.lines.length; i++) {
913
+ const lineno = view.firstLineGlobal + i;
914
+ if (lineno < since) continue;
915
+ if (re.test(view.lines[i])) {
916
+ matches.push({ lineno, text: view.lines[i] });
917
+ if (matches.length >= maxMatches) break;
918
+ }
919
+ }
920
+ return {
921
+ matches,
922
+ next: view.nextLineGlobal,
923
+ firstAvailable: view.firstLineGlobal,
924
+ totalLines: view.nextLineGlobal,
925
+ truncated: since < view.firstLineGlobal
926
+ };
927
+ }
928
+
729
929
  export {
730
930
  registerBrowser,
731
931
  unregisterBrowser,
@@ -746,13 +946,24 @@ export {
746
946
  notifyOutputListeners,
747
947
  addExitListener,
748
948
  notifyExitListeners,
949
+ countNewlines,
749
950
  PtyRingBuffer,
750
951
  findSafeStart,
751
952
  registerCommand,
752
953
  appendCommandOutput,
954
+ getFirstAvailableLine,
753
955
  getRunningCommands,
754
956
  getRunningCommand,
755
957
  getRegistrySize,
756
958
  getAllProjectCwds,
757
- finalizeCommand
959
+ finalizeCommand,
960
+ writeStdinToCommand,
961
+ stripAnsi,
962
+ collapseCarriageReturn,
963
+ getLinesView,
964
+ readSince,
965
+ readTail,
966
+ readHead,
967
+ readAround,
968
+ grepOutput
758
969
  };
@@ -1,9 +1,3 @@
1
- var __defProp = Object.defineProperty;
2
- var __export = (target, all) => {
3
- for (var name in all)
4
- __defProp(target, name, { get: all[name], enumerable: true });
5
- };
6
-
7
1
  // packages/feature/console/src/server/plugins/neo4j/neo4jCore.ts
8
2
  import neo4j from "neo4j-driver";
9
3
  async function createNeo4jDriver(connectionString) {
@@ -207,7 +201,6 @@ function withFileLock(filePath, fn) {
207
201
  }
208
202
 
209
203
  export {
210
- __export,
211
204
  createNeo4jDriver,
212
205
  runCypherWithDriver,
213
206
  serializeValue,
package/dist/httpApi.mjs CHANGED
@@ -1,18 +1,29 @@
1
1
  import {
2
+ addExitListener,
3
+ addOutputListener,
2
4
  createPendingRequest,
3
5
  getBrowserByShortId,
6
+ getFirstAvailableLine,
4
7
  getRunningCommand,
5
8
  getTerminalByShortId,
9
+ grepOutput,
6
10
  listBrowsers,
7
11
  listTerminals,
12
+ readAround,
13
+ readHead,
14
+ readSince,
15
+ readTail,
8
16
  registerTerminal,
9
17
  sendCommandToBrowser,
18
+ stripAnsi,
10
19
  unregisterBrowser,
11
- unregisterTerminal
12
- } from "./chunk-FBR4KJI5.mjs";
20
+ unregisterTerminal,
21
+ writeStdinToCommand
22
+ } from "./chunk-KRTISG5I.mjs";
13
23
  import {
14
24
  getTerminalHistoryPath
15
- } from "./chunk-TXBVUZVH.mjs";
25
+ } from "./chunk-ZJ6CC3MH.mjs";
26
+ import "./chunk-7P6ASYW6.mjs";
16
27
 
17
28
  // src/lib/httpApi.ts
18
29
  import { parse } from "url";
@@ -43,12 +54,21 @@ async function readFinishedOutput(projectCwd, tabId, commandId) {
43
54
  }
44
55
  return void 0;
45
56
  }
57
+ var HANDLED_TERMINAL_ACTIONS = /* @__PURE__ */ new Set([
58
+ "list",
59
+ "register",
60
+ "unregister",
61
+ "output",
62
+ "stdin",
63
+ "meta",
64
+ "wait"
65
+ ]);
46
66
  async function handleTerminalApi(req, res) {
47
67
  const { pathname } = parse(req.url || "", true);
48
68
  const match = pathname?.match(/^\/api\/terminal\/([a-z]+)$/);
49
69
  if (!match || req.method !== "POST") return false;
50
70
  const action = match[1];
51
- if (action !== "list" && action !== "register" && action !== "unregister") {
71
+ if (!HANDLED_TERMINAL_ACTIONS.has(action)) {
52
72
  return false;
53
73
  }
54
74
  const chunks = [];
@@ -103,14 +123,56 @@ async function handleTerminalApi(req, res) {
103
123
  const cmd = getRunningCommand(entry.commandId);
104
124
  if (action === "output") {
105
125
  if (cmd) {
106
- const output = cmd.outputLines.join("\n") + (cmd.outputPartial ? "\n" + cmd.outputPartial : "");
126
+ const noAnsi = body.noAnsi ?? true;
127
+ const collapseCr = body.collapseCr ?? true;
128
+ const viewOpts = { stripAnsi: noAnsi, collapseCr };
129
+ let result;
130
+ if (typeof body.grep === "string" && body.grep.length > 0) {
131
+ result = grepOutput(cmd, body.grep, {
132
+ ...viewOpts,
133
+ ignoreCase: !!body.ignoreCase,
134
+ since: typeof body.since === "number" ? body.since : 0
135
+ });
136
+ } else if (typeof body.around === "number") {
137
+ result = readAround(
138
+ cmd,
139
+ body.around,
140
+ typeof body.context === "number" ? body.context : 5,
141
+ viewOpts
142
+ );
143
+ } else if (typeof body.tail === "number") {
144
+ result = readTail(cmd, body.tail, viewOpts);
145
+ } else if (typeof body.head === "number") {
146
+ result = readHead(cmd, body.head, viewOpts);
147
+ } else {
148
+ result = readSince(
149
+ cmd,
150
+ typeof body.since === "number" ? body.since : 0,
151
+ viewOpts
152
+ );
153
+ }
154
+ const maxBytes = body.maxBytes ?? 65536;
155
+ let acc = 0;
156
+ const trimmed = [];
157
+ for (let i = result.matches.length - 1; i >= 0; i--) {
158
+ const t = result.matches[i].text;
159
+ const len = t.length + 1;
160
+ if (acc + len > maxBytes && trimmed.length > 0) break;
161
+ trimmed.unshift(result.matches[i]);
162
+ acc += len;
163
+ }
164
+ const byteTruncated = trimmed.length < result.matches.length;
107
165
  sendJson(200, {
108
166
  ok: true,
109
167
  data: {
110
- output,
168
+ matches: trimmed,
169
+ next: result.next,
170
+ firstAvailable: result.firstAvailable,
171
+ totalLines: result.totalLines,
172
+ truncated: result.truncated || byteTruncated,
173
+ running: true,
111
174
  command: entry.command,
112
- pid: cmd.pid,
113
- running: true
175
+ pid: cmd.pid
114
176
  }
115
177
  });
116
178
  } else {
@@ -124,10 +186,11 @@ async function handleTerminalApi(req, res) {
124
186
  entry.commandId
125
187
  );
126
188
  if (historyOutput !== void 0) {
189
+ const out = body.noAnsi ? stripAnsi(historyOutput.output) : historyOutput.output;
127
190
  sendJson(200, {
128
191
  ok: true,
129
192
  data: {
130
- output: historyOutput.output,
193
+ output: out,
131
194
  command: entry.command,
132
195
  exitCode: historyOutput.exitCode,
133
196
  running: false
@@ -149,23 +212,146 @@ async function handleTerminalApi(req, res) {
149
212
  sendJson(400, { ok: false, error: "Missing data" });
150
213
  return true;
151
214
  }
152
- if (cmd.usePty && cmd.ptyProcess) {
153
- try {
154
- cmd.ptyProcess.write(data);
155
- } catch {
156
- }
157
- } else if (cmd.process.stdin?.writable) {
158
- cmd.process.stdin.write(data);
159
- } else {
215
+ const ok2 = writeStdinToCommand(cmd, data);
216
+ if (!ok2) {
160
217
  sendJson(500, { ok: false, error: "stdin not writable" });
161
218
  return true;
162
219
  }
163
220
  sendJson(200, { ok: true });
164
221
  return true;
165
222
  }
223
+ if (action === "meta") {
224
+ if (cmd) {
225
+ sendJson(200, {
226
+ ok: true,
227
+ data: {
228
+ shortId: id,
229
+ commandId: cmd.commandId,
230
+ command: cmd.command,
231
+ cwd: cmd.cwd,
232
+ tabId: cmd.tabId,
233
+ pid: cmd.pid,
234
+ usePty: !!cmd.usePty,
235
+ running: true,
236
+ startedAt: cmd.timestamp,
237
+ lastOutputAt: cmd.lastOutputAt ? new Date(cmd.lastOutputAt).toISOString() : null,
238
+ totalLines: cmd.totalLinesEverWritten,
239
+ firstAvailable: getFirstAvailableLine(cmd),
240
+ exitCode: null
241
+ }
242
+ });
243
+ } else {
244
+ sendJson(200, {
245
+ ok: true,
246
+ data: {
247
+ shortId: id,
248
+ commandId: entry.commandId,
249
+ command: entry.command,
250
+ tabId: entry.tabId,
251
+ running: false
252
+ // Exit info / history rebuild left for a future enhancement that
253
+ // reads the JSONL placeholder; meta on a stopped command is mostly
254
+ // useful for confirming "this id existed".
255
+ }
256
+ });
257
+ }
258
+ return true;
259
+ }
260
+ if (action === "wait") {
261
+ if (!cmd) {
262
+ sendJson(404, { ok: false, error: "Command no longer running" });
263
+ return true;
264
+ }
265
+ const timeoutSec = body.timeout ?? 30;
266
+ if (!body.pattern && typeof body.idle !== "number" && !body.waitExit) {
267
+ sendJson(400, {
268
+ ok: false,
269
+ error: "wait requires one of: pattern / idle / waitExit"
270
+ });
271
+ return true;
272
+ }
273
+ const outcome = await waitForCondition(cmd.commandId, {
274
+ pattern: body.pattern,
275
+ idle: body.idle,
276
+ waitExit: body.waitExit,
277
+ timeoutSec,
278
+ printOutput: !!body.printOutput
279
+ });
280
+ sendJson(200, { ok: true, data: outcome });
281
+ return true;
282
+ }
166
283
  sendJson(400, { ok: false, error: `Unknown action: ${action}` });
167
284
  return true;
168
285
  }
286
+ async function waitForCondition(commandId, opts) {
287
+ return new Promise((resolve) => {
288
+ let resolved = false;
289
+ let unsubOutput;
290
+ let unsubExit;
291
+ let idleHandle;
292
+ const buf = [];
293
+ const cleanup = () => {
294
+ if (unsubOutput) unsubOutput();
295
+ if (unsubExit) unsubExit();
296
+ clearTimeout(timeoutHandle);
297
+ if (idleHandle) clearTimeout(idleHandle);
298
+ };
299
+ const finish = (result) => {
300
+ if (resolved) return;
301
+ resolved = true;
302
+ cleanup();
303
+ const output = opts.printOutput ? buf.join("") : void 0;
304
+ resolve({ ...result, output });
305
+ };
306
+ let patternRe;
307
+ if (opts.pattern) {
308
+ try {
309
+ patternRe = new RegExp(opts.pattern);
310
+ } catch (e) {
311
+ finish({ outcome: "timeout" });
312
+ resolve({
313
+ outcome: "timeout",
314
+ match: `invalid regex: ${e.message}`
315
+ });
316
+ return;
317
+ }
318
+ }
319
+ const scheduleIdle = () => {
320
+ if (typeof opts.idle !== "number") return;
321
+ if (idleHandle) clearTimeout(idleHandle);
322
+ idleHandle = setTimeout(
323
+ () => finish({ outcome: "idle" }),
324
+ opts.idle * 1e3
325
+ );
326
+ };
327
+ if (patternRe || typeof opts.idle === "number" || opts.printOutput) {
328
+ unsubOutput = addOutputListener(commandId, (data) => {
329
+ if (opts.printOutput) buf.push(data);
330
+ if (patternRe) {
331
+ const stripped = stripAnsi(data);
332
+ const lines = stripped.split("\n");
333
+ for (const line of lines) {
334
+ if (patternRe.test(line)) {
335
+ finish({ outcome: "pattern", match: line });
336
+ return;
337
+ }
338
+ }
339
+ }
340
+ scheduleIdle();
341
+ });
342
+ }
343
+ if (opts.waitExit) {
344
+ unsubExit = addExitListener(commandId, (code) => {
345
+ finish({ outcome: "exit", exitCode: code });
346
+ });
347
+ }
348
+ scheduleIdle();
349
+ const timeoutHandle = setTimeout(
350
+ () => finish({ outcome: "timeout" }),
351
+ opts.timeoutSec * 1e3
352
+ );
353
+ });
354
+ }
169
355
  async function handleBrowserApi(req, res) {
170
356
  const { pathname } = parse(req.url || "", true);
171
357
  const match = pathname?.match(/^\/api\/browser\/([a-z][a-z_]*)$/);
@@ -18,7 +18,7 @@ import {
18
18
  Tracer_exports,
19
19
  getSessionTitle,
20
20
  updateGlobalState
21
- } from "./chunk-OWUW2O3D.mjs";
21
+ } from "./chunk-CZWJPTRO.mjs";
22
22
  import {
23
23
  CLAUDE2_DIR,
24
24
  SCHEDULED_TASKS_FILE,
@@ -26,7 +26,8 @@ import {
26
26
  readJsonFile,
27
27
  runCypherWithDriver,
28
28
  writeJsonFile
29
- } from "./chunk-TXBVUZVH.mjs";
29
+ } from "./chunk-ZJ6CC3MH.mjs";
30
+ import "./chunk-7P6ASYW6.mjs";
30
31
 
31
32
  // packages/feature/agent/src/server/scheduledTasks.ts
32
33
  import { query as query2 } from "@anthropic-ai/claude-agent-sdk";
@@ -3,41 +3,55 @@ import {
3
3
  addExitListener,
4
4
  addOutputListener,
5
5
  appendCommandOutput,
6
+ collapseCarriageReturn,
7
+ countNewlines,
6
8
  createPendingRequest,
7
9
  finalizeCommand,
8
10
  finalizeTerminal,
9
11
  findSafeStart,
10
12
  getAllProjectCwds,
11
13
  getBrowserByShortId,
14
+ getFirstAvailableLine,
15
+ getLinesView,
12
16
  getRegistrySize,
13
17
  getRunningCommand,
14
18
  getRunningCommands,
15
19
  getTerminalByShortId,
16
20
  getTerminalShortId,
21
+ grepOutput,
17
22
  kernelManager,
18
23
  listBrowsers,
19
24
  listTerminals,
20
25
  notifyExitListeners,
21
26
  notifyOutputListeners,
27
+ readAround,
28
+ readHead,
29
+ readSince,
30
+ readTail,
22
31
  registerBrowser,
23
32
  registerCommand,
24
33
  registerTerminal,
25
34
  resolvePendingRequest,
26
35
  sendCommandToBrowser,
36
+ stripAnsi,
27
37
  unregisterBrowser,
28
38
  unregisterTerminal,
29
- updateBrowserWs
30
- } from "./chunk-FBR4KJI5.mjs";
39
+ updateBrowserWs,
40
+ writeStdinToCommand
41
+ } from "./chunk-KRTISG5I.mjs";
31
42
  import {
32
43
  createNeo4jDriver,
33
44
  runCypherWithDriver,
34
45
  serializeValue
35
- } from "./chunk-TXBVUZVH.mjs";
46
+ } from "./chunk-ZJ6CC3MH.mjs";
47
+ import "./chunk-7P6ASYW6.mjs";
36
48
  export {
37
49
  PtyRingBuffer,
38
50
  addExitListener,
39
51
  addOutputListener,
40
52
  appendCommandOutput,
53
+ collapseCarriageReturn,
54
+ countNewlines,
41
55
  createNeo4jDriver,
42
56
  createPendingRequest,
43
57
  finalizeCommand,
@@ -45,16 +59,23 @@ export {
45
59
  findSafeStart,
46
60
  getAllProjectCwds,
47
61
  getBrowserByShortId,
62
+ getFirstAvailableLine,
63
+ getLinesView,
48
64
  getRegistrySize,
49
65
  getRunningCommand,
50
66
  getRunningCommands,
51
67
  getTerminalByShortId,
52
68
  getTerminalShortId,
69
+ grepOutput,
53
70
  kernelManager,
54
71
  listBrowsers,
55
72
  listTerminals,
56
73
  notifyExitListeners,
57
74
  notifyOutputListeners,
75
+ readAround,
76
+ readHead,
77
+ readSince,
78
+ readTail,
58
79
  registerBrowser,
59
80
  registerCommand,
60
81
  registerTerminal,
@@ -62,7 +83,9 @@ export {
62
83
  runCypherWithDriver,
63
84
  sendCommandToBrowser,
64
85
  serializeValue,
86
+ stripAnsi,
65
87
  unregisterBrowser,
66
88
  unregisterTerminal,
67
- updateBrowserWs
89
+ updateBrowserWs,
90
+ writeStdinToCommand
68
91
  };