automagik-forge 0.1.13 → 0.1.14

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 (301) hide show
  1. package/README.md +143 -447
  2. package/dist/linux-x64/automagik-forge-mcp.zip +0 -0
  3. package/{npx-cli/automagik-forge-0.0.55.tgz → dist/linux-x64/automagik-forge.zip} +0 -0
  4. package/package.json +13 -23
  5. package/.cargo/config.toml +0 -13
  6. package/.claude/commands/commit.md +0 -376
  7. package/.claude/commands/prompt.md +0 -871
  8. package/.env.example +0 -20
  9. package/.github/actions/setup-node/action.yml +0 -29
  10. package/.github/images/automagik-logo.png +0 -0
  11. package/.github/workflows/pre-release.yml +0 -470
  12. package/.github/workflows/publish.yml +0 -145
  13. package/.github/workflows/test.yml +0 -63
  14. package/.mcp.json +0 -57
  15. package/AGENT.md +0 -40
  16. package/CLAUDE.md +0 -40
  17. package/CODE-OF-CONDUCT.md +0 -89
  18. package/Cargo.toml +0 -19
  19. package/Dockerfile +0 -43
  20. package/LICENSE +0 -201
  21. package/Makefile +0 -97
  22. package/backend/.sqlx/query-01b7e2bac1261d8be3d03c03df3e5220590da6c31c77f161074fc62752d63881.json +0 -12
  23. package/backend/.sqlx/query-03f2b02ba6dc5ea2b3cf6b1004caea0ad6bcc10ebd63f441d321a389f026e263.json +0 -12
  24. package/backend/.sqlx/query-0923b77d137a29fc54d399a873ff15fc4af894490bc65a4d344a7575cb0d8643.json +0 -12
  25. package/backend/.sqlx/query-0f808bcdb63c5f180836e448dd64c435c51758b2fc54a52ce9e67495b1ab200e.json +0 -68
  26. package/backend/.sqlx/query-1268afe9ca849daa6722e3df7ca8e9e61f0d37052e782bb5452ab8e1018d9b63.json +0 -12
  27. package/backend/.sqlx/query-1b082630a9622f8667ee7a9aba2c2d3176019a68c6bb83d33008594821415a57.json +0 -12
  28. package/backend/.sqlx/query-1c7b06ba1e112abf6b945a2ff08a0b40ec23f3738c2e7399f067b558cf8d490e.json +0 -12
  29. package/backend/.sqlx/query-1f619f01f46859a64ded531dd0ef61abacfe62e758abe7030a6aa745140b95ca.json +0 -104
  30. package/backend/.sqlx/query-1fca1ce14b4b20205364cd1f1f45ebe1d2e30cd745e59e189d56487b5639dfbb.json +0 -12
  31. package/backend/.sqlx/query-212828320e8d871ab9d83705a040b23bcf0393dc7252177fc539a74657f578ef.json +0 -32
  32. package/backend/.sqlx/query-290ce5c152be8d36e58ff42570f9157beb07ab9e77a03ec6fc30b4f56f9b8f6b.json +0 -56
  33. package/backend/.sqlx/query-2b471d2c2e8ffbe0cd42d2a91b814c0d79f9d09200f147e3cea33ba4ce673c8a.json +0 -68
  34. package/backend/.sqlx/query-354a48c705bb9bb2048c1b7f10fcb714e23f9db82b7a4ea6932486197b2ede6a.json +0 -92
  35. package/backend/.sqlx/query-36c9e3dd10648e94b949db5c91a774ecb1e10a899ef95da74066eccedca4d8b2.json +0 -12
  36. package/backend/.sqlx/query-36e4ba7bbd81b402d5a20b6005755eafbb174c8dda442081823406ac32809a94.json +0 -56
  37. package/backend/.sqlx/query-3a5b3c98a55ca183ab20c74708e3d7e579dda37972c059e7515c4ceee4bd8dd3.json +0 -62
  38. package/backend/.sqlx/query-3d0a1cabf2a52e9d90cdfd29c509ca89aeb448d0c1d2446c65cd43db40735e86.json +0 -62
  39. package/backend/.sqlx/query-3d6bd16fbce59efe30b7f67ea342e0e4ea6d1432389c02468ad79f1f742d4031.json +0 -56
  40. package/backend/.sqlx/query-4049ca413b285a05aca6b25385e9c8185575f01e9069e4e8581aa45d713f612f.json +0 -32
  41. package/backend/.sqlx/query-412bacd3477d86369082e90f52240407abce436cb81292d42b2dbe1e5c18eea1.json +0 -104
  42. package/backend/.sqlx/query-417a8b1ff4e51de82aea0159a3b97932224dc325b23476cb84153d690227fd8b.json +0 -62
  43. package/backend/.sqlx/query-461cc1b0bb6fd909afc9dd2246e8526b3771cfbb0b22ae4b5d17b51af587b9e2.json +0 -56
  44. package/backend/.sqlx/query-58408c7a8cdeeda0bef359f1f9bd91299a339dc2b191462fc58c9736a56d5227.json +0 -92
  45. package/backend/.sqlx/query-5a886026d75d515c01f347cc203c8d99dd04c61dc468e2e4c5aa548436d13834.json +0 -62
  46. package/backend/.sqlx/query-5b902137b11022d2e1a5c4f6a9c83fec1a856c6a710aff831abd2382ede76b43.json +0 -12
  47. package/backend/.sqlx/query-5ed1238e52e59bb5f76c0f153fd99a14093f7ce2585bf9843585608f17ec575b.json +0 -104
  48. package/backend/.sqlx/query-6e8b860b14decfc2227dc57213f38442943d3fbef5c8418fd6b634c6e0f5e2ea.json +0 -104
  49. package/backend/.sqlx/query-6ec414276994c4ccb2433eaa5b1b342168557d17ddf5a52dac84cb1b59b9de8f.json +0 -68
  50. package/backend/.sqlx/query-6ecfa16d0cf825aacf233544b5baf151e9adfdca26c226ad71020d291fd802d5.json +0 -62
  51. package/backend/.sqlx/query-72509d252c39fce77520aa816cb2acbc1fb35dc2605e7be893610599b2427f2e.json +0 -62
  52. package/backend/.sqlx/query-75239b2da188f749707d77f3c1544332ca70db3d6d6743b2601dc0d167536437.json +0 -62
  53. package/backend/.sqlx/query-83d10e29f8478aff33434f9ac67068e013b888b953a2657e2bb72a6f619d04f2.json +0 -50
  54. package/backend/.sqlx/query-8610803360ea18b9b9d078a6981ea56abfbfe84e6354fc1d5ae4c622e01410ed.json +0 -68
  55. package/backend/.sqlx/query-86d03eb70eef39c59296416867f2ee66c9f7cd8b7f961fbda2f89fc0a1c442c2.json +0 -12
  56. package/backend/.sqlx/query-87d0feb5a6b442bad9c60068ea7569599cc6fc91a0e2692ecb42e93b03201b9d.json +0 -68
  57. package/backend/.sqlx/query-8a67b3b3337248f06a57bdf8a908f7ef23177431eaed82dc08c94c3e5944340e.json +0 -12
  58. package/backend/.sqlx/query-8f01ebd64bdcde6a090479f14810d73ba23020e76fd70854ac57f2da251702c3.json +0 -12
  59. package/backend/.sqlx/query-90fd607fcb2dca72239ff25e618e21e174b195991eaa33722cbf5f76da84cfab.json +0 -62
  60. package/backend/.sqlx/query-92e8bdbcd80c5ff3db7a35cf79492048803ef305cbdef0d0a1fe5dc881ca8c71.json +0 -104
  61. package/backend/.sqlx/query-93a1605f90e9672dad29b472b6ad85fa9a55ea3ffa5abcb8724b09d61be254ca.json +0 -20
  62. package/backend/.sqlx/query-9472c8fb477958167f5fae40b85ac44252468c5226b2cdd7770f027332eed6d7.json +0 -104
  63. package/backend/.sqlx/query-96036c4f9e0f48bdc5a4a4588f0c5f288ac7aaa5425cac40fc33f337e1a351f2.json +0 -56
  64. package/backend/.sqlx/query-9edb2c01e91fd0f0fe7b56e988c7ae0393150f50be3f419a981e035c0121dfc7.json +0 -104
  65. package/backend/.sqlx/query-a157cf00616f703bfba21927f1eb1c9eec2a81c02da15f66efdba0b6c375de1b.json +0 -26
  66. package/backend/.sqlx/query-a31fff84f3b8e532fd1160447d89d700f06ae08821fee00c9a5b60492b05259c.json +0 -62
  67. package/backend/.sqlx/query-a5ba908419fb3e456bdd2daca41ba06cc3212ffffb8520fc7dbbcc8b60ada314.json +0 -12
  68. package/backend/.sqlx/query-a6d2961718dbc3b1a925e549f49a159c561bef58c105529275f274b27e2eba5b.json +0 -104
  69. package/backend/.sqlx/query-a9e93d5b09b29faf66e387e4d7596a792d81e75c4d3726e83c2963e8d7c9b56f.json +0 -104
  70. package/backend/.sqlx/query-ac5247c8d7fb86e4650c4b0eb9420031614c831b7b085083bac20c1af314c538.json +0 -12
  71. package/backend/.sqlx/query-afef9467be74c411c4cb119a8b2b1aea53049877dfc30cc60b486134ba4b4c9f.json +0 -68
  72. package/backend/.sqlx/query-b2b2c6b4d0b1a347b5c4cb63c3a46a265d4db53be9554989a814b069d0af82f2.json +0 -62
  73. package/backend/.sqlx/query-c50d2ff0b12e5bcc81e371089ee2d007e233e7db93aefba4fef08e7aa68f5ab7.json +0 -20
  74. package/backend/.sqlx/query-c614e6056b244ca07f1b9d44e7edc9d5819225c6f8d9e077070c6e518a17f50b.json +0 -12
  75. package/backend/.sqlx/query-c67259be8bf4ee0cfd32167b2aa3b7fe9192809181a8171bf1c2d6df731967ae.json +0 -12
  76. package/backend/.sqlx/query-d2d0a1b985ebbca6a2b3e882a221a219f3199890fa640afc946ef1a792d6d8de.json +0 -12
  77. package/backend/.sqlx/query-d30aa5786757f32bf2b9c5fe51a45e506c71c28c5994e430d9b0546adb15ffa2.json +0 -20
  78. package/backend/.sqlx/query-d3b9ea1de1576af71b312924ce7f4ea8ae5dbe2ac138ea3b4470f2d5cd734846.json +0 -12
  79. package/backend/.sqlx/query-ed8456646fa69ddd412441955f06ff22bfb790f29466450735e0b8bb1bc4ec94.json +0 -12
  80. package/backend/Cargo.toml +0 -71
  81. package/backend/build.rs +0 -32
  82. package/backend/migrations/20250617183714_init.sql +0 -44
  83. package/backend/migrations/20250620212427_execution_processes.sql +0 -25
  84. package/backend/migrations/20250620214100_remove_stdout_stderr_from_task_attempts.sql +0 -28
  85. package/backend/migrations/20250621120000_relate_activities_to_execution_processes.sql +0 -23
  86. package/backend/migrations/20250623120000_executor_sessions.sql +0 -17
  87. package/backend/migrations/20250623130000_add_executor_type_to_execution_processes.sql +0 -4
  88. package/backend/migrations/20250625000000_add_dev_script_to_projects.sql +0 -4
  89. package/backend/migrations/20250701000000_add_branch_to_task_attempts.sql +0 -2
  90. package/backend/migrations/20250701000001_add_pr_tracking_to_task_attempts.sql +0 -5
  91. package/backend/migrations/20250701120000_add_assistant_message_to_executor_sessions.sql +0 -2
  92. package/backend/migrations/20250708000000_add_base_branch_to_task_attempts.sql +0 -2
  93. package/backend/migrations/20250709000000_add_worktree_deleted_flag.sql +0 -2
  94. package/backend/migrations/20250710000000_add_setup_completion.sql +0 -3
  95. package/backend/migrations/20250715154859_add_task_templates.sql +0 -25
  96. package/backend/migrations/20250716143725_add_default_templates.sql +0 -174
  97. package/backend/migrations/20250716161432_update_executor_names_to_kebab_case.sql +0 -20
  98. package/backend/migrations/20250716170000_add_parent_task_to_tasks.sql +0 -7
  99. package/backend/migrations/20250717000000_drop_task_attempt_activities.sql +0 -9
  100. package/backend/migrations/20250719000000_add_cleanup_script_to_projects.sql +0 -2
  101. package/backend/migrations/20250720000000_add_cleanupscript_to_process_type_constraint.sql +0 -25
  102. package/backend/migrations/20250723000000_add_wish_to_tasks.sql +0 -7
  103. package/backend/migrations/20250724000000_remove_unique_wish_constraint.sql +0 -5
  104. package/backend/scripts/toast-notification.ps1 +0 -23
  105. package/backend/sounds/abstract-sound1.wav +0 -0
  106. package/backend/sounds/abstract-sound2.wav +0 -0
  107. package/backend/sounds/abstract-sound3.wav +0 -0
  108. package/backend/sounds/abstract-sound4.wav +0 -0
  109. package/backend/sounds/cow-mooing.wav +0 -0
  110. package/backend/sounds/phone-vibration.wav +0 -0
  111. package/backend/sounds/rooster.wav +0 -0
  112. package/backend/src/app_state.rs +0 -218
  113. package/backend/src/bin/generate_types.rs +0 -189
  114. package/backend/src/bin/mcp_task_server.rs +0 -191
  115. package/backend/src/execution_monitor.rs +0 -1193
  116. package/backend/src/executor.rs +0 -1053
  117. package/backend/src/executors/amp.rs +0 -697
  118. package/backend/src/executors/ccr.rs +0 -91
  119. package/backend/src/executors/charm_opencode.rs +0 -113
  120. package/backend/src/executors/claude.rs +0 -887
  121. package/backend/src/executors/cleanup_script.rs +0 -124
  122. package/backend/src/executors/dev_server.rs +0 -53
  123. package/backend/src/executors/echo.rs +0 -79
  124. package/backend/src/executors/gemini/config.rs +0 -67
  125. package/backend/src/executors/gemini/streaming.rs +0 -363
  126. package/backend/src/executors/gemini.rs +0 -765
  127. package/backend/src/executors/mod.rs +0 -23
  128. package/backend/src/executors/opencode_ai.rs +0 -113
  129. package/backend/src/executors/setup_script.rs +0 -130
  130. package/backend/src/executors/sst_opencode/filter.rs +0 -184
  131. package/backend/src/executors/sst_opencode/tools.rs +0 -139
  132. package/backend/src/executors/sst_opencode.rs +0 -756
  133. package/backend/src/lib.rs +0 -45
  134. package/backend/src/main.rs +0 -324
  135. package/backend/src/mcp/mod.rs +0 -1
  136. package/backend/src/mcp/task_server.rs +0 -850
  137. package/backend/src/middleware/mod.rs +0 -3
  138. package/backend/src/middleware/model_loaders.rs +0 -242
  139. package/backend/src/models/api_response.rs +0 -36
  140. package/backend/src/models/config.rs +0 -375
  141. package/backend/src/models/execution_process.rs +0 -430
  142. package/backend/src/models/executor_session.rs +0 -225
  143. package/backend/src/models/mod.rs +0 -12
  144. package/backend/src/models/project.rs +0 -356
  145. package/backend/src/models/task.rs +0 -345
  146. package/backend/src/models/task_attempt.rs +0 -1214
  147. package/backend/src/models/task_template.rs +0 -146
  148. package/backend/src/openapi.rs +0 -93
  149. package/backend/src/routes/auth.rs +0 -297
  150. package/backend/src/routes/config.rs +0 -385
  151. package/backend/src/routes/filesystem.rs +0 -228
  152. package/backend/src/routes/health.rs +0 -16
  153. package/backend/src/routes/mod.rs +0 -9
  154. package/backend/src/routes/projects.rs +0 -562
  155. package/backend/src/routes/stream.rs +0 -244
  156. package/backend/src/routes/task_attempts.rs +0 -1172
  157. package/backend/src/routes/task_templates.rs +0 -229
  158. package/backend/src/routes/tasks.rs +0 -353
  159. package/backend/src/services/analytics.rs +0 -216
  160. package/backend/src/services/git_service.rs +0 -1321
  161. package/backend/src/services/github_service.rs +0 -307
  162. package/backend/src/services/mod.rs +0 -13
  163. package/backend/src/services/notification_service.rs +0 -263
  164. package/backend/src/services/pr_monitor.rs +0 -214
  165. package/backend/src/services/process_service.rs +0 -940
  166. package/backend/src/utils/path.rs +0 -96
  167. package/backend/src/utils/shell.rs +0 -19
  168. package/backend/src/utils/text.rs +0 -24
  169. package/backend/src/utils/worktree_manager.rs +0 -578
  170. package/backend/src/utils.rs +0 -125
  171. package/backend/test.db +0 -0
  172. package/build-npm-package.sh +0 -61
  173. package/dev_assets_seed/config.json +0 -19
  174. package/frontend/.eslintrc.json +0 -25
  175. package/frontend/.prettierrc.json +0 -8
  176. package/frontend/components.json +0 -17
  177. package/frontend/index.html +0 -19
  178. package/frontend/package-lock.json +0 -7321
  179. package/frontend/package.json +0 -61
  180. package/frontend/postcss.config.js +0 -6
  181. package/frontend/public/android-chrome-192x192.png +0 -0
  182. package/frontend/public/android-chrome-512x512.png +0 -0
  183. package/frontend/public/apple-touch-icon.png +0 -0
  184. package/frontend/public/automagik-forge-logo-dark.svg +0 -3
  185. package/frontend/public/automagik-forge-logo.svg +0 -3
  186. package/frontend/public/automagik-forge-screenshot-overview.png +0 -0
  187. package/frontend/public/favicon-16x16.png +0 -0
  188. package/frontend/public/favicon-32x32.png +0 -0
  189. package/frontend/public/favicon.ico +0 -0
  190. package/frontend/public/site.webmanifest +0 -1
  191. package/frontend/public/viba-kanban-favicon.png +0 -0
  192. package/frontend/src/App.tsx +0 -157
  193. package/frontend/src/components/DisclaimerDialog.tsx +0 -106
  194. package/frontend/src/components/GitHubLoginDialog.tsx +0 -314
  195. package/frontend/src/components/OnboardingDialog.tsx +0 -185
  196. package/frontend/src/components/PrivacyOptInDialog.tsx +0 -130
  197. package/frontend/src/components/ProvidePatDialog.tsx +0 -98
  198. package/frontend/src/components/TaskTemplateManager.tsx +0 -336
  199. package/frontend/src/components/config-provider.tsx +0 -119
  200. package/frontend/src/components/context/TaskDetailsContextProvider.tsx +0 -470
  201. package/frontend/src/components/context/taskDetailsContext.ts +0 -125
  202. package/frontend/src/components/keyboard-shortcuts-demo.tsx +0 -35
  203. package/frontend/src/components/layout/navbar.tsx +0 -86
  204. package/frontend/src/components/logo.tsx +0 -44
  205. package/frontend/src/components/projects/ProjectCard.tsx +0 -155
  206. package/frontend/src/components/projects/project-detail.tsx +0 -251
  207. package/frontend/src/components/projects/project-form-fields.tsx +0 -238
  208. package/frontend/src/components/projects/project-form.tsx +0 -301
  209. package/frontend/src/components/projects/project-list.tsx +0 -200
  210. package/frontend/src/components/projects/projects-page.tsx +0 -20
  211. package/frontend/src/components/tasks/BranchSelector.tsx +0 -169
  212. package/frontend/src/components/tasks/DeleteFileConfirmationDialog.tsx +0 -94
  213. package/frontend/src/components/tasks/EditorSelectionDialog.tsx +0 -119
  214. package/frontend/src/components/tasks/TaskCard.tsx +0 -154
  215. package/frontend/src/components/tasks/TaskDetails/CollapsibleToolbar.tsx +0 -33
  216. package/frontend/src/components/tasks/TaskDetails/DiffCard.tsx +0 -109
  217. package/frontend/src/components/tasks/TaskDetails/DiffChunkSection.tsx +0 -135
  218. package/frontend/src/components/tasks/TaskDetails/DiffFile.tsx +0 -296
  219. package/frontend/src/components/tasks/TaskDetails/DiffTab.tsx +0 -32
  220. package/frontend/src/components/tasks/TaskDetails/DisplayConversationEntry.tsx +0 -392
  221. package/frontend/src/components/tasks/TaskDetails/LogsTab/Conversation.tsx +0 -256
  222. package/frontend/src/components/tasks/TaskDetails/LogsTab/ConversationEntry.tsx +0 -56
  223. package/frontend/src/components/tasks/TaskDetails/LogsTab/NormalizedConversationViewer.tsx +0 -92
  224. package/frontend/src/components/tasks/TaskDetails/LogsTab/Prompt.tsx +0 -22
  225. package/frontend/src/components/tasks/TaskDetails/LogsTab/SetupScriptRunning.tsx +0 -49
  226. package/frontend/src/components/tasks/TaskDetails/LogsTab.tsx +0 -186
  227. package/frontend/src/components/tasks/TaskDetails/ProcessesTab.tsx +0 -288
  228. package/frontend/src/components/tasks/TaskDetails/RelatedTasksTab.tsx +0 -216
  229. package/frontend/src/components/tasks/TaskDetails/TabNavigation.tsx +0 -93
  230. package/frontend/src/components/tasks/TaskDetailsHeader.tsx +0 -169
  231. package/frontend/src/components/tasks/TaskDetailsPanel.tsx +0 -126
  232. package/frontend/src/components/tasks/TaskDetailsToolbar.tsx +0 -302
  233. package/frontend/src/components/tasks/TaskFollowUpSection.tsx +0 -130
  234. package/frontend/src/components/tasks/TaskFormDialog.tsx +0 -400
  235. package/frontend/src/components/tasks/TaskKanbanBoard.tsx +0 -180
  236. package/frontend/src/components/tasks/Toolbar/CreateAttempt.tsx +0 -259
  237. package/frontend/src/components/tasks/Toolbar/CreatePRDialog.tsx +0 -243
  238. package/frontend/src/components/tasks/Toolbar/CurrentAttempt.tsx +0 -899
  239. package/frontend/src/components/tasks/index.ts +0 -2
  240. package/frontend/src/components/theme-provider.tsx +0 -82
  241. package/frontend/src/components/theme-toggle.tsx +0 -36
  242. package/frontend/src/components/ui/alert.tsx +0 -59
  243. package/frontend/src/components/ui/auto-expanding-textarea.tsx +0 -70
  244. package/frontend/src/components/ui/badge.tsx +0 -36
  245. package/frontend/src/components/ui/button.tsx +0 -56
  246. package/frontend/src/components/ui/card.tsx +0 -86
  247. package/frontend/src/components/ui/checkbox.tsx +0 -44
  248. package/frontend/src/components/ui/chip.tsx +0 -25
  249. package/frontend/src/components/ui/dialog.tsx +0 -124
  250. package/frontend/src/components/ui/dropdown-menu.tsx +0 -198
  251. package/frontend/src/components/ui/file-search-textarea.tsx +0 -292
  252. package/frontend/src/components/ui/folder-picker.tsx +0 -279
  253. package/frontend/src/components/ui/input.tsx +0 -25
  254. package/frontend/src/components/ui/label.tsx +0 -24
  255. package/frontend/src/components/ui/loader.tsx +0 -26
  256. package/frontend/src/components/ui/markdown-renderer.tsx +0 -75
  257. package/frontend/src/components/ui/select.tsx +0 -160
  258. package/frontend/src/components/ui/separator.tsx +0 -31
  259. package/frontend/src/components/ui/shadcn-io/kanban/index.tsx +0 -185
  260. package/frontend/src/components/ui/table.tsx +0 -117
  261. package/frontend/src/components/ui/tabs.tsx +0 -53
  262. package/frontend/src/components/ui/textarea.tsx +0 -22
  263. package/frontend/src/components/ui/tooltip.tsx +0 -28
  264. package/frontend/src/hooks/useNormalizedConversation.ts +0 -440
  265. package/frontend/src/index.css +0 -225
  266. package/frontend/src/lib/api.ts +0 -630
  267. package/frontend/src/lib/keyboard-shortcuts.ts +0 -266
  268. package/frontend/src/lib/responsive-config.ts +0 -70
  269. package/frontend/src/lib/types.ts +0 -39
  270. package/frontend/src/lib/utils.ts +0 -10
  271. package/frontend/src/main.tsx +0 -50
  272. package/frontend/src/pages/McpServers.tsx +0 -418
  273. package/frontend/src/pages/Settings.tsx +0 -610
  274. package/frontend/src/pages/project-tasks.tsx +0 -575
  275. package/frontend/src/pages/projects.tsx +0 -18
  276. package/frontend/src/vite-env.d.ts +0 -1
  277. package/frontend/tailwind.config.js +0 -125
  278. package/frontend/tsconfig.json +0 -26
  279. package/frontend/tsconfig.node.json +0 -10
  280. package/frontend/vite.config.ts +0 -33
  281. package/npx-cli/README.md +0 -159
  282. package/npx-cli/automagik-forge-0.1.0.tgz +0 -0
  283. package/npx-cli/automagik-forge-0.1.10.tgz +0 -0
  284. package/npx-cli/package.json +0 -17
  285. package/npx-cli/vibe-kanban-0.0.55.tgz +0 -0
  286. package/pnpm-workspace.yaml +0 -2
  287. package/rust-toolchain.toml +0 -11
  288. package/rustfmt.toml +0 -3
  289. package/scripts/load-env.js +0 -43
  290. package/scripts/mcp_test.js +0 -374
  291. package/scripts/prepare-db.js +0 -45
  292. package/scripts/setup-dev-environment.js +0 -274
  293. package/scripts/start-mcp-sse.js +0 -70
  294. package/scripts/test-debug.js +0 -32
  295. package/scripts/test-mcp-sse.js +0 -138
  296. package/scripts/test-simple.js +0 -44
  297. package/scripts/test-wish-final.js +0 -179
  298. package/scripts/test-wish-system.js +0 -221
  299. package/shared/types.ts +0 -182
  300. package/test-npm-package.sh +0 -42
  301. /package/{npx-cli/bin → bin}/cli.js +0 -0
@@ -1,238 +0,0 @@
1
- import { Label } from '@/components/ui/label';
2
- import { Input } from '@/components/ui/input';
3
- import { Button } from '@/components/ui/button';
4
- import { Alert, AlertDescription } from '@/components/ui/alert';
5
- import { AlertCircle, Folder } from 'lucide-react';
6
-
7
- interface ProjectFormFieldsProps {
8
- isEditing: boolean;
9
- repoMode: 'existing' | 'new';
10
- setRepoMode: (mode: 'existing' | 'new') => void;
11
- gitRepoPath: string;
12
- handleGitRepoPathChange: (path: string) => void;
13
- setShowFolderPicker: (show: boolean) => void;
14
- parentPath: string;
15
- setParentPath: (path: string) => void;
16
- folderName: string;
17
- setFolderName: (name: string) => void;
18
- setName: (name: string) => void;
19
- name: string;
20
- setupScript: string;
21
- setSetupScript: (script: string) => void;
22
- devScript: string;
23
- setDevScript: (script: string) => void;
24
- cleanupScript: string;
25
- setCleanupScript: (script: string) => void;
26
- error: string;
27
- }
28
-
29
- export function ProjectFormFields({
30
- isEditing,
31
- repoMode,
32
- setRepoMode,
33
- gitRepoPath,
34
- handleGitRepoPathChange,
35
- setShowFolderPicker,
36
- parentPath,
37
- setParentPath,
38
- folderName,
39
- setFolderName,
40
- setName,
41
- name,
42
- setupScript,
43
- setSetupScript,
44
- devScript,
45
- setDevScript,
46
- cleanupScript,
47
- setCleanupScript,
48
- error,
49
- }: ProjectFormFieldsProps) {
50
- return (
51
- <>
52
- {!isEditing && (
53
- <div className="space-y-3">
54
- <Label>Repository Type</Label>
55
- <div className="flex space-x-4">
56
- <label className="flex items-center space-x-2 cursor-pointer">
57
- <input
58
- type="radio"
59
- name="repoMode"
60
- value="existing"
61
- checked={repoMode === 'existing'}
62
- onChange={(e) =>
63
- setRepoMode(e.target.value as 'existing' | 'new')
64
- }
65
- className="text-primary"
66
- />
67
- <span className="text-sm">Use existing repository</span>
68
- </label>
69
- <label className="flex items-center space-x-2 cursor-pointer">
70
- <input
71
- type="radio"
72
- name="repoMode"
73
- value="new"
74
- checked={repoMode === 'new'}
75
- onChange={(e) =>
76
- setRepoMode(e.target.value as 'existing' | 'new')
77
- }
78
- className="text-primary"
79
- />
80
- <span className="text-sm">Create new repository</span>
81
- </label>
82
- </div>
83
- </div>
84
- )}
85
-
86
- {repoMode === 'existing' || isEditing ? (
87
- <div className="space-y-2">
88
- <Label htmlFor="git-repo-path">Git Repository Path</Label>
89
- <div className="flex space-x-2">
90
- <Input
91
- id="git-repo-path"
92
- type="text"
93
- value={gitRepoPath}
94
- onChange={(e) => handleGitRepoPathChange(e.target.value)}
95
- placeholder="/path/to/your/existing/repo"
96
- required
97
- className="flex-1"
98
- />
99
- <Button
100
- type="button"
101
- variant="outline"
102
- onClick={() => setShowFolderPicker(true)}
103
- >
104
- <Folder className="h-4 w-4" />
105
- </Button>
106
- </div>
107
- {!isEditing && (
108
- <p className="text-sm text-muted-foreground">
109
- Select a folder that already contains a git repository
110
- </p>
111
- )}
112
- </div>
113
- ) : (
114
- <div className="space-y-4">
115
- <div className="space-y-2">
116
- <Label htmlFor="parent-path">Parent Directory</Label>
117
- <div className="flex space-x-2">
118
- <Input
119
- id="parent-path"
120
- type="text"
121
- value={parentPath}
122
- onChange={(e) => setParentPath(e.target.value)}
123
- placeholder="/path/to/parent/directory"
124
- required
125
- className="flex-1"
126
- />
127
- <Button
128
- type="button"
129
- variant="outline"
130
- onClick={() => setShowFolderPicker(true)}
131
- >
132
- <Folder className="h-4 w-4" />
133
- </Button>
134
- </div>
135
- <p className="text-sm text-muted-foreground">
136
- Choose where to create the new repository
137
- </p>
138
- </div>
139
-
140
- <div className="space-y-2">
141
- <Label htmlFor="folder-name">Repository Folder Name</Label>
142
- <Input
143
- id="folder-name"
144
- type="text"
145
- value={folderName}
146
- onChange={(e) => {
147
- setFolderName(e.target.value);
148
- if (e.target.value) {
149
- setName(
150
- e.target.value
151
- .replace(/[-_]/g, ' ')
152
- .replace(/\b\w/g, (l) => l.toUpperCase())
153
- );
154
- }
155
- }}
156
- placeholder="my-awesome-project"
157
- required
158
- className="flex-1"
159
- />
160
- <p className="text-sm text-muted-foreground">
161
- The project name will be auto-populated from this folder name
162
- </p>
163
- </div>
164
- </div>
165
- )}
166
-
167
- <div className="space-y-2">
168
- <Label htmlFor="name">Project Name</Label>
169
- <Input
170
- id="name"
171
- type="text"
172
- value={name}
173
- onChange={(e) => setName(e.target.value)}
174
- placeholder="Enter project name"
175
- required
176
- />
177
- </div>
178
-
179
- <div className="space-y-2">
180
- <Label htmlFor="setup-script">Setup Script (Optional)</Label>
181
- <textarea
182
- id="setup-script"
183
- value={setupScript}
184
- onChange={(e) => setSetupScript(e.target.value)}
185
- placeholder="#!/bin/bash&#10;npm install&#10;# Add any setup commands here..."
186
- rows={4}
187
- className="w-full px-3 py-2 border border-input bg-background text-foreground rounded-md resize-vertical focus:outline-none focus:ring-2 focus:ring-ring"
188
- />
189
- <p className="text-sm text-muted-foreground">
190
- This script will run after creating the worktree and before the
191
- executor starts. Use it for setup tasks like installing dependencies
192
- or preparing the environment.
193
- </p>
194
- </div>
195
-
196
- <div className="space-y-2">
197
- <Label htmlFor="dev-script">Dev Server Script (Optional)</Label>
198
- <textarea
199
- id="dev-script"
200
- value={devScript}
201
- onChange={(e) => setDevScript(e.target.value)}
202
- placeholder="#!/bin/bash&#10;npm run dev&#10;# Add dev server start command here..."
203
- rows={4}
204
- className="w-full px-3 py-2 border border-input bg-background text-foreground rounded-md resize-vertical focus:outline-none focus:ring-2 focus:ring-ring"
205
- />
206
- <p className="text-sm text-muted-foreground">
207
- This script can be run from task attempts to start a development
208
- server. Use it to quickly start your project's dev server for testing
209
- changes.
210
- </p>
211
- </div>
212
-
213
- <div className="space-y-2">
214
- <Label htmlFor="cleanup-script">Cleanup Script (Optional)</Label>
215
- <textarea
216
- id="cleanup-script"
217
- value={cleanupScript}
218
- onChange={(e) => setCleanupScript(e.target.value)}
219
- placeholder="#!/bin/bash&#10;# Add cleanup commands here...&#10;# This runs after coding agent execution"
220
- rows={4}
221
- className="w-full px-3 py-2 border border-input bg-background text-foreground rounded-md resize-vertical focus:outline-none focus:ring-2 focus:ring-ring"
222
- />
223
- <p className="text-sm text-muted-foreground">
224
- This script will run after coding agent execution is complete. Use it
225
- for quality assurance tasks like running linters, formatters, tests,
226
- or other validation steps.
227
- </p>
228
- </div>
229
-
230
- {error && (
231
- <Alert variant="destructive">
232
- <AlertCircle className="h-4 w-4" />
233
- <AlertDescription>{error}</AlertDescription>
234
- </Alert>
235
- )}
236
- </>
237
- );
238
- }
@@ -1,301 +0,0 @@
1
- import { useEffect, useState } from 'react';
2
- import { Button } from '@/components/ui/button';
3
- import {
4
- Dialog,
5
- DialogContent,
6
- DialogDescription,
7
- DialogFooter,
8
- DialogHeader,
9
- DialogTitle,
10
- } from '@/components/ui/dialog';
11
- import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';
12
- import { FolderPicker } from '@/components/ui/folder-picker';
13
- import { TaskTemplateManager } from '@/components/TaskTemplateManager';
14
- import { ProjectFormFields } from './project-form-fields';
15
- import { CreateProject, Project, UpdateProject } from 'shared/types';
16
- import { projectsApi } from '@/lib/api';
17
-
18
- interface ProjectFormProps {
19
- open: boolean;
20
- onClose: () => void;
21
- onSuccess: () => void;
22
- project?: Project | null;
23
- }
24
-
25
- export function ProjectForm({
26
- open,
27
- onClose,
28
- onSuccess,
29
- project,
30
- }: ProjectFormProps) {
31
- const [name, setName] = useState(project?.name || '');
32
- const [gitRepoPath, setGitRepoPath] = useState(project?.git_repo_path || '');
33
- const [setupScript, setSetupScript] = useState(project?.setup_script ?? '');
34
- const [devScript, setDevScript] = useState(project?.dev_script ?? '');
35
- const [cleanupScript, setCleanupScript] = useState(
36
- project?.cleanup_script ?? ''
37
- );
38
- const [loading, setLoading] = useState(false);
39
- const [error, setError] = useState('');
40
- const [showFolderPicker, setShowFolderPicker] = useState(false);
41
- const [repoMode, setRepoMode] = useState<'existing' | 'new'>('existing');
42
- const [parentPath, setParentPath] = useState('');
43
- const [folderName, setFolderName] = useState('');
44
-
45
- const isEditing = !!project;
46
-
47
- // Update form fields when project prop changes
48
- useEffect(() => {
49
- if (project) {
50
- setName(project.name || '');
51
- setGitRepoPath(project.git_repo_path || '');
52
- setSetupScript(project.setup_script ?? '');
53
- setDevScript(project.dev_script ?? '');
54
- setCleanupScript(project.cleanup_script ?? '');
55
- } else {
56
- setName('');
57
- setGitRepoPath('');
58
- setSetupScript('');
59
- setDevScript('');
60
- setCleanupScript('');
61
- }
62
- }, [project]);
63
-
64
- // Auto-populate project name from directory name
65
- const handleGitRepoPathChange = (path: string) => {
66
- setGitRepoPath(path);
67
-
68
- // Only auto-populate name for new projects
69
- if (!isEditing && path) {
70
- // Extract the last part of the path (directory name)
71
- const dirName = path.split('/').filter(Boolean).pop() || '';
72
- if (dirName) {
73
- // Clean up the directory name for a better project name
74
- const cleanName = dirName
75
- .replace(/[-_]/g, ' ') // Replace hyphens and underscores with spaces
76
- .replace(/\b\w/g, (l) => l.toUpperCase()); // Capitalize first letter of each word
77
- setName(cleanName);
78
- }
79
- }
80
- };
81
-
82
- const handleSubmit = async (e: React.FormEvent) => {
83
- e.preventDefault();
84
- setError('');
85
- setLoading(true);
86
-
87
- try {
88
- let finalGitRepoPath = gitRepoPath;
89
-
90
- // For new repo mode, construct the full path
91
- if (!isEditing && repoMode === 'new') {
92
- finalGitRepoPath = `${parentPath}/${folderName}`.replace(/\/+/g, '/');
93
- }
94
-
95
- if (isEditing) {
96
- const updateData: UpdateProject = {
97
- name,
98
- git_repo_path: finalGitRepoPath,
99
- setup_script: setupScript.trim() || null,
100
- dev_script: devScript.trim() || null,
101
- cleanup_script: cleanupScript.trim() || null,
102
- };
103
-
104
- try {
105
- await projectsApi.update(project.id, updateData);
106
- } catch (error) {
107
- setError('Failed to update project');
108
- return;
109
- }
110
- } else {
111
- const createData: CreateProject = {
112
- name,
113
- git_repo_path: finalGitRepoPath,
114
- use_existing_repo: repoMode === 'existing',
115
- setup_script: setupScript.trim() || null,
116
- dev_script: devScript.trim() || null,
117
- cleanup_script: cleanupScript.trim() || null,
118
- };
119
-
120
- try {
121
- await projectsApi.create(createData);
122
- } catch (error) {
123
- setError('Failed to create project');
124
- return;
125
- }
126
- }
127
-
128
- onSuccess();
129
- setName('');
130
- setGitRepoPath('');
131
- setSetupScript('');
132
- setCleanupScript('');
133
- setParentPath('');
134
- setFolderName('');
135
- } catch (error) {
136
- setError(error instanceof Error ? error.message : 'An error occurred');
137
- } finally {
138
- setLoading(false);
139
- }
140
- };
141
-
142
- const handleClose = () => {
143
- if (project) {
144
- setName(project.name || '');
145
- setGitRepoPath(project.git_repo_path || '');
146
- setSetupScript(project.setup_script ?? '');
147
- setDevScript(project.dev_script ?? '');
148
- } else {
149
- setName('');
150
- setGitRepoPath('');
151
- setSetupScript('');
152
- setDevScript('');
153
- }
154
- setParentPath('');
155
- setFolderName('');
156
- setError('');
157
- onClose();
158
- };
159
-
160
- return (
161
- <Dialog open={open} onOpenChange={handleClose}>
162
- <DialogContent
163
- className={isEditing ? 'sm:max-w-[600px]' : 'sm:max-w-[425px]'}
164
- >
165
- <DialogHeader>
166
- <DialogTitle>
167
- {isEditing ? 'Edit Project' : 'Create New Project'}
168
- </DialogTitle>
169
- <DialogDescription>
170
- {isEditing
171
- ? "Make changes to your project here. Click save when you're done."
172
- : 'Choose whether to use an existing git repository or create a new one.'}
173
- </DialogDescription>
174
- </DialogHeader>
175
-
176
- {isEditing ? (
177
- <Tabs defaultValue="general" className="w-full -mt-2">
178
- <TabsList className="grid w-full grid-cols-2 mb-4">
179
- <TabsTrigger value="general">General</TabsTrigger>
180
- <TabsTrigger value="templates">Task Templates</TabsTrigger>
181
- </TabsList>
182
- <TabsContent value="general" className="space-y-4">
183
- <form onSubmit={handleSubmit} className="space-y-4">
184
- <ProjectFormFields
185
- isEditing={isEditing}
186
- repoMode={repoMode}
187
- setRepoMode={setRepoMode}
188
- gitRepoPath={gitRepoPath}
189
- handleGitRepoPathChange={handleGitRepoPathChange}
190
- setShowFolderPicker={setShowFolderPicker}
191
- parentPath={parentPath}
192
- setParentPath={setParentPath}
193
- folderName={folderName}
194
- setFolderName={setFolderName}
195
- setName={setName}
196
- name={name}
197
- setupScript={setupScript}
198
- setSetupScript={setSetupScript}
199
- devScript={devScript}
200
- setDevScript={setDevScript}
201
- cleanupScript={cleanupScript}
202
- setCleanupScript={setCleanupScript}
203
- error={error}
204
- />
205
- <DialogFooter>
206
- <Button
207
- type="button"
208
- variant="outline"
209
- onClick={handleClose}
210
- disabled={loading}
211
- >
212
- Cancel
213
- </Button>
214
- <Button
215
- type="submit"
216
- disabled={loading || !name.trim() || !gitRepoPath.trim()}
217
- >
218
- {loading ? 'Saving...' : 'Save Changes'}
219
- </Button>
220
- </DialogFooter>
221
- </form>
222
- </TabsContent>
223
- <TabsContent value="templates" className="mt-0 pt-0">
224
- <TaskTemplateManager projectId={project?.id} />
225
- </TabsContent>
226
- </Tabs>
227
- ) : (
228
- <form onSubmit={handleSubmit} className="space-y-4">
229
- <ProjectFormFields
230
- isEditing={isEditing}
231
- repoMode={repoMode}
232
- setRepoMode={setRepoMode}
233
- gitRepoPath={gitRepoPath}
234
- handleGitRepoPathChange={handleGitRepoPathChange}
235
- setShowFolderPicker={setShowFolderPicker}
236
- parentPath={parentPath}
237
- setParentPath={setParentPath}
238
- folderName={folderName}
239
- setFolderName={setFolderName}
240
- setName={setName}
241
- name={name}
242
- setupScript={setupScript}
243
- setSetupScript={setSetupScript}
244
- devScript={devScript}
245
- setDevScript={setDevScript}
246
- cleanupScript={cleanupScript}
247
- setCleanupScript={setCleanupScript}
248
- error={error}
249
- />
250
- <DialogFooter>
251
- <Button
252
- type="button"
253
- variant="outline"
254
- onClick={handleClose}
255
- disabled={loading}
256
- >
257
- Cancel
258
- </Button>
259
- <Button
260
- type="submit"
261
- disabled={
262
- loading ||
263
- !name.trim() ||
264
- (repoMode === 'existing'
265
- ? !gitRepoPath.trim()
266
- : !parentPath.trim() || !folderName.trim())
267
- }
268
- >
269
- {loading ? 'Creating...' : 'Create Project'}
270
- </Button>
271
- </DialogFooter>
272
- </form>
273
- )}
274
- </DialogContent>
275
-
276
- <FolderPicker
277
- open={showFolderPicker}
278
- onClose={() => setShowFolderPicker(false)}
279
- onSelect={(path) => {
280
- if (repoMode === 'existing' || isEditing) {
281
- handleGitRepoPathChange(path);
282
- } else {
283
- setParentPath(path);
284
- }
285
- setShowFolderPicker(false);
286
- }}
287
- value={repoMode === 'existing' || isEditing ? gitRepoPath : parentPath}
288
- title={
289
- repoMode === 'existing' || isEditing
290
- ? 'Select Git Repository'
291
- : 'Select Parent Directory'
292
- }
293
- description={
294
- repoMode === 'existing' || isEditing
295
- ? 'Choose an existing git repository'
296
- : 'Choose where to create the new repository'
297
- }
298
- />
299
- </Dialog>
300
- );
301
- }