agent-log-viewer 1.2.0 → 1.2.2

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 (590) hide show
  1. package/dist/mcp-server.mjs +3712 -1753
  2. package/dist/runtime-host.mjs +3442 -1472
  3. package/dist/standalone/.next/BUILD_ID +1 -1
  4. package/dist/standalone/.next/app-path-routes-manifest.json +29 -27
  5. package/dist/standalone/.next/build-manifest.json +2 -2
  6. package/dist/standalone/.next/prerender-manifest.json +4 -4
  7. package/dist/standalone/.next/required-server-files.json +1 -0
  8. package/dist/standalone/.next/routes-manifest.json +12 -0
  9. package/dist/standalone/.next/server/account-migration-controller-worker.js +1 -1
  10. package/dist/standalone/.next/server/app/_global-error/page.js +2 -2
  11. package/dist/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
  12. package/dist/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  13. package/dist/standalone/.next/server/app/_global-error.html +1 -1
  14. package/dist/standalone/.next/server/app/_global-error.rsc +1 -1
  15. package/dist/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  16. package/dist/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  17. package/dist/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  18. package/dist/standalone/.next/server/app/_not-found/page.js +1 -1
  19. package/dist/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  20. package/dist/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  21. package/dist/standalone/.next/server/app/_not-found.html +1 -1
  22. package/dist/standalone/.next/server/app/_not-found.rsc +2 -2
  23. package/dist/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  24. package/dist/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  25. package/dist/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  26. package/dist/standalone/.next/server/app/api/access/route.js +1 -1
  27. package/dist/standalone/.next/server/app/api/access/route.js.nft.json +1 -1
  28. package/dist/standalone/.next/server/app/api/account-migrations/[intentId]/route.js +1 -1
  29. package/dist/standalone/.next/server/app/api/account-migrations/[intentId]/route.js.nft.json +1 -1
  30. package/dist/standalone/.next/server/app/api/account-project-bindings/route.js +1 -1
  31. package/dist/standalone/.next/server/app/api/account-project-bindings/route.js.nft.json +1 -1
  32. package/dist/standalone/.next/server/app/api/accounts/claude/[id]/status/route.js +1 -1
  33. package/dist/standalone/.next/server/app/api/accounts/claude/[id]/status/route.js.nft.json +1 -1
  34. package/dist/standalone/.next/server/app/api/accounts/claude/active/route.js +1 -1
  35. package/dist/standalone/.next/server/app/api/accounts/claude/active/route.js.nft.json +1 -1
  36. package/dist/standalone/.next/server/app/api/accounts/claude/limits/route.js +1 -1
  37. package/dist/standalone/.next/server/app/api/accounts/claude/limits/route.js.nft.json +1 -1
  38. package/dist/standalone/.next/server/app/api/accounts/claude/login/[operationId]/input/route.js +1 -1
  39. package/dist/standalone/.next/server/app/api/accounts/claude/login/[operationId]/input/route.js.nft.json +1 -1
  40. package/dist/standalone/.next/server/app/api/accounts/claude/login/[operationId]/route.js +1 -1
  41. package/dist/standalone/.next/server/app/api/accounts/claude/login/[operationId]/route.js.nft.json +1 -1
  42. package/dist/standalone/.next/server/app/api/accounts/claude/policy/route.js +1 -1
  43. package/dist/standalone/.next/server/app/api/accounts/claude/policy/route.js.nft.json +1 -1
  44. package/dist/standalone/.next/server/app/api/accounts/claude/route.js +1 -1
  45. package/dist/standalone/.next/server/app/api/accounts/claude/route.js.nft.json +1 -1
  46. package/dist/standalone/.next/server/app/api/accounts/claude/terminal/route.js +1 -1
  47. package/dist/standalone/.next/server/app/api/accounts/claude/terminal/route.js.nft.json +1 -1
  48. package/dist/standalone/.next/server/app/api/accounts/cli/route.js +1 -0
  49. package/dist/standalone/.next/server/app/api/accounts/cli/route.js.nft.json +1 -0
  50. package/dist/standalone/.next/server/app/api/accounts/cli/route_client-reference-manifest.js +1 -0
  51. package/dist/standalone/.next/server/app/api/accounts/codex/active/route.js +1 -1
  52. package/dist/standalone/.next/server/app/api/accounts/codex/active/route.js.nft.json +1 -1
  53. package/dist/standalone/.next/server/app/api/accounts/codex/limits/route.js +1 -1
  54. package/dist/standalone/.next/server/app/api/accounts/codex/limits/route.js.nft.json +1 -1
  55. package/dist/standalone/.next/server/app/api/accounts/codex/policy/route.js +1 -1
  56. package/dist/standalone/.next/server/app/api/accounts/codex/policy/route.js.nft.json +1 -1
  57. package/dist/standalone/.next/server/app/api/accounts/codex/reset-credits/route.js +2 -2
  58. package/dist/standalone/.next/server/app/api/accounts/codex/reset-credits/route.js.nft.json +1 -1
  59. package/dist/standalone/.next/server/app/api/accounts/codex/route.js +1 -1
  60. package/dist/standalone/.next/server/app/api/accounts/codex/route.js.nft.json +1 -1
  61. package/dist/standalone/.next/server/app/api/accounts/codex/terminal/route.js +1 -1
  62. package/dist/standalone/.next/server/app/api/accounts/codex/terminal/route.js.nft.json +1 -1
  63. package/dist/standalone/.next/server/app/api/accounts/route.js +1 -1
  64. package/dist/standalone/.next/server/app/api/accounts/route.js.nft.json +1 -1
  65. package/dist/standalone/.next/server/app/api/agent/route.js +1 -1
  66. package/dist/standalone/.next/server/app/api/agent/route.js.nft.json +1 -1
  67. package/dist/standalone/.next/server/app/api/agent/snapshot/route.js +1 -1
  68. package/dist/standalone/.next/server/app/api/agent/snapshot/route.js.nft.json +1 -1
  69. package/dist/standalone/.next/server/app/api/answer/route.js +1 -1
  70. package/dist/standalone/.next/server/app/api/answer/route.js.nft.json +1 -1
  71. package/dist/standalone/.next/server/app/api/artifact/route.js +1 -1
  72. package/dist/standalone/.next/server/app/api/artifact/route.js.nft.json +1 -1
  73. package/dist/standalone/.next/server/app/api/attach-command/route.js +1 -1
  74. package/dist/standalone/.next/server/app/api/attach-command/route.js.nft.json +1 -1
  75. package/dist/standalone/.next/server/app/api/attention/[id]/route.js +1 -1
  76. package/dist/standalone/.next/server/app/api/attention/[id]/route.js.nft.json +1 -1
  77. package/dist/standalone/.next/server/app/api/attention/route.js +1 -1
  78. package/dist/standalone/.next/server/app/api/attention/route.js.nft.json +1 -1
  79. package/dist/standalone/.next/server/app/api/board/route.js +1 -1
  80. package/dist/standalone/.next/server/app/api/board/route.js.nft.json +1 -1
  81. package/dist/standalone/.next/server/app/api/bridge/route.js +1 -1
  82. package/dist/standalone/.next/server/app/api/bridge/route.js.nft.json +1 -1
  83. package/dist/standalone/.next/server/app/api/conversation-host/route.js +1 -1
  84. package/dist/standalone/.next/server/app/api/conversation-host/route.js.nft.json +1 -1
  85. package/dist/standalone/.next/server/app/api/conversation-host/targets/route.js +1 -1
  86. package/dist/standalone/.next/server/app/api/conversation-host/targets/route.js.nft.json +1 -1
  87. package/dist/standalone/.next/server/app/api/conversations/[conversationId]/migration/route.js +1 -1
  88. package/dist/standalone/.next/server/app/api/conversations/[conversationId]/migration/route.js.nft.json +1 -1
  89. package/dist/standalone/.next/server/app/api/conversations/route.js +1 -1
  90. package/dist/standalone/.next/server/app/api/conversations/route.js.nft.json +1 -1
  91. package/dist/standalone/.next/server/app/api/files/route.js +6 -3
  92. package/dist/standalone/.next/server/app/api/files/route.js.nft.json +1 -1
  93. package/dist/standalone/.next/server/app/api/flows/[id]/route.js +1 -1
  94. package/dist/standalone/.next/server/app/api/flows/[id]/route.js.nft.json +1 -1
  95. package/dist/standalone/.next/server/app/api/flows/route.js +1 -1
  96. package/dist/standalone/.next/server/app/api/flows/route.js.nft.json +1 -1
  97. package/dist/standalone/.next/server/app/api/image/route.js +1 -1
  98. package/dist/standalone/.next/server/app/api/image/route.js.nft.json +1 -1
  99. package/dist/standalone/.next/server/app/api/inbox/route.js +2 -2
  100. package/dist/standalone/.next/server/app/api/inbox/route.js.nft.json +1 -1
  101. package/dist/standalone/.next/server/app/api/lifecycle/reaper/route.js +1 -1
  102. package/dist/standalone/.next/server/app/api/lifecycle/reaper/route.js.nft.json +1 -1
  103. package/dist/standalone/.next/server/app/api/limits/history/route.js +1 -1
  104. package/dist/standalone/.next/server/app/api/limits/history/route.js.nft.json +1 -1
  105. package/dist/standalone/.next/server/app/api/limits/route.js +1 -1
  106. package/dist/standalone/.next/server/app/api/limits/route.js.nft.json +1 -1
  107. package/dist/standalone/.next/server/app/api/log/preflight/route.js +1 -1
  108. package/dist/standalone/.next/server/app/api/log/preflight/route.js.nft.json +1 -1
  109. package/dist/standalone/.next/server/app/api/log/project-delete/route.js +1 -1
  110. package/dist/standalone/.next/server/app/api/log/project-delete/route.js.nft.json +1 -1
  111. package/dist/standalone/.next/server/app/api/log/provenance/route.js +14 -12
  112. package/dist/standalone/.next/server/app/api/log/provenance/route.js.nft.json +1 -1
  113. package/dist/standalone/.next/server/app/api/log/route.js +1 -1
  114. package/dist/standalone/.next/server/app/api/log/route.js.nft.json +1 -1
  115. package/dist/standalone/.next/server/app/api/log/suggestions/route.js +2 -2
  116. package/dist/standalone/.next/server/app/api/log/suggestions/route.js.nft.json +1 -1
  117. package/dist/standalone/.next/server/app/api/logs/route.js +1 -1
  118. package/dist/standalone/.next/server/app/api/logs/route.js.nft.json +1 -1
  119. package/dist/standalone/.next/server/app/api/logs/stream/route.js +2 -2
  120. package/dist/standalone/.next/server/app/api/logs/stream/route.js.nft.json +1 -1
  121. package/dist/standalone/.next/server/app/api/monitor/runs/route.js +1 -1
  122. package/dist/standalone/.next/server/app/api/monitor/runs/route.js.nft.json +1 -1
  123. package/dist/standalone/.next/server/app/api/monitor/seat-tick/route.js +13 -14
  124. package/dist/standalone/.next/server/app/api/monitor/seat-tick/route.js.nft.json +1 -1
  125. package/dist/standalone/.next/server/app/api/monitor/seat-tick/settings/route.js +2 -2
  126. package/dist/standalone/.next/server/app/api/monitor/seat-tick/settings/route.js.nft.json +1 -1
  127. package/dist/standalone/.next/server/app/api/onboarding/route.js +1 -0
  128. package/dist/standalone/.next/server/app/api/onboarding/route.js.nft.json +1 -0
  129. package/dist/standalone/.next/server/app/api/onboarding/route_client-reference-manifest.js +1 -0
  130. package/dist/standalone/.next/server/app/api/orchestrator/rotate/route.js +1 -1
  131. package/dist/standalone/.next/server/app/api/orchestrator/rotate/route.js.nft.json +1 -1
  132. package/dist/standalone/.next/server/app/api/orchestrator/seat/route.js +1 -1
  133. package/dist/standalone/.next/server/app/api/orchestrator/seat/route.js.nft.json +1 -1
  134. package/dist/standalone/.next/server/app/api/orchestrator/seat/status/route.js +1 -3
  135. package/dist/standalone/.next/server/app/api/orchestrator/seat/status/route.js.nft.json +1 -1
  136. package/dist/standalone/.next/server/app/api/pipelines/[id]/route.js +1 -1
  137. package/dist/standalone/.next/server/app/api/pipelines/[id]/route.js.nft.json +1 -1
  138. package/dist/standalone/.next/server/app/api/pipelines/preflight/route.js +1 -1
  139. package/dist/standalone/.next/server/app/api/pipelines/preflight/route.js.nft.json +1 -1
  140. package/dist/standalone/.next/server/app/api/pipelines/route.js +1 -1
  141. package/dist/standalone/.next/server/app/api/pipelines/route.js.nft.json +1 -1
  142. package/dist/standalone/.next/server/app/api/pipelines/tick/route.js +1 -2
  143. package/dist/standalone/.next/server/app/api/pipelines/tick/route.js.nft.json +1 -1
  144. package/dist/standalone/.next/server/app/api/proc/route.js +1 -1
  145. package/dist/standalone/.next/server/app/api/proc/route.js.nft.json +1 -1
  146. package/dist/standalone/.next/server/app/api/projects/create/route.js +2 -2
  147. package/dist/standalone/.next/server/app/api/projects/create/route.js.nft.json +1 -1
  148. package/dist/standalone/.next/server/app/api/projects/crown/route.js +1 -1
  149. package/dist/standalone/.next/server/app/api/projects/crown/route.js.nft.json +1 -1
  150. package/dist/standalone/.next/server/app/api/projects/directories/route.js +1 -1
  151. package/dist/standalone/.next/server/app/api/projects/directories/route.js.nft.json +1 -1
  152. package/dist/standalone/.next/server/app/api/push/route.js +2 -2
  153. package/dist/standalone/.next/server/app/api/push/route.js.nft.json +1 -1
  154. package/dist/standalone/.next/server/app/api/resources/route.js +1 -1
  155. package/dist/standalone/.next/server/app/api/resources/route.js.nft.json +1 -1
  156. package/dist/standalone/.next/server/app/api/roles/route.js +3 -3
  157. package/dist/standalone/.next/server/app/api/roles/route.js.nft.json +1 -1
  158. package/dist/standalone/.next/server/app/api/runtime/answer/route.js +1 -1
  159. package/dist/standalone/.next/server/app/api/runtime/answer/route.js.nft.json +1 -1
  160. package/dist/standalone/.next/server/app/api/runtime/deployments/[deploymentId]/route.js +1 -1
  161. package/dist/standalone/.next/server/app/api/runtime/deployments/[deploymentId]/route.js.nft.json +1 -1
  162. package/dist/standalone/.next/server/app/api/runtime/deployments/capabilities/v1/route.js +1 -1
  163. package/dist/standalone/.next/server/app/api/runtime/deployments/capabilities/v1/route.js.nft.json +1 -1
  164. package/dist/standalone/.next/server/app/api/runtime/deployments/route.js +1 -1
  165. package/dist/standalone/.next/server/app/api/runtime/deployments/route.js.nft.json +1 -1
  166. package/dist/standalone/.next/server/app/api/runtime/hosts/route.js +1 -1
  167. package/dist/standalone/.next/server/app/api/runtime/hosts/route.js.nft.json +1 -1
  168. package/dist/standalone/.next/server/app/api/runtime/inject/route.js +1 -1
  169. package/dist/standalone/.next/server/app/api/runtime/inject/route.js.nft.json +1 -1
  170. package/dist/standalone/.next/server/app/api/runtime/interrupt/route.js +1 -1
  171. package/dist/standalone/.next/server/app/api/runtime/interrupt/route.js.nft.json +1 -1
  172. package/dist/standalone/.next/server/app/api/runtime/operations/[operationId]/route.js +1 -1
  173. package/dist/standalone/.next/server/app/api/runtime/operations/[operationId]/route.js.nft.json +1 -1
  174. package/dist/standalone/.next/server/app/api/runtime/operations/route.js +1 -1
  175. package/dist/standalone/.next/server/app/api/runtime/operations/route.js.nft.json +1 -1
  176. package/dist/standalone/.next/server/app/api/runtime/queue/route.js +1 -1
  177. package/dist/standalone/.next/server/app/api/runtime/queue/route.js.nft.json +1 -1
  178. package/dist/standalone/.next/server/app/api/runtime/realtime/route.js +1 -1
  179. package/dist/standalone/.next/server/app/api/runtime/realtime/route.js.nft.json +1 -1
  180. package/dist/standalone/.next/server/app/api/runtime/send/route.js +1 -1
  181. package/dist/standalone/.next/server/app/api/runtime/send/route.js.nft.json +1 -1
  182. package/dist/standalone/.next/server/app/api/runtime/snapshot/route.js +1 -1
  183. package/dist/standalone/.next/server/app/api/runtime/snapshot/route.js.nft.json +1 -1
  184. package/dist/standalone/.next/server/app/api/runtime/spawn/route.js +1 -1
  185. package/dist/standalone/.next/server/app/api/runtime/spawn/route.js.nft.json +1 -1
  186. package/dist/standalone/.next/server/app/api/runtime/steer/route.js +1 -1
  187. package/dist/standalone/.next/server/app/api/runtime/steer/route.js.nft.json +1 -1
  188. package/dist/standalone/.next/server/app/api/runtime/stream/route.js +2 -2
  189. package/dist/standalone/.next/server/app/api/runtime/stream/route.js.nft.json +1 -1
  190. package/dist/standalone/.next/server/app/api/search/transcripts/route.js +1 -1
  191. package/dist/standalone/.next/server/app/api/search/transcripts/route.js.nft.json +1 -1
  192. package/dist/standalone/.next/server/app/api/session/route.js +1 -1
  193. package/dist/standalone/.next/server/app/api/session/route.js.nft.json +1 -1
  194. package/dist/standalone/.next/server/app/api/session/supersedence/route.js +1 -1
  195. package/dist/standalone/.next/server/app/api/session/supersedence/route.js.nft.json +1 -1
  196. package/dist/standalone/.next/server/app/api/session/title/route.js +1 -1
  197. package/dist/standalone/.next/server/app/api/session/title/route.js.nft.json +1 -1
  198. package/dist/standalone/.next/server/app/api/spawn/policy/route.js +2 -2
  199. package/dist/standalone/.next/server/app/api/spawn/policy/route.js.nft.json +1 -1
  200. package/dist/standalone/.next/server/app/api/spawn/route.js +1 -1
  201. package/dist/standalone/.next/server/app/api/spawn/route.js.nft.json +1 -1
  202. package/dist/standalone/.next/server/app/api/spawn/validate/route.js +1 -1
  203. package/dist/standalone/.next/server/app/api/spawn/validate/route.js.nft.json +1 -1
  204. package/dist/standalone/.next/server/app/api/staging/route.js +2 -2
  205. package/dist/standalone/.next/server/app/api/staging/route.js.nft.json +1 -1
  206. package/dist/standalone/.next/server/app/api/task-attachments/route.js +2 -2
  207. package/dist/standalone/.next/server/app/api/task-attachments/route.js.nft.json +1 -1
  208. package/dist/standalone/.next/server/app/api/tasks/[id]/assignment/route.js +1 -1
  209. package/dist/standalone/.next/server/app/api/tasks/[id]/assignment/route.js.nft.json +1 -1
  210. package/dist/standalone/.next/server/app/api/tasks/[id]/route.js +1 -1
  211. package/dist/standalone/.next/server/app/api/tasks/[id]/route.js.nft.json +1 -1
  212. package/dist/standalone/.next/server/app/api/tasks/[id]/send/route.js +1 -1
  213. package/dist/standalone/.next/server/app/api/tasks/[id]/send/route.js.nft.json +1 -1
  214. package/dist/standalone/.next/server/app/api/tasks/[id]/spawn/route.js +1 -1
  215. package/dist/standalone/.next/server/app/api/tasks/[id]/spawn/route.js.nft.json +1 -1
  216. package/dist/standalone/.next/server/app/api/tasks/curator/route.js +1 -1
  217. package/dist/standalone/.next/server/app/api/tasks/curator/route.js.nft.json +1 -1
  218. package/dist/standalone/.next/server/app/api/tasks/route.js +1 -1
  219. package/dist/standalone/.next/server/app/api/tasks/route.js.nft.json +1 -1
  220. package/dist/standalone/.next/server/app/api/telegram/reports/route.js +1 -1
  221. package/dist/standalone/.next/server/app/api/telegram/reports/route.js.nft.json +1 -1
  222. package/dist/standalone/.next/server/app/api/telegram/route.js +1 -1
  223. package/dist/standalone/.next/server/app/api/telegram/route.js.nft.json +1 -1
  224. package/dist/standalone/.next/server/app/api/timeline/route.js +1 -1
  225. package/dist/standalone/.next/server/app/api/timeline/route.js.nft.json +1 -1
  226. package/dist/standalone/.next/server/app/api/tmux/route.js +1 -1
  227. package/dist/standalone/.next/server/app/api/tmux/route.js.nft.json +1 -1
  228. package/dist/standalone/.next/server/app/api/tmux/targets/route.js +1 -1
  229. package/dist/standalone/.next/server/app/api/tmux/targets/route.js.nft.json +1 -1
  230. package/dist/standalone/.next/server/app/api/transcribe/backend/route.js +2 -2
  231. package/dist/standalone/.next/server/app/api/transcribe/backend/route.js.nft.json +1 -1
  232. package/dist/standalone/.next/server/app/api/transcribe/route.js +2 -2
  233. package/dist/standalone/.next/server/app/api/transcribe/route.js.nft.json +1 -1
  234. package/dist/standalone/.next/server/app/api/transcribe/token/route.js +2 -2
  235. package/dist/standalone/.next/server/app/api/transcribe/token/route.js.nft.json +1 -1
  236. package/dist/standalone/.next/server/app/api/tts/backend/route.js +1 -1
  237. package/dist/standalone/.next/server/app/api/tts/backend/route.js.nft.json +1 -1
  238. package/dist/standalone/.next/server/app/api/tts/route.js +2 -2
  239. package/dist/standalone/.next/server/app/api/tts/route.js.nft.json +1 -1
  240. package/dist/standalone/.next/server/app/api/view/presence/route.js +2 -1
  241. package/dist/standalone/.next/server/app/api/view/presence/route.js.nft.json +1 -1
  242. package/dist/standalone/.next/server/app/api/workflows/[id]/route.js +1 -1
  243. package/dist/standalone/.next/server/app/api/workflows/[id]/route.js.nft.json +1 -1
  244. package/dist/standalone/.next/server/app/api/workflows/route.js +1 -1
  245. package/dist/standalone/.next/server/app/api/workflows/route.js.nft.json +1 -1
  246. package/dist/standalone/.next/server/app/favicon.ico/route.js +1 -1
  247. package/dist/standalone/.next/server/app/favicon.ico/route.js.nft.json +1 -1
  248. package/dist/standalone/.next/server/app/index.html +1 -1
  249. package/dist/standalone/.next/server/app/index.rsc +3 -3
  250. package/dist/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
  251. package/dist/standalone/.next/server/app/index.segments/_full.segment.rsc +3 -3
  252. package/dist/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  253. package/dist/standalone/.next/server/app/page.js +20 -20
  254. package/dist/standalone/.next/server/app/page.js.nft.json +1 -1
  255. package/dist/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  256. package/dist/standalone/.next/server/app-paths-manifest.json +29 -27
  257. package/dist/standalone/.next/server/chunks/107.js +1 -1
  258. package/dist/standalone/.next/server/chunks/1106.js +5 -0
  259. package/dist/standalone/.next/server/chunks/112.js +1 -0
  260. package/dist/standalone/.next/server/chunks/1406.js +37 -170
  261. package/dist/standalone/.next/server/chunks/1585.js +3 -3
  262. package/dist/standalone/.next/server/chunks/160.js +18 -18
  263. package/dist/standalone/.next/server/chunks/1617.js +2 -2
  264. package/dist/standalone/.next/server/chunks/1849.js +1 -1
  265. package/dist/standalone/.next/server/chunks/1952.js +1 -1
  266. package/dist/standalone/.next/server/chunks/2150.js +1 -1
  267. package/dist/standalone/.next/server/chunks/2499.js +1 -0
  268. package/dist/standalone/.next/server/chunks/2555.js +1 -1
  269. package/dist/standalone/.next/server/chunks/2589.js +127 -0
  270. package/dist/standalone/.next/server/chunks/261.js +1 -0
  271. package/dist/standalone/.next/server/chunks/2744.js +3 -0
  272. package/dist/standalone/.next/server/chunks/2857.js +1 -1
  273. package/dist/standalone/.next/server/chunks/286.js +22 -0
  274. package/dist/standalone/.next/server/chunks/2914.js +20 -21
  275. package/dist/standalone/.next/server/chunks/2916.js +1 -0
  276. package/dist/standalone/.next/server/chunks/3086.js +1 -1
  277. package/dist/standalone/.next/server/chunks/3131.js +1 -1
  278. package/dist/standalone/.next/server/chunks/3407.js +1 -1
  279. package/dist/standalone/.next/server/chunks/3509.js +1 -0
  280. package/dist/standalone/.next/server/chunks/3570.js +1 -1
  281. package/dist/standalone/.next/server/chunks/3696.js +5 -0
  282. package/dist/standalone/.next/server/chunks/3743.js +10 -8
  283. package/dist/standalone/.next/server/chunks/3784.js +5 -0
  284. package/dist/standalone/.next/server/chunks/3830.js +1 -1
  285. package/dist/standalone/.next/server/chunks/3957.js +1 -0
  286. package/dist/standalone/.next/server/chunks/4037.js +1 -0
  287. package/dist/standalone/.next/server/chunks/4651.js +1 -1
  288. package/dist/standalone/.next/server/chunks/4972.js +38 -16
  289. package/dist/standalone/.next/server/chunks/53.js +1 -0
  290. package/dist/standalone/.next/server/chunks/5408.js +1 -0
  291. package/dist/standalone/.next/server/chunks/5465.js +156 -0
  292. package/dist/standalone/.next/server/chunks/5545.js +1 -1
  293. package/dist/standalone/.next/server/chunks/568.js +1 -1
  294. package/dist/standalone/.next/server/chunks/5771.js +1 -1
  295. package/dist/standalone/.next/server/chunks/6023.js +1 -1
  296. package/dist/standalone/.next/server/chunks/6211.js +1 -0
  297. package/dist/standalone/.next/server/chunks/6289.js +1 -2
  298. package/dist/standalone/.next/server/chunks/6418.js +1 -0
  299. package/dist/standalone/.next/server/chunks/644.js +1 -1
  300. package/dist/standalone/.next/server/chunks/6453.js +1 -1
  301. package/dist/standalone/.next/server/chunks/6522.js +1 -1
  302. package/dist/standalone/.next/server/chunks/6796.js +1 -1
  303. package/dist/standalone/.next/server/chunks/6826.js +3 -3
  304. package/dist/standalone/.next/server/chunks/6942.js +3 -3
  305. package/dist/standalone/.next/server/chunks/6978.js +1 -1
  306. package/dist/standalone/.next/server/chunks/7008.js +21 -19
  307. package/dist/standalone/.next/server/chunks/7192.js +1 -1
  308. package/dist/standalone/.next/server/chunks/7238.js +2 -2
  309. package/dist/standalone/.next/server/chunks/7294.js +1 -0
  310. package/dist/standalone/.next/server/chunks/7722.js +1 -1
  311. package/dist/standalone/.next/server/chunks/781.js +17 -17
  312. package/dist/standalone/.next/server/chunks/8027.js +1 -1
  313. package/dist/standalone/.next/server/chunks/8330.js +1 -0
  314. package/dist/standalone/.next/server/chunks/8444.js +1 -1
  315. package/dist/standalone/.next/server/chunks/8465.js +2 -2
  316. package/dist/standalone/.next/server/chunks/8512.js +1 -1
  317. package/dist/standalone/.next/server/chunks/8513.js +2 -2
  318. package/dist/standalone/.next/server/chunks/8617.js +1 -1
  319. package/dist/standalone/.next/server/chunks/8817.js +2 -2
  320. package/dist/standalone/.next/server/chunks/8966.js +2 -2
  321. package/dist/standalone/.next/server/chunks/8985.js +1 -1
  322. package/dist/standalone/.next/server/chunks/8996.js +1 -1
  323. package/dist/standalone/.next/server/chunks/9006.js +1 -0
  324. package/dist/standalone/.next/server/chunks/9060.js +4 -0
  325. package/dist/standalone/.next/server/chunks/9296.js +20 -21
  326. package/dist/standalone/.next/server/chunks/9298.js +1 -2
  327. package/dist/standalone/.next/server/chunks/9307.js +1 -1
  328. package/dist/standalone/.next/server/chunks/9360.js +14 -12
  329. package/dist/standalone/.next/server/chunks/9517.js +1 -1
  330. package/dist/standalone/.next/server/chunks/9611.js +1 -0
  331. package/dist/standalone/.next/server/chunks/9822.js +1 -1
  332. package/dist/standalone/.next/server/chunks/9839.js +5 -0
  333. package/dist/standalone/.next/server/chunks/9867.js +1 -0
  334. package/dist/standalone/.next/server/chunks/9940.js +37 -15
  335. package/dist/standalone/.next/server/chunks/9998.js +1 -1
  336. package/dist/standalone/.next/server/file-scanner-worker.js +2 -2
  337. package/dist/standalone/.next/server/files-response-worker.js +2 -2
  338. package/dist/standalone/.next/server/functions-config-manifest.json +2 -0
  339. package/dist/standalone/.next/server/middleware-build-manifest.js +1 -1
  340. package/dist/standalone/.next/server/middleware.js +3 -3
  341. package/dist/standalone/.next/server/pages/404.html +1 -1
  342. package/dist/standalone/.next/server/pages/500.html +1 -1
  343. package/dist/standalone/.next/server/resource-collector-worker.js +1 -1
  344. package/dist/standalone/.next/server/server-reference-manifest.json +1 -1
  345. package/dist/standalone/.next/server/state-backup-worker.js +3 -0
  346. package/dist/standalone/.next/server/wakatime-sync-worker.js +1 -1
  347. package/dist/standalone/.next/static/chunks/9591-0fd6a5a4172de16d.js +1 -0
  348. package/dist/standalone/.next/static/chunks/app/_global-error/page-151390fbd8c93c25.js +1 -0
  349. package/dist/standalone/.next/static/chunks/app/api/access/route-151390fbd8c93c25.js +1 -0
  350. package/dist/standalone/.next/static/chunks/app/api/account-migrations/[intentId]/route-151390fbd8c93c25.js +1 -0
  351. package/dist/standalone/.next/static/chunks/app/api/account-project-bindings/route-151390fbd8c93c25.js +1 -0
  352. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/[id]/status/route-151390fbd8c93c25.js +1 -0
  353. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/active/route-151390fbd8c93c25.js +1 -0
  354. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/limits/route-151390fbd8c93c25.js +1 -0
  355. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/login/[operationId]/input/route-151390fbd8c93c25.js +1 -0
  356. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/login/[operationId]/route-151390fbd8c93c25.js +1 -0
  357. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/policy/route-151390fbd8c93c25.js +1 -0
  358. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/route-151390fbd8c93c25.js +1 -0
  359. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/terminal/route-151390fbd8c93c25.js +1 -0
  360. package/dist/standalone/.next/static/chunks/app/api/accounts/cli/route-151390fbd8c93c25.js +1 -0
  361. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/active/route-151390fbd8c93c25.js +1 -0
  362. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/limits/route-151390fbd8c93c25.js +1 -0
  363. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/policy/route-151390fbd8c93c25.js +1 -0
  364. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/reset-credits/route-151390fbd8c93c25.js +1 -0
  365. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/route-151390fbd8c93c25.js +1 -0
  366. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/terminal/route-151390fbd8c93c25.js +1 -0
  367. package/dist/standalone/.next/static/chunks/app/api/accounts/route-151390fbd8c93c25.js +1 -0
  368. package/dist/standalone/.next/static/chunks/app/api/agent/route-151390fbd8c93c25.js +1 -0
  369. package/dist/standalone/.next/static/chunks/app/api/agent/snapshot/route-151390fbd8c93c25.js +1 -0
  370. package/dist/standalone/.next/static/chunks/app/api/answer/route-151390fbd8c93c25.js +1 -0
  371. package/dist/standalone/.next/static/chunks/app/api/artifact/route-151390fbd8c93c25.js +1 -0
  372. package/dist/standalone/.next/static/chunks/app/api/attach-command/route-151390fbd8c93c25.js +1 -0
  373. package/dist/standalone/.next/static/chunks/app/api/attention/[id]/route-151390fbd8c93c25.js +1 -0
  374. package/dist/standalone/.next/static/chunks/app/api/attention/route-151390fbd8c93c25.js +1 -0
  375. package/dist/standalone/.next/static/chunks/app/api/board/route-151390fbd8c93c25.js +1 -0
  376. package/dist/standalone/.next/static/chunks/app/api/bridge/route-151390fbd8c93c25.js +1 -0
  377. package/dist/standalone/.next/static/chunks/app/api/conversation-host/route-151390fbd8c93c25.js +1 -0
  378. package/dist/standalone/.next/static/chunks/app/api/conversation-host/targets/route-151390fbd8c93c25.js +1 -0
  379. package/dist/standalone/.next/static/chunks/app/api/conversations/[conversationId]/migration/route-151390fbd8c93c25.js +1 -0
  380. package/dist/standalone/.next/static/chunks/app/api/conversations/route-151390fbd8c93c25.js +1 -0
  381. package/dist/standalone/.next/static/chunks/app/api/files/route-151390fbd8c93c25.js +1 -0
  382. package/dist/standalone/.next/static/chunks/app/api/flows/[id]/route-151390fbd8c93c25.js +1 -0
  383. package/dist/standalone/.next/static/chunks/app/api/flows/route-151390fbd8c93c25.js +1 -0
  384. package/dist/standalone/.next/static/chunks/app/api/image/route-151390fbd8c93c25.js +1 -0
  385. package/dist/standalone/.next/static/chunks/app/api/inbox/route-151390fbd8c93c25.js +1 -0
  386. package/dist/standalone/.next/static/chunks/app/api/lifecycle/reaper/route-151390fbd8c93c25.js +1 -0
  387. package/dist/standalone/.next/static/chunks/app/api/limits/history/route-151390fbd8c93c25.js +1 -0
  388. package/dist/standalone/.next/static/chunks/app/api/limits/route-151390fbd8c93c25.js +1 -0
  389. package/dist/standalone/.next/static/chunks/app/api/log/preflight/route-151390fbd8c93c25.js +1 -0
  390. package/dist/standalone/.next/static/chunks/app/api/log/project-delete/route-151390fbd8c93c25.js +1 -0
  391. package/dist/standalone/.next/static/chunks/app/api/log/provenance/route-151390fbd8c93c25.js +1 -0
  392. package/dist/standalone/.next/static/chunks/app/api/log/route-151390fbd8c93c25.js +1 -0
  393. package/dist/standalone/.next/static/chunks/app/api/log/suggestions/route-151390fbd8c93c25.js +1 -0
  394. package/dist/standalone/.next/static/chunks/app/api/logs/route-151390fbd8c93c25.js +1 -0
  395. package/dist/standalone/.next/static/chunks/app/api/logs/stream/route-151390fbd8c93c25.js +1 -0
  396. package/dist/standalone/.next/static/chunks/app/api/monitor/runs/route-151390fbd8c93c25.js +1 -0
  397. package/dist/standalone/.next/static/chunks/app/api/monitor/seat-tick/route-151390fbd8c93c25.js +1 -0
  398. package/dist/standalone/.next/static/chunks/app/api/monitor/seat-tick/settings/route-151390fbd8c93c25.js +1 -0
  399. package/dist/standalone/.next/static/chunks/app/api/onboarding/route-151390fbd8c93c25.js +1 -0
  400. package/dist/standalone/.next/static/chunks/app/api/orchestrator/rotate/route-151390fbd8c93c25.js +1 -0
  401. package/dist/standalone/.next/static/chunks/app/api/orchestrator/seat/route-151390fbd8c93c25.js +1 -0
  402. package/dist/standalone/.next/static/chunks/app/api/orchestrator/seat/status/route-151390fbd8c93c25.js +1 -0
  403. package/dist/standalone/.next/static/chunks/app/api/pipelines/[id]/route-151390fbd8c93c25.js +1 -0
  404. package/dist/standalone/.next/static/chunks/app/api/pipelines/preflight/route-151390fbd8c93c25.js +1 -0
  405. package/dist/standalone/.next/static/chunks/app/api/pipelines/route-151390fbd8c93c25.js +1 -0
  406. package/dist/standalone/.next/static/chunks/app/api/pipelines/tick/route-151390fbd8c93c25.js +1 -0
  407. package/dist/standalone/.next/static/chunks/app/api/proc/route-151390fbd8c93c25.js +1 -0
  408. package/dist/standalone/.next/static/chunks/app/api/projects/create/route-151390fbd8c93c25.js +1 -0
  409. package/dist/standalone/.next/static/chunks/app/api/projects/crown/route-151390fbd8c93c25.js +1 -0
  410. package/dist/standalone/.next/static/chunks/app/api/projects/directories/route-151390fbd8c93c25.js +1 -0
  411. package/dist/standalone/.next/static/chunks/app/api/push/route-151390fbd8c93c25.js +1 -0
  412. package/dist/standalone/.next/static/chunks/app/api/resources/route-151390fbd8c93c25.js +1 -0
  413. package/dist/standalone/.next/static/chunks/app/api/roles/route-151390fbd8c93c25.js +1 -0
  414. package/dist/standalone/.next/static/chunks/app/api/runtime/answer/route-151390fbd8c93c25.js +1 -0
  415. package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/[deploymentId]/route-151390fbd8c93c25.js +1 -0
  416. package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/capabilities/v1/route-151390fbd8c93c25.js +1 -0
  417. package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/route-151390fbd8c93c25.js +1 -0
  418. package/dist/standalone/.next/static/chunks/app/api/runtime/hosts/route-151390fbd8c93c25.js +1 -0
  419. package/dist/standalone/.next/static/chunks/app/api/runtime/inject/route-151390fbd8c93c25.js +1 -0
  420. package/dist/standalone/.next/static/chunks/app/api/runtime/interrupt/route-151390fbd8c93c25.js +1 -0
  421. package/dist/standalone/.next/static/chunks/app/api/runtime/operations/[operationId]/route-151390fbd8c93c25.js +1 -0
  422. package/dist/standalone/.next/static/chunks/app/api/runtime/operations/route-151390fbd8c93c25.js +1 -0
  423. package/dist/standalone/.next/static/chunks/app/api/runtime/queue/route-151390fbd8c93c25.js +1 -0
  424. package/dist/standalone/.next/static/chunks/app/api/runtime/realtime/route-151390fbd8c93c25.js +1 -0
  425. package/dist/standalone/.next/static/chunks/app/api/runtime/send/route-151390fbd8c93c25.js +1 -0
  426. package/dist/standalone/.next/static/chunks/app/api/runtime/snapshot/route-151390fbd8c93c25.js +1 -0
  427. package/dist/standalone/.next/static/chunks/app/api/runtime/spawn/route-151390fbd8c93c25.js +1 -0
  428. package/dist/standalone/.next/static/chunks/app/api/runtime/steer/route-151390fbd8c93c25.js +1 -0
  429. package/dist/standalone/.next/static/chunks/app/api/runtime/stream/route-151390fbd8c93c25.js +1 -0
  430. package/dist/standalone/.next/static/chunks/app/api/search/transcripts/route-151390fbd8c93c25.js +1 -0
  431. package/dist/standalone/.next/static/chunks/app/api/session/route-151390fbd8c93c25.js +1 -0
  432. package/dist/standalone/.next/static/chunks/app/api/session/supersedence/route-151390fbd8c93c25.js +1 -0
  433. package/dist/standalone/.next/static/chunks/app/api/session/title/route-151390fbd8c93c25.js +1 -0
  434. package/dist/standalone/.next/static/chunks/app/api/spawn/policy/route-151390fbd8c93c25.js +1 -0
  435. package/dist/standalone/.next/static/chunks/app/api/spawn/route-151390fbd8c93c25.js +1 -0
  436. package/dist/standalone/.next/static/chunks/app/api/spawn/validate/route-151390fbd8c93c25.js +1 -0
  437. package/dist/standalone/.next/static/chunks/app/api/staging/route-151390fbd8c93c25.js +1 -0
  438. package/dist/standalone/.next/static/chunks/app/api/task-attachments/route-151390fbd8c93c25.js +1 -0
  439. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/assignment/route-151390fbd8c93c25.js +1 -0
  440. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/route-151390fbd8c93c25.js +1 -0
  441. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/send/route-151390fbd8c93c25.js +1 -0
  442. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/spawn/route-151390fbd8c93c25.js +1 -0
  443. package/dist/standalone/.next/static/chunks/app/api/tasks/curator/route-151390fbd8c93c25.js +1 -0
  444. package/dist/standalone/.next/static/chunks/app/api/tasks/route-151390fbd8c93c25.js +1 -0
  445. package/dist/standalone/.next/static/chunks/app/api/telegram/reports/route-151390fbd8c93c25.js +1 -0
  446. package/dist/standalone/.next/static/chunks/app/api/telegram/route-151390fbd8c93c25.js +1 -0
  447. package/dist/standalone/.next/static/chunks/app/api/timeline/route-151390fbd8c93c25.js +1 -0
  448. package/dist/standalone/.next/static/chunks/app/api/tmux/route-151390fbd8c93c25.js +1 -0
  449. package/dist/standalone/.next/static/chunks/app/api/tmux/targets/route-151390fbd8c93c25.js +1 -0
  450. package/dist/standalone/.next/static/chunks/app/api/transcribe/backend/route-151390fbd8c93c25.js +1 -0
  451. package/dist/standalone/.next/static/chunks/app/api/transcribe/route-151390fbd8c93c25.js +1 -0
  452. package/dist/standalone/.next/static/chunks/app/api/transcribe/token/route-151390fbd8c93c25.js +1 -0
  453. package/dist/standalone/.next/static/chunks/app/api/tts/backend/route-151390fbd8c93c25.js +1 -0
  454. package/dist/standalone/.next/static/chunks/app/api/tts/route-151390fbd8c93c25.js +1 -0
  455. package/dist/standalone/.next/static/chunks/app/api/view/presence/route-151390fbd8c93c25.js +1 -0
  456. package/dist/standalone/.next/static/chunks/app/api/workflows/[id]/route-151390fbd8c93c25.js +1 -0
  457. package/dist/standalone/.next/static/chunks/app/api/workflows/route-151390fbd8c93c25.js +1 -0
  458. package/dist/standalone/.next/static/chunks/app/page-a2e19d755e17b569.js +125 -0
  459. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-151390fbd8c93c25.js +1 -0
  460. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-151390fbd8c93c25.js +1 -0
  461. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-151390fbd8c93c25.js +1 -0
  462. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-151390fbd8c93c25.js +1 -0
  463. package/dist/standalone/.next/static/css/9b32c3f7f468cbcc.css +1 -0
  464. package/dist/standalone/.next/static/fQ2a5S10vvpyAqE0L_wUj/_buildManifest.js +1 -0
  465. package/dist/standalone/AGENTS.md +10 -0
  466. package/dist/standalone/package.json +1 -1
  467. package/dist/standalone/server.bun.js +1 -1
  468. package/dist/standalone/src/lib/viewerInstrumentation.ts +63 -5
  469. package/package.json +1 -1
  470. package/dist/standalone/.next/server/chunks/1888.js +0 -1
  471. package/dist/standalone/.next/server/chunks/4127.js +0 -1
  472. package/dist/standalone/.next/server/chunks/480.js +0 -126
  473. package/dist/standalone/.next/server/chunks/7361.js +0 -22
  474. package/dist/standalone/.next/static/chunks/6976-016b6947195a6ed2.js +0 -1
  475. package/dist/standalone/.next/static/chunks/app/_global-error/page-60a25d1c4cbf0128.js +0 -1
  476. package/dist/standalone/.next/static/chunks/app/api/access/route-60a25d1c4cbf0128.js +0 -1
  477. package/dist/standalone/.next/static/chunks/app/api/account-migrations/[intentId]/route-60a25d1c4cbf0128.js +0 -1
  478. package/dist/standalone/.next/static/chunks/app/api/account-project-bindings/route-60a25d1c4cbf0128.js +0 -1
  479. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/[id]/status/route-60a25d1c4cbf0128.js +0 -1
  480. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/active/route-60a25d1c4cbf0128.js +0 -1
  481. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/limits/route-60a25d1c4cbf0128.js +0 -1
  482. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/login/[operationId]/input/route-60a25d1c4cbf0128.js +0 -1
  483. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/login/[operationId]/route-60a25d1c4cbf0128.js +0 -1
  484. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/policy/route-60a25d1c4cbf0128.js +0 -1
  485. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/route-60a25d1c4cbf0128.js +0 -1
  486. package/dist/standalone/.next/static/chunks/app/api/accounts/claude/terminal/route-60a25d1c4cbf0128.js +0 -1
  487. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/active/route-60a25d1c4cbf0128.js +0 -1
  488. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/limits/route-60a25d1c4cbf0128.js +0 -1
  489. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/policy/route-60a25d1c4cbf0128.js +0 -1
  490. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/reset-credits/route-60a25d1c4cbf0128.js +0 -1
  491. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/route-60a25d1c4cbf0128.js +0 -1
  492. package/dist/standalone/.next/static/chunks/app/api/accounts/codex/terminal/route-60a25d1c4cbf0128.js +0 -1
  493. package/dist/standalone/.next/static/chunks/app/api/accounts/route-60a25d1c4cbf0128.js +0 -1
  494. package/dist/standalone/.next/static/chunks/app/api/agent/route-60a25d1c4cbf0128.js +0 -1
  495. package/dist/standalone/.next/static/chunks/app/api/agent/snapshot/route-60a25d1c4cbf0128.js +0 -1
  496. package/dist/standalone/.next/static/chunks/app/api/answer/route-60a25d1c4cbf0128.js +0 -1
  497. package/dist/standalone/.next/static/chunks/app/api/artifact/route-60a25d1c4cbf0128.js +0 -1
  498. package/dist/standalone/.next/static/chunks/app/api/attach-command/route-60a25d1c4cbf0128.js +0 -1
  499. package/dist/standalone/.next/static/chunks/app/api/attention/[id]/route-60a25d1c4cbf0128.js +0 -1
  500. package/dist/standalone/.next/static/chunks/app/api/attention/route-60a25d1c4cbf0128.js +0 -1
  501. package/dist/standalone/.next/static/chunks/app/api/board/route-60a25d1c4cbf0128.js +0 -1
  502. package/dist/standalone/.next/static/chunks/app/api/bridge/route-60a25d1c4cbf0128.js +0 -1
  503. package/dist/standalone/.next/static/chunks/app/api/conversation-host/route-60a25d1c4cbf0128.js +0 -1
  504. package/dist/standalone/.next/static/chunks/app/api/conversation-host/targets/route-60a25d1c4cbf0128.js +0 -1
  505. package/dist/standalone/.next/static/chunks/app/api/conversations/[conversationId]/migration/route-60a25d1c4cbf0128.js +0 -1
  506. package/dist/standalone/.next/static/chunks/app/api/conversations/route-60a25d1c4cbf0128.js +0 -1
  507. package/dist/standalone/.next/static/chunks/app/api/files/route-60a25d1c4cbf0128.js +0 -1
  508. package/dist/standalone/.next/static/chunks/app/api/flows/[id]/route-60a25d1c4cbf0128.js +0 -1
  509. package/dist/standalone/.next/static/chunks/app/api/flows/route-60a25d1c4cbf0128.js +0 -1
  510. package/dist/standalone/.next/static/chunks/app/api/image/route-60a25d1c4cbf0128.js +0 -1
  511. package/dist/standalone/.next/static/chunks/app/api/inbox/route-60a25d1c4cbf0128.js +0 -1
  512. package/dist/standalone/.next/static/chunks/app/api/lifecycle/reaper/route-60a25d1c4cbf0128.js +0 -1
  513. package/dist/standalone/.next/static/chunks/app/api/limits/history/route-60a25d1c4cbf0128.js +0 -1
  514. package/dist/standalone/.next/static/chunks/app/api/limits/route-60a25d1c4cbf0128.js +0 -1
  515. package/dist/standalone/.next/static/chunks/app/api/log/preflight/route-60a25d1c4cbf0128.js +0 -1
  516. package/dist/standalone/.next/static/chunks/app/api/log/project-delete/route-60a25d1c4cbf0128.js +0 -1
  517. package/dist/standalone/.next/static/chunks/app/api/log/provenance/route-60a25d1c4cbf0128.js +0 -1
  518. package/dist/standalone/.next/static/chunks/app/api/log/route-60a25d1c4cbf0128.js +0 -1
  519. package/dist/standalone/.next/static/chunks/app/api/log/suggestions/route-60a25d1c4cbf0128.js +0 -1
  520. package/dist/standalone/.next/static/chunks/app/api/logs/route-60a25d1c4cbf0128.js +0 -1
  521. package/dist/standalone/.next/static/chunks/app/api/logs/stream/route-60a25d1c4cbf0128.js +0 -1
  522. package/dist/standalone/.next/static/chunks/app/api/monitor/runs/route-60a25d1c4cbf0128.js +0 -1
  523. package/dist/standalone/.next/static/chunks/app/api/monitor/seat-tick/route-60a25d1c4cbf0128.js +0 -1
  524. package/dist/standalone/.next/static/chunks/app/api/monitor/seat-tick/settings/route-60a25d1c4cbf0128.js +0 -1
  525. package/dist/standalone/.next/static/chunks/app/api/orchestrator/rotate/route-60a25d1c4cbf0128.js +0 -1
  526. package/dist/standalone/.next/static/chunks/app/api/orchestrator/seat/route-60a25d1c4cbf0128.js +0 -1
  527. package/dist/standalone/.next/static/chunks/app/api/orchestrator/seat/status/route-60a25d1c4cbf0128.js +0 -1
  528. package/dist/standalone/.next/static/chunks/app/api/pipelines/[id]/route-60a25d1c4cbf0128.js +0 -1
  529. package/dist/standalone/.next/static/chunks/app/api/pipelines/preflight/route-60a25d1c4cbf0128.js +0 -1
  530. package/dist/standalone/.next/static/chunks/app/api/pipelines/route-60a25d1c4cbf0128.js +0 -1
  531. package/dist/standalone/.next/static/chunks/app/api/pipelines/tick/route-60a25d1c4cbf0128.js +0 -1
  532. package/dist/standalone/.next/static/chunks/app/api/proc/route-60a25d1c4cbf0128.js +0 -1
  533. package/dist/standalone/.next/static/chunks/app/api/projects/create/route-60a25d1c4cbf0128.js +0 -1
  534. package/dist/standalone/.next/static/chunks/app/api/projects/crown/route-60a25d1c4cbf0128.js +0 -1
  535. package/dist/standalone/.next/static/chunks/app/api/projects/directories/route-60a25d1c4cbf0128.js +0 -1
  536. package/dist/standalone/.next/static/chunks/app/api/push/route-60a25d1c4cbf0128.js +0 -1
  537. package/dist/standalone/.next/static/chunks/app/api/resources/route-60a25d1c4cbf0128.js +0 -1
  538. package/dist/standalone/.next/static/chunks/app/api/roles/route-60a25d1c4cbf0128.js +0 -1
  539. package/dist/standalone/.next/static/chunks/app/api/runtime/answer/route-60a25d1c4cbf0128.js +0 -1
  540. package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/[deploymentId]/route-60a25d1c4cbf0128.js +0 -1
  541. package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/capabilities/v1/route-60a25d1c4cbf0128.js +0 -1
  542. package/dist/standalone/.next/static/chunks/app/api/runtime/deployments/route-60a25d1c4cbf0128.js +0 -1
  543. package/dist/standalone/.next/static/chunks/app/api/runtime/hosts/route-60a25d1c4cbf0128.js +0 -1
  544. package/dist/standalone/.next/static/chunks/app/api/runtime/inject/route-60a25d1c4cbf0128.js +0 -1
  545. package/dist/standalone/.next/static/chunks/app/api/runtime/interrupt/route-60a25d1c4cbf0128.js +0 -1
  546. package/dist/standalone/.next/static/chunks/app/api/runtime/operations/[operationId]/route-60a25d1c4cbf0128.js +0 -1
  547. package/dist/standalone/.next/static/chunks/app/api/runtime/operations/route-60a25d1c4cbf0128.js +0 -1
  548. package/dist/standalone/.next/static/chunks/app/api/runtime/queue/route-60a25d1c4cbf0128.js +0 -1
  549. package/dist/standalone/.next/static/chunks/app/api/runtime/realtime/route-60a25d1c4cbf0128.js +0 -1
  550. package/dist/standalone/.next/static/chunks/app/api/runtime/send/route-60a25d1c4cbf0128.js +0 -1
  551. package/dist/standalone/.next/static/chunks/app/api/runtime/snapshot/route-60a25d1c4cbf0128.js +0 -1
  552. package/dist/standalone/.next/static/chunks/app/api/runtime/spawn/route-60a25d1c4cbf0128.js +0 -1
  553. package/dist/standalone/.next/static/chunks/app/api/runtime/steer/route-60a25d1c4cbf0128.js +0 -1
  554. package/dist/standalone/.next/static/chunks/app/api/runtime/stream/route-60a25d1c4cbf0128.js +0 -1
  555. package/dist/standalone/.next/static/chunks/app/api/search/transcripts/route-60a25d1c4cbf0128.js +0 -1
  556. package/dist/standalone/.next/static/chunks/app/api/session/route-60a25d1c4cbf0128.js +0 -1
  557. package/dist/standalone/.next/static/chunks/app/api/session/supersedence/route-60a25d1c4cbf0128.js +0 -1
  558. package/dist/standalone/.next/static/chunks/app/api/session/title/route-60a25d1c4cbf0128.js +0 -1
  559. package/dist/standalone/.next/static/chunks/app/api/spawn/policy/route-60a25d1c4cbf0128.js +0 -1
  560. package/dist/standalone/.next/static/chunks/app/api/spawn/route-60a25d1c4cbf0128.js +0 -1
  561. package/dist/standalone/.next/static/chunks/app/api/spawn/validate/route-60a25d1c4cbf0128.js +0 -1
  562. package/dist/standalone/.next/static/chunks/app/api/staging/route-60a25d1c4cbf0128.js +0 -1
  563. package/dist/standalone/.next/static/chunks/app/api/task-attachments/route-60a25d1c4cbf0128.js +0 -1
  564. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/assignment/route-60a25d1c4cbf0128.js +0 -1
  565. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/route-60a25d1c4cbf0128.js +0 -1
  566. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/send/route-60a25d1c4cbf0128.js +0 -1
  567. package/dist/standalone/.next/static/chunks/app/api/tasks/[id]/spawn/route-60a25d1c4cbf0128.js +0 -1
  568. package/dist/standalone/.next/static/chunks/app/api/tasks/curator/route-60a25d1c4cbf0128.js +0 -1
  569. package/dist/standalone/.next/static/chunks/app/api/tasks/route-60a25d1c4cbf0128.js +0 -1
  570. package/dist/standalone/.next/static/chunks/app/api/telegram/reports/route-60a25d1c4cbf0128.js +0 -1
  571. package/dist/standalone/.next/static/chunks/app/api/telegram/route-60a25d1c4cbf0128.js +0 -1
  572. package/dist/standalone/.next/static/chunks/app/api/timeline/route-60a25d1c4cbf0128.js +0 -1
  573. package/dist/standalone/.next/static/chunks/app/api/tmux/route-60a25d1c4cbf0128.js +0 -1
  574. package/dist/standalone/.next/static/chunks/app/api/tmux/targets/route-60a25d1c4cbf0128.js +0 -1
  575. package/dist/standalone/.next/static/chunks/app/api/transcribe/backend/route-60a25d1c4cbf0128.js +0 -1
  576. package/dist/standalone/.next/static/chunks/app/api/transcribe/route-60a25d1c4cbf0128.js +0 -1
  577. package/dist/standalone/.next/static/chunks/app/api/transcribe/token/route-60a25d1c4cbf0128.js +0 -1
  578. package/dist/standalone/.next/static/chunks/app/api/tts/backend/route-60a25d1c4cbf0128.js +0 -1
  579. package/dist/standalone/.next/static/chunks/app/api/tts/route-60a25d1c4cbf0128.js +0 -1
  580. package/dist/standalone/.next/static/chunks/app/api/view/presence/route-60a25d1c4cbf0128.js +0 -1
  581. package/dist/standalone/.next/static/chunks/app/api/workflows/[id]/route-60a25d1c4cbf0128.js +0 -1
  582. package/dist/standalone/.next/static/chunks/app/api/workflows/route-60a25d1c4cbf0128.js +0 -1
  583. package/dist/standalone/.next/static/chunks/app/page-16384e540b4c0a90.js +0 -125
  584. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-60a25d1c4cbf0128.js +0 -1
  585. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-60a25d1c4cbf0128.js +0 -1
  586. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-60a25d1c4cbf0128.js +0 -1
  587. package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-60a25d1c4cbf0128.js +0 -1
  588. package/dist/standalone/.next/static/css/496211a19557b7ee.css +0 -1
  589. package/dist/standalone/.next/static/e4qE_aCE0s0KQnnU6IWRw/_buildManifest.js +0 -1
  590. /package/dist/standalone/.next/static/{e4qE_aCE0s0KQnnU6IWRw → fQ2a5S10vvpyAqE0L_wUj}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ "use strict";exports.id=6211,exports.ids=[6211],exports.modules={46211:(a,b,c)=>{c.r(b),c.d(b,{UNRESOLVED_PROJECT:()=>l,UNRESOLVED_PROJECT_NAME:()=>m,directoryProjectId:()=>q,displayNameFromProjectIdentity:()=>r,isCanonicalProjectId:()=>n,isRepositoryProjectId:()=>o,localRepositoryProjectId:()=>y,projectIdentityFromDirectory:()=>p,projectIdentityFromRemote:()=>x,projectIdentityFromRepositoryRoot:()=>A,repositoryRootForPath:()=>u});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(48161),i=c.n(h),j=c(76760),k=c.n(j);let l="project_unresolved",m="Unresolved project";function n(a){return/^(?:repo|dir)-[0-9a-f]{32}$/.test(a)}function o(a){return/^repo-[0-9a-f]{32}$/.test(a)}function p(a){let b=(()=>{try{return g().realpathSync.native(a)}catch{return k().resolve(a)}})(),c=k().basename(b);if(!c||b===k().sep)return null;let d=b===i().homedir()?`home-${c}`:c;return{project:q(b),displayName:d}}function q(a){return`dir-${e().createHash("sha256").update(`dir:${a}`).digest("hex").slice(0,32)}`}function r(a){return a===l?m:a}function s(a){try{return g().statSync(k().join(a,"HEAD")).isFile()}catch{return!1}}function t(a){let b=k().join(a,".git");try{let c=g().lstatSync(b);if(c.isDirectory())return s(b)?b:null;if(!c.isFile())return null;let d=g().readFileSync(b,"utf8").slice(0,4096),e=/^gitdir:\s*(.+?)\s*$/im.exec(d)?.[1];if(!e)return null;let f=k().resolve(a,e);return s(f)?f:null}catch{return null}}function u(a){let b=k().resolve(a);for(;;){if(t(b))return b;let a=k().dirname(b);if(a===b)return null;b=a}}function v(a,b){let c=/^[a-z][a-z0-9+.-]*:\/\//i.test(a)?null:/^(?:[^@\s]+@)?([^:/\s]+):(.+)$/.exec(a);if(c){let a=c[1].toLowerCase(),b=c[2].replace(/^\/+|\/+$/g,"").replace(/\.git$/i,"");return b?`${a}/${b}`:null}try{let b=new URL(a);if("file:"===b.protocol){let a=k().resolve(b.pathname).replace(/\.git$/i,"");return`file:${a}`}let c=b.hostname.toLowerCase(),d=b.port?`:${b.port}`:"",e=b.pathname.replace(/^\/+|\/+$/g,"").replace(/\.git$/i,"");return c&&e?`${c}${d}/${e}`:null}catch{let c=k().resolve(b,a).replace(/\.git$/i,"");return`file:${c}`}}function w(a){let b=a.replace(/^file:/,"").split("/").filter(Boolean).at(-1)?.trim()||null;if(!b)return null;let c=e().createHash("sha256").update(a).digest("hex").slice(0,32);return{project:`repo-${c}`,displayName:b,canonicalRemote:a}}function x(a,b){let c=a.trim();if(!c)return null;let d=v(c,b);return d?w(d):null}function y(a){return w(`local:${z(a)}`)?.project??null}function z(a){try{return g().realpathSync.native(a)}catch{return k().resolve(a)}}function A(a){let b,c=t(a);if(!c)return null;try{b=g().readFileSync(k().join(function(a){try{let b=g().readFileSync(k().join(a,"commondir"),"utf8").trim();return b?k().resolve(a,b):a}catch{return a}}(c),"config"),"utf8")}catch{return null}let d=function(a){let b=!1;for(let c of a.split(/\r?\n/)){let a=/^\s*\[\s*remote\s+"([^"]+)"\s*\]\s*$/i.exec(c);if(a){b="origin"===a[1];continue}if(/^\s*\[/.test(c)){b=!1;continue}if(!b)continue;let d=/^\s*url\s*=\s*(.*?)\s*$/i.exec(c)?.[1],e=d?.replace(/\s+[;#].*$/,"").trim();if(e)return e}return null}(b),e=d?v(d,a):`local:${z(a)}`;return e?w(e):null}}};
@@ -1,2 +1 @@
1
- "use strict";exports.id=6289,exports.ids=[6289],exports.modules={16289:(a,b,c)=>{c.r(b),c.d(b,{FLOW_PIPELINE_WATCHDOG_MS:()=>p,FlowPipelineController:()=>s,controllerFileScan:()=>r,flowPipelineController:()=>v,startFlowPipelineController:()=>w,startFlowPipelineControllerRuntime:()=>t,writeFlowPipelineControllerHeartbeat:()=>q});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(91724),k=c(8872),l=c(1849),m=c(24739),n=c(48289),o=c(13896);let p=3e4;function q(a,b=(0,j.BQ)("flow-pipeline-controller-heartbeat.json")){g().mkdirSync(i().dirname(b),{recursive:!0,mode:448});let c=i().join(i().dirname(b),`.${i().basename(b)}.${process.pid}.${e().randomUUID()}.tmp`);g().writeFileSync(c,`${JSON.stringify(a,null,2)}
2
- `,{encoding:"utf8",mode:384}),g().renameSync(c,b)}async function r(){let a=await (0,l.Nm)();return{files:a.snapshot.files,complete:a.snapshot.complete}}class s{constructor(a,b={}){this.running=null,this.trailingCycleRequested=!1,this.trailingTrigger="signal",this.cycle=0,this.lastArchiveSweepAt=0,this.activePhases=new Map,this.ports={...a,scan:a.scan??(async()=>({files:[],complete:!0})),now:a.now??Date.now,scheduleTimeout:a.scheduleTimeout??((a,b)=>setTimeout(a,b)),clearTimeout:a.clearTimeout??(a=>clearTimeout(a)),publishHeartbeat:a.publishHeartbeat??(()=>void 0),log:a.log??((a,b)=>{void 0===b?console.error(a):console.error(a,b)})},this.phaseDeadlineMs=b.phaseDeadlineMs??15e3,this.maxPasses=b.maxPasses??8}tick(a="signal"){return this.running?(this.trailingCycleRequested=!0,this.trailingTrigger=a):this.running=this.runRequestedCycles(a).finally(()=>{if(this.running=null,this.trailingCycleRequested)return this.tick(this.trailingTrigger)}),this.running}poll(){return this.running??this.tick("watchdog")}recover(){return this.tick("startup")}async runRequestedCycles(a){let b=a;do this.trailingCycleRequested=!1,await this.runCycle(b),b=this.trailingTrigger;while(this.trailingCycleRequested)}async runCycle(a){let b=++this.cycle,c=0,d=[],e=!1;for(let f=1;f<=this.maxPasses;f+=1){c=f;let g=await this.runPhase("pipelines",b,f,a,()=>this.ports.tickPipelines(d)),h=1===f?await this.runPhase("scan",b,f,a,this.ports.scan):null;if(h?.state==="failed")throw h.error;h?.state==="completed"&&h.value.complete&&(d=h.value.files,e=!0);let i=e?await this.runPhase("flows",b,f,a,()=>this.ports.tickFlows(d)):null,j="failed"===g.state?g.error:i?.state==="failed"?i.error:null;if(null!==j)throw j;if(!("completed"===g.state&&g.value.changed||i?.state==="completed"&&i.value.changed||h?.state==="completed"&&h.value.complete))break}this.sweepSettledArchive();let f=[...this.activePhases.entries()].sort((a,b)=>a[1].startedAt-b[1].startedAt)[0];f?this.publish({cycle:b,pass:c,trigger:a,phase:f[0],state:"blocked",startedAt:f[1].startedAt}):this.publish({cycle:b,pass:c,trigger:a,phase:"idle",state:"idle",startedAt:this.ports.now()})}sweepSettledArchive(){let a=this.ports.now();a-this.lastArchiveSweepAt<36e5||(this.lastArchiveSweepAt=a,(0,o.archiveSettledPipelines)(a).then(a=>{a>0&&this.ports.log(`[flow pipeline controller] archived ${a} settled pipeline record(s)`)}).catch(a=>{this.ports.log("[flow pipeline controller] settled pipeline archive sweep failed",a)}))}async runPhase(a,b,c,d,e){let f=this.activePhases.get(a);if(f)return this.publish({cycle:b,pass:c,trigger:d,phase:a,state:"blocked",startedAt:f.startedAt}),{state:"blocked"};let g=this.ports.now();this.publish({cycle:b,pass:c,trigger:d,phase:a,state:"running",startedAt:g});let h=Promise.resolve().then(e),i={startedAt:g,promise:h};this.activePhases.set(a,i),h.then(()=>{this.activePhases.get(a)===i&&this.activePhases.delete(a)},()=>{this.activePhases.get(a)===i&&this.activePhases.delete(a)});let j=()=>{},k=new Promise(a=>{j=()=>a({state:"timed-out"})}),l=this.ports.scheduleTimeout(j,this.phaseDeadlineMs),m=await Promise.race([h.then(a=>({state:"completed",value:a}),a=>({state:"failed",error:a})),k]);return this.ports.clearTimeout(l),this.publish({cycle:b,pass:c,trigger:d,phase:a,state:m.state,startedAt:g}),"failed"===m.state?this.ports.log(`[flow pipeline controller] ${a} phase failed`,m.error):"timed-out"===m.state&&this.ports.log(`[flow pipeline controller] ${a} phase exceeded its deadline`),m}publish(a){let b=this.ports.now();try{this.ports.publishHeartbeat({schemaVersion:1,controller:"flow-pipeline",cycle:a.cycle,pass:a.pass,trigger:a.trigger,phase:a.phase,state:a.state,phaseStartedAt:new Date(a.startedAt).toISOString(),updatedAt:new Date(b).toISOString(),ageMs:Math.max(0,b-a.startedAt),deadlineMs:this.phaseDeadlineMs})}catch(a){this.ports.log("[flow pipeline controller] durable heartbeat publication failed",a)}}}function t(a,b,c){b.__llvFlowPipelineUnregister?.(),b.__llvFlowPipelineUnregister=c.registerTick(()=>a.tick("signal")),b.__llvFlowPipelineWatchdog||(b.__llvFlowPipelineWatchdog=c.scheduleInterval(()=>void a.poll().catch(a=>{c.log("[flow pipeline controller] watchdog reconciliation failed",a)}),p),b.__llvFlowPipelineWatchdog.unref?.()),a.recover().catch(a=>{c.log("[flow pipeline controller] startup reconciliation failed",a)})}let u=globalThis;function v(){return u.__llvFlowPipelineController??=new s({scan:r,tickPipelines:n.n6,tickFlows:k.zn,publishHeartbeat:q})}function w(){t(v(),u,{registerTick:m.n_,scheduleInterval:(a,b)=>setInterval(a,b),log:(a,b)=>console.error(a,b)})}}};
1
+ "use strict";exports.id=6289,exports.ids=[6289],exports.modules={16289:(a,b,c)=>{c.r(b),c.d(b,{FLOW_PIPELINE_WATCHDOG_MS:()=>o,FlowPipelineController:()=>r,controllerFileScan:()=>q,flowPipelineController:()=>u,startFlowPipelineController:()=>v,startFlowPipelineControllerRuntime:()=>s,writeFlowPipelineControllerHeartbeat:()=>p});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(91724),i=c(65154),j=c(8872),k=c(1849),l=c(24739),m=c(48289),n=c(13896);let o=3e4;function p(a,b=(0,h.BQ)("flow-pipeline-controller-heartbeat.json")){e().mkdirSync(g().dirname(b),{recursive:!0,mode:448}),(0,i.fZ)(b,a)}async function q(){let a=await (0,k.Nm)();return{files:a.snapshot.files,complete:a.snapshot.complete}}class r{constructor(a,b={}){this.running=null,this.trailingCycleRequested=!1,this.trailingTrigger="signal",this.cycle=0,this.lastArchiveSweepAt=0,this.activePhases=new Map,this.ports={...a,scan:a.scan??(async()=>({files:[],complete:!0})),now:a.now??Date.now,scheduleTimeout:a.scheduleTimeout??((a,b)=>setTimeout(a,b)),clearTimeout:a.clearTimeout??(a=>clearTimeout(a)),publishHeartbeat:a.publishHeartbeat??(()=>void 0),log:a.log??((a,b)=>{void 0===b?console.error(a):console.error(a,b)})},this.phaseDeadlineMs=b.phaseDeadlineMs??15e3,this.maxPasses=b.maxPasses??8}tick(a="signal"){return this.running?(this.trailingCycleRequested=!0,this.trailingTrigger=a):this.running=this.runRequestedCycles(a).finally(()=>{if(this.running=null,this.trailingCycleRequested)return this.tick(this.trailingTrigger)}),this.running}poll(){return this.running??this.tick("watchdog")}recover(){return this.tick("startup")}async runRequestedCycles(a){let b=a;do this.trailingCycleRequested=!1,await this.runCycle(b),b=this.trailingTrigger;while(this.trailingCycleRequested)}async runCycle(a){let b=++this.cycle,c=0,d=[],e=!1;for(let f=1;f<=this.maxPasses;f+=1){c=f;let g=await this.runPhase("pipelines",b,f,a,()=>this.ports.tickPipelines(d)),h=1===f?await this.runPhase("scan",b,f,a,this.ports.scan):null;if(h?.state==="failed")throw h.error;h?.state==="completed"&&h.value.complete&&(d=h.value.files,e=!0);let i=e?await this.runPhase("flows",b,f,a,()=>this.ports.tickFlows(d)):null,j="failed"===g.state?g.error:i?.state==="failed"?i.error:null;if(null!==j)throw j;if(!("completed"===g.state&&g.value.changed||i?.state==="completed"&&i.value.changed||h?.state==="completed"&&h.value.complete))break}this.sweepSettledArchive();let f=[...this.activePhases.entries()].sort((a,b)=>a[1].startedAt-b[1].startedAt)[0];f?this.publish({cycle:b,pass:c,trigger:a,phase:f[0],state:"blocked",startedAt:f[1].startedAt}):this.publish({cycle:b,pass:c,trigger:a,phase:"idle",state:"idle",startedAt:this.ports.now()})}sweepSettledArchive(){let a=this.ports.now();a-this.lastArchiveSweepAt<36e5||(this.lastArchiveSweepAt=a,(0,n.archiveSettledPipelines)(a).then(a=>{a>0&&this.ports.log(`[flow pipeline controller] archived ${a} settled pipeline record(s)`)}).catch(a=>{this.ports.log("[flow pipeline controller] settled pipeline archive sweep failed",a)}))}async runPhase(a,b,c,d,e){let f=this.activePhases.get(a);if(f)return this.publish({cycle:b,pass:c,trigger:d,phase:a,state:"blocked",startedAt:f.startedAt}),{state:"blocked"};let g=this.ports.now();this.publish({cycle:b,pass:c,trigger:d,phase:a,state:"running",startedAt:g});let h=Promise.resolve().then(e),i={startedAt:g,promise:h};this.activePhases.set(a,i),h.then(()=>{this.activePhases.get(a)===i&&this.activePhases.delete(a)},()=>{this.activePhases.get(a)===i&&this.activePhases.delete(a)});let j=()=>{},k=new Promise(a=>{j=()=>a({state:"timed-out"})}),l=this.ports.scheduleTimeout(j,this.phaseDeadlineMs),m=await Promise.race([h.then(a=>({state:"completed",value:a}),a=>({state:"failed",error:a})),k]);return this.ports.clearTimeout(l),this.publish({cycle:b,pass:c,trigger:d,phase:a,state:m.state,startedAt:g}),"failed"===m.state?this.ports.log(`[flow pipeline controller] ${a} phase failed`,m.error):"timed-out"===m.state&&this.ports.log(`[flow pipeline controller] ${a} phase exceeded its deadline`),m}publish(a){let b=this.ports.now();try{this.ports.publishHeartbeat({schemaVersion:1,controller:"flow-pipeline",cycle:a.cycle,pass:a.pass,trigger:a.trigger,phase:a.phase,state:a.state,phaseStartedAt:new Date(a.startedAt).toISOString(),updatedAt:new Date(b).toISOString(),ageMs:Math.max(0,b-a.startedAt),deadlineMs:this.phaseDeadlineMs})}catch(a){this.ports.log("[flow pipeline controller] durable heartbeat publication failed",a)}}}function s(a,b,c){b.__llvFlowPipelineUnregister?.(),b.__llvFlowPipelineUnregister=c.registerTick(()=>a.tick("signal")),b.__llvFlowPipelineWatchdog||(b.__llvFlowPipelineWatchdog=c.scheduleInterval(()=>void a.poll().catch(a=>{c.log("[flow pipeline controller] watchdog reconciliation failed",a)}),o),b.__llvFlowPipelineWatchdog.unref?.()),a.recover().catch(a=>{c.log("[flow pipeline controller] startup reconciliation failed",a)})}let t=globalThis;function u(){return t.__llvFlowPipelineController??=new r({scan:q,tickPipelines:m.n6,tickFlows:j.zn,publishHeartbeat:p})}function v(){s(u(),t,{registerTick:l.n_,scheduleInterval:(a,b)=>setInterval(a,b),log:(a,b)=>console.error(a,b)})}}};
@@ -0,0 +1 @@
1
+ "use strict";exports.id=6418,exports.ids=[6418],exports.modules={64037:(a,b,c)=>{c.r(b),c.d(b,{ORCHESTRATOR_SEATS_SCHEMA_VERSION:()=>m,ORCHESTRATOR_SEAT_HISTORY_CAP:()=>n,abandonStillbornOrchestratorSeat:()=>I,activeOrchestratorSeats:()=>K,activeOrchestratorSeatsForMigration:()=>N,activeOrchestratorSeatsOrUnknown:()=>L,beginOrchestratorSeatIntent:()=>E,canonicalOrchestratorProject:()=>p,completeOrchestratorSeatIntent:()=>F,confirmOrchestratorSeatMaterialization:()=>J,failOrchestratorSeatIntent:()=>H,orchestratorRevocations:()=>P,orchestratorSeatFor:()=>D,orchestratorSeatForOrUnknown:()=>M,readOrchestratorSeatFile:()=>x,rekeyOrchestratorSeatPaths:()=>O,repairOrchestratorSeatRuntimeIdentity:()=>G,revokedOrchestratorSeatConversationsOrUnknown:()=>Q});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(14071),k=c(50920),l=c(65465);let m=1,n=50,o=()=>(0,k.BQ)("orchestrator-seats.json");function p(a){return(0,l.G$)(a.trim())}function q(){return{schemaVersion:m,nextSeatEpoch:1,seats:{},pending:{},revocations:[],history:[],rollbacks:{}}}function r(a,b){g().mkdirSync(i().dirname(a),{recursive:!0});let c=i().join(i().dirname(a),`.${i().basename(a)}.${process.pid}.${e().randomUUID()}.tmp`);g().writeFileSync(c,JSON.stringify(b,null,2)+"\n","utf8"),g().renameSync(c,a)}function s(a){if(!a||"object"!=typeof a||Array.isArray(a)||"operator"!==a.kind&&"agent"!==a.kind)return null;let b="string"==typeof a.conversationId&&a.conversationId?a.conversationId:null,c="number"==typeof a.seatEpoch&&Number.isInteger(a.seatEpoch)&&a.seatEpoch>=1?a.seatEpoch:null;return{kind:a.kind,conversationId:b,seatEpoch:c}}function t(a){if(!a||"object"!=typeof a||Array.isArray(a)||"string"!=typeof a.project||!a.project||"number"!=typeof a.seatEpoch||!Number.isInteger(a.seatEpoch)||a.seatEpoch<1||null!==a.conversationId&&"string"!=typeof a.conversationId||null!==a.path&&"string"!=typeof a.path||"string"!=typeof a.mandate||"pending"!==a.state&&"active"!==a.state)return null;let b=a.intent;if(!b||"string"!=typeof b.clientRequestId||!b.clientRequestId||"spawn"!==b.mode&&"existing"!==b.mode||"string"!=typeof a.designatedAt||null!==a.activatedAt&&"string"!=typeof a.activatedAt)return null;let c="string"==typeof a.engine&&a.engine.trim()?a.engine:null,d="string"==typeof a.model&&a.model.trim()?a.model:null,e="boolean"==typeof a.runtimeIdentityFrozen?a.runtimeIdentityFrozen:!!(c||d);return{project:a.project,seatEpoch:a.seatEpoch,conversationId:a.conversationId??null,path:a.path??null,engine:c,model:d,runtimeIdentityFrozen:e,mandate:a.mandate,..."string"==typeof a.roleTable?{roleTable:a.roleTable}:{},promptVersion:"number"==typeof a.promptVersion&&Number.isInteger(a.promptVersion)?a.promptVersion:null,predecessorConversationId:"string"==typeof a.predecessorConversationId?a.predecessorConversationId:null,triggeredBy:s(a.triggeredBy),state:a.state,intent:{clientRequestId:b.clientRequestId,mode:b.mode,launchId:"string"==typeof b.launchId?b.launchId:null,error:"string"==typeof b.error?b.error:null},designatedAt:a.designatedAt,activatedAt:a.activatedAt??null}}function u(a,b){return a.history.push(b),a.history.length>n&&a.history.splice(0,a.history.length-n),b}function v(a,b){let c=a[b.project];(!c||b.seatEpoch>c.seatEpoch)&&(a[b.project]=b)}function w(){let a;try{a=g().readFileSync(o(),"utf8")}catch(a){return a?.code==="ENOENT"?q():null}try{let b=JSON.parse(a);if(b.schemaVersion!==m)return null;let c=q();for(let[a,d]of(c.nextSeatEpoch="number"==typeof b.nextSeatEpoch&&Number.isInteger(b.nextSeatEpoch)&&b.nextSeatEpoch>=1?b.nextSeatEpoch:1,Object.entries(b.seats??{}))){let b=t(d);b&&b.project===a&&"active"===b.state&&b.conversationId&&v(c.seats,{...b,project:p(a)})}for(let[a,d]of Object.entries(b.pending??{})){let b=t(d);b&&b.project===a&&"pending"===b.state&&v(c.pending,{...b,project:p(a)})}for(let[a,d]of Object.entries(b.rollbacks??{})){let b=t(d);b&&b.conversationId&&(c.rollbacks[p(a)]=b)}for(let a of Array.isArray(b.revocations)?b.revocations:[])"string"==typeof a.project&&"string"==typeof a.conversationId&&"number"==typeof a.seatEpoch&&Number.isInteger(a.seatEpoch)&&"string"==typeof a.revokedAt&&c.revocations.push({project:p(a.project),conversationId:a.conversationId,seatEpoch:a.seatEpoch,revokedAt:a.revokedAt,successorConversationId:"string"==typeof a.successorConversationId?a.successorConversationId:null,triggeredBy:s(a.triggeredBy)});for(let a of Array.isArray(b.history)?b.history:[]){let b=t(a.seat);b&&("terminal_error"===a.reason||"superseded_epoch"===a.reason)&&"string"==typeof a.terminalizedAt&&c.history.push({seat:{...b,project:p(b.project)},reason:a.reason,terminalizedAt:a.terminalizedAt})}let d=Math.max(0,...Object.values(c.seats).map(a=>a.seatEpoch),...Object.values(c.pending).map(a=>a.seatEpoch),...Object.values(c.rollbacks).map(a=>a.seatEpoch),...c.revocations.map(a=>a.seatEpoch),...c.history.map(a=>a.seat.seatEpoch));return c.nextSeatEpoch<=d&&(c.nextSeatEpoch=d+1),c}catch{return null}}function x(){return w()??q()}function y(a){return void 0===a?Error("orchestrator seat evidence is malformed"):Error("orchestrator seat evidence is malformed",{cause:a})}function z(a,b){if(void 0===a)return{};if(!a||"object"!=typeof a||Array.isArray(a))throw y(Error(`${b} is invalid`));return a}function A(a,b){if(void 0===a)return[];if(!Array.isArray(a))throw y(Error(`${b} is invalid`));return a}function B(){let a,b;try{a=g().readFileSync(o(),"utf8")}catch(a){if(a&&"object"==typeof a&&"ENOENT"===a.code)return{raw:null,normalized:q()};throw a}try{b=JSON.parse(a)}catch(a){throw y(a)}if(!b||"object"!=typeof b||Array.isArray(b))throw y();let c=b;if(c.schemaVersion!==m||"number"!=typeof c.nextSeatEpoch||!Number.isInteger(c.nextSeatEpoch)||c.nextSeatEpoch<1)throw y();let d=q();for(let[a,b]of(d.nextSeatEpoch=c.nextSeatEpoch,Object.entries(z(c.seats,"seats")))){let c=t(b);if(!c||c.project!==a||"active"!==c.state||!c.conversationId)throw y();let e=p(a);if(d.seats[e])throw y();d.seats[e]={...c,project:e}}for(let[a,b]of Object.entries(z(c.pending,"pending"))){let c=t(b);if(!c||c.project!==a||"pending"!==c.state)throw y();let e=p(a);if(d.pending[e])throw y();d.pending[e]={...c,project:e}}for(let a of A(c.revocations,"revocations")){if(!a||"object"!=typeof a||"string"!=typeof a.project||!a.project||"string"!=typeof a.conversationId||!a.conversationId||"number"!=typeof a.seatEpoch||!Number.isInteger(a.seatEpoch)||a.seatEpoch<1||"string"!=typeof a.revokedAt||void 0!==a.successorConversationId&&null!==a.successorConversationId&&"string"!=typeof a.successorConversationId)throw y();d.revocations.push({project:p(a.project),conversationId:a.conversationId,seatEpoch:a.seatEpoch,revokedAt:a.revokedAt,successorConversationId:a.successorConversationId??null,triggeredBy:s(a.triggeredBy)})}for(let a of A(c.history,"history")){let b=t(a?.seat);if(!a||!b||"terminal_error"!==a.reason&&"superseded_epoch"!==a.reason||"string"!=typeof a.terminalizedAt)throw y();d.history.push({seat:{...b,project:p(b.project)},reason:a.reason,terminalizedAt:a.terminalizedAt})}return{raw:c,normalized:d}}function C(a){r(o(),a)}function D(a){let b=x(),c=p(a);return{active:b.seats[c]??null,pending:b.pending[c]??null,history:b.history.filter(a=>a.seat.project===c)}}function E(a){return(0,j.oV)(()=>{let b,c=x(),d=p(a.project),e=c.seats[d];if(e&&e.intent.clientRequestId===a.clientRequestId)return{kind:"completed",seat:e};let f=c.pending[d];if(f&&null===f.intent.error&&f.intent.clientRequestId===a.clientRequestId)return{kind:"replay",seat:f};if(f){if(!(null!==f.intent.error||void 0!==e&&f.seatEpoch<e.seatEpoch))return{kind:"in_progress",seat:f};b=u(c,{seat:f,reason:null!==f.intent.error?"terminal_error":"superseded_epoch",terminalizedAt:a.now??new Date().toISOString()}),delete c.pending[d]}let g={project:d,seatEpoch:c.nextSeatEpoch,conversationId:a.conversationId??null,path:null,engine:a.engine?.trim()||null,model:a.model?.trim()||null,runtimeIdentityFrozen:!!(a.engine?.trim()&&a.model?.trim()),mandate:a.mandate,..."string"==typeof a.roleTable?{roleTable:a.roleTable}:{},promptVersion:a.promptVersion??null,predecessorConversationId:null,triggeredBy:a.triggeredBy??null,state:"pending",intent:{clientRequestId:a.clientRequestId,mode:a.mode,launchId:null,error:null},designatedAt:a.now??new Date().toISOString(),activatedAt:null};return c.nextSeatEpoch+=1,c.pending[d]=g,C(c),{kind:"begun",seat:g,...b?{terminalized:b}:{}}})}function F(a){return(0,j.oV)(()=>{let b=x(),c=p(a.project),d=b.seats[c];if(d&&d.intent.clientRequestId===a.clientRequestId)return{kind:"replay",seat:d};let e=b.pending[c];if(!e||e.intent.clientRequestId!==a.clientRequestId)return{kind:"missing"};let f=a.now??new Date().toISOString(),g=null;d&&d.conversationId&&d.conversationId!==a.conversationId&&(g={project:c,conversationId:d.conversationId,seatEpoch:d.seatEpoch,revokedAt:f,successorConversationId:a.conversationId,triggeredBy:e.triggeredBy??null},b.revocations.push(g)),"spawn"===e.intent.mode&&null===a.path&&d?.conversationId&&d.conversationId!==a.conversationId?b.rollbacks[c]=d:delete b.rollbacks[c];let h={...e,conversationId:a.conversationId,path:a.path,engine:e.engine??(a.engine?.trim()||null),model:e.model??(a.model?.trim()||null),runtimeIdentityFrozen:!0===e.runtimeIdentityFrozen||!!(a.engine||a.model),predecessorConversationId:g?.conversationId??e.predecessorConversationId,state:"active",intent:{...e.intent,launchId:a.launchId??e.intent.launchId,error:null},activatedAt:f};return delete b.pending[c],b.seats[c]=h,C(b),{kind:"activated",seat:h,revoked:g}})}function G(a){return(0,j.oV)(()=>{let b=x(),c=p(a.project),d=b.seats[c];if(!d||d.conversationId!==a.conversationId)return null;let e=d.engine??(a.engine?.trim()||null),f=d.model??(a.model?.trim()||null);if(e===d.engine&&f===d.model)return d;let g={...d,engine:e,model:f};return b.seats[c]=g,C(b),g})}function H(a,b,c,d){return(0,j.oV)(()=>{let e=x(),f=p(a),g=e.pending[f];if(!g||g.intent.clientRequestId!==b)return null;g.intent.error=c.slice(0,500);let h=u(e,{seat:g,reason:"terminal_error",terminalizedAt:d??new Date().toISOString()});return delete e.pending[f],C(e),h})}function I(a){return(0,j.oV)(()=>{let b=x(),c=p(a.project),d=b.seats[c];if(!d||d.intent.clientRequestId!==a.clientRequestId||"active"!==d.state||"spawn"!==d.intent.mode||null!==d.path||!d.conversationId)return null;let e=a.now??new Date().toISOString(),f=b.rollbacks[c]??null,g=f?null:[...b.revocations].reverse().find(a=>a.project===c&&a.successorConversationId===d.conversationId)?.conversationId??null,h=f??(g?a.restorableSeat?.({conversationId:g,stillborn:d})??null:null),i=!!(h?.conversationId&&a.resolvable&&!a.resolvable(h.conversationId)),j=i?null:h,k=null;j?.conversationId?(k={...j,project:c,seatEpoch:b.nextSeatEpoch,state:"active",activatedAt:e},b.nextSeatEpoch+=1,b.seats[c]=k):delete b.seats[c],b.revocations.push({project:c,conversationId:d.conversationId,seatEpoch:d.seatEpoch,revokedAt:e,successorConversationId:k?.conversationId??null,triggeredBy:d.triggeredBy??null}),delete b.rollbacks[c];let l=i?`${a.error}; the predecessor ${h.conversationId} it would have been rolled back to is no longer resolvable either, so the project is left undesignated`:a.error,m=u(b,{seat:{...d,intent:{...d.intent,error:l.slice(0,500)}},reason:"terminal_error",terminalizedAt:e});return C(b),{terminalized:m,restored:k}})}function J(a){return(0,j.oV)(()=>{let b=x(),c=p(a.project),d=b.seats[c];if(!d||d.intent.clientRequestId!==a.clientRequestId||d.conversationId!==a.conversationId)return null;if(d.path===a.path&&!b.rollbacks[c])return d;let e={...d,path:a.path};return b.seats[c]=e,delete b.rollbacks[c],C(b),e})}function K(){return Object.values(x().seats)}function L(){let a=w();return null===a?null:Object.values(a.seats)}function M(a){let b=w();if(null===b)return null;let c=p(a);return{active:b.seats[c]??null,pending:b.pending[c]??null}}function N(){return Object.values(B().normalized.seats)}function O(a){0!==a.length&&(0,j.oV)(()=>{let b=B();if(!b.raw||0===Object.keys(b.normalized.seats).length)return;let c=new Map(a.map(a=>[a.legacyPath,a.sharedPath])),d=z(b.raw.seats,"seats"),e=!1;for(let a of Object.values(d)){if(!a||"object"!=typeof a||Array.isArray(a)||"string"!=typeof a.path)continue;let b=c.get(a.path);b&&(a.path=b,e=!0)}e&&r(o(),b.raw)})}function P(){return x().revocations}function Q(a=a=>a){let b=w();if(null===b)return null;let c=new Map,d=b=>{if(!b.conversationId)return;let d=a(b.conversationId);c.set(d,Math.max(c.get(d)??0,b.seatEpoch))};for(let a of Object.values(b.seats))d(a);for(let a of Object.values(b.pending))null===a.intent.error&&d(a);let e=new Set;for(let d of b.revocations){let b=a(d.conversationId);d.seatEpoch>=(c.get(b)??0)&&e.add(b)}return e}}};
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=644,exports.ids=[644,6277],exports.modules={23886:(a,b,c)=>{c.d(b,{adoptStructuredHostsAtStartup:()=>X,releaseUnpublishedStartupHostsForDemotion:()=>_});var d=c(77598),e=c.n(d),f=c(65236),g=c(66812),h=c(58577),i=c(70160),j=c(22993),k=c(88623),l=c(29307),m=c(76385),n=c(21420),o=c(842),p=c(65281),q=c(18027),r=c(62490),s=c(93994),t=c(2749),u=c(5242),v=c(66052),w=c(75211),x=c(83968),y=c(61532);let z=[],A=[],B=!1,C=null;function D(a,b){let c=new Map(a.map(a=>[(0,k.pp)(a.key),a]));for(let a of b){let b=(0,k.pp)(a.key);c.has(b)||c.set(b,a)}return[...c.values()]}async function E(a,b,c=a.readOnlySnapshot(),d=new Set){let e=[];for(let a of b)!function(a,b,c=new Set){let d=(0,k.pp)(b.key),e=a.entries[d];if(!e?.structuredHost||"dead"===e.status||"unhosted"===e.status)return!1;let f=Object.values(a.conversations).find(a=>a.engine===b.key.engine&&a.generations.at(-1)?.id===b.key.sessionId);return!!(f&&!f.supersededBy&&("terminal"!==f.turn.state||c.has(d)))}(c,a,d)?await a.host.release():e.push(a);return e}let F=["runtime.send","runtime.steer","runtime.inject","runtime.interrupt","runtime.answer","runtime.spawn","runtime.reconfigure","runtime.compact"],G="recovery-continuation",H=e().randomUUID(),I=[];function J(a,b){A=a;let c=new Set(a.map(a=>(0,k.pp)(a.key)));I=b.filter(a=>c.has(a.hostKey))}async function K(a,b=(0,l.js)(),c=a.readOnlySnapshot(),d={}){let e=[];for(let f of b){if(!f.conversationId?.startsWith("conversation_"))continue;let b=a.canonicalConversationId(f.conversationId),g=c.conversations[b],h=g?.generations.at(-1);if(!g||!h||g.supersededBy)continue;let i=(0,k.pp)({engine:g.engine,sessionId:h.id}),j=c.entries[i];if(!j?.structuredHost||null!==j.host)continue;let l=await (0,x.kT)(a,b,{...d,snapshot:c});l?.state==="severed"&&"busy"===l.turn&&(console.error("[structured hosts] resuming an orchestrator seat whose turn was severed",{project:f.project,conversationId:b,evidence:l.reason}),e.push({project:f.project,conversationId:b,path:h.path,seatEpoch:f.seatEpoch,hostKey:i,severed:{kind:l.lastEvent.kind,at:l.lastEvent.at,reason:l.reason}}))}return e}function L(a,b,c,d=a.readOnlySnapshot()){let e=c.find(a=>a.project===b.project);if(!e||"active"!==e.state||e.seatEpoch!==b.seatEpoch||!e.conversationId?.startsWith("conversation_")||a.canonicalConversationId(e.conversationId)!==b.conversationId)return!1;let f=d.conversations[b.conversationId],g=f?.generations.at(-1);if(!f||!g||f.supersededBy||g.path!==b.path||(0,k.pp)({engine:f.engine,sessionId:g.id})!==b.hostKey)return!1;let h=d.entries[b.hostKey];return!!(h?.structuredHost&&null===h.host&&("live"===h.status||"idle"===h.status))}function M(a,b,c,d=a.readOnlySnapshot()){return new Set(b.filter(b=>L(a,b,c,d)).map(a=>a.hostKey))}async function N(a,b,c,d,e){for(let f of c){if(!d.has(f.hostKey)||!L(a,f,e()))continue;let c=`orchestrator-restart-recovery-${H}-${f.seatEpoch}`,g=await (0,v.enqueueStructuredMessage)({path:f.path,conversationId:f.conversationId,clientMessageId:c,text:function(a){let b=null===a.at?"an unrecorded time":new Date(a.at).toISOString();return`Viewer restarted and severed your structured host mid-turn. The severed turn is the one whose last transcript event is ${a.kind??"a record"} at ${b}, which nothing answered. You were re-hosted automatically; resume that turn.`}(f.severed),images:[]},{enabled:()=>!0,client:()=>b,registry:()=>a});if(!g?.ok)throw console.error("[structured hosts] orchestrator restart recovery delivery failed",{conversationId:f.conversationId,status:g?.status??503,error:g?.error??"structured delivery unavailable"}),new s.Hr(g?.error??"orchestrator restart recovery delivery admission failed")}}function O(a,b){return`${G}-${a}-${b}`}async function P(a,b,c,d,e,f){for(let g of c){let c=(0,k.pp)(g.key),h=d.get(c);if(!h||f.has(h))continue;let i=a.readOnlySnapshot().entries[c];if(!i)throw Error(`adopted Codex registry row disappeared: ${c}`);let j=O(g.key.sessionId,i.claimEpoch),l=e.get(c);if(l){if("failed"===l.receipt.status||"rejected"===l.receipt.status){l.receipt.retryOfOperationId||await b.retryOperation(l.operationId,`${l.receipt.idempotencyKey}-retry-1`,{requireHostedConversationId:h});continue}if(l.operationId===j||"delivered"!==l.receipt.status||l.receipt.retryOfOperationId)continue}await b.command({kind:"send",operationId:j,idempotencyKey:j,conversationId:h,text:"Continue the interrupted turn from the transcript.",policy:"queue",turnId:null})}}async function Q(a,b,c){let d=new Map;for(let e of c){let c=(0,k.pp)(e.key),f=a.readOnlySnapshot().entries[c];if(!f)continue;let g=await b.operationStatus(O(e.key.sessionId,f.claimEpoch),{currentRetryLeaf:!0});if(g){d.set(c,g);continue}if(f.claimEpoch<=0)continue;let h=await b.operationStatus(O(e.key.sessionId,f.claimEpoch-1),{currentRetryLeaf:!0});h&&d.set(c,h)}return d}async function R(a,b=()=>{},c=new Map){let d=a.readOnlySnapshot(),e=new Date().toISOString(),f=Object.values(d.conversations).flatMap(a=>{let b=a.generations.at(-1);if(!b)return[];let c=(0,k.pp)({engine:a.engine,sessionId:b.id}),e=d.entries[c];return e?.structuredHost&&"live"===e.status&&!a.supersededBy?[{conversation:a,generation:b,hostKey:c}]:[]}),h=[],i=new Set,j=0,l=Array.from({length:Math.min(16,f.length)},async()=>{for(;j<f.length;){let a=f[j++];if(!a)continue;let{conversation:b,generation:d,hostKey:k}=a,l=await (0,o.mR)(d.path);if(c.set(k,"complete"===l.integrity?(0,x.Q$)(l.records,b.engine,null).lastEventAt:null),"complete"!==l.integrity){i.add(k);continue}let m=function(a,b,c){if("claude"===b)return(0,g.j)(a,"claude");if(!c)return(0,g.j)(a,"codex",!0);let d=a.findLastIndex(a=>{let b=a.payload;if(!b||"object"!=typeof b||Array.isArray(b))return!1;let c=b.type;return"task_started"===c||"turn_started"===c||"user_message"===c});if(d<0){let b=(0,g.j)(a,"codex",!0);return"terminal"===b.state?{state:"unknown",source:"empty",terminalAt:null}:b}return(0,g.j)(a.slice(d),"codex",!0)}(l.records,b.engine,l.prefixTruncated);("busy"===m.state||"terminal"===m.state)&&h.push({engine:b.engine,path:d.path,accountId:d.accountId,launchProfile:d.launchProfile,turn:m,expectedTurnObservedAt:b.turn.observedAt,observedAt:e})}});return await Promise.all(l),b(),h.length>0&&a.reconcileConversations(h),i}function S(a,b){return b.startsWith("conversation_")?a.canonicalConversationId(b):b}async function T(a,b){if(!b)return{hostedRunningConversationIds:new Set,pendingOperationConversationIds:new Set,pendingCodexContinuationConversationIds:new Set};let c=await b.snapshot(),d=new Set(c.sessions.filter(a=>"hosted"===a.host&&("running"===a.turn||"interrupt_requested"===a.turn)).map(b=>S(a,b.conversationId))),e=new Set(c.recentOperations.filter(a=>"pending"===a.status||"queued"===a.status||"delivering"===a.status||"applying"===a.status).filter(a=>"kill"!==a.kind).map(b=>S(a,b.conversationId))),f=new Set,g=0;for(;;){let c=await b.effectBatch(F,g);for(let b of c){let c=b.payload.conversationId;if("string"==typeof c){let d=S(a,c);e.add(d),"runtime.send"===b.kind&&"string"==typeof b.payload.operationId&&b.payload.operationId.startsWith(`${G}-`)&&f.add(d)}}if(c.length<100)break;let d=Math.max(...c.map(a=>a.eventSeq));if(!Number.isSafeInteger(d)||d<=g)throw Error("structured startup operation page did not advance");g=d}return{hostedRunningConversationIds:d,pendingOperationConversationIds:e,pendingCodexContinuationConversationIds:f}}async function U(a,b,c=a.readOnlySnapshot(),d=new Map,e=l.js,f=new Set,g=new Set,h=new Set,i=new Map){let j,m=new Map(Object.values(c.conversations).flatMap(a=>{let b=a.generations.at(-1);return b?[[(0,k.pp)({engine:a.engine,sessionId:b.id}),a]]:[]})),n=new Set(Object.values(c.heldDeliveries).filter(a=>"held"===a.state||"assigned"===a.state||"delivery-uncertain"===a.state).map(b=>a.canonicalConversationId(b.conversationId)));for(let[a,b]of m){let d=c.entries[a];if(d?.status!=="live"||!d.structuredHost||b.supersededBy||i.has(a))continue;let e=await (0,x.SP)(b.engine,b.generations.at(-1).path);i.set(a,e.lastEventAt)}let o=Date.now(),p=(Number.isFinite(j=Number(process.env.LLV_HOST_ADOPTION_MAX_TURN_AGE_HOURS??6))&&j>0?j:6)*36e5,q=new Set;return c=>{let j=m.get((0,k.pp)(c.key));if(!j||j.supersededBy||h.has(a.canonicalConversationId(j.id)))return!1;let l=d.get((0,k.pp)(c.key));if(l?.some(b=>L(a,b,e())))return!0;let r=a.canonicalConversationId(j.id);if(n.has(r)||b.pendingOperationConversationIds.has(r)||"handoff"===c.pendingAction)return!0;if("terminal"===j.turn.state||g.has(r)||f.has((0,k.pp)(c.key)))return!1;let s=b.hostedRunningConversationIds.has(r),t="busy"===j.turn.state||!!c.structuredHost?.activeTurnRef||"live"===c.status&&s;if("live"!==c.status||!t)return!1;let u=(0,k.pp)(c.key),v=i.get(u)??null,w=null===v?null:Math.max(0,o-v);return null!==w&&w<=p||(q.has(u)||(console.warn("[structured hosts] refusing stale turn-claim adoption",{key:u,ageMs:w,maxAgeMs:p}),q.add(u)),!1)}}let V=new Set(["passed","failed","needs_decision","skipped"]);function W(a,b=!0){let c,d=new Set,e=new Set;try{if(!b)throw Error("pipeline admission authority is unavailable");c=(0,q.loadPipelinesForStartup)()}catch(b){for(let[c,d]of(console.error("[structured hosts] pipeline registry unreadable; deferring pipeline adoption",{error:b instanceof Error?b.message:String(b)}),Object.entries(a.readOnlySnapshot().memberships)))d.some(a=>"pipeline"===a.kind)&&e.add(a.canonicalConversationId(c));return{settled:d,deferred:e}}let f=a.readOnlySnapshot().memberships;for(let b of c){let c=b.runs.flatMap(a=>a.attempts).some(a=>a.unresolvedTermination?.survivors.some(a=>"dead"!==(0,m.Ue)(a)));if(c)for(let[c,d]of Object.entries(f))d.some(a=>"pipeline"===a.kind&&a.containerId===b.id)&&e.add(a.canonicalConversationId(c));for(let f of b.runs)for(let b of f.attempts){if(!b.conversationId?.startsWith("conversation_"))continue;let f=a.canonicalConversationId(b.conversationId);V.has(b.state)&&d.add(f),c&&e.add(f)}}return{settled:d,deferred:e}}async function X(a={}){let b=a.assertActive??(()=>{});b(),(0,n.x_)();let c=a.registry??(0,i.agentRegistry)(),d=void 0===a.client?(0,s.sS)():a.client,e=a.orchestratorSeats??l.js,g=function(a,b){let c=new Map;for(let d of[...a,...b]){let a=`${d.project}\0${d.seatEpoch}\0${d.hostKey}`,b=c.get(a);c.set(a,b?{...d,severed:b.severed}:d)}return[...c.values()]}(I,await K(c,e(),c.readOnlySnapshot(),a.liveness??{})),o=function(a){let b=new Map;for(let c of a){let a=b.get(c.hostKey)??[];a.push(c),b.set(c.hostKey,a)}return b}(g),v=null!==d;d&&!(0,t.SW)(c)&&await (0,t.S8)([],{registry:c,client:d,deferStartupWork:!0}),(0,y.lk)({phase:"refreshing transcripts",completedHosts:0,totalHosts:null});let x=new Map,F=await (a.refreshTranscriptState?a.refreshTranscriptState(c):R(c,b,x))??new Set;return b(),(0,q.withPipelineStartupAdmission)(async i=>{var l,n,q,G,H;let K,L,O,R,S;b();let V=i?(a.pipelineEvidence??W)(c):W(c,!1),X=new Set(Object.values(c.readOnlySnapshot().conversations).filter(a=>V.deferred.has(c.canonicalConversationId(a.id))).flatMap(a=>a.generations.map(b=>(0,k.pp)({engine:a.engine,sessionId:b.id})))),$=M(c,g,e()),_=await E(c,A,c.readOnlySnapshot(),$);J(_,g),c.drainDeadSupersededHeldDeliveries(),(0,r.cf)(c,a=>$.has((0,k.pp)(a.key))||X.has((0,k.pp)(a.key)));let aa=await T(c,d),ab=await U(c,aa,c.readOnlySnapshot(),o,e,F,V.settled,V.deferred,x),ac=a=>{try{b()}catch{return!1}return ab(a)},ad=Object.values(c.readOnlySnapshot().entries).filter(a=>a.structuredHost&&ac(a));if(!v&&ad.length>0){A=_,I=[...g];let a=ad.map(a=>(0,k.pp)(a.key));throw B||(B=!0,console.error("[structured hosts] deferring adoption until a delivery controller can claim it",{keys:a})),new s.Hr(`structured delivery controller is unavailable; deferred adoption of ${a.length} host(s): ${a.join(", ")}`)}let ae=ad.filter(a=>"codex"===a.key.engine).length,af=ad.length-ae,ag=ad.length,ah=0,ai=a=>{b(),(0,y.lk)({phase:a,completedHosts:ah,totalHosts:ag})};ai("adopting Codex hosts");let aj=a.resolveCodexOwner??(a=>f.accountManager.resolveTranscriptOwner("codex",a.artifactPath)),ak=a.resolveClaudeOwner??(a=>f.accountManager.resolveTranscriptOwner("claude",a.artifactPath)),al=(0,p.Fd)(process.env),am=await (a.adopt??r.Gd)(c,a=>{let b=aj(a),d=c.rotateSpawnCapabilityForPath(a.artifactPath),e=(0,w.bf)((0,w.oL)(a.launchProfile),al,d);return{cwd:a.cwd,codexHome:b?.home,fileAuthCredentials:b?.kind==="managed",model:a.launchProfile?.model??void 0,effort:a.launchProfile?.effort??void 0,allowSubagents:a.launchProfile?.allowSubagents??!1,mcpServers:a.launchProfile?.mcpServers??["viewer"],plugins:a.launchProfile?.plugins??[],...e.codex,...e.host,env:e.env}},al,ac,()=>{ah+=1,ag=Math.max(ag,ah),(0,y.lk)({phase:"adopting Codex hosts",completedHosts:ah,totalHosts:ag})});ah=Math.max(ah,ae),J(_=D(_,am),g),ai("adopting Claude hosts");let an=await (a.adoptClaude??r.Fn)(c,a=>{var b,d;let e,f,g=(b=ak(a),d=c.rotateSpawnCapabilityForPath(a.artifactPath),e=(0,w.bf)((0,w.oL)(a.launchProfile),(0,p.Fd)(b?.env??al),d),f=b?(0,w.Uk)(b):null,{cwd:a.cwd,claudeConfigDir:f?.claudeConfigDir,claudeProjectsDir:b?.transcriptRoot,spawnPolicyBaseSettingsPath:f?.spawnPolicyBaseSettingsPath??null,allowSubagents:a.launchProfile?.allowSubagents??!1,mcpServers:a.launchProfile?.mcpServers??["viewer"],mcpStatePath:f?.mcpStatePath,readOnly:(0,h.lV)(a.launchProfile),restricted:a.launchProfile?.sandbox==="restricted",env:e.env,...e.host,model:a.launchProfile?.model??void 0,effort:a.launchProfile?.effort??void 0,permissionMode:(0,j.A5)(a.launchProfile??{})});return!g.claudeConfigDir&&g.mcpServers.length>0&&console.error("[structured hosts] resuming a Claude row without the MCP grant it carries",{host:(0,k.pp)(a.key),mcpServers:g.mcpServers,reason:"no Claude account owns this transcript"}),g},al,ac,()=>{ah+=1,ag=Math.max(ag,ah),(0,y.lk)({phase:"adopting Claude hosts",completedHosts:ah,totalHosts:ag})});ah=Math.max(ah,ae+af),J(_=D(_,an),g),function(a,b,c,d,e=t.sy,f=m.$k){let g=new Set(c.map(a=>(0,k.pp)(a.key))),h=Object.values(a.readOnlySnapshot().entries).filter(a=>a.structuredHost&&d(a.key)&&b(a)&&!g.has((0,k.pp)(a.key))&&!e(a.key));if(0===h.length)return;let i=h.filter(a=>{let b=a.structuredHost?.process;return!!(b&&f(b))}),j=h.filter(a=>!i.includes(a));if(j.length>0&&console.error("[structured hosts] eligible hosts have no live engine process to hand over; leaving them to on-demand hosting",{keys:j.map(a=>(0,k.pp)(a.key))}),0===i.length)return;let l=i.map(a=>(0,k.pp)(a.key));throw console.error("[structured hosts] eligible hosts remain owned by the incumbent Viewer; retrying startup",{keys:l}),new s.Hr(`structured startup left ${l.length} eligible host(s) owned by the incumbent Viewer: ${l.join(", ")}`)}(c,ac,_,b=>"codex"===b.engine?void 0===a.adopt:void 0===a.adoptClaude,a.hostClaimed),ai("reconciling structured hosts"),$=M(c,g,e()),J(_=await E(c,_,c.readOnlySnapshot(),$),g);let ao=new Set(_.map(a=>(0,k.pp)(a.key))),ap=_.filter(a=>"codex"===a.key.engine&&!$.has((0,k.pp)(a.key))),aq=d?await Q(c,d,ap):new Map;await (0,r.K$)(c,a=>ao.has((0,k.pp)(a.key))||X.has((0,k.pp)(a.key))||F.has((0,k.pp)(a.key))||ac(a));let ar=c.readOnlySnapshot();$=M(c,g,e(),ar),J(_=await E(c,_,ar,$),g);let as=await U(c,aa,ar,o,e,F,V.settled,V.deferred,x);b();let at=new Set(_.map(a=>(0,k.pp)(a.key))),au=function(a,b,c,d,e=a.readOnlySnapshot()){return new Map(Object.values(e.conversations).flatMap(f=>{let g=f.generations.at(-1);if("codex"!==f.engine||!g)return[];let h={engine:"codex",sessionId:g.id},i=e.entries[(0,k.pp)(h)];return d.has((0,k.pp)(h))?[]:("busy"===f.turn.state||"unknown"===f.turn.state&&(i?.structuredHost?.activeTurnRef||c.has(a.canonicalConversationId(f.id))))&&i?.structuredHost&&b(i)?[[(0,k.pp)(h),f.id]]:[]}))}(c,a=>at.has((0,k.pp)(a.key))||as(a),aa.hostedRunningConversationIds,F,ar),av=_.filter(a=>"codex"===a.key.engine&&!$.has((0,k.pp)(a.key)));ai("finalizing structured delivery"),v&&(await (0,t.le)(_,ai,b),function(a,b=t.sy){let c=a.filter(a=>!b(a.key));if(0===c.length)return;let d=c.map(a=>(0,k.pp)(a.key));throw console.error("[structured hosts] adopted hosts were left unclaimed by the delivery controller",{keys:d}),new s.Hr(`structured delivery controller did not claim ${c.length} adopted host(s): ${d.join(", ")}`)}(_,a.hostClaimed)),ai("recovering orchestrator deliveries"),await N(c,d,g.filter(a=>!X.has(a.hostKey)),at,e),d&&(ai("recovering interrupted deliveries"),await P(c,d,av,au,aq,aa.pendingCodexContinuationConversationIds),ai("kicking recovered deliveries"),await (0,u.l)());let aw=Y(c,V.deferred);return(d&&0===aw.length&&(ai("recovering pending spawns"),await (0,w.Z4)(c,d,{assertActive:b})),b(),z=_,X.size>0||aw.length>0)?(A=_,I=[...g],l=a,n=c,q=[...X],G=V.deferred,H=aw.length,K=`pipeline startup evidence is unresolved; deferred ${q.length} host(s)`+(H>0?` and ${H} pending launch receipt(s)`:""),R=(O=null!==(L=C)&&L.conversationIds.size===G.size&&[...G].every(a=>L.conversationIds.has(a))&&L.fencedReceipts===H)?Math.min(2*L.delayMs,3e4):1e3,C=S={hostKeys:q,conversationIds:new Set(G),fencedReceipts:H,message:K,delayMs:R},O||console.error(`[structured hosts] ${K}; re-probing the evidence`,{hosts:q,nextProbeMs:R}),Z(l,n,S)):(A=[],I=[],C&&(console.error("[structured hosts] deferred pipeline rows admitted",{hosts:C.hostKeys}),C=null)),z})}function Y(a,b){return 0===b.size?[]:Object.values(a.readOnlySnapshot().receipts).filter(c=>"completed"!==c.state&&"failed"!==c.state&&"conflicted"!==c.state&&b.has(a.canonicalConversationId(c.conversationId)))}function Z(a,b,c){let d=a.schedule??((a,b)=>setTimeout(a,b));d(()=>{if(C===c){try{a.assertActive?.()}catch{return}$(a,b,c)}},c.delayMs).unref?.()}async function $(a,b,c){let d=!0;try{let e=(a.pipelineEvidence??W)(b);d=[...c.conversationIds].every(a=>e.deferred.has(a))&&Y(b,e.deferred).length>=c.fencedReceipts}catch(a){console.error("[structured hosts] deferred pipeline evidence probe failed",{error:a instanceof Error?a.message:String(a)})}if(d){c.delayMs=Math.min(2*c.delayMs,3e4),Z(a,b,c);return}try{await X(a)}catch(d){console.error("[structured hosts] deferred pipeline adoption pass failed; re-probing",{error:d instanceof Error?d.message:String(d)}),C===c&&(c.delayMs=Math.min(2*c.delayMs,3e4),Z(a,b,c))}}async function _(){let a=(0,i.agentRegistry)(),b=D(z,A).filter(a=>!(0,t.sy)(a.key)),c=(await Promise.allSettled(b.map(async({key:b,host:c})=>{let d=await c.health();if("active"!==d.status&&"attention"!==d.status||null===d.pid||null===d.processStartIdentity)return;let e=(0,m.y6)(d.pid,void 0,d.processStartIdentity);if(!a.markStructuredHostHandoff(b,e))throw Error("unpublished startup host changed before release handover");await c.release()}))).flatMap(a=>"rejected"===a.status?[a.reason]:[]);if(c.length)throw AggregateError(c,"unpublished startup hosts did not quiesce")}},26277:(a,b,c)=>{c.d(b,{Gs:()=>C,Kn:()=>w,gY:()=>x,h3:()=>q,jd:()=>v,kt:()=>E,ue:()=>D,vx:()=>y,w5:()=>z});var d=c(31421);c(77598);var e=c(73024),f=c.n(e),g=c(48161),h=c.n(g),i=c(76760),j=c.n(i),k=c(27146),l=c(89204),m=c(55541),n=c(19777);Object.freeze({repo:"https://github.com/chigwell/telegram-mcp",release:"v3.2.22",commit:"a61294362226bd93052f5a40b4a1b1269a99ce69",license:"Apache-2.0"});let o="127.0.0.1";function p(){let a=Number(process.env.LLV_TELEGRAM_MCP_PORT);return Number.isInteger(a)&&a>0&&a<65536?a:8809}function q(){return`http://${o}:${p()}/mcp`}function r(a,...b){if(a)return a;let c=j().join(process.cwd(),...b);if(f().existsSync(c))return c;let d=j().join(process.cwd(),"..","..",...b);return f().existsSync(d)?d:c}function s(){return r(process.env.LLV_TELEGRAM_VENDOR_DIR,"vendor","telegram-mcp")}function t(){return(0,k.BQ)("telegram","venv")}function u(){return(0,k.BQ)("telegram","vendor-src")}function v(){return process.env.LLV_TELEGRAM_PYTHON||j().join(t(),"bin","python")}function w(){return r(process.env.LLV_TELEGRAM_SERVER_BRIDGE,"bin","telegram-mcp-server.py")}function x(){return r(process.env.LLV_TELEGRAM_SESSION_READER,"bin","telegram-session-reader.mjs")}let y=Object.freeze(["wait_for_settled_message"]);function z(){let a=process.env.LLV_TELEGRAM_API_ID,b=process.env.LLV_TELEGRAM_API_HASH;if(a&&b)return{apiId:a,apiHash:b};try{let a=JSON.parse(f().readFileSync((0,k.ks)("telegram.json"),"utf8"));if("string"==typeof a.apiId&&a.apiId&&"string"==typeof a.apiHash&&a.apiHash)return{apiId:a.apiId,apiHash:a.apiHash}}catch{}return null}function A(){return f().existsSync(j().join(t(),".llv-provisioned"))&&f().existsSync(v())&&f().existsSync(j().join(u(),"pyproject.toml"))}let B=null;function C(){return A()?Promise.resolve(!0):B||(B=(async()=>((0,n._q)(!0),await (0,l.pM)((0,k.BQ)("telegram","connector-provision"),"Telegram connector provisioning is busy",async()=>{var a;return!!A()||await (a={command:process.execPath,args:[r(process.env.LLV_TELEGRAM_PROVISIONER,"bin","provision-telegram-connector.mjs")],cwd:s(),env:{...F(),LLV_STATE_DIR:(0,k.Pn)(),LLV_TELEGRAM_VENDOR_DIR:s(),LLV_TELEGRAM_PYTHON:v()}},new Promise(b=>{let c;try{c=(0,d.spawn)(a.command,a.args,{cwd:a.cwd,env:a.env,stdio:"ignore"})}catch{b(!1);return}c.once("error",()=>b(!1)),c.once("exit",a=>b(0===a))}))&&A()})))().catch(()=>!1).finally(()=>{B=null}))}function D(a){let b=u(),c=(0,m.WG)();return{command:v(),args:[w()],cwd:b,env:{...F(),...c,TELEGRAM_API_ID:a.credentials.apiId,TELEGRAM_API_HASH:a.credentials.apiHash,TELEGRAM_SESSION_STRING:a.sessionString,TELEGRAM_EXPOSED_TOOLS:"read-only",TELEGRAM_EVENT_FEED:"1",TELEGRAM_EVENT_FEED_FILE:(0,n.ZI)(a.credentialRef),LLV_TELEGRAM_EXCLUDED_TOOLS:y.join(","),LLV_TELEGRAM_MCP_TOKEN:a.connectorToken,LLV_TELEGRAM_VENDOR_DIR:b,MCP_TRANSPORT:"http",MCP_HOST:o,MCP_PORT:String(p())}}}function E(a,b){return{command:v(),args:[r(process.env.LLV_TELEGRAM_BRIDGE,"bin","telegram-login-bridge.py"),a],cwd:h().homedir(),env:{...F(),TELEGRAM_API_ID:b.apiId,TELEGRAM_API_HASH:b.apiHash}}}function F(){let a={};for(let b of["PATH","HOME","LANG","LC_ALL","TMPDIR"])void 0!==process.env[b]&&(a[b]=process.env[b]);return a}},55541:(a,b,c)=>{c.d(b,{WG:()=>o,cO:()=>n,yb:()=>l});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(27146),k=c(19777);let l=262144,m=String.raw`import fcntl
1
+ "use strict";exports.id=644,exports.ids=[644,6277],exports.modules={23886:(a,b,c)=>{c.d(b,{adoptStructuredHostsAtStartup:()=>X,releaseStructuredHostsForViewerDemotion:()=>aa});var d=c(65236),e=c(66812),f=c(58577),g=c(70160),h=c(22993),i=c(88623),j=c(29307),k=c(76385),l=c(21420),m=c(842),n=c(65281),o=c(18027),p=c(62490),q=c(93994),r=c(2749),s=c(5242),t=c(66052),u=c(75211),v=c(83968),w=c(61532),x=c(85346);let y=[],z=[],A=!1,B=null;function C(a,b){let c=new Map(a.map(a=>[(0,i.pp)(a.key),a]));for(let a of b){let b=(0,i.pp)(a.key);c.has(b)||c.set(b,a)}return[...c.values()]}async function D(a,b,c=a.readOnlySnapshot(),d=new Set){let e=[];for(let a of b)!function(a,b,c=new Set){let d=(0,i.pp)(b.key),e=a.entries[d];if(!e?.structuredHost||"dead"===e.status||"unhosted"===e.status)return!1;let f=Object.values(a.conversations).find(a=>a.engine===b.key.engine&&a.generations.at(-1)?.id===b.key.sessionId);return!!(f&&!f.supersededBy&&("terminal"!==f.turn.state||c.has(d)))}(c,a,d)?await a.host.release():e.push(a);return e}let E=["runtime.send","runtime.steer","runtime.inject","runtime.interrupt","runtime.answer","runtime.spawn","runtime.reconfigure","runtime.compact"],F="recovery-continuation",G=[];function H(a,b){z=a;let c=new Set(a.map(a=>(0,i.pp)(a.key)));G=b.filter(a=>c.has(a.hostKey))}async function I(a,b=(0,j.activeOrchestratorSeats)(),c=a.readOnlySnapshot(),d={}){let e=[];for(let f of b){if(!f.conversationId?.startsWith("conversation_"))continue;let b=a.canonicalConversationId(f.conversationId),g=c.conversations[b],h=g?.generations.at(-1);if(!g||!h||g.supersededBy)continue;let j=(0,i.pp)({engine:g.engine,sessionId:h.id}),k=c.entries[j];if(!k?.structuredHost||null!==k.host)continue;let l=await (0,v.kT)(a,b,{...d,snapshot:c});l?.state==="severed"&&"busy"===l.turn&&(console.error("[structured hosts] resuming an orchestrator seat whose turn was severed",{project:f.project,conversationId:b,evidence:l.reason}),e.push({project:f.project,conversationId:b,path:h.path,seatEpoch:f.seatEpoch,hostKey:j,owner:k.structuredHost.process?{...k.structuredHost.process}:null,turnRef:k.structuredHost.activeTurnRef??null,claimEpoch:k.claimEpoch,severed:{kind:l.lastEvent.kind,at:l.lastEvent.at,reason:l.reason}}))}return e}function J(a,b,c,d=a.readOnlySnapshot()){let e=c.find(a=>a.project===b.project);if(!e||"active"!==e.state||e.seatEpoch!==b.seatEpoch||!e.conversationId?.startsWith("conversation_")||a.canonicalConversationId(e.conversationId)!==b.conversationId)return!1;let f=d.conversations[b.conversationId],g=f?.generations.at(-1);if(!f||!g||f.supersededBy||g.path!==b.path||(0,i.pp)({engine:f.engine,sessionId:g.id})!==b.hostKey)return!1;let h=d.entries[b.hostKey];return!!(h?.structuredHost&&null===h.host&&("live"===h.status||"idle"===h.status))}function K(a,b,c,d=a.readOnlySnapshot()){return new Set(b.filter(b=>J(a,b,c,d)).map(a=>a.hostKey))}function L(a,b,c,d,e,f){let g=a.readOnlySnapshot(),h=[];for(let j of c){let c=function(a,b,c,d,e,f,g=Date.now()){let h=a.canonicalConversationId(b.conversationId),j=c.conversations[h],k=j?.generations.at(-1);if(!j||!k)return"the conversation no longer exists";if(j.supersededBy)return"the conversation was superseded";if((0,i.pp)({engine:j.engine,sessionId:k.id})!==b.hostKey)return"the conversation moved to another generation";if(b.seat){let c=d.find(a=>a.project===b.seat.project);if(!c||"active"!==c.state||c.seatEpoch!==b.seat.seatEpoch||!c.conversationId?.startsWith("conversation_")||a.canonicalConversationId(c.conversationId)!==h)return"the orchestrator seat was rotated"}if(f.has(h))return"its pipeline stage is already settled";let l=Date.parse(b.recordedAt);if(g-l>864e5)return"the interruption is too old to resume unattended";if("owed"!==b.state)return null;let m=Object.values(c.heldDeliveries).some(c=>a.canonicalConversationId(c.conversationId)===h&&c.clientMessageId!==b.id&&Date.parse(c.createdAt)>l),n=(e.get(h)??[]).some(a=>a.idempotencyKey!==b.id&&a.at>l);return m||n?"a newer message already resumed the conversation":null}(a,j,g,d,e,f);if(null===c){h.push(j);continue}b.update(j.id,{state:"discharged",resolvedAt:new Date().toISOString(),resolution:c}),console.error("[structured hosts] interrupted turn needs no continuation",{conversationId:j.conversationId,obligation:j.id,reason:c})}return h}async function M(a,b,c,d,e){let f=[];for(let g of d){if(!e.has(g.hostKey))continue;let d=a.readOnlySnapshot(),h=d.entries[g.hostKey]?.structuredHost?.process??null;if(g.owner&&h&&h.pid===g.owner.pid&&h.startIdentity===g.owner.startIdentity)continue;let i=d.conversations[a.canonicalConversationId(g.conversationId)],j=i?.generations.at(-1);if(!i||!j)continue;let k=await (0,t.enqueueStructuredMessage)({path:j.path,conversationId:i.id,clientMessageId:g.id,text:(0,x.at)(g),images:[]},{enabled:()=>!0,client:()=>b,registry:()=>a});if(k?.ok){c.update(g.id,{state:"delivered"===k.outcome?"delivered":"submitted",operationId:k.operationId,attempts:g.attempts+1,..."delivered"===k.outcome?{resolvedAt:new Date().toISOString(),resolution:"delivered"}:{}});continue}let l=k?.error??"structured delivery unavailable",m=k?.status??503;if(console.error("[structured hosts] interrupted turn continuation was not admitted",{conversationId:g.conversationId,obligation:g.id,status:m,error:l}),409===m&&!k?.transportUncertain){c.update(g.id,{state:"failed",attempts:g.attempts+1,resolvedAt:new Date().toISOString(),resolution:l});continue}c.update(g.id,{attempts:g.attempts+1}),f.push(`${g.conversationId}: ${l}`)}return f}function N(a,b){return`${F}-${a}-${b}`}async function O(a,b,c,d,e,f){for(let g of c){let c=(0,i.pp)(g.key),h=d.get(c);if(!h||f.has(h))continue;let j=a.readOnlySnapshot().entries[c];if(!j)throw Error(`adopted Codex registry row disappeared: ${c}`);let k=N(g.key.sessionId,j.claimEpoch),l=e.get(c);if(l){if("failed"===l.receipt.status||"rejected"===l.receipt.status){l.receipt.retryOfOperationId||await b.retryOperation(l.operationId,`${l.receipt.idempotencyKey}-retry-1`,{requireHostedConversationId:h});continue}if(l.operationId===k||"delivered"!==l.receipt.status||l.receipt.retryOfOperationId)continue}await b.command({kind:"send",operationId:k,idempotencyKey:k,conversationId:h,text:"Continue the interrupted turn from the transcript.",policy:"queue",turnId:null})}}async function P(a,b,c){let d=new Map;for(let e of c){let c=(0,i.pp)(e.key),f=a.readOnlySnapshot().entries[c];if(!f)continue;let g=await b.operationStatus(N(e.key.sessionId,f.claimEpoch),{currentRetryLeaf:!0});if(g){d.set(c,g);continue}if(f.claimEpoch<=0)continue;let h=await b.operationStatus(N(e.key.sessionId,f.claimEpoch-1),{currentRetryLeaf:!0});h&&d.set(c,h)}return d}async function Q(a,b=()=>{},c=new Map){let d=a.readOnlySnapshot(),f=new Date().toISOString(),g=Object.values(d.conversations).flatMap(a=>{let b=a.generations.at(-1);if(!b)return[];let c=(0,i.pp)({engine:a.engine,sessionId:b.id}),e=d.entries[c];return e?.structuredHost&&"live"===e.status&&!a.supersededBy?[{conversation:a,generation:b,hostKey:c}]:[]}),h=[],j=new Set,k=0,l=Array.from({length:Math.min(16,g.length)},async()=>{for(;k<g.length;){let a=g[k++];if(!a)continue;let{conversation:b,generation:d,hostKey:i}=a,l=await (0,m.mR)(d.path);if(c.set(i,"complete"===l.integrity?(0,v.Q$)(l.records,b.engine,null).lastEventAt:null),"complete"!==l.integrity){j.add(i);continue}let n=function(a,b,c){if("claude"===b)return(0,e.j)(a,"claude");if(!c)return(0,e.j)(a,"codex",!0);let d=a.findLastIndex(a=>{let b=a.payload;if(!b||"object"!=typeof b||Array.isArray(b))return!1;let c=b.type;return"task_started"===c||"turn_started"===c||"user_message"===c});if(d<0){let b=(0,e.j)(a,"codex",!0);return"terminal"===b.state?{state:"unknown",source:"empty",terminalAt:null}:b}return(0,e.j)(a.slice(d),"codex",!0)}(l.records,b.engine,l.prefixTruncated);("busy"===n.state||"terminal"===n.state)&&h.push({engine:b.engine,path:d.path,accountId:d.accountId,launchProfile:d.launchProfile,turn:n,expectedTurnObservedAt:b.turn.observedAt,observedAt:f})}});return await Promise.all(l),b(),h.length>0&&a.reconcileConversations(h),j}function R(a,b){return b.startsWith("conversation_")?a.canonicalConversationId(b):b}function S(a,b){let c=new Map;for(let d of[...b.recentOperations,...b.sessions.flatMap(a=>a.recentReceipts??[])]){if("send"!==d.kind&&"steer"!==d.kind)continue;let b=Date.parse(d.admittedAt??d.at);if(!Number.isFinite(b))continue;let e=R(a,d.conversationId),f=c.get(e)??[];f.push({idempotencyKey:d.idempotencyKey,at:b}),c.set(e,f)}return c}async function T(a,b){if(!b)return{hostedRunningConversationIds:new Set,pendingOperationConversationIds:new Set,pendingCodexContinuationConversationIds:new Set,admittedMessages:new Map};let c=await b.snapshot(),d=new Set,e=new Set(c.sessions.filter(a=>"hosted"===a.host&&("running"===a.turn||"interrupt_requested"===a.turn)).map(b=>R(a,b.conversationId))),f=new Set,g=new Set,h=S(a,c),i=0;for(;;){let c=await b.effectBatch(E,i);for(let b of c){let c=b.payload.conversationId;if("runtime.reconfigure"===b.kind&&"string"==typeof b.payload.accountId&&"string"==typeof b.payload.operationId){d.add(b.payload.operationId);continue}if("string"==typeof c){let d=R(a,c);f.add(d),"runtime.send"===b.kind&&"string"==typeof b.payload.operationId&&b.payload.operationId.startsWith(`${F}-`)&&g.add(d)}}if(c.length<100)break;let e=Math.max(...c.map(a=>a.eventSeq));if(!Number.isSafeInteger(e)||e<=i)throw Error("structured startup operation page did not advance");i=e}for(let b of c.recentOperations)("pending"===b.status||"queued"===b.status||"delivering"===b.status||"applying"===b.status)&&"kill"!==b.kind&&("reconfigure"===b.kind&&"applying"!==b.status&&d.has(b.operationId)||f.add(R(a,b.conversationId)));return{hostedRunningConversationIds:e,pendingOperationConversationIds:f,pendingCodexContinuationConversationIds:g,admittedMessages:h}}async function U(a,b,c=a.readOnlySnapshot(),d=new Map,e=j.activeOrchestratorSeats,f=new Set,g=new Set,h=new Set,k=new Map,l=new Set){let m,n=new Map(Object.values(c.conversations).flatMap(a=>{let b=a.generations.at(-1);return b?[[(0,i.pp)({engine:a.engine,sessionId:b.id}),a]]:[]})),o=new Set(Object.values(c.heldDeliveries).filter(a=>"held"===a.state||"assigned"===a.state||"delivery-uncertain"===a.state).map(b=>a.canonicalConversationId(b.conversationId)));for(let[a,b]of n){let d=c.entries[a];if(d?.status!=="live"||!d.structuredHost||b.supersededBy||k.has(a))continue;let e=await (0,v.SP)(b.engine,b.generations.at(-1).path);k.set(a,e.lastEventAt)}let p=Date.now(),q=(Number.isFinite(m=Number(process.env.LLV_HOST_ADOPTION_MAX_TURN_AGE_HOURS??6))&&m>0?m:6)*36e5,r=new Set;return c=>{let j=n.get((0,i.pp)(c.key));if(!j||j.supersededBy||h.has(a.canonicalConversationId(j.id)))return!1;if(l.has((0,i.pp)(c.key))&&("live"===c.status||"idle"===c.status))return!0;let m=d.get((0,i.pp)(c.key));if(m?.some(b=>J(a,b,e())))return!0;let s=a.canonicalConversationId(j.id);if(o.has(s)||b.pendingOperationConversationIds.has(s)||"handoff"===c.pendingAction)return!0;if("terminal"===j.turn.state||g.has(s)||f.has((0,i.pp)(c.key)))return!1;let t=b.hostedRunningConversationIds.has(s),u="busy"===j.turn.state||!!c.structuredHost?.activeTurnRef||"live"===c.status&&t;if("live"!==c.status||!u)return!1;let v=(0,i.pp)(c.key),w=k.get(v)??null,x=null===w?null:Math.max(0,p-w);return null!==x&&x<=q||(r.has(v)||(console.warn("[structured hosts] refusing stale turn-claim adoption",{key:v,ageMs:x,maxAgeMs:q}),r.add(v)),!1)}}let V=new Set(["passed","failed","needs_decision","skipped"]);function W(a,b=!0){let c,d=new Set,e=new Set;try{if(!b)throw Error("pipeline admission authority is unavailable");c=(0,o.loadPipelinesForStartup)()}catch(b){for(let[c,d]of(console.error("[structured hosts] pipeline registry unreadable; deferring pipeline adoption",{error:b instanceof Error?b.message:String(b)}),Object.entries(a.readOnlySnapshot().memberships)))d.some(a=>"pipeline"===a.kind)&&e.add(a.canonicalConversationId(c));return{settled:d,deferred:e}}let f=a.readOnlySnapshot().memberships;for(let b of c){let c=b.runs.flatMap(a=>a.attempts).some(a=>a.unresolvedTermination?.survivors.some(a=>"dead"!==(0,k.Ue)(a)));if(c)for(let[c,d]of Object.entries(f))d.some(a=>"pipeline"===a.kind&&a.containerId===b.id)&&e.add(a.canonicalConversationId(c));for(let f of b.runs)for(let b of f.attempts){if(!b.conversationId?.startsWith("conversation_"))continue;let f=a.canonicalConversationId(b.conversationId);V.has(b.state)&&d.add(f),c&&e.add(f)}}return{settled:d,deferred:e}}async function X(a={}){let b=a.assertActive??(()=>{});b(),(0,l.x_)();let c=a.registry??(0,g.agentRegistry)(),e=void 0===a.client?(0,q.sS)():a.client,m=a.orchestratorSeats??j.activeOrchestratorSeats,t=function(a,b){let c=new Map;for(let d of[...a,...b]){let a=`${d.project}\0${d.seatEpoch}\0${d.hostKey}`,b=c.get(a);c.set(a,b?{...d,severed:b.severed}:d)}return[...c.values()]}(G,await I(c,m(),c.readOnlySnapshot(),a.liveness??{})),v=function(a){let b=new Map;for(let c of a){let a=b.get(c.hostKey)??[];a.push(c),b.set(c.hostKey,a)}return b}(t),E=a.interruptions??(0,x.pF)((0,x.pw)(c.filename));for(let a of t)E.record({conversationId:a.conversationId,engine:a.hostKey.startsWith("claude:")?"claude":"codex",hostKey:a.hostKey,path:a.path,owner:a.owner?{pid:a.owner.pid,startIdentity:a.owner.startIdentity}:null,claimEpoch:a.claimEpoch,turnRef:a.turnRef,boundary:`viewer-restart:${a.severed.at??"unrecorded"}`,reason:"viewer-restart",checkpoint:{lastEventKind:a.severed.kind,lastEventAt:a.severed.at},seat:{project:a.project,seatEpoch:a.seatEpoch}});let F=null!==e;e&&!(0,r.SW)(c)&&await (0,r.S8)([],{registry:c,client:e,deferStartupWork:!0}),(0,w.lk)({phase:"refreshing transcripts",completedHosts:0,totalHosts:null});let J=new Map,N=await (a.refreshTranscriptState?a.refreshTranscriptState(c):Q(c,b,J))??new Set;return b(),(0,o.withPipelineStartupAdmission)(async g=>{var j,l,o,I,Q;let R,V,X,$,_;b();let aa=g?(a.pipelineEvidence??W)(c):W(c,!1),ab=new Set(Object.values(c.readOnlySnapshot().conversations).filter(a=>aa.deferred.has(c.canonicalConversationId(a.id))).flatMap(a=>a.generations.map(b=>(0,i.pp)({engine:a.engine,sessionId:b.id})))),ac=K(c,t,m()),ad=function(a,b,c){let d=a.readOnlySnapshot(),e=[];for(let f of c){if("submitted"!==f.state){e.push(f);continue}let c=Object.values(d.heldDeliveries).find(b=>b.clientMessageId===f.id&&a.canonicalConversationId(b.conversationId)===a.canonicalConversationId(f.conversationId)),g=f.operationId?d.deliveryOperationOwners[f.operationId]:void 0,h=c?"delivered"===c.state||"failed"===c.state?c.state:null:g?.terminalState??"delivered";if(null===h){e.push(f);continue}let i="failed"===h?c?.error||g?.terminalReason||"the continuation delivery failed":c||g?"delivered":"delivered; its settled reservation was compacted";b.update(f.id,{state:h,resolvedAt:new Date().toISOString(),resolution:i})}return e}(c,E,E.list().filter(x.ti)),ae=new Set(ad.map(a=>a.hostKey)),af=ae,ag=()=>new Set([...ac,...af]),ah=await D(c,z,c.readOnlySnapshot(),ag());H(ah,t),c.drainDeadSupersededHeldDeliveries(),(0,p.cf)(c,a=>ac.has((0,i.pp)(a.key))||ae.has((0,i.pp)(a.key))||ab.has((0,i.pp)(a.key)));let ai=await T(c,e);af=new Set(L(c,E,ad,m(),ai.admittedMessages,aa.settled).filter(a=>"owed"===a.state).map(a=>a.hostKey));let aj=await U(c,ai,c.readOnlySnapshot(),v,m,N,aa.settled,aa.deferred,J,af),ak=a=>{try{b()}catch{return!1}return aj(a)},al=Object.values(c.readOnlySnapshot().entries).filter(a=>a.structuredHost&&ak(a));if(!F&&al.length>0){z=ah,G=[...t];let a=al.map(a=>(0,i.pp)(a.key));throw A||(A=!0,console.error("[structured hosts] deferring adoption until a delivery controller can claim it",{keys:a})),new q.Hr(`structured delivery controller is unavailable; deferred adoption of ${a.length} host(s): ${a.join(", ")}`)}let am=al.filter(a=>"codex"===a.key.engine).length,an=al.length-am,ao=al.length,ap=0,aq=a=>{b(),(0,w.lk)({phase:a,completedHosts:ap,totalHosts:ao})};aq("adopting Codex hosts");let ar=a.resolveCodexOwner??(a=>d.accountManager.resolveTranscriptOwner("codex",a.artifactPath)),as=a.resolveClaudeOwner??(a=>d.accountManager.resolveTranscriptOwner("claude",a.artifactPath)),at=(0,n.Fd)(process.env),au=await (a.adopt??p.Gd)(c,a=>{let b=ar(a),d=c.rotateSpawnCapabilityForPath(a.artifactPath),e=(0,u.bf)((0,u.oL)(a.launchProfile),at,d);return{cwd:a.cwd,codexHome:b?.home,fileAuthCredentials:b?.kind==="managed",model:a.launchProfile?.model??void 0,effort:a.launchProfile?.effort??void 0,allowSubagents:a.launchProfile?.allowSubagents??!1,mcpServers:a.launchProfile?.mcpServers??["viewer"],plugins:a.launchProfile?.plugins??[],...e.codex,...e.host,env:e.env}},at,ak,()=>{ap+=1,ao=Math.max(ao,ap),(0,w.lk)({phase:"adopting Codex hosts",completedHosts:ap,totalHosts:ao})});ap=Math.max(ap,am),H(ah=C(ah,au),t),aq("adopting Claude hosts");let av=await (a.adoptClaude??p.Fn)(c,a=>{var b,d;let e,g,j=(b=as(a),d=c.rotateSpawnCapabilityForPath(a.artifactPath),e=(0,u.bf)((0,u.oL)(a.launchProfile),(0,n.Fd)(b?.env??at),d),g=b?(0,u.Uk)(b):null,{cwd:a.cwd,claudeConfigDir:g?.claudeConfigDir,claudeProjectsDir:b?.transcriptRoot,spawnPolicyBaseSettingsPath:g?.spawnPolicyBaseSettingsPath??null,allowSubagents:a.launchProfile?.allowSubagents??!1,mcpServers:a.launchProfile?.mcpServers??["viewer"],mcpStatePath:g?.mcpStatePath,readOnly:(0,f.lV)(a.launchProfile),restricted:a.launchProfile?.sandbox==="restricted",env:e.env,...e.host,model:a.launchProfile?.model??void 0,effort:a.launchProfile?.effort??void 0,permissionMode:(0,h.A5)(a.launchProfile??{})});return!j.claudeConfigDir&&j.mcpServers.length>0&&console.error("[structured hosts] resuming a Claude row without the MCP grant it carries",{host:(0,i.pp)(a.key),mcpServers:j.mcpServers,reason:"no Claude account owns this transcript"}),j},at,ak,()=>{ap+=1,ao=Math.max(ao,ap),(0,w.lk)({phase:"adopting Claude hosts",completedHosts:ap,totalHosts:ao})});ap=Math.max(ap,am+an),H(ah=C(ah,av),t),function(a,b,c,d,e=r.sy,f=k.$k){let g=new Set(c.map(a=>(0,i.pp)(a.key))),h=Object.values(a.readOnlySnapshot().entries).filter(a=>a.structuredHost&&d(a.key)&&b(a)&&!g.has((0,i.pp)(a.key))&&!e(a.key));if(0===h.length)return;let j=h.filter(a=>{let b=a.structuredHost?.process;return!!(b&&f(b))}),l=h.filter(a=>!j.includes(a));if(l.length>0&&console.error("[structured hosts] eligible hosts have no live engine process to hand over; leaving them to on-demand hosting",{keys:l.map(a=>(0,i.pp)(a.key))}),0===j.length)return;let m=j.map(a=>(0,i.pp)(a.key));throw console.error("[structured hosts] eligible hosts remain owned by the incumbent Viewer; retrying startup",{keys:m}),new q.Hr(`structured startup left ${m.length} eligible host(s) owned by the incumbent Viewer: ${m.join(", ")}`)}(c,ak,ah,b=>"codex"===b.engine?void 0===a.adopt:void 0===a.adoptClaude,a.hostClaimed),aq("reconciling structured hosts"),ac=K(c,t,m()),H(ah=await D(c,ah,c.readOnlySnapshot(),ag()),t);let aw=new Set(ah.map(a=>(0,i.pp)(a.key))),ax=ah.filter(a=>"codex"===a.key.engine&&!ac.has((0,i.pp)(a.key))&&!ae.has((0,i.pp)(a.key))),ay=e?await P(c,e,ax):new Map;await (0,p.K$)(c,a=>aw.has((0,i.pp)(a.key))||ab.has((0,i.pp)(a.key))||N.has((0,i.pp)(a.key))||ak(a));let az=c.readOnlySnapshot();ac=K(c,t,m(),az),H(ah=await D(c,ah,az,ag()),t);let aA=await U(c,ai,az,v,m,N,aa.settled,aa.deferred,J,af);b();let aB=new Set(ah.map(a=>(0,i.pp)(a.key))),aC=function(a,b,c,d,e=a.readOnlySnapshot()){return new Map(Object.values(e.conversations).flatMap(f=>{let g=f.generations.at(-1);if("codex"!==f.engine||!g)return[];let h={engine:"codex",sessionId:g.id},j=e.entries[(0,i.pp)(h)];return d.has((0,i.pp)(h))?[]:("busy"===f.turn.state||"unknown"===f.turn.state&&(j?.structuredHost?.activeTurnRef||c.has(a.canonicalConversationId(f.id))))&&j?.structuredHost&&b(j)?[[(0,i.pp)(h),f.id]]:[]}))}(c,a=>aB.has((0,i.pp)(a.key))||aA(a),ai.hostedRunningConversationIds,N,az),aD=ah.filter(a=>"codex"===a.key.engine&&!ac.has((0,i.pp)(a.key))&&!ae.has((0,i.pp)(a.key)));if(aq("finalizing structured delivery"),F&&(await (0,r.le)(ah,aq,b),!function(a,b=r.sy){let c=a.filter(a=>!b(a.key));if(0===c.length)return;let d=c.map(a=>(0,i.pp)(a.key));throw console.error("[structured hosts] adopted hosts were left unclaimed by the delivery controller",{keys:d}),new q.Hr(`structured delivery controller did not claim ${c.length} adopted host(s): ${d.join(", ")}`)}(ah,a.hostClaimed)),e){aq("recovering orchestrator deliveries");let a=E.list().filter(a=>(0,x.ti)(a)&&af.has(a.hostKey)&&!ab.has(a.hostKey)),b=0===a.length?[]:L(c,E,a,m(),S(c,await e.snapshot()),aa.settled),d=await M(c,e,E,b,aB);if(aq("recovering interrupted deliveries"),await O(c,e,aD,aC,ay,ai.pendingCodexContinuationConversationIds),aq("kicking recovered deliveries"),await (0,s.l)(),d.length>0)throw new q.Hr(`interrupted turn continuation admission failed: ${d.join("; ")}`)}let aE=Y(c,aa.deferred);return(e&&0===aE.length&&(aq("recovering pending spawns"),await (0,u.Z4)(c,e,{assertActive:b})),b(),y=ah,ab.size>0||aE.length>0)?(z=ah,G=[...t],j=a,l=c,o=[...ab],I=aa.deferred,Q=aE.length,R=`pipeline startup evidence is unresolved; deferred ${o.length} host(s)`+(Q>0?` and ${Q} pending launch receipt(s)`:""),$=(X=null!==(V=B)&&V.conversationIds.size===I.size&&[...I].every(a=>V.conversationIds.has(a))&&V.fencedReceipts===Q)?Math.min(2*V.delayMs,3e4):1e3,B=_={hostKeys:o,conversationIds:new Set(I),fencedReceipts:Q,message:R,delayMs:$},X||console.error(`[structured hosts] ${R}; re-probing the evidence`,{hosts:o,nextProbeMs:$}),Z(j,l,_)):(z=[],G=[],B&&(console.error("[structured hosts] deferred pipeline rows admitted",{hosts:B.hostKeys}),B=null)),y})}function Y(a,b){return 0===b.size?[]:Object.values(a.readOnlySnapshot().receipts).filter(c=>"completed"!==c.state&&"failed"!==c.state&&"conflicted"!==c.state&&b.has(a.canonicalConversationId(c.conversationId)))}function Z(a,b,c){let d=a.schedule??((a,b)=>setTimeout(a,b));d(()=>{if(B===c){try{a.assertActive?.()}catch{return}$(a,b,c)}},c.delayMs).unref?.()}async function $(a,b,c){let d=!0;try{let e=(a.pipelineEvidence??W)(b);d=[...c.conversationIds].every(a=>e.deferred.has(a))&&Y(b,e.deferred).length>=c.fencedReceipts}catch(a){console.error("[structured hosts] deferred pipeline evidence probe failed",{error:a instanceof Error?a.message:String(a)})}if(d){c.delayMs=Math.min(2*c.delayMs,3e4),Z(a,b,c);return}try{await X(a)}catch(d){console.error("[structured hosts] deferred pipeline adoption pass failed; re-probing",{error:d instanceof Error?d.message:String(d)}),B===c&&(c.delayMs=Math.min(2*c.delayMs,3e4),Z(a,b,c))}}async function _(a={}){let b=(0,g.agentRegistry)(),c=C(y,z).filter(a=>!(0,r.sy)(a.key)),d=new Set,e=await Promise.allSettled(c.map(async({key:c,host:e})=>{let f=await e.health();if("active"!==f.status&&"attention"!==f.status||null===f.pid||null===f.processStartIdentity)return;let g=(0,k.y6)(f.pid,void 0,f.processStartIdentity);if(!b.markStructuredHostHandoff(c,g))throw Error("unpublished startup host changed before release handover");try{await (0,r.SD)(b,c,f,a)}catch(a){throw console.error("[viewer release] interrupted turn could not be recorded; leaving its unpublished host running",{hostKey:(0,i.pp)(c),error:a}),a}await e.release(),d.add((0,i.pp)(c))})),f=a=>!d.has((0,i.pp)(a.key));y=y.filter(f),z=z.filter(f);let h=e.flatMap(a=>"rejected"===a.status?[a.reason]:[]);if(h.length)throw AggregateError(h,"unpublished startup hosts did not quiesce")}async function aa(a={}){let b=[];for(let c of[_,r.releaseStructuredDeliveryHostsForDemotion])try{await c(a)}catch(a){b.push(a)}if(b.length)throw AggregateError(b,"structured hosts did not all cross the release boundary")}},26277:(a,b,c)=>{c.d(b,{Gs:()=>C,Kn:()=>w,gY:()=>x,h3:()=>q,jd:()=>v,kt:()=>E,ue:()=>D,vx:()=>y,w5:()=>z});var d=c(31421);c(77598);var e=c(73024),f=c.n(e),g=c(48161),h=c.n(g),i=c(76760),j=c.n(i),k=c(27146),l=c(89204),m=c(55541),n=c(19777);Object.freeze({repo:"https://github.com/chigwell/telegram-mcp",release:"v3.2.22",commit:"a61294362226bd93052f5a40b4a1b1269a99ce69",license:"Apache-2.0"});let o="127.0.0.1";function p(){let a=Number(process.env.LLV_TELEGRAM_MCP_PORT);return Number.isInteger(a)&&a>0&&a<65536?a:8809}function q(){return`http://${o}:${p()}/mcp`}function r(a,...b){if(a)return a;let c=j().join(process.cwd(),...b);if(f().existsSync(c))return c;let d=j().join(process.cwd(),"..","..",...b);return f().existsSync(d)?d:c}function s(){return r(process.env.LLV_TELEGRAM_VENDOR_DIR,"vendor","telegram-mcp")}function t(){return(0,k.BQ)("telegram","venv")}function u(){return(0,k.BQ)("telegram","vendor-src")}function v(){return process.env.LLV_TELEGRAM_PYTHON||j().join(t(),"bin","python")}function w(){return r(process.env.LLV_TELEGRAM_SERVER_BRIDGE,"bin","telegram-mcp-server.py")}function x(){return r(process.env.LLV_TELEGRAM_SESSION_READER,"bin","telegram-session-reader.mjs")}let y=Object.freeze(["wait_for_settled_message"]);function z(){let a=process.env.LLV_TELEGRAM_API_ID,b=process.env.LLV_TELEGRAM_API_HASH;if(a&&b)return{apiId:a,apiHash:b};try{let a=JSON.parse(f().readFileSync((0,k.ks)("telegram.json"),"utf8"));if("string"==typeof a.apiId&&a.apiId&&"string"==typeof a.apiHash&&a.apiHash)return{apiId:a.apiId,apiHash:a.apiHash}}catch{}return null}function A(){return f().existsSync(j().join(t(),".llv-provisioned"))&&f().existsSync(v())&&f().existsSync(j().join(u(),"pyproject.toml"))}let B=null;function C(){return A()?Promise.resolve(!0):B||(B=(async()=>((0,n._q)(!0),await (0,l.pM)((0,k.BQ)("telegram","connector-provision"),"Telegram connector provisioning is busy",async()=>{var a;return!!A()||await (a={command:process.execPath,args:[r(process.env.LLV_TELEGRAM_PROVISIONER,"bin","provision-telegram-connector.mjs")],cwd:s(),env:{...F(),LLV_STATE_DIR:(0,k.Pn)(),LLV_TELEGRAM_VENDOR_DIR:s(),LLV_TELEGRAM_PYTHON:v()}},new Promise(b=>{let c;try{c=(0,d.spawn)(a.command,a.args,{cwd:a.cwd,env:a.env,stdio:"ignore"})}catch{b(!1);return}c.once("error",()=>b(!1)),c.once("exit",a=>b(0===a))}))&&A()})))().catch(()=>!1).finally(()=>{B=null}))}function D(a){let b=u(),c=(0,m.WG)();return{command:v(),args:[w()],cwd:b,env:{...F(),...c,TELEGRAM_API_ID:a.credentials.apiId,TELEGRAM_API_HASH:a.credentials.apiHash,TELEGRAM_SESSION_STRING:a.sessionString,TELEGRAM_EXPOSED_TOOLS:"read-only",TELEGRAM_EVENT_FEED:"1",TELEGRAM_EVENT_FEED_FILE:(0,n.ZI)(a.credentialRef),LLV_TELEGRAM_EXCLUDED_TOOLS:y.join(","),LLV_TELEGRAM_MCP_TOKEN:a.connectorToken,LLV_TELEGRAM_VENDOR_DIR:b,MCP_TRANSPORT:"http",MCP_HOST:o,MCP_PORT:String(p())}}}function E(a,b){return{command:v(),args:[r(process.env.LLV_TELEGRAM_BRIDGE,"bin","telegram-login-bridge.py"),a],cwd:h().homedir(),env:{...F(),TELEGRAM_API_ID:b.apiId,TELEGRAM_API_HASH:b.apiHash}}}function F(){let a={};for(let b of["PATH","HOME","LANG","LC_ALL","TMPDIR"])void 0!==process.env[b]&&(a[b]=process.env[b]);return a}},55541:(a,b,c)=>{c.d(b,{WG:()=>o,cO:()=>n,yb:()=>l});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(27146),k=c(19777);let l=262144,m=String.raw`import fcntl
2
2
  import io
3
3
  import os
4
4
  import stat
@@ -1 +1 @@
1
- "use strict";exports.id=6453,exports.ids=[6453],exports.modules={46453:(a,b,c)=>{c.r(b),c.d(b,{CONNECTOR_RETRY_WINDOW_MS:()=>s,RUN_TIMEOUT_MS:()=>r,TelegramReportRunner:()=>v,ensureTelegramReportScheduler:()=>z,productionReportRunnerPorts:()=>t,sameTelegramAccount:()=>w,setTelegramReportRunnerForTests:()=>A,telegramReportRunner:()=>y});var d=c(77598),e=c.n(d),f=c(4837),g=c(8668),h=c(96101),i=c(55862),j=c(52538),k=c(43034),l=c(10230);function m(a){a().catch(()=>void 0)}let n="127.0.0.1";async function o(a){var b;let[{executeSpawnRequest:d,productionSpawnCommandDependencies:e},{ensureOperatorSpawnCapability:f},{VIEWER_SPAWN_CAPABILITY_HEADER:g}]=await Promise.all([Promise.all([c.e(4637),c.e(9940),c.e(9822),c.e(3896),c.e(107),c.e(6522),c.e(781),c.e(9517),c.e(8966),c.e(1617),c.e(4509),c.e(4565),c.e(8797),c.e(8996),c.e(3587),c.e(6926),c.e(6978),c.e(1100),c.e(6809),c.e(8617),c.e(8991),c.e(6826),c.e(4127),c.e(3743),c.e(1849),c.e(7238),c.e(7722),c.e(3302)]).then(c.bind(c,67722)),c.e(9937).then(c.bind(c,89937)),c.e(4012).then(c.bind(c,4012))]),h={headers:new Headers({host:n,origin:`http://${n}`,"sec-fetch-site":"same-origin",[g]:f()}),json:async()=>a.body},i=await d(h,{...e,...(b=a.grantActive,{defer:m,internalGrant:()=>({sessionClass:l.Vv,mcpServers:(0,l.FE)({grantActive:b()})})})});return{status:i.status,body:await i.json()}}var p=c(79554),q=c(68032);let r=27e5,s=18e5,t={now:Date.now,connection:()=>{try{return(0,q.Kd)()}catch{return{version:1,status:"error",credentialRef:null,identity:null,lastHealthCheckAt:null,errorCode:"session_unsafe",identityIdUpgradedAt:null}}},readPort:a=>(0,k.tx)(a),beginReadPhase:async()=>{let{telegramService:a}=await Promise.all([c.e(9940),c.e(9822),c.e(3896),c.e(107),c.e(6522),c.e(781),c.e(9517),c.e(8966),c.e(849)]).then(c.bind(c,70849));return await a().beginReportReadPhase()},connectorReady:a=>(0,k.wZ)(a),migrateIdentity:async function(){try{let{telegramService:a}=await Promise.all([c.e(9940),c.e(9822),c.e(3896),c.e(107),c.e(6522),c.e(781),c.e(9517),c.e(8966),c.e(849)]).then(c.bind(c,70849));await a().checkHealth()}catch{}},spawn:o,reportRunConversation:async function(a){try{let{agentRegistry:b}=await Promise.all([c.e(9940),c.e(9822),c.e(3896),c.e(107),c.e(6522),c.e(781)]).then(c.bind(c,10781)),d=b(),e=d.spawnReceiptForClientAttempt((0,j.hS)(a));return e?d.canonicalConversationId(e.conversationId):null}catch{return null}},conversationLive:async function(a){try{let{agentRegistry:b}=await Promise.all([c.e(9940),c.e(9822),c.e(3896),c.e(107),c.e(6522),c.e(781)]).then(c.bind(c,10781)),d=b().conversation(a);if(!d)return!1;return d.turn?.state!=="terminal"}catch{return!0}},log:a=>console.error(`[telegram report] ${a}`)};function u(a){let b=a.identity?.id;return b&&a.credentialRef?{id:b,credentialRef:a.credentialRef}:null}class v{constructor(a=t){this.ports=a,this.running=!1,this.planning=new Set,this.pending=[]}grantActive(a=null){let b=this.ports.connection();return(null===a||b.credentialRef===a)&&(0,p.rD)().settings.enabled&&"connected"===b.status}payload(){var a;let b=(0,p.rD)(),c=b.active?[{id:(a=b.active).runId,trigger:a.trigger,startedAt:a.startedAt,finishedAt:null,windowStart:a.windowStart,windowEnd:a.windowEnd,status:"running",errorCode:null,conversationId:a.conversationId,hasReport:!1,promptVersion:a.promptVersion},...b.history]:b.history,d=(0,i.jF)({now:this.ports.now(),settings:b.settings,cursor:b.cursor});return{settings:{...b.settings,promptIsDefault:null===b.prompt},history:c,nextRunAt:null===d?null:new Date(d).toISOString()}}async tick(){if(!this.running){this.running=!0;try{this.reconcileDisconnected(),await this.finalizeActiveRun();let a=(0,p.rD)();if(a.active||await this.runOwedConnectorRetry(a)||!(0,i.z1)({now:this.ports.now(),settings:a.settings,cursor:a.cursor}))return;let b=(0,i.l)(this.ports.now(),g.cz);(0,p.k)(a=>{a.cursor.lastScheduledDay=b});let c=this.beginRun("scheduled");c.ok&&await this.execute(c.runId)}catch{this.ports.log("tick_failed")}finally{this.running=!1}}}async runNow(){let a;if(this.running)return{ok:!1,code:"run_in_progress"};this.running=!0;try{if(await this.finalizeActiveRun(),(0,p.rD)().active)return{ok:!1,code:"run_in_progress"};a=this.beginRun("manual")}finally{this.running=!1}if(!a.ok)return a;let b=this.execute(a.runId);return this.pending.push(b),b.finally(()=>{this.pending=this.pending.filter(a=>a!==b)}),a}async settled(){let a=this.pending;this.pending=[],await Promise.all(a)}async runOwedConnectorRetry(a){let b=a.retry;if(!b)return!1;let c=Date.parse(b.armedAt);if(!Number.isFinite(c)||this.ports.now()-c>s||!a.settings.enabled)return(0,p.k)(a=>{a.retry?.runId===b.runId&&(a.retry=null)}),!1;if("connected"!==this.ports.connection().status)return!1;(0,p.k)(a=>{a.retry?.runId===b.runId&&(a.retry=null)});let d=this.beginRun(b.trigger,{retry:!0});return d.ok&&await this.execute(d.runId),!0}reconcileDisconnected(){let a=this.ports.connection();if("disconnected"!==a.status||null!==a.credentialRef)return;let b=(0,p.rD)();(b.settings.enabled||0!==b.history.length||b.active)&&(0,p.mI)()}beginRun(a,b={}){let c=(0,p.rD)(),d=this.ports.connection();if(!c.settings.enabled)return this.recordFailure(a,"reports_disabled");if("connected"!==d.status)return this.recordFailure(a,"not_connected");let f=e().randomUUID(),g=(0,i.s)(this.ports.now(),c.cursor);return this.planning.add(f),(0,p.k)(c=>{c.retry=null,c.active={runId:f,trigger:a,startedAt:new Date(this.ports.now()).toISOString(),windowStart:g.startAt,windowEnd:g.endAt,conversationId:null,promptVersion:h.BL,...b.retry?{retry:!0}:{}}}),{ok:!0,runId:f}}async execute(a){try{await this.executeLocked(a)}catch{this.ports.log("run_failed"),this.settle(a,"failed","launch_failed",!1)}finally{this.planning.delete(a)}}async verifiedIdentity(){let a=this.ports.connection();if(a.identity?.id)return u(a);if(!a.identity||a.identityIdUpgradedAt)return null;await this.ports.migrateIdentity();let b=this.ports.connection();return"connected"!==b.status?null:u(b)}async executeLocked(a){let b,c,d,e=(0,p.rD)(),g=e.active;if(!g||g.runId!==a)return;let i={startAt:g.windowStart,endAt:g.windowEnd},l=await this.verifiedIdentity();if(!l){this.ports.log("account_check_failed"),this.settle(a,"failed","account_check_failed",!1);return}let m=this.ports.readPort(l.credentialRef);if(!this.ports.beginReadPhase)throw Error("Telegram report read lease is unavailable");let n=await this.ports.beginReadPhase();try{let d=await this.ports.connectorReady(l.credentialRef);if(!d.ready){this.ports.log("connector_unavailable"),this.settle(a,"failed","connector_unavailable",!1,{requeue:"unavailable"===d.reason});return}try{b=await m.getMe()}catch{this.ports.log("account_check_failed"),this.settle(a,"failed","account_check_failed",!1);return}if(!w(b,l)){this.ports.log("account_mismatch"),this.settle(a,"account-mismatch",null,!1);return}try{let b=await (0,k.Cl)(m,{windowStart:i.startAt,windowEnd:i.endAt,groups:e.settings.groups,promptVersion:h.BL});c=(0,p.uc)(a,b)}catch{this.ports.log("sources_failed"),this.settle(a,"failed","sources_failed",!1);return}}finally{n()}if((0,p.rD)().active?.runId!==a)return void(0,p.jc)(a);if(this.ports.connection().credentialRef!==l.credentialRef){this.ports.log("account_mismatch"),(0,p.jc)(a),this.settle(a,"account-mismatch",null,!1);return}let o=(0,h.Y_)({windowStart:i.startAt,windowEnd:i.endAt,sourcesPath:c,outputPath:(0,p.sk)(a),instructions:(0,p.kG)((0,p.rD)())});try{d=await this.ports.spawn({body:{engine:"codex",model:(0,f.Gh)("codex"),effort:"medium",cwd:(0,p.lN)(),title:(0,h.sg)({windowStart:i.startAt,windowEnd:i.endAt}),clientAttemptId:(0,j.hS)(a),project:j.zg,prompt:o},grantActive:()=>this.grantActive(l.credentialRef)})}catch{this.ports.log("launch_failed"),this.settle(a,"failed","launch_failed",!1);return}let q="string"==typeof d.body.conversationId?d.body.conversationId:null;if(!(d.status>=200&&d.status<300&&!1!==d.body.ok&&null!==q)){this.ports.log("launch_rejected"),this.settle(a,"failed","launch_failed",!1);return}(0,p.k)(b=>{b.active?.runId===a&&(b.active.conversationId=q)})}async relinkActiveRun(a){if(this.planning.has(a))return null;let b=await this.ports.reportRunConversation(a);return b?((0,p.k)(c=>{c.active?.runId!==a||c.active.conversationId||(c.active.conversationId=b)}),b):null}async finalizeActiveRun(){let a=(0,p.rD)().active;if(!a)return;let b=(0,p.H$)(a.runId),c=(0,h.U$)(b);if("ok"===c.kind){(0,p.$H)(a.runId,c.report),this.settle(a.runId,"ok",null,!0);return}if("quiet"===c.kind)return void this.settle(a.runId,"quiet",null,!1);if("invalid"===c.kind&&null!==b)return void this.settle(a.runId,"failed","invalid_report",!1);let d=Date.parse(a.startedAt),e=Number.isFinite(d)&&this.ports.now()-d>r,f=a.conversationId??await this.relinkActiveRun(a.runId);f?await this.ports.conversationLive(f)?e&&this.settle(a.runId,"failed","timed_out",!1):this.settle(a.runId,"failed","run_ended_without_report",!1):this.planning.has(a.runId)?e&&this.settle(a.runId,"failed","timed_out",!1):this.settle(a.runId,"failed","launch_failed",!1)}settle(a,b,c,d,e={}){(0,p.k)(f=>{let h=f.active;if(!h||h.runId!==a)return;if(f.active=null,f.retry=e.requeue&&!h.retry?{runId:h.runId,trigger:h.trigger,armedAt:new Date(this.ports.now()).toISOString()}:null,f.history=[{id:h.runId,trigger:h.trigger,startedAt:h.startedAt,finishedAt:new Date(this.ports.now()).toISOString(),windowStart:h.windowStart,windowEnd:h.windowEnd,status:b,errorCode:c,conversationId:h.conversationId,hasReport:d,promptVersion:h.promptVersion},...f.history],"ok"!==b&&"quiet"!==b){let a=f.cursor.unreportedSinceAt;(!a||Date.parse(h.windowStart)<Date.parse(a))&&(f.cursor.unreportedSinceAt=h.windowStart);return}f.cursor.lastSuccessfulWindowEndAt=h.windowEnd,f.cursor.unreportedSinceAt=null;let j=(0,i.l)(this.ports.now(),g.cz);this.ports.now()>=(0,i.wk)(j,f.settings.time,g.cz)&&(f.cursor.lastScheduledDay=j)}),d?(0,p.jc)(a):(0,p.FF)(a)}recordFailure(a,b,c=(0,i.s)(this.ports.now(),(0,p.rD)().cursor)){let d=new Date(this.ports.now()).toISOString();return(0,p.k)(f=>{if(f.history=[{id:e().randomUUID(),trigger:a,startedAt:d,finishedAt:d,windowStart:c.startAt,windowEnd:c.endAt,status:"failed",errorCode:b,conversationId:null,hasReport:!1,promptVersion:h.BL},...f.history],"reports_disabled"===b)return;let g=f.cursor.unreportedSinceAt;(!g||Date.parse(c.startAt)<Date.parse(g))&&(f.cursor.unreportedSinceAt=c.startAt)}),{ok:!1,code:b}}}function w(a,b){return!!(a?.id&&b?.id&&a.id===b.id)}let x=globalThis;function y(){return x.__llvTelegramReportRunner??=new v}function z(){x.__llvTelegramReportTimer||(x.__llvTelegramReportTimer=setInterval(()=>{y().tick()},6e4),x.__llvTelegramReportTimer.unref?.(),y().tick())}function A(a){a?x.__llvTelegramReportRunner=a:delete x.__llvTelegramReportRunner}},52538:(a,b,c)=>{c.d(b,{hS:()=>f,jE:()=>g,zg:()=>d});let d="telegram-reports",e="telegram-report-";function f(a){return`${e}${a}`}function g(a){if("string"!=typeof a||!a.startsWith(e))return null;let b=a.slice(e.length);return/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test(b)?b:null}},55862:(a,b,c)=>{c.d(b,{jF:()=>k,l:()=>g,s:()=>l,wk:()=>i,z1:()=>j});var d=c(8668);let e=new Map;function f(a,b){let c=e.get(b);c||(c=new Intl.DateTimeFormat("en-US",{timeZone:b,hour12:!1,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}),e.set(b,c));let d={};for(let b of c.formatToParts(new Date(a)))d[b.type]=b.value;return{year:Number(d.year),month:Number(d.month),day:Number(d.day),hour:Number(d.hour)%24,minute:Number(d.minute),second:Number(d.second)}}function g(a,b=d.cz){let c=f(a,b);return`${String(c.year).padStart(4,"0")}-${String(c.month).padStart(2,"0")}-${String(c.day).padStart(2,"0")}`}function h(a,b){let c=f(a,b);return Date.UTC(c.year,c.month-1,c.day,c.hour,c.minute,c.second)-1e3*Math.floor(a/1e3)}function i(a,b,c=d.cz){let[e,f]=b.split(":").map(Number),[g,j,k]=a.split("-").map(Number),l=Date.UTC(g,j-1,k,e,f,0),m=l-h(l,c);return l-h(m,c)}function j(a){let b=a.timeZone??d.cz;if(!a.settings.enabled)return!1;let c=g(a.now,b);return a.cursor.lastScheduledDay!==c&&a.now>=i(c,a.settings.time,b)}function k(a){let b=a.timeZone??d.cz;if(!a.settings.enabled)return null;if(j(a))return a.now;let c=i(g(a.now,b),"12:00",b);for(let d=0;d<=8;d+=1){let e=g(c+864e5*d,b),f=i(e,a.settings.time,b);if(!(f<=a.now)&&a.cursor.lastScheduledDay!==e)return f}return null}function l(a,b){let c=b.unreportedSinceAt?Date.parse(b.unreportedSinceAt):NaN,d=b.lastSuccessfulWindowEndAt?Date.parse(b.lastSuccessfulWindowEndAt):NaN,e=Number.isFinite(c)?c:d;return{startAt:new Date(Number.isFinite(e)&&e<a?Math.max(e,a-2592e5):a-864e5).toISOString(),endAt:new Date(a).toISOString()}}}};
1
+ "use strict";exports.id=6453,exports.ids=[6453],exports.modules={46453:(a,b,c)=>{c.r(b),c.d(b,{CONNECTOR_RETRY_WINDOW_MS:()=>s,RUN_TIMEOUT_MS:()=>r,TelegramReportRunner:()=>v,ensureTelegramReportScheduler:()=>z,productionReportRunnerPorts:()=>t,sameTelegramAccount:()=>w,setTelegramReportRunnerForTests:()=>A,telegramReportRunner:()=>y});var d=c(77598),e=c.n(d),f=c(4837),g=c(8668),h=c(96101),i=c(55862),j=c(52538),k=c(43034),l=c(10230);function m(a){a().catch(()=>void 0)}let n="127.0.0.1";async function o(a){var b;let[{executeSpawnRequest:d,productionSpawnCommandDependencies:e},{ensureOperatorSpawnCapability:f},{VIEWER_SPAWN_CAPABILITY_HEADER:g}]=await Promise.all([Promise.all([c.e(4637),c.e(9940),c.e(9822),c.e(3896),c.e(3784),c.e(107),c.e(6522),c.e(781),c.e(9517),c.e(8966),c.e(1617),c.e(4509),c.e(4565),c.e(8797),c.e(8996),c.e(6809),c.e(3587),c.e(6926),c.e(6978),c.e(1100),c.e(8617),c.e(8991),c.e(6826),c.e(3743),c.e(1849),c.e(7238),c.e(7722),c.e(3302)]).then(c.bind(c,67722)),c.e(9937).then(c.bind(c,89937)),c.e(4012).then(c.bind(c,4012))]),h={headers:new Headers({host:n,origin:`http://${n}`,"sec-fetch-site":"same-origin",[g]:f()}),json:async()=>a.body},i=await d(h,{...e,...(b=a.grantActive,{defer:m,internalGrant:()=>({sessionClass:l.Vv,mcpServers:(0,l.FE)({grantActive:b()})})})});return{status:i.status,body:await i.json()}}var p=c(79554),q=c(68032);let r=27e5,s=18e5,t={now:Date.now,connection:()=>{try{return(0,q.Kd)()}catch{return{version:1,status:"error",credentialRef:null,identity:null,lastHealthCheckAt:null,errorCode:"session_unsafe",identityIdUpgradedAt:null}}},readPort:a=>(0,k.tx)(a),beginReadPhase:async()=>{let{telegramService:a}=await Promise.all([c.e(9940),c.e(9822),c.e(3896),c.e(3784),c.e(107),c.e(6522),c.e(781),c.e(9517),c.e(8966),c.e(849)]).then(c.bind(c,70849));return await a().beginReportReadPhase()},connectorReady:a=>(0,k.wZ)(a),migrateIdentity:async function(){try{let{telegramService:a}=await Promise.all([c.e(9940),c.e(9822),c.e(3896),c.e(3784),c.e(107),c.e(6522),c.e(781),c.e(9517),c.e(8966),c.e(849)]).then(c.bind(c,70849));await a().checkHealth()}catch{}},spawn:o,reportRunConversation:async function(a){try{let{agentRegistry:b}=await Promise.all([c.e(9940),c.e(9822),c.e(3896),c.e(3784),c.e(107),c.e(6522),c.e(781)]).then(c.bind(c,10781)),d=b(),e=d.spawnReceiptForClientAttempt((0,j.hS)(a));return e?d.canonicalConversationId(e.conversationId):null}catch{return null}},conversationLive:async function(a){try{let{agentRegistry:b}=await Promise.all([c.e(9940),c.e(9822),c.e(3896),c.e(3784),c.e(107),c.e(6522),c.e(781)]).then(c.bind(c,10781)),d=b().conversation(a);if(!d)return!1;return d.turn?.state!=="terminal"}catch{return!0}},log:a=>console.error(`[telegram report] ${a}`)};function u(a){let b=a.identity?.id;return b&&a.credentialRef?{id:b,credentialRef:a.credentialRef}:null}class v{constructor(a=t){this.ports=a,this.running=!1,this.planning=new Set,this.pending=[]}grantActive(a=null){let b=this.ports.connection();return(null===a||b.credentialRef===a)&&(0,p.rD)().settings.enabled&&"connected"===b.status}payload(){var a;let b=(0,p.rD)(),c=b.active?[{id:(a=b.active).runId,trigger:a.trigger,startedAt:a.startedAt,finishedAt:null,windowStart:a.windowStart,windowEnd:a.windowEnd,status:"running",errorCode:null,conversationId:a.conversationId,hasReport:!1,promptVersion:a.promptVersion},...b.history]:b.history,d=(0,i.jF)({now:this.ports.now(),settings:b.settings,cursor:b.cursor});return{settings:{...b.settings,promptIsDefault:null===b.prompt},history:c,nextRunAt:null===d?null:new Date(d).toISOString()}}async tick(){if(!this.running){this.running=!0;try{this.reconcileDisconnected(),await this.finalizeActiveRun();let a=(0,p.rD)();if(a.active||await this.runOwedConnectorRetry(a)||!(0,i.z1)({now:this.ports.now(),settings:a.settings,cursor:a.cursor}))return;let b=(0,i.l)(this.ports.now(),g.cz);(0,p.k)(a=>{a.cursor.lastScheduledDay=b});let c=this.beginRun("scheduled");c.ok&&await this.execute(c.runId)}catch{this.ports.log("tick_failed")}finally{this.running=!1}}}async runNow(){let a;if(this.running)return{ok:!1,code:"run_in_progress"};this.running=!0;try{if(await this.finalizeActiveRun(),(0,p.rD)().active)return{ok:!1,code:"run_in_progress"};a=this.beginRun("manual")}finally{this.running=!1}if(!a.ok)return a;let b=this.execute(a.runId);return this.pending.push(b),b.finally(()=>{this.pending=this.pending.filter(a=>a!==b)}),a}async settled(){let a=this.pending;this.pending=[],await Promise.all(a)}async runOwedConnectorRetry(a){let b=a.retry;if(!b)return!1;let c=Date.parse(b.armedAt);if(!Number.isFinite(c)||this.ports.now()-c>s||!a.settings.enabled)return(0,p.k)(a=>{a.retry?.runId===b.runId&&(a.retry=null)}),!1;if("connected"!==this.ports.connection().status)return!1;(0,p.k)(a=>{a.retry?.runId===b.runId&&(a.retry=null)});let d=this.beginRun(b.trigger,{retry:!0});return d.ok&&await this.execute(d.runId),!0}reconcileDisconnected(){let a=this.ports.connection();if("disconnected"!==a.status||null!==a.credentialRef)return;let b=(0,p.rD)();(b.settings.enabled||0!==b.history.length||b.active)&&(0,p.mI)()}beginRun(a,b={}){let c=(0,p.rD)(),d=this.ports.connection();if(!c.settings.enabled)return this.recordFailure(a,"reports_disabled");if("connected"!==d.status)return this.recordFailure(a,"not_connected");let f=e().randomUUID(),g=(0,i.s)(this.ports.now(),c.cursor);return this.planning.add(f),(0,p.k)(c=>{c.retry=null,c.active={runId:f,trigger:a,startedAt:new Date(this.ports.now()).toISOString(),windowStart:g.startAt,windowEnd:g.endAt,conversationId:null,promptVersion:h.BL,...b.retry?{retry:!0}:{}}}),{ok:!0,runId:f}}async execute(a){try{await this.executeLocked(a)}catch{this.ports.log("run_failed"),this.settle(a,"failed","launch_failed",!1)}finally{this.planning.delete(a)}}async verifiedIdentity(){let a=this.ports.connection();if(a.identity?.id)return u(a);if(!a.identity||a.identityIdUpgradedAt)return null;await this.ports.migrateIdentity();let b=this.ports.connection();return"connected"!==b.status?null:u(b)}async executeLocked(a){let b,c,d,e=(0,p.rD)(),g=e.active;if(!g||g.runId!==a)return;let i={startAt:g.windowStart,endAt:g.windowEnd},l=await this.verifiedIdentity();if(!l){this.ports.log("account_check_failed"),this.settle(a,"failed","account_check_failed",!1);return}let m=this.ports.readPort(l.credentialRef);if(!this.ports.beginReadPhase)throw Error("Telegram report read lease is unavailable");let n=await this.ports.beginReadPhase();try{let d=await this.ports.connectorReady(l.credentialRef);if(!d.ready){this.ports.log("connector_unavailable"),this.settle(a,"failed","connector_unavailable",!1,{requeue:"unavailable"===d.reason});return}try{b=await m.getMe()}catch{this.ports.log("account_check_failed"),this.settle(a,"failed","account_check_failed",!1);return}if(!w(b,l)){this.ports.log("account_mismatch"),this.settle(a,"account-mismatch",null,!1);return}try{let b=await (0,k.Cl)(m,{windowStart:i.startAt,windowEnd:i.endAt,groups:e.settings.groups,promptVersion:h.BL});c=(0,p.uc)(a,b)}catch{this.ports.log("sources_failed"),this.settle(a,"failed","sources_failed",!1);return}}finally{n()}if((0,p.rD)().active?.runId!==a)return void(0,p.jc)(a);if(this.ports.connection().credentialRef!==l.credentialRef){this.ports.log("account_mismatch"),(0,p.jc)(a),this.settle(a,"account-mismatch",null,!1);return}let o=(0,h.Y_)({windowStart:i.startAt,windowEnd:i.endAt,sourcesPath:c,outputPath:(0,p.sk)(a),instructions:(0,p.kG)((0,p.rD)())});try{d=await this.ports.spawn({body:{engine:"codex",model:(0,f.Gh)("codex"),effort:"medium",cwd:(0,p.lN)(),title:(0,h.sg)({windowStart:i.startAt,windowEnd:i.endAt}),clientAttemptId:(0,j.hS)(a),project:j.zg,prompt:o},grantActive:()=>this.grantActive(l.credentialRef)})}catch{this.ports.log("launch_failed"),this.settle(a,"failed","launch_failed",!1);return}let q="string"==typeof d.body.conversationId?d.body.conversationId:null;if(!(d.status>=200&&d.status<300&&!1!==d.body.ok&&null!==q)){this.ports.log("launch_rejected"),this.settle(a,"failed","launch_failed",!1);return}(0,p.k)(b=>{b.active?.runId===a&&(b.active.conversationId=q)})}async relinkActiveRun(a){if(this.planning.has(a))return null;let b=await this.ports.reportRunConversation(a);return b?((0,p.k)(c=>{c.active?.runId!==a||c.active.conversationId||(c.active.conversationId=b)}),b):null}async finalizeActiveRun(){let a=(0,p.rD)().active;if(!a)return;let b=(0,p.H$)(a.runId),c=(0,h.U$)(b);if("ok"===c.kind){(0,p.$H)(a.runId,c.report),this.settle(a.runId,"ok",null,!0);return}if("quiet"===c.kind)return void this.settle(a.runId,"quiet",null,!1);if("invalid"===c.kind&&null!==b)return void this.settle(a.runId,"failed","invalid_report",!1);let d=Date.parse(a.startedAt),e=Number.isFinite(d)&&this.ports.now()-d>r,f=a.conversationId??await this.relinkActiveRun(a.runId);f?await this.ports.conversationLive(f)?e&&this.settle(a.runId,"failed","timed_out",!1):this.settle(a.runId,"failed","run_ended_without_report",!1):this.planning.has(a.runId)?e&&this.settle(a.runId,"failed","timed_out",!1):this.settle(a.runId,"failed","launch_failed",!1)}settle(a,b,c,d,e={}){(0,p.k)(f=>{let h=f.active;if(!h||h.runId!==a)return;if(f.active=null,f.retry=e.requeue&&!h.retry?{runId:h.runId,trigger:h.trigger,armedAt:new Date(this.ports.now()).toISOString()}:null,f.history=[{id:h.runId,trigger:h.trigger,startedAt:h.startedAt,finishedAt:new Date(this.ports.now()).toISOString(),windowStart:h.windowStart,windowEnd:h.windowEnd,status:b,errorCode:c,conversationId:h.conversationId,hasReport:d,promptVersion:h.promptVersion},...f.history],"ok"!==b&&"quiet"!==b){let a=f.cursor.unreportedSinceAt;(!a||Date.parse(h.windowStart)<Date.parse(a))&&(f.cursor.unreportedSinceAt=h.windowStart);return}f.cursor.lastSuccessfulWindowEndAt=h.windowEnd,f.cursor.unreportedSinceAt=null;let j=(0,i.l)(this.ports.now(),g.cz);this.ports.now()>=(0,i.wk)(j,f.settings.time,g.cz)&&(f.cursor.lastScheduledDay=j)}),d?(0,p.jc)(a):(0,p.FF)(a)}recordFailure(a,b,c=(0,i.s)(this.ports.now(),(0,p.rD)().cursor)){let d=new Date(this.ports.now()).toISOString();return(0,p.k)(f=>{if(f.history=[{id:e().randomUUID(),trigger:a,startedAt:d,finishedAt:d,windowStart:c.startAt,windowEnd:c.endAt,status:"failed",errorCode:b,conversationId:null,hasReport:!1,promptVersion:h.BL},...f.history],"reports_disabled"===b)return;let g=f.cursor.unreportedSinceAt;(!g||Date.parse(c.startAt)<Date.parse(g))&&(f.cursor.unreportedSinceAt=c.startAt)}),{ok:!1,code:b}}}function w(a,b){return!!(a?.id&&b?.id&&a.id===b.id)}let x=globalThis;function y(){return x.__llvTelegramReportRunner??=new v}function z(){x.__llvTelegramReportTimer||(x.__llvTelegramReportTimer=setInterval(()=>{y().tick()},6e4),x.__llvTelegramReportTimer.unref?.(),y().tick())}function A(a){a?x.__llvTelegramReportRunner=a:delete x.__llvTelegramReportRunner}},52538:(a,b,c)=>{c.d(b,{hS:()=>f,jE:()=>g,zg:()=>d});let d="telegram-reports",e="telegram-report-";function f(a){return`${e}${a}`}function g(a){if("string"!=typeof a||!a.startsWith(e))return null;let b=a.slice(e.length);return/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test(b)?b:null}},55862:(a,b,c)=>{c.d(b,{jF:()=>k,l:()=>g,s:()=>l,wk:()=>i,z1:()=>j});var d=c(8668);let e=new Map;function f(a,b){let c=e.get(b);c||(c=new Intl.DateTimeFormat("en-US",{timeZone:b,hour12:!1,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}),e.set(b,c));let d={};for(let b of c.formatToParts(new Date(a)))d[b.type]=b.value;return{year:Number(d.year),month:Number(d.month),day:Number(d.day),hour:Number(d.hour)%24,minute:Number(d.minute),second:Number(d.second)}}function g(a,b=d.cz){let c=f(a,b);return`${String(c.year).padStart(4,"0")}-${String(c.month).padStart(2,"0")}-${String(c.day).padStart(2,"0")}`}function h(a,b){let c=f(a,b);return Date.UTC(c.year,c.month-1,c.day,c.hour,c.minute,c.second)-1e3*Math.floor(a/1e3)}function i(a,b,c=d.cz){let[e,f]=b.split(":").map(Number),[g,j,k]=a.split("-").map(Number),l=Date.UTC(g,j-1,k,e,f,0),m=l-h(l,c);return l-h(m,c)}function j(a){let b=a.timeZone??d.cz;if(!a.settings.enabled)return!1;let c=g(a.now,b);return a.cursor.lastScheduledDay!==c&&a.now>=i(c,a.settings.time,b)}function k(a){let b=a.timeZone??d.cz;if(!a.settings.enabled)return null;if(j(a))return a.now;let c=i(g(a.now,b),"12:00",b);for(let d=0;d<=8;d+=1){let e=g(c+864e5*d,b),f=i(e,a.settings.time,b);if(!(f<=a.now)&&a.cursor.lastScheduledDay!==e)return f}return null}function l(a,b){let c=b.unreportedSinceAt?Date.parse(b.unreportedSinceAt):NaN,d=b.lastSuccessfulWindowEndAt?Date.parse(b.lastSuccessfulWindowEndAt):NaN,e=Number.isFinite(c)?c:d;return{startAt:new Date(Number.isFinite(e)&&e<a?Math.max(e,a-2592e5):a-864e5).toISOString(),endAt:new Date(a).toISOString()}}}};
@@ -1 +1 @@
1
- "use strict";exports.id=6522,exports.ids=[6522],exports.modules={21153:(a,b,c)=>{c.d(b,{K6:()=>o,Pf:()=>A,h6:()=>w,z4:()=>z});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(91724),k=c(89940),l=c(2033),m=c(64859),n=c(49729);let o=(0,j.BQ)("tasks.json"),p=new WeakMap;function q(a,b,c){for(let b of a)b.project=(0,k.G$)(b.project);return(0,m.lw)(a,b,c),a.map(a=>{let c=b.get(a.id);return c&&(0,m.d4)(a)===c.revision&&p.has(c.ref)?p.get(c.ref):a})}function r(a,b){g().mkdirSync(i().dirname(a),{recursive:!0});let c=i().join(i().dirname(a),`.${i().basename(a)}.${process.pid}.${e().randomUUID()}.tmp`);g().writeFileSync(c,JSON.stringify(b,null,2)+"\n","utf8"),g().renameSync(c,a)}function s(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"number"==typeof a.x&&Number.isFinite(a.x)&&"number"==typeof a.y&&Number.isFinite(a.y)}function t(a){var b;return!(!a||"object"!=typeof a||Array.isArray(a))&&("string"==typeof a.path||null===a.path)&&(void 0===a.launchId||"string"==typeof a.launchId||null===a.launchId)&&(void 0===a.clientAttemptId||"string"==typeof a.clientAttemptId||null===a.clientAttemptId)&&(void 0===a.conversationId||"string"==typeof a.conversationId||null===a.conversationId)&&("number"==typeof a.panePid||null===a.panePid)&&(null===a.panePid||Number.isInteger(a.panePid)&&a.panePid>0)&&("delivered"===(b=a.state)||"failed"===b||"spawning"===b||"handoff"===b||"linked"===b)&&("string"==typeof a.error||null===a.error)&&"string"==typeof a.at}function u(a){return"pinned"===a||"unplaced"===a||"auto"===a}function v(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.clientRequestId&&"string"==typeof a.taskId}function w(a=o){return x(a).tasks}function x(a=o){var b;let c=function(a){try{return JSON.parse(g().readFileSync(a,"utf8"))}catch(a){if("ENOENT"===a.code)return;throw a}}(a);if(void 0===c)return{tasks:[],recentCreates:[],migrations:{}};if(!c||!Array.isArray(c.tasks))throw Error("invalid persisted task state");let d=c.tasks.map(a=>{let b=function(a){var b,c,d,e,f;let g,h;if(!a||"object"!=typeof a||Array.isArray(a)||!("string"==typeof a.id&&"string"==typeof a.project&&("inbox"===(b=a.status)||"assigned"===b||"blocked"===b||"done"===b)&&"string"==typeof a.text&&(void 0===a.details||"string"==typeof a.details)&&(void 0===a.placement||u(a.placement))&&(void 0===a.pos||s(a.pos))&&(g=void 0!==a.dueAt,h=void 0!==a.dueTz,!g&&!h||"string"==typeof a.dueAt&&"string"==typeof a.dueTz)&&(void 0===(c=a.attachments)||Array.isArray(c)&&c.every(n.tK))&&Array.isArray(a.assignments)&&a.assignments.every(t)&&(void 0===a.source||!(!(d=a.source)||"object"!=typeof d||Array.isArray(d))&&"string"==typeof d.path&&("string"==typeof d.ts||null===d.ts)&&"string"==typeof d.text&&"string"==typeof d.fingerprint&&("claude"===d.engine||"codex"===d.engine))&&(void 0===a.origin||!(!(e=a.origin)||"object"!=typeof e||Array.isArray(e))&&("conversation"===e.kind||"launch"===e.kind||"pipeline"===e.kind||"flow"===e.kind)&&"string"==typeof e.key&&e.key.length>0&&("pending"===e.refinement||"titled"===e.refinement)&&(void 0===e.refinedBy||"string"==typeof e.refinedBy)&&(void 0===e.refinedText||"string"==typeof e.refinedText))&&(void 0===a.board||"shown"===(f=a.board)||"hidden"===f)&&"string"==typeof a.createdAt&&"string"==typeof a.updatedAt))return null;let i=s(a.pos),j=u(a.placement)?a.placement:i?"pinned":"unplaced",l="pinned"===j&&i,o={...a,id:a.id,project:(0,k.G$)(a.project),status:a.status,text:a.text,...void 0!==a.details?{details:a.details}:{},placement:"pinned"!==j||i?j:"unplaced",...l?{pos:a.pos}:{},...void 0!==a.dueAt?{dueAt:a.dueAt,dueTz:a.dueTz}:{},...void 0!==a.attachments?{attachments:a.attachments}:{},assignments:a.assignments,...void 0!==a.source?{source:a.source}:{},...void 0!==a.origin?{origin:a.origin}:{},...void 0!==a.board?{board:a.board}:{},createdAt:a.createdAt,updatedAt:a.updatedAt};l||delete o.pos;try{Object.assign(o,{revision:(0,m.d4)(o)})}catch{return null}return o}(a);if(!b)throw Error("invalid persisted task row");return p.set(b,a),b});if(new Set(d.map(a=>a.id)).size!==d.length)throw Error("duplicate persisted task id");if(void 0!==c.recentCreates&&(!Array.isArray(c.recentCreates)||!c.recentCreates.every(v)))throw Error("invalid persisted task receipts");let e=c.recentCreates??[];if(void 0!==c.migrations&&!(!(!(b=c.migrations)||"object"!=typeof b||Array.isArray(b))&&Object.values(b).every(a=>"string"==typeof a)))throw Error("invalid persisted task migrations");return{tasks:d,recentCreates:e,migrations:{...c.migrations??{}}}}function y(a,b,c={}){return{tasks:a,...b.length?{recentCreates:b}:{},...Object.keys(c).length?{migrations:c}:{}}}function z(a,b=o){return(0,l.Ol)(b,"task state is busy",()=>{let c=x(b),d=(0,m.lU)(c.tasks),e=a(c.tasks);return e.tasks&&r(b,y(q(e.tasks,d,!0),c.recentCreates,c.migrations)),e.result})}function A(a,b=o){return(0,l.Ol)(b,"task state is busy",()=>{let c=x(b),d=(0,m.lU)(c.tasks),e=a(c);return e.state&&r(b,y(q(e.state.tasks,d,!0),e.state.recentCreates,e.state.migrations??c.migrations)),e.result})}},36522:(a,b,c)=>{c.d(b,{IE:()=>n,On:()=>i,Z1:()=>j,mD:()=>r,to:()=>o,v1:()=>k});var d=c(77598),e=c.n(d),f=c(60641),g=c(21153);let h=function(a,b){return b.conversationId&&a.conversationId?a.conversationId===b.conversationId:b.launchId&&a.launchId?a.launchId===b.launchId:b.clientAttemptId&&a.clientAttemptId?a.clientAttemptId===b.clientAttemptId:!!b.path&&a.path===b.path};function i(a){let b={launchId:a.launchId??null,clientAttemptId:a.clientAttemptId??null,conversationId:a.conversationId??null,path:a.path??null,engine:a.engine??null,accountId:a.accountId??null};return m(b)?b:null}function j(a){let b=a.clientAttemptId??a.launchId;if(b)return{kind:"launch",key:b};let c=a.conversationId??a.path;return c?{kind:"conversation",key:c}:null}function k(a,b){return a.some(a=>a.assignments.some(a=>"failed"!==a.state&&h(a,b)))}function l(a,b,c){let d=a.assignments.findIndex(a=>h(a,b));if(d>=0){let e=a.assignments[d],f={...e,...b.launchId&&!e.launchId?{launchId:b.launchId}:{},...b.clientAttemptId&&!e.clientAttemptId?{clientAttemptId:b.clientAttemptId}:{},...b.conversationId&&!e.conversationId?{conversationId:b.conversationId}:{},path:e.path??b.path??null,...b.engine&&!e.engine?{engine:b.engine}:{},...b.accountId&&!e.accountId?{accountId:b.accountId}:{}};if(JSON.stringify(f)===JSON.stringify(e))return{task:a,changed:!1};let g=a.assignments.slice();return g[d]=f,{task:{...a,assignments:g,updatedAt:c},changed:!0}}let e={...b.launchId?{launchId:b.launchId}:{},...b.clientAttemptId?{clientAttemptId:b.clientAttemptId}:{},path:b.path??null,...b.conversationId?{conversationId:b.conversationId}:{},panePid:null,state:"linked",error:null,at:c,...b.engine?{engine:b.engine}:{},...b.accountId?{accountId:b.accountId}:{}},f="inbox"===a.status?"assigned":a.status;return{task:{...a,status:f,assignments:[...a.assignments,e],updatedAt:c},changed:!0}}function m(a){return!!(a.launchId||a.clientAttemptId||a.conversationId||a.path)}function n(a,b,c={}){var d;let g,i=b.project.trim();if(!i&&!b.explicitTaskIds?.length)return{ok:!1,error:"project is required",status:400};if(!b.origin.key.trim())return{ok:!1,error:"membership origin key is required",status:400};if(!m(b.identity))return{ok:!1,error:"membership needs a launch, conversation or path identity",status:400};let j=c.now?.()??(0,f.Ec)(),k=a.slice(),o=!1,p=(a,b)=>{b.changed&&(k[a]=b.task,o=!0)},q=k.filter(a=>a.assignments.some(a=>{var c;return"failed"!==a.state&&((c=b.identity).launchId&&a.launchId?a.launchId===c.launchId:!!c.clientAttemptId&&a.clientAttemptId===c.clientAttemptId)})),r=k.find(a=>a.project===(i||a.project)&&a.origin?.kind===b.origin.kind&&a.origin.key===b.origin.key);if(b.explicitTaskIds?.length){let c=[...new Set(b.explicitTaskIds)];if(r&&!c.includes(r.id))return{ok:!1,error:"this launch was admitted without a task target; a retry cannot add one",status:409};if(q.length&&(q.length!==c.length||q.some(a=>!c.includes(a.id))))return{ok:!1,error:"this launch was admitted with a different task target set; a retry keeps the original",status:409};let d=c.map(a=>k.findIndex(b=>b.id===a)),e=d.findIndex(a=>a<0);if(e>=0)return{ok:!1,error:`task ${c[e]} is not available`,status:404};let f=new Set(d.map(a=>k[a].project));if(f.size>1||i&&!f.has(i))return{ok:!1,error:"explicit tasks must belong to the launch's project",status:409};for(let a of d)p(a,l(k[a],b.identity,j));return{ok:!0,tasks:o?k:a.slice(),taskIds:c,created:[],changed:o}}let s=k.findIndex(a=>a.project===i&&a.origin?.kind===b.origin.kind&&a.origin.key===b.origin.key);if(s>=0)return p(s,l(k[s],b.identity,j)),{ok:!0,tasks:o?k:a.slice(),taskIds:[k[s].id],created:[],changed:o};let t=k.map((a,b)=>({task:a,index:b})).filter(({task:a})=>a.assignments.some(a=>"failed"!==a.state&&h(a,b.identity)));if(t.length){for(let{index:a}of t)p(a,l(k[a],b.identity,j));return{ok:!0,tasks:o?k:a.slice(),taskIds:t.map(({task:a})=>a.id),created:[],changed:o}}let u=(b.inherit??[]).filter(m),v=k.map((a,b)=>({task:a,index:b})).filter(({task:a})=>u.some(b=>a.assignments.some(a=>"failed"!==a.state&&h(a,b))));if(v.length){for(let{index:a}of v)p(a,l(k[a],b.identity,j));return{ok:!0,tasks:o?k:a.slice(),taskIds:v.map(({task:a})=>a.id),created:[],changed:o}}let w=c.id?.()??e().randomUUID(),x=l({id:w,project:i,status:"inbox",text:(d=b.title,(g=(d??"").split(/\r?\n/,1)[0]?.trim()??"")?g.length>80?`${g.slice(0,79).trimEnd()}…`:g:"Untitled task"),placement:"unplaced",origin:{kind:b.origin.kind,key:b.origin.key,refinement:"pending"},assignments:[],createdAt:j,updatedAt:j},b.identity,j).task;for(let a of u)x=l(x,a,j).task;return{ok:!0,tasks:k=[...k,x],taskIds:[w],created:[w],changed:!0}}function o(a,b){return(0,g.z4)(b=>{let c=n(b,a);return{tasks:c.ok&&c.changed?c.tasks:void 0,result:c}},b)}function p(a){return!(!a.project||!a.path||a.path.startsWith("spawn:"))&&("claude-projects"===a.root||"codex-sessions"===a.root)&&!a.path.includes("/subagents/")}let q=(a,b)=>!!(b.conversationId&&a.conversationIds.has(b.conversationId))||a.paths.has(b.path);function r(a,b,c){return(0,g.z4)(c=>{let d=function(a,b,c,d=50){let e=function(a){let b={conversationIds:new Set,paths:new Set,launches:new Map};for(let c of a)for(let a of c.assignments)if("failed"!==a.state)for(let d of(a.conversationId&&b.conversationIds.add(a.conversationId),a.path&&b.paths.add(a.path),[a.launchId,a.clientAttemptId])){if(!d)continue;let a=b.launches.get(d)??[];a.includes(c.id)||a.push(c.id),b.launches.set(d,a)}return b}(b),f=[],g=new Set,h=new Map(a.map(a=>[a.path,a])),i=b=>(b.agentPath?h.get(b.agentPath):void 0)??(b.conversationId?a.find(a=>a.conversationId===b.conversationId):void 0);for(let a of c){if(a.hiddenAt)continue;let b=a.runs.flatMap(a=>a.attempts).map(i).filter(a=>!!a);for(let a of b)g.add(a.path);if(!a.taskIds.length)for(let c of b)q(e,c)||f.length>=d||(f.push({project:c.project,origin:{kind:"pipeline",key:a.id},title:a.task,identity:{conversationId:c.conversationId??null,path:c.path,engine:"claude"===c.engine||"codex"===c.engine?c.engine:null}}),e.paths.add(c.path),c.conversationId&&e.conversationIds.add(c.conversationId))}let j=(a,b)=>{let c=function(a,b){let c=[b.spawn?.launchId,b.spawn?.clientAttemptId].filter(a=>!!a),d=new Set;for(let b of c)for(let c of a.launches.get(b)??[])d.add(c);return[...d]}(e,a);c.length?f.push({project:a.project,origin:{kind:"launch",key:a.spawn?.clientAttemptId??a.spawn?.launchId??a.path},identity:{launchId:a.spawn?.launchId??null,clientAttemptId:a.spawn?.clientAttemptId??null,conversationId:a.conversationId??null,path:a.path},explicitTaskIds:c}):f.push({project:a.project,origin:{kind:"conversation",key:a.conversationId??a.path},title:a.title,identity:{conversationId:a.conversationId??null,path:a.path,engine:"claude"===a.engine||"codex"===a.engine?a.engine:null},...b.length?{inherit:b}:{}}),e.paths.add(a.path),a.conversationId&&e.conversationIds.add(a.conversationId)};for(let b of a){if(f.length>=d)break;b.parent||g.has(b.path)||!p(b)||q(e,b)||j(b,[])}for(let b of a){if(f.length>=d)break;if(!b.parent||g.has(b.path)||!p(b)||q(e,b))continue;let a=h.get(b.parent);(!a||q(e,a))&&j(b,a?[{conversationId:a.conversationId??null,path:a.path}]:[])}return f}(a,c,b);if(!d.length)return{tasks:void 0,result:0};let e=function(a,b,c={}){let d=a.slice(),e=0;for(let a of b){let b=n(d,a,c);b.ok&&b.changed&&(d=b.tasks,e+=1)}return{tasks:d,admitted:e}}(c,d);return{tasks:e.admitted?e.tasks:void 0,result:e.admitted}},c)}},49729:(a,b,c)=>{c.d(b,{L0:()=>p,tK:()=>n,Gm:()=>q,nw:()=>r,Bx:()=>s});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(91724),k=c(99410);let l=new Set(["png","jpg","gif","webp"]),m={png:"image/png",jpg:"image/jpeg",gif:"image/gif",webp:"image/webp"};function n(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.id&&a.id.length>0&&"string"==typeof a.sha256&&/^[0-9a-f]{64}$/.test(a.sha256)&&"string"==typeof a.ext&&l.has(a.ext)&&"string"==typeof a.mime&&null!==(0,k.PG)(a.mime)&&"number"==typeof a.bytes&&Number.isFinite(a.bytes)&&a.bytes>0&&"string"==typeof a.createdAt}function o(){return(0,j.BQ)("attachments","tasks")}function p(a){return i().join(o(),`${a.sha256}.${a.ext}`)}function q(a,b){if(!/^[0-9a-f]{64}$/.test(a)||!l.has(b))return null;let c=p({sha256:a,ext:b});try{return{data:g().readFileSync(c),mime:m[b]}}catch{return null}}function r(a,b,c,d=e().randomUUID()){let f=(0,k.PG)(b);if(null===f||!l.has(f))return{ok:!1,error:"unsupported image type",status:400};if(0===a.length)return{ok:!1,error:"empty image",status:400};if(a.length>k.YP)return{ok:!1,error:"image is too large",status:413};let h={id:d,sha256:e().createHash("sha256").update(a).digest("hex"),ext:f,mime:b,bytes:a.length,createdAt:c},j=p(h);if(!g().existsSync(j)){g().mkdirSync(i().dirname(j),{recursive:!0});let b=`${j}.${process.pid}.${e().randomUUID()}.tmp`;g().writeFileSync(b,a),g().renameSync(b,j)}return{ok:!0,attachment:h}}function s(a,b,c=o()){try{let d=function(a){let b=new Set;for(let c of a)for(let a of c.attachments??[])b.add(a.sha256);return b}(a);for(let a of g().readdirSync(c)){let e=a.replace(/\.[^.]+$/,"");if(d.has(e))continue;let f=i().join(c,a);try{let a=g().statSync(f);if(b-a.mtimeMs<6048e5)continue;g().unlinkSync(f)}catch{}}}catch{}}},60641:(a,b,c)=>{function d(){return new Date().toISOString()}function e(a){return(a.split(/\r?\n/,1)[0]?.trim()??"")||"Untitled"}function f(a,b){return`Task #${a.slice(0,8)}: ${b}`}c.d(b,{Ec:()=>d,F7:()=>f,bO:()=>e})},64859:(a,b,c)=>{c.d(b,{d4:()=>f,lU:()=>g,lw:()=>h});var d=c(77598);function e(a){let{revision:b,...c}=a;return(0,d.createHash)("sha256").update(JSON.stringify(function a(b){return Array.isArray(b)?b.map(a):b&&"object"==typeof b?Object.fromEntries(Object.entries(b).sort(([a],[b])=>a.localeCompare(b)).map(([b,c])=>[b,a(c)])):b}(c))).digest("hex")}function f(a){let b=a.revision;if(void 0===b)return`task-legacy:${e(a)}`;if("string"!=typeof b||!/^(task-v1:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}|task-legacy:[0-9a-f]{64})$/.test(b))throw Error("invalid persisted task revision");return b}function g(a){return new Map(a.map(a=>[a.id,{ref:a,fingerprint:e(a),revision:f(a)}]))}function h(a,b,c){for(let f of a){let a=b.get(f.id),g=!a||a.fingerprint!==e(f)||c&&a.ref!==f;f.revision=g?`task-v1:${(0,d.randomUUID)()}`:a.revision}}},99410:(a,b,c)=>{c.d(b,{PG:()=>f,YP:()=>e});let d={"image/png":"png","image/jpeg":"jpg","image/jpg":"jpg","image/gif":"gif","image/webp":"webp"},e=0xa00000;function f(a){return d[a]??null}}};
1
+ "use strict";exports.id=6522,exports.ids=[6522],exports.modules={36522:(a,b,c)=>{c.d(b,{IE:()=>n,On:()=>i,Z1:()=>j,mD:()=>r,to:()=>o,v1:()=>k});var d=c(77598),e=c.n(d),f=c(60641),g=c(23784);let h=function(a,b){return b.conversationId&&a.conversationId?a.conversationId===b.conversationId:b.launchId&&a.launchId?a.launchId===b.launchId:b.clientAttemptId&&a.clientAttemptId?a.clientAttemptId===b.clientAttemptId:!!b.path&&a.path===b.path};function i(a){let b={launchId:a.launchId??null,clientAttemptId:a.clientAttemptId??null,conversationId:a.conversationId??null,path:a.path??null,engine:a.engine??null,accountId:a.accountId??null};return m(b)?b:null}function j(a){let b=a.clientAttemptId??a.launchId;if(b)return{kind:"launch",key:b};let c=a.conversationId??a.path;return c?{kind:"conversation",key:c}:null}function k(a,b){return a.some(a=>a.assignments.some(a=>"failed"!==a.state&&h(a,b)))}function l(a,b,c){let d=a.assignments.findIndex(a=>h(a,b));if(d>=0){let e=a.assignments[d],f={...e,...b.launchId&&!e.launchId?{launchId:b.launchId}:{},...b.clientAttemptId&&!e.clientAttemptId?{clientAttemptId:b.clientAttemptId}:{},...b.conversationId&&!e.conversationId?{conversationId:b.conversationId}:{},path:e.path??b.path??null,...b.engine&&!e.engine?{engine:b.engine}:{},...b.accountId&&!e.accountId?{accountId:b.accountId}:{}};if(JSON.stringify(f)===JSON.stringify(e))return{task:a,changed:!1};let g=a.assignments.slice();return g[d]=f,{task:{...a,assignments:g,updatedAt:c},changed:!0}}let e={...b.launchId?{launchId:b.launchId}:{},...b.clientAttemptId?{clientAttemptId:b.clientAttemptId}:{},path:b.path??null,...b.conversationId?{conversationId:b.conversationId}:{},panePid:null,state:"linked",error:null,at:c,...b.engine?{engine:b.engine}:{},...b.accountId?{accountId:b.accountId}:{}},f="inbox"===a.status?"assigned":a.status;return{task:{...a,status:f,assignments:[...a.assignments,e],updatedAt:c},changed:!0}}function m(a){return!!(a.launchId||a.clientAttemptId||a.conversationId||a.path)}function n(a,b,c={}){var d;let g,i=b.project.trim();if(!i&&!b.explicitTaskIds?.length)return{ok:!1,error:"project is required",status:400};if(!b.origin.key.trim())return{ok:!1,error:"membership origin key is required",status:400};if(!m(b.identity))return{ok:!1,error:"membership needs a launch, conversation or path identity",status:400};let j=c.now?.()??(0,f.Ec)(),k=a.slice(),o=!1,p=(a,b)=>{b.changed&&(k[a]=b.task,o=!0)},q=k.filter(a=>a.assignments.some(a=>{var c;return"failed"!==a.state&&((c=b.identity).launchId&&a.launchId?a.launchId===c.launchId:!!c.clientAttemptId&&a.clientAttemptId===c.clientAttemptId)})),r=k.find(a=>a.project===(i||a.project)&&a.origin?.kind===b.origin.kind&&a.origin.key===b.origin.key);if(b.explicitTaskIds?.length){let c=[...new Set(b.explicitTaskIds)];if(r&&!c.includes(r.id))return{ok:!1,error:"this launch was admitted without a task target; a retry cannot add one",status:409};if(q.length&&(q.length!==c.length||q.some(a=>!c.includes(a.id))))return{ok:!1,error:"this launch was admitted with a different task target set; a retry keeps the original",status:409};let d=c.map(a=>k.findIndex(b=>b.id===a)),e=d.findIndex(a=>a<0);if(e>=0)return{ok:!1,error:`task ${c[e]} is not available`,status:404};let f=new Set(d.map(a=>k[a].project));if(f.size>1||i&&!f.has(i))return{ok:!1,error:"explicit tasks must belong to the launch's project",status:409};for(let a of d)p(a,l(k[a],b.identity,j));return{ok:!0,tasks:o?k:a.slice(),taskIds:c,created:[],changed:o}}let s=k.findIndex(a=>a.project===i&&a.origin?.kind===b.origin.kind&&a.origin.key===b.origin.key);if(s>=0)return p(s,l(k[s],b.identity,j)),{ok:!0,tasks:o?k:a.slice(),taskIds:[k[s].id],created:[],changed:o};let t=k.map((a,b)=>({task:a,index:b})).filter(({task:a})=>a.assignments.some(a=>"failed"!==a.state&&h(a,b.identity)));if(t.length){for(let{index:a}of t)p(a,l(k[a],b.identity,j));return{ok:!0,tasks:o?k:a.slice(),taskIds:t.map(({task:a})=>a.id),created:[],changed:o}}let u=(b.inherit??[]).filter(m),v=k.map((a,b)=>({task:a,index:b})).filter(({task:a})=>u.some(b=>a.assignments.some(a=>"failed"!==a.state&&h(a,b))));if(v.length){for(let{index:a}of v)p(a,l(k[a],b.identity,j));return{ok:!0,tasks:o?k:a.slice(),taskIds:v.map(({task:a})=>a.id),created:[],changed:o}}let w=c.id?.()??e().randomUUID(),x=l({id:w,project:i,status:"inbox",text:(d=b.title,(g=(d??"").split(/\r?\n/,1)[0]?.trim()??"")?g.length>80?`${g.slice(0,79).trimEnd()}…`:g:"Untitled task"),placement:"unplaced",origin:{kind:b.origin.kind,key:b.origin.key,refinement:"pending"},assignments:[],createdAt:j,updatedAt:j},b.identity,j).task;for(let a of u)x=l(x,a,j).task;return{ok:!0,tasks:k=[...k,x],taskIds:[w],created:[w],changed:!0}}function o(a,b){return(0,g.mutateTasks)(b=>{let c=n(b,a);return{tasks:c.ok&&c.changed?c.tasks:void 0,result:c}},b)}function p(a){return!(!a.project||!a.path||a.path.startsWith("spawn:"))&&("claude-projects"===a.root||"codex-sessions"===a.root)&&!a.path.includes("/subagents/")}let q=(a,b)=>!!(b.conversationId&&a.conversationIds.has(b.conversationId))||a.paths.has(b.path);function r(a,b,c){return(0,g.mutateTasks)(c=>{let d=function(a,b,c,d=50){let e=function(a){let b={conversationIds:new Set,paths:new Set,launches:new Map};for(let c of a)for(let a of c.assignments)if("failed"!==a.state)for(let d of(a.conversationId&&b.conversationIds.add(a.conversationId),a.path&&b.paths.add(a.path),[a.launchId,a.clientAttemptId])){if(!d)continue;let a=b.launches.get(d)??[];a.includes(c.id)||a.push(c.id),b.launches.set(d,a)}return b}(b),f=[],g=new Set,h=new Map(a.map(a=>[a.path,a])),i=b=>(b.agentPath?h.get(b.agentPath):void 0)??(b.conversationId?a.find(a=>a.conversationId===b.conversationId):void 0);for(let a of c){if(a.hiddenAt)continue;let b=a.runs.flatMap(a=>a.attempts).map(i).filter(a=>!!a);for(let a of b)g.add(a.path);if(!a.taskIds.length)for(let c of b)q(e,c)||f.length>=d||(f.push({project:c.project,origin:{kind:"pipeline",key:a.id},title:a.task,identity:{conversationId:c.conversationId??null,path:c.path,engine:"claude"===c.engine||"codex"===c.engine?c.engine:null}}),e.paths.add(c.path),c.conversationId&&e.conversationIds.add(c.conversationId))}let j=(a,b)=>{let c=function(a,b){let c=[b.spawn?.launchId,b.spawn?.clientAttemptId].filter(a=>!!a),d=new Set;for(let b of c)for(let c of a.launches.get(b)??[])d.add(c);return[...d]}(e,a);c.length?f.push({project:a.project,origin:{kind:"launch",key:a.spawn?.clientAttemptId??a.spawn?.launchId??a.path},identity:{launchId:a.spawn?.launchId??null,clientAttemptId:a.spawn?.clientAttemptId??null,conversationId:a.conversationId??null,path:a.path},explicitTaskIds:c}):f.push({project:a.project,origin:{kind:"conversation",key:a.conversationId??a.path},title:a.title,identity:{conversationId:a.conversationId??null,path:a.path,engine:"claude"===a.engine||"codex"===a.engine?a.engine:null},...b.length?{inherit:b}:{}}),e.paths.add(a.path),a.conversationId&&e.conversationIds.add(a.conversationId)};for(let b of a){if(f.length>=d)break;b.parent||g.has(b.path)||!p(b)||q(e,b)||j(b,[])}for(let b of a){if(f.length>=d)break;if(!b.parent||g.has(b.path)||!p(b)||q(e,b))continue;let a=h.get(b.parent);(!a||q(e,a))&&j(b,a?[{conversationId:a.conversationId??null,path:a.path}]:[])}return f}(a,c,b);if(!d.length)return{tasks:void 0,result:0};let e=function(a,b,c={}){let d=a.slice(),e=0;for(let a of b){let b=n(d,a,c);b.ok&&b.changed&&(d=b.tasks,e+=1)}return{tasks:d,admitted:e}}(c,d);return{tasks:e.admitted?e.tasks:void 0,result:e.admitted}},c)}},60641:(a,b,c)=>{function d(){return new Date().toISOString()}function e(a){return(a.split(/\r?\n/,1)[0]?.trim()??"")||"Untitled"}function f(a,b){return`Task #${a.slice(0,8)}: ${b}`}c.d(b,{Ec:()=>d,F7:()=>f,bO:()=>e})}};
@@ -1 +1 @@
1
- "use strict";exports.id=6796,exports.ids=[6796],exports.modules={96796:(a,b,c)=>{c.r(b),c.d(b,{DEFAULT_FIXER:()=>v,SEEDED_TEMPLATES:()=>x,buildWorkflow:()=>ad,checkpointWorkflowRollbackMirrorForDemotion:()=>P,checkpointWorkflowRollbackMirrorForDemotionAsync:()=>Q,defaultFixerFromRoles:()=>u,loadTemplates:()=>aa,loadWorkflows:()=>I,mergeSeededTemplates:()=>ac,normalizeStage:()=>B,normalizeStages:()=>C,normalizeTemplate:()=>E,planWorkflowStateMigration:()=>K,reconcileWorkflowConversationOwnership:()=>W,reconcileWorkflowConversationOwnershipCooperatively:()=>X,roleConfigFromReference:()=>A,saveTemplates:()=>ab,saveWorkflows:()=>$,seededTemplatesFromRoles:()=>w,setupExitPath:()=>ah,setupStderrPath:()=>ag,setupStdoutPath:()=>af,validateWorkflowLaunchModels:()=>D,withWorkflowMutation:()=>_,workflowArtifactsDir:()=>ae,workflowStateCollectionSeed:()=>N});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(51888),i=c(27146),j=c(38751),k=c(70160),l=c(43237),m=c(98817),n=c(49048),o=c(97386),p=c(22371),q=c(14928);let r=()=>(0,i.BQ)("workflows.json"),s=()=>(0,i.BQ)("workflow-templates.json");function t(a,b={},c=(0,p.e3)()){if("builder"!==a)return{...c.find(b=>b.id===a).config};let d=(0,o.fy)(a,b,{},c);return d.ok?{...d.value.config}:{...n.W.find(b=>b.id===a).config}}function u(a){let b=t("cleaner",{},a);return{..."codex"===b.engine?b:{...n.W.find(a=>"cleaner"===a.id).config},effort:"low"}}let v=u();function w(){let a=(0,p.e3)(),b=t("builder",{},a),c=t("builder",{mode:"plain",domain:"frontend"},a),d=t("reviewer",{},a),e=u(a);return[{name:"fullstack",setup:"bun install",verify:"bun test && bun run build",finish:"pr",stages:[{kind:"implement",agent:b,scope:"Backend/API: server logic, data layer, API routes. Leave UI components alone."},{kind:"implement",agent:c,scope:"UI/frontend: components, hooks, styling, i18n labels. Build on the backend contract from the previous stage."},{kind:"review-loop",reviewer:d,fixer:e,roundLimit:5,reviewerMode:"headless"}]},{name:"Astra medium → Astra xhigh review",verify:"bun test && bun run build",finish:"pr",stages:[{kind:"implement",agent:b,scope:"Implement the requested change end to end, including focused tests and documentation updates."},{kind:"review-loop",reviewer:d,fixer:e,roundLimit:5,reviewerMode:"headless"}]}].map(a=>({...a,managed:"role-registry"}))}let x=w();function y(a,b){(0,m.atomicWriteText)(a,JSON.stringify(b,null,2)+"\n")}function z(a){return!a||"object"!=typeof a||Array.isArray(a)||"claude"!==a.engine&&"codex"!==a.engine?null:{engine:a.engine,model:"string"==typeof a.model&&a.model.trim()?a.model.trim():null,effort:"string"==typeof a.effort&&a.effort.trim()?a.effort.trim():null}}function A(a){if(!a||"object"!=typeof a||Array.isArray(a)||"string"!=typeof a.role)return null;let b=a.overrides;if(void 0!==b&&(!b||"object"!=typeof b||Array.isArray(b)))return null;let c=b??{},d={..."claude"===c.engine||"codex"===c.engine?{engine:c.engine}:{},..."string"==typeof c.model?{model:c.model}:{},..."string"==typeof c.effort?{effort:c.effort}:{}},e=(0,o.fy)(a.role,a.roleParams,d);return e.ok?e.value.config:null}function B(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b=a.kind;if("implement"===b){let b;return(b=z(a.agent)??A(a))&&"string"==typeof a.scope&&a.scope.trim()?{kind:"implement",agent:b,scope:a.scope.trim()}:null}if("review-loop"===b){let b,c=z(a.reviewer)??A(a);return c?{kind:"review-loop",reviewer:c,fixer:(b=z(a.fixer))&&"codex"===b.engine?{engine:"codex",model:b.model,effort:"low"}:u(),roundLimit:Number.isInteger(a.roundLimit)&&a.roundLimit>=0?Math.min(a.roundLimit,50):5,reviewerMode:"pane"===a.reviewerMode?"pane":"headless"}:null}return null}function C(a){if(!Array.isArray(a)||a.length<2)return{error:"a workflow needs at least one implement stage and a closing review-loop"};let b=[];for(let c of a){let a=B(c);if(!a)return{error:"invalid stage definition"};b.push(a)}return 1!==b.filter(a=>"review-loop"===a.kind).length||b.at(-1)?.kind!=="review-loop"?{error:"stages must be implement+ followed by exactly one review-loop last"}:{stages:b}}function D(a){for(let b of a)for(let a of"implement"===b.kind?[b.agent]:[b.reviewer,b.fixer]){if(!a.model)continue;let b=(0,h.RC)(a.engine,a.model);if("error"in b)return b;a.model=b.model}return{stages:a}}function E(a){if(!a||"object"!=typeof a||Array.isArray(a)||"string"!=typeof a.name||!a.name.trim())return null;let b=C(a.stages);if("error"in b)return null;let c="merge"===a.finish?"merge":"pr";return{name:a.name.trim(),stages:b.stages,finish:c,..."role-registry"===a.managed?{managed:a.managed}:{},..."string"==typeof a.setup&&a.setup.trim()?{setup:a.setup.trim()}:{},..."string"==typeof a.verify&&a.verify.trim()?{verify:a.verify.trim()}:{}}}function F(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.id&&"string"==typeof a.task&&"string"==typeof a.repoDir&&"string"==typeof a.worktreeDir&&"string"==typeof a.branch&&Array.isArray(a.stageRuns)&&"number"==typeof a.stageIndex&&null!==E(a.template)}let G=new WeakMap;function H(a){return G.set(a,new Map(a.map(a=>[a.id,JSON.stringify(a)]))),a}function I(){return H(O().snapshot())}function J(){let a=function(){let a;try{a=e().readFileSync(r(),"utf8")}catch(a){if("ENOENT"===a.code)return null;throw Error("could not read legacy workflow state",{cause:a})}try{return JSON.parse(a)}catch(a){throw Error("legacy workflow state contains malformed JSON",{cause:a})}}();if(null===a)return[];if(!a||"object"!=typeof a||Array.isArray(a))throw Error("legacy workflow state must be an object");if(!Array.isArray(a.workflows)||!a.workflows.every(F))throw Error("legacy workflow state contains malformed records");return a.workflows.map(L)}function K(){let a=J();return{records:a.length,keys:a.map(a=>a.id)}}function L(a){return{...a,project:(0,j.G$)(a.project??""),pausedState:a.pausedState??null,setupPid:a.setupPid??null,srcPath:a.srcPath??null,srcConversationId:a.srcConversationId??null,flowId:a.flowId??null,fixerPath:a.fixerPath??null,fixerConversationId:a.fixerConversationId??null,stageRuns:a.stageRuns.map(a=>({...a,agentConversationId:a.agentConversationId??null})),prUrl:a.prUrl??null}}let M=new Map;function N(){return{collection:"workflows",schemaVersion:1,migrationId:"workflows-json-v1",loadRecords:J,key:a=>a.id}}function O(){let a=(0,i.BQ)("state.sqlite"),b=M.get(a);if(b)return b;(0,q.t0)(a,[N()]);let c=new q.UY(a,{collection:"workflows",schemaVersion:1,busyMessage:"workflow state is busy",key:a=>a.id,decode:a=>F(a)?L(a):null,clone:a=>L(structuredClone(a)),strictDecode:!0,decodeError:a=>Error("workflow SQLite state contains a malformed row",{cause:a}),validate:a=>{if(!F(a))throw Error("refusing to persist a malformed workflow record")}});return M.set(a,c),c}function P(){return O().checkpointMirrorForDemotion((a,b)=>{y(r(),{_sqliteRevision:b,workflows:a})})}async function Q(){return O().checkpointMirrorForDemotionAsync((a,b)=>{y(r(),{_sqliteRevision:b,workflows:a})})}function R(a,b){if(a.conversationId?.startsWith("conversation_")){let c=b.conversation(a.conversationId)?.generations.at(-1)?.path??a.path;return{path:c,conversationId:a.conversationId,changed:c!==a.path}}if(!a.path)return{path:a.path,conversationId:a.conversationId??null,changed:!1};let c=b.conversationForPath(a.path);return c?{path:a.path,conversationId:c.id,changed:!0}:{path:a.path,conversationId:a.conversationId??null,changed:!1}}function S(a,b){let c=R({path:a.agentPath,conversationId:a.agentConversationId},b);return a.agentPath=c.path,a.agentConversationId=c.conversationId,c.changed}function T(a,b){let c=R({path:a.srcPath??null,conversationId:a.srcConversationId},b);a.srcPath=c.path,a.srcConversationId=c.conversationId;let d=R({path:a.fixerPath,conversationId:a.fixerConversationId},b);return a.fixerPath=d.path,a.fixerConversationId=d.conversationId,c.changed||d.changed}function U(a,b,c){return a===c.path&&(b??null)===c.conversationId}function V(a,b){return a.path!==b.path||a.conversationId!==b.conversationId}function W(a=(0,k.agentRegistry)()){let b=I(),c=!1;for(let d of b)for(let b of(c=T(d,a)||c,d.stageRuns))c=S(b,a)||c;c&&$(b)}async function X(a=(0,k.agentRegistry)()){let b=I(),c=[];await (0,l.pV)(b,async b=>{let d={path:b.srcPath??null,conversationId:b.srcConversationId??null},e={path:b.fixerPath,conversationId:b.fixerConversationId??null};T(b,a);let f={path:b.srcPath??null,conversationId:b.srcConversationId??null},g={path:b.fixerPath,conversationId:b.fixerConversationId??null},h=[];await (0,l.pV)(b.stageRuns,b=>{let c={path:b.agentPath,conversationId:b.agentConversationId??null};S(b,a)&&h.push({index:b.index,before:c,after:{path:b.agentPath,conversationId:b.agentConversationId??null}})});let i=V(d,f),j=V(e,g);(i||j||h.length>0)&&c.push({id:b.id,source:i?{before:d,after:f}:null,fixer:j?{before:e,after:g}:null,runs:h})}),function(a){if(0===a.length)return;let b=I(),c=new Map(b.map(a=>[a.id,a])),d=!1;for(let b of a){let a=c.get(b.id);if(a)for(let c of(b.source&&U(a.srcPath??null,a.srcConversationId,b.source.before)&&(a.srcPath=b.source.after.path,a.srcConversationId=b.source.after.conversationId,d=!0),b.fixer&&U(a.fixerPath,a.fixerConversationId,b.fixer.before)&&(a.fixerPath=b.fixer.after.path,a.fixerConversationId=b.fixer.after.conversationId,d=!0),b.runs)){let b=a.stageRuns.find(a=>a.index===c.index);b&&U(b.agentPath,b.agentConversationId,c.before)&&(b.agentPath=c.after.path,b.agentConversationId=c.after.conversationId,d=!0)}}d&&$(b)}(c)}function Y(a,b){return JSON.stringify(a)===JSON.stringify(b)}function Z(a){return!!a&&"object"==typeof a&&!Array.isArray(a)}function $(a){let b=G.get(a);if(!b){O().replaceSync(a),H(a);return}let c=new Set(a.map(a=>a.id)),d=a.filter(a=>b.get(a.id)!==JSON.stringify(a)),e=[...b.keys()].filter(a=>!c.has(a));O().patchSync(()=>{let a=[],c=[];for(let c of d){let d=b.get(c.id),e=O().get(c.id);if(void 0!==d&&e&&JSON.stringify(e)!==d){let b=L(function a(b,c,d){if(Y(c,b))return structuredClone(d);if(Y(d,b))return structuredClone(c);if(Z(b)&&Z(c)&&Z(d)){let e={};for(let f of new Set([...Object.keys(b),...Object.keys(c),...Object.keys(d)]))e[f]=a(b[f],c[f],d[f]);return e}return Array.isArray(b)&&Array.isArray(c)&&Array.isArray(d)?Array.from({length:Math.max(b.length,c.length,d.length)},(e,f)=>a(b[f],c[f],d[f])):structuredClone(d)}(JSON.parse(d),c,e));for(let a of Object.keys(c))delete c[a];Object.assign(c,b),JSON.stringify(b)!==JSON.stringify(e)&&a.push(b)}else a.push(c)}for(let a of e){let d=O().get(a);d&&JSON.stringify(d)===b.get(a)&&c.push(a)}return{records:a,deleteKeys:c}}),H(a)}async function _(a){return O().mutate(a)}function aa(){let a=function(a){try{return JSON.parse(e().readFileSync(a,"utf8"))}catch{return null}}(s()),b=Array.isArray(a?.templates)?a.templates.map(E).filter(a=>null!==a):[],c=ac(b);return JSON.stringify(c)!==JSON.stringify(b)&&ab(c),c}function ab(a){y(s(),{templates:a})}function ac(a,b=w()){let c=new Set(a.map(a=>a.name));return[...b.filter(a=>!c.has(a.name)),...a]}function ad(a){let b=g().basename(a.repoDir);return{id:a.id,name:a.name,task:a.task,project:a.project,repoDir:a.repoDir,worktreeDir:g().join(g().dirname(a.repoDir),`${b}-wf-${a.id}`),branch:`wf/${a.task.toLowerCase().replace(/[^a-z0-9]+/gi,"-").replace(/^-+|-+$/g,"").slice(0,40).replace(/-+$/,"")||"task"}-${a.id}`,baseBranch:"",baseRef:"",template:JSON.parse(JSON.stringify(a.template)),stageRuns:a.template.stages.map((a,b)=>({index:b,agentPath:null,agentConversationId:null,paneId:null,startedAt:null,doneAt:null,doneNote:null})),stageIndex:0,flowId:null,fixerPath:null,fixerConversationId:null,state:"provisioning",pausedState:null,stateDetail:null,mode:a.mode,setupPid:null,srcPath:null,srcConversationId:null,prUrl:null,createdAt:a.now,closedAt:null}}function ae(a){return g().join((0,i.BQ)("workflows"),a)}function af(a){return g().join(ae(a),"setup-stdout.log")}function ag(a){return g().join(ae(a),"setup-stderr.log")}function ah(a){return g().join(ae(a),"setup-exit")}}};
1
+ "use strict";exports.id=6796,exports.ids=[6796],exports.modules={96796:(a,b,c)=>{c.r(b),c.d(b,{DEFAULT_FIXER:()=>v,SEEDED_TEMPLATES:()=>x,buildWorkflow:()=>ad,checkpointWorkflowRollbackMirrorForDemotion:()=>P,checkpointWorkflowRollbackMirrorForDemotionAsync:()=>Q,defaultFixerFromRoles:()=>u,loadTemplates:()=>aa,loadWorkflows:()=>I,mergeSeededTemplates:()=>ac,normalizeStage:()=>B,normalizeStages:()=>C,normalizeTemplate:()=>E,planWorkflowStateMigration:()=>K,reconcileWorkflowConversationOwnership:()=>W,reconcileWorkflowConversationOwnershipCooperatively:()=>X,roleConfigFromReference:()=>A,saveTemplates:()=>ab,saveWorkflows:()=>$,seededTemplatesFromRoles:()=>w,setupExitPath:()=>ah,setupStderrPath:()=>ag,setupStdoutPath:()=>af,validateWorkflowLaunchModels:()=>D,withWorkflowMutation:()=>_,workflowArtifactsDir:()=>ae,workflowStateCollectionSeed:()=>N});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(51888),i=c(27146),j=c(38751),k=c(70160),l=c(43237),m=c(98817),n=c(49048),o=c(16251),p=c(22371),q=c(14928);let r=()=>(0,i.BQ)("workflows.json"),s=()=>(0,i.BQ)("workflow-templates.json");function t(a,b={},c=(0,p.e3)()){if("builder"!==a)return{...c.find(b=>b.id===a).config};let d=(0,o.fy)(a,b,{},c);return d.ok?{...d.value.config}:{...n.W.find(b=>b.id===a).config}}function u(a){let b=t("cleaner",{},a);return{..."codex"===b.engine?b:{...n.W.find(a=>"cleaner"===a.id).config},effort:"low"}}let v=u();function w(){let a=(0,p.e3)(),b=t("builder",{},a),c=t("builder",{mode:"plain",domain:"frontend"},a),d=t("reviewer",{},a),e=u(a);return[{name:"fullstack",setup:"bun install",verify:"bun test && bun run build",finish:"pr",stages:[{kind:"implement",agent:b,scope:"Backend/API: server logic, data layer, API routes. Leave UI components alone."},{kind:"implement",agent:c,scope:"UI/frontend: components, hooks, styling, i18n labels. Build on the backend contract from the previous stage."},{kind:"review-loop",reviewer:d,fixer:e,roundLimit:5,reviewerMode:"headless"}]},{name:"Astra medium → Astra xhigh review",verify:"bun test && bun run build",finish:"pr",stages:[{kind:"implement",agent:b,scope:"Implement the requested change end to end, including focused tests and documentation updates."},{kind:"review-loop",reviewer:d,fixer:e,roundLimit:5,reviewerMode:"headless"}]}].map(a=>({...a,managed:"role-registry"}))}let x=w();function y(a,b){(0,m.atomicWriteText)(a,JSON.stringify(b,null,2)+"\n")}function z(a){return!a||"object"!=typeof a||Array.isArray(a)||"claude"!==a.engine&&"codex"!==a.engine?null:{engine:a.engine,model:"string"==typeof a.model&&a.model.trim()?a.model.trim():null,effort:"string"==typeof a.effort&&a.effort.trim()?a.effort.trim():null}}function A(a){if(!a||"object"!=typeof a||Array.isArray(a)||"string"!=typeof a.role)return null;let b=a.overrides;if(void 0!==b&&(!b||"object"!=typeof b||Array.isArray(b)))return null;let c=b??{},d={..."claude"===c.engine||"codex"===c.engine?{engine:c.engine}:{},..."string"==typeof c.model?{model:c.model}:{},..."string"==typeof c.effort?{effort:c.effort}:{}},e=(0,o.fy)(a.role,a.roleParams,d);return e.ok?e.value.config:null}function B(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b=a.kind;if("implement"===b){let b;return(b=z(a.agent)??A(a))&&"string"==typeof a.scope&&a.scope.trim()?{kind:"implement",agent:b,scope:a.scope.trim()}:null}if("review-loop"===b){let b,c=z(a.reviewer)??A(a);return c?{kind:"review-loop",reviewer:c,fixer:(b=z(a.fixer))&&"codex"===b.engine?{engine:"codex",model:b.model,effort:"low"}:u(),roundLimit:Number.isInteger(a.roundLimit)&&a.roundLimit>=0?Math.min(a.roundLimit,50):5,reviewerMode:"pane"===a.reviewerMode?"pane":"headless"}:null}return null}function C(a){if(!Array.isArray(a)||a.length<2)return{error:"a workflow needs at least one implement stage and a closing review-loop"};let b=[];for(let c of a){let a=B(c);if(!a)return{error:"invalid stage definition"};b.push(a)}return 1!==b.filter(a=>"review-loop"===a.kind).length||b.at(-1)?.kind!=="review-loop"?{error:"stages must be implement+ followed by exactly one review-loop last"}:{stages:b}}function D(a){for(let b of a)for(let a of"implement"===b.kind?[b.agent]:[b.reviewer,b.fixer]){if(!a.model)continue;let b=(0,h.RC)(a.engine,a.model);if("error"in b)return b;a.model=b.model}return{stages:a}}function E(a){if(!a||"object"!=typeof a||Array.isArray(a)||"string"!=typeof a.name||!a.name.trim())return null;let b=C(a.stages);if("error"in b)return null;let c="merge"===a.finish?"merge":"pr";return{name:a.name.trim(),stages:b.stages,finish:c,..."role-registry"===a.managed?{managed:a.managed}:{},..."string"==typeof a.setup&&a.setup.trim()?{setup:a.setup.trim()}:{},..."string"==typeof a.verify&&a.verify.trim()?{verify:a.verify.trim()}:{}}}function F(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.id&&"string"==typeof a.task&&"string"==typeof a.repoDir&&"string"==typeof a.worktreeDir&&"string"==typeof a.branch&&Array.isArray(a.stageRuns)&&"number"==typeof a.stageIndex&&null!==E(a.template)}let G=new WeakMap;function H(a){return G.set(a,new Map(a.map(a=>[a.id,JSON.stringify(a)]))),a}function I(){return H(O().snapshot())}function J(){let a=function(){let a;try{a=e().readFileSync(r(),"utf8")}catch(a){if("ENOENT"===a.code)return null;throw Error("could not read legacy workflow state",{cause:a})}try{return JSON.parse(a)}catch(a){throw Error("legacy workflow state contains malformed JSON",{cause:a})}}();if(null===a)return[];if(!a||"object"!=typeof a||Array.isArray(a))throw Error("legacy workflow state must be an object");if(!Array.isArray(a.workflows)||!a.workflows.every(F))throw Error("legacy workflow state contains malformed records");return a.workflows.map(L)}function K(){let a=J();return{records:a.length,keys:a.map(a=>a.id)}}function L(a){return{...a,project:(0,j.G$)(a.project??""),pausedState:a.pausedState??null,setupPid:a.setupPid??null,srcPath:a.srcPath??null,srcConversationId:a.srcConversationId??null,flowId:a.flowId??null,fixerPath:a.fixerPath??null,fixerConversationId:a.fixerConversationId??null,stageRuns:a.stageRuns.map(a=>({...a,agentConversationId:a.agentConversationId??null})),prUrl:a.prUrl??null}}let M=new Map;function N(){return{collection:"workflows",schemaVersion:1,migrationId:"workflows-json-v1",loadRecords:J,key:a=>a.id}}function O(){let a=(0,i.BQ)("state.sqlite"),b=M.get(a);if(b)return b;(0,q.t0)(a,[N()]);let c=new q.UY(a,{collection:"workflows",schemaVersion:1,busyMessage:"workflow state is busy",key:a=>a.id,decode:a=>F(a)?L(a):null,clone:a=>L(structuredClone(a)),strictDecode:!0,decodeError:a=>Error("workflow SQLite state contains a malformed row",{cause:a}),validate:a=>{if(!F(a))throw Error("refusing to persist a malformed workflow record")}});return M.set(a,c),c}function P(){return O().checkpointMirrorForDemotion((a,b)=>{y(r(),{_sqliteRevision:b,workflows:a})})}async function Q(){return O().checkpointMirrorForDemotionAsync((a,b)=>{y(r(),{_sqliteRevision:b,workflows:a})})}function R(a,b){if(a.conversationId?.startsWith("conversation_")){let c=b.conversation(a.conversationId)?.generations.at(-1)?.path??a.path;return{path:c,conversationId:a.conversationId,changed:c!==a.path}}if(!a.path)return{path:a.path,conversationId:a.conversationId??null,changed:!1};let c=b.conversationForPath(a.path);return c?{path:a.path,conversationId:c.id,changed:!0}:{path:a.path,conversationId:a.conversationId??null,changed:!1}}function S(a,b){let c=R({path:a.agentPath,conversationId:a.agentConversationId},b);return a.agentPath=c.path,a.agentConversationId=c.conversationId,c.changed}function T(a,b){let c=R({path:a.srcPath??null,conversationId:a.srcConversationId},b);a.srcPath=c.path,a.srcConversationId=c.conversationId;let d=R({path:a.fixerPath,conversationId:a.fixerConversationId},b);return a.fixerPath=d.path,a.fixerConversationId=d.conversationId,c.changed||d.changed}function U(a,b,c){return a===c.path&&(b??null)===c.conversationId}function V(a,b){return a.path!==b.path||a.conversationId!==b.conversationId}function W(a=(0,k.agentRegistry)()){let b=I(),c=!1;for(let d of b)for(let b of(c=T(d,a)||c,d.stageRuns))c=S(b,a)||c;c&&$(b)}async function X(a=(0,k.agentRegistry)()){let b=I(),c=[];await (0,l.pV)(b,async b=>{let d={path:b.srcPath??null,conversationId:b.srcConversationId??null},e={path:b.fixerPath,conversationId:b.fixerConversationId??null};T(b,a);let f={path:b.srcPath??null,conversationId:b.srcConversationId??null},g={path:b.fixerPath,conversationId:b.fixerConversationId??null},h=[];await (0,l.pV)(b.stageRuns,b=>{let c={path:b.agentPath,conversationId:b.agentConversationId??null};S(b,a)&&h.push({index:b.index,before:c,after:{path:b.agentPath,conversationId:b.agentConversationId??null}})});let i=V(d,f),j=V(e,g);(i||j||h.length>0)&&c.push({id:b.id,source:i?{before:d,after:f}:null,fixer:j?{before:e,after:g}:null,runs:h})}),function(a){if(0===a.length)return;let b=I(),c=new Map(b.map(a=>[a.id,a])),d=!1;for(let b of a){let a=c.get(b.id);if(a)for(let c of(b.source&&U(a.srcPath??null,a.srcConversationId,b.source.before)&&(a.srcPath=b.source.after.path,a.srcConversationId=b.source.after.conversationId,d=!0),b.fixer&&U(a.fixerPath,a.fixerConversationId,b.fixer.before)&&(a.fixerPath=b.fixer.after.path,a.fixerConversationId=b.fixer.after.conversationId,d=!0),b.runs)){let b=a.stageRuns.find(a=>a.index===c.index);b&&U(b.agentPath,b.agentConversationId,c.before)&&(b.agentPath=c.after.path,b.agentConversationId=c.after.conversationId,d=!0)}}d&&$(b)}(c)}function Y(a,b){return JSON.stringify(a)===JSON.stringify(b)}function Z(a){return!!a&&"object"==typeof a&&!Array.isArray(a)}function $(a){let b=G.get(a);if(!b){O().replaceSync(a),H(a);return}let c=new Set(a.map(a=>a.id)),d=a.filter(a=>b.get(a.id)!==JSON.stringify(a)),e=[...b.keys()].filter(a=>!c.has(a));O().patchSync(()=>{let a=[],c=[];for(let c of d){let d=b.get(c.id),e=O().get(c.id);if(void 0!==d&&e&&JSON.stringify(e)!==d){let b=L(function a(b,c,d){if(Y(c,b))return structuredClone(d);if(Y(d,b))return structuredClone(c);if(Z(b)&&Z(c)&&Z(d)){let e={};for(let f of new Set([...Object.keys(b),...Object.keys(c),...Object.keys(d)]))e[f]=a(b[f],c[f],d[f]);return e}return Array.isArray(b)&&Array.isArray(c)&&Array.isArray(d)?Array.from({length:Math.max(b.length,c.length,d.length)},(e,f)=>a(b[f],c[f],d[f])):structuredClone(d)}(JSON.parse(d),c,e));for(let a of Object.keys(c))delete c[a];Object.assign(c,b),JSON.stringify(b)!==JSON.stringify(e)&&a.push(b)}else a.push(c)}for(let a of e){let d=O().get(a);d&&JSON.stringify(d)===b.get(a)&&c.push(a)}return{records:a,deleteKeys:c}}),H(a)}async function _(a){return O().mutate(a)}function aa(){let a=function(a){try{return JSON.parse(e().readFileSync(a,"utf8"))}catch{return null}}(s()),b=Array.isArray(a?.templates)?a.templates.map(E).filter(a=>null!==a):[],c=ac(b);return JSON.stringify(c)!==JSON.stringify(b)&&ab(c),c}function ab(a){y(s(),{templates:a})}function ac(a,b=w()){let c=new Set(a.map(a=>a.name));return[...b.filter(a=>!c.has(a.name)),...a]}function ad(a){let b=g().basename(a.repoDir);return{id:a.id,name:a.name,task:a.task,project:a.project,repoDir:a.repoDir,worktreeDir:g().join(g().dirname(a.repoDir),`${b}-wf-${a.id}`),branch:`wf/${a.task.toLowerCase().replace(/[^a-z0-9]+/gi,"-").replace(/^-+|-+$/g,"").slice(0,40).replace(/-+$/,"")||"task"}-${a.id}`,baseBranch:"",baseRef:"",template:JSON.parse(JSON.stringify(a.template)),stageRuns:a.template.stages.map((a,b)=>({index:b,agentPath:null,agentConversationId:null,paneId:null,startedAt:null,doneAt:null,doneNote:null})),stageIndex:0,flowId:null,fixerPath:null,fixerConversationId:null,state:"provisioning",pausedState:null,stateDetail:null,mode:a.mode,setupPid:null,srcPath:null,srcConversationId:null,prUrl:null,createdAt:a.now,closedAt:null}}function ae(a){return g().join((0,i.BQ)("workflows"),a)}function af(a){return g().join(ae(a),"setup-stdout.log")}function ag(a){return g().join(ae(a),"setup-stderr.log")}function ah(a){return g().join(ae(a),"setup-exit")}}};