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,610 +0,0 @@
1
- import { useCallback, useState } from 'react';
2
- import {
3
- Card,
4
- CardContent,
5
- CardDescription,
6
- CardHeader,
7
- CardTitle,
8
- } from '@/components/ui/card';
9
- import { Button } from '@/components/ui/button';
10
- import {
11
- Select,
12
- SelectContent,
13
- SelectItem,
14
- SelectTrigger,
15
- SelectValue,
16
- } from '@/components/ui/select';
17
- import { Label } from '@/components/ui/label';
18
- import { Alert, AlertDescription } from '@/components/ui/alert';
19
- import { Checkbox } from '@/components/ui/checkbox';
20
- import { Input } from '@/components/ui/input';
21
- import { Key, Loader2, Volume2 } from 'lucide-react';
22
- import type { EditorType, SoundFile, ThemeMode } from 'shared/types';
23
- import {
24
- EDITOR_LABELS,
25
- EDITOR_TYPES,
26
- EXECUTOR_LABELS,
27
- EXECUTOR_TYPES,
28
- SOUND_FILES,
29
- SOUND_LABELS,
30
- } from 'shared/types';
31
- import { useTheme } from '@/components/theme-provider';
32
- import { useConfig } from '@/components/config-provider';
33
- import { GitHubLoginDialog } from '@/components/GitHubLoginDialog';
34
- import { TaskTemplateManager } from '@/components/TaskTemplateManager';
35
-
36
- export function Settings() {
37
- const { config, updateConfig, saveConfig, loading, updateAndSaveConfig } =
38
- useConfig();
39
- const [saving, setSaving] = useState(false);
40
- const [error, setError] = useState<string | null>(null);
41
- const [success, setSuccess] = useState(false);
42
- const { setTheme } = useTheme();
43
- const [showGitHubLogin, setShowGitHubLogin] = useState(false);
44
-
45
- const playSound = async (soundFile: SoundFile) => {
46
- const audio = new Audio(`/api/sounds/${soundFile}.wav`);
47
- try {
48
- await audio.play();
49
- } catch (err) {
50
- console.error('Failed to play sound:', err);
51
- }
52
- };
53
-
54
- const handleSave = async () => {
55
- if (!config) return;
56
-
57
- setSaving(true);
58
- setError(null);
59
- setSuccess(false);
60
-
61
- try {
62
- // Save the main configuration
63
- const success = await saveConfig();
64
-
65
- if (success) {
66
- setSuccess(true);
67
- // Update theme provider to reflect the saved theme
68
- setTheme(config.theme);
69
-
70
- setTimeout(() => setSuccess(false), 3000);
71
- } else {
72
- setError('Failed to save configuration');
73
- }
74
- } catch (err) {
75
- setError('Failed to save configuration');
76
- console.error('Error saving config:', err);
77
- } finally {
78
- setSaving(false);
79
- }
80
- };
81
-
82
- const resetDisclaimer = async () => {
83
- if (!config) return;
84
-
85
- updateConfig({ disclaimer_acknowledged: false });
86
- };
87
-
88
- const resetOnboarding = async () => {
89
- if (!config) return;
90
-
91
- updateConfig({ onboarding_acknowledged: false });
92
- };
93
-
94
- const isAuthenticated = !!(config?.github?.username && config?.github?.token);
95
-
96
- const handleLogout = useCallback(async () => {
97
- if (!config) return;
98
- updateAndSaveConfig({
99
- github: {
100
- ...config.github,
101
- token: null,
102
- username: null,
103
- primary_email: null,
104
- },
105
- });
106
- }, [config, updateAndSaveConfig]);
107
-
108
- if (loading) {
109
- return (
110
- <div className="container mx-auto px-4 py-8">
111
- <div className="flex items-center justify-center">
112
- <Loader2 className="h-8 w-8 animate-spin" />
113
- <span className="ml-2">Loading settings...</span>
114
- </div>
115
- </div>
116
- );
117
- }
118
-
119
- if (!config) {
120
- return (
121
- <div className="container mx-auto px-4 py-8">
122
- <Alert variant="destructive">
123
- <AlertDescription>Failed to load settings. {error}</AlertDescription>
124
- </Alert>
125
- </div>
126
- );
127
- }
128
-
129
- return (
130
- <div className="container mx-auto px-4 py-8 max-w-4xl">
131
- <div className="space-y-6">
132
- <div>
133
- <h1 className="text-3xl font-bold">Settings</h1>
134
- <p className="text-muted-foreground">
135
- Configure your preferences and application settings.
136
- </p>
137
- </div>
138
-
139
- {error && (
140
- <Alert variant="destructive">
141
- <AlertDescription>{error}</AlertDescription>
142
- </Alert>
143
- )}
144
-
145
- {success && (
146
- <Alert className="border-green-200 bg-green-50 text-green-800 dark:border-green-800 dark:bg-green-950 dark:text-green-200">
147
- <AlertDescription className="font-medium">
148
- ✓ Settings saved successfully!
149
- </AlertDescription>
150
- </Alert>
151
- )}
152
-
153
- <div className="grid gap-6">
154
- <Card>
155
- <CardHeader>
156
- <CardTitle>Appearance</CardTitle>
157
- <CardDescription>
158
- Customize how the application looks and feels.
159
- </CardDescription>
160
- </CardHeader>
161
- <CardContent className="space-y-4">
162
- <div className="space-y-2">
163
- <Label htmlFor="theme">Theme</Label>
164
- <Select
165
- value={config.theme}
166
- onValueChange={(value: ThemeMode) => {
167
- updateConfig({ theme: value });
168
- setTheme(value);
169
- }}
170
- >
171
- <SelectTrigger id="theme">
172
- <SelectValue placeholder="Select theme" />
173
- </SelectTrigger>
174
- <SelectContent>
175
- <SelectItem value="light">Light</SelectItem>
176
- <SelectItem value="dark">Dark</SelectItem>
177
- <SelectItem value="system">System</SelectItem>
178
- <SelectItem value="purple">Purple</SelectItem>
179
- <SelectItem value="green">Green</SelectItem>
180
- <SelectItem value="blue">Blue</SelectItem>
181
- <SelectItem value="orange">Orange</SelectItem>
182
- <SelectItem value="red">Red</SelectItem>
183
- </SelectContent>
184
- </Select>
185
- <p className="text-sm text-muted-foreground">
186
- Choose your preferred color scheme.
187
- </p>
188
- </div>
189
- </CardContent>
190
- </Card>
191
-
192
- <Card>
193
- <CardHeader>
194
- <CardTitle>Task Execution</CardTitle>
195
- <CardDescription>
196
- Configure how tasks are executed and processed.
197
- </CardDescription>
198
- </CardHeader>
199
- <CardContent className="space-y-4">
200
- <div className="space-y-2">
201
- <Label htmlFor="executor">Default Executor</Label>
202
- <Select
203
- value={config.executor.type}
204
- onValueChange={(value: 'echo' | 'claude' | 'amp') =>
205
- updateConfig({ executor: { type: value } })
206
- }
207
- >
208
- <SelectTrigger id="executor">
209
- <SelectValue placeholder="Select executor" />
210
- </SelectTrigger>
211
- <SelectContent>
212
- {EXECUTOR_TYPES.map((type) => (
213
- <SelectItem key={type} value={type}>
214
- {EXECUTOR_LABELS[type]}
215
- </SelectItem>
216
- ))}
217
- </SelectContent>
218
- </Select>
219
- <p className="text-sm text-muted-foreground">
220
- Choose the default executor for running tasks.
221
- </p>
222
- </div>
223
- </CardContent>
224
- </Card>
225
-
226
- <Card>
227
- <CardHeader>
228
- <CardTitle>Editor</CardTitle>
229
- <CardDescription>
230
- Configure which editor to open when viewing task attempts.
231
- </CardDescription>
232
- </CardHeader>
233
- <CardContent className="space-y-4">
234
- <div className="space-y-2">
235
- <Label htmlFor="editor">Preferred Editor</Label>
236
- <Select
237
- value={config.editor.editor_type}
238
- onValueChange={(value: EditorType) =>
239
- updateConfig({
240
- editor: {
241
- ...config.editor,
242
- editor_type: value,
243
- custom_command:
244
- value === 'custom'
245
- ? config.editor.custom_command
246
- : null,
247
- },
248
- })
249
- }
250
- >
251
- <SelectTrigger id="editor">
252
- <SelectValue placeholder="Select editor" />
253
- </SelectTrigger>
254
- <SelectContent>
255
- {EDITOR_TYPES.map((type) => (
256
- <SelectItem key={type} value={type}>
257
- {EDITOR_LABELS[type]}
258
- </SelectItem>
259
- ))}
260
- </SelectContent>
261
- </Select>
262
- <p className="text-sm text-muted-foreground">
263
- Choose your preferred code editor for opening task attempts.
264
- </p>
265
- </div>
266
-
267
- {config.editor.editor_type === 'custom' && (
268
- <div className="space-y-2">
269
- <Label htmlFor="custom-command">Custom Command</Label>
270
- <Input
271
- id="custom-command"
272
- placeholder="e.g., code, subl, vim"
273
- value={config.editor.custom_command || ''}
274
- onChange={(e) =>
275
- updateConfig({
276
- editor: {
277
- ...config.editor,
278
- custom_command: e.target.value || null,
279
- },
280
- })
281
- }
282
- />
283
- <p className="text-sm text-muted-foreground">
284
- Enter the command to run your custom editor. Use spaces for
285
- arguments (e.g., "code --wait").
286
- </p>
287
- </div>
288
- )}
289
- </CardContent>
290
- </Card>
291
-
292
- <Card>
293
- <CardHeader>
294
- <CardTitle className="flex items-center gap-2">
295
- <Key className="h-5 w-5" />
296
- GitHub Integration
297
- </CardTitle>
298
- <CardDescription>
299
- Configure GitHub settings for creating pull requests from task
300
- attempts.
301
- </CardDescription>
302
- </CardHeader>
303
- <CardContent className="space-y-4">
304
- <div className="space-y-2">
305
- <Label htmlFor="github-token">Personal Access Token</Label>
306
- <Input
307
- id="github-token"
308
- type="password"
309
- placeholder="ghp_xxxxxxxxxxxxxxxxxxxx"
310
- value={config.github.pat || ''}
311
- onChange={(e) =>
312
- updateConfig({
313
- github: {
314
- ...config.github,
315
- pat: e.target.value || null,
316
- },
317
- })
318
- }
319
- />
320
- <p className="text-sm text-muted-foreground">
321
- GitHub Personal Access Token with 'repo' permissions. Required
322
- for creating pull requests.{' '}
323
- <a
324
- href="https://github.com/settings/tokens"
325
- target="_blank"
326
- rel="noopener noreferrer"
327
- className="text-blue-600 hover:underline"
328
- >
329
- Create token here
330
- </a>
331
- </p>
332
- </div>
333
- {config && isAuthenticated ? (
334
- <div className="flex items-center justify-between gap-4">
335
- <div>
336
- <Label>Signed in as</Label>
337
- <div className="text-lg font-mono">
338
- {config.github.username}
339
- </div>
340
- </div>
341
- <Button variant="outline" onClick={handleLogout}>
342
- Log out
343
- </Button>
344
- </div>
345
- ) : (
346
- <Button onClick={() => setShowGitHubLogin(true)}>
347
- Sign in with GitHub
348
- </Button>
349
- )}
350
- <GitHubLoginDialog
351
- open={showGitHubLogin}
352
- onOpenChange={setShowGitHubLogin}
353
- />
354
- <div className="space-y-2 pt-4">
355
- <Label htmlFor="default-pr-base">Default PR Base Branch</Label>
356
- <Input
357
- id="default-pr-base"
358
- placeholder="main"
359
- value={config.github.default_pr_base || ''}
360
- onChange={(e) =>
361
- updateConfig({
362
- github: {
363
- ...config.github,
364
- default_pr_base: e.target.value || null,
365
- },
366
- })
367
- }
368
- />
369
- <p className="text-sm text-muted-foreground">
370
- Default base branch for pull requests. Defaults to 'main' if
371
- not specified.
372
- </p>
373
- </div>
374
- </CardContent>
375
- </Card>
376
-
377
- <Card>
378
- <CardHeader>
379
- <CardTitle>Notifications</CardTitle>
380
- <CardDescription>
381
- Configure how you receive notifications about task completion.
382
- </CardDescription>
383
- </CardHeader>
384
- <CardContent className="space-y-4">
385
- <div className="flex items-center space-x-2">
386
- <Checkbox
387
- id="sound-alerts"
388
- checked={config.sound_alerts}
389
- onCheckedChange={(checked: boolean) =>
390
- updateConfig({ sound_alerts: checked })
391
- }
392
- />
393
- <div className="space-y-0.5">
394
- <Label htmlFor="sound-alerts" className="cursor-pointer">
395
- Sound Alerts
396
- </Label>
397
- <p className="text-sm text-muted-foreground">
398
- Play a sound when task attempts finish running.
399
- </p>
400
- </div>
401
- </div>
402
-
403
- {config.sound_alerts && (
404
- <div className="space-y-2 ml-6">
405
- <Label htmlFor="sound-file">Sound</Label>
406
- <div className="flex items-center gap-2">
407
- <Select
408
- value={config.sound_file}
409
- onValueChange={(value: SoundFile) =>
410
- updateConfig({ sound_file: value })
411
- }
412
- >
413
- <SelectTrigger id="sound-file" className="flex-1">
414
- <SelectValue placeholder="Select sound" />
415
- </SelectTrigger>
416
- <SelectContent>
417
- {SOUND_FILES.map((soundFile) => (
418
- <SelectItem key={soundFile} value={soundFile}>
419
- {SOUND_LABELS[soundFile]}
420
- </SelectItem>
421
- ))}
422
- </SelectContent>
423
- </Select>
424
- <Button
425
- variant="outline"
426
- size="sm"
427
- onClick={() => playSound(config.sound_file)}
428
- className="px-3"
429
- >
430
- <Volume2 className="h-4 w-4" />
431
- </Button>
432
- </div>
433
- <p className="text-sm text-muted-foreground">
434
- Choose the sound to play when tasks complete. Click the
435
- volume button to preview.
436
- </p>
437
- </div>
438
- )}
439
- <div className="flex items-center space-x-2">
440
- <Checkbox
441
- id="push-notifications"
442
- checked={config.push_notifications}
443
- onCheckedChange={(checked: boolean) =>
444
- updateConfig({ push_notifications: checked })
445
- }
446
- />
447
- <div className="space-y-0.5">
448
- <Label
449
- htmlFor="push-notifications"
450
- className="cursor-pointer"
451
- >
452
- Push Notifications
453
- </Label>
454
- <p className="text-sm text-muted-foreground">
455
- Show system notifications when task attempts finish running.
456
- </p>
457
- </div>
458
- </div>
459
- </CardContent>
460
- </Card>
461
-
462
- <Card>
463
- <CardHeader>
464
- <CardTitle>Privacy</CardTitle>
465
- <CardDescription>
466
- Help improve Automagik-Forge by sharing anonymous usage data.
467
- </CardDescription>
468
- </CardHeader>
469
- <CardContent className="space-y-4">
470
- <div className="flex items-center space-x-2">
471
- <Checkbox
472
- id="analytics-enabled"
473
- checked={config.analytics_enabled ?? false}
474
- onCheckedChange={(checked: boolean) =>
475
- updateConfig({ analytics_enabled: checked })
476
- }
477
- />
478
- <div className="space-y-0.5">
479
- <Label htmlFor="analytics-enabled" className="cursor-pointer">
480
- Enable Telemetry
481
- </Label>
482
- <p className="text-sm text-muted-foreground">
483
- Enables anonymous usage events tracking to help improve the
484
- application. No prompts or project information are
485
- collected.
486
- </p>
487
- </div>
488
- </div>
489
- </CardContent>
490
- </Card>
491
-
492
- <Card>
493
- <CardHeader>
494
- <CardTitle>Task Templates</CardTitle>
495
- <CardDescription>
496
- Manage global task templates that can be used across all
497
- projects.
498
- </CardDescription>
499
- </CardHeader>
500
- <CardContent>
501
- <TaskTemplateManager isGlobal={true} />
502
- </CardContent>
503
- </Card>
504
-
505
- <Card>
506
- <CardHeader>
507
- <CardTitle>Safety & Disclaimers</CardTitle>
508
- <CardDescription>
509
- Manage safety warnings and acknowledgments.
510
- </CardDescription>
511
- </CardHeader>
512
- <CardContent className="space-y-6">
513
- <div className="space-y-2">
514
- <div className="flex items-center justify-between">
515
- <div>
516
- <Label>Disclaimer Status</Label>
517
- <p className="text-sm text-muted-foreground">
518
- {config.disclaimer_acknowledged
519
- ? 'You have acknowledged the safety disclaimer.'
520
- : 'The safety disclaimer has not been acknowledged.'}
521
- </p>
522
- </div>
523
- <Button
524
- onClick={resetDisclaimer}
525
- variant="outline"
526
- size="sm"
527
- disabled={!config.disclaimer_acknowledged}
528
- >
529
- Reset Disclaimer
530
- </Button>
531
- </div>
532
- <p className="text-xs text-muted-foreground">
533
- Resetting the disclaimer will require you to acknowledge the
534
- safety warning again.
535
- </p>
536
- </div>
537
- <div className="space-y-2">
538
- <div className="flex items-center justify-between">
539
- <div>
540
- <Label>Onboarding Status</Label>
541
- <p className="text-sm text-muted-foreground">
542
- {config.onboarding_acknowledged
543
- ? 'You have completed the onboarding process.'
544
- : 'The onboarding process has not been completed.'}
545
- </p>
546
- </div>
547
- <Button
548
- onClick={resetOnboarding}
549
- variant="outline"
550
- size="sm"
551
- disabled={!config.onboarding_acknowledged}
552
- >
553
- Reset Onboarding
554
- </Button>
555
- </div>
556
- <p className="text-xs text-muted-foreground">
557
- Resetting the onboarding will show the setup screen again.
558
- </p>
559
- </div>
560
- <div className="space-y-2">
561
- <div className="flex items-center justify-between">
562
- <div>
563
- <Label>Telemetry Acknowledgment</Label>
564
- <p className="text-sm text-muted-foreground">
565
- {config.telemetry_acknowledged
566
- ? 'You have acknowledged the telemetry notice.'
567
- : 'The telemetry notice has not been acknowledged.'}
568
- </p>
569
- </div>
570
- <Button
571
- onClick={() =>
572
- updateConfig({ telemetry_acknowledged: false })
573
- }
574
- variant="outline"
575
- size="sm"
576
- disabled={!config.telemetry_acknowledged}
577
- >
578
- Reset Acknowledgment
579
- </Button>
580
- </div>
581
- <p className="text-xs text-muted-foreground">
582
- Resetting the acknowledgment will require you to acknowledge
583
- the telemetry notice again.
584
- </p>
585
- </div>
586
- </CardContent>
587
- </Card>
588
- </div>
589
-
590
- {/* Sticky save button */}
591
- <div className="fixed bottom-0 left-0 right-0 bg-background/80 backdrop-blur-sm border-t p-4 z-10">
592
- <div className="container mx-auto max-w-4xl flex justify-end">
593
- <Button
594
- onClick={handleSave}
595
- disabled={saving || success}
596
- className={success ? 'bg-green-600 hover:bg-green-700' : ''}
597
- >
598
- {saving && <Loader2 className="mr-2 h-4 w-4 animate-spin" />}
599
- {success && <span className="mr-2">✓</span>}
600
- {success ? 'Settings Saved!' : 'Save Settings'}
601
- </Button>
602
- </div>
603
- </div>
604
-
605
- {/* Spacer to prevent content from being hidden behind sticky button */}
606
- <div className="h-20"></div>
607
- </div>
608
- </div>
609
- );
610
- }