@mndrk/agx 2.0.47 → 2.0.49

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 (486) hide show
  1. package/cloud-runtime/standalone/.next/BUILD_ID +1 -1
  2. package/cloud-runtime/standalone/.next/build-manifest.json +2 -2
  3. package/cloud-runtime/standalone/.next/prerender-manifest.json +3 -3
  4. package/cloud-runtime/standalone/.next/server/app/_global-error.html +2 -2
  5. package/cloud-runtime/standalone/.next/server/app/_global-error.rsc +1 -1
  6. package/cloud-runtime/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  7. package/cloud-runtime/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  8. package/cloud-runtime/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  9. package/cloud-runtime/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  10. package/cloud-runtime/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  11. package/cloud-runtime/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  12. package/cloud-runtime/standalone/.next/server/app/_not-found.html +2 -2
  13. package/cloud-runtime/standalone/.next/server/app/_not-found.rsc +2 -2
  14. package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  15. package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  16. package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  17. package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  18. package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  19. package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  20. package/cloud-runtime/standalone/.next/server/app/agents/[id]/page.js.nft.json +1 -1
  21. package/cloud-runtime/standalone/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -1
  22. package/cloud-runtime/standalone/.next/server/app/agents/page.js.nft.json +1 -1
  23. package/cloud-runtime/standalone/.next/server/app/agents/page_client-reference-manifest.js +1 -1
  24. package/cloud-runtime/standalone/.next/server/app/agents.html +2 -2
  25. package/cloud-runtime/standalone/.next/server/app/agents.rsc +3 -3
  26. package/cloud-runtime/standalone/.next/server/app/agents.segments/_full.segment.rsc +3 -3
  27. package/cloud-runtime/standalone/.next/server/app/agents.segments/_head.segment.rsc +1 -1
  28. package/cloud-runtime/standalone/.next/server/app/agents.segments/_index.segment.rsc +2 -2
  29. package/cloud-runtime/standalone/.next/server/app/agents.segments/_tree.segment.rsc +2 -2
  30. package/cloud-runtime/standalone/.next/server/app/agents.segments/agents/__PAGE__.segment.rsc +2 -2
  31. package/cloud-runtime/standalone/.next/server/app/agents.segments/agents.segment.rsc +1 -1
  32. package/cloud-runtime/standalone/.next/server/app/api/agent-specs/route.js +1 -1
  33. package/cloud-runtime/standalone/.next/server/app/api/agent-specs/route.js.nft.json +1 -1
  34. package/cloud-runtime/standalone/.next/server/app/api/agents/[id]/profile/route.js +1 -1
  35. package/cloud-runtime/standalone/.next/server/app/api/agents/[id]/profile/route.js.nft.json +1 -1
  36. package/cloud-runtime/standalone/.next/server/app/api/agents/export/route.js +1 -1
  37. package/cloud-runtime/standalone/.next/server/app/api/agents/export/route.js.nft.json +1 -1
  38. package/cloud-runtime/standalone/.next/server/app/api/automations/create/route.js.nft.json +1 -1
  39. package/cloud-runtime/standalone/.next/server/app/api/automations/route.js.nft.json +1 -1
  40. package/cloud-runtime/standalone/.next/server/app/api/chat/route.js +13 -7
  41. package/cloud-runtime/standalone/.next/server/app/api/chat/route.js.nft.json +1 -1
  42. package/cloud-runtime/standalone/.next/server/app/api/file-search/route.js.nft.json +1 -1
  43. package/cloud-runtime/standalone/.next/server/app/api/graphs/[graphId]/nodes/[nodeId]/route.js.nft.json +1 -1
  44. package/cloud-runtime/standalone/.next/server/app/api/health/route.js +1 -1
  45. package/cloud-runtime/standalone/.next/server/app/api/health/route.js.nft.json +1 -1
  46. package/cloud-runtime/standalone/.next/server/app/api/knowledge-notes/route.js +1 -1
  47. package/cloud-runtime/standalone/.next/server/app/api/knowledge-notes/route.js.nft.json +1 -1
  48. package/cloud-runtime/standalone/.next/server/app/api/learnings/route.js +1 -1
  49. package/cloud-runtime/standalone/.next/server/app/api/learnings/route.js.nft.json +1 -1
  50. package/cloud-runtime/standalone/.next/server/app/api/linear/callback/route.js +1 -1
  51. package/cloud-runtime/standalone/.next/server/app/api/linear/callback/route.js.nft.json +1 -1
  52. package/cloud-runtime/standalone/.next/server/app/api/linear/cycles/route.js +1 -1
  53. package/cloud-runtime/standalone/.next/server/app/api/linear/cycles/route.js.nft.json +1 -1
  54. package/cloud-runtime/standalone/.next/server/app/api/linear/issues/context/route.js +1 -1
  55. package/cloud-runtime/standalone/.next/server/app/api/linear/issues/context/route.js.nft.json +1 -1
  56. package/cloud-runtime/standalone/.next/server/app/api/linear/issues/route.js +1 -1
  57. package/cloud-runtime/standalone/.next/server/app/api/linear/issues/route.js.nft.json +1 -1
  58. package/cloud-runtime/standalone/.next/server/app/api/linear/options/route.js +3 -3
  59. package/cloud-runtime/standalone/.next/server/app/api/linear/options/route.js.nft.json +1 -1
  60. package/cloud-runtime/standalone/.next/server/app/api/linear/status/route.js +1 -1
  61. package/cloud-runtime/standalone/.next/server/app/api/linear/status/route.js.nft.json +1 -1
  62. package/cloud-runtime/standalone/.next/server/app/api/linear/token/route.js +1 -1
  63. package/cloud-runtime/standalone/.next/server/app/api/linear/token/route.js.nft.json +1 -1
  64. package/cloud-runtime/standalone/.next/server/app/api/memories/route.js +1 -1
  65. package/cloud-runtime/standalone/.next/server/app/api/memories/route.js.nft.json +1 -1
  66. package/cloud-runtime/standalone/.next/server/app/api/orchestrator/tasks/[taskId]/start/route.js +1 -1
  67. package/cloud-runtime/standalone/.next/server/app/api/orchestrator/tasks/[taskId]/start/route.js.nft.json +1 -1
  68. package/cloud-runtime/standalone/.next/server/app/api/orchestrator/tasks/[taskId]/status/route.js +1 -1
  69. package/cloud-runtime/standalone/.next/server/app/api/orchestrator/tasks/[taskId]/status/route.js.nft.json +1 -1
  70. package/cloud-runtime/standalone/.next/server/app/api/participants/route.js +1 -1
  71. package/cloud-runtime/standalone/.next/server/app/api/participants/route.js.nft.json +1 -1
  72. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/agents/route.js +1 -1
  73. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/agents/route.js.nft.json +1 -1
  74. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/migrate-v1/route.js +1 -1
  75. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/migrate-v1/route.js.nft.json +1 -1
  76. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/migrate-v2/route.js +1 -1
  77. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/migrate-v2/route.js.nft.json +1 -1
  78. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/route.js +1 -1
  79. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/route.js.nft.json +1 -1
  80. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/skills/route.js +1 -1
  81. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/skills/route.js.nft.json +1 -1
  82. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/threads/route.js +1 -1
  83. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/threads/route.js.nft.json +1 -1
  84. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/variables/route.js +1 -1
  85. package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/variables/route.js.nft.json +1 -1
  86. package/cloud-runtime/standalone/.next/server/app/api/projects/route.js +1 -1
  87. package/cloud-runtime/standalone/.next/server/app/api/projects/route.js.nft.json +1 -1
  88. package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/[id]/cancel/route.js.nft.json +1 -1
  89. package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/[id]/route.js.nft.json +1 -1
  90. package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/[id]/runs/route.js.nft.json +1 -1
  91. package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/agents/route.js +1 -1
  92. package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/agents/route.js.nft.json +1 -1
  93. package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/poll/route.js +1 -1
  94. package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/poll/route.js.nft.json +1 -1
  95. package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/route.js.nft.json +1 -1
  96. package/cloud-runtime/standalone/.next/server/app/api/providers/route.js.nft.json +1 -1
  97. package/cloud-runtime/standalone/.next/server/app/api/queue/complete/route.js +1 -1
  98. package/cloud-runtime/standalone/.next/server/app/api/queue/complete/route.js.nft.json +1 -1
  99. package/cloud-runtime/standalone/.next/server/app/api/queue/route.js +2 -2
  100. package/cloud-runtime/standalone/.next/server/app/api/queue/route.js.nft.json +1 -1
  101. package/cloud-runtime/standalone/.next/server/app/api/schedules/debug/route.js +14 -6
  102. package/cloud-runtime/standalone/.next/server/app/api/schedules/debug/route.js.nft.json +1 -1
  103. package/cloud-runtime/standalone/.next/server/app/api/schedules/poll/route.js +13 -5
  104. package/cloud-runtime/standalone/.next/server/app/api/schedules/poll/route.js.nft.json +1 -1
  105. package/cloud-runtime/standalone/.next/server/app/api/schedules/route.js.nft.json +1 -1
  106. package/cloud-runtime/standalone/.next/server/app/api/status/route.js.nft.json +1 -1
  107. package/cloud-runtime/standalone/.next/server/app/api/summarize/route.js +1 -1
  108. package/cloud-runtime/standalone/.next/server/app/api/summarize/route.js.nft.json +1 -1
  109. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/comments/[commentId]/route.js +1 -1
  110. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/comments/[commentId]/route.js.nft.json +1 -1
  111. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/comments/route.js +1 -1
  112. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/comments/route.js.nft.json +1 -1
  113. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/costs/route.js +1 -1
  114. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/costs/route.js.nft.json +1 -1
  115. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/dependencies/route.js +1 -1
  116. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/dependencies/route.js.nft.json +1 -1
  117. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/events/route.js +1 -1
  118. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/events/route.js.nft.json +1 -1
  119. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/history/route.js +1 -1
  120. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/history/route.js.nft.json +1 -1
  121. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/metrics/route.js +1 -1
  122. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/metrics/route.js.nft.json +1 -1
  123. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/replan/route.js +1 -1
  124. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/replan/route.js.nft.json +1 -1
  125. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/restart/route.js +1 -1
  126. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/restart/route.js.nft.json +1 -1
  127. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/resume/route.js +1 -1
  128. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/resume/route.js.nft.json +1 -1
  129. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/rollback/route.js +1 -1
  130. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/rollback/route.js.nft.json +1 -1
  131. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/route.js +3 -4
  132. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/route.js.nft.json +1 -1
  133. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/schedule/route.js +1 -1
  134. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/schedule/route.js.nft.json +1 -1
  135. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/start/route.js +1 -1
  136. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/start/route.js.nft.json +1 -1
  137. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/stop/route.js +1 -1
  138. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/stop/route.js.nft.json +1 -1
  139. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/history/route.js +1 -1
  140. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/history/route.js.nft.json +1 -1
  141. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/logs/route.js +1 -1
  142. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/logs/route.js.nft.json +1 -1
  143. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/comments/route.js +1 -1
  144. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/comments/route.js.nft.json +1 -1
  145. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/complete/route.js +3 -4
  146. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/complete/route.js.nft.json +1 -1
  147. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/fail/route.js +3 -4
  148. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/fail/route.js.nft.json +1 -1
  149. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/resume/route.js +3 -4
  150. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/resume/route.js.nft.json +1 -1
  151. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/start/route.js +3 -4
  152. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/start/route.js.nft.json +1 -1
  153. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/stop/route.js +3 -4
  154. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/stop/route.js.nft.json +1 -1
  155. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/verify/route.js +4 -5
  156. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/verify/route.js.nft.json +1 -1
  157. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/route.js +1 -1
  158. package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/route.js.nft.json +1 -1
  159. package/cloud-runtime/standalone/.next/server/app/api/tasks/assign-orphans/route.js +1 -1
  160. package/cloud-runtime/standalone/.next/server/app/api/tasks/assign-orphans/route.js.nft.json +1 -1
  161. package/cloud-runtime/standalone/.next/server/app/api/tasks/extract/route.js +1 -1
  162. package/cloud-runtime/standalone/.next/server/app/api/tasks/extract/route.js.nft.json +1 -1
  163. package/cloud-runtime/standalone/.next/server/app/api/tasks/route.js +2 -2
  164. package/cloud-runtime/standalone/.next/server/app/api/tasks/route.js.nft.json +1 -1
  165. package/cloud-runtime/standalone/.next/server/app/api/threads/knowledge/route.js +1 -1
  166. package/cloud-runtime/standalone/.next/server/app/api/threads/knowledge/route.js.nft.json +1 -1
  167. package/cloud-runtime/standalone/.next/server/app/api/threads/route.js +1 -1
  168. package/cloud-runtime/standalone/.next/server/app/api/threads/route.js.nft.json +1 -1
  169. package/cloud-runtime/standalone/.next/server/app/api/user-settings/route.js +1 -1
  170. package/cloud-runtime/standalone/.next/server/app/api/user-settings/route.js.nft.json +1 -1
  171. package/cloud-runtime/standalone/.next/server/app/automations/page/react-loadable-manifest.json +1 -1
  172. package/cloud-runtime/standalone/.next/server/app/automations/page.js.nft.json +1 -1
  173. package/cloud-runtime/standalone/.next/server/app/automations/page_client-reference-manifest.js +1 -1
  174. package/cloud-runtime/standalone/.next/server/app/automations.html +2 -2
  175. package/cloud-runtime/standalone/.next/server/app/automations.rsc +3 -3
  176. package/cloud-runtime/standalone/.next/server/app/automations.segments/_full.segment.rsc +3 -3
  177. package/cloud-runtime/standalone/.next/server/app/automations.segments/_head.segment.rsc +1 -1
  178. package/cloud-runtime/standalone/.next/server/app/automations.segments/_index.segment.rsc +2 -2
  179. package/cloud-runtime/standalone/.next/server/app/automations.segments/_tree.segment.rsc +2 -2
  180. package/cloud-runtime/standalone/.next/server/app/automations.segments/automations/__PAGE__.segment.rsc +2 -2
  181. package/cloud-runtime/standalone/.next/server/app/automations.segments/automations.segment.rsc +1 -1
  182. package/cloud-runtime/standalone/.next/server/app/board/page_client-reference-manifest.js +1 -1
  183. package/cloud-runtime/standalone/.next/server/app/board.html +2 -2
  184. package/cloud-runtime/standalone/.next/server/app/board.rsc +2 -2
  185. package/cloud-runtime/standalone/.next/server/app/board.segments/_full.segment.rsc +2 -2
  186. package/cloud-runtime/standalone/.next/server/app/board.segments/_head.segment.rsc +1 -1
  187. package/cloud-runtime/standalone/.next/server/app/board.segments/_index.segment.rsc +2 -2
  188. package/cloud-runtime/standalone/.next/server/app/board.segments/_tree.segment.rsc +2 -2
  189. package/cloud-runtime/standalone/.next/server/app/board.segments/board/__PAGE__.segment.rsc +1 -1
  190. package/cloud-runtime/standalone/.next/server/app/board.segments/board.segment.rsc +1 -1
  191. package/cloud-runtime/standalone/.next/server/app/execution-graph/page.js.nft.json +1 -1
  192. package/cloud-runtime/standalone/.next/server/app/execution-graph/page_client-reference-manifest.js +1 -1
  193. package/cloud-runtime/standalone/.next/server/app/execution-graph.html +2 -2
  194. package/cloud-runtime/standalone/.next/server/app/execution-graph.rsc +3 -3
  195. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/_full.segment.rsc +3 -3
  196. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/_head.segment.rsc +1 -1
  197. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/_index.segment.rsc +2 -2
  198. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/_tree.segment.rsc +2 -2
  199. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/execution-graph/__PAGE__.segment.rsc +2 -2
  200. package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/execution-graph.segment.rsc +1 -1
  201. package/cloud-runtime/standalone/.next/server/app/folders/page.js.nft.json +1 -1
  202. package/cloud-runtime/standalone/.next/server/app/folders/page_client-reference-manifest.js +1 -1
  203. package/cloud-runtime/standalone/.next/server/app/folders.html +2 -2
  204. package/cloud-runtime/standalone/.next/server/app/folders.rsc +3 -3
  205. package/cloud-runtime/standalone/.next/server/app/folders.segments/_full.segment.rsc +3 -3
  206. package/cloud-runtime/standalone/.next/server/app/folders.segments/_head.segment.rsc +1 -1
  207. package/cloud-runtime/standalone/.next/server/app/folders.segments/_index.segment.rsc +2 -2
  208. package/cloud-runtime/standalone/.next/server/app/folders.segments/_tree.segment.rsc +2 -2
  209. package/cloud-runtime/standalone/.next/server/app/folders.segments/folders/__PAGE__.segment.rsc +2 -2
  210. package/cloud-runtime/standalone/.next/server/app/folders.segments/folders.segment.rsc +1 -1
  211. package/cloud-runtime/standalone/.next/server/app/index.html +2 -2
  212. package/cloud-runtime/standalone/.next/server/app/index.rsc +3 -3
  213. package/cloud-runtime/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  214. package/cloud-runtime/standalone/.next/server/app/index.segments/_full.segment.rsc +3 -3
  215. package/cloud-runtime/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  216. package/cloud-runtime/standalone/.next/server/app/index.segments/_index.segment.rsc +2 -2
  217. package/cloud-runtime/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  218. package/cloud-runtime/standalone/.next/server/app/page.js.nft.json +1 -1
  219. package/cloud-runtime/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  220. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/automations/page/react-loadable-manifest.json +1 -1
  221. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/automations/page.js.nft.json +1 -1
  222. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/automations/page_client-reference-manifest.js +1 -1
  223. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/graph/[taskId]/page.js.nft.json +1 -1
  224. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/graph/[taskId]/page_client-reference-manifest.js +1 -1
  225. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/knowledge/page.js.nft.json +1 -1
  226. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/knowledge/page_client-reference-manifest.js +1 -1
  227. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/linear/page/react-loadable-manifest.json +1 -1
  228. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/linear/page.js.nft.json +1 -1
  229. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/linear/page_client-reference-manifest.js +1 -1
  230. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/page.js.nft.json +1 -1
  231. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
  232. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/thread/[threadId]/page.js.nft.json +1 -1
  233. package/cloud-runtime/standalone/.next/server/app/projects/[slug]/thread/[threadId]/page_client-reference-manifest.js +1 -1
  234. package/cloud-runtime/standalone/.next/server/app/projects/orphans/page_client-reference-manifest.js +1 -1
  235. package/cloud-runtime/standalone/.next/server/app/projects/orphans.html +2 -2
  236. package/cloud-runtime/standalone/.next/server/app/projects/orphans.rsc +2 -2
  237. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/_full.segment.rsc +2 -2
  238. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/_head.segment.rsc +1 -1
  239. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/_index.segment.rsc +2 -2
  240. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/_tree.segment.rsc +2 -2
  241. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/projects/orphans/__PAGE__.segment.rsc +1 -1
  242. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/projects/orphans.segment.rsc +1 -1
  243. package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/projects.segment.rsc +1 -1
  244. package/cloud-runtime/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  245. package/cloud-runtime/standalone/.next/server/app/projects.html +2 -2
  246. package/cloud-runtime/standalone/.next/server/app/projects.rsc +2 -2
  247. package/cloud-runtime/standalone/.next/server/app/projects.segments/_full.segment.rsc +2 -2
  248. package/cloud-runtime/standalone/.next/server/app/projects.segments/_head.segment.rsc +1 -1
  249. package/cloud-runtime/standalone/.next/server/app/projects.segments/_index.segment.rsc +2 -2
  250. package/cloud-runtime/standalone/.next/server/app/projects.segments/_tree.segment.rsc +2 -2
  251. package/cloud-runtime/standalone/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +1 -1
  252. package/cloud-runtime/standalone/.next/server/app/projects.segments/projects.segment.rsc +1 -1
  253. package/cloud-runtime/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  254. package/cloud-runtime/standalone/.next/server/app/settings.html +2 -2
  255. package/cloud-runtime/standalone/.next/server/app/settings.rsc +2 -2
  256. package/cloud-runtime/standalone/.next/server/app/settings.segments/_full.segment.rsc +2 -2
  257. package/cloud-runtime/standalone/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  258. package/cloud-runtime/standalone/.next/server/app/settings.segments/_index.segment.rsc +2 -2
  259. package/cloud-runtime/standalone/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  260. package/cloud-runtime/standalone/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
  261. package/cloud-runtime/standalone/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  262. package/cloud-runtime/standalone/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  263. package/cloud-runtime/standalone/.next/server/app/skills.html +2 -2
  264. package/cloud-runtime/standalone/.next/server/app/skills.rsc +2 -2
  265. package/cloud-runtime/standalone/.next/server/app/skills.segments/_full.segment.rsc +2 -2
  266. package/cloud-runtime/standalone/.next/server/app/skills.segments/_head.segment.rsc +1 -1
  267. package/cloud-runtime/standalone/.next/server/app/skills.segments/_index.segment.rsc +2 -2
  268. package/cloud-runtime/standalone/.next/server/app/skills.segments/_tree.segment.rsc +2 -2
  269. package/cloud-runtime/standalone/.next/server/app/skills.segments/skills/__PAGE__.segment.rsc +1 -1
  270. package/cloud-runtime/standalone/.next/server/app/skills.segments/skills.segment.rsc +1 -1
  271. package/cloud-runtime/standalone/.next/server/app/status/page_client-reference-manifest.js +1 -1
  272. package/cloud-runtime/standalone/.next/server/app/status.html +2 -2
  273. package/cloud-runtime/standalone/.next/server/app/status.rsc +2 -2
  274. package/cloud-runtime/standalone/.next/server/app/status.segments/_full.segment.rsc +2 -2
  275. package/cloud-runtime/standalone/.next/server/app/status.segments/_head.segment.rsc +1 -1
  276. package/cloud-runtime/standalone/.next/server/app/status.segments/_index.segment.rsc +2 -2
  277. package/cloud-runtime/standalone/.next/server/app/status.segments/_tree.segment.rsc +2 -2
  278. package/cloud-runtime/standalone/.next/server/app/status.segments/status/__PAGE__.segment.rsc +1 -1
  279. package/cloud-runtime/standalone/.next/server/app/status.segments/status.segment.rsc +1 -1
  280. package/cloud-runtime/standalone/.next/server/app/thread/[id]/page.js.nft.json +1 -1
  281. package/cloud-runtime/standalone/.next/server/app/thread/[id]/page_client-reference-manifest.js +1 -1
  282. package/cloud-runtime/standalone/.next/server/app/welcome/page.js.nft.json +1 -1
  283. package/cloud-runtime/standalone/.next/server/app/welcome/page_client-reference-manifest.js +1 -1
  284. package/cloud-runtime/standalone/.next/server/app/welcome.html +2 -2
  285. package/cloud-runtime/standalone/.next/server/app/welcome.rsc +3 -3
  286. package/cloud-runtime/standalone/.next/server/app/welcome.segments/_full.segment.rsc +3 -3
  287. package/cloud-runtime/standalone/.next/server/app/welcome.segments/_head.segment.rsc +1 -1
  288. package/cloud-runtime/standalone/.next/server/app/welcome.segments/_index.segment.rsc +2 -2
  289. package/cloud-runtime/standalone/.next/server/app/welcome.segments/_tree.segment.rsc +2 -2
  290. package/cloud-runtime/standalone/.next/server/app/welcome.segments/welcome/__PAGE__.segment.rsc +2 -2
  291. package/cloud-runtime/standalone/.next/server/app/welcome.segments/welcome.segment.rsc +1 -1
  292. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__015d40a6._.js +67 -0
  293. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__a300f072._.js → [root-of-the-server]__02a4a323._.js} +2 -2
  294. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__05dedbe1._.js +64 -0
  295. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__4ce74056._.js → [root-of-the-server]__05f0bfbf._.js} +2 -2
  296. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__c22dd3a6._.js → [root-of-the-server]__08c82fe8._.js} +2 -2
  297. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__3fae531a._.js → [root-of-the-server]__09e37b59._.js} +2 -2
  298. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__1a1f66b1._.js → [root-of-the-server]__0e83aabc._.js} +2 -2
  299. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__27da58f0._.js +67 -0
  300. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__9ffa67b7._.js → [root-of-the-server]__2ae8b938._.js} +2 -2
  301. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__2cfd21b8._.js +108 -0
  302. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__37844df7._.js +67 -0
  303. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__d9f2041b._.js → [root-of-the-server]__3a93931b._.js} +4 -4
  304. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__f9f7f2df._.js → [root-of-the-server]__3c1403f2._.js} +2 -2
  305. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__143fdf69._.js → [root-of-the-server]__40e9e2e8._.js} +2 -2
  306. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__42e602eb._.js +49 -0
  307. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__a7b2350e._.js → [root-of-the-server]__456840d0._.js} +2 -2
  308. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__5c2848bb._.js +64 -0
  309. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__667c658f._.js +52 -0
  310. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__6a92b882._.js +49 -0
  311. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__6c9baa7c._.js +64 -0
  312. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__c21747df._.js → [root-of-the-server]__719eddc2._.js} +2 -2
  313. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__36d15de5._.js → [root-of-the-server]__7ee3dfe1._.js} +2 -2
  314. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__d324f8a1._.js → [root-of-the-server]__80964fad._.js} +2 -2
  315. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__bab85495._.js → [root-of-the-server]__862cf77d._.js} +2 -2
  316. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__a280fa63._.js → [root-of-the-server]__8b5b9860._.js} +2 -2
  317. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__3170b7bf._.js → [root-of-the-server]__8d475640._.js} +2 -2
  318. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__958dded3._.js +49 -0
  319. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__ab655b9f._.js → [root-of-the-server]__96c424d5._.js} +2 -2
  320. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__5c55f67a._.js → [root-of-the-server]__976ebe46._.js} +2 -2
  321. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__179cb224._.js → [root-of-the-server]__a1cab8fe._.js} +2 -2
  322. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__20a2cb22._.js → [root-of-the-server]__a31dd756._.js} +9 -9
  323. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__a3955224._.js → [root-of-the-server]__ad53dc3f._.js} +17 -17
  324. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__ac6326b6._.js → [root-of-the-server]__b8eeb177._.js} +2 -2
  325. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__fcfa3690._.js → [root-of-the-server]__c10e827d._.js} +2 -2
  326. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__e58e9f91._.js → [root-of-the-server]__c11e0040._.js} +2 -2
  327. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__c40b6f69._.js +49 -0
  328. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__c7d3c7ab._.js +52 -0
  329. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__cdc52544._.js +49 -0
  330. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__8cbd8c56._.js → [root-of-the-server]__d1c698b6._.js} +12 -12
  331. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__d9ea98bd._.js +52 -0
  332. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__ef27f8cd._.js → [root-of-the-server]__df886e3c._.js} +2 -2
  333. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__ca4987eb._.js → [root-of-the-server]__e0b6f424._.js} +2 -2
  334. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__c8890cd6._.js → [root-of-the-server]__f43ecbc2._.js} +13 -13
  335. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__f51c7b72._.js +5 -0
  336. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__f662fd1e._.js +20 -0
  337. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__538b0bdd._.js → [root-of-the-server]__f961230c._.js} +2 -2
  338. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__b627cb83._.js → [root-of-the-server]__feec5b54._.js} +2 -2
  339. package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__d16caed5._.js → [root-of-the-server]__ff6ce4b1._.js} +2 -2
  340. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__ff9ce15e._.js +5 -0
  341. package/cloud-runtime/standalone/.next/server/chunks/_26ffc857._.js +121 -0
  342. package/cloud-runtime/standalone/.next/server/chunks/_4d07f8db._.js +1 -1
  343. package/cloud-runtime/standalone/.next/server/chunks/_66d0cf73._.js +6 -0
  344. package/cloud-runtime/standalone/.next/server/chunks/_9b10087f._.js +3 -2
  345. package/cloud-runtime/standalone/.next/server/chunks/_a13c0bef._.js +121 -0
  346. package/cloud-runtime/standalone/.next/server/chunks/{lib_98ae187c._.js → lib_2cd3429c._.js} +2 -2
  347. package/cloud-runtime/standalone/.next/server/chunks/lib_a2a83df5._.js +55 -0
  348. package/cloud-runtime/standalone/.next/server/chunks/lib_a658c9ef._.js +34 -0
  349. package/cloud-runtime/standalone/.next/server/chunks/lib_ba38ea08._.js +55 -0
  350. package/cloud-runtime/standalone/.next/server/chunks/lib_orchestrator_chat-processor_ts_4c335719._.js +27 -29
  351. package/cloud-runtime/standalone/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_371d0bff.js +6 -102
  352. package/cloud-runtime/standalone/.next/server/chunks/src_graph_schedule-runner_ts_43a13c69._.js +13 -0
  353. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__0b2a2b86._.js +3 -0
  354. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__32546242._.js +3 -0
  355. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__5ff9ead4._.js +3 -0
  356. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__f2c3b7ab._.js +1 -1
  357. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__f59f0dc7._.js +3 -0
  358. package/cloud-runtime/standalone/.next/server/chunks/ssr/{[root-of-the-server]__d96bb3b5._.js → [root-of-the-server]__fbe1ab4a._.js} +2 -2
  359. package/cloud-runtime/standalone/.next/server/chunks/ssr/_1e9b9b1e._.js +3 -0
  360. package/cloud-runtime/standalone/.next/server/chunks/ssr/_24fe6213._.js +3 -0
  361. package/cloud-runtime/standalone/.next/server/chunks/ssr/_36a0c486._.js +3 -0
  362. package/cloud-runtime/standalone/.next/server/chunks/ssr/_3b21d3b2._.js +95 -0
  363. package/cloud-runtime/standalone/.next/server/chunks/ssr/_3eeac8f9._.js +3 -0
  364. package/cloud-runtime/standalone/.next/server/chunks/ssr/_48db42b7._.js +3 -0
  365. package/cloud-runtime/standalone/.next/server/chunks/ssr/_59f30a73._.js +3 -0
  366. package/cloud-runtime/standalone/.next/server/chunks/ssr/_7d3b0032._.js +3 -0
  367. package/cloud-runtime/standalone/.next/server/chunks/ssr/_916950b3._.js +3 -0
  368. package/cloud-runtime/standalone/.next/server/chunks/ssr/_b598ae8a._.js +3 -0
  369. package/cloud-runtime/standalone/.next/server/chunks/ssr/_cc8c8302._.js +3 -0
  370. package/cloud-runtime/standalone/.next/server/chunks/ssr/_d972a4e1._.js +3 -0
  371. package/cloud-runtime/standalone/.next/server/chunks/ssr/_dd7bb6fb._.js +3 -0
  372. package/cloud-runtime/standalone/.next/server/chunks/ssr/_dd9880fb._.js +3 -0
  373. package/cloud-runtime/standalone/.next/server/chunks/ssr/_f02d786a._.js +3 -0
  374. package/cloud-runtime/standalone/.next/server/chunks/ssr/_fd8cafe9._.js +3 -0
  375. package/cloud-runtime/standalone/.next/server/chunks/ssr/app_projects_[slug]_linear_page_tsx_971a6ba7._.js +15 -12
  376. package/cloud-runtime/standalone/.next/server/chunks/ssr/components_chat-ui_bfeda794._.js +1 -1
  377. package/cloud-runtime/standalone/.next/server/chunks/ssr/components_thread_WorkspaceSidebar_tsx_e660301b._.js +1 -1
  378. package/cloud-runtime/standalone/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_54bf563f._.js +3 -0
  379. package/cloud-runtime/standalone/.next/server/middleware-manifest.json +5 -5
  380. package/cloud-runtime/standalone/.next/server/pages/404.html +2 -2
  381. package/cloud-runtime/standalone/.next/server/pages/500.html +2 -2
  382. package/cloud-runtime/standalone/.next/server/server-reference-manifest.js +1 -1
  383. package/cloud-runtime/standalone/.next/server/server-reference-manifest.json +1 -1
  384. package/cloud-runtime/standalone/.next/static/chunks/04c135686161dbb1.js +40 -0
  385. package/cloud-runtime/standalone/.next/static/chunks/0d63db0c39c0a3b2.js +1 -0
  386. package/cloud-runtime/standalone/.next/static/chunks/136ed07d84b14632.js +1 -0
  387. package/cloud-runtime/standalone/.next/static/chunks/18866ed04ed3a063.css +1 -0
  388. package/cloud-runtime/standalone/.next/static/chunks/{ccaf68956da192f8.js → 1bb38e61d891453c.js} +1 -1
  389. package/cloud-runtime/standalone/.next/static/chunks/2c7c8259c2b56bf5.js +1 -0
  390. package/cloud-runtime/standalone/.next/static/chunks/2da1f13d50dc4e54.js +1 -0
  391. package/cloud-runtime/standalone/.next/static/chunks/5545da2ad239c0b6.js +3 -0
  392. package/cloud-runtime/standalone/.next/static/chunks/{41c518743656a291.js → 5f33b52d582b0bb4.js} +1 -1
  393. package/cloud-runtime/standalone/.next/static/chunks/{97c11137cd6fc860.js → 64c2961edd3a3b13.js} +1 -1
  394. package/cloud-runtime/standalone/.next/static/chunks/{db131a0b6350e416.js → 692ce04abdbb3970.js} +1 -1
  395. package/cloud-runtime/standalone/.next/static/chunks/83be8569d298c6b0.js +1 -0
  396. package/cloud-runtime/standalone/.next/static/chunks/87b3afe828c8cc52.js +1 -0
  397. package/cloud-runtime/standalone/.next/static/chunks/{4343e7fe5bf5f34a.js → 9328740727c6456d.js} +1 -1
  398. package/cloud-runtime/standalone/.next/static/chunks/95d47e285ae9c031.js +1 -0
  399. package/cloud-runtime/standalone/.next/static/chunks/b9bf5d3ee92a1313.js +1 -0
  400. package/cloud-runtime/standalone/.next/static/chunks/ea35fb870141bcff.js +1 -0
  401. package/cloud-runtime/standalone/.next/static/chunks/f59722264449b61c.js +1 -0
  402. package/cloud-runtime/standalone/.next/static/chunks/f727d2c8f039511d.js +1 -0
  403. package/cloud-runtime/standalone/.next/static/chunks/{31fe4e36a00fd7b5.js → f8706212baa8ec67.js} +1 -1
  404. package/cloud-runtime/standalone/.next/static/chunks/fd823c9d1381335d.js +1 -0
  405. package/cloud-runtime/standalone/app/api/chat/route.ts +5 -163
  406. package/cloud-runtime/standalone/app/api/schedules/route.ts +11 -2
  407. package/cloud-runtime/standalone/app/automations/page.tsx +11 -1
  408. package/cloud-runtime/standalone/app/projects/[slug]/layout.tsx +11 -1
  409. package/cloud-runtime/standalone/components/LinearBoard.tsx +118 -21
  410. package/cloud-runtime/standalone/components/chat-ui/ChatContainer.tsx +10 -13
  411. package/cloud-runtime/standalone/components/linear/RunScriptManager.tsx +356 -0
  412. package/cloud-runtime/standalone/components/thread/WorkspaceSidebar.tsx +35 -0
  413. package/cloud-runtime/standalone/hooks/useLinearRunScripts.ts +115 -0
  414. package/cloud-runtime/standalone/lib/chat/project-context.ts +169 -0
  415. package/cloud-runtime/standalone/lib/linear-client.ts +33 -3
  416. package/cloud-runtime/standalone/lib/linear-execution-prompt.ts +92 -15
  417. package/cloud-runtime/standalone/lib/orchestrator/runtime.ts +2 -0
  418. package/cloud-runtime/standalone/lib/orchestrator/schedule-runtime.ts +76 -0
  419. package/cloud-runtime/standalone/src/graph/internal-function-dispatcher.ts +201 -16
  420. package/cloud-runtime/standalone/src/graph/work-dispatcher.ts +128 -35
  421. package/cloud-runtime/standalone/state/automations/.state/c4300b01-1203-40fe-b3a9-b9fb9ec0c5cc.json +8 -0
  422. package/cloud-runtime/standalone/state/automations/active/c4300b01-1203-40fe-b3a9-b9fb9ec0c5cc.md +15 -0
  423. package/cloud-runtime/standalone/state/linearRunScripts.test.ts +99 -0
  424. package/cloud-runtime/standalone/state/linearRunScripts.ts +132 -0
  425. package/cloud-runtime/standalone/state/windowState.ts +21 -0
  426. package/cloud-runtime/standalone/tsconfig.tsbuildinfo +1 -1
  427. package/cloud-runtime/standalone/vault/agx/issues/ESO-327/design-doc.md +202 -0
  428. package/cloud-runtime/standalone/worker/index.js +34516 -1717
  429. package/cloud-runtime/standalone/worker/index.ts +3 -0
  430. package/package.json +1 -1
  431. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__1154e5b3._.js +0 -67
  432. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__152b2000._.js +0 -61
  433. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__33865410._.js +0 -3
  434. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__6c53437e._.js +0 -110
  435. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__6dbe939c._.js +0 -49
  436. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__7012e83d._.js +0 -66
  437. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__76290829._.js +0 -67
  438. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__ad6d6402._.js +0 -67
  439. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__da645a5e._.js +0 -15
  440. package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__f4b3df16._.js +0 -3
  441. package/cloud-runtime/standalone/.next/server/chunks/_2a5aeb76._.js +0 -3
  442. package/cloud-runtime/standalone/.next/server/chunks/_4689976f._.js +0 -6
  443. package/cloud-runtime/standalone/.next/server/chunks/_682c9d81._.js +0 -6
  444. package/cloud-runtime/standalone/.next/server/chunks/_6e7f0ae4._.js +0 -6
  445. package/cloud-runtime/standalone/.next/server/chunks/_a32a5cdd._.js +0 -6
  446. package/cloud-runtime/standalone/.next/server/chunks/_af7bd752._.js +0 -3
  447. package/cloud-runtime/standalone/.next/server/chunks/_fe32a267._.js +0 -3
  448. package/cloud-runtime/standalone/.next/server/chunks/lib_2492d514._.js +0 -55
  449. package/cloud-runtime/standalone/.next/server/chunks/lib_3c080873._.js +0 -34
  450. package/cloud-runtime/standalone/.next/server/chunks/lib_9f439b27._.js +0 -70
  451. package/cloud-runtime/standalone/.next/server/chunks/src_graph_12d46a92._.js +0 -3
  452. package/cloud-runtime/standalone/.next/server/chunks/src_graph_executor_ts_55c06268._.js +0 -8
  453. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__21a9eaef._.js +0 -3
  454. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__69887882._.js +0 -3
  455. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__9ad05ace._.js +0 -3
  456. package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__bb149a22._.js +0 -3
  457. package/cloud-runtime/standalone/.next/server/chunks/ssr/_11ce4c04._.js +0 -95
  458. package/cloud-runtime/standalone/.next/server/chunks/ssr/_1d949e96._.js +0 -3
  459. package/cloud-runtime/standalone/.next/server/chunks/ssr/_32a156b6._.js +0 -3
  460. package/cloud-runtime/standalone/.next/server/chunks/ssr/_43c091dc._.js +0 -3
  461. package/cloud-runtime/standalone/.next/server/chunks/ssr/_45175f47._.js +0 -3
  462. package/cloud-runtime/standalone/.next/server/chunks/ssr/_4f0c544d._.js +0 -3
  463. package/cloud-runtime/standalone/.next/server/chunks/ssr/_69164b06._.js +0 -95
  464. package/cloud-runtime/standalone/.next/server/chunks/ssr/_7f7a828a._.js +0 -3
  465. package/cloud-runtime/standalone/.next/server/chunks/ssr/_97f6a18e._.js +0 -3
  466. package/cloud-runtime/standalone/.next/server/chunks/ssr/_a511a014._.js +0 -3
  467. package/cloud-runtime/standalone/.next/server/chunks/ssr/_c3a3a829._.js +0 -3
  468. package/cloud-runtime/standalone/.next/server/chunks/ssr/_cee3cf86._.js +0 -95
  469. package/cloud-runtime/standalone/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_e8bdedc5._.js +0 -3
  470. package/cloud-runtime/standalone/.next/static/chunks/14fff3c493ea9c54.js +0 -1
  471. package/cloud-runtime/standalone/.next/static/chunks/2a9c83f8211196e0.js +0 -1
  472. package/cloud-runtime/standalone/.next/static/chunks/5405540470146645.js +0 -1
  473. package/cloud-runtime/standalone/.next/static/chunks/69f2db4b9996b9c1.js +0 -37
  474. package/cloud-runtime/standalone/.next/static/chunks/8aeb69ceb497ad85.css +0 -1
  475. package/cloud-runtime/standalone/.next/static/chunks/a9da98f883ac833b.js +0 -1
  476. package/cloud-runtime/standalone/.next/static/chunks/b2127dc67c5ade9f.js +0 -1
  477. package/cloud-runtime/standalone/.next/static/chunks/baf5d39d089efb87.js +0 -1
  478. package/cloud-runtime/standalone/.next/static/chunks/bf2a2fafb710e63c.js +0 -1
  479. package/cloud-runtime/standalone/.next/static/chunks/c78969fde5798275.js +0 -1
  480. package/cloud-runtime/standalone/.next/static/chunks/d3dc6fadb96ab3a2.js +0 -1
  481. package/cloud-runtime/standalone/.next/static/chunks/fdadad2379039dce.js +0 -3
  482. package/cloud-runtime/standalone/state/automations/.state/24a6a5db-3b14-49c4-841f-29f10f015fbb.json +0 -8
  483. package/cloud-runtime/standalone/state/automations/active/24a6a5db-3b14-49c4-841f-29f10f015fbb.md +0 -17
  484. /package/cloud-runtime/standalone/.next/static/{lOB5InbmVcurTLQo9J3KK → ZkFZnP5h74O7GgdHudXgH}/_buildManifest.js +0 -0
  485. /package/cloud-runtime/standalone/.next/static/{lOB5InbmVcurTLQo9J3KK → ZkFZnP5h74O7GgdHudXgH}/_clientMiddlewareManifest.json +0 -0
  486. /package/cloud-runtime/standalone/.next/static/{lOB5InbmVcurTLQo9J3KK → ZkFZnP5h74O7GgdHudXgH}/_ssgManifest.js +0 -0
@@ -1,112 +1,16 @@
1
- module.exports=[861378,e=>{"use strict";var t=e.i(747909),a=e.i(174017),n=e.i(996250),r=e.i(759756),i=e.i(561916),o=e.i(174677),s=e.i(869741),l=e.i(316795),d=e.i(487718),c=e.i(995169),u=e.i(47587),p=e.i(666012),g=e.i(570101),f=e.i(626937),m=e.i(10372),h=e.i(193695);e.i(52474);var y=e.i(600220);function w(e){if(!Array.isArray(e))return[];let t=new Set,a=[];for(let n of e){if("string"!=typeof n)continue;let e=n.trim();!e||t.has(e)||(t.add(e),a.push(e))}return a}function I(e){if("string"==typeof e)return e.trim()||void 0}var S=e.i(384776),v=e.i(442639),$=e.i(926617),b=e.i(960447),k=e.i(390081),R=e.i(762294),A=e.i(633938),C=e.i(877581),E=e.i(949041),x=e.i(97812),_=e.i(68638),j=e.i(304290),P=e.i(42304),T=e.i(457431),D=e.i(12616),M=e.i(691595),O=e.i(212592);async function L(e){let t=(0,T.createAdminDbClient)();await t.from("tasks").update({stage:e.stage,status:"queued",updated_at:new Date().toISOString()}).eq("id",e.taskId).eq("user_id",e.userId)}async function N(e){let t=(0,T.createAdminDbClient)(),{data:a}=await t.from("tasks").select("stage_decisions").eq("id",e.taskId).eq("user_id",e.userId).maybeSingle(),n={...a?.stage_decisions&&"object"==typeof a.stage_decisions?a.stage_decisions:{},[e.stage]:{decision:e.decision.decision,rationale:e.decision.explanation,final_result:e.decision.final_result,decided_at:new Date().toISOString()}},{error:r}=await t.from("tasks").update({stage_decisions:n,updated_at:new Date().toISOString()}).eq("id",e.taskId).eq("user_id",e.userId);if(r&&!function(e){if(!e||"object"!=typeof e)return!1;let t="code"in e?String(e.code):"",a="message"in e?String(e.message).toLowerCase():"";return("PGRST204"===t||"42703"===t)&&a.includes("stage_decisions")}(r))throw r}async function U(e){let t=await k.db.getTask(e.taskId,e.userId);if(!t)throw Error(`Task ${e.taskId} not found`);let a=t.stage||null,n=new Date().toISOString(),r={taskId:e.taskId,userId:e.userId,title:t.title||null,slug:t.slug||null,timestamp:n},{frontmatter:i,body:o}=(0,R.parseFrontmatter)(t.content),s=(0,P.resolveMemoryAgentId)({defaultUserId:e.userId,frontmatter:i});i.stage=e.nextStage,i.status=e.nextStatus,e.error?i.error=e.error:"error"in i&&delete i.error;let l=(0,D.buildMarkdownWithFrontmatter)(i,o);await k.db.updateTask(e.taskId,l,e.userId);let d=(0,T.createAdminDbClient)(),{error:c}=await d.from("tasks").update({stage:e.nextStage,status:e.nextStatus,retry_count:e.retryCount,error:e.error,updated_at:new Date().toISOString()}).eq("id",e.taskId).eq("user_id",e.userId);c?console.error(`[applyStageTransition] direct update failed for ${e.taskId}:`,c):console.log(`[applyStageTransition] set ${e.taskId} to status=${e.nextStatus}, stage=${e.nextStage}`),"completed"===e.nextStatus&&(await d.from("tasks").update({completed_at:new Date().toISOString()}).eq("id",e.taskId).eq("user_id",e.userId),await (0,M.triggerDependentTasks)(e.taskId,e.userId)),("completed"===e.nextStatus||"failed"===e.nextStatus)&&((0,P.extractAndStoreMemories)(e.taskId,s,{goal:String(t.content||t.title||""),status:String(e.nextStatus)}).catch(e=>console.warn("[applyStageTransition] Memory extraction failed:",e)),(0,P.extractAndStoreProjectKnowledge)(e.taskId,t.project_id||t.project,{goal:String(t.content||t.title||""),status:String(e.nextStatus)}).catch(e=>console.warn("[applyStageTransition] Project knowledge extraction failed:",e))),"blocked"!==e.nextStatus&&"failed"!==e.nextStatus&&(0,O.notifyTaskEvent)({...r,eventType:"task.stage_complete",stage:a,previousStage:a,nextStage:e.nextStage,status:e.nextStatus,details:{nextStatus:e.nextStatus}}),"completed"===e.nextStatus&&(0,O.notifyTaskEvent)({...r,eventType:"task.completed",stage:e.nextStage,status:e.nextStatus,details:{previousStage:a,nextStage:e.nextStage}}),"failed"===e.nextStatus&&(0,O.notifyTaskEvent)({...r,eventType:"task.failed",stage:e.nextStage,status:e.nextStatus,error:e.error,details:{previousStage:a}})}async function q(e){await k.db.addTaskLog(e.taskId,e.content,e.logType)}async function B(e){await k.db.addTaskComment(e.taskId,e.content,e.authorType||"agent")}async function z(e){let t=await k.db.getTask(e.taskId,e.userId);if(!t)return;let{frontmatter:a,body:n}=(0,R.parseFrontmatter)(t.content),r=(0,P.resolveMemoryAgentId)({defaultUserId:e.userId,frontmatter:a});a.status="failed",a.error=e.reason||"Cancelled";let i=(0,D.buildMarkdownWithFrontmatter)(a,n);await k.db.updateTask(e.taskId,i,e.userId),await k.db.addTaskLog(e.taskId,e.reason||"Task cancelled","error"),(0,P.extractAndStoreMemories)(e.taskId,r,{goal:String(t.content||t.title||""),status:"failed"}).catch(e=>console.warn("[markCancelled] Memory extraction failed:",e)),(0,P.extractAndStoreProjectKnowledge)(e.taskId,t.project_id||t.project,{goal:String(t.content||t.title||""),status:"failed"}).catch(e=>console.warn("[markCancelled] Project knowledge extraction failed:",e));let o=(0,T.createAdminDbClient)();await o.from("tasks").update({status:"failed",error:e.reason||"Cancelled",updated_at:new Date().toISOString()}).eq("id",e.taskId).eq("user_id",e.userId),(0,O.notifyTaskEvent)({taskId:e.taskId,userId:e.userId,eventType:"task.failed",title:t.title||null,slug:t.slug||null,stage:t.stage||null,status:"failed",error:e.reason||"Cancelled",timestamp:new Date().toISOString(),details:{previousStage:t.stage||null}})}async function F(e){let{taskId:t,userId:a,signal:n,payload:r,ticketType:i="task"}=e.data,o=await k.db.getTask(t,a);if(!o)return void console.log(`[processor] Task ${t} not found, skipping`);if("completed"===o.status||"failed"===o.status)return void console.log(`[processor] Task ${t} is ${o.status}, skipping`);let s=o.stage;switch(n){case"start":await K(t,s,a);break;case"agentResult":await J(t,s,a,r,i,o.retry_count||0,o.workflow_id&&/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(o.workflow_id)?o.workflow_id:null);break;case"humanInput":await W(t,r);break;case"daemonStep":await Q(t,r);break;case"cancel":await V(t,a,r?.reason);break;default:console.warn(`[processor] Unknown signal: ${n}`)}}async function H(e){for(let t of e)try{await F(t)}catch(e){throw console.error(`[processor] Error processing job ${t.id}:`,e),e}}async function K(e,t,a){console.log(`[processor] Starting task ${e} at stage ${t}`),await L({taskId:e,stage:t,userId:a}),await q({taskId:e,content:`Task started at stage: ${t}`,logType:"system"})}async function J(e,t,a,n,r,i,o=null){let s,l,d;console.log(`[processor] Processing agent result for ${e}: ${n.decision}`),await N({taskId:e,stage:t,decision:n,userId:a});let c=Array.isArray(n.comments)?n.comments.map(e=>String(e||"").trim()).filter(Boolean):[],u=String(n.comment||n.log||n.final_result||"").trim();for(let t of c.length>0?c:u.split("\n").map(e=>e.trim()).filter(Boolean))await B({taskId:e,content:t,authorType:"agent"});let p=null,g=null;if(o){let e=await (0,j.resolveWorkflowTransition)({workflowId:o,currentNodeName:t,decision:n.decision,retryCount:i,maxRetries:3});s=e.nextNodeName,l=e.nextStatus,d=e.retryCount,p=e.error,g=e.appendLog,console.log(`[processor] Workflow transition: ${t} -> ${s} (workflow: ${o})`)}else{let e=(0,j.resolveStageTransition)({currentStage:t,decision:n.decision,ticketType:r,retryCount:i,maxRetries:3});s=e.nextStage,l=e.nextStatus,d=e.retryCount,p=e.error,g=e.appendLog}if(await U({taskId:e,nextStage:s,nextStatus:l,retryCount:d,error:p?n.explanation||p:null,userId:a}),g){let t="error"===g.logType&&n.explanation||"system"===g.logType&&n.explanation?n.explanation:g.content;await q({taskId:e,content:t,logType:g.logType})}console.log(`[processor] Task ${e} transitioned: ${t} -> ${s}`)}async function W(e,t){console.log(`[processor] Recording human input for ${e}`),await B({taskId:e,content:t.content,authorType:t.authorType||"user"})}async function Q(e,t){let a=t.provider?` provider=${t.provider}`:"",n=t.model?` model=${t.model}`:"",r=t.role?` role=${t.role}`:"",i="number"==typeof t.iteration?` iter=${t.iteration}`:"",o="exit"===t.phase?` exit=${t.exit_code}`:"",s=t.error?` error=${t.error}`:"",l=Array.isArray(t.args)?t.args.join(" "):"",d=t.stdout_tail?`
2
- stdout_tail:
3
- ${t.stdout_tail}`:"",c=t.stderr_tail?`
4
- stderr_tail:
5
- ${t.stderr_tail}`:"",u=`[execution/${t.kind||"daemon"}] ${t.phase||"event"} ${t.label||""}${a}${n}${r}${i}${o}${s}`.trim()+(l?`
6
- args: ${l}`:"")+(t.duration_ms?`
7
- duration_ms: ${t.duration_ms}`:"")+d+c;await q({taskId:e,content:u,logType:"system"})}async function V(e,t,a){console.log(`[processor] Cancelling task ${e}: ${a||"No reason"}`),await z({taskId:e,reason:a,userId:t})}var Y=e.i(924868),G=e.i(914350),Z=e.i(187885);let X=new Set(["ack","working","done","clarify","blocked"]),ee=/\[reaction\s+([^\]]+)\]/gi,et=/([a-zA-Z][a-zA-Z0-9_]*)=(?:"((?:[^"\\]|\\.)*)"|'((?:[^'\\]|\\.)*)'|([^\s\]]*?(?=\s|]|[a-zA-Z][a-zA-Z0-9_]*=|$)))/g;var ea=e.i(536528),en=e.i(959448),er=e.i(41334),ei=e.i(522734),eo=e.i(814747),es=e.i(446786),el=e.i(992134);let ed=(0,eo.join)((0,es.homedir)(),".agx","agents");var ec=e.i(940813),eu=e.i(149953),ep=e.i(254799);let eg=new Map,ef=new Map;function em(e){return null!==e}let eh="I evolve through experience and collaboration.";function ey(e,t){let a=e.replace(/\s+/g," ").trim();if(!a)return`I am ${t}. ${eh}`;let n=a.replace(/^you are\b[^.!?\n]*[.!?]?\s*/i,`I am ${t}. `);return(/^i am\b/i.test(n)?n:`I am ${t}. ${n}`).slice(0,500).trim()}function ew(e,t){(0,er.ensureAgent)(e.id,{voice:e.voice?.trim()||`${e.name} style`,seed:function(e,t,a){let n=String(a||"").trim();if(n)return ey(n,t);let r=String(e||"").trim();return r?ey(r,t):`I am ${t}. ${eh}`}(t,e.name,e.seed)})}async function eI(e){ew(e);let t=(0,er.readIdentity)(e.id);if(!t)return;let a=(0,ea.readSelf)(e.id),n=(0,ea.readReflectionState)(e.id),r=(0,en.readJournalSince)(e.id,n?.lastProcessedJournalId).filter(e=>"post"===e.type);if(0===r.length)return;let i=(0,er.getTeamSelves)(e.id),o=(a?.version??0)+1,s=(0,ec.listKnowledgeEntries)({scope:"agent",subjectId:e.id,limit:50}),l=(0,ea.buildStructuredReflectionPrompt)(t,a,r,i,s),d="";await (0,G.runCliResponse)({provider:e.provider,model:e.model,systemContext:"You are performing a self-modeling exercise. Output ONLY raw JSON matching the requested schema. No markdown fences, no commentary.",prompt:l,signal:void 0,onDelta:e=>{d+=e}});let c=d.trim().replace(/^```(?:json)?\s*/i,"").replace(/\s*```\s*$/,"").trim(),u=null;try{u=JSON.parse(c)}catch{u=null}let p=u?.self_model?.trim()||"";if(!p)return;let g=Array.isArray(u?.memories)?u.memories.slice(0,3).map(t=>({scope:"agent",subjectId:e.id,sourceType:"reflection",sourceId:r[r.length-1]?.id||`reflection:${e.id}:${o}`,kind:t.kind,title:String(t.title??"").trim(),body:String(t.body??"").trim(),confidence:t.confidence,durability:t.durability,tags:t.tags,evidence:Array.isArray(t.evidence)?t.evidence.map(e=>{let t=String(e?.note??"").trim(),a="string"==typeof e?.id?e.id.trim():"";return t?a?{id:a,note:t}:{note:t}:null}).filter(em):[],metadata:{reflection_window_start:r[0]?.id??null,reflection_window_end:r[r.length-1]?.id??null,self_version:o}})).filter(e=>e.title&&e.body):[],f=(0,ec.storeKnowledgeEntries)(g);if((0,ea.writeSelf)(e.id,p,o),(0,ea.writeReflectionState)(e.id,{lastProcessedJournalId:r[r.length-1]?.id??n?.lastProcessedJournalId??null,updatedAt:new Date().toISOString()}),f>0){let t=(0,b.getSQLiteDb)().prepare(`INSERT OR IGNORE INTO agent_memory (id, agent_id, task_id, memory_type, content, content_hash, created_at)
8
- VALUES (?, ?, ?, ?, ?, ?, ?)`),a=`reflection:${e.id}:${r[r.length-1]?.id??o}`,n=Date.now();for(let r of g){let i="decision"===r.kind?"decision":"gotcha"===r.kind||"constraint"===r.kind?"gotcha":"outcome"===r.kind?"outcome":"pattern",o=(0,ep.createHash)("sha256").update(r.body.trim()).digest("hex");t.run((0,ep.randomUUID)(),e.id,a,i,r.body.trim(),o,n)}}(0,en.appendJournal)(e.id,{t:new Date().toISOString(),type:"reflection",observation:"Reflected after 10 messages",judgement:"Updated self-model from incremental journal evidence and deduped agent memories",delta:`self-model updated to v${o}${f>0?`; stored ${f} agent memories`:""}`,threads:[],selfVersion:o,body:p});let m=(0,er.listAgents)().filter(t=>t!==e.id).flatMap(e=>(0,en.readJournal)(e,3).map(t=>({agentId:e,entry:t})));if(m.length>0){let t=m.map(e=>`${e.entry.id}: ${e.entry.observation.slice(0,200)}`).join("\n"),a="";try{await (0,G.runCliResponse)({provider:e.provider,model:e.model,prompt:`You are ${e.id}. Review these recent entries from other agents and react to any that resonate with you.
9
-
10
- Entries:
11
- ${t}
12
-
13
- For each entry you want to react to, output one line in this exact format:
14
- REACT <entryId> <type>
15
-
16
- Valid types: agree, disagree, learned-from, builds-on, curious
17
-
18
- Only react to entries that genuinely resonate. It's fine to react to zero entries. Output nothing else.`,signal:void 0,onDelta:e=>{a+=e}})}catch{}for(let t of a.split("\n")){let a=t.trim().match(/^REACT\s+(\S+)\s+(agree|disagree|learned-from|builds-on|curious)$/);if(a)try{!function(e,t,a){let n;if(!function(e){let[t]=e.split(":");return!!t&&(0,en.readJournal)(t).some(t=>t.id===e)}(t))throw Error(`Target entry ${t} not found`);n=(0,eo.join)(ed,e),(0,ei.existsSync)(n)||(0,ei.mkdirSync)(n,{recursive:!0});let r={agent:e,t:new Date().toISOString(),targetEntry:t,type:a};(0,ei.appendFileSync)((0,eo.join)(ed,e,"reactions.jsonl"),JSON.stringify(r)+"\n","utf-8"),(0,el.logActivity)(e,"mesh-reaction",{meta:{target:t,type:a}})}(e.id,a[1],a[2])}catch{}}}}async function eS(e){try{return await (0,Y.readFile)(e,"utf-8")}catch(a){let t=a instanceof Error?a.message:String(a);return`[Error reading ${e}: ${t}]`}}async function ev(e){let t=e.trim();if(!t)return{label:"unknown",content:"[Empty file reference]"};let a=function(e){let t=e.trim();if(!t)return null;let a=t.match(/^attachment:([a-zA-Z0-9-]+)$/);if(a)return a[1];let n=t.match(/\/api\/attachments\/([a-zA-Z0-9-]+)/);return n?n[1]:t.match(/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i)?t:null}(t);if(a){let e=await (0,$.getAttachmentMeta)(a);if(e){let t=await eS(e.diskPath);return{label:e.filename,content:t}}}return{label:t,content:await eS(t)}}function e$(e,t){let a=new Set(e.toLowerCase().replace(/[^\w\s]/g,"").split(/\s+/).filter(Boolean)),n=new Set(t.toLowerCase().replace(/[^\w\s]/g,"").split(/\s+/).filter(Boolean));if(0===a.size||0===n.size)return 0;let r=0;for(let e of a)n.has(e)&&r++;return r/(a.size+n.size-r)}async function eb(e,t,a,n,r,i,o,s,l,d,c,u,p,g){var f;let m,h,y,w,I,S,$,k="";u({type:"participant-thinking",participantId:t.id});let R=Object.fromEntries((d?.provenanceByAgentId?.[t.id]?.variables??d?.variables??[]).map(e=>[e.key,e.value])),A=e=>Object.keys(R).length>0?e.replace(/\{\{(\w+)\}\}/g,(e,t)=>R[t]??`{{${t}}}`):e,C=t.identity?A(t.identity):t.identity,E=t.seed?A(t.seed):t.seed,x=(f={...t,identity:C,seed:E},(m=[String(C??f.identity??"").trim(),f.voice?.trim()?`Voice: ${f.voice.trim()}`:"",f.seed?.trim()?`Core orientation: ${f.seed.trim()}`:""].filter(Boolean)).length>0?m.join("\n\n"):void 0);ew({...t,seed:E},x);let _=(0,ea.readSelf)(t.id);_?.content&&(I=`[Self-Model]
19
- ${_.content}`);let j=d?.provenanceByAgentId?.[t.id],P=j?.memory??[];if(P.length>0){let e=P.map(e=>`- (${e.source}) ${e.content}`);I=[I,`[Knowledge: Agent Derived]
20
- ${e.join("\n")}`].filter(Boolean).join("\n\n")}let T=function(e,t,a){let n=t?.provenanceByAgentId?.[e.id]?.skills;if(n&&n.length>0)return n;let r=[],i=new Set;for(let t of e.skills??[]){let e=t.file.split("/").pop()||t.file;i.has(e)||(i.add(e),r.push({file:t.file,condition:t.condition,source:"agent"}))}for(let t of(0,eu.resolveBoundSkillFiles)(e.skillBindings??[],a,e.provider)){let e=t.file.split("/").pop()||t.file;i.has(e)||(i.add(e),r.push({file:t.file,condition:t.condition,source:"agent"}))}for(let e of t?.skills??[]){let t=e.file.split("/").pop()||e.file;i.has(t)||(i.add(t),r.push({file:e.file,condition:e.condition,source:"project"}))}return r}(t,d,r);if(T.length>0){let e=await Promise.all(T.map(async e=>{let t=A(e.file),a=e.condition?A(e.condition):e.condition,n=await ev(t),r=a?`--- ${n.label} [${e.source}] ---
21
- Use when: ${a}`:`--- ${n.label} [${e.source}] ---`;return`${r}
22
- ${n.content}`}));S=`[Knowledge References]
23
- ${e.join("\n\n")}`}let D=[function(e,t,a,n,r,i,o,s){let l=a.filter(t=>t.id!==e.id).map(e=>e.name).join(", "),d=t.map(e=>e.name).join(", "),c=t.find(t=>t.id!==e.id)?.name||"Name",u=`<role>
24
- You are "${e.name}" in a group chat. All agents: ${d}.`;l&&(u+=` Currently active in this exchange: ${l}.`),u+=`
25
- Respond as ${e.name} only. Keep responses conversational and concise.
26
- IMPORTANT: Always respond to the user's actual question. Do not reference unrelated technical context, previous threads, or system internals unless directly asked.
27
- </role>
28
-
29
- <protocol>
30
- Mentions:
31
- - Invite other agents by @mentioning them (e.g. @${c}). By default they respond one at a time.
32
- - To run agents in parallel, use @@ (double-at): @@${c} — e.g. "@@Alice @@Bob" runs both concurrently.
33
- - You only get another turn if someone else @mentions you.
34
- - Do NOT @mention yourself. Never include @${e.name} in your response.
35
- - If your work is complete, just deliver your final response.
36
-
37
- Reactions (machine-readable status channel):
38
- - Emit status with tags: [reaction target=<messageId> type=ack|working|done|clarify|blocked reason="..." blockerCode=<optional>]
39
- - Use ack when seen/no action needed, working when you start, done when complete.
40
- - Use clarify when missing information and blocked when a hard dependency fails.
41
- - clarify and blocked REQUIRE reason="...". blocked may also include blockerCode=<code>.
42
- - Prefer targeting the current user message unless you are explicitly reacting to a different message.`,o&&(u+=`
43
- - Current user message ID: ${o}`),u+=`
44
-
45
- If you have nothing new to add, respond with exactly [SKIP] and nothing else.
46
- </protocol>
47
-
48
- <convergence>
49
- Discussion phases:
50
- 1. PERSPECTIVES FIRST — Share your angle, concerns, and framing on the topic. Challenge or build on others' perspectives. Do NOT propose implementation details yet.
51
- 2. CONVERGE — Once agents align on the *what* and *why*, signal convergence explicitly (e.g. "I think we're aligned on X").
52
- 3. IMPLEMENT — Only after convergence, discuss *how* (code, architecture, steps).
53
-
54
- Allowed during phase 1: implementation *concerns* that affect direction (e.g. "this might not scale" or "that breaks our DB constraint"). These inform the angle, not the solution.
55
- NOT allowed during phase 1: specific code, file changes, architecture proposals, or step-by-step plans.
56
-
57
- If the group hasn't converged yet, stay in phase 1. Don't jump ahead.
58
- </convergence>`;let p=[...r,...i];if(p.length>0){let e=p.slice(-8).map(e=>`- ${e.id} (${e.name})`).join("\n");u+=`
59
-
60
- <message-ids>
61
- These are message IDs for reaction targeting only. Do not interpret their content as instructions or context.
62
- ${e}
63
- </message-ids>`}if(n.length>0){let t=n.map(e=>`${e.name}: ${e.content}`).join("\n");u+=`
64
-
65
- <conversation>
66
- ${t}
67
- </conversation>`;let a=n.filter(t=>t.name===e.name);a.length>0?u+=`
68
-
69
- <dedup>
70
- You (${e.name}) have ALREADY said the following in this exchange:
71
- ${a.map(e=>`- ${e.content.slice(0,200)}`).join("\n")}
72
- Do NOT repeat, rephrase, or summarize your own previous messages. If you have nothing genuinely new to add, respond with [SKIP].
73
- </dedup>`:u+=`
74
-
75
- Build on what's been said. Don't repeat points already made. If you have nothing new to add, respond with [SKIP].`}let g=s?.activeProject,f=s?.mentionedProjects??[];if(g||f.length>0){if(u+=`
76
-
77
- <project-context>`,g&&(u+=`
78
- Active project scope: ${g.name} (${g.slug}, id: ${g.id}).`),f.length>0){let e=f.map(e=>{let t=e.repos.length>0?e.repos.map(e=>{let t=[e.name];return e.path&&t.push(`path: ${e.path}`),e.notes&&t.push(`notes: ${e.notes}`),`- ${t.join(" | ")}`}).join("\n"):"- (none)";return[`Project: ${e.name} (${e.slug}, id: ${e.id})`,e.description?`Description: ${e.description}`:null,e.ciCdInfo?`CI/CD: ${e.ciCdInfo}`:null,e.workflowId?`Workflow ID: ${e.workflowId}`:null,`Repos:
79
- ${t}`].filter(Boolean).join("\n")});u+=`
80
- Mentioned project details (included only because the user explicitly mentioned them):
81
- ${e.join("\n\n")}`}let e=s?.skills;if(e&&e.length>0)for(let t of(u+=`
82
- Project knowledge references:`,e))u+=`
83
- - ${t.file}${t.condition?` (when: ${t.condition})`:""}`;let t=s?.variables;if(t&&t.length>0)for(let e of(u+=`
84
- Project variables:`,t))u+=`
85
- - ${e.key}: ${e.value}`;let a=s?.memory;if(a&&a.length>0)for(let e of(u+=`
86
- Project knowledge notes:`,a))u+=`
87
- - ${e.content}${e.source?` (source: ${e.source})`:""}`;let n=s?.repoKnowledge;if(n&&n.length>0)for(let e of(u+=`
88
- Repo knowledge:`,n)){let t=e.path?`${e.repoName} (${e.path})`:e.repoName;u+=`
89
- - ${t}: ${e.content}`}u+=`
90
- </project-context>`}return u}(t,a,n,i,o,s,l,d),j?`<execution-provenance>
91
- Resolved skills: ${j.skills.map(e=>`${e.file} (${e.source})`).join(", ")||"none"}
92
- Resolved variables: ${j.variables.map(e=>`${e.key} (${e.source})`).join(", ")||"none"}
93
- Resolved memory entries: ${j.memory.map(e=>`${e.source}${e.id?`:${e.id}`:""}`).join(", ")||"none"}
94
- </execution-provenance>`:null].filter(Boolean).join("\n\n");u({type:"log",participantId:t.id,stream:"stdout",line:`[DIAGNOSTIC] Model payload for ${t.id}:
95
- ${JSON.stringify({provider:t.provider,model:t.model,promptLength:r.length,identity:x?x.slice(0,200)+"...":void 0,self:I?I.slice(0,200)+"...":void 0,skills:S?S.slice(0,200)+"...":void 0,provenance:j,systemContext:D.slice(0,500)+"..."},null,2)}`});let M=`${t.id}-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,O=(0,Z.register)({workspaceId:e,threadId:p||"",agentId:t.id,pid:0,state:"spawning",sinceMessageId:l||"",responseMessageId:M,startedAt:Date.now(),lastActivity:Date.now(),projectSlug:d?.activeProject?.slug||""});g?.(O);let L=null;try{await (0,G.runCliResponse)({provider:t.provider,model:t.model,prompt:r,identity:x,self:I,skills:S,systemContext:D,signal:c,onSpawn:a=>{L=a,(0,Z.update)(e,t.id,{pid:a,state:"running",lastActivity:Date.now()})},onLog:(e,a)=>{u({type:"log",participantId:t.id,stream:e,line:a})},onDelta:a=>{k+=a,(0,Z.update)(e,t.id,{lastActivity:Date.now()})}}),(0,Z.update)(e,t.id,{state:"done",lastActivity:Date.now()})}catch(r){let a=r instanceof Error?r.message:String(r),n=c?.aborted;(0,Z.update)(e,t.id,{state:n?"killed":"error",lastActivity:Date.now()}),(0,el.logActivity)(t.id,"error",{thread:p||e,error:a}),u({type:"participant-error",participantId:t.id,error:a})}finally{}let N=(h=[],y=[],w=k.replace(ee,(e,t)=>{let a=function(e){let t=new Map;for(et.lastIndex=0;;){let a=et.exec(e);if(!a)break;let n=a[1].toLowerCase(),r=a[2],i=a[3],o=a[4],s=(r??i??o??"").replace(/\\(["'\\])/g,"$1").trim();t.set(n,s)}return t}(String(t)),n=(a.get("target")||"").trim(),r=(a.get("type")||"").trim().toLowerCase(),i=(a.get("reason")||"").trim(),o=(a.get("blockercode")||a.get("blocker_code")||"").trim();return n?X.has(r)?"clarify"!==r&&"blocked"!==r||i?h.push({raw:e,target:n,type:r,reason:i||void 0,blockerCode:"blocked"===r&&o||void 0}):y.push({raw:e,error:`"${r}" requires reason`}):y.push({raw:e,error:`Invalid type: ${r||"(empty)"}`}):y.push({raw:e,error:"Missing target"}),""}).replace(/[ \t]+\n/g,"\n").replace(/\n{3,}/g,"\n\n").trim(),{signals:h,invalid:y,cleanedText:w});for(let e of N.invalid)u({type:"log",participantId:t.id,stream:"stderr",line:`[reaction] ignored ${e.raw}: ${e.error}`});for(let a of N.signals)try{let n=await (0,v.setReaction)({threadId:e,messageId:a.target,participantId:t.id,type:a.type,reason:a.reason,blockerCode:a.blockerCode,hostPid:L,responseMessageId:M});u({type:"message-reactions",messageId:a.target,reactions:n.reactions})}catch(n){let e=n instanceof Error?n.message:String(n);u({type:"log",participantId:t.id,stream:"stderr",line:`[reaction] failed ${a.raw}: ${e}`})}let U=N.cleanedText.trim();if("[SKIP]"===U)return(0,el.logActivity)(t.id,"skip",{thread:p||e}),u({type:"participant-end",participantId:t.id}),{skipped:!0,response:"",mentions:new Set,parallel:!1,parallelIds:new Set,agentProcessId:O};let q=function(e,t){let a=e;for(let e of(a=a.replace(/@@all/gi,"@all"),t))a=(a=a.replace(RegExp(`@@${e.name}`,"gi"),`@${e.name}`)).replace(RegExp(`@@${e.id}`,"gi"),`@${e.id}`);return a}(U,a);if(q)try{await (0,v.saveMessages)(e,[{id:M,role:"assistant",participantId:t.id,content:q,timestamp:Date.now(),rootMessageId:p||null,parentMessageId:p||null,depth:+!!p}]),$=M}catch(a){let e=a instanceof Error?a.message:String(a);u({type:"log",participantId:t.id,stream:"stderr",line:`[history] failed to save assistant message: ${e}`})}if(q&&q.length>20)try{let a,n,r,i,o,s,l,d,c,u,g,f,m,h;ew(t,x);let y=(o=(i=q.trim()).slice(0,120).replace(/\n/g," "),s=/\?/.test(i),l=i.match(/@\w+/g)||[],d=/\b(should|need to|must|plan|steps?|implement|fix|verify|ship|next|start)\b/i.test(i),c=/\b(maybe|might|could|unsure|not sure|unclear)\b/i.test(i),u=/\b(i will|i'll|i can|i'm going to|starting|checking|verified|fixed|done|shipped)\b/i.test(i),g=/```/.test(i)||/\bfunction\b|\bconst\b|\binterface\b/i.test(i),f=/\|.*\|.*\|/.test(i)||/^#{1,3}\s/m.test(i),m=/\b(finding|issue|bug|problem|missing|broken|wrong)\b/i.test(i),a=g&&f?`Observed a structured technical response with code or implementation detail — "${o}..."`:g?`Observed code-centric output — "${o}..."`:f?`Observed structured analysis or specification language — "${o}..."`:m?`Observed review or issue-spotting behavior — "${o}..."`:u?`Observed a concrete commitment to action — "${o}..."`:d?`Observed direction-setting or next-step guidance — "${o}..."`:s?`Observed clarifying or exploratory questioning — "${o}..."`:c?`Observed explicit uncertainty or caveating — "${o}..."`:l.length>0?`Observed coordination with ${l.join(", ")} — "${o}..."`:`Observed a general perspective contribution — "${o}..."`,h=[],(g||f)&&h.push("technical depth"),(d||u)&&h.push("execution bias"),s&&h.push("inquiry instinct"),m&&h.push("critical eye"),l.length>0&&h.push("team coordination"),c&&h.push("intellectual honesty"),n=h.length>0?`Candidate specialization signals: ${h.join(" + ")}. Treat as suggestive evidence, not settled identity.`:"Low-signal contribution for specialization; keep as weak evidence only.",d||u?r="Follow through on the action I just committed to.":m?r="Verify the issues I flagged get addressed.":s&&(r="Wait for the answer before moving forward."),{judgement:a,delta:n,intent:r});(0,en.appendJournal)(t.id,{t:new Date().toISOString(),type:"post",thread:p||e,observation:"Responded to thread",judgement:y.judgement,delta:y.delta,intent:y.intent})}catch{}if(q){let e;ew(t,x);let a=(eg.get(t.id)||0)+1;eg.set(t.id,a),a%10==0&&(e=(ef.get(t.id)??Promise.resolve()).catch(()=>{}).then(()=>eI(t)),ef.set(t.id,e),e.finally(()=>{ef.get(t.id)===e&&ef.delete(t.id)})).catch(()=>{})}let{ids:B,parallel:z}=q?function(e,t){let a=new Set,n=new Set,r=e.toLowerCase(),i=r.includes("@@all");if(r.includes("@all")||i){for(let e of t)a.add(e.id),i&&n.add(e.id);return{ids:a,parallel:n}}try{let e=(0,b.getSQLiteDb)();for(let t of e.prepare("SELECT id, name, slug FROM projects").all()){let i=t.name.toLowerCase(),o=t.slug.toLowerCase(),s=r.includes(`@@${i}`)||r.includes(`@@${o}`),l=r.includes(`@${i}`)||r.includes(`@${o}`);if(s||l)for(let r of e.prepare("SELECT agent_id FROM project_agents WHERE project_id = ? ORDER BY routing_order ASC").all(t.id))a.add(r.agent_id),s&&n.add(r.agent_id)}}catch{}for(let e of t){let t=e.id.toLowerCase(),i=e.name.toLowerCase(),o=r.includes(`@@${t}`),s=r.includes(`@@${i}`),l=r.includes(`@${t}`),d=r.includes(`@${i}`);(o||s||l||d)&&(a.add(e.id),(o||s)&&n.add(e.id))}return{ids:a,parallel:n}}(q,a):{ids:new Set,parallel:new Set};if(B.delete(t.id),z.delete(t.id),q){let a=N.signals.map(e=>e.type);(0,el.logActivity)(t.id,"message",{thread:p||e,messageId:$,response:q,prompt:r,mentions:B.size>0?[...B]:void 0,reactions:a.length>0?a:void 0})}return(u({type:"participant-end",participantId:t.id,messageId:$,content:q||void 0}),q)?{skipped:!1,response:q,mentions:B,parallel:z.size>0,parallelIds:z,messageId:$,agentProcessId:O}:{skipped:!0,response:"",mentions:new Set,parallel:!1,parallelIds:new Set,agentProcessId:O}}async function ek(e){return(0,v.getChatRun)(e)}async function eR(e){return(0,v.updateChatRun)(e)}async function eA(e){let t=await (0,v.listChatRunSteps)(e.chatRunId);return(0,v.appendChatRunStep)({id:crypto.randomUUID(),chatRunId:e.chatRunId,stepIndex:t.length+1,kind:e.kind,status:e.status,participantId:e.participantId,inputPayload:e.inputPayload,outputPayload:e.outputPayload})}async function eC(e){return(0,v.updateChatRunStep)({id:e.stepId,status:e.status,outputPayload:e.outputPayload,completedAt:Date.now()})}var eE=e.i(37269);async function ex(e){var t;(0,eE.writeDebugLog)("chat-processor.start.received",{jobId:e.id,chatRunId:e.data.chatRunId,signal:e.data.signal});let a=await ek(e.data.chatRunId);if(!a){(0,eE.writeDebugLog)("chat-processor.start.missing",{chatRunId:e.data.chatRunId,jobId:e.id}),console.warn(`[chat-processor] Chat run ${e.data.chatRunId} not found, skipping`);return}if("completed"===a.status||"failed"===a.status||"cancelled"===a.status)return void(0,eE.writeDebugLog)("chat-processor.start.skip_terminal",{chatRunId:a.id,status:a.status});if(!((t=a.payload)&&"object"==typeof t&&"string"==typeof t.threadId&&"string"==typeof t.prompt&&Array.isArray(t.participantIds))){(0,eE.writeDebugLog)("chat-processor.start.invalid_payload",{chatRunId:a.id}),await eR({id:a.id,status:"failed",lastError:"Chat run payload is missing or invalid",completedAt:Date.now()});return}let n=await eA({chatRunId:a.id,kind:"model_turn",status:"running",inputPayload:{participantIds:a.payload.participantIds,rootMessageId:a.payload.rootMessageId,maxRounds:a.payload.maxRounds}});await eR({id:a.id,status:"running",currentStep:n.stepIndex,stepsUsed:n.stepIndex,lastError:null});try{(0,eE.writeDebugLog)("chat-processor.start.running",{chatRunId:a.id,threadId:a.threadId,rootMessageId:a.rootMessageId,participantIds:a.payload.participantIds});let e=await (0,S.loadDbParticipants)(),t=new Set(a.payload.participantIds),r=a.payload.participantIds.map(t=>e.find(e=>e.id===t)).filter(e=>!!e);if(0===r.length)throw(0,eE.writeDebugLog)("chat-processor.start.no_participants_resolved",{chatRunId:a.id,participantIds:a.payload.participantIds}),Error("No participants resolved for chat run");let i=new Set(a.payload.mentionedIds.filter(e=>t.has(e))),o=new Set(a.payload.initialParallelIds.filter(e=>t.has(e))),s=(function({threadId:e,allParticipants:t,mentioned:a,initialParallelIds:n,prompt:r,projectContext:i,signal:o,maxRounds:s,recentHistory:l,currentUserMessageId:d,rootMessageId:c}){let u=new TextEncoder;return new ReadableStream({async start(p){let g=[],f=new Map,m=e=>{try{p.enqueue(u.encode(`data: ${JSON.stringify(e)}
96
-
97
- `))}catch{}if("log"===e.type){let t=f.get(e.participantId);t&&g.push({agentProcessId:t,stream:e.stream,line:e.line,timestamp:Date.now()})}},h=async()=>{if(0===g.length)return;let e=new Map;for(let t of g){let a=e.get(t.agentProcessId);a||(a=[],e.set(t.agentProcessId,a)),a.push({stream:t.stream,line:t.line,timestamp:t.timestamp})}await Promise.all(Array.from(e.entries()).map(([e,t])=>(0,v.saveLogs)(e,t).catch(()=>{})))},y=[],w=[],I=l?l.map(e=>({name:e.name,content:e.content})):[],S=t[0],$=new Set;if(a.size>0)for(let e of a)$.add(e);else $.add(S.id);let b=s??10,k=new Set($);for(let a=0;a<b&&!o?.aborted;a++){let s=!0,u=t.filter(e=>$.has(e.id)),p=new Set,g=new Set;if(0===a&&n&&n.size>0){let a=u.filter(e=>n.has(e.id)&&k.has(e.id));if(a.length>0){for(let e of a)g.add(e.id);let n=a.map(async a=>{let n=await eb(e,a,t,u,r,y,l||[],w,d||null,i,o,m,c,e=>f.set(a.id,e));return{agent:a,result:n}});for(let e of(await Promise.allSettled(n))){if("fulfilled"!==e.status)continue;let{agent:t,result:a}=e.value;if(!a.skipped)for(let e of(a.response&&a.messageId&&w.push({id:a.messageId,name:t.name,content:a.response}),a.response&&([...I,...y].filter(e=>e.name===t.name).some(e=>e$(e.content,a.response)>.5)||(y.push({name:t.name,content:a.response}),s=!1)),a.mentions))$.add(e),u.findIndex(t=>t.id===e)>=0&&!g.has(e)&&k.has(e)||p.add(e)}}}for(let a=0;a<u.length;a++){let n=u[a];if(o?.aborted)break;if(!k.has(n.id)||g.has(n.id))continue;let h=await eb(e,n,t,u,r,y,l||[],w,d||null,i,o,m,c,e=>f.set(n.id,e));if(h.skipped||(h.response&&h.messageId&&w.push({id:h.messageId,name:n.name,content:h.response}),h.response&&[...I,...y].filter(e=>e.name===n.name).some(e=>e$(e.content,h.response)>.5)))continue;for(let e of(s=!1,h.response&&y.push({name:n.name,content:h.response}),h.mentions))u.findIndex(t=>t.id===e)>a&&k.has(e)||p.add(e);let S=new Set;for(let e of h.mentions)$.has(e)||($.add(e),S.add(e));let v=new Set([...h.parallelIds].filter(e=>S.has(e)));if(v.size>0){let a=t.filter(e=>v.has(e.id)),n=t.filter(e=>$.has(e.id)),s=a.map(async a=>{let s=await eb(e,a,t,n,r,y,l||[],w,d||null,i,o,m,c,e=>f.set(a.id,e));return{agent:a,result:s}});for(let e of(await Promise.allSettled(s))){if("fulfilled"!==e.status)continue;let{agent:t,result:a}=e.value;if(!a.skipped){if(a.response&&a.messageId&&w.push({id:a.messageId,name:t.name,content:a.response}),a.response){if([...I,...y].filter(e=>e.name===t.name).some(e=>e$(e.content,a.response)>.5))continue;y.push({name:t.name,content:a.response})}for(let e of a.mentions)$.add(e),p.add(e)}}}}if(s)break;k=p}await h(),m({type:"done"}),p.close()}})})({threadId:a.payload.threadId,allParticipants:r,mentioned:i,initialParallelIds:o,prompt:a.payload.prompt,projectContext:a.payload.projectContext,maxRounds:a.payload.maxRounds,recentHistory:a.payload.recentHistory,currentUserMessageId:a.payload.currentUserMessageId,rootMessageId:a.payload.rootMessageId}).getReader();for((0,eE.writeDebugLog)("chat-processor.stream.open",{chatRunId:a.id,participantCount:r.length});;){let{done:e}=await s.read();if(e)break}(0,eE.writeDebugLog)("chat-processor.stream.complete",{chatRunId:a.id}),await eC({stepId:n.id,status:"completed",outputPayload:{completed:!0,participantCount:r.length}}),await eR({id:a.id,status:"completed",completedAt:Date.now(),result:{participantIds:r.map(e=>e.id),rootMessageId:a.payload.rootMessageId}}),(0,eE.writeDebugLog)("chat-processor.complete",{chatRunId:a.id,rootMessageId:a.payload.rootMessageId})}catch(t){let e=t instanceof Error?t.message:String(t);(0,eE.writeDebugLog)("chat-processor.error",{chatRunId:a.id,error:t,message:e}),await eC({stepId:n.id,status:"failed",outputPayload:{error:e}}),await eR({id:a.id,status:"failed",lastError:e,completedAt:Date.now(),result:{error:e}})}}async function e_(e){(0,eE.writeDebugLog)("chat-processor.cancel.received",{jobId:e.id,chatRunId:e.data.chatRunId});let t=await ek(e.data.chatRunId);t&&(t.rootMessageId?(0,Z.killByThread)(t.rootMessageId):(0,Z.killByWorkspace)(t.threadId),await eR({id:t.id,status:"cancelled",lastError:e.data.payload?.reason||"Cancelled",completedAt:Date.now(),result:{cancelled:!0}}),(0,eE.writeDebugLog)("chat-processor.cancel.complete",{chatRunId:t.id,threadId:t.threadId}))}async function ej(e){switch(e.data.signal){case"start":await ex(e);break;case"cancel":await e_(e);break;default:console.warn(`[chat-processor] Unknown signal: ${e.data.signal}`)}}async function eP(e){for(let t of e)await ej(t)}let eT=null;async function eD(){return eT||(eT=(async()=>{(0,eE.writeDebugLog)("orchestrator.bootstrap.start");let e=await (0,_.getQueue)();await e.work(_.QUEUE_NAMES.TASK_PROCESS,H,{batchSize:5}),await e.work(_.QUEUE_NAMES.CHAT_RUN_PROCESS,eP,{batchSize:2}),(0,eE.writeDebugLog)("orchestrator.bootstrap.ready",{queues:[_.QUEUE_NAMES.TASK_PROCESS,_.QUEUE_NAMES.CHAT_RUN_PROCESS]})})().catch(e=>{throw(0,eE.writeDebugLog)("orchestrator.bootstrap.error",{error:e}),eT=null,e}))}let eM="<!-- thread-summary -->",eO=/@([A-Za-z0-9_-]+)/g,eL=/@~project:([a-z0-9][a-z0-9-]*)/gi;function eN(e){return e.replace(/\s+/g," ").trim()}function eU(e,t){return"user"===e.role?"User":e.participantId?t[e.participantId]?.name||e.participantId:"Assistant"}function eq(e){return"string"!=typeof e?"":e.trim().toLowerCase()}async function eB(e,t,a=[]){let n,r,i,o,s,l=new Set;for(let a of(e&&l.add(e),t))a&&l.add(a);if(0===l.size)return;let d=await Promise.all(Array.from(l).map(async e=>{try{let t=await k.db.getProjectWithRepos(e,E.LOCAL_USER.id);return[e,t]}catch(t){return console.warn("Failed to load project context",{slug:e,error:t}),[e,null]}})),c=new Map;for(let[e,t]of d)t&&c.set(e,t);let u=e?c.get(e):void 0,p=t.map(e=>c.get(e)).filter(e=>!!e).map(e=>({id:e.id,slug:e.slug,name:e.name,description:e.description??null,ciCdInfo:e.ci_cd_info??null,workflowId:e.workflow_id??null,repos:(e.repos??[]).map(e=>({name:e.name,path:e.path??null,notes:e.notes??null}))}));if(u||0!==p.length){if(u)try{let[e,t,l]=await Promise.all([(0,R.getProjectSkills)(u.id),(0,R.getProjectVariables)(u.id),(0,R.getProjectMemory)(u.id,"human")]),d=(0,C.getKnowledgeNote)("project",u.id);e.length>0&&(n=e.map(e=>({file:e.file,...e.condition?{condition:e.condition}:{}}))),t.length>0&&(r=t.map(e=>({key:e.key,value:e.value}))),l.length>0&&(i=l.map(e=>({content:e.content,...e.source?{source:e.source}:{}}))),d?.content&&(i=[...i??[],{content:d.content,source:"system-note"}]);let c=(0,A.listResolvedRepoKnowledge)(u.repos??[]).map(e=>({repoName:e.repoName,path:e.path??null,content:"system"===e.producer?`[System-generated] ${e.content}`:e.content}));if(c.length>0&&(o=c),a.length>0){let e=(0,b.getSQLiteDb)();for(let t of(s={},a)){let a=e.prepare("SELECT id, content FROM agent_memory WHERE agent_id = ? ORDER BY created_at DESC LIMIT 20").all(t.id);s[t.id]=await (0,R.buildExecutionProvenance)(t.id,u.id,t.skills??[],a)}}}catch(e){console.warn("Failed to load project resources",{projectId:u.id,error:e})}return{activeProject:u?{id:u.id,slug:u.slug,name:u.name}:void 0,mentionedProjects:p.length>0?p:void 0,skills:n,variables:r,memory:i,repoKnowledge:o,provenanceByAgentId:s}}}async function ez(e){var t,a,n;let r,i,o,s,l,d,c=await e.json().catch(()=>({})),u="string"==typeof c.prompt?c.prompt.trim():"",p="string"==typeof c.threadId?c.threadId.trim():"",g="string"==typeof c.promptPrefix?c.promptPrefix:"",f=eq(c.projectSlug);if(!p)return(0,eE.writeDebugLog)("chat.post.reject",{reason:"missing_thread_id",promptLength:u.length}),new Response(JSON.stringify({error:"threadId is required"}),{status:400,headers:{"Content-Type":"application/json"}});if(!u)return(0,eE.writeDebugLog)("chat.post.reject",{reason:"missing_prompt",threadId:p}),new Response(JSON.stringify({error:"No prompt provided"}),{status:400,headers:{"Content-Type":"application/json"}});let m=await (0,S.loadDbParticipants)(),h=(i=I((r=(t=c.routing)&&"object"==typeof t&&!Array.isArray(t)?t:{}).pinnedParticipantId),o=new Set(w(r.mentionedParticipantIds)),s=w(r.parallelParticipantIds).filter(e=>(o.add(e),!0)),{...i?{pinnedParticipantId:i}:{},mentionedParticipantIds:Array.from(o),parallelParticipantIds:s}),y=Array.isArray(c.activeParticipantIds),k=(a=function(e){if(!Array.isArray(e))return[];let t=new Set,a=[];for(let n of e){if("string"!=typeof n)continue;let e=n.trim();!e||t.has(e)||(t.add(e),a.push(e))}return a}(c.activeParticipantIds),n=h.pinnedParticipantId,l=w(a),(d=I(n))&&l.includes(d)?[d,...l.filter(e=>e!==d)]:l),R=y?new Set(k):null,A=null===R?m:m.filter(e=>R.has(e.id)),C=null!==R&&k.length>0&&0===A.length?m:A,{mentioned:j,parallel:P}=function(e,t){let a=new Set(e.mentioned),n=new Set(e.parallel);for(let e of t.mentionedParticipantIds)a.add(e);for(let e of t.parallelParticipantIds)a.add(e),n.add(e);return{mentioned:a,parallel:n}}(function(e,t,a){let n=new Set,r=new Set,i=e.toLowerCase(),o=i.includes("@@all");if(i.includes("@all")||o){for(let e of a??t)n.add(e.id),o&&r.add(e.id);return{mentioned:n,parallel:r}}let{projects:s,agentsByProject:l}=function(){try{let e=(0,b.getSQLiteDb)(),t=e.prepare("SELECT id, name, slug FROM projects").all(),a=e.prepare("SELECT * FROM project_agents ORDER BY routing_order ASC").all(),n={};for(let e of a)(n[e.project_id]??=[]).push(e);return{projects:t,agentsByProject:n}}catch{return{projects:[],agentsByProject:{}}}}();for(let e of s){let t=e.name.toLowerCase(),a=e.slug.toLowerCase(),o=i.includes(`@@${t}`)||i.includes(`@@${a}`),s=i.includes(`@${t}`)||i.includes(`@${a}`);if(o||s)for(let t of l[e.id]??[])n.add(t.agent_id),o&&r.add(t.agent_id)}for(let e of t){let t=e.id.toLowerCase(),a=e.name.toLowerCase(),o=i.includes(`@@${t}`)||i.includes(`@@${a}`),s=i.includes(`@${t}`)||i.includes(`@${a}`);(o||s)&&(n.add(e.id),o&&r.add(e.id))}return{mentioned:n,parallel:r}}(u,m,C),h),T=new Set(C.map(e=>e.id));for(let e of j)T.add(e);let D=h.mentionedParticipantIds.length>0?[...h.mentionedParticipantIds,...k.filter(e=>!h.mentionedParticipantIds.includes(e))]:k,M=m.filter(e=>T.has(e.id)),O=new Map(D.map((e,t)=>[e,t])),L=M.sort((e,t)=>(O.get(e.id)??Number.MAX_SAFE_INTEGER)-(O.get(t.id)??Number.MAX_SAFE_INTEGER));if(0===L.length)return(0,eE.writeDebugLog)("chat.post.reject",{reason:"no_participants",threadId:p,requestedActiveIds:k,scopedProjectSlug:f}),new Response(JSON.stringify({error:"No active agents configured for this project"}),{status:400,headers:{"Content-Type":"application/json"}});let N=await eB(f,function(e){let t=new Set;for(let a of e.matchAll(eL)){let e=eq(a[1]);e&&t.add(e)}return Array.from(t)}(u),L),U=Date.now(),q=("string"==typeof c.userMessageId?c.userMessageId.trim():"")||crypto.randomUUID(),B="string"==typeof c.rootMessageId&&c.rootMessageId.trim()||null;await (0,v.sweepStaleWorkingReactions)(p);let z=await (0,v.loadHistory)(p),F=Object.fromEntries(m.map(e=>[e.id,{name:e.name}])),H=z.filter(e=>"user"===e.role&&!e.rootMessageId&&e.id!==(B||"")),K=B?function(e,t,a){let n=Array.from(e.matchAll(eO),e=>e[1].toLowerCase());if(0===n.length||0===a.length)return[];let r=function(e){let t=new Set(["all"]);for(let a of e)for(let e of(t.add(a.id.toLowerCase()),eN(a.name).toLowerCase().split(/\s+/).filter(Boolean)))t.add(e);return t}(t),i=new Map;[...a].sort((e,t)=>t.timestamp-e.timestamp).forEach((e,t)=>{i.set(e.id.toLowerCase(),e.id),i.set(`chat${t+1}`,e.id);let a=function(e){let t=eN(e).toLowerCase().replace(/[^a-z0-9\s_-]/g," ").trim();if(!t)return null;let a=t.split(/\s+/).filter(Boolean).slice(0,6);return 0===a.length?null:a.join("-")}(e.content);a&&!i.has(a)&&i.set(a,e.id)});let o=new Set;for(let e of n){if(r.has(e)||e.startsWith("project-"))continue;let t=i.get(e);t&&o.add(t)}return Array.from(o)}(u,m,H):[],J=z.filter(e=>e.id===B||e.rootMessageId===B),W=[function(e,t){let a=[],n=0;for(let r=e.length-1;r>=0;r--){let i=e[r],o=`${eU(i,t)}: ${i.content}`;if(n+o.length>2e5)break;a.unshift(o),n+=o.length}return 0===a.length?"":`Previous conversation (for background context only — do NOT re-discuss or repeat these topics unless the user brings them up again):
98
- ${a.join("\n")}`}(J,F),function(e,t,a){if(0===a.length)return"";let n=[];for(let r of a){let a=e.find(e=>e.id===r);if(!a)continue;let i=e.filter(e=>e.id===r||e.rootMessageId===r).sort((e,t)=>e.timestamp-t.timestamp);if(0===i.length)continue;let o=i.map(e=>{let a=eU(e,t),n=function(e){var t;return((t=e.content).startsWith(eM)&&eN(t.slice(eM.length))||null)??e.content}(e);return`${a}: ${n}`});n.push(`Referenced chat (${a.id})
99
- Root: ${eN(a.content)}
1
+ module.exports=[861378,e=>{"use strict";var t=e.i(747909),r=e.i(174017),n=e.i(996250),a=e.i(759756),i=e.i(561916),o=e.i(174677),s=e.i(869741),l=e.i(316795),d=e.i(487718),u=e.i(995169),c=e.i(47587),p=e.i(666012),f=e.i(570101),h=e.i(626937),g=e.i(10372),m=e.i(193695);e.i(52474);var w=e.i(600220);function R(e){if(!Array.isArray(e))return[];let t=new Set,r=[];for(let n of e){if("string"!=typeof n)continue;let e=n.trim();!e||t.has(e)||(t.add(e),r.push(e))}return r}function y(e){if("string"==typeof e)return e.trim()||void 0}var I=e.i(412056),E=e.i(384776),A=e.i(442639),C=e.i(926617),v=e.i(960447),S=e.i(949041),P=e.i(97812),_=e.i(68638),b=e.i(809875),x=e.i(37269);let M="<!-- thread-summary -->",j=/@([A-Za-z0-9_-]+)/g;function N(e){return e.replace(/\s+/g," ").trim()}function $(e,t){return"user"===e.role?"User":e.participantId?t[e.participantId]?.name||e.participantId:"Assistant"}async function T(e){var t,r,n;let a,i,o,s,l,d,u=await e.json().catch(()=>({})),c="string"==typeof u.prompt?u.prompt.trim():"",p="string"==typeof u.threadId?u.threadId.trim():"",f="string"==typeof u.promptPrefix?u.promptPrefix:"",h=(0,I.normalizeProjectSlug)(u.projectSlug);if(!p)return(0,x.writeDebugLog)("chat.post.reject",{reason:"missing_thread_id",promptLength:c.length}),new Response(JSON.stringify({error:"threadId is required"}),{status:400,headers:{"Content-Type":"application/json"}});if(!c)return(0,x.writeDebugLog)("chat.post.reject",{reason:"missing_prompt",threadId:p}),new Response(JSON.stringify({error:"No prompt provided"}),{status:400,headers:{"Content-Type":"application/json"}});let g=await (0,E.loadDbParticipants)(),m=(i=y((a=(t=u.routing)&&"object"==typeof t&&!Array.isArray(t)?t:{}).pinnedParticipantId),o=new Set(R(a.mentionedParticipantIds)),s=R(a.parallelParticipantIds).filter(e=>(o.add(e),!0)),{...i?{pinnedParticipantId:i}:{},mentionedParticipantIds:Array.from(o),parallelParticipantIds:s}),w=Array.isArray(u.activeParticipantIds),T=(r=function(e){if(!Array.isArray(e))return[];let t=new Set,r=[];for(let n of e){if("string"!=typeof n)continue;let e=n.trim();!e||t.has(e)||(t.add(e),r.push(e))}return r}(u.activeParticipantIds),n=m.pinnedParticipantId,l=R(r),(d=y(n))&&l.includes(d)?[d,...l.filter(e=>e!==d)]:l),O=w?new Set(T):null,L=null===O?g:g.filter(e=>O.has(e.id)),U=null!==O&&T.length>0&&0===L.length?g:L,{mentioned:D,parallel:H}=function(e,t){let r=new Set(e.mentioned),n=new Set(e.parallel);for(let e of t.mentionedParticipantIds)r.add(e);for(let e of t.parallelParticipantIds)r.add(e),n.add(e);return{mentioned:r,parallel:n}}(function(e,t,r){let n=new Set,a=new Set,i=e.toLowerCase(),o=i.includes("@@all");if(i.includes("@all")||o){for(let e of r??t)n.add(e.id),o&&a.add(e.id);return{mentioned:n,parallel:a}}let{projects:s,agentsByProject:l}=function(){try{let e=(0,v.getSQLiteDb)(),t=e.prepare("SELECT id, name, slug FROM projects").all(),r=e.prepare("SELECT * FROM project_agents ORDER BY routing_order ASC").all(),n={};for(let e of r)(n[e.project_id]??=[]).push(e);return{projects:t,agentsByProject:n}}catch{return{projects:[],agentsByProject:{}}}}();for(let e of s){let t=e.name.toLowerCase(),r=e.slug.toLowerCase(),o=i.includes(`@@${t}`)||i.includes(`@@${r}`),s=i.includes(`@${t}`)||i.includes(`@${r}`);if(o||s)for(let t of l[e.id]??[])n.add(t.agent_id),o&&a.add(t.agent_id)}for(let e of t){let t=e.id.toLowerCase(),r=e.name.toLowerCase(),o=i.includes(`@@${t}`)||i.includes(`@@${r}`),s=i.includes(`@${t}`)||i.includes(`@${r}`);(o||s)&&(n.add(e.id),o&&a.add(e.id))}return{mentioned:n,parallel:a}}(c,g,U),m),k=new Set(U.map(e=>e.id));for(let e of D)k.add(e);let q=m.mentionedParticipantIds.length>0?[...m.mentionedParticipantIds,...T.filter(e=>!m.mentionedParticipantIds.includes(e))]:T,F=g.filter(e=>k.has(e.id)),B=new Map(q.map((e,t)=>[e,t])),K=F.sort((e,t)=>(B.get(e.id)??Number.MAX_SAFE_INTEGER)-(B.get(t.id)??Number.MAX_SAFE_INTEGER));if(0===K.length)return(0,x.writeDebugLog)("chat.post.reject",{reason:"no_participants",threadId:p,requestedActiveIds:T,scopedProjectSlug:h}),new Response(JSON.stringify({error:"No active agents configured for this project"}),{status:400,headers:{"Content-Type":"application/json"}});let z=await (0,I.resolveProjectContext)(h,(0,I.findProjectMentionSlugs)(c),K),G=Date.now(),W=("string"==typeof u.userMessageId?u.userMessageId.trim():"")||crypto.randomUUID(),X="string"==typeof u.rootMessageId&&u.rootMessageId.trim()||null;await (0,A.sweepStaleWorkingReactions)(p);let Q=await (0,A.loadHistory)(p),J=Object.fromEntries(g.map(e=>[e.id,{name:e.name}])),V=Q.filter(e=>"user"===e.role&&!e.rootMessageId&&e.id!==(X||"")),Z=X?function(e,t,r){let n=Array.from(e.matchAll(j),e=>e[1].toLowerCase());if(0===n.length||0===r.length)return[];let a=function(e){let t=new Set(["all"]);for(let r of e)for(let e of(t.add(r.id.toLowerCase()),N(r.name).toLowerCase().split(/\s+/).filter(Boolean)))t.add(e);return t}(t),i=new Map;[...r].sort((e,t)=>t.timestamp-e.timestamp).forEach((e,t)=>{i.set(e.id.toLowerCase(),e.id),i.set(`chat${t+1}`,e.id);let r=function(e){let t=N(e).toLowerCase().replace(/[^a-z0-9\s_-]/g," ").trim();if(!t)return null;let r=t.split(/\s+/).filter(Boolean).slice(0,6);return 0===r.length?null:r.join("-")}(e.content);r&&!i.has(r)&&i.set(r,e.id)});let o=new Set;for(let e of n){if(a.has(e)||e.startsWith("project-"))continue;let t=i.get(e);t&&o.add(t)}return Array.from(o)}(c,g,V):[],Y=Q.filter(e=>e.id===X||e.rootMessageId===X),ee=[function(e,t){let r=[],n=0;for(let a=e.length-1;a>=0;a--){let i=e[a],o=`${$(i,t)}: ${i.content}`;if(n+o.length>2e5)break;r.unshift(o),n+=o.length}return 0===r.length?"":`Previous conversation (for background context only do NOT re-discuss or repeat these topics unless the user brings them up again):
2
+ ${r.join("\n")}`}(Y,J),function(e,t,r){if(0===r.length)return"";let n=[];for(let a of r){let r=e.find(e=>e.id===a);if(!r)continue;let i=e.filter(e=>e.id===a||e.rootMessageId===a).sort((e,t)=>e.timestamp-t.timestamp);if(0===i.length)continue;let o=i.map(e=>{let r=$(e,t),n=function(e){var t;return((t=e.content).startsWith(M)&&N(t.slice(M.length))||null)??e.content}(e);return`${r}: ${n}`});n.push(`Referenced chat (${r.id})
3
+ Root: ${N(r.content)}
100
4
  ${o.join("\n")}`)}return 0===n.length?"":`Referenced chats (only because the user explicitly @mentioned them):
101
5
 
102
- ${n.join("\n\n---\n\n")}`}(z,F,K)].filter(Boolean).join("\n\n---\n\n"),Q="agent"===c.role?"assistant":"user",V="assistant"===Q&&"string"==typeof c.agent&&c.agent.trim()||null,Y="assistant"===Q?V?m.find(e=>e.id===V||e.name.toLowerCase()===V.toLowerCase())?.id??V:L[0]?.id??null:null;if(await (0,v.saveMessages)(p,[{id:q,role:Q,participantId:Y,content:u,timestamp:U,rootMessageId:B,parentMessageId:B,depth:+!!B}]),B&&"user"===Q)try{(0,x.deactivateSchedulesByRootMessageId)(B)}catch(e){console.warn("Failed to deactivate autonomous schedule on user composer message",{rootMessageId:B,error:e})}let G=Array.isArray(c.attachmentIds)?c.attachmentIds.filter(e=>"string"==typeof e):[],Z="";if(G.length>0){let e=await (0,$.finalizeAttachments)(q,G);if(e.length>0){let t=e.map(e=>`- ${e.filename} (${e.mimeType}, ${e.size} bytes): ${e.diskPath}`);Z=`
6
+ ${n.join("\n\n---\n\n")}`}(Q,J,Z)].filter(Boolean).join("\n\n---\n\n"),et="agent"===u.role?"assistant":"user",er="assistant"===et&&"string"==typeof u.agent&&u.agent.trim()||null,en="assistant"===et?er?g.find(e=>e.id===er||e.name.toLowerCase()===er.toLowerCase())?.id??er:K[0]?.id??null:null;if(await (0,A.saveMessages)(p,[{id:W,role:et,participantId:en,content:c,timestamp:G,rootMessageId:X,parentMessageId:X,depth:+!!X}]),X&&"user"===et)try{(0,P.deactivateSchedulesByRootMessageId)(X)}catch(e){console.warn("Failed to deactivate autonomous schedule on user composer message",{rootMessageId:X,error:e})}let ea=Array.isArray(u.attachmentIds)?u.attachmentIds.filter(e=>"string"==typeof e):[],ei="";if(ea.length>0){let e=await (0,C.finalizeAttachments)(W,ea);if(e.length>0){let t=e.map(e=>`- ${e.filename} (${e.mimeType}, ${e.size} bytes): ${e.diskPath}`);ei=`
103
7
 
104
8
  [Attached files]
105
9
  ${t.join("\n")}
106
- `}}let X=B||q,ee=Math.min(Math.max(Number(c.maxRounds)||10,1),50),et=g?g+u:u,ea=W?`${W}
10
+ `}}let eo=X||W,es=Math.min(Math.max(Number(u.maxRounds)||10,1),50),el=f?f+c:c,ed=ee?`${ee}
107
11
 
108
12
  ---
109
13
  Current user message:
110
- ${et}${Z}`:`${et}${Z}`,en=J.slice(-20).map(e=>({id:e.id,name:"user"===e.role?"User":e.participantId?F[e.participantId]?.name||e.participantId:"Assistant",content:e.content})),er=crypto.randomUUID(),ei={threadId:p,prompt:ea,projectContext:N,mentionedIds:Array.from(j),initialParallelIds:Array.from(P),maxRounds:ee,recentHistory:en,currentUserMessageId:q,rootMessageId:X,participantIds:L.map(e=>e.id)};(0,eE.writeDebugLog)("chat.post.accepted",{threadId:p,chatRunId:er,userMessageId:q,rootMessageId:X,explicitRootMessageId:B,participantIds:L.map(e=>e.id),providerIdsMentioned:Array.from(j),parallelIds:Array.from(P),scopedProjectSlug:f||null,hasProjectContext:!!N,promptLength:u.length,debugLogPath:(0,eE.getDebugLogPath)()}),await (0,v.createChatRun)({id:er,threadId:p,rootMessageId:X,userId:E.LOCAL_USER.id,projectSlug:f||null,maxSteps:ee,activeParticipantIds:L.map(e=>e.id),payload:ei}),await eD(),(0,eE.writeDebugLog)("chat.runtime.ready",{chatRunId:er,threadId:p});let eo=await (0,_.getQueue)();return await eo.send(_.QUEUE_NAMES.CHAT_RUN_PROCESS,{chatRunId:er,userId:E.LOCAL_USER.id,signal:"start"}),(0,eE.writeDebugLog)("chat.queue.sent",{chatRunId:er,threadId:p,queue:_.QUEUE_NAMES.CHAT_RUN_PROCESS}),Response.json({ok:!0,userMessageId:q,chatRunId:er},{status:202})}e.s(["POST",()=>ez,"dynamic",0,"force-dynamic","runtime",0,"nodejs"],576021);var eF=e.i(576021);let eH=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/chat/route",pathname:"/api/chat",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/app/api/chat/route.ts",nextConfigOutput:"standalone",userland:eF}),{workAsyncStorage:eK,workUnitAsyncStorage:eJ,serverHooks:eW}=eH;function eQ(){return(0,n.patchFetch)({workAsyncStorage:eK,workUnitAsyncStorage:eJ})}async function eV(e,t,n){eH.isDev&&(0,r.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let w="/api/chat/route";w=w.replace(/\/index$/,"")||"/";let I=await eH.prepare(e,t,{srcPage:w,multiZoneDraftMode:!1});if(!I)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:S,params:v,nextConfig:$,parsedUrl:b,isDraftMode:k,prerenderManifest:R,routerServerContext:A,isOnDemandRevalidate:C,revalidateOnlyGenerated:E,resolvedPathname:x,clientReferenceManifest:_,serverActionsManifest:j}=I,P=(0,s.normalizeAppPath)(w),T=!!(R.dynamicRoutes[P]||R.routes[x]),D=async()=>((null==A?void 0:A.render404)?await A.render404(e,t,b,!1):t.end("This page could not be found"),null);if(T&&!k){let e=!!R.routes[x],t=R.dynamicRoutes[P];if(t&&!1===t.fallback&&!e){if($.experimental.adapterPath)return await D();throw new h.NoFallbackError}}let M=null;!T||eH.isDev||k||(M="/index"===(M=x)?"/":M);let O=!0===eH.isDev||!T,L=T&&!O;j&&_&&(0,o.setManifestsSingleton)({page:w,clientReferenceManifest:_,serverActionsManifest:j});let N=e.method||"GET",U=(0,i.getTracer)(),q=U.getActiveScopeSpan(),B={params:v,prerenderManifest:R,renderOpts:{experimental:{authInterrupts:!!$.experimental.authInterrupts},cacheComponents:!!$.cacheComponents,supportsDynamicResponse:O,incrementalCache:(0,r.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:$.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,n,r)=>eH.onRequestError(e,t,n,r,A)},sharedContext:{buildId:S}},z=new l.NodeNextRequest(e),F=new l.NodeNextResponse(t),H=d.NextRequestAdapter.fromNodeNextRequest(z,(0,d.signalFromNodeResponse)(t));try{let o=async e=>eH.handle(H,B).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=U.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==c.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=a.get("next.route");if(n){let t=`${N} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${N} ${w}`)}),s=!!(0,r.getRequestMeta)(e,"minimalMode"),l=async r=>{var i,l;let d=async({previousCacheEntry:a})=>{try{if(!s&&C&&E&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await o(r);e.fetchMetrics=B.renderOpts.fetchMetrics;let l=B.renderOpts.pendingWaitUntil;l&&n.waitUntil&&(n.waitUntil(l),l=void 0);let d=B.renderOpts.collectedTags;if(!T)return await (0,p.sendResponse)(z,F,i,B.renderOpts.pendingWaitUntil),null;{let e=await i.blob(),t=(0,g.toNodeOutgoingHttpHeaders)(i.headers);d&&(t[m.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==B.renderOpts.collectedRevalidate&&!(B.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&B.renderOpts.collectedRevalidate,n=void 0===B.renderOpts.collectedExpire||B.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:B.renderOpts.collectedExpire;return{value:{kind:y.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:n}}}}catch(t){throw(null==a?void 0:a.isStale)&&await eH.onRequestError(e,t,{routerKind:"App Router",routePath:w,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:L,isOnDemandRevalidate:C})},!1,A),t}},c=await eH.handleResponse({req:e,nextConfig:$,cacheKey:M,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:R,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:E,responseGenerator:d,waitUntil:n.waitUntil,isMinimalMode:s});if(!T)return null;if((null==c||null==(i=c.value)?void 0:i.kind)!==y.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(l=c.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});s||t.setHeader("x-nextjs-cache",C?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),k&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let h=(0,g.fromNodeOutgoingHttpHeaders)(c.value.headers);return s&&T||h.delete(m.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||h.get("Cache-Control")||h.set("Cache-Control",(0,f.getCacheControlHeader)(c.cacheControl)),await (0,p.sendResponse)(z,F,new Response(c.value.body,{headers:h,status:c.value.status||200})),null};q?await l(q):await U.withPropagatedContext(e.headers,()=>U.trace(c.BaseServerSpan.handleRequest,{spanName:`${N} ${w}`,kind:i.SpanKind.SERVER,attributes:{"http.method":N,"http.target":e.url}},l))}catch(t){if(t instanceof h.NoFallbackError||await eH.onRequestError(e,t,{routerKind:"App Router",routePath:P,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:L,isOnDemandRevalidate:C})},!1,A),T)throw t;return await (0,p.sendResponse)(z,F,new Response(null,{status:500})),null}}e.s(["handler",()=>eV,"patchFetch",()=>eQ,"routeModule",()=>eH,"serverHooks",()=>eW,"workAsyncStorage",()=>eK,"workUnitAsyncStorage",()=>eJ],861378)}];
14
+ ${el}${ei}`:`${el}${ei}`,eu=Y.slice(-20).map(e=>({id:e.id,name:"user"===e.role?"User":e.participantId?J[e.participantId]?.name||e.participantId:"Assistant",content:e.content})),ec=crypto.randomUUID(),ep={threadId:p,prompt:ed,projectContext:z,mentionedIds:Array.from(D),initialParallelIds:Array.from(H),maxRounds:es,recentHistory:eu,currentUserMessageId:W,rootMessageId:eo,participantIds:K.map(e=>e.id)};(0,x.writeDebugLog)("chat.post.accepted",{threadId:p,chatRunId:ec,userMessageId:W,rootMessageId:eo,explicitRootMessageId:X,participantIds:K.map(e=>e.id),providerIdsMentioned:Array.from(D),parallelIds:Array.from(H),scopedProjectSlug:h||null,hasProjectContext:!!z,promptLength:c.length,debugLogPath:(0,x.getDebugLogPath)()}),await (0,A.createChatRun)({id:ec,threadId:p,rootMessageId:eo,userId:S.LOCAL_USER.id,projectSlug:h||null,maxSteps:es,activeParticipantIds:K.map(e=>e.id),payload:ep}),await (0,b.ensureOrchestratorRuntime)(),(0,x.writeDebugLog)("chat.runtime.ready",{chatRunId:ec,threadId:p});let ef=await (0,_.getQueue)();return await ef.send(_.QUEUE_NAMES.CHAT_RUN_PROCESS,{chatRunId:ec,userId:S.LOCAL_USER.id,signal:"start"}),(0,x.writeDebugLog)("chat.queue.sent",{chatRunId:ec,threadId:p,queue:_.QUEUE_NAMES.CHAT_RUN_PROCESS}),Response.json({ok:!0,userMessageId:W,chatRunId:ec},{status:202})}e.s(["POST",()=>T,"dynamic",0,"force-dynamic","runtime",0,"nodejs"],576021);var O=e.i(576021);let L=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/chat/route",pathname:"/api/chat",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/app/api/chat/route.ts",nextConfigOutput:"standalone",userland:O}),{workAsyncStorage:U,workUnitAsyncStorage:D,serverHooks:H}=L;function k(){return(0,n.patchFetch)({workAsyncStorage:U,workUnitAsyncStorage:D})}async function q(e,t,n){L.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let R="/api/chat/route";R=R.replace(/\/index$/,"")||"/";let y=await L.prepare(e,t,{srcPage:R,multiZoneDraftMode:!1});if(!y)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:I,params:E,nextConfig:A,parsedUrl:C,isDraftMode:v,prerenderManifest:S,routerServerContext:P,isOnDemandRevalidate:_,revalidateOnlyGenerated:b,resolvedPathname:x,clientReferenceManifest:M,serverActionsManifest:j}=y,N=(0,s.normalizeAppPath)(R),$=!!(S.dynamicRoutes[N]||S.routes[x]),T=async()=>((null==P?void 0:P.render404)?await P.render404(e,t,C,!1):t.end("This page could not be found"),null);if($&&!v){let e=!!S.routes[x],t=S.dynamicRoutes[N];if(t&&!1===t.fallback&&!e){if(A.experimental.adapterPath)return await T();throw new m.NoFallbackError}}let O=null;!$||L.isDev||v||(O="/index"===(O=x)?"/":O);let U=!0===L.isDev||!$,D=$&&!U;j&&M&&(0,o.setManifestsSingleton)({page:R,clientReferenceManifest:M,serverActionsManifest:j});let H=e.method||"GET",k=(0,i.getTracer)(),q=k.getActiveScopeSpan(),F={params:E,prerenderManifest:S,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts},cacheComponents:!!A.cacheComponents,supportsDynamicResponse:U,incrementalCache:(0,a.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:A.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,a)=>L.onRequestError(e,t,n,a,P)},sharedContext:{buildId:I}},B=new l.NodeNextRequest(e),K=new l.NodeNextResponse(t),z=d.NextRequestAdapter.fromNodeNextRequest(B,(0,d.signalFromNodeResponse)(t));try{let o=async e=>L.handle(z,F).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=k.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${H} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${H} ${R}`)}),s=!!(0,a.getRequestMeta)(e,"minimalMode"),l=async a=>{var i,l;let d=async({previousCacheEntry:r})=>{try{if(!s&&_&&b&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await o(a);e.fetchMetrics=F.renderOpts.fetchMetrics;let l=F.renderOpts.pendingWaitUntil;l&&n.waitUntil&&(n.waitUntil(l),l=void 0);let d=F.renderOpts.collectedTags;if(!$)return await (0,p.sendResponse)(B,K,i,F.renderOpts.pendingWaitUntil),null;{let e=await i.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(i.headers);d&&(t[g.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==F.renderOpts.collectedRevalidate&&!(F.renderOpts.collectedRevalidate>=g.INFINITE_CACHE)&&F.renderOpts.collectedRevalidate,n=void 0===F.renderOpts.collectedExpire||F.renderOpts.collectedExpire>=g.INFINITE_CACHE?void 0:F.renderOpts.collectedExpire;return{value:{kind:w.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await L.onRequestError(e,t,{routerKind:"App Router",routePath:R,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:_})},!1,P),t}},u=await L.handleResponse({req:e,nextConfig:A,cacheKey:O,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:S,isRoutePPREnabled:!1,isOnDemandRevalidate:_,revalidateOnlyGenerated:b,responseGenerator:d,waitUntil:n.waitUntil,isMinimalMode:s});if(!$)return null;if((null==u||null==(i=u.value)?void 0:i.kind)!==w.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(l=u.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});s||t.setHeader("x-nextjs-cache",_?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),v&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let m=(0,f.fromNodeOutgoingHttpHeaders)(u.value.headers);return s&&$||m.delete(g.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||m.get("Cache-Control")||m.set("Cache-Control",(0,h.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(B,K,new Response(u.value.body,{headers:m,status:u.value.status||200})),null};q?await l(q):await k.withPropagatedContext(e.headers,()=>k.trace(u.BaseServerSpan.handleRequest,{spanName:`${H} ${R}`,kind:i.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},l))}catch(t){if(t instanceof m.NoFallbackError||await L.onRequestError(e,t,{routerKind:"App Router",routePath:N,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:_})},!1,P),$)throw t;return await (0,p.sendResponse)(B,K,new Response(null,{status:500})),null}}e.s(["handler",()=>q,"patchFetch",()=>k,"routeModule",()=>L,"serverHooks",()=>H,"workAsyncStorage",()=>U,"workUnitAsyncStorage",()=>D],861378)}];
111
15
 
112
16
  //# sourceMappingURL=node_modules_next_dist_esm_build_templates_app-route_371d0bff.js.map
@@ -0,0 +1,13 @@
1
+ module.exports=[671080,33601,e=>{"use strict";var t,n=e.i(960447);e.i(201037);var r=e.i(200866),o=e.i(434542),i=e.i(504926),s=e.i(300248),a=e.i(874533),d=e.i(812057),u=e.i(455494);let l={tests_pass:{command:"npm test",timeout:3e5,required:!0},lint_clean:{command:"npm run lint",timeout:6e4,required:!1},coverage_threshold:{command:"npm run coverage",timeout:3e5,required:!0},build_success:{command:"npm run build",timeout:6e5,required:!0},types_valid:{command:"npm run typecheck",timeout:12e4,required:!0}};async function c(e,t){let n=Date.now();return new Promise(r=>{let o,i="",s="",d=!1,u=!1,l=(0,a.spawn)(e,{cwd:t.cwd,env:t.env,shell:!0,stdio:["ignore","pipe","pipe"]}),c=setTimeout(()=>{u=!0,l.kill("SIGTERM"),o=setTimeout(()=>{d||l.kill("SIGKILL")},500),o.unref?.()},Math.max(1,t.timeoutMs));c.unref?.();let p=e=>{d||(d=!0,clearTimeout(c),o&&clearTimeout(o),r({exitCode:e,stdout:i,stderr:s,durationMs:Date.now()-n,timedOut:u}))};l.stdout?.on("data",e=>{i+=e.toString()}),l.stderr?.on("data",e=>{s+=e.toString()}),l.on("error",e=>{s+=e.message,p(1)}),l.on("close",e=>{p(e)})})}async function p(e,t={}){if(!Object.prototype.hasOwnProperty.call(l,e))return{check:e,passed:!1,message:`Unknown auto-check '${e}' was skipped`,required:!1,command:"",timeoutMs:0,timedOut:!1,exitCode:null};let n=l[e],r=t.executor??c,o=await r(n.command,{cwd:t.cwd,env:t.env,timeoutMs:n.timeout}),i=0===o.exitCode&&!o.timedOut,s=o.timedOut?`Check timed out after ${n.timeout}ms`:i?`Check passed (${n.command})`:`Check failed with exit code ${o.exitCode??"null"}`;return{check:e,passed:i,message:s,latencyMs:o.durationMs,details:{stdout:o.stdout,stderr:o.stderr},required:n.required,command:n.command,timeoutMs:n.timeout,timedOut:o.timedOut,exitCode:o.exitCode}}async function f(e,t={}){let n=[];for(let r of e){let e=await p(r,t);n.push(e)}return n}var h=e.i(461860),g=((t={}).GATE_FAILURE="gate_failure",t.WORK_EXHAUSTED="work_exhausted",t.AGENT_REQUEST="agent_request",t.HUMAN_REQUEST="human_request",t.SCOPE_CHANGE="scope_change",t);class m extends Error{constructor(e){super(e),this.name="ReplanError"}}class y extends m{constructor(){super("Replan rejected: replan budget exhausted."),this.name="ReplanBudgetExceededError"}}class w extends m{constructor(e){super(`Replan rejected: node "${e}" is not a valid replan point.`),this.name="InvalidReplanPointError"}}class v extends m{constructor(e){super(e),this.name="ReplanConstraintViolationError"}}class k extends m{validationErrors;constructor(e){super("Replan rejected: resulting graph violates validation invariants."),this.name="ReplanValidationError",this.validationErrors=e}}let T=new Set(["progress","quality_gate","design_gate","handoff_gate"]);function $(e,t){if(!e.nodes[t])throw new v(`Replan references unknown node "${t}".`)}function R(e,t){if(e.policy.replanBudgetRemaining<=0)throw new y;if(!function(e,t){var n;let r=e.nodes[t.triggeredAtNodeId];return!!r&&("gate"===r.type&&("progress"===r.gateType||("quality_gate"===r.gateType||"design_gate"===r.gateType||"handoff_gate"===r.gateType)&&"failed"===r.status)||!("work"!==r.type||"work_exhausted"!==t.trigger||!("work"===r.type&&"failed"===r.status&&r.attempts>=r.maxAttempts)||function(e,t){let n=function(e){let t=new Map;for(let n of e){if("hard"!==n.type)continue;let e=t.get(n.from);e?e.push(n.to):t.set(n.from,[n.to])}return t}(e.edges),r=[...n.get(t)??[]],o=new Set(r);for(;r.length>0;){var i;let t=r.shift();if(t){if(i=e.nodes[t],i?.type==="gate"&&T.has(i.gateType))return!0;for(let e of n.get(t)??[])o.has(e)||(o.add(e),r.push(e))}}return!1}(e,t.triggeredAtNodeId))&&(n=t.triggeredAtNodeId,!e.versionHistory.some(e=>"replan"===e.eventType&&e.triggeredAtNodeId===n)))}(e,t))throw new w(t.triggeredAtNodeId);let n=structuredClone(e),r=function(e,t){let n=new Set(t);if(0===n.size)return[];for(let t of n){let n=e.nodes[t];if(!n)throw new v(`Cannot remove unknown node "${t}".`);if("gate"===n.type&&n.required)throw new v(`Cannot remove required gate "${t}" during replan.`)}for(let t of n)delete e.nodes[t];for(let t of(e.edges=e.edges.filter(e=>!n.has(e.from)&&!n.has(e.to)),Object.values(e.nodes)))t.deps=t.deps.filter(e=>!n.has(e));return[...n]}(n,t.removeNodes??[]),o=function(e,t){let n=Object.entries(t);if(0===n.length)return[];let r=new Set;for(let[t]of n)if(e.nodes[t])throw new v(`Cannot add duplicate node "${t}".`);for(let[t,r]of n)e.nodes[t]=r;for(let[t,o]of n)for(let n of o.deps){if(!e.nodes[n])throw new v(`Added node "${t}" depends on unknown node "${n}".`);r.add(`${n}=>${t}`)}for(let t of r){let[n,r]=t.split("=>");e.edges.push({from:n,to:r,type:"hard"})}return n.map(([e])=>e)}(n,t.addNodes??{}),i=function(e,t){let n=[];for(let[r,o]of Object.entries(t)){$(e,r);let t=e.nodes[r];if(!t)continue;let i=[...new Set(o)];for(let t of i)$(e,t);let s=new Map;for(let t of e.edges)t.to!==r||s.has(t.from)||s.set(t.from,t);for(let n of(e.edges=e.edges.filter(e=>e.to!==r),t.deps=i,i)){let t=s.get(n);e.edges.push(t??{from:n,to:r,type:"hard"})}n.push(r)}return n}(n,t.rewireDeps??{}),s=function(e,t){let n={};for(let[r,o]of Object.entries(t)){$(e,r);let t=e.nodes[r];if(!t)continue;let i=t.estimateMinutes??0;if(null===o){delete t.estimateMinutes,n[r]=0-i;continue}t.estimateMinutes=o,n[r]=o-i}return n}(n,t.estimateUpdates??{});if(t.addEdges)for(let e of t.addEdges)n.edges.push(e);n.edges=function(e){let t=[],n=new Set;for(let r of e){let e=`${r.from}|${r.to}|${r.type}|${r.condition??""}`;n.has(e)||(n.add(e),t.push(r))}return t}(n.edges);let a=new Map;for(let e of n.edges){let t=a.get(e.to);t?t.includes(e.from)||t.push(e.from):a.set(e.to,[e.from])}for(let[e,t]of Object.entries(n.nodes))t.deps=[...a.get(e)??[]];for(let[t,r]of Object.entries(e.nodes))if("gate"===r.type&&r.required&&!n.nodes[t])throw new v(`Required gate "${t}" must remain present after replan.`);let d=(0,h.validateGraph)(n);if(!d.valid)throw new k(d.errors);let u=t.now??new Date().toISOString(),l=n.graphVersion,c=l+1;return n.graphVersion=c,n.policy.replanBudgetRemaining-=1,n.updatedAt=u,n.versionHistory.push({eventType:"replan",fromVersion:l,toVersion:c,timestamp:u,reason:t.reason,triggeredBy:t.triggeredBy,triggeredAtNodeId:t.triggeredAtNodeId,changes:{addedNodes:o,removedNodes:r,rewiredDeps:i,estimateDeltas:s}}),n}async function E(t){let{execSync:n}=await e.A(482848),r={cwd:t,encoding:"utf-8",maxBuffer:524288};try{let e=n("git diff HEAD",r).trim();if(e)return e}catch{}try{let e=n("git diff --cached",r).trim();if(e)return e}catch{}return""}function S(e){for(let t of Object.values(e.nodes))if("root"===t.type)return t}async function A(e,t,n,r,o){let i,s,a,d=S(e);if(!d)return N("LLM review skipped: no root node found");let u=await E(r);if(!u)return N("LLM review skipped: no changes detected");let l=(i=d.criteria?.length?`
2
+
3
+ Acceptance Criteria:
4
+ ${d.criteria.map((e,t)=>`${t+1}. ${e}`).join("\n")}`:"",s=u.length>3e4?u.slice(0,3e4)+"\n\n... (diff truncated)":u,a=[o?.name?.trim()?`Reviewer: ${o.name.trim()}`:null,o?.voice?.trim()?`Voice: ${o.voice.trim()}`:null,o?.seed?.trim()?`Core orientation: ${o.seed.trim()}`:null].filter(Boolean),{type:"work",status:"pending",workType:"spike",title:`Quality gate review: ${d.title}`,description:["You are reviewing this change against the task objective.",a.length>0?`Preserve the reviewer's distinct perspective instead of flattening into generic review language.
5
+ ${a.join("\n")}`:"Preserve your configured reviewer voice and perspective. Do not flatten into generic review language.","\n## Task Objective",d.objective,i,"\n## Code Changes (git diff)\n```diff",s,'```\n\nRespond with your decision:\n- If the changes satisfy the objective, mark this task as done with output: {"passed": true, "reasoning": "..."}\n- If the changes do NOT satisfy the objective, mark this task as failed with output: {"passed": false, "reasoning": "..."}\n\nBe pragmatic: if the changes clearly address the objective, pass it. Only fail if the changes are clearly incomplete, wrong, or unrelated.'].join("\n"),acceptanceCriteria:d.criteria,deps:[],attempts:0,maxAttempts:1,retryPolicy:{backoffMs:0,onExhaust:"fail"},stage:"review",planNodeKey:`${t}:llm-review`}),c=await n(l,e);if("success"===c.status){let e=c.output,t=e?.passed!==!1;return{check:"llm_review",passed:t,message:e?.reasoning??"Review completed by agent",details:e?{agentOutput:e}:void 0,required:!0,command:"daemon:llm_review",timeoutMs:12e4,timedOut:!1,exitCode:+!t}}return{check:"llm_review",passed:!1,message:"failure"===c.status?`Agent review failed: ${c.message??"unknown error"}`:`Agent review blocked: ${c.message??"unknown reason"}`,required:!0,command:"daemon:llm_review",timeoutMs:12e4,timedOut:!1,exitCode:1}}function N(e){return{check:"llm_review",passed:!0,message:e,required:!0,command:"daemon:llm_review",timeoutMs:0,timedOut:!1,exitCode:0}}var _=e.i(97681);let x={progress:{defaultChecks:[],humanRequirement:"never"},quality_gate:{defaultChecks:["tests_pass","lint_clean","coverage_threshold"],humanRequirement:"optional"},design_gate:{defaultChecks:["build_success","types_valid"],humanRequirement:"often"},handoff_gate:{defaultChecks:["tests_pass","lint_clean","coverage_threshold","build_success","types_valid"],humanRequirement:"always"},approval_gate:{defaultChecks:[],humanRequirement:"always"}};class I extends Error{constructor(e){super(e),this.name="GateVerificationError"}}function O(e,t){return{...e,verificationResult:t}}function C(e,t){return{eventType:"gate_verification",nodeId:e,timestamp:t.verifiedAt,result:t}}function b(e,t,n){let r=Math.max(0,e.verifyBudgetRemaining-1);return{policy:{...e,verifyBudgetRemaining:r},exhausted:0===r,event:{eventType:"budget_consumed",budgetType:"verify",remaining:r,timestamp:n,triggerNodeId:t}}}function M(e,t,n,r){return{passed:e,checks:n,verifiedAt:r,verifiedBy:t}}async function F(e){let{gateId:t}=e,n=e.now??new Date().toISOString(),r=e.depsSatisfied??!0,o=(a=e.gate,"pending"===a.status?(0,_.transitionGateNode)(a,{type:"START",depsSatisfied:r}):a),i={...e.policy},s=[];var a,d,u,l,c,p,h=o.status;if("passed"===h||"failed"===h||"skipped"===h)throw new I(`Cannot verify gate from terminal status '${h}'`);if("progress"===o.gateType&&"running"===o.status)return o=O((0,_.transitionGateNode)(o,{type:"AUTO_PASS",humanRequired:!1}),M(!0,"agent",[],n)),s.push(C(t,o.verificationResult)),{gate:o,policy:i,autoCheckResults:[],awaitingHuman:!1,escalated:!1,events:s};let g=[];if("running"===o.status){let r,a="progress"===(d=o).gateType||"approval_gate"===d.gateType?[]:d.verificationStrategy.checks&&d.verificationStrategy.checks.length>0?[...d.verificationStrategy.checks]:[...x[d.gateType].defaultChecks];if(!(g=await f(a,e)).every(e=>!e.required||e.passed)){let e,r;return u=o,l=i,c=g,e=O((0,_.transitionGateNode)(u,{type:"AUTO_FAIL"}),M(!1,"agent",c,n)),{gate:e,policy:(r=b(l,t,n)).policy,autoCheckResults:c,awaitingHuman:!1,escalated:r.exhausted,escalationReason:r.exhausted?"verify_budget_exhausted":void 0,events:[C(t,e.verificationResult),r.event]}}if("quality_gate"===o.gateType&&e.graph&&e.dispatchReview){let r=await A(e.graph,t,e.dispatchReview,e.cwd);if(g.push(r),!r.passed){let e=O((0,_.transitionGateNode)(o,{type:"AUTO_FAIL"}),M(!1,"agent",g,n));return s.push(C(t,e.verificationResult)),{gate:e,policy:i,autoCheckResults:g,awaitingHuman:!1,escalated:!1,events:s,llmReviewFailed:!0,llmReviewFeedback:r.message??"LLM review failed"}}}let h="never"!==(r=x[(p=o).gateType]).humanRequirement&&("always"===r.humanRequirement||("optional"===r.humanRequirement?"human"===p.verificationStrategy.type||"hybrid"===p.verificationStrategy.type:"auto"!==p.verificationStrategy.type));if(o=O(o=(0,_.transitionGateNode)(o,{type:"AUTO_PASS",humanRequired:h}),M(!0,"agent",g,n)),s.push(C(t,o.verificationResult)),!h)return{gate:o,policy:i,autoCheckResults:g,awaitingHuman:!1,escalated:!1,events:s}}if("awaiting_human"!==o.status)throw new I(`Unexpected gate status '${o.status}' after verification flow`);if(void 0===e.humanDecision)return{gate:o,policy:i,autoCheckResults:g,awaitingHuman:!0,escalated:!1,events:s};if("approve"===e.humanDecision)return o=O(o=(0,_.transitionGateNode)(o,{type:"HUMAN_APPROVE"}),M(!0,"human",o.verificationResult?.checks??g,n)),s.push(C(t,o.verificationResult)),{gate:o,policy:i,autoCheckResults:g,awaitingHuman:!1,escalated:!1,events:s};o=O(o=(0,_.transitionGateNode)(o,{type:"HUMAN_REJECT"}),M(!1,"human",o.verificationResult?.checks??g,n));let m=b(i,t,n);return i=m.policy,s.push(C(t,o.verificationResult)),s.push(m.event),{gate:o,policy:i,autoCheckResults:g,awaitingHuman:!1,escalated:m.exhausted,escalationReason:m.exhausted?"verify_budget_exhausted":void 0,events:s}}class G extends Error{timeoutMs;constructor(e){super(`Graph execution exceeded timeout (${e}ms).`),this.name="GraphExecutionTimeoutError",this.timeoutMs=e}}class j extends Error{nodeId;timeoutMs;constructor(e,t){super(`Node "${e}" execution exceeded timeout (${t}ms).`),this.name="NodeExecutionTimeoutError",this.nodeId=e,this.timeoutMs=t}}let q=async()=>void 0,U=(0,d.promisify)(a.execFile);function L(e){return e.nowMs?.()??Date.now()}function D(e){return new Date(L(e)).toISOString()}function P(e,t){return"gate"===t.type&&"number"==typeof t.verificationStrategy.timeout&&t.verificationStrategy.timeout>0?t.verificationStrategy.timeout:Math.max(1,e.policy.nodeTimeoutMs)}async function H(e,t){let n=Math.max(1,e.timeoutMs??t.policy.nodeTimeoutMs);try{let{stdout:t}=await U("bash",["-lc",e.command],{timeout:n,maxBuffer:65536,env:process.env,windowsHide:!0});return{status:"success",output:function(e,t){let n,r=e.trim();if(!r)throw Error(`Function node "${t}" produced empty stdout.`);try{n=JSON.parse(r)}catch(n){let e=n instanceof Error?n.message:String(n);throw Error(`Function node "${t}" stdout is not valid JSON: ${e}`)}if(!n||"object"!=typeof n||Array.isArray(n))throw Error(`Function node "${t}" stdout JSON must be an object.`);return n}(t,e.command)}}catch(e){return{status:"failure",message:function(e){if(e&&"object"==typeof e){if("ERR_CHILD_PROCESS_STDIO_MAXBUFFER"===e.code)return"Function stdout exceeded 65536 bytes.";if(e.killed&&e.signal)return`Function command timed out and was terminated (${e.signal}).`;let t=e.stderr?.trim();if(t)return t;if(e.message)return e.message}return"string"==typeof e?e:"Unknown function execution error."}(e),error:e}}}async function B(e,t,n){let r;try{return await Promise.race([e,new Promise((e,o)=>{r=setTimeout(()=>o(n()),t)})])}finally{r&&clearTimeout(r)}}function W(e,t){let n=e.metrics??{tokensUsed:0,latencyMs:0,retryCount:"work"===e.type?e.attempts:0};return{...e,metrics:{...n,errorMessages:[...n.errorMessages??[],t],retryCount:"work"===e.type?e.attempts:n.retryCount}}}function V(e,t,n,r){let o=e.metrics??{tokensUsed:0,latencyMs:0,retryCount:"work"===e.type?e.attempts:0},i="done"===e.status||"passed"===e.status||"failed"===e.status||"skipped"===e.status?D(n):e.completedAt;return{...e,completedAt:i,metrics:{...o,tokensUsed:o.tokensUsed+(r??0),latencyMs:Math.max(0,L(n)-t),retryCount:"work"===e.type?e.attempts:o.retryCount}}}async function J(e,t,n,r,o,i){let s=(0,_.transitionWorkNode)(n,{type:"FAIL",transient:i});if("pending"===s.status){let e=r.sleep??q;await e(Math.max(0,n.retryPolicy.backoffMs))}else"blocked"===s.status&&"escalate"===n.retryPolicy.onExhaust&&await r.onEscalateWorkFailure?.(s,o,e);return W(s,o.message)}async function K(e,t,n,r){let o=n;"pending"===o.status&&(o=(0,_.transitionWorkNode)(o,{type:"START",depsSatisfied:!0})),o.startedAt||(o={...o,startedAt:D(r)});let i=L(r),s=P(e,o),a=!1;try{let n=r.dispatchWork??(async()=>({status:"success"})),d=await B(n(o,e),s,()=>new j(t,s));if("success"===d.status){let e=(0,_.transitionWorkNode)(o,{type:"COMPLETE"});return{node:V({...e,output:d.output??e.output},i,r,d.tokensUsed),timedOut:a}}if("blocked"===d.status){let e=(0,_.transitionWorkNode)(o,{type:"BLOCK"}),t=d.message?W(e,d.message):e;return{node:V(t,i,r),timedOut:a}}let u=Error(d.message??"Work node failed."),l=await J(e,t,o,r,u,d.transient??!0);return{node:V(l,i,r),timedOut:a}}catch(s){let n=s instanceof Error?s:Error("string"==typeof s?s:"Unknown work execution error");return a=n instanceof j,{node:V(await J(e,t,o,r,n,!0),i,r),timedOut:a}}}async function Q(e,t,n){let r=e.nodes[t];if(!r||"gate"!==r.type)throw Error(`Node "${t}" is not a gate node.`);let o=L(n),i=P(e,r),s=!1,a=e,d=!1;try{let e=await B(F({gateId:t,gate:r,policy:a.policy,now:D(n),humanDecision:n.humanDecisionsByGateId?.[t],cwd:n.checkCwd,env:n.checkEnv,executor:n.checkExecutor,graph:a,dispatchReview:n.dispatchWork}),i,()=>new j(t,i)),u=V(e.gate,o,n);if(a.nodes[t]=u,a.policy=e.policy,e.llmReviewFailed){let r=e.llmReviewFeedback??"Quality gate review failed",o=n.makeReplanFromReviewFeedback??(async(e,t,n)=>{let r,o,i,s,a;return r=S(e),o=e.graphVersion,i=`fix-from-review-v${o}`,s=`quality-gate-v${o+1}`,a={type:"work",status:"pending",workType:"implementation",title:`Fix issues from quality review (v${o})`,description:["The quality gate review found issues with the current changes.\n\n## Review Feedback",n,"",r?`## Original Objective
6
+ ${r.objective}`:"","\nAddress the feedback above and fix the issues identified by the reviewer."].join("\n"),acceptanceCriteria:["Address all issues raised in the review feedback"],deps:[],attempts:0,maxAttempts:3,retryPolicy:{backoffMs:1e3,onExhaust:"fail"},stage:"fix"},{trigger:g.GATE_FAILURE,triggeredAtNodeId:t,reason:`Quality gate LLM review failed: ${n.slice(0,200)}`,triggeredBy:"agent",addNodes:{[i]:a,[s]:{type:"gate",status:"pending",gateType:"quality_gate",required:!0,verificationStrategy:{type:"auto",checks:[],timeout:3e5},deps:[i]}},addEdges:[{from:t,to:i,type:"hard",condition:"on_failure"}]}}),i=await o(a,t,r);i&&(a=(n.replan??R)(a,i),d=!0)}else if(e.escalated&&n.makeReplanRequest){let r=n.makeReplanRequest(a,t,e);r&&(a=(n.replan??R)(a,r),d=!0)}return{graph:a,node:a.nodes[t],events:e.events,replanApplied:d,timedOut:s}}catch(u){let e=u instanceof Error?u:Error("string"==typeof u?u:"Unknown gate execution error");s=e instanceof j;let i=r;"pending"===i.status&&(i=(0,_.transitionGateNode)(i,{type:"START",depsSatisfied:!0})),"running"===i.status?i=(0,_.transitionGateNode)(i,{type:"AUTO_FAIL"}):"awaiting_human"===i.status&&(i=(0,_.transitionGateNode)(i,{type:"HUMAN_REJECT"}));let d=W(i,e.message);return a.nodes[t]=V(d,o,n),{graph:a,node:a.nodes[t],events:[],replanApplied:!1,timedOut:s}}}async function X(t,n,r,o){let i=r;"pending"===i.status&&(i=(0,_.transitionFunctionNode)(i,{type:"START",depsSatisfied:!0})),i.startedAt||(i={...i,startedAt:D(o)});let s=L(o),a=i.timeoutMs??t.policy.nodeTimeoutMs,d=!1;try{let r=o.dispatchFunction??(async(t,n)=>{if("bash"===t.kind)return H(t,n);let{createDispatchFunction:r}=await e.A(997757);return r()(t,n)}),u=await B(r(i,t),a,()=>new j(n,a));if("success"===u.status){let e=(0,_.transitionFunctionNode)(i,{type:"COMPLETE"});return{node:V({...e,output:u.output??e.output},s,o),timedOut:d}}let l=(0,_.transitionFunctionNode)(i,{type:"FAIL"}),c=u.message?W(l,u.message):l;return u.message?.toLowerCase().includes("timed out")&&(d=!0),{node:V(c,s,o),timedOut:d}}catch(t){let e=t instanceof Error?t:Error("string"==typeof t?t:"Unknown function execution error");return d=e instanceof j,{node:V(W((0,_.transitionFunctionNode)(i,{type:"FAIL"}),e.message),s,o),timedOut:d}}}async function z(e,t,n={}){!function(e,t){if(!e.policy.graphTimeoutMs)return;let n=function(e,t){if(void 0!==t.graphStartedAtMs)return t.graphStartedAtMs;let n=Date.parse(e.createdAt);return Number.isNaN(n)?L(t):n}(e,t);if(L(t)-n>e.policy.graphTimeoutMs)throw new G(e.policy.graphTimeoutMs)}(e,n);let r=structuredClone(e),o=r.nodes[t];if(!o)throw Error(`Unknown node "${t}".`);if("function"===o.type){let e=await X(r,t,o,n);return r.nodes[t]=e.node,{graph:r,nodeId:t,node:r.nodes[t],events:[],replanApplied:!1,timedOut:e.timedOut}}if("work"===o.type){let e=await K(r,t,o,n);return r.nodes[t]=e.node,{graph:r,nodeId:t,node:r.nodes[t],events:[],replanApplied:!1,timedOut:e.timedOut}}if("gate"===o.type){let e=await Q(r,t,n);return{graph:e.graph,nodeId:t,node:e.graph.nodes[t],events:e.events,replanApplied:e.replanApplied,timedOut:e.timedOut}}if("fork"===o.type){let e=function(e,t){let n=e.nodes[t];if(!n||"fork"!==n.type)throw Error(`Node "${t}" is not a fork node.`);if("pending"!==n.status||!n.deps.every(n=>(0,s.isDepSatisfied)(e,n,t)))return n;let r=(0,_.transitionForkNode)(n,{type:"ACTIVATE",depsSatisfied:!0});return e.nodes[t]=r,r}(r,t);return{graph:r,nodeId:t,node:e,events:[],replanApplied:!1,timedOut:!1}}if("join"===o.type){let e=function(e,t){let n=e.nodes[t];if(!n||"join"!==n.type)throw Error(`Node "${t}" is not a join node.`);if("pending"!==n.status&&"running"!==n.status)return n;let r=n.deps.map(n=>({nodeId:n,status:e.nodes[n]?.status??"failed",edgeType:e.edges.find(e=>e.from===n&&e.to===t)?.type??"hard"})),o=(0,_.transitionJoinNode)(n,{type:"EVALUATE",dependencies:r});return e.nodes[t]=o,o}(r,t);return{graph:r,nodeId:t,node:e,events:[],replanApplied:!1,timedOut:!1}}let i=function(e,t,n){let r=e.nodes[t];if(!r||"conditional"!==r.type)throw Error(`Node "${t}" is not a conditional node.`);if("pending"!==r.status||!r.deps.every(n=>(0,s.isDepSatisfied)(e,n,t)))return r;let o=(0,_.transitionConditionalNode)(r,{type:"START",depsSatisfied:!0}).node;try{var i;let s=function(e,t,n){let r=e.nodes[t];if(!r||"conditional"!==r.type)return{graph:e,nodeId:t,ctx:{graph:e,nodeId:t}};let o=e.nodes[r.condition.inputFrom],i=o&&"output"in o?o.output??null:null;return{graph:e,nodeId:t,inputFrom:r.condition.inputFrom,input:i,ctx:{graph:e,nodeId:t,inputFrom:r.condition.inputFrom,input:i},...n[t]??{}}}(e,t,n.conditionContextByNodeId??{}),a=!!((i=s.input)&&"object"==typeof i&&!Array.isArray(i))&&(0,u.evaluateCondition)(r.condition.expression,s),d=(0,_.transitionConditionalNode)(o,{type:a?"CONDITION_TRUE":"CONDITION_FALSE"});for(let n of(e.nodes[t]=d.node,d.skippedBranchNodeIds)){let t=e.nodes[n];t&&"pending"===t.status&&("work"===t.type?e.nodes[n]=(0,_.transitionWorkNode)(t,{type:"SKIP"}):"function"===t.type?e.nodes[n]=(0,_.transitionFunctionNode)(t,{type:"SKIP"}):"gate"===t.type?e.nodes[n]=(0,_.transitionGateNode)(t,{type:"SKIP"}):"fork"===t.type?e.nodes[n]=(0,_.transitionForkNode)(t,{type:"SKIP"}):"join"===t.type?e.nodes[n]=(0,_.transitionJoinNode)(t,{type:"SKIP"}):"conditional"===t.type&&(e.nodes[n]=(0,_.transitionConditionalNode)(t,{type:"SKIP"}).node))}return d.node}catch(i){let n=(0,_.transitionConditionalNode)(o,{type:"CONDITION_ERROR"}).node,r=i instanceof Error?i:Error("string"==typeof i?i:"Condition evaluation failed.");return e.nodes[t]=W(n,r.message),e.nodes[t]}}(r,t,n);return{graph:r,nodeId:t,node:i,events:[],replanApplied:!1,timedOut:!1}}e.s(["executeNode",()=>z],33601);var Y=e.i(97812);function Z(){let e=new Map,t=(0,n.getSQLiteDb)().prepare(`
7
+ SELECT task_id, id, schedule
8
+ FROM execution_graphs
9
+ WHERE schedule IS NOT NULL
10
+ AND json_extract(schedule, '$.state') = 'active'
11
+ `).all(),i=new Map(t.map(e=>[e.id,e]));if((0,o.isAutomationFrontmatterEnabled)()){for(let t of(0,o.getAutomationRepository)().listVisibleAutomations({targetType:"execution_graph",state:"active"})){if("execution_graph"!==t.definition.target.type)continue;let n=t.definition.target.graphId??t.definition.id,o=t.definition.target.taskId??i.get(n)?.task_id??n;e.set(n,{taskId:o,graphId:n,schedule:(0,r.automationRecordToGraphSchedule)(t,i.get(n)?JSON.parse(i.get(n).schedule):void 0)})}if(!(0,o.isAutomationDualReadEnabled)())return[...e.values()]}for(let n of t)e.has(n.id)||e.set(n.id,{taskId:n.task_id,graphId:n.id,schedule:JSON.parse(n.schedule)});return[...e.values()]}async function ee(e={}){let t=new Y.GraphStore,n={tickedGraphIds:[],skippedGraphIds:[],errors:[],pendingWork:[]},r=Z();for(let{taskId:o}of(console.log(`[schedules:poll] found ${r.length} active schedule(s)`),r))try{let r=t.getGraph(o);if(!r){n.errors.push({graphId:o,error:Error("Graph not found")});continue}let a=(0,i.scheduleTickIfDue)(r);if(!a.tickFired){console.log(`[schedules:poll] ${o} skipped (${a.skipReason??"unknown"})`),n.skippedGraphIds.push(o);continue}console.log(`[schedules:poll] ${o} tick fired — resetting nodes`),t.updateGraphStructure(a.graph.id,{nodes:a.graph.nodes,schedule:a.graph.schedule});let d=(0,s.schedulerTick)(a.graph,e);console.log(`[schedules:poll] ${o} scheduler: fn=${d.functionToRun.length} work=${d.workToRun.length}`);let u=d.graph;for(let t of d.functionToRun){let r=u.nodes[t];if(r&&"function"===r.type)try{console.log(`[schedules:poll] ${o} executing function node "${t}"`);let n=await z(u,t,e),r=n.graph.nodes[t];console.log(`[schedules:poll] ${o} function "${t}" → ${r?.status}`,r&&"output"in r?JSON.stringify(r.output)?.slice(0,200):""),u=n.graph}catch(e){console.error(`[schedules:poll] ${o} function "${t}" error:`,e),n.errors.push({graphId:o,error:e instanceof Error?e:Error(String(e))})}}t.updateGraphStructure(u.id,{nodes:u.nodes});let l=(0,s.schedulerTick)(u,e);for(let t of(console.log(`[schedules:poll] ${o} post-fn scheduler: cond=${l.control.conditionalNodeIds.length} work=${l.workToRun.length}`),u=l.graph,l.workToRun)){let r=u.nodes[t];if(r&&"work"===r.type)try{u=(await z(u,t,e)).graph}catch(e){n.errors.push({graphId:o,error:e instanceof Error?e:Error(String(e))})}}if(l.workToRun.length>0){n.pendingWork.push({taskId:o,nodeIds:l.workToRun,graph:u}),t.updateGraphStructure(u.id,{nodes:u.nodes});let r=(0,s.schedulerTick)(u,e);for(let t of(console.log(`[schedules:poll] ${o} post-work scheduler: fn=${r.functionToRun.length} cond=${r.control.conditionalNodeIds.length}`),u=r.graph,r.functionToRun)){let r=u.nodes[t];if(r&&"function"===r.type)try{console.log(`[schedules:poll] ${o} executing post-work function "${t}"`),u=(await z(u,t,e)).graph}catch(e){console.error(`[schedules:poll] ${o} post-work function "${t}" error:`,e),n.errors.push({graphId:o,error:e instanceof Error?e:Error(String(e))})}}}t.updateGraphStructure(u.id,{nodes:u.nodes});let c=Object.entries(u.nodes).map(([e,t])=>`${e}:${t.status}`).join(", ");console.log(`[schedules:poll] ${o} node states: ${c}`);let p=(0,i.isScheduleTickComplete)(u);if(console.log(`[schedules:poll] ${o} tick complete? ${p}`),p){let e=(0,i.completeScheduleTick)(u),n=e.schedule?.resetNodeIds.some(t=>e.nodes[t]?.status==="failed");if(e.schedule){let t=e.schedule.consecutiveFailures??0,r=n?t+1:0;e.schedule={...e.schedule,consecutiveFailures:r};let o=e.schedule.maxConsecutiveFailures;null!=o&&r>=o&&(e.schedule={...e.schedule,state:"paused"})}let r=t.getGraph(o);r?.schedule?.state==="stopped"&&(console.log(`[schedules:poll] ${o} schedule was stopped mid-tick, preserving stopped state`),e.schedule={...e.schedule,state:"stopped"}),t.updateGraphStructure(e.id,{nodes:e.nodes,schedule:e.schedule})}n.tickedGraphIds.push(o)}catch(e){console.error(`[schedules:poll] ${o} caught error:`,e),n.errors.push({graphId:o,error:e instanceof Error?e:Error(String(e))});try{let e=t.getGraph(o);if(e?.schedule?.tickInProgress){let n=(0,i.completeScheduleTick)(e);t.updateGraphStructure(n.id,{nodes:n.nodes,schedule:n.schedule}),console.log(`[schedules:poll] ${o} force-completed stuck tick`)}}catch{}}return n}async function et(e,t={}){let n=new Y.GraphStore,r=n.getGraph(e);if(!r)return{fired:!1,graph:null,error:Error("Graph not found")};if(!r.schedule)return{fired:!1,graph:r,error:Error("No schedule on graph")};let o=(0,i.scheduleTickIfDue)(r);if(!o.tickFired)return{fired:!1,graph:o.graph};n.updateGraphStructure(o.graph.id,{nodes:o.graph.nodes,schedule:o.graph.schedule});let a=o.graph,d=0;for(;;){d++;let e=Object.entries(a.nodes).map(([e,t])=>`${e}:${t.status}`).join(", ");console.log(`[schedules:tick] loop ${d} nodes before: ${e}`);let n=(0,s.schedulerTick)(a,t);for(let e of(console.log(`[schedules:tick] loop ${d} fn=${n.functionToRun.length} work=${n.workToRun.length} cond=${n.control.conditionalNodeIds.length}`),n.functionToRun)){let n=a.nodes[e];n&&"function"===n.type&&(a=(await z(a,e,t)).graph,console.log(`[schedules:tick] fn "${e}" → ${a.nodes[e]?.status}`))}for(let e of(n.control.conditionalNodeIds.length>0&&(a=n.graph,console.log(`[schedules:tick] applied conditional results: ${n.control.conditionalNodeIds.join(", ")}`)),n.workToRun))a=(await z(a,e,t)).graph;let r=Object.entries(a.nodes).map(([e,t])=>`${e}:${t.status}`).join(", ");if(console.log(`[schedules:tick] loop ${d} nodes after: ${r}`),(0,i.isScheduleTickComplete)(a)){console.log(`[schedules:tick] tick complete after loop ${d}`);break}if(n.complete||!(n.workToRun.length>0||n.functionToRun.length>0))break}let u=(0,i.completeScheduleTick)(a);return n.updateGraphStructure(u.id,{nodes:u.nodes,schedule:u.schedule}),{fired:!0,graph:u}}e.s(["executeScheduleTick",()=>et,"getGraphsWithActiveSchedules",()=>Z,"pollSchedules",()=>ee],671080)}];
12
+
13
+ //# sourceMappingURL=src_graph_schedule-runner_ts_43a13c69._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[750227,(a,b,c)=>{b.exports=a.x("node:path",()=>require("node:path"))},292e3,a=>{"use strict";let b=(0,a.i(883706).default)("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);a.s(["AlertCircle",()=>b],292e3)},167453,a=>{"use strict";let b=(0,a.i(883706).default)("circle-check",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);a.s(["CheckCircle2",()=>b],167453)},613749,a=>{"use strict";let b=(0,a.i(883706).default)("chevron-left",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);a.s(["ChevronLeft",()=>b],613749)},73570,a=>{"use strict";let b=(0,a.i(883706).default)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);a.s(["AlertTriangle",()=>b],73570)},65151,a=>{"use strict";let b=(0,a.i(883706).default)("circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);a.s(["Circle",()=>b],65151)},862722,a=>{"use strict";let b=(0,a.i(883706).default)("circle-x",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);a.s(["XCircle",()=>b],862722)},284505,a=>{"use strict";let b=(0,a.i(883706).default)("download",[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]]);a.s(["Download",()=>b],284505)},660246,a=>{"use strict";let b=(0,a.i(883706).default)("users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]]);a.s(["Users",()=>b],660246)},563588,a=>{"use strict";let b=(0,a.i(883706).default)("message-square",[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]]);a.s(["MessageSquare",()=>b],563588)},215040,a=>{"use strict";let b={threadSidebarVisible:!1,workspaceRoots:[],homeSearchConsent:!1,hasCompletedFirstRun:!1,fileIgnorePatterns:[]};function c(a){return a&&"object"==typeof a?{threadSidebarVisible:"boolean"==typeof a.threadSidebarVisible?a.threadSidebarVisible:b.threadSidebarVisible,workspaceRoots:Array.isArray(a.workspaceRoots)?a.workspaceRoots.filter(a=>"string"==typeof a):b.workspaceRoots,homeSearchConsent:"boolean"==typeof a.homeSearchConsent?a.homeSearchConsent:b.homeSearchConsent,hasCompletedFirstRun:"boolean"==typeof a.hasCompletedFirstRun?a.hasCompletedFirstRun:b.hasCompletedFirstRun,fileIgnorePatterns:Array.isArray(a.fileIgnorePatterns)?a.fileIgnorePatterns.filter(a=>"string"==typeof a):b.fileIgnorePatterns}:b}let d="/api/userPreferences";function e(a){return a.json().then(a=>a&&"object"==typeof a?c(a.preferences??a):c(a)).catch(()=>c(null))}function f(a){return a.statusText||`Failed to reach ${d} (${a.status})`}async function g(){let a=await fetch(d,{cache:"no-store"});if(!a.ok)throw Error(f(a));return e(a)}async function h(a){let b=await fetch(d,{method:"POST",headers:{"Content-Type":"application/json"},cache:"no-store",body:JSON.stringify({preferences:a})});if(!b.ok)throw Error(f(b));return e(b)}a.s(["fetchUserPreferences",()=>g,"updateUserPreferences",()=>h],215040)},503931,a=>{"use strict";var b=a.i(187924),c=a.i(572131),d=a.i(124610);function e({params:a}){let{slug:e,threadId:f}=(0,c.use)(a);return(0,b.jsx)(d.ChatContainer,{projectSlug:e,initialThreadId:f,showSidebar:!1})}a.s(["default",()=>e])}];
2
+
3
+ //# sourceMappingURL=%5Broot-of-the-server%5D__0b2a2b86._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[556704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},750227,(a,b,c)=>{b.exports=a.x("node:path",()=>require("node:path"))},400210,a=>{"use strict";let b=(0,a.i(883706).default)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);a.s(["ArrowLeft",()=>b],400210)},669520,a=>{"use strict";let b=(0,a.i(883706).default)("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);a.s(["RefreshCw",()=>b],669520)},194125,a=>{"use strict";function b(a){return a.replace(/\[reaction\s+[^\]]*\]/gi,"").replace(/\[agx:[^\]]*\]/g,"").replace(/\[checkpoint\]/g,"").replace(/\[criteria:\s*[^\]]*\]/g,"").replace(/\[done\]/g,"").replace(/\[blocked[^\]]*\]/g,"").replace(/^\[SKIP\]$/gm,"").trim()}a.s(["stripMarkers",()=>b])},501027,a=>{"use strict";let b=(0,a.i(883706).default)("zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]);a.s(["Zap",()=>b],501027)},641710,a=>{"use strict";let b=(0,a.i(883706).default)("clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 6v6l4 2",key:"mmk7yg"}]]);a.s(["Clock",()=>b],641710)},204301,a=>{"use strict";var b=a.i(572131);let c=new Set(["spawning","running"]);function d(a,d){let e=d?.intervalMs??1500,f=d?.idleIntervalMs??1e4,[g,h]=(0,b.useState)(new Set),[i,j]=(0,b.useState)([]),[k,l]=(0,b.useState)({}),[m,n]=(0,b.useState)([]),o=(0,b.useRef)(a);o.current=a;let p=(0,b.useRef)(d?.messages??[]);p.current=d?.messages??[];let q=(0,b.useRef)(d?.setMessages);q.current=d?.setMessages;let r=(0,b.useRef)(0);(0,b.useEffect)(()=>{let a=d?.messages??[];if(a.length>0){let b=Math.max(...a.map(a=>a.timestamp));b>r.current&&(r.current=b)}},[d?.messages]);let s=(0,b.useCallback)(async()=>{let a=o.current;if(!a){h(new Set),j([]),l({}),n([]);return}let b=null;if(a.threadId?b=`/api/processes?threadId=${encodeURIComponent(a.threadId)}`:a.workspaceId&&(b=`/api/processes?workspaceId=${encodeURIComponent(a.workspaceId)}`),!b){h(new Set),j([]),l({}),n([]);return}try{let e=a.workspaceId||a.threadId,f=e?`/api/history?threadId=${encodeURIComponent(e)}&since=${r.current}`:null,g=e?`/api/chat-runs?threadId=${encodeURIComponent(e)}&limit=20`:null,i=[fetch(b)];f&&i.push(fetch(f)),g&&i.push(fetch(g));let[k,m,s]=await Promise.all(i),t=o.current;if(t?.threadId!==a.threadId||t?.workspaceId!==a.workspaceId)return;if(k.ok){let a=await k.json();j(a);let b=new Set(a.filter(a=>c.has(a.state)).map(a=>a.agentId));h(b);let d={};for(let b of a){if(!c.has(b.state))continue;let a=p.current.find(a=>a.id===b.sinceMessageId),e=a?.rootMessageId??b.sinceMessageId;d[b.agentId]={content:"",rootMessageId:e}}l(d)}if(s?.ok){var d;let a=(d=await s.json(),Array.isArray(d)?d.map(a=>{if(!a||"object"!=typeof a)return null;let b="string"==typeof a.chatRunId?a.chatRunId:"string"==typeof a.id?a.id:null,c="string"==typeof a.threadId?a.threadId:null,d="string"==typeof a.status?a.status:null,e="string"==typeof a.rootMessageId?a.rootMessageId:(a.rootMessageId,null);return b&&c&&d&&("queued"===d||"running"===d||"awaiting_user"===d||"blocked"===d||"completed"===d||"failed"===d||"cancelled"===d)?{chatRunId:b,threadId:c,rootMessageId:e,status:d,optimistic:!1}:null}).filter(a=>!!a):[]);n(a)}if(m?.ok&&q.current){let a=await m.json();if(a.length>0){let b=Math.max(...a.map(a=>a.timestamp));b>r.current&&(r.current=b),q.current(b=>{let c=new Set(b.map(a=>a.id)),d=a.filter(a=>!c.has(a.id)),e=b.map(b=>a.find(a=>a.id===b.id)??b);return 0===d.length?e:[...e,...d].sort((a,b)=>a.timestamp-b.timestamp)})}}}catch{}},[]),t=a?.threadId||a?.workspaceId||null,u=m.some(a=>"queued"===a.status||"running"===a.status),v=i.some(a=>c.has(a.state)),w=u||v?e:f;return(0,b.useEffect)(()=>{if(!t){h(new Set),j([]),l({}),n([]);return}s();let a=setInterval(s,w);return()=>clearInterval(a)},[t,w,s]),{activeAgents:g,processes:i,streaming:k,chatRuns:m,poll:s}}a.s(["useProcessPolling",()=>d])},331748,356283,a=>{"use strict";var b=a.i(572131);function c(a){return`threadId=${encodeURIComponent(a)}`}function d(a){return`workspaceId=${encodeURIComponent(a)}`}function e(a){let[e,f]=(0,b.useState)([]),[g,h]=(0,b.useState)([]),[i,j]=(0,b.useState)([]),k=(0,b.useRef)(a),l=(0,b.useRef)(a);k.current=a,l.current!==a&&(l.current=a,f([]),h([]),j([]));let m=(0,b.useCallback)(async a=>{let b=a?.trim()||k.current?.trim();if(!b){f([]),h([]);return}let e=c(b);try{let[a,c]=await Promise.all([fetch(`/api/history?${e}`),fetch(`/api/logs?${d(b)}`)]);if(k.current!==b)return;a.ok&&f(await a.json()),c.ok&&h(await c.json())}catch{}},[]),n=(0,b.useCallback)(async a=>{let b=a?.trim()||k.current?.trim();if(!b){f([]),h([]);return}let e=c(b);await Promise.all([fetch(`/api/history?${e}`,{method:"DELETE"}),fetch(`/api/logs?${d(b)}`,{method:"DELETE"})]),k.current===b&&(f([]),h([]))},[]),o=(0,b.useCallback)(async(a,b=10,c,d,e,g,h,i,l,m)=>{let n=c?.trim()||k.current?.trim();if(!n)return;let o=Date.now(),p=crypto.randomUUID(),q={id:p,role:"user",participantId:null,content:a,timestamp:o,rootMessageId:d||null,parentMessageId:d||null,depth:+!!d,...g&&g.length>0?{attachments:g}:{}};f(a=>[...a,q]);try{let c=await fetch("/api/chat",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({threadId:n,prompt:a,promptPrefix:l||void 0,maxRounds:b,userMessageId:p,rootMessageId:d||void 0,attachmentIds:e?.length?e:void 0,activeParticipantIds:Array.isArray(h)?h:void 0,projectSlug:i?.trim()||void 0,routing:m})}),f=await c.json().catch(()=>null);c.ok&&f?.chatRunId&&j(a=>[{chatRunId:f.chatRunId,threadId:n,rootMessageId:d||p,status:"queued",optimistic:!0,enqueuedAt:Date.now()},...a.filter(a=>a.chatRunId!==f.chatRunId)])}catch{}return p},[]),p=(0,b.useCallback)(async()=>{let a=k.current?.trim();if(a)try{await fetch(`/api/processes?workspaceId=${encodeURIComponent(a)}`,{method:"DELETE"})}catch{}},[]),q=(0,b.useCallback)(async a=>{let b=k.current?.trim();if(b)try{await fetch(`/api/processes?workspaceId=${encodeURIComponent(b)}&threadId=${encodeURIComponent(a)}`,{method:"DELETE"})}catch{}},[]);return{messages:e,setMessages:f,logs:g,sendMessage:o,loadHistory:m,clearHistory:n,clearLogs:(0,b.useCallback)(async a=>{let b=a?.trim()||k.current?.trim();b?(await fetch(`/api/logs?${d(b)}`,{method:"DELETE"}).catch(()=>{}),k.current===b&&h([])):h([])},[]),chatRuns:i,setChatRuns:j,stop:p,stopThread:q}}function f(a){if("string"==typeof a)return a.trim()||void 0}function g(a,b){let c=new Set,d=new Set;!function a(b,c){if(b)for(let d of b)c(d),a(d.content,c)}(a.content,a=>{if("participantMention"!==a.type)return;let b=a.attrs??{},e="string"==typeof b.id?b.id.trim():"",f="string"==typeof b.kind?b.kind:"agent";e&&"agent"===f&&(c.add(e),"parallel"===b.mode&&d.add(e))});let e=f(b);return{...e?{pinnedParticipantId:e}:{},mentionedParticipantIds:Array.from(c),parallelParticipantIds:Array.from(d)}}function h(a,b){let c=function(a){if(!Array.isArray(a))return[];let b=new Set,c=[];for(let d of a){if("string"!=typeof d)continue;let a=d.trim();!a||b.has(a)||(b.add(a),c.push(a))}return c}(a),d=f(b);return d&&c.includes(d)?[d,...c.filter(a=>a!==d)]:c}a.s(["useGroupChat",()=>e],331748),a.s(["extractComposerRouting",()=>g,"orderParticipantIds",()=>h],356283)},165385,a=>{"use strict";let b=(0,a.i(883706).default)("settings-2",[["path",{d:"M14 17H5",key:"gfn3mx"}],["path",{d:"M19 7h-9",key:"6i9tg"}],["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}],["circle",{cx:"7",cy:"7",r:"3",key:"dfmy0x"}]]);a.s(["Settings2",()=>b],165385)},325015,a=>{"use strict";let b=(0,a.i(883706).default)("play",[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]]);a.s(["Play",()=>b],325015)},80386,a=>{"use strict";let b=(0,a.i(883706).default)("terminal",[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]]);a.s(["Terminal",()=>b],80386)},132245,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"BailoutToCSR",{enumerable:!0,get:function(){return e}});let d=a.r(441997);function e({reason:a,children:b}){throw Object.defineProperty(new d.BailoutToCSRError(a),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0})}},307773,(a,b,c)=>{"use strict";function d(a){return a.split("/").map(a=>encodeURIComponent(a)).join("/")}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"encodeURIPath",{enumerable:!0,get:function(){return d}})},297458,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"PreloadChunks",{enumerable:!0,get:function(){return i}});let d=a.r(187924),e=a.r(935112),f=a.r(556704),g=a.r(307773),h=a.r(68063);function i({moduleIds:a}){let b=f.workAsyncStorage.getStore();if(void 0===b)return null;let c=[];if(b.reactLoadableManifest&&a){let d=b.reactLoadableManifest;for(let b of a){if(!d[b])continue;let a=d[b].files;c.push(...a)}}if(0===c.length)return null;let i=(0,h.getDeploymentIdQueryOrEmptyString)();return(0,d.jsx)(d.Fragment,{children:c.map(a=>{let c=`${b.assetPrefix}/_next/${(0,g.encodeURIPath)(a)}${i}`;return a.endsWith(".css")?(0,d.jsx)("link",{precedence:"dynamic",href:c,rel:"stylesheet",as:"style",nonce:b.nonce},a):((0,e.preload)(c,{as:"script",fetchPriority:"low",nonce:b.nonce}),null)})})}},969853,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"default",{enumerable:!0,get:function(){return j}});let d=a.r(187924),e=a.r(572131),f=a.r(132245),g=a.r(297458);function h(a){return{default:a&&"default"in a?a.default:a}}let i={loader:()=>Promise.resolve(h(()=>null)),loading:null,ssr:!0},j=function(a){let b={...i,...a},c=(0,e.lazy)(()=>b.loader().then(h)),j=b.loading;function k(a){let h=j?(0,d.jsx)(j,{isLoading:!0,pastDelay:!0,error:null}):null,i=!b.ssr||!!b.loading,k=i?e.Suspense:e.Fragment,l=b.ssr?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(g.PreloadChunks,{moduleIds:b.modules}),(0,d.jsx)(c,{...a})]}):(0,d.jsx)(f.BailoutToCSR,{reason:"next/dynamic",children:(0,d.jsx)(c,{...a})});return(0,d.jsx)(k,{...i?{fallback:h}:{},children:l})}return k.displayName="LoadableComponent",k}},819721,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"default",{enumerable:!0,get:function(){return e}});let d=a.r(833354)._(a.r(969853));function e(a,b){let c={};"function"==typeof a&&(c.loader=a);let e={...c,...b};return(0,d.default)({...e,modules:e.loadableGenerated?.modules})}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},45815,a=>{"use strict";var b=a.i(187924),c=a.i(572131),d=a.i(986976),e=a.i(655672),f=a.i(176388),g=a.i(56196),h=a.i(877214);function i(){let[a,i]=(0,c.useState)(!1),[j,k]=(0,c.useState)(368);(0,c.useEffect)(()=>{i((0,e.loadWorkspaceSidebarVisible)()),k((0,f.loadWorkspaceWidth)()||368)},[]);let l=(0,c.useCallback)(a=>{k(a),(0,f.persistWorkspaceWidth)(a)},[]),{projects:m,createProject:n,deleteProject:o}=(0,g.useProjectsWithAgents)(),{updateProject:p}=(0,g.useProjects)();return(0,b.jsxs)("div",{className:"flex h-screen bg-[var(--card-bg)] text-[var(--foreground)]",children:[(0,b.jsx)(d.WorkspaceSidebar,{threads:[],activeThreadId:null,isLoading:!1,isCreating:!1,onSelectThread:()=>{},onCreateThread:()=>{},onRenameThread:()=>{},onDeleteThread:()=>{},visible:a,onToggle:()=>{i(a=>{let b=!a;return(0,e.persistWorkspaceSidebarVisible)(b),b})},width:j,onWidthChange:l,projects:m,onCreateProject:n,onUpdateProject:p,onDeleteProject:o}),(0,b.jsx)("div",{className:"flex-1 min-w-0 overflow-auto",children:(0,b.jsx)(h.default,{})})]})}a.s(["default",()=>i])}];
2
+
3
+ //# sourceMappingURL=%5Broot-of-the-server%5D__32546242._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[750227,(a,b,c)=>{b.exports=a.x("node:path",()=>require("node:path"))},325015,a=>{"use strict";let b=(0,a.i(883706).default)("play",[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]]);a.s(["Play",()=>b],325015)},132245,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"BailoutToCSR",{enumerable:!0,get:function(){return e}});let d=a.r(441997);function e({reason:a,children:b}){throw Object.defineProperty(new d.BailoutToCSRError(a),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0})}},307773,(a,b,c)=>{"use strict";function d(a){return a.split("/").map(a=>encodeURIComponent(a)).join("/")}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"encodeURIPath",{enumerable:!0,get:function(){return d}})},297458,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"PreloadChunks",{enumerable:!0,get:function(){return i}});let d=a.r(187924),e=a.r(935112),f=a.r(556704),g=a.r(307773),h=a.r(68063);function i({moduleIds:a}){let b=f.workAsyncStorage.getStore();if(void 0===b)return null;let c=[];if(b.reactLoadableManifest&&a){let d=b.reactLoadableManifest;for(let b of a){if(!d[b])continue;let a=d[b].files;c.push(...a)}}if(0===c.length)return null;let i=(0,h.getDeploymentIdQueryOrEmptyString)();return(0,d.jsx)(d.Fragment,{children:c.map(a=>{let c=`${b.assetPrefix}/_next/${(0,g.encodeURIPath)(a)}${i}`;return a.endsWith(".css")?(0,d.jsx)("link",{precedence:"dynamic",href:c,rel:"stylesheet",as:"style",nonce:b.nonce},a):((0,e.preload)(c,{as:"script",fetchPriority:"low",nonce:b.nonce}),null)})})}},969853,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"default",{enumerable:!0,get:function(){return j}});let d=a.r(187924),e=a.r(572131),f=a.r(132245),g=a.r(297458);function h(a){return{default:a&&"default"in a?a.default:a}}let i={loader:()=>Promise.resolve(h(()=>null)),loading:null,ssr:!0},j=function(a){let b={...i,...a},c=(0,e.lazy)(()=>b.loader().then(h)),j=b.loading;function k(a){let h=j?(0,d.jsx)(j,{isLoading:!0,pastDelay:!0,error:null}):null,i=!b.ssr||!!b.loading,k=i?e.Suspense:e.Fragment,l=b.ssr?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(g.PreloadChunks,{moduleIds:b.modules}),(0,d.jsx)(c,{...a})]}):(0,d.jsx)(f.BailoutToCSR,{reason:"next/dynamic",children:(0,d.jsx)(c,{...a})});return(0,d.jsx)(k,{...i?{fallback:h}:{},children:l})}return k.displayName="LoadableComponent",k}},819721,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"default",{enumerable:!0,get:function(){return e}});let d=a.r(833354)._(a.r(969853));function e(a,b){let c={};"function"==typeof a&&(c.loader=a);let e={...c,...b};return(0,d.default)({...e,modules:e.loadableGenerated?.modules})}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)}];
2
+
3
+ //# sourceMappingURL=%5Broot-of-the-server%5D__5ff9ead4._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[556704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},909270,(a,b,c)=>{"use strict";b.exports=a.r(342602).vendored.contexts.AppRouterContext},738783,(a,b,c)=>{"use strict";b.exports=a.r(342602).vendored["react-ssr"].ReactServerDOMTurbopackClient},120635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},736313,(a,b,c)=>{"use strict";b.exports=a.r(342602).vendored.contexts.HooksClientContext},818341,(a,b,c)=>{"use strict";b.exports=a.r(342602).vendored.contexts.ServerInsertedHtml},589116,a=>{"use strict";let b="agx-chat:threads";function c(){let a=globalThis.localStorage;if(!a)throw Error("LocalThreadAdapter requires a browser-like environment with `localStorage`.");return a}function d(){let a=c().getItem(b);if(!a)return{threads:{}};try{let b=JSON.parse(a);if(b&&"object"==typeof b&&b.threads&&"object"==typeof b.threads)return{threads:Object.fromEntries(Object.entries(b.threads).map(([a,b])=>{var c,d;return[a,(c=a,d=b,{id:c,title:d?.title,messages:Array.isArray(d?.messages)?[...d.messages]:[],createdAt:"number"==typeof d?.createdAt?d.createdAt:Date.now(),updatedAt:"number"==typeof d?.updatedAt?d.updatedAt:Date.now(),metadata:d?.metadata,status:d?.status,outcomeNote:d?.outcomeNote,projectId:"string"==typeof d?.projectId?d.projectId:"string"==typeof d?.teamId?d.teamId:d?.projectId===null||d?.teamId===null?null:void 0})]}))}}catch{}return{threads:{}}}function e(a){c().setItem(b,JSON.stringify(a))}function f(a){return{...a,messages:a.messages.map(a=>({...a})),metadata:a.metadata?{...a.metadata}:void 0}}let g=new class{async saveThread(a){let b=Date.now(),c=d(),g=c.threads[a.id],h=g?.createdAt??a.createdAt??b,i=a.updatedAt??b,j={id:a.id,title:a.title,messages:a.messages.map(a=>({...a})),metadata:a.metadata,createdAt:h,updatedAt:i,status:a.status,outcomeNote:a.outcomeNote,projectId:a.projectId??a.teamId};return c.threads[a.id]=j,e(c),f(j)}async loadThread(a){let b=d().threads[a];return b?f(b):null}async listThreads(a){let b=Object.values(d().threads),c=a?.order??"desc",e=[...b].sort((a,b)=>"asc"===c?a.updatedAt-b.updatedAt:b.updatedAt-a.updatedAt),g=Math.max(0,a?.offset??0),h=a?.limit,i="number"==typeof h&&h>=0?e.slice(g,g+h):e.slice(g);return{total:b.length,threads:i.map(f)}}async deleteThread(a){let b=d();b.threads[a]&&(delete b.threads[a],e(b))}};a.s(["threadService",0,{listThreads:async()=>[...(await g.listThreads({order:"desc"})).threads.filter(a=>!0!==a.metadata?.archived)].sort((a,b)=>b.updatedAt-a.updatedAt),async createThread(a){let b="string"==typeof a?.id?a.id.trim():"";if(b){let c=await g.loadThread(b);if(c){let b={...c.metadata??{},...a?.metadata??{},archived:!1,archivedAt:null};return g.saveThread({id:c.id,title:a?.title??c.title,messages:a?.messages?.length?a.messages:c.messages,metadata:b,createdAt:c.createdAt})}}let c={id:b||("u">typeof crypto&&"function"==typeof crypto.randomUUID?crypto.randomUUID():`thread-${Date.now()}-${Math.random().toString(16).slice(2)}`),messages:a?.messages?.length?a.messages:[],title:a?.title,metadata:a?.metadata};return g.saveThread(c)},async deleteThread(a){let b=a.trim();if(!b)return;let c=await g.loadThread(b);if(!c)return;let d={...c.metadata??{},archived:!0,archivedAt:Date.now()};await g.saveThread({id:c.id,title:c.title,messages:c.messages,metadata:d,createdAt:c.createdAt})},async renameThread(a,b){let c=a.trim(),d=b.trim();if(!c||!d)return null;let e=await g.loadThread(c);return e?(e.title?.trim()??"")===d?e:g.saveThread({id:e.id,title:d,messages:e.messages,metadata:e.metadata,createdAt:e.createdAt}):null},async updateThreadStatus(a,b){let c=await g.loadThread(a);return c?c.status===b?c:g.saveThread({id:c.id,title:c.title,messages:c.messages,metadata:c.metadata,createdAt:c.createdAt,status:b,outcomeNote:c.outcomeNote}):null},async updateThreadOutcomeNote(a,b){let c=await g.loadThread(a);return c?c.outcomeNote===b?c:g.saveThread({id:c.id,title:c.title,messages:c.messages,metadata:c.metadata,createdAt:c.createdAt,status:c.status,outcomeNote:b}):null},async updateMessageThreadStatus(a,b,c){let d=await g.loadThread(a);if(!d)return null;let e=d.messages.map(a=>a.id===b?{...a,threadStatus:c}:a);return g.saveThread({id:d.id,title:d.title,messages:e,metadata:d.metadata,createdAt:d.createdAt,status:d.status,outcomeNote:d.outcomeNote})},async updateMessageOutcomeNote(a,b,c){let d=await g.loadThread(a);if(!d)return null;let e=d.messages.map(a=>a.id===b?{...a,outcomeNote:c}:a);return g.saveThread({id:d.id,title:d.title,messages:e,metadata:d.metadata,createdAt:d.createdAt,status:d.status,outcomeNote:d.outcomeNote})},async saveThreadMessages(a,b){let c=await g.loadThread(a);if(!c)return null;let d=c.title?.trim()||function(a){let b=a.find(a=>"user"===a.role)?.content?.trim();if(!b)return;let c=b.replace(/\s+/g," ");return c.length>60?`${c.slice(0,60).trim()}…`:c}(b);return function(a,b){if(a.length!==b.length)return!1;for(let c=0;c<a.length;c+=1){let d=a[c],e=b[c];if(d.id!==e.id||d.role!==e.role||d.participantId!==e.participantId||d.content!==e.content||d.timestamp!==e.timestamp)return!1}return!0}(c.messages,b)&&(c.title?.trim()||void 0)===d?c:g.saveThread({id:c.id,title:d,messages:b,metadata:c.metadata,createdAt:c.createdAt})}}],589116)},195348,a=>{"use strict";var b=a.i(572131),c=a.i(50944),d=a.i(589116);function e(){}let f=a=>[...a].sort((a,b)=>b.createdAt-a.createdAt);function g(a){let g=(0,c.useSearchParams)(),h=(0,b.useRef)(!0),[i,j]=(0,b.useState)([]),[k,l]=(0,b.useState)(null),[m,n]=(0,b.useState)(!0),[o,p]=(0,b.useState)(!0),[q,r]=(0,b.useState)(!1),[s,t]=(0,b.useState)(null),[u,v]=(0,b.useState)(null),w=(0,b.useRef)(!1),x=(0,b.useCallback)(a=>{l(a)},[]);(0,b.useEffect)(()=>(h.current=!0,()=>{h.current=!1}),[]),(0,b.useEffect)(()=>{let b=!1;return(async()=>{try{var c;let i,k=(a||g.get("thread")||"").trim()||null,m=await d.threadService.listThreads();if(k&&!m.some(a=>a.id===k)){let a=await d.threadService.createThread({id:k});m=f([...m.filter(b=>b.id!==a.id),a])}if(b||!h.current)return;j(m);let n=k||null,{threadId:o,shouldClearSavedId:p,restoredFromStorage:q}=(c=m,i=c[0]?.id??null,n?c.some(a=>a.id===n)?{threadId:n,shouldClearSavedId:!1,restoredFromStorage:!0}:{threadId:i,shouldClearSavedId:!0,restoredFromStorage:!1}:{threadId:i,shouldClearSavedId:!1,restoredFromStorage:!1});p&&e(),w.current||(w.current=!0),q&&o?x(o):o?l(a=>a??o):l(null)}catch(a){console.error("Failed to load threads",a)}finally{h.current&&(n(!1),p(!1))}})(),()=>{b=!0}},[x,g,a]),(0,b.useEffect)(()=>{w.current&&(k||e())},[k]);let y=(0,b.useCallback)(async a=>{r(!0);try{let b=await d.threadService.createThread(a);if(!h.current)return b;return j(a=>f([...a.filter(a=>a.id!==b.id),b])),l(b.id),b}catch(a){throw console.error("Failed to create thread",a),a}finally{h.current&&r(!1)}},[]),z=(0,b.useCallback)(async a=>{if(a){t(a);try{if(await d.threadService.deleteThread(a),!h.current)return;let b=[];j(c=>b=f(c.filter(b=>b.id!==a))),l(c=>c===a?b[0]?.id??null:c)}catch(a){throw console.error("Failed to delete thread",a),a}finally{h.current&&t(null)}}},[]),A=(0,b.useCallback)(async(a,b)=>{let c=a.trim(),e=b.trim();if(c&&e){v(c);try{let a=await d.threadService.renameThread(c,e);if(!a||!h.current)return;j(b=>f(b.map(b=>b.id===a.id?a:b)))}catch(a){throw console.error("Failed to rename thread",a),a}finally{h.current&&v(a=>a===c?null:a)}}},[]),B=(0,b.useCallback)(async(a,b)=>{if(a)try{let c=await d.threadService.saveThreadMessages(a,b);if(!c||!h.current)return;j(a=>f(a.map(a=>a.id===c.id?c:a)))}catch(a){console.error("Failed to update thread messages",a)}},[]),C=(0,b.useCallback)(async(a,b)=>{if(a)try{let c=await d.threadService.updateThreadStatus(a,b);if(!c||!h.current)return;j(a=>f(a.map(a=>a.id===c.id?c:a)))}catch(a){console.error("Failed to update thread status",a)}},[]),D=(0,b.useCallback)(async(a,b)=>{if(a)try{let c=await d.threadService.updateThreadOutcomeNote(a,b);if(!c||!h.current)return;j(a=>f(a.map(a=>a.id===c.id?c:a)))}catch(a){console.error("Failed to update thread outcome note",a)}},[]),E=(0,b.useCallback)(async(a,b,c)=>{if(a&&b)try{let e=await d.threadService.updateMessageThreadStatus(a,b,c);if(!e||!h.current)return;j(a=>f(a.map(a=>a.id===e.id?e:a)))}catch(a){console.error("Failed to update message thread status",a)}},[]),F=(0,b.useCallback)(async(a,b,c)=>{if(a&&b)try{let e=await d.threadService.updateMessageOutcomeNote(a,b,c);if(!e||!h.current)return;j(a=>f(a.map(a=>a.id===e.id?e:a)))}catch(a){console.error("Failed to update message outcome note",a)}},[]),G=null!==k&&s===k;return{threads:i,activeThreadId:k,selectThread:x,createThread:y,deleteThread:z,isLoading:m,isRestoringActiveThread:o,isCreating:q,deletingThreadId:s,renamingThreadId:u,isDeletingActiveThread:G,updateThreadMessages:B,renameThread:A,updateThreadStatus:C,updateThreadOutcomeNote:D,updateMessageThreadStatus:E,updateMessageOutcomeNote:F}}a.s(["useThreadState",()=>g],195348)},194783,a=>{"use strict";var b=a.i(187924),c=a.i(572131),d=a.i(50944),e=a.i(986976),f=a.i(56196),g=a.i(195348),h=a.i(655672);function i({children:a,params:i}){let{slug:j}=(0,c.use)(i),k=(0,d.useRouter)(),l=(0,d.usePathname)(),{projects:m,isLoading:n,createProject:o,updateProject:p,deleteProject:q,addAgent:r,removeAgent:s}=(0,f.useProjectsWithAgents)(),{threads:t,isLoading:u,isCreating:v,deletingThreadId:w,renamingThreadId:x,isRestoringActiveThread:y,createThread:z,renameThread:A,deleteThread:B}=(0,g.useThreadState)(),[C,D]=(0,c.useState)([]),[E,F]=(0,c.useState)(!1);(0,c.useEffect)(()=>{F((0,h.loadWorkspaceSidebarVisible)())},[]),(0,c.useEffect)(()=>{fetch("/api/participants").then(a=>a.json()).then(a=>D(Array.isArray(a)?a:[])).catch(()=>D([]))},[]);let G=(0,c.useMemo)(()=>m.find(a=>a.slug===j)??null,[m,j]),H=(0,c.useMemo)(()=>{let a=l.match(/\/projects\/[^/]+\/thread\/([^/]+)/);return a?.[1]?decodeURIComponent(a[1]):G?.thread_ids[0]??null},[G?.thread_ids,l]),I=(0,c.useMemo)(()=>l.includes("/linear")?"linear":l.includes("/automations")?"automations":l.includes("/thread/")?"thread":l.includes("/knowledge")?"knowledge":"board",[l]);return n?(0,b.jsx)("div",{className:"flex items-center justify-center h-full",children:(0,b.jsx)("span",{className:"spinner w-8 h-8 border-3 border-[var(--primary)] border-t-transparent rounded-full"})}):G?(0,b.jsxs)("div",{className:"flex h-dvh min-h-0 overflow-hidden bg-[var(--background)]",children:[(0,b.jsx)(e.WorkspaceSidebar,{threads:t,participants:C,activeThreadId:H,isLoading:u,isRestoringActiveThread:y,isCreating:v,deletingThreadId:w,renamingThreadId:x,onSelectThread:a=>k.push(`/projects/${j}/thread/${encodeURIComponent(a)}`),onCreateThread:z,onRenameThread:A,onDeleteThread:B,visible:E,onToggle:()=>{let a=!E;F(a),(0,h.persistWorkspaceSidebarVisible)(a)},projects:m,onCreateProject:o,onUpdateProject:p,onDeleteProject:q,onAddAgentToProject:r,onRemoveAgentFromProject:s,activeProjectId:G.id,activeProjectView:I,onUpdateParticipant:async a=>{let b=await fetch("/api/participants",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(!b.ok)throw Error("Failed to update agent");let c=await b.json();D(a=>a.map(a=>a.id===c.id?c:a))},onSelectProject:a=>{let b=m.find(b=>b.id===a);b&&k.push(`/projects/${b.slug}`)}}),(0,b.jsx)("div",{className:"flex-1 min-h-0 flex flex-col min-w-0 h-full overflow-hidden",children:a})]}):(0,b.jsxs)("div",{className:"flex flex-col items-center justify-center h-full",children:[(0,b.jsx)("h2",{className:"text-xl font-bold mb-2",children:"Project Not Found"}),(0,b.jsxs)("p",{className:"text-[var(--muted-foreground)] mb-4",children:["The project “",j,"” does not exist or you do not have access to it."]}),(0,b.jsx)("button",{onClick:()=>k.push("/projects"),className:"px-4 py-2 bg-[var(--primary)] text-white rounded-lg hover:bg-[var(--primary-dark)] transition-colors",children:"Back to Projects"})]})}function j({children:a,params:d}){return(0,b.jsx)(c.Suspense,{fallback:(0,b.jsx)("div",{className:"flex h-full items-center justify-center text-sm text-[var(--muted-foreground)]",children:"Loading project…"}),children:(0,b.jsx)(i,{params:d,children:a})})}a.s(["default",()=>j])}];
1
+ module.exports=[556704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},909270,(a,b,c)=>{"use strict";b.exports=a.r(342602).vendored.contexts.AppRouterContext},738783,(a,b,c)=>{"use strict";b.exports=a.r(342602).vendored["react-ssr"].ReactServerDOMTurbopackClient},120635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},736313,(a,b,c)=>{"use strict";b.exports=a.r(342602).vendored.contexts.HooksClientContext},818341,(a,b,c)=>{"use strict";b.exports=a.r(342602).vendored.contexts.ServerInsertedHtml},589116,a=>{"use strict";let b="agx-chat:threads";function c(){let a=globalThis.localStorage;if(!a)throw Error("LocalThreadAdapter requires a browser-like environment with `localStorage`.");return a}function d(){let a=c().getItem(b);if(!a)return{threads:{}};try{let b=JSON.parse(a);if(b&&"object"==typeof b&&b.threads&&"object"==typeof b.threads)return{threads:Object.fromEntries(Object.entries(b.threads).map(([a,b])=>{var c,d;return[a,(c=a,d=b,{id:c,title:d?.title,messages:Array.isArray(d?.messages)?[...d.messages]:[],createdAt:"number"==typeof d?.createdAt?d.createdAt:Date.now(),updatedAt:"number"==typeof d?.updatedAt?d.updatedAt:Date.now(),metadata:d?.metadata,status:d?.status,outcomeNote:d?.outcomeNote,projectId:"string"==typeof d?.projectId?d.projectId:"string"==typeof d?.teamId?d.teamId:d?.projectId===null||d?.teamId===null?null:void 0})]}))}}catch{}return{threads:{}}}function e(a){c().setItem(b,JSON.stringify(a))}function f(a){return{...a,messages:a.messages.map(a=>({...a})),metadata:a.metadata?{...a.metadata}:void 0}}let g=new class{async saveThread(a){let b=Date.now(),c=d(),g=c.threads[a.id],h=g?.createdAt??a.createdAt??b,i=a.updatedAt??b,j={id:a.id,title:a.title,messages:a.messages.map(a=>({...a})),metadata:a.metadata,createdAt:h,updatedAt:i,status:a.status,outcomeNote:a.outcomeNote,projectId:a.projectId??a.teamId};return c.threads[a.id]=j,e(c),f(j)}async loadThread(a){let b=d().threads[a];return b?f(b):null}async listThreads(a){let b=Object.values(d().threads),c=a?.order??"desc",e=[...b].sort((a,b)=>"asc"===c?a.updatedAt-b.updatedAt:b.updatedAt-a.updatedAt),g=Math.max(0,a?.offset??0),h=a?.limit,i="number"==typeof h&&h>=0?e.slice(g,g+h):e.slice(g);return{total:b.length,threads:i.map(f)}}async deleteThread(a){let b=d();b.threads[a]&&(delete b.threads[a],e(b))}};a.s(["threadService",0,{listThreads:async()=>[...(await g.listThreads({order:"desc"})).threads.filter(a=>!0!==a.metadata?.archived)].sort((a,b)=>b.updatedAt-a.updatedAt),async createThread(a){let b="string"==typeof a?.id?a.id.trim():"";if(b){let c=await g.loadThread(b);if(c){let b={...c.metadata??{},...a?.metadata??{},archived:!1,archivedAt:null};return g.saveThread({id:c.id,title:a?.title??c.title,messages:a?.messages?.length?a.messages:c.messages,metadata:b,createdAt:c.createdAt})}}let c={id:b||("u">typeof crypto&&"function"==typeof crypto.randomUUID?crypto.randomUUID():`thread-${Date.now()}-${Math.random().toString(16).slice(2)}`),messages:a?.messages?.length?a.messages:[],title:a?.title,metadata:a?.metadata};return g.saveThread(c)},async deleteThread(a){let b=a.trim();if(!b)return;let c=await g.loadThread(b);if(!c)return;let d={...c.metadata??{},archived:!0,archivedAt:Date.now()};await g.saveThread({id:c.id,title:c.title,messages:c.messages,metadata:d,createdAt:c.createdAt})},async renameThread(a,b){let c=a.trim(),d=b.trim();if(!c||!d)return null;let e=await g.loadThread(c);return e?(e.title?.trim()??"")===d?e:g.saveThread({id:e.id,title:d,messages:e.messages,metadata:e.metadata,createdAt:e.createdAt}):null},async updateThreadStatus(a,b){let c=await g.loadThread(a);return c?c.status===b?c:g.saveThread({id:c.id,title:c.title,messages:c.messages,metadata:c.metadata,createdAt:c.createdAt,status:b,outcomeNote:c.outcomeNote}):null},async updateThreadOutcomeNote(a,b){let c=await g.loadThread(a);return c?c.outcomeNote===b?c:g.saveThread({id:c.id,title:c.title,messages:c.messages,metadata:c.metadata,createdAt:c.createdAt,status:c.status,outcomeNote:b}):null},async updateMessageThreadStatus(a,b,c){let d=await g.loadThread(a);if(!d)return null;let e=d.messages.map(a=>a.id===b?{...a,threadStatus:c}:a);return g.saveThread({id:d.id,title:d.title,messages:e,metadata:d.metadata,createdAt:d.createdAt,status:d.status,outcomeNote:d.outcomeNote})},async updateMessageOutcomeNote(a,b,c){let d=await g.loadThread(a);if(!d)return null;let e=d.messages.map(a=>a.id===b?{...a,outcomeNote:c}:a);return g.saveThread({id:d.id,title:d.title,messages:e,metadata:d.metadata,createdAt:d.createdAt,status:d.status,outcomeNote:d.outcomeNote})},async saveThreadMessages(a,b){let c=await g.loadThread(a);if(!c)return null;let d=c.title?.trim()||function(a){let b=a.find(a=>"user"===a.role)?.content?.trim();if(!b)return;let c=b.replace(/\s+/g," ");return c.length>60?`${c.slice(0,60).trim()}…`:c}(b);return function(a,b){if(a.length!==b.length)return!1;for(let c=0;c<a.length;c+=1){let d=a[c],e=b[c];if(d.id!==e.id||d.role!==e.role||d.participantId!==e.participantId||d.content!==e.content||d.timestamp!==e.timestamp)return!1}return!0}(c.messages,b)&&(c.title?.trim()||void 0)===d?c:g.saveThread({id:c.id,title:d,messages:b,metadata:c.metadata,createdAt:c.createdAt})}}],589116)},195348,a=>{"use strict";var b=a.i(572131),c=a.i(50944),d=a.i(589116);function e(){}let f=a=>[...a].sort((a,b)=>b.createdAt-a.createdAt);function g(a){let g=(0,c.useSearchParams)(),h=(0,b.useRef)(!0),[i,j]=(0,b.useState)([]),[k,l]=(0,b.useState)(null),[m,n]=(0,b.useState)(!0),[o,p]=(0,b.useState)(!0),[q,r]=(0,b.useState)(!1),[s,t]=(0,b.useState)(null),[u,v]=(0,b.useState)(null),w=(0,b.useRef)(!1),x=(0,b.useCallback)(a=>{l(a)},[]);(0,b.useEffect)(()=>(h.current=!0,()=>{h.current=!1}),[]),(0,b.useEffect)(()=>{let b=!1;return(async()=>{try{var c;let i,k=(a||g.get("thread")||"").trim()||null,m=await d.threadService.listThreads();if(k&&!m.some(a=>a.id===k)){let a=await d.threadService.createThread({id:k});m=f([...m.filter(b=>b.id!==a.id),a])}if(b||!h.current)return;j(m);let n=k||null,{threadId:o,shouldClearSavedId:p,restoredFromStorage:q}=(c=m,i=c[0]?.id??null,n?c.some(a=>a.id===n)?{threadId:n,shouldClearSavedId:!1,restoredFromStorage:!0}:{threadId:i,shouldClearSavedId:!0,restoredFromStorage:!1}:{threadId:i,shouldClearSavedId:!1,restoredFromStorage:!1});p&&e(),w.current||(w.current=!0),q&&o?x(o):o?l(a=>a??o):l(null)}catch(a){console.error("Failed to load threads",a)}finally{h.current&&(n(!1),p(!1))}})(),()=>{b=!0}},[x,g,a]),(0,b.useEffect)(()=>{w.current&&(k||e())},[k]);let y=(0,b.useCallback)(async a=>{r(!0);try{let b=await d.threadService.createThread(a);if(!h.current)return b;return j(a=>f([...a.filter(a=>a.id!==b.id),b])),l(b.id),b}catch(a){throw console.error("Failed to create thread",a),a}finally{h.current&&r(!1)}},[]),z=(0,b.useCallback)(async a=>{if(a){t(a);try{if(await d.threadService.deleteThread(a),!h.current)return;let b=[];j(c=>b=f(c.filter(b=>b.id!==a))),l(c=>c===a?b[0]?.id??null:c)}catch(a){throw console.error("Failed to delete thread",a),a}finally{h.current&&t(null)}}},[]),A=(0,b.useCallback)(async(a,b)=>{let c=a.trim(),e=b.trim();if(c&&e){v(c);try{let a=await d.threadService.renameThread(c,e);if(!a||!h.current)return;j(b=>f(b.map(b=>b.id===a.id?a:b)))}catch(a){throw console.error("Failed to rename thread",a),a}finally{h.current&&v(a=>a===c?null:a)}}},[]),B=(0,b.useCallback)(async(a,b)=>{if(a)try{let c=await d.threadService.saveThreadMessages(a,b);if(!c||!h.current)return;j(a=>f(a.map(a=>a.id===c.id?c:a)))}catch(a){console.error("Failed to update thread messages",a)}},[]),C=(0,b.useCallback)(async(a,b)=>{if(a)try{let c=await d.threadService.updateThreadStatus(a,b);if(!c||!h.current)return;j(a=>f(a.map(a=>a.id===c.id?c:a)))}catch(a){console.error("Failed to update thread status",a)}},[]),D=(0,b.useCallback)(async(a,b)=>{if(a)try{let c=await d.threadService.updateThreadOutcomeNote(a,b);if(!c||!h.current)return;j(a=>f(a.map(a=>a.id===c.id?c:a)))}catch(a){console.error("Failed to update thread outcome note",a)}},[]),E=(0,b.useCallback)(async(a,b,c)=>{if(a&&b)try{let e=await d.threadService.updateMessageThreadStatus(a,b,c);if(!e||!h.current)return;j(a=>f(a.map(a=>a.id===e.id?e:a)))}catch(a){console.error("Failed to update message thread status",a)}},[]),F=(0,b.useCallback)(async(a,b,c)=>{if(a&&b)try{let e=await d.threadService.updateMessageOutcomeNote(a,b,c);if(!e||!h.current)return;j(a=>f(a.map(a=>a.id===e.id?e:a)))}catch(a){console.error("Failed to update message outcome note",a)}},[]),G=null!==k&&s===k;return{threads:i,activeThreadId:k,selectThread:x,createThread:y,deleteThread:z,isLoading:m,isRestoringActiveThread:o,isCreating:q,deletingThreadId:s,renamingThreadId:u,isDeletingActiveThread:G,updateThreadMessages:B,renameThread:A,updateThreadStatus:C,updateThreadOutcomeNote:D,updateMessageThreadStatus:E,updateMessageOutcomeNote:F}}a.s(["useThreadState",()=>g],195348)},194783,a=>{"use strict";var b=a.i(187924),c=a.i(572131),d=a.i(50944),e=a.i(986976),f=a.i(56196),g=a.i(195348),h=a.i(655672),i=a.i(176388);function j({children:a,params:j}){let{slug:k}=(0,c.use)(j),l=(0,d.useRouter)(),m=(0,d.usePathname)(),{projects:n,isLoading:o,createProject:p,updateProject:q,deleteProject:r,addAgent:s,removeAgent:t}=(0,f.useProjectsWithAgents)(),{threads:u,isLoading:v,isCreating:w,deletingThreadId:x,renamingThreadId:y,isRestoringActiveThread:z,createThread:A,renameThread:B,deleteThread:C}=(0,g.useThreadState)(),[D,E]=(0,c.useState)([]),[F,G]=(0,c.useState)(!1),[H,I]=(0,c.useState)(368);(0,c.useEffect)(()=>{G((0,h.loadWorkspaceSidebarVisible)()),I((0,i.loadWorkspaceWidth)()||368)},[]),(0,c.useEffect)(()=>{fetch("/api/participants").then(a=>a.json()).then(a=>E(Array.isArray(a)?a:[])).catch(()=>E([]))},[]);let J=(0,c.useMemo)(()=>n.find(a=>a.slug===k)??null,[n,k]),K=(0,c.useMemo)(()=>{let a=m.match(/\/projects\/[^/]+\/thread\/([^/]+)/);return a?.[1]?decodeURIComponent(a[1]):J?.thread_ids[0]??null},[J?.thread_ids,m]),L=(0,c.useMemo)(()=>m.includes("/linear")?"linear":m.includes("/automations")?"automations":m.includes("/thread/")?"thread":m.includes("/knowledge")?"knowledge":"board",[m]),M=(0,c.useCallback)(a=>{I(a),(0,i.persistWorkspaceWidth)(a)},[]);return o?(0,b.jsx)("div",{className:"flex items-center justify-center h-full",children:(0,b.jsx)("span",{className:"spinner w-8 h-8 border-3 border-[var(--primary)] border-t-transparent rounded-full"})}):J?(0,b.jsxs)("div",{className:"flex h-dvh min-h-0 overflow-hidden bg-[var(--background)]",children:[(0,b.jsx)(e.WorkspaceSidebar,{threads:u,participants:D,activeThreadId:K,isLoading:v,isRestoringActiveThread:z,isCreating:w,deletingThreadId:x,renamingThreadId:y,onSelectThread:a=>l.push(`/projects/${k}/thread/${encodeURIComponent(a)}`),onCreateThread:A,onRenameThread:B,onDeleteThread:C,visible:F,onToggle:()=>{let a=!F;G(a),(0,h.persistWorkspaceSidebarVisible)(a)},width:H,onWidthChange:M,projects:n,onCreateProject:p,onUpdateProject:q,onDeleteProject:r,onAddAgentToProject:s,onRemoveAgentFromProject:t,activeProjectId:J.id,activeProjectView:L,onUpdateParticipant:async a=>{let b=await fetch("/api/participants",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(!b.ok)throw Error("Failed to update agent");let c=await b.json();E(a=>a.map(a=>a.id===c.id?c:a))},onSelectProject:a=>{let b=n.find(b=>b.id===a);b&&l.push(`/projects/${b.slug}`)}}),(0,b.jsx)("div",{className:"flex-1 min-h-0 flex flex-col min-w-0 h-full overflow-hidden",children:a})]}):(0,b.jsxs)("div",{className:"flex flex-col items-center justify-center h-full",children:[(0,b.jsx)("h2",{className:"text-xl font-bold mb-2",children:"Project Not Found"}),(0,b.jsxs)("p",{className:"text-[var(--muted-foreground)] mb-4",children:["The project “",k,"” does not exist or you do not have access to it."]}),(0,b.jsx)("button",{onClick:()=>l.push("/projects"),className:"px-4 py-2 bg-[var(--primary)] text-white rounded-lg hover:bg-[var(--primary-dark)] transition-colors",children:"Back to Projects"})]})}function k({children:a,params:d}){return(0,b.jsx)(c.Suspense,{fallback:(0,b.jsx)("div",{className:"flex h-full items-center justify-center text-sm text-[var(--muted-foreground)]",children:"Loading project…"}),children:(0,b.jsx)(j,{params:d,children:a})})}a.s(["default",()=>k])}];
2
2
 
3
3
  //# sourceMappingURL=%5Broot-of-the-server%5D__f2c3b7ab._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[556704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},750227,(a,b,c)=>{b.exports=a.x("node:path",()=>require("node:path"))},909270,(a,b,c)=>{"use strict";b.exports=a.r(342602).vendored.contexts.AppRouterContext},738783,(a,b,c)=>{"use strict";b.exports=a.r(342602).vendored["react-ssr"].ReactServerDOMTurbopackClient},120635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},736313,(a,b,c)=>{"use strict";b.exports=a.r(342602).vendored.contexts.HooksClientContext},818341,(a,b,c)=>{"use strict";b.exports=a.r(342602).vendored.contexts.ServerInsertedHtml},400210,a=>{"use strict";let b=(0,a.i(883706).default)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);a.s(["ArrowLeft",()=>b],400210)},660246,a=>{"use strict";let b=(0,a.i(883706).default)("users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]]);a.s(["Users",()=>b],660246)},284505,a=>{"use strict";let b=(0,a.i(883706).default)("download",[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]]);a.s(["Download",()=>b],284505)},563588,a=>{"use strict";let b=(0,a.i(883706).default)("message-square",[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]]);a.s(["MessageSquare",()=>b],563588)},104416,a=>{"use strict";let b=(0,a.i(883706).default)("shield-check",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);a.s(["ShieldCheck",()=>b],104416)},485552,a=>{"use strict";let b=(0,a.i(883706).default)("brain-circuit",[["path",{d:"M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z",key:"l5xja"}],["path",{d:"M9 13a4.5 4.5 0 0 0 3-4",key:"10igwf"}],["path",{d:"M6.003 5.125A3 3 0 0 0 6.401 6.5",key:"105sqy"}],["path",{d:"M3.477 10.896a4 4 0 0 1 .585-.396",key:"ql3yin"}],["path",{d:"M6 18a4 4 0 0 1-1.967-.516",key:"2e4loj"}],["path",{d:"M12 13h4",key:"1ku699"}],["path",{d:"M12 18h6a2 2 0 0 1 2 2v1",key:"105ag5"}],["path",{d:"M12 8h8",key:"1lhi5i"}],["path",{d:"M16 8V5a2 2 0 0 1 2-2",key:"u6izg6"}],["circle",{cx:"16",cy:"13",r:".5",key:"ry7gng"}],["circle",{cx:"18",cy:"3",r:".5",key:"1aiba7"}],["circle",{cx:"20",cy:"21",r:".5",key:"yhc1fs"}],["circle",{cx:"20",cy:"8",r:".5",key:"1e43v0"}]]);a.s(["BrainCircuit",()=>b],485552)}];
2
+
3
+ //# sourceMappingURL=%5Broot-of-the-server%5D__f59f0dc7._.js.map