@mndrk/agx 2.4.6 → 2.4.7

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 (357) hide show
  1. package/cloud-runtime/standalone/apps/local/.next/BUILD_ID +1 -1
  2. package/cloud-runtime/standalone/apps/local/.next/app-path-routes-manifest.json +4 -0
  3. package/cloud-runtime/standalone/apps/local/.next/build-manifest.json +2 -2
  4. package/cloud-runtime/standalone/apps/local/.next/prerender-manifest.json +3 -3
  5. package/cloud-runtime/standalone/apps/local/.next/routes-manifest.json +33 -0
  6. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.html +2 -2
  7. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.rsc +1 -1
  8. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  9. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  10. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  11. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  12. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  13. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  14. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.html +2 -2
  15. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.rsc +2 -2
  16. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  17. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  18. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  19. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  20. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  21. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  22. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/[id]/page.js.nft.json +1 -1
  23. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -1
  24. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page.js.nft.json +1 -1
  25. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page_client-reference-manifest.js +1 -1
  26. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.html +2 -2
  27. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.rsc +3 -3
  28. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_full.segment.rsc +3 -3
  29. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_head.segment.rsc +1 -1
  30. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_index.segment.rsc +2 -2
  31. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_tree.segment.rsc +2 -2
  32. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents/__PAGE__.segment.rsc +2 -2
  33. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents.segment.rsc +1 -1
  34. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agent-specs/route.js.nft.json +1 -1
  35. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/[id]/profile/route.js.nft.json +1 -1
  36. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/export/route.js.nft.json +1 -1
  37. package/cloud-runtime/standalone/apps/local/.next/server/app/api/chat/route.js.nft.json +1 -1
  38. package/cloud-runtime/standalone/apps/local/.next/server/app/api/file-search/route.js.nft.json +1 -1
  39. package/cloud-runtime/standalone/apps/local/.next/server/app/api/participants/route.js.nft.json +1 -1
  40. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/activities/route.js +1 -1
  41. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/activities/route.js.nft.json +1 -1
  42. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/notes/[noteId]/route.js.nft.json +1 -1
  43. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/notes/route.js.nft.json +1 -1
  44. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/program/route/app-paths-manifest.json +3 -0
  45. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/program/route/build-manifest.json +11 -0
  46. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/program/route/server-reference-manifest.json +4 -0
  47. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/program/route.js +13 -0
  48. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/program/route.js.map +5 -0
  49. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/program/route.js.nft.json +1 -0
  50. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/program/route_client-reference-manifest.js +2 -0
  51. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/route.js.nft.json +1 -1
  52. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/scheduled-tasks/route.js.nft.json +1 -1
  53. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/validate/route.js.nft.json +1 -1
  54. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/worker/route.js.nft.json +1 -1
  55. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/route.js.nft.json +1 -1
  56. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/search/route.js.nft.json +1 -1
  57. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/teams/route.js.nft.json +1 -1
  58. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/export/route/app-paths-manifest.json +3 -0
  59. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/export/route/build-manifest.json +11 -0
  60. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/export/route/server-reference-manifest.json +4 -0
  61. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/export/route.js +11 -0
  62. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/export/route.js.map +5 -0
  63. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/export/route.js.nft.json +1 -0
  64. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/export/route_client-reference-manifest.js +2 -0
  65. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/import/route/app-paths-manifest.json +3 -0
  66. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/import/route/build-manifest.json +11 -0
  67. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/import/route/server-reference-manifest.json +4 -0
  68. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/import/route.js +11 -0
  69. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/import/route.js.map +5 -0
  70. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/import/route.js.nft.json +1 -0
  71. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/import/route_client-reference-manifest.js +2 -0
  72. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/route.js.nft.json +1 -1
  73. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/poll/route.js.nft.json +1 -1
  74. package/cloud-runtime/standalone/apps/local/.next/server/app/api/providers/check/[id]/route.js.nft.json +1 -1
  75. package/cloud-runtime/standalone/apps/local/.next/server/app/api/providers/route.js.nft.json +1 -1
  76. package/cloud-runtime/standalone/apps/local/.next/server/app/api/queue/route.js.nft.json +1 -1
  77. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/debug/route.js.nft.json +1 -1
  78. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/poll/route.js.nft.json +1 -1
  79. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/assign/route.js.nft.json +1 -1
  80. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/available/route.js.nft.json +1 -1
  81. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/detail/route.js.nft.json +1 -1
  82. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/history/route.js.nft.json +1 -1
  83. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/learn/route.js.nft.json +1 -1
  84. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/route.js.nft.json +1 -1
  85. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/unlearn/route.js.nft.json +1 -1
  86. package/cloud-runtime/standalone/apps/local/.next/server/app/api/status/route.js.nft.json +1 -1
  87. package/cloud-runtime/standalone/apps/local/.next/server/app/api/summarize/route.js.nft.json +1 -1
  88. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/[commentId]/route.js.nft.json +1 -1
  89. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/route.js.nft.json +1 -1
  90. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/verify/route.js.nft.json +1 -1
  91. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/route.js.nft.json +1 -1
  92. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/route.js.nft.json +1 -1
  93. package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/knowledge/route.js.nft.json +1 -1
  94. package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/route.js.nft.json +1 -1
  95. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/items/[id]/recap/route.js.nft.json +1 -1
  96. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/runs/scripted/route.js.nft.json +1 -1
  97. package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/status/route.js.nft.json +1 -1
  98. package/cloud-runtime/standalone/apps/local/.next/server/app/api/update-check/route.js.nft.json +1 -1
  99. package/cloud-runtime/standalone/apps/local/.next/server/app/index.html +2 -2
  100. package/cloud-runtime/standalone/apps/local/.next/server/app/index.rsc +3 -3
  101. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  102. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_full.segment.rsc +3 -3
  103. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_head.segment.rsc +1 -1
  104. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_index.segment.rsc +2 -2
  105. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  106. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos/page_client-reference-manifest.js +1 -1
  107. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.html +2 -2
  108. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.rsc +2 -2
  109. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/_full.segment.rsc +2 -2
  110. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/_head.segment.rsc +1 -1
  111. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/_index.segment.rsc +2 -2
  112. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/_tree.segment.rsc +2 -2
  113. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/integrations/github/select-repos/__PAGE__.segment.rsc +1 -1
  114. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/integrations/github/select-repos.segment.rsc +1 -1
  115. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/integrations/github.segment.rsc +1 -1
  116. package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/integrations.segment.rsc +1 -1
  117. package/cloud-runtime/standalone/apps/local/.next/server/app/page_client-reference-manifest.js +1 -1
  118. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page.js.nft.json +1 -1
  119. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page_client-reference-manifest.js +1 -1
  120. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page.js.nft.json +1 -1
  121. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page_client-reference-manifest.js +1 -1
  122. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page.js.nft.json +1 -1
  123. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page_client-reference-manifest.js +1 -1
  124. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page.js.nft.json +1 -1
  125. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page_client-reference-manifest.js +1 -1
  126. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/notifications/page.js.nft.json +1 -1
  127. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/notifications/page_client-reference-manifest.js +1 -1
  128. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page.js.nft.json +1 -1
  129. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page_client-reference-manifest.js +1 -1
  130. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page.js.nft.json +1 -1
  131. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page_client-reference-manifest.js +1 -1
  132. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page.js.nft.json +1 -1
  133. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
  134. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/prs/page.js.nft.json +1 -1
  135. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/prs/page_client-reference-manifest.js +1 -1
  136. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page.js.nft.json +1 -1
  137. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page_client-reference-manifest.js +1 -1
  138. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page.js.nft.json +1 -1
  139. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page_client-reference-manifest.js +1 -1
  140. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page.js.nft.json +1 -1
  141. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page_client-reference-manifest.js +1 -1
  142. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page.js.nft.json +1 -1
  143. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page_client-reference-manifest.js +1 -1
  144. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page.js.nft.json +1 -1
  145. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page_client-reference-manifest.js +1 -1
  146. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page.js.nft.json +1 -1
  147. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page_client-reference-manifest.js +1 -1
  148. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page.js.nft.json +1 -1
  149. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page_client-reference-manifest.js +1 -1
  150. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page.js.nft.json +1 -1
  151. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page_client-reference-manifest.js +1 -1
  152. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/page/app-paths-manifest.json +3 -0
  153. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/page/build-manifest.json +18 -0
  154. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/page/next-font-manifest.json +11 -0
  155. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/page/react-loadable-manifest.json +1 -0
  156. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/page/server-reference-manifest.json +4 -0
  157. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/page.js +16 -0
  158. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/page.js.map +5 -0
  159. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/page.js.nft.json +1 -0
  160. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/page_client-reference-manifest.js +2 -0
  161. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/[tracker]/page.js.nft.json +1 -1
  162. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/[tracker]/page_client-reference-manifest.js +1 -1
  163. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/connect/page.js.nft.json +1 -1
  164. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/connect/page_client-reference-manifest.js +1 -1
  165. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/page.js.nft.json +1 -1
  166. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/page_client-reference-manifest.js +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/setup/page.js.nft.json +1 -1
  178. package/cloud-runtime/standalone/apps/local/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  179. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.html +2 -2
  180. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.rsc +3 -3
  181. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_full.segment.rsc +3 -3
  182. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_head.segment.rsc +1 -1
  183. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_index.segment.rsc +2 -2
  184. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
  185. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +2 -2
  186. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup.segment.rsc +1 -1
  187. package/cloud-runtime/standalone/apps/local/.next/server/app/status/page_client-reference-manifest.js +1 -1
  188. package/cloud-runtime/standalone/apps/local/.next/server/app/status.html +2 -2
  189. package/cloud-runtime/standalone/apps/local/.next/server/app/status.rsc +2 -2
  190. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_full.segment.rsc +2 -2
  191. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_head.segment.rsc +1 -1
  192. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_index.segment.rsc +2 -2
  193. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_tree.segment.rsc +2 -2
  194. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status/__PAGE__.segment.rsc +1 -1
  195. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status.segment.rsc +1 -1
  196. package/cloud-runtime/standalone/apps/local/.next/server/app-paths-manifest.json +4 -0
  197. package/cloud-runtime/standalone/apps/local/.next/server/chunks/30bdd_server_app_api_projects_[id]_workspace_export_route_actions_e161f108.js +3 -0
  198. package/cloud-runtime/standalone/apps/local/.next/server/chunks/30bdd_server_app_api_projects_[id]_workspace_import_route_actions_10d2bce2.js +3 -0
  199. package/cloud-runtime/standalone/apps/local/.next/server/chunks/7255d_app_api_projects_[id]_objectives_[objectiveId]_program_route_actions_e6cdbc76.js +3 -0
  200. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__1563ebff._.js +2 -2
  201. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__3fdd57cb._.js +1 -1
  202. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__45af4365._.js +1 -1
  203. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__683b7ad7._.js +1 -1
  204. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__736d5859._.js +1 -1
  205. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__96b5ea56._.js +3 -0
  206. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__ba72d342._.js +5 -5
  207. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__c3188470._.js +1 -1
  208. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__eb69343e._.js +3 -0
  209. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_1d99e7a5._.js +1 -1
  210. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_4d88e4dc._.js +91 -0
  211. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_4dec65a2._.js +1 -1
  212. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_50e3a6e3._.js +1 -1
  213. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_56a2544c._.js +1 -1
  214. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_5843a1a1._.js +1 -1
  215. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_a15e73a6._.js +1 -1
  216. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_bd72806a._.js +1 -1
  217. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_c101ba9e._.js +1 -1
  218. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_c530bd77._.js +11 -0
  219. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_d69937f2._.js +91 -0
  220. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_e2867b32._.js +3 -0
  221. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_e32b0cab._.js +91 -0
  222. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_5ab8f104._.js +1 -1
  223. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_db_ts_77c23d6c._.js +1 -1
  224. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0da96_local__next-internal_server_app_projects_[slug]_thread_page_actions_3ceeb59b.js +3 -0
  225. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__1e0fd816._.js +3 -0
  226. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__42499ecf._.js +3 -0
  227. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__5f31e40b._.js +3 -0
  228. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__636799fb._.js +3 -0
  229. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{[root-of-the-server]__4bf7d5b9._.js → [root-of-the-server]__74436f61._.js} +2 -2
  230. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__9434d6d7._.js +3 -0
  231. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__bd339da0._.js +3 -0
  232. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__d08d7899._.js +3 -0
  233. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__e02a457c._.js +3 -0
  234. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__e3a1fef0._.js +3 -0
  235. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__f802e7d1._.js +3 -0
  236. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__ff96bb77._.js +3 -0
  237. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_6a2ba8f0._.js +3 -0
  238. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_7cb6b08a._.js +3 -0
  239. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_a0f42923._.js +7 -0
  240. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_a93c1059._.js +3 -0
  241. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{apps_local_components_PromptJobBoard_tsx_281b2873._.js → apps_local_04cb9fd5._.js} +3 -3
  242. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_15502af8._.js +3 -0
  243. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_16eaf7ae._.js +3 -0
  244. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_3c11c068._.js +8 -0
  245. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_89b49aad._.js +7 -0
  246. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_988d29c0._.js +1 -1
  247. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_ae1a134f._.js +7 -0
  248. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_agents_page_tsx_2a02508d._.js +1 -1
  249. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_folders_page_tsx_72fb68e5._.js +1 -1
  250. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_layout_tsx_3bb31889._.js +1 -1
  251. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_page_tsx_76330306._.js +1 -1
  252. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_b8e580cc._.js +4 -0
  253. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_TrackerBoard_tsx_98970bab._.js +2 -2
  254. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{apps_local_app_projects_[slug]_thread_[threadId]_page_tsx_2a1d1d5e._.js → apps_local_components_chat-ui_ChatContainer_tsx_47371955._.js} +2 -2
  255. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_projects_ProjectObjectivesWorkspace_tsx_751ab3d3._.js +3 -3
  256. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_eb223411._.js +18 -0
  257. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{apps_local_7d1abfbf._.js → apps_local_f1c9872a._.js} +2 -2
  258. package/cloud-runtime/standalone/apps/local/.next/server/functions-config-manifest.json +3 -0
  259. package/cloud-runtime/standalone/apps/local/.next/server/middleware-manifest.json +5 -5
  260. package/cloud-runtime/standalone/apps/local/.next/server/next-font-manifest.js +1 -1
  261. package/cloud-runtime/standalone/apps/local/.next/server/next-font-manifest.json +4 -0
  262. package/cloud-runtime/standalone/apps/local/.next/server/pages/404.html +2 -2
  263. package/cloud-runtime/standalone/apps/local/.next/server/pages/500.html +2 -2
  264. package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.js +1 -1
  265. package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.json +1 -1
  266. package/cloud-runtime/standalone/apps/local/.next/static/chunks/08e75b35d6c52269.js +1 -0
  267. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0d22a723b9b96e65.js +1 -0
  268. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{cb19d71dd7ffb935.js → 1585dd5f9ec4866a.js} +1 -1
  269. package/cloud-runtime/standalone/apps/local/.next/static/chunks/1bc8cc9cbb99c1ed.js +1 -0
  270. package/cloud-runtime/standalone/apps/local/.next/static/chunks/2586c0baa16e9a0d.js +16 -0
  271. package/cloud-runtime/standalone/apps/local/.next/static/chunks/2aa24a251622fd06.js +5 -0
  272. package/cloud-runtime/standalone/apps/local/.next/static/chunks/39513207112d6828.js +1 -0
  273. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{74e3a3e93be78db8.js → 40857295bb9226c4.js} +7 -7
  274. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{8d8fe711583a59f0.js → 41ae15220fc19bf7.js} +2 -2
  275. package/cloud-runtime/standalone/apps/local/.next/static/chunks/5092f14c2bf43204.js +16 -0
  276. package/cloud-runtime/standalone/apps/local/.next/static/chunks/5159169343ce6d2f.css +1 -0
  277. package/cloud-runtime/standalone/apps/local/.next/static/chunks/67b36c70b72e0e10.js +1 -0
  278. package/cloud-runtime/standalone/apps/local/.next/static/chunks/7bfbfcd072f8d61e.js +20 -0
  279. package/cloud-runtime/standalone/apps/local/.next/static/chunks/7cf26dd04166f32f.js +6 -0
  280. package/cloud-runtime/standalone/apps/local/.next/static/chunks/90dcb743d23feeca.js +16 -0
  281. package/cloud-runtime/standalone/apps/local/.next/static/chunks/93749b45e2700808.js +16 -0
  282. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{48feca51cf97c8a7.js → 9bb8f1406365af81.js} +1 -1
  283. package/cloud-runtime/standalone/apps/local/.next/static/chunks/b4aa71020acae46f.js +16 -0
  284. package/cloud-runtime/standalone/apps/local/.next/static/chunks/c352706a0ad7e35d.js +1 -0
  285. package/cloud-runtime/standalone/apps/local/.next/static/chunks/c5436b2b7e8f0ca9.js +16 -0
  286. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{1600dd6ff8607d8f.js → c9a2c4b55bb76f4f.js} +6 -6
  287. package/cloud-runtime/standalone/apps/local/.next/static/chunks/d6a9cc66254693b8.js +1 -0
  288. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{9e703dd5d95e9557.js → e3bdd1e0f385114e.js} +1 -1
  289. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{6ffcd12eabd7c65e.js → f71d73895d228547.js} +1 -1
  290. package/cloud-runtime/standalone/apps/local/.next/static/chunks/f750d2f1882d31a8.js +5 -0
  291. package/cloud-runtime/standalone/apps/local/app/api/automations/route.ts +2 -10
  292. package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/objectives/[objectiveId]/program/route.ts +77 -0
  293. package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/workspace/export/route.ts +35 -0
  294. package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/workspace/import/route.ts +91 -0
  295. package/cloud-runtime/standalone/apps/local/app/api/prompt-jobs/route.ts +1 -8
  296. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/layout.tsx +1 -1
  297. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/thread/page.tsx +14 -0
  298. package/cloud-runtime/standalone/apps/local/components/AutomationsBoard.tsx +15 -15
  299. package/cloud-runtime/standalone/apps/local/components/PromptJobBoard.tsx +7 -12
  300. package/cloud-runtime/standalone/apps/local/components/projects/FoldersSummaryCard.tsx +51 -196
  301. package/cloud-runtime/standalone/apps/local/components/projects/FoldersView.tsx +662 -784
  302. package/cloud-runtime/standalone/apps/local/components/projects/ObjectiveScheduledTasksPanel.tsx +7 -10
  303. package/cloud-runtime/standalone/apps/local/components/projects/ProjectHome.tsx +4 -4
  304. package/cloud-runtime/standalone/apps/local/components/projects/ProjectObjectivesWorkspace.tsx +118 -0
  305. package/cloud-runtime/standalone/apps/local/components/projects/ProjectSettings.tsx +81 -7
  306. package/cloud-runtime/standalone/apps/local/components/thread/WorkspaceSidebar.tsx +13 -3
  307. package/cloud-runtime/standalone/apps/local/hooks/useProjectWorkspace.ts +117 -0
  308. package/cloud-runtime/standalone/apps/local/lib/db/projects.ts +14 -10
  309. package/cloud-runtime/standalone/apps/local/lib/project-workspace.ts +80 -0
  310. package/cloud-runtime/standalone/apps/local/lib/task-context.ts +39 -4
  311. package/cloud-runtime/standalone/apps/local/lib/workspace-yaml.ts +164 -0
  312. package/cloud-runtime/standalone/apps/local/src/objectives/program/index.ts +7 -0
  313. package/cloud-runtime/standalone/apps/local/src/objectives/program/repository.ts +60 -0
  314. package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/objective-worker.ts +12 -0
  315. package/cloud-runtime/standalone/apps/local/src/scheduling/status.ts +42 -0
  316. package/cloud-runtime/standalone/apps/local/worker/index.js +14 -9
  317. package/lib/commands/workspace.js +145 -7
  318. package/package.json +1 -1
  319. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_09d85861._.js +0 -91
  320. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_25136564._.js +0 -11
  321. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_2caf4398._.js +0 -91
  322. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_31ca7a35._.js +0 -91
  323. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/9fb8c_lucide-react_dist_esm_icons_8c8ee1bc._.js +0 -3
  324. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__23838f87._.js +0 -3
  325. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__3b4708d5._.js +0 -3
  326. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__49cbf624._.js +0 -3
  327. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__49cdd178._.js +0 -3
  328. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__55ed4ff9._.js +0 -3
  329. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__7a31a76d._.js +0 -3
  330. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__a61463b8._.js +0 -7
  331. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__bb42490f._.js +0 -3
  332. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__ee9351f9._.js +0 -3
  333. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0ecd68e8._.js +0 -3
  334. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_347d036d._.js +0 -7
  335. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_5c140c38._.js +0 -7
  336. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_f99c22fd._.js +0 -3
  337. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_30d021de._.js +0 -3
  338. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_3b90cb76._.js +0 -18
  339. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_9f36c765._.js +0 -3
  340. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_8cc1a335._.js +0 -3
  341. package/cloud-runtime/standalone/apps/local/.next/static/chunks/1d8b2726979134e5.js +0 -16
  342. package/cloud-runtime/standalone/apps/local/.next/static/chunks/692103d55fcd0328.js +0 -5
  343. package/cloud-runtime/standalone/apps/local/.next/static/chunks/6952b44e247d594a.js +0 -16
  344. package/cloud-runtime/standalone/apps/local/.next/static/chunks/6bfdc40a24e65ca2.js +0 -1
  345. package/cloud-runtime/standalone/apps/local/.next/static/chunks/7ff071e8a33d2fd8.js +0 -16
  346. package/cloud-runtime/standalone/apps/local/.next/static/chunks/87e4fb11329a358d.js +0 -1
  347. package/cloud-runtime/standalone/apps/local/.next/static/chunks/92467c495ad08a85.js +0 -5
  348. package/cloud-runtime/standalone/apps/local/.next/static/chunks/941f7f3626ec442c.js +0 -16
  349. package/cloud-runtime/standalone/apps/local/.next/static/chunks/94a66d2d19268d25.js +0 -5
  350. package/cloud-runtime/standalone/apps/local/.next/static/chunks/add53c2fe147af75.css +0 -1
  351. package/cloud-runtime/standalone/apps/local/.next/static/chunks/b35865f64b56d6f4.js +0 -1
  352. package/cloud-runtime/standalone/apps/local/.next/static/chunks/d662272e49df1950.js +0 -20
  353. package/cloud-runtime/standalone/apps/local/.next/static/chunks/e0d68c6af17c8c87.js +0 -1
  354. package/cloud-runtime/standalone/apps/local/.next/static/chunks/f154e2ed7753f8ee.js +0 -16
  355. /package/cloud-runtime/standalone/apps/local/.next/static/{fipnHmd6JPn9sTuFdYS0y → xVMVGrzDjtD1H0bGL76NJ}/_buildManifest.js +0 -0
  356. /package/cloud-runtime/standalone/apps/local/.next/static/{fipnHmd6JPn9sTuFdYS0y → xVMVGrzDjtD1H0bGL76NJ}/_clientMiddlewareManifest.json +0 -0
  357. /package/cloud-runtime/standalone/apps/local/.next/static/{fipnHmd6JPn9sTuFdYS0y → xVMVGrzDjtD1H0bGL76NJ}/_ssgManifest.js +0 -0
@@ -0,0 +1,11 @@
1
+ module.exports=[712513,(e,t,r)=>{},765443,e=>{"use strict";let t="project_objectives_workspace",r="project_goals_workspace",i="project_health_snapshot",a=new Set(["on_track","at_risk","off_track","done"]);function o(e){return!!e&&"object"==typeof e&&!Array.isArray(e)}function n(e){return`${e}_${Math.random().toString(36).slice(2,10)}`}function s(e){return[...e].sort((e,t)=>Date.parse(t.updatedAt)-Date.parse(e.updatedAt))}function c(e){return[...e].sort((e,t)=>Date.parse(e.createdAt)-Date.parse(t.createdAt))}function l(e){return[...e].sort((e,t)=>Date.parse(t.createdAt)-Date.parse(e.createdAt))}function u(e,t=""){return"string"==typeof e?e:t}function d(e,t="1970-01-01T00:00:00.000Z"){if("string"!=typeof e)return t;let r=Date.parse(e);return Number.isNaN(r)?t:new Date(r).toISOString()}function p(e){return"number"==typeof e&&Number.isFinite(e)?Math.max(0,Math.min(100,Math.round(e))):0}function f(e){return"string"==typeof e&&a.has(e)?e:"on_track"}function v(e){return f(e)}function m(e){return p(e)}function y(e,t="objective"){let r=e.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/-{2,}/g,"-").slice(0,32);return r||t.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"objective"}function h(e,t,r="objective"){let i=y(r),a=y(e,i),o=a,n=2;for(;t.has(o);){let e=`-${n}`,t=Math.max(1,32-e.length);o=`${a.slice(0,t)}${e}`,n+=1}return t.add(o),o}function j(e,t,r){return h(e,new Set(t.filter(e=>e.id!==r).map(e=>y(e.key||e.title||e.id))),r??e)}function b(e){var t;if(!o(e))return null;let r=d(e.updatedAt??e.createdAt),i=d(e.createdAt,r);return{id:u(e.id,n("objective")),title:u(e.title,"Untitled objective"),teamId:u(e.teamId??e.team_id??e.ownerTeamId),key:y(u(e.key??e.slug??e.label),u(e.title??e.id,"objective")),threadId:u(e.threadId)||null,chatSessionVersion:function(e,t=0){return"number"==typeof e&&Number.isFinite(e)?Math.max(0,Math.floor(e)):t}(e.chatSessionVersion,0),scheduledTaskIds:Array.isArray(t=e.scheduledTaskIds??e.promptJobIds)?Array.from(new Set(t.map(e=>"string"==typeof e?e.trim():"").filter(Boolean))):[],summary:u(e.summary),progress:p(e.progress),status:f(e.status),createdAt:i,updatedAt:r}}function g(e){if(!o(e))return null;let t=d(e.updatedAt??e.createdAt),r=d(e.createdAt,t),i=u(e.objectiveId??e.goalId);return i?{id:u(e.id,n("objective_activity")),objectiveId:i,sourceType:"note",sourceLabel:u(e.sourceLabel,"Update"),title:u(e.title,"Untitled activity"),body:u(e.body),createdAt:r,updatedAt:t,relatedTaskId:u(e.relatedTaskId)||null}:null}function A(e){if(!o(e))return null;let t=u(e.activityId);return t?{id:u(e.id,n("objective_thread_message")),activityId:t,author:u(e.author,"You"),body:u(e.body),createdAt:d(e.createdAt)}:null}function R(){return{objectives:[],activities:[],activityThreads:{}}}function w(e){let t;if(!o(e))return R();let r=Array.isArray(e.objectives)?e.objectives.map(e=>b(e)).filter(e=>null!==e):[],i=Array.isArray(e.activities)?e.activities.map(e=>g(e)).filter(e=>null!==e):[],a=o(e.activityThreads)?Object.fromEntries(Object.entries(e.activityThreads).map(([e,t])=>[e,c(Array.isArray(t)?t.map(e=>A(e)).filter(e=>null!==e):[])])):{};return{objectives:s((t=new Set,r.map(e=>{let r=h(e.key||e.title||e.id,t,e.id||e.title||"objective");return e.key===r?e:{...e,key:r}}))),activities:l(i),activityThreads:a}}function E(e){if(!o(e))return R();let i=e[t];if(void 0!==i){let e=w(i);if(e.objectives.length>0||e.activities.length>0||Object.keys(e.activityThreads).length>0)return e}let a=e[r];if(void 0!==a){if(!o(a))return R();let e=Array.isArray(a.goals)?a.goals.map(e=>(function(e){if(!o(e))return null;let t=u(e.target),r=[u(e.summary),t?`Measure: ${t}`:""].filter(Boolean).join("\n\n");return b({...e,summary:r})})(e)).filter(e=>null!==e):[],t=Array.isArray(a.manualActivities)?a.manualActivities.map(e=>g({...e,sourceLabel:"Update"})).filter(e=>null!==e):[],r=o(a.activityThreads)?Object.fromEntries(Object.entries(a.activityThreads).map(([e,t])=>[e,c(Array.isArray(t)?t.map(t=>A({...t,activityId:e})).filter(e=>null!==e):[])])):{};return{objectives:s(e),activities:l(t),activityThreads:r}}return R()}function P(e,i){let a={...e};return delete a[r],a[t]=w(i),a}function I(e,t){let r={...e};return t?r[i]={progress:p(t.progress),status:f(t.status),updatedAt:d(t.updatedAt),...t.source?{source:t.source.trim()}:{},...t.objectiveId?{objectiveId:t.objectiveId}:{},...t.objectiveKey?{objectiveKey:t.objectiveKey}:{},...t.note?{note:t.note.trim()}:{}}:delete r[i],r}function O(e,t){let r=e.objectives.findIndex(e=>e.id===t.id)>=0?e.objectives.map(e=>e.id===t.id?t:e):[t,...e.objectives];return{...e,objectives:s(r)}}e.s(["PROJECT_OBJECTIVES_METADATA_KEY",0,t,"generateProjectObjectiveKey",()=>j,"normalizeProjectHealthProgress",()=>m,"normalizeProjectHealthStatus",()=>v,"readProjectObjectivesWorkspace",()=>E,"upsertProjectObjective",()=>O,"writeProjectHealthSnapshot",()=>I,"writeProjectObjectivesWorkspace",()=>P])},901977,e=>{"use strict";e.i(712513);var t=e.i(764541),r=e.i(744071),i=e.i(765443),a=e.i(671182);async function o(e,i){let a=await t.db.getProjectWithRepos(e,r.LOCAL_USER.id);if(!a)return null;let o=n(a),s=o.objectives.find(e=>e.id===i)??null;return s?{project:a,workspace:o,objective:s}:null}function n(e){let t=e.slug??e.id,r=(0,a.getObjectiveRepository)(t);return r.hasFiles()?r.readWorkspace():(0,i.readProjectObjectivesWorkspace)(e.metadata)}async function s(e){let o=await t.db.getProjectWithRepos(e.projectId,r.LOCAL_USER.id),n=o?.slug??e.projectId;(0,a.getObjectiveRepository)(n).writeWorkspace(e.workspace);let s=(0,i.writeProjectObjectivesWorkspace)(e.currentMetadata??{},e.workspace),c=e.transformMetadata?e.transformMetadata(s):s;return t.db.updateProject(e.projectId,r.LOCAL_USER.id,{metadata:c})}async function c(e){return t.db.updateProject(e.projectId,r.LOCAL_USER.id,{metadata:(0,i.writeProjectHealthSnapshot)(e.currentMetadata??{},e.snapshot)})}async function l(e){return t.db.updateProject(e.projectId,r.LOCAL_USER.id,{metadata:e.transformMetadata(e.currentMetadata??{})})}e.s(["loadProjectObjectiveContext",()=>o,"loadProjectObjectiveWorkspace",()=>n,"persistProjectHealthSnapshot",()=>c,"persistProjectObjectiveMetadata",()=>l,"persistProjectObjectiveWorkspace",()=>s])},341858,e=>{"use strict";function t(e,t,r){return t?e.objectives.find(e=>e.teamId===t&&e.id!==r)??null:null}function r(e){if("string"==typeof e)return e.trim()||void 0}function i(e){return null===e?null:"string"==typeof e?e.trim():void 0}function a(e){if(Array.isArray(e))return Array.from(new Set(e.map(e=>"string"==typeof e?e.trim():"").filter(Boolean)))}e.i(712513),e.i(901977),e.s(["findObjectiveAssignedToTeam",()=>t,"readNullableString",()=>i,"readOptionalString",()=>r,"readStringArray",()=>a])},124985,36336,717245,e=>{"use strict";var t=e.i(522734),r=e.i(814747),i=e.i(446786),a=e.i(260476);let o=/^---\s*\n([\s\S]*?)\n---\s*(?:\n([\s\S]*))?$/,n=new Set(["metric-check","status-update","milestone","note"]);function s(e,t=""){return"string"==typeof e?e:t}function c(e,t={}){var r;let i=e.match(o);if(!i)throw Error(`Activity file is missing YAML frontmatter${t.filePath?` (${t.filePath})`:""}.`);let[,l,u=""]=i,d=(0,a.load)(l,{...t.filePath?{filename:t.filePath}:{}}),p=d&&"object"==typeof d&&!Array.isArray(d)?d:{};return{id:s(p.id),source:s(p.source,"manual"),objectiveLabel:s(p.objectiveLabel),createdAt:function(e,t="1970-01-01T00:00:00.000Z"){if("string"!=typeof e)return t;let r=Date.parse(e);return Number.isNaN(r)?t:new Date(r).toISOString()}(p.createdAt),type:"string"==typeof(r=p.type)&&n.has(r)?r:"note",body:u.trim()}}function l(e){let t={id:e.id,source:e.source,objectiveLabel:e.objectiveLabel,createdAt:e.createdAt,type:e.type},r=(0,a.dump)(t,{lineWidth:120,noRefs:!0,sortKeys:!1}).trimEnd(),i=e.body.trim();return i?`---
2
+ ${r}
3
+ ---
4
+
5
+ ${i}
6
+ `:`---
7
+ ${r}
8
+ ---
9
+ `}e.s(["parseActivityFile",()=>c],36336),e.s(["serializeActivityFile",()=>l],717245);class u{rootDir;constructor(e){this.rootDir=r.default.resolve(e)}ensureDir(){t.default.mkdirSync(this.rootDir,{recursive:!0})}readAll(){if(!t.default.existsSync(this.rootDir))return[];let e=t.default.readdirSync(this.rootDir).filter(e=>e.endsWith(".md")),i=[];for(let a of e){let e=r.default.join(this.rootDir,a);try{let r=t.default.readFileSync(e,"utf8");i.push(c(r,{filePath:e}))}catch(t){console.error(`[activities] failed to read ${e}:`,t)}}return i.sort((e,t)=>Date.parse(t.createdAt)-Date.parse(e.createdAt))}list(e={}){let t=this.readAll();if(e.type&&(t=t.filter(t=>t.type===e.type)),e.source&&(t=t.filter(t=>t.source===e.source)),e.from){let r=Date.parse(e.from);Number.isNaN(r)||(t=t.filter(e=>Date.parse(e.createdAt)>=r))}if(e.to){let r=Date.parse(e.to);Number.isNaN(r)||(t=t.filter(e=>Date.parse(e.createdAt)<=r))}let r=t.length,i=Math.max(1,e.page??1),a=Math.min(100,Math.max(1,e.limit??25)),o=(i-1)*a;return{activities:t.slice(o,o+a),total:r,page:i,limit:a,hasMore:o+a<r}}append(e){var i;let a,o;this.ensureDir();let n=(a=(i=e).createdAt.replace(/[:.]/g,"-").replace("T","-").replace("Z",""),o=i.type.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,48),`${a}-${o}.md`),s=r.default.join(this.rootDir,n),c=l(e);return t.default.writeFileSync(s,c,"utf8"),s}}let d=new Map;function p(e,t){let a,o=r.default.join((a=process.env.AGX_DATA_DIR?.trim())?r.default.resolve(a):r.default.join((0,i.homedir)(),".agx"),"projects",e,"objectives",t,"activities"),n=d.get(o);return n||(n=new u(o),d.set(o,n)),n}e.s(["getActivityRepository",()=>p],124985)},645363,e=>{"use strict";var t=e.i(692988),r=e.i(635595),i=e.i(75473),a=e.i(923435),o=e.i(418475),n=e.i(303482),s=e.i(976287),c=e.i(774462),l=e.i(111998),u=e.i(201516),d=e.i(68877),p=e.i(259460),f=e.i(257714),v=e.i(502073),m=e.i(187345),y=e.i(193695);e.i(293777);var h=e.i(274321),j=e.i(254799),b=e.i(732470);e.i(341858);var g=e.i(901977);e.i(36336),e.i(717245);var A=e.i(124985);e.i(650837);var R=e.i(640911);let w=new Set(["metric-check","status-update","milestone","note"]);async function E(e){let t=await e,r="string"==typeof t?.id?t.id.trim():"",i="string"==typeof t?.objectiveId?t.objectiveId.trim():"";return r&&i?{projectId:r,objectiveId:i}:null}async function P(e,t){try{let r=await E(t.params);if(!r)return b.NextResponse.json({error:"Objective not found"},{status:404});let i=await (0,g.loadProjectObjectiveContext)(r.projectId,r.objectiveId);if(!i)return b.NextResponse.json({error:"Objective not found"},{status:404});let{project:a,objective:o}=i,n=a.slug??a.id,s=(0,A.getActivityRepository)(n,o.key),c=e.nextUrl,l=c.searchParams.get("type"),u=l&&w.has(l)?l:void 0,d=s.list({type:u,source:c.searchParams.get("source")??void 0,from:c.searchParams.get("from")??void 0,to:c.searchParams.get("to")??void 0,page:parseInt(c.searchParams.get("page")??"",10)||void 0,limit:parseInt(c.searchParams.get("limit")??"",10)||void 0});return b.NextResponse.json(d)}catch(e){return R.logger.error("Failed to load activities",R.logger.formatError(e)),b.NextResponse.json({error:"Failed to load activities"},{status:500})}}async function I(e,t){try{let r=await E(t.params);if(!r)return b.NextResponse.json({error:"Objective not found"},{status:404});let i=await (0,g.loadProjectObjectiveContext)(r.projectId,r.objectiveId);if(!i)return b.NextResponse.json({error:"Objective not found"},{status:404});let a=await e.json(),o=a?.type,n="string"==typeof a?.body?a.body.trim():"";if(!o||!w.has(o))return b.NextResponse.json({error:"Invalid type. Must be one of: metric-check, status-update, milestone, note"},{status:400});if(!n)return b.NextResponse.json({error:"Body is required"},{status:400});let{project:s,objective:c}=i,l=s.slug??s.id,u=(0,A.getActivityRepository)(l,c.key),d={id:(0,j.randomUUID)(),source:"manual",objectiveLabel:c.key,createdAt:new Date().toISOString(),type:o,body:n};return u.append(d),b.NextResponse.json(d,{status:201})}catch(e){return R.logger.error("Failed to create activity",R.logger.formatError(e)),b.NextResponse.json({error:"Failed to create activity"},{status:500})}}e.s(["GET",()=>P,"POST",()=>I,"dynamic",0,"force-dynamic","runtime",0,"nodejs"],328966);var O=e.i(328966);let S=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/projects/[id]/objectives/[objectiveId]/activities/route",pathname:"/api/projects/[id]/objectives/[objectiveId]/activities",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/apps/local/app/api/projects/[id]/objectives/[objectiveId]/activities/route.ts",nextConfigOutput:"standalone",userland:O}),{workAsyncStorage:x,workUnitAsyncStorage:C,serverHooks:N}=S;function T(){return(0,i.patchFetch)({workAsyncStorage:x,workUnitAsyncStorage:C})}async function k(e,t,i){S.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let j="/api/projects/[id]/objectives/[objectiveId]/activities/route";j=j.replace(/\/index$/,"")||"/";let b=await S.prepare(e,t,{srcPage:j,multiZoneDraftMode:!1});if(!b)return t.statusCode=400,t.end("Bad Request"),null==i.waitUntil||i.waitUntil.call(i,Promise.resolve()),null;let{buildId:g,params:A,nextConfig:R,parsedUrl:w,isDraftMode:E,prerenderManifest:P,routerServerContext:I,isOnDemandRevalidate:O,revalidateOnlyGenerated:x,resolvedPathname:C,clientReferenceManifest:N,serverActionsManifest:T}=b,k=(0,s.normalizeAppPath)(j),_=!!(P.dynamicRoutes[k]||P.routes[C]),D=async()=>((null==I?void 0:I.render404)?await I.render404(e,t,w,!1):t.end("This page could not be found"),null);if(_&&!E){let e=!!P.routes[C],t=P.dynamicRoutes[k];if(t&&!1===t.fallback&&!e){if(R.experimental.adapterPath)return await D();throw new y.NoFallbackError}}let M=null;!_||S.isDev||E||(M="/index"===(M=C)?"/":M);let U=!0===S.isDev||!_,L=_&&!U;T&&N&&(0,n.setManifestsSingleton)({page:j,clientReferenceManifest:N,serverActionsManifest:T});let $=e.method||"GET",H=(0,o.getTracer)(),F=H.getActiveScopeSpan(),q={params:A,prerenderManifest:P,renderOpts:{experimental:{authInterrupts:!!R.experimental.authInterrupts},cacheComponents:!!R.cacheComponents,supportsDynamicResponse:U,incrementalCache:(0,a.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:R.cacheLife,waitUntil:i.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,i,a)=>S.onRequestError(e,t,i,a,I)},sharedContext:{buildId:g}},K=new c.NodeNextRequest(e),W=new c.NodeNextResponse(t),B=l.NextRequestAdapter.fromNodeNextRequest(K,(0,l.signalFromNodeResponse)(t));try{let n=async e=>S.handle(B,q).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=H.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let i=r.get("next.route");if(i){let t=`${$} ${i}`;e.setAttributes({"next.route":i,"http.route":i,"next.span_name":t}),e.updateName(t)}else e.updateName(`${$} ${j}`)}),s=!!(0,a.getRequestMeta)(e,"minimalMode"),c=async a=>{var o,c;let l=async({previousCacheEntry:r})=>{try{if(!s&&O&&x&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let o=await n(a);e.fetchMetrics=q.renderOpts.fetchMetrics;let c=q.renderOpts.pendingWaitUntil;c&&i.waitUntil&&(i.waitUntil(c),c=void 0);let l=q.renderOpts.collectedTags;if(!_)return await (0,p.sendResponse)(K,W,o,q.renderOpts.pendingWaitUntil),null;{let e=await o.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(o.headers);l&&(t[m.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==q.renderOpts.collectedRevalidate&&!(q.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&q.renderOpts.collectedRevalidate,i=void 0===q.renderOpts.collectedExpire||q.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:q.renderOpts.collectedExpire;return{value:{kind:h.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 S.onRequestError(e,t,{routerKind:"App Router",routePath:j,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:L,isOnDemandRevalidate:O})},!1,I),t}},u=await S.handleResponse({req:e,nextConfig:R,cacheKey:M,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:P,isRoutePPREnabled:!1,isOnDemandRevalidate:O,revalidateOnlyGenerated:x,responseGenerator:l,waitUntil:i.waitUntil,isMinimalMode:s});if(!_)return null;if((null==u||null==(o=u.value)?void 0:o.kind)!==h.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(c=u.value)?void 0:c.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});s||t.setHeader("x-nextjs-cache",O?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),E&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let y=(0,f.fromNodeOutgoingHttpHeaders)(u.value.headers);return s&&_||y.delete(m.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||y.get("Cache-Control")||y.set("Cache-Control",(0,v.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(K,W,new Response(u.value.body,{headers:y,status:u.value.status||200})),null};F?await c(F):await H.withPropagatedContext(e.headers,()=>H.trace(u.BaseServerSpan.handleRequest,{spanName:`${$} ${j}`,kind:o.SpanKind.SERVER,attributes:{"http.method":$,"http.target":e.url}},c))}catch(t){if(t instanceof y.NoFallbackError||await S.onRequestError(e,t,{routerKind:"App Router",routePath:k,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:L,isOnDemandRevalidate:O})},!1,I),_)throw t;return await (0,p.sendResponse)(K,W,new Response(null,{status:500})),null}}e.s(["handler",()=>k,"patchFetch",()=>T,"routeModule",()=>S,"serverHooks",()=>N,"workAsyncStorage",()=>x,"workUnitAsyncStorage",()=>C],645363)}];
10
+
11
+ //# sourceMappingURL=apps_local_c530bd77._.js.map
@@ -0,0 +1,91 @@
1
+ module.exports=[641922,953610,e=>{"use strict";var t=e.i(522734),r=e.i(814747),i=e.i(446786);function s(e,t){let s;return r.default.join((s=process.env.AGX_DATA_DIR?.trim())?r.default.resolve(s):r.default.join((0,i.homedir)(),".agx"),"projects",e,"objectives",t,"program.md")}function a(e,r){let i=s(e,r);if(!t.default.existsSync(i))return{path:i,content:null,updatedAt:null};try{let e=t.default.readFileSync(i,"utf8"),r=t.default.statSync(i);return{path:i,content:e,updatedAt:r.mtime.toISOString()}}catch{return{path:i,content:null,updatedAt:null}}}function n(e,i,a){let n=s(e,i);t.default.mkdirSync(r.default.dirname(n),{recursive:!0});let o=a.replace(/\s+$/g,"");if(0===o.length)return t.default.existsSync(n)&&t.default.unlinkSync(n),{path:n,content:null,updatedAt:null};let u=o+"\n";t.default.writeFileSync(n,u,"utf8");let c=t.default.statSync(n);return{path:n,content:u,updatedAt:c.mtime.toISOString()}}e.s(["readProgram",()=>a,"writeProgram",()=>n],953610),e.s([],641922)},11061,e=>{"use strict";var t=e.i(522734),r=e.i(446786),i=e.i(814747),s=e.i(769025);let{DatabaseSync:a}=process.getBuiltinModule("node:sqlite"),n=process.env.AGX_GROUP_CHAT_DIR?.trim()||i.default.join(r.default.homedir(),".agx","group-chat"),o=i.default.join(n,"history.sqlite");function u(e){return"scripted"===e?"scripted":"chat"}function c(e){let t,r=e.chat_created_at??e.created_at,i=e.chat_completed_at??null,s=function(e,t){switch(e){case"queued":return"queued";case"running":case"awaiting_user":case"blocked":return"running";case"completed":return"success";case"failed":return"failed";case"cancelled":return"cancelled";default:return t}}(e.chat_status,e.status);return{id:e.id,projectId:e.project_id,projectSlug:e.project_slug,issueId:e.issue_id,issueIdentifier:e.issue_identifier,issueTitle:e.issue_title,issueStatus:e.issue_status,issueAssignee:e.issue_assignee,threadId:e.thread_id,rootMessageId:e.root_message_id,chatRunId:e.chat_run_id,agentId:e.agent_id,agentName:e.agent_name,mode:u(e.mode),sessionTitle:"chat"===u(e.mode)&&(t=String(e.root_content??"").replace(/\[reaction\s+[^\]]*\]/gi,"").replace(/\[agx:[^\]]*\]/g,"").replace(/\[checkpoint\]/g,"").replace(/\[criteria:\s*[^\]]*\]/g,"").replace(/\[done\]/g,"").replace(/\[blocked[^\]]*\]/g,"").replace(/^\[SKIP\]$/gm,"").replace(/\s+/g," ").trim())?t.length>72?`${t.slice(0,69).trimEnd()}...`:t:null,status:s,durationMs:null!=i?Math.max(i-r,0):null,lastError:e.chat_last_error??e.error,recapFilePath:e.recap_file_path??null,startedAt:new Date(r).toISOString(),updatedAt:new Date((e.chat_updated_at??e.updated_at)||e.updated_at).toISOString(),completedAt:"number"==typeof i?new Date(i).toISOString():null}}async function l(e){await t.promises.mkdir(n,{recursive:!0});let r=new a(o);(0,s.pragmaSet)(r,"journal_mode = WAL");try{r.exec(`
2
+ CREATE TABLE IF NOT EXISTS chat_runs (
3
+ id TEXT PRIMARY KEY,
4
+ thread_id TEXT NOT NULL,
5
+ root_message_id TEXT,
6
+ user_id TEXT NOT NULL,
7
+ project_slug TEXT,
8
+ status TEXT NOT NULL,
9
+ current_step INTEGER NOT NULL DEFAULT 0,
10
+ max_steps INTEGER NOT NULL DEFAULT 10,
11
+ steps_used INTEGER NOT NULL DEFAULT 0,
12
+ last_error TEXT,
13
+ active_participant_ids TEXT NOT NULL DEFAULT '[]',
14
+ payload_json TEXT,
15
+ result_json TEXT,
16
+ created_at INTEGER NOT NULL,
17
+ updated_at INTEGER NOT NULL,
18
+ completed_at INTEGER
19
+ );
20
+ CREATE TABLE IF NOT EXISTS messages (
21
+ thread_id TEXT NOT NULL,
22
+ id TEXT NOT NULL,
23
+ role TEXT NOT NULL,
24
+ participant_id TEXT,
25
+ content TEXT NOT NULL,
26
+ timestamp INTEGER NOT NULL,
27
+ root_message_id TEXT,
28
+ parent_message_id TEXT,
29
+ depth INTEGER NOT NULL DEFAULT 0,
30
+ thread_status TEXT,
31
+ outcome_note TEXT,
32
+ PRIMARY KEY (thread_id, id)
33
+ );
34
+ CREATE TABLE IF NOT EXISTS linear_runs (
35
+ id TEXT PRIMARY KEY,
36
+ project_id TEXT,
37
+ project_slug TEXT,
38
+ issue_id TEXT NOT NULL,
39
+ issue_identifier TEXT NOT NULL,
40
+ issue_title TEXT NOT NULL,
41
+ issue_status TEXT NOT NULL,
42
+ issue_assignee TEXT,
43
+ thread_id TEXT NOT NULL,
44
+ root_message_id TEXT,
45
+ chat_run_id TEXT,
46
+ agent_id TEXT NOT NULL,
47
+ agent_name TEXT NOT NULL,
48
+ mode TEXT NOT NULL DEFAULT 'chat',
49
+ status TEXT NOT NULL DEFAULT 'queued',
50
+ error TEXT,
51
+ recap_file_path TEXT,
52
+ created_at INTEGER NOT NULL,
53
+ updated_at INTEGER NOT NULL
54
+ );
55
+ CREATE INDEX IF NOT EXISTS idx_linear_runs_issue_created
56
+ ON linear_runs (issue_id, created_at DESC);
57
+ CREATE INDEX IF NOT EXISTS idx_linear_runs_project_issue_created
58
+ ON linear_runs (project_id, issue_id, created_at DESC);
59
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_linear_runs_chat_run_id
60
+ ON linear_runs (chat_run_id)
61
+ WHERE chat_run_id IS NOT NULL;
62
+ `);let t=r.prepare("PRAGMA table_info(linear_runs)").all();return t.some(e=>"mode"===e.name)||r.exec("ALTER TABLE linear_runs ADD COLUMN mode TEXT NOT NULL DEFAULT 'chat';"),t.some(e=>"recap_file_path"===e.name)||r.exec("ALTER TABLE linear_runs ADD COLUMN recap_file_path TEXT;"),e(r)}finally{r.close()}}async function d(e){var t;let r=e.issueId.trim(),i=(t=e.projectId??null,t?.trim()||null),s=Number.isFinite(e.limit)?Math.min(Math.max(Number(e.limit),1),100):50;return l(e=>{let t=[r],a=["lr.issue_id = ?"];return i&&(a.push("lr.project_id = ?"),t.push(i)),t.push(s),e.prepare(`SELECT
63
+ lr.*,
64
+ cr.status AS chat_status,
65
+ cr.last_error AS chat_last_error,
66
+ cr.created_at AS chat_created_at,
67
+ cr.updated_at AS chat_updated_at,
68
+ cr.completed_at AS chat_completed_at,
69
+ msg.content AS root_content
70
+ FROM linear_runs lr
71
+ LEFT JOIN chat_runs cr ON cr.id = (
72
+ SELECT id FROM chat_runs WHERE thread_id = lr.thread_id ORDER BY updated_at DESC LIMIT 1
73
+ )
74
+ LEFT JOIN messages msg ON msg.thread_id = lr.thread_id AND msg.id = lr.root_message_id
75
+ WHERE ${a.join(" AND ")}
76
+ ORDER BY lr.created_at DESC
77
+ LIMIT ?`).all(...t).map(c)})}async function p(e){return l(t=>{let r=e?.trim(),i=r?`SELECT DISTINCT lr.issue_id, lr.agent_id, lr.agent_name
78
+ FROM linear_runs lr
79
+ INNER JOIN chat_runs cr ON cr.id = (
80
+ SELECT id FROM chat_runs WHERE thread_id = lr.thread_id ORDER BY updated_at DESC LIMIT 1
81
+ )
82
+ WHERE cr.status IN ('queued', 'running')
83
+ AND lr.project_id = ?`:`SELECT DISTINCT lr.issue_id, lr.agent_id, lr.agent_name
84
+ FROM linear_runs lr
85
+ INNER JOIN chat_runs cr ON cr.id = (
86
+ SELECT id FROM chat_runs WHERE thread_id = lr.thread_id ORDER BY updated_at DESC LIMIT 1
87
+ )
88
+ WHERE cr.status IN ('queued', 'running')`;return(r?t.prepare(i).all(e.trim()):t.prepare(i).all()).map(e=>({issueId:e.issue_id,agentId:e.agent_id,agentName:e.agent_name}))})}e.s(["getIssueActiveAgents",()=>p,"listLinearRuns",()=>d])},720395,e=>{"use strict";var t=e.i(84516),r=e.i(29764),i=e.i(11061),s=e.i(124985);e.i(243174);var a=e.i(248821);e.i(641922);var n=e.i(953610),o=e.i(901977);let u="project_objective_health_history",c={"on track":"on_track","at risk":"at_risk","off track":"off_track",done:"done"};function l(e){return!!e&&"object"==typeof e&&!Array.isArray(e)}function d(e){return"number"==typeof e&&Number.isFinite(e)?Math.max(0,Math.min(100,Math.round(e))):0}function p(e){return"string"==typeof e&&e.trim()?e.trim():void 0}function T(...e){let t=e.flatMap(e=>e??[]),r=[];for(let e of[...t].sort((e,t)=>Date.parse(e.recordedAt)-Date.parse(t.recordedAt))){let t=r[r.length-1]??null;t&&t.progress===e.progress&&t.status===e.status&&(!t.source||!e.source||t.source===e.source)&&5e3>=Math.abs(Date.parse(e.recordedAt)-Date.parse(t.recordedAt))||r.push(e)}return r}var _=e.i(460275),m=e.i(765443);let E={on_track:"On track",at_risk:"At risk",off_track:"Off track",done:"Done"};async function h(e){let t=Date.now(),r="";try{return await (0,_.runCliResponse)({provider:e.provider,model:e.model,prompt:e.prompt,identity:e.identity,self:e.self,skills:e.skills,systemContext:e.systemContext,passthroughArgs:e.cliArgs?e.cliArgs.split(/\s+/).filter(Boolean):void 0,onDelta:e=>{r+=e},onSpawn:e.onSpawn}),{output:r,error:"",durationMs:Date.now()-t,status:"success"}}catch(e){return{output:r,error:e instanceof Error?e.message:String(e),durationMs:Date.now()-t,status:"failed"}}}function g(e){try{let t=JSON.parse(e);return t&&"object"==typeof t&&!Array.isArray(t)?t:null}catch{return null}}function j(e){let t=e.trim();if(!t)return null;let r=g(t);if(r)return r;let i=t.indexOf("{"),s=t.lastIndexOf("}");return -1===i||s<=i?null:g(t.slice(i,s+1))}function f(e){return"number"==typeof e&&Number.isFinite(e)?(0,m.normalizeProjectHealthProgress)(e):null}function N(e){return"string"==typeof e&&e.trim()?(0,m.normalizeProjectHealthStatus)(e):null}function I(e,t,r){return`${e}: ${t}% ${E[r]}`}function b(e){return[`- id: ${e.id}`,` identifier: ${e.identifier}`,` title: ${e.title}`,` status: ${e.status}`,` assignee: ${e.assignee??"Unassigned"}`,e.url?` url: ${e.url}`:null].filter(e=>!!e).join("\n")}async function L(e){let{job:o,objectiveContext:u}=e,{project:c,workspace:l,objective:d}=u,p=c.slug??c.id,[{issues:T},_,m,E]=await Promise.all([(0,r.listObjectiveTrackerIssues)({projectId:c.id,objectiveKey:d.key,projectSlug:p,refresh:!0}),(0,i.getIssueActiveAgents)(c.id),Promise.resolve((0,s.getActivityRepository)(p,d.key).list({limit:20})),Promise.resolve((0,a.getNoteRepository)(p,d.key).readAll())]),h=new Set(T.map(e=>e.id)),g=_.filter(e=>h.has(e.issueId)),j=(0,r.filterObjectiveTrackerIssuesForAction)(T,g.map(e=>e.issueId)),f=(0,t.getPromptJobStore)().listJobs({objectiveId:d.id}).filter(e=>e.id!==o.id),N=l.objectives.filter(e=>e.id!==d.id),I=[];I.push("GOAL",d.title,d.summary?.trim()||"No summary provided."),I.push("","CURRENT STATE",`Progress: ${d.progress}% | Status: ${d.status}`);let L=(0,n.readProgram)(p,d.key);I.push("","PROGRAM",`path: ${L.path}`),L.content&&L.content.trim().length>0?I.push(L.content.trim()):I.push('(empty) No program has been authored for this objective yet. Before committing to a direction, surface this to the user in chat: ask what "better" means for this objective (the success metric), what paths/systems are in-scope, and any constraints. Capture the answer by writing to the path above.'),E.length>0&&I.push("","NOTES",...E.map(e=>`### ${e.title}
89
+ ${e.body}`));let v=m.activities??[];return v.length>0&&I.push("","RECENT ACTIVITY",...v.map(e=>{let t=e.createdAt.replace("T"," ").replace(/\.\d+Z$/,"").slice(0,16);return`- [${t}] ${e.body.split("\n")[0]}`})),T.length>0?I.push("","LINEAR TICKETS",T.map(e=>b(e)).join("\n\n")):I.push("","LINEAR TICKETS","- None."),g.length>0&&I.push("","ACTIVE SESSIONS",...g.map(e=>`- ${e.issueId}: running with ${e.agentName}`)),f.length>0&&I.push("","SCHEDULED TASKS",...f.map(e=>`- ${e.name} | state: ${e.state} | last outcome: ${e.lastOutcome??"none"}`)),N.length>0&&I.push("","PROJECT CONTEXT",...N.map(e=>`- ${e.title} (${e.key}) | ${e.progress}% | ${e.status}`)),I.push("","GUIDANCE",o.prompt.trim()||"No additional guidance provided."),I.push("","ELIGIBLE TICKETS",j.length>0?j.map(e=>b(e)).join("\n\n"):"- None."),I.push("","---","What single action most advances this objective right now?"),{prompt:I.join("\n"),issues:T,eligibleIssues:j,activeIssueAgents:g}}async function v(t){let r=Date.now();try{if(!t.job.projectId||!t.job.objectiveId)throw Error("Objective worker jobs require projectId and objectiveId.");let i=await (0,o.loadProjectObjectiveContext)(t.job.projectId,t.job.objectiveId);if(!i)throw Error("Objective context could not be resolved for this scheduled task.");let s=await L({job:t.job,objectiveContext:i}),a=await h({...t.controllerContext,prompt:s.prompt,systemContext:'You are deciding what action an objective worker should take next.\nReturn ONLY raw JSON with no markdown fences or commentary.\nValid responses:\n{"action":"work_ticket","ticketId":"ticket-id","reason":"...","objectiveProgress":42,"objectiveStatus":"at_risk","projectProgress":35,"projectStatus":"at_risk"}\n{"action":"run_prompt","prompt":"detailed instructions","reason":"...","objectiveProgress":42,"objectiveStatus":"at_risk"}\n{"action":"stop","reason":"...","objectiveProgress":42,"objectiveStatus":"at_risk"}\nRules:\n- "work_ticket": ticketId must exactly match one of the ELIGIBLE TICKETS ids.\n- "run_prompt": for work not captured by existing tickets. When no tickets are actionable and the objective is not done, use this to plan: review notes, refine the last plan, or outline next steps. The prompt should instruct the agent to append to an existing note when one is relevant rather than creating a new note.\n- "stop": only when the objective is done or genuinely no action (including planning) adds value.\nPercentages must be integers 0-100.\nStatuses: on_track, at_risk, off_track, done.',cliArgs:t.cliArgs,onSpawn:t.onSpawn});if("success"!==a.status)return{...a,output:a.output||"Objective controller failed before selecting an action."};let n=j(a.output),_="string"==typeof n?.action?n.action.trim().toLowerCase():"string"==typeof n?.decision?n.decision.trim().toLowerCase():"",E="work"===_?"work_ticket":_;if(!E){let e=a.output??"";console.warn(`[objective-worker] empty action from controller (job=${t.job.id}, outputLen=${e.length}, parsed=${n?"object":"null"}):`,e.slice(0,500))}let g="string"==typeof n?.reason?n.reason.trim():"",b=f(n?.objectiveProgress),v=N(n?.objectiveStatus),A=f(n?.projectProgress),S=N(n?.projectStatus),O="string"==typeof n?.projectNote?n.projectNote.trim():"",y="string"==typeof n?.objectiveNote?n.objectiveNote.trim():"",w=new Date().toISOString(),k=null!==b&&v?I("Objective health",b,v):null,R=null!==A&&S?I("Project health",A,S):null,D=null!==b&&null!==v?{objectiveId:i.objective.id,objectiveKey:i.objective.key,progress:b,status:v,recordedAt:w,source:`scheduled-task:${t.job.id}`,note:y||void 0}:null,X=null!==b&&null!==v&&(b!==i.objective.progress||v!==i.objective.status),C=X?(0,m.upsertProjectObjective)(i.workspace,{...i.objective,progress:b,status:v,updatedAt:w}):i.workspace,U=null!==A&&null!==S?{progress:A,status:S,updatedAt:w,source:`scheduled-task:${t.job.id}`,objectiveId:i.objective.id,objectiveKey:i.objective.key,note:O||void 0}:null,M=e=>{let t=e;return U&&(t=(0,m.writeProjectHealthSnapshot)(t,U)),D&&(t=function(e,t){let r=t.objectiveId.trim();if(!r)return e;let i=function(e,t){if(!l(e)||!t.trim())return[];let r=e[u];if(!l(r))return[];let i=r[t.trim()];return Array.isArray(i)?T(i.map(e=>(function(e){if(!l(e))return null;let t=function(e){if("string"!=typeof e)return null;let t=e.trim().toLowerCase();return"on_track"===t||"at_risk"===t||"off_track"===t||"done"===t?t:c[t]??null}(e.status),r=function(e){if("string"!=typeof e)return null;let t=Date.parse(e);return Number.isNaN(t)?null:new Date(t).toISOString()}(e.recordedAt);return t&&r?{progress:d(e.progress),status:t,recordedAt:r,source:p(e.source),note:p(e.note),objectiveId:p(e.objectiveId)??null,objectiveKey:p(e.objectiveKey)??null}:null})(e)).filter(e=>!!e)):[]}(e,r),s=T(i,[t]).slice(-200),a=l(e[u])?e[u]:{};return{...e,[u]:{...a,[r]:s.map(e=>({progress:d(e.progress),status:e.status,recordedAt:e.recordedAt,...e.source?{source:e.source}:{},...e.note?{note:e.note}:{},...e.objectiveId?{objectiveId:e.objectiveId}:{},...e.objectiveKey?{objectiveKey:e.objectiveKey}:{}}))}}}(t,D)),t};X?await (0,o.persistProjectObjectiveWorkspace)({projectId:i.project.id,currentMetadata:i.project.metadata,workspace:C,transformMetadata:M}):(D||U)&&await (0,o.persistProjectObjectiveMetadata)({projectId:i.project.id,currentMetadata:i.project.metadata,transformMetadata:M});let{dispatchObjectiveAction:$}=await e.A(688671),P=await $({action:E,parsed:n,reason:g,job:t.job,controllerContext:t.controllerContext,sessionAgent:t.sessionAgent,objectiveContext:i,eligibleIssues:s.eligibleIssues,issues:s.issues,healthSummaries:{objectiveHealthSummary:k,projectHealthSummary:R,objectiveNote:y,projectNote:O},cliArgs:t.cliArgs,onSpawn:t.onSpawn,startMs:r}),{logActionReceipt:x}=await e.A(688671);return await x(P,{jobId:t.job.id,projectId:t.job.projectId,objectiveId:t.job.objectiveId}),{output:P.result,error:"failed"===P.status?P.result:"",durationMs:Date.now()-r,status:P.status}}catch(e){return{output:"",error:e instanceof Error?e.message:String(e),durationMs:Date.now()-r,status:"failed"}}}e.s(["buildObjectiveObservation",()=>L,"executeObjectiveWorker",()=>v,"extractFirstJsonObject",()=>j],720395)},688671,e=>{e.v(e=>Promise.resolve().then(()=>e(917435)))}];
90
+
91
+ //# sourceMappingURL=apps_local_d69937f2._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[712513,(e,t,r)=>{},765443,e=>{"use strict";let t="project_objectives_workspace",r="project_goals_workspace",a="project_health_snapshot",n=new Set(["on_track","at_risk","off_track","done"]);function i(e){return!!e&&"object"==typeof e&&!Array.isArray(e)}function o(e){return`${e}_${Math.random().toString(36).slice(2,10)}`}function s(e){return[...e].sort((e,t)=>Date.parse(t.updatedAt)-Date.parse(e.updatedAt))}function l(e){return[...e].sort((e,t)=>Date.parse(e.createdAt)-Date.parse(t.createdAt))}function c(e){return[...e].sort((e,t)=>Date.parse(t.createdAt)-Date.parse(e.createdAt))}function u(e,t=""){return"string"==typeof e?e:t}function d(e,t="1970-01-01T00:00:00.000Z"){if("string"!=typeof e)return t;let r=Date.parse(e);return Number.isNaN(r)?t:new Date(r).toISOString()}function p(e){return"number"==typeof e&&Number.isFinite(e)?Math.max(0,Math.min(100,Math.round(e))):0}function f(e){return"string"==typeof e&&n.has(e)?e:"on_track"}function v(e){return f(e)}function m(e){return p(e)}function j(e,t="objective"){let r=e.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/-{2,}/g,"-").slice(0,32);return r||t.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"objective"}function h(e,t,r="objective"){let a=j(r),n=j(e,a),i=n,o=2;for(;t.has(i);){let e=`-${o}`,t=Math.max(1,32-e.length);i=`${n.slice(0,t)}${e}`,o+=1}return t.add(i),i}function y(e,t,r){return h(e,new Set(t.filter(e=>e.id!==r).map(e=>j(e.key||e.title||e.id))),r??e)}function g(e){var t;if(!i(e))return null;let r=d(e.updatedAt??e.createdAt),a=d(e.createdAt,r);return{id:u(e.id,o("objective")),title:u(e.title,"Untitled objective"),teamId:u(e.teamId??e.team_id??e.ownerTeamId),key:j(u(e.key??e.slug??e.label),u(e.title??e.id,"objective")),threadId:u(e.threadId)||null,chatSessionVersion:function(e,t=0){return"number"==typeof e&&Number.isFinite(e)?Math.max(0,Math.floor(e)):t}(e.chatSessionVersion,0),scheduledTaskIds:Array.isArray(t=e.scheduledTaskIds??e.promptJobIds)?Array.from(new Set(t.map(e=>"string"==typeof e?e.trim():"").filter(Boolean))):[],summary:u(e.summary),progress:p(e.progress),status:f(e.status),createdAt:a,updatedAt:r}}function b(e){if(!i(e))return null;let t=d(e.updatedAt??e.createdAt),r=d(e.createdAt,t),a=u(e.objectiveId??e.goalId);return a?{id:u(e.id,o("objective_activity")),objectiveId:a,sourceType:"note",sourceLabel:u(e.sourceLabel,"Update"),title:u(e.title,"Untitled activity"),body:u(e.body),createdAt:r,updatedAt:t,relatedTaskId:u(e.relatedTaskId)||null}:null}function A(e){if(!i(e))return null;let t=u(e.activityId);return t?{id:u(e.id,o("objective_thread_message")),activityId:t,author:u(e.author,"You"),body:u(e.body),createdAt:d(e.createdAt)}:null}function R(){return{objectives:[],activities:[],activityThreads:{}}}function w(e){let t;if(!i(e))return R();let r=Array.isArray(e.objectives)?e.objectives.map(e=>g(e)).filter(e=>null!==e):[],a=Array.isArray(e.activities)?e.activities.map(e=>b(e)).filter(e=>null!==e):[],n=i(e.activityThreads)?Object.fromEntries(Object.entries(e.activityThreads).map(([e,t])=>[e,l(Array.isArray(t)?t.map(e=>A(e)).filter(e=>null!==e):[])])):{};return{objectives:s((t=new Set,r.map(e=>{let r=h(e.key||e.title||e.id,t,e.id||e.title||"objective");return e.key===r?e:{...e,key:r}}))),activities:c(a),activityThreads:n}}function E(e){if(!i(e))return R();let a=e[t];if(void 0!==a){let e=w(a);if(e.objectives.length>0||e.activities.length>0||Object.keys(e.activityThreads).length>0)return e}let n=e[r];if(void 0!==n){if(!i(n))return R();let e=Array.isArray(n.goals)?n.goals.map(e=>(function(e){if(!i(e))return null;let t=u(e.target),r=[u(e.summary),t?`Measure: ${t}`:""].filter(Boolean).join("\n\n");return g({...e,summary:r})})(e)).filter(e=>null!==e):[],t=Array.isArray(n.manualActivities)?n.manualActivities.map(e=>b({...e,sourceLabel:"Update"})).filter(e=>null!==e):[],r=i(n.activityThreads)?Object.fromEntries(Object.entries(n.activityThreads).map(([e,t])=>[e,l(Array.isArray(t)?t.map(t=>A({...t,activityId:e})).filter(e=>null!==e):[])])):{};return{objectives:s(e),activities:c(t),activityThreads:r}}return R()}function O(e,a){let n={...e};return delete n[r],n[t]=w(a),n}function I(e,t){let r={...e};return t?r[a]={progress:p(t.progress),status:f(t.status),updatedAt:d(t.updatedAt),...t.source?{source:t.source.trim()}:{},...t.objectiveId?{objectiveId:t.objectiveId}:{},...t.objectiveKey?{objectiveKey:t.objectiveKey}:{},...t.note?{note:t.note.trim()}:{}}:delete r[a],r}function S(e,t){let r=e.objectives.findIndex(e=>e.id===t.id)>=0?e.objectives.map(e=>e.id===t.id?t:e):[t,...e.objectives];return{...e,objectives:s(r)}}e.s(["PROJECT_OBJECTIVES_METADATA_KEY",0,t,"generateProjectObjectiveKey",()=>y,"normalizeProjectHealthProgress",()=>m,"normalizeProjectHealthStatus",()=>v,"readProjectObjectivesWorkspace",()=>E,"upsertProjectObjective",()=>S,"writeProjectHealthSnapshot",()=>I,"writeProjectObjectivesWorkspace",()=>O])},901977,e=>{"use strict";e.i(712513);var t=e.i(764541),r=e.i(744071),a=e.i(765443),n=e.i(671182);async function i(e,a){let n=await t.db.getProjectWithRepos(e,r.LOCAL_USER.id);if(!n)return null;let i=o(n),s=i.objectives.find(e=>e.id===a)??null;return s?{project:n,workspace:i,objective:s}:null}function o(e){let t=e.slug??e.id,r=(0,n.getObjectiveRepository)(t);return r.hasFiles()?r.readWorkspace():(0,a.readProjectObjectivesWorkspace)(e.metadata)}async function s(e){let i=await t.db.getProjectWithRepos(e.projectId,r.LOCAL_USER.id),o=i?.slug??e.projectId;(0,n.getObjectiveRepository)(o).writeWorkspace(e.workspace);let s=(0,a.writeProjectObjectivesWorkspace)(e.currentMetadata??{},e.workspace),l=e.transformMetadata?e.transformMetadata(s):s;return t.db.updateProject(e.projectId,r.LOCAL_USER.id,{metadata:l})}async function l(e){return t.db.updateProject(e.projectId,r.LOCAL_USER.id,{metadata:(0,a.writeProjectHealthSnapshot)(e.currentMetadata??{},e.snapshot)})}async function c(e){return t.db.updateProject(e.projectId,r.LOCAL_USER.id,{metadata:e.transformMetadata(e.currentMetadata??{})})}e.s(["loadProjectObjectiveContext",()=>i,"loadProjectObjectiveWorkspace",()=>o,"persistProjectHealthSnapshot",()=>l,"persistProjectObjectiveMetadata",()=>c,"persistProjectObjectiveWorkspace",()=>s])},341858,e=>{"use strict";function t(e,t,r){return t?e.objectives.find(e=>e.teamId===t&&e.id!==r)??null:null}function r(e){if("string"==typeof e)return e.trim()||void 0}function a(e){return null===e?null:"string"==typeof e?e.trim():void 0}function n(e){if(Array.isArray(e))return Array.from(new Set(e.map(e=>"string"==typeof e?e.trim():"").filter(Boolean)))}e.i(712513),e.i(901977),e.s(["findObjectiveAssignedToTeam",()=>t,"readNullableString",()=>a,"readOptionalString",()=>r,"readStringArray",()=>n])},641922,953610,e=>{"use strict";var t=e.i(522734),r=e.i(814747),a=e.i(446786);function n(e,t){let n;return r.default.join((n=process.env.AGX_DATA_DIR?.trim())?r.default.resolve(n):r.default.join((0,a.homedir)(),".agx"),"projects",e,"objectives",t,"program.md")}function i(e,r){let a=n(e,r);if(!t.default.existsSync(a))return{path:a,content:null,updatedAt:null};try{let e=t.default.readFileSync(a,"utf8"),r=t.default.statSync(a);return{path:a,content:e,updatedAt:r.mtime.toISOString()}}catch{return{path:a,content:null,updatedAt:null}}}function o(e,a,i){let o=n(e,a);t.default.mkdirSync(r.default.dirname(o),{recursive:!0});let s=i.replace(/\s+$/g,"");if(0===s.length)return t.default.existsSync(o)&&t.default.unlinkSync(o),{path:o,content:null,updatedAt:null};let l=s+"\n";t.default.writeFileSync(o,l,"utf8");let c=t.default.statSync(o);return{path:o,content:l,updatedAt:c.mtime.toISOString()}}e.s(["readProgram",()=>i,"writeProgram",()=>o],953610),e.s([],641922)},683289,e=>{"use strict";var t=e.i(692988),r=e.i(635595),a=e.i(75473),n=e.i(923435),i=e.i(418475),o=e.i(303482),s=e.i(976287),l=e.i(774462),c=e.i(111998),u=e.i(201516),d=e.i(68877),p=e.i(259460),f=e.i(257714),v=e.i(502073),m=e.i(187345),j=e.i(193695);e.i(293777);var h=e.i(274321),y=e.i(732470);e.i(341858);var g=e.i(901977);e.i(641922);var b=e.i(953610);e.i(650837);var A=e.i(640911);async function R(e){let t=await e,r="string"==typeof t?.id?t.id.trim():"",a="string"==typeof t?.objectiveId?t.objectiveId.trim():"";return r&&a?{projectId:r,objectiveId:a}:null}async function w(e,t){try{let e=await R(t.params);if(!e)return y.NextResponse.json({error:"Objective not found"},{status:404});let r=await (0,g.loadProjectObjectiveContext)(e.projectId,e.objectiveId);if(!r)return y.NextResponse.json({error:"Objective not found"},{status:404});let{project:a,objective:n}=r,i=a.slug??a.id,o=(0,b.readProgram)(i,n.key);return y.NextResponse.json({program:o})}catch(e){return A.logger.error("Failed to load program",A.logger.formatError(e)),y.NextResponse.json({error:"Failed to load program"},{status:500})}}async function E(e,t){try{let r=await R(t.params);if(!r)return y.NextResponse.json({error:"Objective not found"},{status:404});let a=await (0,g.loadProjectObjectiveContext)(r.projectId,r.objectiveId);if(!a)return y.NextResponse.json({error:"Objective not found"},{status:404});let n=await e.json().catch(()=>null);if(!n||"object"!=typeof n||Array.isArray(n))return y.NextResponse.json({error:"Invalid program payload"},{status:400});let i="string"==typeof n.content?n.content:"",{project:o,objective:s}=a,l=o.slug??o.id,c=(0,b.writeProgram)(l,s.key,i);return y.NextResponse.json({program:c})}catch(e){return A.logger.error("Failed to save program",A.logger.formatError(e)),y.NextResponse.json({error:"Failed to save program"},{status:500})}}e.s(["GET",()=>w,"PUT",()=>E,"dynamic",0,"force-dynamic","runtime",0,"nodejs"],328587);var O=e.i(328587);let I=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/projects/[id]/objectives/[objectiveId]/program/route",pathname:"/api/projects/[id]/objectives/[objectiveId]/program",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/apps/local/app/api/projects/[id]/objectives/[objectiveId]/program/route.ts",nextConfigOutput:"standalone",userland:O}),{workAsyncStorage:S,workUnitAsyncStorage:P,serverHooks:x}=I;function C(){return(0,a.patchFetch)({workAsyncStorage:S,workUnitAsyncStorage:P})}async function T(e,t,a){I.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let y="/api/projects/[id]/objectives/[objectiveId]/program/route";y=y.replace(/\/index$/,"")||"/";let g=await I.prepare(e,t,{srcPage:y,multiZoneDraftMode:!1});if(!g)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:b,params:A,nextConfig:R,parsedUrl:w,isDraftMode:E,prerenderManifest:O,routerServerContext:S,isOnDemandRevalidate:P,revalidateOnlyGenerated:x,resolvedPathname:C,clientReferenceManifest:T,serverActionsManifest:_}=g,k=(0,s.normalizeAppPath)(y),N=!!(O.dynamicRoutes[k]||O.routes[C]),M=async()=>((null==S?void 0:S.render404)?await S.render404(e,t,w,!1):t.end("This page could not be found"),null);if(N&&!E){let e=!!O.routes[C],t=O.dynamicRoutes[k];if(t&&!1===t.fallback&&!e){if(R.experimental.adapterPath)return await M();throw new j.NoFallbackError}}let U=null;!N||I.isDev||E||(U="/index"===(U=C)?"/":U);let D=!0===I.isDev||!N,H=N&&!D;_&&T&&(0,o.setManifestsSingleton)({page:y,clientReferenceManifest:T,serverActionsManifest:_});let L=e.method||"GET",$=(0,i.getTracer)(),F=$.getActiveScopeSpan(),q={params:A,prerenderManifest:O,renderOpts:{experimental:{authInterrupts:!!R.experimental.authInterrupts},cacheComponents:!!R.cacheComponents,supportsDynamicResponse:D,incrementalCache:(0,n.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:R.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>I.onRequestError(e,t,a,n,S)},sharedContext:{buildId:b}},K=new l.NodeNextRequest(e),W=new l.NodeNextResponse(t),B=c.NextRequestAdapter.fromNodeNextRequest(K,(0,c.signalFromNodeResponse)(t));try{let o=async e=>I.handle(B,q).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=$.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route");if(a){let t=`${L} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t)}else e.updateName(`${L} ${y}`)}),s=!!(0,n.getRequestMeta)(e,"minimalMode"),l=async n=>{var i,l;let c=async({previousCacheEntry:r})=>{try{if(!s&&P&&x&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await o(n);e.fetchMetrics=q.renderOpts.fetchMetrics;let l=q.renderOpts.pendingWaitUntil;l&&a.waitUntil&&(a.waitUntil(l),l=void 0);let c=q.renderOpts.collectedTags;if(!N)return await (0,p.sendResponse)(K,W,i,q.renderOpts.pendingWaitUntil),null;{let e=await i.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(i.headers);c&&(t[m.NEXT_CACHE_TAGS_HEADER]=c),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==q.renderOpts.collectedRevalidate&&!(q.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&q.renderOpts.collectedRevalidate,a=void 0===q.renderOpts.collectedExpire||q.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:q.renderOpts.collectedExpire;return{value:{kind:h.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await I.onRequestError(e,t,{routerKind:"App Router",routePath:y,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:P})},!1,S),t}},u=await I.handleResponse({req:e,nextConfig:R,cacheKey:U,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:O,isRoutePPREnabled:!1,isOnDemandRevalidate:P,revalidateOnlyGenerated:x,responseGenerator:c,waitUntil:a.waitUntil,isMinimalMode:s});if(!N)return null;if((null==u||null==(i=u.value)?void 0:i.kind)!==h.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(l=u.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});s||t.setHeader("x-nextjs-cache",P?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),E&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let j=(0,f.fromNodeOutgoingHttpHeaders)(u.value.headers);return s&&N||j.delete(m.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||j.get("Cache-Control")||j.set("Cache-Control",(0,v.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(K,W,new Response(u.value.body,{headers:j,status:u.value.status||200})),null};F?await l(F):await $.withPropagatedContext(e.headers,()=>$.trace(u.BaseServerSpan.handleRequest,{spanName:`${L} ${y}`,kind:i.SpanKind.SERVER,attributes:{"http.method":L,"http.target":e.url}},l))}catch(t){if(t instanceof j.NoFallbackError||await I.onRequestError(e,t,{routerKind:"App Router",routePath:k,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:P})},!1,S),N)throw t;return await (0,p.sendResponse)(K,W,new Response(null,{status:500})),null}}e.s(["handler",()=>T,"patchFetch",()=>C,"routeModule",()=>I,"serverHooks",()=>x,"workAsyncStorage",()=>S,"workUnitAsyncStorage",()=>P],683289)}];
2
+
3
+ //# sourceMappingURL=apps_local_e2867b32._.js.map
@@ -0,0 +1,91 @@
1
+ module.exports=[641922,953610,e=>{"use strict";var t=e.i(522734),r=e.i(814747),i=e.i(446786);function s(e,t){let s;return r.default.join((s=process.env.AGX_DATA_DIR?.trim())?r.default.resolve(s):r.default.join((0,i.homedir)(),".agx"),"projects",e,"objectives",t,"program.md")}function a(e,r){let i=s(e,r);if(!t.default.existsSync(i))return{path:i,content:null,updatedAt:null};try{let e=t.default.readFileSync(i,"utf8"),r=t.default.statSync(i);return{path:i,content:e,updatedAt:r.mtime.toISOString()}}catch{return{path:i,content:null,updatedAt:null}}}function n(e,i,a){let n=s(e,i);t.default.mkdirSync(r.default.dirname(n),{recursive:!0});let o=a.replace(/\s+$/g,"");if(0===o.length)return t.default.existsSync(n)&&t.default.unlinkSync(n),{path:n,content:null,updatedAt:null};let u=o+"\n";t.default.writeFileSync(n,u,"utf8");let c=t.default.statSync(n);return{path:n,content:u,updatedAt:c.mtime.toISOString()}}e.s(["readProgram",()=>a,"writeProgram",()=>n],953610),e.s([],641922)},11061,e=>{"use strict";var t=e.i(522734),r=e.i(446786),i=e.i(814747),s=e.i(769025);let{DatabaseSync:a}=process.getBuiltinModule("node:sqlite"),n=process.env.AGX_GROUP_CHAT_DIR?.trim()||i.default.join(r.default.homedir(),".agx","group-chat"),o=i.default.join(n,"history.sqlite");function u(e){return"scripted"===e?"scripted":"chat"}function c(e){let t,r=e.chat_created_at??e.created_at,i=e.chat_completed_at??null,s=function(e,t){switch(e){case"queued":return"queued";case"running":case"awaiting_user":case"blocked":return"running";case"completed":return"success";case"failed":return"failed";case"cancelled":return"cancelled";default:return t}}(e.chat_status,e.status);return{id:e.id,projectId:e.project_id,projectSlug:e.project_slug,issueId:e.issue_id,issueIdentifier:e.issue_identifier,issueTitle:e.issue_title,issueStatus:e.issue_status,issueAssignee:e.issue_assignee,threadId:e.thread_id,rootMessageId:e.root_message_id,chatRunId:e.chat_run_id,agentId:e.agent_id,agentName:e.agent_name,mode:u(e.mode),sessionTitle:"chat"===u(e.mode)&&(t=String(e.root_content??"").replace(/\[reaction\s+[^\]]*\]/gi,"").replace(/\[agx:[^\]]*\]/g,"").replace(/\[checkpoint\]/g,"").replace(/\[criteria:\s*[^\]]*\]/g,"").replace(/\[done\]/g,"").replace(/\[blocked[^\]]*\]/g,"").replace(/^\[SKIP\]$/gm,"").replace(/\s+/g," ").trim())?t.length>72?`${t.slice(0,69).trimEnd()}...`:t:null,status:s,durationMs:null!=i?Math.max(i-r,0):null,lastError:e.chat_last_error??e.error,recapFilePath:e.recap_file_path??null,startedAt:new Date(r).toISOString(),updatedAt:new Date((e.chat_updated_at??e.updated_at)||e.updated_at).toISOString(),completedAt:"number"==typeof i?new Date(i).toISOString():null}}async function l(e){await t.promises.mkdir(n,{recursive:!0});let r=new a(o);(0,s.pragmaSet)(r,"journal_mode = WAL");try{r.exec(`
2
+ CREATE TABLE IF NOT EXISTS chat_runs (
3
+ id TEXT PRIMARY KEY,
4
+ thread_id TEXT NOT NULL,
5
+ root_message_id TEXT,
6
+ user_id TEXT NOT NULL,
7
+ project_slug TEXT,
8
+ status TEXT NOT NULL,
9
+ current_step INTEGER NOT NULL DEFAULT 0,
10
+ max_steps INTEGER NOT NULL DEFAULT 10,
11
+ steps_used INTEGER NOT NULL DEFAULT 0,
12
+ last_error TEXT,
13
+ active_participant_ids TEXT NOT NULL DEFAULT '[]',
14
+ payload_json TEXT,
15
+ result_json TEXT,
16
+ created_at INTEGER NOT NULL,
17
+ updated_at INTEGER NOT NULL,
18
+ completed_at INTEGER
19
+ );
20
+ CREATE TABLE IF NOT EXISTS messages (
21
+ thread_id TEXT NOT NULL,
22
+ id TEXT NOT NULL,
23
+ role TEXT NOT NULL,
24
+ participant_id TEXT,
25
+ content TEXT NOT NULL,
26
+ timestamp INTEGER NOT NULL,
27
+ root_message_id TEXT,
28
+ parent_message_id TEXT,
29
+ depth INTEGER NOT NULL DEFAULT 0,
30
+ thread_status TEXT,
31
+ outcome_note TEXT,
32
+ PRIMARY KEY (thread_id, id)
33
+ );
34
+ CREATE TABLE IF NOT EXISTS linear_runs (
35
+ id TEXT PRIMARY KEY,
36
+ project_id TEXT,
37
+ project_slug TEXT,
38
+ issue_id TEXT NOT NULL,
39
+ issue_identifier TEXT NOT NULL,
40
+ issue_title TEXT NOT NULL,
41
+ issue_status TEXT NOT NULL,
42
+ issue_assignee TEXT,
43
+ thread_id TEXT NOT NULL,
44
+ root_message_id TEXT,
45
+ chat_run_id TEXT,
46
+ agent_id TEXT NOT NULL,
47
+ agent_name TEXT NOT NULL,
48
+ mode TEXT NOT NULL DEFAULT 'chat',
49
+ status TEXT NOT NULL DEFAULT 'queued',
50
+ error TEXT,
51
+ recap_file_path TEXT,
52
+ created_at INTEGER NOT NULL,
53
+ updated_at INTEGER NOT NULL
54
+ );
55
+ CREATE INDEX IF NOT EXISTS idx_linear_runs_issue_created
56
+ ON linear_runs (issue_id, created_at DESC);
57
+ CREATE INDEX IF NOT EXISTS idx_linear_runs_project_issue_created
58
+ ON linear_runs (project_id, issue_id, created_at DESC);
59
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_linear_runs_chat_run_id
60
+ ON linear_runs (chat_run_id)
61
+ WHERE chat_run_id IS NOT NULL;
62
+ `);let t=r.prepare("PRAGMA table_info(linear_runs)").all();return t.some(e=>"mode"===e.name)||r.exec("ALTER TABLE linear_runs ADD COLUMN mode TEXT NOT NULL DEFAULT 'chat';"),t.some(e=>"recap_file_path"===e.name)||r.exec("ALTER TABLE linear_runs ADD COLUMN recap_file_path TEXT;"),e(r)}finally{r.close()}}async function d(e){var t;let r=e.issueId.trim(),i=(t=e.projectId??null,t?.trim()||null),s=Number.isFinite(e.limit)?Math.min(Math.max(Number(e.limit),1),100):50;return l(e=>{let t=[r],a=["lr.issue_id = ?"];return i&&(a.push("lr.project_id = ?"),t.push(i)),t.push(s),e.prepare(`SELECT
63
+ lr.*,
64
+ cr.status AS chat_status,
65
+ cr.last_error AS chat_last_error,
66
+ cr.created_at AS chat_created_at,
67
+ cr.updated_at AS chat_updated_at,
68
+ cr.completed_at AS chat_completed_at,
69
+ msg.content AS root_content
70
+ FROM linear_runs lr
71
+ LEFT JOIN chat_runs cr ON cr.id = (
72
+ SELECT id FROM chat_runs WHERE thread_id = lr.thread_id ORDER BY updated_at DESC LIMIT 1
73
+ )
74
+ LEFT JOIN messages msg ON msg.thread_id = lr.thread_id AND msg.id = lr.root_message_id
75
+ WHERE ${a.join(" AND ")}
76
+ ORDER BY lr.created_at DESC
77
+ LIMIT ?`).all(...t).map(c)})}async function p(e){return l(t=>{let r=e?.trim(),i=r?`SELECT DISTINCT lr.issue_id, lr.agent_id, lr.agent_name
78
+ FROM linear_runs lr
79
+ INNER JOIN chat_runs cr ON cr.id = (
80
+ SELECT id FROM chat_runs WHERE thread_id = lr.thread_id ORDER BY updated_at DESC LIMIT 1
81
+ )
82
+ WHERE cr.status IN ('queued', 'running')
83
+ AND lr.project_id = ?`:`SELECT DISTINCT lr.issue_id, lr.agent_id, lr.agent_name
84
+ FROM linear_runs lr
85
+ INNER JOIN chat_runs cr ON cr.id = (
86
+ SELECT id FROM chat_runs WHERE thread_id = lr.thread_id ORDER BY updated_at DESC LIMIT 1
87
+ )
88
+ WHERE cr.status IN ('queued', 'running')`;return(r?t.prepare(i).all(e.trim()):t.prepare(i).all()).map(e=>({issueId:e.issue_id,agentId:e.agent_id,agentName:e.agent_name}))})}e.s(["getIssueActiveAgents",()=>p,"listLinearRuns",()=>d])},720395,e=>{"use strict";var t=e.i(84516),r=e.i(29764),i=e.i(11061),s=e.i(124985);e.i(243174);var a=e.i(248821);e.i(641922);var n=e.i(953610),o=e.i(901977);let u="project_objective_health_history",c={"on track":"on_track","at risk":"at_risk","off track":"off_track",done:"done"};function l(e){return!!e&&"object"==typeof e&&!Array.isArray(e)}function d(e){return"number"==typeof e&&Number.isFinite(e)?Math.max(0,Math.min(100,Math.round(e))):0}function p(e){return"string"==typeof e&&e.trim()?e.trim():void 0}function T(...e){let t=e.flatMap(e=>e??[]),r=[];for(let e of[...t].sort((e,t)=>Date.parse(e.recordedAt)-Date.parse(t.recordedAt))){let t=r[r.length-1]??null;t&&t.progress===e.progress&&t.status===e.status&&(!t.source||!e.source||t.source===e.source)&&5e3>=Math.abs(Date.parse(e.recordedAt)-Date.parse(t.recordedAt))||r.push(e)}return r}var _=e.i(460275),m=e.i(765443);let E={on_track:"On track",at_risk:"At risk",off_track:"Off track",done:"Done"};async function h(e){let t=Date.now(),r="";try{return await (0,_.runCliResponse)({provider:e.provider,model:e.model,prompt:e.prompt,identity:e.identity,self:e.self,skills:e.skills,systemContext:e.systemContext,passthroughArgs:e.cliArgs?e.cliArgs.split(/\s+/).filter(Boolean):void 0,onDelta:e=>{r+=e},onSpawn:e.onSpawn}),{output:r,error:"",durationMs:Date.now()-t,status:"success"}}catch(e){return{output:r,error:e instanceof Error?e.message:String(e),durationMs:Date.now()-t,status:"failed"}}}function g(e){try{let t=JSON.parse(e);return t&&"object"==typeof t&&!Array.isArray(t)?t:null}catch{return null}}function j(e){let t=e.trim();if(!t)return null;let r=g(t);if(r)return r;let i=t.indexOf("{"),s=t.lastIndexOf("}");return -1===i||s<=i?null:g(t.slice(i,s+1))}function f(e){return"number"==typeof e&&Number.isFinite(e)?(0,m.normalizeProjectHealthProgress)(e):null}function N(e){return"string"==typeof e&&e.trim()?(0,m.normalizeProjectHealthStatus)(e):null}function I(e,t,r){return`${e}: ${t}% ${E[r]}`}function b(e){return[`- id: ${e.id}`,` identifier: ${e.identifier}`,` title: ${e.title}`,` status: ${e.status}`,` assignee: ${e.assignee??"Unassigned"}`,e.url?` url: ${e.url}`:null].filter(e=>!!e).join("\n")}async function L(e){let{job:o,objectiveContext:u}=e,{project:c,workspace:l,objective:d}=u,p=c.slug??c.id,[{issues:T},_,m,E]=await Promise.all([(0,r.listObjectiveTrackerIssues)({projectId:c.id,objectiveKey:d.key,projectSlug:p,refresh:!0}),(0,i.getIssueActiveAgents)(c.id),Promise.resolve((0,s.getActivityRepository)(p,d.key).list({limit:20})),Promise.resolve((0,a.getNoteRepository)(p,d.key).readAll())]),h=new Set(T.map(e=>e.id)),g=_.filter(e=>h.has(e.issueId)),j=(0,r.filterObjectiveTrackerIssuesForAction)(T,g.map(e=>e.issueId)),f=(0,t.getPromptJobStore)().listJobs({objectiveId:d.id}).filter(e=>e.id!==o.id),N=l.objectives.filter(e=>e.id!==d.id),I=[];I.push("GOAL",d.title,d.summary?.trim()||"No summary provided."),I.push("","CURRENT STATE",`Progress: ${d.progress}% | Status: ${d.status}`);let L=(0,n.readProgram)(p,d.key);I.push("","PROGRAM",`path: ${L.path}`),L.content&&L.content.trim().length>0?I.push(L.content.trim()):I.push('(empty) No program has been authored for this objective yet. Before committing to a direction, surface this to the user in chat: ask what "better" means for this objective (the success metric), what paths/systems are in-scope, and any constraints. Capture the answer by writing to the path above.'),E.length>0&&I.push("","NOTES",...E.map(e=>`### ${e.title}
89
+ ${e.body}`));let v=m.activities??[];return v.length>0&&I.push("","RECENT ACTIVITY",...v.map(e=>{let t=e.createdAt.replace("T"," ").replace(/\.\d+Z$/,"").slice(0,16);return`- [${t}] ${e.body.split("\n")[0]}`})),T.length>0?I.push("","LINEAR TICKETS",T.map(e=>b(e)).join("\n\n")):I.push("","LINEAR TICKETS","- None."),g.length>0&&I.push("","ACTIVE SESSIONS",...g.map(e=>`- ${e.issueId}: running with ${e.agentName}`)),f.length>0&&I.push("","SCHEDULED TASKS",...f.map(e=>`- ${e.name} | state: ${e.state} | last outcome: ${e.lastOutcome??"none"}`)),N.length>0&&I.push("","PROJECT CONTEXT",...N.map(e=>`- ${e.title} (${e.key}) | ${e.progress}% | ${e.status}`)),I.push("","GUIDANCE",o.prompt.trim()||"No additional guidance provided."),I.push("","ELIGIBLE TICKETS",j.length>0?j.map(e=>b(e)).join("\n\n"):"- None."),I.push("","---","What single action most advances this objective right now?"),{prompt:I.join("\n"),issues:T,eligibleIssues:j,activeIssueAgents:g}}async function v(t){let r=Date.now();try{if(!t.job.projectId||!t.job.objectiveId)throw Error("Objective worker jobs require projectId and objectiveId.");let i=await (0,o.loadProjectObjectiveContext)(t.job.projectId,t.job.objectiveId);if(!i)throw Error("Objective context could not be resolved for this scheduled task.");let s=await L({job:t.job,objectiveContext:i}),a=await h({...t.controllerContext,prompt:s.prompt,systemContext:'You are deciding what action an objective worker should take next.\nReturn ONLY raw JSON with no markdown fences or commentary.\nValid responses:\n{"action":"work_ticket","ticketId":"ticket-id","reason":"...","objectiveProgress":42,"objectiveStatus":"at_risk","projectProgress":35,"projectStatus":"at_risk"}\n{"action":"run_prompt","prompt":"detailed instructions","reason":"...","objectiveProgress":42,"objectiveStatus":"at_risk"}\n{"action":"stop","reason":"...","objectiveProgress":42,"objectiveStatus":"at_risk"}\nRules:\n- "work_ticket": ticketId must exactly match one of the ELIGIBLE TICKETS ids.\n- "run_prompt": for work not captured by existing tickets. When no tickets are actionable and the objective is not done, use this to plan: review notes, refine the last plan, or outline next steps. The prompt should instruct the agent to append to an existing note when one is relevant rather than creating a new note.\n- "stop": only when the objective is done or genuinely no action (including planning) adds value.\nPercentages must be integers 0-100.\nStatuses: on_track, at_risk, off_track, done.',cliArgs:t.cliArgs,onSpawn:t.onSpawn});if("success"!==a.status)return{...a,output:a.output||"Objective controller failed before selecting an action."};let n=j(a.output),_="string"==typeof n?.action?n.action.trim().toLowerCase():"string"==typeof n?.decision?n.decision.trim().toLowerCase():"",E="work"===_?"work_ticket":_;if(!E){let e=a.output??"";console.warn(`[objective-worker] empty action from controller (job=${t.job.id}, outputLen=${e.length}, parsed=${n?"object":"null"}):`,e.slice(0,500))}let g="string"==typeof n?.reason?n.reason.trim():"",b=f(n?.objectiveProgress),v=N(n?.objectiveStatus),A=f(n?.projectProgress),S=N(n?.projectStatus),O="string"==typeof n?.projectNote?n.projectNote.trim():"",y="string"==typeof n?.objectiveNote?n.objectiveNote.trim():"",w=new Date().toISOString(),k=null!==b&&v?I("Objective health",b,v):null,R=null!==A&&S?I("Project health",A,S):null,D=null!==b&&null!==v?{objectiveId:i.objective.id,objectiveKey:i.objective.key,progress:b,status:v,recordedAt:w,source:`scheduled-task:${t.job.id}`,note:y||void 0}:null,X=null!==b&&null!==v&&(b!==i.objective.progress||v!==i.objective.status),C=X?(0,m.upsertProjectObjective)(i.workspace,{...i.objective,progress:b,status:v,updatedAt:w}):i.workspace,U=null!==A&&null!==S?{progress:A,status:S,updatedAt:w,source:`scheduled-task:${t.job.id}`,objectiveId:i.objective.id,objectiveKey:i.objective.key,note:O||void 0}:null,M=e=>{let t=e;return U&&(t=(0,m.writeProjectHealthSnapshot)(t,U)),D&&(t=function(e,t){let r=t.objectiveId.trim();if(!r)return e;let i=function(e,t){if(!l(e)||!t.trim())return[];let r=e[u];if(!l(r))return[];let i=r[t.trim()];return Array.isArray(i)?T(i.map(e=>(function(e){if(!l(e))return null;let t=function(e){if("string"!=typeof e)return null;let t=e.trim().toLowerCase();return"on_track"===t||"at_risk"===t||"off_track"===t||"done"===t?t:c[t]??null}(e.status),r=function(e){if("string"!=typeof e)return null;let t=Date.parse(e);return Number.isNaN(t)?null:new Date(t).toISOString()}(e.recordedAt);return t&&r?{progress:d(e.progress),status:t,recordedAt:r,source:p(e.source),note:p(e.note),objectiveId:p(e.objectiveId)??null,objectiveKey:p(e.objectiveKey)??null}:null})(e)).filter(e=>!!e)):[]}(e,r),s=T(i,[t]).slice(-200),a=l(e[u])?e[u]:{};return{...e,[u]:{...a,[r]:s.map(e=>({progress:d(e.progress),status:e.status,recordedAt:e.recordedAt,...e.source?{source:e.source}:{},...e.note?{note:e.note}:{},...e.objectiveId?{objectiveId:e.objectiveId}:{},...e.objectiveKey?{objectiveKey:e.objectiveKey}:{}}))}}}(t,D)),t};X?await (0,o.persistProjectObjectiveWorkspace)({projectId:i.project.id,currentMetadata:i.project.metadata,workspace:C,transformMetadata:M}):(D||U)&&await (0,o.persistProjectObjectiveMetadata)({projectId:i.project.id,currentMetadata:i.project.metadata,transformMetadata:M});let{dispatchObjectiveAction:$}=await e.A(688671),P=await $({action:E,parsed:n,reason:g,job:t.job,controllerContext:t.controllerContext,sessionAgent:t.sessionAgent,objectiveContext:i,eligibleIssues:s.eligibleIssues,issues:s.issues,healthSummaries:{objectiveHealthSummary:k,projectHealthSummary:R,objectiveNote:y,projectNote:O},cliArgs:t.cliArgs,onSpawn:t.onSpawn,startMs:r}),{logActionReceipt:x}=await e.A(688671);return await x(P,{jobId:t.job.id,projectId:t.job.projectId,objectiveId:t.job.objectiveId}),{output:P.result,error:"failed"===P.status?P.result:"",durationMs:Date.now()-r,status:P.status}}catch(e){return{output:"",error:e instanceof Error?e.message:String(e),durationMs:Date.now()-r,status:"failed"}}}e.s(["buildObjectiveObservation",()=>L,"executeObjectiveWorker",()=>v,"extractFirstJsonObject",()=>j],720395)},688671,e=>{e.v(e=>Promise.resolve().then(()=>e(917435)))}];
90
+
91
+ //# sourceMappingURL=apps_local_e32b0cab._.js.map
@@ -29,6 +29,6 @@ ${a}`:a,{note:d}=this.upsertKnowledgeNote({scope:i,subjectId:o,content:s,changeS
29
29
  `);for(let e of f.filter(e=>e.project_id===r.id))y(i.default.join(this.projectVariablesDir(r.slug),`${l(e.key,"var")}.md`),{id:`project-variable:${r.id}:${e.key}`,type:"project-variable",project_id:r.id,title:e.key,key:e.key,value:e.value,created_at:t,updated_at:t},"");for(let e of(y(this.projectAgentsIndexPath(r.slug),{id:`project-agents:${r.id}`,type:"project-agents",project_id:r.id,title:"Project Agents",created_at:r.created_at,updated_at:r.updated_at,agents:c.filter(e=>e.project_id===r.id).sort((e,t)=>e.routing_order-t.routing_order)},"# Project Agents\n"),g.filter(e=>e.project_id===r.id)))y(i.default.join(this.projectThreadsDir(r.slug),`${encodeURIComponent(e.thread_id)}.md`),{id:`project-thread:${r.id}:${e.thread_id}`,type:"project-thread",project_id:r.id,thread_id:e.thread_id,title:e.thread_id,created_at:e.created_at||t,updated_at:e.created_at||t},`# Thread ${e.thread_id}
30
30
  `)}for(let e of w)y(this.nextKnowledgeEntryPath(e.scope,e.subject_id,e.title||e.id),{id:e.id,type:"knowledge-evidence",scope:e.scope,subject_id:e.subject_id,source_type:e.source_type,source_id:e.source_id,kind:e.kind,title:e.title,confidence:e.confidence,durability:e.durability,tags:e.tags?JSON.parse(e.tags):[],evidence:e.evidence?JSON.parse(e.evidence):[],metadata:e.metadata?JSON.parse(e.metadata):{},content_hash:e.content_hash||b(e.scope,e.subject_id,e.body),created_at:e.created_at||t,updated_at:e.updated_at||e.created_at||t},e.body),I+=1;return{projects:n.length,repos:s.length,agents:k.length,importedArtifacts:D,evidenceFiles:I}}composeAgentNoteBody(e,t,r){let i=[`# ${e}`];return t?.trim()&&i.push(`## Identity
31
31
  ${t.trim()}`),r.trim()&&i.push(`## Portable Knowledge
32
- ${r.trim()}`),i.join("\n\n")}synthesizeProjectNote(e,t,r){return Array.from(new Set([...t.filter(t=>t.project_id===e&&"system"===t.producer).map(e=>e.content.trim()),...r.filter(t=>"project"===t.scope&&t.subject_id===e).map(e=>e.body.trim())].filter(Boolean))).map(e=>`- ${e.replace(/^\-\s*/,"")}`).join("\n")}synthesizeRepoNote(e,t,r){return Array.from(new Set([...t.filter(t=>t.repo_id===e&&"system"===t.producer).map(e=>e.content.trim()),...r.filter(t=>"repo"===t.scope&&t.subject_id===e).map(e=>e.body.trim())].filter(Boolean))).map(e=>`- ${e.replace(/^\-\s*/,"")}`).join("\n")}synthesizeAgentNote(e,t,r){return Array.from(new Set([...t.filter(t=>t.agent_id===e).map(e=>e.content.trim()),...r.filter(t=>"agent"===t.scope&&t.subject_id===e).map(e=>e.body.trim())].filter(Boolean))).map(e=>`- ${e.replace(/^\-\s*/,"")}`).join("\n")}};e.s(["vaultStore",0,P])},237718,842851,209120,393018,167361,930430,840427,262504,749010,484167,103292,735066,480223,890838,981261,32868,133,e=>{"use strict";let t=/^[A-Z]{2,10}$/;function r(e){if(null==e||""===e)return null;if("string"!=typeof e)throw Error("identifier_prefix must be a string");let r=e.trim().toUpperCase();if(!t.test(r))throw Error("identifier_prefix must be 2-10 uppercase ASCII letters (e.g. 'TSK', 'AGX')");return r}function i(){let{createAdminDbClientSQLite:t}=e.r(633211);return t()}function o(e,t){if(!e)return!1;let r="string"==typeof e.message?e.message:"";return"42P01"===e.code||"PGRST205"===e.code||r.includes(`relation "${t}" does not exist`)||r.includes(`Could not find the table 'agx.${t}'`)||r.includes(`Could not find the table 'public.${t}'`)}function n(t,r,i){let o=e=>"string"!=typeof e?null:e.trim()||null,n=null;try{let t=e.r(522734),r=e.r(814747).join(process.env.HOME||"",".agx","config.json"),i=JSON.parse(t.readFileSync(r,"utf-8"));n=o(i?.defaultProvider)||null}catch{}let a=o(i?.default_provider)||n||"claude",s=o(t.provider)||o(r?.provider)||a,d=o(i?.models?.[s])||null,l=o(t.model)||o(r?.model)||d||null;return{provider:s,model:l,swarm:t.swarm??r?.swarm??!1,swarm_models:t.swarm_models?.length?t.swarm_models:r?.swarm_models||[]}}function a(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,40)||"task"}async function s(e,t){let r=a(e);for(let i=0;i<5;i++){let{data:i,error:o}=await t.from("tasks").select("id").eq("slug",r).limit(1);if(o)throw o;if(!i||0===i.length)return r;let n=Math.random().toString(36).slice(2,6);r=`${a(e)}-${n}`.slice(0,48)}return`${a(e)}-${Date.now().toString(36).slice(-4)}`.slice(0,48)}async function d(e,t,r,i){let o=a(e);for(let n=0;n<5;n++){let n=r.from("projects").select("id").eq("slug",o).eq("user_id",t);i&&(n=n.neq("id",i));let{data:s,error:d}=await n.limit(1);if(d)throw d;if(!s||0===s.length)return o;let l=Math.random().toString(36).slice(2,6);o=`${a(e)}-${l}`.slice(0,48)}return`${a(e)}-${Date.now().toString(36).slice(-4)}`.slice(0,48)}function l(e){return e??i()}function c(e){let t=e.trim();if(!t)return[];try{let e=JSON.parse(t);if(Array.isArray(e))return e.map(e=>String(e||"").trim()).filter(Boolean)}catch{}return t.split(",").map(e=>e.trim()).filter(Boolean)}function u(e){let t;if(!e)return[];if(Array.isArray(e))t=e.map(e=>"string"==typeof e?e:null==e?"":String(e)).filter(Boolean);else{if("string"!=typeof e)return[];t=c(e)}return Array.from(new Set(t.map(e=>e.trim()).filter(Boolean)))}function p(e){let t=e.match(/^---\n([\s\S]*?)\n---\n([\s\S]*)$/);if(!t)return{frontmatter:{},body:e};let r={};for(let e of t[1].split("\n")){let t=e.indexOf(":");if(t>0){let i=e.slice(0,t).trim(),o=e.slice(t+1).trim();if("depends_on"===i){r[i]=c(o);continue}"true"===o?r[i]=!0:"false"===o?r[i]=!1:/^\d+$/.test(o)?r[i]=parseInt(o,10):r[i]=o}}return{frontmatter:r,body:t[2]}}async function f(e,t,r){if(!e||!t?.length)return;let i=l(r),o=new Set,n=[...t];for(;n.length;){let t=n.pop();if(!t)continue;if(t===e)throw Error("Circular dependency detected");if(o.has(t))continue;o.add(t);let{data:r,error:a}=await i.from("tasks").select("depends_on").eq("id",t).maybeSingle();if(a){if("PGRST116"===a.code||"42703"===a.code)continue;throw a}if(r)for(let e of Array.isArray(r.depends_on)?r.depends_on:[])e&&!o.has(e)&&n.push(e)}}function g(e){let{body:t}=p(e),r=t.match(/^#\s+(.+)$/m);return r?r[1]:void 0}async function m(e){let t=i(),{data:r,error:n}=await t.from("user_settings").select("*").eq("user_id",e).maybeSingle();if(n){if(o(n,"user_settings"))return null;throw n}return r||null}async function _(e,t,r){let o=r?.onlyIfNewer!==!1,n=function(e){if("string"==typeof e){let t=Date.parse(e);if(Number.isFinite(t))return new Date(t).toISOString()}return new Date().toISOString()}(t.changed_at),a=await m(e);if(o&&a?.changed_at){let e=Date.parse(a.changed_at),t=Date.parse(n);if(Number.isFinite(e)&&Number.isFinite(t)&&t<=e)return{settings:a,updated:!1}}let s={user_id:e,default_provider:t.default_provider??a?.default_provider??null,models:t.models??a?.models??{},provenance:t.provenance,changed_at:n},d=i(),{error:l}=await d.from("user_settings").upsert(s,{onConflict:"user_id"});if(l)throw l;let c=await m(e);if(!c)throw Error("Failed to load user_settings after upsert");return{settings:c,updated:!0}}e.s(["IDENTIFIER_PREFIX_REGEX",0,t,"validateIdentifierPrefix",()=>r],842851),e.i(864075),e.s(["createAdminDbClient",()=>i],209120),e.s(["ensureNoCircularDependency",()=>f,"extractTitle",()=>g,"generateUniqueProjectSlug",()=>d,"generateUniqueSlug",()=>s,"getDbClient",()=>l,"isMissingRelationError",()=>o,"normalizeDependsOnInput",()=>u,"parseDependsOnValue",()=>c,"parseFrontmatter",()=>p,"resolveTaskConfig",()=>n,"slugify",()=>a],393018),e.s(["getUserSettings",()=>m,"upsertUserSettings",()=>_],167361);var h=e.i(254799);let y="Waiting on dependencies";e.i(870611);var w=e.i(938281);let j=[{value:"task.created",label:"Task created",description:"Fires immediately when a new task is added to the queue."},{value:"task.stage_complete",label:"Stage completed",description:"Emitted whenever a stage finishes and the task advances."},{value:"task.completed",label:"Task completed",description:"When the task reaches a completed status (done)."},{value:"task.failed",label:"Task failed",description:"When the task may have errored, including cancellations."},{value:"task.blocked",label:"Task blocked",description:"When the agent raises the task as blocked awaiting manual input."}].map(e=>e.value);class k extends Error{}function v(e){let t=Array.isArray(e.events)?e.events.filter(e=>"string"==typeof e).map(e=>e.trim()).filter(e=>j.includes(e)):[];return{id:String(e.id),user_id:String(e.user_id),url:String(e.url),name:null!=e.name?String(e.name):null,events:t,enabled:!1!==e.enabled,created_at:String(e.created_at),updated_at:String(e.updated_at)}}async function b(e,t){if(function(e,t){if(!e||"object"!=typeof e)return!1;let r=e.code,i="string"==typeof e.message?e.message:"";return"42P01"===r||"PGRST205"===r||i.includes(`relation "${t}" does not exist`)||i.includes(`Could not find the table 'agx.${t}'`)||i.includes(`Could not find the table 'public.${t}'`)}(t,e))throw new k(`Missing relation: ${e}`);throw t}async function S(e){let t=i(),{data:r,error:o}=await t.from("notification_webhooks").select("*").eq("user_id",e).order("created_at",{ascending:!1});return(o&&await b("notification_webhooks",o),r)?(Array.isArray(r)?r:[r]).map(v):[]}async function P(e){if(!e.userId)return;let t=[];try{t=await S(e.userId)}catch(e){if(e instanceof k)return void console.debug("[notifications] notification_webhooks schema not ready, skipping");w.logger.error("[notifications] failed to load webhooks",w.logger.formatError(e));return}let r=t.filter(t=>t.enabled&&t.events.includes(e.eventType));if(!r.length)return;let i=e.timestamp||new Date().toISOString(),o={eventType:e.eventType,taskId:e.taskId,userId:e.userId,title:e.title||null,slug:e.slug||null,stage:e.stage||null,previousStage:e.previousStage||null,nextStage:e.nextStage||null,status:e.status||null,error:e.error||null,timestamp:i,details:e.details||{}};await Promise.all(r.map(async e=>{let t=new AbortController,r=setTimeout(()=>t.abort(),1e4);try{let r=await fetch(e.url,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o),signal:t.signal});r.ok||w.logger.error(`[notifications] webhook ${e.url} responded with ${r.status}`)}catch(t){w.logger.error(`[notifications] failed to send to ${e.url}`,w.logger.formatError(t))}finally{clearTimeout(r)}}))}e.s(["notifyTaskEvent",()=>P],930430);var D=e.i(341902);let I=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;async function A(e,t,r){if(!t.length)return[];let i=t.map(t=>({...t.id?{id:t.id}:{},project_id:e,name:t.name,path:t.path??null,git_url:t.git_url??null,notes:t.notes??null})),{data:n,error:a}=await r.from("project_repos").insert(i).select("*");if(a){if(o(a,"project_repos"))return[];throw a}return n||[]}async function q(e,t=!1){let r=i().from("projects").select("*, project_repos(*)");e&&(r=r.eq("user_id",e)),t||(r=r.is("archived_at",null));let{data:n,error:a}=await r;if(a){if(o(a,"projects"))return[];throw a}return(n||[]).map(e=>({...e,repos:e.project_repos??[]}))}async function E(e,t){let r=i().from("projects").select("*").eq("slug",e);t&&(r=r.eq("user_id",t));let{data:n,error:a}=await r.maybeSingle();if(a){if(o(a,"projects"))return null;throw a}return n||null}async function R(e){let t=i(),{data:r,error:n}=await t.from("project_repos").select("*").eq("project_id",e);if(n){if(o(n,"project_repos"))return[];throw n}return r||[]}async function $(e,t){let r=i(),n=I.test(e),a=r.from("projects").select("*");a=n?a.eq("id",e):a.eq("slug",e),t&&(a=a.eq("user_id",t));let s=await a.maybeSingle();if(s.error){if(o(s.error,"projects"))return null;throw s.error}let d=s.data;if(!d)return null;let l=await R(d.id);return{...d,repos:l}}async function T(e,t,i){if(!t.name?.trim())throw Error("Project name is required");let o=l(i),n=t.name.trim()||"project",a=await d(n,e,o),s=r(t.identifier_prefix),c={user_id:e,name:t.name.trim(),slug:a,description:t.description??null,workflow_id:t.workflow_id??null};null!==s&&(c.identifier_prefix=s);let{data:u,error:p}=await o.from("projects").insert(c).select("*").single();if(p&&"42703"===p.code){let{identifier_prefix:e,...t}=c;({data:u,error:p}=await o.from("projects").insert(t).select("*").single())}if(p)throw p;let f=await A(u.id,t.repos??[],o);return{...u,repos:f}}async function x(e,t,i,n){let a=l(n),s=I.test(e),d=e;if(!s){let r=await E(e,t);if(!r)return null;d=r.id}let c={};if(void 0!==i.name){let e=i.name?.trim();if(!e)throw Error("Project name cannot be empty");c.name=e}if(void 0!==i.slug){let e=i.slug?.trim();e&&(c.slug=e)}if(void 0!==i.description&&(c.description=i.description),void 0!==i.metadata&&(c.metadata=i.metadata),void 0!==i.ci_cd_info&&(c.ci_cd_info=i.ci_cd_info),void 0!==i.workflow_id&&(c.workflow_id=i.workflow_id),void 0!==i.identifier_prefix&&(c.identifier_prefix=r(i.identifier_prefix)),Object.keys(c).length){let{error:e}=await a.from("projects").update(c).eq("id",d).eq("user_id",t);if(e)throw e}if(i.repos){let{data:e,error:t}=await a.from("project_repos").select("*").eq("project_id",d);if(t&&!o(t,"project_repos"))throw t;let r=e||[],n=new Set(r.map(e=>e.id)),s=new Set(i.repos.map(e=>e.id).filter(e=>!!e));for(let e of r){if(s.has(e.id))continue;let{error:t}=await a.from("project_repos").delete().eq("id",e.id).eq("project_id",d);if(t&&!o(t,"project_repos"))throw t}for(let e of i.repos){let t={name:e.name,path:e.path??null,git_url:e.git_url??null,notes:e.notes??null,project_id:d};if(e.id&&n.has(e.id)){let{error:r}=await a.from("project_repos").update(t).eq("id",e.id).eq("project_id",d);if(r&&!o(r,"project_repos"))throw r;continue}let{error:r}=await a.from("project_repos").insert({...e.id?{id:e.id}:{},...t});if(r&&!o(r,"project_repos"))throw r}}return $(d,t)}async function O(e,t,r){let i=l(r),{error:o}=await i.from("projects").update({archived_at:new Date().toISOString()}).eq("id",e).eq("user_id",t);if(o)throw o}async function N(e,t,r){let i=l(r),o=await $(e,t);if(!o)throw Error("Project not found");let{data:n,error:a}=await i.from("tasks").select("id, project").eq("user_id",t).is("project_id",null);if(a)throw a;let s=String(o.slug||"").trim().toLowerCase(),d=(n||[]).filter(e=>{let t=String(e.project||"").trim().toLowerCase();return!t||"none"===t||t===s}).map(e=>e.id);if(!d.length)return{updatedCount:0,taskIds:[]};let{error:c}=await i.from("tasks").update({project:o.slug,project_id:o.id,updated_at:new Date().toISOString()}).eq("user_id",t).is("project_id",null).in("id",d);if(c)throw c;return{updatedCount:d.length,taskIds:d}}async function C(e){let t=i(),{data:r,error:n}=await t.from("project_agents").select("*").eq("project_id",e).order("routing_order",{ascending:!0});if(n){if(o(n,"project_agents"))return[];throw n}return r||[]}async function M(e,t,r){let o=i();if(void 0===r){let{data:t}=await o.from("project_agents").select("routing_order").eq("project_id",e).order("routing_order",{ascending:!1}).limit(1);r=(t?.[0]?.routing_order??-1)+1}let{data:n,error:a}=await o.from("project_agents").upsert({project_id:e,agent_id:t,routing_order:r}).select().single();if(a)throw a;return n}async function K(e,t){let r=i(),{error:o}=await r.from("project_agents").delete().eq("project_id",e).eq("agent_id",t);if(o)throw o}async function F(e,t){let r=i();for(let i=0;i<t.length;i++)await r.from("project_agents").update({routing_order:i}).eq("project_id",e).eq("agent_id",t[i]);return C(e)}async function L(e){let t=i(),{data:r,error:n}=await t.from("project_skills").select("*").eq("project_id",e).order("created_at",{ascending:!0});if(n){if(o(n,"project_skills"))return[];throw n}return r||[]}async function W(e,t,r){let o=i(),{data:n,error:a}=await o.from("project_skills").insert({project_id:e,file:t,condition:r??null}).select().single();if(a)throw a;return n}async function B(e){let t=i(),{error:r}=await t.from("project_skills").delete().eq("id",e);if(r)throw r}async function U(e){let t=i(),{data:r,error:n}=await t.from("project_variables").select("*").eq("project_id",e);if(n){if(o(n,"project_variables"))return[];throw n}return r||[]}async function G(e,t,r){let o=i(),{data:n,error:a}=await o.from("project_variables").upsert({project_id:e,key:t,value:r},{onConflict:"project_id,key"}).select().single();if(a)throw a;return n}async function V(e,t){let r=i(),{error:o}=await r.from("project_variables").delete().eq("project_id",e).eq("key",t);if(o)throw o}async function J(e,t){return D.vaultStore.getProjectMemory(e)}async function z(e,t,r,i="human"){return D.vaultStore.addProjectMemory(e,t,r,i)}async function X(e){D.vaultStore.deleteProjectMemory(e)}async function H(e){let t=i(),{data:r,error:n}=await t.from("project_threads").select("*").eq("project_id",e).order("created_at",{ascending:!0});if(n){if(o(n,"project_threads"))return[];throw n}return r||[]}async function Q(e,t){let r=i(),{error:o}=await r.from("project_threads").upsert({project_id:e,thread_id:t},{onConflict:"project_id,thread_id",ignoreDuplicates:!0});if(o)throw o;let{data:n,error:a}=await r.from("project_threads").select("*").eq("project_id",e).eq("thread_id",t).single();if(a)throw a;return n}async function Z(e,t){let r=i(),{error:o}=await r.from("project_threads").delete().eq("project_id",e).eq("thread_id",t);if(o)throw o}async function Y(e){let t=i(),{data:r,error:n}=await t.from("project_threads").select("project_id").eq("thread_id",e).maybeSingle();return n?(o(n,"project_threads"),null):r?.project_id??null}async function ee(e){let t=i(),{data:r,error:n}=await t.from("workspace_entries").select("*").eq("project_id",e).order("category",{ascending:!0}).order("sort_order",{ascending:!0}).order("name",{ascending:!0});if(n){if(o(n,"workspace_entries"))return{};throw n}return(r||[]).reduce((e,t)=>(e[t.category]||(e[t.category]=[]),e[t.category].push(t),e),{})}async function et(e,t){let r=i(),o=(0,h.randomUUID)(),n=new Date().toISOString(),{data:a,error:s}=await r.from("workspace_entries").insert({id:o,project_id:e,category:t.category,name:t.name,path:t.path||null,purpose:t.purpose||null,sort_order:0,created_at:n,updated_at:n}).select().single();if(s)throw s;return a}async function er(e,t,r){let o=i(),n={};void 0!==r.name&&(n.name=r.name),void 0!==r.path&&(n.path=r.path),void 0!==r.purpose&&(n.purpose=r.purpose),void 0!==r.sort_order&&(n.sort_order=r.sort_order);let{data:a,error:s}=await o.from("workspace_entries").update(n).eq("id",t).eq("project_id",e).select().single();if(s){if("PGRST116"===s.code)return null;throw s}return a}async function ei(e,t){let r=i(),{error:o}=await r.from("workspace_entries").delete().eq("id",t).eq("project_id",e);if(o)throw o}async function eo(e){let t=i(),{data:r,error:n}=await t.from("workspace_entries").select("category, name, path, purpose").eq("project_id",e).order("category",{ascending:!0}).order("sort_order",{ascending:!0}).order("name",{ascending:!0});if(n){if(o(n,"workspace_entries"))return[];throw n}return(r||[]).map(e=>({location:`${e.category}/${e.name}`,path:e.path||null,purpose:e.purpose||null}))}function en(e){return String(e||"").replace(/^#\s+.+(\r?\n|$)/,"").trim()}async function ea(e,t){var r;let o=Array.isArray(e.depends_on)?e.depends_on:[];if(!o.length)return;let n=i(),{data:a,error:s}=await n.from("tasks").select("id, title, slug, status, stage").in("id",o);if(s)return;let d=(Array.isArray(a)?a:[]).filter(e=>"completed"!==(e?.status||""));if(d.length){let r=function(e){if(!e||0===e.length)return"";let t=e.slice(0,3).map(e=>`${e.title?e.title:e.slug?e.slug:e.id?e.id:"(unknown)"}${(e.stage?.toLowerCase()==="intake"?" (awaiting approval)":e.status?` (${e.status})`:null)??""}`),r=`${y}: ${t.join(", ")}`;return e.length>3&&(r+=` +${e.length-3} more`),r}(d),i=n.from("tasks").update({status:"blocked",blocked_reason:r}).eq("id",e.id);t&&(i=i.eq("user_id",t));let{error:o}=await i;if(o&&"42703"!==o.code)throw o;return}if("blocked"===e.status&&"string"==typeof(r=e.blocked_reason)&&r.startsWith(y)){let r=n.from("tasks").update({status:"queued",blocked_reason:null}).eq("id",e.id);t&&(r=r.eq("user_id",t));let{error:i}=await r;if(i&&"42703"!==i.code)throw i}}async function es(e,t){let r=i().from("tasks").select("*").order("priority",{ascending:!0,nullsFirst:!1}).order("created_at",{ascending:!1});if(e&&(r=r.eq("user_id",e)),t?.project&&(r=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(t.project)?r.eq("project_id",t.project):r.eq("project",t.project)),t?.orphan&&(r=r.is("project_id",null)),t?.status&&(r=r.eq("status",t.status)),t?.search){let e=t.search;r=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)?r.or(`id.eq.${e},slug.ilike.%${e}%,title.ilike.%${e}%`):r.or(`id.ilike.%${e}%,slug.ilike.%${e}%,title.ilike.%${e}%`)}let{data:o,error:n}=await r;if(n)throw n;let a=o||[];return t?.orphan?a.filter(e=>{let t=String(e.project||"").trim().toLowerCase();return!t||"none"===t}):a}async function ed(e,t){let r=i().from("tasks").select("*").eq("id",e);t&&(r=r.eq("user_id",t));let{data:o,error:n}=await r.single();if(n){if("PGRST116"===n.code)return null;throw n}return o}async function el(e,t){let r=i().from("tasks").select("*").eq("slug",e);t&&(r=r.eq("user_id",t));let{data:o,error:n}=await r.single();if(n){if("PGRST116"===n.code)return null;throw n}return o}async function ec(e,t,r){let o=i(),{frontmatter:n,body:a}=p(e),d="boolean"==typeof n.swarm?n.swarm:void 0,l=r?.title||g(e),c=String(n.slug||l||"task"),m=await s(c,o),_=r?.projectId||("string"==typeof n.project_id?n.project_id:void 0),y="string"==typeof n.workflow_id?n.workflow_id:void 0,w="string"==typeof n.project?n.project:void 0;if(!w&&_){let e=await $(_);e?.slug&&(w=e.slug)}let j="string"==typeof n.provider?n.provider:null,k="string"==typeof n.model?n.model:null,v="string"==typeof n.engine?n.engine:null,b="ai"===n.created_by?"ai":"user",S=u(n.depends_on),D=u(r?.dependsOn),I=D.length>0?D:S,A=null;if(_)try{let{data:e}=await o.from("projects").select("identifier_prefix, next_identifier").eq("id",_).single();if(e&&"string"==typeof e.identifier_prefix&&e.identifier_prefix){let t="number"==typeof e.next_identifier?e.next_identifier:1;A=`${e.identifier_prefix}-${t}`,await o.from("projects").update({next_identifier:t+1}).eq("id",_)}}catch{A=null}let q={id:(0,h.randomUUID)(),content:e,description:en(a),title:l,slug:m,status:n.status||"queued",stage:n.stage||"intake",project:w||null,...void 0!==_?{project_id:_}:{},...void 0!==y?{workflow_id:y}:{},...null!==A?{identifier:A}:{},priority:n.priority,engine:v,provider:j,model:k,swarm:d,swarm_models:r?.swarmModels??null,depends_on:I.length?I:null,created_by:b,user_id:t,current_plan:r?.currentPlan||null,open_blockers:r?.openBlockers||[],next_action:r?.nextAction||null,version:1};await f(q.id,I,o);let{data:E,error:R}=await o.from("tasks").insert(q).select().single();if(R&&"42703"===R.code){let{swarm_models:e,swarm:t,workflow_id:r,current_plan:i,open_blockers:n,next_action:a,version:s,depends_on:d,identifier:l,...c}=q;({data:E,error:R}=await o.from("tasks").insert(c).select().single())}if(R)throw R;if(!E)throw Error("Failed to create task");await ea(E,t);let T=await ed(E.id,t)||E,x=t||T.user_id;if(x){let e=T.created_at||new Date().toISOString(),t={dependsOn:Array.isArray(T.depends_on)?T.depends_on:[],project:T.project||null,projectId:T.project_id||null,workflowId:T.workflow_id||null,createdBy:T.created_by||null};P({taskId:T.id,userId:x,eventType:"task.created",title:T.title||null,slug:T.slug||null,stage:T.stage||null,status:T.status||null,timestamp:e,details:t})}return T}async function eu(e,t,r,o){let n=i(),{frontmatter:a,body:s}=p(t),d="boolean"==typeof a.swarm?a.swarm:void 0,l=g(t),c="string"==typeof a.project_id?a.project_id:void 0,m=Object.prototype.hasOwnProperty.call(a,"provider"),_=Object.prototype.hasOwnProperty.call(a,"model"),h=Object.prototype.hasOwnProperty.call(a,"workflow_id"),y=Object.prototype.hasOwnProperty.call(a,"depends_on"),w=u(a.depends_on),j=u(o?.dependsOn),k=o?.dependsOn!==void 0||y,v=o?.dependsOn!==void 0?j:w,b={content:t,description:en(s),title:l,status:a.status,stage:a.stage,project:a.project,...void 0!==c?{project_id:c}:{},workflow_id:h?a.workflow_id:void 0,priority:a.priority,engine:a.engine,provider:m?a.provider:null,model:_?a.model:null,swarm:d,swarm_models:o?.swarmModels??void 0,...k?{depends_on:v.length?v:null}:{},updated_at:new Date().toISOString(),current_plan:o?.currentPlan??void 0,open_blockers:o?.openBlockers??void 0,next_action:o?.nextAction??void 0};Object.keys(b).forEach(e=>{void 0===b[e]&&delete b[e]}),k&&await f(e,v,n),o?.expectedVersion!==void 0&&o.expectedVersion;let{data:S,error:D}=await n.from("tasks").update({...b}).eq("id",e).select().maybeSingle();if(D&&console.error(`[db.updateTask] error updating task ${e}:`,D),S||D||console.warn(`[db.updateTask] UPDATE returned 0 rows for task ${e}, payload keys:`,Object.keys(b)),D&&"42703"===D.code){let{swarm_models:t,swarm:i,workflow_id:o,current_plan:a,open_blockers:s,next_action:d,version:l,depends_on:c,...u}=b,p=n.from("tasks").update(u).eq("id",e);r&&(p=p.eq("user_id",r)),{data:S,error:D}=await p.select().maybeSingle()}if(D)throw D;if(!S){let t=await ed(e,r);if(!t)throw Error(`Task ${e} not found`);return t}await ea(S,r);let I=await ed(S.id,r)||S,A=r||I.user_id;if(A){let e=I.created_at||new Date().toISOString(),t={dependsOn:Array.isArray(I.depends_on)?I.depends_on:[],project:I.project||null,projectId:I.project_id||null,workflowId:I.workflow_id||null,createdBy:I.created_by||null};P({taskId:I.id,userId:A,eventType:"task.created",title:I.title||null,slug:I.slug||null,stage:I.stage||null,status:I.status||null,timestamp:e,details:t})}return I}async function ep(e,t,r=25){let o=i(),{data:n,error:a}=await o.from("tasks").select("run_index").eq("id",e).single();if(a){if(a?.code==="42703")return;throw a}let s=[t,...Array.isArray(n.run_index)?n.run_index:[]].slice(0,r),{error:d}=await o.from("tasks").update({run_index:s}).eq("id",e);if(d){if(d?.code==="42703")return;throw d}}async function ef(e,t){let r=i().from("tasks").delete().eq("id",e);t&&(r=r.eq("user_id",t));let{error:o}=await r;if(o)throw o}async function eg(e){let t=i().from("tasks").select("*").eq("status","queued").order("priority",{ascending:!0,nullsFirst:!1}).order("created_at",{ascending:!0}).limit(1);e&&(t=t.eq("engine",e));let{data:r,error:o}=await t.single();if(o){if("PGRST116"===o.code)return null;throw o}return r}e.s(["addProjectAgent",()=>M,"addProjectMemory",()=>z,"addProjectSkill",()=>W,"addProjectThread",()=>Q,"assignOrphanTasksToProject",()=>N,"createProject",()=>T,"createWorkspaceEntry",()=>et,"deleteProject",()=>O,"deleteProjectMemory",()=>X,"deleteProjectVariable",()=>V,"deleteWorkspaceEntry",()=>ei,"getProjectAgents",()=>C,"getProjectBySlug",()=>E,"getProjectForThread",()=>Y,"getProjectMemory",()=>J,"getProjectRepos",()=>R,"getProjectSkills",()=>L,"getProjectThreads",()=>H,"getProjectVariables",()=>U,"getProjectWithRepos",()=>$,"getProjectWorkspace",()=>ee,"getProjects",()=>q,"getWorkspaceMapForContext",()=>eo,"removeProjectAgent",()=>K,"removeProjectSkill",()=>B,"removeProjectThread",()=>Z,"reorderProjectAgents",()=>F,"setProjectVariable",()=>G,"updateProject",()=>x,"updateWorkspaceEntry",()=>er],840427),e.s(["appendRunToIndex",()=>ep,"createTask",()=>ec,"deleteTask",()=>ef,"getNextQueuedTask",()=>eg,"getTask",()=>ed,"getTaskBySlug",()=>el,"getTasks",()=>es,"updateTask",()=>eu],262504);let em="00000000-0000-0000-0000-000000000001",e_=[{id:"00000000-0000-0000-0001-000000000001",name:"INTAKE",label:"Intake",prompt:"New task. Triage, scope, and prepare for work.",position:0,node_type:"step"},{id:"00000000-0000-0000-0001-000000000002",name:"PROGRESS",label:"Progress",prompt:"Task is actively being worked on.",position:1,node_type:"step"},{id:"00000000-0000-0000-0001-000000000003",name:"DONE",label:"Done",prompt:"Task completed.",position:2,node_type:"terminal"}],eh=new Map(e_.map(e=>[e.id,e]));async function ey(e){let t=i(),{error:r}=await t.from("workflows").upsert({id:em,user_id:e||"00000000-0000-0000-0000-000000000000",name:"Default Workflow",definition:{}},{onConflict:"id"});if(r)throw r;let{error:o}=await t.from("workflow_nodes").upsert(e_.map(e=>({...e,workflow_id:em,metadata:{}})),{onConflict:"id"});if(o)throw o;let{error:n}=await t.from("workflow_transitions").upsert([{workflow_id:em,from_node_id:"00000000-0000-0000-0001-000000000001",to_node_id:"00000000-0000-0000-0001-000000000002",condition:"done",priority:0,metadata:{}},{workflow_id:em,from_node_id:"00000000-0000-0000-0001-000000000002",to_node_id:"00000000-0000-0000-0001-000000000003",condition:"done",priority:0,metadata:{}}],{onConflict:"workflow_id,from_node_id,condition"});if(n)throw n}async function ew(e){let t=i(),{data:r,error:n}=await t.from("workflows").select("*").or(`user_id.eq.${e},user_id.eq.00000000-0000-0000-0000-000000000000`).order("created_at",{ascending:!1});if(n){if(o(n,"workflows"))return[];throw n}return r||[]}async function ej(e,t){let r=i().from("workflows").select("*").eq("id",e),{data:n,error:a}=await r.maybeSingle();if(a){if(o(a,"workflows"))return null;throw a}return n}async function ek(e,t,r){let o=i(),n={updated_at:new Date().toISOString()};void 0!==r.definition&&(n.definition=r.definition),void 0!==r.name&&(n.name=r.name),void 0!==r.description&&(n.description=r.description);let{data:a,error:s}=await o.from("workflows").update(n).eq("id",e).select().single();if(s)throw s;return a}async function ev(e){let t=i(),{data:r,error:n}=await t.from("workflow_nodes").select("*").eq("workflow_id",e).order("position",{ascending:!0});if(n){if(o(n,"workflow_nodes"))return[];throw n}return r||[]}async function eb(e,t,r){let o=i();if(e===em&&await ey(t),!await ej(e,t))throw Error("Workflow not found");if(e===em){let t=r.map(t=>{let r=eh.get(t.id);return r?{id:t.id,workflow_id:e,name:r.name,label:r.label,position:r.position,node_type:r.node_type,prompt:t.prompt??r.prompt,provider:t.provider??null,model:t.model??null,metadata:t.metadata??{}}:null}).filter(e=>!!e);if(t.length>0){let{error:e}=await o.from("workflow_nodes").upsert(t,{onConflict:"id"});if(e)throw e}return ev(e)}return await Promise.all(r.map(async t=>{let r={};if(void 0!==t.prompt&&(r.prompt=t.prompt),void 0!==t.provider&&(r.provider=t.provider),void 0!==t.model&&(r.model=t.model),void 0!==t.metadata&&(r.metadata=t.metadata),0===Object.keys(r).length)return;let{error:i}=await o.from("workflow_nodes").update(r).eq("workflow_id",e).eq("id",t.id);if(i)throw i})),ev(e)}async function eS(e,t){let r=i(),{data:n,error:a}=await r.from("workflow_nodes").select("*").eq("workflow_id",e).eq("name",t).maybeSingle();if(a){if(o(a,"workflow_nodes"))return null;throw a}return n}async function eP(e){let t=i(),{data:r,error:n}=await t.from("workflow_transitions").select("*").eq("workflow_id",e).order("priority",{ascending:!0});if(n){if(o(n,"workflow_transitions"))return[];throw n}return r||[]}async function eD(e,t){let r=i(),{data:n,error:a}=await r.from("workflow_transitions").select("*").eq("workflow_id",e).eq("from_node_id",t).order("priority",{ascending:!0});if(a){if(o(a,"workflow_transitions"))return[];throw a}return n||[]}async function eI(e,t){let r=await ej(e,t);if(!r)return null;let[i,o]=await Promise.all([ev(e),eP(e)]);return{...r,nodes:i,transitions:o}}function eA(){return em}async function eq(e,t){let r=i().from("stage_prompts").select("*").eq("workflow_id",t).order("stage",{ascending:!0});r=e?r.or(`user_id.eq.${e},is_default.eq.true`):r.eq("is_default",!0);let{data:o,error:n}=await r;if(n)throw n;return o||[]}async function eE(e,t,r){let o=i();if(t){let{data:i}=await o.from("stage_prompts").select("*").eq("workflow_id",r).eq("stage",e).eq("user_id",t).single();if(i)return i}let{data:n}=await o.from("stage_prompts").select("*").eq("workflow_id",r).eq("stage",e).eq("is_default",!0).single();return n||null}async function eR(e,t,r=[],o,n,a){let s=i(),d={stage:e,prompt:t,outputs:r,user_id:o,is_default:!o,workflow_id:a};n&&(void 0!==n.swarm&&(d.swarm=n.swarm),void 0!==n.provider&&(d.provider=n.provider),void 0!==n.model&&(d.model=n.model),void 0!==n.swarm_models&&(d.swarm_models=n.swarm_models));let{data:l,error:c}=await s.from("stage_prompts").upsert(d,{onConflict:o?"workflow_id,stage,user_id":"workflow_id,stage,is_default"}).select().single();if(c)throw c;return l}async function e$(e,t){let r=i().from("stage_prompts").delete().eq("id",e);t&&(r=r.eq("user_id",t));let{error:o}=await r;if(o)throw o}async function eT(e,t={}){let r=i(),o=Math.max(1,Math.min(2e3,Number(t.limit??t.tail??500))),n="string"==typeof t.after&&t.after.trim()?t.after.trim():null,a=n?null:void 0===t.tail?o:Number(t.tail),s=null!==a&&Number.isFinite(a)&&a>0,d=r.from("task_logs").select("*").eq("task_id",e);t.nodeId&&(d=d.eq("node_id",t.nodeId)),d=n?d.gt("created_at",n).order("created_at",{ascending:!0}).order("id",{ascending:!0}).limit(o):s?d.order("created_at",{ascending:!1}).order("id",{ascending:!1}).limit(o):d.order("created_at",{ascending:!0}).order("id",{ascending:!0}).limit(o);let{data:l,error:c}=await d;if(c)throw c;let u=l||[];return n?u:s?u.slice().reverse():u}async function ex(e,t,r,o){let n=i(),{data:a,error:s}=await n.from("task_logs").insert({task_id:e,content:t,log_type:r,...o?{node_id:o}:{}}).select().single();if(s)throw s;return a}function eO(e){let t=Number(e??0);return Number.isFinite(t)?Math.max(0,Math.round(t)):0}function eN(e){let t=Number(e??0);return Number.isFinite(t)?Math.max(0,t):0}async function eC(e){let t=i(),r={task_id:e.taskId,stage:e.stage,provider:e.provider??null,model:e.model??null,input_tokens:eO(e.inputTokens),output_tokens:eO(e.outputTokens),estimated_cost:eN(e.estimatedCost)},{data:o,error:n}=await t.from("task_costs").insert(r).select().single();if(n)throw n;return o}async function eM(e){let t=i(),{data:r,error:o}=await t.from("task_costs").select("*").eq("task_id",e).order("created_at",{ascending:!0});if(o)throw o;return r||[]}function eK(e){let t={},r=0,i=0,o=0;for(let n of e){let e=n.stage||"unknown",a=eO(n.input_tokens),s=eO(n.output_tokens),d=eN(n.estimated_cost??0);r+=a,i+=s,o+=d;let l=t[e]||{stage:e,input_tokens:0,output_tokens:0,estimated_cost:0,entries:0};l.input_tokens+=a,l.output_tokens+=s,l.estimated_cost+=d,l.entries+=1,t[e]=l}return{total_input_tokens:r,total_output_tokens:i,total_cost:o,per_stage:Object.values(t).sort((e,t)=>e.stage.localeCompare(t.stage))}}async function eF(e){return eK(await eM(e))}async function eL(e){let t=i(),{data:r,error:o}=await t.from("task_comments").select("*").eq("task_id",e).is("deleted_at",null).order("created_at",{ascending:!0}).order("id",{ascending:!0});if(o)throw o;return r||[]}async function eW(e,t,r,o){let n=i(),{data:a,error:s}=await n.from("task_comments").insert({task_id:e,content:t,author_type:r,author_id:o??null}).select().single();if(s)throw s;return a}async function eB(e,t){let r=i(),{data:o,error:n}=await r.from("task_comments").select("author_id, author_type").eq("id",e).single();if(n)throw n;if(!o)throw Error("Comment not found");if("user"!==o.author_type||o.author_id!==t)throw Error("Unauthorized");let{error:a}=await r.from("task_comments").update({deleted_at:new Date().toISOString()}).eq("id",e).is("deleted_at",null);if(a)throw a}async function eU(e,t,r){if("task"!==e)return D.vaultStore.getLearnings(e,t);let o=i().from("learnings").select("*").eq("scope",e).order("created_at",{ascending:!1});t&&(o=o.eq("scope_id",t)),r&&(o=o.eq("user_id",r));let{data:n,error:a}=await o;if(a)throw a;return n||[]}async function eG(e,t,r,o){if("task"!==e)return D.vaultStore.addLearning(e,t,r);let n=i(),{data:a,error:s}=await n.from("learnings").insert({scope:e,scope_id:r,content:t,user_id:o}).select().single();if(s)throw s;return a}async function eV(e,t){if("global-playbook"===e)return void D.vaultStore.deleteLearning(e,"global");let r=await $(e,t);if(r)return void D.vaultStore.deleteLearning(e,"project",r.id);let o=i().from("learnings").delete().eq("id",e);t&&(o=o.eq("user_id",t));let{error:n}=await o;if(n)throw n}async function eJ(e){let t=i(),{data:r,error:n}=await t.from("agents").select("*").eq("user_id",e).order("created_at",{ascending:!1});if(n){if(o(n,"agents"))return[];throw n}return r||[]}async function ez(e,t){let r=i(),{data:n,error:a}=await r.from("agents").select("*").eq("id",e).eq("user_id",t).maybeSingle();if(a){if("PGRST116"===a.code||o(a,"agents"))return null;throw a}return n}async function eX(e){let t=i(),{data:r,error:n}=await t.from("agent_skills").select("*").eq("agent_id",e).order("created_at",{ascending:!0});if(n){if(o(n,"agent_skills"))return[];throw n}return r||[]}async function eH(e,t){let r=i(),n=new Map;for(let r of t){let t=r.file.trim();t&&n.set(t,{agent_id:e,file:t,condition:r.condition?.trim()||null})}let a=await eX(e);for(let t of a)if(!n.has(t.file)){let{error:i}=await r.from("agent_skills").delete().eq("agent_id",e).eq("file",t.file);if(i&&!o(i,"agent_skills"))throw i}for(let t of n.values()){let i=a.find(e=>e.file===t.file);if(!i){let{error:e}=await r.from("agent_skills").insert(t);if(e&&!o(e,"agent_skills"))throw e;continue}if((i.condition??null)!==t.condition){let{error:i}=await r.from("agent_skills").update({condition:t.condition}).eq("agent_id",e).eq("file",t.file);if(i&&!o(i,"agent_skills"))throw i}}return eX(e)}async function eQ(e,t){let r=i(),n={user_id:e,name:t.name,style:t.style,description:t.description??null};void 0!==t.id&&(n.id=t.id),void 0!==t.role&&(n.role=t.role),void 0!==t.voice&&(n.voice=t.voice),void 0!==t.seed&&(n.seed=t.seed),void 0!==t.model&&(n.model=t.model),void 0!==t.provider&&(n.provider=t.provider),void 0!==t.color&&(n.color=t.color);let{data:a,error:s}=await r.from("agents").insert(n).select().single();if(s){if(o(s,"agents"))throw Error("Agents table does not exist");throw s}return a}async function eZ(e,t,r){let n=i(),a={updated_at:new Date().toISOString()};if(void 0!==r.name&&(a.name=r.name),void 0!==r.role&&(a.role=r.role),void 0!==r.style&&(a.style=r.style),void 0!==r.description&&(a.description=r.description),void 0!==r.voice&&(a.voice=r.voice),void 0!==r.seed&&(a.seed=r.seed),void 0!==r.model&&(a.model=r.model),void 0!==r.provider&&(a.provider=r.provider),void 0!==r.color&&(a.color=r.color),1===Object.keys(a).length)return ez(e,t);let{data:s,error:d}=await n.from("agents").update(a).eq("id",e).eq("user_id",t).select().single();if(d){if("PGRST116"===d.code||o(d,"agents"))return null;throw d}return s}async function eY(e,t){let r=i(),{error:n}=await r.from("agents").delete().eq("id",e).eq("user_id",t);if(n&&!o(n,"agents"))throw n}async function e0(e){let t=i(),{data:r,error:n}=await t.from("teams").select("*").eq("project_id",e).order("created_at",{ascending:!0});if(n){if(o(n,"teams"))return[];throw n}return(r||[]).map(e=>({...e,metadata:"string"==typeof e.metadata?JSON.parse(e.metadata):e.metadata||{}}))}async function e1(e){let t=i(),{data:r,error:n}=await t.from("teams").select("*").eq("id",e).limit(1).single();if(n){if("PGRST116"===n.code||o(n,"teams"))return null;throw n}return r?{...r,metadata:"string"==typeof r.metadata?JSON.parse(r.metadata):r.metadata||{}}:null}async function e2(e,t,r,o){let n=i(),a=(0,h.randomUUID)(),s=new Date().toISOString(),{data:d,error:l}=await n.from("teams").insert({id:a,project_id:e,name:t,template_id:r||null,metadata:JSON.stringify(o||{}),created_at:s,updated_at:s}).select().single();if(l)throw l;return{...d,metadata:"string"==typeof d.metadata?JSON.parse(d.metadata):d.metadata||{}}}async function e3(e,t){let r=i(),o={};void 0!==t.name&&(o.name=t.name),void 0!==t.metadata&&(o.metadata=JSON.stringify(t.metadata));let{data:n,error:a}=await r.from("teams").update(o).eq("id",e).select().single();if(a){if("PGRST116"===a.code)return null;throw a}return{...n,metadata:"string"==typeof n.metadata?JSON.parse(n.metadata):n.metadata||{}}}async function e4(e){let t=i(),{error:r}=await t.from("teams").delete().eq("id",e);if(r)throw r}async function e8(e){let t=i(),{data:r,error:n}=await t.from("team_agents").select("*").eq("team_id",e).order("routing_order",{ascending:!0});if(n){if(o(n,"team_agents"))return[];throw n}return r||[]}async function e6(e,t,r,o){let n=i();if(void 0===o){let{data:t}=await n.from("team_agents").select("routing_order").eq("team_id",e).order("routing_order",{ascending:!1}).limit(1);o=(t?.[0]?.routing_order??-1)+1}let{data:a,error:s}=await n.from("team_agents").upsert({team_id:e,agent_id:t,role_key:r,routing_order:o}).select().single();if(s)throw s;return a}async function e9(e,t){let r=i(),{error:o}=await r.from("team_agents").delete().eq("team_id",e).eq("agent_id",t);if(o)throw o}function e7(e,t){let r=[],i=new Set;for(let t of e){let e=t.file.split("/").pop()||t.file;i.add(e),r.push({file:t.file,condition:t.condition,source:"agent"})}for(let e of t){let t=e.file.split("/").pop()||e.file;i.has(t)||r.push({file:e.file,condition:e.condition??void 0,source:"project"})}return r}function e5(e,t){let r=[];for(let e of t)r.push({content:e.content,source:"project",id:e.id});for(let t of e)r.push({content:t.content,source:"agent",id:t.id});return r}async function te(e){return(await U(e)).map(e=>({key:e.key,value:e.value,source:"project"}))}async function tt(e,t,r,i){let o=await L(t),n=await J(t),a=await te(t);return{skills:e7(r,o),memory:e5(i,n),variables:a}}e.s(["DEFAULT_WORKFLOW_ID",0,"00000000-0000-0000-0000-000000000001","defaultStagePrompts",0,{INTAKE:{prompt:"New task. Triage, scope, and prepare for work.",outputs:[],swarm:!1},PROGRESS:{prompt:"Task is actively being worked on.",outputs:[],swarm:!1},DONE:{prompt:"Task completed.",outputs:[],swarm:!1}},"deleteStagePrompt",()=>e$,"getDefaultWorkflowId",()=>eA,"getStagePrompt",()=>eE,"getStagePrompts",()=>eq,"getWorkflow",()=>ej,"getWorkflowNodeByName",()=>eS,"getWorkflowNodes",()=>ev,"getWorkflowTransitions",()=>eP,"getWorkflowTransitionsFromNode",()=>eD,"getWorkflowWithGraph",()=>eI,"getWorkflows",()=>ew,"updateWorkflow",()=>ek,"updateWorkflowNodes",()=>eb,"upsertStagePrompt",()=>eR],749010),e.s(["addTaskLog",()=>ex,"getTaskLogs",()=>eT],484167),e.s(["addTaskCostEntry",()=>eC,"getTaskCostEntries",()=>eM,"getTaskCostSummary",()=>eF,"summarizeTaskCosts",()=>eK],103292),e.s(["addTaskComment",()=>eW,"deleteTaskComment",()=>eB,"getTaskComments",()=>eL],735066),e.s(["addLearning",()=>eG,"deleteLearning",()=>eV,"getLearnings",()=>eU],480223),e.s(["createAgent",()=>eQ,"deleteAgent",()=>eY,"getAgent",()=>ez,"getAgentSkills",()=>eX,"getAgents",()=>eJ,"setAgentSkills",()=>eH,"updateAgent",()=>eZ],890838),e.s(["addTeamAgent",()=>e6,"createTeam",()=>e2,"deleteTeam",()=>e4,"getTeam",()=>e1,"getTeamAgents",()=>e8,"getTeams",()=>e0,"removeTeamAgent",()=>e9,"updateTeam",()=>e3],981261),e.s(["buildExecutionProvenance",()=>tt,"resolveMemory",()=>e5,"resolveSkills",()=>e7,"resolveVariables",()=>te],32868),e.s([],133),e.s([],237718)}];
32
+ ${r.trim()}`),i.join("\n\n")}synthesizeProjectNote(e,t,r){return Array.from(new Set([...t.filter(t=>t.project_id===e&&"system"===t.producer).map(e=>e.content.trim()),...r.filter(t=>"project"===t.scope&&t.subject_id===e).map(e=>e.body.trim())].filter(Boolean))).map(e=>`- ${e.replace(/^\-\s*/,"")}`).join("\n")}synthesizeRepoNote(e,t,r){return Array.from(new Set([...t.filter(t=>t.repo_id===e&&"system"===t.producer).map(e=>e.content.trim()),...r.filter(t=>"repo"===t.scope&&t.subject_id===e).map(e=>e.body.trim())].filter(Boolean))).map(e=>`- ${e.replace(/^\-\s*/,"")}`).join("\n")}synthesizeAgentNote(e,t,r){return Array.from(new Set([...t.filter(t=>t.agent_id===e).map(e=>e.content.trim()),...r.filter(t=>"agent"===t.scope&&t.subject_id===e).map(e=>e.body.trim())].filter(Boolean))).map(e=>`- ${e.replace(/^\-\s*/,"")}`).join("\n")}};e.s(["vaultStore",0,P])},237718,842851,209120,393018,167361,930430,840427,262504,749010,484167,103292,735066,480223,890838,981261,32868,133,e=>{"use strict";let t=/^[A-Z]{2,10}$/;function r(e){if(null==e||""===e)return null;if("string"!=typeof e)throw Error("identifier_prefix must be a string");let r=e.trim().toUpperCase();if(!t.test(r))throw Error("identifier_prefix must be 2-10 uppercase ASCII letters (e.g. 'TSK', 'AGX')");return r}function i(){let{createAdminDbClientSQLite:t}=e.r(633211);return t()}function o(e,t){if(!e)return!1;let r="string"==typeof e.message?e.message:"";return"42P01"===e.code||"PGRST205"===e.code||r.includes(`relation "${t}" does not exist`)||r.includes(`Could not find the table 'agx.${t}'`)||r.includes(`Could not find the table 'public.${t}'`)}function n(t,r,i){let o=e=>"string"!=typeof e?null:e.trim()||null,n=null;try{let t=e.r(522734),r=e.r(814747).join(process.env.HOME||"",".agx","config.json"),i=JSON.parse(t.readFileSync(r,"utf-8"));n=o(i?.defaultProvider)||null}catch{}let a=o(i?.default_provider)||n||"claude",s=o(t.provider)||o(r?.provider)||a,d=o(i?.models?.[s])||null,l=o(t.model)||o(r?.model)||d||null;return{provider:s,model:l,swarm:t.swarm??r?.swarm??!1,swarm_models:t.swarm_models?.length?t.swarm_models:r?.swarm_models||[]}}function a(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,40)||"task"}async function s(e,t){let r=a(e);for(let i=0;i<5;i++){let{data:i,error:o}=await t.from("tasks").select("id").eq("slug",r).limit(1);if(o)throw o;if(!i||0===i.length)return r;let n=Math.random().toString(36).slice(2,6);r=`${a(e)}-${n}`.slice(0,48)}return`${a(e)}-${Date.now().toString(36).slice(-4)}`.slice(0,48)}async function d(e,t,r,i){let o=a(e);for(let n=0;n<5;n++){let n=r.from("projects").select("id").eq("slug",o).eq("user_id",t);i&&(n=n.neq("id",i));let{data:s,error:d}=await n.limit(1);if(d)throw d;if(!s||0===s.length)return o;let l=Math.random().toString(36).slice(2,6);o=`${a(e)}-${l}`.slice(0,48)}return`${a(e)}-${Date.now().toString(36).slice(-4)}`.slice(0,48)}function l(e){return e??i()}function c(e){let t=e.trim();if(!t)return[];try{let e=JSON.parse(t);if(Array.isArray(e))return e.map(e=>String(e||"").trim()).filter(Boolean)}catch{}return t.split(",").map(e=>e.trim()).filter(Boolean)}function u(e){let t;if(!e)return[];if(Array.isArray(e))t=e.map(e=>"string"==typeof e?e:null==e?"":String(e)).filter(Boolean);else{if("string"!=typeof e)return[];t=c(e)}return Array.from(new Set(t.map(e=>e.trim()).filter(Boolean)))}function p(e){let t=e.match(/^---\n([\s\S]*?)\n---\n([\s\S]*)$/);if(!t)return{frontmatter:{},body:e};let r={};for(let e of t[1].split("\n")){let t=e.indexOf(":");if(t>0){let i=e.slice(0,t).trim(),o=e.slice(t+1).trim();if("depends_on"===i){r[i]=c(o);continue}"true"===o?r[i]=!0:"false"===o?r[i]=!1:/^\d+$/.test(o)?r[i]=parseInt(o,10):r[i]=o}}return{frontmatter:r,body:t[2]}}async function f(e,t,r){if(!e||!t?.length)return;let i=l(r),o=new Set,n=[...t];for(;n.length;){let t=n.pop();if(!t)continue;if(t===e)throw Error("Circular dependency detected");if(o.has(t))continue;o.add(t);let{data:r,error:a}=await i.from("tasks").select("depends_on").eq("id",t).maybeSingle();if(a){if("PGRST116"===a.code||"42703"===a.code)continue;throw a}if(r)for(let e of Array.isArray(r.depends_on)?r.depends_on:[])e&&!o.has(e)&&n.push(e)}}function g(e){let{body:t}=p(e),r=t.match(/^#\s+(.+)$/m);return r?r[1]:void 0}async function m(e){let t=i(),{data:r,error:n}=await t.from("user_settings").select("*").eq("user_id",e).maybeSingle();if(n){if(o(n,"user_settings"))return null;throw n}return r||null}async function _(e,t,r){let o=r?.onlyIfNewer!==!1,n=function(e){if("string"==typeof e){let t=Date.parse(e);if(Number.isFinite(t))return new Date(t).toISOString()}return new Date().toISOString()}(t.changed_at),a=await m(e);if(o&&a?.changed_at){let e=Date.parse(a.changed_at),t=Date.parse(n);if(Number.isFinite(e)&&Number.isFinite(t)&&t<=e)return{settings:a,updated:!1}}let s={user_id:e,default_provider:t.default_provider??a?.default_provider??null,models:t.models??a?.models??{},provenance:t.provenance,changed_at:n},d=i(),{error:l}=await d.from("user_settings").upsert(s,{onConflict:"user_id"});if(l)throw l;let c=await m(e);if(!c)throw Error("Failed to load user_settings after upsert");return{settings:c,updated:!0}}e.s(["IDENTIFIER_PREFIX_REGEX",0,t,"validateIdentifierPrefix",()=>r],842851),e.i(864075),e.s(["createAdminDbClient",()=>i],209120),e.s(["ensureNoCircularDependency",()=>f,"extractTitle",()=>g,"generateUniqueProjectSlug",()=>d,"generateUniqueSlug",()=>s,"getDbClient",()=>l,"isMissingRelationError",()=>o,"normalizeDependsOnInput",()=>u,"parseDependsOnValue",()=>c,"parseFrontmatter",()=>p,"resolveTaskConfig",()=>n,"slugify",()=>a],393018),e.s(["getUserSettings",()=>m,"upsertUserSettings",()=>_],167361);var h=e.i(254799);let y="Waiting on dependencies";e.i(870611);var w=e.i(938281);let j=[{value:"task.created",label:"Task created",description:"Fires immediately when a new task is added to the queue."},{value:"task.stage_complete",label:"Stage completed",description:"Emitted whenever a stage finishes and the task advances."},{value:"task.completed",label:"Task completed",description:"When the task reaches a completed status (done)."},{value:"task.failed",label:"Task failed",description:"When the task may have errored, including cancellations."},{value:"task.blocked",label:"Task blocked",description:"When the agent raises the task as blocked awaiting manual input."}].map(e=>e.value);class k extends Error{}function v(e){let t=Array.isArray(e.events)?e.events.filter(e=>"string"==typeof e).map(e=>e.trim()).filter(e=>j.includes(e)):[];return{id:String(e.id),user_id:String(e.user_id),url:String(e.url),name:null!=e.name?String(e.name):null,events:t,enabled:!1!==e.enabled,created_at:String(e.created_at),updated_at:String(e.updated_at)}}async function b(e,t){if(function(e,t){if(!e||"object"!=typeof e)return!1;let r=e.code,i="string"==typeof e.message?e.message:"";return"42P01"===r||"PGRST205"===r||i.includes(`relation "${t}" does not exist`)||i.includes(`Could not find the table 'agx.${t}'`)||i.includes(`Could not find the table 'public.${t}'`)}(t,e))throw new k(`Missing relation: ${e}`);throw t}async function S(e){let t=i(),{data:r,error:o}=await t.from("notification_webhooks").select("*").eq("user_id",e).order("created_at",{ascending:!1});return(o&&await b("notification_webhooks",o),r)?(Array.isArray(r)?r:[r]).map(v):[]}async function P(e){if(!e.userId)return;let t=[];try{t=await S(e.userId)}catch(e){if(e instanceof k)return void console.debug("[notifications] notification_webhooks schema not ready, skipping");w.logger.error("[notifications] failed to load webhooks",w.logger.formatError(e));return}let r=t.filter(t=>t.enabled&&t.events.includes(e.eventType));if(!r.length)return;let i=e.timestamp||new Date().toISOString(),o={eventType:e.eventType,taskId:e.taskId,userId:e.userId,title:e.title||null,slug:e.slug||null,stage:e.stage||null,previousStage:e.previousStage||null,nextStage:e.nextStage||null,status:e.status||null,error:e.error||null,timestamp:i,details:e.details||{}};await Promise.all(r.map(async e=>{let t=new AbortController,r=setTimeout(()=>t.abort(),1e4);try{let r=await fetch(e.url,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o),signal:t.signal});r.ok||w.logger.error(`[notifications] webhook ${e.url} responded with ${r.status}`)}catch(t){w.logger.error(`[notifications] failed to send to ${e.url}`,w.logger.formatError(t))}finally{clearTimeout(r)}}))}e.s(["notifyTaskEvent",()=>P],930430);var D=e.i(341902);let I=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;async function A(e,t,r){if(!t.length)return[];let i=t.map(t=>({...t.id?{id:t.id}:{},project_id:e,name:t.name,path:t.path??null,git_url:t.git_url??null,notes:t.notes??null})),{data:n,error:a}=await r.from("project_repos").insert(i).select("*");if(a){if(o(a,"project_repos"))return[];throw a}return n||[]}async function q(e,t=!1){let r=i().from("projects").select("*, project_repos(*)");e&&(r=r.eq("user_id",e)),t||(r=r.is("archived_at",null));let{data:n,error:a}=await r;if(a){if(o(a,"projects"))return[];throw a}return(n||[]).map(e=>({...e,repos:e.project_repos??[]}))}async function E(e,t){let r=i().from("projects").select("*").eq("slug",e);t&&(r=r.eq("user_id",t));let{data:n,error:a}=await r.maybeSingle();if(a){if(o(a,"projects"))return null;throw a}return n||null}async function R(e){let t=i(),{data:r,error:n}=await t.from("project_repos").select("*").eq("project_id",e);if(n){if(o(n,"project_repos"))return[];throw n}return r||[]}async function $(e,t){let r=i(),n=I.test(e),a=r.from("projects").select("*");a=n?a.eq("id",e):a.eq("slug",e),t&&(a=a.eq("user_id",t));let s=await a.maybeSingle();if(s.error){if(o(s.error,"projects"))return null;throw s.error}let d=s.data;if(!d)return null;let l=await R(d.id);return{...d,repos:l}}async function T(e,t,i){if(!t.name?.trim())throw Error("Project name is required");let o=l(i),n=t.name.trim()||"project",a=await d(n,e,o),s=r(t.identifier_prefix),c={user_id:e,name:t.name.trim(),slug:a,description:t.description??null,workflow_id:t.workflow_id??null};null!==s&&(c.identifier_prefix=s);let{data:u,error:p}=await o.from("projects").insert(c).select("*").single();if(p&&"42703"===p.code){let{identifier_prefix:e,...t}=c;({data:u,error:p}=await o.from("projects").insert(t).select("*").single())}if(p)throw p;let f=await A(u.id,t.repos??[],o);return{...u,repos:f}}async function x(e,t,i,n){let a=l(n),s=I.test(e),d=e;if(!s){let r=await E(e,t);if(!r)return null;d=r.id}let c={};if(void 0!==i.name){let e=i.name?.trim();if(!e)throw Error("Project name cannot be empty");c.name=e}if(void 0!==i.slug){let e=i.slug?.trim();e&&(c.slug=e)}if(void 0!==i.description&&(c.description=i.description),void 0!==i.metadata&&(c.metadata=i.metadata),void 0!==i.ci_cd_info&&(c.ci_cd_info=i.ci_cd_info),void 0!==i.workflow_id&&(c.workflow_id=i.workflow_id),void 0!==i.identifier_prefix&&(c.identifier_prefix=r(i.identifier_prefix)),Object.keys(c).length){let{error:e}=await a.from("projects").update(c).eq("id",d).eq("user_id",t);if(e)throw e}if(i.repos){let{data:e,error:t}=await a.from("project_repos").select("*").eq("project_id",d);if(t&&!o(t,"project_repos"))throw t;let r=e||[],n=new Set(r.map(e=>e.id)),s=new Set(i.repos.map(e=>e.id).filter(e=>!!e));for(let e of r){if(s.has(e.id))continue;let{error:t}=await a.from("project_repos").delete().eq("id",e.id).eq("project_id",d);if(t&&!o(t,"project_repos"))throw t}for(let e of i.repos){let t={name:e.name,path:e.path??null,git_url:e.git_url??null,notes:e.notes??null,project_id:d};if(e.id&&n.has(e.id)){let{error:r}=await a.from("project_repos").update(t).eq("id",e.id).eq("project_id",d);if(r&&!o(r,"project_repos"))throw r;continue}let{error:r}=await a.from("project_repos").insert({...e.id?{id:e.id}:{},...t});if(r&&!o(r,"project_repos"))throw r}}return $(d,t)}async function O(e,t,r){let i=l(r),{error:o}=await i.from("projects").update({archived_at:new Date().toISOString()}).eq("id",e).eq("user_id",t);if(o)throw o}async function N(e,t,r){let i=l(r),o=await $(e,t);if(!o)throw Error("Project not found");let{data:n,error:a}=await i.from("tasks").select("id, project").eq("user_id",t).is("project_id",null);if(a)throw a;let s=String(o.slug||"").trim().toLowerCase(),d=(n||[]).filter(e=>{let t=String(e.project||"").trim().toLowerCase();return!t||"none"===t||t===s}).map(e=>e.id);if(!d.length)return{updatedCount:0,taskIds:[]};let{error:c}=await i.from("tasks").update({project:o.slug,project_id:o.id,updated_at:new Date().toISOString()}).eq("user_id",t).is("project_id",null).in("id",d);if(c)throw c;return{updatedCount:d.length,taskIds:d}}async function C(e){let t=i(),{data:r,error:n}=await t.from("project_agents").select("*").eq("project_id",e).order("routing_order",{ascending:!0});if(n){if(o(n,"project_agents"))return[];throw n}return r||[]}async function M(e,t,r){let o=i();if(void 0===r){let{data:t}=await o.from("project_agents").select("routing_order").eq("project_id",e).order("routing_order",{ascending:!1}).limit(1);r=(t?.[0]?.routing_order??-1)+1}let{data:n,error:a}=await o.from("project_agents").upsert({project_id:e,agent_id:t,routing_order:r}).select().single();if(a)throw a;return n}async function K(e,t){let r=i(),{error:o}=await r.from("project_agents").delete().eq("project_id",e).eq("agent_id",t);if(o)throw o}async function F(e,t){let r=i();for(let i=0;i<t.length;i++)await r.from("project_agents").update({routing_order:i}).eq("project_id",e).eq("agent_id",t[i]);return C(e)}async function W(e){let t=i(),{data:r,error:n}=await t.from("project_skills").select("*").eq("project_id",e).order("created_at",{ascending:!0});if(n){if(o(n,"project_skills"))return[];throw n}return r||[]}async function L(e,t,r){let o=i(),{data:n,error:a}=await o.from("project_skills").insert({project_id:e,file:t,condition:r??null}).select().single();if(a)throw a;return n}async function B(e){let t=i(),{error:r}=await t.from("project_skills").delete().eq("id",e);if(r)throw r}async function U(e){let t=i(),{data:r,error:n}=await t.from("project_variables").select("*").eq("project_id",e);if(n){if(o(n,"project_variables"))return[];throw n}return r||[]}async function G(e,t,r){let o=i(),{data:n,error:a}=await o.from("project_variables").upsert({project_id:e,key:t,value:r},{onConflict:"project_id,key"}).select().single();if(a)throw a;return n}async function V(e,t){let r=i(),{error:o}=await r.from("project_variables").delete().eq("project_id",e).eq("key",t);if(o)throw o}async function J(e,t){return D.vaultStore.getProjectMemory(e)}async function z(e,t,r,i="human"){return D.vaultStore.addProjectMemory(e,t,r,i)}async function X(e){D.vaultStore.deleteProjectMemory(e)}async function H(e){let t=i(),{data:r,error:n}=await t.from("project_threads").select("*").eq("project_id",e).order("created_at",{ascending:!0});if(n){if(o(n,"project_threads"))return[];throw n}return r||[]}async function Q(e,t){let r=i(),{error:o}=await r.from("project_threads").upsert({project_id:e,thread_id:t},{onConflict:"project_id,thread_id",ignoreDuplicates:!0});if(o)throw o;let{data:n,error:a}=await r.from("project_threads").select("*").eq("project_id",e).eq("thread_id",t).single();if(a)throw a;return n}async function Z(e,t){let r=i(),{error:o}=await r.from("project_threads").delete().eq("project_id",e).eq("thread_id",t);if(o)throw o}async function Y(e){let t=i(),{data:r,error:n}=await t.from("project_threads").select("project_id").eq("thread_id",e).maybeSingle();return n?(o(n,"project_threads"),null):r?.project_id??null}async function ee(e){return(await et(e)).reduce((e,t)=>(e[t.category]||(e[t.category]=[]),e[t.category].push(t),e),{})}async function et(e){let t=i(),{data:r,error:n}=await t.from("workspace_entries").select("*").eq("project_id",e).order("category",{ascending:!0}).order("sort_order",{ascending:!0}).order("name",{ascending:!0});if(n){if(o(n,"workspace_entries"))return[];throw n}return r||[]}async function er(e,t){let r=i(),o=(0,h.randomUUID)(),n=new Date().toISOString(),{data:a,error:s}=await r.from("workspace_entries").insert({id:o,project_id:e,category:t.category,name:t.name,path:t.path||null,purpose:t.purpose||null,sort_order:t.sort_order??0,created_at:n,updated_at:n}).select().single();if(s)throw s;return a}async function ei(e,t,r){let o=i(),n={};void 0!==r.name&&(n.name=r.name),void 0!==r.path&&(n.path=r.path),void 0!==r.purpose&&(n.purpose=r.purpose),void 0!==r.sort_order&&(n.sort_order=r.sort_order),n.updated_at=new Date().toISOString();let{data:a,error:s}=await o.from("workspace_entries").update(n).eq("id",t).eq("project_id",e).select().single();if(s){if("PGRST116"===s.code)return null;throw s}return a}async function eo(e,t){let r=i(),{error:o}=await r.from("workspace_entries").delete().eq("id",t).eq("project_id",e);if(o)throw o}async function en(e){let t=i(),{data:r,error:n}=await t.from("workspace_entries").select("category, name, path, purpose").eq("project_id",e).order("category",{ascending:!0}).order("sort_order",{ascending:!0}).order("name",{ascending:!0});if(n){if(o(n,"workspace_entries"))return[];throw n}return(r||[]).map(e=>({location:`${e.category}/${e.name}`,path:e.path||null,purpose:e.purpose||null}))}function ea(e){return String(e||"").replace(/^#\s+.+(\r?\n|$)/,"").trim()}async function es(e,t){var r;let o=Array.isArray(e.depends_on)?e.depends_on:[];if(!o.length)return;let n=i(),{data:a,error:s}=await n.from("tasks").select("id, title, slug, status, stage").in("id",o);if(s)return;let d=(Array.isArray(a)?a:[]).filter(e=>"completed"!==(e?.status||""));if(d.length){let r=function(e){if(!e||0===e.length)return"";let t=e.slice(0,3).map(e=>`${e.title?e.title:e.slug?e.slug:e.id?e.id:"(unknown)"}${(e.stage?.toLowerCase()==="intake"?" (awaiting approval)":e.status?` (${e.status})`:null)??""}`),r=`${y}: ${t.join(", ")}`;return e.length>3&&(r+=` +${e.length-3} more`),r}(d),i=n.from("tasks").update({status:"blocked",blocked_reason:r}).eq("id",e.id);t&&(i=i.eq("user_id",t));let{error:o}=await i;if(o&&"42703"!==o.code)throw o;return}if("blocked"===e.status&&"string"==typeof(r=e.blocked_reason)&&r.startsWith(y)){let r=n.from("tasks").update({status:"queued",blocked_reason:null}).eq("id",e.id);t&&(r=r.eq("user_id",t));let{error:i}=await r;if(i&&"42703"!==i.code)throw i}}async function ed(e,t){let r=i().from("tasks").select("*").order("priority",{ascending:!0,nullsFirst:!1}).order("created_at",{ascending:!1});if(e&&(r=r.eq("user_id",e)),t?.project&&(r=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(t.project)?r.eq("project_id",t.project):r.eq("project",t.project)),t?.orphan&&(r=r.is("project_id",null)),t?.status&&(r=r.eq("status",t.status)),t?.search){let e=t.search;r=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)?r.or(`id.eq.${e},slug.ilike.%${e}%,title.ilike.%${e}%`):r.or(`id.ilike.%${e}%,slug.ilike.%${e}%,title.ilike.%${e}%`)}let{data:o,error:n}=await r;if(n)throw n;let a=o||[];return t?.orphan?a.filter(e=>{let t=String(e.project||"").trim().toLowerCase();return!t||"none"===t}):a}async function el(e,t){let r=i().from("tasks").select("*").eq("id",e);t&&(r=r.eq("user_id",t));let{data:o,error:n}=await r.single();if(n){if("PGRST116"===n.code)return null;throw n}return o}async function ec(e,t){let r=i().from("tasks").select("*").eq("slug",e);t&&(r=r.eq("user_id",t));let{data:o,error:n}=await r.single();if(n){if("PGRST116"===n.code)return null;throw n}return o}async function eu(e,t,r){let o=i(),{frontmatter:n,body:a}=p(e),d="boolean"==typeof n.swarm?n.swarm:void 0,l=r?.title||g(e),c=String(n.slug||l||"task"),m=await s(c,o),_=r?.projectId||("string"==typeof n.project_id?n.project_id:void 0),y="string"==typeof n.workflow_id?n.workflow_id:void 0,w="string"==typeof n.project?n.project:void 0;if(!w&&_){let e=await $(_);e?.slug&&(w=e.slug)}let j="string"==typeof n.provider?n.provider:null,k="string"==typeof n.model?n.model:null,v="string"==typeof n.engine?n.engine:null,b="ai"===n.created_by?"ai":"user",S=u(n.depends_on),D=u(r?.dependsOn),I=D.length>0?D:S,A=null;if(_)try{let{data:e}=await o.from("projects").select("identifier_prefix, next_identifier").eq("id",_).single();if(e&&"string"==typeof e.identifier_prefix&&e.identifier_prefix){let t="number"==typeof e.next_identifier?e.next_identifier:1;A=`${e.identifier_prefix}-${t}`,await o.from("projects").update({next_identifier:t+1}).eq("id",_)}}catch{A=null}let q={id:(0,h.randomUUID)(),content:e,description:ea(a),title:l,slug:m,status:n.status||"queued",stage:n.stage||"intake",project:w||null,...void 0!==_?{project_id:_}:{},...void 0!==y?{workflow_id:y}:{},...null!==A?{identifier:A}:{},priority:n.priority,engine:v,provider:j,model:k,swarm:d,swarm_models:r?.swarmModels??null,depends_on:I.length?I:null,created_by:b,user_id:t,current_plan:r?.currentPlan||null,open_blockers:r?.openBlockers||[],next_action:r?.nextAction||null,version:1};await f(q.id,I,o);let{data:E,error:R}=await o.from("tasks").insert(q).select().single();if(R&&"42703"===R.code){let{swarm_models:e,swarm:t,workflow_id:r,current_plan:i,open_blockers:n,next_action:a,version:s,depends_on:d,identifier:l,...c}=q;({data:E,error:R}=await o.from("tasks").insert(c).select().single())}if(R)throw R;if(!E)throw Error("Failed to create task");await es(E,t);let T=await el(E.id,t)||E,x=t||T.user_id;if(x){let e=T.created_at||new Date().toISOString(),t={dependsOn:Array.isArray(T.depends_on)?T.depends_on:[],project:T.project||null,projectId:T.project_id||null,workflowId:T.workflow_id||null,createdBy:T.created_by||null};P({taskId:T.id,userId:x,eventType:"task.created",title:T.title||null,slug:T.slug||null,stage:T.stage||null,status:T.status||null,timestamp:e,details:t})}return T}async function ep(e,t,r,o){let n=i(),{frontmatter:a,body:s}=p(t),d="boolean"==typeof a.swarm?a.swarm:void 0,l=g(t),c="string"==typeof a.project_id?a.project_id:void 0,m=Object.prototype.hasOwnProperty.call(a,"provider"),_=Object.prototype.hasOwnProperty.call(a,"model"),h=Object.prototype.hasOwnProperty.call(a,"workflow_id"),y=Object.prototype.hasOwnProperty.call(a,"depends_on"),w=u(a.depends_on),j=u(o?.dependsOn),k=o?.dependsOn!==void 0||y,v=o?.dependsOn!==void 0?j:w,b={content:t,description:ea(s),title:l,status:a.status,stage:a.stage,project:a.project,...void 0!==c?{project_id:c}:{},workflow_id:h?a.workflow_id:void 0,priority:a.priority,engine:a.engine,provider:m?a.provider:null,model:_?a.model:null,swarm:d,swarm_models:o?.swarmModels??void 0,...k?{depends_on:v.length?v:null}:{},updated_at:new Date().toISOString(),current_plan:o?.currentPlan??void 0,open_blockers:o?.openBlockers??void 0,next_action:o?.nextAction??void 0};Object.keys(b).forEach(e=>{void 0===b[e]&&delete b[e]}),k&&await f(e,v,n),o?.expectedVersion!==void 0&&o.expectedVersion;let{data:S,error:D}=await n.from("tasks").update({...b}).eq("id",e).select().maybeSingle();if(D&&console.error(`[db.updateTask] error updating task ${e}:`,D),S||D||console.warn(`[db.updateTask] UPDATE returned 0 rows for task ${e}, payload keys:`,Object.keys(b)),D&&"42703"===D.code){let{swarm_models:t,swarm:i,workflow_id:o,current_plan:a,open_blockers:s,next_action:d,version:l,depends_on:c,...u}=b,p=n.from("tasks").update(u).eq("id",e);r&&(p=p.eq("user_id",r)),{data:S,error:D}=await p.select().maybeSingle()}if(D)throw D;if(!S){let t=await el(e,r);if(!t)throw Error(`Task ${e} not found`);return t}await es(S,r);let I=await el(S.id,r)||S,A=r||I.user_id;if(A){let e=I.created_at||new Date().toISOString(),t={dependsOn:Array.isArray(I.depends_on)?I.depends_on:[],project:I.project||null,projectId:I.project_id||null,workflowId:I.workflow_id||null,createdBy:I.created_by||null};P({taskId:I.id,userId:A,eventType:"task.created",title:I.title||null,slug:I.slug||null,stage:I.stage||null,status:I.status||null,timestamp:e,details:t})}return I}async function ef(e,t,r=25){let o=i(),{data:n,error:a}=await o.from("tasks").select("run_index").eq("id",e).single();if(a){if(a?.code==="42703")return;throw a}let s=[t,...Array.isArray(n.run_index)?n.run_index:[]].slice(0,r),{error:d}=await o.from("tasks").update({run_index:s}).eq("id",e);if(d){if(d?.code==="42703")return;throw d}}async function eg(e,t){let r=i().from("tasks").delete().eq("id",e);t&&(r=r.eq("user_id",t));let{error:o}=await r;if(o)throw o}async function em(e){let t=i().from("tasks").select("*").eq("status","queued").order("priority",{ascending:!0,nullsFirst:!1}).order("created_at",{ascending:!0}).limit(1);e&&(t=t.eq("engine",e));let{data:r,error:o}=await t.single();if(o){if("PGRST116"===o.code)return null;throw o}return r}e.s(["addProjectAgent",()=>M,"addProjectMemory",()=>z,"addProjectSkill",()=>L,"addProjectThread",()=>Q,"assignOrphanTasksToProject",()=>N,"createProject",()=>T,"createWorkspaceEntry",()=>er,"deleteProject",()=>O,"deleteProjectMemory",()=>X,"deleteProjectVariable",()=>V,"deleteWorkspaceEntry",()=>eo,"getProjectAgents",()=>C,"getProjectBySlug",()=>E,"getProjectForThread",()=>Y,"getProjectMemory",()=>J,"getProjectRepos",()=>R,"getProjectSkills",()=>W,"getProjectThreads",()=>H,"getProjectVariables",()=>U,"getProjectWithRepos",()=>$,"getProjectWorkspace",()=>ee,"getProjectWorkspaceEntries",()=>et,"getProjects",()=>q,"getWorkspaceMapForContext",()=>en,"removeProjectAgent",()=>K,"removeProjectSkill",()=>B,"removeProjectThread",()=>Z,"reorderProjectAgents",()=>F,"setProjectVariable",()=>G,"updateProject",()=>x,"updateWorkspaceEntry",()=>ei],840427),e.s(["appendRunToIndex",()=>ef,"createTask",()=>eu,"deleteTask",()=>eg,"getNextQueuedTask",()=>em,"getTask",()=>el,"getTaskBySlug",()=>ec,"getTasks",()=>ed,"updateTask",()=>ep],262504);let e_="00000000-0000-0000-0000-000000000001",eh=[{id:"00000000-0000-0000-0001-000000000001",name:"INTAKE",label:"Intake",prompt:"New task. Triage, scope, and prepare for work.",position:0,node_type:"step"},{id:"00000000-0000-0000-0001-000000000002",name:"PROGRESS",label:"Progress",prompt:"Task is actively being worked on.",position:1,node_type:"step"},{id:"00000000-0000-0000-0001-000000000003",name:"DONE",label:"Done",prompt:"Task completed.",position:2,node_type:"terminal"}],ey=new Map(eh.map(e=>[e.id,e]));async function ew(e){let t=i(),{error:r}=await t.from("workflows").upsert({id:e_,user_id:e||"00000000-0000-0000-0000-000000000000",name:"Default Workflow",definition:{}},{onConflict:"id"});if(r)throw r;let{error:o}=await t.from("workflow_nodes").upsert(eh.map(e=>({...e,workflow_id:e_,metadata:{}})),{onConflict:"id"});if(o)throw o;let{error:n}=await t.from("workflow_transitions").upsert([{workflow_id:e_,from_node_id:"00000000-0000-0000-0001-000000000001",to_node_id:"00000000-0000-0000-0001-000000000002",condition:"done",priority:0,metadata:{}},{workflow_id:e_,from_node_id:"00000000-0000-0000-0001-000000000002",to_node_id:"00000000-0000-0000-0001-000000000003",condition:"done",priority:0,metadata:{}}],{onConflict:"workflow_id,from_node_id,condition"});if(n)throw n}async function ej(e){let t=i(),{data:r,error:n}=await t.from("workflows").select("*").or(`user_id.eq.${e},user_id.eq.00000000-0000-0000-0000-000000000000`).order("created_at",{ascending:!1});if(n){if(o(n,"workflows"))return[];throw n}return r||[]}async function ek(e,t){let r=i().from("workflows").select("*").eq("id",e),{data:n,error:a}=await r.maybeSingle();if(a){if(o(a,"workflows"))return null;throw a}return n}async function ev(e,t,r){let o=i(),n={updated_at:new Date().toISOString()};void 0!==r.definition&&(n.definition=r.definition),void 0!==r.name&&(n.name=r.name),void 0!==r.description&&(n.description=r.description);let{data:a,error:s}=await o.from("workflows").update(n).eq("id",e).select().single();if(s)throw s;return a}async function eb(e){let t=i(),{data:r,error:n}=await t.from("workflow_nodes").select("*").eq("workflow_id",e).order("position",{ascending:!0});if(n){if(o(n,"workflow_nodes"))return[];throw n}return r||[]}async function eS(e,t,r){let o=i();if(e===e_&&await ew(t),!await ek(e,t))throw Error("Workflow not found");if(e===e_){let t=r.map(t=>{let r=ey.get(t.id);return r?{id:t.id,workflow_id:e,name:r.name,label:r.label,position:r.position,node_type:r.node_type,prompt:t.prompt??r.prompt,provider:t.provider??null,model:t.model??null,metadata:t.metadata??{}}:null}).filter(e=>!!e);if(t.length>0){let{error:e}=await o.from("workflow_nodes").upsert(t,{onConflict:"id"});if(e)throw e}return eb(e)}return await Promise.all(r.map(async t=>{let r={};if(void 0!==t.prompt&&(r.prompt=t.prompt),void 0!==t.provider&&(r.provider=t.provider),void 0!==t.model&&(r.model=t.model),void 0!==t.metadata&&(r.metadata=t.metadata),0===Object.keys(r).length)return;let{error:i}=await o.from("workflow_nodes").update(r).eq("workflow_id",e).eq("id",t.id);if(i)throw i})),eb(e)}async function eP(e,t){let r=i(),{data:n,error:a}=await r.from("workflow_nodes").select("*").eq("workflow_id",e).eq("name",t).maybeSingle();if(a){if(o(a,"workflow_nodes"))return null;throw a}return n}async function eD(e){let t=i(),{data:r,error:n}=await t.from("workflow_transitions").select("*").eq("workflow_id",e).order("priority",{ascending:!0});if(n){if(o(n,"workflow_transitions"))return[];throw n}return r||[]}async function eI(e,t){let r=i(),{data:n,error:a}=await r.from("workflow_transitions").select("*").eq("workflow_id",e).eq("from_node_id",t).order("priority",{ascending:!0});if(a){if(o(a,"workflow_transitions"))return[];throw a}return n||[]}async function eA(e,t){let r=await ek(e,t);if(!r)return null;let[i,o]=await Promise.all([eb(e),eD(e)]);return{...r,nodes:i,transitions:o}}function eq(){return e_}async function eE(e,t){let r=i().from("stage_prompts").select("*").eq("workflow_id",t).order("stage",{ascending:!0});r=e?r.or(`user_id.eq.${e},is_default.eq.true`):r.eq("is_default",!0);let{data:o,error:n}=await r;if(n)throw n;return o||[]}async function eR(e,t,r){let o=i();if(t){let{data:i}=await o.from("stage_prompts").select("*").eq("workflow_id",r).eq("stage",e).eq("user_id",t).single();if(i)return i}let{data:n}=await o.from("stage_prompts").select("*").eq("workflow_id",r).eq("stage",e).eq("is_default",!0).single();return n||null}async function e$(e,t,r=[],o,n,a){let s=i(),d={stage:e,prompt:t,outputs:r,user_id:o,is_default:!o,workflow_id:a};n&&(void 0!==n.swarm&&(d.swarm=n.swarm),void 0!==n.provider&&(d.provider=n.provider),void 0!==n.model&&(d.model=n.model),void 0!==n.swarm_models&&(d.swarm_models=n.swarm_models));let{data:l,error:c}=await s.from("stage_prompts").upsert(d,{onConflict:o?"workflow_id,stage,user_id":"workflow_id,stage,is_default"}).select().single();if(c)throw c;return l}async function eT(e,t){let r=i().from("stage_prompts").delete().eq("id",e);t&&(r=r.eq("user_id",t));let{error:o}=await r;if(o)throw o}async function ex(e,t={}){let r=i(),o=Math.max(1,Math.min(2e3,Number(t.limit??t.tail??500))),n="string"==typeof t.after&&t.after.trim()?t.after.trim():null,a=n?null:void 0===t.tail?o:Number(t.tail),s=null!==a&&Number.isFinite(a)&&a>0,d=r.from("task_logs").select("*").eq("task_id",e);t.nodeId&&(d=d.eq("node_id",t.nodeId)),d=n?d.gt("created_at",n).order("created_at",{ascending:!0}).order("id",{ascending:!0}).limit(o):s?d.order("created_at",{ascending:!1}).order("id",{ascending:!1}).limit(o):d.order("created_at",{ascending:!0}).order("id",{ascending:!0}).limit(o);let{data:l,error:c}=await d;if(c)throw c;let u=l||[];return n?u:s?u.slice().reverse():u}async function eO(e,t,r,o){let n=i(),{data:a,error:s}=await n.from("task_logs").insert({task_id:e,content:t,log_type:r,...o?{node_id:o}:{}}).select().single();if(s)throw s;return a}function eN(e){let t=Number(e??0);return Number.isFinite(t)?Math.max(0,Math.round(t)):0}function eC(e){let t=Number(e??0);return Number.isFinite(t)?Math.max(0,t):0}async function eM(e){let t=i(),r={task_id:e.taskId,stage:e.stage,provider:e.provider??null,model:e.model??null,input_tokens:eN(e.inputTokens),output_tokens:eN(e.outputTokens),estimated_cost:eC(e.estimatedCost)},{data:o,error:n}=await t.from("task_costs").insert(r).select().single();if(n)throw n;return o}async function eK(e){let t=i(),{data:r,error:o}=await t.from("task_costs").select("*").eq("task_id",e).order("created_at",{ascending:!0});if(o)throw o;return r||[]}function eF(e){let t={},r=0,i=0,o=0;for(let n of e){let e=n.stage||"unknown",a=eN(n.input_tokens),s=eN(n.output_tokens),d=eC(n.estimated_cost??0);r+=a,i+=s,o+=d;let l=t[e]||{stage:e,input_tokens:0,output_tokens:0,estimated_cost:0,entries:0};l.input_tokens+=a,l.output_tokens+=s,l.estimated_cost+=d,l.entries+=1,t[e]=l}return{total_input_tokens:r,total_output_tokens:i,total_cost:o,per_stage:Object.values(t).sort((e,t)=>e.stage.localeCompare(t.stage))}}async function eW(e){return eF(await eK(e))}async function eL(e){let t=i(),{data:r,error:o}=await t.from("task_comments").select("*").eq("task_id",e).is("deleted_at",null).order("created_at",{ascending:!0}).order("id",{ascending:!0});if(o)throw o;return r||[]}async function eB(e,t,r,o){let n=i(),{data:a,error:s}=await n.from("task_comments").insert({task_id:e,content:t,author_type:r,author_id:o??null}).select().single();if(s)throw s;return a}async function eU(e,t){let r=i(),{data:o,error:n}=await r.from("task_comments").select("author_id, author_type").eq("id",e).single();if(n)throw n;if(!o)throw Error("Comment not found");if("user"!==o.author_type||o.author_id!==t)throw Error("Unauthorized");let{error:a}=await r.from("task_comments").update({deleted_at:new Date().toISOString()}).eq("id",e).is("deleted_at",null);if(a)throw a}async function eG(e,t,r){if("task"!==e)return D.vaultStore.getLearnings(e,t);let o=i().from("learnings").select("*").eq("scope",e).order("created_at",{ascending:!1});t&&(o=o.eq("scope_id",t)),r&&(o=o.eq("user_id",r));let{data:n,error:a}=await o;if(a)throw a;return n||[]}async function eV(e,t,r,o){if("task"!==e)return D.vaultStore.addLearning(e,t,r);let n=i(),{data:a,error:s}=await n.from("learnings").insert({scope:e,scope_id:r,content:t,user_id:o}).select().single();if(s)throw s;return a}async function eJ(e,t){if("global-playbook"===e)return void D.vaultStore.deleteLearning(e,"global");let r=await $(e,t);if(r)return void D.vaultStore.deleteLearning(e,"project",r.id);let o=i().from("learnings").delete().eq("id",e);t&&(o=o.eq("user_id",t));let{error:n}=await o;if(n)throw n}async function ez(e){let t=i(),{data:r,error:n}=await t.from("agents").select("*").eq("user_id",e).order("created_at",{ascending:!1});if(n){if(o(n,"agents"))return[];throw n}return r||[]}async function eX(e,t){let r=i(),{data:n,error:a}=await r.from("agents").select("*").eq("id",e).eq("user_id",t).maybeSingle();if(a){if("PGRST116"===a.code||o(a,"agents"))return null;throw a}return n}async function eH(e){let t=i(),{data:r,error:n}=await t.from("agent_skills").select("*").eq("agent_id",e).order("created_at",{ascending:!0});if(n){if(o(n,"agent_skills"))return[];throw n}return r||[]}async function eQ(e,t){let r=i(),n=new Map;for(let r of t){let t=r.file.trim();t&&n.set(t,{agent_id:e,file:t,condition:r.condition?.trim()||null})}let a=await eH(e);for(let t of a)if(!n.has(t.file)){let{error:i}=await r.from("agent_skills").delete().eq("agent_id",e).eq("file",t.file);if(i&&!o(i,"agent_skills"))throw i}for(let t of n.values()){let i=a.find(e=>e.file===t.file);if(!i){let{error:e}=await r.from("agent_skills").insert(t);if(e&&!o(e,"agent_skills"))throw e;continue}if((i.condition??null)!==t.condition){let{error:i}=await r.from("agent_skills").update({condition:t.condition}).eq("agent_id",e).eq("file",t.file);if(i&&!o(i,"agent_skills"))throw i}}return eH(e)}async function eZ(e,t){let r=i(),n={user_id:e,name:t.name,style:t.style,description:t.description??null};void 0!==t.id&&(n.id=t.id),void 0!==t.role&&(n.role=t.role),void 0!==t.voice&&(n.voice=t.voice),void 0!==t.seed&&(n.seed=t.seed),void 0!==t.model&&(n.model=t.model),void 0!==t.provider&&(n.provider=t.provider),void 0!==t.color&&(n.color=t.color);let{data:a,error:s}=await r.from("agents").insert(n).select().single();if(s){if(o(s,"agents"))throw Error("Agents table does not exist");throw s}return a}async function eY(e,t,r){let n=i(),a={updated_at:new Date().toISOString()};if(void 0!==r.name&&(a.name=r.name),void 0!==r.role&&(a.role=r.role),void 0!==r.style&&(a.style=r.style),void 0!==r.description&&(a.description=r.description),void 0!==r.voice&&(a.voice=r.voice),void 0!==r.seed&&(a.seed=r.seed),void 0!==r.model&&(a.model=r.model),void 0!==r.provider&&(a.provider=r.provider),void 0!==r.color&&(a.color=r.color),1===Object.keys(a).length)return eX(e,t);let{data:s,error:d}=await n.from("agents").update(a).eq("id",e).eq("user_id",t).select().single();if(d){if("PGRST116"===d.code||o(d,"agents"))return null;throw d}return s}async function e0(e,t){let r=i(),{error:n}=await r.from("agents").delete().eq("id",e).eq("user_id",t);if(n&&!o(n,"agents"))throw n}async function e1(e){let t=i(),{data:r,error:n}=await t.from("teams").select("*").eq("project_id",e).order("created_at",{ascending:!0});if(n){if(o(n,"teams"))return[];throw n}return(r||[]).map(e=>({...e,metadata:"string"==typeof e.metadata?JSON.parse(e.metadata):e.metadata||{}}))}async function e2(e){let t=i(),{data:r,error:n}=await t.from("teams").select("*").eq("id",e).limit(1).single();if(n){if("PGRST116"===n.code||o(n,"teams"))return null;throw n}return r?{...r,metadata:"string"==typeof r.metadata?JSON.parse(r.metadata):r.metadata||{}}:null}async function e3(e,t,r,o){let n=i(),a=(0,h.randomUUID)(),s=new Date().toISOString(),{data:d,error:l}=await n.from("teams").insert({id:a,project_id:e,name:t,template_id:r||null,metadata:JSON.stringify(o||{}),created_at:s,updated_at:s}).select().single();if(l)throw l;return{...d,metadata:"string"==typeof d.metadata?JSON.parse(d.metadata):d.metadata||{}}}async function e4(e,t){let r=i(),o={};void 0!==t.name&&(o.name=t.name),void 0!==t.metadata&&(o.metadata=JSON.stringify(t.metadata));let{data:n,error:a}=await r.from("teams").update(o).eq("id",e).select().single();if(a){if("PGRST116"===a.code)return null;throw a}return{...n,metadata:"string"==typeof n.metadata?JSON.parse(n.metadata):n.metadata||{}}}async function e8(e){let t=i(),{error:r}=await t.from("teams").delete().eq("id",e);if(r)throw r}async function e6(e){let t=i(),{data:r,error:n}=await t.from("team_agents").select("*").eq("team_id",e).order("routing_order",{ascending:!0});if(n){if(o(n,"team_agents"))return[];throw n}return r||[]}async function e9(e,t,r,o){let n=i();if(void 0===o){let{data:t}=await n.from("team_agents").select("routing_order").eq("team_id",e).order("routing_order",{ascending:!1}).limit(1);o=(t?.[0]?.routing_order??-1)+1}let{data:a,error:s}=await n.from("team_agents").upsert({team_id:e,agent_id:t,role_key:r,routing_order:o}).select().single();if(s)throw s;return a}async function e7(e,t){let r=i(),{error:o}=await r.from("team_agents").delete().eq("team_id",e).eq("agent_id",t);if(o)throw o}function e5(e,t){let r=[],i=new Set;for(let t of e){let e=t.file.split("/").pop()||t.file;i.add(e),r.push({file:t.file,condition:t.condition,source:"agent"})}for(let e of t){let t=e.file.split("/").pop()||e.file;i.has(t)||r.push({file:e.file,condition:e.condition??void 0,source:"project"})}return r}function te(e,t){let r=[];for(let e of t)r.push({content:e.content,source:"project",id:e.id});for(let t of e)r.push({content:t.content,source:"agent",id:t.id});return r}async function tt(e){return(await U(e)).map(e=>({key:e.key,value:e.value,source:"project"}))}async function tr(e,t,r,i){let o=await W(t),n=await J(t),a=await tt(t);return{skills:e5(r,o),memory:te(i,n),variables:a}}e.s(["DEFAULT_WORKFLOW_ID",0,"00000000-0000-0000-0000-000000000001","defaultStagePrompts",0,{INTAKE:{prompt:"New task. Triage, scope, and prepare for work.",outputs:[],swarm:!1},PROGRESS:{prompt:"Task is actively being worked on.",outputs:[],swarm:!1},DONE:{prompt:"Task completed.",outputs:[],swarm:!1}},"deleteStagePrompt",()=>eT,"getDefaultWorkflowId",()=>eq,"getStagePrompt",()=>eR,"getStagePrompts",()=>eE,"getWorkflow",()=>ek,"getWorkflowNodeByName",()=>eP,"getWorkflowNodes",()=>eb,"getWorkflowTransitions",()=>eD,"getWorkflowTransitionsFromNode",()=>eI,"getWorkflowWithGraph",()=>eA,"getWorkflows",()=>ej,"updateWorkflow",()=>ev,"updateWorkflowNodes",()=>eS,"upsertStagePrompt",()=>e$],749010),e.s(["addTaskLog",()=>eO,"getTaskLogs",()=>ex],484167),e.s(["addTaskCostEntry",()=>eM,"getTaskCostEntries",()=>eK,"getTaskCostSummary",()=>eW,"summarizeTaskCosts",()=>eF],103292),e.s(["addTaskComment",()=>eB,"deleteTaskComment",()=>eU,"getTaskComments",()=>eL],735066),e.s(["addLearning",()=>eV,"deleteLearning",()=>eJ,"getLearnings",()=>eG],480223),e.s(["createAgent",()=>eZ,"deleteAgent",()=>e0,"getAgent",()=>eX,"getAgentSkills",()=>eH,"getAgents",()=>ez,"setAgentSkills",()=>eQ,"updateAgent",()=>eY],890838),e.s(["addTeamAgent",()=>e9,"createTeam",()=>e3,"deleteTeam",()=>e8,"getTeam",()=>e2,"getTeamAgents",()=>e6,"getTeams",()=>e1,"removeTeamAgent",()=>e7,"updateTeam",()=>e4],981261),e.s(["buildExecutionProvenance",()=>tr,"resolveMemory",()=>te,"resolveSkills",()=>e5,"resolveVariables",()=>tt],32868),e.s([],133),e.s([],237718)}];
33
33
 
34
34
  //# sourceMappingURL=apps_local_lib_5ab8f104._.js.map