@taico/taico 0.1.0 → 0.2.0

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 (434) hide show
  1. package/dist/agent-runs/agent-run.entity.d.ts +3 -0
  2. package/dist/agent-runs/agent-run.entity.js +14 -1
  3. package/dist/agent-runs/agent-run.entity.js.map +1 -1
  4. package/dist/agent-runs/agent-runs.controller.js +17 -2
  5. package/dist/agent-runs/agent-runs.controller.js.map +1 -1
  6. package/dist/agent-runs/agent-runs.service.js +14 -0
  7. package/dist/agent-runs/agent-runs.service.js.map +1 -1
  8. package/dist/agent-runs/dto/agent-run-response.dto.d.ts +1 -0
  9. package/dist/agent-runs/dto/agent-run-response.dto.js +12 -0
  10. package/dist/agent-runs/dto/agent-run-response.dto.js.map +1 -1
  11. package/dist/agent-runs/dto/create-agent-run.dto.d.ts +1 -0
  12. package/dist/agent-runs/dto/create-agent-run.dto.js +11 -0
  13. package/dist/agent-runs/dto/create-agent-run.dto.js.map +1 -1
  14. package/dist/agent-runs/dto/service/agent-runs.service.types.d.ts +3 -0
  15. package/dist/agent-runs/dto/update-agent-run.dto.d.ts +1 -0
  16. package/dist/agent-runs/dto/update-agent-run.dto.js +11 -0
  17. package/dist/agent-runs/dto/update-agent-run.dto.js.map +1 -1
  18. package/dist/agents/agent-execution-tokens.controller.d.ts +13 -0
  19. package/dist/agents/agent-execution-tokens.controller.js +87 -0
  20. package/dist/agents/agent-execution-tokens.controller.js.map +1 -0
  21. package/dist/agents/agents.module.js +6 -1
  22. package/dist/agents/agents.module.js.map +1 -1
  23. package/dist/agents/agents.scopes.d.ts +4 -0
  24. package/dist/agents/agents.scopes.js +4 -0
  25. package/dist/agents/agents.scopes.js.map +1 -1
  26. package/dist/agents/agents.service.d.ts +3 -0
  27. package/dist/agents/agents.service.js +15 -0
  28. package/dist/agents/agents.service.js.map +1 -1
  29. package/dist/agents/dto/agent-execution-token-response.dto.d.ts +7 -0
  30. package/dist/agents/dto/agent-execution-token-response.dto.js +58 -0
  31. package/dist/agents/dto/agent-execution-token-response.dto.js.map +1 -0
  32. package/dist/agents/dto/request-agent-execution-token.dto.d.ts +4 -0
  33. package/dist/agents/dto/request-agent-execution-token.dto.js +43 -0
  34. package/dist/agents/dto/request-agent-execution-token.dto.js.map +1 -0
  35. package/dist/app-init/agent/taico.agent.js +4 -1
  36. package/dist/app-init/agent/taico.agent.js.map +1 -1
  37. package/dist/app-init/app-init.module.js +2 -0
  38. package/dist/app-init/app-init.module.js.map +1 -1
  39. package/dist/app-init/app-init.runner.d.ts +5 -1
  40. package/dist/app-init/app-init.runner.js +50 -16
  41. package/dist/app-init/app-init.runner.js.map +1 -1
  42. package/dist/app-init/mcp/internal-worker-auth.mcp.d.ts +3 -0
  43. package/dist/app-init/mcp/internal-worker-auth.mcp.js +15 -0
  44. package/dist/app-init/mcp/internal-worker-auth.mcp.js.map +1 -0
  45. package/dist/app.module.js +24 -2
  46. package/dist/app.module.js.map +1 -1
  47. package/dist/auth/core/constants/internal-auth-target.constant.d.ts +1 -0
  48. package/dist/auth/core/constants/internal-auth-target.constant.js +10 -0
  49. package/dist/auth/core/constants/internal-auth-target.constant.js.map +1 -0
  50. package/dist/auth/core/scopes/all-api.scopes.js +4 -0
  51. package/dist/auth/core/scopes/all-api.scopes.js.map +1 -1
  52. package/dist/auth/guards/constants/headers.constants.d.ts +1 -0
  53. package/dist/auth/guards/constants/headers.constants.js +2 -1
  54. package/dist/auth/guards/constants/headers.constants.js.map +1 -1
  55. package/dist/auth/guards/decorators/current-execution-id.decorator.d.ts +1 -0
  56. package/dist/auth/guards/decorators/current-execution-id.decorator.js +11 -0
  57. package/dist/auth/guards/decorators/current-execution-id.decorator.js.map +1 -0
  58. package/dist/authorization-server/dto/register-client.dto.js +2 -2
  59. package/dist/authorization-server/dto/register-client.dto.js.map +1 -1
  60. package/dist/chat-providers/chat-provider.entity.d.ts +14 -0
  61. package/dist/chat-providers/chat-provider.entity.js +73 -0
  62. package/dist/chat-providers/chat-provider.entity.js.map +1 -0
  63. package/dist/chat-providers/chat-providers.controller.d.ts +19 -0
  64. package/dist/chat-providers/chat-providers.controller.js +179 -0
  65. package/dist/chat-providers/chat-providers.controller.js.map +1 -0
  66. package/dist/chat-providers/chat-providers.module.d.ts +2 -0
  67. package/dist/chat-providers/chat-providers.module.js +32 -0
  68. package/dist/chat-providers/chat-providers.module.js.map +1 -0
  69. package/dist/chat-providers/chat-providers.scopes.d.ts +20 -0
  70. package/dist/chat-providers/chat-providers.scopes.js +23 -0
  71. package/dist/chat-providers/chat-providers.scopes.js.map +1 -0
  72. package/dist/chat-providers/chat-providers.service.d.ts +20 -0
  73. package/dist/chat-providers/chat-providers.service.js +189 -0
  74. package/dist/chat-providers/chat-providers.service.js.map +1 -0
  75. package/dist/chat-providers/dto/http/chat-provider-params.dto.d.ts +3 -0
  76. package/dist/chat-providers/dto/http/chat-provider-params.dto.js +27 -0
  77. package/dist/chat-providers/dto/http/chat-provider-params.dto.js.map +1 -0
  78. package/dist/chat-providers/dto/http/chat-provider-response.dto.d.ts +12 -0
  79. package/dist/chat-providers/dto/http/chat-provider-response.dto.js +93 -0
  80. package/dist/chat-providers/dto/http/chat-provider-response.dto.js.map +1 -0
  81. package/dist/chat-providers/dto/http/create-chat-provider.dto.d.ts +6 -0
  82. package/dist/chat-providers/dto/http/create-chat-provider.dto.js +51 -0
  83. package/dist/chat-providers/dto/http/create-chat-provider.dto.js.map +1 -0
  84. package/dist/chat-providers/dto/http/set-active-chat-provider.dto.d.ts +3 -0
  85. package/dist/chat-providers/dto/http/set-active-chat-provider.dto.js +28 -0
  86. package/dist/chat-providers/dto/http/set-active-chat-provider.dto.js.map +1 -0
  87. package/dist/chat-providers/dto/http/update-chat-provider.dto.d.ts +5 -0
  88. package/dist/chat-providers/dto/http/update-chat-provider.dto.js +49 -0
  89. package/dist/chat-providers/dto/http/update-chat-provider.dto.js.map +1 -0
  90. package/dist/chat-providers/dto/service/chat-providers.service.types.d.ts +30 -0
  91. package/dist/chat-providers/dto/service/chat-providers.service.types.js +3 -0
  92. package/dist/chat-providers/dto/service/chat-providers.service.types.js.map +1 -0
  93. package/dist/chat-providers/enums/chat-provider-type.enum.d.ts +3 -0
  94. package/dist/chat-providers/enums/chat-provider-type.enum.js +8 -0
  95. package/dist/chat-providers/enums/chat-provider-type.enum.js.map +1 -0
  96. package/dist/chat-providers/enums/index.d.ts +1 -0
  97. package/dist/chat-providers/enums/index.js +18 -0
  98. package/dist/chat-providers/enums/index.js.map +1 -0
  99. package/dist/chat-providers/errors/chat-providers.errors.d.ts +25 -0
  100. package/dist/chat-providers/errors/chat-providers.errors.js +48 -0
  101. package/dist/chat-providers/errors/chat-providers.errors.js.map +1 -0
  102. package/dist/config/env.config.d.ts +4 -1
  103. package/dist/config/env.config.js +17 -13
  104. package/dist/config/env.config.js.map +1 -1
  105. package/dist/context/context.controller.d.ts +3 -0
  106. package/dist/context/context.controller.js +26 -0
  107. package/dist/context/context.controller.js.map +1 -1
  108. package/dist/context/context.service.d.ts +5 -2
  109. package/dist/context/context.service.js +37 -2
  110. package/dist/context/context.service.js.map +1 -1
  111. package/dist/context/dto/block-search-result.dto.d.ts +5 -0
  112. package/dist/context/dto/block-search-result.dto.js +43 -0
  113. package/dist/context/dto/block-search-result.dto.js.map +1 -0
  114. package/dist/context/dto/search-blocks-query.dto.d.ts +5 -0
  115. package/dist/context/dto/search-blocks-query.dto.js +60 -0
  116. package/dist/context/dto/search-blocks-query.dto.js.map +1 -0
  117. package/dist/context/dto/service/context.service.types.d.ts +10 -0
  118. package/dist/discovery/discovery.service.js +2 -0
  119. package/dist/discovery/discovery.service.js.map +1 -1
  120. package/dist/errors/http/error-catalog.js +54 -0
  121. package/dist/errors/http/error-catalog.js.map +1 -1
  122. package/dist/executions/dto/http/execution-list-response.dto.d.ts +8 -0
  123. package/dist/executions/dto/http/execution-list-response.dto.js +58 -0
  124. package/dist/executions/dto/http/execution-list-response.dto.js.map +1 -0
  125. package/dist/executions/dto/http/execution-response.dto.d.ts +24 -0
  126. package/dist/executions/dto/http/execution-response.dto.js +225 -0
  127. package/dist/executions/dto/http/execution-response.dto.js.map +1 -0
  128. package/dist/executions/dto/http/list-executions-query.dto.d.ts +8 -0
  129. package/dist/executions/dto/http/list-executions-query.dto.js +79 -0
  130. package/dist/executions/dto/http/list-executions-query.dto.js.map +1 -0
  131. package/dist/executions/dto/service/execution-claim.service.types.d.ts +27 -0
  132. package/dist/executions/dto/service/execution-claim.service.types.js +3 -0
  133. package/dist/executions/dto/service/execution-claim.service.types.js.map +1 -0
  134. package/dist/executions/dto/service/executions.service.types.d.ts +35 -0
  135. package/dist/executions/dto/service/executions.service.types.js +3 -0
  136. package/dist/executions/dto/service/executions.service.types.js.map +1 -0
  137. package/dist/executions/enums/index.d.ts +2 -0
  138. package/dist/executions/enums/index.js +8 -0
  139. package/dist/executions/enums/index.js.map +1 -0
  140. package/dist/executions/enums/task-execution-status.enum.d.ts +10 -0
  141. package/dist/executions/enums/task-execution-status.enum.js +15 -0
  142. package/dist/executions/enums/task-execution-status.enum.js.map +1 -0
  143. package/dist/executions/enums/worker-session-status.enum.d.ts +6 -0
  144. package/dist/executions/enums/worker-session-status.enum.js +11 -0
  145. package/dist/executions/enums/worker-session-status.enum.js.map +1 -0
  146. package/dist/executions/errors/executions.errors.d.ts +21 -0
  147. package/dist/executions/errors/executions.errors.js +41 -0
  148. package/dist/executions/errors/executions.errors.js.map +1 -0
  149. package/dist/executions/events/executions.events.d.ts +25 -0
  150. package/dist/executions/events/executions.events.js +39 -0
  151. package/dist/executions/events/executions.events.js.map +1 -0
  152. package/dist/executions/execution-claim.service.d.ts +17 -0
  153. package/dist/executions/execution-claim.service.js +368 -0
  154. package/dist/executions/execution-claim.service.js.map +1 -0
  155. package/dist/executions/execution-context-resolver.service.d.ts +21 -0
  156. package/dist/executions/execution-context-resolver.service.js +119 -0
  157. package/dist/executions/execution-context-resolver.service.js.map +1 -0
  158. package/dist/executions/execution-reconciler.service.d.ts +24 -0
  159. package/dist/executions/execution-reconciler.service.js +345 -0
  160. package/dist/executions/execution-reconciler.service.js.map +1 -0
  161. package/dist/executions/executions.controller.d.ts +8 -0
  162. package/dist/executions/executions.controller.js +70 -0
  163. package/dist/executions/executions.controller.js.map +1 -0
  164. package/dist/executions/executions.gateway.d.ts +21 -0
  165. package/dist/executions/executions.gateway.js +167 -0
  166. package/dist/executions/executions.gateway.js.map +1 -0
  167. package/dist/executions/executions.module.d.ts +2 -0
  168. package/dist/executions/executions.module.js +64 -0
  169. package/dist/executions/executions.module.js.map +1 -0
  170. package/dist/executions/executions.service.d.ts +15 -0
  171. package/dist/executions/executions.service.js +119 -0
  172. package/dist/executions/executions.service.js.map +1 -0
  173. package/dist/executions/task-execution.entity.d.ts +25 -0
  174. package/dist/executions/task-execution.entity.js +130 -0
  175. package/dist/executions/task-execution.entity.js.map +1 -0
  176. package/dist/executions/worker-session.entity.d.ts +19 -0
  177. package/dist/executions/worker-session.entity.js +103 -0
  178. package/dist/executions/worker-session.entity.js.map +1 -0
  179. package/dist/executions/worker-session.service.d.ts +24 -0
  180. package/dist/executions/worker-session.service.js +115 -0
  181. package/dist/executions/worker-session.service.js.map +1 -0
  182. package/dist/executions/workers.gateway.d.ts +25 -0
  183. package/dist/executions/workers.gateway.js +355 -0
  184. package/dist/executions/workers.gateway.js.map +1 -0
  185. package/dist/executions/workers.scopes.d.ts +8 -0
  186. package/dist/executions/workers.scopes.js +11 -0
  187. package/dist/executions/workers.scopes.js.map +1 -0
  188. package/dist/executions-v2/active/active-execution-context-resolver.service.d.ts +18 -0
  189. package/dist/executions-v2/active/active-execution-context-resolver.service.js +78 -0
  190. package/dist/executions-v2/active/active-execution-context-resolver.service.js.map +1 -0
  191. package/dist/executions-v2/active/active-task-execution.controller.d.ts +11 -0
  192. package/dist/executions-v2/active/active-task-execution.controller.js +93 -0
  193. package/dist/executions-v2/active/active-task-execution.controller.js.map +1 -0
  194. package/dist/executions-v2/active/active-task-execution.entity.d.ts +24 -0
  195. package/dist/executions-v2/active/active-task-execution.entity.js +108 -0
  196. package/dist/executions-v2/active/active-task-execution.entity.js.map +1 -0
  197. package/dist/executions-v2/active/active-task-execution.service.d.ts +24 -0
  198. package/dist/executions-v2/active/active-task-execution.service.js +127 -0
  199. package/dist/executions-v2/active/active-task-execution.service.js.map +1 -0
  200. package/dist/executions-v2/active/dto/http/active-task-execution-response.dto.d.ts +22 -0
  201. package/dist/executions-v2/active/dto/http/active-task-execution-response.dto.js +152 -0
  202. package/dist/executions-v2/active/dto/http/active-task-execution-response.dto.js.map +1 -0
  203. package/dist/executions-v2/active/dto/http/stop-active-task-execution.dto.d.ts +7 -0
  204. package/dist/executions-v2/active/dto/http/stop-active-task-execution.dto.js +58 -0
  205. package/dist/executions-v2/active/dto/http/stop-active-task-execution.dto.js.map +1 -0
  206. package/dist/executions-v2/errors/executions-v2.errors.d.ts +13 -0
  207. package/dist/executions-v2/errors/executions-v2.errors.js +31 -0
  208. package/dist/executions-v2/errors/executions-v2.errors.js.map +1 -0
  209. package/dist/executions-v2/events/execution-activity.events.d.ts +20 -0
  210. package/dist/executions-v2/events/execution-activity.events.js +15 -0
  211. package/dist/executions-v2/events/execution-activity.events.js.map +1 -0
  212. package/dist/executions-v2/execution-activity.service.d.ts +20 -0
  213. package/dist/executions-v2/execution-activity.service.js +68 -0
  214. package/dist/executions-v2/execution-activity.service.js.map +1 -0
  215. package/dist/executions-v2/executions-v2-worker.gateway.d.ts +29 -0
  216. package/dist/executions-v2/executions-v2-worker.gateway.js +149 -0
  217. package/dist/executions-v2/executions-v2-worker.gateway.js.map +1 -0
  218. package/dist/executions-v2/executions-v2.module.d.ts +2 -0
  219. package/dist/executions-v2/executions-v2.module.js +78 -0
  220. package/dist/executions-v2/executions-v2.module.js.map +1 -0
  221. package/dist/executions-v2/history/dto/http/task-execution-history-response.dto.d.ts +18 -0
  222. package/dist/executions-v2/history/dto/http/task-execution-history-response.dto.js +129 -0
  223. package/dist/executions-v2/history/dto/http/task-execution-history-response.dto.js.map +1 -0
  224. package/dist/executions-v2/history/task-execution-history-error-code.enum.d.ts +4 -0
  225. package/dist/executions-v2/history/task-execution-history-error-code.enum.js +9 -0
  226. package/dist/executions-v2/history/task-execution-history-error-code.enum.js.map +1 -0
  227. package/dist/executions-v2/history/task-execution-history-status.enum.d.ts +6 -0
  228. package/dist/executions-v2/history/task-execution-history-status.enum.js +11 -0
  229. package/dist/executions-v2/history/task-execution-history-status.enum.js.map +1 -0
  230. package/dist/executions-v2/history/task-execution-history.controller.d.ts +7 -0
  231. package/dist/executions-v2/history/task-execution-history.controller.js +51 -0
  232. package/dist/executions-v2/history/task-execution-history.controller.js.map +1 -0
  233. package/dist/executions-v2/history/task-execution-history.entity.d.ts +21 -0
  234. package/dist/executions-v2/history/task-execution-history.entity.js +113 -0
  235. package/dist/executions-v2/history/task-execution-history.entity.js.map +1 -0
  236. package/dist/executions-v2/history/task-execution-history.service.d.ts +7 -0
  237. package/dist/executions-v2/history/task-execution-history.service.js +38 -0
  238. package/dist/executions-v2/history/task-execution-history.service.js.map +1 -0
  239. package/dist/executions-v2/queue/dto/http/task-execution-queue-entry-response.dto.d.ts +8 -0
  240. package/dist/executions-v2/queue/dto/http/task-execution-queue-entry-response.dto.js +52 -0
  241. package/dist/executions-v2/queue/dto/http/task-execution-queue-entry-response.dto.js.map +1 -0
  242. package/dist/executions-v2/queue/task-execution-queue.controller.d.ts +12 -0
  243. package/dist/executions-v2/queue/task-execution-queue.controller.js +100 -0
  244. package/dist/executions-v2/queue/task-execution-queue.controller.js.map +1 -0
  245. package/dist/executions-v2/queue/task-execution-queue.entity.d.ts +9 -0
  246. package/dist/executions-v2/queue/task-execution-queue.entity.js +52 -0
  247. package/dist/executions-v2/queue/task-execution-queue.entity.js.map +1 -0
  248. package/dist/executions-v2/queue/task-execution-queue.service.d.ts +7 -0
  249. package/dist/executions-v2/queue/task-execution-queue.service.js +38 -0
  250. package/dist/executions-v2/queue/task-execution-queue.service.js.map +1 -0
  251. package/dist/executions-v2/readiness/readiness-candidate.repository.d.ts +11 -0
  252. package/dist/executions-v2/readiness/readiness-candidate.repository.js +65 -0
  253. package/dist/executions-v2/readiness/readiness-candidate.repository.js.map +1 -0
  254. package/dist/executions-v2/readiness/task-eligibility-event-source.service.d.ts +13 -0
  255. package/dist/executions-v2/readiness/task-eligibility-event-source.service.js +83 -0
  256. package/dist/executions-v2/readiness/task-eligibility-event-source.service.js.map +1 -0
  257. package/dist/executions-v2/readiness/task-eligibility-scheduler.service.d.ts +7 -0
  258. package/dist/executions-v2/readiness/task-eligibility-scheduler.service.js +41 -0
  259. package/dist/executions-v2/readiness/task-eligibility-scheduler.service.js.map +1 -0
  260. package/dist/executions-v2/readiness/task-execution-queue-populator.service.d.ts +19 -0
  261. package/dist/executions-v2/readiness/task-execution-queue-populator.service.js +138 -0
  262. package/dist/executions-v2/readiness/task-execution-queue-populator.service.js.map +1 -0
  263. package/dist/executions-v2/staleness/stale-active-task-execution-detector.service.d.ts +13 -0
  264. package/dist/executions-v2/staleness/stale-active-task-execution-detector.service.js +54 -0
  265. package/dist/executions-v2/staleness/stale-active-task-execution-detector.service.js.map +1 -0
  266. package/dist/executions-v2/staleness/stale-active-task-execution-pruner.service.d.ts +9 -0
  267. package/dist/executions-v2/staleness/stale-active-task-execution-pruner.service.js +116 -0
  268. package/dist/executions-v2/staleness/stale-active-task-execution-pruner.service.js.map +1 -0
  269. package/dist/executions-v2/staleness/stale-active-task-execution-scheduler.service.d.ts +9 -0
  270. package/dist/executions-v2/staleness/stale-active-task-execution-scheduler.service.js +62 -0
  271. package/dist/executions-v2/staleness/stale-active-task-execution-scheduler.service.js.map +1 -0
  272. package/dist/executions-v2/task-activity-projection.service.d.ts +7 -0
  273. package/dist/executions-v2/task-activity-projection.service.js +43 -0
  274. package/dist/executions-v2/task-activity-projection.service.js.map +1 -0
  275. package/dist/global-search/dto/global-search-query.dto.d.ts +5 -0
  276. package/dist/global-search/dto/global-search-query.dto.js +60 -0
  277. package/dist/global-search/dto/global-search-query.dto.js.map +1 -0
  278. package/dist/global-search/dto/global-search-result.dto.d.ts +15 -0
  279. package/dist/global-search/dto/global-search-result.dto.js +69 -0
  280. package/dist/global-search/dto/global-search-result.dto.js.map +1 -0
  281. package/dist/global-search/global-search.controller.d.ts +8 -0
  282. package/dist/global-search/global-search.controller.js +63 -0
  283. package/dist/global-search/global-search.controller.js.map +1 -0
  284. package/dist/global-search/global-search.module.d.ts +2 -0
  285. package/dist/global-search/global-search.module.js +37 -0
  286. package/dist/global-search/global-search.module.js.map +1 -0
  287. package/dist/global-search/global-search.service.d.ts +28 -0
  288. package/dist/global-search/global-search.service.js +137 -0
  289. package/dist/global-search/global-search.service.js.map +1 -0
  290. package/dist/llm/llm.module.js +2 -0
  291. package/dist/llm/llm.module.js.map +1 -1
  292. package/dist/llm/openai-responses.service.d.ts +3 -0
  293. package/dist/llm/openai-responses.service.js +20 -5
  294. package/dist/llm/openai-responses.service.js.map +1 -1
  295. package/dist/main.js +73 -30
  296. package/dist/main.js.map +1 -1
  297. package/dist/mcp-registry/dto/service/mcp-registry.service.types.d.ts +10 -0
  298. package/dist/mcp-registry/mcp-registry.module.js +2 -0
  299. package/dist/mcp-registry/mcp-registry.module.js.map +1 -1
  300. package/dist/mcp-registry/mcp-registry.service.d.ts +6 -2
  301. package/dist/mcp-registry/mcp-registry.service.js +54 -9
  302. package/dist/mcp-registry/mcp-registry.service.js.map +1 -1
  303. package/dist/migrations/1740100000000-AddChatProvidersTable.d.ts +5 -0
  304. package/dist/migrations/1740100000000-AddChatProvidersTable.js +32 -0
  305. package/dist/migrations/1740100000000-AddChatProvidersTable.js.map +1 -0
  306. package/dist/migrations/1741400000000-EnforceSingleThreadPerParentTask.d.ts +5 -0
  307. package/dist/migrations/1741400000000-EnforceSingleThreadPerParentTask.js +76 -0
  308. package/dist/migrations/1741400000000-EnforceSingleThreadPerParentTask.js.map +1 -0
  309. package/dist/migrations/1741500000000-AddExecutionPersistenceTables.d.ts +5 -0
  310. package/dist/migrations/1741500000000-AddExecutionPersistenceTables.js +84 -0
  311. package/dist/migrations/1741500000000-AddExecutionPersistenceTables.js.map +1 -0
  312. package/dist/migrations/1741600000000-AddTaskExecutionIdToAgentRuns.d.ts +5 -0
  313. package/dist/migrations/1741600000000-AddTaskExecutionIdToAgentRuns.js +66 -0
  314. package/dist/migrations/1741600000000-AddTaskExecutionIdToAgentRuns.js.map +1 -0
  315. package/dist/migrations/1741700000000-AddExecutionsV2Tables.d.ts +5 -0
  316. package/dist/migrations/1741700000000-AddExecutionsV2Tables.js +103 -0
  317. package/dist/migrations/1741700000000-AddExecutionsV2Tables.js.map +1 -0
  318. package/dist/migrations/1741800000000-AddLastHeartbeatAtToActiveExecutionsV2.d.ts +5 -0
  319. package/dist/migrations/1741800000000-AddLastHeartbeatAtToActiveExecutionsV2.js +19 -0
  320. package/dist/migrations/1741800000000-AddLastHeartbeatAtToActiveExecutionsV2.js.map +1 -0
  321. package/dist/migrations/1741900000000-AddErrorMessageToTaskExecutionHistoryV2.d.ts +6 -0
  322. package/dist/migrations/1741900000000-AddErrorMessageToTaskExecutionHistoryV2.js +20 -0
  323. package/dist/migrations/1741900000000-AddErrorMessageToTaskExecutionHistoryV2.js.map +1 -0
  324. package/dist/public/assets/index-BYBolBql.css +1 -0
  325. package/dist/public/assets/index-Cr1iblrK.js +73 -0
  326. package/dist/public/beta/assets/index-DCkmROA6.js +85 -0
  327. package/dist/public/beta/index.html +1 -1
  328. package/dist/public/index.html +2 -2
  329. package/dist/secrets/errors/secrets.errors.js +1 -1
  330. package/dist/secrets/errors/secrets.errors.js.map +1 -1
  331. package/dist/secrets/secrets-encryption.service.d.ts +1 -0
  332. package/dist/secrets/secrets-encryption.service.js +21 -6
  333. package/dist/secrets/secrets-encryption.service.js.map +1 -1
  334. package/dist/tasks/dto/service/tasks.service.types.d.ts +2 -1
  335. package/dist/tasks/dto/task-response.dto.js +1 -0
  336. package/dist/tasks/dto/task-response.dto.js.map +1 -1
  337. package/dist/tasks/events/tasks.events.d.ts +11 -0
  338. package/dist/tasks/events/tasks.events.js +8 -1
  339. package/dist/tasks/events/tasks.events.js.map +1 -1
  340. package/dist/tasks/tasks.controller.d.ts +2 -2
  341. package/dist/tasks/tasks.controller.js +14 -10
  342. package/dist/tasks/tasks.controller.js.map +1 -1
  343. package/dist/tasks/tasks.gateway.d.ts +4 -3
  344. package/dist/tasks/tasks.gateway.js +17 -0
  345. package/dist/tasks/tasks.gateway.js.map +1 -1
  346. package/dist/tasks/tasks.mcp.gateway.d.ts +1 -1
  347. package/dist/tasks/tasks.mcp.gateway.js +5 -4
  348. package/dist/tasks/tasks.mcp.gateway.js.map +1 -1
  349. package/dist/tasks/tasks.module.js +2 -0
  350. package/dist/tasks/tasks.module.js.map +1 -1
  351. package/dist/tasks/tasks.service.create-task-in-thread.spec.d.ts +1 -0
  352. package/dist/tasks/tasks.service.create-task-in-thread.spec.js +46 -0
  353. package/dist/tasks/tasks.service.create-task-in-thread.spec.js.map +1 -0
  354. package/dist/tasks/tasks.service.d.ts +3 -1
  355. package/dist/tasks/tasks.service.js +32 -20
  356. package/dist/tasks/tasks.service.js.map +1 -1
  357. package/dist/threads/chat.service.d.ts +17 -3
  358. package/dist/threads/chat.service.js +269 -11
  359. package/dist/threads/chat.service.js.map +1 -1
  360. package/dist/threads/dto/service/threads.service.types.d.ts +1 -0
  361. package/dist/threads/dto/thread-list-item-response.dto.d.ts +1 -0
  362. package/dist/threads/dto/thread-list-item-response.dto.js +8 -0
  363. package/dist/threads/dto/thread-list-item-response.dto.js.map +1 -1
  364. package/dist/threads/errors/threads.errors.d.ts +4 -1
  365. package/dist/threads/errors/threads.errors.js +8 -1
  366. package/dist/threads/errors/threads.errors.js.map +1 -1
  367. package/dist/threads/thread-state-reconciler.service.js +0 -1
  368. package/dist/threads/thread-state-reconciler.service.js.map +1 -1
  369. package/dist/threads/threads.controller.d.ts +1 -0
  370. package/dist/threads/threads.controller.js +16 -0
  371. package/dist/threads/threads.controller.js.map +1 -1
  372. package/dist/threads/threads.module.js +2 -0
  373. package/dist/threads/threads.module.js.map +1 -1
  374. package/dist/threads/threads.service.d.ts +3 -0
  375. package/dist/threads/threads.service.js +85 -14
  376. package/dist/threads/threads.service.js.map +1 -1
  377. package/dist/threads/threads.service.spec.js +41 -27
  378. package/dist/threads/threads.service.spec.js.map +1 -1
  379. package/dist/tsconfig.tsbuildinfo +1 -1
  380. package/dist/worker/auth/callback-server.d.ts +6 -0
  381. package/dist/worker/auth/callback-server.js +50 -0
  382. package/dist/worker/auth/callback-server.js.map +1 -0
  383. package/dist/worker/auth/credentials-store.d.ts +4 -0
  384. package/dist/worker/auth/credentials-store.js +23 -0
  385. package/dist/worker/auth/credentials-store.js.map +1 -0
  386. package/dist/worker/auth/oauth-client.d.ts +4 -0
  387. package/dist/worker/auth/oauth-client.js +116 -0
  388. package/dist/worker/auth/oauth-client.js.map +1 -0
  389. package/dist/worker/auth/worker-auth-client.d.ts +9 -0
  390. package/dist/worker/auth/worker-auth-client.js +35 -0
  391. package/dist/worker/auth/worker-auth-client.js.map +1 -0
  392. package/dist/worker/auth/worker-auth.types.d.ts +30 -0
  393. package/dist/worker/auth/worker-auth.types.js +3 -0
  394. package/dist/worker/auth/worker-auth.types.js.map +1 -0
  395. package/dist/worker/execution-orchestrator.d.ts +25 -0
  396. package/dist/worker/execution-orchestrator.js +186 -0
  397. package/dist/worker/execution-orchestrator.js.map +1 -0
  398. package/dist/worker/formatters/claude-message-formatter.d.ts +13 -0
  399. package/dist/worker/formatters/claude-message-formatter.js +90 -0
  400. package/dist/worker/formatters/claude-message-formatter.js.map +1 -0
  401. package/dist/worker/formatters/opencode-message-formatter.d.ts +6 -0
  402. package/dist/worker/formatters/opencode-message-formatter.js +51 -0
  403. package/dist/worker/formatters/opencode-message-formatter.js.map +1 -0
  404. package/dist/worker/helpers/ensure-repo.d.ts +1 -0
  405. package/dist/worker/helpers/ensure-repo.js +37 -0
  406. package/dist/worker/helpers/ensure-repo.js.map +1 -0
  407. package/dist/worker/helpers/prepare-workspace.d.ts +1 -0
  408. package/dist/worker/helpers/prepare-workspace.js +24 -0
  409. package/dist/worker/helpers/prepare-workspace.js.map +1 -0
  410. package/dist/worker/helpers/session-store.d.ts +2 -0
  411. package/dist/worker/helpers/session-store.js +47 -0
  412. package/dist/worker/helpers/session-store.js.map +1 -0
  413. package/dist/worker/runners/agent-runner.types.d.ts +28 -0
  414. package/dist/worker/runners/agent-runner.types.js +3 -0
  415. package/dist/worker/runners/agent-runner.types.js.map +1 -0
  416. package/dist/worker/runners/base-agent-runner.d.ts +10 -0
  417. package/dist/worker/runners/base-agent-runner.js +41 -0
  418. package/dist/worker/runners/base-agent-runner.js.map +1 -0
  419. package/dist/worker/runners/claude-agent-runner.d.ts +9 -0
  420. package/dist/worker/runners/claude-agent-runner.js +79 -0
  421. package/dist/worker/runners/claude-agent-runner.js.map +1 -0
  422. package/dist/worker/runners/opencode-agent-runner.d.ts +18 -0
  423. package/dist/worker/runners/opencode-agent-runner.js +170 -0
  424. package/dist/worker/runners/opencode-agent-runner.js.map +1 -0
  425. package/dist/worker/worker-gateway-client.d.ts +45 -0
  426. package/dist/worker/worker-gateway-client.js +332 -0
  427. package/dist/worker/worker-gateway-client.js.map +1 -0
  428. package/dist/worker/worker-mode.d.ts +6 -0
  429. package/dist/worker/worker-mode.js +40 -0
  430. package/dist/worker/worker-mode.js.map +1 -0
  431. package/package.json +19 -12
  432. package/dist/public/assets/index-DlrnfsdV.js +0 -14
  433. package/dist/public/assets/index-KcLmbe3v.css +0 -1
  434. package/dist/public/beta/assets/index-BeS9PvAQ.js +0 -85
@@ -0,0 +1,6 @@
1
+ export declare function createOAuthCallbackServer(): Promise<{
2
+ redirectUri: string;
3
+ waitForCode: (expectedState: string) => Promise<{
4
+ code: string;
5
+ }>;
6
+ }>;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createOAuthCallbackServer = createOAuthCallbackServer;
4
+ const http_1 = require("http");
5
+ async function createOAuthCallbackServer() {
6
+ const server = (0, http_1.createServer)();
7
+ let pendingResolve = null;
8
+ server.on('request', (req, res) => {
9
+ const url = new URL(req.url ?? '/', 'http://127.0.0.1');
10
+ const code = url.searchParams.get('code');
11
+ const state = url.searchParams.get('state');
12
+ if (!code || !state) {
13
+ res.statusCode = 400;
14
+ res.end('Missing code or state');
15
+ return;
16
+ }
17
+ res.statusCode = 200;
18
+ res.end('Taico worker authorization completed. You can close this tab.');
19
+ if (pendingResolve) {
20
+ pendingResolve({ code, state });
21
+ pendingResolve = null;
22
+ }
23
+ });
24
+ await new Promise((resolve, reject) => {
25
+ server.once('error', reject);
26
+ server.listen(0, '127.0.0.1', () => {
27
+ server.off('error', reject);
28
+ resolve();
29
+ });
30
+ });
31
+ const address = server.address();
32
+ if (!address || typeof address === 'string') {
33
+ throw new Error('Failed to bind local callback server');
34
+ }
35
+ const redirectUri = `http://127.0.0.1:${address.port}/callback`;
36
+ return {
37
+ redirectUri,
38
+ waitForCode: async (expectedState) => {
39
+ const result = await new Promise((resolve) => {
40
+ pendingResolve = resolve;
41
+ });
42
+ server.close();
43
+ if (result.state !== expectedState) {
44
+ throw new Error('OAuth callback state mismatch');
45
+ }
46
+ return { code: result.code };
47
+ },
48
+ };
49
+ }
50
+ //# sourceMappingURL=callback-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"callback-server.js","sourceRoot":"","sources":["../../../src/worker/auth/callback-server.ts"],"names":[],"mappings":";;AAEA,8DA2DC;AA7DD,+BAAoC;AAE7B,KAAK,UAAU,yBAAyB;IAI7C,MAAM,MAAM,GAAG,IAAA,mBAAY,GAAE,CAAC;IAC9B,IAAI,cAAc,GAEP,IAAI,CAAC;IAEhB,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAChC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,kBAAkB,CAAC,CAAC;QACxD,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAE5C,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACpB,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;YACrB,GAAG,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;YACjC,OAAO;QACT,CAAC;QAED,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;QACrB,GAAG,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;QAEzE,IAAI,cAAc,EAAE,CAAC;YACnB,cAAc,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAChC,cAAc,GAAG,IAAI,CAAC;QACxB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE;YACjC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC5B,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;IACjC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,WAAW,GAAG,oBAAoB,OAAO,CAAC,IAAI,WAAW,CAAC;IAEhE,OAAO;QACL,WAAW;QACX,WAAW,EAAE,KAAK,EAAE,aAAqB,EAAE,EAAE;YAC3C,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,CAC9B,CAAC,OAAO,EAAE,EAAE;gBACV,cAAc,GAAG,OAAO,CAAC;YAC3B,CAAC,CACF,CAAC;YACF,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,MAAM,CAAC,KAAK,KAAK,aAAa,EAAE,CAAC;gBACnC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;YACnD,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;QAC/B,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { WorkerCredentials } from './worker-auth.types';
2
+ export declare const DEFAULT_WORKER_CREDENTIALS_PATH: string;
3
+ export declare function readWorkerCredentials(credentialsPath: string): Promise<WorkerCredentials | null>;
4
+ export declare function writeWorkerCredentials(credentialsPath: string, credentials: WorkerCredentials): Promise<void>;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_WORKER_CREDENTIALS_PATH = void 0;
4
+ exports.readWorkerCredentials = readWorkerCredentials;
5
+ exports.writeWorkerCredentials = writeWorkerCredentials;
6
+ const promises_1 = require("fs/promises");
7
+ const path_1 = require("path");
8
+ const os_1 = require("os");
9
+ exports.DEFAULT_WORKER_CREDENTIALS_PATH = (0, path_1.join)((0, os_1.homedir)(), '.taico', 'worker-credentials.json');
10
+ async function readWorkerCredentials(credentialsPath) {
11
+ try {
12
+ const content = await (0, promises_1.readFile)(credentialsPath, 'utf8');
13
+ return JSON.parse(content);
14
+ }
15
+ catch {
16
+ return null;
17
+ }
18
+ }
19
+ async function writeWorkerCredentials(credentialsPath, credentials) {
20
+ await (0, promises_1.mkdir)((0, path_1.dirname)(credentialsPath), { recursive: true });
21
+ await (0, promises_1.writeFile)(credentialsPath, JSON.stringify(credentials, null, 2), 'utf8');
22
+ }
23
+ //# sourceMappingURL=credentials-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentials-store.js","sourceRoot":"","sources":["../../../src/worker/auth/credentials-store.ts"],"names":[],"mappings":";;;AAWA,sDASC;AAED,wDAMC;AA5BD,0CAAyD;AACzD,+BAAqC;AACrC,2BAA6B;AAGhB,QAAA,+BAA+B,GAAG,IAAA,WAAI,EACjD,IAAA,YAAO,GAAE,EACT,QAAQ,EACR,yBAAyB,CAC1B,CAAC;AAEK,KAAK,UAAU,qBAAqB,CACzC,eAAuB;IAEvB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,IAAA,mBAAQ,EAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAsB,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,sBAAsB,CAC1C,eAAuB,EACvB,WAA8B;IAE9B,MAAM,IAAA,gBAAK,EAAC,IAAA,cAAO,EAAC,eAAe,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,MAAM,IAAA,oBAAS,EAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACjF,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { AuthorizationServerMetadata, WorkerCredentials } from './worker-auth.types';
2
+ export declare function discoverAuthorizationServer(serverUrl: string): Promise<AuthorizationServerMetadata>;
3
+ export declare function bootstrapWorkerAuthorization(serverUrl: string, metadata: AuthorizationServerMetadata): Promise<WorkerCredentials>;
4
+ export declare function refreshWorkerToken(credentials: WorkerCredentials): Promise<WorkerCredentials>;
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.discoverAuthorizationServer = discoverAuthorizationServer;
4
+ exports.bootstrapWorkerAuthorization = bootstrapWorkerAuthorization;
5
+ exports.refreshWorkerToken = refreshWorkerToken;
6
+ const crypto_1 = require("crypto");
7
+ const internal_auth_target_constant_1 = require("../../auth/core/constants/internal-auth-target.constant");
8
+ const callback_server_1 = require("./callback-server");
9
+ const WORKER_AUTH_VERSION = '0.0.0';
10
+ const WORKER_SCOPE = internal_auth_target_constant_1.INTERNAL_WORKER_AUTH_SCOPES.map((scope) => scope.id).join(' ');
11
+ async function discoverAuthorizationServer(serverUrl) {
12
+ const discoveryUrl = `${serverUrl}/.well-known/oauth-authorization-server/mcp/${internal_auth_target_constant_1.INTERNAL_WORKER_AUTH_TARGET_ID}/${WORKER_AUTH_VERSION}`;
13
+ const response = await fetch(discoveryUrl);
14
+ if (!response.ok) {
15
+ throw new Error(`Failed to discover authorization server metadata: ${response.status} ${response.statusText}`);
16
+ }
17
+ return response.json();
18
+ }
19
+ async function bootstrapWorkerAuthorization(serverUrl, metadata) {
20
+ const callback = await (0, callback_server_1.createOAuthCallbackServer)();
21
+ const redirectUri = callback.redirectUri;
22
+ const codeVerifier = (0, crypto_1.randomBytes)(32).toString('base64url');
23
+ const codeChallenge = (0, crypto_1.createHash)('sha256')
24
+ .update(codeVerifier)
25
+ .digest('base64url');
26
+ const registrationResponse = await fetch(metadata.registration_endpoint, {
27
+ method: 'POST',
28
+ headers: { 'Content-Type': 'application/json' },
29
+ body: JSON.stringify({
30
+ client_name: `Taico Worker (${process.pid})`,
31
+ redirect_uris: [redirectUri],
32
+ grant_types: ['authorization_code', 'refresh_token'],
33
+ response_types: ['code'],
34
+ token_endpoint_auth_method: 'none',
35
+ scope: WORKER_SCOPE,
36
+ }),
37
+ });
38
+ if (!registrationResponse.ok) {
39
+ throw new Error(`Failed to register worker client: ${registrationResponse.status} ${registrationResponse.statusText}`);
40
+ }
41
+ const registration = (await registrationResponse.json());
42
+ const state = (0, crypto_1.randomBytes)(16).toString('base64url');
43
+ const authorizationUrl = new URL(metadata.authorization_endpoint);
44
+ authorizationUrl.searchParams.set('response_type', 'code');
45
+ authorizationUrl.searchParams.set('client_id', registration.client_id);
46
+ authorizationUrl.searchParams.set('redirect_uri', redirectUri);
47
+ authorizationUrl.searchParams.set('scope', WORKER_SCOPE);
48
+ authorizationUrl.searchParams.set('state', state);
49
+ authorizationUrl.searchParams.set('code_challenge', codeChallenge);
50
+ authorizationUrl.searchParams.set('code_challenge_method', 'S256');
51
+ authorizationUrl.searchParams.set('resource', `${serverUrl}/api/v1`);
52
+ console.log('[worker] Open this URL in your browser to authorize the worker:');
53
+ console.log(authorizationUrl.toString());
54
+ const callbackResult = await callback.waitForCode(state);
55
+ const tokenResponse = await exchangeAuthorizationCode(metadata.token_endpoint, {
56
+ clientId: registration.client_id,
57
+ code: callbackResult.code,
58
+ redirectUri,
59
+ codeVerifier,
60
+ });
61
+ return {
62
+ serverUrl,
63
+ clientId: registration.client_id,
64
+ redirectUri,
65
+ scope: tokenResponse.scope ?? WORKER_SCOPE,
66
+ tokenEndpoint: metadata.token_endpoint,
67
+ authorizationEndpoint: metadata.authorization_endpoint,
68
+ registrationEndpoint: metadata.registration_endpoint,
69
+ accessToken: tokenResponse.access_token,
70
+ refreshToken: tokenResponse.refresh_token ?? '',
71
+ expiresAt: computeExpirationIso(tokenResponse.expires_in),
72
+ };
73
+ }
74
+ async function refreshWorkerToken(credentials) {
75
+ const response = await fetch(credentials.tokenEndpoint, {
76
+ method: 'POST',
77
+ headers: { 'Content-Type': 'application/json' },
78
+ body: JSON.stringify({
79
+ grant_type: 'refresh_token',
80
+ client_id: credentials.clientId,
81
+ refresh_token: credentials.refreshToken,
82
+ }),
83
+ });
84
+ if (!response.ok) {
85
+ throw new Error(`Failed to refresh worker token: ${response.status} ${response.statusText}`);
86
+ }
87
+ const payload = (await response.json());
88
+ return {
89
+ ...credentials,
90
+ accessToken: payload.access_token,
91
+ refreshToken: payload.refresh_token ?? credentials.refreshToken,
92
+ expiresAt: computeExpirationIso(payload.expires_in),
93
+ scope: payload.scope ?? credentials.scope,
94
+ };
95
+ }
96
+ async function exchangeAuthorizationCode(tokenEndpoint, input) {
97
+ const response = await fetch(tokenEndpoint, {
98
+ method: 'POST',
99
+ headers: { 'Content-Type': 'application/json' },
100
+ body: JSON.stringify({
101
+ grant_type: 'authorization_code',
102
+ client_id: input.clientId,
103
+ code: input.code,
104
+ redirect_uri: input.redirectUri,
105
+ code_verifier: input.codeVerifier,
106
+ }),
107
+ });
108
+ if (!response.ok) {
109
+ throw new Error(`Failed to exchange authorization code: ${response.status} ${response.statusText}`);
110
+ }
111
+ return response.json();
112
+ }
113
+ function computeExpirationIso(expiresInSeconds) {
114
+ return new Date(Date.now() + expiresInSeconds * 1000).toISOString();
115
+ }
116
+ //# sourceMappingURL=oauth-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-client.js","sourceRoot":"","sources":["../../../src/worker/auth/oauth-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { WorkerCredentials } from './worker-auth.types';
2
+ export declare function getAuthenticatedWorkerSession(input: {
3
+ serverUrl: string;
4
+ credentialsPath?: string;
5
+ }): Promise<{
6
+ credentials: WorkerCredentials;
7
+ credentialsPath: string;
8
+ didBootstrap: boolean;
9
+ }>;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getAuthenticatedWorkerSession = getAuthenticatedWorkerSession;
4
+ const credentials_store_1 = require("./credentials-store");
5
+ const internal_auth_target_constant_1 = require("../../auth/core/constants/internal-auth-target.constant");
6
+ const oauth_client_1 = require("./oauth-client");
7
+ async function getAuthenticatedWorkerSession(input) {
8
+ const credentialsPath = input.credentialsPath ?? credentials_store_1.DEFAULT_WORKER_CREDENTIALS_PATH;
9
+ const metadata = await (0, oauth_client_1.discoverAuthorizationServer)(input.serverUrl);
10
+ let credentials = await (0, credentials_store_1.readWorkerCredentials)(credentialsPath);
11
+ let didBootstrap = false;
12
+ const requiredScopes = new Set(internal_auth_target_constant_1.INTERNAL_WORKER_AUTH_SCOPES.map((scope) => scope.id));
13
+ if (!credentials ||
14
+ credentials.serverUrl !== input.serverUrl ||
15
+ !hasRequiredScopes(credentials, requiredScopes)) {
16
+ credentials = await (0, oauth_client_1.bootstrapWorkerAuthorization)(input.serverUrl, metadata);
17
+ await (0, credentials_store_1.writeWorkerCredentials)(credentialsPath, credentials);
18
+ didBootstrap = true;
19
+ }
20
+ credentials = await (0, oauth_client_1.refreshWorkerToken)(credentials);
21
+ await (0, credentials_store_1.writeWorkerCredentials)(credentialsPath, credentials);
22
+ return {
23
+ credentials,
24
+ credentialsPath,
25
+ didBootstrap,
26
+ };
27
+ }
28
+ function hasRequiredScopes(credentials, requiredScopes) {
29
+ const grantedScopes = new Set(credentials.scope
30
+ .split(/\s+/)
31
+ .map((scope) => scope.trim())
32
+ .filter(Boolean));
33
+ return Array.from(requiredScopes).every((scope) => grantedScopes.has(scope));
34
+ }
35
+ //# sourceMappingURL=worker-auth-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-auth-client.js","sourceRoot":"","sources":["../../../src/worker/auth/worker-auth-client.ts"],"names":[],"mappings":";;AAaA,sEAmCC;AAhDD,2DAI6B;AAC7B,2GAAsG;AACtG,iDAIwB;AAGjB,KAAK,UAAU,6BAA6B,CAAC,KAGnD;IAKC,MAAM,eAAe,GACnB,KAAK,CAAC,eAAe,IAAI,mDAA+B,CAAC;IAC3D,MAAM,QAAQ,GAAG,MAAM,IAAA,0CAA2B,EAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACpE,IAAI,WAAW,GAAG,MAAM,IAAA,yCAAqB,EAAC,eAAe,CAAC,CAAC;IAC/D,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,MAAM,cAAc,GAAG,IAAI,GAAG,CAC5B,2DAA2B,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CACrD,CAAC;IAEF,IACE,CAAC,WAAW;QACZ,WAAW,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS;QACzC,CAAC,iBAAiB,CAAC,WAAW,EAAE,cAAc,CAAC,EAC/C,CAAC;QACD,WAAW,GAAG,MAAM,IAAA,2CAA4B,EAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC5E,MAAM,IAAA,0CAAsB,EAAC,eAAe,EAAE,WAAW,CAAC,CAAC;QAC3D,YAAY,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,WAAW,GAAG,MAAM,IAAA,iCAAkB,EAAC,WAAW,CAAC,CAAC;IACpD,MAAM,IAAA,0CAAsB,EAAC,eAAe,EAAE,WAAW,CAAC,CAAC;IAE3D,OAAO;QACL,WAAW;QACX,eAAe;QACf,YAAY;KACb,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CACxB,WAA8B,EAC9B,cAA2B;IAE3B,MAAM,aAAa,GAAG,IAAI,GAAG,CAC3B,WAAW,CAAC,KAAK;SACd,KAAK,CAAC,KAAK,CAAC;SACZ,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SAC5B,MAAM,CAAC,OAAO,CAAC,CACnB,CAAC;IAEF,OAAO,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/E,CAAC"}
@@ -0,0 +1,30 @@
1
+ export type AuthorizationServerMetadata = {
2
+ issuer: string;
3
+ authorization_endpoint: string;
4
+ token_endpoint: string;
5
+ registration_endpoint: string;
6
+ scopes_supported: string[];
7
+ response_types_supported: string[];
8
+ grant_types_supported: string[];
9
+ token_endpoint_auth_methods_supported: string[];
10
+ code_challenge_methods_supported: string[];
11
+ };
12
+ export type WorkerCredentials = {
13
+ serverUrl: string;
14
+ clientId: string;
15
+ redirectUri: string;
16
+ scope: string;
17
+ tokenEndpoint: string;
18
+ authorizationEndpoint: string;
19
+ registrationEndpoint: string;
20
+ accessToken: string;
21
+ refreshToken: string;
22
+ expiresAt: string;
23
+ };
24
+ export type TokenResponse = {
25
+ access_token: string;
26
+ token_type: string;
27
+ expires_in: number;
28
+ refresh_token?: string;
29
+ scope?: string;
30
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=worker-auth.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-auth.types.js","sourceRoot":"","sources":["../../../src/worker/auth/worker-auth.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,25 @@
1
+ import { WorkerGatewayClient } from './worker-gateway-client';
2
+ type ExecutionOrchestratorOptions = {
3
+ serverUrl: string;
4
+ workerAccessToken: string;
5
+ gatewayClient: WorkerGatewayClient;
6
+ };
7
+ export declare class ExecutionOrchestrator {
8
+ private readonly options;
9
+ private readonly activeExecutionIds;
10
+ constructor(options: ExecutionOrchestratorOptions);
11
+ bind(): void;
12
+ private handleRunAssigned;
13
+ private handleStopRequested;
14
+ private executeAssignedRun;
15
+ private createRunner;
16
+ private buildPrompt;
17
+ private fetchTask;
18
+ private fetchThreadByTaskId;
19
+ private fetchAgentByActorId;
20
+ private requestExecutionToken;
21
+ private resolveRepoUrl;
22
+ private fetchJson;
23
+ private errorToMessage;
24
+ }
25
+ export {};
@@ -0,0 +1,186 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ExecutionOrchestrator = void 0;
4
+ const prepare_workspace_1 = require("./helpers/prepare-workspace");
5
+ const session_store_1 = require("./helpers/session-store");
6
+ const claude_agent_runner_1 = require("./runners/claude-agent-runner");
7
+ const opencode_agent_runner_1 = require("./runners/opencode-agent-runner");
8
+ class ExecutionOrchestrator {
9
+ options;
10
+ activeExecutionIds = new Set();
11
+ constructor(options) {
12
+ this.options = options;
13
+ }
14
+ bind() {
15
+ this.options.gatewayClient.onRunAssigned((event) => {
16
+ void this.handleRunAssigned(event);
17
+ });
18
+ this.options.gatewayClient.onStopRequested((event) => {
19
+ this.handleStopRequested(event);
20
+ });
21
+ }
22
+ async handleRunAssigned(event) {
23
+ if (this.activeExecutionIds.has(event.executionId)) {
24
+ console.warn(`[worker] received duplicate run assignment for execution ${event.executionId}`);
25
+ return;
26
+ }
27
+ this.activeExecutionIds.add(event.executionId);
28
+ try {
29
+ await this.options.gatewayClient.reportRunStarted(event.executionId);
30
+ await this.executeAssignedRun(event);
31
+ await this.options.gatewayClient.reportRunCompleted(event.executionId);
32
+ }
33
+ catch (error) {
34
+ const reason = this.errorToMessage(error);
35
+ console.error(`[worker] execution ${event.executionId} failed: ${reason}`, error);
36
+ await this.options.gatewayClient.reportRunFailed(event.executionId, reason);
37
+ }
38
+ finally {
39
+ this.activeExecutionIds.delete(event.executionId);
40
+ }
41
+ }
42
+ handleStopRequested(event) {
43
+ if (!this.activeExecutionIds.has(event.executionId)) {
44
+ console.log(`[worker] stop requested for non-running execution ${event.executionId}`);
45
+ return;
46
+ }
47
+ console.log(`[worker] stop requested for execution ${event.executionId}; cancellation is not yet implemented`);
48
+ }
49
+ async executeAssignedRun(event) {
50
+ const task = await this.fetchTask(event.taskId);
51
+ const agent = await this.fetchAgentByActorId(event.agentActorId);
52
+ if (!agent.systemPrompt) {
53
+ throw new Error(`Agent @${agent.slug} has no system prompt configured`);
54
+ }
55
+ const executionToken = await this.requestExecutionToken(agent.slug);
56
+ const repoUrl = await this.resolveRepoUrl(task.tags ?? []);
57
+ const workspaceDir = await (0, prepare_workspace_1.prepareWorkspace)(task.id, agent.actorId, repoUrl);
58
+ const thread = await this.fetchThreadByTaskId(task.id);
59
+ const runner = this.createRunner(agent.type);
60
+ console.log(`[worker] executing ${event.executionId} for task ${task.id} with @${agent.slug} in ${workspaceDir}`);
61
+ await runner.run({
62
+ taskId: task.id,
63
+ prompt: this.buildPrompt(task, agent, thread),
64
+ cwd: workspaceDir,
65
+ executionId: event.executionId,
66
+ accessToken: executionToken,
67
+ baseUrl: this.options.serverUrl,
68
+ resume: (0, session_store_1.getSession)(agent.actorId, task.id) ?? undefined,
69
+ agentSlug: agent.slug,
70
+ options: {
71
+ model: agent.providerId && agent.modelId
72
+ ? `${agent.providerId}/${agent.modelId}`
73
+ : undefined,
74
+ },
75
+ }, {
76
+ onEvent: async (message) => {
77
+ console.log(`[worker][${event.executionId}] ${message}`);
78
+ },
79
+ onSession: async (sessionId) => {
80
+ (0, session_store_1.setSession)(agent.actorId, task.id, sessionId);
81
+ },
82
+ onError: async (runnerError) => {
83
+ console.error(`[worker][${event.executionId}] runner error: ${runnerError.message}`, runnerError.rawMessage);
84
+ },
85
+ });
86
+ }
87
+ createRunner(agentType) {
88
+ if (agentType === 'claude') {
89
+ return new claude_agent_runner_1.ClaudeAgentRunner();
90
+ }
91
+ if (agentType === 'opencode') {
92
+ return new opencode_agent_runner_1.OpencodeAgentRunner();
93
+ }
94
+ throw new Error(`Agent type "${agentType}" is not yet supported by backend worker mode`);
95
+ }
96
+ buildPrompt(task, agent, thread) {
97
+ const lines = [
98
+ `You got triggered by new activity in task "${task.id}".`,
99
+ 'Fetch the task and proceed according to the following instructions.',
100
+ ];
101
+ if (thread) {
102
+ lines.push('', 'Thread context:', `- This task belongs to thread "${thread.id}" (${thread.title}).`, `- This task is ${thread.parentTaskId === task.id ? 'the parent task' : 'an attached task'} in that thread.`, `- Read shared thread memory at the start via mcp__context__get_thread_state_memory with threadId "${thread.id}".`, `- Check sibling task status via mcp__tasks__list_tasks_by_thread with threadId "${thread.id}".`, '- Keep decisions aligned with this shared memory and thread-level goal, not only this single task.');
103
+ }
104
+ lines.push('', agent.systemPrompt);
105
+ return lines.join('\n');
106
+ }
107
+ async fetchTask(taskId) {
108
+ return this.fetchJson(`/api/v1/tasks/tasks/${taskId}`);
109
+ }
110
+ async fetchThreadByTaskId(taskId) {
111
+ try {
112
+ return await this.fetchJson(`/api/v1/threads/by-task/${taskId}`);
113
+ }
114
+ catch (error) {
115
+ const message = this.errorToMessage(error);
116
+ if (message.includes('HTTP 404')) {
117
+ return null;
118
+ }
119
+ throw error;
120
+ }
121
+ }
122
+ async fetchAgentByActorId(actorId) {
123
+ const response = await this.fetchJson('/api/v1/agents?limit=200');
124
+ const agent = response.items.find((item) => item.actorId === actorId);
125
+ if (!agent) {
126
+ throw new Error(`No agent found for actor ${actorId}`);
127
+ }
128
+ return agent;
129
+ }
130
+ async requestExecutionToken(agentSlug) {
131
+ const response = await this.fetchJson(`/api/v1/agents/${agentSlug}/execution-token`, {
132
+ method: 'POST',
133
+ body: JSON.stringify({
134
+ scopes: ['tasks:read', 'tasks:write', 'context:read', 'context:write'],
135
+ expirationSeconds: 3600,
136
+ }),
137
+ });
138
+ return response.token;
139
+ }
140
+ async resolveRepoUrl(tags) {
141
+ const projectTag = tags.find((tag) => tag.name.startsWith('project:'));
142
+ if (!projectTag) {
143
+ return null;
144
+ }
145
+ const slug = projectTag.name.slice('project:'.length);
146
+ if (!slug) {
147
+ return null;
148
+ }
149
+ try {
150
+ const project = await this.fetchJson(`/api/v1/meta/projects/by-slug/${slug}`);
151
+ return project.repoUrl ?? null;
152
+ }
153
+ catch (error) {
154
+ const message = this.errorToMessage(error);
155
+ if (message.includes('HTTP 404')) {
156
+ return null;
157
+ }
158
+ throw error;
159
+ }
160
+ }
161
+ async fetchJson(path, init) {
162
+ const response = await fetch(`${this.options.serverUrl}${path}`, {
163
+ ...init,
164
+ headers: {
165
+ Authorization: `Bearer ${this.options.workerAccessToken}`,
166
+ 'Content-Type': 'application/json',
167
+ ...(init?.headers ?? {}),
168
+ },
169
+ });
170
+ if (!response.ok) {
171
+ throw new Error(`HTTP ${response.status} when requesting ${path}: ${response.statusText}`);
172
+ }
173
+ return (await response.json());
174
+ }
175
+ errorToMessage(error) {
176
+ if (error instanceof Error) {
177
+ return error.message;
178
+ }
179
+ if (typeof error === 'string') {
180
+ return error;
181
+ }
182
+ return String(error);
183
+ }
184
+ }
185
+ exports.ExecutionOrchestrator = ExecutionOrchestrator;
186
+ //# sourceMappingURL=execution-orchestrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-orchestrator.js","sourceRoot":"","sources":["../../src/worker/execution-orchestrator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { SDKMessage } from '@anthropic-ai/claude-agent-sdk';
2
+ export declare class ClaudeMessageFormatter {
3
+ private readonly agentSlug?;
4
+ constructor(agentSlug?: string | undefined);
5
+ format(message: SDKMessage): string | null;
6
+ private formatAssistant;
7
+ private formatUser;
8
+ private formatResult;
9
+ private formatSystem;
10
+ private formatStreamEvent;
11
+ private formatToolProgress;
12
+ private formatAuthStatus;
13
+ }
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ClaudeMessageFormatter = void 0;
4
+ class ClaudeMessageFormatter {
5
+ agentSlug;
6
+ constructor(agentSlug) {
7
+ this.agentSlug = agentSlug;
8
+ }
9
+ format(message) {
10
+ switch (message.type) {
11
+ case 'assistant':
12
+ return this.formatAssistant(message);
13
+ case 'user':
14
+ return this.formatUser(message);
15
+ case 'result':
16
+ return this.formatResult(message);
17
+ case 'system':
18
+ return this.formatSystem(message);
19
+ case 'stream_event':
20
+ return this.formatStreamEvent(message);
21
+ case 'tool_progress':
22
+ return this.formatToolProgress(message);
23
+ case 'auth_status':
24
+ return this.formatAuthStatus(message);
25
+ default:
26
+ return null;
27
+ }
28
+ }
29
+ formatAssistant(message) {
30
+ const parts = [];
31
+ const content = message.message?.content;
32
+ if (!Array.isArray(content)) {
33
+ return null;
34
+ }
35
+ const agentLabel = this.agentSlug ? `@${this.agentSlug}` : 'Assistant';
36
+ for (const chunk of content) {
37
+ if (chunk.type === 'tool_use') {
38
+ parts.push(`🔧 ${agentLabel} Tool call: ${chunk.name}`);
39
+ }
40
+ else if (chunk.type === 'text') {
41
+ parts.push(`💬 ${agentLabel}: ${chunk.text}`);
42
+ }
43
+ }
44
+ return parts.length > 0 ? parts.join('\n') : null;
45
+ }
46
+ formatUser(message) {
47
+ const parts = [];
48
+ const content = message.message?.content;
49
+ if (!Array.isArray(content)) {
50
+ return null;
51
+ }
52
+ for (const chunk of content) {
53
+ if (chunk.type === 'text') {
54
+ parts.push(`👤 User: ${chunk.text}`);
55
+ }
56
+ }
57
+ return parts.length > 0 ? parts.join('\n') : null;
58
+ }
59
+ formatResult(message) {
60
+ const agentLabel = this.agentSlug ? `@${this.agentSlug}` : 'Assistant';
61
+ if (message.subtype === 'success' && typeof message.result === 'string') {
62
+ return [`--- ${agentLabel} turn complete ---`, message.result, '---------------------------'].join('\n');
63
+ }
64
+ return `✅ ${agentLabel} result received`;
65
+ }
66
+ formatSystem(message) {
67
+ const agentLabel = this.agentSlug ? `@${this.agentSlug}` : 'Assistant';
68
+ if (message.subtype === 'init') {
69
+ return [
70
+ `🧠 ${agentLabel} Claude initialized`,
71
+ `- Permissions: ${message.permissionMode}`,
72
+ `- Tools: ${message.tools.length}`,
73
+ `- MCP Servers: ${message.mcp_servers.length}`,
74
+ ].join('\n');
75
+ }
76
+ return null;
77
+ }
78
+ formatStreamEvent(_) {
79
+ return null;
80
+ }
81
+ formatToolProgress(_) {
82
+ return null;
83
+ }
84
+ formatAuthStatus(_) {
85
+ const agentLabel = this.agentSlug ? `@${this.agentSlug}` : 'Assistant';
86
+ return `🔐 ${agentLabel} Auth status updated`;
87
+ }
88
+ }
89
+ exports.ClaudeMessageFormatter = ClaudeMessageFormatter;
90
+ //# sourceMappingURL=claude-message-formatter.js.map