@overlordai/server 1.0.52 → 1.0.54

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 (533) hide show
  1. package/database/migrations/001-init-schema.sql +73 -9
  2. package/dist/adapters/adapter.interface.d.ts +1 -4
  3. package/dist/adapters/adapter.interface.d.ts.map +1 -1
  4. package/dist/adapters/adapter.interface.js.map +1 -1
  5. package/dist/adapters/adapter.module.d.ts.map +1 -1
  6. package/dist/adapters/adapter.module.js +8 -7
  7. package/dist/adapters/adapter.module.js.map +1 -1
  8. package/dist/adapters/lark/lark-card.builder.d.ts +1 -25
  9. package/dist/adapters/lark/lark-card.builder.d.ts.map +1 -1
  10. package/dist/adapters/lark/lark-card.builder.js +6 -110
  11. package/dist/adapters/lark/lark-card.builder.js.map +1 -1
  12. package/dist/adapters/lark/lark-message.parser.d.ts +4 -4
  13. package/dist/adapters/lark/lark-message.parser.d.ts.map +1 -1
  14. package/dist/adapters/lark/lark-message.parser.js +20 -13
  15. package/dist/adapters/lark/lark-message.parser.js.map +1 -1
  16. package/dist/adapters/lark/lark-signature.d.ts.map +1 -1
  17. package/dist/adapters/lark/lark-signature.js +6 -0
  18. package/dist/adapters/lark/lark-signature.js.map +1 -1
  19. package/dist/adapters/lark/lark.adapter.d.ts +14 -9
  20. package/dist/adapters/lark/lark.adapter.d.ts.map +1 -1
  21. package/dist/adapters/lark/lark.adapter.js +99 -177
  22. package/dist/adapters/lark/lark.adapter.js.map +1 -1
  23. package/dist/adapters/lark/lark.controller.d.ts +10 -1
  24. package/dist/adapters/lark/lark.controller.d.ts.map +1 -1
  25. package/dist/adapters/lark/lark.controller.js +48 -14
  26. package/dist/adapters/lark/lark.controller.js.map +1 -1
  27. package/dist/adapters/slack/slack-block.builder.d.ts +8 -0
  28. package/dist/adapters/slack/slack-block.builder.d.ts.map +1 -0
  29. package/dist/adapters/slack/slack-block.builder.js +117 -0
  30. package/dist/adapters/slack/slack-block.builder.js.map +1 -0
  31. package/dist/adapters/slack/slack-message.parser.d.ts +15 -0
  32. package/dist/adapters/slack/slack-message.parser.d.ts.map +1 -0
  33. package/dist/adapters/slack/slack-message.parser.js +158 -0
  34. package/dist/adapters/slack/slack-message.parser.js.map +1 -0
  35. package/dist/adapters/slack/slack-signature.d.ts +7 -0
  36. package/dist/adapters/slack/slack-signature.d.ts.map +1 -0
  37. package/dist/adapters/slack/slack-signature.js +59 -0
  38. package/dist/adapters/slack/slack-signature.js.map +1 -0
  39. package/dist/adapters/slack/slack.adapter.d.ts +67 -13
  40. package/dist/adapters/slack/slack.adapter.d.ts.map +1 -1
  41. package/dist/adapters/slack/slack.adapter.js +468 -19
  42. package/dist/adapters/slack/slack.adapter.js.map +1 -1
  43. package/dist/adapters/slack/slack.controller.d.ts +20 -0
  44. package/dist/adapters/slack/slack.controller.d.ts.map +1 -0
  45. package/dist/adapters/slack/slack.controller.js +257 -0
  46. package/dist/adapters/slack/slack.controller.js.map +1 -0
  47. package/dist/app.module.d.ts.map +1 -1
  48. package/dist/app.module.js +4 -0
  49. package/dist/app.module.js.map +1 -1
  50. package/dist/auth/auth.controller.d.ts.map +1 -1
  51. package/dist/auth/auth.controller.js +1 -0
  52. package/dist/auth/auth.controller.js.map +1 -1
  53. package/dist/auth/auth.module.d.ts.map +1 -1
  54. package/dist/auth/auth.module.js +4 -5
  55. package/dist/auth/auth.module.js.map +1 -1
  56. package/dist/auth/auth.service.d.ts +9 -2
  57. package/dist/auth/auth.service.d.ts.map +1 -1
  58. package/dist/auth/auth.service.js +50 -79
  59. package/dist/auth/auth.service.js.map +1 -1
  60. package/dist/auth/authenticated-request.d.ts +10 -0
  61. package/dist/auth/authenticated-request.d.ts.map +1 -0
  62. package/dist/auth/authenticated-request.js +3 -0
  63. package/dist/auth/authenticated-request.js.map +1 -0
  64. package/dist/auth/extract-user.middleware.d.ts.map +1 -1
  65. package/dist/auth/extract-user.middleware.js +2 -1
  66. package/dist/auth/extract-user.middleware.js.map +1 -1
  67. package/dist/auth/guards/jwt-auth.guard.d.ts.map +1 -1
  68. package/dist/auth/guards/jwt-auth.guard.js +5 -2
  69. package/dist/auth/guards/jwt-auth.guard.js.map +1 -1
  70. package/dist/auth/guards/project-role.guard.d.ts.map +1 -1
  71. package/dist/auth/guards/project-role.guard.js +6 -8
  72. package/dist/auth/guards/project-role.guard.js.map +1 -1
  73. package/dist/auth/jwt.strategy.d.ts +6 -3
  74. package/dist/auth/jwt.strategy.d.ts.map +1 -1
  75. package/dist/auth/jwt.strategy.js +15 -5
  76. package/dist/auth/jwt.strategy.js.map +1 -1
  77. package/dist/common/command-parser.d.ts +29 -0
  78. package/dist/common/command-parser.d.ts.map +1 -0
  79. package/dist/common/command-parser.js +133 -0
  80. package/dist/common/command-parser.js.map +1 -0
  81. package/dist/common/config.d.ts +17 -0
  82. package/dist/common/config.d.ts.map +1 -0
  83. package/dist/common/config.js +47 -0
  84. package/dist/common/config.js.map +1 -0
  85. package/dist/common/crypto.service.d.ts +4 -1
  86. package/dist/common/crypto.service.d.ts.map +1 -1
  87. package/dist/common/crypto.service.js +14 -7
  88. package/dist/common/crypto.service.js.map +1 -1
  89. package/dist/common/error-filter.d.ts +1 -0
  90. package/dist/common/error-filter.d.ts.map +1 -1
  91. package/dist/common/error-filter.js +6 -2
  92. package/dist/common/error-filter.js.map +1 -1
  93. package/dist/common/git-utils.d.ts +9 -0
  94. package/dist/common/git-utils.d.ts.map +1 -0
  95. package/dist/common/git-utils.js +41 -0
  96. package/dist/common/git-utils.js.map +1 -0
  97. package/dist/common/health.controller.d.ts.map +1 -1
  98. package/dist/common/health.controller.js +3 -5
  99. package/dist/common/health.controller.js.map +1 -1
  100. package/dist/common/machine-utils.d.ts +32 -0
  101. package/dist/common/machine-utils.d.ts.map +1 -0
  102. package/dist/common/machine-utils.js +12 -0
  103. package/dist/common/machine-utils.js.map +1 -0
  104. package/dist/common/pagination.d.ts +12 -5
  105. package/dist/common/pagination.d.ts.map +1 -1
  106. package/dist/common/pagination.js +27 -17
  107. package/dist/common/pagination.js.map +1 -1
  108. package/dist/common/project-validation.d.ts +7 -0
  109. package/dist/common/project-validation.d.ts.map +1 -0
  110. package/dist/common/project-validation.js +86 -0
  111. package/dist/common/project-validation.js.map +1 -0
  112. package/dist/common/rate-limit.guard.d.ts +4 -3
  113. package/dist/common/rate-limit.guard.d.ts.map +1 -1
  114. package/dist/common/rate-limit.guard.js +14 -5
  115. package/dist/common/rate-limit.guard.js.map +1 -1
  116. package/dist/common/sql-utils.d.ts +6 -0
  117. package/dist/common/sql-utils.d.ts.map +1 -0
  118. package/dist/common/sql-utils.js +11 -0
  119. package/dist/common/sql-utils.js.map +1 -0
  120. package/dist/common/string-utils.d.ts +6 -0
  121. package/dist/common/string-utils.d.ts.map +1 -0
  122. package/dist/common/string-utils.js +15 -0
  123. package/dist/common/string-utils.js.map +1 -0
  124. package/dist/common/worker-utils.d.ts +31 -0
  125. package/dist/common/worker-utils.d.ts.map +1 -0
  126. package/dist/common/worker-utils.js +12 -0
  127. package/dist/common/worker-utils.js.map +1 -0
  128. package/dist/database/base.repository.d.ts +56 -0
  129. package/dist/database/base.repository.d.ts.map +1 -0
  130. package/dist/database/base.repository.js +82 -0
  131. package/dist/database/base.repository.js.map +1 -0
  132. package/dist/database/database.service.d.ts.map +1 -1
  133. package/dist/database/database.service.js +9 -1
  134. package/dist/database/database.service.js.map +1 -1
  135. package/dist/database/migration-runner.d.ts.map +1 -1
  136. package/dist/database/migration-runner.js +2 -1
  137. package/dist/database/migration-runner.js.map +1 -1
  138. package/dist/database/repositories/audit-log.repository.d.ts.map +1 -1
  139. package/dist/database/repositories/audit-log.repository.js +16 -18
  140. package/dist/database/repositories/audit-log.repository.js.map +1 -1
  141. package/dist/database/repositories/bot.repository.d.ts +18 -32
  142. package/dist/database/repositories/bot.repository.d.ts.map +1 -1
  143. package/dist/database/repositories/bot.repository.js +42 -21
  144. package/dist/database/repositories/bot.repository.js.map +1 -1
  145. package/dist/database/repositories/developer-token.repository.d.ts +7 -17
  146. package/dist/database/repositories/developer-token.repository.d.ts.map +1 -1
  147. package/dist/database/repositories/developer-token.repository.js +24 -15
  148. package/dist/database/repositories/developer-token.repository.js.map +1 -1
  149. package/dist/database/repositories/developer.repository.d.ts +5 -1
  150. package/dist/database/repositories/developer.repository.d.ts.map +1 -1
  151. package/dist/database/repositories/developer.repository.js +60 -49
  152. package/dist/database/repositories/developer.repository.js.map +1 -1
  153. package/dist/database/repositories/machine.repository.d.ts.map +1 -1
  154. package/dist/database/repositories/machine.repository.js +2 -7
  155. package/dist/database/repositories/machine.repository.js.map +1 -1
  156. package/dist/database/repositories/notification.repository.d.ts +1 -0
  157. package/dist/database/repositories/notification.repository.d.ts.map +1 -1
  158. package/dist/database/repositories/notification.repository.js +25 -20
  159. package/dist/database/repositories/notification.repository.js.map +1 -1
  160. package/dist/database/repositories/project-member.repository.d.ts +7 -16
  161. package/dist/database/repositories/project-member.repository.d.ts.map +1 -1
  162. package/dist/database/repositories/project-member.repository.js +34 -24
  163. package/dist/database/repositories/project-member.repository.js.map +1 -1
  164. package/dist/database/repositories/project.repository.d.ts +2 -1
  165. package/dist/database/repositories/project.repository.d.ts.map +1 -1
  166. package/dist/database/repositories/project.repository.js +70 -71
  167. package/dist/database/repositories/project.repository.js.map +1 -1
  168. package/dist/database/repositories/session.repository.d.ts.map +1 -1
  169. package/dist/database/repositories/session.repository.js +22 -25
  170. package/dist/database/repositories/session.repository.js.map +1 -1
  171. package/dist/database/repositories/task.repository.d.ts +31 -7
  172. package/dist/database/repositories/task.repository.d.ts.map +1 -1
  173. package/dist/database/repositories/task.repository.js +134 -86
  174. package/dist/database/repositories/task.repository.js.map +1 -1
  175. package/dist/database/repositories/worker-token.repository.d.ts.map +1 -1
  176. package/dist/database/repositories/worker-token.repository.js +18 -16
  177. package/dist/database/repositories/worker-token.repository.js.map +1 -1
  178. package/dist/database/repositories/worker.repository.d.ts +50 -0
  179. package/dist/database/repositories/worker.repository.d.ts.map +1 -0
  180. package/dist/database/repositories/worker.repository.js +215 -0
  181. package/dist/database/repositories/worker.repository.js.map +1 -0
  182. package/dist/database/repositories/workspace.repository.d.ts +3 -2
  183. package/dist/database/repositories/workspace.repository.d.ts.map +1 -1
  184. package/dist/database/repositories/workspace.repository.js +29 -21
  185. package/dist/database/repositories/workspace.repository.js.map +1 -1
  186. package/dist/database/repository.module.d.ts +3 -0
  187. package/dist/database/repository.module.d.ts.map +1 -0
  188. package/dist/database/repository.module.js +45 -0
  189. package/dist/database/repository.module.js.map +1 -0
  190. package/dist/dispatcher/capability.service.d.ts +19 -14
  191. package/dist/dispatcher/capability.service.d.ts.map +1 -1
  192. package/dist/dispatcher/capability.service.js +77 -69
  193. package/dist/dispatcher/capability.service.js.map +1 -1
  194. package/dist/dispatcher/cleanup.service.d.ts +1 -1
  195. package/dist/dispatcher/cleanup.service.d.ts.map +1 -1
  196. package/dist/dispatcher/cleanup.service.js +13 -13
  197. package/dist/dispatcher/cleanup.service.js.map +1 -1
  198. package/dist/dispatcher/dedup.service.d.ts +17 -3
  199. package/dist/dispatcher/dedup.service.d.ts.map +1 -1
  200. package/dist/dispatcher/dedup.service.js +76 -82
  201. package/dist/dispatcher/dedup.service.js.map +1 -1
  202. package/dist/dispatcher/dispatcher.module.d.ts.map +1 -1
  203. package/dist/dispatcher/dispatcher.module.js +11 -18
  204. package/dist/dispatcher/dispatcher.module.js.map +1 -1
  205. package/dist/dispatcher/dispatcher.service.d.ts +14 -116
  206. package/dist/dispatcher/dispatcher.service.d.ts.map +1 -1
  207. package/dist/dispatcher/dispatcher.service.js +62 -940
  208. package/dist/dispatcher/dispatcher.service.js.map +1 -1
  209. package/dist/dispatcher/dispatcher.types.d.ts +33 -0
  210. package/dist/dispatcher/dispatcher.types.d.ts.map +1 -0
  211. package/dist/dispatcher/dispatcher.types.js +3 -0
  212. package/dist/dispatcher/dispatcher.types.js.map +1 -0
  213. package/dist/dispatcher/heartbeat.service.d.ts +17 -10
  214. package/dist/dispatcher/heartbeat.service.d.ts.map +1 -1
  215. package/dist/dispatcher/heartbeat.service.js +47 -51
  216. package/dist/dispatcher/heartbeat.service.js.map +1 -1
  217. package/dist/dispatcher/pty-relay.service.d.ts.map +1 -1
  218. package/dist/dispatcher/pty-relay.service.js +7 -15
  219. package/dist/dispatcher/pty-relay.service.js.map +1 -1
  220. package/dist/dispatcher/reconciler.d.ts +18 -8
  221. package/dist/dispatcher/reconciler.d.ts.map +1 -1
  222. package/dist/dispatcher/reconciler.js +219 -130
  223. package/dist/dispatcher/reconciler.js.map +1 -1
  224. package/dist/dispatcher/scheduler.service.d.ts +15 -9
  225. package/dist/dispatcher/scheduler.service.d.ts.map +1 -1
  226. package/dist/dispatcher/scheduler.service.js +95 -53
  227. package/dist/dispatcher/scheduler.service.js.map +1 -1
  228. package/dist/dispatcher/state-machine.d.ts.map +1 -1
  229. package/dist/dispatcher/state-machine.js +1 -5
  230. package/dist/dispatcher/state-machine.js.map +1 -1
  231. package/dist/dispatcher/task-creation.service.d.ts +30 -0
  232. package/dist/dispatcher/task-creation.service.d.ts.map +1 -0
  233. package/dist/dispatcher/task-creation.service.js +242 -0
  234. package/dist/dispatcher/task-creation.service.js.map +1 -0
  235. package/dist/dispatcher/task-lifecycle.service.d.ts +63 -0
  236. package/dist/dispatcher/task-lifecycle.service.d.ts.map +1 -0
  237. package/dist/dispatcher/task-lifecycle.service.js +584 -0
  238. package/dist/dispatcher/task-lifecycle.service.js.map +1 -0
  239. package/dist/dispatcher/task-log-batcher.d.ts.map +1 -1
  240. package/dist/dispatcher/task-log-batcher.js +4 -11
  241. package/dist/dispatcher/task-log-batcher.js.map +1 -1
  242. package/dist/dispatcher/worker-auth.service.d.ts +29 -0
  243. package/dist/dispatcher/worker-auth.service.d.ts.map +1 -0
  244. package/dist/dispatcher/worker-auth.service.js +296 -0
  245. package/dist/dispatcher/worker-auth.service.js.map +1 -0
  246. package/dist/dispatcher/worker-connection.manager.d.ts +15 -15
  247. package/dist/dispatcher/worker-connection.manager.d.ts.map +1 -1
  248. package/dist/dispatcher/worker-connection.manager.js +35 -43
  249. package/dist/dispatcher/worker-connection.manager.js.map +1 -1
  250. package/dist/dispatcher/worker-selector.d.ts +18 -0
  251. package/dist/dispatcher/worker-selector.d.ts.map +1 -0
  252. package/dist/dispatcher/worker-selector.js +150 -0
  253. package/dist/dispatcher/worker-selector.js.map +1 -0
  254. package/dist/events/event-types.d.ts +31 -0
  255. package/dist/events/event-types.d.ts.map +1 -0
  256. package/dist/events/event-types.js +16 -0
  257. package/dist/events/event-types.js.map +1 -0
  258. package/dist/events/events.module.d.ts +7 -0
  259. package/dist/events/events.module.d.ts.map +1 -0
  260. package/dist/events/events.module.js +26 -0
  261. package/dist/events/events.module.js.map +1 -0
  262. package/dist/main.js +22 -0
  263. package/dist/main.js.map +1 -1
  264. package/dist/notifier/debouncer.d.ts +1 -1
  265. package/dist/notifier/debouncer.d.ts.map +1 -1
  266. package/dist/notifier/debouncer.js +2 -1
  267. package/dist/notifier/debouncer.js.map +1 -1
  268. package/dist/notifier/notification-consumer.d.ts +1 -1
  269. package/dist/notifier/notification-consumer.d.ts.map +1 -1
  270. package/dist/notifier/notification-consumer.js +5 -5
  271. package/dist/notifier/notification-consumer.js.map +1 -1
  272. package/dist/notifier/notifier.module.d.ts.map +1 -1
  273. package/dist/notifier/notifier.module.js +0 -6
  274. package/dist/notifier/notifier.module.js.map +1 -1
  275. package/dist/notifier/notifier.service.d.ts +1 -1
  276. package/dist/notifier/notifier.service.d.ts.map +1 -1
  277. package/dist/notifier/notifier.service.js +7 -9
  278. package/dist/notifier/notifier.service.js.map +1 -1
  279. package/dist/notifier/template.service.d.ts +1 -1
  280. package/dist/notifier/template.service.d.ts.map +1 -1
  281. package/dist/notifier/template.service.js +6 -10
  282. package/dist/notifier/template.service.js.map +1 -1
  283. package/dist/redis/redis.service.d.ts.map +1 -1
  284. package/dist/redis/redis.service.js +2 -2
  285. package/dist/redis/redis.service.js.map +1 -1
  286. package/dist/web/admin/admin-audit.controller.d.ts.map +1 -1
  287. package/dist/web/admin/admin-audit.controller.js +2 -1
  288. package/dist/web/admin/admin-audit.controller.js.map +1 -1
  289. package/dist/web/admin/admin-bot.controller.d.ts +11 -48
  290. package/dist/web/admin/admin-bot.controller.d.ts.map +1 -1
  291. package/dist/web/admin/admin-bot.controller.js +50 -18
  292. package/dist/web/admin/admin-bot.controller.js.map +1 -1
  293. package/dist/web/admin/admin-developer.controller.d.ts +14 -27
  294. package/dist/web/admin/admin-developer.controller.d.ts.map +1 -1
  295. package/dist/web/admin/admin-developer.controller.js +62 -28
  296. package/dist/web/admin/admin-developer.controller.js.map +1 -1
  297. package/dist/web/admin/admin-machine.controller.d.ts +1 -8
  298. package/dist/web/admin/admin-machine.controller.d.ts.map +1 -1
  299. package/dist/web/admin/admin-machine.controller.js +3 -6
  300. package/dist/web/admin/admin-machine.controller.js.map +1 -1
  301. package/dist/web/admin/admin-project.controller.d.ts +9 -30
  302. package/dist/web/admin/admin-project.controller.d.ts.map +1 -1
  303. package/dist/web/admin/admin-project.controller.js +15 -60
  304. package/dist/web/admin/admin-project.controller.js.map +1 -1
  305. package/dist/web/admin/admin-settings.controller.d.ts +7 -10
  306. package/dist/web/admin/admin-settings.controller.d.ts.map +1 -1
  307. package/dist/web/admin/admin-settings.controller.js +14 -6
  308. package/dist/web/admin/admin-settings.controller.js.map +1 -1
  309. package/dist/web/admin/admin-token.controller.d.ts +6 -13
  310. package/dist/web/admin/admin-token.controller.d.ts.map +1 -1
  311. package/dist/web/admin/admin-token.controller.js +15 -27
  312. package/dist/web/admin/admin-token.controller.js.map +1 -1
  313. package/dist/web/admin/admin-worker.controller.d.ts +26 -0
  314. package/dist/web/admin/admin-worker.controller.d.ts.map +1 -0
  315. package/dist/web/admin/admin-worker.controller.js +184 -0
  316. package/dist/web/admin/admin-worker.controller.js.map +1 -0
  317. package/dist/web/dashboard.controller.d.ts +6 -12
  318. package/dist/web/dashboard.controller.d.ts.map +1 -1
  319. package/dist/web/dashboard.controller.js +30 -18
  320. package/dist/web/dashboard.controller.js.map +1 -1
  321. package/dist/web/dashboard.service.d.ts +21 -12
  322. package/dist/web/dashboard.service.d.ts.map +1 -1
  323. package/dist/web/dashboard.service.js +169 -119
  324. package/dist/web/dashboard.service.js.map +1 -1
  325. package/dist/web/event.gateway.d.ts +32 -0
  326. package/dist/web/event.gateway.d.ts.map +1 -0
  327. package/dist/web/event.gateway.js +168 -0
  328. package/dist/web/event.gateway.js.map +1 -0
  329. package/dist/web/frame-handlers/frame-handler.interface.d.ts +24 -0
  330. package/dist/web/frame-handlers/frame-handler.interface.d.ts.map +1 -0
  331. package/dist/web/frame-handlers/frame-handler.interface.js +3 -0
  332. package/dist/web/frame-handlers/frame-handler.interface.js.map +1 -0
  333. package/dist/web/frame-handlers/frame-handler.registry.d.ts +16 -0
  334. package/dist/web/frame-handlers/frame-handler.registry.d.ts.map +1 -0
  335. package/dist/web/frame-handlers/frame-handler.registry.js +39 -0
  336. package/dist/web/frame-handlers/frame-handler.registry.js.map +1 -0
  337. package/dist/web/frame-handlers/heartbeat.handler.d.ts +13 -0
  338. package/dist/web/frame-handlers/heartbeat.handler.d.ts.map +1 -0
  339. package/dist/web/frame-handlers/heartbeat.handler.js +35 -0
  340. package/dist/web/frame-handlers/heartbeat.handler.js.map +1 -0
  341. package/dist/web/frame-handlers/index.d.ts +7 -0
  342. package/dist/web/frame-handlers/index.d.ts.map +1 -0
  343. package/dist/web/frame-handlers/index.js +14 -0
  344. package/dist/web/frame-handlers/index.js.map +1 -0
  345. package/dist/web/frame-handlers/progress.handler.d.ts +25 -0
  346. package/dist/web/frame-handlers/progress.handler.d.ts.map +1 -0
  347. package/dist/web/frame-handlers/progress.handler.js +69 -0
  348. package/dist/web/frame-handlers/progress.handler.js.map +1 -0
  349. package/dist/web/frame-handlers/stage-confirm.handler.d.ts +15 -0
  350. package/dist/web/frame-handlers/stage-confirm.handler.d.ts.map +1 -0
  351. package/dist/web/frame-handlers/stage-confirm.handler.js +39 -0
  352. package/dist/web/frame-handlers/stage-confirm.handler.js.map +1 -0
  353. package/dist/web/frame-handlers/tunnel.handler.d.ts +10 -0
  354. package/dist/web/frame-handlers/tunnel.handler.d.ts.map +1 -0
  355. package/dist/web/frame-handlers/tunnel.handler.js +31 -0
  356. package/dist/web/frame-handlers/tunnel.handler.js.map +1 -0
  357. package/dist/web/interaction.service.d.ts +0 -4
  358. package/dist/web/interaction.service.d.ts.map +1 -1
  359. package/dist/web/interaction.service.js +0 -10
  360. package/dist/web/interaction.service.js.map +1 -1
  361. package/dist/web/machine.controller.d.ts +1 -8
  362. package/dist/web/machine.controller.d.ts.map +1 -1
  363. package/dist/web/machine.controller.js +6 -9
  364. package/dist/web/machine.controller.js.map +1 -1
  365. package/dist/web/notification.controller.d.ts +1 -8
  366. package/dist/web/notification.controller.d.ts.map +1 -1
  367. package/dist/web/notification.controller.js +3 -2
  368. package/dist/web/notification.controller.js.map +1 -1
  369. package/dist/web/profile.controller.d.ts +19 -10
  370. package/dist/web/profile.controller.d.ts.map +1 -1
  371. package/dist/web/profile.controller.js +100 -13
  372. package/dist/web/profile.controller.js.map +1 -1
  373. package/dist/web/project-member.service.d.ts +16 -0
  374. package/dist/web/project-member.service.d.ts.map +1 -0
  375. package/dist/web/project-member.service.js +90 -0
  376. package/dist/web/project-member.service.js.map +1 -0
  377. package/dist/web/project.controller.d.ts +43 -26
  378. package/dist/web/project.controller.d.ts.map +1 -1
  379. package/dist/web/project.controller.js +73 -46
  380. package/dist/web/project.controller.js.map +1 -1
  381. package/dist/web/pty.gateway.d.ts +9 -3
  382. package/dist/web/pty.gateway.d.ts.map +1 -1
  383. package/dist/web/pty.gateway.js +56 -22
  384. package/dist/web/pty.gateway.js.map +1 -1
  385. package/dist/web/search.service.d.ts +9 -2
  386. package/dist/web/search.service.d.ts.map +1 -1
  387. package/dist/web/search.service.js +53 -26
  388. package/dist/web/search.service.js.map +1 -1
  389. package/dist/web/task.controller.d.ts +15 -24
  390. package/dist/web/task.controller.d.ts.map +1 -1
  391. package/dist/web/task.controller.js +70 -53
  392. package/dist/web/task.controller.js.map +1 -1
  393. package/dist/web/tunnel.service.d.ts +74 -0
  394. package/dist/web/tunnel.service.d.ts.map +1 -0
  395. package/dist/web/tunnel.service.js +250 -0
  396. package/dist/web/tunnel.service.js.map +1 -0
  397. package/dist/web/web-event.service.d.ts +25 -0
  398. package/dist/web/web-event.service.d.ts.map +1 -0
  399. package/dist/web/web-event.service.js +116 -0
  400. package/dist/web/web-event.service.js.map +1 -0
  401. package/dist/web/web.module.d.ts.map +1 -1
  402. package/dist/web/web.module.js +13 -28
  403. package/dist/web/web.module.js.map +1 -1
  404. package/dist/web/worker-channel.gateway.d.ts +10 -18
  405. package/dist/web/worker-channel.gateway.d.ts.map +1 -1
  406. package/dist/web/worker-channel.gateway.js +70 -144
  407. package/dist/web/worker-channel.gateway.js.map +1 -1
  408. package/dist/web/worker-web.controller.d.ts +15 -0
  409. package/dist/web/worker-web.controller.d.ts.map +1 -0
  410. package/dist/web/worker-web.controller.js +143 -0
  411. package/dist/web/worker-web.controller.js.map +1 -0
  412. package/dist/web/worker.controller.d.ts +3 -3
  413. package/dist/web/worker.controller.d.ts.map +1 -1
  414. package/dist/web/worker.controller.js +8 -8
  415. package/dist/web/worker.controller.js.map +1 -1
  416. package/dist/web/workspace.controller.d.ts +8 -33
  417. package/dist/web/workspace.controller.d.ts.map +1 -1
  418. package/dist/web/workspace.controller.js +93 -205
  419. package/dist/web/workspace.controller.js.map +1 -1
  420. package/package.json +10 -2
  421. package/public/apple-touch-icon-120x120.png +0 -0
  422. package/public/apple-touch-icon-152x152.png +0 -0
  423. package/public/apple-touch-icon-180x180.png +0 -0
  424. package/public/assets/AccessTokensPage-DPQB2fbi.js +1 -0
  425. package/public/assets/AdminPage-BqVelYNu.js +1 -0
  426. package/public/assets/ApiReferencePage-CiGvbLxL.js +1 -0
  427. package/public/assets/AuditLogPage-DSo4jVYm.js +6 -0
  428. package/public/assets/BindPlatformPage-CTqzpOmt.js +1 -0
  429. package/public/assets/BotManage-CIR0rrK7.js +6 -0
  430. package/public/assets/CliReferencePage-C8GmlwUz.js +14 -0
  431. package/public/assets/DeveloperManage-r6y2AoB4.js +16 -0
  432. package/public/assets/EditProjectPage-7WCsNltj.js +2 -0
  433. package/public/assets/{EmptyState-BOXPalWI.js → EmptyState-D3foEiul.js} +1 -1
  434. package/public/assets/HomePage-D4yv4orb.js +1 -0
  435. package/public/assets/InfoRow-DhdTYoY9.js +1 -0
  436. package/public/assets/LandingPage-CqS0E2eC.js +43 -0
  437. package/public/assets/LoginPage-DDXkdcz_.js +1 -0
  438. package/public/assets/MetricBar-DMMHfS0A.js +1 -0
  439. package/public/assets/{NotFoundPage-griwga5q.js → NotFoundPage-D5x5BrlX.js} +1 -1
  440. package/public/assets/OnboardingGuide-D8RyPcEd.js +1 -0
  441. package/public/assets/PipelineEditorPage-y2-Q8ofQ.js +3 -0
  442. package/public/assets/ProfilePage-DN7usHOi.js +1 -0
  443. package/public/assets/ProjectDetailPage-DJexg49z.js +7 -0
  444. package/public/assets/ProjectListPage-Bz7I2D0H.js +6 -0
  445. package/public/assets/QuickAuth-Dr0Q50ld.js +1 -0
  446. package/public/assets/{RemoveMemberConfirmDialog-I3k9sPON.js → RemoveMemberConfirmDialog-BCrue0AP.js} +2 -2
  447. package/public/assets/Select-BnV8yZlD.js +6 -0
  448. package/public/assets/SettingsPage-HaUCcsgl.js +6 -0
  449. package/public/assets/{Skeleton-0JE10nwo.js → Skeleton-DUgWc2LJ.js} +1 -1
  450. package/public/assets/SkillPage-BInwZTQh.js +1 -0
  451. package/public/assets/TaskDetailPage-CfwEj1hy.js +31 -0
  452. package/public/assets/TaskListPage-Dh59ldSZ.js +1 -0
  453. package/public/assets/TaskStatusBadge-DuOoGIwE.js +1 -0
  454. package/public/assets/TerminalHomePage-BwXJjr-a.js +16 -0
  455. package/public/assets/TokenManage-B0Cpv6SO.js +1 -0
  456. package/public/assets/TotpSetupPage-MSCCURj9.js +9 -0
  457. package/public/assets/WorkerDetailPage-R2veIzKo.js +1 -0
  458. package/public/assets/WorkerListPage-CserMjGO.js +6 -0
  459. package/public/assets/WorkerSetupGuidePage-SqO2lzVa.js +11 -0
  460. package/public/assets/{arrow-left-C-OTbm1J.js → arrow-left-DklRsENx.js} +1 -1
  461. package/public/assets/{arrow-right-B5aaHrGs.js → arrow-right-MDrzFe3K.js} +1 -1
  462. package/public/assets/{bot-KMbKzBkt.js → bot-DPaziJPf.js} +1 -1
  463. package/public/assets/{chevron-right-CVPdQ-cP.js → chevron-right-CqyufMDW.js} +1 -1
  464. package/public/assets/{copy-Dd1cNNWz.js → copy-BUH7P2Hf.js} +1 -1
  465. package/public/assets/date-BdNtiQTP.js +1 -0
  466. package/public/assets/{external-link-F-d1_j4T.js → external-link-ChPgQ7N_.js} +1 -1
  467. package/public/assets/index-BS0Fbx5V.css +1 -0
  468. package/public/assets/index-vL7aQJNr.js +225 -0
  469. package/public/assets/{key-CT_RkMPI.js → key-CxvwwHnW.js} +1 -1
  470. package/public/assets/{loader-circle-BnJr5Xpn.js → loader-circle-DS5g1-Od.js} +1 -1
  471. package/public/assets/password-CHk45-jw.js +1 -0
  472. package/public/assets/{pencil-Srq1Z7Yh.js → pencil-B6spIBcw.js} +1 -1
  473. package/public/assets/{plus-Ry_MQV9O.js → plus-Bnd1Vz2Y.js} +1 -1
  474. package/public/assets/{rotate-ccw-B1ZO6xeO.js → rotate-ccw-CgcLAXNR.js} +1 -1
  475. package/public/assets/{scroll-text-CP6Z7Xff.js → scroll-text-CecZ0Fk5.js} +1 -1
  476. package/public/assets/{settings-Ac7uhvR0.js → settings-C1uOD3PZ.js} +1 -1
  477. package/public/assets/status-colors-BPEUp90-.js +1 -0
  478. package/public/assets/string-B39tzdVK.js +1 -0
  479. package/public/assets/task-constants-BbFyCyKk.js +14 -0
  480. package/public/assets/task.store-BE6fEPu4.js +1 -0
  481. package/public/assets/{trash-2-DWv3OoER.js → trash-2-A2FsT1yG.js} +1 -1
  482. package/public/assets/useFetch-vGZMAvGi.js +1 -0
  483. package/public/assets/{users-BsM5ZXj8.js → users-CEdRS_A3.js} +1 -1
  484. package/public/assets/wifi-D60NkK6F.js +6 -0
  485. package/public/assets/zap-DXw1NrWz.js +6 -0
  486. package/public/icon-192x192.png +0 -0
  487. package/public/icon-512x512.png +0 -0
  488. package/public/icon-maskable-192x192.png +0 -0
  489. package/public/icon-maskable-512x512.png +0 -0
  490. package/public/index.html +21 -4
  491. package/public/manifest.webmanifest +1 -0
  492. package/public/og-image.png +0 -0
  493. package/public/registerSW.js +1 -0
  494. package/public/sw.js +1 -0
  495. package/public/workbox-6e9b121d.js +1 -0
  496. package/database/migrations/002-add-indexes.sql +0 -17
  497. package/database/migrations/003-add-settings-table.sql +0 -4
  498. package/database/migrations/004-add-developer-id-index.sql +0 -5
  499. package/database/migrations/005-add-worker-version.sql +0 -2
  500. package/database/migrations/006-add-decommission-fields.sql +0 -2
  501. package/database/migrations/007-add-ssh-url.sql +0 -1
  502. package/public/assets/AccessTokensPage-DypSjrzB.js +0 -1
  503. package/public/assets/AdminPage-BY1ub8Ur.js +0 -1
  504. package/public/assets/ApiReferencePage-X0c9Bj31.js +0 -1
  505. package/public/assets/AuditLogPage-B0bBeD2B.js +0 -6
  506. package/public/assets/BotManage-D7UIzmUX.js +0 -6
  507. package/public/assets/CliReferencePage-DAqUe3dC.js +0 -8
  508. package/public/assets/DeveloperManage-Df4qgJ4d.js +0 -16
  509. package/public/assets/EditProjectPage-B05CUiFx.js +0 -2
  510. package/public/assets/HomePage-YM1Wcq5V.js +0 -1
  511. package/public/assets/LandingPage-Dn64_5F4.js +0 -36
  512. package/public/assets/LoginPage-CcBF1jm-.js +0 -1
  513. package/public/assets/MachineDetailPage-BHzHO-jG.js +0 -1
  514. package/public/assets/MachineListPage-sTx1mDtP.js +0 -6
  515. package/public/assets/PipelineEditorPage-CZQJn5Qd.js +0 -3
  516. package/public/assets/ProfilePage-CM-HnNqC.js +0 -1
  517. package/public/assets/ProjectDetailPage-d59hpM1f.js +0 -7
  518. package/public/assets/ProjectListPage-j4xLknRG.js +0 -6
  519. package/public/assets/QuickAuth-vbGZYKLu.js +0 -1
  520. package/public/assets/Select-CmUwVfWJ.js +0 -6
  521. package/public/assets/SettingsPage-CDTheJqk.js +0 -6
  522. package/public/assets/SkillPage-ClOtPiNe.js +0 -1
  523. package/public/assets/TaskDetailPage-CG8zmgwV.js +0 -44
  524. package/public/assets/TaskListPage-BUjNGBKm.js +0 -1
  525. package/public/assets/TaskStatusBadge-C8TEMiVe.js +0 -1
  526. package/public/assets/TokenManage-U3YbhV_d.js +0 -1
  527. package/public/assets/TotpSetupPage-BlRM2OEF.js +0 -9
  528. package/public/assets/WorkerSetupGuidePage-BUTz9NXE.js +0 -16
  529. package/public/assets/index-CQojj7Zu.css +0 -1
  530. package/public/assets/index-DJxZmj6O.js +0 -212
  531. package/public/assets/protocol-C5uQmiiB.js +0 -1
  532. package/public/assets/task.store-DSX--5cK.js +0 -1
  533. /package/public/assets/{TaskDetailPage-Beg8tuEN.css → task-constants-Beg8tuEN.css} +0 -0
@@ -0,0 +1,242 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
23
+ };
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ var __metadata = (this && this.__metadata) || function (k, v) {
42
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
43
+ };
44
+ var TaskCreationService_1;
45
+ Object.defineProperty(exports, "__esModule", { value: true });
46
+ exports.TaskCreationService = void 0;
47
+ const protocol_1 = require("@overlordai/protocol");
48
+ const common_1 = require("@nestjs/common");
49
+ const event_emitter_1 = require("@nestjs/event-emitter");
50
+ const crypto = __importStar(require("node:crypto"));
51
+ const event_types_1 = require("../events/event-types");
52
+ const task_repository_1 = require("../database/repositories/task.repository");
53
+ const project_repository_1 = require("../database/repositories/project.repository");
54
+ const project_member_repository_1 = require("../database/repositories/project-member.repository");
55
+ const audit_log_repository_1 = require("../database/repositories/audit-log.repository");
56
+ const developer_repository_1 = require("../database/repositories/developer.repository");
57
+ const database_service_1 = require("../database/database.service");
58
+ const redis_service_1 = require("../redis/redis.service");
59
+ const dedup_service_1 = require("./dedup.service");
60
+ const scheduler_service_1 = require("./scheduler.service");
61
+ let TaskCreationService = TaskCreationService_1 = class TaskCreationService {
62
+ taskRepo;
63
+ projectRepo;
64
+ projectMemberRepo;
65
+ auditLogRepo;
66
+ developerRepo;
67
+ databaseService;
68
+ redis;
69
+ dedupService;
70
+ schedulerService;
71
+ eventEmitter;
72
+ logger = new common_1.Logger(TaskCreationService_1.name);
73
+ constructor(taskRepo, projectRepo, projectMemberRepo, auditLogRepo, developerRepo, databaseService, redis, dedupService, schedulerService, eventEmitter) {
74
+ this.taskRepo = taskRepo;
75
+ this.projectRepo = projectRepo;
76
+ this.projectMemberRepo = projectMemberRepo;
77
+ this.auditLogRepo = auditLogRepo;
78
+ this.developerRepo = developerRepo;
79
+ this.databaseService = databaseService;
80
+ this.redis = redis;
81
+ this.dedupService = dedupService;
82
+ this.schedulerService = schedulerService;
83
+ this.eventEmitter = eventEmitter;
84
+ }
85
+ // ---------------------------------------------------------------------------
86
+ // createTask
87
+ // ---------------------------------------------------------------------------
88
+ async createTask(request, createdBy, source) {
89
+ return this.createTaskInternal(request, createdBy, source, false);
90
+ }
91
+ async createTaskInternal(request, createdBy, source, skipDedup = false) {
92
+ // 1. Find project by key or alias
93
+ const project = this.resolveProject(request.projectKey);
94
+ if (!project) {
95
+ throw new common_1.NotFoundException(`Project '${request.projectKey}' not found`);
96
+ }
97
+ // 2. Authorization: check developer is a project member (or admin bypass)
98
+ const developer = this.developerRepo.findById(createdBy);
99
+ if (!developer) {
100
+ throw new common_1.NotFoundException(`Developer #${createdBy} not found`);
101
+ }
102
+ if (developer.role !== protocol_1.DeveloperRole.ADMIN) {
103
+ const membership = this.projectMemberRepo.findByProjectAndDeveloper(project.key, createdBy);
104
+ if (!membership) {
105
+ throw new common_1.ForbiddenException(`Developer '${developer.name}' is not a member of project '${project.key}'`);
106
+ }
107
+ }
108
+ // 3. Compute fingerprint and check dedup
109
+ const fingerprint = this.dedupService.computeFingerprint(project.key, request.description);
110
+ // 4. Snapshot config (14 fields from project)
111
+ const configSnapshot = {
112
+ repoUrl: project.repoUrl,
113
+ sshUrl: project.sshUrl,
114
+ gitPlatform: project.gitPlatform,
115
+ defaultBranch: project.defaultBranch,
116
+ workspaceRoot: project.workspaceRoot,
117
+ setupCommands: project.setupCommands,
118
+ testCommand: project.testCommand,
119
+ agentType: project.agentType,
120
+ agentCommand: project.agentCommand,
121
+ agentEnv: project.agentEnv,
122
+ allowedTools: project.allowedTools,
123
+ maxTurns: project.maxTurns,
124
+ skillsPath: project.skillsPath,
125
+ pipeline: project.pipeline,
126
+ ptyOutputFilter: project.ptyOutputFilter,
127
+ defaultReviewers: project.defaultReviewers ?? [],
128
+ };
129
+ // 5. Dedup check + insert wrapped in a SQLite transaction to prevent race condition.
130
+ // Without this, two concurrent createTask calls with the same fingerprint could both
131
+ // pass the findActiveByFingerprint check before either inserts.
132
+ const db = this.databaseService.getDb();
133
+ let task;
134
+ let dedupConflict = null;
135
+ const runCreateTransaction = db.transaction(() => {
136
+ if (!skipDedup) {
137
+ const existingTask = this.taskRepo.findActiveByFingerprint(fingerprint);
138
+ if (existingTask) {
139
+ dedupConflict = { existingTask };
140
+ return null;
141
+ }
142
+ }
143
+ try {
144
+ return this.taskRepo.create({
145
+ description: request.description,
146
+ fingerprint,
147
+ projectKey: project.key,
148
+ workerId: request.workerId,
149
+ developerId: request.developerId ?? createdBy,
150
+ configSnapshot: JSON.stringify(configSnapshot),
151
+ sourcePlatform: source?.platform,
152
+ sourceMsgId: source?.msgId,
153
+ sourceChatId: source?.chatId,
154
+ sourceAppId: source?.appId,
155
+ createdBy,
156
+ });
157
+ }
158
+ catch (err) {
159
+ // Catch UNIQUE constraint violation on fingerprint (concurrent create)
160
+ const errMsg = (0, protocol_1.getErrorMessage)(err);
161
+ if (errMsg.includes('UNIQUE') || errMsg.includes('unique')) {
162
+ throw new common_1.ConflictException('A task with the same fingerprint was just created concurrently');
163
+ }
164
+ throw err;
165
+ }
166
+ });
167
+ const result = runCreateTransaction();
168
+ if (dedupConflict !== null) {
169
+ const { existingTask } = dedupConflict;
170
+ // Store pending confirm in Redis (outside transaction — Redis is not transactional with SQLite)
171
+ const confirmKey = `pending_confirm:dedup:${crypto.randomUUID()}`;
172
+ const pendingData = JSON.stringify({
173
+ action: 'create_task',
174
+ request: { ...request, projectKey: project.key },
175
+ createdBy,
176
+ source,
177
+ existingTaskId: existingTask.id,
178
+ });
179
+ await this.redis.setex(confirmKey, protocol_1.CONFIRM_PENDING_TTL_SEC, pendingData);
180
+ // Store index from taskId to confirmKey for lookup during confirm
181
+ await this.redis.setex(`pending_confirm_idx:task:${existingTask.id}`, protocol_1.CONFIRM_PENDING_TTL_SEC, confirmKey);
182
+ throw new common_1.ConflictException({
183
+ message: `A similar task already exists: #${existingTask.id} (${existingTask.status})`,
184
+ confirmRequired: {
185
+ reason: 'duplicate_fingerprint',
186
+ message: `Task #${existingTask.id} with the same description is already ${existingTask.status}. Create anyway?`,
187
+ pendingAction: 'create_task',
188
+ taskId: existingTask.id,
189
+ confirmKey,
190
+ },
191
+ });
192
+ }
193
+ task = result;
194
+ // 6. Enqueue to BullMQ
195
+ await this.schedulerService.enqueueTask(task.id);
196
+ // 7. Emit domain event (decoupled from WebEventService)
197
+ this.eventEmitter.emit(event_types_1.DomainEvents.TASK_CREATED, {
198
+ taskId: task.id,
199
+ status: task.status,
200
+ projectKey: task.projectKey,
201
+ description: task.description,
202
+ });
203
+ this.logger.log(`Task #${task.id} created for project '${project.key}' by developer #${createdBy}`);
204
+ this.auditLogRepo.create({
205
+ userId: createdBy,
206
+ action: 'task_create',
207
+ resource: `task:${task.id}`,
208
+ detail: `Created task for project '${project.key}': ${request.description.slice(0, 100)}`,
209
+ });
210
+ return task;
211
+ }
212
+ // ---------------------------------------------------------------------------
213
+ // Helpers
214
+ // ---------------------------------------------------------------------------
215
+ resolveProject(keyOrAlias) {
216
+ if (!keyOrAlias) {
217
+ // Try default project
218
+ return this.projectRepo.findDefault();
219
+ }
220
+ // Try by key first
221
+ const byKey = this.projectRepo.findByKey(keyOrAlias);
222
+ if (byKey)
223
+ return byKey;
224
+ // Try by alias
225
+ return this.projectRepo.findByAlias(keyOrAlias);
226
+ }
227
+ };
228
+ exports.TaskCreationService = TaskCreationService;
229
+ exports.TaskCreationService = TaskCreationService = TaskCreationService_1 = __decorate([
230
+ (0, common_1.Injectable)(),
231
+ __metadata("design:paramtypes", [task_repository_1.TaskRepository,
232
+ project_repository_1.ProjectRepository,
233
+ project_member_repository_1.ProjectMemberRepository,
234
+ audit_log_repository_1.AuditLogRepository,
235
+ developer_repository_1.DeveloperRepository,
236
+ database_service_1.DatabaseService,
237
+ redis_service_1.RedisService,
238
+ dedup_service_1.DedupService,
239
+ scheduler_service_1.SchedulerService,
240
+ event_emitter_1.EventEmitter2])
241
+ ], TaskCreationService);
242
+ //# sourceMappingURL=task-creation.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-creation.service.js","sourceRoot":"","sources":["../../src/dispatcher/task-creation.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import type { Task } from '@overlordai/protocol';
2
+ import { TaskStatus } from '@overlordai/protocol';
3
+ import { TaskRepository } from '../database/repositories/task.repository';
4
+ import { AuditLogRepository } from '../database/repositories/audit-log.repository';
5
+ import { WorkspaceRepository } from '../database/repositories/workspace.repository';
6
+ import { RedisService } from '../redis/redis.service';
7
+ import { EventEmitter2 } from '@nestjs/event-emitter';
8
+ import { SchedulerService } from './scheduler.service';
9
+ import { WorkerConnectionManager } from './worker-connection.manager';
10
+ import { CleanupService } from './cleanup.service';
11
+ import { TaskCreationService } from './task-creation.service';
12
+ import { DedupService } from './dedup.service';
13
+ import type { CommandResult, PendingConfirmData } from './dispatcher.types';
14
+ export declare class TaskLifecycleService {
15
+ private readonly taskRepo;
16
+ private readonly auditLogRepo;
17
+ private readonly workspaceRepo;
18
+ private readonly redis;
19
+ private readonly schedulerService;
20
+ private readonly workerConnectionManager;
21
+ private readonly cleanupService;
22
+ private readonly taskCreationService;
23
+ private readonly dedupService;
24
+ private readonly eventEmitter;
25
+ private readonly logger;
26
+ constructor(taskRepo: TaskRepository, auditLogRepo: AuditLogRepository, workspaceRepo: WorkspaceRepository, redis: RedisService, schedulerService: SchedulerService, workerConnectionManager: WorkerConnectionManager, cleanupService: CleanupService, taskCreationService: TaskCreationService, dedupService: DedupService, eventEmitter: EventEmitter2);
27
+ cancelTask(taskId: number, cancelledBy: number): Promise<void>;
28
+ markTaskRunning(taskId: number): boolean;
29
+ markTaskTerminalFromWorker(taskId: number, targetStatus: typeof TaskStatus.FAILED | typeof TaskStatus.CANCELLED, errorMessage?: string): boolean;
30
+ retryTask(taskId: number, retriedBy: number): Promise<Task>;
31
+ executeRetry(taskId: number, retriedBy: number): Promise<Task>;
32
+ confirmStage(taskId: number, stageName: string, approved: boolean): Promise<void>;
33
+ confirmByKey(confirmKey: string, confirmed: boolean, userId?: number): Promise<CommandResult>;
34
+ resolvePendingConfirm(taskId: number, userId: number, _msgId?: string): Promise<PendingConfirmData | null>;
35
+ /**
36
+ * Update task status with CAS retry (up to CAS_MAX_RETRIES).
37
+ * Returns true if successful, throws ConflictException on exhaustion.
38
+ */
39
+ updateTaskStatusWithRetry(taskId: number, status: TaskStatus, initialRevision: number, extra?: Record<string, unknown>): boolean;
40
+ /**
41
+ * Send cancel frame to Worker and wait for ack within CANCEL_ACK_TIMEOUT_MS.
42
+ */
43
+ private sendCancelToWorkerWithAck;
44
+ /**
45
+ * Send cancel frame to Worker (fire and forget).
46
+ */
47
+ private sendCancelToWorker;
48
+ /**
49
+ * Check if the task's branch has an existing open MR/PR on the Git platform.
50
+ * Returns the MR/PR URL if found, null otherwise.
51
+ * On timeout or error, returns null (allows retry to proceed).
52
+ */
53
+ private checkExistingMergeRequest;
54
+ /**
55
+ * Query GitLab API for open merge requests on a branch.
56
+ */
57
+ private checkGitLabMergeRequest;
58
+ /**
59
+ * Query GitHub API for open pull requests on a branch.
60
+ */
61
+ private checkGitHubPullRequest;
62
+ }
63
+ //# sourceMappingURL=task-lifecycle.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-lifecycle.service.d.ts","sourceRoot":"","sources":["../../src/dispatcher/task-lifecycle.service.ts"],"names":[],"mappings":"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"}