@mndrk/agx 2.2.0 → 2.3.1

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 (433) hide show
  1. package/README.md +70 -105
  2. package/cloud-runtime/standalone/apps/local/.next/BUILD_ID +1 -1
  3. package/cloud-runtime/standalone/apps/local/.next/build-manifest.json +3 -3
  4. package/cloud-runtime/standalone/apps/local/.next/prerender-manifest.json +3 -3
  5. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.html +1 -1
  6. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.rsc +1 -1
  7. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  8. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  9. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  10. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  11. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  12. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  13. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.html +2 -2
  14. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.rsc +2 -2
  15. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  16. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  17. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  18. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  19. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  20. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  21. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -1
  22. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page.js.nft.json +1 -1
  23. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page_client-reference-manifest.js +1 -1
  24. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.html +2 -2
  25. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.rsc +3 -3
  26. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_full.segment.rsc +3 -3
  27. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_head.segment.rsc +1 -1
  28. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_index.segment.rsc +2 -2
  29. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_tree.segment.rsc +2 -2
  30. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents/__PAGE__.segment.rsc +2 -2
  31. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents.segment.rsc +1 -1
  32. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agent-specs/route.js.nft.json +1 -1
  33. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/[id]/profile/route.js.nft.json +1 -1
  34. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/export/route.js.nft.json +1 -1
  35. package/cloud-runtime/standalone/apps/local/.next/server/app/api/chat/route.js.nft.json +1 -1
  36. package/cloud-runtime/standalone/apps/local/.next/server/app/api/file-search/route.js.nft.json +1 -1
  37. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/[id]/route.js.nft.json +1 -1
  38. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/context/route.js.nft.json +1 -1
  39. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/route.js.nft.json +1 -1
  40. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/options/route.js.nft.json +1 -1
  41. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/runs/scripted/route.js.nft.json +1 -1
  42. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/status/route.js.nft.json +1 -1
  43. package/cloud-runtime/standalone/apps/local/.next/server/app/api/participants/route.js.nft.json +1 -1
  44. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/linear-issues/route.js.nft.json +1 -1
  45. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/scheduled-tasks/route.js.nft.json +1 -1
  46. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/worker/route.js.nft.json +1 -1
  47. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/search/route.js.nft.json +1 -1
  48. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/teams/route.js.nft.json +1 -1
  49. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/poll/route.js.nft.json +1 -1
  50. package/cloud-runtime/standalone/apps/local/.next/server/app/api/providers/check/[id]/route.js.nft.json +1 -1
  51. package/cloud-runtime/standalone/apps/local/.next/server/app/api/providers/route.js.nft.json +1 -1
  52. package/cloud-runtime/standalone/apps/local/.next/server/app/api/queue/route.js.nft.json +1 -1
  53. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/debug/route.js.nft.json +1 -1
  54. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/poll/route.js.nft.json +1 -1
  55. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/assign/route.js.nft.json +1 -1
  56. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/available/route.js.nft.json +1 -1
  57. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/detail/route.js.nft.json +1 -1
  58. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/history/route.js.nft.json +1 -1
  59. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/learn/route.js.nft.json +1 -1
  60. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/route.js.nft.json +1 -1
  61. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/unlearn/route.js.nft.json +1 -1
  62. package/cloud-runtime/standalone/apps/local/.next/server/app/api/status/route.js.nft.json +1 -1
  63. package/cloud-runtime/standalone/apps/local/.next/server/app/api/summarize/route.js.nft.json +1 -1
  64. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/[commentId]/route.js.nft.json +1 -1
  65. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/route.js.nft.json +1 -1
  66. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/verify/route.js.nft.json +1 -1
  67. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/route.js.nft.json +1 -1
  68. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/extract/route.js.nft.json +1 -1
  69. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/route.js.nft.json +1 -1
  70. package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/knowledge/route.js.nft.json +1 -1
  71. package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/route.js.nft.json +1 -1
  72. package/cloud-runtime/standalone/apps/local/.next/server/app/automations/page/react-loadable-manifest.json +2 -2
  73. package/cloud-runtime/standalone/apps/local/.next/server/app/automations/page_client-reference-manifest.js +1 -1
  74. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.html +2 -2
  75. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.rsc +4 -4
  76. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_full.segment.rsc +4 -4
  77. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_head.segment.rsc +1 -1
  78. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_index.segment.rsc +2 -2
  79. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_tree.segment.rsc +2 -2
  80. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/automations/__PAGE__.segment.rsc +2 -2
  81. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/automations.segment.rsc +1 -1
  82. package/cloud-runtime/standalone/apps/local/.next/server/app/board/page_client-reference-manifest.js +1 -1
  83. package/cloud-runtime/standalone/apps/local/.next/server/app/board.html +2 -2
  84. package/cloud-runtime/standalone/apps/local/.next/server/app/board.rsc +2 -2
  85. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_full.segment.rsc +2 -2
  86. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_head.segment.rsc +1 -1
  87. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_index.segment.rsc +2 -2
  88. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_tree.segment.rsc +2 -2
  89. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/board/__PAGE__.segment.rsc +1 -1
  90. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/board.segment.rsc +1 -1
  91. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph/page.js.nft.json +1 -1
  92. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph/page_client-reference-manifest.js +1 -1
  93. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.html +2 -2
  94. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.rsc +3 -3
  95. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_full.segment.rsc +3 -3
  96. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_head.segment.rsc +1 -1
  97. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_index.segment.rsc +2 -2
  98. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_tree.segment.rsc +2 -2
  99. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/execution-graph/__PAGE__.segment.rsc +2 -2
  100. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/execution-graph.segment.rsc +1 -1
  101. package/cloud-runtime/standalone/apps/local/.next/server/app/folders/page_client-reference-manifest.js +1 -1
  102. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.html +2 -2
  103. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.rsc +3 -3
  104. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_full.segment.rsc +3 -3
  105. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_head.segment.rsc +1 -1
  106. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_index.segment.rsc +2 -2
  107. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_tree.segment.rsc +2 -2
  108. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/folders/__PAGE__.segment.rsc +2 -2
  109. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/folders.segment.rsc +1 -1
  110. package/cloud-runtime/standalone/apps/local/.next/server/app/index.html +2 -2
  111. package/cloud-runtime/standalone/apps/local/.next/server/app/index.rsc +3 -3
  112. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  113. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_full.segment.rsc +3 -3
  114. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_head.segment.rsc +1 -1
  115. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_index.segment.rsc +2 -2
  116. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  117. package/cloud-runtime/standalone/apps/local/.next/server/app/page.js.nft.json +1 -1
  118. package/cloud-runtime/standalone/apps/local/.next/server/app/page_client-reference-manifest.js +1 -1
  119. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page/react-loadable-manifest.json +1 -1
  120. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page.js.nft.json +1 -1
  121. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page_client-reference-manifest.js +1 -1
  122. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page.js.nft.json +1 -1
  123. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page_client-reference-manifest.js +1 -1
  124. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page.js.nft.json +1 -1
  125. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page_client-reference-manifest.js +1 -1
  126. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page.js.nft.json +1 -1
  127. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page_client-reference-manifest.js +1 -1
  128. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/knowledge/page.js.nft.json +1 -1
  129. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/knowledge/page_client-reference-manifest.js +1 -1
  130. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page/react-loadable-manifest.json +1 -1
  131. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page.js.nft.json +1 -1
  132. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page_client-reference-manifest.js +1 -1
  133. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page.js.nft.json +1 -1
  134. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page_client-reference-manifest.js +1 -1
  135. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page.js.nft.json +1 -1
  136. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page_client-reference-manifest.js +1 -1
  137. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page.js.nft.json +1 -1
  138. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
  139. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/settings/page.js.nft.json +1 -1
  140. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/settings/page_client-reference-manifest.js +1 -1
  141. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page.js.nft.json +1 -1
  142. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page_client-reference-manifest.js +1 -1
  143. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page.js.nft.json +1 -1
  144. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page_client-reference-manifest.js +1 -1
  145. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page.js.nft.json +1 -1
  146. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page_client-reference-manifest.js +1 -1
  147. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page.js.nft.json +1 -1
  148. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page_client-reference-manifest.js +1 -1
  149. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page.js.nft.json +1 -1
  150. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page_client-reference-manifest.js +1 -1
  151. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page.js.nft.json +1 -1
  152. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page_client-reference-manifest.js +1 -1
  153. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page.js.nft.json +1 -1
  154. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page_client-reference-manifest.js +1 -1
  155. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page.js.nft.json +1 -1
  156. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page_client-reference-manifest.js +1 -1
  157. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans/page_client-reference-manifest.js +1 -1
  158. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.html +2 -2
  159. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.rsc +2 -2
  160. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_full.segment.rsc +2 -2
  161. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_head.segment.rsc +1 -1
  162. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_index.segment.rsc +2 -2
  163. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_tree.segment.rsc +2 -2
  164. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/projects/orphans/__PAGE__.segment.rsc +1 -1
  165. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/projects/orphans.segment.rsc +1 -1
  166. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/projects.segment.rsc +1 -1
  167. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/page.js.nft.json +1 -1
  168. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  169. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.html +2 -2
  170. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.rsc +3 -3
  171. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_full.segment.rsc +3 -3
  172. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_head.segment.rsc +1 -1
  173. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_index.segment.rsc +2 -2
  174. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_tree.segment.rsc +2 -2
  175. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +2 -2
  176. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/projects.segment.rsc +1 -1
  177. package/cloud-runtime/standalone/apps/local/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  178. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.html +2 -2
  179. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.rsc +2 -2
  180. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_full.segment.rsc +2 -2
  181. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  182. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_index.segment.rsc +2 -2
  183. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  184. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
  185. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  186. package/cloud-runtime/standalone/apps/local/.next/server/app/setup/page.js.nft.json +1 -1
  187. package/cloud-runtime/standalone/apps/local/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  188. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.html +2 -2
  189. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.rsc +4 -3
  190. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_full.segment.rsc +4 -3
  191. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_head.segment.rsc +1 -1
  192. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_index.segment.rsc +2 -2
  193. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_tree.segment.rsc +3 -2
  194. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +3 -2
  195. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup.segment.rsc +1 -1
  196. package/cloud-runtime/standalone/apps/local/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  197. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.html +2 -2
  198. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.rsc +2 -2
  199. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_full.segment.rsc +2 -2
  200. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_head.segment.rsc +1 -1
  201. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_index.segment.rsc +2 -2
  202. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_tree.segment.rsc +2 -2
  203. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/skills/__PAGE__.segment.rsc +1 -1
  204. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/skills.segment.rsc +1 -1
  205. package/cloud-runtime/standalone/apps/local/.next/server/app/status/page_client-reference-manifest.js +1 -1
  206. package/cloud-runtime/standalone/apps/local/.next/server/app/status.html +2 -2
  207. package/cloud-runtime/standalone/apps/local/.next/server/app/status.rsc +3 -3
  208. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_full.segment.rsc +3 -3
  209. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_head.segment.rsc +1 -1
  210. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_index.segment.rsc +2 -2
  211. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_tree.segment.rsc +2 -2
  212. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status/__PAGE__.segment.rsc +2 -2
  213. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status.segment.rsc +1 -1
  214. package/cloud-runtime/standalone/apps/local/.next/server/app/thread/[id]/page_client-reference-manifest.js +1 -1
  215. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0-zk9w8._.js +7 -2
  216. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0.01bfe._.js +13 -8
  217. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__00c~p6z._.js +7 -2
  218. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__019dflu._.js +7 -2
  219. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__02t.3rm._.js +4 -4
  220. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__06zr0ph._.js +6 -1
  221. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__07d._0s._.js +15 -10
  222. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__08xj~a3._.js +1 -1
  223. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0a0cq38._.js +34 -3
  224. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0asvfdo._.js +35 -4
  225. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0bt7ejs._.js +7 -2
  226. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0f.~98d._.js +7 -2
  227. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0g-~-.q._.js +6 -1
  228. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0g7p6pw._.js +1 -1
  229. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0gj~dap._.js +40 -9
  230. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0hkcw03._.js +8 -3
  231. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0hyu3en._.js +7 -2
  232. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0i5aw03._.js +7 -2
  233. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0ke4z91._.js +7 -2
  234. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0l53ok5._.js +41 -10
  235. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0ll-~cx._.js +7 -2
  236. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0mh6p.0._.js +7 -2
  237. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0nc-lbr._.js +1 -1
  238. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0p9rl6.._.js +8 -3
  239. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0q~pnp0._.js +6 -6
  240. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0ue0bu5._.js +6 -1
  241. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0unwwyx._.js +12 -7
  242. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0vtkl3q._.js +4 -4
  243. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0x6w64i._.js +1 -1
  244. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0z82z0-._.js +6 -1
  245. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0zrv3p3._.js +16 -11
  246. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0~iknwz._.js +12 -7
  247. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__10d.dhd._.js +46 -15
  248. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__10sw5ia._.js +4 -4
  249. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__11yx.ud._.js +33 -2
  250. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__13-nlgu._.js +5 -5
  251. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__13960a8._.js +14 -9
  252. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_06qet8g._.js +14 -9
  253. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0_0m2ly._.js +4 -4
  254. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0a15wtk._.js +4 -4
  255. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0fr1qq6._.js +1 -1
  256. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0g.q2r6._.js +6 -1
  257. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0i7fs.i._.js +4 -4
  258. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_01pvj2g._.js +1 -1
  259. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_agent-participants_ts_0cq15u5._.js +1 -1
  260. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_db_ts_0twf-w5._.js +1 -1
  261. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_orchestrator_chat-processor_ts_0c2l_oh._.js +43 -12
  262. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_sqlite-query-adapter_ts_0l95hik._.js +15 -15
  263. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_sqlite-query-adapter_ts_0s5xprd._.js +1 -1
  264. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_graph_082u-ls._.js +19 -14
  265. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_graph_schedule-runner_ts_07-ozf_._.js +2 -2
  266. package/cloud-runtime/standalone/apps/local/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0_l0fpi.js +1 -1
  267. package/cloud-runtime/standalone/apps/local/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0gips_c.js +1 -1
  268. package/cloud-runtime/standalone/apps/local/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0rszt9p.js +10 -6
  269. package/cloud-runtime/standalone/apps/local/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0u_5kfo.js +1 -1
  270. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_06fnblz._.js +3 -0
  271. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0140-84._.js +3 -0
  272. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_03fckp4._.js +3 -0
  273. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{_0tcjapj._.js → _0ip6k6n._.js} +2 -2
  274. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0jensz1._.js +3 -0
  275. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0t0p8q5._.js +3 -0
  276. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0yeuuy1._.js +1 -23
  277. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_03z24q2._.js +1 -1
  278. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0_ac-.f._.js +3 -3
  279. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0a-8i4p._.js +1 -1
  280. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0k4~c1x._.js +1 -1
  281. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0ld1uug._.js +1 -1
  282. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0ms1d6i._.js +4 -0
  283. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0p_v0ri._.js +1 -1
  284. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0x.xj52._.js +3 -0
  285. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0~g2ijr._.js +1 -1
  286. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_11k_-8~._.js +3 -3
  287. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_agents_[id]_page_tsx_06n47n~._.js +1 -1
  288. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_agents_page_tsx_078reb_._.js +1 -1
  289. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_linear_page_tsx_0a~n5y8._.js +25 -3
  290. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_page_tsx_0kcaeqi._.js +1 -1
  291. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_teams_[teamId]_agents_[agentId]_page_tsx_0wm~_~t._.js +1 -1
  292. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_teams_[teamId]_page_tsx_0iyozfl._.js +1 -1
  293. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_teams_new_page_tsx_0yqd0a5._.js +1 -1
  294. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_terminal_page_tsx_01n9qk.._.js +1 -20
  295. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_setup_page_tsx_0ql2qmr._.js +1 -1
  296. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_PromptJobBoard_tsx_06zob36._.js +2 -2
  297. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_projects_ProjectObjectivesWorkspace_tsx_0k4tfip._.js +1 -1
  298. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_terminal_TerminalPane_tsx_0l17vs_._.js +22 -0
  299. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_thread_WorkspaceSidebar_tsx_0unv2xp._.js +1 -1
  300. package/cloud-runtime/standalone/apps/local/.next/server/middleware-build-manifest.js +3 -3
  301. package/cloud-runtime/standalone/apps/local/.next/server/middleware-manifest.json +5 -5
  302. package/cloud-runtime/standalone/apps/local/.next/server/pages/404.html +2 -2
  303. package/cloud-runtime/standalone/apps/local/.next/server/pages/500.html +1 -1
  304. package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.js +1 -1
  305. package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.json +1 -1
  306. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{1011~1x9nj4ny.js → 0-k2m1ncx7hwx.js} +1 -1
  307. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0dnw31436wd~..js → 0-pkmgle2s8u8.js} +1 -1
  308. package/cloud-runtime/standalone/apps/local/.next/static/chunks/064jfmraty.9h.js +1 -0
  309. package/cloud-runtime/standalone/apps/local/.next/static/chunks/06kru5m9q~r.j.js +1 -0
  310. package/cloud-runtime/standalone/apps/local/.next/static/chunks/06kyg1q0bcz6p.js +5 -0
  311. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0_cjth28_11b2.js → 08bdyjcnamzep.js} +1 -1
  312. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0-olq~7zw3wjy.js → 08xq~uyr6.eqw.js} +1 -1
  313. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0gj98094p~zn4.js → 0cku81z~3oe6..js} +1 -1
  314. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0e7jhy0-52_4k.js +1 -0
  315. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0wh6p5~ft5rma.js → 0htc.sqrk_0.c.js} +1 -1
  316. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0ju4xmxwqddw6.js +1 -0
  317. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0mm978wb-ueg-.js +6 -0
  318. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0musu8f.4wvxz.js +1 -0
  319. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0bchtyu6m.2yv.js → 0muti0yiyhu0t.js} +1 -1
  320. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0rhps884e-bzu.js +1 -0
  321. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0rr3fvwc5ind~.js +5 -0
  322. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0sbkkjowkksa6.js +1 -0
  323. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0sjz0.o9_33qy.js +1 -0
  324. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0srzmg8ivve1g.css +1 -0
  325. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0fonouj2i9qnb.js → 0swo3_e8.4s7j.js} +2 -2
  326. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0sysrf3~l~r35.js +1 -0
  327. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0t69h-kc701fn.js +1 -0
  328. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0v67lnh..wj4z.js +1 -0
  329. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{013gtut17~fne.js → 0wb45ol1xrqe~.js} +1 -23
  330. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{00po4v2x~0x_z.js → 0wiw2v8gm-k_-.js} +1 -1
  331. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0jq0t4zip38wt.js → 0wopevh0s7.8c.js} +1 -1
  332. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0xm2~gxlt1npd.js +1 -0
  333. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{1503vb7lb6.g1.js → 0ya124ushze_f.js} +4 -4
  334. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{00e1ihnb6ap3t.js → 0zt2o58c5gytn.js} +2 -2
  335. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0~idsggr8vqf5.js +59 -0
  336. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0xu_doej_wc-3.js → 0~mcfx41q4znh.js} +3 -3
  337. package/cloud-runtime/standalone/apps/local/.next/static/chunks/116j4mjz~y42t.js +1 -0
  338. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0-vo_x2cxmjm3.js → 12b62py0mq1gm.js} +4 -4
  339. package/cloud-runtime/standalone/apps/local/.next/static/chunks/12y5i0lh6s73o.js +1 -0
  340. package/cloud-runtime/standalone/apps/local/.next/static/chunks/148.mt80civoz.js +20 -0
  341. package/cloud-runtime/standalone/apps/local/.next/static/chunks/14m5d270euu_s.js +1 -0
  342. package/cloud-runtime/standalone/apps/local/.next/static/chunks/16h9208kl5~xa.js +16 -0
  343. package/cloud-runtime/standalone/apps/local/app/agents/[id]/page.tsx +6 -3
  344. package/cloud-runtime/standalone/apps/local/app/agents/page.tsx +3 -3
  345. package/cloud-runtime/standalone/apps/local/app/api/chat/route.ts +7 -1
  346. package/cloud-runtime/standalone/apps/local/app/api/participants/route.ts +9 -9
  347. package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/search/route.ts +6 -6
  348. package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/teams/route.ts +3 -3
  349. package/cloud-runtime/standalone/apps/local/app/api/prompt-jobs/agents/route.ts +1 -1
  350. package/cloud-runtime/standalone/apps/local/app/api/schedules/poll/route.ts +11 -2
  351. package/cloud-runtime/standalone/apps/local/app/page.tsx +72 -14
  352. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/page.tsx +34 -1
  353. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page.tsx +6 -3
  354. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/teams/[teamId]/page.tsx +6 -3
  355. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/teams/new/page.tsx +8 -17
  356. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/teams/replace/page.tsx +1 -1
  357. package/cloud-runtime/standalone/apps/local/app/projects/page.tsx +7 -0
  358. package/cloud-runtime/standalone/apps/local/app/setup/page.tsx +1 -38
  359. package/cloud-runtime/standalone/apps/local/components/AutomationsBoard.tsx +8 -4
  360. package/cloud-runtime/standalone/apps/local/components/EmptyStateCard.tsx +37 -0
  361. package/cloud-runtime/standalone/apps/local/components/LinearBoard.tsx +103 -770
  362. package/cloud-runtime/standalone/apps/local/components/PromptJobBoard.tsx +5 -37
  363. package/cloud-runtime/standalone/apps/local/components/TeamPickerModal.tsx +3 -3
  364. package/cloud-runtime/standalone/apps/local/components/chat-ui/Composer.tsx +28 -32
  365. package/cloud-runtime/standalone/apps/local/components/chat-ui/ParticipantBar.tsx +24 -39
  366. package/cloud-runtime/standalone/apps/local/components/linear/LinearBoardFilters.tsx +343 -0
  367. package/cloud-runtime/standalone/apps/local/components/linear/TicketRow.tsx +158 -0
  368. package/cloud-runtime/standalone/apps/local/components/projects/ObjectiveHealthTrend.tsx +45 -61
  369. package/cloud-runtime/standalone/apps/local/components/projects/RecentlyCompletedCard.tsx +0 -16
  370. package/cloud-runtime/standalone/apps/local/components/projects/ReplaceAgentsModal.tsx +2 -2
  371. package/cloud-runtime/standalone/apps/local/components/setup/McpSetupStep.tsx +155 -120
  372. package/cloud-runtime/standalone/apps/local/components/setup/ProviderStep.tsx +85 -88
  373. package/cloud-runtime/standalone/apps/local/components/setup/SetupLayout.tsx +6 -4
  374. package/cloud-runtime/standalone/apps/local/components/terminal/ProjectTerminal.tsx +18 -193
  375. package/cloud-runtime/standalone/apps/local/components/terminal/TerminalPane.tsx +40 -4
  376. package/cloud-runtime/standalone/apps/local/components/thread/WorkspaceSidebar.tsx +4 -4
  377. package/cloud-runtime/standalone/apps/local/components/ui/ResizeHandle.tsx +52 -0
  378. package/cloud-runtime/standalone/apps/local/hooks/useAutomations.ts +8 -3
  379. package/cloud-runtime/standalone/apps/local/hooks/useLinearActiveAgents.ts +38 -0
  380. package/cloud-runtime/standalone/apps/local/hooks/useLinearParticipants.ts +118 -0
  381. package/cloud-runtime/standalone/apps/local/hooks/usePromptJobs.ts +5 -3
  382. package/cloud-runtime/standalone/apps/local/hooks/useSetupFlow.ts +6 -81
  383. package/cloud-runtime/standalone/apps/local/lib/agent-participants.ts +1 -1
  384. package/cloud-runtime/standalone/apps/local/lib/agent-process-registry.ts +34 -0
  385. package/cloud-runtime/standalone/apps/local/lib/db.ts +5 -5
  386. package/cloud-runtime/standalone/apps/local/lib/linear-board-utils.ts +9 -0
  387. package/cloud-runtime/standalone/apps/local/lib/linear-run-status.ts +88 -0
  388. package/cloud-runtime/standalone/apps/local/lib/linear-run-store.ts +4 -4
  389. package/cloud-runtime/standalone/apps/local/lib/sqlite-query-adapter.ts +5 -1
  390. package/cloud-runtime/standalone/apps/local/lib/team-catalog.ts +60 -60
  391. package/cloud-runtime/standalone/apps/local/lib/types.ts +1 -1
  392. package/cloud-runtime/standalone/apps/local/migrations/sqlite_schema.sql +1 -1
  393. package/cloud-runtime/standalone/apps/local/skills-lock.json +5 -0
  394. package/cloud-runtime/standalone/apps/local/src/graph/schedule-runner.ts +26 -1
  395. package/cloud-runtime/standalone/apps/local/src/graph/store.ts +13 -0
  396. package/cloud-runtime/standalone/apps/local/state/linearBoardPins.ts +45 -0
  397. package/cloud-runtime/standalone/apps/local/worker/index.js +56 -5
  398. package/lib/cli/onboarding.js +8 -5
  399. package/package.json +1 -1
  400. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_067eb..._.js +0 -3
  401. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_00trrg8._.js +0 -3
  402. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0ejzn1e._.js +0 -3
  403. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0sjchy6._.js +0 -3
  404. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0w4gpvr._.js +0 -3
  405. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0x6hh0t._.js +0 -4
  406. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0t6p.qm._.js +0 -3
  407. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0-wlbe.ripd2w.css +0 -1
  408. package/cloud-runtime/standalone/apps/local/.next/static/chunks/014z_yruiincl.js +0 -1
  409. package/cloud-runtime/standalone/apps/local/.next/static/chunks/041-dhls9zkl1.js +0 -1
  410. package/cloud-runtime/standalone/apps/local/.next/static/chunks/069yt_7prdxsp.js +0 -1
  411. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0e6rxcxy.l5c8.js +0 -1
  412. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0ime4btrg-g4l.js +0 -1
  413. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0j-nhn61e~nnj.js +0 -1
  414. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0jglardpw~5uc.js +0 -37
  415. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0l3v45kd.9is_.js +0 -1
  416. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0ng6wy4ak35jg.js +0 -1
  417. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0n~jhoq~op4e5.js +0 -16
  418. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0p-rdas54yo~w.js +0 -1
  419. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0pdrpsy-zdxp0.js +0 -5
  420. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0p~l5ap6qqx2o.js +0 -1
  421. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0tm20~ec~occu.js +0 -1
  422. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0w94x-v00osq0.js +0 -1
  423. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0xwny92a.ad_i.js +0 -1
  424. package/cloud-runtime/standalone/apps/local/.next/static/chunks/11l2tww5f0hsk.js +0 -20
  425. package/cloud-runtime/standalone/apps/local/.next/static/chunks/12qohmk-~yrtg.js +0 -1
  426. package/cloud-runtime/standalone/apps/local/.next/static/chunks/14v~9vx3tdv85.js +0 -1
  427. package/cloud-runtime/standalone/apps/local/.next/static/chunks/16fyhcmwlw3th.js +0 -6
  428. package/cloud-runtime/standalone/apps/local/.next/static/chunks/18e8w~~mvoh5o.js +0 -1
  429. package/cloud-runtime/standalone/apps/local/components/setup/ProjectStep.tsx +0 -189
  430. package/cloud-runtime/standalone/apps/local/components/setup/TeamsStep.tsx +0 -500
  431. /package/cloud-runtime/standalone/apps/local/.next/static/{qPuactsz6OYimwT6dSdHn → 438GF86gZtccU2fS12URB}/_buildManifest.js +0 -0
  432. /package/cloud-runtime/standalone/apps/local/.next/static/{qPuactsz6OYimwT6dSdHn → 438GF86gZtccU2fS12URB}/_clientMiddlewareManifest.js +0 -0
  433. /package/cloud-runtime/standalone/apps/local/.next/static/{qPuactsz6OYimwT6dSdHn → 438GF86gZtccU2fS12URB}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
1
- module.exports=[633211,864075,888652,855532,329905,224316,e=>{"use strict";var t=e.x("node:sqlite",()=>require("node:sqlite"),!0),r=e.i(801243),n=e.i(522734),i=e.i(814747),a=e.i(446786);let o={id:"2c3cc1ca-956d-4b62-b295-4d2d3374103f",email:process.env.AGX_BOARD_USER_EMAIL||"local@agx.board",name:process.env.AGX_BOARD_USER_NAME||"Local Board User"};e.s(["LOCAL_USER",0,o],864075);let s=(0,i.join)((0,a.homedir)(),".agx","agents");function l(e,t,r){try{let a;a=(0,i.join)(s,e),(0,n.existsSync)(a)||(0,n.mkdirSync)(a,{recursive:!0});let o={t:new Date().toISOString(),agent:e,action:t,...r};(0,n.appendFileSync)((0,i.join)(s,e,"activity.jsonl"),JSON.stringify(o)+"\n","utf-8")}catch{}}e.s(["logActivity",0,l],888652);let d=(0,i.join)((0,a.homedir)(),".agx","agents");function E(e){return(0,i.join)(d,e,"self.md")}function c(e){return(0,i.join)(d,e,"reflection-state.json")}function p(e){let t=E(e);if(!(0,n.existsSync)(t))return null;let r=(0,n.readFileSync)(t,"utf-8");if(!r.trim())return null;let i=r.split("\n"),a=0,o=new Date().toISOString(),s=0;if("---"===i[0])for(let e=1;e<i.length;e++){if("---"===i[e]){s=e+1;break}let[t,...r]=i[e].split(": "),n=r.join(": ");"version"===t&&(a=parseInt(n,10)||0),"derivedAt"===t&&(o=n)}return{agentId:e,content:i.slice(s).join("\n").trim(),version:a,derivedAt:o}}e.s(["buildStructuredReflectionPrompt",0,function(e,t,r,n,i){let a,o,s,l=(a=t?.content||`I am ${e.name}. ${e.seed}`,o=r.map(e=>{let t=[`- [${e.t}] ${e.observation}`];return e.judgement&&t.push(` Judgement: ${e.judgement}`),e.comparison&&t.push(` Comparison: ${e.comparison}`),e.delta&&t.push(` Delta: ${e.delta}`),e.intent&&t.push(` Intent: ${e.intent}`),t.join("\n")}).join("\n"),s=n.filter(t=>t.agentId!==e.name).map(e=>`### ${e.agentId}
1
+ module.exports=[633211,864075,888652,855532,329905,224316,e=>{"use strict";var t=e.x("node:sqlite",()=>require("node:sqlite"),!0),r=e.i(801243),n=e.i(522734),i=e.i(814747),a=e.i(446786);let o={id:"2c3cc1ca-956d-4b62-b295-4d2d3374103f",email:process.env.AGX_BOARD_USER_EMAIL||"local@agx.board",name:process.env.AGX_BOARD_USER_NAME||"Local Board User"};e.s(["LOCAL_USER",0,o],864075);let s=(0,i.join)((0,a.homedir)(),".agx","agents");function l(e,t,r){try{let a;a=(0,i.join)(s,e),(0,n.existsSync)(a)||(0,n.mkdirSync)(a,{recursive:!0});let o={t:new Date().toISOString(),agent:e,action:t,...r};(0,n.appendFileSync)((0,i.join)(s,e,"activity.jsonl"),JSON.stringify(o)+"\n","utf-8")}catch{}}e.s(["logActivity",0,l],888652);let d=(0,i.join)((0,a.homedir)(),".agx","agents");function E(e){return(0,i.join)(d,e,"self.md")}function c(e){return(0,i.join)(d,e,"reflection-state.json")}function T(e){let t=E(e);if(!(0,n.existsSync)(t))return null;let r=(0,n.readFileSync)(t,"utf-8");if(!r.trim())return null;let i=r.split("\n"),a=0,o=new Date().toISOString(),s=0;if("---"===i[0])for(let e=1;e<i.length;e++){if("---"===i[e]){s=e+1;break}let[t,...r]=i[e].split(": "),n=r.join(": ");"version"===t&&(a=parseInt(n,10)||0),"derivedAt"===t&&(o=n)}return{agentId:e,content:i.slice(s).join("\n").trim(),version:a,derivedAt:o}}e.s(["buildStructuredReflectionPrompt",0,function(e,t,r,n,i){let a,o,s,l=(a=t?.content||`I am ${e.name}. ${e.seed}`,o=r.map(e=>{let t=[`- [${e.t}] ${e.observation}`];return e.judgement&&t.push(` Judgement: ${e.judgement}`),e.comparison&&t.push(` Comparison: ${e.comparison}`),e.delta&&t.push(` Delta: ${e.delta}`),e.intent&&t.push(` Intent: ${e.intent}`),t.join("\n")}).join("\n"),s=n.filter(t=>t.agentId!==e.name).map(e=>`### ${e.agentId}
2
2
  ${e.content}`).join("\n\n"),`You are ${e.name}. Voice: ${e.voice}.
3
3
 
4
4
  ## Canonical Identity
@@ -54,17 +54,17 @@ Rules:
54
54
  - Do not include task-specific technical facts unless they clearly generalize into agent behavior.
55
55
  - Do not restate memories already covered in Existing Agent Memories.
56
56
  - If nothing genuinely new was learned, return an empty memories array.
57
- - Do not wrap the JSON in markdown fences.`},"readReflectionState",0,function(e){let t=c(e);if(!(0,n.existsSync)(t))return null;try{let e=JSON.parse((0,n.readFileSync)(t,"utf-8")),r="string"==typeof e?.lastProcessedJournalId&&e.lastProcessedJournalId.trim()?e.lastProcessedJournalId.trim():null,i="string"==typeof e?.updatedAt&&e.updatedAt.trim()?e.updatedAt:new Date().toISOString();return{lastProcessedJournalId:r,updatedAt:i}}catch{return null}},"readSelf",0,p,"writeReflectionState",0,function(e,t){let r=(0,i.join)(d,e);(0,n.existsSync)(r)||(0,n.mkdirSync)(r,{recursive:!0});let a=c(e)+".tmp";(0,n.writeFileSync)(a,JSON.stringify(t,null,2),"utf-8"),(0,n.renameSync)(a,c(e))},"writeSelf",0,function(e,t,r){let a=(0,i.join)(d,e);(0,n.existsSync)(a)||(0,n.mkdirSync)(a,{recursive:!0});let o=new Date().toISOString(),s=`---
57
+ - Do not wrap the JSON in markdown fences.`},"readReflectionState",0,function(e){let t=c(e);if(!(0,n.existsSync)(t))return null;try{let e=JSON.parse((0,n.readFileSync)(t,"utf-8")),r="string"==typeof e?.lastProcessedJournalId&&e.lastProcessedJournalId.trim()?e.lastProcessedJournalId.trim():null,i="string"==typeof e?.updatedAt&&e.updatedAt.trim()?e.updatedAt:new Date().toISOString();return{lastProcessedJournalId:r,updatedAt:i}}catch{return null}},"readSelf",0,T,"writeReflectionState",0,function(e,t){let r=(0,i.join)(d,e);(0,n.existsSync)(r)||(0,n.mkdirSync)(r,{recursive:!0});let a=c(e)+".tmp";(0,n.writeFileSync)(a,JSON.stringify(t,null,2),"utf-8"),(0,n.renameSync)(a,c(e))},"writeSelf",0,function(e,t,r){let a=(0,i.join)(d,e);(0,n.existsSync)(a)||(0,n.mkdirSync)(a,{recursive:!0});let o=new Date().toISOString(),s=`---
58
58
  version: ${r}
59
59
  derivedAt: ${o}
60
60
  ---
61
61
  ${t}
62
- `,c=E(e)+".tmp";(0,n.writeFileSync)(c,s,"utf-8"),(0,n.renameSync)(c,E(e)),l(e,"self-updated",{meta:{version:r}})}],855532);let T=(0,i.join)((0,a.homedir)(),".agx","agents");function u(e){return(0,i.join)(T,e)}function N(e){return(0,i.join)(u(e),"journal.jsonl")}function m(e){let t=N(e);return(0,n.existsSync)(t)?(0,n.readFileSync)(t,"utf-8").split("\n").filter(e=>e.trim()):[]}function _(e,t){let[r,n]=String(t||"").split(":");if(r!==e)return 0;let i=parseInt(n||"0",10);return Number.isFinite(i)?i:0}e.s(["appendJournal",0,function(e,t){let r;r=u(e),(0,n.existsSync)(r)||(0,n.mkdirSync)(r,{recursive:!0});let i=m(e),a=function(e,t){let r=0;for(let n of t)try{let t=JSON.parse(n),[i,a]=String(t.id||"").split(":");if(i!==e)continue;let o=parseInt(a||"0",10);Number.isFinite(o)&&o>r&&(r=o)}catch{}return r}(e,i),o=`${e}:${a+1}`,s={...t,id:t.id?.trim()||o},d=JSON.stringify(s)+"\n";return(0,n.appendFileSync)(N(e),d,"utf-8"),l(e,"reflection"===t.type?"reflection":"journal-post",{thread:s.thread,meta:{entryId:s.id}}),s},"readJournal",0,function(e,t){let r=m(e),n=[];for(let e of r)try{n.push(JSON.parse(e))}catch{}return n.reverse(),t?n.slice(0,t):n},"readJournalSince",0,function(e,t){let r=m(e),n=_(e,t),i=[];for(let t of r)try{let r=JSON.parse(t);_(e,r.id)>n&&i.push(r)}catch{}return i}],329905);let L=(0,i.join)((0,a.homedir)(),".agx","agents");function g(e,t){let r=(0,i.join)(L,e);(0,n.existsSync)(r)||(0,n.mkdirSync)(r,{recursive:!0});let a=t?.voice?.trim()||"conversational, concise, practical",o=t?.seed?.trim()||"I evolve through experience and collaboration.",s=(0,i.join)(r,"identity.json");(0,n.existsSync)(s)||(0,n.writeFileSync)(s,JSON.stringify({name:e,voice:a,seed:o},null,2)+"\n","utf-8");let l=(0,i.join)(r,"journal.jsonl"),d=(0,i.join)(r,"reactions.jsonl"),E=(0,i.join)(r,"comments.jsonl"),c=(0,i.join)(r,"activity.jsonl"),p=(0,i.join)(r,"self.md");(0,n.existsSync)(l)||(0,n.writeFileSync)(l,"","utf-8"),(0,n.existsSync)(d)||(0,n.writeFileSync)(d,"","utf-8"),(0,n.existsSync)(E)||(0,n.writeFileSync)(E,"","utf-8"),(0,n.existsSync)(c)||(0,n.writeFileSync)(c,"","utf-8"),(0,n.existsSync)(p)||(0,n.writeFileSync)(p,`---
62
+ `,c=E(e)+".tmp";(0,n.writeFileSync)(c,s,"utf-8"),(0,n.renameSync)(c,E(e)),l(e,"self-updated",{meta:{version:r}})}],855532);let p=(0,i.join)((0,a.homedir)(),".agx","agents");function u(e){return(0,i.join)(p,e)}function N(e){return(0,i.join)(u(e),"journal.jsonl")}function m(e){let t=N(e);return(0,n.existsSync)(t)?(0,n.readFileSync)(t,"utf-8").split("\n").filter(e=>e.trim()):[]}function _(e,t){let[r,n]=String(t||"").split(":");if(r!==e)return 0;let i=parseInt(n||"0",10);return Number.isFinite(i)?i:0}e.s(["appendJournal",0,function(e,t){let r;r=u(e),(0,n.existsSync)(r)||(0,n.mkdirSync)(r,{recursive:!0});let i=m(e),a=function(e,t){let r=0;for(let n of t)try{let t=JSON.parse(n),[i,a]=String(t.id||"").split(":");if(i!==e)continue;let o=parseInt(a||"0",10);Number.isFinite(o)&&o>r&&(r=o)}catch{}return r}(e,i),o=`${e}:${a+1}`,s={...t,id:t.id?.trim()||o},d=JSON.stringify(s)+"\n";return(0,n.appendFileSync)(N(e),d,"utf-8"),l(e,"reflection"===t.type?"reflection":"journal-post",{thread:s.thread,meta:{entryId:s.id}}),s},"readJournal",0,function(e,t){let r=m(e),n=[];for(let e of r)try{n.push(JSON.parse(e))}catch{}return n.reverse(),t?n.slice(0,t):n},"readJournalSince",0,function(e,t){let r=m(e),n=_(e,t),i=[];for(let t of r)try{let r=JSON.parse(t);_(e,r.id)>n&&i.push(r)}catch{}return i}],329905);let L=(0,i.join)((0,a.homedir)(),".agx","agents");function g(e,t){let r=(0,i.join)(L,e);(0,n.existsSync)(r)||(0,n.mkdirSync)(r,{recursive:!0});let a=t?.voice?.trim()||"conversational, concise, practical",o=t?.seed?.trim()||"I evolve through experience and collaboration.",s=(0,i.join)(r,"identity.json");(0,n.existsSync)(s)||(0,n.writeFileSync)(s,JSON.stringify({name:e,voice:a,seed:o},null,2)+"\n","utf-8");let l=(0,i.join)(r,"journal.jsonl"),d=(0,i.join)(r,"reactions.jsonl"),E=(0,i.join)(r,"comments.jsonl"),c=(0,i.join)(r,"activity.jsonl"),T=(0,i.join)(r,"self.md");(0,n.existsSync)(l)||(0,n.writeFileSync)(l,"","utf-8"),(0,n.existsSync)(d)||(0,n.writeFileSync)(d,"","utf-8"),(0,n.existsSync)(E)||(0,n.writeFileSync)(E,"","utf-8"),(0,n.existsSync)(c)||(0,n.writeFileSync)(c,"","utf-8"),(0,n.existsSync)(T)||(0,n.writeFileSync)(T,`---
63
63
  version: 0
64
64
  derivedAt: ${new Date().toISOString()}
65
65
  ---
66
66
  I am ${e}. ${o}
67
- `,"utf-8")}function f(e){let t=(0,i.join)(L,e,"identity.json");if(!(0,n.existsSync)(t))return null;try{return JSON.parse((0,n.readFileSync)(t,"utf-8"))}catch{return null}}function h(){return(0,n.existsSync)(L)?(0,n.readdirSync)(L,{withFileTypes:!0}).filter(e=>e.isDirectory()).map(e=>e.name):[]}e.s(["ensureAgent",0,g,"getTeamSelves",0,function(e){return h().filter(t=>t!==e).map(e=>p(e)).filter(e=>null!==e)},"listAgents",0,h,"readIdentity",0,f],224316);var O=e.x("node:sqlite",()=>require("node:sqlite"),!0);let S=process.env.AGX_GROUP_CHAT_DIR?.trim()||i.default.join(a.default.homedir(),".agx","group-chat"),A=i.default.join(S,"history.sqlite"),I=process.env.AGX_AGENTS_DIR?.trim()||i.default.join(a.default.homedir(),".agx","agents");function R(){let e,t,a=((0,n.mkdirSync)(S,{recursive:!0}),e=new O.DatabaseSync(A),(0,r.pragmaSet)(e,"journal_mode = WAL"),e.exec(`
67
+ `,"utf-8")}function f(e){let t=(0,i.join)(L,e,"identity.json");if(!(0,n.existsSync)(t))return null;try{return JSON.parse((0,n.readFileSync)(t,"utf-8"))}catch{return null}}function h(){return(0,n.existsSync)(L)?(0,n.readdirSync)(L,{withFileTypes:!0}).filter(e=>e.isDirectory()).map(e=>e.name):[]}e.s(["ensureAgent",0,g,"getTeamSelves",0,function(e){return h().filter(t=>t!==e).map(e=>T(e)).filter(e=>null!==e)},"listAgents",0,h,"readIdentity",0,f],224316);var O=e.x("node:sqlite",()=>require("node:sqlite"),!0);let S=process.env.AGX_GROUP_CHAT_DIR?.trim()||i.default.join(a.default.homedir(),".agx","group-chat"),A=i.default.join(S,"history.sqlite"),I=process.env.AGX_AGENTS_DIR?.trim()||i.default.join(a.default.homedir(),".agx","agents");function R(){let e,t,a=((0,n.mkdirSync)(S,{recursive:!0}),e=new O.DatabaseSync(A),(0,r.pragmaSet)(e,"journal_mode = WAL"),e.exec(`
68
68
  CREATE TABLE IF NOT EXISTS participants (
69
69
  id TEXT PRIMARY KEY,
70
70
  name TEXT NOT NULL,
@@ -76,15 +76,15 @@ I am ${e}. ${o}
76
76
  color TEXT NOT NULL,
77
77
  sort_order INTEGER NOT NULL DEFAULT 0
78
78
  );
79
- `),(t=(0,r.pragmaAll)(e,"table_info(participants)")).some(e=>"persona"===e.name)&&(e.exec("ALTER TABLE participants RENAME COLUMN persona TO identity"),e.exec("ALTER TABLE participants RENAME COLUMN persona_file TO identity_file")),t.some(e=>"identity_file"===e.name)||t.some(e=>"persona_file"===e.name)||e.exec("ALTER TABLE participants ADD COLUMN identity_file TEXT"),t.some(e=>"skills_json"===e.name)||e.exec("ALTER TABLE participants ADD COLUMN skills_json TEXT"),t.some(e=>"variables_json"===e.name)||e.exec("ALTER TABLE participants ADD COLUMN variables_json TEXT"),t.some(e=>"sort_order"===e.name)||(e.exec("ALTER TABLE participants ADD COLUMN sort_order INTEGER NOT NULL DEFAULT 0"),e.exec("UPDATE participants SET sort_order = rowid")),!function(e){let t=e.prepare("SELECT id, name, provider FROM participants").all();if(0===t.length)return;let a=new Set(t.map(e=>e.id)),o=new Map(t.map(e=>[e.id,e.id])),s=[];for(let e of t){let t=(e.name||"").trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/--+/g,"-");if(!t||e.id===t||e.id!==e.provider)continue;a.delete(e.id);let r=function(e,t){if(!t.has(e))return e;let r=2,n=`${e}-${r}`;for(;t.has(n);)r+=1,n=`${e}-${r}`;return n}(t,a);a.add(r),o.set(e.id,r),s.push({from:e.id,to:r,name:e.name})}let l=t.map(e=>({id:o.get(e.id)||e.id,provider:e.provider})),d=new Set(l.map(e=>e.id)),E=new Map;for(let e of l){let t=e.provider.trim();if(!t)continue;let r=E.get(t)||new Set;r.add(e.id),E.set(t,r)}let c=[];for(let[e,t]of E){if(1!==t.size)continue;let[r]=Array.from(t);r&&e!==r&&(d.has(e)||c.push({from:e,to:r}))}if(0===s.length&&0===c.length)return;let p=new Map;for(let e of s)p.set(e.from,e.to);for(let e of c)p.set(e.from,e.to);let T=Array.from(p.entries()).map(([e,t])=>({from:e,to:t})),u=new Set(e.prepare("SELECT name FROM sqlite_master WHERE type = 'table'").all().map(e=>e.name));for(let t of((0,r.transactionFn)(e,(t,r)=>{let n=e.prepare("UPDATE participants SET id = ? WHERE id = ?"),i=u.has("messages")?e.prepare("UPDATE messages SET participant_id = ? WHERE participant_id = ?"):null,a=u.has("agent_processes")?e.prepare("UPDATE agent_processes SET agent_id = ? WHERE agent_id = ?"):null,o=u.has("message_reactions")?e.prepare("UPDATE message_reactions SET participant_id = ? WHERE participant_id = ?"):null;for(let e of t)n.run(e.to,e.from);for(let e of r)i?.run(e.to,e.from),a?.run(e.to,e.from),o?.run(e.to,e.from)})(s.map(e=>({from:e.from,to:e.to})),T),s))!function(e,t,r){if(!e||!t||e===t)return;let a=i.default.join(I,e),o=i.default.join(I,t);if(!(0,n.existsSync)(a)||(0,n.existsSync)(o))return;(0,n.mkdirSync)(I,{recursive:!0}),(0,n.renameSync)(a,o);let s=i.default.join(o,"identity.json");if((0,n.existsSync)(s))try{let e={...JSON.parse((0,n.readFileSync)(s,"utf8")),name:"string"==typeof r&&r.trim()?r.trim():t};(0,n.writeFileSync)(s,`${JSON.stringify(e,null,2)}
80
- `,"utf8")}catch{}}(t.from,t.to,t.name)}(e),e);try{return a.prepare("SELECT id, name, provider, model, identity, identity_file, skills_json, variables_json, color, sort_order FROM participants ORDER BY sort_order ASC, rowid ASC").all().map(e=>({id:e.id,name:e.name,provider:e.provider,model:e.model,color:e.color,...e.identity?{identity:e.identity}:{},...e.identity_file?{identityFile:e.identity_file}:{},...e.variables_json?(()=>{try{let t=JSON.parse(e.variables_json);if(t&&"object"==typeof t&&!Array.isArray(t))return{variables:t};return{}}catch{return{}}})():{},...e.skills_json?{skills:(()=>{try{let t=JSON.parse(e.skills_json);if(!Array.isArray(t))return[];return t.map(e=>"string"==typeof e?{file:e,condition:""}:e)}catch{return[]}})()}:{}}))}finally{a.close()}}var y=e.i(610613);let C="legacy_workspaces_to_projects_v1";function U(e,t){return!!e.prepare("SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = ? LIMIT 1").get(t)}function j(e,t){return U(e,t)?new Set((0,r.pragmaAll)(e,`table_info(${t})`).map(e=>e.name)):new Set}function D(e){if(!e)throw Error("getWorkspaceTeamTableState requires an explicit database handle");let t=j(e,"teams"),r=j(e,"team_agents"),n=U(e,"team_workspaces"),i=t.has("project_id")&&t.has("template_id")&&t.has("metadata")&&!t.has("user_id"),a=t.has("user_id")&&t.has("is_default")&&!t.has("project_id"),o=r.has("team_id")&&r.has("agent_id")&&r.has("role_key");return{legacyTeams:a,legacyTeamAgents:r.has("team_id")&&r.has("agent_id")&&r.has("routing_order")&&!r.has("role_key"),legacyTeamWorkspaces:n,projectScopedTeams:i,projectScopedTeamAgents:o}}function X(e){let t=D(e);return t.legacyTeams||t.legacyTeamAgents||t.legacyTeamWorkspaces}function b(e){return e.legacyTeams&&e.legacyTeamAgents&&e.legacyTeamWorkspaces}function F(e){e.exec(`
79
+ `),(t=(0,r.pragmaAll)(e,"table_info(participants)")).some(e=>"persona"===e.name)&&(e.exec("ALTER TABLE participants RENAME COLUMN persona TO identity"),e.exec("ALTER TABLE participants RENAME COLUMN persona_file TO identity_file")),t.some(e=>"identity_file"===e.name)||t.some(e=>"persona_file"===e.name)||e.exec("ALTER TABLE participants ADD COLUMN identity_file TEXT"),t.some(e=>"skills_json"===e.name)||e.exec("ALTER TABLE participants ADD COLUMN skills_json TEXT"),t.some(e=>"variables_json"===e.name)||e.exec("ALTER TABLE participants ADD COLUMN variables_json TEXT"),t.some(e=>"sort_order"===e.name)||(e.exec("ALTER TABLE participants ADD COLUMN sort_order INTEGER NOT NULL DEFAULT 0"),e.exec("UPDATE participants SET sort_order = rowid")),!function(e){let t=e.prepare("SELECT id, name, provider FROM participants").all();if(0===t.length)return;let a=new Set(t.map(e=>e.id)),o=new Map(t.map(e=>[e.id,e.id])),s=[];for(let e of t){let t=(e.name||"").trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/--+/g,"-");if(!t||e.id===t||e.id!==e.provider)continue;a.delete(e.id);let r=function(e,t){if(!t.has(e))return e;let r=2,n=`${e}-${r}`;for(;t.has(n);)r+=1,n=`${e}-${r}`;return n}(t,a);a.add(r),o.set(e.id,r),s.push({from:e.id,to:r,name:e.name})}let l=t.map(e=>({id:o.get(e.id)||e.id,provider:e.provider})),d=new Set(l.map(e=>e.id)),E=new Map;for(let e of l){let t=e.provider.trim();if(!t)continue;let r=E.get(t)||new Set;r.add(e.id),E.set(t,r)}let c=[];for(let[e,t]of E){if(1!==t.size)continue;let[r]=Array.from(t);r&&e!==r&&(d.has(e)||c.push({from:e,to:r}))}if(0===s.length&&0===c.length)return;let T=new Map;for(let e of s)T.set(e.from,e.to);for(let e of c)T.set(e.from,e.to);let p=Array.from(T.entries()).map(([e,t])=>({from:e,to:t})),u=new Set(e.prepare("SELECT name FROM sqlite_master WHERE type = 'table'").all().map(e=>e.name));for(let t of((0,r.transactionFn)(e,(t,r)=>{let n=e.prepare("UPDATE participants SET id = ? WHERE id = ?"),i=u.has("messages")?e.prepare("UPDATE messages SET participant_id = ? WHERE participant_id = ?"):null,a=u.has("agent_processes")?e.prepare("UPDATE agent_processes SET agent_id = ? WHERE agent_id = ?"):null,o=u.has("message_reactions")?e.prepare("UPDATE message_reactions SET participant_id = ? WHERE participant_id = ?"):null;for(let e of t)n.run(e.to,e.from);for(let e of r)i?.run(e.to,e.from),a?.run(e.to,e.from),o?.run(e.to,e.from)})(s.map(e=>({from:e.from,to:e.to})),p),s))!function(e,t,r){if(!e||!t||e===t)return;let a=i.default.join(I,e),o=i.default.join(I,t);if(!(0,n.existsSync)(a)||(0,n.existsSync)(o))return;(0,n.mkdirSync)(I,{recursive:!0}),(0,n.renameSync)(a,o);let s=i.default.join(o,"identity.json");if((0,n.existsSync)(s))try{let e={...JSON.parse((0,n.readFileSync)(s,"utf8")),name:"string"==typeof r&&r.trim()?r.trim():t};(0,n.writeFileSync)(s,`${JSON.stringify(e,null,2)}
80
+ `,"utf8")}catch{}}(t.from,t.to,t.name)}(e),e);try{return a.prepare("SELECT id, name, provider, model, identity, identity_file, skills_json, variables_json, color, sort_order FROM participants ORDER BY sort_order ASC, rowid ASC").all().map(e=>({id:e.id,name:e.name,provider:e.provider,model:e.model,color:e.color,...e.identity?{identity:e.identity}:{},...e.identity_file?{identityFile:e.identity_file}:{},...e.variables_json?(()=>{try{let t=JSON.parse(e.variables_json);if(t&&"object"==typeof t&&!Array.isArray(t))return{variables:t};return{}}catch{return{}}})():{},...e.skills_json?{skills:(()=>{try{let t=JSON.parse(e.skills_json);if(!Array.isArray(t))return[];return t.map(e=>"string"==typeof e?{file:e,condition:""}:e)}catch{return[]}})()}:{}}))}finally{a.close()}}var C=e.i(610613);let y="legacy_workspaces_to_projects_v1";function U(e,t){return!!e.prepare("SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = ? LIMIT 1").get(t)}function j(e,t){return U(e,t)?new Set((0,r.pragmaAll)(e,`table_info(${t})`).map(e=>e.name)):new Set}function D(e){if(!e)throw Error("getWorkspaceTeamTableState requires an explicit database handle");let t=j(e,"teams"),r=j(e,"team_agents"),n=U(e,"team_workspaces"),i=t.has("project_id")&&t.has("template_id")&&t.has("metadata")&&!t.has("user_id"),a=t.has("user_id")&&t.has("is_default")&&!t.has("project_id"),o=r.has("team_id")&&r.has("agent_id")&&r.has("role_key");return{legacyTeams:a,legacyTeamAgents:r.has("team_id")&&r.has("agent_id")&&r.has("routing_order")&&!r.has("role_key"),legacyTeamWorkspaces:n,projectScopedTeams:i,projectScopedTeamAgents:o}}function X(e){let t=D(e);return t.legacyTeams||t.legacyTeamAgents||t.legacyTeamWorkspaces}function b(e){return e.legacyTeams&&e.legacyTeamAgents&&e.legacyTeamWorkspaces}function F(e){e.exec(`
81
81
  CREATE TABLE IF NOT EXISTS app_migrations (
82
82
  key TEXT PRIMARY KEY,
83
83
  applied_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ','now')),
84
84
  metadata JSON
85
85
  );
86
- `)}let x=process.env.AGX_DATA_DIR||i.default.join(a.default.homedir(),".agx");class w{expr;constructor(e){this.expr=e}}let k=null;function v(){if(k)return k;let e=process.env.SQLITE_DB_PATH||i.default.join(x,"agx-board.db");k=new t.DatabaseSync(e);let a=(0,y.validateSQLiteEnvironment)(k,e);if(a.length>0){let e=a.map(e=>` - ${e.message}${e.fix?` (fix: ${e.fix})`:""}`);throw Error(`SQLite startup validation failed:
87
- ${e.join("\n")}`)}(function(e){let t=i.default.join(process.cwd(),"db","sqlite","001_agx_board_schema.sql");if(!n.default.existsSync(t))return console.warn(`[sqlite] DDL not found at ${t}, skipping schema init`);let r=n.default.readFileSync(t,"utf-8");e.exec(r)})(k),function(e){if(e.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='execution_graphs'").all().length>0&&((0,r.pragmaAll)(e,"table_info(execution_graphs)").some(e=>"schedule"===e.name)||e.exec("ALTER TABLE execution_graphs ADD COLUMN schedule JSON")),e.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='projects'").all().length>0&&((0,r.pragmaAll)(e,"table_info(projects)").some(e=>"archived_at"===e.name)||e.exec("ALTER TABLE projects ADD COLUMN archived_at TEXT DEFAULT NULL")),e.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='project_memory'").all().length>0&&((0,r.pragmaAll)(e,"table_info(project_memory)").some(e=>"producer"===e.name)||e.exec("ALTER TABLE project_memory ADD COLUMN producer TEXT NOT NULL DEFAULT 'human' CHECK(producer IN ('human', 'system'))"),e.exec("CREATE INDEX IF NOT EXISTS idx_project_memory_producer ON project_memory (producer)")),e.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='agents'").all().length>0){let t=new Set((0,r.pragmaAll)(e,"table_info(agents)").map(e=>e.name));t.has("voice")||e.exec("ALTER TABLE agents ADD COLUMN voice TEXT"),t.has("seed")||e.exec("ALTER TABLE agents ADD COLUMN seed TEXT"),t.has("model")||e.exec("ALTER TABLE agents ADD COLUMN model TEXT"),t.has("provider")||e.exec("ALTER TABLE agents ADD COLUMN provider TEXT"),t.has("color")||e.exec("ALTER TABLE agents ADD COLUMN color TEXT"),t.has("title")||e.exec("ALTER TABLE agents ADD COLUMN title TEXT")}e.exec(`
86
+ `)}let x=process.env.AGX_DATA_DIR||i.default.join(a.default.homedir(),".agx");class w{expr;constructor(e){this.expr=e}}let k=null;function M(){if(k)return k;let e=process.env.SQLITE_DB_PATH||i.default.join(x,"agx-board.db");k=new t.DatabaseSync(e);let a=(0,C.validateSQLiteEnvironment)(k,e);if(a.length>0){let e=a.map(e=>` - ${e.message}${e.fix?` (fix: ${e.fix})`:""}`);throw Error(`SQLite startup validation failed:
87
+ ${e.join("\n")}`)}(function(e){let t=i.default.join(process.cwd(),"db","sqlite","001_agx_board_schema.sql");if(!n.default.existsSync(t))return console.warn(`[sqlite] DDL not found at ${t}, skipping schema init`);let r=n.default.readFileSync(t,"utf-8");e.exec(r)})(k),function(e){if(e.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='execution_graphs'").all().length>0&&((0,r.pragmaAll)(e,"table_info(execution_graphs)").some(e=>"schedule"===e.name)||e.exec("ALTER TABLE execution_graphs ADD COLUMN schedule JSON")),e.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='projects'").all().length>0&&((0,r.pragmaAll)(e,"table_info(projects)").some(e=>"archived_at"===e.name)||e.exec("ALTER TABLE projects ADD COLUMN archived_at TEXT DEFAULT NULL")),e.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='project_memory'").all().length>0&&((0,r.pragmaAll)(e,"table_info(project_memory)").some(e=>"producer"===e.name)||e.exec("ALTER TABLE project_memory ADD COLUMN producer TEXT NOT NULL DEFAULT 'human' CHECK(producer IN ('human', 'system'))"),e.exec("CREATE INDEX IF NOT EXISTS idx_project_memory_producer ON project_memory (producer)")),e.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='agents'").all().length>0){let t=new Set((0,r.pragmaAll)(e,"table_info(agents)").map(e=>e.name));t.has("voice")||e.exec("ALTER TABLE agents ADD COLUMN voice TEXT"),t.has("seed")||e.exec("ALTER TABLE agents ADD COLUMN seed TEXT"),t.has("model")||e.exec("ALTER TABLE agents ADD COLUMN model TEXT"),t.has("provider")||e.exec("ALTER TABLE agents ADD COLUMN provider TEXT"),t.has("color")||e.exec("ALTER TABLE agents ADD COLUMN color TEXT"),t.has("title")&&!t.has("role")?e.exec("ALTER TABLE agents RENAME COLUMN title TO role"):t.has("role")||e.exec("ALTER TABLE agents ADD COLUMN role TEXT")}e.exec(`
88
88
  CREATE TABLE IF NOT EXISTS agent_skills (
89
89
  agent_id TEXT NOT NULL REFERENCES agents(id) ON DELETE CASCADE,
90
90
  file TEXT NOT NULL,
@@ -120,7 +120,7 @@ ${e.join("\n")}`)}(function(e){let t=i.default.join(process.cwd(),"db","sqlite",
120
120
  PRIMARY KEY (agent_id, repo, skill_id)
121
121
  );
122
122
  CREATE INDEX IF NOT EXISTS idx_agent_skill_bindings_agent ON agent_skill_bindings (agent_id, created_at);
123
- `),M(e),e.exec(`
123
+ `),v(e),e.exec(`
124
124
  CREATE TABLE IF NOT EXISTS project_agents (
125
125
  project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
126
126
  agent_id TEXT NOT NULL REFERENCES agents(id) ON DELETE CASCADE,
@@ -299,7 +299,7 @@ ${e.join("\n")}`)}(function(e){let t=i.default.join(process.cwd(),"db","sqlite",
299
299
  END`);for(let e of h()){let r=f(e);t.run(e,o.id,r?.name?.trim()||e,r?.voice?.trim()||null,r?.seed?.trim()||null)}})(e),function(e){let t=R(),r=new Set(e.prepare("SELECT id FROM agents").all().map(e=>e.id)),n=e.prepare(`INSERT INTO agent_skills (agent_id, file, condition)
300
300
  VALUES (?, ?, ?)
301
301
  ON CONFLICT(agent_id, file) DO UPDATE SET
302
- condition = excluded.condition`);for(let e of t)if(r.has(e.id))for(let t of e.skills??[]){let r=t.file?.trim();r&&n.run(e.id,r,t.condition?.trim()||null)}}(e),function(e){for(let t of e.prepare("SELECT id, voice, seed FROM agents").all())g(t.id,{voice:t.voice??void 0,seed:t.seed??void 0})}(e)}(k);let s=function(e){var t;if(!e)throw Error("autoMigrateLegacyWorkspacesToProjects requires an explicit database handle");let n=D(e);if(!X(e)||!b(n)||(F(e),e.prepare("SELECT 1 FROM app_migrations WHERE key = ? LIMIT 1").get(C)))return null;let i=function(e){let t;if(!e)throw Error("migrateLegacyWorkspacesToProjects requires an explicit database handle");let n={usersProcessed:0,agentsImported:0,agentSkillsMigrated:0,projectsCreated:0,projectsMatched:0,projectAgentsLinked:0,projectThreadsLinked:0,projectVariablesMigrated:0,remappedThreadLinks:0,warnings:[],projectMappings:[]},i=D(e);if(!X(e))return n.warnings.push("No legacy workspace/team tables found."),n;if(!b(i))return n.warnings.push("Legacy workspace/team schema is incomplete; refusing to auto-migrate partial tables."),n;let a=R(),s=new Map(a.map(e=>[e.id,e])),{teams:l,teamAgents:d,teamWorkspaces:E}=(t=e.prepare("SELECT id, name, user_id, COALESCE(is_default, 0) AS is_default FROM teams ORDER BY name ASC").all(),{teams:t,teamAgents:e.prepare("SELECT team_id, agent_id, routing_order FROM team_agents ORDER BY team_id, routing_order ASC").all(),teamWorkspaces:e.prepare("SELECT team_id, thread_id FROM team_workspaces ORDER BY team_id, thread_id ASC").all()}),c=new Map;for(let e of l){let t=c.get(e.user_id)??[];t.push(e),c.set(e.user_id,t)}let p=new Map;for(let e of d){let t=p.get(e.team_id)??[];t.push(e),p.set(e.team_id,t)}let T=new Map;for(let e of E){let t=T.get(e.team_id)??[];t.push(e.thread_id),T.set(e.team_id,t)}return(0,r.transaction)(e,()=>{for(let[t,r]of c.entries()){n.usersProcessed++;let i=t||o.id;!function(e,t,r,n){let i=e.prepare(`INSERT INTO agents (id, user_id, name, style, description, model, provider, color, voice, seed)
302
+ condition = excluded.condition`);for(let e of t)if(r.has(e.id))for(let t of e.skills??[]){let r=t.file?.trim();r&&n.run(e.id,r,t.condition?.trim()||null)}}(e),function(e){for(let t of e.prepare("SELECT id, voice, seed FROM agents").all())g(t.id,{voice:t.voice??void 0,seed:t.seed??void 0})}(e)}(k);let s=function(e){var t;if(!e)throw Error("autoMigrateLegacyWorkspacesToProjects requires an explicit database handle");let n=D(e);if(!X(e)||!b(n)||(F(e),e.prepare("SELECT 1 FROM app_migrations WHERE key = ? LIMIT 1").get(y)))return null;let i=function(e){let t;if(!e)throw Error("migrateLegacyWorkspacesToProjects requires an explicit database handle");let n={usersProcessed:0,agentsImported:0,agentSkillsMigrated:0,projectsCreated:0,projectsMatched:0,projectAgentsLinked:0,projectThreadsLinked:0,projectVariablesMigrated:0,remappedThreadLinks:0,warnings:[],projectMappings:[]},i=D(e);if(!X(e))return n.warnings.push("No legacy workspace/team tables found."),n;if(!b(i))return n.warnings.push("Legacy workspace/team schema is incomplete; refusing to auto-migrate partial tables."),n;let a=R(),s=new Map(a.map(e=>[e.id,e])),{teams:l,teamAgents:d,teamWorkspaces:E}=(t=e.prepare("SELECT id, name, user_id, COALESCE(is_default, 0) AS is_default FROM teams ORDER BY name ASC").all(),{teams:t,teamAgents:e.prepare("SELECT team_id, agent_id, routing_order FROM team_agents ORDER BY team_id, routing_order ASC").all(),teamWorkspaces:e.prepare("SELECT team_id, thread_id FROM team_workspaces ORDER BY team_id, thread_id ASC").all()}),c=new Map;for(let e of l){let t=c.get(e.user_id)??[];t.push(e),c.set(e.user_id,t)}let T=new Map;for(let e of d){let t=T.get(e.team_id)??[];t.push(e),T.set(e.team_id,t)}let p=new Map;for(let e of E){let t=p.get(e.team_id)??[];t.push(e.thread_id),p.set(e.team_id,t)}return(0,r.transaction)(e,()=>{for(let[t,r]of c.entries()){n.usersProcessed++;let i=t||o.id;!function(e,t,r,n){let i=e.prepare(`INSERT INTO agents (id, user_id, name, style, description, model, provider, color, voice, seed)
303
303
  VALUES (?, ?, ?, 'balanced', ?, ?, ?, ?, NULL, NULL)
304
304
  ON CONFLICT(id) DO UPDATE SET
305
305
  user_id = excluded.user_id,
@@ -311,9 +311,9 @@ ${e.join("\n")}`)}(function(e){let t=i.default.join(process.cwd(),"db","sqlite",
311
311
  updated_at = strftime('%Y-%m-%dT%H:%M:%fZ','now')`),a=e.prepare("SELECT 1 FROM agents WHERE id = ?");for(let e of r){let r=!!a.get(e.id);i.run(e.id,t,e.name,e.identity??null,e.model??null,e.provider??"claude",e.color??"#6B7280"),!r&&n.agentsImported++}}(e,i,a,n),function(e,t,r){let n=e.prepare(`INSERT INTO agent_skills (agent_id, file, condition)
312
312
  VALUES (?, ?, ?)
313
313
  ON CONFLICT(agent_id, file) DO UPDATE SET
314
- condition = excluded.condition`);for(let i of t)for(let t of i.skills??[]){let a=t.file?.trim();if(!a)continue;let o=e.prepare("SELECT condition FROM agent_skills WHERE agent_id = ? AND file = ?").get(i.id,a),s=t.condition||null;n.run(i.id,a,s),(!o||o.condition!==s)&&r.agentSkillsMigrated++}}(e,a,n);let l=new Map,d=new Map;for(let t of r){let r=T.get(t.id)??[],a=function(e,t,r,n){var i;let a,o=r.is_default?"default":r.name.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/--+/g,"-"),s=e.prepare("SELECT id, name FROM projects WHERE user_id = ? AND slug = ? LIMIT 1").get(t,o);if(s)return n.projectsMatched++,s;let l=r.is_default?"Default Project":(a=(i=r.name).trim())?a.split(/\s+/).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "):i,d=e.prepare(`INSERT INTO projects (user_id, name, slug, description)
314
+ condition = excluded.condition`);for(let i of t)for(let t of i.skills??[]){let a=t.file?.trim();if(!a)continue;let o=e.prepare("SELECT condition FROM agent_skills WHERE agent_id = ? AND file = ?").get(i.id,a),s=t.condition||null;n.run(i.id,a,s),(!o||o.condition!==s)&&r.agentSkillsMigrated++}}(e,a,n);let l=new Map,d=new Map;for(let t of r){let r=p.get(t.id)??[],a=function(e,t,r,n){var i;let a,o=r.is_default?"default":r.name.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/--+/g,"-"),s=e.prepare("SELECT id, name FROM projects WHERE user_id = ? AND slug = ? LIMIT 1").get(t,o);if(s)return n.projectsMatched++,s;let l=r.is_default?"Default Project":(a=(i=r.name).trim())?a.split(/\s+/).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "):i,d=e.prepare(`INSERT INTO projects (user_id, name, slug, description)
315
315
  VALUES (?, ?, ?, ?)
316
- RETURNING id, name`).get(t,l,o||`project-${r.id.slice(0,8)}`,"Migrated from legacy workspace/team structure");return n.projectsCreated++,d}(e,i,t,n),o=p.get(t.id)??[];l.set(a.id,o),d.set(a.id,r),n.projectMappings.push({teamId:t.id,teamName:t.name,projectId:a.id,projectName:a.name,threadIds:r})}let E=e.prepare(`INSERT INTO project_agents (project_id, agent_id, routing_order)
316
+ RETURNING id, name`).get(t,l,o||`project-${r.id.slice(0,8)}`,"Migrated from legacy workspace/team structure");return n.projectsCreated++,d}(e,i,t,n),o=T.get(t.id)??[];l.set(a.id,o),d.set(a.id,r),n.projectMappings.push({teamId:t.id,teamName:t.name,projectId:a.id,projectName:a.name,threadIds:r})}let E=e.prepare(`INSERT INTO project_agents (project_id, agent_id, routing_order)
317
317
  VALUES (?, ?, ?)
318
318
  ON CONFLICT(project_id, agent_id) DO UPDATE SET
319
319
  routing_order = excluded.routing_order`),c=e.prepare("DELETE FROM project_threads WHERE thread_id = ? AND project_id <> ?"),u=e.prepare(`INSERT OR IGNORE INTO project_threads (project_id, thread_id)
@@ -323,7 +323,7 @@ ${e.join("\n")}`)}(function(e){let t=i.default.join(process.cwd(),"db","sqlite",
323
323
  VALUES (?, json(?))
324
324
  ON CONFLICT(key) DO UPDATE SET
325
325
  applied_at = strftime('%Y-%m-%dT%H:%M:%fZ','now'),
326
- metadata = excluded.metadata`).run(C,JSON.stringify(t)),i}(k);return s&&console.log(`[sqlite] auto-migrated legacy workspaces to projects: ${JSON.stringify({usersProcessed:s.usersProcessed,projectsCreated:s.projectsCreated,projectsMatched:s.projectsMatched,projectAgentsLinked:s.projectAgentsLinked,projectThreadsLinked:s.projectThreadsLinked})}`),function(e){if(!e.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='app_migrations'").get()||!e.prepare("SELECT 1 FROM app_migrations WHERE key = 'legacy_workspaces_to_projects_v1' LIMIT 1").get())return;let t=D(e),r=[];t.legacyTeamWorkspaces&&r.push("team_workspaces"),t.legacyTeamAgents&&r.push("team_agents"),t.legacyTeams&&r.push("teams"),0!==r.length&&(e.exec(r.map(e=>`DROP TABLE IF EXISTS ${e};`).join("\n")),console.log(`[sqlite] dropped legacy team tables: ${r.join(", ")}`))}(k),M(k),k}function M(e){e.exec(`
326
+ metadata = excluded.metadata`).run(y,JSON.stringify(t)),i}(k);return s&&console.log(`[sqlite] auto-migrated legacy workspaces to projects: ${JSON.stringify({usersProcessed:s.usersProcessed,projectsCreated:s.projectsCreated,projectsMatched:s.projectsMatched,projectAgentsLinked:s.projectAgentsLinked,projectThreadsLinked:s.projectThreadsLinked})}`),function(e){if(!e.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='app_migrations'").get()||!e.prepare("SELECT 1 FROM app_migrations WHERE key = 'legacy_workspaces_to_projects_v1' LIMIT 1").get())return;let t=D(e),r=[];t.legacyTeamWorkspaces&&r.push("team_workspaces"),t.legacyTeamAgents&&r.push("team_agents"),t.legacyTeams&&r.push("teams"),0!==r.length&&(e.exec(r.map(e=>`DROP TABLE IF EXISTS ${e};`).join("\n")),console.log(`[sqlite] dropped legacy team tables: ${r.join(", ")}`))}(k),v(k),k}function v(e){e.exec(`
327
327
  CREATE TABLE IF NOT EXISTS teams (
328
328
  id TEXT NOT NULL PRIMARY KEY,
329
329
  project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
@@ -350,12 +350,12 @@ ${e.join("\n")}`)}(function(e){let t=i.default.join(process.cwd(),"db","sqlite",
350
350
  BEGIN
351
351
  UPDATE teams SET updated_at = strftime('%Y-%m-%dT%H:%M:%fZ','now') WHERE rowid = NEW.rowid;
352
352
  END;
353
- `)}let $=new Set(["definition","depends_on","input","metadata","models","open_blockers","output","payload","run_index","stage_decisions","swarm_models"]);function H(e){return void 0===e?null:e instanceof Date?e.toISOString():e&&"object"==typeof e?JSON.stringify(e):e}function Y(e,t){return null==t?null:t instanceof Date?t.toISOString():$.has(e)?JSON.stringify(t):H(t)}function B(e){let t=(e||"*").trim();if(!t||"*"===t)return{columns:["*"],includeProjectRepos:!1};let r=t.includes("project_repos(*)"),n=t.replace(/project_repos\(\*\)/g,"").split(",").map(e=>e.trim()).filter(Boolean);return 0===n.length?{columns:["*"],includeProjectRepos:r}:{columns:n,includeProjectRepos:r}}class P{table;operation="select";filters=[];orderSpecs=[];limitValue=null;selectColumns="*";returningColumns=null;singleMode="none";payload=null;upsertOptions=null;constructor(e){this.table=e}select(e="*"){return"select"===this.operation?this.selectColumns=e:this.returningColumns=e||"*",this}insert(e){return this.operation="insert",this.payload=e,this}update(e){return this.operation="update",this.payload=e,this}delete(){return this.operation="delete",this}upsert(e,t){return this.operation="upsert",this.payload=e,this.upsertOptions=t||{},this}eq(e,t){return this.filters.push({op:"eq",column:e,value:t}),this}neq(e,t){return this.filters.push({op:"neq",column:e,value:t}),this}gt(e,t){return this.filters.push({op:"gt",column:e,value:t}),this}gte(e,t){return this.filters.push({op:"gte",column:e,value:t}),this}lt(e,t){return this.filters.push({op:"lt",column:e,value:t}),this}lte(e,t){return this.filters.push({op:"lte",column:e,value:t}),this}is(e,t){return this.filters.push({op:"is",column:e,value:t}),this}in(e,t){return this.filters.push({op:"in",column:e,value:t||[]}),this}contains(e,t){return this.filters.push({op:"contains",column:e,value:t}),this}or(e){return this.filters.push({op:"or",expression:e}),this}order(e,t){return this.orderSpecs.push({column:e,...t||{}}),this}limit(e){return this.limitValue=e,this}single(){return this.singleMode="single",this.execute()}maybeSingle(){return this.singleMode="maybeSingle",this.execute()}then(e,t){return this.execute().then(e,t)}buildWhere(e,t){for(let r of this.filters){if("or"===r.op){let n=r.expression.split(",").map(e=>e.trim()).filter(Boolean).map(e=>{var r;let[n,i,...a]=e.split("."),o="true"===(r=a.join("."))||"false"!==r&&("null"===r?null:r);return"eq"===i?(t.push(H(o)),`${n} = ?`):"neq"===i?(t.push(H(o)),`${n} <> ?`):"is"===i?null===o?`${n} IS NULL`:(t.push(H(o)),`${n} IS ?`):"ilike"===i||"like"===i?(t.push(H(o)),`${n} LIKE ?`):"1=1"});n.length>0&&e.push(`(${n.join(" OR ")})`);continue}if("eq"===r.op)t.push(H(r.value)),e.push(`${r.column} = ?`);else if("neq"===r.op)t.push(H(r.value)),e.push(`${r.column} <> ?`);else if("gt"===r.op)t.push(H(r.value)),e.push(`${r.column} > ?`);else if("gte"===r.op)t.push(H(r.value)),e.push(`${r.column} >= ?`);else if("lt"===r.op)t.push(H(r.value)),e.push(`${r.column} < ?`);else if("lte"===r.op)t.push(H(r.value)),e.push(`${r.column} <= ?`);else if("is"===r.op)null===r.value?e.push(`${r.column} IS NULL`):(t.push(H(r.value)),e.push(`${r.column} IS ?`));else if("contains"===r.op){let n=(r.value||[]).map(H);if(0===n.length)e.push("1=1");else{let i=n.map(()=>"?").join(", ");t.push(...n),e.push(`(SELECT COUNT(*) FROM json_each(${r.column}) WHERE json_each.value IN (${i})) = ${n.length}`)}}else if("in"===r.op)if(r.value&&0!==r.value.length){let n=(r.value||[]).map(H),i=n.map(()=>"?").join(", ");t.push(...n),e.push(`${r.column} IN (${i})`)}else e.push("1=0")}}executeSelect(){try{let e=v(),{columns:t,includeProjectRepos:r}=B(this.selectColumns),n=[],i=[];this.buildWhere(i,n);let a=`SELECT ${t.join(", ")} FROM ${this.table}`;if(i.length>0&&(a+=` WHERE ${i.join(" AND ")}`),this.orderSpecs.length>0){let e=this.orderSpecs.map(e=>{let t=!1===e.ascending?"DESC":"ASC";return!0===e.nullsFirst?`CASE WHEN ${e.column} IS NULL THEN 0 ELSE 1 END, ${e.column} ${t}`:!1===e.nullsFirst?`CASE WHEN ${e.column} IS NULL THEN 1 ELSE 0 END, ${e.column} ${t}`:`${e.column} ${t}`}).join(", ");a+=` ORDER BY ${e}`}"number"==typeof this.limitValue&&(n.push(this.limitValue),a+=" LIMIT ?");let o=e.prepare(a).all(...n);if(o=o.map(q),r&&"projects"===this.table&&o.length>0){let t=o.map(e=>e.id).filter(Boolean);if(t.length>0){let r=t.map(()=>"?").join(", "),n=e.prepare(`SELECT * FROM project_repos WHERE project_id IN (${r})`).all(...t),i=new Map;for(let e of n){let t=i.get(e.project_id)||[];t.push(e),i.set(e.project_id,t)}o=o.map(e=>({...e,project_repos:i.get(e.id)||[]}))}}if("single"===this.singleMode){if(0===o.length)return{data:null,error:{message:"No rows",code:"PGRST116"}};return{data:o[0],error:null}}if("maybeSingle"===this.singleMode)return{data:o[0]||null,error:null};return{data:o,error:null}}catch(e){return{data:null,error:e}}}executeInsertOrUpsert(){try{let e,t=v(),r=Array.isArray(this.payload)?this.payload:[this.payload];if(!r.length)return{data:[],error:null};let n=Array.from(r.reduce((e,t)=>{for(let r of Object.keys(t||{}))e.add(r);return e},new Set)),i=[],a=r.map(e=>{let t=n.map(t=>(i.push(Y(t,e[t])),"?"));return`(${t.join(", ")})`}),o=`INSERT INTO ${this.table} (${n.join(", ")}) VALUES ${a.join(", ")}`;if("upsert"===this.operation){let e=this.upsertOptions?.onConflict||"",t=String(e).split(",").map(e=>e.trim()).filter(Boolean);if(t.length>0)if(this.upsertOptions?.ignoreDuplicates)o+=` ON CONFLICT (${t.join(", ")}) DO NOTHING`;else{let e=n.filter(e=>!t.includes(e)).map(e=>`${e} = EXCLUDED.${e}`);e.length>0?o+=` ON CONFLICT (${t.join(", ")}) DO UPDATE SET ${e.join(", ")}`:o+=` ON CONFLICT (${t.join(", ")}) DO NOTHING`}}if(this.returningColumns){let{columns:e}=B(this.returningColumns);o+=` RETURNING ${e.join(", ")}`}this.returningColumns?e=(e=t.prepare(o).all(...i)).map(q):(t.prepare(o).run(...i),e=[]);let s=this.returningColumns?e:null;if("single"===this.singleMode||"maybeSingle"===this.singleMode)return{data:s&&s[0]||null,error:null};return{data:s,error:null}}catch(e){return{data:null,error:e}}}executeUpdateOrDelete(){try{let e,t=v(),r=[],n=[],i=[];this.buildWhere(i,n);let a="";if("update"===this.operation){let e=Object.keys(this.payload||{}).map(e=>{let t=this.payload[e];return t instanceof w?`${e} = ${t.expr}`:(r.push(Y(e,t)),`${e} = ?`)});a=`UPDATE ${this.table} SET ${e.join(", ")}`}else a=`DELETE FROM ${this.table}`;i.length>0&&(a+=` WHERE ${i.join(" AND ")}`);let o=[...r,...n];if(this.returningColumns){let{columns:e}=B(this.returningColumns);a+=` RETURNING ${e.join(", ")}`}this.returningColumns?e=(e=t.prepare(a).all(...o)).map(q):(t.prepare(a).run(...o),e=[]);let s=this.returningColumns?e:null;if("single"===this.singleMode){if(!s||0===s.length)return{data:null,error:{message:"No rows",code:"PGRST116"}};return{data:s[0],error:null}}if("maybeSingle"===this.singleMode)return{data:s?.[0]||null,error:null};return{data:s,error:null}}catch(e){return{data:null,error:e}}}async execute(){return"select"===this.operation?this.executeSelect():"insert"===this.operation||"upsert"===this.operation?this.executeInsertOrUpsert():this.executeUpdateOrDelete()}}let W=new Set([...$,"depends_on","open_blockers","swarm_models","run_index","stage_decisions","definition","metadata","models","config","policy","done_criteria","outputs","task_snapshot","data_mapping"]);function q(e){if(!e||"object"!=typeof e)return e;let t={...e};for(let e of Object.keys(t)){if(W.has(e)&&"string"==typeof t[e])try{t[e]=JSON.parse(t[e])}catch{}("swarm"===e||"is_default"===e||"is_public"===e||"had_graph_before"===e)&&(0===t[e]?t[e]=!1:1===t[e]&&(t[e]=!0))}return t}e.s(["SqlExpression",0,w,"createAdminDbClientSQLite",0,function(){return{from:e=>new P(e),auth:{getUser:async()=>({data:{user:{id:o.id,email:o.email,user_metadata:{name:o.name,full_name:o.name}}},error:null}),exchangeCodeForSession:async()=>({error:null}),refreshSession:async()=>({data:{session:{access_token:"local-token",refresh_token:"local-refresh",expires_in:3600},user:{id:o.id,email:o.email}},error:null})},async rpc(e,t){if("check_rate_limit"!==e)return{data:null,error:{message:`Unsupported rpc: ${e}`}};let r=v(),n=t.p_user_id,i=t.p_endpoint,a=Number(t.p_limit||60),o=Number(t.p_window_seconds||60),s=new Date(Math.floor(new Date().getTime()/(1e3*o))*o*1e3);try{let e=`
353
+ `)}let $=new Set(["definition","depends_on","input","metadata","models","open_blockers","output","payload","run_index","stage_decisions","swarm_models"]);function H(e){return void 0===e?null:e instanceof Date?e.toISOString():e&&"object"==typeof e?JSON.stringify(e):e}function Y(e,t){return null==t?null:t instanceof Date?t.toISOString():$.has(e)?JSON.stringify(t):H(t)}function B(e){let t=(e||"*").trim();if(!t||"*"===t)return{columns:["*"],includeProjectRepos:!1};let r=t.includes("project_repos(*)"),n=t.replace(/project_repos\(\*\)/g,"").split(",").map(e=>e.trim()).filter(Boolean);return 0===n.length?{columns:["*"],includeProjectRepos:r}:{columns:n,includeProjectRepos:r}}class P{table;operation="select";filters=[];orderSpecs=[];limitValue=null;selectColumns="*";returningColumns=null;singleMode="none";payload=null;upsertOptions=null;constructor(e){this.table=e}select(e="*"){return"select"===this.operation?this.selectColumns=e:this.returningColumns=e||"*",this}insert(e){return this.operation="insert",this.payload=e,this}update(e){return this.operation="update",this.payload=e,this}delete(){return this.operation="delete",this}upsert(e,t){return this.operation="upsert",this.payload=e,this.upsertOptions=t||{},this}eq(e,t){return this.filters.push({op:"eq",column:e,value:t}),this}neq(e,t){return this.filters.push({op:"neq",column:e,value:t}),this}gt(e,t){return this.filters.push({op:"gt",column:e,value:t}),this}gte(e,t){return this.filters.push({op:"gte",column:e,value:t}),this}lt(e,t){return this.filters.push({op:"lt",column:e,value:t}),this}lte(e,t){return this.filters.push({op:"lte",column:e,value:t}),this}is(e,t){return this.filters.push({op:"is",column:e,value:t}),this}in(e,t){return this.filters.push({op:"in",column:e,value:t||[]}),this}contains(e,t){return this.filters.push({op:"contains",column:e,value:t}),this}or(e){return this.filters.push({op:"or",expression:e}),this}order(e,t){return this.orderSpecs.push({column:e,...t||{}}),this}limit(e){return this.limitValue=e,this}single(){return this.singleMode="single",this.execute()}maybeSingle(){return this.singleMode="maybeSingle",this.execute()}then(e,t){return this.execute().then(e,t)}buildWhere(e,t){for(let r of this.filters){if("or"===r.op){let n=r.expression.split(",").map(e=>e.trim()).filter(Boolean).map(e=>{var r;let[n,i,...a]=e.split("."),o="true"===(r=a.join("."))||"false"!==r&&("null"===r?null:r);return"eq"===i?(t.push(H(o)),`${n} = ?`):"neq"===i?(t.push(H(o)),`${n} <> ?`):"is"===i?null===o?`${n} IS NULL`:(t.push(H(o)),`${n} IS ?`):"ilike"===i||"like"===i?(t.push(H(o)),`${n} LIKE ?`):"1=1"});n.length>0&&e.push(`(${n.join(" OR ")})`);continue}if("eq"===r.op)t.push(H(r.value)),e.push(`${r.column} = ?`);else if("neq"===r.op)t.push(H(r.value)),e.push(`${r.column} <> ?`);else if("gt"===r.op)t.push(H(r.value)),e.push(`${r.column} > ?`);else if("gte"===r.op)t.push(H(r.value)),e.push(`${r.column} >= ?`);else if("lt"===r.op)t.push(H(r.value)),e.push(`${r.column} < ?`);else if("lte"===r.op)t.push(H(r.value)),e.push(`${r.column} <= ?`);else if("is"===r.op)null===r.value?e.push(`${r.column} IS NULL`):(t.push(H(r.value)),e.push(`${r.column} IS ?`));else if("contains"===r.op){let n=(r.value||[]).map(H);if(0===n.length)e.push("1=1");else{let i=n.map(()=>"?").join(", ");t.push(...n),e.push(`(SELECT COUNT(*) FROM json_each(${r.column}) WHERE json_each.value IN (${i})) = ${n.length}`)}}else if("in"===r.op)if(r.value&&0!==r.value.length){let n=(r.value||[]).map(H),i=n.map(()=>"?").join(", ");t.push(...n),e.push(`${r.column} IN (${i})`)}else e.push("1=0")}}executeSelect(){try{let e=M(),{columns:t,includeProjectRepos:r}=B(this.selectColumns),n=[],i=[];this.buildWhere(i,n);let a=`SELECT ${t.join(", ")} FROM ${this.table}`;if(i.length>0&&(a+=` WHERE ${i.join(" AND ")}`),this.orderSpecs.length>0){let e=this.orderSpecs.map(e=>{let t=!1===e.ascending?"DESC":"ASC";return!0===e.nullsFirst?`CASE WHEN ${e.column} IS NULL THEN 0 ELSE 1 END, ${e.column} ${t}`:!1===e.nullsFirst?`CASE WHEN ${e.column} IS NULL THEN 1 ELSE 0 END, ${e.column} ${t}`:`${e.column} ${t}`}).join(", ");a+=` ORDER BY ${e}`}"number"==typeof this.limitValue&&(n.push(this.limitValue),a+=" LIMIT ?");let o=e.prepare(a).all(...n);if(o=o.map(q),r&&"projects"===this.table&&o.length>0){let t=o.map(e=>e.id).filter(Boolean);if(t.length>0){let r=t.map(()=>"?").join(", "),n=e.prepare(`SELECT * FROM project_repos WHERE project_id IN (${r})`).all(...t),i=new Map;for(let e of n){let t=i.get(e.project_id)||[];t.push(e),i.set(e.project_id,t)}o=o.map(e=>({...e,project_repos:i.get(e.id)||[]}))}}if("single"===this.singleMode){if(0===o.length)return{data:null,error:{message:"No rows",code:"PGRST116"}};return{data:o[0],error:null}}if("maybeSingle"===this.singleMode)return{data:o[0]||null,error:null};return{data:o,error:null}}catch(e){return{data:null,error:e}}}executeInsertOrUpsert(){try{let e,t=M(),r=Array.isArray(this.payload)?this.payload:[this.payload];if(!r.length)return{data:[],error:null};let n=Array.from(r.reduce((e,t)=>{for(let r of Object.keys(t||{}))e.add(r);return e},new Set)),i=[],a=r.map(e=>{let t=n.map(t=>(i.push(Y(t,e[t])),"?"));return`(${t.join(", ")})`}),o=`INSERT INTO ${this.table} (${n.join(", ")}) VALUES ${a.join(", ")}`;if("upsert"===this.operation){let e=this.upsertOptions?.onConflict||"",t=String(e).split(",").map(e=>e.trim()).filter(Boolean);if(t.length>0)if(this.upsertOptions?.ignoreDuplicates)o+=` ON CONFLICT (${t.join(", ")}) DO NOTHING`;else{let e=n.filter(e=>!t.includes(e)).map(e=>`${e} = EXCLUDED.${e}`);e.length>0?o+=` ON CONFLICT (${t.join(", ")}) DO UPDATE SET ${e.join(", ")}`:o+=` ON CONFLICT (${t.join(", ")}) DO NOTHING`}}if(this.returningColumns){let{columns:e}=B(this.returningColumns);o+=` RETURNING ${e.join(", ")}`}this.returningColumns?e=(e=t.prepare(o).all(...i)).map(q):(t.prepare(o).run(...i),e=[]);let s=this.returningColumns?e:null;if("single"===this.singleMode||"maybeSingle"===this.singleMode)return{data:s&&s[0]||null,error:null};return{data:s,error:null}}catch(e){return{data:null,error:e}}}executeUpdateOrDelete(){try{let e,t=M(),r=[],n=[],i=[];this.buildWhere(i,n);let a="";if("update"===this.operation){let e=Object.keys(this.payload||{}).map(e=>{let t=this.payload[e];return t instanceof w?`${e} = ${t.expr}`:(r.push(Y(e,t)),`${e} = ?`)});a=`UPDATE ${this.table} SET ${e.join(", ")}`}else a=`DELETE FROM ${this.table}`;i.length>0&&(a+=` WHERE ${i.join(" AND ")}`);let o=[...r,...n];if(this.returningColumns){let{columns:e}=B(this.returningColumns);a+=` RETURNING ${e.join(", ")}`}this.returningColumns?e=(e=t.prepare(a).all(...o)).map(q):(t.prepare(a).run(...o),e=[]);let s=this.returningColumns?e:null;if("single"===this.singleMode){if(!s||0===s.length)return{data:null,error:{message:"No rows",code:"PGRST116"}};return{data:s[0],error:null}}if("maybeSingle"===this.singleMode)return{data:s?.[0]||null,error:null};return{data:s,error:null}}catch(e){return{data:null,error:e}}}async execute(){return"select"===this.operation?this.executeSelect():"insert"===this.operation||"upsert"===this.operation?this.executeInsertOrUpsert():this.executeUpdateOrDelete()}}let W=new Set([...$,"depends_on","open_blockers","swarm_models","run_index","stage_decisions","definition","metadata","models","config","policy","done_criteria","outputs","task_snapshot","data_mapping"]);function q(e){if(!e||"object"!=typeof e)return e;let t={...e};for(let e of Object.keys(t)){if(W.has(e)&&"string"==typeof t[e])try{t[e]=JSON.parse(t[e])}catch{}("swarm"===e||"is_default"===e||"is_public"===e||"had_graph_before"===e)&&(0===t[e]?t[e]=!1:1===t[e]&&(t[e]=!0))}return t}e.s(["SqlExpression",0,w,"createAdminDbClientSQLite",0,function(){return{from:e=>new P(e),auth:{getUser:async()=>({data:{user:{id:o.id,email:o.email,user_metadata:{name:o.name,full_name:o.name}}},error:null}),exchangeCodeForSession:async()=>({error:null}),refreshSession:async()=>({data:{session:{access_token:"local-token",refresh_token:"local-refresh",expires_in:3600},user:{id:o.id,email:o.email}},error:null})},async rpc(e,t){if("check_rate_limit"!==e)return{data:null,error:{message:`Unsupported rpc: ${e}`}};let r=M(),n=t.p_user_id,i=t.p_endpoint,a=Number(t.p_limit||60),o=Number(t.p_window_seconds||60),s=new Date(Math.floor(new Date().getTime()/(1e3*o))*o*1e3);try{let e=`
354
354
  INSERT INTO rate_limits (user_id, endpoint, window_start, request_count)
355
355
  VALUES (?, ?, ?, 1)
356
356
  ON CONFLICT (user_id, endpoint, window_start)
357
357
  DO UPDATE SET request_count = rate_limits.request_count + 1
358
358
  RETURNING request_count
359
- `,t=r.prepare(e).get(n,i,s.toISOString());return{data:Number(t?.request_count||0)<=a,error:null}}catch(e){return{data:!1,error:e}}},channel:()=>({on(){return this},subscribe(e){return e&&e("SUBSCRIBED"),this}}),removeChannel(){}}},"getSQLiteDb",0,v,"sqlExpr",0,function(e){return new w(e)}],633211)}];
359
+ `,t=r.prepare(e).get(n,i,s.toISOString());return{data:Number(t?.request_count||0)<=a,error:null}}catch(e){return{data:!1,error:e}}},channel:()=>({on(){return this},subscribe(e){return e&&e("SUBSCRIBED"),this}}),removeChannel(){}}},"getSQLiteDb",0,M,"sqlExpr",0,function(e){return new w(e)}],633211)}];
360
360
 
361
361
  //# sourceMappingURL=apps_local_lib_sqlite-query-adapter_ts_0l95hik._.js.map
@@ -108,7 +108,7 @@ I am ${e}. ${o}
108
108
  ON CONFLICT(key) DO UPDATE SET
109
109
  applied_at = strftime('%Y-%m-%dT%H:%M:%fZ','now'),
110
110
  metadata = excluded.metadata`).run(y,JSON.stringify(t)),n}e.s(["autoMigrateLegacyWorkspacesToProjects",0,w,"getLegacyWorkspaceMigrationStatus",0,function(e){if(!e)throw Error("getLegacyWorkspaceMigrationStatus requires an explicit database handle");x(e);let t=e.prepare("SELECT applied_at, metadata FROM app_migrations WHERE key = ? LIMIT 1").get(y);if(!t)return{applied:!1,appliedAt:null,metadata:null};let r=null;if(t.metadata)try{r=JSON.parse(t.metadata)}catch{r=null}return{applied:!0,appliedAt:t.applied_at,metadata:r}},"getLegacyWorkspaceSourceCounts",0,function(e){if(!e)throw Error("getLegacyWorkspaceSourceCounts requires an explicit database handle");let t=X(e);return{teams:t.legacyTeams?D(e,"teams"):0,teamAgents:t.legacyTeamAgents?D(e,"team_agents"):0,teamWorkspaces:t.legacyTeamWorkspaces?D(e,"team_workspaces"):0}},"getWorkspaceTeamTableState",0,X,"migrateLegacyWorkspacesToProjects",0,k],449748);let M=process.env.AGX_DATA_DIR||i.default.join(a.default.homedir(),".agx");class v{expr;constructor(e){this.expr=e}}let $=null;function H(){if($)return $;let e=process.env.SQLITE_DB_PATH||i.default.join(M,"agx-board.db");$=new t.DatabaseSync(e);let a=(0,C.validateSQLiteEnvironment)($,e);if(a.length>0){let e=a.map(e=>` - ${e.message}${e.fix?` (fix: ${e.fix})`:""}`);throw Error(`SQLite startup validation failed:
111
- ${e.join("\n")}`)}(function(e){let t=i.default.join(process.cwd(),"db","sqlite","001_agx_board_schema.sql");if(!n.default.existsSync(t))return console.warn(`[sqlite] DDL not found at ${t}, skipping schema init`);let r=n.default.readFileSync(t,"utf-8");e.exec(r)})($),function(e){if(e.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='execution_graphs'").all().length>0&&((0,r.pragmaAll)(e,"table_info(execution_graphs)").some(e=>"schedule"===e.name)||e.exec("ALTER TABLE execution_graphs ADD COLUMN schedule JSON")),e.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='projects'").all().length>0&&((0,r.pragmaAll)(e,"table_info(projects)").some(e=>"archived_at"===e.name)||e.exec("ALTER TABLE projects ADD COLUMN archived_at TEXT DEFAULT NULL")),e.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='project_memory'").all().length>0&&((0,r.pragmaAll)(e,"table_info(project_memory)").some(e=>"producer"===e.name)||e.exec("ALTER TABLE project_memory ADD COLUMN producer TEXT NOT NULL DEFAULT 'human' CHECK(producer IN ('human', 'system'))"),e.exec("CREATE INDEX IF NOT EXISTS idx_project_memory_producer ON project_memory (producer)")),e.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='agents'").all().length>0){let t=new Set((0,r.pragmaAll)(e,"table_info(agents)").map(e=>e.name));t.has("voice")||e.exec("ALTER TABLE agents ADD COLUMN voice TEXT"),t.has("seed")||e.exec("ALTER TABLE agents ADD COLUMN seed TEXT"),t.has("model")||e.exec("ALTER TABLE agents ADD COLUMN model TEXT"),t.has("provider")||e.exec("ALTER TABLE agents ADD COLUMN provider TEXT"),t.has("color")||e.exec("ALTER TABLE agents ADD COLUMN color TEXT"),t.has("title")||e.exec("ALTER TABLE agents ADD COLUMN title TEXT")}e.exec(`
111
+ ${e.join("\n")}`)}(function(e){let t=i.default.join(process.cwd(),"db","sqlite","001_agx_board_schema.sql");if(!n.default.existsSync(t))return console.warn(`[sqlite] DDL not found at ${t}, skipping schema init`);let r=n.default.readFileSync(t,"utf-8");e.exec(r)})($),function(e){if(e.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='execution_graphs'").all().length>0&&((0,r.pragmaAll)(e,"table_info(execution_graphs)").some(e=>"schedule"===e.name)||e.exec("ALTER TABLE execution_graphs ADD COLUMN schedule JSON")),e.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='projects'").all().length>0&&((0,r.pragmaAll)(e,"table_info(projects)").some(e=>"archived_at"===e.name)||e.exec("ALTER TABLE projects ADD COLUMN archived_at TEXT DEFAULT NULL")),e.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='project_memory'").all().length>0&&((0,r.pragmaAll)(e,"table_info(project_memory)").some(e=>"producer"===e.name)||e.exec("ALTER TABLE project_memory ADD COLUMN producer TEXT NOT NULL DEFAULT 'human' CHECK(producer IN ('human', 'system'))"),e.exec("CREATE INDEX IF NOT EXISTS idx_project_memory_producer ON project_memory (producer)")),e.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='agents'").all().length>0){let t=new Set((0,r.pragmaAll)(e,"table_info(agents)").map(e=>e.name));t.has("voice")||e.exec("ALTER TABLE agents ADD COLUMN voice TEXT"),t.has("seed")||e.exec("ALTER TABLE agents ADD COLUMN seed TEXT"),t.has("model")||e.exec("ALTER TABLE agents ADD COLUMN model TEXT"),t.has("provider")||e.exec("ALTER TABLE agents ADD COLUMN provider TEXT"),t.has("color")||e.exec("ALTER TABLE agents ADD COLUMN color TEXT"),t.has("title")&&!t.has("role")?e.exec("ALTER TABLE agents RENAME COLUMN title TO role"):t.has("role")||e.exec("ALTER TABLE agents ADD COLUMN role TEXT")}e.exec(`
112
112
  CREATE TABLE IF NOT EXISTS agent_skills (
113
113
  agent_id TEXT NOT NULL REFERENCES agents(id) ON DELETE CASCADE,
114
114
  file TEXT NOT NULL,
@@ -1,4 +1,4 @@
1
- module.exports=[83997,e=>{"use strict";var t=e.i(633211),r=e.i(801243);e.i(219233);var o=e.i(356942),i=e.i(774553);let s=new Set(["replan","rollback"]);class n extends Error{constructor(e){super(`Execution graph not found: ${e}`),this.name="GraphNotFoundError"}}class d extends Error{nodeIds;constructor(e,t){super(`Execution graph ${e} is missing node(s): ${t.join(", ")}`),this.name="GraphNodeNotFoundError",this.nodeIds=t}}class a extends Error{taskId;existingGraphId;constructor(e,t){super(`Task ${e} is already bound to execution graph ${t}.`),this.name="GraphTaskAlreadyBoundError",this.taskId=e,this.existingGraphId=t}}function u(e){return null==e?null:JSON.stringify(e)}function l(e){if(null==e)return null;if("string"==typeof e)try{return JSON.parse(e)}catch{}return e}function c(e){let t=Date.parse(e);return Number.isNaN(t)?e:new Date(t).toISOString()}function p(e){return!e||"object"!=typeof e||Array.isArray(e)?{}:e}function h(e){if(!(0,i.isAutomationFrontmatterEnabled)()||!e.schedule)return;let t=(0,i.getAutomationRepository)(),r=(0,o.graphAutomationToDefinition)({graphId:e.id,taskId:e.taskId,schedule:e.schedule,createdAt:e.createdAt,updatedAt:e.updatedAt,executionState:e.executionState});t.upsertAutomation(r),t.updateAutomationState(e.id,{nextRunAt:e.schedule.nextTickAt,lastRunAt:e.schedule.lastTickAt,updatedAt:e.updatedAt,runCount:e.schedule.runCount,consecutiveFailures:e.schedule.consecutiveFailures,tickInProgress:e.schedule.tickInProgress})}function g(e){let{type:t,status:r,metrics:o,output:i,...s}=e;return{type:t,status:r,config:s,output:i??null,metrics:o??null}}function f(e){return{query(t,r){let o=e.prepare(t);return/^\s*(INSERT|UPDATE|DELETE)/i.test(t)&&!/RETURNING/i.test(t)?(o.run(...(r??[]).map(e=>e)),{rows:[]}):{rows:o.all(...(r??[]).map(e=>e))}}}}class E{getDb(){return(0,t.getSQLiteDb)()}createGraph(e,t){let o=this.getDb(),i=f(o);t?.skipTaskBinding&&(0,r.pragmaSet)(o,"foreign_keys = OFF");try{return(0,r.transaction)(o,()=>{let r=i.query("SELECT id FROM execution_graphs WHERE task_id = ? LIMIT 1",[e.taskId]).rows[0];if(r&&r.id!==e.id)throw new a(e.taskId,r.id);for(let[t,r]of(i.query(`INSERT INTO execution_graphs
1
+ module.exports=[83997,e=>{"use strict";var t=e.i(633211),r=e.i(801243);e.i(219233);var o=e.i(356942),s=e.i(774553);let i=new Set(["replan","rollback"]);class n extends Error{constructor(e){super(`Execution graph not found: ${e}`),this.name="GraphNotFoundError"}}class d extends Error{nodeIds;constructor(e,t){super(`Execution graph ${e} is missing node(s): ${t.join(", ")}`),this.name="GraphNodeNotFoundError",this.nodeIds=t}}class a extends Error{taskId;existingGraphId;constructor(e,t){super(`Task ${e} is already bound to execution graph ${t}.`),this.name="GraphTaskAlreadyBoundError",this.taskId=e,this.existingGraphId=t}}function u(e){return null==e?null:JSON.stringify(e)}function c(e){if(null==e)return null;if("string"==typeof e)try{return JSON.parse(e)}catch{}return e}function l(e){let t=Date.parse(e);return Number.isNaN(t)?e:new Date(t).toISOString()}function p(e){return!e||"object"!=typeof e||Array.isArray(e)?{}:e}function h(e){if(!(0,s.isAutomationFrontmatterEnabled)()||!e.schedule)return;let t=(0,s.getAutomationRepository)(),r=(0,o.graphAutomationToDefinition)({graphId:e.id,taskId:e.taskId,schedule:e.schedule,createdAt:e.createdAt,updatedAt:e.updatedAt,executionState:e.executionState});t.upsertAutomation(r),t.updateAutomationState(e.id,{nextRunAt:e.schedule.nextTickAt,lastRunAt:e.schedule.lastTickAt,updatedAt:e.updatedAt,runCount:e.schedule.runCount,consecutiveFailures:e.schedule.consecutiveFailures,tickInProgress:e.schedule.tickInProgress})}function g(e){let{type:t,status:r,metrics:o,output:s,...i}=e;return{type:t,status:r,config:i,output:s??null,metrics:o??null}}function f(e){return{query(t,r){let o=e.prepare(t);return/^\s*(INSERT|UPDATE|DELETE)/i.test(t)&&!/RETURNING/i.test(t)?(o.run(...(r??[]).map(e=>e)),{rows:[]}):{rows:o.all(...(r??[]).map(e=>e))}}}}class _{getDb(){return(0,t.getSQLiteDb)()}createGraph(e,t){let o=this.getDb(),s=f(o);t?.skipTaskBinding&&(0,r.pragmaSet)(o,"foreign_keys = OFF");try{return(0,r.transaction)(o,()=>{let r=s.query("SELECT id FROM execution_graphs WHERE task_id = ? LIMIT 1",[e.taskId]).rows[0];if(r&&r.id!==e.id)throw new a(e.taskId,r.id);for(let[t,r]of(s.query(`INSERT INTO execution_graphs
2
2
  (id, task_id, graph_version, mode, policy, done_criteria, schedule, created_at, updated_at)
3
3
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
4
4
  ON CONFLICT (id) DO UPDATE SET
@@ -9,33 +9,38 @@ module.exports=[83997,e=>{"use strict";var t=e.i(633211),r=e.i(801243);e.i(21923
9
9
  done_criteria = excluded.done_criteria,
10
10
  schedule = excluded.schedule,
11
11
  created_at = excluded.created_at,
12
- updated_at = excluded.updated_at`,[e.id,e.taskId,e.graphVersion,e.mode,u(e.policy),u(e.doneCriteria),u(e.schedule??null),e.createdAt,e.updatedAt]),i.query("DELETE FROM graph_nodes WHERE graph_id = ?",[e.id]),i.query("DELETE FROM graph_edges WHERE graph_id = ?",[e.id]),Object.entries(e.nodes))){let o=g(r);i.query(`INSERT INTO graph_nodes (graph_id, node_id, type, status, config, output, metrics)
13
- VALUES (?, ?, ?, ?, ?, ?, ?)`,[e.id,t,o.type,o.status,u(o.config),u(o.output),u(o.metrics)])}for(let t of e.edges)i.query(`INSERT INTO graph_edges (graph_id, from_id, to_id, type, condition, data_mapping)
14
- VALUES (?, ?, ?, ?, ?, ?)`,[e.id,t.from,t.to,t.type,t.condition??null,u(t.dataMapping??null)]);for(let t of e.versionHistory)this.appendEventInternal(i,e.id,t);for(let t of e.runtimeEvents??[])this.appendEventInternal(i,e.id,t);t?.skipTaskBinding||i.query("UPDATE tasks SET graph_id = ? WHERE id = ?",[e.id,e.taskId]);let o=this.getGraphForTask(i,e.taskId);if(!o)throw new n(e.id);return h(o),o})}finally{t?.skipTaskBinding&&(0,r.pragmaSet)(o,"foreign_keys = ON")}}getGraph(e){let t=this.getDb();return this.getGraphForTask(f(t),e)}updateNodeRuntime(e,t,o){let i=this.getDb(),s=f(i);return(0,r.transaction)(i,()=>{if(!s.query("SELECT id, graph_version FROM execution_graphs WHERE id = ?",[e]).rows[0])throw new n(e);let r=Object.keys(t);if(0===r.length){let t=s.query("SELECT graph_version, updated_at FROM execution_graphs WHERE id = ?",[e]);return{graphVersion:t.rows[0].graph_version,updatedAt:c(t.rows[0].updated_at)}}let o=r.map(()=>"?").join(", "),i=s.query(`SELECT node_id, type, status, config, output, metrics
15
- FROM graph_nodes WHERE graph_id = ? AND node_id IN (${o})`,[e,...r]),a=new Map;for(let e of i.rows)a.set(e.node_id,e);let h=r.filter(e=>!a.has(e));if(h.length>0)throw new d(e,h);for(let o of r){let r=t[o],i=a.get(o);if(!i||!r)continue;let n={...p(l(i.config)),...p(r.configPatch)};void 0!==r.startedAt&&(n.startedAt=r.startedAt),void 0!==r.completedAt&&(n.completedAt=r.completedAt),void 0!==r.actualMinutes&&(n.actualMinutes=r.actualMinutes),s.query(`UPDATE graph_nodes SET status = ?, metrics = ?, output = ?, config = ?
16
- WHERE graph_id = ? AND node_id = ?`,[r.status??i.status,u(r.metrics??l(i.metrics)),u(r.output??l(i.output)),u(n),e,o])}let g=s.query("UPDATE execution_graphs SET updated_at = datetime('now') WHERE id = ? RETURNING graph_version, updated_at",[e]);return{graphVersion:g.rows[0].graph_version,updatedAt:c(g.rows[0].updated_at)}})}updateGraphStructure(e,t,o){let i=this.getDb(),s=f(i);return(0,r.transaction)(i,()=>{let r=s.query("SELECT id, task_id, graph_version, mode, policy, done_criteria, schedule FROM execution_graphs WHERE id = ?",[e]).rows[0];if(!r)throw new n(e);if(t.nodes)for(let[r,o]of(s.query("DELETE FROM graph_nodes WHERE graph_id = ?",[e]),Object.entries(t.nodes))){let t=g(o);s.query(`INSERT INTO graph_nodes (graph_id, node_id, type, status, config, output, metrics)
17
- VALUES (?, ?, ?, ?, ?, ?, ?)`,[e,r,t.type,t.status,u(t.config),u(t.output),u(t.metrics)])}if(t.edges)for(let r of(s.query("DELETE FROM graph_edges WHERE graph_id = ?",[e]),t.edges))s.query(`INSERT INTO graph_edges (graph_id, from_id, to_id, type, condition, data_mapping)
18
- VALUES (?, ?, ?, ?, ?, ?)`,[e,r.from,r.to,r.type,r.condition??null,u(r.dataMapping??null)]);let o=s.query(`UPDATE execution_graphs
12
+ updated_at = excluded.updated_at`,[e.id,e.taskId,e.graphVersion,e.mode,u(e.policy),u(e.doneCriteria),u(e.schedule??null),e.createdAt,e.updatedAt]),s.query("DELETE FROM graph_nodes WHERE graph_id = ?",[e.id]),s.query("DELETE FROM graph_edges WHERE graph_id = ?",[e.id]),Object.entries(e.nodes))){let o=g(r);s.query(`INSERT INTO graph_nodes (graph_id, node_id, type, status, config, output, metrics)
13
+ VALUES (?, ?, ?, ?, ?, ?, ?)`,[e.id,t,o.type,o.status,u(o.config),u(o.output),u(o.metrics)])}for(let t of e.edges)s.query(`INSERT INTO graph_edges (graph_id, from_id, to_id, type, condition, data_mapping)
14
+ VALUES (?, ?, ?, ?, ?, ?)`,[e.id,t.from,t.to,t.type,t.condition??null,u(t.dataMapping??null)]);for(let t of e.versionHistory)this.appendEventInternal(s,e.id,t);for(let t of e.runtimeEvents??[])this.appendEventInternal(s,e.id,t);t?.skipTaskBinding||s.query("UPDATE tasks SET graph_id = ? WHERE id = ?",[e.id,e.taskId]);let o=this.getGraphForTask(s,e.taskId);if(!o)throw new n(e.id);return h(o),o})}finally{t?.skipTaskBinding&&(0,r.pragmaSet)(o,"foreign_keys = ON")}}getGraph(e){let t=this.getDb();return this.getGraphForTask(f(t),e)}updateNodeRuntime(e,t,o){let s=this.getDb(),i=f(s);return(0,r.transaction)(s,()=>{if(!i.query("SELECT id, graph_version FROM execution_graphs WHERE id = ?",[e]).rows[0])throw new n(e);let r=Object.keys(t);if(0===r.length){let t=i.query("SELECT graph_version, updated_at FROM execution_graphs WHERE id = ?",[e]);return{graphVersion:t.rows[0].graph_version,updatedAt:l(t.rows[0].updated_at)}}let o=r.map(()=>"?").join(", "),s=i.query(`SELECT node_id, type, status, config, output, metrics
15
+ FROM graph_nodes WHERE graph_id = ? AND node_id IN (${o})`,[e,...r]),a=new Map;for(let e of s.rows)a.set(e.node_id,e);let h=r.filter(e=>!a.has(e));if(h.length>0)throw new d(e,h);for(let o of r){let r=t[o],s=a.get(o);if(!s||!r)continue;let n={...p(c(s.config)),...p(r.configPatch)};void 0!==r.startedAt&&(n.startedAt=r.startedAt),void 0!==r.completedAt&&(n.completedAt=r.completedAt),void 0!==r.actualMinutes&&(n.actualMinutes=r.actualMinutes),i.query(`UPDATE graph_nodes SET status = ?, metrics = ?, output = ?, config = ?
16
+ WHERE graph_id = ? AND node_id = ?`,[r.status??s.status,u(r.metrics??c(s.metrics)),u(r.output??c(s.output)),u(n),e,o])}let g=i.query("UPDATE execution_graphs SET updated_at = datetime('now') WHERE id = ? RETURNING graph_version, updated_at",[e]);return{graphVersion:g.rows[0].graph_version,updatedAt:l(g.rows[0].updated_at)}})}updateGraphStructure(e,t,o){let s=this.getDb(),i=f(s);return(0,r.transaction)(s,()=>{let r=i.query("SELECT id, task_id, graph_version, mode, policy, done_criteria, schedule FROM execution_graphs WHERE id = ?",[e]).rows[0];if(!r)throw new n(e);if(t.nodes)for(let[r,o]of(i.query("DELETE FROM graph_nodes WHERE graph_id = ?",[e]),Object.entries(t.nodes))){let t=g(o);i.query(`INSERT INTO graph_nodes (graph_id, node_id, type, status, config, output, metrics)
17
+ VALUES (?, ?, ?, ?, ?, ?, ?)`,[e,r,t.type,t.status,u(t.config),u(t.output),u(t.metrics)])}if(t.edges)for(let r of(i.query("DELETE FROM graph_edges WHERE graph_id = ?",[e]),t.edges))i.query(`INSERT INTO graph_edges (graph_id, from_id, to_id, type, condition, data_mapping)
18
+ VALUES (?, ?, ?, ?, ?, ?)`,[e,r.from,r.to,r.type,r.condition??null,u(r.dataMapping??null)]);let o=i.query(`UPDATE execution_graphs
19
19
  SET mode = ?, policy = ?, done_criteria = ?, schedule = ?, updated_at = datetime('now')
20
20
  WHERE id = ?
21
- RETURNING graph_version, updated_at`,[t.mode??r.mode,u(t.policy??l(r.policy)??{}),u(t.doneCriteria??l(r.done_criteria)??{}),u(t.schedule??l(r.schedule)??null),e]);if(void 0!==t.schedule){let e=this.getGraphForTask(s,r.task_id);e?.schedule&&h(e)}return{graphVersion:o.rows[0].graph_version,updatedAt:c(o.rows[0].updated_at)}})}appendEvent(e,t){let r=this.getDb();this.appendEventInternal(f(r),e,t)}getGraphForTask(e,t){let r=e.query(`SELECT id, task_id, graph_version, mode, execution_state, policy, done_criteria, schedule, created_at, updated_at
21
+ RETURNING graph_version, updated_at`,[t.mode??r.mode,u(t.policy??c(r.policy)??{}),u(t.doneCriteria??c(r.done_criteria)??{}),u(t.schedule??c(r.schedule)??null),e]);if(void 0!==t.schedule){let e=this.getGraphForTask(i,r.task_id);e?.schedule&&h(e)}return{graphVersion:o.rows[0].graph_version,updatedAt:l(o.rows[0].updated_at)}})}appendEvent(e,t){let r=this.getDb();this.appendEventInternal(f(r),e,t)}getGraphForTask(e,t){let r=e.query(`SELECT id, task_id, graph_version, mode, execution_state, policy, done_criteria, schedule, created_at, updated_at
22
22
  FROM execution_graphs WHERE task_id = ? ORDER BY updated_at DESC LIMIT 1`,[t]).rows[0];if(!r)return null;let n=e.query(`SELECT node_id, type, status, config, output, metrics
23
23
  FROM graph_nodes WHERE graph_id = ? ORDER BY node_id ASC`,[r.id]),d=e.query(`SELECT from_id, to_id, type, condition, data_mapping
24
24
  FROM graph_edges WHERE graph_id = ? ORDER BY from_id ASC, to_id ASC`,[r.id]),a=e.query(`SELECT event_type, payload, timestamp
25
- FROM graph_events WHERE graph_id = ? ORDER BY timestamp ASC, event_type ASC`,[r.id]),u={};for(let e of n.rows)u[e.node_id]=function(e){let t={...p(l(e.config)),type:e.type,status:e.status},r=l(e.metrics);null!==r&&(t.metrics=r);let o=l(e.output);return null!==o&&(t.output=o),t}(e);let h=d.rows.map(e=>({from:e.from_id,to:e.to_id,type:e.type,...e.condition?{condition:l(e.condition)}:{},...e.data_mapping?{dataMapping:l(e.data_mapping)}:{}})),g=[],f=[];for(let e of a.rows){let t=function(e){let t={...p(l(e.payload))};return"eventType"in t||(t.eventType=e.event_type),"timestamp"in t||(t.timestamp=c(e.timestamp)),t}(e);s.has(t.eventType)?g.push(t):f.push(t)}var E={id:r.id,taskId:r.task_id,graphVersion:r.graph_version,mode:r.mode,executionState:r.execution_state??void 0,nodes:u,edges:h,policy:l(r.policy)??{},doneCriteria:l(r.done_criteria)??{},schedule:l(r.schedule)??void 0,versionHistory:g,runtimeEvents:f,createdAt:c(r.created_at),updatedAt:c(r.updated_at)};if(!(0,i.isAutomationFrontmatterEnabled)())return E;let _=(0,i.getAutomationRepository)().getAutomation(E.id);return _&&"execution_graph"===_.definition.target.type?{...E,schedule:(0,o.automationRecordToGraphSchedule)(_,E.schedule)}:E}appendEventInternal(e,t,r){e.query(`INSERT INTO graph_events (graph_id, event_type, payload, timestamp)
26
- VALUES (?, ?, ?, ?)`,[t,r.eventType,u(r),r.timestamp])}}let _=new E;e.s(["GraphStore",0,E,"deactivateSchedulesByRootMessageId",0,function(e){let r=e.trim();if(!r)return 0;let o=0;if((0,i.isAutomationFrontmatterEnabled)()){for(let e of(0,i.getAutomationRepository)().listVisibleAutomations({targetType:"execution_graph",state:"active",rootMessageId:r})){if("execution_graph"!==e.definition.target.type)continue;let r=e.definition.target.graphId??e.definition.id,i=e.definition.target.taskId??function(e){let r=e.trim();if(!r)return null;let o=(0,t.getSQLiteDb)().prepare(`SELECT task_id AS taskId
25
+ FROM graph_events WHERE graph_id = ? ORDER BY timestamp ASC, event_type ASC`,[r.id]),u={};for(let e of n.rows)u[e.node_id]=function(e){let t={...p(c(e.config)),type:e.type,status:e.status},r=c(e.metrics);null!==r&&(t.metrics=r);let o=c(e.output);return null!==o&&(t.output=o),t}(e);let h=d.rows.map(e=>({from:e.from_id,to:e.to_id,type:e.type,...e.condition?{condition:c(e.condition)}:{},...e.data_mapping?{dataMapping:c(e.data_mapping)}:{}})),g=[],f=[];for(let e of a.rows){let t=function(e){let t={...p(c(e.payload))};return"eventType"in t||(t.eventType=e.event_type),"timestamp"in t||(t.timestamp=l(e.timestamp)),t}(e);i.has(t.eventType)?g.push(t):f.push(t)}var _={id:r.id,taskId:r.task_id,graphVersion:r.graph_version,mode:r.mode,executionState:r.execution_state??void 0,nodes:u,edges:h,policy:c(r.policy)??{},doneCriteria:c(r.done_criteria)??{},schedule:c(r.schedule)??void 0,versionHistory:g,runtimeEvents:f,createdAt:l(r.created_at),updatedAt:l(r.updated_at)};if(!(0,s.isAutomationFrontmatterEnabled)())return _;let E=(0,s.getAutomationRepository)().getAutomation(_.id);return E&&"execution_graph"===E.definition.target.type?{..._,schedule:(0,o.automationRecordToGraphSchedule)(E,_.schedule)}:_}appendEventInternal(e,t,r){e.query(`INSERT INTO graph_events (graph_id, event_type, payload, timestamp)
26
+ VALUES (?, ?, ?, ?)`,[t,r.eventType,u(r),r.timestamp])}claimScheduleTick(e){return(this.getDb().prepare(`UPDATE execution_graphs
27
+ SET schedule = json_set(schedule, '$.tickInProgress', json('true')),
28
+ updated_at = strftime('%Y-%m-%dT%H:%M:%fZ','now')
29
+ WHERE task_id = ?
30
+ AND json_extract(schedule, '$.tickInProgress') = 0
31
+ AND json_extract(schedule, '$.state') = 'active'`).run(e).changes??0)>0}}let E=new _;e.s(["GraphStore",0,_,"deactivateSchedulesByRootMessageId",0,function(e){let r=e.trim();if(!r)return 0;let o=0;if((0,s.isAutomationFrontmatterEnabled)()){for(let e of(0,s.getAutomationRepository)().listVisibleAutomations({targetType:"execution_graph",state:"active",rootMessageId:r})){if("execution_graph"!==e.definition.target.type)continue;let r=e.definition.target.graphId??e.definition.id,s=e.definition.target.taskId??function(e){let r=e.trim();if(!r)return null;let o=(0,t.getSQLiteDb)().prepare(`SELECT task_id AS taskId
27
32
  FROM execution_graphs
28
33
  WHERE id = ?
29
- LIMIT 1`).get(r);return o?.taskId??null}(r);if(!i)continue;let s=_.getGraph(i);s?.schedule&&(_.updateGraphStructure(s.id,{mode:s.mode,nodes:s.nodes,edges:s.edges,policy:s.policy,doneCriteria:s.doneCriteria,schedule:{...s.schedule,state:"stopped",tickInProgress:!1}},s.graphVersion),o+=1)}if(o>0||!(0,i.isAutomationDualReadEnabled)())return o}return Number((0,t.getSQLiteDb)().prepare(`UPDATE execution_graphs
34
+ LIMIT 1`).get(r);return o?.taskId??null}(r);if(!s)continue;let i=E.getGraph(s);i?.schedule&&(E.updateGraphStructure(i.id,{mode:i.mode,nodes:i.nodes,edges:i.edges,policy:i.policy,doneCriteria:i.doneCriteria,schedule:{...i.schedule,state:"stopped",tickInProgress:!1}},i.graphVersion),o+=1)}if(o>0||!(0,s.isAutomationDualReadEnabled)())return o}return Number((0,t.getSQLiteDb)().prepare(`UPDATE execution_graphs
30
35
  SET schedule = json_set(schedule, '$.state', 'stopped', '$.tickInProgress', json('false')),
31
36
  updated_at = strftime('%Y-%m-%dT%H:%M:%fZ','now')
32
37
  WHERE schedule IS NOT NULL
33
38
  AND json_extract(schedule, '$.rootMessageId') = ?
34
- AND json_extract(schedule, '$.state') = 'active'`).run(r).changes??0)}])},932177,e=>{"use strict";var t=e.i(923715);e.s(["completeScheduleTick",0,function(e){if(!e.schedule||!e.schedule.tickInProgress)return e;let r=e.schedule,o=r.nextTickAt;return r.cronExpr&&(o=(0,t.computeNextTickFromCron)(r.cronExpr)),{...e,schedule:{...r,tickInProgress:!1,nextTickAt:o}}},"isScheduleTickComplete",0,function(e){if(!e.schedule)return!0;let t=new Set(["done","passed","failed","skipped"]);for(let r of e.schedule.resetNodeIds){let o=e.nodes[r];if(o&&!t.has(o.status))return!1}return!0},"scheduleTickIfDue",0,function(e,t=Date.now()){let r=t=>({graph:e,tickFired:!1,resetNodeIds:[],skipReason:t});if(!e.schedule)return r("no_schedule");let o=e.schedule;if("active"!==o.state)return r("not_active");if(o.tickInProgress)return r("tick_in_progress");if(null!=o.maxRuns&&o.runCount>=o.maxRuns)return r("max_runs_reached");if(o.cronExpr&&"number"==typeof o.nextTickAt){if(t<o.nextTickAt)return r("not_due")}else if(t-(o.lastTickAt??0)<o.intervalMs)return r("not_due");let i=JSON.parse(JSON.stringify(e)),s=[];for(let e of o.resetNodeIds){let t=i.nodes[e];t&&("done"===t.status||"passed"===t.status||"failed"===t.status||"skipped"===t.status)&&(i.nodes[e]={...t,status:"pending",startedAt:void 0,completedAt:void 0,metrics:void 0,..."function"===t.type?{output:void 0}:{},..."conditional"===t.type?{evaluatedTo:void 0}:{}},s.push(e))}return i.schedule={...o,tickInProgress:!0,lastTickAt:t,runCount:o.runCount+1},{graph:i,tickFired:!0,resetNodeIds:s}}])},71966,e=>{"use strict";var t=e.i(633211);e.i(219233);var r=e.i(356942),o=e.i(774553),i=e.i(932177),s=e.i(923715),n=e.i(64985),d=e.i(83997);async function a(e={}){let u=new d.GraphStore,l={tickedGraphIds:[],skippedGraphIds:[],errors:[],pendingWork:[]},c=function(){let e=new Map,i=(0,t.getSQLiteDb)().prepare(`
39
+ AND json_extract(schedule, '$.state') = 'active'`).run(r).changes??0)}])},932177,e=>{"use strict";var t=e.i(923715);e.s(["completeScheduleTick",0,function(e){if(!e.schedule||!e.schedule.tickInProgress)return e;let r=e.schedule,o=r.nextTickAt;return r.cronExpr&&(o=(0,t.computeNextTickFromCron)(r.cronExpr)),{...e,schedule:{...r,tickInProgress:!1,nextTickAt:o}}},"isScheduleTickComplete",0,function(e){if(!e.schedule)return!0;let t=new Set(["done","passed","failed","skipped"]);for(let r of e.schedule.resetNodeIds){let o=e.nodes[r];if(o&&!t.has(o.status))return!1}return!0},"scheduleTickIfDue",0,function(e,t=Date.now()){let r=t=>({graph:e,tickFired:!1,resetNodeIds:[],skipReason:t});if(!e.schedule)return r("no_schedule");let o=e.schedule;if("active"!==o.state)return r("not_active");if(o.tickInProgress)return r("tick_in_progress");if(null!=o.maxRuns&&o.runCount>=o.maxRuns)return r("max_runs_reached");if(o.cronExpr&&"number"==typeof o.nextTickAt){if(t<o.nextTickAt)return r("not_due")}else if(t-(o.lastTickAt??0)<o.intervalMs)return r("not_due");let s=JSON.parse(JSON.stringify(e)),i=[];for(let e of o.resetNodeIds){let t=s.nodes[e];t&&("done"===t.status||"passed"===t.status||"failed"===t.status||"skipped"===t.status)&&(s.nodes[e]={...t,status:"pending",startedAt:void 0,completedAt:void 0,metrics:void 0,..."function"===t.type?{output:void 0}:{},..."conditional"===t.type?{evaluatedTo:void 0}:{}},i.push(e))}return s.schedule={...o,tickInProgress:!0,lastTickAt:t,runCount:o.runCount+1},{graph:s,tickFired:!0,resetNodeIds:i}}])},71966,e=>{"use strict";var t=e.i(633211);e.i(219233);var r=e.i(356942),o=e.i(774553),s=e.i(932177),i=e.i(923715),n=e.i(64985),d=e.i(83997);async function a(e={}){let u=new d.GraphStore,c={tickedGraphIds:[],skippedGraphIds:[],errors:[],pendingWork:[]},l=function(){let e=new Map,s=(0,t.getSQLiteDb)().prepare(`
35
40
  SELECT task_id, id, schedule
36
41
  FROM execution_graphs
37
42
  WHERE schedule IS NOT NULL
38
43
  AND json_extract(schedule, '$.state') = 'active'
39
- `).all(),s=new Map(i.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 o=t.definition.target.graphId??t.definition.id,i=t.definition.target.taskId??s.get(o)?.task_id??o;e.set(o,{taskId:i,graphId:o,schedule:(0,r.automationRecordToGraphSchedule)(t,s.get(o)?JSON.parse(s.get(o).schedule):void 0)})}if(!(0,o.isAutomationDualReadEnabled)())return[...e.values()]}for(let t of i)e.has(t.id)||e.set(t.id,{taskId:t.task_id,graphId:t.id,schedule:JSON.parse(t.schedule)});return[...e.values()]}();for(let{taskId:t}of(console.log(`[schedules:poll] found ${c.length} active schedule(s)`),c))try{let r=u.getGraph(t);if(!r){l.errors.push({graphId:t,error:Error("Graph not found")});continue}let o=(0,i.scheduleTickIfDue)(r);if(!o.tickFired){console.log(`[schedules:poll] ${t} skipped (${o.skipReason??"unknown"})`),l.skippedGraphIds.push(t);continue}console.log(`[schedules:poll] ${t} tick fired — resetting nodes`),u.updateGraphStructure(o.graph.id,{nodes:o.graph.nodes,schedule:o.graph.schedule});let d=(0,s.schedulerTick)(o.graph,e);console.log(`[schedules:poll] ${t} scheduler: fn=${d.functionToRun.length} work=${d.workToRun.length}`);let a=d.graph;for(let r of d.functionToRun){let o=a.nodes[r];if(o&&"function"===o.type)try{console.log(`[schedules:poll] ${t} executing function node "${r}"`);let o=await (0,n.executeNode)(a,r,e),i=o.graph.nodes[r];console.log(`[schedules:poll] ${t} function "${r}" → ${i?.status}`,i&&"output"in i?JSON.stringify(i.output)?.slice(0,200):""),a=o.graph}catch(e){console.error(`[schedules:poll] ${t} function "${r}" error:`,e),l.errors.push({graphId:t,error:e instanceof Error?e:Error(String(e))})}}u.updateGraphStructure(a.id,{nodes:a.nodes});let c=(0,s.schedulerTick)(a,e);for(let r of(console.log(`[schedules:poll] ${t} post-fn scheduler: cond=${c.control.conditionalNodeIds.length} work=${c.workToRun.length}`),a=c.graph,c.workToRun)){let o=a.nodes[r];if(o&&"work"===o.type)try{a=(await (0,n.executeNode)(a,r,e)).graph}catch(e){l.errors.push({graphId:t,error:e instanceof Error?e:Error(String(e))})}}if(c.workToRun.length>0){l.pendingWork.push({taskId:t,nodeIds:c.workToRun,graph:a}),u.updateGraphStructure(a.id,{nodes:a.nodes});let r=(0,s.schedulerTick)(a,e);for(let o of(console.log(`[schedules:poll] ${t} post-work scheduler: fn=${r.functionToRun.length} cond=${r.control.conditionalNodeIds.length}`),a=r.graph,r.functionToRun)){let r=a.nodes[o];if(r&&"function"===r.type)try{console.log(`[schedules:poll] ${t} executing post-work function "${o}"`),a=(await (0,n.executeNode)(a,o,e)).graph}catch(e){console.error(`[schedules:poll] ${t} post-work function "${o}" error:`,e),l.errors.push({graphId:t,error:e instanceof Error?e:Error(String(e))})}}}u.updateGraphStructure(a.id,{nodes:a.nodes});let p=Object.entries(a.nodes).map(([e,t])=>`${e}:${t.status}`).join(", ");console.log(`[schedules:poll] ${t} node states: ${p}`);let h=(0,i.isScheduleTickComplete)(a);if(console.log(`[schedules:poll] ${t} tick complete? ${h}`),h){let e=(0,i.completeScheduleTick)(a),r=e.schedule?.resetNodeIds.some(t=>e.nodes[t]?.status==="failed");if(e.schedule){let t=e.schedule.consecutiveFailures??0,o=r?t+1:0;e.schedule={...e.schedule,consecutiveFailures:o};let i=e.schedule.maxConsecutiveFailures;null!=i&&o>=i&&(e.schedule={...e.schedule,state:"paused"})}let o=u.getGraph(t);o?.schedule?.state==="stopped"&&(console.log(`[schedules:poll] ${t} schedule was stopped mid-tick, preserving stopped state`),e.schedule={...e.schedule,state:"stopped"}),u.updateGraphStructure(e.id,{nodes:e.nodes,schedule:e.schedule})}l.tickedGraphIds.push(t)}catch(e){console.error(`[schedules:poll] ${t} caught error:`,e),l.errors.push({graphId:t,error:e instanceof Error?e:Error(String(e))});try{let e=u.getGraph(t);if(e?.schedule?.tickInProgress){let r=(0,i.completeScheduleTick)(e);u.updateGraphStructure(r.id,{nodes:r.nodes,schedule:r.schedule}),console.log(`[schedules:poll] ${t} force-completed stuck tick`)}}catch{}}return l}e.s(["pollSchedules",0,a])}];
44
+ `).all(),i=new Map(s.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 o=t.definition.target.graphId??t.definition.id,s=t.definition.target.taskId??i.get(o)?.task_id??o;e.set(o,{taskId:s,graphId:o,schedule:(0,r.automationRecordToGraphSchedule)(t,i.get(o)?JSON.parse(i.get(o).schedule):void 0)})}if(!(0,o.isAutomationDualReadEnabled)())return[...e.values()]}for(let t of s)e.has(t.id)||e.set(t.id,{taskId:t.task_id,graphId:t.id,schedule:JSON.parse(t.schedule)});return[...e.values()]}();for(let{taskId:t}of(console.log(`[schedules:poll] found ${l.length} active schedule(s)`),l))try{let r=u.getGraph(t);if(!r){c.errors.push({graphId:t,error:Error("Graph not found")});continue}let o=(0,s.scheduleTickIfDue)(r);if(!o.tickFired){console.log(`[schedules:poll] ${t} skipped (${o.skipReason??"unknown"})`),c.skippedGraphIds.push(t);continue}console.log(`[schedules:poll] ${t} tick fired — resetting nodes`),u.updateGraphStructure(o.graph.id,{nodes:o.graph.nodes,schedule:o.graph.schedule});let d=(0,i.schedulerTick)(o.graph,e);console.log(`[schedules:poll] ${t} scheduler: fn=${d.functionToRun.length} work=${d.workToRun.length}`);let a=d.graph;for(let r of d.functionToRun){let o=a.nodes[r];if(o&&"function"===o.type)try{console.log(`[schedules:poll] ${t} executing function node "${r}"`);let o=await (0,n.executeNode)(a,r,e),s=o.graph.nodes[r];console.log(`[schedules:poll] ${t} function "${r}" → ${s?.status}`,s&&"output"in s?JSON.stringify(s.output)?.slice(0,200):""),a=o.graph}catch(e){console.error(`[schedules:poll] ${t} function "${r}" error:`,e),c.errors.push({graphId:t,error:e instanceof Error?e:Error(String(e))})}}u.updateGraphStructure(a.id,{nodes:a.nodes});let l=(0,i.schedulerTick)(a,e);for(let r of(console.log(`[schedules:poll] ${t} post-fn scheduler: cond=${l.control.conditionalNodeIds.length} work=${l.workToRun.length}`),a=l.graph,l.workToRun)){let o=a.nodes[r];if(o&&"work"===o.type)try{a=(await (0,n.executeNode)(a,r,e)).graph}catch(e){c.errors.push({graphId:t,error:e instanceof Error?e:Error(String(e))})}}if(l.workToRun.length>0){c.pendingWork.push({taskId:t,nodeIds:l.workToRun,graph:a}),u.updateGraphStructure(a.id,{nodes:a.nodes});let r=(0,i.schedulerTick)(a,e);for(let o of(console.log(`[schedules:poll] ${t} post-work scheduler: fn=${r.functionToRun.length} cond=${r.control.conditionalNodeIds.length}`),a=r.graph,r.functionToRun)){let r=a.nodes[o];if(r&&"function"===r.type)try{console.log(`[schedules:poll] ${t} executing post-work function "${o}"`),a=(await (0,n.executeNode)(a,o,e)).graph}catch(e){console.error(`[schedules:poll] ${t} post-work function "${o}" error:`,e),c.errors.push({graphId:t,error:e instanceof Error?e:Error(String(e))})}}}u.updateGraphStructure(a.id,{nodes:a.nodes});let p=Object.entries(a.nodes).map(([e,t])=>`${e}:${t.status}`).join(", ");console.log(`[schedules:poll] ${t} node states: ${p}`);let h=(0,s.isScheduleTickComplete)(a);if(console.log(`[schedules:poll] ${t} tick complete? ${h}`),h){let e=(0,s.completeScheduleTick)(a),r=e.schedule?.resetNodeIds.some(t=>e.nodes[t]?.status==="failed");if(e.schedule){let t=e.schedule.consecutiveFailures??0,o=r?t+1:0;e.schedule={...e.schedule,consecutiveFailures:o};let s=e.schedule.maxConsecutiveFailures;null!=s&&o>=s&&(e.schedule={...e.schedule,state:"paused"})}let o=u.getGraph(t);o?.schedule?.state==="stopped"&&(console.log(`[schedules:poll] ${t} schedule was stopped mid-tick, preserving stopped state`),e.schedule={...e.schedule,state:"stopped"}),u.updateGraphStructure(e.id,{nodes:e.nodes,schedule:e.schedule})}c.tickedGraphIds.push(t)}catch(e){console.error(`[schedules:poll] ${t} caught error:`,e),c.errors.push({graphId:t,error:e instanceof Error?e:Error(String(e))});try{let e=u.getGraph(t);if(e?.schedule?.tickInProgress){let r=(0,s.completeScheduleTick)(e);u.updateGraphStructure(r.id,{nodes:r.nodes,schedule:r.schedule}),console.log(`[schedules:poll] ${t} force-completed stuck tick`)}}catch{}}return c}e.s(["pollSchedules",0,a])}];
40
45
 
41
46
  //# sourceMappingURL=apps_local_src_graph_082u-ls._.js.map
@@ -2,12 +2,12 @@ module.exports=[94042,41434,e=>{"use strict";var t,n=e.i(779429);e.i(508241);var
2
2
 
3
3
  Acceptance Criteria:
4
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 A(e){return{check:"llm_review",passed:!0,message:e,required:!0,command:"daemon:llm_review",timeoutMs:0,timedOut:!1,exitCode:0}}var I=e.i(883643);let C={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 x extends Error{constructor(e){super(e),this.name="GateVerificationError"}}function M(e,t){return{...e,verificationResult:t}}function O(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 F(e,t,n,r){return{passed:e,checks:n,verifiedAt:r,verifiedBy:t}}async function G(e){let{gateId:t}=e,n=e.now??new Date().toISOString(),r=e.depsSatisfied??!0,o=(a=e.gate,"pending"===a.status?(0,I.transitionGateNode)(a,{type:"START",depsSatisfied:r}):a),i={...e.policy},s=[];var a,d,u,l,c,p,f=o.status;if("passed"===f||"failed"===f||"skipped"===f)throw new x(`Cannot verify gate from terminal status '${f}'`);if("progress"===o.gateType&&"running"===o.status)return o=M((0,I.transitionGateNode)(o,{type:"AUTO_PASS",humanRequired:!1}),F(!0,"agent",[],n)),s.push(O(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]:[...C[d.gateType].defaultChecks];if(!(g=await h(a,e)).every(e=>!e.required||e.passed)){let e,r;return u=o,l=i,c=g,e=M((0,I.transitionGateNode)(u,{type:"AUTO_FAIL"}),F(!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:[O(t,e.verificationResult),r.event]}}if("quality_gate"===o.gateType&&e.graph&&e.dispatchReview){let r=await N(e.graph,t,e.dispatchReview,e.cwd);if(g.push(r),!r.passed){let e=M((0,I.transitionGateNode)(o,{type:"AUTO_FAIL"}),F(!1,"agent",g,n));return s.push(O(t,e.verificationResult)),{gate:e,policy:i,autoCheckResults:g,awaitingHuman:!1,escalated:!1,events:s,llmReviewFailed:!0,llmReviewFeedback:r.message??"LLM review failed"}}}let f="never"!==(r=C[(p=o).gateType]).humanRequirement&&("always"===r.humanRequirement||("optional"===r.humanRequirement?"human"===p.verificationStrategy.type||"hybrid"===p.verificationStrategy.type:"auto"!==p.verificationStrategy.type));if(o=M(o=(0,I.transitionGateNode)(o,{type:"AUTO_PASS",humanRequired:f}),F(!0,"agent",g,n)),s.push(O(t,o.verificationResult)),!f)return{gate:o,policy:i,autoCheckResults:g,awaitingHuman:!1,escalated:!1,events:s}}if("awaiting_human"!==o.status)throw new x(`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=M(o=(0,I.transitionGateNode)(o,{type:"HUMAN_APPROVE"}),F(!0,"human",o.verificationResult?.checks??g,n)),s.push(O(t,o.verificationResult)),{gate:o,policy:i,autoCheckResults:g,awaitingHuman:!1,escalated:!1,events:s};o=M(o=(0,I.transitionGateNode)(o,{type:"HUMAN_REJECT"}),F(!1,"human",o.verificationResult?.checks??g,n));let m=b(i,t,n);return i=m.policy,s.push(O(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 j extends Error{timeoutMs;constructor(e){super(`Graph execution exceeded timeout (${e}ms).`),this.name="GraphExecutionTimeoutError",this.timeoutMs=e}}class q 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 U=async()=>void 0,P=(0,d.promisify)(a.execFile);function L(e){return e.nowMs?.()??Date.now()}function D(e){return new Date(L(e)).toISOString()}function H(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 B(e,t){let n=Math.max(1,e.timeoutMs??t.policy.nodeTimeoutMs);try{let{stdout:t}=await P("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 K(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,I.transitionWorkNode)(n,{type:"FAIL",transient:i});if("pending"===s.status){let e=r.sleep??U;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 Q(e,t,n,r){let o=n;"pending"===o.status&&(o=(0,I.transitionWorkNode)(o,{type:"START",depsSatisfied:!0})),o.startedAt||(o={...o,startedAt:D(r)});let i=L(r),s=H(e,o),a=!1;try{let n=r.dispatchWork??(async()=>({status:"success"})),d=await K(n(o,e),s,()=>new q(t,s));if("success"===d.status){let e=(0,I.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,I.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 q,{node:V(await J(e,t,o,r,n,!0),i,r),timedOut:a}}}async function X(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=H(e,r),s=!1,a=e,d=!1;try{let e=await K(G({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 q(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=R(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
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 A(e){return{check:"llm_review",passed:!0,message:e,required:!0,command:"daemon:llm_review",timeoutMs:0,timedOut:!1,exitCode:0}}var I=e.i(883643);let C={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 x extends Error{constructor(e){super(e),this.name="GateVerificationError"}}function M(e,t){return{...e,verificationResult:t}}function O(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 G(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,I.transitionGateNode)(a,{type:"START",depsSatisfied:r}):a),i={...e.policy},s=[];var a,d,u,l,c,p,f=o.status;if("passed"===f||"failed"===f||"skipped"===f)throw new x(`Cannot verify gate from terminal status '${f}'`);if("progress"===o.gateType&&"running"===o.status)return o=M((0,I.transitionGateNode)(o,{type:"AUTO_PASS",humanRequired:!1}),G(!0,"agent",[],n)),s.push(O(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]:[...C[d.gateType].defaultChecks];if(!(g=await h(a,e)).every(e=>!e.required||e.passed)){let e,r;return u=o,l=i,c=g,e=M((0,I.transitionGateNode)(u,{type:"AUTO_FAIL"}),G(!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:[O(t,e.verificationResult),r.event]}}if("quality_gate"===o.gateType&&e.graph&&e.dispatchReview){let r=await N(e.graph,t,e.dispatchReview,e.cwd);if(g.push(r),!r.passed){let e=M((0,I.transitionGateNode)(o,{type:"AUTO_FAIL"}),G(!1,"agent",g,n));return s.push(O(t,e.verificationResult)),{gate:e,policy:i,autoCheckResults:g,awaitingHuman:!1,escalated:!1,events:s,llmReviewFailed:!0,llmReviewFeedback:r.message??"LLM review failed"}}}let f="never"!==(r=C[(p=o).gateType]).humanRequirement&&("always"===r.humanRequirement||("optional"===r.humanRequirement?"human"===p.verificationStrategy.type||"hybrid"===p.verificationStrategy.type:"auto"!==p.verificationStrategy.type));if(o=M(o=(0,I.transitionGateNode)(o,{type:"AUTO_PASS",humanRequired:f}),G(!0,"agent",g,n)),s.push(O(t,o.verificationResult)),!f)return{gate:o,policy:i,autoCheckResults:g,awaitingHuman:!1,escalated:!1,events:s}}if("awaiting_human"!==o.status)throw new x(`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=M(o=(0,I.transitionGateNode)(o,{type:"HUMAN_APPROVE"}),G(!0,"human",o.verificationResult?.checks??g,n)),s.push(O(t,o.verificationResult)),{gate:o,policy:i,autoCheckResults:g,awaitingHuman:!1,escalated:!1,events:s};o=M(o=(0,I.transitionGateNode)(o,{type:"HUMAN_REJECT"}),G(!1,"human",o.verificationResult?.checks??g,n));let m=b(i,t,n);return i=m.policy,s.push(O(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 j extends Error{timeoutMs;constructor(e){super(`Graph execution exceeded timeout (${e}ms).`),this.name="GraphExecutionTimeoutError",this.timeoutMs=e}}class q 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 U=async()=>void 0,P=(0,d.promisify)(a.execFile);function L(e){return e.nowMs?.()??Date.now()}function D(e){return new Date(L(e)).toISOString()}function H(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 B(e,t){let n=Math.max(1,e.timeoutMs??t.policy.nodeTimeoutMs);try{let{stdout:t}=await P("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 K(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,I.transitionWorkNode)(n,{type:"FAIL",transient:i});if("pending"===s.status){let e=r.sleep??U;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 Q(e,t,n,r){let o=n;"pending"===o.status&&(o=(0,I.transitionWorkNode)(o,{type:"START",depsSatisfied:!0})),o.startedAt||(o={...o,startedAt:D(r)});let i=L(r),s=H(e,o),a=!1;try{let n=r.dispatchWork??(async()=>({status:"success"})),d=await K(n(o,e),s,()=>new q(t,s));if("success"===d.status){let e=(0,I.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,I.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 q,{node:V(await J(e,t,o,r,n,!0),i,r),timedOut:a}}}async function X(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=H(e,r),s=!1,a=e,d=!1;try{let e=await K(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 q(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=R(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
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:m.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??$)(a,i),d=!0)}else if(e.escalated&&n.makeReplanRequest){let r=n.makeReplanRequest(a,t,e);r&&(a=(n.replan??$)(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 q;let i=r;"pending"===i.status&&(i=(0,I.transitionGateNode)(i,{type:"START",depsSatisfied:!0})),"running"===i.status?i=(0,I.transitionGateNode)(i,{type:"AUTO_FAIL"}):"awaiting_human"===i.status&&(i=(0,I.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 Y(t,n,r,o){let i=r;"pending"===i.status&&(i=(0,I.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 B(t,n);let{createDispatchFunction:r}=await e.A(11400);return r()(t,n)}),u=await K(r(i,t),a,()=>new q(n,a));if("success"===u.status){let e=(0,I.transitionFunctionNode)(i,{type:"COMPLETE"});return{node:V({...e,output:u.output??e.output},s,o),timedOut:d}}let l=(0,I.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 q,{node:V(W((0,I.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 j(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 Y(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 Q(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 X(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,I.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,I.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,I.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,I.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,I.transitionWorkNode)(t,{type:"SKIP"}):"function"===t.type?e.nodes[n]=(0,I.transitionFunctionNode)(t,{type:"SKIP"}):"gate"===t.type?e.nodes[n]=(0,I.transitionGateNode)(t,{type:"SKIP"}):"fork"===t.type?e.nodes[n]=(0,I.transitionForkNode)(t,{type:"SKIP"}):"join"===t.type?e.nodes[n]=(0,I.transitionJoinNode)(t,{type:"SKIP"}):"conditional"===t.type&&(e.nodes[n]=(0,I.transitionConditionalNode)(t,{type:"SKIP"}).node))}return d.node}catch(i){let n=(0,I.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",0,z],41434);var Z=e.i(951336);function ee(){let e=new Map,t=(0,n.getSQLiteDb)().prepare(`
7
7
  SELECT task_id, id, schedule
8
8
  FROM execution_graphs
9
9
  WHERE schedule IS NOT NULL
10
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 et(e={}){let t=new Z.GraphStore,n={tickedGraphIds:[],skippedGraphIds:[],errors:[],pendingWork:[]},r=ee();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 en(e,t={}){let n=new Z.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",0,en,"getGraphsWithActiveSchedules",0,ee,"pollSchedules",0,et],94042)}];
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 et(e={}){let t=new Z.GraphStore,n={tickedGraphIds:[],skippedGraphIds:[],errors:[],pendingWork:[]},r=ee();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 en(e,t={}){let n=new Z.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")};if(!n.claimScheduleTick(e))return{fired:!1,graph:r,error:Error("Tick already in progress")};let o=n.getGraph(e)??r,a=(0,i.scheduleTickIfDue)(o);if(!a.tickFired){let e=(0,i.completeScheduleTick)(o);return n.updateGraphStructure(e.id,{nodes:e.nodes,schedule:e.schedule}),{fired:!1,graph:a.graph}}n.updateGraphStructure(a.graph.id,{nodes:a.graph.nodes,schedule:a.graph.schedule});let d=a.graph,u=0;try{for(;;){u++;let e=Object.entries(d.nodes).map(([e,t])=>`${e}:${t.status}`).join(", ");console.log(`[schedules:tick] loop ${u} nodes before: ${e}`);let n=(0,s.schedulerTick)(d,t);for(let e of(console.log(`[schedules:tick] loop ${u} fn=${n.functionToRun.length} work=${n.workToRun.length} cond=${n.control.conditionalNodeIds.length}`),n.functionToRun)){let n=d.nodes[e];n&&"function"===n.type&&(d=(await z(d,e,t)).graph,console.log(`[schedules:tick] fn "${e}" → ${d.nodes[e]?.status}`))}for(let e of(n.control.conditionalNodeIds.length>0&&(d=n.graph,console.log(`[schedules:tick] applied conditional results: ${n.control.conditionalNodeIds.join(", ")}`)),n.workToRun))d=(await z(d,e,t)).graph;let r=Object.entries(d.nodes).map(([e,t])=>`${e}:${t.status}`).join(", ");if(console.log(`[schedules:tick] loop ${u} nodes after: ${r}`),(0,i.isScheduleTickComplete)(d)){console.log(`[schedules:tick] tick complete after loop ${u}`);break}if(n.complete||!(n.workToRun.length>0||n.functionToRun.length>0))break}let e=(0,i.completeScheduleTick)(d);return n.updateGraphStructure(e.id,{nodes:e.nodes,schedule:e.schedule}),{fired:!0,graph:e}}catch(t){let e=(0,i.completeScheduleTick)(d);throw n.updateGraphStructure(e.id,{nodes:e.nodes,schedule:e.schedule}),t}}e.s(["executeScheduleTick",0,en,"getGraphsWithActiveSchedules",0,ee,"pollSchedules",0,et],94042)}];
12
12
 
13
13
  //# sourceMappingURL=apps_local_src_graph_schedule-runner_ts_07-ozf_._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[87198,e=>{"use strict";var t=e.i(747909),i=e.i(174017),r=e.i(996250),n=e.i(759756),o=e.i(561916),a=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),v=e.i(626937),h=e.i(10372),f=e.i(193695);e.i(52474);var R=e.i(600220),m=e.i(846888),y=e.i(566453),A=e.i(779429),E=e.i(744071),w=e.i(391310),C=e.i(579582);async function S(){return Response.json(await (0,w.loadDbParticipants)())}function k(e){return"string"==typeof e&&e.trim()?e.trim():void 0}function b(e,t){let i,r=k(e.name),n=k(e.provider),o=k(e.model),a=k(e.id)??t;if(!a||!r||!n||!o)return null;let s=k(e.title),l=k(e.identity),d=k(e.identityFile),c=function(e){if(!Array.isArray(e))return;let t=e.map(e=>"string"==typeof e?{file:e.trim(),condition:""}:e&&"object"==typeof e&&"file"in e?{file:String(e.file??"").trim(),condition:String(e.condition??"").trim()}:null).filter(e=>null!==e&&e.file.length>0);return t.length>0?t:void 0}(e.skills),u=function(e){if(!Array.isArray(e))return;let t=e.map(e=>{if(!e||"object"!=typeof e||Array.isArray(e))return null;let t=String(e.repo??"").trim(),i=String(e.skillId??e.skill_id??"").trim();if(!t||!i)return null;let r=String(e.condition??"").trim();return{repo:t,skillId:i,...r?{condition:r}:{}}}).filter(e=>!!e);return t.length>0?t:void 0}(e.skillBindings),p=k(e.color)??"#6B7280";if(e.variables&&"object"==typeof e.variables&&!Array.isArray(e.variables)){let t=e.variables,r={};for(let[e,i]of Object.entries(t))"string"==typeof i&&(r[e]=i);Object.keys(r).length>0&&(i=r)}return{id:a,name:r,provider:n,model:o,color:p,...s?{title:s}:{},...l?{identity:l}:{},...k(e.voice)?{voice:k(e.voice)}:{},...k(e.seed)?{seed:k(e.seed)}:{},...d?{identityFile:d}:{},...c?{skills:c}:{},...u?{skillBindings:u}:{},...i?{variables:i}:{}}}async function j(e){let t,i=await e.json().catch(()=>({})),r=k(i.name),n=b(i,r?r.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/--+/g,"-"):void 0);if(!n)return Response.json({error:"name, provider, and model required"},{status:400});try{t=await (0,m.createAgent)(E.LOCAL_USER.id,{id:n.id,name:n.name,title:n.title,style:"balanced",description:n.identity,model:n.model??void 0,provider:n.provider,color:n.color,voice:k(i.voice),seed:k(i.seed)}),await (0,m.setAgentSkills)(t.id,n.skills??[]),await (0,y.setAgentSkillBindings)(t.id,n.skillBindings??[]),(0,C.ensureAgent)(t.id,{voice:k(i.voice),seed:k(i.seed)})}catch(e){return console.error("Failed to create agent in DB:",e),Response.json({error:"Failed to create agent"},{status:500})}let o={id:t.id,name:t.name,...t.title||n.title?{title:t.title||n.title}:{},provider:t.provider||n.provider||"claude",model:t.model||n.model||null,color:t.color||n.color||"#6B7280",...t.description||n.identity?{identity:t.description||n.identity}:{},...t.voice||n.voice?{voice:t.voice||n.voice}:{},...t.seed||n.seed?{seed:t.seed||n.seed}:{},...n.skills?.length?{skills:n.skills}:{},...n.skillBindings?.length?{skillBindings:n.skillBindings}:{}},a=k(i.projectId)??k(i.teamId);if(a)try{(0,A.getSQLiteDb)().prepare("INSERT OR IGNORE INTO project_agents (project_id, agent_id, routing_order) VALUES (?, ?, (SELECT COALESCE(MAX(routing_order), -1) + 1 FROM project_agents WHERE project_id = ?))").run(a,o.id,a)}catch(e){console.error("Failed to assign agent to project:",e)}return Response.json(o,{status:201})}async function T(e){let t,i=await e.json().catch(()=>({})),r=b(i);if(!r)return Response.json({error:"id, name, provider, and model required"},{status:400});try{t=await (0,m.updateAgent)(r.id,E.LOCAL_USER.id,{name:r.name,title:r.title,description:r.identity,model:r.model??void 0,provider:r.provider,color:r.color,voice:k(i.voice),seed:k(i.seed)}),await (0,m.setAgentSkills)(r.id,r.skills??[]),await (0,y.setAgentSkillBindings)(r.id,r.skillBindings??[]),(0,C.ensureAgent)(r.id,{voice:k(i.voice),seed:k(i.seed)})}catch(e){return console.error("Failed to update agent in DB:",e),Response.json({error:"Failed to update agent"},{status:500})}if(!t)return Response.json({error:"Agent not found"},{status:404});let n={id:t.id,name:t.name,...t.title||r.title?{title:t.title||r.title}:{},provider:t.provider||r.provider||"claude",model:t.model||r.model||null,color:t.color||r.color||"#6B7280",...t.description||r.identity?{identity:t.description||r.identity}:{},...t.voice||r.voice?{voice:t.voice||r.voice}:{},...t.seed||r.seed?{seed:t.seed||r.seed}:{},...r.skills?.length?{skills:r.skills}:{},...r.skillBindings?.length?{skillBindings:r.skillBindings}:{}};return Response.json(n)}async function _(e){let t=await e.json().catch(()=>({}));if(!Array.isArray(t.orderedIds)||t.orderedIds.some(e=>"string"!=typeof e))return Response.json({error:"orderedIds must be a string array"},{status:400});let i=await (0,w.loadDbParticipants)(),r=new Map(t.orderedIds.map((e,t)=>[e,t]));return i.sort((e,t)=>(r.get(e.id)??999)-(r.get(t.id)??999)),Response.json(i)}async function O(e){let{searchParams:t}=new URL(e.url),i=t.get("id");if(!i)return Response.json({error:"id required"},{status:400});try{await (0,m.deleteAgent)(i,E.LOCAL_USER.id)}catch(e){console.error("Failed to delete agent from DB:",e)}return Response.json({ok:!0})}e.s(["DELETE",0,O,"GET",0,S,"PATCH",0,T,"POST",0,j,"PUT",0,_,"dynamic",0,"force-dynamic","runtime",0,"nodejs"],674618);var x=e.i(674618);let P=new t.AppRouteRouteModule({definition:{kind:i.RouteKind.APP_ROUTE,page:"/api/participants/route",pathname:"/api/participants",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/apps/local/app/api/participants/route.ts",nextConfigOutput:"standalone",userland:x,...{}}),{workAsyncStorage:N,workUnitAsyncStorage:I,serverHooks:B}=P;async function U(e,t,r){r.requestMeta&&(0,n.setRequestMeta)(e,r.requestMeta),P.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let m="/api/participants/route";m=m.replace(/\/index$/,"")||"/";let y=await P.prepare(e,t,{srcPage:m,multiZoneDraftMode:!1});if(!y)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:A,params:E,nextConfig:w,parsedUrl:C,isDraftMode:S,prerenderManifest:k,routerServerContext:b,isOnDemandRevalidate:j,revalidateOnlyGenerated:T,resolvedPathname:_,clientReferenceManifest:O,serverActionsManifest:x}=y,N=(0,s.normalizeAppPath)(m),I=!!(k.dynamicRoutes[N]||k.routes[_]),B=async()=>((null==b?void 0:b.render404)?await b.render404(e,t,C,!1):t.end("This page could not be found"),null);if(I&&!S){let e=!!k.routes[_],t=k.dynamicRoutes[N];if(t&&!1===t.fallback&&!e){if(w.adapterPath)return await B();throw new f.NoFallbackError}}let U=null;!I||P.isDev||S||(U="/index"===(U=_)?"/":U);let q=!0===P.isDev||!I,D=I&&!q;x&&O&&(0,a.setManifestsSingleton)({page:m,clientReferenceManifest:O,serverActionsManifest:x});let H=e.method||"GET",L=(0,o.getTracer)(),M=L.getActiveScopeSpan(),F=!!(null==b?void 0:b.isWrappedByNextServer),$=!!(0,n.getRequestMeta)(e,"minimalMode"),K=(0,n.getRequestMeta)(e,"incrementalCache")||await P.getIncrementalCache(e,w,k,$);null==K||K.resetRequestCache(),globalThis.__incrementalCache=K;let G={params:E,previewProps:k.preview,renderOpts:{experimental:{authInterrupts:!!w.experimental.authInterrupts},cacheComponents:!!w.cacheComponents,supportsDynamicResponse:q,incrementalCache:K,cacheLifeProfiles:w.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,i,r,n)=>P.onRequestError(e,t,r,n,b)},sharedContext:{buildId:A}},V=new l.NodeNextRequest(e),W=new l.NodeNextResponse(t),X=d.NextRequestAdapter.fromNodeNextRequest(V,(0,d.signalFromNodeResponse)(t));try{let n,a=async e=>P.handle(X,G).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let i=L.getRootSpanAttributes();if(!i)return;if(i.get("next.span_type")!==c.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${i.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=i.get("next.route");if(r){let t=`${H} ${r}`;e.setAttributes({"next.route":r,"http.route":r,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",r),n.updateName(t))}else e.updateName(`${H} ${m}`)}),s=async n=>{var o,s;let l=async({previousCacheEntry:i})=>{try{if(!$&&j&&T&&!i)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let o=await a(n);e.fetchMetrics=G.renderOpts.fetchMetrics;let s=G.renderOpts.pendingWaitUntil;s&&r.waitUntil&&(r.waitUntil(s),s=void 0);let l=G.renderOpts.collectedTags;if(!I)return await (0,p.sendResponse)(V,W,o,G.renderOpts.pendingWaitUntil),null;{let e=await o.blob(),t=(0,g.toNodeOutgoingHttpHeaders)(o.headers);l&&(t[h.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let i=void 0!==G.renderOpts.collectedRevalidate&&!(G.renderOpts.collectedRevalidate>=h.INFINITE_CACHE)&&G.renderOpts.collectedRevalidate,r=void 0===G.renderOpts.collectedExpire||G.renderOpts.collectedExpire>=h.INFINITE_CACHE?void 0:G.renderOpts.collectedExpire;return{value:{kind:R.CachedRouteKind.APP_ROUTE,status:o.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:i,expire:r}}}}catch(t){throw(null==i?void 0:i.isStale)&&await P.onRequestError(e,t,{routerKind:"App Router",routePath:m,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:j})},!1,b),t}},d=await P.handleResponse({req:e,nextConfig:w,cacheKey:U,routeKind:i.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:k,isRoutePPREnabled:!1,isOnDemandRevalidate:j,revalidateOnlyGenerated:T,responseGenerator:l,waitUntil:r.waitUntil,isMinimalMode:$});if(!I)return null;if((null==d||null==(o=d.value)?void 0:o.kind)!==R.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(s=d.value)?void 0:s.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});$||t.setHeader("x-nextjs-cache",j?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),S&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let c=(0,g.fromNodeOutgoingHttpHeaders)(d.value.headers);return $&&I||c.delete(h.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||c.get("Cache-Control")||c.set("Cache-Control",(0,v.getCacheControlHeader)(d.cacheControl)),await (0,p.sendResponse)(V,W,new Response(d.value.body,{headers:c,status:d.value.status||200})),null};F&&M?await s(M):(n=L.getActiveScopeSpan(),await L.withPropagatedContext(e.headers,()=>L.trace(c.BaseServerSpan.handleRequest,{spanName:`${H} ${m}`,kind:o.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},s),void 0,!F))}catch(t){if(t instanceof f.NoFallbackError||await P.onRequestError(e,t,{routerKind:"App Router",routePath:N,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:j})},!1,b),I)throw t;return await (0,p.sendResponse)(V,W,new Response(null,{status:500})),null}}e.s(["handler",0,U,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:N,workUnitAsyncStorage:I})},"routeModule",0,P,"serverHooks",0,B,"workAsyncStorage",0,N,"workUnitAsyncStorage",0,I],87198)}];
1
+ module.exports=[87198,e=>{"use strict";var t=e.i(747909),r=e.i(174017),i=e.i(996250),n=e.i(759756),o=e.i(561916),a=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),v=e.i(626937),h=e.i(10372),f=e.i(193695);e.i(52474);var R=e.i(600220),m=e.i(846888),y=e.i(566453),A=e.i(779429),E=e.i(744071),w=e.i(391310),C=e.i(579582);async function S(){return Response.json(await (0,w.loadDbParticipants)())}function k(e){return"string"==typeof e&&e.trim()?e.trim():void 0}function b(e,t){let r,i=k(e.name),n=k(e.provider),o=k(e.model),a=k(e.id)??t;if(!a||!i||!n||!o)return null;let s=k(e.role),l=k(e.identity),d=k(e.identityFile),c=function(e){if(!Array.isArray(e))return;let t=e.map(e=>"string"==typeof e?{file:e.trim(),condition:""}:e&&"object"==typeof e&&"file"in e?{file:String(e.file??"").trim(),condition:String(e.condition??"").trim()}:null).filter(e=>null!==e&&e.file.length>0);return t.length>0?t:void 0}(e.skills),u=function(e){if(!Array.isArray(e))return;let t=e.map(e=>{if(!e||"object"!=typeof e||Array.isArray(e))return null;let t=String(e.repo??"").trim(),r=String(e.skillId??e.skill_id??"").trim();if(!t||!r)return null;let i=String(e.condition??"").trim();return{repo:t,skillId:r,...i?{condition:i}:{}}}).filter(e=>!!e);return t.length>0?t:void 0}(e.skillBindings),p=k(e.color)??"#6B7280";if(e.variables&&"object"==typeof e.variables&&!Array.isArray(e.variables)){let t=e.variables,i={};for(let[e,r]of Object.entries(t))"string"==typeof r&&(i[e]=r);Object.keys(i).length>0&&(r=i)}return{id:a,name:i,provider:n,model:o,color:p,...s?{role:s}:{},...l?{identity:l}:{},...k(e.voice)?{voice:k(e.voice)}:{},...k(e.seed)?{seed:k(e.seed)}:{},...d?{identityFile:d}:{},...c?{skills:c}:{},...u?{skillBindings:u}:{},...r?{variables:r}:{}}}async function j(e){let t,r=await e.json().catch(()=>({})),i=k(r.name),n=b(r,i?i.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/--+/g,"-"):void 0);if(!n)return Response.json({error:"name, provider, and model required"},{status:400});try{t=await (0,m.createAgent)(E.LOCAL_USER.id,{id:n.id,name:n.name,role:n.role,style:"balanced",description:n.identity,model:n.model??void 0,provider:n.provider,color:n.color,voice:k(r.voice),seed:k(r.seed)}),await (0,m.setAgentSkills)(t.id,n.skills??[]),await (0,y.setAgentSkillBindings)(t.id,n.skillBindings??[]),(0,C.ensureAgent)(t.id,{voice:k(r.voice),seed:k(r.seed)})}catch(e){return console.error("Failed to create agent in DB:",e),Response.json({error:"Failed to create agent"},{status:500})}let o={id:t.id,name:t.name,...t.role||n.role?{role:t.role||n.role}:{},provider:t.provider||n.provider||"claude",model:t.model||n.model||null,color:t.color||n.color||"#6B7280",...t.description||n.identity?{identity:t.description||n.identity}:{},...t.voice||n.voice?{voice:t.voice||n.voice}:{},...t.seed||n.seed?{seed:t.seed||n.seed}:{},...n.skills?.length?{skills:n.skills}:{},...n.skillBindings?.length?{skillBindings:n.skillBindings}:{}},a=k(r.projectId)??k(r.teamId);if(a)try{(0,A.getSQLiteDb)().prepare("INSERT OR IGNORE INTO project_agents (project_id, agent_id, routing_order) VALUES (?, ?, (SELECT COALESCE(MAX(routing_order), -1) + 1 FROM project_agents WHERE project_id = ?))").run(a,o.id,a)}catch(e){console.error("Failed to assign agent to project:",e)}return Response.json(o,{status:201})}async function T(e){let t,r=await e.json().catch(()=>({})),i=b(r);if(!i)return Response.json({error:"id, name, provider, and model required"},{status:400});try{t=await (0,m.updateAgent)(i.id,E.LOCAL_USER.id,{name:i.name,role:i.role,description:i.identity,model:i.model??void 0,provider:i.provider,color:i.color,voice:k(r.voice),seed:k(r.seed)}),await (0,m.setAgentSkills)(i.id,i.skills??[]),await (0,y.setAgentSkillBindings)(i.id,i.skillBindings??[]),(0,C.ensureAgent)(i.id,{voice:k(r.voice),seed:k(r.seed)})}catch(e){return console.error("Failed to update agent in DB:",e),Response.json({error:"Failed to update agent"},{status:500})}if(!t)return Response.json({error:"Agent not found"},{status:404});let n={id:t.id,name:t.name,...t.role||i.role?{role:t.role||i.role}:{},provider:t.provider||i.provider||"claude",model:t.model||i.model||null,color:t.color||i.color||"#6B7280",...t.description||i.identity?{identity:t.description||i.identity}:{},...t.voice||i.voice?{voice:t.voice||i.voice}:{},...t.seed||i.seed?{seed:t.seed||i.seed}:{},...i.skills?.length?{skills:i.skills}:{},...i.skillBindings?.length?{skillBindings:i.skillBindings}:{}};return Response.json(n)}async function _(e){let t=await e.json().catch(()=>({}));if(!Array.isArray(t.orderedIds)||t.orderedIds.some(e=>"string"!=typeof e))return Response.json({error:"orderedIds must be a string array"},{status:400});let r=await (0,w.loadDbParticipants)(),i=new Map(t.orderedIds.map((e,t)=>[e,t]));return r.sort((e,t)=>(i.get(e.id)??999)-(i.get(t.id)??999)),Response.json(r)}async function O(e){let{searchParams:t}=new URL(e.url),r=t.get("id");if(!r)return Response.json({error:"id required"},{status:400});try{await (0,m.deleteAgent)(r,E.LOCAL_USER.id)}catch(e){console.error("Failed to delete agent from DB:",e)}return Response.json({ok:!0})}e.s(["DELETE",0,O,"GET",0,S,"PATCH",0,T,"POST",0,j,"PUT",0,_,"dynamic",0,"force-dynamic","runtime",0,"nodejs"],674618);var x=e.i(674618);let P=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/participants/route",pathname:"/api/participants",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/apps/local/app/api/participants/route.ts",nextConfigOutput:"standalone",userland:x,...{}}),{workAsyncStorage:N,workUnitAsyncStorage:I,serverHooks:B}=P;async function U(e,t,i){i.requestMeta&&(0,n.setRequestMeta)(e,i.requestMeta),P.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let m="/api/participants/route";m=m.replace(/\/index$/,"")||"/";let y=await P.prepare(e,t,{srcPage:m,multiZoneDraftMode:!1});if(!y)return t.statusCode=400,t.end("Bad Request"),null==i.waitUntil||i.waitUntil.call(i,Promise.resolve()),null;let{buildId:A,params:E,nextConfig:w,parsedUrl:C,isDraftMode:S,prerenderManifest:k,routerServerContext:b,isOnDemandRevalidate:j,revalidateOnlyGenerated:T,resolvedPathname:_,clientReferenceManifest:O,serverActionsManifest:x}=y,N=(0,s.normalizeAppPath)(m),I=!!(k.dynamicRoutes[N]||k.routes[_]),B=async()=>((null==b?void 0:b.render404)?await b.render404(e,t,C,!1):t.end("This page could not be found"),null);if(I&&!S){let e=!!k.routes[_],t=k.dynamicRoutes[N];if(t&&!1===t.fallback&&!e){if(w.adapterPath)return await B();throw new f.NoFallbackError}}let U=null;!I||P.isDev||S||(U="/index"===(U=_)?"/":U);let q=!0===P.isDev||!I,D=I&&!q;x&&O&&(0,a.setManifestsSingleton)({page:m,clientReferenceManifest:O,serverActionsManifest:x});let H=e.method||"GET",L=(0,o.getTracer)(),M=L.getActiveScopeSpan(),F=!!(null==b?void 0:b.isWrappedByNextServer),$=!!(0,n.getRequestMeta)(e,"minimalMode"),K=(0,n.getRequestMeta)(e,"incrementalCache")||await P.getIncrementalCache(e,w,k,$);null==K||K.resetRequestCache(),globalThis.__incrementalCache=K;let G={params:E,previewProps:k.preview,renderOpts:{experimental:{authInterrupts:!!w.experimental.authInterrupts},cacheComponents:!!w.cacheComponents,supportsDynamicResponse:q,incrementalCache:K,cacheLifeProfiles:w.cacheLife,waitUntil:i.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,i,n)=>P.onRequestError(e,t,i,n,b)},sharedContext:{buildId:A}},V=new l.NodeNextRequest(e),W=new l.NodeNextResponse(t),X=d.NextRequestAdapter.fromNodeNextRequest(V,(0,d.signalFromNodeResponse)(t));try{let n,a=async e=>P.handle(X,G).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=L.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==c.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 i=r.get("next.route");if(i){let t=`${H} ${i}`;e.setAttributes({"next.route":i,"http.route":i,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",i),n.updateName(t))}else e.updateName(`${H} ${m}`)}),s=async n=>{var o,s;let l=async({previousCacheEntry:r})=>{try{if(!$&&j&&T&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let o=await a(n);e.fetchMetrics=G.renderOpts.fetchMetrics;let s=G.renderOpts.pendingWaitUntil;s&&i.waitUntil&&(i.waitUntil(s),s=void 0);let l=G.renderOpts.collectedTags;if(!I)return await (0,p.sendResponse)(V,W,o,G.renderOpts.pendingWaitUntil),null;{let e=await o.blob(),t=(0,g.toNodeOutgoingHttpHeaders)(o.headers);l&&(t[h.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==G.renderOpts.collectedRevalidate&&!(G.renderOpts.collectedRevalidate>=h.INFINITE_CACHE)&&G.renderOpts.collectedRevalidate,i=void 0===G.renderOpts.collectedExpire||G.renderOpts.collectedExpire>=h.INFINITE_CACHE?void 0:G.renderOpts.collectedExpire;return{value:{kind:R.CachedRouteKind.APP_ROUTE,status:o.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:i}}}}catch(t){throw(null==r?void 0:r.isStale)&&await P.onRequestError(e,t,{routerKind:"App Router",routePath:m,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:j})},!1,b),t}},d=await P.handleResponse({req:e,nextConfig:w,cacheKey:U,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:k,isRoutePPREnabled:!1,isOnDemandRevalidate:j,revalidateOnlyGenerated:T,responseGenerator:l,waitUntil:i.waitUntil,isMinimalMode:$});if(!I)return null;if((null==d||null==(o=d.value)?void 0:o.kind)!==R.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(s=d.value)?void 0:s.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});$||t.setHeader("x-nextjs-cache",j?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),S&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let c=(0,g.fromNodeOutgoingHttpHeaders)(d.value.headers);return $&&I||c.delete(h.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||c.get("Cache-Control")||c.set("Cache-Control",(0,v.getCacheControlHeader)(d.cacheControl)),await (0,p.sendResponse)(V,W,new Response(d.value.body,{headers:c,status:d.value.status||200})),null};F&&M?await s(M):(n=L.getActiveScopeSpan(),await L.withPropagatedContext(e.headers,()=>L.trace(c.BaseServerSpan.handleRequest,{spanName:`${H} ${m}`,kind:o.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},s),void 0,!F))}catch(t){if(t instanceof f.NoFallbackError||await P.onRequestError(e,t,{routerKind:"App Router",routePath:N,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:j})},!1,b),I)throw t;return await (0,p.sendResponse)(V,W,new Response(null,{status:500})),null}}e.s(["handler",0,U,"patchFetch",0,function(){return(0,i.patchFetch)({workAsyncStorage:N,workUnitAsyncStorage:I})},"routeModule",0,P,"serverHooks",0,B,"workAsyncStorage",0,N,"workUnitAsyncStorage",0,I],87198)}];
2
2
 
3
3
  //# sourceMappingURL=node_modules_next_dist_esm_build_templates_app-route_0_l0fpi.js.map