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
@@ -1 +1 @@
1
- "use strict";exports.id=3407,exports.ids=[3407],exports.modules={93407:(a,b,c)=>{c.d(b,{q8:()=>ad,RU:()=>ac});var d=c(31421),e=c(77598),f=c.n(e),g=c(73024),h=c.n(g),i=c(76760),j=c.n(i),k=c(25617),l=c(10781),m=c(64487),n=c(3587),o=c(91724),p=c(12770),q=c(73367),r=c(98590),s=c(59371),t=c(88210),u=c(63657),v=c(3127),w=c(98223),x=c(45656),y=c(36917),z=c(66024),A=c(74127),B=c(3743);let C={"flow-worker":1800,"headless-reviewer":300,probe:3600,"duplicate-resume":0,"dead-transcript":1800};function D(a,b){return Object.values(a.conversations).find(a=>a.generations.some(a=>a.path===b)||a.continuityPaths.includes(b))??null}function E(a){let b=Number(a.slice(1));return Number.isInteger(b)?b:-1}function F(a){return`${a.paneId}:${a.agentPid}:${a.agentIdentity??"unknown"}`}function G(a,b){if(!b)return null;let c=Date.parse(b);return Number.isFinite(c)?Math.max(0,Math.floor((a-c)/1e3)):null}function H(a){let b=new Map(a.files.map(a=>[a.path,a])),c=function(a){let b=new Map;for(let c of a){if(!c.primaryPath)continue;let a=`${c.engine}:${c.primaryPath}`;b.set(a,[...b.get(a)??[],c])}return b}(a.hosts),d=[...a.hosts.map(d=>{var e,f,g,h;let i,j=d.primaryPath,k=j?b.get(j):void 0,l=j?D(a.registry,j):null,m=j?function(a,b){let c=Object.values(a.entries).find(a=>a.artifactPath===b)?.launchProfile;if(c)return c;let d=D(a,b);return d?.generations.find(a=>a.path===b)?.launchProfile??d?.generations.at(-1)?.launchProfile??null}(a.registry,j):null,n=j?function(a,b){let c=[];for(let[d,e]of a.entries()){e.implementerPath===b&&c.push({flow:e,round:null,role:"implementer",order:d});let a=e.rounds.find(a=>a.reviewerPath===b);a&&c.push({flow:e,round:a,role:"reviewer",order:d})}let d=a=>!["approved","done_comment","closed"].includes(a.state),e=a=>Date.parse(a.createdAt)||0,f=c.sort((a,b)=>Number(d(b.flow))-Number(d(a.flow))||e(b.flow)-e(a.flow)||b.order-a.order)[0];return f?{flow:f.flow,round:f.round,role:f.role}:null}(a.flows,j):null,o=j?c.get(`${d.engine}:${j}`)??[]:[],p=o.length>1?[...o].sort((a,b)=>E(b.paneId)-E(a.paneId))[0]:null,q=null,r=null,s=[];if(o.length>1)q="duplicate-resume",r=0,p?.paneId===d.paneId&&s.push("newest-duplicate");else if(n)q="flow-worker",r=G(a.now,(e=n.flow).closedAt??e.rounds.at(-1)?.reviewedAt??null),new Set(["approved","closed"]).has(n.flow.state)||s.push("flow-in-progress"),a.mergedFlowIds.has(n.flow.id)||s.push("flow-not-merged");else{let c;j&&a.viewerOwnedPaths.has(j)&&(c=[m?.title,m?.project,m?.goal?.objective,d.windowName,...d.agentArgv].filter(Boolean).join(" "),/\b(?:probe|soak)\b/i.test(c))?(q="probe",r=j?(f=a.now,(g=b.get(j))?Math.max(0,Math.floor(f/1e3-g.mtime)):null):null):j&&a.missingTranscriptPaths.has(j)&&(q="dead-transcript",r=G(a.now,a.firstObservedAt[F(d)]))}j&&a.userAuthoredPaths.has(j)&&s.unshift("user-authored-message"),j&&a.authorshipUnverifiedPaths.has(j)&&s.unshift("authorship-unverified"),(k?.activity==="live"||k?.activity==="stalled"||k?.pendingQuestion||k?.waitingInput||l&&("busy"===l.turn.state||"unknown"===l.turn.state||(h=a.registry,i=l.turn.observedAt?Date.parse(l.turn.observedAt):NaN,Object.values(h.heldDeliveries).some(a=>{if(a.conversationId!==l.id)return!1;if("held"===a.state||"assigned"===a.state||"delivery-uncertain"===a.state)return!0;if("delivered"!==a.state||!a.deliveredAt)return!1;let b=Date.parse(a.deliveredAt);return Number.isFinite(b)&&(!Number.isFinite(i)||b>=i)}))))&&s.unshift("mid-turn"),l?.migration&&!["committed","rolled-back"].includes(l.migration.phase)&&s.unshift("migration-in-progress"),j&&a.manualPaths.has(j)&&s.unshift("manual-board-placement");let t=q?C[q]:null;q?null===r?s.push("observation-pending"):null!==t&&r<t&&s.push("idle-ttl"):s.push("unclassified");let u=null!==q&&0===s.length;return{targetKind:"tmux",paneId:d.paneId,panePid:d.panePid,agentPid:d.agentPid,processIdentity:d.agentIdentity,tmuxEvidence:a.tmuxEvidenceByHost?.get(F(d))??null,flowId:n?.flow.id??null,round:n?.round?.n??null,path:j,conversationId:l?.id??null,class:q,idleSeconds:r,ttlSeconds:t,protectedReasons:s,eligible:u,action:u&&!a.enabled?"dry-run":"retained"}}),...a.reviewerProcesses.map(b=>{let c=a.flows.find(a=>a.id===b.flowId),d=c?.rounds.find(a=>a.n===b.round)??null,e=d?function(a,b){if(!b.error)return G(a,b.reviewedAt);let c=[b.reviewedAt,b.relayedAt,b.relayStartedAt,b.spawnStartedAt,b.startedAt].map(a=>a?Date.parse(a):NaN).filter(Number.isFinite).sort((a,b)=>b-a)[0];return G(a,b.terminalAt??(void 0===c?null:new Date(c).toISOString()))}(a.now,d):null,f=[];c&&d&&"headless"===c.reviewerMode?d.verdict||d.error||f.push("review-verdict-pending"):f.push("unclassified"),null===e?f.push("observation-pending"):e<C["headless-reviewer"]&&f.push("idle-ttl");let g=void 0!==c&&null!==d&&"headless"===c.reviewerMode&&0===f.length;return{targetKind:"process",paneId:null,panePid:null,agentPid:b.pid,processIdentity:b.identity,tmuxEvidence:null,flowId:b.flowId,round:b.round,path:b.path,conversationId:null,class:"headless-reviewer",idleSeconds:e,ttlSeconds:C["headless-reviewer"],protectedReasons:f,eligible:g,action:g&&!a.enabled?"dry-run":"retained"}})];return{generatedAt:new Date(a.now).toISOString(),mode:a.enabled?"active":"dry-run",configFlag:"LLV_REAPER_ENABLED",eligibleCount:d.filter(a=>a.eligible).length,agents:d}}async function I(a,b){if("dry-run"===a.mode)return a;for(let c of a.agents){if(!c.eligible||null===c.class)continue;let a=!1;try{a=await b.actuate(c)}catch{a=!1}c.action=a?"reaped":"kill-failed",b.journal({at:new Date().toISOString(),targetKind:c.targetKind,paneId:c.paneId,agentPid:c.agentPid,path:c.path,class:c.class,reason:"idle-ttl-exceeded",outcome:a?"reaped":"kill-failed"})}return a}let J=()=>(0,o.BQ)("reaper-report.json"),K=()=>(0,o.BQ)("reaper-state.json");function L(a){return`${a.paneId}:${a.agentPid}:${a.agentIdentity??"unknown"}`}function M(a,b){h().mkdirSync(j().dirname(a),{recursive:!0,mode:448});let c=`${a}.${process.pid}.${f().randomUUID()}.tmp`;h().writeFileSync(c,JSON.stringify(b,null,2)+"\n",{encoding:"utf8",mode:384}),h().renameSync(c,a)}function N(a){let b=(0,d.spawnSync)("git",["status","--porcelain=v1","--untracked-files=all"],{cwd:a.cwd,encoding:"utf8",timeout:2e3});return 0!==b.status?null:0===b.stdout.trim().length}async function O(a,b,c){return new Promise(d=>{let e=setTimeout(()=>d(c),b);a.then(a=>{clearTimeout(e),d(a)},()=>{clearTimeout(e),d(c)})})}async function P(a,b,c){let d=0,e=async()=>{for(;d<a.length;){let b=d;d+=1,await c(a[b])}};await Promise.all(Array.from({length:Math.min(b,a.length)},e))}function Q(a){return JSON.stringify(Object.fromEntries(Object.entries(a).filter(([a])=>"mergeEvidence"!==a)))}async function R(a,b={}){let c=(b.now??Date.now)(),e=new Set,f=new Map(a.map(a=>[a.id,Q(a)])),g=new Set,i=a=>{g.add(a.id)},j=b.mergeProbeTimeoutMs??5e3,k=Math.max(1,b.mergeProbeConcurrency??4);return await P(a,k,async a=>{var f;let g,k=a.mergeEvidence??null,l=(b.checkoutClean??N)(a);if(!1===l||null===l&&h().existsSync(a.cwd)){(k?.mergedAt||k?.source)&&(k.mergedAt=null,k.checkedAt=null,k.source=null,i(a));return}let m=(f=k,g=[...a.rounds].reverse().find(a=>"APPROVE"===a.verdict),g?.reviewHeadSha?g.reviewHeadSha:f?.source==="github-pr"&&f.mergedAt?f.headSha:null);if(!m)return;let n=(b.resolveMergeIdentity??q.NN)(a.cwd);if(!n&&h().existsSync(a.cwd)){(k?.mergedAt||k?.source)&&(k.mergedAt=null,k.checkedAt=null,k.source=null,i(a));return}if(n){if(n.headSha!==m){(k?.mergedAt||k?.source)&&(k.mergedAt=null,k.checkedAt=null,k.source=null,i(a));return}k&&k.repository===n.repository&&k.headRef===n.headRef&&k.headSha===m||(a.mergeEvidence=k={...n,headSha:m,prNumber:null,mergedAt:null,checkedAt:null,source:null},i(a))}else k?.headSha!==m&&(a.mergeEvidence=k=k?{...k,headSha:m,prNumber:null,mergedAt:null,checkedAt:null,source:null}:null,i(a));if(k?.mergedAt)return void e.add(a.id);let o=k?.checkedAt?Date.parse(k.checkedAt):NaN;if(Number.isFinite(o)&&c-o<3e5)return;let p=null;if(k?.repository&&k.headRef){let e=b.probePullRequest?Promise.resolve(b.probePullRequest(k)):function(a,b=5e3){if(!a.repository||!a.headRef)return Promise.resolve(null);let c=a.prNumber?["pr","view",String(a.prNumber),"--repo",a.repository,"--json","number,mergedAt,headRefOid"]:["pr","list","--repo",a.repository,"--head",a.headRef,"--state","all","--json","number,mergedAt,headRefOid","--limit","1"];return new Promise(e=>{let f=(0,d.spawn)("gh",c,{stdio:["ignore","pipe","ignore"]}),g="",h=!1,i=a=>{h||(h=!0,clearTimeout(j),e(a))},j=setTimeout(()=>{f.kill("SIGKILL"),i(null)},b);f.stdout.setEncoding("utf8"),f.stdout.on("data",a=>{g.length<=1048576&&(g+=a)}),f.on("error",()=>i(null)),f.on("close",b=>{if(0!==b||g.length>1048576)return i(null);try{let b=JSON.parse(g),c=Array.isArray(b)?b[0]:b;if(!c||!Number.isInteger(c.number))return i(null);let d="string"==typeof c.mergedAt&&c.mergedAt?c.mergedAt:null,e="string"==typeof c.headRefOid&&c.headRefOid?c.headRefOid:null;if(d&&(!a.headSha||e!==a.headSha))return i(null);i({number:c.number,mergedAt:d,headRefOid:e})}catch{i(null)}})})}(k,j),f=await O(e,j,null);f?.mergedAt&&f.headRefOid===k.headSha?p={...k,prNumber:f.number,mergedAt:f.mergedAt,headSha:f.headRefOid??k.headSha,checkedAt:new Date(c).toISOString(),source:"github-pr"}:(f&&(k.prNumber=f.number),k.checkedAt=new Date(c).toISOString(),i(a))}!p&&(b.localBranchMerged??function(a,b){if(!0!==N(a))return!1;let c=(0,d.spawnSync)("git",["rev-parse","HEAD"],{cwd:a.cwd,encoding:"utf8",timeout:2e3});if(0!==c.status||c.stdout.trim()!==b)return!1;for(let c of["origin/main","origin/master","main","master"])if(0===(0,d.spawnSync)("git",["merge-base","--is-ancestor",b,c],{cwd:a.cwd,stdio:"ignore",timeout:2e3}).status)return!0;return!1})(a,m)&&(p={repository:k?.repository??null,headRef:k?.headRef??null,headSha:m,prNumber:k?.prNumber??null,mergedAt:new Date(c).toISOString(),checkedAt:new Date(c).toISOString(),source:"git-ancestor"}),p&&(a.mergeEvidence=p,e.add(a.id),i(a))}),!function(a,b,c,d){if(0===b.size||d.loadFlows&&!d.saveFlows)return;let e=d.loadFlows?d.loadFlows():d.saveFlows?a:(0,r.loadFlows)(),f=!1;for(let d of a){if(!b.has(d.id))continue;let a=e.find(a=>a.id===d.id);if(a&&Q(a)===c.get(d.id)){var g;a.mergeEvidence=(g=d.mergeEvidence)?{...g}:null,f=!0}}f&&(d.saveFlows??r.saveFlows)(e)}(a,g,f,b),e}function S(a,b){return Object.values(a.receipts).some(a=>"launch"===a.purpose&&a.artifactPath===b&&"worker"===a.launchProfile.role&&"completed"===a.state)}async function T(a,b,c,d,e,f,g){let i=new Set(Object.keys(f)),k=new Set,l=new Map,m=new Map,n=new Map;await (0,p.pV)(d,a=>{m.set(a.path,a)}),await (0,p.pV)(b,a=>{a.primaryPath&&n.set(a.primaryPath,a.engine)}),await (0,p.pV)(d,a=>{if("claude"!==a.engine&&"codex"!==a.engine||"live"===a.activity||n.has(a.path))return;let b=g[a.path];void 0!==b&&b>=a.mtime||n.set(a.path,a.engine)});let o={remaining:0x2000000};return await (0,p.pV)([...n],async([b,d])=>{var f;if(i.has(b)||k.has(b)||e.has(b))return;let g=+!!S(a,b)+function(a,b){let c=0;for(let d of a)d.kickoffDelivery?.path===b&&(c+=1),c+=d.rounds.filter(a=>a.relayDelivery?.path===b).length;return c}(c,b)+function(a,b){for(let c of a)if("headless"===c.reviewerMode){for(let a of c.rounds)if(a.reviewerPath===b&&a.sessionId&&j().basename(b).includes(a.sessionId))return 1}return 0}(c,b)+((f=m.get(b))&&("claude-projects"===f.root&&"subagent"===f.kind||"codex-sessions"===f.root&&"codex"===f.engine&&(0,z.ET)(f.path,f.size))?1:0),n=null;try{n=h().statSync(b).mtimeMs/1e3}catch{k.add(b);return}let p=await (0,A.vK)(b,d,g+1,{resume:!0,maxBytes:4194304,budget:o});p.count>g?i.add(b):p.complete?l.set(b,n):k.add(b)}),{userAuthoredPaths:i,unverifiedPaths:k,verifiedCleanAt:l}}async function U(a){let b=await (0,y.CS)();return await (0,s.VB)(a,b),b}function V(a,b=a=>u.B.processIdentity(a)){return{kind:"tmux",endpoint:(0,B.WH)(),server:{pid:a.tmuxServerPid,startIdentity:b(a.tmuxServerPid)},paneId:a.paneId,panePid:{pid:a.panePid,startIdentity:b(a.panePid)},windowName:a.windowName??"",agent:{pid:a.agentPid,startIdentity:a.agentIdentity},argv:a.agentArgv}}function W(a){let b=(0,o.BQ)("reaper-journal.ndjson");h().mkdirSync(j().dirname(b),{recursive:!0,mode:448});try{h().statSync(b).size>4194304&&h().renameSync(b,`${b}.1`)}catch{}h().appendFileSync(b,JSON.stringify(a)+"\n",{encoding:"utf8",mode:384})}async function X(a,b,c,d,e,f={}){let g=(f.loadFlows??r.loadFlows)(),i=f.processIdentity??(a=>u.B.processIdentity(a)),j=await R(g,f),k=a.readOnlySnapshot(),l=new Set(b.flatMap(a=>a.primaryPath&&!h().existsSync(a.primaryPath)?[a.primaryPath]:[])),m=await T(k,b,g,c,l,d.userAuthoredPaths,d.scannedAt),o=!1;for(let a of m.userAuthoredPaths)d.userAuthoredPaths[a]||(d.userAuthoredPaths[a]=!0,o=!0);for(let[a,b]of m.verifiedCleanAt)d.scannedAt[a]!==b&&(d.scannedAt[a]=b,o=!0);o&&M(K(),d);let p=new Set([...m.userAuthoredPaths,...b.flatMap(a=>a.primaryPath&&d.userAuthoredPaths[a.primaryPath]?[a.primaryPath]:[])]);return{now:e,registry:k,hosts:b,tmuxEvidenceByHost:new Map(b.map(a=>[L(a),V(a,i)])),reviewerProcesses:function(a,b){let c=b.pidAlive??(a=>u.B.pidAlive(a)),d=b.processIdentity??(a=>u.B.processIdentity(a)),e=[];for(let b of a)if("headless"===b.reviewerMode)for(let a of b.rounds){let f=a.reviewerPid??null,g=a.reviewerIdentity??null;f&&g&&c(f)&&d(f)===g&&e.push({flowId:b.id,round:a.n,pid:f,identity:g,path:a.reviewerPath})}return e}(g,f),viewerOwnedPaths:new Set(b.flatMap(a=>a.primaryPath&&S(k,a.primaryPath)?[a.primaryPath]:[])),authorshipUnverifiedPaths:m.unverifiedPaths,files:c,flows:g,manualPaths:function(a,b,c){let d=new Map(c.map(a=>[a.path,a])),e=new Set,f=new Map;for(let c of b){let b=c.primaryPath;if(!b)continue;let g=d.get(b)?.project||function(a,b){return Object.values(a.entries).find(a=>a.artifactPath===b)?.launchProfile??Object.values(a.conversations).flatMap(a=>a.generations).find(a=>a.path===b)?.launchProfile??null}(a,b)?.project;if(g)try{let a=f.get(g);a||(a=new Set((0,n.C9)(g).explicitManual??[]),f.set(g,a)),a.has(b)&&e.add(b)}catch{e.add(b)}}return e}(k,b,c),userAuthoredPaths:p,missingTranscriptPaths:l,mergedFlowIds:j,firstObservedAt:d.firstObservedAt,enabled:"1"===process.env.LLV_REAPER_ENABLED}}function Y(a,b){try{process.kill(-a,b)}catch{process.kill(a,b)}}async function Z(a,b={}){let c={pidAlive:a=>u.B.pidAlive(a),processIdentity:a=>u.B.processIdentity(a),signal:Y,sleep:a=>new Promise(b=>setTimeout(b,a)),maxVerifyAttempts:20,...b},d=()=>!c.pidAlive(a.pid)||c.processIdentity(a.pid)!==a.identity;if(d())return!1;for(let b of["SIGTERM","SIGKILL"]){try{c.signal(a.pid,b)}catch{if(d())return!0;break}for(let a=0;a<c.maxVerifyAttempts;a+=1){if(d())return!0;a+1<c.maxVerifyAttempts&&await c.sleep(25)}}return!1}function $(a,b){return a.kind===b.kind&&a.endpoint===b.endpoint&&a.server.pid===b.server.pid&&a.server.startIdentity===b.server.startIdentity&&a.paneId===b.paneId&&a.panePid.pid===b.panePid.pid&&a.panePid.startIdentity===b.panePid.startIdentity&&a.windowName===b.windowName&&a.agent.pid===b.agent.pid&&a.agent.startIdentity===b.agent.startIdentity&&a.argv.length===b.argv.length&&a.argv.every((a,c)=>a===b.argv[c])}function _(a,b,c){return"tmux"===b.targetKind&&null!==b.tmuxEvidence&&$(V(a,c),b.tmuxEvidence)&&a.primaryPath===b.path}function aa(a,b){return b?JSON.stringify(Object.values(a.heldDeliveries).filter(a=>a.conversationId===b).sort((a,b)=>a.id.localeCompare(b.id))):""}async function ab(a,b,c,d,e={}){if("process"===d.targetKind){if(!d.flowId||null===d.round||!d.processIdentity)return!1;let f=H(await X(a,[],b,c,(e.now??Date.now)(),e)).agents.find(a=>"process"===a.targetKind&&a.flowId===d.flowId&&a.round===d.round&&a.agentPid===d.agentPid&&a.processIdentity===d.processIdentity);return!!f?.eligible&&(e.killProcess??Z)({pid:d.agentPid,identity:d.processIdentity})}let g=d.paneId,h=d.tmuxEvidence;if(null===g||!h||null===h.server.startIdentity||null===h.panePid.startIdentity||null===h.agent.startIdentity)return!1;let i=e.readHosts??m.oe,j=e.kill??B.B$,k=e.now??Date.now,l=e.processIdentity??(a=>u.B.processIdentity(a)),n=(await i(!0)).hosts.find(a=>_(a,d,l));if(!n?.primaryPath)return!1;let o=Object.values(a.readOnlySnapshot().entries).find(a=>a.artifactPath===d.path);if(!o)return!1;let p={pid:process.pid,startIdentity:u.B.processIdentity(process.pid)};return a.withOperationLock(o.key,p,async()=>{let b=`reaper:${f().randomUUID()}`;try{a.claim(o.key,b);let f=await i(!0);if(!f.hosts.find(a=>_(a,d,l)))return!1;let g=await (e.refreshLifecycle??U)(a),m=await X(a,f.hosts,g,c,k(),e),n=H(m).agents.find(a=>"tmux"===a.targetKind&&a.paneId===d.paneId&&a.panePid===d.panePid&&a.agentPid===d.agentPid&&a.processIdentity===d.processIdentity&&a.path===d.path&&null!==a.tmuxEvidence&&null!==d.tmuxEvidence&&$(a.tmuxEvidence,d.tmuxEvidence));if(!n?.eligible||aa(a.readOnlySnapshot(),n.conversationId)!==aa(m.registry,n.conversationId))return!1;let p=await j(h),q=a.readOnlySnapshot().entries[`${o.key.engine}:${o.key.sessionId}`]?.host;return p&&q&&$(q,h)&&a.markUnhosted(o.key),p}finally{a.releaseClaim(o.key,b)}})}async function ac(a){let b=a.registry??(0,l.agentRegistry)(),c=a.now??Date.now();try{!function(a,b=Date.now(),c={},d=[]){let e=a.readOnlySnapshot(),f=(0,k.AM)({...c,now:()=>b}),g=new Set(d.flatMap(a=>(a.primaryPath?[a.primaryPath,...a.claimedPaths]:a.claimedPaths).map(b=>`${a.engine}:${b}`))),h=new Set;for(let d of(0,k.vZ)(e,{...c,now:()=>b}))"failed"===a.recordDeliveryOutcome(d,"failed","delivery-uncertain abandoned: owning migration settled with no live host or receipt (#652)").state&&h.add(d);for(let c of Object.values(e.migrationIntents)){let d=Object.values(e.conversations).filter(a=>a.migration?.intentId===c.id),i=function(a,b){let c=new Set(Object.values(a.conversations).filter(a=>a.migration?.intentId===b).map(a=>a.id));return Object.values(a.heldDeliveries).filter(a=>c.has(a.conversationId)&&["held","assigned","delivery-uncertain"].includes(a.state)).map(a=>a.id)}(e,c.id),j=new Set;for(let a of d)a.migration?.phase==="rolled-back"&&j.add(a.id);let l=i.filter(b=>{let d=e.heldDeliveries[b];return!(d&&j.has(d.conversationId)&&a.terminalizeRolledBackMigrationDelivery(b,c.id,t.Mi))||(h.add(b),!1)});if("draining"!==c.state){for(let b of j)a.clearRolledBackConversationMigration(b,c.id);continue}let m=new Set(l.map(a=>e.heldDeliveries[a]?.conversationId).filter(a=>!!a)),n=(0,t.AY)(e,c,b);if(!n)for(let b of d){if(b.migration?.phase!=="requested"||!m.has(b.id)||function(a,b,c,d){let e=b.migration;if(!e)return!1;let f=b.generations.find(a=>a.id===e.sourceGenerationId);if(!f)return!1;let g=`${b.engine}:${f.path}`;return!!(d.has(g)||(0,k.eW)(f.host?.tmuxHost?.agent,c)||Object.values(a.entries).some(a=>a.key.engine===b.engine&&a.artifactPath===f.path&&(0,k.dw)(a,c)))||Object.values(a.receipts).some(d=>d.engine===b.engine&&d.conversationId===b.id&&(0,k.LB)(a,d,c))}(e,b,f,g))continue;let c=`delivery cancelled because source conversation ${b.id} has no live owner; send again to authorize a fresh delivery`;for(let d of l)e.heldDeliveries[d]?.conversationId===b.id&&"failed"===a.terminalizeHeldDelivery(d,c).state&&h.add(d);a.rollbackConversationMigration(b.id,b.migration.revision),l=l.filter(a=>e.heldDeliveries[a]?.conversationId!==b.id)}if(!n)continue;let o=`delivery cancelled because its owning account migration made no progress for ${t.fz}ms; send again to authorize a fresh delivery`;a.setMigrationIntentState(c.id,"stopped",c.revision,o);let p=a.readOnlySnapshot();for(let a of l)p.heldDeliveries[a]?.state==="failed"&&h.add(a)}[...h]}(b,c,{},a.hosts)}catch(a){console.error("[reaper] stale undeliverable held-delivery convergence failed",a)}try{b.terminalizeFailedSpawnDeliveries()}catch(a){console.error("[reaper] failed-spawn held-delivery convergence failed",a)}try{(0,w.cf)(b)}catch(a){console.error("[reaper] dead structured-host ownership convergence failed",a)}let d=(a.actuation?.runtimeClient??v.sS)();try{await (a.actuation?.terminalizeStaleSpawns??x.LH)(b,d)}catch(a){console.error("[reaper] stale structured spawn convergence failed",a)}let e=function(a,b){let c=function(){try{let a=JSON.parse(h().readFileSync(K(),"utf8"));if(1===a.version&&a.firstObservedAt&&"object"==typeof a.firstObservedAt)return{version:1,firstObservedAt:a.firstObservedAt,userAuthoredPaths:a.userAuthoredPaths&&"object"==typeof a.userAuthoredPaths?a.userAuthoredPaths:{},scannedAt:a.scannedAt&&"object"==typeof a.scannedAt&&!Array.isArray(a.scannedAt)?a.scannedAt:{}}}catch{}return{version:1,firstObservedAt:{},userAuthoredPaths:{},scannedAt:{}}}(),d={};for(let e of a){let a=L(e);d[a]=c.firstObservedAt[a]??new Date(b).toISOString()}let e={version:1,firstObservedAt:d,userAuthoredPaths:c.userAuthoredPaths,scannedAt:c.scannedAt};return M(K(),e),e}(a.hosts,c),f=H(await X(b,a.hosts,a.files,e,c,a.actuation)),g=await I(f,{actuate:c=>ab(b,a.files,e,c,a.actuation),journal:W});return M(J(),g),g}function ad(){try{let a=JSON.parse(h().readFileSync(J(),"utf8"));return a&&Array.isArray(a.agents)?a:null}catch{return null}}}};
1
+ "use strict";exports.id=3407,exports.ids=[3407],exports.modules={93407:(a,b,c)=>{c.d(b,{q8:()=>ae,RU:()=>ad});var d=c(31421),e=c(77598),f=c.n(e),g=c(73024),h=c.n(g),i=c(76760),j=c.n(i),k=c(25617),l=c(10781),m=c(64487),n=c(3587),o=c(91724),p=c(12770),q=c(73367),r=c(98590),s=c(59371),t=c(88210),u=c(63657),v=c(65154),w=c(3127),x=c(98223),y=c(45656),z=c(36917),A=c(66024),B=c(74127),C=c(3743);let D={"flow-worker":1800,"headless-reviewer":300,probe:3600,"duplicate-resume":0,"dead-transcript":1800};function E(a,b){return Object.values(a.conversations).find(a=>a.generations.some(a=>a.path===b)||a.continuityPaths.includes(b))??null}function F(a){let b=Number(a.slice(1));return Number.isInteger(b)?b:-1}function G(a){return`${a.paneId}:${a.agentPid}:${a.agentIdentity??"unknown"}`}function H(a,b){if(!b)return null;let c=Date.parse(b);return Number.isFinite(c)?Math.max(0,Math.floor((a-c)/1e3)):null}function I(a){let b=new Map(a.files.map(a=>[a.path,a])),c=function(a){let b=new Map;for(let c of a){if(!c.primaryPath)continue;let a=`${c.engine}:${c.primaryPath}`;b.set(a,[...b.get(a)??[],c])}return b}(a.hosts),d=[...a.hosts.map(d=>{var e,f,g,h;let i,j=d.primaryPath,k=j?b.get(j):void 0,l=j?E(a.registry,j):null,m=j?function(a,b){let c=Object.values(a.entries).find(a=>a.artifactPath===b)?.launchProfile;if(c)return c;let d=E(a,b);return d?.generations.find(a=>a.path===b)?.launchProfile??d?.generations.at(-1)?.launchProfile??null}(a.registry,j):null,n=j?function(a,b){let c=[];for(let[d,e]of a.entries()){e.implementerPath===b&&c.push({flow:e,round:null,role:"implementer",order:d});let a=e.rounds.find(a=>a.reviewerPath===b);a&&c.push({flow:e,round:a,role:"reviewer",order:d})}let d=a=>!["approved","done_comment","closed"].includes(a.state),e=a=>Date.parse(a.createdAt)||0,f=c.sort((a,b)=>Number(d(b.flow))-Number(d(a.flow))||e(b.flow)-e(a.flow)||b.order-a.order)[0];return f?{flow:f.flow,round:f.round,role:f.role}:null}(a.flows,j):null,o=j?c.get(`${d.engine}:${j}`)??[]:[],p=o.length>1?[...o].sort((a,b)=>F(b.paneId)-F(a.paneId))[0]:null,q=null,r=null,s=[];if(o.length>1)q="duplicate-resume",r=0,p?.paneId===d.paneId&&s.push("newest-duplicate");else if(n)q="flow-worker",r=H(a.now,(e=n.flow).closedAt??e.rounds.at(-1)?.reviewedAt??null),new Set(["approved","closed"]).has(n.flow.state)||s.push("flow-in-progress"),a.mergedFlowIds.has(n.flow.id)||s.push("flow-not-merged");else{let c;j&&a.viewerOwnedPaths.has(j)&&(c=[m?.title,m?.project,m?.goal?.objective,d.windowName,...d.agentArgv].filter(Boolean).join(" "),/\b(?:probe|soak)\b/i.test(c))?(q="probe",r=j?(f=a.now,(g=b.get(j))?Math.max(0,Math.floor(f/1e3-g.mtime)):null):null):j&&a.missingTranscriptPaths.has(j)&&(q="dead-transcript",r=H(a.now,a.firstObservedAt[G(d)]))}j&&a.userAuthoredPaths.has(j)&&s.unshift("user-authored-message"),j&&a.authorshipUnverifiedPaths.has(j)&&s.unshift("authorship-unverified"),(k?.activity==="live"||k?.activity==="stalled"||k?.pendingQuestion||k?.waitingInput||l&&("busy"===l.turn.state||"unknown"===l.turn.state||(h=a.registry,i=l.turn.observedAt?Date.parse(l.turn.observedAt):NaN,Object.values(h.heldDeliveries).some(a=>{if(a.conversationId!==l.id)return!1;if("held"===a.state||"assigned"===a.state||"delivery-uncertain"===a.state)return!0;if("delivered"!==a.state||!a.deliveredAt)return!1;let b=Date.parse(a.deliveredAt);return Number.isFinite(b)&&(!Number.isFinite(i)||b>=i)}))))&&s.unshift("mid-turn"),l?.migration&&!["committed","rolled-back"].includes(l.migration.phase)&&s.unshift("migration-in-progress"),j&&a.manualPaths.has(j)&&s.unshift("manual-board-placement");let t=q?D[q]:null;q?null===r?s.push("observation-pending"):null!==t&&r<t&&s.push("idle-ttl"):s.push("unclassified");let u=null!==q&&0===s.length;return{targetKind:"tmux",paneId:d.paneId,panePid:d.panePid,agentPid:d.agentPid,processIdentity:d.agentIdentity,tmuxEvidence:a.tmuxEvidenceByHost?.get(G(d))??null,flowId:n?.flow.id??null,round:n?.round?.n??null,path:j,conversationId:l?.id??null,class:q,idleSeconds:r,ttlSeconds:t,protectedReasons:s,eligible:u,action:u&&!a.enabled?"dry-run":"retained"}}),...a.reviewerProcesses.map(b=>{let c=a.flows.find(a=>a.id===b.flowId),d=c?.rounds.find(a=>a.n===b.round)??null,e=d?function(a,b){if(!b.error)return H(a,b.reviewedAt);let c=[b.reviewedAt,b.relayedAt,b.relayStartedAt,b.spawnStartedAt,b.startedAt].map(a=>a?Date.parse(a):NaN).filter(Number.isFinite).sort((a,b)=>b-a)[0];return H(a,b.terminalAt??(void 0===c?null:new Date(c).toISOString()))}(a.now,d):null,f=[];c&&d&&"headless"===c.reviewerMode?d.verdict||d.error||f.push("review-verdict-pending"):f.push("unclassified"),null===e?f.push("observation-pending"):e<D["headless-reviewer"]&&f.push("idle-ttl");let g=void 0!==c&&null!==d&&"headless"===c.reviewerMode&&0===f.length;return{targetKind:"process",paneId:null,panePid:null,agentPid:b.pid,processIdentity:b.identity,tmuxEvidence:null,flowId:b.flowId,round:b.round,path:b.path,conversationId:null,class:"headless-reviewer",idleSeconds:e,ttlSeconds:D["headless-reviewer"],protectedReasons:f,eligible:g,action:g&&!a.enabled?"dry-run":"retained"}})];return{generatedAt:new Date(a.now).toISOString(),mode:a.enabled?"active":"dry-run",configFlag:"LLV_REAPER_ENABLED",eligibleCount:d.filter(a=>a.eligible).length,agents:d}}async function J(a,b){if("dry-run"===a.mode)return a;for(let c of a.agents){if(!c.eligible||null===c.class)continue;let a=!1;try{a=await b.actuate(c)}catch{a=!1}c.action=a?"reaped":"kill-failed",b.journal({at:new Date().toISOString(),targetKind:c.targetKind,paneId:c.paneId,agentPid:c.agentPid,path:c.path,class:c.class,reason:"idle-ttl-exceeded",outcome:a?"reaped":"kill-failed"})}return a}let K=()=>(0,o.BQ)("reaper-report.json"),L=()=>(0,o.BQ)("reaper-state.json");function M(a){return`${a.paneId}:${a.agentPid}:${a.agentIdentity??"unknown"}`}function N(a,b){h().mkdirSync(j().dirname(a),{recursive:!0,mode:448});let c=`${a}.${process.pid}.${f().randomUUID()}.tmp`;h().writeFileSync(c,JSON.stringify(b,null,2)+"\n",{encoding:"utf8",mode:384}),h().renameSync(c,a)}function O(a){let b=(0,d.spawnSync)("git",["status","--porcelain=v1","--untracked-files=all"],{cwd:a.cwd,encoding:"utf8",timeout:2e3});return 0!==b.status?null:0===b.stdout.trim().length}async function P(a,b,c){return new Promise(d=>{let e=setTimeout(()=>d(c),b);a.then(a=>{clearTimeout(e),d(a)},()=>{clearTimeout(e),d(c)})})}async function Q(a,b,c){let d=0,e=async()=>{for(;d<a.length;){let b=d;d+=1,await c(a[b])}};await Promise.all(Array.from({length:Math.min(b,a.length)},e))}function R(a){return JSON.stringify(Object.fromEntries(Object.entries(a).filter(([a])=>"mergeEvidence"!==a)))}async function S(a,b={}){let c=(b.now??Date.now)(),e=new Set,f=new Map(a.map(a=>[a.id,R(a)])),g=new Set,i=a=>{g.add(a.id)},j=b.mergeProbeTimeoutMs??5e3,k=Math.max(1,b.mergeProbeConcurrency??4);return await Q(a,k,async a=>{var f;let g,k=a.mergeEvidence??null,l=(b.checkoutClean??O)(a);if(!1===l||null===l&&h().existsSync(a.cwd)){(k?.mergedAt||k?.source)&&(k.mergedAt=null,k.checkedAt=null,k.source=null,i(a));return}let m=(f=k,g=[...a.rounds].reverse().find(a=>"APPROVE"===a.verdict),g?.reviewHeadSha?g.reviewHeadSha:f?.source==="github-pr"&&f.mergedAt?f.headSha:null);if(!m)return;let n=(b.resolveMergeIdentity??q.NN)(a.cwd);if(!n&&h().existsSync(a.cwd)){(k?.mergedAt||k?.source)&&(k.mergedAt=null,k.checkedAt=null,k.source=null,i(a));return}if(n){if(n.headSha!==m){(k?.mergedAt||k?.source)&&(k.mergedAt=null,k.checkedAt=null,k.source=null,i(a));return}k&&k.repository===n.repository&&k.headRef===n.headRef&&k.headSha===m||(a.mergeEvidence=k={...n,headSha:m,prNumber:null,mergedAt:null,checkedAt:null,source:null},i(a))}else k?.headSha!==m&&(a.mergeEvidence=k=k?{...k,headSha:m,prNumber:null,mergedAt:null,checkedAt:null,source:null}:null,i(a));if(k?.mergedAt)return void e.add(a.id);let o=k?.checkedAt?Date.parse(k.checkedAt):NaN;if(Number.isFinite(o)&&c-o<3e5)return;let p=null;if(k?.repository&&k.headRef){let e=b.probePullRequest?Promise.resolve(b.probePullRequest(k)):function(a,b=5e3){if(!a.repository||!a.headRef)return Promise.resolve(null);let c=a.prNumber?["pr","view",String(a.prNumber),"--repo",a.repository,"--json","number,mergedAt,headRefOid"]:["pr","list","--repo",a.repository,"--head",a.headRef,"--state","all","--json","number,mergedAt,headRefOid","--limit","1"];return new Promise(e=>{let f=(0,d.spawn)("gh",c,{stdio:["ignore","pipe","ignore"]}),g="",h=!1,i=a=>{h||(h=!0,clearTimeout(j),e(a))},j=setTimeout(()=>{f.kill("SIGKILL"),i(null)},b);f.stdout.setEncoding("utf8"),f.stdout.on("data",a=>{g.length<=1048576&&(g+=a)}),f.on("error",()=>i(null)),f.on("close",b=>{if(0!==b||g.length>1048576)return i(null);try{let b=JSON.parse(g),c=Array.isArray(b)?b[0]:b;if(!c||!Number.isInteger(c.number))return i(null);let d="string"==typeof c.mergedAt&&c.mergedAt?c.mergedAt:null,e="string"==typeof c.headRefOid&&c.headRefOid?c.headRefOid:null;if(d&&(!a.headSha||e!==a.headSha))return i(null);i({number:c.number,mergedAt:d,headRefOid:e})}catch{i(null)}})})}(k,j),f=await P(e,j,null);f?.mergedAt&&f.headRefOid===k.headSha?p={...k,prNumber:f.number,mergedAt:f.mergedAt,headSha:f.headRefOid??k.headSha,checkedAt:new Date(c).toISOString(),source:"github-pr"}:(f&&(k.prNumber=f.number),k.checkedAt=new Date(c).toISOString(),i(a))}!p&&(b.localBranchMerged??function(a,b){if(!0!==O(a))return!1;let c=(0,d.spawnSync)("git",["rev-parse","HEAD"],{cwd:a.cwd,encoding:"utf8",timeout:2e3});if(0!==c.status||c.stdout.trim()!==b)return!1;for(let c of["origin/main","origin/master","main","master"])if(0===(0,d.spawnSync)("git",["merge-base","--is-ancestor",b,c],{cwd:a.cwd,stdio:"ignore",timeout:2e3}).status)return!0;return!1})(a,m)&&(p={repository:k?.repository??null,headRef:k?.headRef??null,headSha:m,prNumber:k?.prNumber??null,mergedAt:new Date(c).toISOString(),checkedAt:new Date(c).toISOString(),source:"git-ancestor"}),p&&(a.mergeEvidence=p,e.add(a.id),i(a))}),!function(a,b,c,d){if(0===b.size||d.loadFlows&&!d.saveFlows)return;let e=d.loadFlows?d.loadFlows():d.saveFlows?a:(0,r.loadFlows)(),f=!1;for(let d of a){if(!b.has(d.id))continue;let a=e.find(a=>a.id===d.id);if(a&&R(a)===c.get(d.id)){var g;a.mergeEvidence=(g=d.mergeEvidence)?{...g}:null,f=!0}}f&&(d.saveFlows??r.saveFlows)(e)}(a,g,f,b),e}function T(a,b){return Object.values(a.receipts).some(a=>"launch"===a.purpose&&a.artifactPath===b&&"worker"===a.launchProfile.role&&"completed"===a.state)}async function U(a,b,c,d,e,f,g){let i=new Set(Object.keys(f)),k=new Set,l=new Map,m=new Map,n=new Map;await (0,p.pV)(d,a=>{m.set(a.path,a)}),await (0,p.pV)(b,a=>{a.primaryPath&&n.set(a.primaryPath,a.engine)}),await (0,p.pV)(d,a=>{if("claude"!==a.engine&&"codex"!==a.engine||"live"===a.activity||n.has(a.path))return;let b=g[a.path];void 0!==b&&b>=a.mtime||n.set(a.path,a.engine)});let o={remaining:0x2000000};return await (0,p.pV)([...n],async([b,d])=>{var f;if(i.has(b)||k.has(b)||e.has(b))return;let g=+!!T(a,b)+function(a,b){let c=0;for(let d of a)d.kickoffDelivery?.path===b&&(c+=1),c+=d.rounds.filter(a=>a.relayDelivery?.path===b).length;return c}(c,b)+function(a,b){for(let c of a)if("headless"===c.reviewerMode){for(let a of c.rounds)if(a.reviewerPath===b&&a.sessionId&&j().basename(b).includes(a.sessionId))return 1}return 0}(c,b)+((f=m.get(b))&&("claude-projects"===f.root&&"subagent"===f.kind||"codex-sessions"===f.root&&"codex"===f.engine&&(0,A.ET)(f.path,f.size))?1:0),n=null;try{n=h().statSync(b).mtimeMs/1e3}catch{k.add(b);return}let p=await (0,B.vK)(b,d,g+1,{resume:!0,maxBytes:4194304,budget:o});p.count>g?i.add(b):p.complete?l.set(b,n):k.add(b)}),{userAuthoredPaths:i,unverifiedPaths:k,verifiedCleanAt:l}}async function V(a){let b=await (0,z.CS)();return await (0,s.VB)(a,b),b}function W(a,b=a=>u.B.processIdentity(a)){return{kind:"tmux",endpoint:(0,C.WH)(),server:{pid:a.tmuxServerPid,startIdentity:b(a.tmuxServerPid)},paneId:a.paneId,panePid:{pid:a.panePid,startIdentity:b(a.panePid)},windowName:a.windowName??"",agent:{pid:a.agentPid,startIdentity:a.agentIdentity},argv:a.agentArgv}}function X(a){let b=(0,o.BQ)("reaper-journal.ndjson");h().mkdirSync(j().dirname(b),{recursive:!0,mode:448});try{h().statSync(b).size>4194304&&h().renameSync(b,`${b}.1`)}catch{}h().appendFileSync(b,JSON.stringify(a)+"\n",{encoding:"utf8",mode:384})}async function Y(a,b,c,d,e,f={}){let g=(f.loadFlows??r.loadFlows)(),i=f.processIdentity??(a=>u.B.processIdentity(a)),j=await S(g,f),k=a.readOnlySnapshot(),l=new Set(b.flatMap(a=>a.primaryPath&&!h().existsSync(a.primaryPath)?[a.primaryPath]:[])),m=await U(k,b,g,c,l,d.userAuthoredPaths,d.scannedAt),o=!1;for(let a of m.userAuthoredPaths)d.userAuthoredPaths[a]||(d.userAuthoredPaths[a]=!0,o=!0);for(let[a,b]of m.verifiedCleanAt)d.scannedAt[a]!==b&&(d.scannedAt[a]=b,o=!0);o&&N(L(),d);let p=new Set([...m.userAuthoredPaths,...b.flatMap(a=>a.primaryPath&&d.userAuthoredPaths[a.primaryPath]?[a.primaryPath]:[])]);return{now:e,registry:k,hosts:b,tmuxEvidenceByHost:new Map(b.map(a=>[M(a),W(a,i)])),reviewerProcesses:function(a,b){let c=b.pidAlive??(a=>u.B.pidAlive(a)),d=b.processIdentity??(a=>u.B.processIdentity(a)),e=[];for(let b of a)if("headless"===b.reviewerMode)for(let a of b.rounds){let f=a.reviewerPid??null,g=a.reviewerIdentity??null;f&&g&&c(f)&&d(f)===g&&e.push({flowId:b.id,round:a.n,pid:f,identity:g,path:a.reviewerPath})}return e}(g,f),viewerOwnedPaths:new Set(b.flatMap(a=>a.primaryPath&&T(k,a.primaryPath)?[a.primaryPath]:[])),authorshipUnverifiedPaths:m.unverifiedPaths,files:c,flows:g,manualPaths:function(a,b,c){let d=new Map(c.map(a=>[a.path,a])),e=new Set,f=new Map;for(let c of b){let b=c.primaryPath;if(!b)continue;let g=d.get(b)?.project||function(a,b){return Object.values(a.entries).find(a=>a.artifactPath===b)?.launchProfile??Object.values(a.conversations).flatMap(a=>a.generations).find(a=>a.path===b)?.launchProfile??null}(a,b)?.project;if(g)try{let a=f.get(g);a||(a=new Set((0,n.C9)(g).explicitManual??[]),f.set(g,a)),a.has(b)&&e.add(b)}catch{e.add(b)}}return e}(k,b,c),userAuthoredPaths:p,missingTranscriptPaths:l,mergedFlowIds:j,firstObservedAt:d.firstObservedAt,enabled:"1"===process.env.LLV_REAPER_ENABLED}}function Z(a,b){try{process.kill(-a,b)}catch{process.kill(a,b)}}async function $(a,b={}){let c={pidAlive:a=>u.B.pidAlive(a),processIdentity:a=>u.B.processIdentity(a),signal:Z,sleep:a=>new Promise(b=>setTimeout(b,a)),maxVerifyAttempts:20,...b},d=()=>!c.pidAlive(a.pid)||c.processIdentity(a.pid)!==a.identity;if(d())return!1;for(let b of["SIGTERM","SIGKILL"]){try{c.signal(a.pid,b)}catch{if(d())return!0;break}for(let a=0;a<c.maxVerifyAttempts;a+=1){if(d())return!0;a+1<c.maxVerifyAttempts&&await c.sleep(25)}}return!1}function _(a,b){return a.kind===b.kind&&a.endpoint===b.endpoint&&a.server.pid===b.server.pid&&a.server.startIdentity===b.server.startIdentity&&a.paneId===b.paneId&&a.panePid.pid===b.panePid.pid&&a.panePid.startIdentity===b.panePid.startIdentity&&a.windowName===b.windowName&&a.agent.pid===b.agent.pid&&a.agent.startIdentity===b.agent.startIdentity&&a.argv.length===b.argv.length&&a.argv.every((a,c)=>a===b.argv[c])}function aa(a,b,c){return"tmux"===b.targetKind&&null!==b.tmuxEvidence&&_(W(a,c),b.tmuxEvidence)&&a.primaryPath===b.path}function ab(a,b){return b?JSON.stringify(Object.values(a.heldDeliveries).filter(a=>a.conversationId===b).sort((a,b)=>a.id.localeCompare(b.id))):""}async function ac(a,b,c,d,e={}){if("process"===d.targetKind){if(!d.flowId||null===d.round||!d.processIdentity)return!1;let f=I(await Y(a,[],b,c,(e.now??Date.now)(),e)).agents.find(a=>"process"===a.targetKind&&a.flowId===d.flowId&&a.round===d.round&&a.agentPid===d.agentPid&&a.processIdentity===d.processIdentity);return!!f?.eligible&&(e.killProcess??$)({pid:d.agentPid,identity:d.processIdentity})}let g=d.paneId,h=d.tmuxEvidence;if(null===g||!h||null===h.server.startIdentity||null===h.panePid.startIdentity||null===h.agent.startIdentity)return!1;let i=e.readHosts??m.oe,j=e.kill??C.B$,k=e.now??Date.now,l=e.processIdentity??(a=>u.B.processIdentity(a)),n=(await i(!0)).hosts.find(a=>aa(a,d,l));if(!n?.primaryPath)return!1;let o=Object.values(a.readOnlySnapshot().entries).find(a=>a.artifactPath===d.path);if(!o)return!1;let p={pid:process.pid,startIdentity:u.B.processIdentity(process.pid)};return a.withOperationLock(o.key,p,async()=>{let b=`reaper:${f().randomUUID()}`;try{a.claim(o.key,b);let f=await i(!0);if(!f.hosts.find(a=>aa(a,d,l)))return!1;let g=await (e.refreshLifecycle??V)(a),m=await Y(a,f.hosts,g,c,k(),e),n=I(m).agents.find(a=>"tmux"===a.targetKind&&a.paneId===d.paneId&&a.panePid===d.panePid&&a.agentPid===d.agentPid&&a.processIdentity===d.processIdentity&&a.path===d.path&&null!==a.tmuxEvidence&&null!==d.tmuxEvidence&&_(a.tmuxEvidence,d.tmuxEvidence));if(!n?.eligible||ab(a.readOnlySnapshot(),n.conversationId)!==ab(m.registry,n.conversationId))return!1;let p=await j(h),q=a.readOnlySnapshot().entries[`${o.key.engine}:${o.key.sessionId}`]?.host;return p&&q&&_(q,h)&&a.markUnhosted(o.key),p}finally{a.releaseClaim(o.key,b)}})}async function ad(a){let b=a.registry??(0,l.agentRegistry)(),c=a.now??Date.now();try{!function(a,b=Date.now(),c={},d=[]){let e=a.readOnlySnapshot(),f=(0,k.AM)({...c,now:()=>b}),g=new Set(d.flatMap(a=>(a.primaryPath?[a.primaryPath,...a.claimedPaths]:a.claimedPaths).map(b=>`${a.engine}:${b}`))),h=new Set;for(let d of(0,k.vZ)(e,{...c,now:()=>b}))"failed"===a.recordDeliveryOutcome(d,"failed","delivery-uncertain abandoned: owning migration settled with no live host or receipt (#652)").state&&h.add(d);for(let c of Object.values(e.migrationIntents)){let d=Object.values(e.conversations).filter(a=>a.migration?.intentId===c.id),i=function(a,b){let c=new Set(Object.values(a.conversations).filter(a=>a.migration?.intentId===b).map(a=>a.id));return Object.values(a.heldDeliveries).filter(a=>c.has(a.conversationId)&&["held","assigned","delivery-uncertain"].includes(a.state)).map(a=>a.id)}(e,c.id),j=new Set;for(let a of d)a.migration?.phase==="rolled-back"&&j.add(a.id);let l=i.filter(b=>{let d=e.heldDeliveries[b];return!(d&&j.has(d.conversationId)&&a.terminalizeRolledBackMigrationDelivery(b,c.id,t.Mi))||(h.add(b),!1)});if("draining"!==c.state){for(let b of j)a.clearRolledBackConversationMigration(b,c.id);continue}let m=new Set(l.map(a=>e.heldDeliveries[a]?.conversationId).filter(a=>!!a)),n=(0,t.AY)(e,c,b);if(!n)for(let b of d){if(b.migration?.phase!=="requested"||!m.has(b.id)||function(a,b,c,d){let e=b.migration;if(!e)return!1;let f=b.generations.find(a=>a.id===e.sourceGenerationId);if(!f)return!1;let g=`${b.engine}:${f.path}`;return!!(d.has(g)||(0,k.eW)(f.host?.tmuxHost?.agent,c)||Object.values(a.entries).some(a=>a.key.engine===b.engine&&a.artifactPath===f.path&&(0,k.dw)(a,c)))||Object.values(a.receipts).some(d=>d.engine===b.engine&&d.conversationId===b.id&&(0,k.LB)(a,d,c))}(e,b,f,g))continue;let c=`delivery cancelled because source conversation ${b.id} has no live owner; send again to authorize a fresh delivery`;for(let d of l)e.heldDeliveries[d]?.conversationId===b.id&&"failed"===a.terminalizeHeldDelivery(d,c).state&&h.add(d);a.rollbackConversationMigration(b.id,b.migration.revision),l=l.filter(a=>e.heldDeliveries[a]?.conversationId!==b.id)}if(!n)continue;let o=`delivery cancelled because its owning account migration made no progress for ${t.fz}ms; send again to authorize a fresh delivery`;a.setMigrationIntentState(c.id,"stopped",c.revision,o);let p=a.readOnlySnapshot();for(let a of l)p.heldDeliveries[a]?.state==="failed"&&h.add(a)}[...h]}(b,c,{},a.hosts)}catch(a){console.error("[reaper] stale undeliverable held-delivery convergence failed",a)}try{b.terminalizeFailedSpawnDeliveries()}catch(a){console.error("[reaper] failed-spawn held-delivery convergence failed",a)}try{(0,x.cf)(b)}catch(a){console.error("[reaper] dead structured-host ownership convergence failed",a)}let d=(a.actuation?.runtimeClient??w.sS)();try{await (a.actuation?.terminalizeStaleSpawns??y.LH)(b,d)}catch(a){console.error("[reaper] stale structured spawn convergence failed",a)}let e=function(a,b){let c=function(){try{let a=JSON.parse(h().readFileSync(L(),"utf8"));if(1===a.version&&a.firstObservedAt&&"object"==typeof a.firstObservedAt)return{version:1,firstObservedAt:a.firstObservedAt,userAuthoredPaths:a.userAuthoredPaths&&"object"==typeof a.userAuthoredPaths?a.userAuthoredPaths:{},scannedAt:a.scannedAt&&"object"==typeof a.scannedAt&&!Array.isArray(a.scannedAt)?a.scannedAt:{}}}catch{}return{version:1,firstObservedAt:{},userAuthoredPaths:{},scannedAt:{}}}(),d={};for(let e of a){let a=M(e);d[a]=c.firstObservedAt[a]??new Date(b).toISOString()}let e={version:1,firstObservedAt:d,userAuthoredPaths:c.userAuthoredPaths,scannedAt:c.scannedAt};return N(L(),e),e}(a.hosts,c),f=I(await Y(b,a.hosts,a.files,e,c,a.actuation)),g=await J(f,{actuate:c=>ac(b,a.files,e,c,a.actuation),journal:X});return(0,v.fZ)(K(),g),g}function ae(){let a=(0,v.dt)(K());return a&&"object"==typeof a&&Array.isArray(a.agents)?a:null}}};
@@ -0,0 +1 @@
1
+ "use strict";exports.id=3509,exports.ids=[3509],exports.modules={23509:(a,b,c)=>{c.r(b),c.d(b,{BOARD_TASKS_PER_PROJECT_LIMIT:()=>o,RECENT_CREATES_CAP:()=>p,TASK_DETAILS_LIMIT:()=>m,TASK_TEXT_LIMIT:()=>l,applyAssignmentPatches:()=>I,assignmentRefFromBody:()=>D,createTask:()=>z,deleteTask:()=>C,mergeAssignments:()=>H,patchTask:()=>A,pinnedAccountId:()=>G,removeAssignment:()=>F});var d=c(77598),e=c.n(d),f=c(39340),g=c(59646),h=c(96428);function i(a,b){return"hidden"!==a.board||b}function j(a,b,c){let d=0;for(let e of a)e.project===b&&i(e,c(e))&&(d+=1);return d}var k=c(20261);let l=6e3,m=2e4,n=["coral","amber","lime","teal","sky","violet","pink","slate"],o=300,p=100;function q(a){return{ok:!1,error:`The board already shows ${o} task bands for this project. Hide a band you no longer need, or keep this task off the board with board: "hidden".`,status:409,code:"TASK_BOARD_FULL",field:a}}function r(a){return"string"!=typeof a?null:a.trim()||null}function s(a){let b=a&&"object"==typeof a&&!Array.isArray(a)?a:null,c=b?"number"==typeof b.x&&Number.isFinite(b.x)?"pos.y":"pos.x":"pos";return{ok:!1,error:`${c} must be ${"pos"===c?"an object with finite x and y":"a finite number"}`,status:400,code:"TASK_INVALID_FIELD",field:c}}function t(a){return!a||"object"!=typeof a||Array.isArray(a)?null:"number"==typeof a.x&&Number.isFinite(a.x)&&"number"==typeof a.y&&Number.isFinite(a.y)?{x:a.x,y:a.y}:null}function u(a){return"shown"===a||"hidden"===a?a:null}function v(a){return"pinned"===a||"unplaced"===a?a:null}function w(a,b){let c=null!=a,d=null!=b;if(!c&&!d)return{ok:!0};if(c!==d)return{ok:!1,error:"dueAt and dueTz must be set together"};if("string"!=typeof a||"string"!=typeof b)return{ok:!1,error:"invalid deadline"};let e=Date.parse(a);return Number.isFinite(e)?!function(a){try{return new Intl.DateTimeFormat(void 0,{timeZone:a}),!0}catch{return!1}}(b)?{ok:!1,error:"invalid dueTz"}:{ok:!0,dueAt:new Date(e).toISOString(),dueTz:b}:{ok:!1,error:"invalid dueAt"}}function x(){return{ok:!1,error:`Task text must be no longer than ${l} characters`,status:400}}function y(a){if(null==a)return{ok:!0};if("string"!=typeof a)return{ok:!1,error:"details must be a string",status:400,code:"TASK_INVALID_FIELD",field:"details"};let b=a.trim();return b?b.length>m?{ok:!1,error:`Task details must be no longer than ${m} characters`,status:400,code:"TASK_INVALID_FIELD",field:"details"}:{ok:!0,details:b}:{ok:!0}}function z(a,b,c=[],d={}){var g,i;let k="string"!=typeof(i=b.project)?null:i.trim()||null;if(!k)return{ok:!1,error:"project is required",status:400};let m=r(b.text);if(!m)return{ok:!1,error:"task text is required",status:400};if(m.length>l)return x();let n=y(b.details);if(!n.ok)return n;let A="string"==typeof b.clientRequestId&&b.clientRequestId.trim()?b.clientRequestId.trim():null;if(A){let b=c.find(a=>a.clientRequestId===A);if(b){let d=a.find(a=>a.id===b.taskId);if(d)return{ok:!0,tasks:a,task:d,recentCreates:c,replay:!0}}}let B=t(b.pos);if(Object.hasOwn(b,"pos")&&!B)return s(b.pos);let C=v(b.placement)??(B?"pinned":null);if(void 0!==b.placement&&null===C)return{ok:!1,error:"invalid placement",status:400};if("pinned"===C&&!B)return{ok:!1,error:"task position is required",status:400,code:"TASK_INVALID_FIELD",field:"pos"};if("unplaced"===C&&B)return{ok:!1,error:"unplaced task must not carry a position",status:400,code:"TASK_INVALID_FIELD",field:"pos"};if(null===C)return{ok:!1,error:"task position is required",status:400,code:"TASK_INVALID_FIELD",field:"pos"};let D=w(b.dueAt,b.dueTz);if(!D.ok)return{ok:!1,error:D.error,status:400};let E=function(a,b){if(null==a)return{ok:!0};if(!Array.isArray(a))return{ok:!1,error:"invalid attachments",status:400};if(0===a.length)return{ok:!0};let c=[];for(let d of a){if(!(0,f.tK)(d))return{ok:!1,error:"invalid attachment ref",status:400};if(!b(d))return{ok:!1,error:"attachment not found in store",status:400};c.push(d)}return{ok:!0,attachments:c}}(b.attachments,d.attachmentExists??(()=>!0));if(!E.ok)return E;let F=void 0===(g=b.source)?void 0:!g||"object"!=typeof g||Array.isArray(g)?null:"string"==typeof g.path&&g.path.trim()&&(null===g.ts||"string"==typeof g.ts)&&"string"==typeof g.text&&g.text.trim()&&"string"==typeof g.fingerprint&&g.fingerprint.trim()&&("claude"===g.engine||"codex"===g.engine)?{path:g.path,ts:g.ts,text:g.text,fingerprint:g.fingerprint,engine:g.engine}:null;if(null===F)return{ok:!1,error:"invalid task source",status:400};let G=Object.hasOwn(b,"board")?u(b.board):void 0;if(null===G)return{ok:!1,error:"invalid board visibility",status:400,code:"TASK_INVALID_FIELD",field:"board"};if("hidden"!==G&&j(a,k,d.hasBoardMembers??(()=>!1))>=o)return q("project");let H=d.now?.()??(0,h.Ec)(),I=d.id?.()??e().randomUUID(),J={id:I,project:k,status:"inbox",text:m,...n.details?{details:n.details}:{},placement:C,..."pinned"===C&&B?{pos:B}:{},...D.dueAt?{dueAt:D.dueAt,dueTz:D.dueTz}:{},...E.attachments?{attachments:E.attachments}:{},...F?{source:F}:{},...G?{board:G}:{},assignments:[],createdAt:H,updatedAt:H};return{ok:!0,tasks:[...a,J],task:J,recentCreates:A?[...c.filter(a=>a.clientRequestId!==A),{clientRequestId:A,taskId:I}].slice(-p):c,replay:!1}}function A(a,b,c,d=(0,h.Ec)(),e={}){var f,k;let m=a.findIndex(a=>a.id===b);if(m<0)return{ok:!1,error:"task not found",status:404};let p=a[m];if(e.requirePlacementGuards&&(Object.hasOwn(c,"pos")||Object.hasOwn(c,"placement"))||Object.hasOwn(c,"hide")||Object.hasOwn(c,"expectedProject")||Object.hasOwn(c,"expectedRevision")){for(let a of["expectedProject","expectedRevision"])if("string"!=typeof c[a]||!c[a].trim())return{ok:!1,status:400,code:"TASK_INVALID_FIELD",field:a,error:`${a} must be a non-empty string copied from the current task`};if(c.expectedProject!==p.project)return{ok:!1,status:409,code:"TASK_PROJECT_MISMATCH",field:"expectedProject",error:"expectedProject does not match the current task project; read the task and reconsider the request"};if(c.expectedRevision!==(0,g.d4)(p))return{ok:!1,status:409,code:"TASK_REVISION_MISMATCH",field:"expectedRevision",error:"expectedRevision is stale; read the task and reconsider the request"}}let z={};if(Object.hasOwn(c,"text")){let b=r(c.text);if(!b)return{ok:!1,error:"task text is required",status:400};if(b.length>l)return x();z.text=b,a[m].origin?.refinement==="pending"&&b!==a[m].text&&(z.origin={...a[m].origin,refinement:"titled"})}if(Object.hasOwn(c,"details")){let a=y(c.details);if(!a.ok)return a;z.details=a.details}if(Object.hasOwn(c,"status")){let a="inbox"===(f=c.status)||"assigned"===f||"blocked"===f||"done"===f?f:null;if(!a)return{ok:!1,error:"invalid task status",status:400};z.status=a}if(Object.hasOwn(c,"pos")){let a=t(c.pos);if(!a)return s(c.pos);z.pos=a,z.placement="pinned"}if(Object.hasOwn(c,"board")){let b=u(c.board);if(!b)return{ok:!1,error:"invalid board visibility",status:400,code:"TASK_INVALID_FIELD",field:"board"};let d=e.hasBoardMembers??(()=>!1);if("shown"===b&&!i(p,d(p))&&j(a,p.project,d)>=o)return q("board");z.board=b}if(Object.hasOwn(c,"color")){let a="none"===(k=c.color)||"string"==typeof k&&n.includes(k)?k:null;if(!a)return{ok:!1,error:`color must be one of none, ${n.join(", ")}`,status:400,code:"TASK_INVALID_FIELD",field:"color"};z.color="none"===a?void 0:a}if(Object.hasOwn(c,"hide")){if(!0!==c.hide&&!1!==c.hide)return{ok:!1,error:"hide must be true or false",status:400,code:"TASK_INVALID_FIELD",field:"hide"};if(c.hide){let a=e.seatHolding?e.seatHolding(p):"unknown";if("holds"===a)return{ok:!1,status:409,code:"TASK_HIDE_PROTECTED",field:"hide",error:"this task holds the project's orchestrator seat conversation, which stays on the board; it cannot be hidden"};if("unknown"===a)return{ok:!1,status:503,code:"TASK_HIDE_UNVERIFIED",field:"hide",error:"the orchestrator seat record could not be read, so the hide was not applied; try again"};z.groupHidden={at:d,by:e.actor??"operator",admitted:function(a){let b=new Set;for(let c of a)if("failed"!==c.state){for(let a of[c.clientAttemptId,c.launchId,c.conversationId,c.path].filter(a=>"string"==typeof a&&a.length>0))b.add(a)}return[...b].sort()}(p.assignments)}}else z.groupHidden=void 0}if(Object.hasOwn(c,"placement")){let a=v(c.placement);if(!a)return{ok:!1,error:"invalid placement",status:400};if("pinned"===a&&!z.pos&&!p.pos)return{ok:!1,error:"task position is required",status:400,code:"TASK_INVALID_FIELD",field:"pos"};z.placement=a}if(Object.hasOwn(c,"dueAt")||Object.hasOwn(c,"dueTz"))if(null===c.dueAt&&void 0===c.dueTz)z.dueAt=void 0,z.dueTz=void 0;else{let a=w(c.dueAt,c.dueTz);if(!a.ok)return{ok:!1,error:a.error,status:400};z.dueAt=a.dueAt,z.dueTz=a.dueTz}let B=Object.keys(c).every(a=>"color"===a||"hide"===a||"expectedProject"===a||"expectedRevision"===a)&&(Object.hasOwn(c,"color")||Object.hasOwn(c,"hide")),C={...p,...z,updatedAt:B?p.updatedAt:d};Object.hasOwn(z,"dueAt")&&void 0===z.dueAt&&(delete C.dueAt,delete C.dueTz),"unplaced"===C.placement&&delete C.pos,Object.hasOwn(z,"details")&&void 0===z.details&&delete C.details,Object.hasOwn(z,"color")&&void 0===z.color&&delete C.color,Object.hasOwn(z,"groupHidden")&&void 0===z.groupHidden&&delete C.groupHidden;let D=a.slice();return D[m]=C,{ok:!0,tasks:D,task:C}}function B(a,b,c,d,e){let f=a,g=[];for(let a of c){if("failed"===a.state)continue;let c=(0,k.On)(a),h=(0,k.Z1)(a);if(!c||!h||(0,k.v1)(f,c))continue;let i=(0,k.IE)(f,{project:b,origin:h,identity:c},e);if(!i.ok)return i;if(d&&i.taskIds.includes(d))return{ok:!1,error:"this task is the conversation's own membership; link the conversation to another task first or delete the task",status:409};f=i.tasks,g.push(...i.created)}return{ok:!0,tasks:f,replacements:g}}function C(a,b,c={}){let d=a.find(a=>a.id===b);return d?B(a.filter(a=>a.id!==b),d.project,d.assignments,null,c):{ok:!1,error:"task not found",status:404}}function D(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b={};return"string"==typeof a.launchId&&a.launchId.trim()&&(b.launchId=a.launchId.trim()),"string"==typeof a.path&&a.path.trim()&&(b.path=a.path.trim()),"string"==typeof a.conversationId&&a.conversationId.trim()&&(b.conversationId=a.conversationId.trim()),"number"==typeof a.panePid&&Number.isInteger(a.panePid)&&a.panePid>0&&(b.panePid=a.panePid),null!=b.launchId||null!=b.conversationId||null!=b.path||null!=b.panePid?b:null}function E(a,b){return null!=b.launchId?a.launchId===b.launchId:null!=b.conversationId?a.conversationId===b.conversationId:null!=b.path?a.path===b.path:null!=b.panePid&&a.panePid===b.panePid}function F(a,b,c,d=(0,h.Ec)(),e={}){let f=a.findIndex(a=>a.id===b);if(f<0)return{ok:!1,error:"task not found",status:404};let g="string"==typeof c?{path:c}:c,i=a[f],j=i.assignments.filter(a=>!E(a,g));if(j.length===i.assignments.length)return{ok:!0,tasks:a,task:i};let k=i.assignments.filter(a=>E(a,g)),l={...i,assignments:j,updatedAt:d},m=a.slice();m[f]=l;let n=B(m,i.project,k,b,{now:()=>d,...e});return n.ok?{ok:!0,tasks:n.tasks,task:l}:n}function G(a,b){return a.find(a=>a.engine===b&&"string"==typeof a.accountId)?.accountId??null}function H(a,b){let c=a.slice();for(let a of b){let b=c.findIndex(b=>a.launchId&&b.launchId?b.launchId===a.launchId:null!==a.path&&b.path===a.path||null===a.path&&null!==a.panePid&&null===b.path&&b.panePid===a.panePid),d=b>=0?c[b]:void 0,e=void 0!==a.launchId?a.launchId:d?.launchId,f=void 0!==a.clientAttemptId?a.clientAttemptId:d?.clientAttemptId,g=void 0!==a.conversationId?a.conversationId:d?.conversationId,h={...void 0!==e?{launchId:e}:{},...void 0!==f?{clientAttemptId:f}:{},path:a.path,...void 0!==g?{conversationId:g}:{},panePid:a.panePid,state:a.state,error:a.error,at:a.at,...void 0!==a.accountId?{accountId:a.accountId}:{},...void 0!==a.engine?{engine:a.engine}:{}};c=b>=0?[...c.slice(0,b),h,...c.slice(b+1)]:[...c,h]}return c}function I(a,b,c,d=(0,h.Ec)()){let e=a.findIndex(a=>a.id===b);if(e<0)return{ok:!1,error:"task not found",status:404};let f=a[e],g=H(f.assignments,c),i=g.some(a=>"delivered"===a.state||"spawning"===a.state||"handoff"===a.state||"linked"===a.state),j=f.status;("inbox"===j||"assigned"===j)&&(j=i?"assigned":"inbox");let k={...f,status:j,assignments:g,updatedAt:d},l=a.slice();return l[e]=k,{ok:!0,tasks:l,task:k}}}};
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=3570,exports.ids=[3570,6277],exports.modules={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}},37868:(a,b,c)=>{c.r(b),c.d(b,{AccountMigrationController:()=>a1,accountControllerScan:()=>a$,createMigrationDeliveryPort:()=>aL,reconcileAccountMigrationCycle:()=>aW,startAccountMigrationController:()=>a3,syncCompatibilityRouting:()=>aX});var d=c(68465),e=c(82940),f=c(2952),g=c(63685),h=c(70160),i=c(44874),j=c(43237),k=c(31421),l=c(73024),m=c.n(l),n=c(76760),o=c.n(n),p=c(98817),q=c(59397),r=c(66324),s=c(58444),t=c(87323),u=c(89508),v=c(77598),w=c.n(v),x=c(65972),y=c(23317),z=c(27146),A=c(5082),B=c(29110),C=c(82093),D=c(55686),E=c(93994),F=c(62490),G=c(75211),H=c(227),I=c(34570),J=c(53740);let K={"flow-worker":1800,"headless-reviewer":300,probe:3600,"duplicate-resume":0,"dead-transcript":1800};function L(a,b){return Object.values(a.conversations).find(a=>a.generations.some(a=>a.path===b)||a.continuityPaths.includes(b))??null}function M(a){let b=Number(a.slice(1));return Number.isInteger(b)?b:-1}function N(a){return`${a.paneId}:${a.agentPid}:${a.agentIdentity??"unknown"}`}function O(a,b){if(!b)return null;let c=Date.parse(b);return Number.isFinite(c)?Math.max(0,Math.floor((a-c)/1e3)):null}function P(a){let b=new Map(a.files.map(a=>[a.path,a])),c=function(a){let b=new Map;for(let c of a){if(!c.primaryPath)continue;let a=`${c.engine}:${c.primaryPath}`;b.set(a,[...b.get(a)??[],c])}return b}(a.hosts),d=[...a.hosts.map(d=>{var e,f,g,h;let i,j=d.primaryPath,k=j?b.get(j):void 0,l=j?L(a.registry,j):null,m=j?function(a,b){let c=Object.values(a.entries).find(a=>a.artifactPath===b)?.launchProfile;if(c)return c;let d=L(a,b);return d?.generations.find(a=>a.path===b)?.launchProfile??d?.generations.at(-1)?.launchProfile??null}(a.registry,j):null,n=j?function(a,b){let c=[];for(let[d,e]of a.entries()){e.implementerPath===b&&c.push({flow:e,round:null,role:"implementer",order:d});let a=e.rounds.find(a=>a.reviewerPath===b);a&&c.push({flow:e,round:a,role:"reviewer",order:d})}let d=a=>!["approved","done_comment","closed"].includes(a.state),e=a=>Date.parse(a.createdAt)||0,f=c.sort((a,b)=>Number(d(b.flow))-Number(d(a.flow))||e(b.flow)-e(a.flow)||b.order-a.order)[0];return f?{flow:f.flow,round:f.round,role:f.role}:null}(a.flows,j):null,o=j?c.get(`${d.engine}:${j}`)??[]:[],p=o.length>1?[...o].sort((a,b)=>M(b.paneId)-M(a.paneId))[0]:null,q=null,r=null,s=[];if(o.length>1)q="duplicate-resume",r=0,p?.paneId===d.paneId&&s.push("newest-duplicate");else if(n)q="flow-worker",r=O(a.now,(e=n.flow).closedAt??e.rounds.at(-1)?.reviewedAt??null),new Set(["approved","closed"]).has(n.flow.state)||s.push("flow-in-progress"),a.mergedFlowIds.has(n.flow.id)||s.push("flow-not-merged");else{let c;j&&a.viewerOwnedPaths.has(j)&&(c=[m?.title,m?.project,m?.goal?.objective,d.windowName,...d.agentArgv].filter(Boolean).join(" "),/\b(?:probe|soak)\b/i.test(c))?(q="probe",r=j?(f=a.now,(g=b.get(j))?Math.max(0,Math.floor(f/1e3-g.mtime)):null):null):j&&a.missingTranscriptPaths.has(j)&&(q="dead-transcript",r=O(a.now,a.firstObservedAt[N(d)]))}j&&a.userAuthoredPaths.has(j)&&s.unshift("user-authored-message"),j&&a.authorshipUnverifiedPaths.has(j)&&s.unshift("authorship-unverified"),(k?.activity==="live"||k?.activity==="stalled"||k?.pendingQuestion||k?.waitingInput||l&&("busy"===l.turn.state||"unknown"===l.turn.state||(h=a.registry,i=l.turn.observedAt?Date.parse(l.turn.observedAt):NaN,Object.values(h.heldDeliveries).some(a=>{if(a.conversationId!==l.id)return!1;if("held"===a.state||"assigned"===a.state||"delivery-uncertain"===a.state)return!0;if("delivered"!==a.state||!a.deliveredAt)return!1;let b=Date.parse(a.deliveredAt);return Number.isFinite(b)&&(!Number.isFinite(i)||b>=i)}))))&&s.unshift("mid-turn"),l?.migration&&!["committed","rolled-back"].includes(l.migration.phase)&&s.unshift("migration-in-progress"),j&&a.manualPaths.has(j)&&s.unshift("manual-board-placement");let t=q?K[q]:null;q?null===r?s.push("observation-pending"):null!==t&&r<t&&s.push("idle-ttl"):s.push("unclassified");let u=null!==q&&0===s.length;return{targetKind:"tmux",paneId:d.paneId,panePid:d.panePid,agentPid:d.agentPid,processIdentity:d.agentIdentity,tmuxEvidence:a.tmuxEvidenceByHost?.get(N(d))??null,flowId:n?.flow.id??null,round:n?.round?.n??null,path:j,conversationId:l?.id??null,class:q,idleSeconds:r,ttlSeconds:t,protectedReasons:s,eligible:u,action:u&&!a.enabled?"dry-run":"retained"}}),...a.reviewerProcesses.map(b=>{let c=a.flows.find(a=>a.id===b.flowId),d=c?.rounds.find(a=>a.n===b.round)??null,e=d?function(a,b){if(!b.error)return O(a,b.reviewedAt);let c=[b.reviewedAt,b.relayedAt,b.relayStartedAt,b.spawnStartedAt,b.startedAt].map(a=>a?Date.parse(a):NaN).filter(Number.isFinite).sort((a,b)=>b-a)[0];return O(a,b.terminalAt??(void 0===c?null:new Date(c).toISOString()))}(a.now,d):null,f=[];c&&d&&"headless"===c.reviewerMode?d.verdict||d.error||f.push("review-verdict-pending"):f.push("unclassified"),null===e?f.push("observation-pending"):e<K["headless-reviewer"]&&f.push("idle-ttl");let g=void 0!==c&&null!==d&&"headless"===c.reviewerMode&&0===f.length;return{targetKind:"process",paneId:null,panePid:null,agentPid:b.pid,processIdentity:b.identity,tmuxEvidence:null,flowId:b.flowId,round:b.round,path:b.path,conversationId:null,class:"headless-reviewer",idleSeconds:e,ttlSeconds:K["headless-reviewer"],protectedReasons:f,eligible:g,action:g&&!a.enabled?"dry-run":"retained"}})];return{generatedAt:new Date(a.now).toISOString(),mode:a.enabled?"active":"dry-run",configFlag:"LLV_REAPER_ENABLED",eligibleCount:d.filter(a=>a.eligible).length,agents:d}}async function Q(a,b){if("dry-run"===a.mode)return a;for(let c of a.agents){if(!c.eligible||null===c.class)continue;let a=!1;try{a=await b.actuate(c)}catch{a=!1}c.action=a?"reaped":"kill-failed",b.journal({at:new Date().toISOString(),targetKind:c.targetKind,paneId:c.paneId,agentPid:c.agentPid,path:c.path,class:c.class,reason:"idle-ttl-exceeded",outcome:a?"reaped":"kill-failed"})}return a}let R=()=>(0,z.BQ)("reaper-state.json");function S(a){return`${a.paneId}:${a.agentPid}:${a.agentIdentity??"unknown"}`}function T(a,b){m().mkdirSync(o().dirname(a),{recursive:!0,mode:448});let c=`${a}.${process.pid}.${w().randomUUID()}.tmp`;m().writeFileSync(c,JSON.stringify(b,null,2)+"\n",{encoding:"utf8",mode:384}),m().renameSync(c,a)}function U(a){let b=(0,k.spawnSync)("git",["status","--porcelain=v1","--untracked-files=all"],{cwd:a.cwd,encoding:"utf8",timeout:2e3});return 0!==b.status?null:0===b.stdout.trim().length}async function V(a,b,c){return new Promise(d=>{let e=setTimeout(()=>d(c),b);a.then(a=>{clearTimeout(e),d(a)},()=>{clearTimeout(e),d(c)})})}async function W(a,b,c){let d=0,e=async()=>{for(;d<a.length;){let b=d;d+=1,await c(a[b])}};await Promise.all(Array.from({length:Math.min(b,a.length)},e))}function X(a){return JSON.stringify(Object.fromEntries(Object.entries(a).filter(([a])=>"mergeEvidence"!==a)))}async function Y(a,b={}){let c=(b.now??Date.now)(),d=new Set,e=new Map(a.map(a=>[a.id,X(a)])),f=new Set,g=a=>{f.add(a.id)},h=b.mergeProbeTimeoutMs??5e3,i=Math.max(1,b.mergeProbeConcurrency??4);return await W(a,i,async a=>{var e;let f,i=a.mergeEvidence??null,j=(b.checkoutClean??U)(a);if(!1===j||null===j&&m().existsSync(a.cwd)){(i?.mergedAt||i?.source)&&(i.mergedAt=null,i.checkedAt=null,i.source=null,g(a));return}let l=(e=i,f=[...a.rounds].reverse().find(a=>"APPROVE"===a.verdict),f?.reviewHeadSha?f.reviewHeadSha:e?.source==="github-pr"&&e.mergedAt?e.headSha:null);if(!l)return;let n=(b.resolveMergeIdentity??A.NN)(a.cwd);if(!n&&m().existsSync(a.cwd)){(i?.mergedAt||i?.source)&&(i.mergedAt=null,i.checkedAt=null,i.source=null,g(a));return}if(n){if(n.headSha!==l){(i?.mergedAt||i?.source)&&(i.mergedAt=null,i.checkedAt=null,i.source=null,g(a));return}i&&i.repository===n.repository&&i.headRef===n.headRef&&i.headSha===l||(a.mergeEvidence=i={...n,headSha:l,prNumber:null,mergedAt:null,checkedAt:null,source:null},g(a))}else i?.headSha!==l&&(a.mergeEvidence=i=i?{...i,headSha:l,prNumber:null,mergedAt:null,checkedAt:null,source:null}:null,g(a));if(i?.mergedAt)return void d.add(a.id);let o=i?.checkedAt?Date.parse(i.checkedAt):NaN;if(Number.isFinite(o)&&c-o<3e5)return;let p=null;if(i?.repository&&i.headRef){let d=b.probePullRequest?Promise.resolve(b.probePullRequest(i)):function(a,b=5e3){if(!a.repository||!a.headRef)return Promise.resolve(null);let c=a.prNumber?["pr","view",String(a.prNumber),"--repo",a.repository,"--json","number,mergedAt,headRefOid"]:["pr","list","--repo",a.repository,"--head",a.headRef,"--state","all","--json","number,mergedAt,headRefOid","--limit","1"];return new Promise(d=>{let e=(0,k.spawn)("gh",c,{stdio:["ignore","pipe","ignore"]}),f="",g=!1,h=a=>{g||(g=!0,clearTimeout(i),d(a))},i=setTimeout(()=>{e.kill("SIGKILL"),h(null)},b);e.stdout.setEncoding("utf8"),e.stdout.on("data",a=>{f.length<=1048576&&(f+=a)}),e.on("error",()=>h(null)),e.on("close",b=>{if(0!==b||f.length>1048576)return h(null);try{let b=JSON.parse(f),c=Array.isArray(b)?b[0]:b;if(!c||!Number.isInteger(c.number))return h(null);let d="string"==typeof c.mergedAt&&c.mergedAt?c.mergedAt:null,e="string"==typeof c.headRefOid&&c.headRefOid?c.headRefOid:null;if(d&&(!a.headSha||e!==a.headSha))return h(null);h({number:c.number,mergedAt:d,headRefOid:e})}catch{h(null)}})})}(i,h),e=await V(d,h,null);e?.mergedAt&&e.headRefOid===i.headSha?p={...i,prNumber:e.number,mergedAt:e.mergedAt,headSha:e.headRefOid??i.headSha,checkedAt:new Date(c).toISOString(),source:"github-pr"}:(e&&(i.prNumber=e.number),i.checkedAt=new Date(c).toISOString(),g(a))}!p&&(b.localBranchMerged??function(a,b){if(!0!==U(a))return!1;let c=(0,k.spawnSync)("git",["rev-parse","HEAD"],{cwd:a.cwd,encoding:"utf8",timeout:2e3});if(0!==c.status||c.stdout.trim()!==b)return!1;for(let c of["origin/main","origin/master","main","master"])if(0===(0,k.spawnSync)("git",["merge-base","--is-ancestor",b,c],{cwd:a.cwd,stdio:"ignore",timeout:2e3}).status)return!0;return!1})(a,l)&&(p={repository:i?.repository??null,headRef:i?.headRef??null,headSha:l,prNumber:i?.prNumber??null,mergedAt:new Date(c).toISOString(),checkedAt:new Date(c).toISOString(),source:"git-ancestor"}),p&&(a.mergeEvidence=p,d.add(a.id),g(a))}),!function(a,b,c,d){if(0===b.size||d.loadFlows&&!d.saveFlows)return;let e=d.loadFlows?d.loadFlows():d.saveFlows?a:(0,p.loadFlows)(),f=!1;for(let d of a){if(!b.has(d.id))continue;let a=e.find(a=>a.id===d.id);if(a&&X(a)===c.get(d.id)){var g;a.mergeEvidence=(g=d.mergeEvidence)?{...g}:null,f=!0}}f&&(d.saveFlows??p.saveFlows)(e)}(a,f,e,b),d}function Z(a,b){return Object.values(a.receipts).some(a=>"launch"===a.purpose&&a.artifactPath===b&&"worker"===a.launchProfile.role&&"completed"===a.state)}async function $(a,b,c,d,e,f,g){let h=new Set(Object.keys(f)),i=new Set,k=new Map,l=new Map,n=new Map;await (0,j.pV)(d,a=>{l.set(a.path,a)}),await (0,j.pV)(b,a=>{a.primaryPath&&n.set(a.primaryPath,a.engine)}),await (0,j.pV)(d,a=>{if("claude"!==a.engine&&"codex"!==a.engine||"live"===a.activity||n.has(a.path))return;let b=g[a.path];void 0!==b&&b>=a.mtime||n.set(a.path,a.engine)});let p={remaining:0x2000000};return await (0,j.pV)([...n],async([b,d])=>{var f;if(h.has(b)||i.has(b)||e.has(b))return;let g=+!!Z(a,b)+function(a,b){let c=0;for(let d of a)d.kickoffDelivery?.path===b&&(c+=1),c+=d.rounds.filter(a=>a.relayDelivery?.path===b).length;return c}(c,b)+function(a,b){for(let c of a)if("headless"===c.reviewerMode){for(let a of c.rounds)if(a.reviewerPath===b&&a.sessionId&&o().basename(b).includes(a.sessionId))return 1}return 0}(c,b)+((f=l.get(b))&&("claude-projects"===f.root&&"subagent"===f.kind||"codex-sessions"===f.root&&"codex"===f.engine&&(0,H.ET)(f.path,f.size))?1:0),j=null;try{j=m().statSync(b).mtimeMs/1e3}catch{i.add(b);return}let n=await (0,I.vK)(b,d,g+1,{resume:!0,maxBytes:4194304,budget:p});n.count>g?h.add(b):n.complete?k.set(b,j):i.add(b)}),{userAuthoredPaths:h,unverifiedPaths:i,verifiedCleanAt:k}}async function _(a){let b=await (0,r.CS)();return await (0,B.VB)(a,b),b}function aa(a,b=a=>D.B.processIdentity(a)){return{kind:"tmux",endpoint:(0,J.WH)(),server:{pid:a.tmuxServerPid,startIdentity:b(a.tmuxServerPid)},paneId:a.paneId,panePid:{pid:a.panePid,startIdentity:b(a.panePid)},windowName:a.windowName??"",agent:{pid:a.agentPid,startIdentity:a.agentIdentity},argv:a.agentArgv}}function ab(a){let b=(0,z.BQ)("reaper-journal.ndjson");m().mkdirSync(o().dirname(b),{recursive:!0,mode:448});try{m().statSync(b).size>4194304&&m().renameSync(b,`${b}.1`)}catch{}m().appendFileSync(b,JSON.stringify(a)+"\n",{encoding:"utf8",mode:384})}async function ac(a,b,c,d,e,f={}){let g=(f.loadFlows??p.loadFlows)(),h=f.processIdentity??(a=>D.B.processIdentity(a)),i=await Y(g,f),j=a.readOnlySnapshot(),k=new Set(b.flatMap(a=>a.primaryPath&&!m().existsSync(a.primaryPath)?[a.primaryPath]:[])),l=await $(j,b,g,c,k,d.userAuthoredPaths,d.scannedAt),n=!1;for(let a of l.userAuthoredPaths)d.userAuthoredPaths[a]||(d.userAuthoredPaths[a]=!0,n=!0);for(let[a,b]of l.verifiedCleanAt)d.scannedAt[a]!==b&&(d.scannedAt[a]=b,n=!0);n&&T(R(),d);let o=new Set([...l.userAuthoredPaths,...b.flatMap(a=>a.primaryPath&&d.userAuthoredPaths[a.primaryPath]?[a.primaryPath]:[])]);return{now:e,registry:j,hosts:b,tmuxEvidenceByHost:new Map(b.map(a=>[S(a),aa(a,h)])),reviewerProcesses:function(a,b){let c=b.pidAlive??(a=>D.B.pidAlive(a)),d=b.processIdentity??(a=>D.B.processIdentity(a)),e=[];for(let b of a)if("headless"===b.reviewerMode)for(let a of b.rounds){let f=a.reviewerPid??null,g=a.reviewerIdentity??null;f&&g&&c(f)&&d(f)===g&&e.push({flowId:b.id,round:a.n,pid:f,identity:g,path:a.reviewerPath})}return e}(g,f),viewerOwnedPaths:new Set(b.flatMap(a=>a.primaryPath&&Z(j,a.primaryPath)?[a.primaryPath]:[])),authorshipUnverifiedPaths:l.unverifiedPaths,files:c,flows:g,manualPaths:function(a,b,c){let d=new Map(c.map(a=>[a.path,a])),e=new Set,f=new Map;for(let c of b){let b=c.primaryPath;if(!b)continue;let g=d.get(b)?.project||function(a,b){return Object.values(a.entries).find(a=>a.artifactPath===b)?.launchProfile??Object.values(a.conversations).flatMap(a=>a.generations).find(a=>a.path===b)?.launchProfile??null}(a,b)?.project;if(g)try{let a=f.get(g);a||(a=new Set((0,y.C9)(g).explicitManual??[]),f.set(g,a)),a.has(b)&&e.add(b)}catch{e.add(b)}}return e}(j,b,c),userAuthoredPaths:o,missingTranscriptPaths:k,mergedFlowIds:i,firstObservedAt:d.firstObservedAt,enabled:"1"===process.env.LLV_REAPER_ENABLED}}function ad(a,b){try{process.kill(-a,b)}catch{process.kill(a,b)}}async function ae(a,b={}){let c={pidAlive:a=>D.B.pidAlive(a),processIdentity:a=>D.B.processIdentity(a),signal:ad,sleep:a=>new Promise(b=>setTimeout(b,a)),maxVerifyAttempts:20,...b},d=()=>!c.pidAlive(a.pid)||c.processIdentity(a.pid)!==a.identity;if(d())return!1;for(let b of["SIGTERM","SIGKILL"]){try{c.signal(a.pid,b)}catch{if(d())return!0;break}for(let a=0;a<c.maxVerifyAttempts;a+=1){if(d())return!0;a+1<c.maxVerifyAttempts&&await c.sleep(25)}}return!1}function af(a,b){return a.kind===b.kind&&a.endpoint===b.endpoint&&a.server.pid===b.server.pid&&a.server.startIdentity===b.server.startIdentity&&a.paneId===b.paneId&&a.panePid.pid===b.panePid.pid&&a.panePid.startIdentity===b.panePid.startIdentity&&a.windowName===b.windowName&&a.agent.pid===b.agent.pid&&a.agent.startIdentity===b.agent.startIdentity&&a.argv.length===b.argv.length&&a.argv.every((a,c)=>a===b.argv[c])}function ag(a,b,c){return"tmux"===b.targetKind&&null!==b.tmuxEvidence&&af(aa(a,c),b.tmuxEvidence)&&a.primaryPath===b.path}function ah(a,b){return b?JSON.stringify(Object.values(a.heldDeliveries).filter(a=>a.conversationId===b).sort((a,b)=>a.id.localeCompare(b.id))):""}async function ai(a,b,c,d,e={}){if("process"===d.targetKind){if(!d.flowId||null===d.round||!d.processIdentity)return!1;let f=P(await ac(a,[],b,c,(e.now??Date.now)(),e)).agents.find(a=>"process"===a.targetKind&&a.flowId===d.flowId&&a.round===d.round&&a.agentPid===d.agentPid&&a.processIdentity===d.processIdentity);return!!f?.eligible&&(e.killProcess??ae)({pid:d.agentPid,identity:d.processIdentity})}let f=d.paneId,g=d.tmuxEvidence;if(null===f||!g||null===g.server.startIdentity||null===g.panePid.startIdentity||null===g.agent.startIdentity)return!1;let h=e.readHosts??i.oe,j=e.kill??J.B$,k=e.now??Date.now,l=e.processIdentity??(a=>D.B.processIdentity(a)),m=(await h(!0)).hosts.find(a=>ag(a,d,l));if(!m?.primaryPath)return!1;let n=Object.values(a.readOnlySnapshot().entries).find(a=>a.artifactPath===d.path);if(!n)return!1;let o={pid:process.pid,startIdentity:D.B.processIdentity(process.pid)};return a.withOperationLock(n.key,o,async()=>{let b=`reaper:${w().randomUUID()}`;try{a.claim(n.key,b);let f=await h(!0);if(!f.hosts.find(a=>ag(a,d,l)))return!1;let i=await (e.refreshLifecycle??_)(a),m=await ac(a,f.hosts,i,c,k(),e),o=P(m).agents.find(a=>"tmux"===a.targetKind&&a.paneId===d.paneId&&a.panePid===d.panePid&&a.agentPid===d.agentPid&&a.processIdentity===d.processIdentity&&a.path===d.path&&null!==a.tmuxEvidence&&null!==d.tmuxEvidence&&af(a.tmuxEvidence,d.tmuxEvidence));if(!o?.eligible||ah(a.readOnlySnapshot(),o.conversationId)!==ah(m.registry,o.conversationId))return!1;let p=await j(g),q=a.readOnlySnapshot().entries[`${n.key.engine}:${n.key.sessionId}`]?.host;return p&&q&&af(q,g)&&a.markUnhosted(n.key),p}finally{a.releaseClaim(n.key,b)}})}async function aj(a){let b=a.registry??(0,h.agentRegistry)(),c=a.now??Date.now();try{!function(a,b=Date.now(),c={},d=[]){let e=a.readOnlySnapshot(),f=(0,x.AM)({...c,now:()=>b}),g=new Set(d.flatMap(a=>(a.primaryPath?[a.primaryPath,...a.claimedPaths]:a.claimedPaths).map(b=>`${a.engine}:${b}`))),h=new Set;for(let d of(0,x.vZ)(e,{...c,now:()=>b}))"failed"===a.recordDeliveryOutcome(d,"failed","delivery-uncertain abandoned: owning migration settled with no live host or receipt (#652)").state&&h.add(d);for(let c of Object.values(e.migrationIntents)){let d=Object.values(e.conversations).filter(a=>a.migration?.intentId===c.id),i=function(a,b){let c=new Set(Object.values(a.conversations).filter(a=>a.migration?.intentId===b).map(a=>a.id));return Object.values(a.heldDeliveries).filter(a=>c.has(a.conversationId)&&["held","assigned","delivery-uncertain"].includes(a.state)).map(a=>a.id)}(e,c.id),j=new Set;for(let a of d)a.migration?.phase==="rolled-back"&&j.add(a.id);let k=i.filter(b=>{let d=e.heldDeliveries[b];return!(d&&j.has(d.conversationId)&&a.terminalizeRolledBackMigrationDelivery(b,c.id,C.Mi))||(h.add(b),!1)});if("draining"!==c.state){for(let b of j)a.clearRolledBackConversationMigration(b,c.id);continue}let l=new Set(k.map(a=>e.heldDeliveries[a]?.conversationId).filter(a=>!!a)),m=(0,C.AY)(e,c,b);if(!m)for(let b of d){if(b.migration?.phase!=="requested"||!l.has(b.id)||function(a,b,c,d){let e=b.migration;if(!e)return!1;let f=b.generations.find(a=>a.id===e.sourceGenerationId);if(!f)return!1;let g=`${b.engine}:${f.path}`;return!!(d.has(g)||(0,x.eW)(f.host?.tmuxHost?.agent,c)||Object.values(a.entries).some(a=>a.key.engine===b.engine&&a.artifactPath===f.path&&(0,x.dw)(a,c)))||Object.values(a.receipts).some(d=>d.engine===b.engine&&d.conversationId===b.id&&(0,x.LB)(a,d,c))}(e,b,f,g))continue;let c=`delivery cancelled because source conversation ${b.id} has no live owner; send again to authorize a fresh delivery`;for(let d of k)e.heldDeliveries[d]?.conversationId===b.id&&"failed"===a.terminalizeHeldDelivery(d,c).state&&h.add(d);a.rollbackConversationMigration(b.id,b.migration.revision),k=k.filter(a=>e.heldDeliveries[a]?.conversationId!==b.id)}if(!m)continue;let n=`delivery cancelled because its owning account migration made no progress for ${C.fz}ms; send again to authorize a fresh delivery`;a.setMigrationIntentState(c.id,"stopped",c.revision,n);let o=a.readOnlySnapshot();for(let a of k)o.heldDeliveries[a]?.state==="failed"&&h.add(a)}[...h]}(b,c,{},a.hosts)}catch(a){console.error("[reaper] stale undeliverable held-delivery convergence failed",a)}try{b.terminalizeFailedSpawnDeliveries()}catch(a){console.error("[reaper] failed-spawn held-delivery convergence failed",a)}try{(0,F.cf)(b)}catch(a){console.error("[reaper] dead structured-host ownership convergence failed",a)}let d=(a.actuation?.runtimeClient??E.sS)();try{await (a.actuation?.terminalizeStaleSpawns??G.LH)(b,d)}catch(a){console.error("[reaper] stale structured spawn convergence failed",a)}let e=function(a,b){let c=function(){try{let a=JSON.parse(m().readFileSync(R(),"utf8"));if(1===a.version&&a.firstObservedAt&&"object"==typeof a.firstObservedAt)return{version:1,firstObservedAt:a.firstObservedAt,userAuthoredPaths:a.userAuthoredPaths&&"object"==typeof a.userAuthoredPaths?a.userAuthoredPaths:{},scannedAt:a.scannedAt&&"object"==typeof a.scannedAt&&!Array.isArray(a.scannedAt)?a.scannedAt:{}}}catch{}return{version:1,firstObservedAt:{},userAuthoredPaths:{},scannedAt:{}}}(),d={};for(let e of a){let a=S(e);d[a]=c.firstObservedAt[a]??new Date(b).toISOString()}let e={version:1,firstObservedAt:d,userAuthoredPaths:c.userAuthoredPaths,scannedAt:c.scannedAt};return T(R(),e),e}(a.hosts,c),f=P(await ac(b,a.hosts,a.files,e,c,a.actuation)),g=await Q(f,{actuate:c=>ai(b,a.files,e,c,a.actuation),journal:ab});return T((0,z.BQ)("reaper-report.json"),g),g}var ak=c(48161),al=c.n(ak),am=c(1198);function an(a,b){if(0!==a.tty)return null;let c=a.argv,d=c.indexOf("--output-last-message");return c.includes("exec")&&c.includes("--json")&&!(d<0)&&c.some(a=>/(^|[/\\])codex(?:-[^/\\]+)?$/i.test(a))?function(a,b){if(!a||!o().isAbsolute(a))return null;let c=o().relative(o().resolve(b),o().resolve(a));if(!c||o().isAbsolute(c)||".."===c||c.startsWith(`..${o().sep}`))return null;let d=c.split(o().sep);if(2!==d.length||!d[0])return null;let e=/^round-(\d+)-last-message\.md$/.exec(d[1]);return e?{flowId:d[0],round:Number(e[1])}:null}(c[d+1],b):null}function ao(a){return a.argv.some(a=>/(^|[/\\])codex(?:-[^/\\]+)?$/i.test(a))&&(a.argv.includes("exec")||a.argv.includes("app-server"))}function ap(a){return a.argv.some(a=>/(^|[/\\])claude(?:-[^/\\]+)?$/i.test(a))}let aq=/(?:^|[-_.])mcp(?:[-_.]|$)/i,ar=/^(?:@[a-z0-9][a-z0-9._-]*\/)?[a-z0-9][a-z0-9._-]*(?:@[^\s/]+)?$/i;function as(a){if(!a||!ar.test(a))return!1;let b=a.startsWith("@")?a.indexOf("@",a.indexOf("/")+1):a.indexOf("@"),c=b>0?a.slice(0,b):a;return aq.test(c.split("/").at(-1)??"")}function at(a,b){for(let c=b;c<a.length;c+=1){let b=a[c];if("--"===b)break;if("--package"===b||"-p"===b)return a[c+1];if(b.startsWith("--package="))return b.slice(10);if(!b.startsWith("-"))return b}}let au=new Set(["--cache-dir","--color","--config-file","--directory","--project","--python"]);function av(a){var b;if(0!==a.tty)return!1;let c=a.argv;if((b=c[0])&&aq.test(o().basename(b)))return!0;let d=o().basename(c[0]??"").toLowerCase();return"npx"===d||"bunx"===d||"uvx"===d?as(at(c,1)):"npm"===d&&("exec"===c[1]||"x"===c[1])||("pnpm"===d||"yarn"===d)&&("dlx"===c[1]||"exec"===c[1])||"bun"===d&&"x"===c[1]?as(at(c,2)):"uv"===d&&function(a){let b=1;for(;b<a.length;){let c=a[b];if("run"===c)return as(at(a,b+1));if("tool"===c&&"run"===a[b+1])return as(at(a,b+2));if(au.has(c)){b+=2;continue}if(c.startsWith("-")){b+=1;continue}break}return!1}(c)}function aw(a,b){let c=new Set;for(let b of a.hosts)c.add(b.panePid),c.add(b.agentPid);for(let b of a.panePids)c.add(b);for(let d of a.flows)if("headless"===d.reviewerMode)for(let a of d.rounds){if(!a.reviewerPid||a.verdict||a.error||a.terminalAt)continue;let d=b.get(a.reviewerPid);d&&(a.reviewerIdentity&&d.identity!==a.reviewerIdentity||c.add(a.reviewerPid))}let d=new Set,e=new Map(a.processes.map(a=>[a.pid,a.ppid]));for(let a of c)for(let b of(0,am.mO)(a,e))d.add(b);return d}function ax(a){let b=new Map(a.processes.map(a=>[a.pid,a])),c=aw(a,b),d=new Set(a.processes.filter(b=>b.ageMs>=a.thresholdMs&&function(a,b){let c=an(a,b.flowArtifactsRoot);if(!c||!a.identity)return!1;let d=b.flows.find(a=>a.id===c.flowId),e=d?.rounds.find(a=>a.n===c.round);return d?.reviewerMode==="headless"&&e?.reviewerPid===a.pid&&e.reviewerIdentity===a.identity}(b,a)&&!c.has(b.pid)).map(a=>a.pid)),e=[];for(let f of a.processes){if(!f.identity||f.ageMs<a.thresholdMs||c.has(f.pid))continue;if(d.has(f.pid)){e.push({pid:f.pid,identity:f.identity,kind:"codex-exec"});continue}if(ao(f)||ap(f)||!av(f))continue;let g=function(a,b){let c=[],d=new Set([a]),e=b.get(a)?.ppid??0;for(;e>0&&!d.has(e);)c.push(e),d.add(e),e=b.get(e)?.ppid??0;return c}(f.pid,b);!(g.some(a=>d.has(a)||av(b.get(a)??{argv:[],tty:0}))||g.some(a=>ao(b.get(a)??{argv:[]}))||g.some(a=>ap(b.get(a)??{argv:[]})))&&(g.some(a=>1!==a&&b.has(a))||e.push({pid:f.pid,identity:f.identity,kind:"orphan-mcp"}))}return e.sort((a,b)=>a.pid-b.pid)}let ay={listProcesses:()=>D.B.listProcesses(),ppidMap:()=>D.B.ppidMap(),processIdentity:a=>D.B.processIdentity(a),processAgeMs:function(a,b){if(!b)return null;let c=b.slice(b.indexOf(":")+1);if("linux"===D.B.name&&/^\d+$/.test(c))return Math.max(0,1e3*al().uptime()-10*Number(c));let d=Date.parse(c);return Number.isFinite(d)?Math.max(0,Date.now()-d):null},loadFlows:p.loadFlows,readHosts:async()=>(await (0,i.oe)(!0)).hosts,readPanePids:async()=>{let a=await (0,J.m7)(!0);return"failure"===a.kind?null:"available"===a.kind?[...a.panes.keys()]:[]},signalProcess:process.kill,setTimeout:(a,b)=>setTimeout(a,b)};function az(a){let b=new Set;for(let c of a)if("headless"===c.reviewerMode)for(let a of c.rounds)!a.reviewerPid||a.verdict||a.error||a.terminalAt||b.add(a.reviewerPid);return b}function aA(a,b){let c=b.loadFlows(),d=az(c),e=b.ppidMap(),f=b.listProcesses().map(a=>({...a,ppid:e.get(a.pid)??0,identity:d.has(a.pid)?b.processIdentity(a.pid):null,ageMs:0})),g=new Map(f.map(a=>[a.pid,a]));return{protectedPids:function(a,b){let c=aw(a,b),d=new Map(a.processes.map(a=>[a.pid,a.ppid]));for(let b of a.processes)if(ao(b)||ap(b))for(let a of(0,am.mO)(b.pid,d))c.add(a);return c}({...a,flows:c,processes:f},g),ppids:e}}function aB(a,b,c=new Set){let d=a.ppidMap();return a.listProcesses().map(e=>{let f=c.has(e.pid)||null!==an(e,b)||av(e),g=f?a.processIdentity(e.pid):null;return{...e,ppid:d.get(e.pid)??0,identity:g,ageMs:f?a.processAgeMs(e.pid,g)??0:0}})}async function aC(a){let b={...ay,...a.dependencies},c=a.thresholdMs??function(a=process.env){let b=Number(a.LLV_HEADLESS_REAPER_THRESHOLD_MS);return Number.isFinite(b)&&b>=6e4?b:72e5}(),d=a.flowArtifactsRoot??(0,z.BQ)("flows"),e=await b.readPanePids();if(null===e)return{candidates:0,signaled:0};let f=a.flows??b.loadFlows(),g=ax({processes:aB(b,d,az(f)),flows:f,hosts:a.hosts,panePids:e,flowArtifactsRoot:d,thresholdMs:c}),h=0;for(let e of g){let[f,g,i]=await Promise.all([b.readHosts(),Promise.resolve(b.loadFlows()),b.readPanePids()]);if(null===i)continue;let j={processes:aB(b,d,az(g)),flows:g,hosts:f,panePids:i,flowArtifactsRoot:d,thresholdMs:c},k=ax(j).find(a=>a.pid===e.pid&&a.identity===e.identity&&a.kind===e.kind);if(k){if("codex-exec"===k.kind){if(!function(a,b,c){if(b.processIdentity(a.pid)!==a.identity)return!1;try{b.signalProcess(-a.pid,"SIGTERM")}catch{if(b.processIdentity(a.pid)!==a.identity)return!1;try{b.signalProcess(a.pid,"SIGTERM")}catch{return!1}}let d=b.setTimeout(()=>{try{b.signalProcess(-a.pid,"SIGKILL")}catch{}},c);return d.unref?.(),!0}(k,b,a.shutdownGraceMs??3e3))continue}else if(!function(a,b,c,d){let e,f=new Map(b.processes.map(a=>[a.pid,a.identity]));try{e=aA(b,c)}catch{return!1}let{ppids:g,protectedPids:h}=e,i=(0,am.mO)(a.pid,g).reverse();if(i.some(a=>h.has(a)))return!1;let j=i.map(a=>{let b=f.get(a)??null,d=c.processIdentity(a);return{pid:a,observedIdentity:b,expectedIdentity:d,eligible:!!(d&&(!b||b===d))}}),k=j.find(b=>b.pid===a.pid);if(k?.observedIdentity!==a.identity||k.expectedIdentity!==a.identity)return!1;for(let a of j)if(a.eligible&&a.expectedIdentity&&c.processIdentity(a.pid)===a.expectedIdentity)try{c.signalProcess(a.pid,"SIGTERM")}catch{}let l=c.setTimeout(()=>{let a;try{a=aA(b,c).protectedPids}catch{return}for(let b of j)if(!a.has(b.pid)&&b.eligible&&b.expectedIdentity&&c.processIdentity(b.pid)===b.expectedIdentity)try{c.signalProcess(b.pid,"SIGKILL")}catch{}},d);return l.unref?.(),!0}(k,j,b,a.shutdownGraceMs??3e3))continue;h+=1}}return{candidates:g.length,signaled:h}}function aD(a){return!("claude-projects"!==a.root||!a.path.endsWith(".jsonl")||a.path.includes(o().sep+"subagents"+o().sep))&&2===a.name.split(o().sep).length}function aE(a,b){return aF(a,new Map(b.map(a=>[a.path,a])))}function aF(a,b){let c=b.get(a);if(!c?.parent||c.handoff)return null;let d=b.get(c.parent);return d&&aD(c)&&aD(d)?d.path:null}var aG=c(10988),aH=c(96796),aI=c(65281),aJ=c(67434),aK=c(66052);function aL(a={}){let b=a.structuredDelivery??aK.deliverHeldStructuredMessage,c=a.legacyDelivery??(async({delivery:a,path:b,clientMessageId:c})=>{if("runtime-images"===a.payloadKind)return"delivery-uncertain";let d=await (0,aJ.Ku)({pid:null,path:b,text:a.text,images:[],clientMessageId:c,reservedDeliveryId:a.id,...a.command.origin?{origin:a.command.origin}:{}});return(0,aJ.$n)(d)}),d=({delivery:a,path:c,clientMessageId:d})=>b({conversationId:a.conversationId,runtimeConversationId:a.runtimeConversationId,path:c,deliveryId:a.id,clientMessageId:d,text:a.text,command:a.command,...a.runtimeImages.length?{imageRefs:a.runtimeImages}:{}});return{deliver:async a=>await d(a)??c(a),reconcileUncertain:async a=>await d(a)??"delivery-uncertain"}}var aM=c(63608),aN=c(37495),aO=c(71307),aP=c(80323),aQ=c(57624);async function aR(a,b,c){let d=await (0,aQ.Ki)({account:a,liveReader:async()=>b.rateLimits,now:()=>c});return{engine:"codex",accountId:a.id,authenticated:b.authenticated,authCheckedAt:c,limits:d.data,provenance:{source:d.source,reason:b.authenticated?d.reason:"unsupported-account-type",staleSince:null},observedAt:c,envelope:b.envelope,resetCredits:function(a){if(!a)return null;let b=(a.credits??[]).filter(a=>"available"===a.status&&null!==a.expiresAt).map(a=>a.expiresAt);return{availableCount:a.availableCount,expiresAt:b.length?Math.min(...b):null}}(b.resetCredits)}}async function aS(a,b,c={}){let d=c.authStatus??aO.kR.status,e=await d(a.home).catch(()=>({loggedIn:!1,indeterminate:!0}));if(e.indeterminate)throw Error("quota-auth-indeterminate");if(!e.loggedIn)return{engine:"claude",accountId:a.id,authenticated:!1,authCheckedAt:b,limits:null,provenance:{source:"unavailable",reason:"live authentication check failed",staleSince:null},observedAt:b};let f=await (0,aQ.WB)(a,{now:()=>b,force:c.force});return{engine:"claude",accountId:a.id,authenticated:!0,authCheckedAt:b,limits:f.data,provenance:{source:f.provenance.source,reason:f.provenance.reason,staleSince:f.provenance.staleSince},observedAt:f.observedAt??b}}let aT={list:a=>"claude"===a?(0,d.Fn)():(0,e.Sq)(),active:a=>"claude"===a?(0,d.No)():(0,e.O)(),async probe(a,b,c,d){if("claude"===a)return await aS(b,c,d);try{let a=await (0,f.VD)().probeQuota(b);return await aR(b,a,c)}catch(e){let d=await (0,aQ.Ki)({account:b,liveReader:async()=>Promise.reject(e)});if(!d.data)throw e;return{engine:a,accountId:b.id,authenticated:!1,authCheckedAt:c,limits:d.data,provenance:{source:d.source,reason:d.reason,staleSince:null},observedAt:c,envelope:null}}}};class aU{constructor(a=(0,h.agentRegistry)(),b=aT,c=w().randomUUID(),d=()=>Date.now(),e=15e3){this.registry=a,this.probe=b,this.bootId=c,this.now=d,this.probeTimeoutMs=e}carryForward(a,b,c,d){let e=this.registry.readOnlySnapshot().quotaObservations[a][b];return e?.limits?{engine:a,accountId:b,authenticated:e.authenticated,authCheckedAt:Date.parse(e.authCheckedAt)||d,limits:e.limits,provenance:{source:"cache",reason:c,staleSince:e.provenance.staleSince??e.observedAt},observedAt:Date.parse(e.observedAt)||d,envelope:null,resetCredits:e.resetCredits??null}:{engine:a,accountId:b,authenticated:!1,authCheckedAt:d,limits:null,provenance:{source:"unavailable",reason:c,staleSince:null},observedAt:d,envelope:null}}async tick(a){await (0,g.Cu)(async()=>this.tickLocked(a))}async tickLocked(a){let b=this.now(),c=this.probe.list(a),d=await Promise.all(c.map(async c=>{try{var d;let e=await Promise.race([this.probe.probe(a,c,b),(d=this.probeTimeoutMs,new Promise((a,b)=>{let c=setTimeout(()=>b(Error("quota-probe-timeout")),d);c.unref?.()}))]);if(e.authenticated&&!e.limits)return this.carryForward(a,c.id,e.provenance.reason??"quota-probe-empty",b);let f=this.registry.readOnlySnapshot().quotaObservations[a][c.id];if(e.authenticated&&f?.limits&&Date.parse(f.observedAt)>e.observedAt)return this.carryForward(a,c.id,e.provenance.reason??"quota-probe-older",b);return e}catch(e){let d=e instanceof Error&&"quota-probe-timeout"===e.message?"quota-probe-timeout":"quota-probe-failed";return this.carryForward(a,c.id,d,b)}}));if(d.forEach((b,d)=>{let e=c[d];(0,aP.pq)({engine:a,accountId:b.accountId,accountKind:e.kind,envelope:b.envelope??null,probePhase:"account-rate-limits",provenance:b.provenance.source,reasonCode:b.provenance.reason})}),"claude"===a)for(let a of d)a.limits&&(0,aQ.Nj)(a.accountId,a.limits,a.observedAt,b);let e=d.map(b=>{var c,d;return c={...b,engine:a},d=this.bootId,{engine:c.engine,accountId:c.accountId,authenticated:c.authenticated,authCheckedAt:new Date(c.authCheckedAt??c.observedAt).toISOString(),limits:c.limits,provenance:c.provenance,observedAt:new Date(c.observedAt).toISOString(),bootId:d,resetCredits:c.resetCredits??null}});this.registry.recordQuotaEvaluation({engine:a,observations:e,signature:null,evidence:null,bootId:this.bootId,now:new Date(b).toISOString(),minimumGapMs:6e4})}}let aV=aL();async function aW(a,b,c=new aN.wh,d=aV){a.compactDeliveryReservations(),await (0,j.Lh)();let e=Promise.all([b.tick("claude"),b.tick("codex")]);try{await (0,B.c0)(c,d,a)}finally{await e}}function aX(a){let b=a.readOnlySnapshot().engineRouting,c=(()=>{try{return!!(b.claude.activeAccountId&&b.claude.activeAccountId!==(0,d.No)())}catch{return!0}})(),f=(()=>{try{return!!(b.codex.activeAccountId&&b.codex.activeAccountId!==(0,e.O)())}catch{return!0}})();(c||f)&&(0,g.oV)(()=>{let b=a.readOnlySnapshot(),c=b.engineRouting.claude.activeAccountId,f=b.engineRouting.codex.activeAccountId;try{c&&c!==(0,d.No)()&&(0,d.ss)(c)}catch{}try{f&&f!==(0,e.O)()&&(0,e.b0)(f)}catch{}})}async function aY(){let a=(0,e.J0)();await Promise.all((0,e.Sq)().map(async b=>{if("managed"===b.kind){b.loginPane&&!a&&(0,e.yG)(b.id,null),(0,f.VD)().peekLogin(b).attemptState&&await (0,f.VD)().loginSnapshot(b);return}if(!b.loginPane)return;let c=await (0,J.RZ)(b.loginPane.paneId);(0,e.hg)(b.authPresent,b.loginPane,c).clear&&!a&&(0,e.yG)(b.id,null)}))}let aZ={files:[],projectCatalog:[],complete:!1};function a$(a=process.env,b=s.TF,c=t.wj){return"1"!==a.LLV_ACCOUNT_CONTROLLER_INVENTORY_WORKER?c():Promise.resolve(b()??aZ)}async function a_(a,b){await aY();let c=await (0,i.oe)(!0,b);try{await aj({registry:a,hosts:c.hosts,files:b})}catch(a){console.error("[agent reaper] lifecycle reconciliation failed",a)}try{let a=await aC({hosts:c.hosts,flows:(0,p.loadFlows)()});a.signaled>0&&console.warn(`[headless process reaper] terminated ${a.signaled} stale process group(s)`)}catch(a){console.error("[headless process reaper] reconciliation failed",a)}}let a0={scan:()=>a$(),reconcileInventory:B.VB,reconcileFlowOwnership:p.reconcileFlowConversationOwnershipCooperatively,reconcileWorkflowOwnership:aH.reconcileWorkflowConversationOwnershipCooperatively,reconcileHandoffOwnership:q.d5,reconcileFiles:r.CR,reconcileRuntime:a_,reconcileTaskStore:function(a,b){let c=(0,h.oP)(a.readOnlySnapshot());(0,aG.z4)(a=>{let d=function(a,b,c={}){let d=!1,e=new Map(a.map(a=>[a.path,a])),f=c.successorForPath?c:{...c,successorForPath:a=>aF(a,e)},g=b.map(b=>{let c=!1,g=b.assignments.map(b=>{let d=function(a,b,c,d){let e=a,f=!1;if(e.conversationId){let a=d.canonicalConversationId?.(e.conversationId)??e.conversationId;a!==e.conversationId&&(e={...e,conversationId:a},f=!0)}if(e.path&&!e.conversationId){let a=d.conversationIdForPath?.(e.path)??c.get(e.path)?.conversationId??null;a&&(e={...e,conversationId:a},f=!0)}let g=d.now?.()??new Date().toISOString();if(e.path){let a=(e.conversationId?d.pathForConversationId?.(e.conversationId)??null:null)??function(a,b,c){let d=c??aE,e=new Set([a]),f=a,g=null;for(;;){let a=d(f,b);if(!a||e.has(a))return g;g=a,f=a,e.add(f)}}(e.path,b,d.successorForPath);if(a&&a!==e.path){let b="handoff"===e.state||"linked"===e.state?e.state:"delivered";return{assignment:{...e,path:a,state:b,error:null,at:g},dirty:!0}}return{assignment:e,dirty:f}}if(null!==e.panePid){let a=d.pathForPanePid?.(e.panePid,b)??null;if(a){let b=d.conversationIdForPath?.(a)??c.get(a)?.conversationId??null;return{assignment:{...e,path:a,...b?{conversationId:b}:{},state:"delivered",error:null,at:g},dirty:!0}}if(!(d.panePidAlive?.(e.panePid)??!0)&&"failed"!==e.state)return{assignment:{...e,state:"failed",error:"agent did not start",at:g},dirty:!0}}return{assignment:e,dirty:f}}(b,a,e,f);return d.dirty&&(c=!0),d.assignment});return c?(d=!0,{...b,assignments:g,updatedAt:f.now?.()??new Date().toISOString()}):b});return{tasks:d?g:b,dirty:d}}(b,a,{pathForPanePid:(a,b)=>(function(a,b,c){if(!Number.isInteger(b)||b<=0)return null;for(let d of a){if(null===d.pid)continue;let a=new Set;for(let e=d.pid;null!==e&&!a.has(e)&&(a.add(e),!(a.size>15));e=c(e))if(e===b)return d.path}return null})(b,a,u.Ib),panePidAlive:u.pl,conversationIdForPath:a=>c.conversationForPath(a)?.id??null,canonicalConversationId:a=>a.startsWith("conversation_")?c.canonicalConversationId(a):null,pathForConversationId:a=>a.startsWith("conversation_")?c.conversation(a)?.generations.at(-1)?.path??null:null});return{tasks:d.dirty?d.tasks:void 0,result:void 0}})},syncRouting:aX,reconcileMigrationCycle:aW};class a1{constructor(a=(0,h.agentRegistry)(),b=new aU(a),c=null,d={}){this.registry=a,this.quota=b,this.cycle=c,this.running=null,this.trailingCycleRequested=!1,this.ports={...a0,...d}}tick(){return this.running?this.trailingCycleRequested=!0:this.running=this.runRequestedCycles().finally(()=>{this.running=null}),this.running}poll(){return this.running?this.running:this.tick()}async runRequestedCycles(){let a=null;do{this.trailingCycleRequested=!1;try{await (this.cycle?.()??this.run())}catch(b){a??=b}}while(this.trailingCycleRequested);if(a)throw a}async run(){let{files:a,complete:b}=await this.ports.scan();if(!b)return;await (0,j.Lh)();let c=await this.ports.reconcileInventory(this.registry,a);await (0,j.Lh)();let d=(0,h.oP)(c);await this.ports.reconcileFlowOwnership(d),await this.ports.reconcileWorkflowOwnership(d),await this.ports.reconcileHandoffOwnership(d),await (0,j.Lh)(),await this.ports.reconcileFiles(a),await (0,j.Lh)(),await this.ports.reconcileRuntime(this.registry,a),await (0,j.Lh)(),await this.ports.reconcileTaskStore(this.registry,a),await (0,j.Lh)(),await this.ports.syncRouting(this.registry),await this.ports.reconcileMigrationCycle(this.registry,this.quota)}}let a2=globalThis;async function a3(){await (0,j.Lh)();let a=(0,h.agentRegistry)(),b=new aU(a);if("1"===process.env.LLV_ACCOUNT_CONTROLLER_INVENTORY_WORKER)return void function(a,b){let c=a2.__llvAccountMigrationController??=new a1(a,b);if(!a2.__llvAccountMigrationTimer){let a=setInterval(()=>void c.poll().catch(a=>{console.error("[account migration controller] durable reconciliation tick failed",a)}),6e4);a.unref?.(),a2.__llvAccountMigrationTimer=a}if(!a2.__llvAccountMigrationBootstrapStarted){a2.__llvAccountMigrationBootstrapStarted=!0;let a=setTimeout(()=>{a2.__llvAccountMigrationInitialTimer=void 0,c.poll().catch(a=>{console.error("[account migration controller] initial inventory reconciliation failed",a)})},1e3);a.unref?.(),a2.__llvAccountMigrationInitialTimer=a}}(a,b);let c=a2.__llvAccountMigrationFastController??=new a1(a,b,()=>aW(a,b));(0,aM.c)(()=>c.tick()),c.tick().catch(a=>{console.error("[account migration controller] initial durable reconciliation failed",a)}),function a(){if(a2.__llvAccountMigrationInventoryWorker)return;let b=function(a=process.cwd()){let b=o().join(a,"src/lib/accountMigrationController.worker.ts"),c=o().join(a,".next/server/account-migration-controller-worker.js");return m().existsSync(b)&&m().existsSync("/usr/local/bin/bun-container")?{executable:"/usr/local/bin/bun-container",workerPath:b}:m().existsSync(c)?{executable:process.versions.bun?process.execPath:process.env.LLV_BUN_EXECUTABLE||"bun",workerPath:c}:{executable:process.execPath,workerPath:b}}(),c=m().existsSync("/usr/bin/nice"),d=(0,k.spawn)(c?"/usr/bin/nice":b.executable,[...c?["-n","10",b.executable]:[],b.workerPath],{cwd:process.cwd(),stdio:["ignore","inherit","inherit"],env:{...(0,aI.Fd)(process.env),LLV_ACCOUNT_CONTROLLER_INVENTORY_WORKER:"1"}});a2.__llvAccountMigrationInventoryWorker=d,d.once("error",a=>{console.error("[account migration controller] inventory worker failed to start",a)}),d.once("exit",(b,c)=>{if(a2.__llvAccountMigrationInventoryWorker===d&&(a2.__llvAccountMigrationInventoryWorker=void 0),a2.__llvAccountMigrationInventoryWorkerRestart)return;console.error("[account migration controller] inventory worker exited",{code:b,signal:c});let e=setTimeout(()=>{a2.__llvAccountMigrationInventoryWorkerRestart=void 0,a()},1e3);e.unref?.(),a2.__llvAccountMigrationInventoryWorkerRestart=e})}()}},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=3570,exports.ids=[3570,6277],exports.modules={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}},37868:(a,b,c)=>{c.r(b),c.d(b,{AccountMigrationController:()=>a2,accountControllerScan:()=>a_,createMigrationDeliveryPort:()=>aM,reconcileAccountMigrationCycle:()=>aX,startAccountMigrationController:()=>a4,syncCompatibilityRouting:()=>aY});var d=c(68465),e=c(82940),f=c(2952),g=c(63685),h=c(70160),i=c(44874),j=c(43237),k=c(31421),l=c(73024),m=c.n(l),n=c(76760),o=c.n(n),p=c(98817),q=c(59397),r=c(66324),s=c(58444),t=c(87323),u=c(89508),v=c(77598),w=c.n(v),x=c(65972),y=c(23317),z=c(27146),A=c(5082),B=c(29110),C=c(82093),D=c(55686),E=c(44405),F=c(93994),G=c(62490),H=c(75211),I=c(227),J=c(34570),K=c(53740);let L={"flow-worker":1800,"headless-reviewer":300,probe:3600,"duplicate-resume":0,"dead-transcript":1800};function M(a,b){return Object.values(a.conversations).find(a=>a.generations.some(a=>a.path===b)||a.continuityPaths.includes(b))??null}function N(a){let b=Number(a.slice(1));return Number.isInteger(b)?b:-1}function O(a){return`${a.paneId}:${a.agentPid}:${a.agentIdentity??"unknown"}`}function P(a,b){if(!b)return null;let c=Date.parse(b);return Number.isFinite(c)?Math.max(0,Math.floor((a-c)/1e3)):null}function Q(a){let b=new Map(a.files.map(a=>[a.path,a])),c=function(a){let b=new Map;for(let c of a){if(!c.primaryPath)continue;let a=`${c.engine}:${c.primaryPath}`;b.set(a,[...b.get(a)??[],c])}return b}(a.hosts),d=[...a.hosts.map(d=>{var e,f,g,h;let i,j=d.primaryPath,k=j?b.get(j):void 0,l=j?M(a.registry,j):null,m=j?function(a,b){let c=Object.values(a.entries).find(a=>a.artifactPath===b)?.launchProfile;if(c)return c;let d=M(a,b);return d?.generations.find(a=>a.path===b)?.launchProfile??d?.generations.at(-1)?.launchProfile??null}(a.registry,j):null,n=j?function(a,b){let c=[];for(let[d,e]of a.entries()){e.implementerPath===b&&c.push({flow:e,round:null,role:"implementer",order:d});let a=e.rounds.find(a=>a.reviewerPath===b);a&&c.push({flow:e,round:a,role:"reviewer",order:d})}let d=a=>!["approved","done_comment","closed"].includes(a.state),e=a=>Date.parse(a.createdAt)||0,f=c.sort((a,b)=>Number(d(b.flow))-Number(d(a.flow))||e(b.flow)-e(a.flow)||b.order-a.order)[0];return f?{flow:f.flow,round:f.round,role:f.role}:null}(a.flows,j):null,o=j?c.get(`${d.engine}:${j}`)??[]:[],p=o.length>1?[...o].sort((a,b)=>N(b.paneId)-N(a.paneId))[0]:null,q=null,r=null,s=[];if(o.length>1)q="duplicate-resume",r=0,p?.paneId===d.paneId&&s.push("newest-duplicate");else if(n)q="flow-worker",r=P(a.now,(e=n.flow).closedAt??e.rounds.at(-1)?.reviewedAt??null),new Set(["approved","closed"]).has(n.flow.state)||s.push("flow-in-progress"),a.mergedFlowIds.has(n.flow.id)||s.push("flow-not-merged");else{let c;j&&a.viewerOwnedPaths.has(j)&&(c=[m?.title,m?.project,m?.goal?.objective,d.windowName,...d.agentArgv].filter(Boolean).join(" "),/\b(?:probe|soak)\b/i.test(c))?(q="probe",r=j?(f=a.now,(g=b.get(j))?Math.max(0,Math.floor(f/1e3-g.mtime)):null):null):j&&a.missingTranscriptPaths.has(j)&&(q="dead-transcript",r=P(a.now,a.firstObservedAt[O(d)]))}j&&a.userAuthoredPaths.has(j)&&s.unshift("user-authored-message"),j&&a.authorshipUnverifiedPaths.has(j)&&s.unshift("authorship-unverified"),(k?.activity==="live"||k?.activity==="stalled"||k?.pendingQuestion||k?.waitingInput||l&&("busy"===l.turn.state||"unknown"===l.turn.state||(h=a.registry,i=l.turn.observedAt?Date.parse(l.turn.observedAt):NaN,Object.values(h.heldDeliveries).some(a=>{if(a.conversationId!==l.id)return!1;if("held"===a.state||"assigned"===a.state||"delivery-uncertain"===a.state)return!0;if("delivered"!==a.state||!a.deliveredAt)return!1;let b=Date.parse(a.deliveredAt);return Number.isFinite(b)&&(!Number.isFinite(i)||b>=i)}))))&&s.unshift("mid-turn"),l?.migration&&!["committed","rolled-back"].includes(l.migration.phase)&&s.unshift("migration-in-progress"),j&&a.manualPaths.has(j)&&s.unshift("manual-board-placement");let t=q?L[q]:null;q?null===r?s.push("observation-pending"):null!==t&&r<t&&s.push("idle-ttl"):s.push("unclassified");let u=null!==q&&0===s.length;return{targetKind:"tmux",paneId:d.paneId,panePid:d.panePid,agentPid:d.agentPid,processIdentity:d.agentIdentity,tmuxEvidence:a.tmuxEvidenceByHost?.get(O(d))??null,flowId:n?.flow.id??null,round:n?.round?.n??null,path:j,conversationId:l?.id??null,class:q,idleSeconds:r,ttlSeconds:t,protectedReasons:s,eligible:u,action:u&&!a.enabled?"dry-run":"retained"}}),...a.reviewerProcesses.map(b=>{let c=a.flows.find(a=>a.id===b.flowId),d=c?.rounds.find(a=>a.n===b.round)??null,e=d?function(a,b){if(!b.error)return P(a,b.reviewedAt);let c=[b.reviewedAt,b.relayedAt,b.relayStartedAt,b.spawnStartedAt,b.startedAt].map(a=>a?Date.parse(a):NaN).filter(Number.isFinite).sort((a,b)=>b-a)[0];return P(a,b.terminalAt??(void 0===c?null:new Date(c).toISOString()))}(a.now,d):null,f=[];c&&d&&"headless"===c.reviewerMode?d.verdict||d.error||f.push("review-verdict-pending"):f.push("unclassified"),null===e?f.push("observation-pending"):e<L["headless-reviewer"]&&f.push("idle-ttl");let g=void 0!==c&&null!==d&&"headless"===c.reviewerMode&&0===f.length;return{targetKind:"process",paneId:null,panePid:null,agentPid:b.pid,processIdentity:b.identity,tmuxEvidence:null,flowId:b.flowId,round:b.round,path:b.path,conversationId:null,class:"headless-reviewer",idleSeconds:e,ttlSeconds:L["headless-reviewer"],protectedReasons:f,eligible:g,action:g&&!a.enabled?"dry-run":"retained"}})];return{generatedAt:new Date(a.now).toISOString(),mode:a.enabled?"active":"dry-run",configFlag:"LLV_REAPER_ENABLED",eligibleCount:d.filter(a=>a.eligible).length,agents:d}}async function R(a,b){if("dry-run"===a.mode)return a;for(let c of a.agents){if(!c.eligible||null===c.class)continue;let a=!1;try{a=await b.actuate(c)}catch{a=!1}c.action=a?"reaped":"kill-failed",b.journal({at:new Date().toISOString(),targetKind:c.targetKind,paneId:c.paneId,agentPid:c.agentPid,path:c.path,class:c.class,reason:"idle-ttl-exceeded",outcome:a?"reaped":"kill-failed"})}return a}let S=()=>(0,z.BQ)("reaper-state.json");function T(a){return`${a.paneId}:${a.agentPid}:${a.agentIdentity??"unknown"}`}function U(a,b){m().mkdirSync(o().dirname(a),{recursive:!0,mode:448});let c=`${a}.${process.pid}.${w().randomUUID()}.tmp`;m().writeFileSync(c,JSON.stringify(b,null,2)+"\n",{encoding:"utf8",mode:384}),m().renameSync(c,a)}function V(a){let b=(0,k.spawnSync)("git",["status","--porcelain=v1","--untracked-files=all"],{cwd:a.cwd,encoding:"utf8",timeout:2e3});return 0!==b.status?null:0===b.stdout.trim().length}async function W(a,b,c){return new Promise(d=>{let e=setTimeout(()=>d(c),b);a.then(a=>{clearTimeout(e),d(a)},()=>{clearTimeout(e),d(c)})})}async function X(a,b,c){let d=0,e=async()=>{for(;d<a.length;){let b=d;d+=1,await c(a[b])}};await Promise.all(Array.from({length:Math.min(b,a.length)},e))}function Y(a){return JSON.stringify(Object.fromEntries(Object.entries(a).filter(([a])=>"mergeEvidence"!==a)))}async function Z(a,b={}){let c=(b.now??Date.now)(),d=new Set,e=new Map(a.map(a=>[a.id,Y(a)])),f=new Set,g=a=>{f.add(a.id)},h=b.mergeProbeTimeoutMs??5e3,i=Math.max(1,b.mergeProbeConcurrency??4);return await X(a,i,async a=>{var e;let f,i=a.mergeEvidence??null,j=(b.checkoutClean??V)(a);if(!1===j||null===j&&m().existsSync(a.cwd)){(i?.mergedAt||i?.source)&&(i.mergedAt=null,i.checkedAt=null,i.source=null,g(a));return}let l=(e=i,f=[...a.rounds].reverse().find(a=>"APPROVE"===a.verdict),f?.reviewHeadSha?f.reviewHeadSha:e?.source==="github-pr"&&e.mergedAt?e.headSha:null);if(!l)return;let n=(b.resolveMergeIdentity??A.NN)(a.cwd);if(!n&&m().existsSync(a.cwd)){(i?.mergedAt||i?.source)&&(i.mergedAt=null,i.checkedAt=null,i.source=null,g(a));return}if(n){if(n.headSha!==l){(i?.mergedAt||i?.source)&&(i.mergedAt=null,i.checkedAt=null,i.source=null,g(a));return}i&&i.repository===n.repository&&i.headRef===n.headRef&&i.headSha===l||(a.mergeEvidence=i={...n,headSha:l,prNumber:null,mergedAt:null,checkedAt:null,source:null},g(a))}else i?.headSha!==l&&(a.mergeEvidence=i=i?{...i,headSha:l,prNumber:null,mergedAt:null,checkedAt:null,source:null}:null,g(a));if(i?.mergedAt)return void d.add(a.id);let o=i?.checkedAt?Date.parse(i.checkedAt):NaN;if(Number.isFinite(o)&&c-o<3e5)return;let p=null;if(i?.repository&&i.headRef){let d=b.probePullRequest?Promise.resolve(b.probePullRequest(i)):function(a,b=5e3){if(!a.repository||!a.headRef)return Promise.resolve(null);let c=a.prNumber?["pr","view",String(a.prNumber),"--repo",a.repository,"--json","number,mergedAt,headRefOid"]:["pr","list","--repo",a.repository,"--head",a.headRef,"--state","all","--json","number,mergedAt,headRefOid","--limit","1"];return new Promise(d=>{let e=(0,k.spawn)("gh",c,{stdio:["ignore","pipe","ignore"]}),f="",g=!1,h=a=>{g||(g=!0,clearTimeout(i),d(a))},i=setTimeout(()=>{e.kill("SIGKILL"),h(null)},b);e.stdout.setEncoding("utf8"),e.stdout.on("data",a=>{f.length<=1048576&&(f+=a)}),e.on("error",()=>h(null)),e.on("close",b=>{if(0!==b||f.length>1048576)return h(null);try{let b=JSON.parse(f),c=Array.isArray(b)?b[0]:b;if(!c||!Number.isInteger(c.number))return h(null);let d="string"==typeof c.mergedAt&&c.mergedAt?c.mergedAt:null,e="string"==typeof c.headRefOid&&c.headRefOid?c.headRefOid:null;if(d&&(!a.headSha||e!==a.headSha))return h(null);h({number:c.number,mergedAt:d,headRefOid:e})}catch{h(null)}})})}(i,h),e=await W(d,h,null);e?.mergedAt&&e.headRefOid===i.headSha?p={...i,prNumber:e.number,mergedAt:e.mergedAt,headSha:e.headRefOid??i.headSha,checkedAt:new Date(c).toISOString(),source:"github-pr"}:(e&&(i.prNumber=e.number),i.checkedAt=new Date(c).toISOString(),g(a))}!p&&(b.localBranchMerged??function(a,b){if(!0!==V(a))return!1;let c=(0,k.spawnSync)("git",["rev-parse","HEAD"],{cwd:a.cwd,encoding:"utf8",timeout:2e3});if(0!==c.status||c.stdout.trim()!==b)return!1;for(let c of["origin/main","origin/master","main","master"])if(0===(0,k.spawnSync)("git",["merge-base","--is-ancestor",b,c],{cwd:a.cwd,stdio:"ignore",timeout:2e3}).status)return!0;return!1})(a,l)&&(p={repository:i?.repository??null,headRef:i?.headRef??null,headSha:l,prNumber:i?.prNumber??null,mergedAt:new Date(c).toISOString(),checkedAt:new Date(c).toISOString(),source:"git-ancestor"}),p&&(a.mergeEvidence=p,d.add(a.id),g(a))}),!function(a,b,c,d){if(0===b.size||d.loadFlows&&!d.saveFlows)return;let e=d.loadFlows?d.loadFlows():d.saveFlows?a:(0,p.loadFlows)(),f=!1;for(let d of a){if(!b.has(d.id))continue;let a=e.find(a=>a.id===d.id);if(a&&Y(a)===c.get(d.id)){var g;a.mergeEvidence=(g=d.mergeEvidence)?{...g}:null,f=!0}}f&&(d.saveFlows??p.saveFlows)(e)}(a,f,e,b),d}function $(a,b){return Object.values(a.receipts).some(a=>"launch"===a.purpose&&a.artifactPath===b&&"worker"===a.launchProfile.role&&"completed"===a.state)}async function _(a,b,c,d,e,f,g){let h=new Set(Object.keys(f)),i=new Set,k=new Map,l=new Map,n=new Map;await (0,j.pV)(d,a=>{l.set(a.path,a)}),await (0,j.pV)(b,a=>{a.primaryPath&&n.set(a.primaryPath,a.engine)}),await (0,j.pV)(d,a=>{if("claude"!==a.engine&&"codex"!==a.engine||"live"===a.activity||n.has(a.path))return;let b=g[a.path];void 0!==b&&b>=a.mtime||n.set(a.path,a.engine)});let p={remaining:0x2000000};return await (0,j.pV)([...n],async([b,d])=>{var f;if(h.has(b)||i.has(b)||e.has(b))return;let g=+!!$(a,b)+function(a,b){let c=0;for(let d of a)d.kickoffDelivery?.path===b&&(c+=1),c+=d.rounds.filter(a=>a.relayDelivery?.path===b).length;return c}(c,b)+function(a,b){for(let c of a)if("headless"===c.reviewerMode){for(let a of c.rounds)if(a.reviewerPath===b&&a.sessionId&&o().basename(b).includes(a.sessionId))return 1}return 0}(c,b)+((f=l.get(b))&&("claude-projects"===f.root&&"subagent"===f.kind||"codex-sessions"===f.root&&"codex"===f.engine&&(0,I.ET)(f.path,f.size))?1:0),j=null;try{j=m().statSync(b).mtimeMs/1e3}catch{i.add(b);return}let n=await (0,J.vK)(b,d,g+1,{resume:!0,maxBytes:4194304,budget:p});n.count>g?h.add(b):n.complete?k.set(b,j):i.add(b)}),{userAuthoredPaths:h,unverifiedPaths:i,verifiedCleanAt:k}}async function aa(a){let b=await (0,r.CS)();return await (0,B.VB)(a,b),b}function ab(a,b=a=>D.B.processIdentity(a)){return{kind:"tmux",endpoint:(0,K.WH)(),server:{pid:a.tmuxServerPid,startIdentity:b(a.tmuxServerPid)},paneId:a.paneId,panePid:{pid:a.panePid,startIdentity:b(a.panePid)},windowName:a.windowName??"",agent:{pid:a.agentPid,startIdentity:a.agentIdentity},argv:a.agentArgv}}function ac(a){let b=(0,z.BQ)("reaper-journal.ndjson");m().mkdirSync(o().dirname(b),{recursive:!0,mode:448});try{m().statSync(b).size>4194304&&m().renameSync(b,`${b}.1`)}catch{}m().appendFileSync(b,JSON.stringify(a)+"\n",{encoding:"utf8",mode:384})}async function ad(a,b,c,d,e,f={}){let g=(f.loadFlows??p.loadFlows)(),h=f.processIdentity??(a=>D.B.processIdentity(a)),i=await Z(g,f),j=a.readOnlySnapshot(),k=new Set(b.flatMap(a=>a.primaryPath&&!m().existsSync(a.primaryPath)?[a.primaryPath]:[])),l=await _(j,b,g,c,k,d.userAuthoredPaths,d.scannedAt),n=!1;for(let a of l.userAuthoredPaths)d.userAuthoredPaths[a]||(d.userAuthoredPaths[a]=!0,n=!0);for(let[a,b]of l.verifiedCleanAt)d.scannedAt[a]!==b&&(d.scannedAt[a]=b,n=!0);n&&U(S(),d);let o=new Set([...l.userAuthoredPaths,...b.flatMap(a=>a.primaryPath&&d.userAuthoredPaths[a.primaryPath]?[a.primaryPath]:[])]);return{now:e,registry:j,hosts:b,tmuxEvidenceByHost:new Map(b.map(a=>[T(a),ab(a,h)])),reviewerProcesses:function(a,b){let c=b.pidAlive??(a=>D.B.pidAlive(a)),d=b.processIdentity??(a=>D.B.processIdentity(a)),e=[];for(let b of a)if("headless"===b.reviewerMode)for(let a of b.rounds){let f=a.reviewerPid??null,g=a.reviewerIdentity??null;f&&g&&c(f)&&d(f)===g&&e.push({flowId:b.id,round:a.n,pid:f,identity:g,path:a.reviewerPath})}return e}(g,f),viewerOwnedPaths:new Set(b.flatMap(a=>a.primaryPath&&$(j,a.primaryPath)?[a.primaryPath]:[])),authorshipUnverifiedPaths:l.unverifiedPaths,files:c,flows:g,manualPaths:function(a,b,c){let d=new Map(c.map(a=>[a.path,a])),e=new Set,f=new Map;for(let c of b){let b=c.primaryPath;if(!b)continue;let g=d.get(b)?.project||function(a,b){return Object.values(a.entries).find(a=>a.artifactPath===b)?.launchProfile??Object.values(a.conversations).flatMap(a=>a.generations).find(a=>a.path===b)?.launchProfile??null}(a,b)?.project;if(g)try{let a=f.get(g);a||(a=new Set((0,y.C9)(g).explicitManual??[]),f.set(g,a)),a.has(b)&&e.add(b)}catch{e.add(b)}}return e}(j,b,c),userAuthoredPaths:o,missingTranscriptPaths:k,mergedFlowIds:i,firstObservedAt:d.firstObservedAt,enabled:"1"===process.env.LLV_REAPER_ENABLED}}function ae(a,b){try{process.kill(-a,b)}catch{process.kill(a,b)}}async function af(a,b={}){let c={pidAlive:a=>D.B.pidAlive(a),processIdentity:a=>D.B.processIdentity(a),signal:ae,sleep:a=>new Promise(b=>setTimeout(b,a)),maxVerifyAttempts:20,...b},d=()=>!c.pidAlive(a.pid)||c.processIdentity(a.pid)!==a.identity;if(d())return!1;for(let b of["SIGTERM","SIGKILL"]){try{c.signal(a.pid,b)}catch{if(d())return!0;break}for(let a=0;a<c.maxVerifyAttempts;a+=1){if(d())return!0;a+1<c.maxVerifyAttempts&&await c.sleep(25)}}return!1}function ag(a,b){return a.kind===b.kind&&a.endpoint===b.endpoint&&a.server.pid===b.server.pid&&a.server.startIdentity===b.server.startIdentity&&a.paneId===b.paneId&&a.panePid.pid===b.panePid.pid&&a.panePid.startIdentity===b.panePid.startIdentity&&a.windowName===b.windowName&&a.agent.pid===b.agent.pid&&a.agent.startIdentity===b.agent.startIdentity&&a.argv.length===b.argv.length&&a.argv.every((a,c)=>a===b.argv[c])}function ah(a,b,c){return"tmux"===b.targetKind&&null!==b.tmuxEvidence&&ag(ab(a,c),b.tmuxEvidence)&&a.primaryPath===b.path}function ai(a,b){return b?JSON.stringify(Object.values(a.heldDeliveries).filter(a=>a.conversationId===b).sort((a,b)=>a.id.localeCompare(b.id))):""}async function aj(a,b,c,d,e={}){if("process"===d.targetKind){if(!d.flowId||null===d.round||!d.processIdentity)return!1;let f=Q(await ad(a,[],b,c,(e.now??Date.now)(),e)).agents.find(a=>"process"===a.targetKind&&a.flowId===d.flowId&&a.round===d.round&&a.agentPid===d.agentPid&&a.processIdentity===d.processIdentity);return!!f?.eligible&&(e.killProcess??af)({pid:d.agentPid,identity:d.processIdentity})}let f=d.paneId,g=d.tmuxEvidence;if(null===f||!g||null===g.server.startIdentity||null===g.panePid.startIdentity||null===g.agent.startIdentity)return!1;let h=e.readHosts??i.oe,j=e.kill??K.B$,k=e.now??Date.now,l=e.processIdentity??(a=>D.B.processIdentity(a)),m=(await h(!0)).hosts.find(a=>ah(a,d,l));if(!m?.primaryPath)return!1;let n=Object.values(a.readOnlySnapshot().entries).find(a=>a.artifactPath===d.path);if(!n)return!1;let o={pid:process.pid,startIdentity:D.B.processIdentity(process.pid)};return a.withOperationLock(n.key,o,async()=>{let b=`reaper:${w().randomUUID()}`;try{a.claim(n.key,b);let f=await h(!0);if(!f.hosts.find(a=>ah(a,d,l)))return!1;let i=await (e.refreshLifecycle??aa)(a),m=await ad(a,f.hosts,i,c,k(),e),o=Q(m).agents.find(a=>"tmux"===a.targetKind&&a.paneId===d.paneId&&a.panePid===d.panePid&&a.agentPid===d.agentPid&&a.processIdentity===d.processIdentity&&a.path===d.path&&null!==a.tmuxEvidence&&null!==d.tmuxEvidence&&ag(a.tmuxEvidence,d.tmuxEvidence));if(!o?.eligible||ai(a.readOnlySnapshot(),o.conversationId)!==ai(m.registry,o.conversationId))return!1;let p=await j(g),q=a.readOnlySnapshot().entries[`${n.key.engine}:${n.key.sessionId}`]?.host;return p&&q&&ag(q,g)&&a.markUnhosted(n.key),p}finally{a.releaseClaim(n.key,b)}})}async function ak(a){let b=a.registry??(0,h.agentRegistry)(),c=a.now??Date.now();try{!function(a,b=Date.now(),c={},d=[]){let e=a.readOnlySnapshot(),f=(0,x.AM)({...c,now:()=>b}),g=new Set(d.flatMap(a=>(a.primaryPath?[a.primaryPath,...a.claimedPaths]:a.claimedPaths).map(b=>`${a.engine}:${b}`))),h=new Set;for(let d of(0,x.vZ)(e,{...c,now:()=>b}))"failed"===a.recordDeliveryOutcome(d,"failed","delivery-uncertain abandoned: owning migration settled with no live host or receipt (#652)").state&&h.add(d);for(let c of Object.values(e.migrationIntents)){let d=Object.values(e.conversations).filter(a=>a.migration?.intentId===c.id),i=function(a,b){let c=new Set(Object.values(a.conversations).filter(a=>a.migration?.intentId===b).map(a=>a.id));return Object.values(a.heldDeliveries).filter(a=>c.has(a.conversationId)&&["held","assigned","delivery-uncertain"].includes(a.state)).map(a=>a.id)}(e,c.id),j=new Set;for(let a of d)a.migration?.phase==="rolled-back"&&j.add(a.id);let k=i.filter(b=>{let d=e.heldDeliveries[b];return!(d&&j.has(d.conversationId)&&a.terminalizeRolledBackMigrationDelivery(b,c.id,C.Mi))||(h.add(b),!1)});if("draining"!==c.state){for(let b of j)a.clearRolledBackConversationMigration(b,c.id);continue}let l=new Set(k.map(a=>e.heldDeliveries[a]?.conversationId).filter(a=>!!a)),m=(0,C.AY)(e,c,b);if(!m)for(let b of d){if(b.migration?.phase!=="requested"||!l.has(b.id)||function(a,b,c,d){let e=b.migration;if(!e)return!1;let f=b.generations.find(a=>a.id===e.sourceGenerationId);if(!f)return!1;let g=`${b.engine}:${f.path}`;return!!(d.has(g)||(0,x.eW)(f.host?.tmuxHost?.agent,c)||Object.values(a.entries).some(a=>a.key.engine===b.engine&&a.artifactPath===f.path&&(0,x.dw)(a,c)))||Object.values(a.receipts).some(d=>d.engine===b.engine&&d.conversationId===b.id&&(0,x.LB)(a,d,c))}(e,b,f,g))continue;let c=`delivery cancelled because source conversation ${b.id} has no live owner; send again to authorize a fresh delivery`;for(let d of k)e.heldDeliveries[d]?.conversationId===b.id&&"failed"===a.terminalizeHeldDelivery(d,c).state&&h.add(d);a.rollbackConversationMigration(b.id,b.migration.revision),k=k.filter(a=>e.heldDeliveries[a]?.conversationId!==b.id)}if(!m)continue;let n=`delivery cancelled because its owning account migration made no progress for ${C.fz}ms; send again to authorize a fresh delivery`;a.setMigrationIntentState(c.id,"stopped",c.revision,n);let o=a.readOnlySnapshot();for(let a of k)o.heldDeliveries[a]?.state==="failed"&&h.add(a)}[...h]}(b,c,{},a.hosts)}catch(a){console.error("[reaper] stale undeliverable held-delivery convergence failed",a)}try{b.terminalizeFailedSpawnDeliveries()}catch(a){console.error("[reaper] failed-spawn held-delivery convergence failed",a)}try{(0,G.cf)(b)}catch(a){console.error("[reaper] dead structured-host ownership convergence failed",a)}let d=(a.actuation?.runtimeClient??F.sS)();try{await (a.actuation?.terminalizeStaleSpawns??H.LH)(b,d)}catch(a){console.error("[reaper] stale structured spawn convergence failed",a)}let e=function(a,b){let c=function(){try{let a=JSON.parse(m().readFileSync(S(),"utf8"));if(1===a.version&&a.firstObservedAt&&"object"==typeof a.firstObservedAt)return{version:1,firstObservedAt:a.firstObservedAt,userAuthoredPaths:a.userAuthoredPaths&&"object"==typeof a.userAuthoredPaths?a.userAuthoredPaths:{},scannedAt:a.scannedAt&&"object"==typeof a.scannedAt&&!Array.isArray(a.scannedAt)?a.scannedAt:{}}}catch{}return{version:1,firstObservedAt:{},userAuthoredPaths:{},scannedAt:{}}}(),d={};for(let e of a){let a=T(e);d[a]=c.firstObservedAt[a]??new Date(b).toISOString()}let e={version:1,firstObservedAt:d,userAuthoredPaths:c.userAuthoredPaths,scannedAt:c.scannedAt};return U(S(),e),e}(a.hosts,c),f=Q(await ad(b,a.hosts,a.files,e,c,a.actuation)),g=await R(f,{actuate:c=>aj(b,a.files,e,c,a.actuation),journal:ac});return(0,E.fZ)((0,z.BQ)("reaper-report.json"),g),g}var al=c(48161),am=c.n(al),an=c(1198);function ao(a,b){if(0!==a.tty)return null;let c=a.argv,d=c.indexOf("--output-last-message");return c.includes("exec")&&c.includes("--json")&&!(d<0)&&c.some(a=>/(^|[/\\])codex(?:-[^/\\]+)?$/i.test(a))?function(a,b){if(!a||!o().isAbsolute(a))return null;let c=o().relative(o().resolve(b),o().resolve(a));if(!c||o().isAbsolute(c)||".."===c||c.startsWith(`..${o().sep}`))return null;let d=c.split(o().sep);if(2!==d.length||!d[0])return null;let e=/^round-(\d+)-last-message\.md$/.exec(d[1]);return e?{flowId:d[0],round:Number(e[1])}:null}(c[d+1],b):null}function ap(a){return a.argv.some(a=>/(^|[/\\])codex(?:-[^/\\]+)?$/i.test(a))&&(a.argv.includes("exec")||a.argv.includes("app-server"))}function aq(a){return a.argv.some(a=>/(^|[/\\])claude(?:-[^/\\]+)?$/i.test(a))}let ar=/(?:^|[-_.])mcp(?:[-_.]|$)/i,as=/^(?:@[a-z0-9][a-z0-9._-]*\/)?[a-z0-9][a-z0-9._-]*(?:@[^\s/]+)?$/i;function at(a){if(!a||!as.test(a))return!1;let b=a.startsWith("@")?a.indexOf("@",a.indexOf("/")+1):a.indexOf("@"),c=b>0?a.slice(0,b):a;return ar.test(c.split("/").at(-1)??"")}function au(a,b){for(let c=b;c<a.length;c+=1){let b=a[c];if("--"===b)break;if("--package"===b||"-p"===b)return a[c+1];if(b.startsWith("--package="))return b.slice(10);if(!b.startsWith("-"))return b}}let av=new Set(["--cache-dir","--color","--config-file","--directory","--project","--python"]);function aw(a){var b;if(0!==a.tty)return!1;let c=a.argv;if((b=c[0])&&ar.test(o().basename(b)))return!0;let d=o().basename(c[0]??"").toLowerCase();return"npx"===d||"bunx"===d||"uvx"===d?at(au(c,1)):"npm"===d&&("exec"===c[1]||"x"===c[1])||("pnpm"===d||"yarn"===d)&&("dlx"===c[1]||"exec"===c[1])||"bun"===d&&"x"===c[1]?at(au(c,2)):"uv"===d&&function(a){let b=1;for(;b<a.length;){let c=a[b];if("run"===c)return at(au(a,b+1));if("tool"===c&&"run"===a[b+1])return at(au(a,b+2));if(av.has(c)){b+=2;continue}if(c.startsWith("-")){b+=1;continue}break}return!1}(c)}function ax(a,b){let c=new Set;for(let b of a.hosts)c.add(b.panePid),c.add(b.agentPid);for(let b of a.panePids)c.add(b);for(let d of a.flows)if("headless"===d.reviewerMode)for(let a of d.rounds){if(!a.reviewerPid||a.verdict||a.error||a.terminalAt)continue;let d=b.get(a.reviewerPid);d&&(a.reviewerIdentity&&d.identity!==a.reviewerIdentity||c.add(a.reviewerPid))}let d=new Set,e=new Map(a.processes.map(a=>[a.pid,a.ppid]));for(let a of c)for(let b of(0,an.mO)(a,e))d.add(b);return d}function ay(a){let b=new Map(a.processes.map(a=>[a.pid,a])),c=ax(a,b),d=new Set(a.processes.filter(b=>b.ageMs>=a.thresholdMs&&function(a,b){let c=ao(a,b.flowArtifactsRoot);if(!c||!a.identity)return!1;let d=b.flows.find(a=>a.id===c.flowId),e=d?.rounds.find(a=>a.n===c.round);return d?.reviewerMode==="headless"&&e?.reviewerPid===a.pid&&e.reviewerIdentity===a.identity}(b,a)&&!c.has(b.pid)).map(a=>a.pid)),e=[];for(let f of a.processes){if(!f.identity||f.ageMs<a.thresholdMs||c.has(f.pid))continue;if(d.has(f.pid)){e.push({pid:f.pid,identity:f.identity,kind:"codex-exec"});continue}if(ap(f)||aq(f)||!aw(f))continue;let g=function(a,b){let c=[],d=new Set([a]),e=b.get(a)?.ppid??0;for(;e>0&&!d.has(e);)c.push(e),d.add(e),e=b.get(e)?.ppid??0;return c}(f.pid,b);!(g.some(a=>d.has(a)||aw(b.get(a)??{argv:[],tty:0}))||g.some(a=>ap(b.get(a)??{argv:[]}))||g.some(a=>aq(b.get(a)??{argv:[]})))&&(g.some(a=>1!==a&&b.has(a))||e.push({pid:f.pid,identity:f.identity,kind:"orphan-mcp"}))}return e.sort((a,b)=>a.pid-b.pid)}let az={listProcesses:()=>D.B.listProcesses(),ppidMap:()=>D.B.ppidMap(),processIdentity:a=>D.B.processIdentity(a),processAgeMs:function(a,b){if(!b)return null;let c=b.slice(b.indexOf(":")+1);if("linux"===D.B.name&&/^\d+$/.test(c))return Math.max(0,1e3*am().uptime()-10*Number(c));let d=Date.parse(c);return Number.isFinite(d)?Math.max(0,Date.now()-d):null},loadFlows:p.loadFlows,readHosts:async()=>(await (0,i.oe)(!0)).hosts,readPanePids:async()=>{let a=await (0,K.m7)(!0);return"failure"===a.kind?null:"available"===a.kind?[...a.panes.keys()]:[]},signalProcess:process.kill,setTimeout:(a,b)=>setTimeout(a,b)};function aA(a){let b=new Set;for(let c of a)if("headless"===c.reviewerMode)for(let a of c.rounds)!a.reviewerPid||a.verdict||a.error||a.terminalAt||b.add(a.reviewerPid);return b}function aB(a,b){let c=b.loadFlows(),d=aA(c),e=b.ppidMap(),f=b.listProcesses().map(a=>({...a,ppid:e.get(a.pid)??0,identity:d.has(a.pid)?b.processIdentity(a.pid):null,ageMs:0})),g=new Map(f.map(a=>[a.pid,a]));return{protectedPids:function(a,b){let c=ax(a,b),d=new Map(a.processes.map(a=>[a.pid,a.ppid]));for(let b of a.processes)if(ap(b)||aq(b))for(let a of(0,an.mO)(b.pid,d))c.add(a);return c}({...a,flows:c,processes:f},g),ppids:e}}function aC(a,b,c=new Set){let d=a.ppidMap();return a.listProcesses().map(e=>{let f=c.has(e.pid)||null!==ao(e,b)||aw(e),g=f?a.processIdentity(e.pid):null;return{...e,ppid:d.get(e.pid)??0,identity:g,ageMs:f?a.processAgeMs(e.pid,g)??0:0}})}async function aD(a){let b={...az,...a.dependencies},c=a.thresholdMs??function(a=process.env){let b=Number(a.LLV_HEADLESS_REAPER_THRESHOLD_MS);return Number.isFinite(b)&&b>=6e4?b:72e5}(),d=a.flowArtifactsRoot??(0,z.BQ)("flows"),e=await b.readPanePids();if(null===e)return{candidates:0,signaled:0};let f=a.flows??b.loadFlows(),g=ay({processes:aC(b,d,aA(f)),flows:f,hosts:a.hosts,panePids:e,flowArtifactsRoot:d,thresholdMs:c}),h=0;for(let e of g){let[f,g,i]=await Promise.all([b.readHosts(),Promise.resolve(b.loadFlows()),b.readPanePids()]);if(null===i)continue;let j={processes:aC(b,d,aA(g)),flows:g,hosts:f,panePids:i,flowArtifactsRoot:d,thresholdMs:c},k=ay(j).find(a=>a.pid===e.pid&&a.identity===e.identity&&a.kind===e.kind);if(k){if("codex-exec"===k.kind){if(!function(a,b,c){if(b.processIdentity(a.pid)!==a.identity)return!1;try{b.signalProcess(-a.pid,"SIGTERM")}catch{if(b.processIdentity(a.pid)!==a.identity)return!1;try{b.signalProcess(a.pid,"SIGTERM")}catch{return!1}}let d=b.setTimeout(()=>{try{b.signalProcess(-a.pid,"SIGKILL")}catch{}},c);return d.unref?.(),!0}(k,b,a.shutdownGraceMs??3e3))continue}else if(!function(a,b,c,d){let e,f=new Map(b.processes.map(a=>[a.pid,a.identity]));try{e=aB(b,c)}catch{return!1}let{ppids:g,protectedPids:h}=e,i=(0,an.mO)(a.pid,g).reverse();if(i.some(a=>h.has(a)))return!1;let j=i.map(a=>{let b=f.get(a)??null,d=c.processIdentity(a);return{pid:a,observedIdentity:b,expectedIdentity:d,eligible:!!(d&&(!b||b===d))}}),k=j.find(b=>b.pid===a.pid);if(k?.observedIdentity!==a.identity||k.expectedIdentity!==a.identity)return!1;for(let a of j)if(a.eligible&&a.expectedIdentity&&c.processIdentity(a.pid)===a.expectedIdentity)try{c.signalProcess(a.pid,"SIGTERM")}catch{}let l=c.setTimeout(()=>{let a;try{a=aB(b,c).protectedPids}catch{return}for(let b of j)if(!a.has(b.pid)&&b.eligible&&b.expectedIdentity&&c.processIdentity(b.pid)===b.expectedIdentity)try{c.signalProcess(b.pid,"SIGKILL")}catch{}},d);return l.unref?.(),!0}(k,j,b,a.shutdownGraceMs??3e3))continue;h+=1}}return{candidates:g.length,signaled:h}}function aE(a){return!("claude-projects"!==a.root||!a.path.endsWith(".jsonl")||a.path.includes(o().sep+"subagents"+o().sep))&&2===a.name.split(o().sep).length}function aF(a,b){return aG(a,new Map(b.map(a=>[a.path,a])))}function aG(a,b){let c=b.get(a);if(!c?.parent||c.handoff)return null;let d=b.get(c.parent);return d&&aE(c)&&aE(d)?d.path:null}var aH=c(13696),aI=c(96796),aJ=c(65281),aK=c(67434),aL=c(66052);function aM(a={}){let b=a.structuredDelivery??aL.deliverHeldStructuredMessage,c=a.legacyDelivery??(async({delivery:a,path:b,clientMessageId:c})=>{if("runtime-images"===a.payloadKind)return"delivery-uncertain";let d=await (0,aK.Ku)({pid:null,path:b,text:a.text,images:[],clientMessageId:c,reservedDeliveryId:a.id,...a.command.origin?{origin:a.command.origin}:{}});return(0,aK.$n)(d)}),d=({delivery:a,path:c,clientMessageId:d})=>b({conversationId:a.conversationId,runtimeConversationId:a.runtimeConversationId,path:c,deliveryId:a.id,clientMessageId:d,text:a.text,command:a.command,...a.runtimeImages.length?{imageRefs:a.runtimeImages}:{}});return{deliver:async a=>await d(a)??c(a),reconcileUncertain:async a=>await d(a)??"delivery-uncertain"}}var aN=c(63608),aO=c(37495),aP=c(71307),aQ=c(80323),aR=c(57624);async function aS(a,b,c){let d=await (0,aR.Ki)({account:a,liveReader:async()=>b.rateLimits,now:()=>c});return{engine:"codex",accountId:a.id,authenticated:b.authenticated,authCheckedAt:c,limits:d.data,provenance:{source:d.source,reason:b.authenticated?d.reason:"unsupported-account-type",staleSince:null},observedAt:c,envelope:b.envelope,resetCredits:function(a){if(!a)return null;let b=(a.credits??[]).filter(a=>"available"===a.status&&null!==a.expiresAt).map(a=>a.expiresAt);return{availableCount:a.availableCount,expiresAt:b.length?Math.min(...b):null}}(b.resetCredits)}}async function aT(a,b,c={}){let d=c.authStatus??aP.kR.status,e=await d(a.home).catch(()=>({loggedIn:!1,indeterminate:!0}));if(e.indeterminate)throw Error("quota-auth-indeterminate");if(!e.loggedIn)return{engine:"claude",accountId:a.id,authenticated:!1,authCheckedAt:b,limits:null,provenance:{source:"unavailable",reason:"live authentication check failed",staleSince:null},observedAt:b};let f=await (0,aR.WB)(a,{now:()=>b,force:c.force});return{engine:"claude",accountId:a.id,authenticated:!0,authCheckedAt:b,limits:f.data,provenance:{source:f.provenance.source,reason:f.provenance.reason,staleSince:f.provenance.staleSince},observedAt:f.observedAt??b}}let aU={list:a=>"claude"===a?(0,d.Fn)():(0,e.Sq)(),active:a=>"claude"===a?(0,d.No)():(0,e.O)(),async probe(a,b,c,d){if("claude"===a)return await aT(b,c,d);try{let a=await (0,f.VD)().probeQuota(b);return await aS(b,a,c)}catch(e){let d=await (0,aR.Ki)({account:b,liveReader:async()=>Promise.reject(e)});if(!d.data)throw e;return{engine:a,accountId:b.id,authenticated:!1,authCheckedAt:c,limits:d.data,provenance:{source:d.source,reason:d.reason,staleSince:null},observedAt:c,envelope:null}}}};class aV{constructor(a=(0,h.agentRegistry)(),b=aU,c=w().randomUUID(),d=()=>Date.now(),e=15e3){this.registry=a,this.probe=b,this.bootId=c,this.now=d,this.probeTimeoutMs=e}carryForward(a,b,c,d){let e=this.registry.readOnlySnapshot().quotaObservations[a][b];return e?.limits?{engine:a,accountId:b,authenticated:e.authenticated,authCheckedAt:Date.parse(e.authCheckedAt)||d,limits:e.limits,provenance:{source:"cache",reason:c,staleSince:e.provenance.staleSince??e.observedAt},observedAt:Date.parse(e.observedAt)||d,envelope:null,resetCredits:e.resetCredits??null}:{engine:a,accountId:b,authenticated:!1,authCheckedAt:d,limits:null,provenance:{source:"unavailable",reason:c,staleSince:null},observedAt:d,envelope:null}}async tick(a){await (0,g.Cu)(async()=>this.tickLocked(a))}async tickLocked(a){let b=this.now(),c=this.probe.list(a),d=await Promise.all(c.map(async c=>{try{var d;let e=await Promise.race([this.probe.probe(a,c,b),(d=this.probeTimeoutMs,new Promise((a,b)=>{let c=setTimeout(()=>b(Error("quota-probe-timeout")),d);c.unref?.()}))]);if(e.authenticated&&!e.limits)return this.carryForward(a,c.id,e.provenance.reason??"quota-probe-empty",b);let f=this.registry.readOnlySnapshot().quotaObservations[a][c.id];if(e.authenticated&&f?.limits&&Date.parse(f.observedAt)>e.observedAt)return this.carryForward(a,c.id,e.provenance.reason??"quota-probe-older",b);return e}catch(e){let d=e instanceof Error&&"quota-probe-timeout"===e.message?"quota-probe-timeout":"quota-probe-failed";return this.carryForward(a,c.id,d,b)}}));if(d.forEach((b,d)=>{let e=c[d];(0,aQ.pq)({engine:a,accountId:b.accountId,accountKind:e.kind,envelope:b.envelope??null,probePhase:"account-rate-limits",provenance:b.provenance.source,reasonCode:b.provenance.reason})}),"claude"===a)for(let a of d)a.limits&&(0,aR.Nj)(a.accountId,a.limits,a.observedAt,b);let e=d.map(b=>{var c,d;return c={...b,engine:a},d=this.bootId,{engine:c.engine,accountId:c.accountId,authenticated:c.authenticated,authCheckedAt:new Date(c.authCheckedAt??c.observedAt).toISOString(),limits:c.limits,provenance:c.provenance,observedAt:new Date(c.observedAt).toISOString(),bootId:d,resetCredits:c.resetCredits??null}});this.registry.recordQuotaEvaluation({engine:a,observations:e,signature:null,evidence:null,bootId:this.bootId,now:new Date(b).toISOString(),minimumGapMs:6e4})}}let aW=aM();async function aX(a,b,c=new aO.wh,d=aW){a.compactDeliveryReservations(),await (0,j.Lh)();let e=Promise.all([b.tick("claude"),b.tick("codex")]);try{await (0,B.c0)(c,d,a)}finally{await e}}function aY(a){let b=a.readOnlySnapshot().engineRouting,c=(()=>{try{return!!(b.claude.activeAccountId&&b.claude.activeAccountId!==(0,d.No)())}catch{return!0}})(),f=(()=>{try{return!!(b.codex.activeAccountId&&b.codex.activeAccountId!==(0,e.O)())}catch{return!0}})();(c||f)&&(0,g.oV)(()=>{let b=a.readOnlySnapshot(),c=b.engineRouting.claude.activeAccountId,f=b.engineRouting.codex.activeAccountId;try{c&&c!==(0,d.No)()&&(0,d.ss)(c)}catch{}try{f&&f!==(0,e.O)()&&(0,e.b0)(f)}catch{}})}async function aZ(){let a=(0,e.J0)();await Promise.all((0,e.Sq)().map(async b=>{if("managed"===b.kind){b.loginPane&&!a&&(0,e.yG)(b.id,null),(0,f.VD)().peekLogin(b).attemptState&&await (0,f.VD)().loginSnapshot(b);return}if(!b.loginPane)return;let c=await (0,K.RZ)(b.loginPane.paneId);(0,e.hg)(b.authPresent,b.loginPane,c).clear&&!a&&(0,e.yG)(b.id,null)}))}let a$={files:[],projectCatalog:[],complete:!1};function a_(a=process.env,b=s.TF,c=t.wj){return"1"!==a.LLV_ACCOUNT_CONTROLLER_INVENTORY_WORKER?c():Promise.resolve(b()??a$)}async function a0(a,b){await aZ();let c=await (0,i.oe)(!0,b);try{await ak({registry:a,hosts:c.hosts,files:b})}catch(a){console.error("[agent reaper] lifecycle reconciliation failed",a)}try{let a=await aD({hosts:c.hosts,flows:(0,p.loadFlows)()});a.signaled>0&&console.warn(`[headless process reaper] terminated ${a.signaled} stale process group(s)`)}catch(a){console.error("[headless process reaper] reconciliation failed",a)}}let a1={scan:()=>a_(),reconcileInventory:B.VB,reconcileFlowOwnership:p.reconcileFlowConversationOwnershipCooperatively,reconcileWorkflowOwnership:aI.reconcileWorkflowConversationOwnershipCooperatively,reconcileHandoffOwnership:q.d5,reconcileFiles:r.CR,reconcileRuntime:a0,reconcileTaskStore:function(a,b){let c=(0,h.oP)(a.readOnlySnapshot());(0,aH.mutateTasks)(a=>{let d=function(a,b,c={}){let d=!1,e=new Map(a.map(a=>[a.path,a])),f=c.successorForPath?c:{...c,successorForPath:a=>aG(a,e)},g=b.map(b=>{let c=!1,g=b.assignments.map(b=>{let d=function(a,b,c,d){let e=a,f=!1;if(e.conversationId){let a=d.canonicalConversationId?.(e.conversationId)??e.conversationId;a!==e.conversationId&&(e={...e,conversationId:a},f=!0)}if(e.path&&!e.conversationId){let a=d.conversationIdForPath?.(e.path)??c.get(e.path)?.conversationId??null;a&&(e={...e,conversationId:a},f=!0)}let g=d.now?.()??new Date().toISOString();if(e.path){let a=(e.conversationId?d.pathForConversationId?.(e.conversationId)??null:null)??function(a,b,c){let d=c??aF,e=new Set([a]),f=a,g=null;for(;;){let a=d(f,b);if(!a||e.has(a))return g;g=a,f=a,e.add(f)}}(e.path,b,d.successorForPath);if(a&&a!==e.path){let b="handoff"===e.state||"linked"===e.state?e.state:"delivered";return{assignment:{...e,path:a,state:b,error:null,at:g},dirty:!0}}return{assignment:e,dirty:f}}if(null!==e.panePid){let a=d.pathForPanePid?.(e.panePid,b)??null;if(a){let b=d.conversationIdForPath?.(a)??c.get(a)?.conversationId??null;return{assignment:{...e,path:a,...b?{conversationId:b}:{},state:"delivered",error:null,at:g},dirty:!0}}if(!(d.panePidAlive?.(e.panePid)??!0)&&"failed"!==e.state)return{assignment:{...e,state:"failed",error:"agent did not start",at:g},dirty:!0}}return{assignment:e,dirty:f}}(b,a,e,f);return d.dirty&&(c=!0),d.assignment});return c?(d=!0,{...b,assignments:g,updatedAt:f.now?.()??new Date().toISOString()}):b});return{tasks:d?g:b,dirty:d}}(b,a,{pathForPanePid:(a,b)=>(function(a,b,c){if(!Number.isInteger(b)||b<=0)return null;for(let d of a){if(null===d.pid)continue;let a=new Set;for(let e=d.pid;null!==e&&!a.has(e)&&(a.add(e),!(a.size>15));e=c(e))if(e===b)return d.path}return null})(b,a,u.Ib),panePidAlive:u.pl,conversationIdForPath:a=>c.conversationForPath(a)?.id??null,canonicalConversationId:a=>a.startsWith("conversation_")?c.canonicalConversationId(a):null,pathForConversationId:a=>a.startsWith("conversation_")?c.conversation(a)?.generations.at(-1)?.path??null:null});return{tasks:d.dirty?d.tasks:void 0,result:void 0}})},syncRouting:aY,reconcileMigrationCycle:aX};class a2{constructor(a=(0,h.agentRegistry)(),b=new aV(a),c=null,d={}){this.registry=a,this.quota=b,this.cycle=c,this.running=null,this.trailingCycleRequested=!1,this.ports={...a1,...d}}tick(){return this.running?this.trailingCycleRequested=!0:this.running=this.runRequestedCycles().finally(()=>{this.running=null}),this.running}poll(){return this.running?this.running:this.tick()}async runRequestedCycles(){let a=null;do{this.trailingCycleRequested=!1;try{await (this.cycle?.()??this.run())}catch(b){a??=b}}while(this.trailingCycleRequested);if(a)throw a}async run(){let{files:a,complete:b}=await this.ports.scan();if(!b)return;await (0,j.Lh)();let c=await this.ports.reconcileInventory(this.registry,a);await (0,j.Lh)();let d=(0,h.oP)(c);await this.ports.reconcileFlowOwnership(d),await this.ports.reconcileWorkflowOwnership(d),await this.ports.reconcileHandoffOwnership(d),await (0,j.Lh)(),await this.ports.reconcileFiles(a),await (0,j.Lh)(),await this.ports.reconcileRuntime(this.registry,a),await (0,j.Lh)(),await this.ports.reconcileTaskStore(this.registry,a),await (0,j.Lh)(),await this.ports.syncRouting(this.registry),await this.ports.reconcileMigrationCycle(this.registry,this.quota)}}let a3=globalThis;async function a4(){await (0,j.Lh)();let a=(0,h.agentRegistry)(),b=new aV(a);if("1"===process.env.LLV_ACCOUNT_CONTROLLER_INVENTORY_WORKER)return void function(a,b){let c=a3.__llvAccountMigrationController??=new a2(a,b);if(!a3.__llvAccountMigrationTimer){let a=setInterval(()=>void c.poll().catch(a=>{console.error("[account migration controller] durable reconciliation tick failed",a)}),6e4);a.unref?.(),a3.__llvAccountMigrationTimer=a}if(!a3.__llvAccountMigrationBootstrapStarted){a3.__llvAccountMigrationBootstrapStarted=!0;let a=setTimeout(()=>{a3.__llvAccountMigrationInitialTimer=void 0,c.poll().catch(a=>{console.error("[account migration controller] initial inventory reconciliation failed",a)})},1e3);a.unref?.(),a3.__llvAccountMigrationInitialTimer=a}}(a,b);let c=a3.__llvAccountMigrationFastController??=new a2(a,b,()=>aX(a,b));(0,aN.c)(()=>c.tick()),c.tick().catch(a=>{console.error("[account migration controller] initial durable reconciliation failed",a)}),function a(){if(a3.__llvAccountMigrationInventoryWorker)return;let b=function(a=process.cwd()){let b=o().join(a,"src/lib/accountMigrationController.worker.ts"),c=o().join(a,".next/server/account-migration-controller-worker.js");return m().existsSync(b)&&m().existsSync("/usr/local/bin/bun-container")?{executable:"/usr/local/bin/bun-container",workerPath:b}:m().existsSync(c)?{executable:process.versions.bun?process.execPath:process.env.LLV_BUN_EXECUTABLE||"bun",workerPath:c}:{executable:process.execPath,workerPath:b}}(),c=m().existsSync("/usr/bin/nice"),d=(0,k.spawn)(c?"/usr/bin/nice":b.executable,[...c?["-n","10",b.executable]:[],b.workerPath],{cwd:process.cwd(),stdio:["ignore","inherit","inherit"],env:{...(0,aJ.Fd)(process.env),LLV_ACCOUNT_CONTROLLER_INVENTORY_WORKER:"1"}});a3.__llvAccountMigrationInventoryWorker=d,d.once("error",a=>{console.error("[account migration controller] inventory worker failed to start",a)}),d.once("exit",(b,c)=>{if(a3.__llvAccountMigrationInventoryWorker===d&&(a3.__llvAccountMigrationInventoryWorker=void 0),a3.__llvAccountMigrationInventoryWorkerRestart)return;console.error("[account migration controller] inventory worker exited",{code:b,signal:c});let e=setTimeout(()=>{a3.__llvAccountMigrationInventoryWorkerRestart=void 0,a()},1e3);e.unref?.(),a3.__llvAccountMigrationInventoryWorkerRestart=e})}()}},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
@@ -0,0 +1,5 @@
1
+ "use strict";exports.id=3696,exports.ids=[3696,6211],exports.modules={13696:(a,b,c)=>{c.r(b),c.d(b,{TASKS_FILE:()=>E,checkpointTaskRollbackMirrorForDemotion:()=>_,importLegacyTasks:()=>$,isTask:()=>M,isTaskAssignment:()=>I,isTaskSource:()=>J,loadTasks:()=>O,loadTasksFile:()=>ab,mutateTasks:()=>af,mutateTasksFile:()=>ag,saveTasks:()=>ad,saveTasksFile:()=>ae,taskLegacyCollection:()=>Z});var d=c(73024),e=c.n(d),f=c(27146),g=c(38751),h=c(89204),i=c(77598),j=c.n(i),k=c(76760),l=c.n(k),m=c(95697),n=c(14928);let o=[];function p(a){let b={...a,at:new Date().toISOString()};return o.push(b),o.length>100&&o.splice(0,o.length-100),console.error(`[state import] ${b.kind} ${b.collection}: ${b.message}`),b}function q(a){return l().join(l().dirname(a),"state.sqlite")}function r(a){return j().createHash("sha256").update(a).digest("hex")}function s(a){let b=e().openSync(a,"r");try{e().fsyncSync(b)}finally{e().closeSync(b)}}function t(){return new Date().toISOString().replace(/[:.]/g,"-")}function u(a){try{return(0,m.jU)(l().dirname(a))?.slice(0,12)??null}catch{return null}}function v(a){return e().existsSync(a)?`${a}-${t()}`:a}function w(a){let b;try{b=e().lstatSync(a)}catch(a){if("ENOENT"===a.code)return{kind:"missing"};throw new h.Qm(`legacy state is unreadable for now: ${a.message}`)}if(b.isDirectory())return{kind:"tombstone"};try{return{kind:"file",bytes:e().readFileSync(a)}}catch(a){throw new h.Qm(`legacy state is unreadable for now: ${a.message}`)}}function x(a){try{return{ok:!0,value:JSON.parse(a.toString("utf8"))}}catch{return{ok:!1}}}function y(a){let b=l().dirname(a.legacyPath);e().mkdirSync(a.legacyPath,{recursive:!0,mode:448});let c=l().join(a.legacyPath,"README");e().existsSync(c)||e().writeFileSync(c,`${l().basename(a.legacyPath)} moved into SQLite.
2
+ It now lives in the "${a.collection}" collection of ${l().basename(q(a.legacyPath))} in this directory.
3
+ This directory stands in its place so that an older release fails visibly instead of writing a file nothing reads.
4
+ `,{mode:384}),s(b)}function z(a,b,c){let d=null;return e().existsSync(a.legacyPath)&&!e().lstatSync(a.legacyPath).isDirectory()&&("delete"===b?e().rmSync(a.legacyPath,{force:!0}):(d=v(`${a.legacyPath}.imported-${u(a.legacyPath)??t()}`),e().renameSync(a.legacyPath,d)),s(l().dirname(a.legacyPath))),c.afterRename?.(),y(a),d}function A(a){let b=v(`${a.legacyPath}.unreadable-${t()}`);return e().renameSync(a.legacyPath,b),s(l().dirname(a.legacyPath)),b}function B(a,b,c,d,e){let f=x(c);if(!f.ok){let b=A(a);return p({kind:"legacy-unreadable",collection:a.collection,preservedAs:b,message:`${l().basename(a.legacyPath)} reappeared unreadable after the import; kept as ${l().basename(b)}, SQLite unchanged`})}let g=a.parse(f.value),h=a.reconcile(g,b,d),i=a.repairs?.(g)??null,j=z(a,"keep",e);return p({kind:"legacy-reconciled",collection:a.collection,summary:h,...j?{preservedAs:j}:{},message:`${l().basename(a.legacyPath)} changed after the import (a rollback release or an older writer); merged ${h.added} added, ${h.replaced} replaced and ${h.removed} removed rows, kept ${h.kept} SQLite rows changed since the mirror`+(h.spared.length?`; the file does not carry the recorded mirror's marker, so no row was deleted (${h.spared.length} rows it lacks were kept)`:"")+(i?`; ${i}`:"")})}var C=c(59646),D=c(39340);let E=(0,f.BQ)("tasks.json"),F=new WeakMap;function G(a,b,c){for(let b of a)b.project=(0,g.G$)(b.project);return(0,C.lw)(a,b,c),a.map(a=>{let c=b.get(a.id);return c&&(0,C.d4)(a)===c.revision&&F.has(c.ref)?F.get(c.ref):a})}function H(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 I(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 J(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.path&&("string"==typeof a.ts||null===a.ts)&&"string"==typeof a.text&&"string"==typeof a.fingerprint&&("claude"===a.engine||"codex"===a.engine)}function K(a){return"pinned"===a||"unplaced"===a||"auto"===a}function L(a){var b,c,d,e;let f,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||K(a.placement))&&(void 0===a.pos||H(a.pos))&&(f=void 0!==a.dueAt,h=void 0!==a.dueTz,!f&&!h||"string"==typeof a.dueAt&&"string"==typeof a.dueTz)&&(void 0===(c=a.attachments)||Array.isArray(c)&&c.every(D.tK))&&Array.isArray(a.assignments)&&a.assignments.every(I)&&(void 0===a.source||J(a.source))&&(void 0===a.origin||!(!(d=a.origin)||"object"!=typeof d||Array.isArray(d))&&("conversation"===d.kind||"launch"===d.kind||"pipeline"===d.kind||"flow"===d.kind)&&"string"==typeof d.key&&d.key.length>0&&("pending"===d.refinement||"titled"===d.refinement)&&(void 0===d.refinedBy||"string"==typeof d.refinedBy)&&(void 0===d.refinedText||"string"==typeof d.refinedText))&&(void 0===a.board||"shown"===(e=a.board)||"hidden"===e)&&"string"==typeof a.createdAt&&"string"==typeof a.updatedAt))return null;let i=H(a.pos),j=K(a.placement)?a.placement:i?"pinned":"unplaced",k="pinned"===j&&i,l={...a,id:a.id,project:(0,g.G$)(a.project),status:a.status,text:a.text,...void 0!==a.details?{details:a.details}:{},placement:"pinned"!==j||i?j:"unplaced",...k?{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};k||delete l.pos;try{Object.assign(l,{revision:(0,C.d4)(l)})}catch{return null}return l}function M(a){return null!==L(a)}function N(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.clientRequestId&&"string"==typeof a.taskId}function O(a=E){return ab(a).tasks}let P="tasks";function Q(a){return"string"==typeof a.status&&"string"==typeof a.id?a.id?`t:${a.id}`:"":"string"==typeof a.clientRequestId&&"string"==typeof a.taskId?a.clientRequestId?`r:${a.clientRequestId}`:"":"string"==typeof a.name&&"string"==typeof a.appliedAt&&a.name?`m:${a.name}`:""}function R(a){let b=new Map;return a.forEach((a,c)=>b.set(a.clientRequestId,c)),b.size===a.length?a:a.filter((a,c)=>b.get(a.clientRequestId)===c)}function S(a,b,c){return[...a,...R(b).map(a=>({...a})),...Object.entries(c).map(([a,b])=>({name:a,appliedAt:b}))]}function T(a){var b;if(void 0===a)return{tasks:[],recentCreates:[],migrations:{}};if(!a||!Array.isArray(a.tasks))throw Error("invalid persisted task state");let c=a.tasks.map(a=>{let b=L(a);if(!b)throw Error("invalid persisted task row");return F.set(b,a),b});if(new Set(c.map(a=>a.id)).size!==c.length)throw Error("duplicate persisted task id");if(void 0!==a.recentCreates&&(!Array.isArray(a.recentCreates)||!a.recentCreates.every(N)))throw Error("invalid persisted task receipts");let d=R(a.recentCreates??[]);if(void 0!==a.migrations&&!(!(!(b=a.migrations)||"object"!=typeof b||Array.isArray(b))&&Object.values(b).every(a=>"string"==typeof a)))throw Error("invalid persisted task migrations");return{tasks:c,recentCreates:d,migrations:{...a.migrations??{}}}}function U(a){let b=[],c=[],d={};for(let e of a){let a=Q(e);if(a.startsWith("t:"))b.push(e);else if(a.startsWith("r:"))c.push(e);else if(a.startsWith("m:"))d[e.name]=e.appliedAt;else throw Error("invalid persisted task row")}return{tasks:b,recentCreates:c,migrations:d}}let V=new Map;function W(a){let b=V.get(a);if(b)return b;let c=new n.UY(a,{collection:P,schemaVersion:1,busyMessage:"task state is busy",key:Q,decode:a=>a&&"object"==typeof a&&!Array.isArray(a)?a:null,clone:a=>structuredClone(a),controllerActive:a=>"done"!==a.status,strictDecode:!0,decodeError:a=>Error("invalid persisted task row",{cause:a})});return V.set(a,c),c}let X="sqlite-mirror-revision";function Y(a){if(T(a),!a.migrations||!Object.hasOwn(a.migrations,X))return{...a,mirrorOf:null};let{[X]:b,...c}=a.migrations,d=/^\d+$/.test(b)?Number(b):null;return{...a,migrations:c,mirrorOf:d}}function Z(a=E){return{collection:P,schemaVersion:1,migrationId:"tasks-json-v1",legacyPath:a,parse:Y,toRows:a=>S(a.tasks,a.recentCreates??[],a.migrations??{}).map(a=>({key:Q(a),value:a,controllerActive:"done"!==a.status})),repairs:a=>{let b=a.recentCreates??[],c=b.length-R(b).length;return c?`dropped ${c} older duplicate create receipt${1===c?"":"s"}, keeping the newest per clientRequestId`:null},reconcile:(b,c,d)=>{let e,f,g,h;return e=W(q(a)),f=c.mirrorRevision??+(c.rowCount>0),g=null!==c.mirrorRevision&&b.mirrorOf===c.mirrorRevision,h={added:0,replaced:0,removed:0,kept:0,keys:[],conflicts:[],spared:[]},e.patchSync(()=>{let a=new Map(e.snapshot().map(a=>[Q(a),a])),c=e.rowRevisions(),d=S(b.tasks,b.recentCreates??[],b.migrations??{}),i=new Set(d.map(Q)),j=[];for(let b of d){let d=Q(b),e=a.get(d);if(!e){j.push(b),h.added+=1,h.keys.push(d);continue}if(JSON.stringify(e)!==JSON.stringify(b)){if((c.get(d)??0)>f){h.conflicts.push(d);let a=d.startsWith("t:")?L(b):null,c=d.startsWith("t:")?L(e):null;if(!a||!c||a.updatedAt<=c.updatedAt){h.kept+=1;continue}}j.push(b),h.replaced+=1,h.keys.push(d)}}let k=[];for(let b of a.keys())if(!i.has(b)&&b.startsWith("t:")){if(!g){h.spared.push(b);continue}if((c.get(b)??0)>f){h.conflicts.push(b),h.kept+=1;continue}k.push(b),h.removed+=1,h.keys.push(b)}return{records:j,deleteKeys:k}},{fenceOwner:d.fenceOwner}),h},mirrorBody:()=>{let b=W(q(a)),c=null;return b.checkpointMirror((a,b)=>{let d=U(a),e={...d.migrations,[X]:String(b)};c={body:function(a,b,c={}){return{tasks:a,...b.length?{recentCreates:b}:{},...Object.keys(c).length?{migrations:c}:{}}}(d.tasks,d.recentCreates,e),revision:b}}),c}}}function $(a=E,b={reconcile:!0}){var c;let d,f;return c=Z(a),d=b.hooks??{},f=q(c.legacyPath),(0,h.Ol)(c.legacyPath,`${c.collection} import is busy`,()=>{let a=(0,n.tD)(f,c.collection),g=w(c.legacyPath);if(a){var h=c,i=a,j=g,k=b.reconcile,m=d;if("tombstone"===j.kind)return{state:"already-imported",record:i,incident:null};if("missing"===j.kind)return y(h),{state:"already-imported",record:i,incident:null};if(!k)return{state:"reconcile-deferred",record:i,incident:null};let e=r(j.bytes);if(e===i.mirrorSha256)return z(h,"delete",m),{state:"already-imported",record:i,incident:null};if(e===i.sourceSha256)return"legacy-unreadable"===i.gap&&A(h),z(h,"keep",m),{state:"already-imported",record:i,incident:null};let f=B(h,i,j.bytes,{fenceOwner:!1},m);return y(h),{state:"already-imported",record:i,incident:f}}let o=[],q=null,s=null,t=!1,v=null;if("tombstone"===g.kind){q="tombstone-without-import";let a=function(a){let b=`${l().basename(a)}.imported-`,c=l().dirname(a),d=null;for(let a of e().readdirSync(c)){if(!a.startsWith(b))continue;let f=l().join(c,a);try{let{mtimeMs:a}=e().statSync(f);(!d||a>d.mtimeMs)&&(d={file:f,mtimeMs:a})}catch{continue}}return d?.file??null}(c.legacyPath);s=p({kind:"tombstone-without-import",collection:c.collection,...a?{preservedAs:a}:{},message:`${c.legacyPath} is a tombstone but ${f} has no import record; starting empty`+(a?`. The newest kept copy of the legacy file is ${l().basename(a)}; restore the newest backup or re-import that copy.`:"")})}else if("file"===g.kind){let a=x(g.bytes);if(a.ok){let b=c.parse(a.value);o=c.toRows(b),v=c.repairs?.(b)??null}else q="legacy-unreadable",t=!0}let{record:C}=(0,n.nF)(f,{collection:c.collection,schemaVersion:c.schemaVersion,migrationId:c.migrationId,rows:o,sourceName:l().basename(c.legacyPath),sourceSha256:"file"===g.kind?r(g.bytes):null,sourceBytes:"file"===g.kind?g.bytes.length:0,gap:q,release:u(c.legacyPath),...d.beforeVerify?{beforeVerify:d.beforeVerify}:{}});if(d.afterCommit?.(),t){let a=A(c);s=p({kind:"legacy-unreadable",collection:c.collection,preservedAs:a,message:`${l().basename(c.legacyPath)} could not be parsed (${"file"===g.kind?g.bytes.length:0} bytes); the collection starts empty and the file is kept as ${l().basename(a)}. Restore from the newest backup to recover it.`})}return v&&(s=p({kind:"legacy-repaired",collection:c.collection,message:`${l().basename(c.legacyPath)} imported after a repair: ${v}`})),z(c,"keep",d),{state:"imported",record:C,incident:s}})}function _(a=E){var b;let c;c=q((b=Z(a)).legacyPath),(0,n.tD)(c,b.collection)&&(0,h.Ol)(b.legacyPath,`${b.collection} import is busy`,()=>{let a=(0,n.tD)(c,b.collection),d=w(b.legacyPath);if("file"===d.kind){let c=r(d.bytes);c!==a.mirrorSha256&&c!==a.sourceSha256&&B(b,a,d.bytes,{fenceOwner:!0},{})}let{body:f,revision:g}=b.mirrorBody(),h=`${JSON.stringify(f,null,2)}
5
+ `,i=l().dirname(b.legacyPath),k=l().join(i,`.${l().basename(b.legacyPath)}.${process.pid}.${j().randomUUID()}.tmp`),m=e().openSync(k,"wx",384);try{e().writeFileSync(m,h,"utf8"),e().fsyncSync(m)}finally{e().closeSync(m)}try{e().existsSync(b.legacyPath)&&e().lstatSync(b.legacyPath).isDirectory()&&e().rmSync(b.legacyPath,{recursive:!0,force:!0}),e().renameSync(k,b.legacyPath),s(i)}finally{e().rmSync(k,{force:!0})}(0,n.N$)(c,b.collection,r(Buffer.from(h,"utf8")),g)})}function aa(a,b){let c=q(a);if(V.has(c))return V.get(c);if(!(0,n.tD)(c,P)){if(!(0,m.Ny)(l().dirname(a))){if("read"===b)return null;throw new h.Qm("task state is waiting for release promotion")}$(a,{reconcile:null===(0,m.X4)(l().dirname(a))})}return W(c)}function ab(a=E){let b=aa(a,"read");if(!b){let b;try{b=JSON.parse(e().readFileSync(a,"utf8"))}catch(a){if("ENOENT"===a.code)b=void 0;else throw a}return T(b)}return T(U(b.snapshot()))}function ac(a,b){let c,d=aa(a,"write");return d.patchSync(()=>{let a=d.snapshot(),e=b(T(U(a)));if(c=e.result,!e.next)return{records:[]};let f=S(e.next.rows,e.next.recentCreates,e.next.migrations),g=new Set(f.map(Q)),h=a.map(Q).filter(a=>!g.has(a)),i=new Set(a),j=new Map(a.map(a=>[Q(a),a])),k=f.filter(a=>{if(i.has(a))return!1;let b=j.get(Q(a));return!b||JSON.stringify(b)!==JSON.stringify(a)}),l=k.map(Q).filter(a=>a.startsWith("r:")&&j.has(a));return{records:k,deleteKeys:h,appendKeys:l}}),c}function ad(a,b=E){ac(b,({tasks:b,recentCreates:c,migrations:d})=>({next:{rows:G(a,(0,C.lU)(b),!1),recentCreates:c,migrations:d??{}},result:void 0}))}function ae(a,b=E){ac(b,b=>({next:{rows:G(a.tasks,(0,C.lU)(b.tasks),!1),recentCreates:a.recentCreates,migrations:a.migrations??b.migrations??{}},result:void 0}))}function af(a,b=E){return ac(b,b=>{let c=(0,C.lU)(b.tasks),d=a(b.tasks);return d.tasks?{next:{rows:G(d.tasks,c,!0),recentCreates:b.recentCreates,migrations:b.migrations??{}},result:d.result}:{next:void 0,result:d.result}})}function ag(a,b=E){return ac(b,b=>{let c=(0,C.lU)(b.tasks),d=a(b);return d.state?{next:{rows:G(d.state.tasks,c,!0),recentCreates:d.state.recentCreates,migrations:d.state.migrations??b.migrations??{}},result:d.result}:{next:void 0,result:d.result}})}},16781:(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}},38751:(a,b,c)=>{c.d(b,{E2:()=>s,G$:()=>r,JC:()=>v,YX:()=>x,oh:()=>y});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(14928),l=c(46211);let m=null;function n(){return(0,j.BQ)("project-aliases.json")}function o(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b=Object.entries(a);return b.every(([a,b])=>!!a.trim()&&"string"==typeof b&&!!b.trim())?Object.fromEntries(b):null}function p(){let a,b=n();try{a=g().statSync(b)}catch{return(m={file:b,mtimeMs:-1,size:-1,snapshot:{aliases:{},displayNames:{}}}).snapshot}if(m&&m.file===b&&m.mtimeMs===a.mtimeMs&&m.size===a.size)return m.snapshot;try{let c=JSON.parse(g().readFileSync(b,"utf8")),d=1===c.schemaVersion?o(c.aliases):null,e=1===c.schemaVersion?o(c.displayNames):null,f=d&&e?{aliases:d,displayNames:e}:{aliases:{},displayNames:{}};return m={file:b,mtimeMs:a.mtimeMs,size:a.size,snapshot:f},f}catch{let c={aliases:{},displayNames:{}};return m={file:b,mtimeMs:a.mtimeMs,size:a.size,snapshot:c},c}}function q(a,b){let c=a,d=new Set;for(;b[c]&&!d.has(c);)d.add(c),c=b[c];return d.has(c)?a:c}function r(a){return q(a,p().aliases)}function s(){let a=p();return{aliases:{...a.aliases},displayNames:{...a.displayNames}}}function t(a){try{let b=JSON.parse(g().readFileSync((0,j.BQ)(a),"utf8"));return b&&"object"==typeof b&&!Array.isArray(b)?b:null}catch{return null}}function u(a,b,c){let d=(["flows","pipelines","workflows","tasks"].includes(b)?(0,k.Vx)((0,j.BQ)("state.sqlite"),b):null)??t(a)?.[b];if(!Array.isArray(d))return[];let e=[];for(let a of d)!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.project&&a.project.trim()&&"string"==typeof a[c]&&a[c].trim()&&e.push([a.project,a[c]]);return e}function v(){let a=function(){let a=t("worktree-map.json");if(!a)return new Map;let b=new Map;for(let[c,d]of Object.entries(a)){if(!d||"object"!=typeof d||Array.isArray(d))continue;let a=d.repo;"string"==typeof a&&a.trim()&&b.set(c,a)}return b}(),b=[...u("flows.json","flows","cwd"),...u("pipelines.json","pipelines","repoDir"),...u("workflows.json","workflows","repoDir")],c=new Map;for(let[d,e]of b){let b=(0,l.repositoryRootForPath)(e)??a.get(e),f=b?(0,l.projectIdentityFromRepositoryRoot)(b):null;if(!f)continue;let g=c.get(d)??new Map,h=g.get(f.project)??{registration:{source:d,target:f.project,displayName:f.displayName},records:0};h.records+=1,g.set(f.project,h),c.set(d,g)}let d=[],e=[];for(let[a,b]of c){if(b.has(a)){b.size>1&&e.push(a);continue}let c=[...b.values()].sort((a,b)=>b.records-a.records),f=c.reduce((a,b)=>a+b.records,0),g=c[0];2*g.records>f?d.push(g.registration):e.push(a)}let f=function(a){let b=new Map(a.map(a=>[a.source,a.target])),c=new Set,d=new Set;for(let[a,e]of[["tasks.json","tasks"],["flows.json","flows"],["pipelines.json","pipelines"],["workflows.json","workflows"]]){let f=new Map;for(let g of function(a,b){let c=(["flows","pipelines","workflows","tasks"].includes(b)?(0,k.Vx)((0,j.BQ)("state.sqlite"),b):null)??t(a)?.[b];return Array.isArray(c)?c.filter(a=>!!a&&"object"==typeof a&&!Array.isArray(a)):[]}(a,e)){if("string"!=typeof g.id||!g.id.trim()||"string"!=typeof g.project||!g.project.trim())continue;let a=r(g.project),h=b.get(a)??a,i=`${h}\0${g.id}`,j=f.get(i);j&&j!==a?(c.add(`${e} id collision`),b.has(j)&&d.add(j),b.has(a)&&d.add(a)):f.set(i,a)}}return{labels:[...c],sources:d}}(d);return e.push(...f.labels),{registrations:d.filter(a=>!f.sources.has(a.source)),conflicts:e}}function w(a){let b=p(),c={...b.aliases},d={...b.displayNames};for(let b of a){let a=b.source.trim(),e=q(b.target.trim(),c),f=b.displayName.trim();if(!a||!e||!f)return null;let g=c[a]?q(c[a],c):null;if(g&&g!==e)return null;a!==e&&(c[a]=e),d[e]=f}return{aliases:c,displayNames:d}}function x(a){return null!==w(a)}function y(a){if(0===a.length)return!0;let b=w(a);if(!b)return!1;let c=n(),d=i().join(i().dirname(c),`.${i().basename(c)}.${process.pid}.${e().randomUUID()}.tmp`);try{return g().mkdirSync(i().dirname(c),{recursive:!0,mode:448}),g().writeFileSync(d,JSON.stringify({schemaVersion:1,...b},null,2)+"\n",{encoding:"utf8",mode:384}),g().renameSync(d,c),m=null,p(),!0}catch{try{g().rmSync(d,{force:!0})}catch{}return!1}}},39340:(a,b,c)=>{c.d(b,{tK:()=>f}),c(77598),c(73024),c(76760),c(27146);var d=c(16781);let e=new Set(["png","jpg","gif","webp"]);function f(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&&e.has(a.ext)&&"string"==typeof a.mime&&null!==(0,d.PG)(a.mime)&&"number"==typeof a.bytes&&Number.isFinite(a.bytes)&&a.bytes>0&&"string"==typeof a.createdAt}},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}},59646:(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}}}};