agent-tower 0.1.0

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 (341) hide show
  1. package/dist/app.d.ts +2 -0
  2. package/dist/app.d.ts.map +1 -0
  3. package/dist/app.js +62 -0
  4. package/dist/app.js.map +1 -0
  5. package/dist/cli.d.ts +3 -0
  6. package/dist/cli.d.ts.map +1 -0
  7. package/dist/cli.js +131 -0
  8. package/dist/cli.js.map +1 -0
  9. package/dist/core/container.d.ts +11 -0
  10. package/dist/core/container.d.ts.map +1 -0
  11. package/dist/core/container.js +66 -0
  12. package/dist/core/container.js.map +1 -0
  13. package/dist/core/event-bus.d.ts +58 -0
  14. package/dist/core/event-bus.d.ts.map +1 -0
  15. package/dist/core/event-bus.js +29 -0
  16. package/dist/core/event-bus.js.map +1 -0
  17. package/dist/errors.d.ts +22 -0
  18. package/dist/errors.d.ts.map +1 -0
  19. package/dist/errors.js +36 -0
  20. package/dist/errors.js.map +1 -0
  21. package/dist/executors/base.executor.d.ts +160 -0
  22. package/dist/executors/base.executor.d.ts.map +1 -0
  23. package/dist/executors/base.executor.js +122 -0
  24. package/dist/executors/base.executor.js.map +1 -0
  25. package/dist/executors/claude-code.executor.d.ts +78 -0
  26. package/dist/executors/claude-code.executor.d.ts.map +1 -0
  27. package/dist/executors/claude-code.executor.js +160 -0
  28. package/dist/executors/claude-code.executor.js.map +1 -0
  29. package/dist/executors/command-builder.d.ts +64 -0
  30. package/dist/executors/command-builder.d.ts.map +1 -0
  31. package/dist/executors/command-builder.js +144 -0
  32. package/dist/executors/command-builder.js.map +1 -0
  33. package/dist/executors/cursor-agent.executor.d.ts +57 -0
  34. package/dist/executors/cursor-agent.executor.d.ts.map +1 -0
  35. package/dist/executors/cursor-agent.executor.js +109 -0
  36. package/dist/executors/cursor-agent.executor.js.map +1 -0
  37. package/dist/executors/default-profiles.json +29 -0
  38. package/dist/executors/execution-env.d.ts +64 -0
  39. package/dist/executors/execution-env.d.ts.map +1 -0
  40. package/dist/executors/execution-env.js +97 -0
  41. package/dist/executors/execution-env.js.map +1 -0
  42. package/dist/executors/gemini-cli.executor.d.ts +55 -0
  43. package/dist/executors/gemini-cli.executor.d.ts.map +1 -0
  44. package/dist/executors/gemini-cli.executor.js +117 -0
  45. package/dist/executors/gemini-cli.executor.js.map +1 -0
  46. package/dist/executors/index.d.ts +49 -0
  47. package/dist/executors/index.d.ts.map +1 -0
  48. package/dist/executors/index.js +95 -0
  49. package/dist/executors/index.js.map +1 -0
  50. package/dist/executors/profiles.d.ts +61 -0
  51. package/dist/executors/profiles.d.ts.map +1 -0
  52. package/dist/executors/profiles.js +192 -0
  53. package/dist/executors/profiles.js.map +1 -0
  54. package/dist/git/git-cli.d.ts +59 -0
  55. package/dist/git/git-cli.d.ts.map +1 -0
  56. package/dist/git/git-cli.js +156 -0
  57. package/dist/git/git-cli.js.map +1 -0
  58. package/dist/git/worktree.manager.d.ts +166 -0
  59. package/dist/git/worktree.manager.d.ts.map +1 -0
  60. package/dist/git/worktree.manager.js +481 -0
  61. package/dist/git/worktree.manager.js.map +1 -0
  62. package/dist/index.d.ts +2 -0
  63. package/dist/index.d.ts.map +1 -0
  64. package/dist/index.js +37 -0
  65. package/dist/index.js.map +1 -0
  66. package/dist/mcp/context.d.ts +15 -0
  67. package/dist/mcp/context.d.ts.map +1 -0
  68. package/dist/mcp/context.js +19 -0
  69. package/dist/mcp/context.js.map +1 -0
  70. package/dist/mcp/http-client.d.ts +46 -0
  71. package/dist/mcp/http-client.d.ts.map +1 -0
  72. package/dist/mcp/http-client.js +100 -0
  73. package/dist/mcp/http-client.js.map +1 -0
  74. package/dist/mcp/index.d.ts +3 -0
  75. package/dist/mcp/index.d.ts.map +1 -0
  76. package/dist/mcp/index.js +36 -0
  77. package/dist/mcp/index.js.map +1 -0
  78. package/dist/mcp/server.d.ts +6 -0
  79. package/dist/mcp/server.d.ts.map +1 -0
  80. package/dist/mcp/server.js +32 -0
  81. package/dist/mcp/server.js.map +1 -0
  82. package/dist/mcp/tools/projects.d.ts +7 -0
  83. package/dist/mcp/tools/projects.d.ts.map +1 -0
  84. package/dist/mcp/tools/projects.js +12 -0
  85. package/dist/mcp/tools/projects.js.map +1 -0
  86. package/dist/mcp/tools/sessions.d.ts +7 -0
  87. package/dist/mcp/tools/sessions.d.ts.map +1 -0
  88. package/dist/mcp/tools/sessions.js +22 -0
  89. package/dist/mcp/tools/sessions.js.map +1 -0
  90. package/dist/mcp/tools/tasks.d.ts +7 -0
  91. package/dist/mcp/tools/tasks.d.ts.map +1 -0
  92. package/dist/mcp/tools/tasks.js +68 -0
  93. package/dist/mcp/tools/tasks.js.map +1 -0
  94. package/dist/mcp/tools/workspaces.d.ts +7 -0
  95. package/dist/mcp/tools/workspaces.d.ts.map +1 -0
  96. package/dist/mcp/tools/workspaces.js +45 -0
  97. package/dist/mcp/tools/workspaces.js.map +1 -0
  98. package/dist/mcp/types.d.ts +109 -0
  99. package/dist/mcp/types.d.ts.map +1 -0
  100. package/dist/mcp/types.js +55 -0
  101. package/dist/mcp/types.js.map +1 -0
  102. package/dist/middleware/tunnel-auth.d.ts +13 -0
  103. package/dist/middleware/tunnel-auth.d.ts.map +1 -0
  104. package/dist/middleware/tunnel-auth.js +39 -0
  105. package/dist/middleware/tunnel-auth.js.map +1 -0
  106. package/dist/output/__tests__/claude-code-parser-token.test.d.ts +2 -0
  107. package/dist/output/__tests__/claude-code-parser-token.test.d.ts.map +1 -0
  108. package/dist/output/__tests__/claude-code-parser-token.test.js +233 -0
  109. package/dist/output/__tests__/claude-code-parser-token.test.js.map +1 -0
  110. package/dist/output/__tests__/cursor-agent-parser-token.test.d.ts +2 -0
  111. package/dist/output/__tests__/cursor-agent-parser-token.test.d.ts.map +1 -0
  112. package/dist/output/__tests__/cursor-agent-parser-token.test.js +95 -0
  113. package/dist/output/__tests__/cursor-agent-parser-token.test.js.map +1 -0
  114. package/dist/output/__tests__/msg-store-token.test.d.ts +2 -0
  115. package/dist/output/__tests__/msg-store-token.test.d.ts.map +1 -0
  116. package/dist/output/__tests__/msg-store-token.test.js +38 -0
  117. package/dist/output/__tests__/msg-store-token.test.js.map +1 -0
  118. package/dist/output/claude-code-parser.d.ts +96 -0
  119. package/dist/output/claude-code-parser.d.ts.map +1 -0
  120. package/dist/output/claude-code-parser.js +498 -0
  121. package/dist/output/claude-code-parser.js.map +1 -0
  122. package/dist/output/cursor-agent-parser.d.ts +87 -0
  123. package/dist/output/cursor-agent-parser.d.ts.map +1 -0
  124. package/dist/output/cursor-agent-parser.js +476 -0
  125. package/dist/output/cursor-agent-parser.js.map +1 -0
  126. package/dist/output/index.d.ts +9 -0
  127. package/dist/output/index.d.ts.map +1 -0
  128. package/dist/output/index.js +13 -0
  129. package/dist/output/index.js.map +1 -0
  130. package/dist/output/msg-store.d.ts +110 -0
  131. package/dist/output/msg-store.d.ts.map +1 -0
  132. package/dist/output/msg-store.js +274 -0
  133. package/dist/output/msg-store.js.map +1 -0
  134. package/dist/output/types.d.ts +90 -0
  135. package/dist/output/types.d.ts.map +1 -0
  136. package/dist/output/types.js +93 -0
  137. package/dist/output/types.js.map +1 -0
  138. package/dist/output/utils/ansi.d.ts +8 -0
  139. package/dist/output/utils/ansi.d.ts.map +1 -0
  140. package/dist/output/utils/ansi.js +17 -0
  141. package/dist/output/utils/ansi.js.map +1 -0
  142. package/dist/output/utils/patch.d.ts +57 -0
  143. package/dist/output/utils/patch.d.ts.map +1 -0
  144. package/dist/output/utils/patch.js +113 -0
  145. package/dist/output/utils/patch.js.map +1 -0
  146. package/dist/pipeline/agent-pipeline.d.ts +28 -0
  147. package/dist/pipeline/agent-pipeline.d.ts.map +1 -0
  148. package/dist/pipeline/agent-pipeline.js +76 -0
  149. package/dist/pipeline/agent-pipeline.js.map +1 -0
  150. package/dist/routes/attachments.d.ts +3 -0
  151. package/dist/routes/attachments.d.ts.map +1 -0
  152. package/dist/routes/attachments.js +141 -0
  153. package/dist/routes/attachments.js.map +1 -0
  154. package/dist/routes/demo.d.ts +3 -0
  155. package/dist/routes/demo.d.ts.map +1 -0
  156. package/dist/routes/demo.js +152 -0
  157. package/dist/routes/demo.js.map +1 -0
  158. package/dist/routes/files.d.ts +3 -0
  159. package/dist/routes/files.d.ts.map +1 -0
  160. package/dist/routes/files.js +313 -0
  161. package/dist/routes/files.js.map +1 -0
  162. package/dist/routes/filesystem.d.ts +3 -0
  163. package/dist/routes/filesystem.d.ts.map +1 -0
  164. package/dist/routes/filesystem.js +126 -0
  165. package/dist/routes/filesystem.js.map +1 -0
  166. package/dist/routes/git.d.ts +3 -0
  167. package/dist/routes/git.d.ts.map +1 -0
  168. package/dist/routes/git.js +170 -0
  169. package/dist/routes/git.js.map +1 -0
  170. package/dist/routes/index.d.ts +3 -0
  171. package/dist/routes/index.d.ts.map +1 -0
  172. package/dist/routes/index.js +45 -0
  173. package/dist/routes/index.js.map +1 -0
  174. package/dist/routes/notifications.d.ts +10 -0
  175. package/dist/routes/notifications.d.ts.map +1 -0
  176. package/dist/routes/notifications.js +54 -0
  177. package/dist/routes/notifications.js.map +1 -0
  178. package/dist/routes/profiles.d.ts +12 -0
  179. package/dist/routes/profiles.d.ts.map +1 -0
  180. package/dist/routes/profiles.js +76 -0
  181. package/dist/routes/profiles.js.map +1 -0
  182. package/dist/routes/projects.d.ts +3 -0
  183. package/dist/routes/projects.d.ts.map +1 -0
  184. package/dist/routes/projects.js +94 -0
  185. package/dist/routes/projects.js.map +1 -0
  186. package/dist/routes/sessions.d.ts +12 -0
  187. package/dist/routes/sessions.d.ts.map +1 -0
  188. package/dist/routes/sessions.js +109 -0
  189. package/dist/routes/sessions.js.map +1 -0
  190. package/dist/routes/system.d.ts +3 -0
  191. package/dist/routes/system.d.ts.map +1 -0
  192. package/dist/routes/system.js +42 -0
  193. package/dist/routes/system.js.map +1 -0
  194. package/dist/routes/tasks.d.ts +3 -0
  195. package/dist/routes/tasks.d.ts.map +1 -0
  196. package/dist/routes/tasks.js +136 -0
  197. package/dist/routes/tasks.js.map +1 -0
  198. package/dist/routes/terminals.d.ts +3 -0
  199. package/dist/routes/terminals.d.ts.map +1 -0
  200. package/dist/routes/terminals.js +54 -0
  201. package/dist/routes/terminals.js.map +1 -0
  202. package/dist/routes/tunnel.d.ts +3 -0
  203. package/dist/routes/tunnel.d.ts.map +1 -0
  204. package/dist/routes/tunnel.js +36 -0
  205. package/dist/routes/tunnel.js.map +1 -0
  206. package/dist/routes/workspaces.d.ts +3 -0
  207. package/dist/routes/workspaces.d.ts.map +1 -0
  208. package/dist/routes/workspaces.js +171 -0
  209. package/dist/routes/workspaces.js.map +1 -0
  210. package/dist/services/commit-message.service.d.ts +32 -0
  211. package/dist/services/commit-message.service.d.ts.map +1 -0
  212. package/dist/services/commit-message.service.js +202 -0
  213. package/dist/services/commit-message.service.js.map +1 -0
  214. package/dist/services/notifications/feishu-channel.d.ts +9 -0
  215. package/dist/services/notifications/feishu-channel.d.ts.map +1 -0
  216. package/dist/services/notifications/feishu-channel.js +51 -0
  217. package/dist/services/notifications/feishu-channel.js.map +1 -0
  218. package/dist/services/notifications/index.d.ts +3 -0
  219. package/dist/services/notifications/index.d.ts.map +1 -0
  220. package/dist/services/notifications/index.js +2 -0
  221. package/dist/services/notifications/index.js.map +1 -0
  222. package/dist/services/notifications/notification.service.d.ts +10 -0
  223. package/dist/services/notifications/notification.service.d.ts.map +1 -0
  224. package/dist/services/notifications/notification.service.js +85 -0
  225. package/dist/services/notifications/notification.service.js.map +1 -0
  226. package/dist/services/notifications/os-channel.d.ts +8 -0
  227. package/dist/services/notifications/os-channel.d.ts.map +1 -0
  228. package/dist/services/notifications/os-channel.js +38 -0
  229. package/dist/services/notifications/os-channel.js.map +1 -0
  230. package/dist/services/notifications/types.d.ts +11 -0
  231. package/dist/services/notifications/types.d.ts.map +1 -0
  232. package/dist/services/notifications/types.js +2 -0
  233. package/dist/services/notifications/types.js.map +1 -0
  234. package/dist/services/project.service.d.ts +91 -0
  235. package/dist/services/project.service.d.ts.map +1 -0
  236. package/dist/services/project.service.js +138 -0
  237. package/dist/services/project.service.js.map +1 -0
  238. package/dist/services/session-manager.d.ts +164 -0
  239. package/dist/services/session-manager.d.ts.map +1 -0
  240. package/dist/services/session-manager.js +569 -0
  241. package/dist/services/session-manager.js.map +1 -0
  242. package/dist/services/task.service.d.ts +179 -0
  243. package/dist/services/task.service.d.ts.map +1 -0
  244. package/dist/services/task.service.js +281 -0
  245. package/dist/services/task.service.js.map +1 -0
  246. package/dist/services/terminal-manager.d.ts +64 -0
  247. package/dist/services/terminal-manager.d.ts.map +1 -0
  248. package/dist/services/terminal-manager.js +217 -0
  249. package/dist/services/terminal-manager.js.map +1 -0
  250. package/dist/services/tunnel.service.d.ts +16 -0
  251. package/dist/services/tunnel.service.d.ts.map +1 -0
  252. package/dist/services/tunnel.service.js +77 -0
  253. package/dist/services/tunnel.service.js.map +1 -0
  254. package/dist/services/workspace.service.d.ts +219 -0
  255. package/dist/services/workspace.service.d.ts.map +1 -0
  256. package/dist/services/workspace.service.js +351 -0
  257. package/dist/services/workspace.service.js.map +1 -0
  258. package/dist/socket/events.d.ts +2 -0
  259. package/dist/socket/events.d.ts.map +1 -0
  260. package/dist/socket/events.js +3 -0
  261. package/dist/socket/events.js.map +1 -0
  262. package/dist/socket/index.d.ts +20 -0
  263. package/dist/socket/index.d.ts.map +1 -0
  264. package/dist/socket/index.js +77 -0
  265. package/dist/socket/index.js.map +1 -0
  266. package/dist/socket/middleware/auth.d.ts +13 -0
  267. package/dist/socket/middleware/auth.d.ts.map +1 -0
  268. package/dist/socket/middleware/auth.js +29 -0
  269. package/dist/socket/middleware/auth.js.map +1 -0
  270. package/dist/socket/middleware/error-handler.d.ts +11 -0
  271. package/dist/socket/middleware/error-handler.d.ts.map +1 -0
  272. package/dist/socket/middleware/error-handler.js +39 -0
  273. package/dist/socket/middleware/error-handler.js.map +1 -0
  274. package/dist/socket/middleware/index.d.ts +3 -0
  275. package/dist/socket/middleware/index.d.ts.map +1 -0
  276. package/dist/socket/middleware/index.js +3 -0
  277. package/dist/socket/middleware/index.js.map +1 -0
  278. package/dist/socket/rooms.d.ts +30 -0
  279. package/dist/socket/rooms.d.ts.map +1 -0
  280. package/dist/socket/rooms.js +39 -0
  281. package/dist/socket/rooms.js.map +1 -0
  282. package/dist/socket/socket-gateway.d.ts +21 -0
  283. package/dist/socket/socket-gateway.d.ts.map +1 -0
  284. package/dist/socket/socket-gateway.js +173 -0
  285. package/dist/socket/socket-gateway.js.map +1 -0
  286. package/dist/types/index.d.ts +41 -0
  287. package/dist/types/index.d.ts.map +1 -0
  288. package/dist/types/index.js +41 -0
  289. package/dist/types/index.js.map +1 -0
  290. package/dist/utils/index.d.ts +12 -0
  291. package/dist/utils/index.d.ts.map +1 -0
  292. package/dist/utils/index.js +25 -0
  293. package/dist/utils/index.js.map +1 -0
  294. package/dist/web/assets/AgentDemoPage-WdWEQtyU.js +1 -0
  295. package/dist/web/assets/DemoPage-C4Z_ftHI.js +4 -0
  296. package/dist/web/assets/NotificationSettingsPage-FrLfgt9y.js +1 -0
  297. package/dist/web/assets/ProfileSettingsPage-Cs93rTRr.js +3 -0
  298. package/dist/web/assets/ProjectKanbanPage-BmlRVfzo.js +75 -0
  299. package/dist/web/assets/ProjectKanbanPage-G5OQeJvU.css +1 -0
  300. package/dist/web/assets/api-client-CEBkg5lt.js +1 -0
  301. package/dist/web/assets/circle-alert-BEozlsMd.js +1 -0
  302. package/dist/web/assets/code-block-OCS4YCEC-CGgYYS4A.js +2 -0
  303. package/dist/web/assets/folder-picker-BP3x3phB.js +1 -0
  304. package/dist/web/assets/index-BuAijQvi.js +13 -0
  305. package/dist/web/assets/index-CxV866Yg.css +1 -0
  306. package/dist/web/assets/loader-circle-yEIqsdJ1.js +1 -0
  307. package/dist/web/assets/mermaid-NOHMQCX5-CIqtI2jF.js +123 -0
  308. package/dist/web/assets/mermaid-NOHMQCX5-lI9o3AWT.css +1 -0
  309. package/dist/web/assets/modal-BoX2RXaV.js +1 -0
  310. package/dist/web/assets/query-keys-BD_s_Etj.js +1 -0
  311. package/dist/web/assets/use-profiles-Rh8rBsAt.js +1 -0
  312. package/dist/web/index.html +14 -0
  313. package/dist/web/vite.svg +1 -0
  314. package/node_modules/@agent-tower/shared/dist/dev-port.d.ts +12 -0
  315. package/node_modules/@agent-tower/shared/dist/dev-port.d.ts.map +1 -0
  316. package/node_modules/@agent-tower/shared/dist/dev-port.js +31 -0
  317. package/node_modules/@agent-tower/shared/dist/dev-port.js.map +1 -0
  318. package/node_modules/@agent-tower/shared/dist/index.d.ts +5 -0
  319. package/node_modules/@agent-tower/shared/dist/index.d.ts.map +1 -0
  320. package/node_modules/@agent-tower/shared/dist/index.js +5 -0
  321. package/node_modules/@agent-tower/shared/dist/index.js.map +1 -0
  322. package/node_modules/@agent-tower/shared/dist/log-adapter.d.ts +72 -0
  323. package/node_modules/@agent-tower/shared/dist/log-adapter.d.ts.map +1 -0
  324. package/node_modules/@agent-tower/shared/dist/log-adapter.js +144 -0
  325. package/node_modules/@agent-tower/shared/dist/log-adapter.js.map +1 -0
  326. package/node_modules/@agent-tower/shared/dist/socket/events.d.ts +133 -0
  327. package/node_modules/@agent-tower/shared/dist/socket/events.d.ts.map +1 -0
  328. package/node_modules/@agent-tower/shared/dist/socket/events.js +32 -0
  329. package/node_modules/@agent-tower/shared/dist/socket/events.js.map +1 -0
  330. package/node_modules/@agent-tower/shared/dist/socket/index.d.ts +2 -0
  331. package/node_modules/@agent-tower/shared/dist/socket/index.d.ts.map +1 -0
  332. package/node_modules/@agent-tower/shared/dist/socket/index.js +2 -0
  333. package/node_modules/@agent-tower/shared/dist/socket/index.js.map +1 -0
  334. package/node_modules/@agent-tower/shared/dist/types.d.ts +168 -0
  335. package/node_modules/@agent-tower/shared/dist/types.d.ts.map +1 -0
  336. package/node_modules/@agent-tower/shared/dist/types.js +53 -0
  337. package/node_modules/@agent-tower/shared/dist/types.js.map +1 -0
  338. package/node_modules/@agent-tower/shared/package.json +38 -0
  339. package/package.json +46 -0
  340. package/prisma/schema.prisma +130 -0
  341. package/scripts/postinstall.js +120 -0
@@ -0,0 +1 @@
1
+ @keyframes sd-fadeIn{0%{opacity:0}to{opacity:1}}@keyframes sd-blurIn{0%{opacity:0;filter:blur(4px)}to{opacity:1;filter:blur(0)}}@keyframes sd-slideUp{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}[data-sd-animate]{animation:var(--sd-animation, sd-fadeIn) var(--sd-duration, .15s) var(--sd-easing, ease) both}
@@ -0,0 +1 @@
1
+ import{c as l,r as a,j as e}from"./index-BuAijQvi.js";import{c}from"./api-client-CEBkg5lt.js";const h=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]],k=l("plus",h);const b=[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]],w=l("trash-2",b);const f=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],x=l("x",f),p=({isOpen:t,onClose:s,title:i,children:u,action:n,className:m})=>{const[y,d]=a.useState(!1);a.useEffect(()=>{if(t)d(!0),document.body.style.overflow="hidden";else{const o=setTimeout(()=>d(!1),200);return document.body.style.overflow="unset",()=>clearTimeout(o)}},[t]);const r=a.useCallback(o=>{o.key==="Escape"&&s()},[s]);return a.useEffect(()=>{if(t)return document.addEventListener("keydown",r),()=>{document.removeEventListener("keydown",r)}},[t,r]),!y&&!t?null:e.jsxs("div",{className:c("fixed inset-0 z-50 flex items-center justify-center p-4 transition-opacity duration-200",t?"opacity-100":"opacity-0"),children:[e.jsx("div",{className:"absolute inset-0 bg-white/80 backdrop-blur-sm",onClick:s}),e.jsxs("div",{className:c("relative w-full max-w-lg bg-white rounded-xl shadow-2xl shadow-neutral-200/50 border border-neutral-100 transform transition-all duration-200",t?"scale-100 translate-y-0":"scale-95 translate-y-2",m),children:[e.jsxs("div",{className:"flex items-center justify-between px-6 py-4 border-b border-neutral-50",children:[e.jsx("h3",{className:"font-semibold text-neutral-900",children:i}),e.jsx("button",{onClick:s,className:"text-neutral-400 hover:text-neutral-900 transition-colors",children:e.jsx(x,{size:18})})]}),e.jsx("div",{className:"p-6",children:u}),n?e.jsx("div",{className:"px-6 py-4 bg-neutral-50 rounded-b-xl border-t border-neutral-100 flex justify-end gap-3",children:n}):null]})]})},M=Object.freeze(Object.defineProperty({__proto__:null,Modal:p},Symbol.toStringTag,{value:"Module"}));export{p as M,k as P,w as T,x as X,M as m};
@@ -0,0 +1 @@
1
+ import{a as G,p as K,b as d,d as w,e as y,n as M,f as P,h as A,t as Y,k as C,l as Z,m as $,o as B,q as I,v as H,w as q,r as u,x as _,u as J}from"./index-BuAijQvi.js";var tt=class extends G{constructor(t,e){super(),this.options=e,this.#s=t,this.#o=null,this.#n=K(),this.bindMethods(),this.setOptions(e)}#s;#t=void 0;#i=void 0;#e=void 0;#r;#a;#n;#o;#b;#d;#f;#u;#c;#h;#p=new Set;bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(this.#t.addObserver(this),W(this.#t,this.options)?this.#l():this.updateResult(),this.#y())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return k(this.#t,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return k(this.#t,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#R(),this.#S(),this.#t.removeObserver(this)}setOptions(t){const e=this.options,s=this.#t;if(this.options=this.#s.defaultQueryOptions(t),this.options.enabled!==void 0&&typeof this.options.enabled!="boolean"&&typeof this.options.enabled!="function"&&typeof d(this.options.enabled,this.#t)!="boolean")throw new Error("Expected enabled to be a boolean or a callback that returns a boolean");this.#O(),this.#t.setOptions(this.options),e._defaulted&&!w(this.options,e)&&this.#s.getQueryCache().notify({type:"observerOptionsUpdated",query:this.#t,observer:this});const i=this.hasListeners();i&&z(this.#t,s,this.options,e)&&this.#l(),this.updateResult(),i&&(this.#t!==s||d(this.options.enabled,this.#t)!==d(e.enabled,this.#t)||y(this.options.staleTime,this.#t)!==y(e.staleTime,this.#t))&&this.#v();const r=this.#m();i&&(this.#t!==s||d(this.options.enabled,this.#t)!==d(e.enabled,this.#t)||r!==this.#h)&&this.#g(r)}getOptimisticResult(t){const e=this.#s.getQueryCache().build(this.#s,t),s=this.createResult(e,t);return st(this,s)&&(this.#e=s,this.#a=this.options,this.#r=this.#t.state),s}getCurrentResult(){return this.#e}trackResult(t,e){return new Proxy(t,{get:(s,i)=>(this.trackProp(i),e?.(i),i==="promise"&&(this.trackProp("data"),!this.options.experimental_prefetchInRender&&this.#n.status==="pending"&&this.#n.reject(new Error("experimental_prefetchInRender feature flag is not enabled"))),Reflect.get(s,i))})}trackProp(t){this.#p.add(t)}getCurrentQuery(){return this.#t}refetch({...t}={}){return this.fetch({...t})}fetchOptimistic(t){const e=this.#s.defaultQueryOptions(t),s=this.#s.getQueryCache().build(this.#s,e);return s.fetch().then(()=>this.createResult(s,e))}fetch(t){return this.#l({...t,cancelRefetch:t.cancelRefetch??!0}).then(()=>(this.updateResult(),this.#e))}#l(t){this.#O();let e=this.#t.fetch(this.options,t);return t?.throwOnError||(e=e.catch(M)),e}#v(){this.#R();const t=y(this.options.staleTime,this.#t);if(P||this.#e.isStale||!A(t))return;const s=Y(this.#e.dataUpdatedAt,t)+1;this.#u=C.setTimeout(()=>{this.#e.isStale||this.updateResult()},s)}#m(){return(typeof this.options.refetchInterval=="function"?this.options.refetchInterval(this.#t):this.options.refetchInterval)??!1}#g(t){this.#S(),this.#h=t,!(P||d(this.options.enabled,this.#t)===!1||!A(this.#h)||this.#h===0)&&(this.#c=C.setInterval(()=>{(this.options.refetchIntervalInBackground||Z.isFocused())&&this.#l()},this.#h))}#y(){this.#v(),this.#g(this.#m())}#R(){this.#u&&(C.clearTimeout(this.#u),this.#u=void 0)}#S(){this.#c&&(C.clearInterval(this.#c),this.#c=void 0)}createResult(t,e){const s=this.#t,i=this.options,r=this.#e,c=this.#r,a=this.#a,v=t!==s?t.state:this.#i,{state:h}=t;let n={...h},m=!1,o;if(e._optimisticResults){const l=this.hasListeners(),g=!l&&W(t,e),S=l&&z(t,s,e,i);(g||S)&&(n={...n,...$(h.data,t.options)}),e._optimisticResults==="isRestoring"&&(n.fetchStatus="idle")}let{error:R,errorUpdatedAt:D,status:b}=n;o=n.data;let F=!1;if(e.placeholderData!==void 0&&o===void 0&&b==="pending"){let l;r?.isPlaceholderData&&e.placeholderData===a?.placeholderData?(l=r.data,F=!0):l=typeof e.placeholderData=="function"?e.placeholderData(this.#f?.state.data,this.#f):e.placeholderData,l!==void 0&&(b="success",o=B(r?.data,l,e),m=!0)}if(e.select&&o!==void 0&&!F)if(r&&o===c?.data&&e.select===this.#b)o=this.#d;else try{this.#b=e.select,o=e.select(o),o=B(r?.data,o,e),this.#d=o,this.#o=null}catch(l){this.#o=l}this.#o&&(R=this.#o,o=this.#d,D=Date.now(),b="error");const T=n.fetchStatus==="fetching",x=b==="pending",Q=b==="error",j=x&&T,L=o!==void 0,p={status:b,fetchStatus:n.fetchStatus,isPending:x,isSuccess:b==="success",isError:Q,isInitialLoading:j,isLoading:j,data:o,dataUpdatedAt:n.dataUpdatedAt,error:R,errorUpdatedAt:D,failureCount:n.fetchFailureCount,failureReason:n.fetchFailureReason,errorUpdateCount:n.errorUpdateCount,isFetched:n.dataUpdateCount>0||n.errorUpdateCount>0,isFetchedAfterMount:n.dataUpdateCount>v.dataUpdateCount||n.errorUpdateCount>v.errorUpdateCount,isFetching:T,isRefetching:T&&!x,isLoadingError:Q&&!L,isPaused:n.fetchStatus==="paused",isPlaceholderData:m,isRefetchError:Q&&L,isStale:U(t,e),refetch:this.refetch,promise:this.#n,isEnabled:d(e.enabled,t)!==!1};if(this.options.experimental_prefetchInRender){const l=p.data!==void 0,g=p.status==="error"&&!l,S=E=>{g?E.reject(p.error):l&&E.resolve(p.data)},N=()=>{const E=this.#n=p.promise=K();S(E)},O=this.#n;switch(O.status){case"pending":t.queryHash===s.queryHash&&S(O);break;case"fulfilled":(g||p.data!==O.value)&&N();break;case"rejected":(!g||p.error!==O.reason)&&N();break}}return p}updateResult(){const t=this.#e,e=this.createResult(this.#t,this.options);if(this.#r=this.#t.state,this.#a=this.options,this.#r.data!==void 0&&(this.#f=this.#t),w(e,t))return;this.#e=e;const s=()=>{if(!t)return!0;const{notifyOnChangeProps:i}=this.options,r=typeof i=="function"?i():i;if(r==="all"||!r&&!this.#p.size)return!0;const c=new Set(r??this.#p);return this.options.throwOnError&&c.add("error"),Object.keys(this.#e).some(a=>{const f=a;return this.#e[f]!==t[f]&&c.has(f)})};this.#E({listeners:s()})}#O(){const t=this.#s.getQueryCache().build(this.#s,this.options);if(t===this.#t)return;const e=this.#t;this.#t=t,this.#i=t.state,this.hasListeners()&&(e?.removeObserver(this),t.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#y()}#E(t){I.batch(()=>{t.listeners&&this.listeners.forEach(e=>{e(this.#e)}),this.#s.getQueryCache().notify({query:this.#t,type:"observerResultsUpdated"})})}};function et(t,e){return d(e.enabled,t)!==!1&&t.state.data===void 0&&!(t.state.status==="error"&&e.retryOnMount===!1)}function W(t,e){return et(t,e)||t.state.data!==void 0&&k(t,e,e.refetchOnMount)}function k(t,e,s){if(d(e.enabled,t)!==!1&&y(e.staleTime,t)!=="static"){const i=typeof s=="function"?s(t):s;return i==="always"||i!==!1&&U(t,e)}return!1}function z(t,e,s,i){return(t!==e||d(i.enabled,t)===!1)&&(!s.suspense||t.state.status!=="error")&&U(t,s)}function U(t,e){return d(e.enabled,t)!==!1&&t.isStaleByTime(y(e.staleTime,t))}function st(t,e){return!w(t.getCurrentResult(),e)}var it=class extends G{#s;#t=void 0;#i;#e;constructor(t,e){super(),this.#s=t,this.setOptions(e),this.bindMethods(),this.#r()}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(t){const e=this.options;this.options=this.#s.defaultMutationOptions(t),w(this.options,e)||this.#s.getMutationCache().notify({type:"observerOptionsUpdated",mutation:this.#i,observer:this}),e?.mutationKey&&this.options.mutationKey&&H(e.mutationKey)!==H(this.options.mutationKey)?this.reset():this.#i?.state.status==="pending"&&this.#i.setOptions(this.options)}onUnsubscribe(){this.hasListeners()||this.#i?.removeObserver(this)}onMutationUpdate(t){this.#r(),this.#a(t)}getCurrentResult(){return this.#t}reset(){this.#i?.removeObserver(this),this.#i=void 0,this.#r(),this.#a()}mutate(t,e){return this.#e=e,this.#i?.removeObserver(this),this.#i=this.#s.getMutationCache().build(this.#s,this.options),this.#i.addObserver(this),this.#i.execute(t)}#r(){const t=this.#i?.state??q();this.#t={...t,isPending:t.status==="pending",isSuccess:t.status==="success",isError:t.status==="error",isIdle:t.status==="idle",mutate:this.mutate,reset:this.reset}}#a(t){I.batch(()=>{if(this.#e&&this.hasListeners()){const e=this.#t.variables,s=this.#t.context,i={client:this.#s,meta:this.options.meta,mutationKey:this.options.mutationKey};if(t?.type==="success"){try{this.#e.onSuccess?.(t.data,e,s,i)}catch(r){Promise.reject(r)}try{this.#e.onSettled?.(t.data,null,e,s,i)}catch(r){Promise.reject(r)}}else if(t?.type==="error"){try{this.#e.onError?.(t.error,e,s,i)}catch(r){Promise.reject(r)}try{this.#e.onSettled?.(void 0,t.error,e,s,i)}catch(r){Promise.reject(r)}}}this.listeners.forEach(e=>{e(this.#t)})})}},X=u.createContext(!1),rt=()=>u.useContext(X);X.Provider;function at(){let t=!1;return{clearReset:()=>{t=!1},reset:()=>{t=!0},isReset:()=>t}}var nt=u.createContext(at()),ot=()=>u.useContext(nt),ht=(t,e,s)=>{const i=s?.state.error&&typeof t.throwOnError=="function"?_(t.throwOnError,[s.state.error,s]):t.throwOnError;(t.suspense||t.experimental_prefetchInRender||i)&&(e.isReset()||(t.retryOnMount=!1))},ut=t=>{u.useEffect(()=>{t.clearReset()},[t])},ct=({result:t,errorResetBoundary:e,throwOnError:s,query:i,suspense:r})=>t.isError&&!e.isReset()&&!t.isFetching&&i&&(r&&t.data===void 0||_(s,[t.error,i])),lt=t=>{if(t.suspense){const s=r=>r==="static"?r:Math.max(r??1e3,1e3),i=t.staleTime;t.staleTime=typeof i=="function"?(...r)=>s(i(...r)):s(i),typeof t.gcTime=="number"&&(t.gcTime=Math.max(t.gcTime,1e3))}},dt=(t,e)=>t.isLoading&&t.isFetching&&!e,ft=(t,e)=>t?.suspense&&e.isPending,V=(t,e,s)=>e.fetchOptimistic(t).catch(()=>{s.clearReset()});function pt(t,e,s){const i=rt(),r=ot(),c=J(),a=c.defaultQueryOptions(t);c.getDefaultOptions().queries?._experimental_beforeQuery?.(a);const f=c.getQueryCache().get(a.queryHash);a._optimisticResults=i?"isRestoring":"optimistic",lt(a),ht(a,r,f),ut(r);const v=!c.getQueryCache().get(a.queryHash),[h]=u.useState(()=>new e(c,a)),n=h.getOptimisticResult(a),m=!i&&t.subscribed!==!1;if(u.useSyncExternalStore(u.useCallback(o=>{const R=m?h.subscribe(I.batchCalls(o)):M;return h.updateResult(),R},[h,m]),()=>h.getCurrentResult(),()=>h.getCurrentResult()),u.useEffect(()=>{h.setOptions(a)},[a,h]),ft(a,n))throw V(a,h,r);if(ct({result:n,errorResetBoundary:r,throwOnError:a.throwOnError,query:f,suspense:a.suspense}))throw n.error;return c.getDefaultOptions().queries?._experimental_afterQuery?.(a,n),a.experimental_prefetchInRender&&!P&&dt(n,i)&&(v?V(a,h,r):f?.promise)?.catch(M).finally(()=>{h.updateResult()}),a.notifyOnChangeProps?n:h.trackResult(n)}function mt(t,e){return pt(t,tt)}function gt(t,e){const s=J(),[i]=u.useState(()=>new it(s,t));u.useEffect(()=>{i.setOptions(t)},[i,t]);const r=u.useSyncExternalStore(u.useCallback(a=>i.subscribe(I.batchCalls(a)),[i]),()=>i.getCurrentResult(),()=>i.getCurrentResult()),c=u.useCallback((a,f)=>{i.mutate(a,f).catch(M)},[i]);if(r.error&&_(i.options.throwOnError,[r.error]))throw r.error;return{...r,mutate:c,mutateAsync:r.mutate}}const yt={projects:{all:["projects"],list:t=>["projects","list",t],detail:t=>["projects","detail",t]},tasks:{all:["tasks"],list:(t,e)=>["tasks","list",t,e],detail:t=>["tasks","detail",t],stats:t=>["tasks","stats",t]},workspaces:{all:["workspaces"],list:t=>["workspaces","list",t],detail:t=>["workspaces","detail",t],diff:t=>["workspaces","diff",t],gitStatus:t=>["workspaces","gitStatus",t]},sessions:{all:["sessions"],detail:t=>["sessions","detail",t]},files:{all:["files"],tree:(t,e)=>["files","tree",t,e],content:(t,e)=>["files","content",t,e]},git:{all:["git"],changes:t=>["git","changes",t],diff:(t,e,s)=>["git","diff",t,e,s]},profiles:{all:["profiles"],defaults:["profiles","defaults"],agent:t=>["profiles","agent",t],variant:(t,e)=>["profiles","variant",t,e]},tunnel:{status:["tunnel","status"]},notifications:{settings:["notifications","settings"]}};export{tt as Q,gt as a,rt as b,ot as c,ht as d,lt as e,ut as f,V as g,ct as h,yt as q,ft as s,mt as u,dt as w};
@@ -0,0 +1 @@
1
+ import{u as i,a as n,q as r}from"./query-keys-BD_s_Etj.js";import{u as a}from"./index-BuAijQvi.js";import{a as u}from"./api-client-CEBkg5lt.js";function y(){return i({queryKey:r.profiles.all,queryFn:()=>u.get("/profiles")})}function c(){return i({queryKey:r.profiles.defaults,queryFn:()=>u.get("/profiles/defaults")})}function q(e){return i({queryKey:r.profiles.agent(e),queryFn:()=>u.get(`/profiles/${e}`),enabled:!!e})}function d(){const e=a();return n({mutationFn:({agentType:s,variant:t,config:o})=>u.put(`/profiles/${s}/${t}`,o),onSuccess:()=>{e.invalidateQueries({queryKey:r.profiles.all})}})}function m(){const e=a();return n({mutationFn:({agentType:s,variant:t})=>u.delete(`/profiles/${s}/${t}`),onSuccess:()=>{e.invalidateQueries({queryKey:r.profiles.all})}})}export{c as a,d as b,m as c,q as d,y as u};
@@ -0,0 +1,14 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <link rel="icon" type="image/svg+xml" href="/vite.svg" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover" />
7
+ <title>web</title>
8
+ <script type="module" crossorigin src="/assets/index-BuAijQvi.js"></script>
9
+ <link rel="stylesheet" crossorigin href="/assets/index-CxV866Yg.css">
10
+ </head>
11
+ <body>
12
+ <div id="root"></div>
13
+ </body>
14
+ </html>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
@@ -0,0 +1,12 @@
1
+ /**
2
+ * 确定性端口计算工具
3
+ * 基于工作目录路径 hash 生成固定端口号,解决 worktree 多分支并行开发端口冲突问题。
4
+ */
5
+ /**
6
+ * 根据目录路径计算确定性端口号。
7
+ *
8
+ * @param dirPath - 工作目录的绝对路径(通常传入 monorepo 根目录)
9
+ * @returns 端口号(10000-49151)
10
+ */
11
+ export declare function getDevPort(dirPath: string): number;
12
+ //# sourceMappingURL=dev-port.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev-port.d.ts","sourceRoot":"","sources":["../src/dev-port.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkBH;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAIlD"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * 确定性端口计算工具
3
+ * 基于工作目录路径 hash 生成固定端口号,解决 worktree 多分支并行开发端口冲突问题。
4
+ */
5
+ const PORT_MIN = 10000;
6
+ const PORT_MAX = 49151;
7
+ /**
8
+ * FNV-1a hash(32-bit)
9
+ * 纯整数运算,分布均匀,无需 crypto 模块。
10
+ */
11
+ function fnv1aHash(str) {
12
+ let hash = 0x811c9dc5;
13
+ for (let i = 0; i < str.length; i++) {
14
+ hash ^= str.charCodeAt(i);
15
+ hash = (hash * 0x01000193) >>> 0;
16
+ }
17
+ return hash;
18
+ }
19
+ /**
20
+ * 根据目录路径计算确定性端口号。
21
+ *
22
+ * @param dirPath - 工作目录的绝对路径(通常传入 monorepo 根目录)
23
+ * @returns 端口号(10000-49151)
24
+ */
25
+ export function getDevPort(dirPath) {
26
+ if (!dirPath)
27
+ return PORT_MIN;
28
+ const hash = fnv1aHash(dirPath);
29
+ return PORT_MIN + (hash % (PORT_MAX - PORT_MIN + 1));
30
+ }
31
+ //# sourceMappingURL=dev-port.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev-port.js","sourceRoot":"","sources":["../src/dev-port.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,QAAQ,GAAG,KAAK,CAAA;AACtB,MAAM,QAAQ,GAAG,KAAK,CAAA;AAEtB;;;GAGG;AACH,SAAS,SAAS,CAAC,GAAW;IAC5B,IAAI,IAAI,GAAG,UAAU,CAAA;IACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;QACzB,IAAI,GAAG,CAAC,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;IAClC,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,OAAe;IACxC,IAAI,CAAC,OAAO;QAAE,OAAO,QAAQ,CAAA;IAC7B,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA;IAC/B,OAAO,QAAQ,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAA;AACtD,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from './types.js';
2
+ export * from './socket/index.js';
3
+ export * from './log-adapter.js';
4
+ export * from './dev-port.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA"}
@@ -0,0 +1,5 @@
1
+ export * from './types.js';
2
+ export * from './socket/index.js';
3
+ export * from './log-adapter.js';
4
+ export * from './dev-port.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * NormalizedEntry → LogEntry 类型映射
3
+ * 将后端标准化日志转换为前端 UI 组件可用的格式
4
+ */
5
+ export declare enum LogType {
6
+ Action = "Action",// ◆ Agent Action
7
+ Assistant = "Assistant",// ◆ Assistant Message (markdown)
8
+ Info = "Info",// ◇ Agent Explanation/Thinking
9
+ Tool = "Tool",// ▶ Tool Call
10
+ User = "User",// User Message
11
+ Cursor = "Cursor"
12
+ }
13
+ export interface LogEntry {
14
+ id: string;
15
+ type: LogType;
16
+ content: string;
17
+ title?: string;
18
+ isCollapsed?: boolean;
19
+ children?: LogEntry[];
20
+ tokenUsage?: {
21
+ totalTokens: number;
22
+ modelContextWindow?: number;
23
+ };
24
+ }
25
+ export type NormalizedEntryType = 'user_message' | 'user_feedback' | 'assistant_message' | 'tool_use' | 'system_message' | 'error_message' | 'thinking' | 'loading' | 'next_action' | 'token_usage_info';
26
+ export type ActionType = 'file_read' | 'file_edit' | 'command_run' | 'search' | 'web_fetch' | 'tool' | 'task_create' | 'plan_presentation' | 'todo_management' | 'other';
27
+ export type ToolStatus = 'created' | 'success' | 'failed' | 'denied' | 'pending_approval' | 'timed_out';
28
+ export interface NormalizedEntry {
29
+ id: string;
30
+ timestamp: number;
31
+ entryType: NormalizedEntryType;
32
+ content: string;
33
+ metadata?: {
34
+ action?: ActionType;
35
+ toolName?: string;
36
+ toolId?: string;
37
+ status?: ToolStatus;
38
+ fileChanges?: Array<{
39
+ type: 'write' | 'delete' | 'rename' | 'edit';
40
+ path: string;
41
+ content?: string;
42
+ diff?: string;
43
+ from?: string;
44
+ to?: string;
45
+ }>;
46
+ tokenUsage?: {
47
+ totalTokens?: number;
48
+ modelContextWindow?: number;
49
+ };
50
+ error?: string;
51
+ /** Agent todo list (for todo_management action) */
52
+ todos?: Array<{
53
+ content: string;
54
+ status: string;
55
+ priority?: string | null;
56
+ }>;
57
+ todoOperation?: string;
58
+ };
59
+ }
60
+ /**
61
+ * 将单个 NormalizedEntry 转换为 LogEntry
62
+ */
63
+ export declare function normalizedEntryToLogEntry(entry: NormalizedEntry): LogEntry | null;
64
+ /**
65
+ * 批量转换 NormalizedEntry 数组为 LogEntry 数组
66
+ */
67
+ export declare function normalizedEntriesToLogEntries(entries: NormalizedEntry[]): LogEntry[];
68
+ /**
69
+ * 创建一个 loading cursor entry
70
+ */
71
+ export declare function createCursorEntry(): LogEntry;
72
+ //# sourceMappingURL=log-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-adapter.d.ts","sourceRoot":"","sources":["../src/log-adapter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,oBAAY,OAAO;IACjB,MAAM,WAAW,CAAM,iBAAiB;IACxC,SAAS,cAAc,CAAE,iCAAiC;IAC1D,IAAI,SAAS,CAAU,+BAA+B;IACtD,IAAI,SAAS,CAAU,cAAc;IACrC,IAAI,SAAS,CAAU,eAAe;IACtC,MAAM,WAAW;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAA;IACrB,UAAU,CAAC,EAAE;QACX,WAAW,EAAE,MAAM,CAAA;QACnB,kBAAkB,CAAC,EAAE,MAAM,CAAA;KAC5B,CAAA;CACF;AAID,MAAM,MAAM,mBAAmB,GAC3B,cAAc,GACd,eAAe,GACf,mBAAmB,GACnB,UAAU,GACV,gBAAgB,GAChB,eAAe,GACf,UAAU,GACV,SAAS,GACT,aAAa,GACb,kBAAkB,CAAA;AAEtB,MAAM,MAAM,UAAU,GAClB,WAAW,GACX,WAAW,GACX,aAAa,GACb,QAAQ,GACR,WAAW,GACX,MAAM,GACN,aAAa,GACb,mBAAmB,GACnB,iBAAiB,GACjB,OAAO,CAAA;AAEX,MAAM,MAAM,UAAU,GAClB,SAAS,GACT,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,kBAAkB,GAClB,WAAW,CAAA;AAEf,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,mBAAmB,CAAA;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE;QACT,MAAM,CAAC,EAAE,UAAU,CAAA;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,MAAM,CAAC,EAAE,UAAU,CAAA;QACnB,WAAW,CAAC,EAAE,KAAK,CAAC;YAClB,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAA;YAC5C,IAAI,EAAE,MAAM,CAAA;YACZ,OAAO,CAAC,EAAE,MAAM,CAAA;YAChB,IAAI,CAAC,EAAE,MAAM,CAAA;YACb,IAAI,CAAC,EAAE,MAAM,CAAA;YACb,EAAE,CAAC,EAAE,MAAM,CAAA;SACZ,CAAC,CAAA;QACF,UAAU,CAAC,EAAE;YACX,WAAW,CAAC,EAAE,MAAM,CAAA;YACpB,kBAAkB,CAAC,EAAE,MAAM,CAAA;SAC5B,CAAA;QACD,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,mDAAmD;QACnD,KAAK,CAAC,EAAE,KAAK,CAAC;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;SAAE,CAAC,CAAA;QAC5E,aAAa,CAAC,EAAE,MAAM,CAAA;KACvB,CAAA;CACF;AAwCD;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,eAAe,GAAG,QAAQ,GAAG,IAAI,CAkFjF;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,QAAQ,EAAE,CAIpF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,QAAQ,CAM5C"}
@@ -0,0 +1,144 @@
1
+ /**
2
+ * NormalizedEntry → LogEntry 类型映射
3
+ * 将后端标准化日志转换为前端 UI 组件可用的格式
4
+ */
5
+ // ============ UI 层日志类型 (来自 design/agent-tower/types.ts) ============
6
+ export var LogType;
7
+ (function (LogType) {
8
+ LogType["Action"] = "Action";
9
+ LogType["Assistant"] = "Assistant";
10
+ LogType["Info"] = "Info";
11
+ LogType["Tool"] = "Tool";
12
+ LogType["User"] = "User";
13
+ LogType["Cursor"] = "Cursor"; // █ Output Cursor
14
+ })(LogType || (LogType = {}));
15
+ // ============ 映射函数 ============
16
+ /**
17
+ * 获取工具调用的显示标题
18
+ */
19
+ function getToolTitle(entry) {
20
+ const toolName = entry.metadata?.toolName || 'Tool';
21
+ const action = entry.metadata?.action;
22
+ const status = entry.metadata?.status;
23
+ // 根据 action 类型生成更友好的标题
24
+ const actionLabels = {
25
+ file_read: 'Read File',
26
+ file_edit: 'Edit File',
27
+ command_run: 'Run Command',
28
+ search: 'Search',
29
+ web_fetch: 'Fetch URL',
30
+ tool: 'Tool',
31
+ task_create: 'Create Task',
32
+ plan_presentation: 'Present Plan',
33
+ todo_management: 'Manage Todo',
34
+ other: 'Action',
35
+ };
36
+ const label = action ? actionLabels[action] : toolName;
37
+ // 添加状态后缀
38
+ if (status === 'success') {
39
+ return `${label} ✓`;
40
+ }
41
+ else if (status === 'failed') {
42
+ return `${label} ✗`;
43
+ }
44
+ else if (status === 'pending_approval') {
45
+ return `${label} (待审批)`;
46
+ }
47
+ return label;
48
+ }
49
+ /**
50
+ * 将单个 NormalizedEntry 转换为 LogEntry
51
+ */
52
+ export function normalizedEntryToLogEntry(entry) {
53
+ switch (entry.entryType) {
54
+ case 'user_message':
55
+ case 'user_feedback':
56
+ return {
57
+ id: entry.id,
58
+ type: LogType.User,
59
+ content: entry.content,
60
+ };
61
+ case 'assistant_message':
62
+ return {
63
+ id: entry.id,
64
+ type: LogType.Assistant,
65
+ content: entry.content,
66
+ };
67
+ case 'next_action':
68
+ return {
69
+ id: entry.id,
70
+ type: LogType.Action,
71
+ content: entry.content,
72
+ };
73
+ case 'thinking':
74
+ return {
75
+ id: entry.id,
76
+ type: LogType.Info,
77
+ title: 'Thinking',
78
+ content: entry.content,
79
+ };
80
+ case 'tool_use':
81
+ return {
82
+ id: entry.id,
83
+ type: LogType.Tool,
84
+ title: getToolTitle(entry),
85
+ content: entry.content,
86
+ isCollapsed: entry.metadata?.status === 'success',
87
+ };
88
+ case 'error_message':
89
+ return {
90
+ id: entry.id,
91
+ type: LogType.Info,
92
+ content: `❌ ${entry.content}${entry.metadata?.error ? `\n${entry.metadata.error}` : ''}`,
93
+ };
94
+ case 'system_message':
95
+ return {
96
+ id: entry.id,
97
+ type: LogType.Info,
98
+ content: entry.content,
99
+ };
100
+ case 'loading':
101
+ // loading 状态可以用 Cursor 表示
102
+ return {
103
+ id: entry.id,
104
+ type: LogType.Cursor,
105
+ content: '',
106
+ };
107
+ case 'token_usage_info':
108
+ // token 使用信息 — 传递结构化数据供前端展示
109
+ if (entry.metadata?.tokenUsage) {
110
+ const { totalTokens = 0, modelContextWindow } = entry.metadata.tokenUsage;
111
+ return {
112
+ id: entry.id,
113
+ type: LogType.Info,
114
+ content: entry.content,
115
+ tokenUsage: {
116
+ totalTokens,
117
+ modelContextWindow,
118
+ },
119
+ };
120
+ }
121
+ return null;
122
+ default:
123
+ return null;
124
+ }
125
+ }
126
+ /**
127
+ * 批量转换 NormalizedEntry 数组为 LogEntry 数组
128
+ */
129
+ export function normalizedEntriesToLogEntries(entries) {
130
+ return entries
131
+ .map(normalizedEntryToLogEntry)
132
+ .filter((entry) => entry !== null);
133
+ }
134
+ /**
135
+ * 创建一个 loading cursor entry
136
+ */
137
+ export function createCursorEntry() {
138
+ return {
139
+ id: `cursor-${Date.now()}`,
140
+ type: LogType.Cursor,
141
+ content: '',
142
+ };
143
+ }
144
+ //# sourceMappingURL=log-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-adapter.js","sourceRoot":"","sources":["../src/log-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * Unified Socket.IO event types.
3
+ */
4
+ export declare const NAMESPACE: "/events";
5
+ export declare const ClientEvents: {
6
+ readonly SUBSCRIBE: "subscribe";
7
+ readonly UNSUBSCRIBE: "unsubscribe";
8
+ readonly INPUT: "input";
9
+ readonly RESIZE: "resize";
10
+ readonly TERMINAL_INPUT: "terminal:input";
11
+ readonly TERMINAL_RESIZE: "terminal:resize";
12
+ };
13
+ export declare const ServerEvents: {
14
+ readonly SESSION_SUBSCRIBED: "session:subscribed";
15
+ readonly SESSION_UNSUBSCRIBED: "session:unsubscribed";
16
+ readonly SESSION_STDOUT: "session:stdout";
17
+ readonly SESSION_PATCH: "session:patch";
18
+ readonly SESSION_EXIT: "session:exit";
19
+ readonly SESSION_COMPLETED: "session:completed";
20
+ readonly SESSION_ID: "session:sessionId";
21
+ readonly SESSION_ERROR: "session:error";
22
+ readonly TASK_UPDATED: "task:updated";
23
+ readonly TASK_DELETED: "task:deleted";
24
+ readonly AGENT_STATUS_CHANGED: "agent:status_changed";
25
+ readonly TERMINAL_STDOUT: "terminal:stdout";
26
+ readonly TERMINAL_EXIT: "terminal:exit";
27
+ readonly TERMINAL_SUBSCRIBED: "terminal:subscribed";
28
+ readonly TERMINAL_UNSUBSCRIBED: "terminal:unsubscribed";
29
+ };
30
+ export interface SubscribePayload {
31
+ topic: 'session' | 'task' | 'agent' | 'terminal' | 'project';
32
+ id?: string;
33
+ }
34
+ export interface UnsubscribePayload {
35
+ topic: 'session' | 'task' | 'agent' | 'terminal' | 'project';
36
+ id?: string;
37
+ }
38
+ export interface SessionInputPayload {
39
+ sessionId: string;
40
+ data: string;
41
+ }
42
+ export interface SessionResizePayload {
43
+ sessionId: string;
44
+ cols: number;
45
+ rows: number;
46
+ }
47
+ export interface SessionStdoutPayload {
48
+ sessionId: string;
49
+ data: string;
50
+ }
51
+ export interface SessionPatchPayload {
52
+ sessionId: string;
53
+ patch: JsonPatchOperation[];
54
+ }
55
+ export interface SessionExitPayload {
56
+ sessionId: string;
57
+ exitCode: number;
58
+ }
59
+ export interface SessionCompletedPayload {
60
+ sessionId: string;
61
+ status: string;
62
+ }
63
+ export interface SessionIdPayload {
64
+ sessionId: string;
65
+ agentSessionId: string;
66
+ }
67
+ export interface SessionErrorPayload {
68
+ sessionId: string;
69
+ message: string;
70
+ }
71
+ export interface SessionSubscribedPayload {
72
+ sessionId: string;
73
+ }
74
+ export interface SessionUnsubscribedPayload {
75
+ sessionId: string;
76
+ }
77
+ export interface JsonPatchOperation {
78
+ op: 'add' | 'remove' | 'replace' | 'move' | 'copy' | 'test';
79
+ path: string;
80
+ value?: unknown;
81
+ from?: string;
82
+ }
83
+ export type AgentStatus = 'idle' | 'starting' | 'running' | 'stopped' | 'error';
84
+ export interface AgentStatusPayload {
85
+ agentId: string;
86
+ sessionId: string;
87
+ status: AgentStatus;
88
+ error?: string;
89
+ timestamp: number;
90
+ }
91
+ export interface TaskUpdatedPayload {
92
+ taskId: string;
93
+ projectId: string;
94
+ status: string;
95
+ }
96
+ export interface TaskDeletedPayload {
97
+ taskId: string;
98
+ projectId: string;
99
+ }
100
+ export interface TerminalInputPayload {
101
+ terminalId: string;
102
+ data: string;
103
+ }
104
+ export interface TerminalResizePayload {
105
+ terminalId: string;
106
+ cols: number;
107
+ rows: number;
108
+ }
109
+ export interface TerminalStdoutPayload {
110
+ terminalId: string;
111
+ data: string;
112
+ }
113
+ export interface TerminalExitPayload {
114
+ terminalId: string;
115
+ exitCode: number;
116
+ }
117
+ export interface TerminalSubscribedPayload {
118
+ terminalId: string;
119
+ }
120
+ export interface TerminalUnsubscribedPayload {
121
+ terminalId: string;
122
+ }
123
+ export interface AckResponse<T = unknown> {
124
+ success: boolean;
125
+ data?: T;
126
+ error?: {
127
+ code: string;
128
+ message: string;
129
+ };
130
+ }
131
+ export type ClientEventType = typeof ClientEvents[keyof typeof ClientEvents];
132
+ export type ServerEventType = typeof ServerEvents[keyof typeof ServerEvents];
133
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/socket/events.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Unified Socket.IO event types.
3
+ */
4
+ export const NAMESPACE = '/events';
5
+ export const ClientEvents = {
6
+ SUBSCRIBE: 'subscribe',
7
+ UNSUBSCRIBE: 'unsubscribe',
8
+ INPUT: 'input',
9
+ RESIZE: 'resize',
10
+ // Standalone terminal events (client -> server)
11
+ TERMINAL_INPUT: 'terminal:input',
12
+ TERMINAL_RESIZE: 'terminal:resize',
13
+ };
14
+ export const ServerEvents = {
15
+ SESSION_SUBSCRIBED: 'session:subscribed',
16
+ SESSION_UNSUBSCRIBED: 'session:unsubscribed',
17
+ SESSION_STDOUT: 'session:stdout',
18
+ SESSION_PATCH: 'session:patch',
19
+ SESSION_EXIT: 'session:exit',
20
+ SESSION_COMPLETED: 'session:completed',
21
+ SESSION_ID: 'session:sessionId',
22
+ SESSION_ERROR: 'session:error',
23
+ TASK_UPDATED: 'task:updated',
24
+ TASK_DELETED: 'task:deleted',
25
+ AGENT_STATUS_CHANGED: 'agent:status_changed',
26
+ // Standalone terminal events (server -> client)
27
+ TERMINAL_STDOUT: 'terminal:stdout',
28
+ TERMINAL_EXIT: 'terminal:exit',
29
+ TERMINAL_SUBSCRIBED: 'terminal:subscribed',
30
+ TERMINAL_UNSUBSCRIBED: 'terminal:unsubscribed',
31
+ };
32
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/socket/events.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,CAAC,MAAM,SAAS,GAAG,SAAkB,CAAC;AAE5C,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,SAAS,EAAE,WAAW;IACtB,WAAW,EAAE,aAAa;IAC1B,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,gDAAgD;IAChD,cAAc,EAAE,gBAAgB;IAChC,eAAe,EAAE,iBAAiB;CAC1B,CAAC;AAEX,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,kBAAkB,EAAE,oBAAoB;IACxC,oBAAoB,EAAE,sBAAsB;IAC5C,cAAc,EAAE,gBAAgB;IAChC,aAAa,EAAE,eAAe;IAC9B,YAAY,EAAE,cAAc;IAC5B,iBAAiB,EAAE,mBAAmB;IACtC,UAAU,EAAE,mBAAmB;IAC/B,aAAa,EAAE,eAAe;IAC9B,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,oBAAoB,EAAE,sBAAsB;IAC5C,gDAAgD;IAChD,eAAe,EAAE,iBAAiB;IAClC,aAAa,EAAE,eAAe;IAC9B,mBAAmB,EAAE,qBAAqB;IAC1C,qBAAqB,EAAE,uBAAuB;CACtC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './events.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/socket/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './events.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/socket/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA"}