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,430 +0,0 @@
1
- use chrono::{DateTime, Utc};
2
- use serde::{Deserialize, Serialize, Serializer};
3
- use sqlx::{FromRow, SqlitePool, Type};
4
- use ts_rs::TS;
5
- use uuid::Uuid;
6
-
7
- use crate::app_state::ExecutionType;
8
-
9
- /// Filter out stderr boundary markers from output
10
- fn filter_stderr_boundary_markers(stderr: &Option<String>) -> Option<String> {
11
- stderr
12
- .as_ref()
13
- .map(|s| s.replace("---STDERR_CHUNK_BOUNDARY---", ""))
14
- }
15
-
16
- /// Custom serializer for stderr field that filters out boundary markers
17
- fn serialize_filtered_stderr<S>(stderr: &Option<String>, serializer: S) -> Result<S::Ok, S::Error>
18
- where
19
- S: Serializer,
20
- {
21
- let filtered = filter_stderr_boundary_markers(stderr);
22
- filtered.serialize(serializer)
23
- }
24
-
25
- #[derive(Debug, Clone, Type, Serialize, Deserialize, PartialEq, TS)]
26
- #[sqlx(type_name = "execution_process_status", rename_all = "lowercase")]
27
- #[serde(rename_all = "lowercase")]
28
- #[ts(export)]
29
- pub enum ExecutionProcessStatus {
30
- Running,
31
- Completed,
32
- Failed,
33
- Killed,
34
- }
35
-
36
- #[derive(Debug, Clone, Type, Serialize, Deserialize, PartialEq, TS)]
37
- #[sqlx(type_name = "execution_process_type", rename_all = "lowercase")]
38
- #[serde(rename_all = "lowercase")]
39
- #[ts(export)]
40
- pub enum ExecutionProcessType {
41
- SetupScript,
42
- CleanupScript,
43
- CodingAgent,
44
- DevServer,
45
- }
46
-
47
- impl From<ExecutionType> for ExecutionProcessType {
48
- fn from(exec_type: ExecutionType) -> Self {
49
- match exec_type {
50
- ExecutionType::SetupScript => ExecutionProcessType::SetupScript,
51
- ExecutionType::CleanupScript => ExecutionProcessType::CleanupScript,
52
- ExecutionType::CodingAgent => ExecutionProcessType::CodingAgent,
53
- ExecutionType::DevServer => ExecutionProcessType::DevServer,
54
- }
55
- }
56
- }
57
-
58
- impl From<ExecutionProcessType> for ExecutionType {
59
- fn from(exec_type: ExecutionProcessType) -> Self {
60
- match exec_type {
61
- ExecutionProcessType::SetupScript => ExecutionType::SetupScript,
62
- ExecutionProcessType::CleanupScript => ExecutionType::CleanupScript,
63
- ExecutionProcessType::CodingAgent => ExecutionType::CodingAgent,
64
- ExecutionProcessType::DevServer => ExecutionType::DevServer,
65
- }
66
- }
67
- }
68
-
69
- #[derive(Debug, Clone, FromRow, Serialize, Deserialize, TS)]
70
- #[ts(export)]
71
- pub struct ExecutionProcess {
72
- pub id: Uuid,
73
- pub task_attempt_id: Uuid,
74
- pub process_type: ExecutionProcessType,
75
- pub executor_type: Option<String>, // "echo", "claude", "amp", etc. - only for CodingAgent processes
76
- pub status: ExecutionProcessStatus,
77
- pub command: String,
78
- pub args: Option<String>, // JSON array of arguments
79
- pub working_directory: String,
80
- pub stdout: Option<String>,
81
- #[serde(serialize_with = "serialize_filtered_stderr")]
82
- pub stderr: Option<String>,
83
- pub exit_code: Option<i64>,
84
- pub started_at: DateTime<Utc>,
85
- pub completed_at: Option<DateTime<Utc>>,
86
- pub created_at: DateTime<Utc>,
87
- pub updated_at: DateTime<Utc>,
88
- }
89
-
90
- #[derive(Debug, Deserialize, TS)]
91
- #[ts(export)]
92
- pub struct CreateExecutionProcess {
93
- pub task_attempt_id: Uuid,
94
- pub process_type: ExecutionProcessType,
95
- pub executor_type: Option<String>,
96
- pub command: String,
97
- pub args: Option<String>,
98
- pub working_directory: String,
99
- }
100
-
101
- #[derive(Debug, Deserialize, TS)]
102
- #[ts(export)]
103
- #[allow(dead_code)]
104
- pub struct UpdateExecutionProcess {
105
- pub status: Option<ExecutionProcessStatus>,
106
- pub exit_code: Option<i64>,
107
- pub completed_at: Option<DateTime<Utc>>,
108
- }
109
-
110
- #[derive(Debug, Clone, FromRow, Serialize, Deserialize, TS)]
111
- #[ts(export)]
112
- pub struct ExecutionProcessSummary {
113
- pub id: Uuid,
114
- pub task_attempt_id: Uuid,
115
- pub process_type: ExecutionProcessType,
116
- pub executor_type: Option<String>, // "echo", "claude", "amp", etc. - only for CodingAgent processes
117
- pub status: ExecutionProcessStatus,
118
- pub command: String,
119
- pub args: Option<String>, // JSON array of arguments
120
- pub working_directory: String,
121
- pub exit_code: Option<i64>,
122
- pub started_at: DateTime<Utc>,
123
- pub completed_at: Option<DateTime<Utc>>,
124
- pub created_at: DateTime<Utc>,
125
- pub updated_at: DateTime<Utc>,
126
- }
127
-
128
- impl ExecutionProcess {
129
- /// Find execution process by ID
130
- pub async fn find_by_id(pool: &SqlitePool, id: Uuid) -> Result<Option<Self>, sqlx::Error> {
131
- sqlx::query_as!(
132
- ExecutionProcess,
133
- r#"SELECT
134
- id as "id!: Uuid",
135
- task_attempt_id as "task_attempt_id!: Uuid",
136
- process_type as "process_type!: ExecutionProcessType",
137
- executor_type,
138
- status as "status!: ExecutionProcessStatus",
139
- command,
140
- args,
141
- working_directory,
142
- stdout,
143
- stderr,
144
- exit_code,
145
- started_at as "started_at!: DateTime<Utc>",
146
- completed_at as "completed_at?: DateTime<Utc>",
147
- created_at as "created_at!: DateTime<Utc>",
148
- updated_at as "updated_at!: DateTime<Utc>"
149
- FROM execution_processes
150
- WHERE id = $1"#,
151
- id
152
- )
153
- .fetch_optional(pool)
154
- .await
155
- }
156
-
157
- /// Find all execution processes for a task attempt
158
- pub async fn find_by_task_attempt_id(
159
- pool: &SqlitePool,
160
- task_attempt_id: Uuid,
161
- ) -> Result<Vec<Self>, sqlx::Error> {
162
- sqlx::query_as!(
163
- ExecutionProcess,
164
- r#"SELECT
165
- id as "id!: Uuid",
166
- task_attempt_id as "task_attempt_id!: Uuid",
167
- process_type as "process_type!: ExecutionProcessType",
168
- executor_type,
169
- status as "status!: ExecutionProcessStatus",
170
- command,
171
- args,
172
- working_directory,
173
- stdout,
174
- stderr,
175
- exit_code,
176
- started_at as "started_at!: DateTime<Utc>",
177
- completed_at as "completed_at?: DateTime<Utc>",
178
- created_at as "created_at!: DateTime<Utc>",
179
- updated_at as "updated_at!: DateTime<Utc>"
180
- FROM execution_processes
181
- WHERE task_attempt_id = $1
182
- ORDER BY created_at ASC"#,
183
- task_attempt_id
184
- )
185
- .fetch_all(pool)
186
- .await
187
- }
188
-
189
- /// Find execution process summaries for a task attempt (excluding stdio)
190
- pub async fn find_summaries_by_task_attempt_id(
191
- pool: &SqlitePool,
192
- task_attempt_id: Uuid,
193
- ) -> Result<Vec<ExecutionProcessSummary>, sqlx::Error> {
194
- sqlx::query_as!(
195
- ExecutionProcessSummary,
196
- r#"SELECT
197
- id as "id!: Uuid",
198
- task_attempt_id as "task_attempt_id!: Uuid",
199
- process_type as "process_type!: ExecutionProcessType",
200
- executor_type,
201
- status as "status!: ExecutionProcessStatus",
202
- command,
203
- args,
204
- working_directory,
205
- exit_code,
206
- started_at as "started_at!: DateTime<Utc>",
207
- completed_at as "completed_at?: DateTime<Utc>",
208
- created_at as "created_at!: DateTime<Utc>",
209
- updated_at as "updated_at!: DateTime<Utc>"
210
- FROM execution_processes
211
- WHERE task_attempt_id = $1
212
- ORDER BY created_at ASC"#,
213
- task_attempt_id
214
- )
215
- .fetch_all(pool)
216
- .await
217
- }
218
-
219
- /// Find running execution processes
220
- pub async fn find_running(pool: &SqlitePool) -> Result<Vec<Self>, sqlx::Error> {
221
- sqlx::query_as!(
222
- ExecutionProcess,
223
- r#"SELECT
224
- id as "id!: Uuid",
225
- task_attempt_id as "task_attempt_id!: Uuid",
226
- process_type as "process_type!: ExecutionProcessType",
227
- executor_type,
228
- status as "status!: ExecutionProcessStatus",
229
- command,
230
- args,
231
- working_directory,
232
- stdout,
233
- stderr,
234
- exit_code,
235
- started_at as "started_at!: DateTime<Utc>",
236
- completed_at as "completed_at?: DateTime<Utc>",
237
- created_at as "created_at!: DateTime<Utc>",
238
- updated_at as "updated_at!: DateTime<Utc>"
239
- FROM execution_processes
240
- WHERE status = 'running'
241
- ORDER BY created_at ASC"#
242
- )
243
- .fetch_all(pool)
244
- .await
245
- }
246
-
247
- /// Find running dev servers for a specific project
248
- pub async fn find_running_dev_servers_by_project(
249
- pool: &SqlitePool,
250
- project_id: Uuid,
251
- ) -> Result<Vec<Self>, sqlx::Error> {
252
- sqlx::query_as!(
253
- ExecutionProcess,
254
- r#"SELECT
255
- ep.id as "id!: Uuid",
256
- ep.task_attempt_id as "task_attempt_id!: Uuid",
257
- ep.process_type as "process_type!: ExecutionProcessType",
258
- ep.executor_type,
259
- ep.status as "status!: ExecutionProcessStatus",
260
- ep.command,
261
- ep.args,
262
- ep.working_directory,
263
- ep.stdout,
264
- ep.stderr,
265
- ep.exit_code,
266
- ep.started_at as "started_at!: DateTime<Utc>",
267
- ep.completed_at as "completed_at?: DateTime<Utc>",
268
- ep.created_at as "created_at!: DateTime<Utc>",
269
- ep.updated_at as "updated_at!: DateTime<Utc>"
270
- FROM execution_processes ep
271
- JOIN task_attempts ta ON ep.task_attempt_id = ta.id
272
- JOIN tasks t ON ta.task_id = t.id
273
- WHERE ep.status = 'running'
274
- AND ep.process_type = 'devserver'
275
- AND t.project_id = $1
276
- ORDER BY ep.created_at ASC"#,
277
- project_id
278
- )
279
- .fetch_all(pool)
280
- .await
281
- }
282
-
283
- /// Create a new execution process
284
- pub async fn create(
285
- pool: &SqlitePool,
286
- data: &CreateExecutionProcess,
287
- process_id: Uuid,
288
- ) -> Result<Self, sqlx::Error> {
289
- let now = Utc::now();
290
-
291
- sqlx::query_as!(
292
- ExecutionProcess,
293
- r#"INSERT INTO execution_processes (
294
- id, task_attempt_id, process_type, executor_type, status, command, args,
295
- working_directory, stdout, stderr, exit_code, started_at,
296
- completed_at, created_at, updated_at
297
- )
298
- VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15)
299
- RETURNING
300
- id as "id!: Uuid",
301
- task_attempt_id as "task_attempt_id!: Uuid",
302
- process_type as "process_type!: ExecutionProcessType",
303
- executor_type,
304
- status as "status!: ExecutionProcessStatus",
305
- command,
306
- args,
307
- working_directory,
308
- stdout,
309
- stderr,
310
- exit_code,
311
- started_at as "started_at!: DateTime<Utc>",
312
- completed_at as "completed_at?: DateTime<Utc>",
313
- created_at as "created_at!: DateTime<Utc>",
314
- updated_at as "updated_at!: DateTime<Utc>""#,
315
- process_id,
316
- data.task_attempt_id,
317
- data.process_type,
318
- data.executor_type,
319
- ExecutionProcessStatus::Running,
320
- data.command,
321
- data.args,
322
- data.working_directory,
323
- None::<String>, // stdout
324
- None::<String>, // stderr
325
- None::<i64>, // exit_code
326
- now, // started_at
327
- None::<DateTime<Utc>>, // completed_at
328
- now, // created_at
329
- now // updated_at
330
- )
331
- .fetch_one(pool)
332
- .await
333
- }
334
-
335
- /// Update execution process status and completion info
336
- pub async fn update_completion(
337
- pool: &SqlitePool,
338
- id: Uuid,
339
- status: ExecutionProcessStatus,
340
- exit_code: Option<i64>,
341
- ) -> Result<(), sqlx::Error> {
342
- let completed_at = if matches!(status, ExecutionProcessStatus::Running) {
343
- None
344
- } else {
345
- Some(Utc::now())
346
- };
347
-
348
- sqlx::query!(
349
- r#"UPDATE execution_processes
350
- SET status = $1, exit_code = $2, completed_at = $3, updated_at = datetime('now')
351
- WHERE id = $4"#,
352
- status,
353
- exit_code,
354
- completed_at,
355
- id
356
- )
357
- .execute(pool)
358
- .await?;
359
-
360
- Ok(())
361
- }
362
-
363
- /// Append to stdout for this execution process (for streaming updates)
364
- pub async fn append_stdout(
365
- pool: &SqlitePool,
366
- id: Uuid,
367
- stdout_append: &str,
368
- ) -> Result<(), sqlx::Error> {
369
- sqlx::query!(
370
- "UPDATE execution_processes SET stdout = COALESCE(stdout, '') || $1, updated_at = datetime('now') WHERE id = $2",
371
- stdout_append,
372
- id
373
- )
374
- .execute(pool)
375
- .await?;
376
-
377
- Ok(())
378
- }
379
-
380
- /// Append to stderr for this execution process (for streaming updates)
381
- pub async fn append_stderr(
382
- pool: &SqlitePool,
383
- id: Uuid,
384
- stderr_append: &str,
385
- ) -> Result<(), sqlx::Error> {
386
- sqlx::query!(
387
- "UPDATE execution_processes SET stderr = COALESCE(stderr, '') || $1, updated_at = datetime('now') WHERE id = $2",
388
- stderr_append,
389
- id
390
- )
391
- .execute(pool)
392
- .await?;
393
-
394
- Ok(())
395
- }
396
-
397
- /// Append to both stdout and stderr for this execution process
398
- pub async fn append_output(
399
- pool: &SqlitePool,
400
- id: Uuid,
401
- stdout_append: Option<&str>,
402
- stderr_append: Option<&str>,
403
- ) -> Result<(), sqlx::Error> {
404
- if let Some(stdout_data) = stdout_append {
405
- Self::append_stdout(pool, id, stdout_data).await?;
406
- }
407
-
408
- if let Some(stderr_data) = stderr_append {
409
- Self::append_stderr(pool, id, stderr_data).await?;
410
- }
411
-
412
- Ok(())
413
- }
414
-
415
- /// Delete execution processes for a task attempt (cleanup)
416
- #[allow(dead_code)]
417
- pub async fn delete_by_task_attempt_id(
418
- pool: &SqlitePool,
419
- task_attempt_id: Uuid,
420
- ) -> Result<(), sqlx::Error> {
421
- sqlx::query!(
422
- "DELETE FROM execution_processes WHERE task_attempt_id = $1",
423
- task_attempt_id
424
- )
425
- .execute(pool)
426
- .await?;
427
-
428
- Ok(())
429
- }
430
- }
@@ -1,225 +0,0 @@
1
- use chrono::{DateTime, Utc};
2
- use serde::{Deserialize, Serialize};
3
- use sqlx::{FromRow, SqlitePool};
4
- use ts_rs::TS;
5
- use uuid::Uuid;
6
-
7
- #[derive(Debug, Clone, FromRow, Serialize, Deserialize, TS)]
8
- #[ts(export)]
9
- pub struct ExecutorSession {
10
- pub id: Uuid,
11
- pub task_attempt_id: Uuid,
12
- pub execution_process_id: Uuid,
13
- pub session_id: Option<String>, // External session ID from Claude/Amp
14
- pub prompt: Option<String>, // The prompt sent to the executor
15
- pub summary: Option<String>, // Final assistant message/summary
16
- pub created_at: DateTime<Utc>,
17
- pub updated_at: DateTime<Utc>,
18
- }
19
-
20
- #[derive(Debug, Deserialize, TS)]
21
- #[ts(export)]
22
- pub struct CreateExecutorSession {
23
- pub task_attempt_id: Uuid,
24
- pub execution_process_id: Uuid,
25
- pub prompt: Option<String>,
26
- }
27
-
28
- #[derive(Debug, Deserialize, TS)]
29
- #[ts(export)]
30
- #[allow(dead_code)]
31
- pub struct UpdateExecutorSession {
32
- pub session_id: Option<String>,
33
- pub prompt: Option<String>,
34
- pub summary: Option<String>,
35
- }
36
-
37
- impl ExecutorSession {
38
- /// Find executor session by ID
39
- #[allow(dead_code)]
40
- pub async fn find_by_id(pool: &SqlitePool, id: Uuid) -> Result<Option<Self>, sqlx::Error> {
41
- sqlx::query_as!(
42
- ExecutorSession,
43
- r#"SELECT
44
- id as "id!: Uuid",
45
- task_attempt_id as "task_attempt_id!: Uuid",
46
- execution_process_id as "execution_process_id!: Uuid",
47
- session_id,
48
- prompt,
49
- summary,
50
- created_at as "created_at!: DateTime<Utc>",
51
- updated_at as "updated_at!: DateTime<Utc>"
52
- FROM executor_sessions
53
- WHERE id = $1"#,
54
- id
55
- )
56
- .fetch_optional(pool)
57
- .await
58
- }
59
-
60
- /// Find executor session by execution process ID
61
- pub async fn find_by_execution_process_id(
62
- pool: &SqlitePool,
63
- execution_process_id: Uuid,
64
- ) -> Result<Option<Self>, sqlx::Error> {
65
- sqlx::query_as!(
66
- ExecutorSession,
67
- r#"SELECT
68
- id as "id!: Uuid",
69
- task_attempt_id as "task_attempt_id!: Uuid",
70
- execution_process_id as "execution_process_id!: Uuid",
71
- session_id,
72
- prompt,
73
- summary,
74
- created_at as "created_at!: DateTime<Utc>",
75
- updated_at as "updated_at!: DateTime<Utc>"
76
- FROM executor_sessions
77
- WHERE execution_process_id = $1"#,
78
- execution_process_id
79
- )
80
- .fetch_optional(pool)
81
- .await
82
- }
83
-
84
- /// Find all executor sessions for a task attempt
85
- #[allow(dead_code)]
86
- pub async fn find_by_task_attempt_id(
87
- pool: &SqlitePool,
88
- task_attempt_id: Uuid,
89
- ) -> Result<Vec<Self>, sqlx::Error> {
90
- sqlx::query_as!(
91
- ExecutorSession,
92
- r#"SELECT
93
- id as "id!: Uuid",
94
- task_attempt_id as "task_attempt_id!: Uuid",
95
- execution_process_id as "execution_process_id!: Uuid",
96
- session_id,
97
- prompt,
98
- summary,
99
- created_at as "created_at!: DateTime<Utc>",
100
- updated_at as "updated_at!: DateTime<Utc>"
101
- FROM executor_sessions
102
- WHERE task_attempt_id = $1
103
- ORDER BY created_at ASC"#,
104
- task_attempt_id
105
- )
106
- .fetch_all(pool)
107
- .await
108
- }
109
-
110
- /// Create a new executor session
111
- pub async fn create(
112
- pool: &SqlitePool,
113
- data: &CreateExecutorSession,
114
- session_id: Uuid,
115
- ) -> Result<Self, sqlx::Error> {
116
- let now = Utc::now();
117
-
118
- tracing::debug!(
119
- "Creating executor session: id={}, task_attempt_id={}, execution_process_id={}, external_session_id=None (will be set later)",
120
- session_id, data.task_attempt_id, data.execution_process_id
121
- );
122
-
123
- sqlx::query_as!(
124
- ExecutorSession,
125
- r#"INSERT INTO executor_sessions (
126
- id, task_attempt_id, execution_process_id, session_id, prompt, summary,
127
- created_at, updated_at
128
- )
129
- VALUES ($1, $2, $3, $4, $5, $6, $7, $8)
130
- RETURNING
131
- id as "id!: Uuid",
132
- task_attempt_id as "task_attempt_id!: Uuid",
133
- execution_process_id as "execution_process_id!: Uuid",
134
- session_id,
135
- prompt,
136
- summary,
137
- created_at as "created_at!: DateTime<Utc>",
138
- updated_at as "updated_at!: DateTime<Utc>""#,
139
- session_id,
140
- data.task_attempt_id,
141
- data.execution_process_id,
142
- None::<String>, // session_id initially None until parsed from output
143
- data.prompt,
144
- None::<String>, // summary initially None
145
- now, // created_at
146
- now // updated_at
147
- )
148
- .fetch_one(pool)
149
- .await
150
- }
151
-
152
- /// Update executor session with external session ID
153
- pub async fn update_session_id(
154
- pool: &SqlitePool,
155
- execution_process_id: Uuid,
156
- external_session_id: &str,
157
- ) -> Result<(), sqlx::Error> {
158
- sqlx::query!(
159
- r#"UPDATE executor_sessions
160
- SET session_id = $1, updated_at = datetime('now')
161
- WHERE execution_process_id = $2"#,
162
- external_session_id,
163
- execution_process_id
164
- )
165
- .execute(pool)
166
- .await?;
167
-
168
- Ok(())
169
- }
170
-
171
- /// Update executor session prompt
172
- #[allow(dead_code)]
173
- pub async fn update_prompt(
174
- pool: &SqlitePool,
175
- id: Uuid,
176
- prompt: &str,
177
- ) -> Result<(), sqlx::Error> {
178
- sqlx::query!(
179
- r#"UPDATE executor_sessions
180
- SET prompt = $1, updated_at = datetime('now')
181
- WHERE id = $2"#,
182
- prompt,
183
- id
184
- )
185
- .execute(pool)
186
- .await?;
187
-
188
- Ok(())
189
- }
190
-
191
- /// Update executor session summary
192
- pub async fn update_summary(
193
- pool: &SqlitePool,
194
- execution_process_id: Uuid,
195
- summary: &str,
196
- ) -> Result<(), sqlx::Error> {
197
- sqlx::query!(
198
- r#"UPDATE executor_sessions
199
- SET summary = $1, updated_at = datetime('now')
200
- WHERE execution_process_id = $2"#,
201
- summary,
202
- execution_process_id
203
- )
204
- .execute(pool)
205
- .await?;
206
-
207
- Ok(())
208
- }
209
-
210
- /// Delete executor sessions for a task attempt (cleanup)
211
- #[allow(dead_code)]
212
- pub async fn delete_by_task_attempt_id(
213
- pool: &SqlitePool,
214
- task_attempt_id: Uuid,
215
- ) -> Result<(), sqlx::Error> {
216
- sqlx::query!(
217
- "DELETE FROM executor_sessions WHERE task_attempt_id = $1",
218
- task_attempt_id
219
- )
220
- .execute(pool)
221
- .await?;
222
-
223
- Ok(())
224
- }
225
- }
@@ -1,12 +0,0 @@
1
- pub mod api_response;
2
- pub mod config;
3
- pub mod execution_process;
4
- pub mod executor_session;
5
- pub mod project;
6
- pub mod task;
7
- pub mod task_attempt;
8
-
9
- pub mod task_template;
10
-
11
- pub use api_response::ApiResponse;
12
- pub use config::Config;