tower-studio 0.1.2 → 0.1.3

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 (641) hide show
  1. package/bin/tower.mjs +5 -15
  2. package/next.config.ts +1 -8
  3. package/package.json +10 -11
  4. package/prisma/dev.db +0 -0
  5. package/public/vs/_commonjsHelpers-CT9FvmAN.js +1 -0
  6. package/public/vs/abap-D-t0cyap.js +1 -0
  7. package/public/vs/apex-CcIm7xu6.js +1 -0
  8. package/public/vs/assets/css.worker-HnVq6Ewq.js +93 -0
  9. package/public/vs/assets/editor.worker-Be8ye1pW.js +26 -0
  10. package/public/vs/assets/html.worker-B51mlPHg.js +470 -0
  11. package/public/vs/assets/json.worker-DKiEKt88.js +58 -0
  12. package/public/vs/assets/ts.worker-CMbG-7ft.js +67731 -0
  13. package/public/vs/azcli-BA0tQDCg.js +1 -0
  14. package/public/vs/basic-languages/monaco.contribution.js +1 -0
  15. package/public/vs/bat-C397hTD6.js +1 -0
  16. package/public/vs/bicep-DF5aW17k.js +2 -0
  17. package/public/vs/cameligo-plsz8qhj.js +1 -0
  18. package/public/vs/clojure-Y2auQMzK.js +1 -0
  19. package/public/vs/coffee-Bu45yuWE.js +1 -0
  20. package/public/vs/cpp-CkKPQIni.js +1 -0
  21. package/public/vs/csharp-CX28MZyh.js +1 -0
  22. package/public/vs/csp-D8uWnyxW.js +1 -0
  23. package/public/vs/css-CaeNmE3S.js +3 -0
  24. package/public/vs/cssMode-CjiAH6dQ.js +1 -0
  25. package/public/vs/cypher-DVThT8BS.js +1 -0
  26. package/public/vs/dart-CmGfCvrO.js +1 -0
  27. package/public/vs/dockerfile-CZqqYdch.js +1 -0
  28. package/public/vs/ecl-30fUercY.js +1 -0
  29. package/public/vs/editor/editor.main.css +1 -0
  30. package/public/vs/editor/editor.main.js +5 -0
  31. package/public/vs/editor.api-CalNCsUg.js +903 -0
  32. package/public/vs/elixir-xjPaIfzF.js +1 -0
  33. package/public/vs/flow9-DqtmStfK.js +1 -0
  34. package/public/vs/freemarker2-Cz_sV6Md.js +3 -0
  35. package/public/vs/fsharp-BOMdg4U1.js +1 -0
  36. package/public/vs/go-D_hbi-Jt.js +1 -0
  37. package/public/vs/graphql-CKUU4kLG.js +1 -0
  38. package/public/vs/handlebars-OwglfO-1.js +1 -0
  39. package/public/vs/hcl-DTaboeZW.js +1 -0
  40. package/public/vs/html-Pa1xEWsY.js +1 -0
  41. package/public/vs/htmlMode-Bz67EXwp.js +1 -0
  42. package/public/vs/ini-CsNwO04R.js +1 -0
  43. package/public/vs/java-CI4ZMsH9.js +1 -0
  44. package/public/vs/javascript-PczUCGdz.js +1 -0
  45. package/public/vs/jsonMode-DULH5oaX.js +7 -0
  46. package/public/vs/julia-BwzEvaQw.js +1 -0
  47. package/public/vs/kotlin-IUYPiTV8.js +1 -0
  48. package/public/vs/language/css/monaco.contribution.js +1 -0
  49. package/public/vs/language/html/monaco.contribution.js +1 -0
  50. package/public/vs/language/json/monaco.contribution.js +1 -0
  51. package/public/vs/language/typescript/monaco.contribution.js +1 -0
  52. package/public/vs/less-C0eDYdqa.js +2 -0
  53. package/public/vs/lexon-iON-Kj97.js +1 -0
  54. package/public/vs/liquid-DqKjdPGy.js +1 -0
  55. package/public/vs/loader.js +1368 -0
  56. package/public/vs/lspLanguageFeatures-kM9O9rjY.js +4 -0
  57. package/public/vs/lua-DtygF91M.js +1 -0
  58. package/public/vs/m3-CsR4AuFi.js +1 -0
  59. package/public/vs/markdown-C_rD0bIw.js +1 -0
  60. package/public/vs/mdx-DEWtB1K5.js +1 -0
  61. package/public/vs/mips-CiYP61RB.js +1 -0
  62. package/public/vs/monaco.contribution-D2OdxNBt.js +1 -0
  63. package/public/vs/monaco.contribution-DO3azKX8.js +1 -0
  64. package/public/vs/monaco.contribution-EcChJV6a.js +1 -0
  65. package/public/vs/monaco.contribution-qLAYrEOP.js +1 -0
  66. package/public/vs/msdax-C38-sJlp.js +1 -0
  67. package/public/vs/mysql-CdtbpvbG.js +1 -0
  68. package/public/vs/nls.messages-loader.js +1 -0
  69. package/public/vs/nls.messages.cs.js.js +17 -0
  70. package/public/vs/nls.messages.de.js.js +17 -0
  71. package/public/vs/nls.messages.es.js.js +17 -0
  72. package/public/vs/nls.messages.fr.js.js +15 -0
  73. package/public/vs/nls.messages.it.js.js +15 -0
  74. package/public/vs/nls.messages.ja.js.js +17 -0
  75. package/public/vs/nls.messages.js.js +10 -0
  76. package/public/vs/nls.messages.ko.js.js +25 -0
  77. package/public/vs/nls.messages.pl.js.js +17 -0
  78. package/public/vs/nls.messages.pt-br.js.js +6 -0
  79. package/public/vs/nls.messages.ru.js.js +17 -0
  80. package/public/vs/nls.messages.tr.js.js +15 -0
  81. package/public/vs/nls.messages.zh-cn.js.js +17 -0
  82. package/public/vs/nls.messages.zh-tw.js.js +15 -0
  83. package/public/vs/objective-c-CntZFaHX.js +1 -0
  84. package/public/vs/pascal-r6kuqfl_.js +1 -0
  85. package/public/vs/pascaligo-BiXoTmXh.js +1 -0
  86. package/public/vs/perl-DABw_TcH.js +1 -0
  87. package/public/vs/pgsql-me_jFXeX.js +1 -0
  88. package/public/vs/php-D_kh-9LK.js +1 -0
  89. package/public/vs/pla-VfZjczW0.js +1 -0
  90. package/public/vs/postiats-BBSzz8Pk.js +1 -0
  91. package/public/vs/powerquery-Dt-g_2cc.js +1 -0
  92. package/public/vs/powershell-B-7ap1zc.js +1 -0
  93. package/public/vs/protobuf-BmtuEB1A.js +2 -0
  94. package/public/vs/pug-BRpRNeEb.js +1 -0
  95. package/public/vs/python-Cr0UkIbn.js +1 -0
  96. package/public/vs/qsharp-BzsFaUU9.js +1 -0
  97. package/public/vs/r-f8dDdrp4.js +1 -0
  98. package/public/vs/razor-BYAHOTkz.js +1 -0
  99. package/public/vs/redis-fvZQY4PI.js +1 -0
  100. package/public/vs/redshift-45Et0LQi.js +1 -0
  101. package/public/vs/restructuredtext-C7UUFKFD.js +1 -0
  102. package/public/vs/ruby-CZO8zYTz.js +1 -0
  103. package/public/vs/rust-Bfetafyc.js +1 -0
  104. package/public/vs/sb-3GYllVck.js +1 -0
  105. package/public/vs/scala-foMgrKo1.js +1 -0
  106. package/public/vs/scheme-CHdMtr7p.js +1 -0
  107. package/public/vs/scss-C1cmLt9V.js +3 -0
  108. package/public/vs/shell-ClXCKCEW.js +1 -0
  109. package/public/vs/solidity-MZ6ExpPy.js +1 -0
  110. package/public/vs/sophia-DWkuSsPQ.js +1 -0
  111. package/public/vs/sparql-AUGFYSyk.js +1 -0
  112. package/public/vs/sql-32GpJSV2.js +1 -0
  113. package/public/vs/st-CuDFIVZ_.js +1 -0
  114. package/public/vs/swift-n-2HociN.js +3 -0
  115. package/public/vs/systemverilog-Ch4vA8Yt.js +1 -0
  116. package/public/vs/tcl-D74tq1nH.js +1 -0
  117. package/public/vs/tsMode-CZz1Umrk.js +11 -0
  118. package/public/vs/twig-C6taOxMV.js +1 -0
  119. package/public/vs/typescript-DfOrAzoV.js +1 -0
  120. package/public/vs/typespec-D-PIh9Xw.js +1 -0
  121. package/public/vs/vb-Dyb2648j.js +1 -0
  122. package/public/vs/wgsl-BhLXMOR0.js +298 -0
  123. package/public/vs/workers-DcJshg-q.js +1 -0
  124. package/public/vs/xml-CdsdnY8S.js +1 -0
  125. package/public/vs/yaml-DYGvmE88.js +1 -0
  126. package/src/actions/__tests__/agent-actions-username.test.ts +30 -0
  127. package/src/actions/__tests__/asset-actions.test.ts +251 -0
  128. package/src/actions/__tests__/assistant-actions.test.ts +20 -0
  129. package/src/actions/__tests__/cli-profile-actions.test.ts +243 -0
  130. package/src/actions/__tests__/label-actions.test.ts +187 -0
  131. package/src/actions/__tests__/note-actions.test.ts +237 -0
  132. package/src/actions/__tests__/onboarding-actions.test.ts +265 -0
  133. package/src/actions/__tests__/project-actions.test.ts +179 -0
  134. package/src/actions/__tests__/prompt-actions.test.ts +213 -0
  135. package/src/actions/__tests__/report-actions.test.ts +246 -0
  136. package/src/actions/__tests__/search-code-actions.test.ts +308 -0
  137. package/src/actions/__tests__/task-actions-overview.test.ts +58 -0
  138. package/src/actions/__tests__/task-actions-pin.test.ts +79 -0
  139. package/src/actions/__tests__/workspace-actions.test.ts +256 -0
  140. package/src/components/layout/__tests__/top-bar-username.test.tsx +24 -0
  141. package/src/components/onboarding/__tests__/onboarding-wizard.test.tsx +185 -0
  142. package/src/hooks/__tests__/sse-event-reducer.test.ts +263 -0
  143. package/src/hooks/__tests__/use-assistant-chat.test.ts +34 -0
  144. package/src/hooks/__tests__/use-image-upload.test.ts +443 -0
  145. package/src/lib/__tests__/assistant-message-converter.test.ts +162 -0
  146. package/src/lib/__tests__/assistant-sessions.test.ts +253 -0
  147. package/src/lib/__tests__/build-multimodal-prompt.test.ts +173 -0
  148. package/src/lib/__tests__/config-reader.test.ts +75 -0
  149. package/src/lib/__tests__/diff-parser.test.ts +212 -0
  150. package/src/lib/__tests__/execution-summary.test.ts +237 -0
  151. package/src/lib/__tests__/file-serve.test.ts +178 -0
  152. package/src/lib/__tests__/file-utils.test.ts +177 -0
  153. package/src/lib/__tests__/internal-api-guard.test.ts +151 -0
  154. package/src/lib/__tests__/logger.test.ts +181 -0
  155. package/src/lib/__tests__/platform.test.ts +566 -0
  156. package/src/lib/__tests__/reveal-route-security.test.ts +65 -0
  157. package/src/lib/__tests__/schemas.test.ts +377 -0
  158. package/src/lib/__tests__/terminal-link-provider.test.ts +160 -0
  159. package/src/lib/__tests__/upload-route-security.test.ts +120 -0
  160. package/src/lib/ai/__tests__/capability-resolver.test.ts +71 -0
  161. package/src/lib/ai/__tests__/claude-cli-adapter.test.ts +103 -0
  162. package/src/lib/ai/__tests__/provider-registry.test.ts +74 -0
  163. package/src/lib/pty/__tests__/ws-server-assistant.test.ts +7 -0
  164. package/.next/standalone/tower/.claude/rules/process-lifecycle.md +0 -31
  165. package/.next/standalone/tower/.claude/rules/security.md +0 -29
  166. package/.next/standalone/tower/.claude/rules/ui.md +0 -105
  167. package/.next/standalone/tower/AGENTS.md +0 -325
  168. package/.next/standalone/tower/CHANGELOG.md +0 -63
  169. package/.next/standalone/tower/CLAUDE.md +0 -33
  170. package/.next/standalone/tower/LICENSE +0 -21
  171. package/.next/standalone/tower/README.md +0 -214
  172. package/.next/standalone/tower/README.zh.md +0 -212
  173. package/.next/standalone/tower/bin/tower.mjs +0 -180
  174. package/.next/standalone/tower/docs/README.md +0 -51
  175. package/.next/standalone/tower/docs/ai/README.md +0 -91
  176. package/.next/standalone/tower/docs/ai/cli-abstraction-design.md +0 -398
  177. package/.next/standalone/tower/docs/ai/cli-abstraction-plan.md +0 -1345
  178. package/.next/standalone/tower/docs/assets-notes/README.md +0 -41
  179. package/.next/standalone/tower/docs/assistant/README.md +0 -48
  180. package/.next/standalone/tower/docs/board/README.md +0 -36
  181. package/.next/standalone/tower/docs/diagrams/tower-ai-architecture-en.html +0 -259
  182. package/.next/standalone/tower/docs/diagrams/tower-ai-architecture.html +0 -259
  183. package/.next/standalone/tower/docs/diagrams/tower-data-model-en.html +0 -344
  184. package/.next/standalone/tower/docs/diagrams/tower-data-model.html +0 -344
  185. package/.next/standalone/tower/docs/diagrams/tower-module-map-en.html +0 -176
  186. package/.next/standalone/tower/docs/diagrams/tower-module-map.html +0 -176
  187. package/.next/standalone/tower/docs/diagrams/tower-system-architecture-en.html +0 -336
  188. package/.next/standalone/tower/docs/diagrams/tower-system-architecture.html +0 -336
  189. package/.next/standalone/tower/docs/diagrams/tower-task-lifecycle-en.html +0 -251
  190. package/.next/standalone/tower/docs/diagrams/tower-task-lifecycle.html +0 -251
  191. package/.next/standalone/tower/docs/en/guide/architecture.md +0 -79
  192. package/.next/standalone/tower/docs/en/guide/diagrams.md +0 -24
  193. package/.next/standalone/tower/docs/en/guide/getting-started.md +0 -80
  194. package/.next/standalone/tower/docs/en/guide/introduction.md +0 -84
  195. package/.next/standalone/tower/docs/en/index.md +0 -36
  196. package/.next/standalone/tower/docs/en/modules/ai.md +0 -110
  197. package/.next/standalone/tower/docs/en/modules/assets-notes.md +0 -56
  198. package/.next/standalone/tower/docs/en/modules/assistant.md +0 -63
  199. package/.next/standalone/tower/docs/en/modules/board.md +0 -44
  200. package/.next/standalone/tower/docs/en/modules/git.md +0 -55
  201. package/.next/standalone/tower/docs/en/modules/i18n.md +0 -35
  202. package/.next/standalone/tower/docs/en/modules/mcp.md +0 -62
  203. package/.next/standalone/tower/docs/en/modules/missions.md +0 -47
  204. package/.next/standalone/tower/docs/en/modules/project.md +0 -57
  205. package/.next/standalone/tower/docs/en/modules/search.md +0 -49
  206. package/.next/standalone/tower/docs/en/modules/settings.md +0 -63
  207. package/.next/standalone/tower/docs/en/modules/task.md +0 -82
  208. package/.next/standalone/tower/docs/en/modules/terminal.md +0 -73
  209. package/.next/standalone/tower/docs/en/modules/workspace.md +0 -61
  210. package/.next/standalone/tower/docs/git/README.md +0 -42
  211. package/.next/standalone/tower/docs/guide/architecture.md +0 -29
  212. package/.next/standalone/tower/docs/guide/diagrams.md +0 -24
  213. package/.next/standalone/tower/docs/guide/getting-started.md +0 -80
  214. package/.next/standalone/tower/docs/guide/introduction.md +0 -84
  215. package/.next/standalone/tower/docs/i18n/README.md +0 -23
  216. package/.next/standalone/tower/docs/index.md +0 -36
  217. package/.next/standalone/tower/docs/mcp/README.md +0 -50
  218. package/.next/standalone/tower/docs/missions/README.md +0 -40
  219. package/.next/standalone/tower/docs/modules/ai.md +0 -104
  220. package/.next/standalone/tower/docs/modules/assets-notes.md +0 -68
  221. package/.next/standalone/tower/docs/modules/assistant.md +0 -74
  222. package/.next/standalone/tower/docs/modules/board.md +0 -56
  223. package/.next/standalone/tower/docs/modules/git.md +0 -61
  224. package/.next/standalone/tower/docs/modules/i18n.md +0 -38
  225. package/.next/standalone/tower/docs/modules/mcp.md +0 -68
  226. package/.next/standalone/tower/docs/modules/missions.md +0 -54
  227. package/.next/standalone/tower/docs/modules/project.md +0 -65
  228. package/.next/standalone/tower/docs/modules/search.md +0 -57
  229. package/.next/standalone/tower/docs/modules/settings.md +0 -72
  230. package/.next/standalone/tower/docs/modules/task.md +0 -82
  231. package/.next/standalone/tower/docs/modules/terminal.md +0 -70
  232. package/.next/standalone/tower/docs/modules/workspace.md +0 -68
  233. package/.next/standalone/tower/docs/package.json +0 -11
  234. package/.next/standalone/tower/docs/pnpm-lock.yaml +0 -1620
  235. package/.next/standalone/tower/docs/postcss.config.mjs +0 -2
  236. package/.next/standalone/tower/docs/project/README.md +0 -45
  237. package/.next/standalone/tower/docs/public/banner.png +0 -0
  238. package/.next/standalone/tower/docs/public/diagrams/tower-ai-architecture-en.html +0 -259
  239. package/.next/standalone/tower/docs/public/diagrams/tower-ai-architecture.html +0 -259
  240. package/.next/standalone/tower/docs/public/diagrams/tower-data-model-en.html +0 -344
  241. package/.next/standalone/tower/docs/public/diagrams/tower-data-model.html +0 -344
  242. package/.next/standalone/tower/docs/public/diagrams/tower-module-map-en.html +0 -176
  243. package/.next/standalone/tower/docs/public/diagrams/tower-module-map.html +0 -176
  244. package/.next/standalone/tower/docs/public/diagrams/tower-system-architecture-en.html +0 -336
  245. package/.next/standalone/tower/docs/public/diagrams/tower-system-architecture.html +0 -336
  246. package/.next/standalone/tower/docs/public/diagrams/tower-task-lifecycle-en.html +0 -251
  247. package/.next/standalone/tower/docs/public/diagrams/tower-task-lifecycle.html +0 -251
  248. package/.next/standalone/tower/docs/search/README.md +0 -37
  249. package/.next/standalone/tower/docs/settings/README.md +0 -43
  250. package/.next/standalone/tower/docs/task/README.md +0 -67
  251. package/.next/standalone/tower/docs/terminal/README.md +0 -58
  252. package/.next/standalone/tower/docs/workspace/README.md +0 -50
  253. package/.next/standalone/tower/docs/zh/guide/architecture.md +0 -29
  254. package/.next/standalone/tower/docs/zh/guide/diagrams.md +0 -24
  255. package/.next/standalone/tower/docs/zh/guide/getting-started.md +0 -80
  256. package/.next/standalone/tower/docs/zh/guide/introduction.md +0 -66
  257. package/.next/standalone/tower/docs/zh/index.md +0 -23
  258. package/.next/standalone/tower/docs/zh/modules/ai.md +0 -104
  259. package/.next/standalone/tower/docs/zh/modules/assets-notes.md +0 -68
  260. package/.next/standalone/tower/docs/zh/modules/assistant.md +0 -74
  261. package/.next/standalone/tower/docs/zh/modules/board.md +0 -56
  262. package/.next/standalone/tower/docs/zh/modules/git.md +0 -61
  263. package/.next/standalone/tower/docs/zh/modules/i18n.md +0 -38
  264. package/.next/standalone/tower/docs/zh/modules/mcp.md +0 -68
  265. package/.next/standalone/tower/docs/zh/modules/missions.md +0 -54
  266. package/.next/standalone/tower/docs/zh/modules/project.md +0 -65
  267. package/.next/standalone/tower/docs/zh/modules/search.md +0 -57
  268. package/.next/standalone/tower/docs/zh/modules/settings.md +0 -72
  269. package/.next/standalone/tower/docs/zh/modules/task.md +0 -82
  270. package/.next/standalone/tower/docs/zh/modules/terminal.md +0 -70
  271. package/.next/standalone/tower/docs/zh/modules/workspace.md +0 -68
  272. package/.next/standalone/tower/eslint.config.mjs +0 -18
  273. package/.next/standalone/tower/next.config.ts +0 -15
  274. package/.next/standalone/tower/package.json +0 -117
  275. package/.next/standalone/tower/playwright.config.ts +0 -28
  276. package/.next/standalone/tower/pnpm-lock.yaml +0 -10524
  277. package/.next/standalone/tower/pnpm-workspace.yaml +0 -6
  278. package/.next/standalone/tower/prisma/init-fts.ts +0 -23
  279. package/.next/standalone/tower/prisma/schema.prisma +0 -290
  280. package/.next/standalone/tower/prompts/backend-developer.md +0 -20
  281. package/.next/standalone/tower/prompts/code-reviewer.md +0 -19
  282. package/.next/standalone/tower/prompts/frontend-developer.md +0 -20
  283. package/.next/standalone/tower/prompts/product-manager.md +0 -16
  284. package/.next/standalone/tower/public/banner.jpg +0 -0
  285. package/.next/standalone/tower/public/logo.png +0 -0
  286. package/.next/standalone/tower/scripts/copy-monaco.js +0 -27
  287. package/.next/standalone/tower/scripts/init-db.ts +0 -74
  288. package/.next/standalone/tower/scripts/migrate-data.ts +0 -102
  289. package/.next/standalone/tower/server.js +0 -38
  290. package/.next/standalone/tower/src/app/favicon.ico +0 -0
  291. package/.next/standalone/tower/src/mcp/db.ts +0 -11
  292. package/.next/standalone/tower/src/mcp/index.ts +0 -15
  293. package/.next/standalone/tower/src/mcp/server.ts +0 -52
  294. package/.next/standalone/tower/src/mcp/tools/knowledge-tools.ts +0 -100
  295. package/.next/standalone/tower/src/mcp/tools/label-tools.ts +0 -70
  296. package/.next/standalone/tower/src/mcp/tools/note-asset-tools.ts +0 -271
  297. package/.next/standalone/tower/src/mcp/tools/project-tools.ts +0 -79
  298. package/.next/standalone/tower/src/mcp/tools/report-tools.ts +0 -214
  299. package/.next/standalone/tower/src/mcp/tools/search-tools.ts +0 -32
  300. package/.next/standalone/tower/src/mcp/tools/task-tools.ts +0 -250
  301. package/.next/standalone/tower/src/mcp/tools/terminal-tools.ts +0 -154
  302. package/.next/standalone/tower/src/mcp/tools/workspace-tools.ts +0 -73
  303. package/.next/standalone/tower/tests/e2e/chat-flow.spec.ts +0 -249
  304. package/.next/standalone/tower/tests/e2e/notes-assets.spec.ts +0 -287
  305. package/.next/standalone/tower/tests/e2e/search.spec.ts +0 -186
  306. package/.next/standalone/tower/tests/e2e/settings-flow.spec.ts +0 -250
  307. package/.next/standalone/tower/tests/e2e/settings.spec.ts +0 -261
  308. package/.next/standalone/tower/tests/e2e/smoke.spec.ts +0 -317
  309. package/.next/standalone/tower/tests/e2e/task-flow.spec.ts +0 -287
  310. package/.next/standalone/tower/tests/e2e/workbench.spec.ts +0 -307
  311. package/.next/standalone/tower/tests/setup.ts +0 -15
  312. package/.next/standalone/tower/tests/unit/actions/agent-actions.test.ts +0 -157
  313. package/.next/standalone/tower/tests/unit/actions/config-actions.test.ts +0 -170
  314. package/.next/standalone/tower/tests/unit/actions/file-actions.test.ts +0 -283
  315. package/.next/standalone/tower/tests/unit/actions/git-actions.test.ts +0 -34
  316. package/.next/standalone/tower/tests/unit/actions/preview-actions.test.ts +0 -177
  317. package/.next/standalone/tower/tests/unit/actions/search-actions.test.ts +0 -358
  318. package/.next/standalone/tower/tests/unit/actions/task-actions.test.ts +0 -173
  319. package/.next/standalone/tower/tests/unit/api/diff-route.test.ts +0 -9
  320. package/.next/standalone/tower/tests/unit/api/file-serving.test.ts +0 -88
  321. package/.next/standalone/tower/tests/unit/api/merge-route.test.ts +0 -9
  322. package/.next/standalone/tower/tests/unit/api/stream-persist-result.test.ts +0 -7
  323. package/.next/standalone/tower/tests/unit/api/stream-send-back.test.ts +0 -7
  324. package/.next/standalone/tower/tests/unit/components/asset-item.test.tsx +0 -105
  325. package/.next/standalone/tower/tests/unit/components/asset-list.test.tsx +0 -51
  326. package/.next/standalone/tower/tests/unit/components/assets/asset-upload.test.tsx +0 -70
  327. package/.next/standalone/tower/tests/unit/components/board-stats.test.tsx +0 -32
  328. package/.next/standalone/tower/tests/unit/components/category-filter.test.tsx +0 -58
  329. package/.next/standalone/tower/tests/unit/components/cli-adapter-tester.test.tsx +0 -160
  330. package/.next/standalone/tower/tests/unit/components/create-task-dialog.test.tsx +0 -162
  331. package/.next/standalone/tower/tests/unit/components/file-tree.test.tsx +0 -172
  332. package/.next/standalone/tower/tests/unit/components/note-card.test.tsx +0 -71
  333. package/.next/standalone/tower/tests/unit/components/note-editor.test.tsx +0 -39
  334. package/.next/standalone/tower/tests/unit/components/prompts-config.test.tsx +0 -200
  335. package/.next/standalone/tower/tests/unit/components/search-dialog.test.tsx +0 -223
  336. package/.next/standalone/tower/tests/unit/components/system-config.test.tsx +0 -32
  337. package/.next/standalone/tower/tests/unit/hooks/hook-registration.test.ts +0 -89
  338. package/.next/standalone/tower/tests/unit/hooks/stop-hook.test.ts +0 -108
  339. package/.next/standalone/tower/tests/unit/lib/asset-actions.test.ts +0 -257
  340. package/.next/standalone/tower/tests/unit/lib/file-utils.test.ts +0 -102
  341. package/.next/standalone/tower/tests/unit/lib/fs-security.test.ts +0 -34
  342. package/.next/standalone/tower/tests/unit/lib/fts.test.ts +0 -214
  343. package/.next/standalone/tower/tests/unit/lib/git-url.test.ts +0 -258
  344. package/.next/standalone/tower/tests/unit/lib/instrumentation.test.ts +0 -86
  345. package/.next/standalone/tower/tests/unit/lib/local-path-to-api-url.test.ts +0 -40
  346. package/.next/standalone/tower/tests/unit/lib/mime-magic.test.ts +0 -95
  347. package/.next/standalone/tower/tests/unit/lib/note-actions.test.ts +0 -296
  348. package/.next/standalone/tower/tests/unit/lib/preview-process-manager.test.ts +0 -107
  349. package/.next/standalone/tower/tests/unit/lib/process-manager.test.ts +0 -10
  350. package/.next/standalone/tower/tests/unit/lib/pty-session.test.ts +0 -171
  351. package/.next/standalone/tower/tests/unit/lib/search.test.ts +0 -289
  352. package/.next/standalone/tower/tests/unit/lib/session-store.test.ts +0 -111
  353. package/.next/standalone/tower/tests/unit/lib/utils.test.ts +0 -33
  354. package/.next/standalone/tower/tests/unit/lib/worktree.test.ts +0 -190
  355. package/.next/standalone/tower/tests/unit/mcp/identify-project.test.ts +0 -217
  356. package/.next/standalone/tower/tests/unit/mcp/manage-assets.test.ts +0 -199
  357. package/.next/standalone/tower/tests/unit/mcp/manage-notes.test.ts +0 -304
  358. package/.next/standalone/tower/tests/unit/mcp/search-tools.test.ts +0 -186
  359. package/.next/standalone/tower/tests/unit/missions-merge.test.ts +0 -43
  360. package/.next/standalone/tower/tower-studio-0.1.1.tgz +0 -0
  361. package/.next/standalone/tower/tsconfig.json +0 -34
  362. package/.next/standalone/tower/vitest.config.ts +0 -17
  363. package/.next/static/a6HR9cTK7s4aKfE5dWzjz/_buildManifest.js +0 -11
  364. package/.next/static/a6HR9cTK7s4aKfE5dWzjz/_clientMiddlewareManifest.js +0 -1
  365. package/.next/static/a6HR9cTK7s4aKfE5dWzjz/_ssgManifest.js +0 -1
  366. package/.next/static/chunks/00z-g3x93ngvn.js +0 -1
  367. package/.next/static/chunks/024pdsc27tjdd.js +0 -5
  368. package/.next/static/chunks/02dd83gbiv778.js +0 -1
  369. package/.next/static/chunks/03e.4ymu.j5wl.js +0 -1
  370. package/.next/static/chunks/03~yq9q893hmn.js +0 -1
  371. package/.next/static/chunks/05-b9qqm3av9~.js +0 -1
  372. package/.next/static/chunks/05~v02mkan5z..js +0 -1
  373. package/.next/static/chunks/0abtpeymj-58i.js +0 -1
  374. package/.next/static/chunks/0b6us7uq72u-d.js +0 -1
  375. package/.next/static/chunks/0drgc-oztq6o-.css +0 -1
  376. package/.next/static/chunks/0eaa2lmymh2fx.js +0 -1
  377. package/.next/static/chunks/0gb82g.6g90mn.js +0 -1
  378. package/.next/static/chunks/0gnm22yv~f54b.js +0 -1
  379. package/.next/static/chunks/0j9qriqni_r1..js +0 -2
  380. package/.next/static/chunks/0k.u8sxy~e469.js +0 -4
  381. package/.next/static/chunks/0lnhjf2a~jaco.js +0 -83
  382. package/.next/static/chunks/0lvd52mjiit6s.js +0 -1
  383. package/.next/static/chunks/0mq0uqbbbb1~2.js +0 -1
  384. package/.next/static/chunks/0neevhl_o1ozu.css +0 -2
  385. package/.next/static/chunks/0omj~p3uxkic-.js +0 -1
  386. package/.next/static/chunks/0t-gr6j-c65qb.js +0 -1
  387. package/.next/static/chunks/0t16ai99uv4j3.js +0 -1
  388. package/.next/static/chunks/0tcl81ybuob5i.js +0 -1
  389. package/.next/static/chunks/0uqimvsni_op~.js +0 -1
  390. package/.next/static/chunks/0wt3kws~_yr8z.js +0 -1
  391. package/.next/static/chunks/0xzdu87n_for1.js +0 -5
  392. package/.next/static/chunks/0y0tdl.rl6v1u.js +0 -1
  393. package/.next/static/chunks/0z2bzovqhl2f5.js +0 -1
  394. package/.next/static/chunks/0z4y0x1ifgy.e.js +0 -1
  395. package/.next/static/chunks/0z7bwntvfhxzi.js +0 -12
  396. package/.next/static/chunks/102ijqpvi0z-d.js +0 -1
  397. package/.next/static/chunks/10n23t.1hpb-1.js +0 -1
  398. package/.next/static/chunks/11_e3-j5gzbj4.js +0 -1
  399. package/.next/static/chunks/14.ims4y7osot.js +0 -1
  400. package/.next/static/chunks/14xzmrt5ly6gq.js +0 -31
  401. package/.next/static/chunks/151wr~6x8aclx.js +0 -1
  402. package/.next/static/chunks/169po6_~f3-d5.js +0 -1
  403. package/.next/static/chunks/16w-ap~msrwpj.js +0 -1
  404. package/.next/static/chunks/176n7f13ve~a9.js +0 -1
  405. package/.next/static/chunks/17oc2l.ekcs8b.css +0 -1
  406. package/.next/static/chunks/turbopack-0wjmrsi.z32s0.js +0 -1
  407. package/.next/static/media/4fa387ec64143e14-s.0q3udbd2bu5yp.woff2 +0 -0
  408. package/.next/static/media/7178b3e590c64307-s.11.cyxs5p-0z~.woff2 +0 -0
  409. package/.next/static/media/797e433ab948586e-s.p.0.q-h669a_dqa.woff2 +0 -0
  410. package/.next/static/media/8a480f0b521d4e75-s.06d3mdzz5bre_.woff2 +0 -0
  411. package/.next/static/media/apple-icon.16aocl-s-v2qz.png +0 -0
  412. package/.next/static/media/bbc41e54d2fcbd21-s.0gw~uztddq1df.woff2 +0 -0
  413. package/.next/static/media/caa3a2e1cccd8315-s.p.16t1db8_9y2o~.woff2 +0 -0
  414. package/.next/static/media/favicon.0y2d6j9cou~8p.ico +0 -0
  415. package/.next/static/media/icon0.0a6mkq6meyird.svg +0 -1
  416. package/.next/static/media/icon1.04ux133882seb.png +0 -0
  417. /package/{.next/standalone/tower/components.json → components.json} +0 -0
  418. /package/{.next/standalone/tower/postcss.config.mjs → postcss.config.mjs} +0 -0
  419. /package/{.next/standalone/tower/prisma → prisma}/prisma/dev.db +0 -0
  420. /package/{.next/standalone/tower/prisma → prisma}/seed.ts +0 -0
  421. /package/{.next/standalone/tower/docs/public → public}/banner.jpg +0 -0
  422. /package/{.next/standalone/tower/docs/public → public}/logo.png +0 -0
  423. /package/{.next/standalone/tower/public → public}/web-app-manifest-192x192.png +0 -0
  424. /package/{.next/standalone/tower/public → public}/web-app-manifest-512x512.png +0 -0
  425. /package/{.next/standalone/tower/scripts → scripts}/init-tower.ts +0 -0
  426. /package/{.next/standalone/tower/scripts → scripts}/post-tool-hook.js +0 -0
  427. /package/{.next/standalone/tower/scripts → scripts}/session-start-hook.js +0 -0
  428. /package/{.next/standalone/tower/scripts → scripts}/stop-hook.js +0 -0
  429. /package/{.next/standalone/tower/skills → skills}/tower/SKILL.md +0 -0
  430. /package/{.next/standalone/tower/src → src}/actions/agent-actions.ts +0 -0
  431. /package/{.next/standalone/tower/src → src}/actions/agent-config-actions.ts +0 -0
  432. /package/{.next/standalone/tower/src → src}/actions/ai-config-actions.ts +0 -0
  433. /package/{.next/standalone/tower/src → src}/actions/asset-actions.ts +0 -0
  434. /package/{.next/standalone/tower/src → src}/actions/assistant-actions.ts +0 -0
  435. /package/{.next/standalone/tower/src → src}/actions/cli-profile-actions.ts +0 -0
  436. /package/{.next/standalone/tower/src → src}/actions/config-actions.ts +0 -0
  437. /package/{.next/standalone/tower/src → src}/actions/file-actions.ts +0 -0
  438. /package/{.next/standalone/tower/src → src}/actions/git-actions.ts +0 -0
  439. /package/{.next/standalone/tower/src → src}/actions/label-actions.ts +0 -0
  440. /package/{.next/standalone/tower/src → src}/actions/note-actions.ts +0 -0
  441. /package/{.next/standalone/tower/src → src}/actions/onboarding-actions.ts +0 -0
  442. /package/{.next/standalone/tower/src → src}/actions/preview-actions.ts +0 -0
  443. /package/{.next/standalone/tower/src → src}/actions/project-actions.ts +0 -0
  444. /package/{.next/standalone/tower/src → src}/actions/prompt-actions.ts +0 -0
  445. /package/{.next/standalone/tower/src → src}/actions/report-actions.ts +0 -0
  446. /package/{.next/standalone/tower/src → src}/actions/search-actions.ts +0 -0
  447. /package/{.next/standalone/tower/src → src}/actions/search-code-actions.ts +0 -0
  448. /package/{.next/standalone/tower/src → src}/actions/task-actions.ts +0 -0
  449. /package/{.next/standalone/tower/src → src}/actions/workspace-actions.ts +0 -0
  450. /package/{.next/standalone/tower/src → src}/app/api/adapters/test/route.ts +0 -0
  451. /package/{.next/standalone/tower/src → src}/app/api/browse-fs/route.ts +0 -0
  452. /package/{.next/standalone/tower/src → src}/app/api/files/assets/[projectId]/[filename]/route.ts +0 -0
  453. /package/{.next/standalone/tower/src → src}/app/api/git/route.ts +0 -0
  454. /package/{.next/standalone/tower/src → src}/app/api/internal/assets/[projectId]/[filename]/route.ts +0 -0
  455. /package/{.next/standalone/tower/src → src}/app/api/internal/assets/reveal/route.ts +0 -0
  456. /package/{.next/standalone/tower/src → src}/app/api/internal/assistant/chat/route.ts +0 -0
  457. /package/{.next/standalone/tower/src → src}/app/api/internal/assistant/images/route.ts +0 -0
  458. /package/{.next/standalone/tower/src → src}/app/api/internal/assistant/route.ts +0 -0
  459. /package/{.next/standalone/tower/src → src}/app/api/internal/assistant/sessions/route.ts +0 -0
  460. /package/{.next/standalone/tower/src → src}/app/api/internal/cache/[...segments]/route.ts +0 -0
  461. /package/{.next/standalone/tower/src → src}/app/api/internal/hooks/install/route.ts +0 -0
  462. /package/{.next/standalone/tower/src → src}/app/api/internal/hooks/session/route.ts +0 -0
  463. /package/{.next/standalone/tower/src → src}/app/api/internal/hooks/stop/route.ts +0 -0
  464. /package/{.next/standalone/tower/src → src}/app/api/internal/hooks/upload/route.ts +0 -0
  465. /package/{.next/standalone/tower/src → src}/app/api/internal/notifications/pending/route.ts +0 -0
  466. /package/{.next/standalone/tower/src → src}/app/api/internal/terminal/[taskId]/buffer/route.ts +0 -0
  467. /package/{.next/standalone/tower/src → src}/app/api/internal/terminal/[taskId]/input/route.ts +0 -0
  468. /package/{.next/standalone/tower/src → src}/app/api/internal/terminal/[taskId]/start/route.ts +0 -0
  469. /package/{.next/standalone/tower/src → src}/app/api/tasks/[taskId]/diff/route.ts +0 -0
  470. /package/{.next/standalone/tower/src → src}/app/api/tasks/[taskId]/merge/route.ts +0 -0
  471. /package/{.next/standalone/tower/src → src}/app/apple-icon.png +0 -0
  472. /package/{.next/standalone/tower/docs/public → src/app}/favicon.ico +0 -0
  473. /package/{.next/standalone/tower/src → src}/app/globals.css +0 -0
  474. /package/{.next/standalone/tower/src → src}/app/icon0.svg +0 -0
  475. /package/{.next/standalone/tower/src → src}/app/icon1.png +0 -0
  476. /package/{.next/standalone/tower/src → src}/app/layout.tsx +0 -0
  477. /package/{.next/standalone/tower/src → src}/app/manifest.json +0 -0
  478. /package/{.next/standalone/tower/src → src}/app/missions/missions-client.tsx +0 -0
  479. /package/{.next/standalone/tower/src → src}/app/missions/page.tsx +0 -0
  480. /package/{.next/standalone/tower/src → src}/app/onboarding/page.tsx +0 -0
  481. /package/{.next/standalone/tower/src → src}/app/page.tsx +0 -0
  482. /package/{.next/standalone/tower/src → src}/app/settings/page.tsx +0 -0
  483. /package/{.next/standalone/tower/src → src}/app/workspaces/[workspaceId]/archive/archive-page-client.tsx +0 -0
  484. /package/{.next/standalone/tower/src → src}/app/workspaces/[workspaceId]/archive/page.tsx +0 -0
  485. /package/{.next/standalone/tower/src → src}/app/workspaces/[workspaceId]/assets/assets-page-client.tsx +0 -0
  486. /package/{.next/standalone/tower/src → src}/app/workspaces/[workspaceId]/assets/page.tsx +0 -0
  487. /package/{.next/standalone/tower/src → src}/app/workspaces/[workspaceId]/board-page-client.tsx +0 -0
  488. /package/{.next/standalone/tower/src → src}/app/workspaces/[workspaceId]/notes/notes-page-client.tsx +0 -0
  489. /package/{.next/standalone/tower/src → src}/app/workspaces/[workspaceId]/notes/page.tsx +0 -0
  490. /package/{.next/standalone/tower/src → src}/app/workspaces/[workspaceId]/page.tsx +0 -0
  491. /package/{.next/standalone/tower/src → src}/app/workspaces/[workspaceId]/projects/[projectId]/page.tsx +0 -0
  492. /package/{.next/standalone/tower/src → src}/app/workspaces/[workspaceId]/tasks/[taskId]/page.tsx +0 -0
  493. /package/{.next/standalone/tower/src → src}/app/workspaces/[workspaceId]/tasks/[taskId]/task-page-client.tsx +0 -0
  494. /package/{.next/standalone/tower/src → src}/app/workspaces/page.tsx +0 -0
  495. /package/{.next/standalone/tower/src → src}/components/assets/asset-item.tsx +0 -0
  496. /package/{.next/standalone/tower/src → src}/components/assets/asset-list.tsx +0 -0
  497. /package/{.next/standalone/tower/src → src}/components/assets/asset-upload.tsx +0 -0
  498. /package/{.next/standalone/tower/src → src}/components/assets/image-lightbox.tsx +0 -0
  499. /package/{.next/standalone/tower/src → src}/components/assets/text-preview-dialog.tsx +0 -0
  500. /package/{.next/standalone/tower/src → src}/components/assistant/assistant-chat-bubble.tsx +0 -0
  501. /package/{.next/standalone/tower/src → src}/components/assistant/assistant-chat.tsx +0 -0
  502. /package/{.next/standalone/tower/src → src}/components/assistant/assistant-panel.tsx +0 -0
  503. /package/{.next/standalone/tower/src → src}/components/assistant/assistant-provider.tsx +0 -0
  504. /package/{.next/standalone/tower/src → src}/components/assistant/image-preview-modal.tsx +0 -0
  505. /package/{.next/standalone/tower/src → src}/components/assistant/image-thumbnail-strip.tsx +0 -0
  506. /package/{.next/standalone/tower/src → src}/components/board/board-column.tsx +0 -0
  507. /package/{.next/standalone/tower/src → src}/components/board/board-filters.tsx +0 -0
  508. /package/{.next/standalone/tower/src → src}/components/board/board-stats.tsx +0 -0
  509. /package/{.next/standalone/tower/src → src}/components/board/column-tasks-dialog.tsx +0 -0
  510. /package/{.next/standalone/tower/src → src}/components/board/create-task-dialog.tsx +0 -0
  511. /package/{.next/standalone/tower/src → src}/components/board/kanban-board.tsx +0 -0
  512. /package/{.next/standalone/tower/src → src}/components/board/project-tabs.tsx +0 -0
  513. /package/{.next/standalone/tower/src → src}/components/board/task-card-context-menu.tsx +0 -0
  514. /package/{.next/standalone/tower/src → src}/components/board/task-card.tsx +0 -0
  515. /package/{.next/standalone/tower/src → src}/components/layout/app-sidebar.tsx +0 -0
  516. /package/{.next/standalone/tower/src → src}/components/layout/folder-browser-dialog.tsx +0 -0
  517. /package/{.next/standalone/tower/src → src}/components/layout/layout-client.tsx +0 -0
  518. /package/{.next/standalone/tower/src → src}/components/layout/search-dialog.tsx +0 -0
  519. /package/{.next/standalone/tower/src → src}/components/layout/sub-page-nav.tsx +0 -0
  520. /package/{.next/standalone/tower/src → src}/components/layout/top-bar.tsx +0 -0
  521. /package/{.next/standalone/tower/src → src}/components/missions/grid-layout-presets.ts +0 -0
  522. /package/{.next/standalone/tower/src → src}/components/missions/grid-preset-picker.tsx +0 -0
  523. /package/{.next/standalone/tower/src → src}/components/missions/merge-missions.ts +0 -0
  524. /package/{.next/standalone/tower/src → src}/components/missions/mission-card.tsx +0 -0
  525. /package/{.next/standalone/tower/src → src}/components/missions/task-picker-dialog.tsx +0 -0
  526. /package/{.next/standalone/tower/src → src}/components/notes/category-filter.tsx +0 -0
  527. /package/{.next/standalone/tower/src → src}/components/notes/note-card.tsx +0 -0
  528. /package/{.next/standalone/tower/src → src}/components/notes/note-editor.tsx +0 -0
  529. /package/{.next/standalone/tower/src → src}/components/notes/note-list.tsx +0 -0
  530. /package/{.next/standalone/tower/src → src}/components/notifications/notification-permission-banner.tsx +0 -0
  531. /package/{.next/standalone/tower/src → src}/components/notifications/use-notification-listener.ts +0 -0
  532. /package/{.next/standalone/tower/src → src}/components/onboarding/guided-tour.tsx +0 -0
  533. /package/{.next/standalone/tower/src → src}/components/onboarding/onboarding-wizard.tsx +0 -0
  534. /package/{.next/standalone/tower/src → src}/components/onboarding/wizard-step-cli.tsx +0 -0
  535. /package/{.next/standalone/tower/src → src}/components/onboarding/wizard-step-username.tsx +0 -0
  536. /package/{.next/standalone/tower/src → src}/components/project/create-project-dialog.tsx +0 -0
  537. /package/{.next/standalone/tower/src → src}/components/project/import-project-dialog.tsx +0 -0
  538. /package/{.next/standalone/tower/src → src}/components/providers/theme-provider.tsx +0 -0
  539. /package/{.next/standalone/tower/src → src}/components/repository/create-branch-dialog.tsx +0 -0
  540. /package/{.next/standalone/tower/src → src}/components/repository/git-changes-panel.tsx +0 -0
  541. /package/{.next/standalone/tower/src → src}/components/repository/git-log-panel.tsx +0 -0
  542. /package/{.next/standalone/tower/src → src}/components/repository/git-stash-panel.tsx +0 -0
  543. /package/{.next/standalone/tower/src → src}/components/repository/repo-sidebar.tsx +0 -0
  544. /package/{.next/standalone/tower/src → src}/components/settings/cli-adapter-tester.tsx +0 -0
  545. /package/{.next/standalone/tower/src → src}/components/settings/settings-page.tsx +0 -0
  546. /package/{.next/standalone/tower/src → src}/components/task/code-editor.tsx +0 -0
  547. /package/{.next/standalone/tower/src → src}/components/task/code-search.tsx +0 -0
  548. /package/{.next/standalone/tower/src → src}/components/task/diff-editor.tsx +0 -0
  549. /package/{.next/standalone/tower/src → src}/components/task/editor-git-panel.tsx +0 -0
  550. /package/{.next/standalone/tower/src → src}/components/task/editor-tabs.tsx +0 -0
  551. /package/{.next/standalone/tower/src → src}/components/task/execution-timeline.tsx +0 -0
  552. /package/{.next/standalone/tower/src → src}/components/task/file-tree-context-menu.tsx +0 -0
  553. /package/{.next/standalone/tower/src → src}/components/task/file-tree-node.tsx +0 -0
  554. /package/{.next/standalone/tower/src → src}/components/task/file-tree.tsx +0 -0
  555. /package/{.next/standalone/tower/src → src}/components/task/preview-panel.tsx +0 -0
  556. /package/{.next/standalone/tower/src → src}/components/task/task-detail-panel.tsx +0 -0
  557. /package/{.next/standalone/tower/src → src}/components/task/task-diff-view.tsx +0 -0
  558. /package/{.next/standalone/tower/src → src}/components/task/task-file-changes.tsx +0 -0
  559. /package/{.next/standalone/tower/src → src}/components/task/task-merge-confirm-dialog.tsx +0 -0
  560. /package/{.next/standalone/tower/src → src}/components/task/task-metadata.tsx +0 -0
  561. /package/{.next/standalone/tower/src → src}/components/task/task-notes-panel.tsx +0 -0
  562. /package/{.next/standalone/tower/src → src}/components/task/task-overview-drawer.tsx +0 -0
  563. /package/{.next/standalone/tower/src → src}/components/task/task-terminal.tsx +0 -0
  564. /package/{.next/standalone/tower/src → src}/components/task/terminal-portal.tsx +0 -0
  565. /package/{.next/standalone/tower/src → src}/components/task/types.ts +0 -0
  566. /package/{.next/standalone/tower/src → src}/components/ui/avatar.tsx +0 -0
  567. /package/{.next/standalone/tower/src → src}/components/ui/badge.tsx +0 -0
  568. /package/{.next/standalone/tower/src → src}/components/ui/button.tsx +0 -0
  569. /package/{.next/standalone/tower/src → src}/components/ui/card.tsx +0 -0
  570. /package/{.next/standalone/tower/src → src}/components/ui/command.tsx +0 -0
  571. /package/{.next/standalone/tower/src → src}/components/ui/dialog.tsx +0 -0
  572. /package/{.next/standalone/tower/src → src}/components/ui/dropdown-menu.tsx +0 -0
  573. /package/{.next/standalone/tower/src → src}/components/ui/empty-state.tsx +0 -0
  574. /package/{.next/standalone/tower/src → src}/components/ui/error-boundary.tsx +0 -0
  575. /package/{.next/standalone/tower/src → src}/components/ui/input-group.tsx +0 -0
  576. /package/{.next/standalone/tower/src → src}/components/ui/input.tsx +0 -0
  577. /package/{.next/standalone/tower/src → src}/components/ui/label.tsx +0 -0
  578. /package/{.next/standalone/tower/src → src}/components/ui/popover.tsx +0 -0
  579. /package/{.next/standalone/tower/src → src}/components/ui/scroll-area.tsx +0 -0
  580. /package/{.next/standalone/tower/src → src}/components/ui/segmented-control.tsx +0 -0
  581. /package/{.next/standalone/tower/src → src}/components/ui/select.tsx +0 -0
  582. /package/{.next/standalone/tower/src → src}/components/ui/separator.tsx +0 -0
  583. /package/{.next/standalone/tower/src → src}/components/ui/sheet.tsx +0 -0
  584. /package/{.next/standalone/tower/src → src}/components/ui/sonner.tsx +0 -0
  585. /package/{.next/standalone/tower/src → src}/components/ui/switch.tsx +0 -0
  586. /package/{.next/standalone/tower/src → src}/components/ui/tabs.tsx +0 -0
  587. /package/{.next/standalone/tower/src → src}/components/ui/textarea.tsx +0 -0
  588. /package/{.next/standalone/tower/src → src}/components/ui/toast.tsx +0 -0
  589. /package/{.next/standalone/tower/src → src}/components/ui/tooltip.tsx +0 -0
  590. /package/{.next/standalone/tower/src → src}/hooks/sse-event-reducer.ts +0 -0
  591. /package/{.next/standalone/tower/src → src}/hooks/use-assistant-chat.ts +0 -0
  592. /package/{.next/standalone/tower/src → src}/hooks/use-image-upload.ts +0 -0
  593. /package/{.next/standalone/tower/src → src}/instrumentation.ts +0 -0
  594. /package/{.next/standalone/tower/src → src}/lib/ai/adapters/cli/claude-cli-adapter.ts +0 -0
  595. /package/{.next/standalone/tower/src → src}/lib/ai/capability-resolver.ts +0 -0
  596. /package/{.next/standalone/tower/src → src}/lib/ai/provider-registry.ts +0 -0
  597. /package/{.next/standalone/tower/src → src}/lib/ai/providers/claude.ts +0 -0
  598. /package/{.next/standalone/tower/src → src}/lib/ai/providers/index.ts +0 -0
  599. /package/{.next/standalone/tower/src → src}/lib/ai/types.ts +0 -0
  600. /package/{.next/standalone/tower/src → src}/lib/assistant-constants.ts +0 -0
  601. /package/{.next/standalone/tower/src → src}/lib/assistant-message-converter.ts +0 -0
  602. /package/{.next/standalone/tower/src → src}/lib/assistant-sessions.ts +0 -0
  603. /package/{.next/standalone/tower/src → src}/lib/build-multimodal-prompt.ts +0 -0
  604. /package/{.next/standalone/tower/src → src}/lib/claude-session.ts +0 -0
  605. /package/{.next/standalone/tower/src → src}/lib/cli-test.ts +0 -0
  606. /package/{.next/standalone/tower/src → src}/lib/config-defaults.ts +0 -0
  607. /package/{.next/standalone/tower/src → src}/lib/config-reader.ts +0 -0
  608. /package/{.next/standalone/tower/src → src}/lib/constants.ts +0 -0
  609. /package/{.next/standalone/tower/src → src}/lib/db.ts +0 -0
  610. /package/{.next/standalone/tower/src → src}/lib/diff-parser.ts +0 -0
  611. /package/{.next/standalone/tower/src → src}/lib/execution-summary.ts +0 -0
  612. /package/{.next/standalone/tower/src → src}/lib/file-serve-client.ts +0 -0
  613. /package/{.next/standalone/tower/src → src}/lib/file-serve.ts +0 -0
  614. /package/{.next/standalone/tower/src → src}/lib/file-utils.ts +0 -0
  615. /package/{.next/standalone/tower/src → src}/lib/fs-security.ts +0 -0
  616. /package/{.next/standalone/tower/src → src}/lib/fts.ts +0 -0
  617. /package/{.next/standalone/tower/src → src}/lib/git-api.ts +0 -0
  618. /package/{.next/standalone/tower/src → src}/lib/git-url.ts +0 -0
  619. /package/{.next/standalone/tower/src → src}/lib/i18n/en.ts +0 -0
  620. /package/{.next/standalone/tower/src → src}/lib/i18n/types.ts +0 -0
  621. /package/{.next/standalone/tower/src → src}/lib/i18n/zh.ts +0 -0
  622. /package/{.next/standalone/tower/src → src}/lib/i18n.tsx +0 -0
  623. /package/{.next/standalone/tower/src → src}/lib/init-tower.ts +0 -0
  624. /package/{.next/standalone/tower/src → src}/lib/instrumentation-tasks.ts +0 -0
  625. /package/{.next/standalone/tower/src → src}/lib/internal-api-guard.ts +0 -0
  626. /package/{.next/standalone/tower/src → src}/lib/logger.ts +0 -0
  627. /package/{.next/standalone/tower/src → src}/lib/mime-magic.ts +0 -0
  628. /package/{.next/standalone/tower/src → src}/lib/platform.ts +0 -0
  629. /package/{.next/standalone/tower/src → src}/lib/preview-process.ts +0 -0
  630. /package/{.next/standalone/tower/src → src}/lib/pty/pty-session.ts +0 -0
  631. /package/{.next/standalone/tower/src → src}/lib/pty/session-store.ts +0 -0
  632. /package/{.next/standalone/tower/src → src}/lib/pty/ws-server.ts +0 -0
  633. /package/{.next/standalone/tower/src → src}/lib/schemas.ts +0 -0
  634. /package/{.next/standalone/tower/src → src}/lib/search.ts +0 -0
  635. /package/{.next/standalone/tower/src → src}/lib/terminal-link-provider.ts +0 -0
  636. /package/{.next/standalone/tower/src → src}/lib/tower-dir.ts +0 -0
  637. /package/{.next/standalone/tower/src → src}/lib/utils.ts +0 -0
  638. /package/{.next/standalone/tower/src → src}/lib/worktree.ts +0 -0
  639. /package/{.next/standalone/tower/src → src}/stores/board-store.ts +0 -0
  640. /package/{.next/standalone/tower/src → src}/stores/task-execution-store.ts +0 -0
  641. /package/{.next/standalone/tower/src → src}/types/index.ts +0 -0
@@ -1,251 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="zh-CN">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Tower Task Lifecycle</title>
7
- <style>
8
- @import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@300;400;500;600;700&display=swap');
9
- * { margin: 0; padding: 0; box-sizing: border-box; }
10
- body {
11
- background: #020617;
12
- font-family: 'JetBrains Mono', monospace;
13
- display: flex;
14
- justify-content: center;
15
- align-items: center;
16
- min-height: 100vh;
17
- padding: 2rem;
18
- }
19
- svg { max-width: 1000px; width: 100%; height: auto; }
20
- </style>
21
- </head>
22
- <body>
23
- <svg viewBox="0 0 1000 880" xmlns="http://www.w3.org/2000/svg">
24
- <defs>
25
- <!-- Grid pattern -->
26
- <pattern id="grid" width="40" height="40" patternUnits="userSpaceOnUse">
27
- <path d="M 40 0 L 0 0 0 40" fill="none" stroke="rgba(148,163,184,0.06)" stroke-width="0.5"/>
28
- </pattern>
29
- <!-- Arrow markers -->
30
- <marker id="arrow-emerald" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
31
- <path d="M 0 0 L 10 5 L 0 10 z" fill="#34d399"/>
32
- </marker>
33
- <marker id="arrow-rose" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
34
- <path d="M 0 0 L 10 5 L 0 10 z" fill="#fb7185"/>
35
- </marker>
36
- <marker id="arrow-orange" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
37
- <path d="M 0 0 L 10 5 L 0 10 z" fill="#fb923c"/>
38
- </marker>
39
- <marker id="arrow-amber" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
40
- <path d="M 0 0 L 10 5 L 0 10 z" fill="#fbbf24"/>
41
- </marker>
42
- <marker id="arrow-slate" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
43
- <path d="M 0 0 L 10 5 L 0 10 z" fill="#94a3b8"/>
44
- </marker>
45
- <!-- Glow filters -->
46
- <filter id="glow-emerald" x="-20%" y="-20%" width="140%" height="140%">
47
- <feGaussianBlur stdDeviation="3" result="blur"/>
48
- <feFlood flood-color="#34d399" flood-opacity="0.15" result="color"/>
49
- <feComposite in="color" in2="blur" operator="in" result="glow"/>
50
- <feMerge><feMergeNode in="glow"/><feMergeNode in="SourceGraphic"/></feMerge>
51
- </filter>
52
- <filter id="glow-amber" x="-20%" y="-20%" width="140%" height="140%">
53
- <feGaussianBlur stdDeviation="3" result="blur"/>
54
- <feFlood flood-color="#fbbf24" flood-opacity="0.15" result="color"/>
55
- <feComposite in="color" in2="blur" operator="in" result="glow"/>
56
- <feMerge><feMergeNode in="glow"/><feMergeNode in="SourceGraphic"/></feMerge>
57
- </filter>
58
- <filter id="glow-cyan" x="-20%" y="-20%" width="140%" height="140%">
59
- <feGaussianBlur stdDeviation="3" result="blur"/>
60
- <feFlood flood-color="#22d3ee" flood-opacity="0.15" result="color"/>
61
- <feComposite in="color" in2="blur" operator="in" result="glow"/>
62
- <feMerge><feMergeNode in="glow"/><feMergeNode in="SourceGraphic"/></feMerge>
63
- </filter>
64
- <filter id="glow-orange" x="-20%" y="-20%" width="140%" height="140%">
65
- <feGaussianBlur stdDeviation="3" result="blur"/>
66
- <feFlood flood-color="#fb923c" flood-opacity="0.15" result="color"/>
67
- <feComposite in="color" in2="blur" operator="in" result="glow"/>
68
- <feMerge><feMergeNode in="glow"/><feMergeNode in="SourceGraphic"/></feMerge>
69
- </filter>
70
- </defs>
71
-
72
- <!-- Background -->
73
- <rect width="1000" height="880" fill="#020617"/>
74
- <rect width="1000" height="880" fill="url(#grid)"/>
75
-
76
- <!-- ============================== -->
77
- <!-- STEP 1: 创建任务 (y=30) -->
78
- <!-- ============================== -->
79
- <rect x="350" y="30" width="300" height="52" rx="26" fill="rgba(8,145,178,0.2)" stroke="#22d3ee" stroke-width="1.5" filter="url(#glow-cyan)"/>
80
- <text x="500" y="52" text-anchor="middle" fill="#22d3ee" font-family="JetBrains Mono" font-size="14" font-weight="600">创建任务 (TODO)</text>
81
- <text x="500" y="70" text-anchor="middle" fill="rgba(148,163,184,0.7)" font-family="JetBrains Mono" font-size="9">标题 / 描述 / 优先级 / 标签 / baseBranch</text>
82
-
83
- <!-- Arrow: Step 1 → Step 2 -->
84
- <rect x="490" y="82" width="20" height="18" fill="#020617"/>
85
- <line x1="500" y1="82" x2="500" y2="104" stroke="#34d399" stroke-width="1.5" marker-end="url(#arrow-emerald)"/>
86
- <rect x="508" y="86" width="70" height="12" fill="#020617"/>
87
- <text x="512" y="96" fill="#34d399" font-family="JetBrains Mono" font-size="9" font-weight="500">点击「执行」</text>
88
-
89
- <!-- ============================== -->
90
- <!-- STEP 2: startPtyExecution() -->
91
- <!-- ============================== -->
92
- <rect x="310" y="108" width="380" height="130" rx="8" fill="rgba(6,78,59,0.4)" stroke="#34d399" stroke-width="1.5" filter="url(#glow-emerald)"/>
93
- <text x="500" y="130" text-anchor="middle" fill="#34d399" font-family="JetBrains Mono" font-size="13" font-weight="700">startPtyExecution()</text>
94
- <line x1="330" y1="140" x2="670" y2="140" stroke="rgba(52,211,153,0.2)" stroke-width="1"/>
95
- <!-- Detail items -->
96
- <circle cx="335" cy="157" r="2.5" fill="#34d399"/>
97
- <text x="345" y="160" fill="#cbd5e1" font-family="JetBrains Mono" font-size="10">创建 TaskExecution (PENDING → RUNNING)</text>
98
- <circle cx="335" cy="175" r="2.5" fill="#34d399"/>
99
- <text x="345" y="178" fill="#cbd5e1" font-family="JetBrains Mono" font-size="10">Task: TODO → IN_PROGRESS</text>
100
- <circle cx="335" cy="193" r="2.5" fill="#34d399"/>
101
- <text x="345" y="196" fill="#cbd5e1" font-family="JetBrains Mono" font-size="10">创建 Git Worktree (如有 baseBranch)</text>
102
- <circle cx="335" cy="211" r="2.5" fill="#34d399"/>
103
- <text x="345" y="214" fill="#cbd5e1" font-family="JetBrains Mono" font-size="10">加载 CliProfile · 注入 TOWER_TASK_ID</text>
104
- <circle cx="335" cy="229" r="2.5" fill="#34d399"/>
105
- <text x="345" y="232" fill="#cbd5e1" font-family="JetBrains Mono" font-size="10">创建 PTY 会话 (session-store)</text>
106
-
107
- <!-- Arrow: Step 2 → Step 3 -->
108
- <rect x="490" y="238" width="20" height="22" fill="#020617"/>
109
- <line x1="500" y1="238" x2="500" y2="264" stroke="#34d399" stroke-width="1.5" marker-end="url(#arrow-emerald)"/>
110
-
111
- <!-- ============================== -->
112
- <!-- STEP 3: 运行中 (IN_PROGRESS) -->
113
- <!-- ============================== -->
114
- <rect x="310" y="268" width="380" height="120" rx="8" fill="rgba(76,29,149,0.25)" stroke="#a78bfa" stroke-width="1.5"/>
115
- <!-- Status badge -->
116
- <rect x="420" y="276" width="160" height="20" rx="10" fill="rgba(52,211,153,0.15)" stroke="#34d399" stroke-width="1"/>
117
- <text x="500" y="290" text-anchor="middle" fill="#34d399" font-family="JetBrains Mono" font-size="10" font-weight="600">运行中 (IN_PROGRESS)</text>
118
- <line x1="330" y1="302" x2="670" y2="302" stroke="rgba(167,139,250,0.2)" stroke-width="1"/>
119
- <!-- Detail items -->
120
- <circle cx="335" cy="319" r="2.5" fill="#a78bfa"/>
121
- <text x="345" y="322" fill="#cbd5e1" font-family="JetBrains Mono" font-size="10">Claude CLI 在终端运行 · 用户可交互输入</text>
122
- <circle cx="335" cy="337" r="2.5" fill="#a78bfa"/>
123
- <text x="345" y="340" fill="#cbd5e1" font-family="JetBrains Mono" font-size="10">WebSocket 中继 I/O → xterm.js 实时显示</text>
124
- <circle cx="335" cy="355" r="2.5" fill="#a78bfa"/>
125
- <text x="345" y="358" fill="#cbd5e1" font-family="JetBrains Mono" font-size="10">SessionStart Hook → 上报 sessionId</text>
126
- <circle cx="335" cy="373" r="2.5" fill="#a78bfa"/>
127
- <text x="345" y="376" fill="#cbd5e1" font-family="JetBrains Mono" font-size="10">PostToolUse Hook → 捕获文件变更</text>
128
-
129
- <!-- Arrow: Step 3 → Step 4 -->
130
- <rect x="490" y="388" width="20" height="22" fill="#020617"/>
131
- <line x1="500" y1="388" x2="500" y2="414" stroke="#fbbf24" stroke-width="1.5" marker-end="url(#arrow-amber)"/>
132
-
133
- <!-- ============================== -->
134
- <!-- STEP 4: Decision Diamond -->
135
- <!-- ============================== -->
136
- <g filter="url(#glow-amber)">
137
- <polygon points="500,418 590,468 500,518 410,468" fill="rgba(120,53,15,0.3)" stroke="#fbbf24" stroke-width="1.5"/>
138
- </g>
139
- <text x="500" y="462" text-anchor="middle" fill="#fbbf24" font-family="JetBrains Mono" font-size="13" font-weight="600">exitCode?</text>
140
- <text x="500" y="478" text-anchor="middle" fill="rgba(251,191,36,0.6)" font-family="JetBrains Mono" font-size="9">进程退出</text>
141
-
142
- <!-- Left arrow: != 0 retry → back to Step 3 -->
143
- <rect x="290" y="458" width="116" height="20" fill="#020617"/>
144
- <line x1="410" y1="468" x2="296" y2="468" stroke="#fb7185" stroke-width="1.5" marker-end="url(#arrow-rose)"/>
145
- <text x="340" y="462" text-anchor="middle" fill="#fb7185" font-family="JetBrains Mono" font-size="9" font-weight="500">!= 0 重试</text>
146
- <!-- Up from left to Step 3 -->
147
- <line x1="296" y1="468" x2="296" y2="328" stroke="#fb7185" stroke-width="1.5"/>
148
- <line x1="296" y1="328" x2="306" y2="328" stroke="#fb7185" stroke-width="1.5" marker-end="url(#arrow-rose)"/>
149
-
150
- <!-- Right arrow: == 0 success → Step 5 -->
151
- <rect x="594" y="458" width="116" height="20" fill="#020617"/>
152
- <line x1="590" y1="468" x2="700" y2="468" stroke="#34d399" stroke-width="1.5"/>
153
- <text x="650" y="462" text-anchor="middle" fill="#34d399" font-family="JetBrains Mono" font-size="9" font-weight="500">== 0 成功</text>
154
- <!-- Down from right then back to center for Step 5 -->
155
- <line x1="700" y1="468" x2="700" y2="540" stroke="#34d399" stroke-width="1.5"/>
156
- <line x1="700" y1="540" x2="504" y2="540" stroke="#34d399" stroke-width="1.5" marker-end="url(#arrow-emerald)"/>
157
-
158
- <!-- ============================== -->
159
- <!-- STEP 5: 评审阶段 (IN_REVIEW) -->
160
- <!-- ============================== -->
161
- <rect x="310" y="530" width="380" height="90" rx="8" fill="rgba(76,29,149,0.25)" stroke="#c4b5fd" stroke-width="1.5"/>
162
- <!-- Status badge -->
163
- <rect x="410" y="538" width="180" height="20" rx="10" fill="rgba(139,92,246,0.2)" stroke="#a78bfa" stroke-width="1"/>
164
- <text x="500" y="552" text-anchor="middle" fill="#c4b5fd" font-family="JetBrains Mono" font-size="10" font-weight="600">评审阶段 (IN_REVIEW)</text>
165
- <line x1="330" y1="564" x2="670" y2="564" stroke="rgba(196,181,253,0.2)" stroke-width="1"/>
166
- <circle cx="335" cy="580" r="2.5" fill="#c4b5fd"/>
167
- <text x="345" y="583" fill="#cbd5e1" font-family="JetBrains Mono" font-size="10">生成小总结 + Dreaming 洞察</text>
168
- <circle cx="335" cy="598" r="2.5" fill="#c4b5fd"/>
169
- <text x="345" y="601" fill="#cbd5e1" font-family="JetBrains Mono" font-size="10">查看 Diff (worktree vs base branch)</text>
170
-
171
- <!-- Exit Down: 合并 → DONE -->
172
- <rect x="490" y="620" width="20" height="22" fill="#020617"/>
173
- <line x1="500" y1="620" x2="500" y2="646" stroke="#34d399" stroke-width="1.5" marker-end="url(#arrow-emerald)"/>
174
- <rect x="400" y="650" width="200" height="40" rx="20" fill="rgba(6,78,59,0.4)" stroke="#34d399" stroke-width="1.5" filter="url(#glow-emerald)"/>
175
- <text x="500" y="668" text-anchor="middle" fill="#34d399" font-family="JetBrains Mono" font-size="11" font-weight="600">DONE ✓</text>
176
- <text x="500" y="682" text-anchor="middle" fill="rgba(52,211,153,0.6)" font-family="JetBrains Mono" font-size="8">合并 · 清理 Worktree</text>
177
-
178
- <!-- Exit Left: 重新执行 → loops to Step 2 -->
179
- <rect x="218" y="565" width="88" height="16" fill="#020617"/>
180
- <line x1="310" y1="575" x2="232" y2="575" stroke="#fb923c" stroke-width="1.5" stroke-dasharray="5,3"/>
181
- <text x="268" y="571" text-anchor="middle" fill="#fb923c" font-family="JetBrains Mono" font-size="8" font-weight="500">重新执行</text>
182
- <line x1="232" y1="575" x2="232" y2="173" stroke="#fb923c" stroke-width="1.5" stroke-dasharray="5,3"/>
183
- <line x1="232" y1="173" x2="306" y2="173" stroke="#fb923c" stroke-width="1.5" stroke-dasharray="5,3" marker-end="url(#arrow-orange)"/>
184
-
185
- <!-- Exit Right: CANCELLED -->
186
- <rect x="694" y="565" width="80" height="16" fill="#020617"/>
187
- <line x1="690" y1="575" x2="740" y2="575" stroke="#fb7185" stroke-width="1.5" marker-end="url(#arrow-rose)"/>
188
- <rect x="744" y="555" width="120" height="40" rx="20" fill="rgba(159,18,57,0.3)" stroke="#fb7185" stroke-width="1.5"/>
189
- <text x="804" y="579" text-anchor="middle" fill="#fb7185" font-family="JetBrains Mono" font-size="11" font-weight="600">CANCELLED</text>
190
-
191
- <!-- ============================== -->
192
- <!-- SIDE PANEL: 恢复执行 (left) -->
193
- <!-- ============================== -->
194
- <rect x="50" y="290" width="195" height="70" rx="6" fill="rgba(120,53,15,0.15)" stroke="#fb923c" stroke-width="1.5" stroke-dasharray="6,3" filter="url(#glow-orange)"/>
195
- <text x="148" y="312" text-anchor="middle" fill="#fb923c" font-family="JetBrains Mono" font-size="11" font-weight="600">恢复执行</text>
196
- <text x="148" y="330" text-anchor="middle" fill="rgba(251,146,60,0.7)" font-family="JetBrains Mono" font-size="9">--resume sessionId</text>
197
- <text x="148" y="346" text-anchor="middle" fill="rgba(251,146,60,0.7)" font-family="JetBrains Mono" font-size="9">--continue (最近会话)</text>
198
- <!-- Arrow right into Step 3 -->
199
- <line x1="245" y1="328" x2="306" y2="328" stroke="#fb923c" stroke-width="1.5" stroke-dasharray="5,3" marker-end="url(#arrow-orange)"/>
200
-
201
- <!-- ============================== -->
202
- <!-- LEGEND (bottom-right) -->
203
- <!-- ============================== -->
204
- <!-- Card 1: 执行流程 -->
205
- <rect x="50" y="720" width="280" height="55" rx="6" fill="rgba(30,41,59,0.5)" stroke="rgba(52,211,153,0.3)" stroke-width="1"/>
206
- <circle cx="68" cy="738" r="5" fill="#34d399"/>
207
- <text x="80" y="742" fill="#34d399" font-family="JetBrains Mono" font-size="10" font-weight="600">执行流程</text>
208
- <text x="68" y="762" fill="rgba(203,213,225,0.6)" font-family="JetBrains Mono" font-size="8">创建→执行→运行→退出→评审→完成</text>
209
-
210
- <!-- Card 2: 自动化 -->
211
- <rect x="360" y="720" width="280" height="55" rx="6" fill="rgba(30,41,59,0.5)" stroke="rgba(251,191,36,0.3)" stroke-width="1"/>
212
- <circle cx="378" cy="738" r="5" fill="#fbbf24"/>
213
- <text x="390" y="742" fill="#fbbf24" font-family="JetBrains Mono" font-size="10" font-weight="600">自动化</text>
214
- <text x="378" y="756" fill="rgba(203,213,225,0.6)" font-family="JetBrains Mono" font-size="8">Worktree 自动创建</text>
215
- <text x="378" y="768" fill="rgba(203,213,225,0.6)" font-family="JetBrains Mono" font-size="8">环境变量注入 · Hook 捕获 sessionId</text>
216
-
217
- <!-- Card 3: 恢复机制 -->
218
- <rect x="670" y="720" width="280" height="55" rx="6" fill="rgba(30,41,59,0.5)" stroke="rgba(251,146,60,0.3)" stroke-width="1"/>
219
- <circle cx="688" cy="738" r="5" fill="#fb923c"/>
220
- <text x="700" y="742" fill="#fb923c" font-family="JetBrains Mono" font-size="10" font-weight="600">恢复机制</text>
221
- <text x="688" y="756" fill="rgba(203,213,225,0.6)" font-family="JetBrains Mono" font-size="8">--resume 恢复指定会话</text>
222
- <text x="688" y="768" fill="rgba(203,213,225,0.6)" font-family="JetBrains Mono" font-size="8">--continue 继续最近会话</text>
223
-
224
- <!-- ============================== -->
225
- <!-- STATUS BADGES ROW -->
226
- <!-- ============================== -->
227
- <rect x="170" y="800" width="660" height="24" rx="12" fill="rgba(30,41,59,0.3)" stroke="rgba(148,163,184,0.1)" stroke-width="1"/>
228
- <!-- TODO -->
229
- <circle cx="230" cy="812" r="4" fill="#22d3ee"/>
230
- <text x="240" y="816" fill="#22d3ee" font-family="JetBrains Mono" font-size="9" font-weight="500">TODO</text>
231
- <!-- IN_PROGRESS -->
232
- <circle cx="320" cy="812" r="4" fill="#34d399"/>
233
- <text x="330" y="816" fill="#34d399" font-family="JetBrains Mono" font-size="9" font-weight="500">IN_PROGRESS</text>
234
- <!-- IN_REVIEW -->
235
- <circle cx="460" cy="812" r="4" fill="#a78bfa"/>
236
- <text x="470" y="816" fill="#a78bfa" font-family="JetBrains Mono" font-size="9" font-weight="500">IN_REVIEW</text>
237
- <!-- DONE -->
238
- <circle cx="580" cy="812" r="4" fill="#34d399"/>
239
- <text x="590" y="816" fill="#34d399" font-family="JetBrains Mono" font-size="9" font-weight="500">DONE</text>
240
- <!-- CANCELLED -->
241
- <circle cx="650" cy="812" r="4" fill="#fb7185"/>
242
- <text x="660" y="816" fill="#fb7185" font-family="JetBrains Mono" font-size="9" font-weight="500">CANCELLED</text>
243
-
244
- <!-- ============================== -->
245
- <!-- FOOTER -->
246
- <!-- ============================== -->
247
- <text x="500" y="858" text-anchor="middle" fill="rgba(148,163,184,0.35)" font-family="JetBrains Mono" font-size="10">Tower Task Lifecycle · 5 Status States</text>
248
-
249
- </svg>
250
- </body>
251
- </html>
@@ -1,79 +0,0 @@
1
- ---
2
- title: Architecture
3
- description: Tower system architecture and design overview
4
- ---
5
-
6
- ## System Overview
7
-
8
- Tower is built on Next.js 16 with the App Router pattern, using a full-stack architecture where the frontend and backend coexist in a single codebase.
9
-
10
- ## Data Architecture
11
-
12
- ```
13
- Workspace (id, name, description?)
14
- ├── Project[] (id, name, alias?, description?, type, gitUrl?, localPath?)
15
- │ └── Task[] (id, title, description?, status, priority, order)
16
- │ ├── TaskLabel[] → Label
17
- │ ├── TaskExecution[]
18
- │ └── TaskMessage[]
19
- └── Label[] (id, name, color, isBuiltin)
20
- ```
21
-
22
- - **Cascade deletes**: Deleting a Workspace removes all its Projects; deleting a Project removes all its Tasks
23
- - **SQLite + Prisma**: Lightweight single-file database with WAL mode and busy_timeout=5000
24
-
25
- ## Runtime Architecture
26
-
27
- ```
28
- Browser (Next.js App)
29
- ├── Server Actions (src/actions/)
30
- ├── API Routes (src/app/api/)
31
- ├── WebSocket Client (xterm.js)
32
-
33
- Next.js Server
34
- ├── Prisma ORM → SQLite
35
- ├── PTY Session Store (in-memory, keyed by taskId)
36
- ├── WebSocket Server (ws-server.ts, port 3001)
37
- └── MCP Server (stdio transport)
38
- ```
39
-
40
- ## Key Subsystems
41
-
42
- ### PTY Terminal System
43
-
44
- Each task gets an independent PTY session running Claude CLI. Communication flows through WebSocket for real-time terminal I/O:
45
-
46
- ```
47
- Client (xterm.js) ←→ WebSocket ←→ ws-server.ts ←→ PTY Session (node-pty)
48
-
49
- session-store.ts
50
- ```
51
-
52
- ### MCP Server
53
-
54
- Exposes 24+ tools via the Model Context Protocol, allowing external AI agents to manage workspaces, projects, tasks, and interact with running terminals. Runs as a stdio transport process.
55
-
56
- ### Internal HTTP Bridge
57
-
58
- MCP stdio processes cannot access in-memory PTY sessions directly. Internal HTTP routes bridge this gap:
59
- - `GET /api/internal/terminal/[taskId]/buffer` -- Read terminal output
60
- - `POST /api/internal/terminal/[taskId]/input` -- Send terminal input
61
- - Restricted to localhost only
62
-
63
- ## Module Dependency Overview
64
-
65
- Tower is composed of 14 modules:
66
-
67
- | Layer | Modules |
68
- |-------|---------|
69
- | **UI** | Board, Missions, Assistant, Search, Settings |
70
- | **Core** | Workspace, Project, Task, Terminal |
71
- | **Integration** | MCP, Git, AI, Assets & Notes |
72
- | **Cross-cutting** | I18n |
73
-
74
- ## Process Lifecycle
75
-
76
- - **PTY Sessions**: One active session per task, 2h keepalive while running, 5min after exit, SIGTERM cleanup
77
- - **WebSocket**: Batched sender flushed on close, polling timer cleared on error
78
- - **Database**: Prisma `$disconnect()` on SIGTERM/SIGINT
79
- - **Timers**: All `setTimeout`/`setInterval` cleared in cleanup handlers
@@ -1,24 +0,0 @@
1
- ---
2
- title: Diagrams
3
- description: Interactive architecture and design diagrams for Tower
4
- ---
5
-
6
- ## System Architecture
7
-
8
- <iframe src="/tower/diagrams/tower-system-architecture.html" width="100%" height="600" style="border: 1px solid var(--vp-c-border); border-radius: 8px;" />
9
-
10
- ## Data Model
11
-
12
- <iframe src="/tower/diagrams/tower-data-model.html" width="100%" height="600" style="border: 1px solid var(--vp-c-border); border-radius: 8px;" />
13
-
14
- ## Task Lifecycle
15
-
16
- <iframe src="/tower/diagrams/tower-task-lifecycle.html" width="100%" height="600" style="border: 1px solid var(--vp-c-border); border-radius: 8px;" />
17
-
18
- ## AI Architecture
19
-
20
- <iframe src="/tower/diagrams/tower-ai-architecture.html" width="100%" height="600" style="border: 1px solid var(--vp-c-border); border-radius: 8px;" />
21
-
22
- ## Module Dependencies
23
-
24
- <iframe src="/tower/diagrams/tower-module-deps.html" width="100%" height="600" style="border: 1px solid var(--vp-c-border); border-radius: 8px;" />
@@ -1,80 +0,0 @@
1
- ---
2
- title: Getting Started
3
- description: Steps to install and run the Tower project
4
- ---
5
-
6
- ## Prerequisites
7
-
8
- - **Node.js** >= 22
9
- - **pnpm** (package manager)
10
-
11
- ## Installation
12
-
13
- ### 1. Clone the Repository
14
-
15
- ```bash
16
- git clone <repo-url> tower
17
- cd tower
18
- ```
19
-
20
- ### 2. Install Dependencies
21
-
22
- ```bash
23
- pnpm install
24
- ```
25
-
26
- ### 3. Configure Environment Variables
27
-
28
- ```bash
29
- cp .env.example .env
30
- ```
31
-
32
- Edit the `.env` file as needed. The main configuration is `DATABASE_URL` (SQLite database path).
33
-
34
- ### 4. Initialize the Database
35
-
36
- ```bash
37
- # Sync Prisma schema to the database
38
- pnpm db:push
39
-
40
- # Import seed data
41
- pnpm db:seed
42
-
43
- # Create full-text search index
44
- pnpm db:init-fts
45
- ```
46
-
47
- ### 5. Start the Development Server
48
-
49
- ```bash
50
- pnpm dev
51
- ```
52
-
53
- Open your browser and visit [http://localhost:3000](http://localhost:3000).
54
-
55
- ## MCP Integration
56
-
57
- To expose Tower's tool capabilities to external AI agents, add the following to your MCP client configuration:
58
-
59
- ```json
60
- {
61
- "mcpServers": {
62
- "tower": {
63
- "command": "npx",
64
- "args": ["tsx", "<project-root>/src/mcp/index.ts"]
65
- }
66
- }
67
- }
68
- ```
69
-
70
- Replace `<project-root>` with the absolute path to the project.
71
-
72
- ## Common Commands
73
-
74
- | Command | Description |
75
- |---------|-------------|
76
- | `pnpm dev` | Start development server (Webpack mode, required for node-pty) |
77
- | `pnpm db:push` | Sync Prisma schema |
78
- | `pnpm db:seed` | Import seed data |
79
- | `pnpm db:init-fts` | Create full-text search index |
80
- | `pnpm test:run` | Run tests |
@@ -1,84 +0,0 @@
1
- ---
2
- title: Introduction
3
- description: What Tower is, core concepts, and tech stack overview
4
- ---
5
-
6
- ## What is Tower
7
-
8
- Tower is an AI task orchestration platform for individual developers. It integrates Kanban board management, terminal interaction, code editing, and an MCP toolchain into a unified environment for task management and AI agent collaboration.
9
-
10
- ## Why Tower
11
-
12
- AI has changed how developers work. Before, you'd write code step by step, adjust requirements when issues came up, and keep everything in sync at your own pace.
13
-
14
- That's no longer the case. AI now handles most of the coding, and your role has shifted from *writing code* to *reviewing code*. You're also juggling more projects than ever — running several in parallel has become the norm.
15
-
16
- This creates real problems:
17
-
18
- - **Constant interruptions** — A new task or change request can drop in at any moment, breaking your train of thought. You finish reviewing a PR, switch to debug something in another project, and by the time you're back, you've lost your place.
19
- - **Lost context** — Bouncing between tasks means decisions, changes, and lessons learned slip through the cracks. There's nowhere to capture them, and by the time you need them again, they're gone.
20
- - **No way to review** — Conversations, code changes, terminal logs — they're scattered everywhere. When you want to look back, summarize, or extract lessons from a completed task, there's nothing to work with.
21
-
22
- Tower exists to fix this: **give every task a complete record**.
23
-
24
- Conversations, terminal logs, code diffs, file assets, execution summaries — everything is automatically captured in one place. You can switch between tasks without losing context, and once a task is done, use AI-powered review (Dreaming) to distill problems and insights into structured knowledge.
25
-
26
- Down the road, this feeds into a personal knowledge base — making everything searchable and reusable.
27
-
28
- ## Core Concepts
29
-
30
- Tower's data model follows a three-level hierarchy:
31
-
32
- ```
33
- Workspace → Project → Task
34
- ```
35
-
36
- - **Workspace**: Top-level container that manages the namespace for projects and labels
37
- - **Project**: Belongs to a Workspace, holds tasks and code repositories. Supports both regular and Git-based projects
38
- - **Task**: The core work unit that flows across Kanban columns via status (TODO / IN_PROGRESS / IN_REVIEW / DONE / CANCELLED)
39
-
40
- Each Task can be associated with labels, execution records, and messages, with support for automated AI agent execution.
41
-
42
- ## Tech Stack
43
-
44
- | Technology | Description |
45
- |------------|-------------|
46
- | **Next.js 16** | App Router, full-stack framework |
47
- | **TypeScript** | Type safety |
48
- | **SQLite + Prisma** | Lightweight database + ORM |
49
- | **TailwindCSS 4** | Utility-first CSS |
50
- | **shadcn (base-nova)** | UI component library |
51
- | **xterm.js + node-pty** | Terminal emulation |
52
- | **Monaco Editor** | Code editor |
53
- | **MCP Protocol** | AI tool protocol |
54
-
55
- ## Feature Overview
56
-
57
- - **Kanban Board** -- Drag-and-drop sorting, label filtering, priority management
58
- - **AI Terminal** -- Independent Claude CLI terminal session per task
59
- - **Code Editing** -- Monaco Editor with multi-tab editing and Git diff view
60
- - **MCP Toolchain** -- 24+ tools for external AI agent integration
61
- - **Multi-task Monitoring** -- Missions panel for real-time monitoring of multiple executions
62
- - **Global Search** -- Full-text search across tasks, projects, and repositories
63
- - **Internationalization** -- Chinese and English bilingual support
64
-
65
- ## Module Documentation
66
-
67
- Tower consists of the following 14 modules:
68
-
69
- | Module | Description |
70
- |--------|-------------|
71
- | [Workspace](../modules/workspace) | Workspace management |
72
- | [Project](../modules/project) | Project management |
73
- | [Task](../modules/task) | Task management |
74
- | [Board](../modules/board) | Kanban UI |
75
- | [Terminal](../modules/terminal) | PTY terminal system |
76
- | [Assistant](../modules/assistant) | AI assistant chat |
77
- | [Missions](../modules/missions) | Multi-task monitoring |
78
- | [Search](../modules/search) | Global search |
79
- | [Settings](../modules/settings) | System configuration |
80
- | [MCP](../modules/mcp) | MCP Server |
81
- | [Git](../modules/git) | Git integration |
82
- | [Assets & Notes](../modules/assets-notes) | Assets and notes |
83
- | [AI](../modules/ai) | AI capability layer |
84
- | [I18n](../modules/i18n) | Internationalization |
@@ -1,36 +0,0 @@
1
- ---
2
- layout: home
3
- hero:
4
- name: Tower
5
- text: AI Task Orchestration Platform
6
- tagline: Kanban + Terminal + Code Editor + MCP Toolchain
7
- image:
8
- src: /logo.png
9
- alt: Tower Logo
10
- actions:
11
- - theme: brand
12
- text: Get Started
13
- link: /en/guide/getting-started
14
- - theme: alt
15
- text: Modules
16
- link: /en/modules/workspace
17
- features:
18
- - icon: 📋
19
- title: Kanban Board
20
- details: Drag-and-drop task cards with pinning, labels, priority filters, and context menus
21
- - icon: 🤖
22
- title: AI Terminal
23
- details: xterm.js + Claude CLI for real-time interactive execution with auto-generated summaries
24
- - icon: 🔧
25
- title: MCP Toolchain
26
- details: 24 MCP tools across 7 categories for seamless external AI agent integration
27
- - icon: ✏️
28
- title: Code Editor
29
- details: Monaco Editor with multi-tab editing, syntax highlighting, and Ctrl+S save
30
- - icon: 📡
31
- title: Mission Control
32
- details: Multi-task parallel monitoring dashboard with grid layouts and live terminal output
33
- - icon: 🔍
34
- title: Global Search
35
- details: FTS5 full-text search across tasks, projects, notes, and assets
36
- ---