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,66 +0,0 @@
1
- ---
2
- title: 介绍
3
- description: Tower 是什么,核心概念与技术栈总览
4
- ---
5
-
6
- ## 什么是 Tower
7
-
8
- Tower 是一个 AI 任务调度平台,将看板管理、终端交互、代码编辑和 MCP 工具链整合在一起,为开发者提供统一的任务管理和 AI Agent 协作环境。
9
-
10
- ## 核心概念
11
-
12
- Tower 的数据模型采用三层层级结构:
13
-
14
- ```
15
- Workspace → Project → Task
16
- ```
17
-
18
- - **Workspace(工作区)**:顶层容器,管理项目和标签的命名空间
19
- - **Project(项目)**:属于某个 Workspace,承载任务和代码仓库,支持普通项目和 Git 项目
20
- - **Task(任务)**:核心工作单元,通过状态(TODO / IN_PROGRESS / IN_REVIEW / DONE / CANCELLED)在看板列间流转
21
-
22
- 每个 Task 可以关联标签、执行记录和消息,支持 AI Agent 自动执行。
23
-
24
- ## 技术栈
25
-
26
- | 技术 | 说明 |
27
- |------|------|
28
- | **Next.js 16** | App Router,全栈框架 |
29
- | **TypeScript** | 类型安全 |
30
- | **SQLite + Prisma** | 轻量数据库 + ORM |
31
- | **TailwindCSS 4** | 原子化 CSS |
32
- | **shadcn (base-nova)** | UI 组件库 |
33
- | **xterm.js + node-pty** | 终端模拟 |
34
- | **Monaco Editor** | 代码编辑器 |
35
- | **MCP Protocol** | AI 工具协议 |
36
-
37
- ## 功能总览
38
-
39
- - **看板管理** — 拖拽排序、标签筛选、优先级管理
40
- - **AI 终端** — 每个任务独立的 Claude CLI 终端会话
41
- - **代码编辑** — Monaco Editor 多标签编辑、Git Diff 视图
42
- - **MCP 工具链** — 24+ 工具供外部 AI Agent 调用
43
- - **多任务监控** — Missions 面板实时监控多个执行
44
- - **全局搜索** — 任务、项目、仓库全文搜索
45
- - **国际化** — 中英文双语支持
46
-
47
- ## 模块文档
48
-
49
- Tower 由以下 14 个模块组成:
50
-
51
- | 模块 | 说明 |
52
- |------|------|
53
- | [Workspace](../modules/workspace) | 工作区管理 |
54
- | [Project](../modules/project) | 项目管理 |
55
- | [Task](../modules/task) | 任务管理 |
56
- | [Board](../modules/board) | 看板 UI |
57
- | [Terminal](../modules/terminal) | PTY 终端系统 |
58
- | [Assistant](../modules/assistant) | AI 助手聊天 |
59
- | [Missions](../modules/missions) | 多任务监控 |
60
- | [Search](../modules/search) | 全局搜索 |
61
- | [Settings](../modules/settings) | 系统配置 |
62
- | [MCP](../modules/mcp) | MCP Server |
63
- | [Git](../modules/git) | Git 集成 |
64
- | [Assets & Notes](../modules/assets-notes) | 资产和笔记 |
65
- | [AI](../modules/ai) | AI 能力层 |
66
- | [I18n](../modules/i18n) | 国际化 |
@@ -1,23 +0,0 @@
1
- ---
2
- layout: home
3
- hero:
4
- name: Tower
5
- text: AI 任务调度平台
6
- tagline: 看板 + 终端 + 代码编辑器 + MCP 工具链
7
- actions:
8
- - theme: brand
9
- text: 快速开始
10
- link: /zh/guide/getting-started
11
- - theme: alt
12
- text: 模块文档
13
- link: /zh/modules/workspace
14
- features:
15
- - title: 看板管理
16
- details: 拖拽任务卡片,支持置顶、标签、优先级筛选
17
- - title: AI 终端
18
- details: xterm.js + Claude CLI,实时交互执行任务
19
- - title: MCP 工具链
20
- details: 24 个 MCP 工具,支持外部 AI Agent 调用
21
- - title: 代码编辑器
22
- details: Monaco Editor,多标签编辑,Ctrl+S 保存
23
- ---
@@ -1,104 +0,0 @@
1
- ---
2
- title: AI 模块
3
- description: Tower 的 AI 能力层,涵盖 Claude Agent SDK 集成、CLI Adapter、助手聊天、任务执行等
4
- ---
5
-
6
- **Slug:** `ai`
7
-
8
- ## 功能介绍
9
-
10
- AI 能力层统一管理 Tower 中所有的 AI 调用,提供 5 种核心 AI 能力:
11
-
12
- | 能力 | 说明 | 触发时机 | 建议模型 |
13
- |------|------|----------|----------|
14
- | **助手聊天** | 多轮流式对话,支持图片输入 | 用户在助手面板发起对话 | 当前默认 |
15
- | **小总结** | 50 字执行摘要 | 任务停止时自动生成 | Haiku 4.5 |
16
- | **大总结 Dreaming** | 结构化洞察 JSON | 任务完成(DONE)时自动生成 | Sonnet 4.6 |
17
- | **项目分析** | 分析目录结构生成描述 | 点击项目「生成描述」按钮 | Sonnet 4.6 |
18
- | **任务执行** | PTY 终端交互式执行 | 启动任务执行 | 当前默认 |
19
-
20
- 不同能力建议使用不同模型(Haiku 适合轻量级摘要,Sonnet 适合深度分析),后续支持为每种能力独立配置模型。
21
-
22
- ## 详细说明
23
-
24
- ### AI 能力调用点
25
-
26
- | 能力 | 文件 | 调用方式 |
27
- |------|------|----------|
28
- | 助手聊天 | `api/internal/assistant/chat/route.ts` | Agent SDK `query()` |
29
- | 小总结 | `lib/claude-session.ts` → `generateSummaryFromLog` | Agent SDK `aiQuery()` |
30
- | 大总结(Dreaming) | `lib/claude-session.ts` → `generateDreamingInsight` | Agent SDK `aiQuery()` |
31
- | 项目分析 | `actions/project-actions.ts` → `analyzeProjectDirectory` | Agent SDK `aiQuery()` |
32
- | 任务执行 | `actions/agent-actions.ts` → `startPtyExecution` | PTY spawn CLI |
33
-
34
- ### CLI Adapter 接口(TODO)
35
-
36
- 当前硬编码 Claude Code,后续接入第二个 CLI 时抽象:
37
-
38
- ```
39
- spawn(cwd, args, env) — 启动 CLI 进程(PTY)
40
- resume(sessionId) — 恢复会话
41
- continue() — 继续最近会话
42
- getSessionId() — 获取会话 ID
43
- getHooks() / installHooks() — Hook 配置注册
44
- buildEnvOverrides(taskId) — 环境变量注入
45
- ```
46
-
47
- ## 文件清单
48
-
49
- ### 核心库
50
-
51
- | 文件 | 说明 |
52
- |------|------|
53
- | `lib/claude-session.ts` | AI 统一入口:`aiQuery()`、`generateSummaryFromLog()`、`generateDreamingInsight()` |
54
- | `lib/assistant-sessions.ts` | 助手会话管理(localStorage 注册表) |
55
- | `lib/assistant-constants.ts` | `ASSISTANT_SESSION_KEY` 等常量 |
56
- | `lib/assistant-message-converter.ts` | SDK 消息 → UI 消息格式转换 |
57
- | `lib/build-multimodal-prompt.ts` | 多模态 prompt 构建(文本+图片) |
58
- | `lib/execution-summary.ts` | 执行后摘要和 Dreaming 洞察生成 |
59
- | `lib/cli-test.ts` | CLI Adapter 环境检测 |
60
-
61
- ### Server Actions
62
-
63
- | 文件 | 函数 | 说明 |
64
- |------|------|------|
65
- | `actions/agent-actions.ts` | `startPtyExecution` | 启动 Claude CLI PTY |
66
- | `actions/agent-actions.ts` | `resumePtyExecution` | 恢复会话 |
67
- | `actions/agent-actions.ts` | `continueLatestPtyExecution` | 继续最近会话 |
68
- | `actions/cli-profile-actions.ts` | `getDefaultCliProfile` | 获取活跃 CLI 配置 |
69
- | `actions/prompt-actions.ts` | `getPrompts` / `createPrompt` | Prompt 模板管理 |
70
- | `actions/project-actions.ts` | `analyzeProjectDirectory` | AI 项目分析 |
71
-
72
- ### API Routes
73
-
74
- | 路由 | 说明 |
75
- |------|------|
76
- | `/api/internal/assistant/chat` | 助手聊天 SSE 流式 |
77
- | `/api/internal/assistant/sessions` | 会话消息检索 |
78
- | `/api/internal/assistant/images` | 图片服务 |
79
- | `/api/adapters/test` | CLI Adapter 连接测试 |
80
-
81
- ### 数据模型
82
-
83
- | 模型 | 说明 |
84
- |------|------|
85
- | `CliProfile` | CLI 命令、参数、环境变量配置。`command` 仅允许 `claude`/`claude-code` |
86
- | `AgentConfig` | Agent 特定配置,唯一约束 `(agent, configName)` |
87
- | `AgentPrompt` | Prompt 模板,支持全局/workspace 级别 |
88
- | `TaskExecution` | 执行记录,含 `sessionId`、`summary`、`gitLog`、`insightNoteId` |
89
-
90
- ### 组件
91
-
92
- | 组件 | 说明 |
93
- |------|------|
94
- | `settings/cli-profile-config.tsx` | CLI Profile 配置 UI |
95
- | `settings/cli-adapter-tester.tsx` | CLI 连接测试 UI |
96
- | `settings/prompts-config.tsx` | Prompt 模板管理 UI |
97
- | `settings/ai-tools-config.tsx` | Agent 配置 UI |
98
-
99
- ## 约束
100
-
101
- - `CliProfile.command` 仅白名单 `claude`、`claude-code`
102
- - `baseArgs` 禁止 shell 元字符 `;&|$()`
103
- - `envVars` 禁止危险 key: `PATH`, `LD_PRELOAD`, `NODE_OPTIONS` 等
104
- - 环境变量通过 `envOverrides` 注入,禁止修改 `process.env`
@@ -1,68 +0,0 @@
1
- ---
2
- title: Assets & Notes 模块
3
- description: 项目资产管理(图片、文档上传)和项目笔记系统
4
- ---
5
-
6
- **Slug:** `assets`
7
-
8
- ## 功能介绍
9
-
10
- 资产管理和笔记系统为项目提供文件存储和知识记录能力。
11
-
12
- ### 资产管理
13
-
14
- - **文件上传**:支持上传图片和文档到项目,作为项目资料的一部分
15
- - **画廊浏览**:资产页面以画廊形式展示所有上传的图片,支持灯箱预览大图
16
- - **文档预览**:上传的文本文档可以直接在浏览器中预览内容
17
- - **文件定位**:支持在系统文件管理器中快速定位资产文件
18
-
19
- ### 笔记系统
20
-
21
- - **项目笔记**:在项目下创建和管理笔记,按分类组织
22
- - **任务笔记**:为特定任务记录笔记
23
- - **分类管理**:笔记支持分类筛选,方便组织和查找
24
- - **Dreaming 洞察**:任务执行完成后的 Dreaming 洞察会自动保存为笔记,记录 AI 对任务执行过程的结构化分析
25
-
26
- ## 详细说明
27
-
28
- ### 资产存储
29
-
30
- 资产文件按项目 ID 组织存储,通过内部 API 和公开 API 两种路径提供文件访问服务。
31
-
32
- ### 笔记与任务关联
33
-
34
- 笔记可以独立存在于项目下,也可以关联到特定任务。任务完成后生成的 Dreaming 洞察通过 `insightNoteId` 字段关联到执行记录。
35
-
36
- ## 文件清单
37
-
38
- ### Server Actions
39
-
40
- | 文件 | 说明 |
41
- |------|------|
42
- | `asset-actions.ts` | 资产上传和管理 |
43
- | `note-actions.ts` | 笔记 CRUD |
44
-
45
- ### API Routes
46
-
47
- | 路由 | 说明 |
48
- |------|------|
49
- | `/api/internal/assets/[projectId]/[filename]` | 内部资产文件服务 |
50
- | `/api/internal/assets/reveal` | 资产文件定位 |
51
- | `/api/files/assets/[projectId]/[filename]` | 公开资产服务 |
52
-
53
- ### 页面
54
-
55
- | 路由 | 说明 |
56
- |------|------|
57
- | `/workspaces/[id]/assets` | 资产画廊 |
58
- | `/workspaces/[id]/notes` | 笔记管理 |
59
-
60
- ### 组件
61
-
62
- **资产** (`src/components/assets/`):`asset-upload`, `asset-list`, `image-lightbox`, `text-preview`
63
-
64
- **笔记** (`src/components/notes/`):`note-editor`, `note-list`, `note-card`, `category-filter`
65
-
66
- ### MCP Tools
67
-
68
- - `manage_assets` / `manage_notes`(via `note-asset-tools.ts`)
@@ -1,74 +0,0 @@
1
- ---
2
- title: Assistant 模块
3
- description: AI 助手聊天系统,通过 Claude API 提供流式对话能力
4
- ---
5
-
6
- **Slug:** `assistant`
7
-
8
- ## 功能介绍
9
-
10
- 内置 AI 助手,通过 Claude Agent SDK 提供流式聊天能力。助手定位是「任务管理操作员」,可以通过 Tower MCP 工具帮你管理工作区、项目、任务。
11
-
12
- 主要能力:
13
-
14
- - **流式对话**:基于 Claude Agent SDK 的 SSE 流式聊天,实时显示 AI 回复
15
- - **任务管理操作**:助手可以通过 MCP 工具帮你创建工作区、项目、任务,查询状态,执行搜索等操作
16
- - **图片上传**:支持多模态输入,上传图片后 AI 可以理解图片内容并结合对话上下文回答
17
- - **会话恢复**:聊天记录自动保存,重新打开助手后可以继续之前的对话
18
- - **会话管理**:支持创建新会话、切换历史会话
19
-
20
- ## 详细说明
21
-
22
- ### 助手角色
23
-
24
- 助手通过 Tower MCP Server 获得工具能力,可以执行:
25
- - 查看和管理工作区、项目
26
- - 创建和更新任务,移动任务状态
27
- - 搜索任务、项目、仓库
28
- - 查看每日摘要和待办
29
- - 管理标签
30
-
31
- ### 消息流
32
-
33
- 用户消息通过 SSE(Server-Sent Events)发送到后端,Claude Agent SDK 流式返回回复,前端实时渲染。
34
-
35
- ## 文件清单
36
-
37
- ### Server Actions (`src/actions/assistant-actions.ts`)
38
-
39
- 会话管理和消息收发。
40
-
41
- ### API Routes
42
-
43
- | 路由 | 说明 |
44
- |------|------|
45
- | `/api/internal/assistant/route.ts` | 助手管理 |
46
- | `/api/internal/assistant/chat/route.ts` | 聊天消息(SSE 流式) |
47
- | `/api/internal/assistant/images/route.ts` | 图片上传 |
48
- | `/api/internal/assistant/sessions/route.ts` | 会话管理 |
49
-
50
- ### 组件 (`src/components/assistant/`)
51
-
52
- | 组件 | 说明 |
53
- |------|------|
54
- | `assistant-chat.tsx` | 聊天主界面 |
55
- | `assistant-panel.tsx` | 助手面板 |
56
- | `image-preview.tsx` | 图片预览 |
57
- | `chat-bubble.tsx` | 消息气泡 |
58
-
59
- ### Hooks (`src/hooks/`)
60
-
61
- | Hook | 说明 |
62
- |------|------|
63
- | `use-assistant-chat.ts` | SSE 事件处理 |
64
- | `use-image-upload.ts` | 图片上传 |
65
- | `sse-event-reducer.ts` | SSE 流解析 |
66
-
67
- ### 核心库
68
-
69
- | 文件 | 说明 |
70
- |------|------|
71
- | `lib/assistant-sessions.ts` | 会话管理 |
72
- | `lib/assistant-message-converter.ts` | 消息格式转换 |
73
- | `lib/claude-session.ts` | Claude API 会话 |
74
- | `lib/build-multimodal-prompt.ts` | 多模态 prompt 构建 |
@@ -1,56 +0,0 @@
1
- ---
2
- title: Board 模块
3
- description: 看板 UI,Kanban 列展示任务卡片,支持拖拽排序和筛选
4
- ---
5
-
6
- **Slug:** `board`
7
-
8
- ## 功能介绍
9
-
10
- 看板是任务的可视化管理界面,以 Kanban 列按状态分组展示项目下的任务卡片。
11
-
12
- 主要能力:
13
-
14
- - **5 列看板**:按 TODO、IN_PROGRESS、IN_REVIEW、DONE、CANCELLED 五种状态分列展示
15
- - **拖拽移动**:拖拽卡片跨列移动自动更新任务状态,同列内拖拽调整排序
16
- - **右键菜单**:右键点击任务卡片可以快速切换状态、启动执行、跳转到任务详情页
17
- - **标签筛选**:按标签过滤显示,只展示包含选中标签的任务
18
- - **优先级筛选**:按优先级过滤,快速定位高优任务
19
- - **任务卡片**:每张卡片显示标题、描述摘要、优先级徽章、标签列表
20
- - **置顶功能**:置顶的任务始终显示在所在列的顶部,不受排序影响
21
- - **归档视图**:已完成和已取消的任务可以在归档页面查看
22
-
23
- ## 详细说明
24
-
25
- ### 交互行为
26
-
27
- - 拖拽卡片跨列 → 调用 `updateTaskStatus` 更新状态
28
- - 拖拽卡片同列 → 更新 `order` 字段调整排序
29
- - 筛选 → 按标签、优先级组合过滤显示
30
-
31
- ### 状态管理
32
-
33
- 使用 Zustand store(`src/stores/board-store.ts`)管理列状态、筛选条件、拖拽状态。
34
-
35
- ## 文件清单
36
-
37
- ### 组件 (`src/components/board/`)
38
-
39
- | 组件 | 说明 |
40
- |------|------|
41
- | `kanban-board.tsx` | 看板主容器 |
42
- | `board-column.tsx` | 状态列 |
43
- | `task-card.tsx` | 任务卡片 |
44
- | `board-filters.tsx` | 筛选器(标签、优先级) |
45
- | `board-stats.tsx` | 统计面板 |
46
-
47
- ### 页面
48
-
49
- | 路由 | 说明 |
50
- |------|------|
51
- | `/workspaces/[workspaceId]` | 看板主页面 (`board-page-client.tsx`) |
52
- | `/workspaces/[workspaceId]/archive` | 归档任务 (`archive-page-client.tsx`) |
53
-
54
- ### 状态管理 (`src/stores/board-store.ts`)
55
-
56
- Zustand store,管理列状态、筛选条件、拖拽状态。
@@ -1,61 +0,0 @@
1
- ---
2
- title: Git 模块
3
- description: Git 操作集成,包括仓库克隆、Worktree 隔离、Diff 解析、Merge 操作
4
- ---
5
-
6
- **Slug:** `git`
7
-
8
- ## 功能介绍
9
-
10
- Git 集成提供 Worktree 隔离执行能力,让每个任务在独立分支中工作,不影响主分支。
11
-
12
- 主要能力:
13
-
14
- - **Worktree 隔离**:任务执行时自动创建 Git Worktree,在独立分支中工作。Claude CLI 的所有代码修改都在隔离的工作目录中进行,不影响项目主分支
15
- - **Diff 查看**:任务完成后可以查看工作分支与基础分支之间的代码差异,逐文件浏览变更内容
16
- - **一键合并**:确认 Diff 无误后,通过合并确认对话框将工作分支的修改合并回基础分支
17
- - **仓库克隆**:支持从 Git URL 克隆仓库到本地
18
- - **分支管理**:管理项目的分支信息
19
- - **自动检测**:导入本地项目时自动检测 Git remote 信息,填充 Git URL
20
-
21
- ## 详细说明
22
-
23
- ### Worktree 机制
24
-
25
- - 创建任务时通过 `useWorktree` / `baseBranch` 参数控制是否启用 Worktree 隔离
26
- - 每个 Task 执行可在独立 worktree 中进行
27
- - `TaskExecution.worktreePath` / `worktreeBranch` 记录隔离信息
28
- - 执行完成后,工作分支的修改可以通过 Merge 操作合并回基础分支
29
-
30
- ### Git 路径映射
31
-
32
- 在设置页面配置 host/owner 到本地路径的映射规则后,导入 Git 项目时可以自动解析 Git URL 对应的本地目录。
33
-
34
- ## 文件清单
35
-
36
- ### Server Actions (`src/actions/git-actions.ts`)
37
-
38
- Git 克隆、分支管理等操作。
39
-
40
- ### API Routes
41
-
42
- | 路由 | 说明 |
43
- |------|------|
44
- | `/api/git/route.ts` | Git 操作 API |
45
- | `/api/tasks/[taskId]/diff/route.ts` | 获取任务 diff |
46
- | `/api/tasks/[taskId]/merge/route.ts` | 执行 merge |
47
-
48
- ### 核心库
49
-
50
- | 文件 | 说明 |
51
- |------|------|
52
- | `lib/git-url.ts` | Git URL 解析和规范化 |
53
- | `lib/worktree.ts` | Git worktree 创建和管理 |
54
- | `lib/diff-parser.ts` | Git diff 解析器 |
55
-
56
- ### 组件
57
-
58
- | 组件 | 说明 |
59
- |------|------|
60
- | `task-diff-view.tsx` | Diff 可视化 |
61
- | `task-merge-confirm-dialog.tsx` | Merge 确认对话框 |
@@ -1,38 +0,0 @@
1
- ---
2
- title: I18n 模块
3
- description: 国际化系统,支持中文和英文双语
4
- ---
5
-
6
- **Slug:** `i18n`
7
-
8
- ## 功能介绍
9
-
10
- 国际化支持中文和英文双语,所有用户可见的文本使用 `t("key")` 函数获取翻译。
11
-
12
- 主要能力:
13
-
14
- - **双语支持**:完整的中文和英文界面,覆盖所有页面和组件
15
- - **即时切换**:在设置页面切换语言后即时生效,无需刷新页面
16
- - **翻译函数**:使用 `t("key")` 函数包裹所有用户可见文本,确保翻译覆盖
17
-
18
- ## 详细说明
19
-
20
- ### 翻译规范
21
-
22
- - 所有用户可见文本必须用 `t("key")` 包裹
23
- - 同时维护 zh / en 两套翻译文件
24
- - Key 命名格式:`模块.功能.描述`(如 `board.column.todo`、`settings.general.theme`)
25
-
26
- ### 语言切换
27
-
28
- 在设置页面的通用配置区域选择语言,切换后全局所有文本即时更新。
29
-
30
- ## 文件清单
31
-
32
- ### 核心库 (`src/lib/i18n/`)
33
-
34
- i18n 配置和资源管理。
35
-
36
- ### 使用
37
-
38
- - `src/lib/i18n.tsx` — i18n Provider 和 hook
@@ -1,68 +0,0 @@
1
- ---
2
- title: MCP 模块
3
- description: Model Context Protocol Server,向外部 AI Agent 暴露 Tower 的工具能力
4
- ---
5
-
6
- **Slug:** `mcp`
7
-
8
- ## 功能介绍
9
-
10
- Tower 暴露 MCP Server 供外部 AI Agent 调用,通过 stdio 传输协议运行。外部 Agent(如 Claude CLI、OpenClaw、Paperclip)可以通过 MCP 协议管理 Tower 的全部资源。
11
-
12
- 主要能力:
13
-
14
- - **工作区管理**:创建、更新、删除工作区
15
- - **项目管理**:创建、更新、删除项目,识别项目
16
- - **任务管理**:创建、更新、删除、移动任务
17
- - **标签管理**:创建、删除标签,设置任务标签
18
- - **终端交互**:查询终端输出、发送终端输入、获取执行状态
19
- - **搜索**:全局搜索任务、项目、仓库
20
- - **报告**:每日摘要、每日待办
21
- - **笔记和资产**:管理项目笔记和资产文件
22
-
23
- 共 24 个工具,分 7 大类。
24
-
25
- ## 详细说明
26
-
27
- ### 启动方式
28
-
29
- ```json
30
- {
31
- "mcpServers": {
32
- "tower": {
33
- "command": "npx",
34
- "args": ["tsx", "<project-root>/src/mcp/index.ts"]
35
- }
36
- }
37
- }
38
- ```
39
-
40
- ### 内部 HTTP 桥接
41
-
42
- MCP stdio 进程无法访问内存中的 PTY 会话,通过内部 HTTP 路由桥接:
43
- - `GET /api/internal/terminal/[taskId]/buffer` — 获取终端输出
44
- - `POST /api/internal/terminal/[taskId]/input` — 发送终端输入
45
- - localhost 限定,仅允许本机访问
46
-
47
- ## 文件清单
48
-
49
- ### 核心 (`src/mcp/`)
50
-
51
- | 文件 | 说明 |
52
- |------|------|
53
- | `server.ts` | MCP Server 初始化和配置 |
54
- | `db.ts` | MCP 专用数据库连接 |
55
- | `index.ts` | 入口和导出 |
56
-
57
- ### 工具模块 (`src/mcp/tools/`)
58
-
59
- | 文件 | 工具数 | 说明 |
60
- |------|--------|------|
61
- | `workspace-tools.ts` | 4 | Workspace CRUD |
62
- | `project-tools.ts` | 5 | Project CRUD + identify |
63
- | `task-tools.ts` | 5 | Task CRUD + move |
64
- | `label-tools.ts` | 4 | Label CRUD + set_task_labels |
65
- | `terminal-tools.ts` | 3 | 终端输出/输入/状态 |
66
- | `search-tools.ts` | 1 | 全局搜索 |
67
- | `report-tools.ts` | 2 | daily_summary / daily_todo |
68
- | `note-asset-tools.ts` | — | 笔记和资产管理 |
@@ -1,54 +0,0 @@
1
- ---
2
- title: Missions 模块
3
- description: 多任务监控面板,跨工作区展示所有运行中的 Task 执行
4
- ---
5
-
6
- **Slug:** `missions`
7
-
8
- ## 功能介绍
9
-
10
- Mission Control 是多任务监控面板,跨工作区展示所有正在运行的任务执行,每个卡片嵌入实时终端,可以同时观察多个任务的执行状态。
11
-
12
- 主要能力:
13
-
14
- - **网格布局**:支持多种预设布局(1x1、2x1、3x2、2x2、4x2、3x3),布局选择持久化到 localStorage,下次打开自动恢复
15
- - **实时终端**:每个任务卡片嵌入 xterm.js 终端,实时显示 Claude CLI 的输出
16
- - **工作区筛选**:通过下拉框按工作区过滤,只显示特定工作区下的运行任务
17
- - **启动新任务**:通过 Task Picker 选择任务启动新的执行
18
- - **恢复历史会话**:选择之前的执行记录,通过 sessionId 恢复 Claude CLI 会话
19
- - **拖拽排序**:使用 dnd-kit 拖拽调整卡片顺序
20
- - **自动更新**:4 秒轮询刷新执行状态,任务完成后卡片自动移除
21
- - **停止执行**:手动停止正在运行的任务,卡片随即移除
22
-
23
- ## 详细说明
24
-
25
- ### 卡片生命周期
26
-
27
- - 启动执行或恢复会话后,卡片出现在面板中
28
- - 执行过程中实时显示终端输出
29
- - 手动停止或自然完成后,卡片自动从面板移除
30
- - 通过 4 秒轮询检测状态变化
31
-
32
- ## 文件清单
33
-
34
- ### 页面
35
-
36
- | 路由 | 文件 | 说明 |
37
- |------|------|------|
38
- | `/missions` | `missions-client.tsx` | Missions 主页面 |
39
-
40
- ### 组件 (`src/components/missions/`)
41
-
42
- | 组件 | 说明 |
43
- |------|------|
44
- | `mission-card.tsx` | 任务执行卡片(含终端) |
45
- | `grid-preset-picker.tsx` | 网格布局选择器 |
46
- | `task-picker-dialog.tsx` | 任务选择对话框 |
47
-
48
- ### Server Actions
49
-
50
- - `getActiveExecutionsAcrossWorkspaces()` — 获取所有 RUNNING 执行
51
-
52
- ### 状态管理 (`src/stores/task-execution-store.ts`)
53
-
54
- Zustand store,管理活跃执行状态。
@@ -1,65 +0,0 @@
1
- ---
2
- title: Project 模块
3
- description: 项目管理,支持普通项目和 Git 项目两种类型
4
- ---
5
-
6
- **Slug:** `project`
7
-
8
- ## 功能介绍
9
-
10
- 项目属于工作区,是任务的组织单元。可以关联 Git 仓库或本地目录,创建时根据是否提供 Git URL 自动判定项目类型(普通项目 / Git 项目)。
11
-
12
- 主要操作:
13
-
14
- - **创建项目**:在工作区下新建项目,填写名称、别名、描述等基本信息
15
- - **关联 Git 仓库**:提供 Git URL 后自动标记为 GIT 类型项目,支持后续的 Worktree 隔离执行和 Diff/Merge 功能
16
- - **关联本地目录**:指定 localPath,用于代码搜索、预览、项目分析等功能
17
- - **生成描述**:点击「生成描述」按钮,AI 自动分析项目的 localPath 目录结构,生成结构化的项目描述
18
- - **导入本地项目**:通过导入对话框选择本地目录,自动检测 Git remote 信息并填充
19
- - **删除项目**:级联删除项目下的所有任务
20
-
21
- ## 详细说明
22
-
23
- ### 数据模型
24
-
25
- ```
26
- Project (id, name, alias?, description?, type, gitUrl?, localPath?)
27
- ├── Task[]
28
- └── Repository[]
29
- ```
30
-
31
- - `type`: `NORMAL` | `GIT`,由 `gitUrl` 是否存在自动推导,不可手动设置
32
- - `workspaceId`: FK → Workspace,级联删除
33
-
34
- ### 项目类型
35
-
36
- 项目类型由 `gitUrl` 字段自动推导:
37
- - 提供了 `gitUrl` → `GIT` 类型,支持 Worktree 隔离、Diff 查看、Merge 操作
38
- - 未提供 `gitUrl` → `NORMAL` 类型,仅支持基础任务管理
39
-
40
- ## 文件清单
41
-
42
- ### Server Actions (`src/actions/`)
43
-
44
- | 文件 | 函数 | 说明 |
45
- |------|------|------|
46
- | `workspace-actions.ts` | `createProject`, `updateProject`, `deleteProject` | 项目 CRUD |
47
- | `workspace-actions.ts` | `getProjectByLocalPath(path)` | 按本地路径查找 |
48
- | `workspace-actions.ts` | `getRecentLocalProjects(limit?)` | 最近本地项目 |
49
- | `project-actions.ts` | 项目分析相关 | 项目描述生成等 |
50
-
51
- ### 组件 (`src/components/project/`)
52
-
53
- | 组件 | 说明 |
54
- |------|------|
55
- | `create-project-dialog.tsx` | 创建项目对话框 |
56
- | `import-project-dialog.tsx` | 导入项目对话框 |
57
-
58
- ### MCP Tools (`src/mcp/tools/project-tools.ts`)
59
-
60
- - `list_projects` / `create_project` / `update_project` / `delete_project` / `identify_project`
61
-
62
- ## 约束
63
-
64
- - `type` 字段只读,由 `gitUrl` 存在性决定
65
- - 删除项目级联删除所有 Task