@mndrk/agx 2.0.56 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (600) 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 +2 -0
  3. package/cloud-runtime/standalone/apps/local/.next/build-manifest.json +3 -3
  4. package/cloud-runtime/standalone/apps/local/.next/prerender-manifest.json +3 -3
  5. package/cloud-runtime/standalone/apps/local/.next/routes-manifest.json +15 -0
  6. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error/page.js +1 -1
  7. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error/page.js.nft.json +1 -1
  8. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.html +1 -1
  9. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.rsc +1 -1
  10. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  11. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  12. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  13. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  14. package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  15. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found/page.js +1 -1
  16. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found/page.js.nft.json +1 -1
  17. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  18. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.html +2 -2
  19. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.rsc +2 -2
  20. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  21. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  22. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  23. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  24. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  25. package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  26. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/[id]/page.js +1 -1
  27. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/[id]/page.js.nft.json +1 -1
  28. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -1
  29. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page.js +1 -1
  30. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page.js.nft.json +1 -1
  31. package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page_client-reference-manifest.js +1 -1
  32. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.html +2 -2
  33. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.rsc +3 -3
  34. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_full.segment.rsc +3 -3
  35. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_head.segment.rsc +1 -1
  36. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_index.segment.rsc +2 -2
  37. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_tree.segment.rsc +2 -2
  38. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents/__PAGE__.segment.rsc +2 -2
  39. package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents.segment.rsc +1 -1
  40. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agent-specs/route.js +1 -1
  41. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agent-specs/route.js.nft.json +1 -1
  42. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/[id]/profile/route.js +4 -3
  43. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/[id]/profile/route.js.nft.json +1 -1
  44. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/export/route.js +1 -1
  45. package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/export/route.js.nft.json +1 -1
  46. package/cloud-runtime/standalone/apps/local/.next/server/app/api/automations/create/route.js +2 -2
  47. package/cloud-runtime/standalone/apps/local/.next/server/app/api/automations/create/route.js.nft.json +1 -1
  48. package/cloud-runtime/standalone/apps/local/.next/server/app/api/automations/route.js +1 -1
  49. package/cloud-runtime/standalone/apps/local/.next/server/app/api/automations/route.js.nft.json +1 -1
  50. package/cloud-runtime/standalone/apps/local/.next/server/app/api/chat/route.js +2 -2
  51. package/cloud-runtime/standalone/apps/local/.next/server/app/api/chat/route.js.nft.json +1 -1
  52. package/cloud-runtime/standalone/apps/local/.next/server/app/api/daemon/route.js +1 -1
  53. package/cloud-runtime/standalone/apps/local/.next/server/app/api/daemon/route.js.nft.json +1 -1
  54. package/cloud-runtime/standalone/apps/local/.next/server/app/api/file-search/route.js.nft.json +1 -1
  55. package/cloud-runtime/standalone/apps/local/.next/server/app/api/filesystem/analyze/route.js +1 -1
  56. package/cloud-runtime/standalone/apps/local/.next/server/app/api/filesystem/analyze/route.js.nft.json +1 -1
  57. package/cloud-runtime/standalone/apps/local/.next/server/app/api/graphs/[graphId]/nodes/[nodeId]/route.js +2 -3
  58. package/cloud-runtime/standalone/apps/local/.next/server/app/api/graphs/[graphId]/nodes/[nodeId]/route.js.nft.json +1 -1
  59. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/[id]/route.js.nft.json +1 -1
  60. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/context/route.js.nft.json +1 -1
  61. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/route.js.nft.json +1 -1
  62. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/options/route.js.nft.json +1 -1
  63. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/runs/scripted/route.js +5 -4
  64. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/runs/scripted/route.js.nft.json +1 -1
  65. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/status/route.js.nft.json +1 -1
  66. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/worker/route/app-paths-manifest.json +3 -0
  67. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/worker/route/build-manifest.json +9 -0
  68. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/worker/route/server-reference-manifest.json +4 -0
  69. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/worker/route.js +13 -0
  70. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/worker/route.js.map +5 -0
  71. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/worker/route.js.nft.json +1 -0
  72. package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/worker/route_client-reference-manifest.js +3 -0
  73. package/cloud-runtime/standalone/apps/local/.next/server/app/api/participants/route.js +1 -1
  74. package/cloud-runtime/standalone/apps/local/.next/server/app/api/participants/route.js.nft.json +1 -1
  75. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/activities/route.js +4 -4
  76. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/activities/route.js.nft.json +1 -1
  77. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/linear-issues/route.js +4 -4
  78. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/linear-issues/route.js.nft.json +1 -1
  79. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/notes/[noteId]/route.js +2 -2
  80. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/notes/[noteId]/route.js.nft.json +1 -1
  81. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/notes/route.js +2 -2
  82. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/notes/route.js.nft.json +1 -1
  83. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/route.js +3 -3
  84. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/route.js.nft.json +1 -1
  85. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/scheduled-tasks/route.js +14 -13
  86. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/scheduled-tasks/route.js.nft.json +1 -1
  87. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/validate/route.js +3 -3
  88. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/validate/route.js.nft.json +1 -1
  89. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/worker/route/app-paths-manifest.json +3 -0
  90. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/worker/route/build-manifest.json +9 -0
  91. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/worker/route/server-reference-manifest.json +4 -0
  92. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/worker/route.js +28 -0
  93. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/worker/route.js.map +5 -0
  94. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/worker/route.js.nft.json +1 -0
  95. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/worker/route_client-reference-manifest.js +3 -0
  96. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/route.js +9 -5
  97. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/route.js.nft.json +1 -1
  98. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/search/route.js +1 -1
  99. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/search/route.js.nft.json +1 -1
  100. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/teams/route.js.nft.json +1 -1
  101. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/route.js +4 -4
  102. package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/route.js.nft.json +1 -1
  103. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/[id]/cancel/route.js +1 -1
  104. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/[id]/cancel/route.js.nft.json +1 -1
  105. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/[id]/route.js +1 -1
  106. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/[id]/route.js.nft.json +1 -1
  107. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/[id]/runs/route.js +1 -1
  108. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/[id]/runs/route.js.nft.json +1 -1
  109. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/poll/route.js +16 -15
  110. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/poll/route.js.nft.json +1 -1
  111. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/route.js +5 -5
  112. package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/route.js.nft.json +1 -1
  113. package/cloud-runtime/standalone/apps/local/.next/server/app/api/providers/check/[id]/route.js.nft.json +1 -1
  114. package/cloud-runtime/standalone/apps/local/.next/server/app/api/providers/route.js.nft.json +1 -1
  115. package/cloud-runtime/standalone/apps/local/.next/server/app/api/queue/route.js +1 -1
  116. package/cloud-runtime/standalone/apps/local/.next/server/app/api/queue/route.js.nft.json +1 -1
  117. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/debug/route.js +1 -1
  118. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/debug/route.js.nft.json +1 -1
  119. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/poll/route.js +1 -1
  120. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/poll/route.js.nft.json +1 -1
  121. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/route.js +2 -2
  122. package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/route.js.nft.json +1 -1
  123. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/assign/route.js.nft.json +1 -1
  124. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/available/route.js.nft.json +1 -1
  125. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/detail/route.js.nft.json +1 -1
  126. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/history/route.js.nft.json +1 -1
  127. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/learn/route.js.nft.json +1 -1
  128. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/route.js.nft.json +1 -1
  129. package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/unlearn/route.js.nft.json +1 -1
  130. package/cloud-runtime/standalone/apps/local/.next/server/app/api/status/route.js.nft.json +1 -1
  131. package/cloud-runtime/standalone/apps/local/.next/server/app/api/summarize/route.js.nft.json +1 -1
  132. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/[commentId]/route.js.nft.json +1 -1
  133. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/route.js.nft.json +1 -1
  134. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/events/route.js.nft.json +1 -1
  135. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/history/route.js.nft.json +1 -1
  136. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/metrics/route.js.nft.json +1 -1
  137. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/pause/route.js.nft.json +1 -1
  138. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/replan/route.js.nft.json +1 -1
  139. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/restart/route.js.nft.json +1 -1
  140. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/resume/route.js.nft.json +1 -1
  141. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/rollback/route.js.nft.json +1 -1
  142. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/route.js.nft.json +1 -1
  143. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/schedule/route.js.nft.json +1 -1
  144. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/stop/route.js.nft.json +1 -1
  145. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/logs/route.js.nft.json +1 -1
  146. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/comments/route.js.nft.json +1 -1
  147. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/complete/route.js.nft.json +1 -1
  148. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/fail/route.js.nft.json +1 -1
  149. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/resume/route.js.nft.json +1 -1
  150. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/start/route.js.nft.json +1 -1
  151. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/stop/route.js.nft.json +1 -1
  152. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/verify/route.js.nft.json +1 -1
  153. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/route.js.nft.json +1 -1
  154. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/extract/route.js.nft.json +1 -1
  155. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/route.js +5 -4
  156. package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/route.js.nft.json +1 -1
  157. package/cloud-runtime/standalone/apps/local/.next/server/app/api/terminal/sessions/[id]/route.js +1 -1
  158. package/cloud-runtime/standalone/apps/local/.next/server/app/api/terminal/sessions/[id]/route.js.nft.json +1 -1
  159. package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/knowledge/route.js +1 -1
  160. package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/knowledge/route.js.nft.json +1 -1
  161. package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/route.js +1 -1
  162. package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/route.js.nft.json +1 -1
  163. package/cloud-runtime/standalone/apps/local/.next/server/app/automations/page.js +1 -1
  164. package/cloud-runtime/standalone/apps/local/.next/server/app/automations/page.js.nft.json +1 -1
  165. package/cloud-runtime/standalone/apps/local/.next/server/app/automations/page_client-reference-manifest.js +1 -1
  166. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.html +2 -2
  167. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.rsc +14 -14
  168. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_full.segment.rsc +14 -14
  169. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_head.segment.rsc +1 -1
  170. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_index.segment.rsc +2 -2
  171. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_tree.segment.rsc +2 -2
  172. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/automations/__PAGE__.segment.rsc +2 -2
  173. package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/automations.segment.rsc +1 -1
  174. package/cloud-runtime/standalone/apps/local/.next/server/app/board/page.js +1 -1
  175. package/cloud-runtime/standalone/apps/local/.next/server/app/board/page.js.nft.json +1 -1
  176. package/cloud-runtime/standalone/apps/local/.next/server/app/board/page_client-reference-manifest.js +1 -1
  177. package/cloud-runtime/standalone/apps/local/.next/server/app/board.html +2 -2
  178. package/cloud-runtime/standalone/apps/local/.next/server/app/board.rsc +2 -2
  179. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_full.segment.rsc +2 -2
  180. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_head.segment.rsc +1 -1
  181. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_index.segment.rsc +2 -2
  182. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_tree.segment.rsc +2 -2
  183. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/board/__PAGE__.segment.rsc +1 -1
  184. package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/board.segment.rsc +1 -1
  185. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph/page.js +1 -1
  186. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph/page.js.nft.json +1 -1
  187. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph/page_client-reference-manifest.js +1 -1
  188. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.html +2 -2
  189. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.rsc +3 -3
  190. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_full.segment.rsc +3 -3
  191. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_head.segment.rsc +1 -1
  192. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_index.segment.rsc +2 -2
  193. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_tree.segment.rsc +2 -2
  194. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/execution-graph/__PAGE__.segment.rsc +2 -2
  195. package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/execution-graph.segment.rsc +1 -1
  196. package/cloud-runtime/standalone/apps/local/.next/server/app/folders/page.js +1 -1
  197. package/cloud-runtime/standalone/apps/local/.next/server/app/folders/page.js.nft.json +1 -1
  198. package/cloud-runtime/standalone/apps/local/.next/server/app/folders/page_client-reference-manifest.js +1 -1
  199. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.html +2 -2
  200. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.rsc +2 -2
  201. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_full.segment.rsc +2 -2
  202. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_head.segment.rsc +1 -1
  203. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_index.segment.rsc +2 -2
  204. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_tree.segment.rsc +2 -2
  205. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/folders/__PAGE__.segment.rsc +1 -1
  206. package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/folders.segment.rsc +1 -1
  207. package/cloud-runtime/standalone/apps/local/.next/server/app/index.html +2 -2
  208. package/cloud-runtime/standalone/apps/local/.next/server/app/index.rsc +2 -2
  209. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  210. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_full.segment.rsc +2 -2
  211. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_head.segment.rsc +1 -1
  212. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_index.segment.rsc +2 -2
  213. package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  214. package/cloud-runtime/standalone/apps/local/.next/server/app/page.js +1 -1
  215. package/cloud-runtime/standalone/apps/local/.next/server/app/page.js.nft.json +1 -1
  216. package/cloud-runtime/standalone/apps/local/.next/server/app/page_client-reference-manifest.js +1 -1
  217. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page.js +1 -1
  218. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page.js.nft.json +1 -1
  219. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page_client-reference-manifest.js +1 -1
  220. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page.js +1 -1
  221. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page.js.nft.json +1 -1
  222. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page_client-reference-manifest.js +1 -1
  223. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page.js +1 -1
  224. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page.js.nft.json +1 -1
  225. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page_client-reference-manifest.js +1 -1
  226. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page.js +1 -1
  227. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page.js.nft.json +1 -1
  228. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page_client-reference-manifest.js +1 -1
  229. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/knowledge/page.js +1 -1
  230. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/knowledge/page.js.nft.json +1 -1
  231. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/knowledge/page_client-reference-manifest.js +1 -1
  232. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page/react-loadable-manifest.json +6 -0
  233. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page.js +1 -1
  234. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page.js.nft.json +1 -1
  235. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page_client-reference-manifest.js +1 -1
  236. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page.js +1 -1
  237. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page.js.nft.json +1 -1
  238. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page_client-reference-manifest.js +1 -1
  239. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page.js +1 -1
  240. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page.js.nft.json +1 -1
  241. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page_client-reference-manifest.js +1 -1
  242. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page.js +1 -1
  243. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page.js.nft.json +1 -1
  244. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
  245. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/settings/page.js +1 -1
  246. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/settings/page.js.nft.json +1 -1
  247. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/settings/page_client-reference-manifest.js +1 -1
  248. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page.js +1 -1
  249. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page.js.nft.json +1 -1
  250. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page_client-reference-manifest.js +1 -1
  251. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page.js +1 -1
  252. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page.js.nft.json +1 -1
  253. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page_client-reference-manifest.js +1 -1
  254. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page.js +1 -1
  255. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page.js.nft.json +1 -1
  256. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page_client-reference-manifest.js +1 -1
  257. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page.js +1 -1
  258. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page.js.nft.json +1 -1
  259. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page_client-reference-manifest.js +1 -1
  260. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page.js +1 -1
  261. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page.js.nft.json +1 -1
  262. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page_client-reference-manifest.js +1 -1
  263. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page.js +1 -1
  264. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page.js.nft.json +1 -1
  265. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page_client-reference-manifest.js +1 -1
  266. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page.js +1 -1
  267. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page.js.nft.json +1 -1
  268. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page_client-reference-manifest.js +1 -1
  269. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page.js +1 -1
  270. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page.js.nft.json +1 -1
  271. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page_client-reference-manifest.js +1 -1
  272. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans/page.js +1 -1
  273. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans/page.js.nft.json +1 -1
  274. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans/page_client-reference-manifest.js +1 -1
  275. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.html +2 -2
  276. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.rsc +3 -3
  277. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_full.segment.rsc +3 -3
  278. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_head.segment.rsc +1 -1
  279. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_index.segment.rsc +2 -2
  280. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_tree.segment.rsc +2 -2
  281. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/projects/orphans/__PAGE__.segment.rsc +2 -2
  282. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/projects/orphans.segment.rsc +1 -1
  283. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/projects.segment.rsc +1 -1
  284. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/page.js +1 -1
  285. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/page.js.nft.json +1 -1
  286. package/cloud-runtime/standalone/apps/local/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  287. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.html +2 -2
  288. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.rsc +2 -2
  289. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_full.segment.rsc +2 -2
  290. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_head.segment.rsc +1 -1
  291. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_index.segment.rsc +2 -2
  292. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_tree.segment.rsc +2 -2
  293. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +1 -1
  294. package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/projects.segment.rsc +1 -1
  295. package/cloud-runtime/standalone/apps/local/.next/server/app/settings/page.js +1 -1
  296. package/cloud-runtime/standalone/apps/local/.next/server/app/settings/page.js.nft.json +1 -1
  297. package/cloud-runtime/standalone/apps/local/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  298. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.html +2 -2
  299. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.rsc +2 -2
  300. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_full.segment.rsc +2 -2
  301. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  302. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_index.segment.rsc +2 -2
  303. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  304. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
  305. package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  306. package/cloud-runtime/standalone/apps/local/.next/server/app/setup/page.js +1 -1
  307. package/cloud-runtime/standalone/apps/local/.next/server/app/setup/page.js.nft.json +1 -1
  308. package/cloud-runtime/standalone/apps/local/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  309. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.html +2 -2
  310. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.rsc +3 -3
  311. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_full.segment.rsc +3 -3
  312. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_head.segment.rsc +1 -1
  313. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_index.segment.rsc +2 -2
  314. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
  315. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +2 -2
  316. package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup.segment.rsc +1 -1
  317. package/cloud-runtime/standalone/apps/local/.next/server/app/skills/page.js +1 -1
  318. package/cloud-runtime/standalone/apps/local/.next/server/app/skills/page.js.nft.json +1 -1
  319. package/cloud-runtime/standalone/apps/local/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  320. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.html +2 -2
  321. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.rsc +2 -2
  322. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_full.segment.rsc +2 -2
  323. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_head.segment.rsc +1 -1
  324. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_index.segment.rsc +2 -2
  325. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_tree.segment.rsc +2 -2
  326. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/skills/__PAGE__.segment.rsc +1 -1
  327. package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/skills.segment.rsc +1 -1
  328. package/cloud-runtime/standalone/apps/local/.next/server/app/status/page.js +1 -1
  329. package/cloud-runtime/standalone/apps/local/.next/server/app/status/page.js.nft.json +1 -1
  330. package/cloud-runtime/standalone/apps/local/.next/server/app/status/page_client-reference-manifest.js +1 -1
  331. package/cloud-runtime/standalone/apps/local/.next/server/app/status.html +2 -2
  332. package/cloud-runtime/standalone/apps/local/.next/server/app/status.rsc +2 -2
  333. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_full.segment.rsc +2 -2
  334. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_head.segment.rsc +1 -1
  335. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_index.segment.rsc +2 -2
  336. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_tree.segment.rsc +2 -2
  337. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status/__PAGE__.segment.rsc +1 -1
  338. package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status.segment.rsc +1 -1
  339. package/cloud-runtime/standalone/apps/local/.next/server/app/thread/[id]/page.js +1 -1
  340. package/cloud-runtime/standalone/apps/local/.next/server/app/thread/[id]/page.js.nft.json +1 -1
  341. package/cloud-runtime/standalone/apps/local/.next/server/app/thread/[id]/page_client-reference-manifest.js +1 -1
  342. package/cloud-runtime/standalone/apps/local/.next/server/app-paths-manifest.json +2 -0
  343. package/cloud-runtime/standalone/apps/local/.next/server/chunks/0jps_app_api_projects_[id]_objectives_[objectiveId]_worker_route_actions_0v8q3zz.js +3 -0
  344. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[externals]__0_au5u1._.js +3 -0
  345. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[externals]__13x93ar._.js +3 -0
  346. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__0_10qfd._.js → [root-of-the-server]__0.6yz1u._.js} +2 -2
  347. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__01lsgl~._.js +4 -0
  348. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__0205scg._.js → [root-of-the-server]__03.9arn._.js} +2 -2
  349. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__03h0gqp._.js +3 -0
  350. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__08jo91s._.js +9 -0
  351. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__0o315az._.js → [root-of-the-server]__09j9jpf._.js} +2 -2
  352. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__0-nye63._.js → [root-of-the-server]__09jghbu._.js} +2 -2
  353. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0_7hiof._.js +43 -0
  354. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__0.jam.l._.js → [root-of-the-server]__0a0cq38._.js} +2 -2
  355. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0asvfdo._.js +54 -0
  356. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0c86535._.js +3 -0
  357. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0cj1krd._.js +3 -0
  358. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__0aa-88e._.js → [root-of-the-server]__0dy3h2i._.js} +2 -2
  359. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__0touqng._.js → [root-of-the-server]__0e8-2k_._.js} +2 -2
  360. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0enhv5p._.js +3 -0
  361. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0f9byr.._.js +1 -1
  362. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__0t2jk2r._.js → [root-of-the-server]__0g7hc1-._.js} +2 -2
  363. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0g7p6pw._.js +55 -0
  364. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__019q25b._.js → [root-of-the-server]__0gj~dap._.js} +7 -7
  365. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__0e6cj2y._.js → [root-of-the-server]__0hc45jw._.js} +2 -2
  366. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0hkcw03._.js +49 -0
  367. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0hmw36u._.js +1 -1
  368. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0l53ok5._.js +54 -0
  369. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0n.momw._.js +8 -0
  370. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0tjo9we._.js +7 -0
  371. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__0-~t2br._.js → [root-of-the-server]__0v7jjvl._.js} +2 -2
  372. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0x6w64i._.js +3 -0
  373. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__11nke7t._.js → [root-of-the-server]__0y3qxv1._.js} +2 -2
  374. package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__10z8f9h._.js → [root-of-the-server]__0ygidxe._.js} +2 -2
  375. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0z82z0-._.js +49 -0
  376. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0zsv-tb._.js +8 -0
  377. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0~nnfjr._.js +3 -0
  378. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0~x4jbk._.js +3 -0
  379. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__10d.dhd._.js +229 -0
  380. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__12qy318._.js +3 -0
  381. package/cloud-runtime/standalone/apps/local/.next/server/chunks/_039.xxy._.js +1 -1
  382. package/cloud-runtime/standalone/apps/local/.next/server/chunks/_06oeti1._.js +49 -0
  383. package/cloud-runtime/standalone/apps/local/.next/server/chunks/_0dyy7h.._.js +3 -0
  384. package/cloud-runtime/standalone/apps/local/.next/server/chunks/_0gi7c9x._.js +2 -2
  385. package/cloud-runtime/standalone/apps/local/.next/server/chunks/_0gr.psg._.js +1 -1
  386. package/cloud-runtime/standalone/apps/local/.next/server/chunks/_0sd8z0i._.js +21 -0
  387. package/cloud-runtime/standalone/apps/local/.next/server/chunks/_0y42h_~._.js +2 -2
  388. package/cloud-runtime/standalone/apps/local/.next/server/chunks/_0~ah49q._.js +1 -1
  389. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_01kqgle._.js +11 -0
  390. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_06qet8g._.js +36 -0
  391. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0_0m2ly._.js +397 -0
  392. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0_a~bj0._.js +25 -0
  393. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0a15wtk._.js +397 -0
  394. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0bjdpen._.js +29 -0
  395. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0fr1qq6._.js +1 -1
  396. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0g.q2r6._.js +41 -0
  397. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0h7wd0e._.js +29 -0
  398. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0i7fs.i._.js +397 -0
  399. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0ipg-p6._.js +3 -0
  400. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0npxy21._.js +11 -0
  401. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0uhfa93._.js +21 -0
  402. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_12wpldq._.js +25 -0
  403. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local__next-internal_server_app_api_linear_worker_route_actions_116303i.js +3 -0
  404. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_01hd2_5._.js +3 -0
  405. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_01pvj2g._.js +34 -0
  406. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_0ik933l._.js +55 -0
  407. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_0o1v.j4._.js +79 -0
  408. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_0pxj122._.js +55 -0
  409. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_automations_index_ts_0_8ch28._.js +10 -0
  410. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_graph_082u-ls._.js +41 -0
  411. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_prompt-scheduler_0.xgxyl._.js +4 -0
  412. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_prompt-scheduler_0yu3--n._.js +4 -0
  413. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_prompt-scheduler_0ze8hzc._.js +4 -0
  414. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_prompt-scheduler_get-store_ts_0p0aod1._.js +5 -5
  415. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_prompt-scheduler_linear-worker_ts_0ycjwem._.js +5 -0
  416. package/cloud-runtime/standalone/apps/local/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0gips_c.js +1 -1
  417. package/cloud-runtime/standalone/apps/local/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0u_5kfo.js +1 -1
  418. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_0tvwux2._.js +3 -0
  419. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_icons_0hvpc.y._.js +3 -0
  420. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__006vr7.._.js +3 -0
  421. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0d18x53._.js +18 -0
  422. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0j9m72.._.js +18 -0
  423. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{[root-of-the-server]__02.r909._.js → [root-of-the-server]__0n5g8ml._.js} +2 -2
  424. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0w.zmt6._.js +3 -0
  425. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0w1mm2j._.js +3 -0
  426. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0z7nw_r._.js +3 -0
  427. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__10h_7t0._.js +3 -0
  428. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__13h-0om._.js +3 -0
  429. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_00trrg8._.js +3 -0
  430. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0ejzn1e._.js +1 -1
  431. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0wk3skw._.js +1 -1
  432. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0yeuuy1._.js +25 -0
  433. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{apps_local_075cq2j._.js → apps_local_0k4~c1x._.js} +2 -2
  434. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0t6p.qm._.js +3 -0
  435. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{apps_local_0_4hk8x._.js → apps_local_0v~bvwg._.js} +2 -2
  436. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_agents_[id]_page_tsx_06n47n~._.js +1 -1
  437. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_graph_[taskId]_page_tsx_0bctfd-._.js +1 -1
  438. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_linear_page_tsx_0a~n5y8._.js +2 -2
  439. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_page_tsx_0kcaeqi._.js +1 -1
  440. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_teams_new_page_tsx_0yqd0a5._.js +3 -0
  441. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_teams_page_tsx_06czvz-._.js +1 -1
  442. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_terminal_page_tsx_01n9qk.._.js +12 -12
  443. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_orphans_page_tsx_0sdv.11._.js +1 -1
  444. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_setup_page_tsx_0ql2qmr._.js +1 -1
  445. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_PromptJobBoard_tsx_06zob36._.js +8 -0
  446. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_projects_ProjectObjectivesWorkspace_tsx_0k4tfip._.js +6 -6
  447. package/cloud-runtime/standalone/apps/local/.next/server/functions-config-manifest.json +2 -0
  448. package/cloud-runtime/standalone/apps/local/.next/server/middleware-build-manifest.js +3 -3
  449. package/cloud-runtime/standalone/apps/local/.next/server/middleware-manifest.json +5 -5
  450. package/cloud-runtime/standalone/apps/local/.next/server/pages/404.html +2 -2
  451. package/cloud-runtime/standalone/apps/local/.next/server/pages/500.html +1 -1
  452. package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.js +1 -1
  453. package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.json +1 -1
  454. package/cloud-runtime/standalone/apps/local/.next/static/chunks/003q-y3exxalk.js +1 -0
  455. package/cloud-runtime/standalone/apps/local/.next/static/chunks/00po4v2x~0x_z.js +1 -0
  456. package/cloud-runtime/standalone/apps/local/.next/static/chunks/013gtut17~fne.js +23 -0
  457. package/cloud-runtime/standalone/apps/local/.next/static/chunks/014z_yruiincl.js +1 -0
  458. package/cloud-runtime/standalone/apps/local/.next/static/chunks/041-dhls9zkl1.js +1 -0
  459. package/cloud-runtime/standalone/apps/local/.next/static/chunks/04yoml2rqnuot.js +16 -0
  460. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0_mrpyqcoyb_5.js +1 -0
  461. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{11-u35xqxu~i-.js → 0aewbg0i704w7.js} +1 -1
  462. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{08~pgzjb13k_v.js → 0dnw31436wd~..js} +2 -2
  463. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0jonp-o8lh-4j.js → 0e307b-0c2jbx.js} +1 -1
  464. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0edewt9l~cs~k.css +1 -0
  465. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0o9cxba_5mv2c.js → 0fonouj2i9qnb.js} +1 -1
  466. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0gj98094p~zn4.js +1 -0
  467. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0jrkacz_dyem6.js +37 -0
  468. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{02zcxdul-1jaf.js → 0mig99af4~uos.js} +3 -3
  469. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0pdrpsy-zdxp0.js +5 -0
  470. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0p~l5ap6qqx2o.js +1 -0
  471. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0stvi5btlxl4m.js +20 -0
  472. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0rey9zfvm3yhd.js → 0tt1oh112yv-l.js} +1 -1
  473. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0w94x-v00osq0.js +1 -0
  474. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0mvqoz13v0o2a.js → 0wh6p5~ft5rma.js} +2 -2
  475. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0zw85-xl9ysjs.js +1 -0
  476. package/cloud-runtime/standalone/apps/local/.next/static/chunks/{00lise4d-u8d1.js → 1011~1x9nj4ny.js} +1 -1
  477. package/cloud-runtime/standalone/apps/local/.next/static/chunks/119v0-idpg-cv.js +16 -0
  478. package/cloud-runtime/standalone/apps/local/.next/static/chunks/11l2tww5f0hsk.js +20 -0
  479. package/cloud-runtime/standalone/apps/local/.next/static/chunks/16d~es6h6k~rj.js +6 -0
  480. package/cloud-runtime/standalone/apps/local/app/agents/[id]/page.tsx +40 -5
  481. package/cloud-runtime/standalone/apps/local/app/api/agents/[id]/profile/route.ts +10 -0
  482. package/cloud-runtime/standalone/apps/local/app/api/linear/worker/route.ts +151 -0
  483. package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/objectives/[objectiveId]/route.ts +0 -8
  484. package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/objectives/[objectiveId]/scheduled-tasks/route.ts +6 -27
  485. package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/objectives/[objectiveId]/worker/route.ts +89 -0
  486. package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/route.ts +13 -0
  487. package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/search/route.ts +4 -4
  488. package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/teams/route.ts +5 -3
  489. package/cloud-runtime/standalone/apps/local/app/api/prompt-jobs/route.ts +7 -4
  490. package/cloud-runtime/standalone/apps/local/app/projects/[slug]/teams/new/page.tsx +236 -10
  491. package/cloud-runtime/standalone/apps/local/app/setup/page.tsx +9 -1
  492. package/cloud-runtime/standalone/apps/local/components/FloatingPanel.tsx +36 -8
  493. package/cloud-runtime/standalone/apps/local/components/LinearBoard.tsx +53 -24
  494. package/cloud-runtime/standalone/apps/local/components/PromptJobBoard.tsx +73 -0
  495. package/cloud-runtime/standalone/apps/local/components/graph/NodeDetailPanel.tsx +17 -12
  496. package/cloud-runtime/standalone/apps/local/components/linear/LinearSettingsModal.tsx +105 -0
  497. package/cloud-runtime/standalone/apps/local/components/linear/LinearWorkerConfig.tsx +367 -0
  498. package/cloud-runtime/standalone/apps/local/components/projects/ObjectiveHealthTrend.tsx +215 -0
  499. package/cloud-runtime/standalone/apps/local/components/projects/ObjectiveScheduledTasksPanel.tsx +170 -46
  500. package/cloud-runtime/standalone/apps/local/components/projects/ProjectHome.tsx +8 -2
  501. package/cloud-runtime/standalone/apps/local/components/projects/ProjectObjectivesWorkspace.tsx +211 -368
  502. package/cloud-runtime/standalone/apps/local/components/projects/RecentlyCompletedCard.tsx +213 -0
  503. package/cloud-runtime/standalone/apps/local/components/projects/TeamsView.tsx +121 -6
  504. package/cloud-runtime/standalone/apps/local/components/scheduling/ScheduleConditionPicker.tsx +1 -1
  505. package/cloud-runtime/standalone/apps/local/components/setup/McpSetupStep.tsx +242 -0
  506. package/cloud-runtime/standalone/apps/local/components/setup/ProjectStep.tsx +2 -2
  507. package/cloud-runtime/standalone/apps/local/components/setup/ProviderStep.tsx +1 -1
  508. package/cloud-runtime/standalone/apps/local/components/setup/TeamsStep.tsx +288 -15
  509. package/cloud-runtime/standalone/apps/local/components/terminal/ProjectTerminal.tsx +24 -14
  510. package/cloud-runtime/standalone/apps/local/hooks/useSetupFlow.ts +16 -2
  511. package/cloud-runtime/standalone/apps/local/lib/objective-health-history.ts +198 -0
  512. package/cloud-runtime/standalone/apps/local/lib/project-objective-context.ts +10 -0
  513. package/cloud-runtime/standalone/apps/local/lib/project-objectives.ts +0 -9
  514. package/cloud-runtime/standalone/apps/local/skills-lock.json +20 -0
  515. package/cloud-runtime/standalone/apps/local/src/automations/adapters.ts +5 -0
  516. package/cloud-runtime/standalone/apps/local/src/automations/types.ts +5 -0
  517. package/cloud-runtime/standalone/apps/local/src/automations/validation.ts +12 -5
  518. package/cloud-runtime/standalone/apps/local/src/objectives/parser.ts +0 -2
  519. package/cloud-runtime/standalone/apps/local/src/objectives/serializer.ts +0 -2
  520. package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/linear-worker-constants.ts +38 -0
  521. package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/linear-worker-job.ts +47 -0
  522. package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/linear-worker.ts +482 -0
  523. package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/objective-worker-job.ts +47 -0
  524. package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/objective-worker.ts +511 -0
  525. package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/processor.ts +51 -417
  526. package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/store.ts +19 -4
  527. package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/types.ts +12 -8
  528. package/cloud-runtime/standalone/apps/local/state/terminalTabs.ts +182 -106
  529. package/cloud-runtime/standalone/apps/local/worker/index.js +12 -13
  530. package/package.json +1 -1
  531. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0-0479y._.js +0 -54
  532. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__08oj_ky._.js +0 -49
  533. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__08y2lkj._.js +0 -3
  534. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__09joc_o._.js +0 -3
  535. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0g50c6p._.js +0 -237
  536. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0gtv0rq._.js +0 -8
  537. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0ksbs9p._.js +0 -3
  538. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0pz~m67._.js +0 -3
  539. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0q93mk3._.js +0 -7
  540. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0tdixb0._.js +0 -49
  541. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0vhcrdv._.js +0 -229
  542. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0xdp_8-._.js +0 -237
  543. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__11s20j6._.js +0 -3
  544. package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__12xhcor._.js +0 -54
  545. package/cloud-runtime/standalone/apps/local/.next/server/chunks/_01rag2f._.js +0 -49
  546. package/cloud-runtime/standalone/apps/local/.next/server/chunks/_03y4xss._.js +0 -21
  547. package/cloud-runtime/standalone/apps/local/.next/server/chunks/_0cm4i3i._.js +0 -3
  548. package/cloud-runtime/standalone/apps/local/.next/server/chunks/_0ijzgnb._.js +0 -3
  549. package/cloud-runtime/standalone/apps/local/.next/server/chunks/_0~fjhfa._.js +0 -3
  550. package/cloud-runtime/standalone/apps/local/.next/server/chunks/_12yasaj._.js +0 -9
  551. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_03q7_.q._.js +0 -21
  552. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0m3e2d~._.js +0 -30
  553. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0r-oiga._.js +0 -30
  554. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_00cwfvi._.js +0 -34
  555. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_0hx7xyz._.js +0 -34
  556. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_0rqcat4._.js +0 -55
  557. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_0sc_lek._.js +0 -79
  558. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_135ddsu._.js +0 -55
  559. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_graph_store_ts_0h.2qy9._.js +0 -43
  560. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_prompt-scheduler_processor_ts_022nz2u._.js +0 -3
  561. package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_prompt-scheduler_processor_ts_0i1av_r._.js +0 -475
  562. package/cloud-runtime/standalone/apps/local/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0yvelwy.js +0 -3
  563. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_0qzjdog._.js +0 -3
  564. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_icons_0a-mbbj._.js +0 -3
  565. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__07johgg._.js +0 -3
  566. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0bf346q._.js +0 -3
  567. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0r3w68h._.js +0 -18
  568. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0x7k~pk._.js +0 -3
  569. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0y8j6el._.js +0 -18
  570. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0yme9fy._.js +0 -3
  571. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0~7q5sw._.js +0 -3
  572. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__13eqcxp._.js +0 -3
  573. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_09~glsn._.js +0 -3
  574. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0n80y4_._.js +0 -3
  575. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0ndrb_0._.js +0 -8
  576. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0ut3k~7._.js +0 -3
  577. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0vibfch._.js +0 -3
  578. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0yffwm4._.js +0 -8
  579. package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_04hvzn_._.js +0 -3
  580. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0.4d8rshxivwh.js +0 -20
  581. package/cloud-runtime/standalone/apps/local/.next/static/chunks/02p3n7faotpr9.js +0 -16
  582. package/cloud-runtime/standalone/apps/local/.next/static/chunks/051-7k0nnm-vm.js +0 -1
  583. package/cloud-runtime/standalone/apps/local/.next/static/chunks/055bzj5jfgzr0.js +0 -1
  584. package/cloud-runtime/standalone/apps/local/.next/static/chunks/05c-~4v_jrblf.css +0 -1
  585. package/cloud-runtime/standalone/apps/local/.next/static/chunks/09wzd7y~tk-3~.js +0 -1
  586. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0brmd4~76pthy.js +0 -20
  587. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0hudzktaaxr4g.js +0 -6
  588. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0hzq698w6f4m6.js +0 -1
  589. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0i.su2yr26wb6.js +0 -37
  590. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0jsbvcyub73d9.js +0 -1
  591. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0l2pt2td_87wr.js +0 -5
  592. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0p7s38p3bcffh.js +0 -1
  593. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0q2dgbluvgxf2.js +0 -16
  594. package/cloud-runtime/standalone/apps/local/.next/static/chunks/0ucg8e2wkd8gf.js +0 -1
  595. package/cloud-runtime/standalone/apps/local/.next/static/chunks/104xjvrf6y-zq.js +0 -1
  596. package/cloud-runtime/standalone/apps/local/.next/static/chunks/15jlly_p-g4c8.js +0 -6
  597. package/cloud-runtime/standalone/apps/local/.next/static/chunks/16nozeadjid9-.js +0 -5
  598. /package/cloud-runtime/standalone/apps/local/.next/static/{fPVnk_kTRzrxXr7U3TRFW → RnYHmEXBwXJjVrVVx2CuP}/_buildManifest.js +0 -0
  599. /package/cloud-runtime/standalone/apps/local/.next/static/{fPVnk_kTRzrxXr7U3TRFW → RnYHmEXBwXJjVrVVx2CuP}/_clientMiddlewareManifest.js +0 -0
  600. /package/cloud-runtime/standalone/apps/local/.next/static/{fPVnk_kTRzrxXr7U3TRFW → RnYHmEXBwXJjVrVVx2CuP}/_ssgManifest.js +0 -0
@@ -0,0 +1,55 @@
1
+ module.exports=[461419,e=>{"use strict";var t=e.i(623775);let n=[["INTAKE","PROGRESS","DONE"]];async function a({workflowId:e,currentNodeName:n,decision:r,retryCount:o,maxRetries:s=3}){if("done"===String(n).trim().toLowerCase())return{nextNodeName:"done",nextStatus:"completed",retryCount:0,error:null,appendLog:{content:"Task completed at done",logType:"checkpoint"},nodeConfig:null};let i=await (0,t.getWorkflowNodeByName)(e,n);if(!i)return{nextNodeName:n,nextStatus:"blocked",retryCount:o,error:`Node '${n}' not found in workflow`,appendLog:{content:`Workflow error: node '${n}' not found`,logType:"error"},nodeConfig:null};if("terminal"===i.node_type)return{nextNodeName:n,nextStatus:"completed",retryCount:0,error:null,appendLog:{content:`Task completed at ${i.label||n}`,logType:"checkpoint"},nodeConfig:i};if("blocked"===r)return{nextNodeName:n,nextStatus:"blocked",retryCount:o,error:null,appendLog:{content:"Blocked: additional input required.",logType:"system"},nodeConfig:i};let l=await (0,t.getWorkflowTransitionsFromNode)(e,i.id),d=function(e){switch(e){case"done":default:return"done";case"blocked":return"blocked";case"failed":case"not_done":return"failed"}}(r),u=l.find(e=>e.condition===d);if(u){let a=(await (0,t.getWorkflowNodes)(e)).find(e=>e.id===u.to_node_id);if(a){let e="terminal"===a.node_type;return{nextNodeName:a.name,nextStatus:e?"completed":"queued",retryCount:0,error:null,appendLog:{content:"done"===r?`Stage completed: ${i.label||n}`:`Transition to ${a.label||a.name}`,logType:"done"===r?"checkpoint":"system"},nodeConfig:a}}}if("done"===r)return{nextNodeName:n,nextStatus:"completed",retryCount:0,error:null,appendLog:{content:`Task completed at ${i.label||n}`,logType:"checkpoint"},nodeConfig:i};let c=o+1;return c<=s?{nextNodeName:n,nextStatus:"queued",retryCount:c,error:null,appendLog:{content:`Retrying (${c}/${s}) for ${i.label||n}`,logType:"system"},nodeConfig:i}:{nextNodeName:n,nextStatus:"failed",retryCount:c,error:"Task failed after max retries.",appendLog:{content:"Task failed after max retries.",logType:"error"},nodeConfig:i}}e.s(["getTicketType",0,function(e,t){for(let t of["ticket_type","type","issue_type","kind"])if("spike"===function(e){if("string"!=typeof e)return"task";let t=e.trim().toLowerCase();return"spike"===t||"spikes"===t?"spike":"task"}(e[t]))return"spike";let n=t.match(/^#\s+(.+)$/m),a=n?.[1]?.trim().toLowerCase()||"";return a.startsWith("spike:")||a.startsWith("[spike]")?"spike":"task"},"resolveStageTransition",0,function({currentStage:e,decision:t,ticketType:a,retryCount:r,maxRetries:o=3}){let s=function(e,t){if("spike"===t)return"INTAKE"===e?"PROGRESS":"DONE"===e?null:"DONE";for(let t of n){let n=t.indexOf(e);if(-1!==n){if(n>=t.length-1)return null;return t[n+1]}}return null}(e,a);if("done"===t)return s?{nextStage:s,nextStatus:"queued",retryCount:0,error:null,appendLog:{content:`Stage completed: ${e}`,logType:"checkpoint"}}:{nextStage:"DONE",nextStatus:"completed",retryCount:0,error:null,appendLog:{content:`Task completed at stage ${e}.`,logType:"checkpoint"}};if("blocked"===t)return{nextStage:e,nextStatus:"blocked",retryCount:r,error:null,appendLog:{content:"Blocked: additional input required.",logType:"system"}};if("PROGRESS"===e)return{nextStage:"PROGRESS",nextStatus:"queued",retryCount:0,error:null,appendLog:{content:"Stage not done. Retrying in PROGRESS.",logType:"system"}};let i=r+1;return i<=o?{nextStage:e,nextStatus:"queued",retryCount:i,error:null,appendLog:{content:`Retrying (${i}/${o}) for stage ${e}.`,logType:"system"}}:{nextStage:e,nextStatus:"failed",retryCount:i,error:"Task failed.",appendLog:{content:"Task failed.",logType:"error"}}},"resolveWorkflowTransition",0,a])},733545,e=>{"use strict";var t=e.i(341902);e.s(["getKnowledgeNote",0,function(e,n){return t.vaultStore.getKnowledgeNote(e,n)},"upsertKnowledgeNote",0,function(e){return t.vaultStore.upsertKnowledgeNote(e)}])},389344,e=>{"use strict";var t=e.i(929160),n=e.i(461419),a=e.i(623775),r=e.i(254799),o=e.i(374371),s=e.i(633211),i=e.i(476805),l=e.i(733545);let d=new Set(["outcome","decision","pattern","gotcha"]),u=`You are a memory extractor for a task execution system.
2
+ Given a completed task, extract 0-3 memories worth remembering for future tasks.
3
+
4
+ Each memory must be:
5
+ { "memory_type": "outcome" | "decision" | "pattern" | "gotcha", "content": "one concise sentence" }
6
+
7
+ - outcome: what happened (success/failure result)
8
+ - decision: a choice that was made and why
9
+ - pattern: a reusable approach or technique discovered
10
+ - gotcha: a surprising pitfall or edge case encountered
11
+
12
+ Return ONLY a JSON array. Return [] if nothing worth remembering.
13
+ Do not wrap in markdown code blocks. Just raw JSON.`,c=`You are maintaining a living project knowledge note for a task execution system.
14
+ Given the current project note and a completed or failed task, decide whether the note should change.
15
+
16
+ Return ONLY a JSON object:
17
+ {
18
+ "updated_note": "full revised note in concise markdown",
19
+ "change_summary": "short summary of what changed",
20
+ "no_change": false
21
+ }
22
+
23
+ Rules:
24
+ - Revise the current note instead of appending isolated bullets.
25
+ - Write like a person's living project notes, not an extracted fact list.
26
+ - The note should help someone understand what the project is, what it does, what has been decided, and what lessons now shape future work.
27
+ - Prefer short sections and narrative paragraphs in markdown. Bullets are fine only when they genuinely improve clarity.
28
+ - Preserve strong existing content when still valid.
29
+ - Merge duplicate ideas, sharpen wording, and remove stale or unsupported claims.
30
+ - Only include project-scoped knowledge likely useful across future work in the same project.
31
+ - Do not include repo-specific durable truths that belong in repo knowledge.
32
+ - Avoid generic filler and avoid sounding like an audit log.
33
+ - If nothing project-scoped changed, return {"no_change": true}.
34
+ - Do not wrap in markdown code blocks. Just raw JSON.`;async function p(e){let t=[`Goal: ${e.goal}`,`Status: ${e.status}`,e.nodeOutputs?`Node outputs: ${JSON.stringify(e.nodeOutputs).slice(0,2e3)}`:null].filter(Boolean).join("\n"),n=`${u}
35
+
36
+ Task:
37
+ ${t}`,a="";try{await (0,o.runCliResponse)({provider:"claude",model:"claude-haiku-4-5-20251001",prompt:n,onDelta:e=>{a+=e}})}catch(e){return console.warn("[memory-extractor] LLM call failed:",e),[]}var r=a;let s=r.trim().replace(/^```(?:json)?\s*/i,"").replace(/\s*```\s*$/,"").trim();try{let e=JSON.parse(s);if(!Array.isArray(e))return[];return e.filter(e=>"object"==typeof e&&null!==e&&d.has(e.memory_type)&&"string"==typeof e.content&&e.content.trim().length>0).slice(0,3)}catch{return console.warn("[memory-extractor] Failed to parse LLM response:",s.slice(0,200)),[]}}let g=new Set(["outcome","decision","pattern","gotcha"]),f=["agent_id","agentId","agent","participant_id","participantId","assigned_agent","assignedAgent"];function m(e){return"string"!=typeof e?null:e.trim()||null}function y(e){let t=m(e.explicitAgentId);if(t)return t;let n=e.frontmatter||{};for(let e of f){let t=m(n[e]);if(t)return t}return m(e.defaultUserId)||"system"}async function k(e,t,n){let a=(0,s.getSQLiteDb)().prepare(`INSERT OR IGNORE INTO agent_memory (id, agent_id, task_id, memory_type, content, content_hash, created_at)
38
+ VALUES (?, ?, ?, ?, ?, ?, ?)`),o=0,l=Date.now();for(let s of n){if(!g.has(s.memory_type)||!s.content?.trim())continue;let n=(0,r.createHash)("sha256").update(s.content.trim()).digest("hex");a.run((0,r.randomUUID)(),t,e,s.memory_type,s.content.trim(),n,l).changes>0&&o++}return o>0&&(0,i.storeKnowledgeEntries)(n.map(n=>({scope:"agent",subjectId:t,sourceType:"task_completion",sourceId:e,kind:n.memory_type,title:n.content.trim().slice(0,80),body:n.content.trim(),confidence:.7,durability:.6,metadata:{task_id:e}}))),o}async function w(e,t,n){let a=await p(n);if(0===a.length)return;let r=await k(e,t,a);r>0&&console.log(`[memory-extractor] Stored ${r} memories for task ${e}`)}async function S(e){let t=m(e);if(!t)return null;if(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(t))return t;let n=(0,s.getSQLiteDb)().prepare("SELECT id FROM projects WHERE slug = ? LIMIT 1").get(t);return n?.id??null}async function h(e,t){let n=[`Goal: ${e.goal}`,`Status: ${e.status}`,e.nodeOutputs?`Node outputs: ${JSON.stringify(e.nodeOutputs).slice(0,2e3)}`:null].filter(Boolean).join("\n"),a=`${c}
39
+
40
+ Current note:
41
+ ${t||"(empty)"}
42
+
43
+ Task:
44
+ ${n}`,r="";try{await (0,o.runCliResponse)({provider:"claude",model:"claude-haiku-4-5-20251001",prompt:a,onDelta:e=>{r+=e}})}catch(e){return console.warn("[project-knowledge] LLM call failed:",e),[]}let s=r.trim().replace(/^```(?:json)?\s*/i,"").replace(/\s*```\s*$/,"").trim();try{let e=JSON.parse(s);if(!e||"object"!=typeof e||Array.isArray(e))return[];let t="string"==typeof e.updated_note?e.updated_note.trim():"";if(e.no_change||!t)return[];return[{updated_note:t,change_summary:"string"==typeof e.change_summary?e.change_summary.trim():void 0,no_change:!1}]}catch{return console.warn("[project-knowledge] Failed to parse LLM response:",s.slice(0,200)),[]}}async function _(e,t,n){if(0===n.length)return 0;let a=n[0];return a&&a.updated_note?.trim()?+!!(0,l.upsertKnowledgeNote)({scope:"project",subjectId:e,content:a.updated_note.trim(),changeSummary:a.change_summary,sourceType:"task_completion",sourceId:t,metadata:{task_id:t}}).changed:0}async function x(e,t,n){let a=await S(t);if(!a)return;let r=await h(n,(0,l.getKnowledgeNote)("project",a)?.content??"");if(0===r.length)return;let o=await _(a,e,r);o>0&&console.log(`[project-knowledge] Stored ${o} project knowledge entries for task ${e}`)}var $=e.i(209120);function T(e,t){return`---
45
+ ${Object.entries(e).map(([e,t])=>`${e}: ${null==t?"":String(t)}`).join("\n")}
46
+ ---
47
+ ${t}`}var I=e.i(295851),b=e.i(864075);function N(e){if(!e)return[];if(Array.isArray(e))return Array.from(new Set(e.map(e=>String(e||"").trim()).filter(Boolean)));if("string"==typeof e){let t=e.trim();if(!t)return[];try{let e=JSON.parse(t);if(Array.isArray(e))return Array.from(new Set(e.map(e=>String(e||"").trim()).filter(Boolean)))}catch{}return Array.from(new Set(t.split(",").map(e=>e.trim()).filter(Boolean)))}return[]}function v(e){if(!e)return[];let t=N(e.depends_on);if(t.length)return t;if("string"==typeof e.content){let{frontmatter:t}=(0,a.parseFrontmatter)(e.content||"");return N(t.depends_on)}return[]}async function C(e,t){if(!e.length)return[];let n=(0,$.createAdminDbClient)().from("tasks").select("id, title, slug, status, stage").in("id",e);t&&(n=n.eq("user_id",t));let{data:a}=await n,r=new Map;if(Array.isArray(a))for(let e of a){var o;e&&e.id&&r.set(e.id,(o=e.id,e?{id:e.id||o||"",title:e.title||void 0,slug:e.slug||void 0,status:e.status,stage:e.stage}:{id:o||""}))}return e.map(e=>r.get(e)).filter(e=>!!e)}async function O(e,t){let n=v(e);return n.length?(await C(n,t)).filter(e=>"completed"!==(e.status||"")):[]}async function L(e,r,o){let s=r||b.LOCAL_USER.id,i=await t.db.getTask(e,s);if(!i)throw Error(`Task not found: ${e}`);let l=await O(i,s);if(l.length){let t=function(e){if(!e.length)return"";let t=e.slice(0,3).map(e=>{let t=e.title||e.slug||e.id||"(unknown)",n="INTAKE"===e.stage?"awaiting approval":e.status||"",a=n?` (${n})`:"";return`${t}${a}`}),n=`Waiting on dependencies: ${t.join(", ")}`;return e.length>3&&(n+=` +${e.length-3} more`),n}(l),n=(0,$.createAdminDbClient)(),{error:a}=await n.from("tasks").update({status:"blocked",blocked_reason:t,updated_at:new Date().toISOString()}).eq("id",e);if(a&&"42703"!==a.code)throw a;return{started:!1,missingDependencies:l,blockedReason:t}}if(!o?.force&&"queued"===i.status&&!i.blocked_reason)return{started:!1,missingDependencies:[],alreadyQueued:!0};let{frontmatter:d,body:u}=(0,a.parseFrontmatter)(i.content||""),c=o?.ticketType??(0,n.getTicketType)(d,u),p=await (0,I.getQueue)(),g=await p.send(I.QUEUE_NAMES.TASK_PROCESS,{taskId:e,userId:s,signal:"start",ticketType:c}),f=(0,$.createAdminDbClient)(),{error:m}=await f.from("tasks").update({status:"queued",blocked_reason:null,updated_at:new Date().toISOString()}).eq("id",e);if(m&&"42703"!==m.code)throw m;return{started:!!g,jobId:g,missingDependencies:[],ticketType:c}}async function A(e,t){let n=t||b.LOCAL_USER.id,a=(0,$.createAdminDbClient)(),r=a.from("tasks").select("id").contains("depends_on",[e]);t&&(r=r.eq("user_id",t));let{data:o,error:s}=await r,i=Array.isArray(o)?o.map(e=>e?.id).filter(Boolean):[];if(s&&"42703"===s.code){let n=a.from("tasks").select("id, content");t&&(n=n.eq("user_id",t));let{data:r}=await n;i=(Array.isArray(r)?r:[]).filter(t=>v(t).includes(e)).map(e=>e?.id).filter(Boolean)}i.length&&await Promise.all(i.map(e=>L(e,n)))}var j=e.i(930430);async function E(e){let t=(0,$.createAdminDbClient)();await t.from("tasks").update({stage:e.stage,status:"queued",updated_at:new Date().toISOString()}).eq("id",e.taskId).eq("user_id",e.userId)}async function R(e){let t=(0,$.createAdminDbClient)(),{data:n}=await t.from("tasks").select("stage_decisions").eq("id",e.taskId).eq("user_id",e.userId).maybeSingle(),a={...n?.stage_decisions&&"object"==typeof n.stage_decisions?n.stage_decisions:{},[e.stage]:{decision:e.decision.decision,rationale:e.decision.explanation,final_result:e.decision.final_result,decided_at:new Date().toISOString()}},{error:r}=await t.from("tasks").update({stage_decisions:a,updated_at:new Date().toISOString()}).eq("id",e.taskId).eq("user_id",e.userId);if(r&&!function(e){if(!e||"object"!=typeof e)return!1;let t="code"in e?String(e.code):"",n="message"in e?String(e.message).toLowerCase():"";return("PGRST204"===t||"42703"===t)&&n.includes("stage_decisions")}(r))throw r}async function D(e){let n=await t.db.getTask(e.taskId,e.userId);if(!n)throw Error(`Task ${e.taskId} not found`);let r=n.stage||null,o=new Date().toISOString(),s={taskId:e.taskId,userId:e.userId,title:n.title||null,slug:n.slug||null,timestamp:o},{frontmatter:i,body:l}=(0,a.parseFrontmatter)(n.content),d=y({defaultUserId:e.userId,frontmatter:i});i.stage=e.nextStage,i.status=e.nextStatus,e.error?i.error=e.error:"error"in i&&delete i.error;let u=T(i,l);await t.db.updateTask(e.taskId,u,e.userId);let c=(0,$.createAdminDbClient)(),{error:p}=await c.from("tasks").update({stage:e.nextStage,status:e.nextStatus,retry_count:e.retryCount,error:e.error,updated_at:new Date().toISOString()}).eq("id",e.taskId).eq("user_id",e.userId);p?console.error(`[applyStageTransition] direct update failed for ${e.taskId}:`,p):console.log(`[applyStageTransition] set ${e.taskId} to status=${e.nextStatus}, stage=${e.nextStage}`),"completed"===e.nextStatus&&(await c.from("tasks").update({completed_at:new Date().toISOString()}).eq("id",e.taskId).eq("user_id",e.userId),await A(e.taskId,e.userId)),("completed"===e.nextStatus||"failed"===e.nextStatus)&&(w(e.taskId,d,{goal:String(n.content||n.title||""),status:String(e.nextStatus)}).catch(e=>console.warn("[applyStageTransition] Memory extraction failed:",e)),x(e.taskId,n.project_id||n.project,{goal:String(n.content||n.title||""),status:String(e.nextStatus)}).catch(e=>console.warn("[applyStageTransition] Project knowledge extraction failed:",e))),"blocked"!==e.nextStatus&&"failed"!==e.nextStatus&&(0,j.notifyTaskEvent)({...s,eventType:"task.stage_complete",stage:r,previousStage:r,nextStage:e.nextStage,status:e.nextStatus,details:{nextStatus:e.nextStatus}}),"completed"===e.nextStatus&&(0,j.notifyTaskEvent)({...s,eventType:"task.completed",stage:e.nextStage,status:e.nextStatus,details:{previousStage:r,nextStage:e.nextStage}}),"failed"===e.nextStatus&&(0,j.notifyTaskEvent)({...s,eventType:"task.failed",stage:e.nextStage,status:e.nextStatus,error:e.error,details:{previousStage:r}})}async function q(e){await t.db.addTaskLog(e.taskId,e.content,e.logType)}async function P(e){await t.db.addTaskComment(e.taskId,e.content,e.authorType||"agent")}async function B(e){let n=await t.db.getTask(e.taskId,e.userId);if(!n)return;let{frontmatter:r,body:o}=(0,a.parseFrontmatter)(n.content),s=y({defaultUserId:e.userId,frontmatter:r});r.status="failed",r.error=e.reason||"Cancelled";let i=T(r,o);await t.db.updateTask(e.taskId,i,e.userId),await t.db.addTaskLog(e.taskId,e.reason||"Task cancelled","error"),w(e.taskId,s,{goal:String(n.content||n.title||""),status:"failed"}).catch(e=>console.warn("[markCancelled] Memory extraction failed:",e)),x(e.taskId,n.project_id||n.project,{goal:String(n.content||n.title||""),status:"failed"}).catch(e=>console.warn("[markCancelled] Project knowledge extraction failed:",e));let l=(0,$.createAdminDbClient)();await l.from("tasks").update({status:"failed",error:e.reason||"Cancelled",updated_at:new Date().toISOString()}).eq("id",e.taskId).eq("user_id",e.userId),(0,j.notifyTaskEvent)({taskId:e.taskId,userId:e.userId,eventType:"task.failed",title:n.title||null,slug:n.slug||null,stage:n.stage||null,status:"failed",error:e.reason||"Cancelled",timestamp:new Date().toISOString(),details:{previousStage:n.stage||null}})}async function W(e){let{taskId:n,userId:a,signal:r,payload:o,ticketType:s="task"}=e.data,i=await t.db.getTask(n,a);if(!i)return void console.log(`[processor] Task ${n} not found, skipping`);if("completed"===i.status||"failed"===i.status)return void console.log(`[processor] Task ${n} is ${i.status}, skipping`);let l=i.stage;switch(r){case"start":await J(n,l,a);break;case"agentResult":await K(n,l,a,o,s,i.retry_count||0,i.workflow_id&&/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(i.workflow_id)?i.workflow_id:null);break;case"humanInput":await M(n,o);break;case"daemonStep":await U(n,o);break;case"cancel":await F(n,a,o?.reason);break;default:console.warn(`[processor] Unknown signal: ${r}`)}}async function G(e){for(let t of e)try{await W(t)}catch(e){throw console.error(`[processor] Error processing job ${t.id}:`,e),e}}async function J(e,t,n){console.log(`[processor] Starting task ${e} at stage ${t}`),await E({taskId:e,stage:t,userId:n}),await q({taskId:e,content:`Task started at stage: ${t}`,logType:"system"})}async function K(e,t,a,r,o,s,i=null){let l,d,u;console.log(`[processor] Processing agent result for ${e}: ${r.decision}`),await R({taskId:e,stage:t,decision:r,userId:a});let c=Array.isArray(r.comments)?r.comments.map(e=>String(e||"").trim()).filter(Boolean):[],p=String(r.comment||r.log||r.final_result||"").trim();for(let t of c.length>0?c:p.split("\n").map(e=>e.trim()).filter(Boolean))await P({taskId:e,content:t,authorType:"agent"});let g=null,f=null;if(i){let e=await (0,n.resolveWorkflowTransition)({workflowId:i,currentNodeName:t,decision:r.decision,retryCount:s,maxRetries:3});l=e.nextNodeName,d=e.nextStatus,u=e.retryCount,g=e.error,f=e.appendLog,console.log(`[processor] Workflow transition: ${t} -> ${l} (workflow: ${i})`)}else{let e=(0,n.resolveStageTransition)({currentStage:t,decision:r.decision,ticketType:o,retryCount:s,maxRetries:3});l=e.nextStage,d=e.nextStatus,u=e.retryCount,g=e.error,f=e.appendLog}if(await D({taskId:e,nextStage:l,nextStatus:d,retryCount:u,error:g?r.explanation||g:null,userId:a}),f){let t="error"===f.logType&&r.explanation||"system"===f.logType&&r.explanation?r.explanation:f.content;await q({taskId:e,content:t,logType:f.logType})}console.log(`[processor] Task ${e} transitioned: ${t} -> ${l}`)}async function M(e,t){console.log(`[processor] Recording human input for ${e}`),await P({taskId:e,content:t.content,authorType:t.authorType||"user"})}async function U(e,t){let n=t.provider?` provider=${t.provider}`:"",a=t.model?` model=${t.model}`:"",r=t.role?` role=${t.role}`:"",o="number"==typeof t.iteration?` iter=${t.iteration}`:"",s="exit"===t.phase?` exit=${t.exit_code}`:"",i=t.error?` error=${t.error}`:"",l=Array.isArray(t.args)?t.args.join(" "):"",d=t.stdout_tail?`
48
+ stdout_tail:
49
+ ${t.stdout_tail}`:"",u=t.stderr_tail?`
50
+ stderr_tail:
51
+ ${t.stderr_tail}`:"",c=`[execution/${t.kind||"daemon"}] ${t.phase||"event"} ${t.label||""}${n}${a}${r}${o}${s}${i}`.trim()+(l?`
52
+ args: ${l}`:"")+(t.duration_ms?`
53
+ duration_ms: ${t.duration_ms}`:"")+d+u;await q({taskId:e,content:c,logType:"system"})}async function F(e,t,n){console.log(`[processor] Cancelling task ${e}: ${n||"No reason"}`),await B({taskId:e,reason:n,userId:t})}e.s(["taskProcessor",0,G],389344)}];
54
+
55
+ //# sourceMappingURL=apps_local_lib_0pxj122._.js.map
@@ -0,0 +1,10 @@
1
+ module.exports=[219233,862411,774553,821083,214870,356942,t=>{"use strict";var e=t.i(971435);let i=[{regex:/^every\s+(\d+)\s*s(?:ec(?:ond)?s?)?$/i,handler:t=>({cronExpr:`*/${Math.max(1,Math.ceil(parseInt(t[1])/60))} * * * *`,intervalMs:1e3*parseInt(t[1]),cadence:`Every ${t[1]} seconds`})},{regex:/^every\s+(\d+)\s*m(?:in(?:ute)?s?)?$/i,handler:t=>({cronExpr:`*/${t[1]} * * * *`,cadence:`Every ${t[1]} minutes`})},{regex:/^every\s+(\d+)\s*h(?:(?:ou)?rs?)?$/i,handler:t=>({cronExpr:`0 */${t[1]} * * *`,cadence:`Every ${t[1]} hours`})},{regex:/^every\s+hour$/i,handler:()=>({cronExpr:"0 * * * *",cadence:"Every hour"})},{regex:/^every\s+minute$/i,handler:()=>({cronExpr:"* * * * *",cadence:"Every minute"})},{regex:/^daily\s+at\s+(\d{1,2})(?::(\d{2}))?\s*(am|pm)?$/i,handler:t=>{let e=parseInt(t[1]),i=parseInt(t[2]||"0"),r=t[3]?.toLowerCase();return"pm"===r&&e<12&&(e+=12),"am"===r&&12===e&&(e=0),{cronExpr:`${i} ${e} * * *`,cadence:`Daily at ${e}:${String(i).padStart(2,"0")}`}}},{regex:/^daily\s+at\s+midnight$/i,handler:()=>({cronExpr:"0 0 * * *",cadence:"Daily at midnight"})},{regex:/^daily\s+at\s+noon$/i,handler:()=>({cronExpr:"0 12 * * *",cadence:"Daily at noon"})},{regex:/^weekdays?\s+at\s+(\d{1,2})(?::(\d{2}))?\s*(am|pm)?$/i,handler:t=>{let e=parseInt(t[1]),i=parseInt(t[2]||"0"),r=t[3]?.toLowerCase();return"pm"===r&&e<12&&(e+=12),"am"===r&&12===e&&(e=0),{cronExpr:`${i} ${e} * * 1-5`,cadence:`Weekdays at ${e}:${String(i).padStart(2,"0")}`}}},{regex:/^(monday|tuesday|wednesday|thursday|friday|saturday|sunday)s?\s+at\s+(\d{1,2})(?::(\d{2}))?\s*(am|pm)?$/i,handler:t=>{let e={sunday:0,monday:1,tuesday:2,wednesday:3,thursday:4,friday:5,saturday:6}[t[1].toLowerCase()],i=parseInt(t[2]),r=parseInt(t[3]||"0"),n=t[4]?.toLowerCase();"pm"===n&&i<12&&(i+=12),"am"===n&&12===i&&(i=0);let o=t[1].charAt(0).toUpperCase()+t[1].slice(1).toLowerCase();return{cronExpr:`${r} ${i} * * ${e}`,cadence:`${o}s at ${i}:${String(r).padStart(2,"0")}`}}},{regex:/^every\s+(\d+)\s*days?$/i,handler:t=>({cronExpr:`0 0 */${t[1]} * *`,cadence:`Every ${t[1]} days`})}];function r(t){let e=t.trim();for(let{regex:t,handler:r}of i){let i=e.match(t);if(i)return r(i)}}let n=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];function o(t,e){return`${0===t?12:t>12?t-12:t}${e>0?":"+String(e).padStart(2,"0"):""} ${t>=12?"PM":"AM"}`}function a(t){return`${t} minute${1===t?"":"s"} past`}let c="skip",d="fire_once";function s(t){if(t instanceof Date&&!Number.isNaN(t.getTime()))return t.toISOString();if("string"!=typeof t)return;let e=t.trim();return e.length>0?e:void 0}function u(t){if("number"!=typeof t||!Number.isFinite(t))return;let e=Math.trunc(t);return e>0?e:void 0}function l(t){return!t||"object"!=typeof t||Array.isArray(t)?{}:t}function p(t){return!t||!Number.isNaN(Date.parse(t))}function f(t){if("active"===t||"paused"===t||"stopped"===t)return t;throw Error('Automation state must be one of "active", "paused", or "stopped".')}function h(t){try{e.CronExpressionParser.parse(t)}catch{throw Error(`Invalid cron expression: "${t}"`)}}function m(t){if("prompt_job"!==t.target.type)return null;let e="string"==typeof t.body?t.body:"";if(e.trim().length>0)return e;let i=t.target.prompt;return"string"==typeof i&&i.length>0?i:null}function y(t){let e=l(t),i=s(e.id),n=s(e.name),o=s(e.description),a=s(e.projectId),c=s(e.createdAt),d="string"==typeof e.body?e.body:"";if(!i)throw Error("Automation id is required.");if(!n)throw Error("Automation name is required.");if(c&&!p(c))throw Error(`Invalid createdAt timestamp: "${c}"`);let y=function(t){let e=l(t);if("scheduled"!==e.type&&"condition"!==e.type)throw Error('Automation trigger.type must be "scheduled" or "condition".');return"condition"===e.type?function(t){let e=l(t),i=s(e.condition),r=u(e.checkEveryMs)??3e5;if(!i)throw Error("Condition trigger requires a non-empty condition.");if(r<6e4)throw Error("Condition trigger requires checkEveryMs >= 60000.");return{type:"condition",condition:i,checkEveryMs:r}}(e):function(t){let e=l(t),i=s(e.cadence),n=s(e.cronExpr),o=u(e.intervalMs);if(!n&&i)try{h(i),n=i}catch{let t=r(i);if(!t)throw Error(`Could not parse schedule cadence: "${i}"`);t.intervalMs&&t.intervalMs<6e4?o=t.intervalMs:t.cronExpr&&(n=t.cronExpr)}if(!n&&!i&&void 0===o)throw Error("Scheduled trigger requires at least one of cronExpr, cadence, or intervalMs.");return n&&h(n),{type:"scheduled",...i?{cadence:i}:{},...n?{cronExpr:n}:{},...void 0!==o?{intervalMs:o}:{}}}(e)}(e.trigger),v=function(t){if(null==t)return;let e=l(t),i={};("skip"===e.overlapPolicy||"queue"===e.overlapPolicy||"allow"===e.overlapPolicy)&&(i.overlapPolicy=e.overlapPolicy),("fire_once"===e.catchUpPolicy||"replay_all"===e.catchUpPolicy||"skip"===e.catchUpPolicy)&&(i.catchUpPolicy=e.catchUpPolicy);let r=u(e.cancelCheckSec);if(void 0!==r){if(r<1)throw Error("execution.cancelCheckSec must be >= 1.");i.cancelCheckSec=r}let n=s(e.condition);n&&(i.condition=n);let o=u(e.maxRuns);void 0!==o&&(i.maxRuns=o);let a=u(e.maxConsecutiveFailures);void 0!==a&&(i.maxConsecutiveFailures=a);let c=s(e.activeUntil);if(c){if(!p(c))throw Error(`Invalid execution.activeUntil timestamp: "${c}"`);i.activeUntil=new Date(c).toISOString()}return Object.keys(i).length>0?i:void 0}(e.execution),g=function(t){let e=l(t);if("prompt_job"!==e.type&&"execution_graph"!==e.type)throw Error('Automation target.type must be "prompt_job" or "execution_graph".');return"execution_graph"===e.type?function(t){let e=l(t),i=s(e.graphId),r=s(e.taskId),n=function(t){if(!Array.isArray(t))return;let e=t.map(t=>s(t)).filter(t=>!!t);return e.length>0?e:void 0}(e.resetNodeIds),o=s(e.rootMessageId);if(!i&&!r)throw Error("Execution-graph target requires graphId or taskId.");return{type:"execution_graph",...i?{graphId:i}:{},...r?{taskId:r}:{},...n?{resetNodeIds:n}:{},...o?{rootMessageId:o}:{}}}(e):function(t){let e=l(t),i={type:"prompt_job"},r=s(e.agentId),n=s(e.provider),o=s(e.model),a=s(e.cliArgs),c="string"==typeof e.prompt&&e.prompt.length>0?e.prompt:void 0,d="string"==typeof e.scriptPrompt&&e.scriptPrompt.length>0?e.scriptPrompt:void 0,u=s(e.teamId),p=s(e.objectiveId),f=s(e.objectiveKey),h=s(e.executionMode);if(!n&&!r&&!u)throw Error("Prompt-job target requires provider, agentId, or teamId.");if(h&&"prompt"!==h&&"objective_worker"!==h&&"linear_worker"!==h)throw Error('Prompt-job target.executionMode must be "prompt", "objective_worker", or "linear_worker".');return r&&(i.agentId=r),n&&(i.provider=n),o&&(i.model=o),void 0!==a&&(i.cliArgs=a),void 0!==c&&(i.prompt=c),void 0!==d&&(i.scriptPrompt=d),u&&(i.teamId=u),p&&(i.objectiveId=p),f&&(i.objectiveKey=f),("prompt"===h||"objective_worker"===h||"linear_worker"===h)&&(i.executionMode=h),i}(e)}(e.target);if("prompt_job"===g.type){if(!m({id:i,name:n,description:o,projectId:a,state:f(e.state),trigger:y,execution:v,target:g,createdAt:c,body:d}))throw Error("Prompt-job automation requires prompt text in body or target.prompt.");if((v?.cancelCheckSec??5)<1)throw Error("Prompt-job execution.cancelCheckSec must be >= 1.")}return{id:i,name:n,...o?{description:o}:{},...a?{projectId:a}:{},state:f(e.state),trigger:y,...v?{execution:v}:{},target:g,...c?{createdAt:new Date(c).toISOString()}:{},body:d}}function v(t){return{overlapPolicy:t.execution?.overlapPolicy??c,catchUpPolicy:t.execution?.catchUpPolicy??d,cancelCheckSec:t.execution?.cancelCheckSec??5,...t.execution??{}}}t.s(["DEFAULT_CANCEL_CHECK_SEC",0,5,"DEFAULT_CATCH_UP_POLICY",0,d,"DEFAULT_CONDITION_CHECK_EVERY_MS",0,3e5,"DEFAULT_GRAPH_INTERVAL_MS",0,6e4,"DEFAULT_OVERLAP_POLICY",0,c],862411);var g=t.i(180228);let x=/^---\s*\n([\s\S]*?)\n---\s*(?:\n([\s\S]*))?$/;var A=t.i(254799),S=t.i(522734),I=t.i(446786),E=t.i(814747);function $(){let t,e=process.env.AGX_AUTOMATIONS_DIR?.trim();return e?E.default.resolve(e):E.default.join((t=process.env.AGX_DATA_DIR?.trim())?E.default.resolve(t):E.default.join((0,I.homedir)(),".agx"),"automations")}function D(t){return`${encodeURIComponent(t)}.md`}function P(t,i,r=Date.now()){let n,o=(n=function t(e){if(Array.isArray(e))return e.map(e=>t(e));if(!e||"object"!=typeof e)return e;let i={};for(let r of Object.keys(e).sort())i[r]=t(e[r]);return i}({state:t.state,trigger:t.trigger,execution:{overlapPolicy:t.execution?.overlapPolicy,catchUpPolicy:t.execution?.catchUpPolicy,maxRuns:t.execution?.maxRuns,maxConsecutiveFailures:t.execution?.maxConsecutiveFailures,activeUntil:t.execution?.activeUntil}}),(0,A.createHash)("sha256").update(JSON.stringify(n)).digest("hex")),a=i?.scheduleHash!==o||i?.nextRunAt===void 0?function(t,i=Date.now()){if("active"!==t.state)return null;if("condition"===t.trigger.type)return i+t.trigger.checkEveryMs;if(void 0!==t.trigger.intervalMs)return i+t.trigger.intervalMs;if(!t.trigger.cronExpr)return i+6e4;var r=t.trigger.cronExpr;try{return e.CronExpressionParser.parse(r,{currentDate:new Date(i)}).next().toDate().getTime()}catch{return null}}(t,r):i.nextRunAt??null;return{scheduleHash:o,nextRunAt:a,lastRunAt:i?.lastRunAt??null,lastOutcome:i?.lastOutcome??null,lastError:i?.lastError??null,updatedAt:i?.updatedAt??new Date(r).toISOString(),...i?.runCount!==void 0?{runCount:i.runCount}:{},...i?.consecutiveFailures!==void 0?{consecutiveFailures:i.consecutiveFailures}:{},...i?.tickInProgress!==void 0?{tickInProgress:i.tickInProgress}:{},...i?.archivedAt!==void 0?{archivedAt:i.archivedAt}:{}}}function j(t,e,i,r=Date.now()){return{...P(t,{...e??{},...i},r),updatedAt:i.updatedAt??new Date(r).toISOString()}}function w(t,e){let i=process.env[t]?.trim().toLowerCase();return i?!["0","false","off","no"].includes(i):e}function C(t){let e={...t};for(let[t,i]of Object.entries(e))void 0===i&&delete e[t];return e}function b(t){return JSON.parse(JSON.stringify(t))}class M{rootDir;activeDir;archivedDir;stateDir;constructor(t=$()){this.rootDir=E.default.resolve(t),this.activeDir=E.default.join(this.rootDir,"active"),this.archivedDir=E.default.join(this.rootDir,"archived"),this.stateDir=E.default.join(this.rootDir,".state"),this.ensureDirs(),this.migrateLegacyRepoStateIfNeeded()}getAutomation(t){let e=this.findAutomationLocation(t);return e?this.readAutomationFile(e.filePath,e.archived):null}listAutomations(t=!1){let e=new Map;for(let{filePath:i,archived:r}of this.listMarkdownFiles(t)){let t=this.readAutomationFile(i,r);if(t){if(e.has(t.definition.id)){console.error(`[automations] duplicate automation id detected: ${t.definition.id}`);continue}e.set(t.definition.id,t)}}return[...e.values()].sort((t,e)=>{let i=Date.parse(t.runtimeState.updatedAt||t.definition.createdAt||"")||0;return(Date.parse(e.runtimeState.updatedAt||e.definition.createdAt||"")||0)-i})}listVisibleAutomations(t={}){return this.listAutomations(t.includeArchived??!1).filter(e=>(!t.state||e.definition.state===t.state)&&(!t.targetType||e.definition.target.type===t.targetType)&&(!t.projectId||e.definition.projectId===t.projectId)&&(!t.ids||!!t.ids.includes(e.definition.id))&&(!t.graphId||"execution_graph"===e.definition.target.type&&e.definition.target.graphId===t.graphId)&&(!t.taskId||"execution_graph"===e.definition.target.type&&e.definition.target.taskId===t.taskId)&&(!t.rootMessageId||"execution_graph"===e.definition.target.type&&e.definition.target.rootMessageId===t.rootMessageId)&&!0)}listDueAutomations(t=Date.now(),e={}){return this.listVisibleAutomations({...e,includeArchived:!1,state:"active"}).map(e=>{let i=this.ensureRuntimeState(e);return i&&function(t,e,i=Date.now()){return"active"===t.state&&!e.tickInProgress&&null!==e.nextRunAt&&void 0!==e.nextRunAt&&e.nextRunAt<=i}(i.definition,i.runtimeState,t)?i:null}).filter(t=>!!t).sort((t,e)=>(t.runtimeState.nextRunAt??0)-(e.runtimeState.nextRunAt??0))}createAutomation(t){if(this.findAutomationLocation(t.id))throw Error(`Automation ${t.id} already exists.`);return this.writeAutomation(y(t),!1)}upsertAutomation(t){let e=y(t),i=this.findAutomationLocation(e.id);return this.writeAutomation(e,i?.archived??!1)}updateAutomation(t,e){let i=this.getAutomation(t);if(!i)return null;let r=this.applyPatch(i.definition,e);return this.writeAutomation(r,i.archived,i.runtimeState)}updateAutomationState(t,e){let i=this.getAutomation(t);if(!i)return null;let r=j(i.definition,i.runtimeState,e);return this.writeStateFile(t,r),{...i,runtimeState:r}}archiveAutomation(t){let e=this.getAutomation(t);if(!e||e.archived)return e;let i=E.default.join(this.archivedDir,D(t));S.default.renameSync(e.filePath,i);let r=j(e.definition,e.runtimeState,{archivedAt:new Date().toISOString()});return this.writeStateFile(t,r),{...e,runtimeState:r,filePath:i,archived:!0}}restoreAutomation(t){let e=this.getAutomation(t);if(!e||!e.archived)return e;let i=E.default.join(this.activeDir,D(t));S.default.renameSync(e.filePath,i);let r=j(e.definition,e.runtimeState,{archivedAt:null});return this.writeStateFile(t,r),{...e,runtimeState:r,filePath:i,archived:!1}}duplicateAutomation(t){let e=this.getAutomation(t);if(!e)return null;let i=`${e.definition.id}-copy-${(0,A.randomUUID)().slice(0,8)}`;return this.createAutomation({...b(e.definition),id:i,name:`${e.definition.name} Copy`,createdAt:new Date().toISOString(),state:"paused"})}deleteAutomation(t){let e=this.findAutomationLocation(t);return!!e&&(S.default.rmSync(e.filePath,{force:!0}),S.default.rmSync(this.getStatePath(t),{force:!0}),!0)}ensureDirs(){S.default.mkdirSync(this.activeDir,{recursive:!0}),S.default.mkdirSync(this.archivedDir,{recursive:!0}),S.default.mkdirSync(this.stateDir,{recursive:!0})}migrateLegacyRepoStateIfNeeded(){let t,e=E.default.resolve(process.cwd(),"state","automations");if(E.default.resolve(e)===this.rootDir)return;let i=E.default.join(e,"active"),r=E.default.join(e,"archived"),n=E.default.join(e,".state");!(![i,r,n].some(t=>S.default.existsSync(t)&&S.default.readdirSync(t).length>0)||this.hasStoredAutomationState())&&(t=0+this.copyDirContents(i,this.activeDir)+this.copyDirContents(r,this.archivedDir)+this.copyDirContents(n,this.stateDir))>0&&console.log(`[automations] migrated ${t} legacy file(s) from ${e} to ${this.rootDir}`)}hasStoredAutomationState(){return[this.activeDir,this.archivedDir,this.stateDir].some(t=>S.default.existsSync(t)&&S.default.readdirSync(t).length>0)}copyDirContents(t,e){if(!S.default.existsSync(t))return 0;S.default.mkdirSync(e,{recursive:!0});let i=0;for(let r of S.default.readdirSync(t,{withFileTypes:!0})){let n=E.default.join(t,r.name),o=E.default.join(e,r.name);if(r.isDirectory()){i+=this.copyDirContents(n,o);continue}S.default.existsSync(o)||(S.default.copyFileSync(n,o),i+=1)}return i}listMarkdownFiles(t){return[...S.default.existsSync(this.activeDir)?S.default.readdirSync(this.activeDir).filter(t=>t.endsWith(".md")).map(t=>({filePath:E.default.join(this.activeDir,t),archived:!1})):[],...t&&S.default.existsSync(this.archivedDir)?S.default.readdirSync(this.archivedDir).filter(t=>t.endsWith(".md")).map(t=>({filePath:E.default.join(this.archivedDir,t),archived:!0})):[]]}findAutomationLocation(t){let e=E.default.join(this.activeDir,D(t));if(S.default.existsSync(e))return{filePath:e,archived:!1};let i=E.default.join(this.archivedDir,D(t));return S.default.existsSync(i)?{filePath:i,archived:!0}:null}readAutomationFile(t,e){try{let i=S.default.readFileSync(t,"utf8"),r=function(t,e={}){var i;let r=t.match(x);if(!r)throw Error(`Automation file is missing YAML frontmatter${e.filePath?` (${e.filePath})`:""}.`);let[,n,o=""]=r;return y({...!(i=(0,g.load)(n,{...e.filePath?{filename:e.filePath}:{}}))||"object"!=typeof i||Array.isArray(i)?{}:i,body:o})}(i,{filePath:t}),n=this.readStateFile(r);return{definition:r,runtimeState:n,filePath:t,archived:e}}catch(e){return console.error(`[automations] failed to read ${t}:`,e),null}}readStateFile(t){let e,i=this.getStatePath(t.id);if(S.default.existsSync(i))try{e=JSON.parse(S.default.readFileSync(i,"utf8"))}catch(e){console.error(`[automations] failed to parse state for ${t.id}:`,e)}let r=P(t,e);return e&&e.scheduleHash===r.scheduleHash&&e.nextRunAt===r.nextRunAt||this.writeStateFile(t.id,r),r}writeStateFile(t,e){S.default.writeFileSync(this.getStatePath(t),`${JSON.stringify(e,null,2)}
2
+ `,"utf8")}writeAutomation(t,e,i){let r,n,o,a,s,u,l=y(t),p=new Date().toISOString(),f=E.default.join(e?this.archivedDir:this.activeDir,D(l.id));S.default.writeFileSync(f,(r=v(l),n=m(l),o="string"==typeof l.body?l.body:"",a={...l.target},"prompt_job"===l.target.type&&"string"==typeof a.prompt&&o.trim().length>0&&a.prompt===n&&delete a.prompt,s=function t(e){if(Array.isArray(e))return e.map(e=>t(e));if(!e||"object"!=typeof e)return e;let i={};for(let[r,n]of Object.entries(e)){let e=t(n);null!=e&&""!==e&&(!e||"object"!=typeof e||Array.isArray(e)||0!==Object.keys(e).length)&&(i[r]=e)}return Object.keys(i).length>0?i:void 0}({id:l.id,name:l.name,description:l.description,projectId:l.projectId,state:l.state,trigger:l.trigger,execution:{...r.overlapPolicy!==c?{overlapPolicy:r.overlapPolicy}:{},...r.catchUpPolicy!==d?{catchUpPolicy:r.catchUpPolicy}:{},...5!==r.cancelCheckSec?{cancelCheckSec:r.cancelCheckSec}:{},...l.execution?.condition?{condition:l.execution.condition}:{},...l.execution?.maxRuns!==void 0?{maxRuns:l.execution.maxRuns}:{},...l.execution?.maxConsecutiveFailures!==void 0?{maxConsecutiveFailures:l.execution.maxConsecutiveFailures}:{},...l.execution?.activeUntil?{activeUntil:l.execution.activeUntil}:{}},target:a,createdAt:l.createdAt}),u=(0,g.dump)(s,{lineWidth:120,noRefs:!0,sortKeys:!1}).trimEnd(),o.length>0?`---
3
+ ${u}
4
+ ---
5
+ ${o}`:`---
6
+ ${u}
7
+ ---
8
+ `),"utf8");let h=P(l,{...i??{},updatedAt:p});return this.writeStateFile(l.id,h),{definition:l,runtimeState:h,filePath:f,archived:e}}ensureRuntimeState(t){let e=P(t.definition,t.runtimeState);return e.scheduleHash===t.runtimeState.scheduleHash&&e.nextRunAt===t.runtimeState.nextRunAt?t:(this.writeStateFile(t.definition.id,e),{...t,runtimeState:e})}applyPatch(t,e){let i=b(t);return void 0!==e.name&&(i.name=e.name),void 0!==e.description&&(i.description=e.description??void 0),void 0!==e.projectId&&(i.projectId=e.projectId??void 0),void 0!==e.state&&(i.state=e.state),void 0!==e.createdAt&&(i.createdAt=e.createdAt),void 0!==e.body&&(i.body=e.body),e.trigger&&(i.trigger=C({...i.trigger,...e.trigger})),void 0!==e.execution&&(i.execution=null===e.execution?void 0:C({...i.execution??{},...e.execution})),e.target&&(i.target=C({...i.target,...e.target})),y(i)}getStatePath(t){return E.default.join(this.stateDir,`${encodeURIComponent(t)}.json`)}}let k=null,R=null;t.s(["getAutomationRepository",0,function(){let t=$();return k&&R===t||(k=new M(t),R=t),k},"isAutomationDualReadEnabled",0,function(){return w("AGX_AUTOMATIONS_DUAL_READ_ENABLED",!0)},"isAutomationFrontmatterEnabled",0,function(){return w("AGX_AUTOMATIONS_FRONTMATTER_ENABLED",!0)}],774553);let _="prompt";function F(t){let i=t.trim();if(!i)return null;let c=function(t){let e=t.trim();if(/^[\d*\/,-]+\s+[\d*\/,-]+\s+[\d*\/,-]+\s+[\d*\/,-]+\s+[\d*\/,-]+$/.test(e))return{cronExpr:e,cadence:function(t){let e=t.trim().split(/\s+/);if(5!==e.length)return;let[i,r,c,d,s]=e;if("*"===i&&"*"===r&&"*"===c&&"*"===d&&"*"===s)return"Every minute";if(/^\*\/\d+$/.test(i)&&"*"===r&&"*"===c&&"*"===d&&"*"===s)return`Every ${i.slice(2)} minutes`;if(/^\d+$/.test(i)&&"*"===r&&"*"===c&&"*"===d&&"*"===s){let t=parseInt(i);return 0===t?"Every hour":`${a(t)} every hour`}if(/^\d+$/.test(i)&&/^\*\/\d+$/.test(r)&&"*"===c&&"*"===d&&"*"===s){let t=parseInt(i);return 0===t?`Every ${r.slice(2)} hours`:`${a(t)} every ${r.slice(2)} hours`}if(/^\d+$/.test(i)&&/^\d+$/.test(r)&&"*"===c&&"*"===d&&"*"===s){let t=parseInt(r),e=parseInt(i);return 0===t&&0===e?"Daily at midnight":12===t&&0===e?"Daily at noon":`Daily at ${o(t,e)}`}if(/^\d+$/.test(i)&&/^\d+$/.test(r)&&"*"===c&&"*"===d&&"1-5"===s){let t=parseInt(r),e=parseInt(i);return`Weekdays at ${o(t,e)}`}if(/^\d+$/.test(i)&&/^\d+$/.test(r)&&"*"===c&&"*"===d&&/^\d$/.test(s)){let t=parseInt(r),e=parseInt(i),a=n[parseInt(s)]||s;return`${a}s at ${o(t,e)}`}if(/^\d+$/.test(i)&&/^\d+$/.test(r)&&/^\*\/\d+$/.test(c)&&"*"===d&&"*"===s)return`Every ${c.slice(2)} days`}(e)||e};let i=r(e);if(i)return{cronExpr:i.cronExpr,cadence:i.cadence}}(i);return c?{cronExpr:c.cronExpr,cadence:c.cadence}:!function(t){if(5!==t.split(/\s+/).length)return!1;try{return e.CronExpressionParser.parse(t),!0}catch{return!1}}(i)?null:{cronExpr:i,cadence:i}}function U(t){let e=Math.max(6e4,t);if(e<36e5){let t=Math.max(1,Math.ceil(e/6e4));return`Every ${t} minute${1===t?"":"s"}`}if(e<864e5){let t=Math.max(1,Math.ceil(e/36e5));return`Every ${t} hour${1===t?"":"s"}`}let i=Math.max(1,Math.ceil(e/864e5));return`Every ${i} day${1===i?"":"s"}`}function O(t){let e=Math.max(6e4,t),i=F(U(e));return i?{cadence:i.cadence,cronExpr:i.cronExpr,intervalMs:e}:{cadence:"Every hour",cronExpr:"0 * * * *",intervalMs:36e5}}function T(t){return{id:t.id,name:t.name,...t.projectId?{projectId:t.projectId}:{},state:t.state,trigger:{type:"scheduled",...t.cadence?{cadence:t.cadence}:{},...t.cronExpr?{cronExpr:t.cronExpr}:{}},execution:{overlapPolicy:t.overlapPolicy,catchUpPolicy:t.catchUpPolicy,cancelCheckSec:t.cancelCheckSec,...t.condition?{condition:t.condition}:{}},target:{type:"prompt_job",...t.agentId?{agentId:t.agentId}:{},...t.provider?{provider:t.provider}:{},...t.model?{model:t.model}:{},...t.cliArgs?{cliArgs:t.cliArgs}:{},...t.objectiveId?{objectiveId:t.objectiveId}:{},...t.objectiveKey?{objectiveKey:t.objectiveKey}:{},...t.executionMode!==_?{executionMode:t.executionMode}:{},...t.scriptPrompt?{scriptPrompt:t.scriptPrompt}:{},...t.teamId?{teamId:t.teamId}:{}},createdAt:t.createdAt,body:t.prompt}}t.s(["DEFAULT_PROMPT_JOB_EXECUTION_MODE",0,_],821083),t.s(["computeNextRun",0,function(t,i){try{return e.CronExpressionParser.parse(t,{currentDate:i?new Date(i):new Date}).next().toDate().getTime()}catch{return null}},"formatIntervalCadence",0,U,"normalizeLegacyConditionSchedule",0,O,"parseCadence",0,F],214870),t.s(["automationRecordToGraphSchedule",0,function(t,e={}){if("execution_graph"!==t.definition.target.type)throw Error(`Automation ${t.definition.id} is not a graph automation.`);let i=t.definition.trigger,r=t.definition.execution;return{intervalMs:"condition"===i.type?i.checkEveryMs:i.intervalMs??e.intervalMs??6e4,..."scheduled"===i.type&&i.cronExpr?{cronExpr:i.cronExpr}:{},..."scheduled"===i.type&&i.cadence?{cadence:i.cadence}:{},..."condition"===i.type?{cadence:i.condition}:{},state:t.definition.state,resetNodeIds:t.definition.target.resetNodeIds??e.resetNodeIds??[],...r?.maxRuns!==void 0?{maxRuns:r.maxRuns}:{},runCount:t.runtimeState.runCount??e.runCount??0,...null!==t.runtimeState.lastRunAt&&void 0!==t.runtimeState.lastRunAt?{lastTickAt:t.runtimeState.lastRunAt}:void 0!==e.lastTickAt?{lastTickAt:e.lastTickAt}:{},...null!==t.runtimeState.nextRunAt&&void 0!==t.runtimeState.nextRunAt?{nextTickAt:t.runtimeState.nextRunAt}:void 0!==e.nextTickAt?{nextTickAt:e.nextTickAt}:{},tickInProgress:t.runtimeState.tickInProgress??e.tickInProgress??!1,createdAt:t.definition.createdAt??e.createdAt??new Date().toISOString(),...r?.activeUntil?{activeUntil:r.activeUntil}:{},...t.definition.target.rootMessageId?{rootMessageId:t.definition.target.rootMessageId}:e.rootMessageId?{rootMessageId:e.rootMessageId}:{},...void 0!==t.runtimeState.consecutiveFailures?{consecutiveFailures:t.runtimeState.consecutiveFailures}:void 0!==e.consecutiveFailures?{consecutiveFailures:e.consecutiveFailures}:{},...r?.maxConsecutiveFailures!==void 0?{maxConsecutiveFailures:r.maxConsecutiveFailures}:void 0!==e.maxConsecutiveFailures?{maxConsecutiveFailures:e.maxConsecutiveFailures}:{},name:t.definition.name,...t.definition.description?{description:t.definition.description}:{}}},"automationRecordToPromptJob",0,function(t){if("prompt_job"!==t.definition.target.type)throw Error(`Automation ${t.definition.id} is not a prompt-job automation.`);let e=t.definition.trigger,i=v(t.definition),r=m(t.definition)??"",n="condition"===e.type?O(e.checkEveryMs):null;return{id:t.definition.id,name:t.definition.name,prompt:r,agentId:t.definition.target.agentId??"",projectId:t.definition.projectId??"",objectiveId:t.definition.target.objectiveId??null,objectiveKey:t.definition.target.objectiveKey??null,provider:t.definition.target.provider??"claude",model:t.definition.target.model??"",cliArgs:t.definition.target.cliArgs??"",cronExpr:"scheduled"===e.type?e.cronExpr??"":n?.cronExpr??"",cadence:"scheduled"===e.type?e.cadence??e.cronExpr??"":n?.cadence??U(e.checkEveryMs),state:t.definition.state,overlapPolicy:i.overlapPolicy,catchUpPolicy:i.catchUpPolicy,cancelCheckSec:i.cancelCheckSec,executionMode:t.definition.target.executionMode??_,scriptPrompt:t.definition.target.scriptPrompt??"",teamId:t.definition.target.teamId??"",builtIn:!0===t.definition.target.builtIn||"objective_worker"===t.definition.target.executionMode||"linear_worker"===t.definition.target.executionMode,condition:i.condition??("condition"===e.type?e.condition:""),nextRunAt:t.runtimeState.nextRunAt??null,lastRunAt:t.runtimeState.lastRunAt??null,lastOutcome:t.runtimeState.lastOutcome??null,createdAt:t.definition.createdAt??t.runtimeState.updatedAt,updatedAt:t.runtimeState.updatedAt}},"graphAutomationToDefinition",0,function(t){let{schedule:e}=t,i=e.cronExpr||e.cadence?{type:"scheduled",...e.cadence?{cadence:e.cadence}:{},...e.cronExpr?{cronExpr:e.cronExpr}:{}}:{type:"scheduled",cadence:U(e.intervalMs),intervalMs:e.intervalMs};return{id:t.graphId,name:e.name?.trim()||t.graphId,...e.description?{description:e.description}:{},state:e.state,trigger:i,execution:{overlapPolicy:c,catchUpPolicy:d,cancelCheckSec:5,...void 0!==e.maxRuns?{maxRuns:e.maxRuns}:{},...void 0!==e.maxConsecutiveFailures?{maxConsecutiveFailures:e.maxConsecutiveFailures}:{},...e.activeUntil?{activeUntil:e.activeUntil}:{}},target:{type:"execution_graph",graphId:t.graphId,taskId:t.taskId,resetNodeIds:e.resetNodeIds,...e.rootMessageId?{rootMessageId:e.rootMessageId}:{}},createdAt:e.createdAt||t.createdAt,body:""}},"promptJobToAutomationDefinition",0,T,"promptJobToAutomationRuntimeState",0,function(t){return P(T(t),{nextRunAt:t.nextRunAt,lastRunAt:t.lastRunAt,lastOutcome:t.lastOutcome,updatedAt:t.updatedAt})}],356942),t.s([],219233)}];
9
+
10
+ //# sourceMappingURL=apps_local_src_automations_index_ts_0_8ch28._.js.map
@@ -0,0 +1,41 @@
1
+ module.exports=[83997,e=>{"use strict";var t=e.i(633211),r=e.i(801243);e.i(219233);var o=e.i(356942),i=e.i(774553);let s=new Set(["replan","rollback"]);class n extends Error{constructor(e){super(`Execution graph not found: ${e}`),this.name="GraphNotFoundError"}}class d extends Error{nodeIds;constructor(e,t){super(`Execution graph ${e} is missing node(s): ${t.join(", ")}`),this.name="GraphNodeNotFoundError",this.nodeIds=t}}class a extends Error{taskId;existingGraphId;constructor(e,t){super(`Task ${e} is already bound to execution graph ${t}.`),this.name="GraphTaskAlreadyBoundError",this.taskId=e,this.existingGraphId=t}}function u(e){return null==e?null:JSON.stringify(e)}function l(e){if(null==e)return null;if("string"==typeof e)try{return JSON.parse(e)}catch{}return e}function c(e){let t=Date.parse(e);return Number.isNaN(t)?e:new Date(t).toISOString()}function p(e){return!e||"object"!=typeof e||Array.isArray(e)?{}:e}function h(e){if(!(0,i.isAutomationFrontmatterEnabled)()||!e.schedule)return;let t=(0,i.getAutomationRepository)(),r=(0,o.graphAutomationToDefinition)({graphId:e.id,taskId:e.taskId,schedule:e.schedule,createdAt:e.createdAt,updatedAt:e.updatedAt,executionState:e.executionState});t.upsertAutomation(r),t.updateAutomationState(e.id,{nextRunAt:e.schedule.nextTickAt,lastRunAt:e.schedule.lastTickAt,updatedAt:e.updatedAt,runCount:e.schedule.runCount,consecutiveFailures:e.schedule.consecutiveFailures,tickInProgress:e.schedule.tickInProgress})}function g(e){let{type:t,status:r,metrics:o,output:i,...s}=e;return{type:t,status:r,config:s,output:i??null,metrics:o??null}}function f(e){return{query(t,r){let o=e.prepare(t);return/^\s*(INSERT|UPDATE|DELETE)/i.test(t)&&!/RETURNING/i.test(t)?(o.run(...(r??[]).map(e=>e)),{rows:[]}):{rows:o.all(...(r??[]).map(e=>e))}}}}class E{getDb(){return(0,t.getSQLiteDb)()}createGraph(e,t){let o=this.getDb(),i=f(o);t?.skipTaskBinding&&(0,r.pragmaSet)(o,"foreign_keys = OFF");try{return(0,r.transaction)(o,()=>{let r=i.query("SELECT id FROM execution_graphs WHERE task_id = ? LIMIT 1",[e.taskId]).rows[0];if(r&&r.id!==e.id)throw new a(e.taskId,r.id);for(let[t,r]of(i.query(`INSERT INTO execution_graphs
2
+ (id, task_id, graph_version, mode, policy, done_criteria, schedule, created_at, updated_at)
3
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
4
+ ON CONFLICT (id) DO UPDATE SET
5
+ task_id = excluded.task_id,
6
+ graph_version = excluded.graph_version,
7
+ mode = excluded.mode,
8
+ policy = excluded.policy,
9
+ done_criteria = excluded.done_criteria,
10
+ schedule = excluded.schedule,
11
+ created_at = excluded.created_at,
12
+ updated_at = excluded.updated_at`,[e.id,e.taskId,e.graphVersion,e.mode,u(e.policy),u(e.doneCriteria),u(e.schedule??null),e.createdAt,e.updatedAt]),i.query("DELETE FROM graph_nodes WHERE graph_id = ?",[e.id]),i.query("DELETE FROM graph_edges WHERE graph_id = ?",[e.id]),Object.entries(e.nodes))){let o=g(r);i.query(`INSERT INTO graph_nodes (graph_id, node_id, type, status, config, output, metrics)
13
+ VALUES (?, ?, ?, ?, ?, ?, ?)`,[e.id,t,o.type,o.status,u(o.config),u(o.output),u(o.metrics)])}for(let t of e.edges)i.query(`INSERT INTO graph_edges (graph_id, from_id, to_id, type, condition, data_mapping)
14
+ VALUES (?, ?, ?, ?, ?, ?)`,[e.id,t.from,t.to,t.type,t.condition??null,u(t.dataMapping??null)]);for(let t of e.versionHistory)this.appendEventInternal(i,e.id,t);for(let t of e.runtimeEvents??[])this.appendEventInternal(i,e.id,t);t?.skipTaskBinding||i.query("UPDATE tasks SET graph_id = ? WHERE id = ?",[e.id,e.taskId]);let o=this.getGraphForTask(i,e.taskId);if(!o)throw new n(e.id);return h(o),o})}finally{t?.skipTaskBinding&&(0,r.pragmaSet)(o,"foreign_keys = ON")}}getGraph(e){let t=this.getDb();return this.getGraphForTask(f(t),e)}updateNodeRuntime(e,t,o){let i=this.getDb(),s=f(i);return(0,r.transaction)(i,()=>{if(!s.query("SELECT id, graph_version FROM execution_graphs WHERE id = ?",[e]).rows[0])throw new n(e);let r=Object.keys(t);if(0===r.length){let t=s.query("SELECT graph_version, updated_at FROM execution_graphs WHERE id = ?",[e]);return{graphVersion:t.rows[0].graph_version,updatedAt:c(t.rows[0].updated_at)}}let o=r.map(()=>"?").join(", "),i=s.query(`SELECT node_id, type, status, config, output, metrics
15
+ FROM graph_nodes WHERE graph_id = ? AND node_id IN (${o})`,[e,...r]),a=new Map;for(let e of i.rows)a.set(e.node_id,e);let h=r.filter(e=>!a.has(e));if(h.length>0)throw new d(e,h);for(let o of r){let r=t[o],i=a.get(o);if(!i||!r)continue;let n={...p(l(i.config)),...p(r.configPatch)};void 0!==r.startedAt&&(n.startedAt=r.startedAt),void 0!==r.completedAt&&(n.completedAt=r.completedAt),void 0!==r.actualMinutes&&(n.actualMinutes=r.actualMinutes),s.query(`UPDATE graph_nodes SET status = ?, metrics = ?, output = ?, config = ?
16
+ WHERE graph_id = ? AND node_id = ?`,[r.status??i.status,u(r.metrics??l(i.metrics)),u(r.output??l(i.output)),u(n),e,o])}let g=s.query("UPDATE execution_graphs SET updated_at = datetime('now') WHERE id = ? RETURNING graph_version, updated_at",[e]);return{graphVersion:g.rows[0].graph_version,updatedAt:c(g.rows[0].updated_at)}})}updateGraphStructure(e,t,o){let i=this.getDb(),s=f(i);return(0,r.transaction)(i,()=>{let r=s.query("SELECT id, task_id, graph_version, mode, policy, done_criteria, schedule FROM execution_graphs WHERE id = ?",[e]).rows[0];if(!r)throw new n(e);if(t.nodes)for(let[r,o]of(s.query("DELETE FROM graph_nodes WHERE graph_id = ?",[e]),Object.entries(t.nodes))){let t=g(o);s.query(`INSERT INTO graph_nodes (graph_id, node_id, type, status, config, output, metrics)
17
+ VALUES (?, ?, ?, ?, ?, ?, ?)`,[e,r,t.type,t.status,u(t.config),u(t.output),u(t.metrics)])}if(t.edges)for(let r of(s.query("DELETE FROM graph_edges WHERE graph_id = ?",[e]),t.edges))s.query(`INSERT INTO graph_edges (graph_id, from_id, to_id, type, condition, data_mapping)
18
+ VALUES (?, ?, ?, ?, ?, ?)`,[e,r.from,r.to,r.type,r.condition??null,u(r.dataMapping??null)]);let o=s.query(`UPDATE execution_graphs
19
+ SET mode = ?, policy = ?, done_criteria = ?, schedule = ?, updated_at = datetime('now')
20
+ WHERE id = ?
21
+ RETURNING graph_version, updated_at`,[t.mode??r.mode,u(t.policy??l(r.policy)??{}),u(t.doneCriteria??l(r.done_criteria)??{}),u(t.schedule??l(r.schedule)??null),e]);if(void 0!==t.schedule){let e=this.getGraphForTask(s,r.task_id);e?.schedule&&h(e)}return{graphVersion:o.rows[0].graph_version,updatedAt:c(o.rows[0].updated_at)}})}appendEvent(e,t){let r=this.getDb();this.appendEventInternal(f(r),e,t)}getGraphForTask(e,t){let r=e.query(`SELECT id, task_id, graph_version, mode, execution_state, policy, done_criteria, schedule, created_at, updated_at
22
+ FROM execution_graphs WHERE task_id = ? ORDER BY updated_at DESC LIMIT 1`,[t]).rows[0];if(!r)return null;let n=e.query(`SELECT node_id, type, status, config, output, metrics
23
+ FROM graph_nodes WHERE graph_id = ? ORDER BY node_id ASC`,[r.id]),d=e.query(`SELECT from_id, to_id, type, condition, data_mapping
24
+ FROM graph_edges WHERE graph_id = ? ORDER BY from_id ASC, to_id ASC`,[r.id]),a=e.query(`SELECT event_type, payload, timestamp
25
+ FROM graph_events WHERE graph_id = ? ORDER BY timestamp ASC, event_type ASC`,[r.id]),u={};for(let e of n.rows)u[e.node_id]=function(e){let t={...p(l(e.config)),type:e.type,status:e.status},r=l(e.metrics);null!==r&&(t.metrics=r);let o=l(e.output);return null!==o&&(t.output=o),t}(e);let h=d.rows.map(e=>({from:e.from_id,to:e.to_id,type:e.type,...e.condition?{condition:l(e.condition)}:{},...e.data_mapping?{dataMapping:l(e.data_mapping)}:{}})),g=[],f=[];for(let e of a.rows){let t=function(e){let t={...p(l(e.payload))};return"eventType"in t||(t.eventType=e.event_type),"timestamp"in t||(t.timestamp=c(e.timestamp)),t}(e);s.has(t.eventType)?g.push(t):f.push(t)}var E={id:r.id,taskId:r.task_id,graphVersion:r.graph_version,mode:r.mode,executionState:r.execution_state??void 0,nodes:u,edges:h,policy:l(r.policy)??{},doneCriteria:l(r.done_criteria)??{},schedule:l(r.schedule)??void 0,versionHistory:g,runtimeEvents:f,createdAt:c(r.created_at),updatedAt:c(r.updated_at)};if(!(0,i.isAutomationFrontmatterEnabled)())return E;let _=(0,i.getAutomationRepository)().getAutomation(E.id);return _&&"execution_graph"===_.definition.target.type?{...E,schedule:(0,o.automationRecordToGraphSchedule)(_,E.schedule)}:E}appendEventInternal(e,t,r){e.query(`INSERT INTO graph_events (graph_id, event_type, payload, timestamp)
26
+ VALUES (?, ?, ?, ?)`,[t,r.eventType,u(r),r.timestamp])}}let _=new E;e.s(["GraphStore",0,E,"deactivateSchedulesByRootMessageId",0,function(e){let r=e.trim();if(!r)return 0;let o=0;if((0,i.isAutomationFrontmatterEnabled)()){for(let e of(0,i.getAutomationRepository)().listVisibleAutomations({targetType:"execution_graph",state:"active",rootMessageId:r})){if("execution_graph"!==e.definition.target.type)continue;let r=e.definition.target.graphId??e.definition.id,i=e.definition.target.taskId??function(e){let r=e.trim();if(!r)return null;let o=(0,t.getSQLiteDb)().prepare(`SELECT task_id AS taskId
27
+ FROM execution_graphs
28
+ WHERE id = ?
29
+ LIMIT 1`).get(r);return o?.taskId??null}(r);if(!i)continue;let s=_.getGraph(i);s?.schedule&&(_.updateGraphStructure(s.id,{mode:s.mode,nodes:s.nodes,edges:s.edges,policy:s.policy,doneCriteria:s.doneCriteria,schedule:{...s.schedule,state:"stopped",tickInProgress:!1}},s.graphVersion),o+=1)}if(o>0||!(0,i.isAutomationDualReadEnabled)())return o}return Number((0,t.getSQLiteDb)().prepare(`UPDATE execution_graphs
30
+ SET schedule = json_set(schedule, '$.state', 'stopped', '$.tickInProgress', json('false')),
31
+ updated_at = strftime('%Y-%m-%dT%H:%M:%fZ','now')
32
+ WHERE schedule IS NOT NULL
33
+ AND json_extract(schedule, '$.rootMessageId') = ?
34
+ AND json_extract(schedule, '$.state') = 'active'`).run(r).changes??0)}])},932177,e=>{"use strict";var t=e.i(923715);e.s(["completeScheduleTick",0,function(e){if(!e.schedule||!e.schedule.tickInProgress)return e;let r=e.schedule,o=r.nextTickAt;return r.cronExpr&&(o=(0,t.computeNextTickFromCron)(r.cronExpr)),{...e,schedule:{...r,tickInProgress:!1,nextTickAt:o}}},"isScheduleTickComplete",0,function(e){if(!e.schedule)return!0;let t=new Set(["done","passed","failed","skipped"]);for(let r of e.schedule.resetNodeIds){let o=e.nodes[r];if(o&&!t.has(o.status))return!1}return!0},"scheduleTickIfDue",0,function(e,t=Date.now()){let r=t=>({graph:e,tickFired:!1,resetNodeIds:[],skipReason:t});if(!e.schedule)return r("no_schedule");let o=e.schedule;if("active"!==o.state)return r("not_active");if(o.tickInProgress)return r("tick_in_progress");if(null!=o.maxRuns&&o.runCount>=o.maxRuns)return r("max_runs_reached");if(o.cronExpr&&"number"==typeof o.nextTickAt){if(t<o.nextTickAt)return r("not_due")}else if(t-(o.lastTickAt??0)<o.intervalMs)return r("not_due");let i=JSON.parse(JSON.stringify(e)),s=[];for(let e of o.resetNodeIds){let t=i.nodes[e];t&&("done"===t.status||"passed"===t.status||"failed"===t.status||"skipped"===t.status)&&(i.nodes[e]={...t,status:"pending",startedAt:void 0,completedAt:void 0,metrics:void 0,..."function"===t.type?{output:void 0}:{},..."conditional"===t.type?{evaluatedTo:void 0}:{}},s.push(e))}return i.schedule={...o,tickInProgress:!0,lastTickAt:t,runCount:o.runCount+1},{graph:i,tickFired:!0,resetNodeIds:s}}])},71966,e=>{"use strict";var t=e.i(633211);e.i(219233);var r=e.i(356942),o=e.i(774553),i=e.i(932177),s=e.i(923715),n=e.i(64985),d=e.i(83997);async function a(e={}){let u=new d.GraphStore,l={tickedGraphIds:[],skippedGraphIds:[],errors:[],pendingWork:[]},c=function(){let e=new Map,i=(0,t.getSQLiteDb)().prepare(`
35
+ SELECT task_id, id, schedule
36
+ FROM execution_graphs
37
+ WHERE schedule IS NOT NULL
38
+ AND json_extract(schedule, '$.state') = 'active'
39
+ `).all(),s=new Map(i.map(e=>[e.id,e]));if((0,o.isAutomationFrontmatterEnabled)()){for(let t of(0,o.getAutomationRepository)().listVisibleAutomations({targetType:"execution_graph",state:"active"})){if("execution_graph"!==t.definition.target.type)continue;let o=t.definition.target.graphId??t.definition.id,i=t.definition.target.taskId??s.get(o)?.task_id??o;e.set(o,{taskId:i,graphId:o,schedule:(0,r.automationRecordToGraphSchedule)(t,s.get(o)?JSON.parse(s.get(o).schedule):void 0)})}if(!(0,o.isAutomationDualReadEnabled)())return[...e.values()]}for(let t of i)e.has(t.id)||e.set(t.id,{taskId:t.task_id,graphId:t.id,schedule:JSON.parse(t.schedule)});return[...e.values()]}();for(let{taskId:t}of(console.log(`[schedules:poll] found ${c.length} active schedule(s)`),c))try{let r=u.getGraph(t);if(!r){l.errors.push({graphId:t,error:Error("Graph not found")});continue}let o=(0,i.scheduleTickIfDue)(r);if(!o.tickFired){console.log(`[schedules:poll] ${t} skipped (${o.skipReason??"unknown"})`),l.skippedGraphIds.push(t);continue}console.log(`[schedules:poll] ${t} tick fired — resetting nodes`),u.updateGraphStructure(o.graph.id,{nodes:o.graph.nodes,schedule:o.graph.schedule});let d=(0,s.schedulerTick)(o.graph,e);console.log(`[schedules:poll] ${t} scheduler: fn=${d.functionToRun.length} work=${d.workToRun.length}`);let a=d.graph;for(let r of d.functionToRun){let o=a.nodes[r];if(o&&"function"===o.type)try{console.log(`[schedules:poll] ${t} executing function node "${r}"`);let o=await (0,n.executeNode)(a,r,e),i=o.graph.nodes[r];console.log(`[schedules:poll] ${t} function "${r}" → ${i?.status}`,i&&"output"in i?JSON.stringify(i.output)?.slice(0,200):""),a=o.graph}catch(e){console.error(`[schedules:poll] ${t} function "${r}" error:`,e),l.errors.push({graphId:t,error:e instanceof Error?e:Error(String(e))})}}u.updateGraphStructure(a.id,{nodes:a.nodes});let c=(0,s.schedulerTick)(a,e);for(let r of(console.log(`[schedules:poll] ${t} post-fn scheduler: cond=${c.control.conditionalNodeIds.length} work=${c.workToRun.length}`),a=c.graph,c.workToRun)){let o=a.nodes[r];if(o&&"work"===o.type)try{a=(await (0,n.executeNode)(a,r,e)).graph}catch(e){l.errors.push({graphId:t,error:e instanceof Error?e:Error(String(e))})}}if(c.workToRun.length>0){l.pendingWork.push({taskId:t,nodeIds:c.workToRun,graph:a}),u.updateGraphStructure(a.id,{nodes:a.nodes});let r=(0,s.schedulerTick)(a,e);for(let o of(console.log(`[schedules:poll] ${t} post-work scheduler: fn=${r.functionToRun.length} cond=${r.control.conditionalNodeIds.length}`),a=r.graph,r.functionToRun)){let r=a.nodes[o];if(r&&"function"===r.type)try{console.log(`[schedules:poll] ${t} executing post-work function "${o}"`),a=(await (0,n.executeNode)(a,o,e)).graph}catch(e){console.error(`[schedules:poll] ${t} post-work function "${o}" error:`,e),l.errors.push({graphId:t,error:e instanceof Error?e:Error(String(e))})}}}u.updateGraphStructure(a.id,{nodes:a.nodes});let p=Object.entries(a.nodes).map(([e,t])=>`${e}:${t.status}`).join(", ");console.log(`[schedules:poll] ${t} node states: ${p}`);let h=(0,i.isScheduleTickComplete)(a);if(console.log(`[schedules:poll] ${t} tick complete? ${h}`),h){let e=(0,i.completeScheduleTick)(a),r=e.schedule?.resetNodeIds.some(t=>e.nodes[t]?.status==="failed");if(e.schedule){let t=e.schedule.consecutiveFailures??0,o=r?t+1:0;e.schedule={...e.schedule,consecutiveFailures:o};let i=e.schedule.maxConsecutiveFailures;null!=i&&o>=i&&(e.schedule={...e.schedule,state:"paused"})}let o=u.getGraph(t);o?.schedule?.state==="stopped"&&(console.log(`[schedules:poll] ${t} schedule was stopped mid-tick, preserving stopped state`),e.schedule={...e.schedule,state:"stopped"}),u.updateGraphStructure(e.id,{nodes:e.nodes,schedule:e.schedule})}l.tickedGraphIds.push(t)}catch(e){console.error(`[schedules:poll] ${t} caught error:`,e),l.errors.push({graphId:t,error:e instanceof Error?e:Error(String(e))});try{let e=u.getGraph(t);if(e?.schedule?.tickInProgress){let r=(0,i.completeScheduleTick)(e);u.updateGraphStructure(r.id,{nodes:r.nodes,schedule:r.schedule}),console.log(`[schedules:poll] ${t} force-completed stuck tick`)}}catch{}}return l}e.s(["pollSchedules",0,a])}];
40
+
41
+ //# sourceMappingURL=apps_local_src_graph_082u-ls._.js.map
@@ -0,0 +1,4 @@
1
+ module.exports=[720395,e=>{"use strict";var t=e.i(84516),r=e.i(858015),o=e.i(11061),s=e.i(124985);e.i(243174);var i=e.i(248821),n=e.i(901977);let a="project_objective_health_history",c={"on track":"on_track","at risk":"at_risk","off track":"off_track",done:"done"};function u(e){return!!e&&"object"==typeof e&&!Array.isArray(e)}function l(e){return"number"==typeof e&&Number.isFinite(e)?Math.max(0,Math.min(100,Math.round(e))):0}function d(e){return"string"==typeof e&&e.trim()?e.trim():void 0}function p(...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 j=e.i(460275),b=e.i(765443);let f={on_track:"On track",at_risk:"At risk",off_track:"Off track",done:"Done"};async function g(e){let t=Date.now(),r="";try{return await (0,j.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 m(e){try{let t=JSON.parse(e);return t&&"object"==typeof t&&!Array.isArray(t)?t:null}catch{return null}}function v(e){return"number"==typeof e&&Number.isFinite(e)?(0,b.normalizeProjectHealthProgress)(e):null}function h(e){return"string"==typeof e&&e.trim()?(0,b.normalizeProjectHealthStatus)(e):null}function y(e,t,r){return`${e}: ${t}% ${f[r]}`}function k(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 w(e){let{job:n,objectiveContext:a}=e,{project:c,workspace:u,objective:l}=a,d=c.slug??c.id,[{issues:p},j,b,f]=await Promise.all([(0,r.listObjectiveLinearIssues)({objectiveKey:l.key,projectSlug:d,refresh:!0}),(0,o.getIssueActiveAgents)(c.id),Promise.resolve((0,s.getActivityRepository)(d,l.key).list({limit:20})),Promise.resolve((0,i.getNoteRepository)(d,l.key).readAll())]),g=new Set(p.map(e=>e.id)),m=j.filter(e=>g.has(e.issueId)),v=(0,r.filterObjectiveLinearIssuesForAction)(p,m.map(e=>e.issueId)),h=(0,t.getPromptJobStore)().listJobs({objectiveId:l.id}).filter(e=>e.id!==n.id),y=u.objectives.filter(e=>e.id!==l.id),w=[];w.push("GOAL",l.title,l.summary?.trim()||"No summary provided."),w.push("","CURRENT STATE",`Progress: ${l.progress}% | Status: ${l.status}`),f.length>0&&w.push("","NOTES",...f.map(e=>`### ${e.title}
2
+ ${e.body}`));let I=b.activities??[];return I.length>0&&w.push("","RECENT ACTIVITY",...I.map(e=>{let t=e.createdAt.replace("T"," ").replace(/\.\d+Z$/,"").slice(0,16);return`- [${t}] ${e.body.split("\n")[0]}`})),p.length>0?w.push("","LINEAR TICKETS",p.map(e=>k(e)).join("\n\n")):w.push("","LINEAR TICKETS","- None."),m.length>0&&w.push("","ACTIVE SESSIONS",...m.map(e=>`- ${e.issueId}: running with ${e.agentName}`)),h.length>0&&w.push("","SCHEDULED TASKS",...h.map(e=>`- ${e.name} | state: ${e.state} | last outcome: ${e.lastOutcome??"none"}`)),y.length>0&&w.push("","PROJECT CONTEXT",...y.map(e=>`- ${e.title} (${e.key}) | ${e.progress}% | ${e.status}`)),w.push("","GUIDANCE",n.prompt.trim()||"No additional guidance provided."),w.push("","ELIGIBLE TICKETS",v.length>0?v.map(e=>k(e)).join("\n\n"):"- None."),w.push("","---","What single action most advances this objective right now?"),{prompt:w.join("\n"),issues:p,eligibleIssues:v,activeIssueAgents:m}}async function I(t){let r=Date.now();try{if(!t.job.projectId||!t.job.objectiveId)throw Error("Objective worker jobs require projectId and objectiveId.");let o=await (0,n.loadProjectObjectiveContext)(t.job.projectId,t.job.objectiveId);if(!o)throw Error("Objective context could not be resolved for this scheduled task.");let s=await w({job:t.job,objectiveContext:o}),i=await g({...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"!==i.status)return{...i,output:i.output||"Objective controller failed before selecting an action."};let j=function(e){let t=e.trim();if(!t)return null;let r=m(t);if(r)return r;let o=t.indexOf("{"),s=t.lastIndexOf("}");return -1===o||s<=o?null:m(t.slice(o,s+1))}(i.output),f="string"==typeof j?.action?j.action.trim().toLowerCase():"string"==typeof j?.decision?j.decision.trim().toLowerCase():"",k="string"==typeof j?.reason?j.reason.trim():"",I=v(j?.objectiveProgress),A=h(j?.objectiveStatus),S=v(j?.projectProgress),$=h(j?.projectStatus),E="string"==typeof j?.projectNote?j.projectNote.trim():"",N="string"==typeof j?.objectiveNote?j.objectiveNote.trim():"",O=new Date().toISOString(),_=null!==I&&A?y("Objective health",I,A):null,C=null!==S&&$?y("Project health",S,$):null,P=null!==I&&null!==A?{objectiveId:o.objective.id,objectiveKey:o.objective.key,progress:I,status:A,recordedAt:O,source:`scheduled-task:${t.job.id}`,note:N||void 0}:null,T=null!==I&&null!==A&&(I!==o.objective.progress||A!==o.objective.status),x=T?(0,b.upsertProjectObjective)(o.workspace,{...o.objective,progress:I,status:A,updatedAt:O}):o.workspace,D=null!==S&&null!==$?{progress:S,status:$,updatedAt:O,source:`scheduled-task:${t.job.id}`,objectiveId:o.objective.id,objectiveKey:o.objective.key,note:E||void 0}:null,L=e=>{let t=e;return D&&(t=(0,b.writeProjectHealthSnapshot)(t,D)),P&&(t=function(e,t){let r=t.objectiveId.trim();if(!r)return e;let o=function(e,t){if(!u(e)||!t.trim())return[];let r=e[a];if(!u(r))return[];let o=r[t.trim()];return Array.isArray(o)?p(o.map(e=>(function(e){if(!u(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:l(e.progress),status:t,recordedAt:r,source:d(e.source),note:d(e.note),objectiveId:d(e.objectiveId)??null,objectiveKey:d(e.objectiveKey)??null}:null})(e)).filter(e=>!!e)):[]}(e,r),s=p(o,[t]).slice(-200),i=u(e[a])?e[a]:{};return{...e,[a]:{...i,[r]:s.map(e=>({progress:l(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,P)),t};T?await (0,n.persistProjectObjectiveWorkspace)({projectId:o.project.id,currentMetadata:o.project.metadata,workspace:x,transformMetadata:L}):(P||D)&&await (0,n.persistProjectObjectiveMetadata)({projectId:o.project.id,currentMetadata:o.project.metadata,transformMetadata:L});let{dispatchObjectiveAction:M}=await e.A(688671),K=await M({action:"work"===f?"work_ticket":f,parsed:j,reason:k,job:t.job,controllerContext:t.controllerContext,sessionAgent:t.sessionAgent,objectiveContext:o,eligibleIssues:s.eligibleIssues,issues:s.issues,healthSummaries:{objectiveHealthSummary:_,projectHealthSummary:C,objectiveNote:N,projectNote:E},cliArgs:t.cliArgs,onSpawn:t.onSpawn,startMs:r}),{logActionReceipt:R}=await e.A(688671);return await R(K,{jobId:t.job.id,projectId:t.job.projectId,objectiveId:t.job.objectiveId}),{output:K.result,error:"failed"===K.status?K.result:"",durationMs:Date.now()-r,status:K.status}}catch(e){return{output:"",error:e instanceof Error?e.message:String(e),durationMs:Date.now()-r,status:"failed"}}}e.s(["executeObjectiveWorker",0,I],720395)},688671,e=>{e.v(e=>Promise.resolve().then(()=>e(917435)))}];
3
+
4
+ //# sourceMappingURL=apps_local_src_prompt-scheduler_0.xgxyl._.js.map
@@ -0,0 +1,4 @@
1
+ module.exports=[720395,e=>{"use strict";var t=e.i(84516),r=e.i(858015),o=e.i(11061),s=e.i(124985);e.i(243174);var i=e.i(248821),n=e.i(901977);let a="project_objective_health_history",c={"on track":"on_track","at risk":"at_risk","off track":"off_track",done:"done"};function u(e){return!!e&&"object"==typeof e&&!Array.isArray(e)}function l(e){return"number"==typeof e&&Number.isFinite(e)?Math.max(0,Math.min(100,Math.round(e))):0}function d(e){return"string"==typeof e&&e.trim()?e.trim():void 0}function p(...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 j=e.i(460275),b=e.i(765443);let f={on_track:"On track",at_risk:"At risk",off_track:"Off track",done:"Done"};async function g(e){let t=Date.now(),r="";try{return await (0,j.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 m(e){try{let t=JSON.parse(e);return t&&"object"==typeof t&&!Array.isArray(t)?t:null}catch{return null}}function v(e){return"number"==typeof e&&Number.isFinite(e)?(0,b.normalizeProjectHealthProgress)(e):null}function h(e){return"string"==typeof e&&e.trim()?(0,b.normalizeProjectHealthStatus)(e):null}function y(e,t,r){return`${e}: ${t}% ${f[r]}`}function k(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 w(e){let{job:n,objectiveContext:a}=e,{project:c,workspace:u,objective:l}=a,d=c.slug??c.id,[{issues:p},j,b,f]=await Promise.all([(0,r.listObjectiveLinearIssues)({objectiveKey:l.key,projectSlug:d,refresh:!0}),(0,o.getIssueActiveAgents)(c.id),Promise.resolve((0,s.getActivityRepository)(d,l.key).list({limit:20})),Promise.resolve((0,i.getNoteRepository)(d,l.key).readAll())]),g=new Set(p.map(e=>e.id)),m=j.filter(e=>g.has(e.issueId)),v=(0,r.filterObjectiveLinearIssuesForAction)(p,m.map(e=>e.issueId)),h=(0,t.getPromptJobStore)().listJobs({objectiveId:l.id}).filter(e=>e.id!==n.id),y=u.objectives.filter(e=>e.id!==l.id),w=[];w.push("GOAL",l.title,l.summary?.trim()||"No summary provided."),w.push("","CURRENT STATE",`Progress: ${l.progress}% | Status: ${l.status}`),f.length>0&&w.push("","NOTES",...f.map(e=>`### ${e.title}
2
+ ${e.body}`));let I=b.activities??[];return I.length>0&&w.push("","RECENT ACTIVITY",...I.map(e=>{let t=e.createdAt.replace("T"," ").replace(/\.\d+Z$/,"").slice(0,16);return`- [${t}] ${e.body.split("\n")[0]}`})),p.length>0?w.push("","LINEAR TICKETS",p.map(e=>k(e)).join("\n\n")):w.push("","LINEAR TICKETS","- None."),m.length>0&&w.push("","ACTIVE SESSIONS",...m.map(e=>`- ${e.issueId}: running with ${e.agentName}`)),h.length>0&&w.push("","SCHEDULED TASKS",...h.map(e=>`- ${e.name} | state: ${e.state} | last outcome: ${e.lastOutcome??"none"}`)),y.length>0&&w.push("","PROJECT CONTEXT",...y.map(e=>`- ${e.title} (${e.key}) | ${e.progress}% | ${e.status}`)),w.push("","GUIDANCE",n.prompt.trim()||"No additional guidance provided."),w.push("","ELIGIBLE TICKETS",v.length>0?v.map(e=>k(e)).join("\n\n"):"- None."),w.push("","---","What single action most advances this objective right now?"),{prompt:w.join("\n"),issues:p,eligibleIssues:v,activeIssueAgents:m}}async function I(t){let r=Date.now();try{if(!t.job.projectId||!t.job.objectiveId)throw Error("Objective worker jobs require projectId and objectiveId.");let o=await (0,n.loadProjectObjectiveContext)(t.job.projectId,t.job.objectiveId);if(!o)throw Error("Objective context could not be resolved for this scheduled task.");let s=await w({job:t.job,objectiveContext:o}),i=await g({...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"!==i.status)return{...i,output:i.output||"Objective controller failed before selecting an action."};let j=function(e){let t=e.trim();if(!t)return null;let r=m(t);if(r)return r;let o=t.indexOf("{"),s=t.lastIndexOf("}");return -1===o||s<=o?null:m(t.slice(o,s+1))}(i.output),f="string"==typeof j?.action?j.action.trim().toLowerCase():"string"==typeof j?.decision?j.decision.trim().toLowerCase():"",k="string"==typeof j?.reason?j.reason.trim():"",I=v(j?.objectiveProgress),A=h(j?.objectiveStatus),S=v(j?.projectProgress),$=h(j?.projectStatus),E="string"==typeof j?.projectNote?j.projectNote.trim():"",N="string"==typeof j?.objectiveNote?j.objectiveNote.trim():"",O=new Date().toISOString(),_=null!==I&&A?y("Objective health",I,A):null,C=null!==S&&$?y("Project health",S,$):null,P=null!==I&&null!==A?{objectiveId:o.objective.id,objectiveKey:o.objective.key,progress:I,status:A,recordedAt:O,source:`scheduled-task:${t.job.id}`,note:N||void 0}:null,T=null!==I&&null!==A&&(I!==o.objective.progress||A!==o.objective.status),x=T?(0,b.upsertProjectObjective)(o.workspace,{...o.objective,progress:I,status:A,updatedAt:O}):o.workspace,D=null!==S&&null!==$?{progress:S,status:$,updatedAt:O,source:`scheduled-task:${t.job.id}`,objectiveId:o.objective.id,objectiveKey:o.objective.key,note:E||void 0}:null,L=e=>{let t=e;return D&&(t=(0,b.writeProjectHealthSnapshot)(t,D)),P&&(t=function(e,t){let r=t.objectiveId.trim();if(!r)return e;let o=function(e,t){if(!u(e)||!t.trim())return[];let r=e[a];if(!u(r))return[];let o=r[t.trim()];return Array.isArray(o)?p(o.map(e=>(function(e){if(!u(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:l(e.progress),status:t,recordedAt:r,source:d(e.source),note:d(e.note),objectiveId:d(e.objectiveId)??null,objectiveKey:d(e.objectiveKey)??null}:null})(e)).filter(e=>!!e)):[]}(e,r),s=p(o,[t]).slice(-200),i=u(e[a])?e[a]:{};return{...e,[a]:{...i,[r]:s.map(e=>({progress:l(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,P)),t};T?await (0,n.persistProjectObjectiveWorkspace)({projectId:o.project.id,currentMetadata:o.project.metadata,workspace:x,transformMetadata:L}):(P||D)&&await (0,n.persistProjectObjectiveMetadata)({projectId:o.project.id,currentMetadata:o.project.metadata,transformMetadata:L});let{dispatchObjectiveAction:M}=await e.A(688671),K=await M({action:"work"===f?"work_ticket":f,parsed:j,reason:k,job:t.job,controllerContext:t.controllerContext,sessionAgent:t.sessionAgent,objectiveContext:o,eligibleIssues:s.eligibleIssues,issues:s.issues,healthSummaries:{objectiveHealthSummary:_,projectHealthSummary:C,objectiveNote:N,projectNote:E},cliArgs:t.cliArgs,onSpawn:t.onSpawn,startMs:r}),{logActionReceipt:R}=await e.A(688671);return await R(K,{jobId:t.job.id,projectId:t.job.projectId,objectiveId:t.job.objectiveId}),{output:K.result,error:"failed"===K.status?K.result:"",durationMs:Date.now()-r,status:K.status}}catch(e){return{output:"",error:e instanceof Error?e.message:String(e),durationMs:Date.now()-r,status:"failed"}}}e.s(["executeObjectiveWorker",0,I],720395)},688671,e=>{e.v(e=>Promise.resolve().then(()=>e(917435)))}];
3
+
4
+ //# sourceMappingURL=apps_local_src_prompt-scheduler_0yu3--n._.js.map
@@ -0,0 +1,4 @@
1
+ module.exports=[720395,e=>{"use strict";var t=e.i(84516),r=e.i(858015),o=e.i(11061),s=e.i(124985);e.i(243174);var i=e.i(248821),n=e.i(901977);let a="project_objective_health_history",c={"on track":"on_track","at risk":"at_risk","off track":"off_track",done:"done"};function u(e){return!!e&&"object"==typeof e&&!Array.isArray(e)}function l(e){return"number"==typeof e&&Number.isFinite(e)?Math.max(0,Math.min(100,Math.round(e))):0}function d(e){return"string"==typeof e&&e.trim()?e.trim():void 0}function p(...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 j=e.i(460275),b=e.i(765443);let f={on_track:"On track",at_risk:"At risk",off_track:"Off track",done:"Done"};async function g(e){let t=Date.now(),r="";try{return await (0,j.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 m(e){try{let t=JSON.parse(e);return t&&"object"==typeof t&&!Array.isArray(t)?t:null}catch{return null}}function v(e){return"number"==typeof e&&Number.isFinite(e)?(0,b.normalizeProjectHealthProgress)(e):null}function h(e){return"string"==typeof e&&e.trim()?(0,b.normalizeProjectHealthStatus)(e):null}function y(e,t,r){return`${e}: ${t}% ${f[r]}`}function k(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 w(e){let{job:n,objectiveContext:a}=e,{project:c,workspace:u,objective:l}=a,d=c.slug??c.id,[{issues:p},j,b,f]=await Promise.all([(0,r.listObjectiveLinearIssues)({objectiveKey:l.key,projectSlug:d,refresh:!0}),(0,o.getIssueActiveAgents)(c.id),Promise.resolve((0,s.getActivityRepository)(d,l.key).list({limit:20})),Promise.resolve((0,i.getNoteRepository)(d,l.key).readAll())]),g=new Set(p.map(e=>e.id)),m=j.filter(e=>g.has(e.issueId)),v=(0,r.filterObjectiveLinearIssuesForAction)(p,m.map(e=>e.issueId)),h=(0,t.getPromptJobStore)().listJobs({objectiveId:l.id}).filter(e=>e.id!==n.id),y=u.objectives.filter(e=>e.id!==l.id),w=[];w.push("GOAL",l.title,l.summary?.trim()||"No summary provided."),w.push("","CURRENT STATE",`Progress: ${l.progress}% | Status: ${l.status}`),f.length>0&&w.push("","NOTES",...f.map(e=>`### ${e.title}
2
+ ${e.body}`));let I=b.activities??[];return I.length>0&&w.push("","RECENT ACTIVITY",...I.map(e=>{let t=e.createdAt.replace("T"," ").replace(/\.\d+Z$/,"").slice(0,16);return`- [${t}] ${e.body.split("\n")[0]}`})),p.length>0?w.push("","LINEAR TICKETS",p.map(e=>k(e)).join("\n\n")):w.push("","LINEAR TICKETS","- None."),m.length>0&&w.push("","ACTIVE SESSIONS",...m.map(e=>`- ${e.issueId}: running with ${e.agentName}`)),h.length>0&&w.push("","SCHEDULED TASKS",...h.map(e=>`- ${e.name} | state: ${e.state} | last outcome: ${e.lastOutcome??"none"}`)),y.length>0&&w.push("","PROJECT CONTEXT",...y.map(e=>`- ${e.title} (${e.key}) | ${e.progress}% | ${e.status}`)),w.push("","GUIDANCE",n.prompt.trim()||"No additional guidance provided."),w.push("","ELIGIBLE TICKETS",v.length>0?v.map(e=>k(e)).join("\n\n"):"- None."),w.push("","---","What single action most advances this objective right now?"),{prompt:w.join("\n"),issues:p,eligibleIssues:v,activeIssueAgents:m}}async function I(t){let r=Date.now();try{if(!t.job.projectId||!t.job.objectiveId)throw Error("Objective worker jobs require projectId and objectiveId.");let o=await (0,n.loadProjectObjectiveContext)(t.job.projectId,t.job.objectiveId);if(!o)throw Error("Objective context could not be resolved for this scheduled task.");let s=await w({job:t.job,objectiveContext:o}),i=await g({...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"!==i.status)return{...i,output:i.output||"Objective controller failed before selecting an action."};let j=function(e){let t=e.trim();if(!t)return null;let r=m(t);if(r)return r;let o=t.indexOf("{"),s=t.lastIndexOf("}");return -1===o||s<=o?null:m(t.slice(o,s+1))}(i.output),f="string"==typeof j?.action?j.action.trim().toLowerCase():"string"==typeof j?.decision?j.decision.trim().toLowerCase():"",k="string"==typeof j?.reason?j.reason.trim():"",I=v(j?.objectiveProgress),A=h(j?.objectiveStatus),S=v(j?.projectProgress),$=h(j?.projectStatus),E="string"==typeof j?.projectNote?j.projectNote.trim():"",N="string"==typeof j?.objectiveNote?j.objectiveNote.trim():"",O=new Date().toISOString(),_=null!==I&&A?y("Objective health",I,A):null,C=null!==S&&$?y("Project health",S,$):null,P=null!==I&&null!==A?{objectiveId:o.objective.id,objectiveKey:o.objective.key,progress:I,status:A,recordedAt:O,source:`scheduled-task:${t.job.id}`,note:N||void 0}:null,T=null!==I&&null!==A&&(I!==o.objective.progress||A!==o.objective.status),x=T?(0,b.upsertProjectObjective)(o.workspace,{...o.objective,progress:I,status:A,updatedAt:O}):o.workspace,D=null!==S&&null!==$?{progress:S,status:$,updatedAt:O,source:`scheduled-task:${t.job.id}`,objectiveId:o.objective.id,objectiveKey:o.objective.key,note:E||void 0}:null,L=e=>{let t=e;return D&&(t=(0,b.writeProjectHealthSnapshot)(t,D)),P&&(t=function(e,t){let r=t.objectiveId.trim();if(!r)return e;let o=function(e,t){if(!u(e)||!t.trim())return[];let r=e[a];if(!u(r))return[];let o=r[t.trim()];return Array.isArray(o)?p(o.map(e=>(function(e){if(!u(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:l(e.progress),status:t,recordedAt:r,source:d(e.source),note:d(e.note),objectiveId:d(e.objectiveId)??null,objectiveKey:d(e.objectiveKey)??null}:null})(e)).filter(e=>!!e)):[]}(e,r),s=p(o,[t]).slice(-200),i=u(e[a])?e[a]:{};return{...e,[a]:{...i,[r]:s.map(e=>({progress:l(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,P)),t};T?await (0,n.persistProjectObjectiveWorkspace)({projectId:o.project.id,currentMetadata:o.project.metadata,workspace:x,transformMetadata:L}):(P||D)&&await (0,n.persistProjectObjectiveMetadata)({projectId:o.project.id,currentMetadata:o.project.metadata,transformMetadata:L});let{dispatchObjectiveAction:M}=await e.A(688671),K=await M({action:"work"===f?"work_ticket":f,parsed:j,reason:k,job:t.job,controllerContext:t.controllerContext,sessionAgent:t.sessionAgent,objectiveContext:o,eligibleIssues:s.eligibleIssues,issues:s.issues,healthSummaries:{objectiveHealthSummary:_,projectHealthSummary:C,objectiveNote:N,projectNote:E},cliArgs:t.cliArgs,onSpawn:t.onSpawn,startMs:r}),{logActionReceipt:R}=await e.A(688671);return await R(K,{jobId:t.job.id,projectId:t.job.projectId,objectiveId:t.job.objectiveId}),{output:K.result,error:"failed"===K.status?K.result:"",durationMs:Date.now()-r,status:K.status}}catch(e){return{output:"",error:e instanceof Error?e.message:String(e),durationMs:Date.now()-r,status:"failed"}}}e.s(["executeObjectiveWorker",0,I],720395)},688671,e=>{e.v(e=>Promise.resolve().then(()=>e(917435)))}];
3
+
4
+ //# sourceMappingURL=apps_local_src_prompt-scheduler_0ze8hzc._.js.map
@@ -1,11 +1,11 @@
1
- module.exports=[84516,e=>{"use strict";var t=e.i(254799),o=e.i(233405),i=e.i(814747),r=e.i(224361),n=e.i(533655);e.i(508241);var c=e.i(757318),a=e.i(72777),d=e.i(716279),l=e.i(46081),u=e.i(860789),s=e.i(383548);let p=(0,r.promisify)(o.execFile);function _(e){let t=e.trim().split(/\s+/)[0]??"";return(0,i.basename)(t)}async function m(e){let t=new Set;if(0===e.length)return t;let o=e.filter(({pid:e})=>{try{return process.kill(e,0),!0}catch{return!1}});if(0===o.length)return t;let i=o.map(e=>e.pid).join(",");try{let{stdout:e}=await p("ps",["-p",i,"-o","pid=,command="],{timeout:n.PS_COMMAND_TIMEOUT_MS}),r=new Map;for(let t of e.split("\n")){let e=t.trim();if(!e)continue;let o=e.match(/^(\d+)\s+(.+)$/);o&&r.set(Number(o[1]),_(o[2]))}for(let{pid:e,expectedCommand:i}of o){let o=r.get(e);o&&o===_(i)&&t.add(e)}}catch{}return t}function h(e){let t="objective_linear_ticket"===e.execution_mode?"objective_linear_ticket":s.DEFAULT_PROMPT_JOB_EXECUTION_MODE;return{id:e.id,name:e.name,prompt:e.prompt,agentId:e.agent_id||"",projectId:e.project_id||"",objectiveId:e.objective_id||null,objectiveKey:e.objective_key||null,provider:e.provider||e.cli||"claude",model:e.model||"",cliArgs:e.cli_args||"",cronExpr:e.cron_expr,cadence:e.cadence||e.cron_expr||"",state:e.state,overlapPolicy:e.overlap_policy,catchUpPolicy:e.catch_up_policy||"fire_once",cancelCheckSec:e.cancel_check_sec,executionMode:t,condition:e.condition||"",nextRunAt:e.next_run_at,lastRunAt:e.last_run_at,lastOutcome:e.last_outcome,createdAt:e.created_at,updatedAt:e.updated_at}}function g(e){return{id:e.id,jobId:e.job_id,status:e.status,output:e.output,error:e.error,durationMs:e.duration_ms,startedAt:e.started_at,finishedAt:e.finished_at,cancelledAt:e.cancelled_at,hostPid:e.host_pid,hostCommand:e.host_command,createdAt:e.created_at}}function b(e){return Object.values(e).some(e=>void 0!==e)}function E(e){let t=e.cadence?.trim(),o=e.cronExpr?.trim();if(t){if(o)return{cadence:t,cronExpr:o,legacyIntervalMs:e.checkEveryMs??c.DEFAULT_CONDITION_CHECK_EVERY_MS};let i=(0,u.parseCadence)(t);return i?{cadence:i.cadence,cronExpr:i.cronExpr,legacyIntervalMs:e.checkEveryMs??c.DEFAULT_CONDITION_CHECK_EVERY_MS}:null}if("condition"===e.triggerType){let t=(0,u.normalizeLegacyConditionSchedule)(e.checkEveryMs??c.DEFAULT_CONDITION_CHECK_EVERY_MS);return{cadence:t.cadence,cronExpr:t.cronExpr,legacyIntervalMs:t.intervalMs}}return null}class y{db;automationRepository;constructor(e,t){this.db=e,this.automationRepository=t}getAutomationRepo(){return this.automationRepository??=(0,d.getAutomationRepository)(),this.automationRepository}createJob(e){let o=E(e);if(!o)throw Error("Prompt jobs require a valid cadence or convertible legacy condition interval.");if(!(0,d.isAutomationFrontmatterEnabled)())return this.createLegacyJob(e,o);let i=(0,t.randomUUID)(),r=new Date().toISOString(),n=this.getAutomationRepo().createAutomation({id:i,name:e.name,...e.projectId?{projectId:e.projectId}:{},state:"active",trigger:{type:"scheduled",cadence:o.cadence,cronExpr:o.cronExpr},execution:{overlapPolicy:e.overlapPolicy,catchUpPolicy:e.catchUpPolicy,cancelCheckSec:e.cancelCheckSec,...e.condition?.trim()?{condition:e.condition.trim()}:{}},target:{type:"prompt_job",...e.agentId?{agentId:e.agentId}:{},...e.objectiveId?{objectiveId:e.objectiveId}:{},...e.objectiveKey?{objectiveKey:e.objectiveKey}:{},...e.executionMode&&e.executionMode!==s.DEFAULT_PROMPT_JOB_EXECUTION_MODE?{executionMode:e.executionMode}:{},...e.provider?{provider:e.provider}:{},...e.model?{model:e.model}:{},...void 0!==e.cliArgs?{cliArgs:e.cliArgs}:{}},createdAt:r,body:e.prompt}),c=(0,a.automationRecordToPromptJob)(n);return this.upsertLegacyJobRow(c),c}getJob(e){if(!(0,d.isAutomationFrontmatterEnabled)())return this.getLegacyJob(e);let t=this.getPromptJobRecord(e,!1);if(t?.archived)return null;if(t?.definition.target.type==="prompt_job"){let e=(0,a.automationRecordToPromptJob)(t);return this.ensureLegacyJobRow(e),e}return(0,d.isAutomationDualReadEnabled)()?this.getLegacyJob(e):null}listJobs(e){if(!(0,d.isAutomationFrontmatterEnabled)())return this.listLegacyJobs(e);let t=new Map;for(let o of this.getAutomationRepo().listVisibleAutomations({targetType:"prompt_job",...e?.state?{state:e.state}:{},...e?.projectId?{projectId:e.projectId}:{}})){let i=this.normalizePromptJobRecord(o);if(!i)continue;let r=(0,a.automationRecordToPromptJob)(i);e?.objectiveId&&r.objectiveId!==e.objectiveId||(e?.includeObjectiveJobs!==!1||e.objectiveId||!r.objectiveId)&&(t.set(r.id,r),this.ensureLegacyJobRow(r))}if((0,d.isAutomationDualReadEnabled)())for(let o of this.listLegacyJobs(e))t.has(o.id)||t.set(o.id,o);return[...t.values()].sort((e,t)=>{let o=Date.parse(e.createdAt);return Date.parse(t.createdAt)-o})}updateJob(e,t){if(!(0,d.isAutomationFrontmatterEnabled)())return this.updateLegacyJob(e,t);let o=this.getPromptJobRecord(e,!1);if(!o)return(0,d.isAutomationDualReadEnabled)()?this.updateLegacyJob(e,t):null;if("prompt_job"!==o.definition.target.type)return null;let i=o,r=this.buildDefinitionPatch(i,t);if(b(r)){let t=this.getAutomationRepo().updateAutomation(e,r);if(!t)return null;i=t}let n=this.buildStatePatch(t);if(b(n)){let t=this.getAutomationRepo().updateAutomationState(e,n);if(!t)return null;i=t}let c=(0,a.automationRecordToPromptJob)(i);return this.upsertLegacyJobRow(c),c}deleteJob(e){(0,d.isAutomationFrontmatterEnabled)()&&(this.getAutomationRepo().archiveAutomation(e)||this.getAutomationRepo().deleteAutomation(e)),this.db.prepare("DELETE FROM prompt_jobs WHERE id = ?").run(e)}getDueJobs(e=Date.now()){if(!(0,d.isAutomationFrontmatterEnabled)())return this.getLegacyDueJobs(e);let t=new Map;for(let o of this.getAutomationRepo().listVisibleAutomations({targetType:"prompt_job",state:"active"})){let i=this.normalizePromptJobRecord(o);if(!i)continue;let r=(0,a.automationRecordToPromptJob)(i);null===r.nextRunAt||r.nextRunAt>e||(t.set(r.id,r),this.ensureLegacyJobRow(r))}if((0,d.isAutomationDualReadEnabled)())for(let o of this.getLegacyDueJobs(e))t.has(o.id)||t.set(o.id,o);return[...t.values()].sort((e,t)=>(e.nextRunAt??Number.MAX_SAFE_INTEGER)-(t.nextRunAt??Number.MAX_SAFE_INTEGER))}createRun(e){this.ensureLegacyJobRowById(e);let o=(0,t.randomUUID)();return this.db.prepare("INSERT INTO prompt_runs (id, job_id) VALUES (?, ?)").run(o,e),this.getRun(o)}getRun(e){let t=this.db.prepare("SELECT * FROM prompt_runs WHERE id = ?").get(e);return t?g(t):null}listRuns(e,t=50){return this.db.prepare("SELECT * FROM prompt_runs WHERE job_id = ? ORDER BY created_at DESC LIMIT ?").all(e,t).map(g)}listQueuedRuns(e=50){return this.db.prepare("SELECT * FROM prompt_runs WHERE status = 'queued' ORDER BY created_at ASC LIMIT ?").all(e).map(g)}updateRun(e,t){let o={status:"status",output:"output",error:"error",durationMs:"duration_ms",startedAt:"started_at",finishedAt:"finished_at",cancelledAt:"cancelled_at",hostPid:"host_pid",hostCommand:"host_command"},i=[],r=[];for(let[e,n]of Object.entries(t)){let t=o[e];t&&(i.push(`${t} = ?`),r.push(n??null))}return 0===i.length||(r.push(e),this.db.prepare(`UPDATE prompt_runs SET ${i.join(", ")} WHERE id = ?`).run(...r.map(e=>e))),this.getRun(e)}hasRunningRun(e){return void 0!==this.db.prepare("SELECT id FROM prompt_runs WHERE job_id = ? AND status IN ('queued', 'running') LIMIT 1").get(e)}async reapStaleRuns(e=18e5){let t=this.db.prepare(`SELECT id, job_id, host_pid, host_command, started_at, created_at
1
+ module.exports=[84516,e=>{"use strict";var t=e.i(254799),o=e.i(233405),i=e.i(814747),r=e.i(224361),n=e.i(533655);e.i(508241);var c=e.i(757318),a=e.i(72777),d=e.i(716279),l=e.i(46081),u=e.i(860789),p=e.i(383548);let s=(0,r.promisify)(o.execFile);function _(e){let t=e.trim().split(/\s+/)[0]??"";return(0,i.basename)(t)}async function m(e){let t=new Set;if(0===e.length)return t;let o=e.filter(({pid:e})=>{try{return process.kill(e,0),!0}catch{return!1}});if(0===o.length)return t;let i=o.map(e=>e.pid).join(",");try{let{stdout:e}=await s("ps",["-p",i,"-o","pid=,command="],{timeout:n.PS_COMMAND_TIMEOUT_MS}),r=new Map;for(let t of e.split("\n")){let e=t.trim();if(!e)continue;let o=e.match(/^(\d+)\s+(.+)$/);o&&r.set(Number(o[1]),_(o[2]))}for(let{pid:e,expectedCommand:i}of o){let o=r.get(e);o&&o===_(i)&&t.add(e)}}catch{}return t}function h(e){let t="objective_linear_ticket"===e.execution_mode||"objective_worker"===e.execution_mode?"objective_worker":"linear_worker"===e.execution_mode?"linear_worker":p.DEFAULT_PROMPT_JOB_EXECUTION_MODE;return{id:e.id,name:e.name,prompt:e.prompt,agentId:e.agent_id||"",projectId:e.project_id||"",objectiveId:e.objective_id||null,objectiveKey:e.objective_key||null,provider:e.provider||e.cli||"claude",model:e.model||"",cliArgs:e.cli_args||"",cronExpr:e.cron_expr,cadence:e.cadence||e.cron_expr||"",state:e.state,overlapPolicy:e.overlap_policy,catchUpPolicy:e.catch_up_policy||"fire_once",cancelCheckSec:e.cancel_check_sec,executionMode:t,scriptPrompt:"",teamId:"",builtIn:"objective_worker"===t||"linear_worker"===t,condition:e.condition||"",nextRunAt:e.next_run_at,lastRunAt:e.last_run_at,lastOutcome:e.last_outcome,createdAt:e.created_at,updatedAt:e.updated_at}}function b(e){return{id:e.id,jobId:e.job_id,status:e.status,output:e.output,error:e.error,durationMs:e.duration_ms,startedAt:e.started_at,finishedAt:e.finished_at,cancelledAt:e.cancelled_at,hostPid:e.host_pid,hostCommand:e.host_command,createdAt:e.created_at}}function g(e){return Object.values(e).some(e=>void 0!==e)}function E(e){let t=e.cadence?.trim(),o=e.cronExpr?.trim();if(t){if(o)return{cadence:t,cronExpr:o,legacyIntervalMs:e.checkEveryMs??c.DEFAULT_CONDITION_CHECK_EVERY_MS};let i=(0,u.parseCadence)(t);return i?{cadence:i.cadence,cronExpr:i.cronExpr,legacyIntervalMs:e.checkEveryMs??c.DEFAULT_CONDITION_CHECK_EVERY_MS}:null}if("condition"===e.triggerType){let t=(0,u.normalizeLegacyConditionSchedule)(e.checkEveryMs??c.DEFAULT_CONDITION_CHECK_EVERY_MS);return{cadence:t.cadence,cronExpr:t.cronExpr,legacyIntervalMs:t.intervalMs}}return null}class v{db;automationRepository;constructor(e,t){this.db=e,this.automationRepository=t}getAutomationRepo(){return this.automationRepository??=(0,d.getAutomationRepository)(),this.automationRepository}createJob(e){let o=E(e);if(!o)throw Error("Prompt jobs require a valid cadence or convertible legacy condition interval.");if(!(0,d.isAutomationFrontmatterEnabled)())return this.createLegacyJob(e,o);let i=(0,t.randomUUID)(),r=new Date().toISOString(),n=this.getAutomationRepo().createAutomation({id:i,name:e.name,...e.projectId?{projectId:e.projectId}:{},state:"active",trigger:{type:"scheduled",cadence:o.cadence,cronExpr:o.cronExpr},execution:{overlapPolicy:e.overlapPolicy,catchUpPolicy:e.catchUpPolicy,cancelCheckSec:e.cancelCheckSec,...e.condition?.trim()?{condition:e.condition.trim()}:{}},target:{type:"prompt_job",...e.builtIn?{builtIn:!0}:{},...e.agentId?{agentId:e.agentId}:{},...e.objectiveId?{objectiveId:e.objectiveId}:{},...e.objectiveKey?{objectiveKey:e.objectiveKey}:{},...e.executionMode&&e.executionMode!==p.DEFAULT_PROMPT_JOB_EXECUTION_MODE?{executionMode:e.executionMode}:{},...e.provider?{provider:e.provider}:{},...e.model?{model:e.model}:{},...void 0!==e.cliArgs?{cliArgs:e.cliArgs}:{},...e.scriptPrompt?{scriptPrompt:e.scriptPrompt}:{},...e.teamId?{teamId:e.teamId}:{}},createdAt:r,body:e.prompt}),c=(0,a.automationRecordToPromptJob)(n);return this.upsertLegacyJobRow(c),c}getJob(e){if(!(0,d.isAutomationFrontmatterEnabled)())return this.getLegacyJob(e);let t=this.getPromptJobRecord(e,!1);if(t?.archived)return null;if(t?.definition.target.type==="prompt_job"){let e=(0,a.automationRecordToPromptJob)(t);return this.ensureLegacyJobRow(e),e}return(0,d.isAutomationDualReadEnabled)()?this.getLegacyJob(e):null}listJobs(e){if(!(0,d.isAutomationFrontmatterEnabled)())return this.listLegacyJobs(e);let t=new Map;for(let o of this.getAutomationRepo().listVisibleAutomations({targetType:"prompt_job",...e?.state?{state:e.state}:{},...e?.projectId?{projectId:e.projectId}:{}})){let i=this.normalizePromptJobRecord(o);if(!i)continue;let r=(0,a.automationRecordToPromptJob)(i);e?.objectiveId&&r.objectiveId!==e.objectiveId||(e?.includeObjectiveJobs!==!1||e.objectiveId||!r.objectiveId)&&(t.set(r.id,r),this.ensureLegacyJobRow(r))}if((0,d.isAutomationDualReadEnabled)())for(let o of this.listLegacyJobs(e))t.has(o.id)||t.set(o.id,o);return[...t.values()].sort((e,t)=>{let o=Date.parse(e.createdAt);return Date.parse(t.createdAt)-o})}updateJob(e,t){if(!(0,d.isAutomationFrontmatterEnabled)())return this.updateLegacyJob(e,t);let o=this.getPromptJobRecord(e,!1);if(!o)return(0,d.isAutomationDualReadEnabled)()?this.updateLegacyJob(e,t):null;if("prompt_job"!==o.definition.target.type)return null;let i=o,r=this.buildDefinitionPatch(i,t);if(g(r)){let t=this.getAutomationRepo().updateAutomation(e,r);if(!t)return null;i=t}let n=this.buildStatePatch(t);if(g(n)){let t=this.getAutomationRepo().updateAutomationState(e,n);if(!t)return null;i=t}let c=(0,a.automationRecordToPromptJob)(i);return this.upsertLegacyJobRow(c),c}deleteJob(e){let t=this.getJob(e);if(t?.builtIn)throw Error("Cannot delete built-in job. Use pause instead.");(0,d.isAutomationFrontmatterEnabled)()&&(this.getAutomationRepo().archiveAutomation(e)||this.getAutomationRepo().deleteAutomation(e)),this.db.prepare("DELETE FROM prompt_jobs WHERE id = ?").run(e)}getDueJobs(e=Date.now()){if(!(0,d.isAutomationFrontmatterEnabled)())return this.getLegacyDueJobs(e);let t=new Map;for(let o of this.getAutomationRepo().listVisibleAutomations({targetType:"prompt_job",state:"active"})){let i=this.normalizePromptJobRecord(o);if(!i)continue;let r=(0,a.automationRecordToPromptJob)(i);null===r.nextRunAt||r.nextRunAt>e||(t.set(r.id,r),this.ensureLegacyJobRow(r))}if((0,d.isAutomationDualReadEnabled)())for(let o of this.getLegacyDueJobs(e))t.has(o.id)||t.set(o.id,o);return[...t.values()].sort((e,t)=>(e.nextRunAt??Number.MAX_SAFE_INTEGER)-(t.nextRunAt??Number.MAX_SAFE_INTEGER))}createRun(e){this.ensureLegacyJobRowById(e);let o=(0,t.randomUUID)();return this.db.prepare("INSERT INTO prompt_runs (id, job_id) VALUES (?, ?)").run(o,e),this.getRun(o)}getRun(e){let t=this.db.prepare("SELECT * FROM prompt_runs WHERE id = ?").get(e);return t?b(t):null}listRuns(e,t=50){return this.db.prepare("SELECT * FROM prompt_runs WHERE job_id = ? ORDER BY created_at DESC LIMIT ?").all(e,t).map(b)}listQueuedRuns(e=50){return this.db.prepare("SELECT * FROM prompt_runs WHERE status = 'queued' ORDER BY created_at ASC LIMIT ?").all(e).map(b)}updateRun(e,t){let o={status:"status",output:"output",error:"error",durationMs:"duration_ms",startedAt:"started_at",finishedAt:"finished_at",cancelledAt:"cancelled_at",hostPid:"host_pid",hostCommand:"host_command"},i=[],r=[];for(let[e,n]of Object.entries(t)){let t=o[e];t&&(i.push(`${t} = ?`),r.push(n??null))}return 0===i.length||(r.push(e),this.db.prepare(`UPDATE prompt_runs SET ${i.join(", ")} WHERE id = ?`).run(...r.map(e=>e))),this.getRun(e)}hasRunningRun(e){return void 0!==this.db.prepare("SELECT id FROM prompt_runs WHERE job_id = ? AND status IN ('queued', 'running') LIMIT 1").get(e)}async reapStaleRuns(e=18e5){let t=this.db.prepare(`SELECT id, job_id, host_pid, host_command, started_at, created_at
2
2
  FROM prompt_runs
3
3
  WHERE status = 'running'`).all(),o=Date.now(),i=t.filter(e=>null!=e.host_pid&&null!=e.host_command).map(e=>({pid:e.host_pid,expectedCommand:e.host_command})),r=await m(i),n=0;for(let i of t){var c;let t,a=(c=i.started_at||i.created_at)?/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/.test(c)?Date.parse(c.replace(" ","T")+"Z"):Date.parse(c):NaN,d=Number.isFinite(a)?o-a:0,l=!1;null!=i.host_pid&&i.host_command?!r.has(i.host_pid)&&d>e?(l=!0,t=`Host process (pid ${i.host_pid}) is no longer running`):t="":d>e?(l=!0,t=`No host PID recorded; stuck for ${Math.round(d/6e4)} minutes`):t="",l&&(this.db.prepare(`UPDATE prompt_runs
4
4
  SET status = 'failed',
5
5
  error = ?,
6
6
  duration_ms = ?,
7
7
  finished_at = ?
8
- WHERE id = ?`).run(`Reaped: ${t}`,d,new Date().toISOString(),i.id),n++)}return n}isRunCancelled(e){let t=this.db.prepare("SELECT status FROM prompt_runs WHERE id = ?").get(e);return t?.status==="cancelled"}normalizePromptJobRecord(e){if("prompt_job"!==e.definition.target.type||"condition"!==e.definition.trigger.type)return e;let t=(0,u.normalizeLegacyConditionSchedule)(e.definition.trigger.checkEveryMs);return this.getAutomationRepo().updateAutomation(e.definition.id,{trigger:{type:"scheduled",cadence:t.cadence,cronExpr:t.cronExpr},execution:{...e.definition.execution??{},condition:e.definition.execution?.condition??e.definition.trigger.condition}})}getPromptJobRecord(e,t){let o=this.getAutomationRepo().getAutomation(e),i=o?this.normalizePromptJobRecord(o):null;if(i?.definition.target.type==="prompt_job")return i;if(!t||!(0,d.isAutomationDualReadEnabled)())return null;let r=this.getLegacyJob(e);return r?this.materializeLegacyJob(r):null}materializeLegacyJob(e){let t=(0,a.promptJobToAutomationDefinition)(e),o=(0,a.promptJobToAutomationRuntimeState)(e),i=this.getAutomationRepo().upsertAutomation(t);return this.getAutomationRepo().updateAutomationState(e.id,{nextRunAt:o.nextRunAt,lastRunAt:o.lastRunAt,lastOutcome:o.lastOutcome,lastError:o.lastError,updatedAt:o.updatedAt})??i}buildDefinitionPatch(e,t){let o={},i={},r={},n={};void 0!==t.name&&(o.name=t.name),void 0!==t.projectId&&(o.projectId=t.projectId||null),void 0!==t.state&&(o.state=t.state),void 0!==t.prompt&&(o.body=t.prompt);let c=E(t);if(c)i.type="scheduled",i.cadence=c.cadence,i.cronExpr=c.cronExpr,i.intervalMs="scheduled"===e.definition.trigger.type?e.definition.trigger.intervalMs:void 0;else if(""===t.cadence)i.type="scheduled",i.cadence="scheduled"===e.definition.trigger.type?e.definition.trigger.cadence:void 0,i.cronExpr="scheduled"===e.definition.trigger.type?e.definition.trigger.cronExpr:void 0,i.intervalMs="scheduled"===e.definition.trigger.type?e.definition.trigger.intervalMs:void 0;else if(void 0!==t.cronExpr||void 0!==t.cadence){let o=e.definition.trigger;i.type="scheduled",i.cadence=t.cadence??("scheduled"===o.type?o.cadence:void 0),i.cronExpr=t.cronExpr??("scheduled"===o.type?o.cronExpr:void 0),i.intervalMs="scheduled"===o.type?o.intervalMs:void 0}return void 0!==t.overlapPolicy&&(r.overlapPolicy=t.overlapPolicy),void 0!==t.catchUpPolicy&&(r.catchUpPolicy=t.catchUpPolicy),void 0!==t.cancelCheckSec&&(r.cancelCheckSec=t.cancelCheckSec),void 0!==t.condition&&(r.condition=t.condition||void 0),void 0!==t.agentId&&(n.agentId=t.agentId||void 0),void 0!==t.objectiveId&&(n.objectiveId=t.objectiveId||void 0),void 0!==t.objectiveKey&&(n.objectiveKey=t.objectiveKey||void 0),void 0!==t.executionMode&&(n.executionMode=t.executionMode===s.DEFAULT_PROMPT_JOB_EXECUTION_MODE?void 0:t.executionMode),void 0!==t.provider&&(n.provider=t.provider||void 0),void 0!==t.model&&(n.model=t.model||void 0),void 0!==t.cliArgs&&(n.cliArgs=t.cliArgs),{...Object.keys(o).length>0?o:{},...Object.keys(i).length>0?{trigger:i}:{},...Object.keys(r).length>0?{execution:r}:{},...Object.keys(n).length>0?{target:n}:{}}}buildStatePatch(e){let t={};return void 0!==e.nextRunAt&&(t.nextRunAt=e.nextRunAt),void 0!==e.lastRunAt&&(t.lastRunAt=e.lastRunAt),void 0!==e.lastOutcome&&(t.lastOutcome=e.lastOutcome),t}ensureLegacyJobRowById(e){if(this.legacyJobRowExists(e))return;let t=this.getJob(e);t&&this.upsertLegacyJobRow(t)}ensureLegacyJobRow(e){this.legacyJobRowExists(e.id)||this.upsertLegacyJobRow(e)}legacyJobRowExists(e){return void 0!==this.db.prepare("SELECT 1 FROM prompt_jobs WHERE id = ?").get(e)}upsertLegacyJobRow(e){this.db.prepare(`INSERT INTO prompt_jobs (
8
+ WHERE id = ?`).run(`Reaped: ${t}`,d,new Date().toISOString(),i.id),n++)}return n}isRunCancelled(e){let t=this.db.prepare("SELECT status FROM prompt_runs WHERE id = ?").get(e);return t?.status==="cancelled"}normalizePromptJobRecord(e){if("prompt_job"!==e.definition.target.type||"condition"!==e.definition.trigger.type)return e;let t=(0,u.normalizeLegacyConditionSchedule)(e.definition.trigger.checkEveryMs);return this.getAutomationRepo().updateAutomation(e.definition.id,{trigger:{type:"scheduled",cadence:t.cadence,cronExpr:t.cronExpr},execution:{...e.definition.execution??{},condition:e.definition.execution?.condition??e.definition.trigger.condition}})}getPromptJobRecord(e,t){let o=this.getAutomationRepo().getAutomation(e),i=o?this.normalizePromptJobRecord(o):null;if(i?.definition.target.type==="prompt_job")return i;if(!t||!(0,d.isAutomationDualReadEnabled)())return null;let r=this.getLegacyJob(e);return r?this.materializeLegacyJob(r):null}materializeLegacyJob(e){let t=(0,a.promptJobToAutomationDefinition)(e),o=(0,a.promptJobToAutomationRuntimeState)(e),i=this.getAutomationRepo().upsertAutomation(t);return this.getAutomationRepo().updateAutomationState(e.id,{nextRunAt:o.nextRunAt,lastRunAt:o.lastRunAt,lastOutcome:o.lastOutcome,lastError:o.lastError,updatedAt:o.updatedAt})??i}buildDefinitionPatch(e,t){let o={},i={},r={},n={};void 0!==t.name&&(o.name=t.name),void 0!==t.projectId&&(o.projectId=t.projectId||null),void 0!==t.state&&(o.state=t.state),void 0!==t.prompt&&(o.body=t.prompt);let c=E(t);if(c)i.type="scheduled",i.cadence=c.cadence,i.cronExpr=c.cronExpr,i.intervalMs="scheduled"===e.definition.trigger.type?e.definition.trigger.intervalMs:void 0;else if(""===t.cadence)i.type="scheduled",i.cadence="scheduled"===e.definition.trigger.type?e.definition.trigger.cadence:void 0,i.cronExpr="scheduled"===e.definition.trigger.type?e.definition.trigger.cronExpr:void 0,i.intervalMs="scheduled"===e.definition.trigger.type?e.definition.trigger.intervalMs:void 0;else if(void 0!==t.cronExpr||void 0!==t.cadence){let o=e.definition.trigger;i.type="scheduled",i.cadence=t.cadence??("scheduled"===o.type?o.cadence:void 0),i.cronExpr=t.cronExpr??("scheduled"===o.type?o.cronExpr:void 0),i.intervalMs="scheduled"===o.type?o.intervalMs:void 0}return void 0!==t.overlapPolicy&&(r.overlapPolicy=t.overlapPolicy),void 0!==t.catchUpPolicy&&(r.catchUpPolicy=t.catchUpPolicy),void 0!==t.cancelCheckSec&&(r.cancelCheckSec=t.cancelCheckSec),void 0!==t.condition&&(r.condition=t.condition||void 0),void 0!==t.agentId&&(n.agentId=t.agentId||void 0),void 0!==t.objectiveId&&(n.objectiveId=t.objectiveId||void 0),void 0!==t.objectiveKey&&(n.objectiveKey=t.objectiveKey||void 0),void 0!==t.executionMode&&(n.executionMode=t.executionMode===p.DEFAULT_PROMPT_JOB_EXECUTION_MODE?void 0:t.executionMode),void 0!==t.provider&&(n.provider=t.provider||void 0),void 0!==t.model&&(n.model=t.model||void 0),void 0!==t.cliArgs&&(n.cliArgs=t.cliArgs),void 0!==t.scriptPrompt&&(n.scriptPrompt=t.scriptPrompt||void 0),void 0!==t.teamId&&(n.teamId=t.teamId||void 0),{...Object.keys(o).length>0?o:{},...Object.keys(i).length>0?{trigger:i}:{},...Object.keys(r).length>0?{execution:r}:{},...Object.keys(n).length>0?{target:n}:{}}}buildStatePatch(e){let t={};return void 0!==e.nextRunAt&&(t.nextRunAt=e.nextRunAt),void 0!==e.lastRunAt&&(t.lastRunAt=e.lastRunAt),void 0!==e.lastOutcome&&(t.lastOutcome=e.lastOutcome),t}ensureLegacyJobRowById(e){if(this.legacyJobRowExists(e))return;let t=this.getJob(e);t&&this.upsertLegacyJobRow(t)}ensureLegacyJobRow(e){this.legacyJobRowExists(e.id)||this.upsertLegacyJobRow(e)}legacyJobRowExists(e){return void 0!==this.db.prepare("SELECT 1 FROM prompt_jobs WHERE id = ?").get(e)}upsertLegacyJobRow(e){this.db.prepare(`INSERT INTO prompt_jobs (
9
9
  id, name, prompt, cli, agent_id, project_id, objective_id, objective_key, provider, model, cli_args,
10
10
  execution_mode,
11
11
  cron_expr, cadence, state, overlap_policy, catch_up_policy, cancel_check_sec,
@@ -37,12 +37,12 @@ module.exports=[84516,e=>{"use strict";var t=e.i(254799),o=e.i(233405),i=e.i(814
37
37
  last_run_at = excluded.last_run_at,
38
38
  last_outcome = excluded.last_outcome,
39
39
  created_at = excluded.created_at,
40
- updated_at = excluded.updated_at`).run(e.id,e.name,e.prompt,e.provider||"claude",e.agentId||null,e.projectId||null,e.objectiveId||null,e.objectiveKey||null,e.provider||"claude",e.model||"",e.cliArgs||"",e.executionMode||s.DEFAULT_PROMPT_JOB_EXECUTION_MODE,e.cronExpr||"",e.cadence||"",e.state,e.overlapPolicy,e.catchUpPolicy,e.cancelCheckSec,"scheduled",e.condition||"",c.DEFAULT_CONDITION_CHECK_EVERY_MS,e.nextRunAt??null,e.lastRunAt??null,e.lastOutcome??null,e.createdAt,e.updatedAt)}createLegacyJob(e,o){let i=(0,t.randomUUID)(),r=e.provider??"claude",n=(0,l.computeNextTickFromCron)(o.cronExpr)??null;return this.db.prepare(`INSERT INTO prompt_jobs (
40
+ updated_at = excluded.updated_at`).run(e.id,e.name,e.prompt,e.provider||"claude",e.agentId||null,e.projectId||null,e.objectiveId||null,e.objectiveKey||null,e.provider||"claude",e.model||"",e.cliArgs||"",e.executionMode||p.DEFAULT_PROMPT_JOB_EXECUTION_MODE,e.cronExpr||"",e.cadence||"",e.state,e.overlapPolicy,e.catchUpPolicy,e.cancelCheckSec,"scheduled",e.condition||"",c.DEFAULT_CONDITION_CHECK_EVERY_MS,e.nextRunAt??null,e.lastRunAt??null,e.lastOutcome??null,e.createdAt,e.updatedAt)}createLegacyJob(e,o){let i=(0,t.randomUUID)(),r=e.provider??"claude",n=(0,l.computeNextTickFromCron)(o.cronExpr)??null;return this.db.prepare(`INSERT INTO prompt_jobs (
41
41
  id, name, prompt, cli, agent_id, project_id, objective_id, objective_key, provider, model, cli_args,
42
42
  execution_mode,
43
43
  cron_expr, cadence, overlap_policy, catch_up_policy, cancel_check_sec,
44
44
  trigger_type, condition, check_every_ms, next_run_at
45
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(i,e.name,e.prompt,r,e.agentId||null,e.projectId||null,e.objectiveId||null,e.objectiveKey||null,r,e.model??"",e.cliArgs??"",e.executionMode??s.DEFAULT_PROMPT_JOB_EXECUTION_MODE,o.cronExpr,o.cadence,e.overlapPolicy??"skip",e.catchUpPolicy??"fire_once",e.cancelCheckSec??5,"scheduled",e.condition??"",o.legacyIntervalMs,n),this.getLegacyJob(i)}normalizeLegacyJobRow(e){if("condition"!==(e.trigger_type||"scheduled"))return e;let t=(0,u.normalizeLegacyConditionSchedule)(e.check_every_ms||c.DEFAULT_CONDITION_CHECK_EVERY_MS),o=(0,l.computeNextTickFromCron)(t.cronExpr)??null;return this.db.prepare(`UPDATE prompt_jobs
45
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(i,e.name,e.prompt,r,e.agentId||null,e.projectId||null,e.objectiveId||null,e.objectiveKey||null,r,e.model??"",e.cliArgs??"",e.executionMode??p.DEFAULT_PROMPT_JOB_EXECUTION_MODE,o.cronExpr,o.cadence,e.overlapPolicy??"skip",e.catchUpPolicy??"fire_once",e.cancelCheckSec??5,"scheduled",e.condition??"",o.legacyIntervalMs,n),this.getLegacyJob(i)}normalizeLegacyJobRow(e){if("condition"!==(e.trigger_type||"scheduled"))return e;let t=(0,u.normalizeLegacyConditionSchedule)(e.check_every_ms||c.DEFAULT_CONDITION_CHECK_EVERY_MS),o=(0,l.computeNextTickFromCron)(t.cronExpr)??null;return this.db.prepare(`UPDATE prompt_jobs
46
46
  SET trigger_type = 'scheduled',
47
47
  cadence = ?,
48
48
  cron_expr = ?,
@@ -52,6 +52,6 @@ module.exports=[84516,e=>{"use strict";var t=e.i(254799),o=e.i(233405),i=e.i(814
52
52
  WHERE state = 'active'
53
53
  AND next_run_at IS NOT NULL
54
54
  AND next_run_at <= ?
55
- ORDER BY next_run_at ASC`).all(e).map(e=>h(this.normalizeLegacyJobRow(e))).filter(t=>null!==t.nextRunAt&&t.nextRunAt<=e)}}var v=e.i(522734),R=e.i(779429);let f=null;function x(e){return e.replace(/^\s*--.*$/gm,"").split(";").map(e=>e.trim()).filter(Boolean)}e.s(["getPromptJobStore",0,function(){if(!f){let e=(0,R.getSQLiteDb)();if(e.prepare("SELECT 1 FROM sqlite_master WHERE type='table' AND name='prompt_jobs'").get()){if(!e.prepare("SELECT 1 FROM pragma_table_info('prompt_jobs') WHERE name='catch_up_policy'").get())for(let t of x((0,v.readFileSync)(i.default.join(process.cwd(),"db/sqlite/003_prompt_scheduler_v2.sql"),"utf-8")))try{e.exec(t)}catch(e){if(!e.message?.includes("duplicate column"))throw e}}else{let t=(0,v.readFileSync)(i.default.join(process.cwd(),"db/sqlite/002_prompt_scheduler_schema.sql"),"utf-8");e.exec(t)}if(!e.prepare("SELECT 1 FROM pragma_table_info('prompt_runs') WHERE name='host_pid'").get())for(let t of x((0,v.readFileSync)(i.default.join(process.cwd(),"db/sqlite/004_prompt_runs_host_pid.sql"),"utf-8")))try{e.exec(t)}catch(e){if(!e.message?.includes("duplicate column"))throw e}if(!e.prepare("SELECT 1 FROM pragma_table_info('prompt_jobs') WHERE name='objective_id'").get())for(let t of x((0,v.readFileSync)(i.default.join(process.cwd(),"db/sqlite/005_prompt_jobs_objectives.sql"),"utf-8")))try{e.exec(t)}catch(e){if(!e.message?.includes("duplicate column"))throw e}if(!e.prepare("SELECT 1 FROM pragma_table_info('prompt_jobs') WHERE name='execution_mode'").get())for(let t of x((0,v.readFileSync)(i.default.join(process.cwd(),"db/sqlite/006_prompt_jobs_execution_mode.sql"),"utf-8")))try{e.exec(t)}catch(e){if(!e.message?.includes("duplicate column"))throw e}f=new y(e)}return f}],84516)}];
55
+ ORDER BY next_run_at ASC`).all(e).map(e=>h(this.normalizeLegacyJobRow(e))).filter(t=>null!==t.nextRunAt&&t.nextRunAt<=e)}}var y=e.i(522734),R=e.i(779429);let f=null;function x(e){return e.replace(/^\s*--.*$/gm,"").split(";").map(e=>e.trim()).filter(Boolean)}e.s(["getPromptJobStore",0,function(){if(!f){let e=(0,R.getSQLiteDb)();if(e.prepare("SELECT 1 FROM sqlite_master WHERE type='table' AND name='prompt_jobs'").get()){if(!e.prepare("SELECT 1 FROM pragma_table_info('prompt_jobs') WHERE name='catch_up_policy'").get())for(let t of x((0,y.readFileSync)(i.default.join(process.cwd(),"db/sqlite/003_prompt_scheduler_v2.sql"),"utf-8")))try{e.exec(t)}catch(e){if(!e.message?.includes("duplicate column"))throw e}}else{let t=(0,y.readFileSync)(i.default.join(process.cwd(),"db/sqlite/002_prompt_scheduler_schema.sql"),"utf-8");e.exec(t)}if(!e.prepare("SELECT 1 FROM pragma_table_info('prompt_runs') WHERE name='host_pid'").get())for(let t of x((0,y.readFileSync)(i.default.join(process.cwd(),"db/sqlite/004_prompt_runs_host_pid.sql"),"utf-8")))try{e.exec(t)}catch(e){if(!e.message?.includes("duplicate column"))throw e}if(!e.prepare("SELECT 1 FROM pragma_table_info('prompt_jobs') WHERE name='objective_id'").get())for(let t of x((0,y.readFileSync)(i.default.join(process.cwd(),"db/sqlite/005_prompt_jobs_objectives.sql"),"utf-8")))try{e.exec(t)}catch(e){if(!e.message?.includes("duplicate column"))throw e}if(!e.prepare("SELECT 1 FROM pragma_table_info('prompt_jobs') WHERE name='execution_mode'").get())for(let t of x((0,y.readFileSync)(i.default.join(process.cwd(),"db/sqlite/006_prompt_jobs_execution_mode.sql"),"utf-8")))try{e.exec(t)}catch(e){if(!e.message?.includes("duplicate column"))throw e}f=new v(e)}return f}],84516)}];
56
56
 
57
57
  //# sourceMappingURL=apps_local_src_prompt-scheduler_get-store_ts_0p0aod1._.js.map
@@ -0,0 +1,5 @@
1
+ module.exports=[644384,t=>{"use strict";var e=t.i(84516),r=t.i(184951),n=t.i(11061),s=t.i(858015),o=t.i(460275),i=t.i(273406);async function a(t){let e=Date.now(),r="";try{return await (0,o.runCliResponse)({provider:t.provider,model:t.model,prompt:t.prompt,identity:t.identity,self:t.self,skills:t.skills,systemContext:t.systemContext,passthroughArgs:t.cliArgs?t.cliArgs.split(/\s+/).filter(Boolean):void 0,onDelta:t=>{r+=t},onSpawn:t.onSpawn}),{output:r,error:"",durationMs:Date.now()-e,status:"success"}}catch(t){return{output:r,error:t instanceof Error?t.message:String(t),durationMs:Date.now()-e,status:"failed"}}}function l(t){try{let e=JSON.parse(t);return e&&"object"==typeof e&&!Array.isArray(e)?e:null}catch{return null}}function u(t){return[`- id: ${t.id}`,` identifier: ${t.identifier}`,` title: ${t.title}`,` status: ${t.status}`,` assignee: ${t.assignee??"Unassigned"}`,t.url?` url: ${t.url}`:null,t.labels&&t.labels.length>0?` labels: ${t.labels.join(", ")}`:null].filter(t=>!!t).join("\n")}async function c(t){let{job:o,projectSlug:i}=t;await (0,r.ensureLinearIssueCache)({refresh:!0,projectSlug:i??void 0});let[{issues:a},l]=await Promise.all([(0,r.listLinearIssueSummaries)({limit:500}),t.projectId?(0,n.getIssueActiveAgents)(t.projectId):Promise.resolve([])]),c=new Set(l.map(t=>t.issueId)),p=a.filter(t=>!(0,s.isObjectiveLinearTerminalStatus)(t.status)&&!c.has(t.id)),d=(0,e.getPromptJobStore)().listJobs(t.projectId?{projectId:t.projectId}:void 0).filter(t=>t.id!==o.id&&"linear_worker"===t.executionMode),m=[];m.push("WORKSPACE STATE");let w=new Map;for(let t of a)w.set(t.status,(w.get(t.status)||0)+1);return m.push("","ISSUE STATUS SUMMARY",...Array.from(w.entries()).map(([t,e])=>`- ${t}: ${e} issues`)),a.length>0?m.push("","ALL LINEAR TICKETS",a.map(t=>u(t)).join("\n\n")):m.push("","ALL LINEAR TICKETS","- None."),l.length>0&&m.push("","ACTIVE SESSIONS",...l.map(t=>`- ${t.issueId}: running with ${t.agentName}`)),d.length>0&&m.push("","OTHER LINEAR WORKERS",...d.map(t=>`- ${t.name} | state: ${t.state} | last outcome: ${t.lastOutcome??"none"}`)),m.push("","GUIDING PROMPT",o.prompt.trim()||"No guiding prompt provided. Pick the highest-priority actionable ticket."),m.push("","ELIGIBLE TICKETS",p.length>0?p.map(t=>u(t)).join("\n\n"):"- None."),m.push("","---","Based on the full workspace state and the guiding prompt, what single action should be taken right now?"),{prompt:m.join("\n"),issues:a,eligibleIssues:p,activeIssueAgents:l}}async function p(t){let e=Date.now();try{let r=await c({job:t.job,projectId:t.job.projectId||void 0,projectSlug:void 0}),n=await a({...t.controllerContext,prompt:r.prompt,systemContext:'You are deciding what action a Linear workspace worker should take next.\nYou are observing the FULL Linear workspace — all teams, all issues.\nUse the GUIDING PROMPT to prioritize and decide what matters most.\nReturn ONLY raw JSON with no markdown fences or commentary.\nValid responses:\n{"action":"work_ticket","ticketId":"ticket-id","reason":"..."}\n{"action":"run_prompt","prompt":"detailed instructions","reason":"..."}\n{"action":"stop","reason":"..."}\nRules:\n- "work_ticket": ticketId must exactly match one of the ELIGIBLE TICKETS ids.\n- "run_prompt": for work not captured by existing tickets.\n- "stop": when no action should be taken now.',cliArgs:t.cliArgs,onSpawn:t.onSpawn});if("success"!==n.status)return{...n,output:n.output||"Linear worker controller failed before selecting an action."};let s=function(t){let e=t.trim();if(!e)return null;let r=l(e);if(r)return r;let n=e.indexOf("{"),s=e.lastIndexOf("}");return -1===n||s<=n?null:l(e.slice(n,s+1))}(n.output),o="string"==typeof s?.action?s.action.trim().toLowerCase():"string"==typeof s?.decision?s.decision.trim().toLowerCase():"",i="string"==typeof s?.reason?s.reason.trim():"",u=await d({action:"work"===o?"work_ticket":o,parsed:s,reason:i,job:t.job,controllerContext:t.controllerContext,sessionAgent:t.sessionAgent,eligibleIssues:r.eligibleIssues,issues:r.issues,cliArgs:t.cliArgs,onSpawn:t.onSpawn,startMs:e});return{output:u.result,error:"failed"===u.status?u.result:"",durationMs:Date.now()-e,status:u.status}}catch(t){return{output:"",error:t instanceof Error?t.message:String(t),durationMs:Date.now()-e,status:"failed"}}}async function d(t){let{action:e,parsed:r,reason:n}=t;if("stop"===e){let e=t.issues.some(t=>!(0,s.isObjectiveLinearTerminalStatus)(t.status)),r=0===t.issues.length?"No Linear tickets were found in the workspace.":0===t.eligibleIssues.length?e?"All actionable tickets already have active sessions.":"All tickets are already in a terminal state.":"The controller decided that no ticket should be started right now.",o=n||r;return{action:"stop",jobName:t.job.name,reason:o,result:`No action taken.
2
+
3
+ Reason: ${o}`,durationMs:Date.now()-t.startMs,status:"success"}}if("run_prompt"===e){let e="string"==typeof r?.prompt?r.prompt.trim():"";if(!e)return{action:"run_prompt",jobName:t.job.name,reason:n,result:"Controller returned run_prompt but provided no prompt text.",durationMs:Date.now()-t.startMs,status:"failed"};let s=await a({...t.controllerContext,prompt:e,cliArgs:t.cliArgs,onSpawn:t.onSpawn}),o="success"===s.status?(s.output||"").split("\n").filter(Boolean).slice(0,10).join("\n")||"Prompt completed.":`Prompt failed: ${s.error||"unknown error"}`;return{action:"run_prompt",jobName:t.job.name,reason:n,result:o,durationMs:Date.now()-t.startMs,status:s.status}}if("work_ticket"===e){let e="string"==typeof r?.ticketId?r.ticketId.trim():"",s=t.eligibleIssues.find(t=>t.id===e)??null;if(!s)return{action:"work_ticket",jobName:t.job.name,reason:n,result:`Controller selected an unknown ticket: ${e||"(empty)"}`,durationMs:Date.now()-t.startMs,status:"failed"};if(!t.job.projectId)return{action:"work_ticket",jobName:t.job.name,reason:n,result:"Linear worker requires a project context to start a scripted session.",durationMs:Date.now()-t.startMs,status:"failed"};let o=await (0,i.startScriptedLinearSession)({projectId:t.job.projectId,projectSlug:t.job.projectId,issue:{id:s.id,identifier:s.identifier,title:s.title,status:s.status,assignee:s.assignee},agentId:t.sessionAgent.id,scriptPrompt:t.job.scriptPrompt||void 0}),a=s.url?`[${s.identifier}](${s.url})`:s.identifier;return{action:"work_ticket",jobName:t.job.name,reason:n,result:[`Started work on ${a}: ${s.title}`,n?`Reason: ${n}`:null,`Linear run: ${o.run.id}`].filter(t=>!!t).join("\n\n"),linearRunId:o.run.id,chatRunId:o.chatRunId,durationMs:Date.now()-t.startMs,status:"success"}}return{action:e||"unknown",jobName:t.job.name,reason:n,result:`Controller returned an invalid action: ${e||"(empty)"}`,durationMs:Date.now()-t.startMs,status:"failed"}}t.s(["executeLinearWorker",0,p])}];
4
+
5
+ //# sourceMappingURL=apps_local_src_prompt-scheduler_linear-worker_ts_0ycjwem._.js.map